本文檔從較高的層次概述了影響路由器效能的問題,並指出了有關這些問題的其他文檔。
本文件沒有特定需求。
本文中的資訊係根據以下軟體和硬體版本:
Cisco IOS®軟體版本12.1。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
配置路由器的方式可能會影響其資料包處理效能。對於處理大量流量的路由器,瞭解裝置的工作方式、工作方式以及最佳化效能所需的時間是值得的。此資訊會顯示在組態檔案中。此組態會反映封包透過路由器的方式。次優配置會使路由器內的資料包保持比所需更長的時間。如果負載持續性高,您可能會遇到響應緩慢、擁塞和連線超時的情況。
在調節路由器的效能時,您的目標是將資料包在路由器中停留的時間降至最低。也就是說,路由器將資料包從傳入介面轉發到傳出介面的時間降至最低,並儘可能避免緩衝和擁塞。新增到組態中的每個功能都只是傳入封包到達目的地連線埠時必須經過的一個步驟。
您需要節省的兩個主要資源是路由器的CPU時間和記憶體。路由器應始終具有CPU可用性以處理峰值和定期任務。如果CPU利用率達到99%的時間過長,網路穩定性可能會受到嚴重影響。記憶體可用性亦有相同概念:記憶體必須始終可用。如果路由器的記憶體幾乎已完全使用,則系統緩衝池中不會留下任何空間。這表示需要處理器注意的封包(程式交換封包)在進入時會立即遭捨棄。很容易想象,如果丟棄的資料包包含介面keepalive或重要的路由更新,會發生什麼情況。
在IP網路中,路由器中的資料包轉發決策基於路由表的內容。搜尋路由表時,路由器會查詢目標IP地址字首的最長匹配。這在「進程級別」完成(稱為進程交換),這意味著該查詢僅被視為其他CPU進程中的一個排隊進程。因此,查詢時間是不可預測的,並且可能需要很長時間。為了解決這個問題,Cisco IOS軟體中引入了多種基於exact-match-lookup的交換方法。
exact-match-lookup的主要優點是查詢時間具有確定性和非常短。路由器做出轉發決策所需的時間顯著減少,因此可以在「中斷級別」執行此操作。中斷級交換意味著當資料包到達時,會觸發一個中斷,導致CPU延遲其他任務以處理該資料包。轉發資料包的舊方法(透過在路由表中查詢最長匹配)無法在中斷級別實現,必須在進程級別執行。由於以下某些原因,無法完全放棄最長匹配查詢方法,因此這兩種查詢方法在Cisco路由器上並行存在。這一策略已被廣泛應用並應用於IPX和AppleTalk。
為了在中斷級別執行完全匹配查詢,必須轉換路由表以使用便於此類查詢的記憶體結構。不同的交換路徑使用不同的記憶體結構。這種所謂的結構對查詢時間有重大影響,因此選擇最合適的交換路徑是一項非常重要的任務。路由器需要下一跳地址和傳出介面等基本資訊才能決定資料包的轉發位置。它還需要有關傳出介面封裝的資訊。根據其可伸縮性,後者可儲存在相同的或單獨的儲存器結構中。
以下是執行中斷層級交換的程式:
查詢記憶體結構以確定下一跳地址和傳出介面。
執行開放系統互連(OSI)第2層重寫(也稱為MAC重寫),即更改資料包的封裝以與傳出介面保持一致。
將資料包放入傳出介面的tx環或輸出隊列。
更新適當的記憶體結構(重設快取記憶體中的計時器、更新計數器等)。
從網路介面接收封包時所引發的中斷稱為「RX中斷」。只有在執行上述所有步驟時,才會取消此中斷。如果無法執行上述前三個步驟中的任何一個,資料包將被傳送到下一個交換層。如果下一個交換層是進程交換,則將資料包放入傳入介面的輸入隊列中進行進程交換,並關閉中斷。由於中斷不能被同一級別的中斷所中斷,並且所有介面都會產生同一級別的中斷,因此在當前RX中斷被關閉之前,無法處理任何其他資料包。
不同的中斷交換路徑可以按層次組織,從提供最快查詢的路徑到提供最慢查詢的路徑。處理資料包的最後一個手段始終是進程交換。並非每個中斷交換路徑都支援所有介面和資料包型別。通常,只有那些需要檢查和僅限於資料包報頭的更改才能進行中斷交換。如果在轉發之前需要檢查資料包負載,則不可能進行中斷交換。某些中斷交換路徑可能存在更具體的限制。此外,如果透過傳出介面的第2層連線必須可靠(即支援重新傳輸),則無法在中斷級別處理資料包。
以下是無法進行中斷交換的資料包示例:
定向到路由器的流量(路由協定流量、簡單網路管理協定(SNMP)、Telnet、簡單檔案傳輸協定(TFTP)、ping等)。管理流量可以源自路由器並定向到該路由器。它們具有特定的任務相關流程。
OSI第2層面向連線的封裝(例如X.25)。某些任務太複雜,無法在中斷交換路徑中編碼,因為要運行的指令太多,或者需要計時器和窗口。有些功能例如加密、區域傳輸(LAT)翻譯和增強型資料連結交換(DLSW+)。
資料包在路由器內部所經過的路徑由活動轉發演算法確定。這些也稱為「交換演算法」或「交換路徑」。 高端平台通常比低端平台具有更強大的轉發演算法,但它們在預設情況下通常不處於活動狀態。有些轉發演算法是在硬體中實現的,有些是在軟體中實現的,有些是在兩者中實現的,但目標始終是儘可能快地傳送資料包。
Cisco路由器上可用的交換演算法有:
轉發演算法 | 命令(從配置介面模式發出) |
---|---|
快速交換 | ip route-cache |
同一介面交換 | ip route-cache same-interface |
自主交換(僅限7000個平台) | ip route-cache cbus |
矽交換(僅安裝了SSP的7000平台) | ip route-cache sse |
分散式交換(僅適用於VIP平台) | ip route-cache distributed |
最佳交換(僅限高端路由器) | ip route-cache optimum |
NetFlow交換 | ip route-cache flow |
Cisco Express Forwarding (CEF) | ip cef |
分散式CEF | ip cef distributed |
以下是每個交換路徑的簡短說明,依照效能的順序排序。自治和矽交換不討論,因為它們涉及工程硬體的末端。
處理序交換是處理封包最基本的方式。資料包被放入與第3層協定對應的隊列中,然後由排程程式排程相應的進程。進程是您在show processes cpu命令輸出中看到的進程中的一個(即,對於IP資料包為「ip input」)。此時,資料包將保留在隊列中,直到排程程式將CPU分配給相應的進程。等待時間取決於等待運行的進程數以及等待處理的資料包數。然後根據路由表做出路由決策。資料包的封裝將更改為與傳出介面一致,資料包將排入相應傳出介面的輸出隊列。
在快速交換中,CPU在中斷級別做出轉發決策。從路由表獲取的資訊與傳出介面封裝資訊相結合,可建立快速交換快取。快取中的每個條目都由目的IP地址、傳出介面標識和MAC重寫資訊組成。快速交換快取具有二叉樹結構。
如果快速交換快取中沒有某個目的地的專案,目前的封包必須排入佇列才能進行處理序交換。當適當的進程為此資料包做出轉發決策時,它會在快速交換快取中建立一個條目,並且所有到達同一目的地的連續資料包都可以在中斷級別進行轉發。
由於這是基於目標的快取,因此負載共用僅針對每個目標完成。即使路由表中有兩條等價路徑通往目的網路,但快速交換快取中每台主機都只有一個條目。
最佳交換基本上與快速交換相同,不同之處在於它使用256向多維樹(mtree)而不是二叉樹,從而產生更大的記憶體需求和更快的快取記憶體查詢。有關樹型結構和快速/最佳/Cisco快速轉發(CEF)交換的詳細資訊,請參閱如何為您的網路選擇最佳路由器交換路徑。
先前交換演演算法的主要缺點是:
特定目的地的第一個封包一律會進行程式交換以初始化快速快取記憶體。
快取記憶體可能會變得非常大。例如,如果有多個等價路徑通往同一目的網路,則快速快取由主機條目而不是上述的網路填充。
快速快取和ARP表之間沒有直接關係。如果條目在ARP快取中變為無效,則無法使其在快速快取中失效。為避免此問題,每分鐘會隨機使1/20的快取失效。在非常大型的網路中,快取的這種失效/重新填充會佔用大量CPU。
CEF使用兩個表來解決這些問題:FIB(基於轉發資訊)表和鄰接表。鄰接表按第3層(L3)地址編制索引,並包含轉發資料包所需的相應第2層(L2)資料。當路由器發現相鄰節點時,會填充該節點。FIB表是按L3地址索引的mtree。它基於路由表並指向鄰接表。
CEF的另一個優勢是資料庫結構允許按目標或按資料包進行負載均衡。CEF首頁提供關於CEF的詳細資訊。
分散式快速/最佳交換會將路由決策移至介面處理器(IP),藉此解除安裝主要CPU (路由/交換處理器[RSP])。這僅適用於每個介面可擁有專用CPU的高端平台(通用介面處理器[VIP]、板卡[LC])。在這種情況下,快速快取僅上傳到VIP。收到資料包後,VIP會嘗試根據該表做出路由決策。如果成功,它會將資料包直接排入傳出介面的隊列。如果失敗,它將資料包排隊到下一個配置的交換路徑(最佳交換->快速交換->進程交換)。
使用分散式交換時,訪問清單被複製到VIP,這意味著VIP可以在沒有RSP干預的情況下根據訪問清單檢查資料包。
分散式CEF (dCEF)與分散式交換類似,但表格之間的同步問題較少。dCEF是Cisco IOS軟體版本12.0中唯一可用的分散式交換方法。必須瞭解的是,如果在路由器上啟用了分散式交換,FIB/鄰接表將上傳到路由器中的所有VIP上,無論其介面是否配置了CEF/dCEF。
使用dCEF,VIP還會處理訪問清單、基於策略的路由資料和速率限制規則,這些全部儲存在VIP卡中。Netflow可以與dCEF一起啟用,以增強VIP對訪問清單的處理。
下表顯示了每個平台支援哪個Cisco IOS軟體版本中的哪條交換路徑。
交換路徑 | 低端以下(1) | 低/中端(2) | Cisco AS5850 | Cisco 7000,帶RSP | 思科72xx/71xx | 思科75xx | Cisco GSR 12xxx | 意見 |
---|---|---|---|---|---|---|---|---|
進程交換 | ALL | ALL | ALL | ALL | ALL | ALL | 否 | 初始化交換快取 |
快速 | 否 | ALL | ALL | ALL | ALL | ALL | 否 | 除IP以外的所有在高端裝置均採用預設設定 |
最佳交換 | 否 | 否 | 否 | ALL | ALL | ALL | 否 | 12.0之前的IP高端的預設值 |
Netflow交換(3) | 否 | 12.0(2)、12.0T和12.0S | ALL | 11.1CA、11.1CC、11.2、11.2P、11.3、11.3T、12.0、12.0T、12.0S | 11.1CA、11.1CC、11.2、11.2P、11.3、11.3T、12.0、12.0T、12.0S | 11.1CA、11.1CC、11.2、11.2P、11.3、11.3T、12.0、12.0T、12.0S | 12.0(6)S | |
分散式最佳交換 | 否 | 否 | 否 | 否 | 否 | 11.1、11.1CC、11.1CA、11.2、11.2P、11.3和11.3T | 否 | 使用VIP2-20、40、50從12.0不可用。 |
CEF | 否 | 12.0(5)公噸 | ALL | 11.1CC、12.0和12.0x | 11.1CC、12.0和12.0x | 11.1CC、12.0和12.0x | 否 | 用於IP的12.0版本的高端預設值 |
dCEF | 否 | 否 | ALL | 否 | 否 | 11.1CC、12.0和12.0x | 11.1CC、12.0和12.0x | 僅適用於75xx+VIP和GSR |
(1)包括801至805。
(2)包括806及以上、1000、1400、1600、1700、2600、3600、3700、4000、AS5300、AS5350、AS5400及AS5800系列。
(3)針對Cisco IOS軟體版本12.0(4)T支援1400、1600和2500平台上的NetFlow導出v1、v5和v8。Cisco IOS軟體12.0主線版本不支援這些平台的NetFlow。
(4)在這些平台上使用UHP的效能影響:RSP720-3C/MSFC4、RSP720-3CXL/MSFC4、7600-ES20-GE3CXL/7600-ES20-D3CXL、SUP720-3BXL/MSFC3明顯為空,這會導致PE中的循環和效能下降。吞吐量從RSP720-3C/MSFC4、RSP720-3CXL/MSFC4和SUP720-3BPS上的20 Mpps減少到12 Mpps xl/MSFC3和7600-ES20-GE3CXL/7600-ES20-D3CXL的吞吐量從48 Mpps降至25 Mpps。
NetFlow交換是一個不恰當的用語,而且其配置方式與交換路徑相同。實際上,NetFlow交換不是交換路徑,因為NetFlow快取不包含或指向第2層重寫所需的資訊。必須根據活動交換路徑做出交換決策。
使用NetFlow交換時,路由器按流對流量進行分類。流被定義為給定源端點和目標端點之間的單向資料包序列。路由器使用源地址和目標地址、傳輸層埠號、IP協定型別、服務型別(ToS)以及源介面來定義流量。這種流量分類方法允許路由器僅針對要求高CPU的功能(如大型訪問清單、排隊、會計策略和強大的記帳/計費)處理流量的第一個資料包。NetFlow首頁提供詳細資訊。
在高端平台上,許多CPU密集型任務(不僅僅是分組交換演算法)可以從主處理器轉移到分散式處理器,如VIP卡(7500)上的分散式處理器。其中一些任務可以從通用處理器導出到特定埠介面卡或網路模組,這些埠介面卡或網路模組在專用硬體上實現該功能。
只要可能,通常會將任務從主處理器解除安裝到VIP的處理器。這可以釋放資源並提高路由器效能。一些可能解除安裝的進程包括資料包壓縮、資料包加密和加權公平隊列。有關可以解除安裝的其他任務,請參閱下表。有關服務的完整說明,請參閱Cisco 7500上的分散式服務。
服務 | 功能 |
---|---|
基本交換 | Cisco Express Forwarding IP分段快速EtherChannel |
VPN | ACL:延伸和增強型Cisco加密通用路由封裝(GRE)通道IP安全(IPSec)第2層通道通訊協定通道(L2TP) |
Qos | NBAR流量調節(dTS)管制(CAR)擁塞規避(dWRED)透過BGPh原則路由的保證最小頻寬(dCBWFQ)原則傳播 |
多服務 | 低延遲佇列FRF 11/12 RTP標頭壓縮含連結分段和交集的多連結PPP |
計量 | 輸出記帳NetFlow導出優先順序和MAC記帳 |
負載平衡 | CEF負載平衡多重連結PPP |
快取 | WCCP V1 WCCP V2 |
壓縮 | L2軟體和硬體壓縮L3軟體和硬體壓縮 |
多點傳播 | 組播分散式交換 |
基本規則是選擇可用的最佳交換路徑(從最快速到最慢):dCEF、CEF、optimal和fast。啟用CEF或dCEF可提供最佳效能。啟用NetFlow交換可以增強或降低效能,具體取決於您的配置。如果您擁有非常大的訪問清單,或者如果您需要執行某些記帳或同時執行兩者,則建議使用NetFlow交換。通常,NetFlow在擁有大量CPU功率且使用許多功能的邊緣路由器上啟用。如果您在相同介面上設定多個交換路徑(例如快速交換和CEF),路由器會從最佳到最差嘗試所有路徑(從CEF開始並以程式交換結束)。
使用以下命令檢視交換路徑是否得到有效使用,以及路由器的負載情況。
show ip interfaces:此命令提供應用於特定介面的交換路徑的概述。
Router#show ip interfaces Ethernet0/0 is up, line protocol is up Internet address is 10.200.40.23/22 Broadcast address is 255.255.255.255 Address determined by setup command MTU is 1500 bytes Helper address is not set Directed broadcast forwarding is disabled Outgoing access list is not set Inbound access list is not set Proxy ARP is enabled Security level is default Split horizon is enabled ICMP redirects are always sent ICMP unreachables are always sent ICMP mask replies are never sent IP fast switching is enabled IP fast switching on the same interface is disabled IP Flow switching is disabled IP CEF switching is enabled IP Fast switching turbo vector IP Normal CEF switching turbo vector IP multicast fast switching is enabled IP multicast distributed fast switching is disabled IP route-cache flags are Fast, CEF Router Discovery is disabled IP output packet accounting is disabled IP access violation accounting is disabled TCP/IP header compression is disabled RTP/IP header compression is disabled Probe proxy name replies are disabled Policy routing is disabled Network address translation is disabled WCCP Redirect outbound is disabled WCCP Redirect inbound is disabled WCCP Redirect exclude is disabled BGP Policy Mapping is disabled
從以下輸出中,我們可以看到快速交換已啟用、NetFlow交換已停用和CEF交換已啟用。
show processes cpu:此命令顯示有關CPU負載的有用資訊。有關詳細資訊,請參閱對Cisco路由器上的高CPU利用率進行故障排除。
Router#show processes cpu CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 0% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 1 28 396653 0 0.00% 0.00% 0.00% 0 Load Meter 2 661 33040 20 0.00% 0.00% 0.00% 0 CEF Scanner 3 63574 707194 89 0.00% 0.00% 0.00% 0 Exec 4 1343928 234720 5725 0.32% 0.08% 0.06% 0 Check heaps 5 0 1 0 0.00% 0.00% 0.00% 0 Chunk Manager 6 20 5 4000 0.00% 0.00% 0.00% 0 Pool Manager 7 0 2 0 0.00% 0.00% 0.00% 0 Timers 8 100729 69524 1448 0.00% 0.00% 0.00% 0 Serial Backgroun 9 236 66080 3 0.00% 0.00% 0.00% 0 Environmental mo 10 94597 245505 385 0.00% 0.00% 0.00% 0 ARP Input 11 0 2 0 0.00% 0.00% 0.00% 0 DDR Timers 12 0 2 0 0.00% 0.00% 0.00% 0 Dialer event 13 8 2 4000 0.00% 0.00% 0.00% 0 Entity MIB API 14 0 1 0 0.00% 0.00% 0.00% 0 SERIAL A'detect 15 0 1 0 0.00% 0.00% 0.00% 0 Critical Bkgnd 16 130108 473809 274 0.00% 0.00% 0.00% 0 Net Background 17 8 327 24 0.00% 0.00% 0.00% 0 Logger 18 573 1980044 0 0.00% 0.00% 0.00% 0 TTY Background [...]
show memory summary:此命令的前幾行顯示有關路由器記憶體使用情況和記憶體/緩衝區上的有用資訊。
Router#show memory summary Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor 8165B63C 6965700 4060804 2904896 2811188 2884112 I/O 1D00000 3145728 1770488 1375240 1333264 1375196 [...]
show interfaces stat和show interfaces switching:這兩個命令顯示路由器使用哪條路徑,以及如何交換流量。
Router#show interfaces stat Ethernet0 Switching path Pkts In Chars In Pkts Out Chars Out Processor 52077 12245489 24646 3170041 Route cache 0 0 0 0 Distributed cache 0 0 0 0 Total 52077 12245489 24646 3170041 Router#show interfaces switching Ethernet0 Throttle count 0 Drops RP 0 SP 0 SPD Flushes Fast 0 SSE 0 SPD Aggress Fast 0 SPD Priority Inputs 0 Drops 0 Protocol Path Pkts In Chars In Pkts Out Chars Out Other Process 0 0 595 35700 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IP Process 4 456 4 456 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IPX Process 0 0 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 Trans. Bridge Process 0 0 0 0 Cache misses 0 Fast 11 660 0 0 Auton/SSE 0 0 0 0 DEC MOP Process 0 0 10 770 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 ARP Process 1 60 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 CDP Process 200 63700 100 31183 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
10-Dec-2001 |
初始版本 |