本檔案簡要概述影響路由器效能的問題,並指向提供有關這些問題的更多詳細資訊的其他檔案。
本文件沒有特定需求。
本文中的資訊係根據以下軟體和硬體版本:
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重寫),這意味著更改資料包的封裝以與傳出介面保持一致。
將封包放入傳出介面的傳送環或輸出佇列中。
更新相應的記憶體結構(重置快取中的計時器、更新計數器等)。
從網路介面收到資料包時引發的中斷稱為「RX中斷」。 只有在所有上述步驟都執行時,此中斷才會被消除。如果無法執行上述前三個步驟中的任何一個,資料包將被傳送到下一個交換層。如果下一交換層是進程交換,則將分組放入傳入介面的輸入隊列中進行進程交換,並且解除中斷。由於中斷不能被同一級別的中斷所中斷,並且所有介面生成同一級別的中斷,因此在當前RX中斷被駁回之前,不能處理其他資料包。
不同中斷交換路徑可以按層次組織,從提供最快查詢的路徑到提供最慢查詢的路徑。處理資料包的最後一個手段始終是進程交換。並非每個中斷交換路徑都支援所有介面和資料包型別。通常,只有那些需要檢查且更改僅限於資料包報頭的資料包才能進行中斷交換。如果在轉發之前需要檢查資料包負載,則不可能進行中斷交換。某些中斷交換路徑可能存在更具體的限制。此外,如果通過傳出介面的第2層連線必須可靠(即它支援重新傳輸),則無法在中斷級別處理資料包。
以下是無法進行中斷交換的資料包示例:
導向路由器的流量(路由通訊協定流量、簡易網路管理通訊協定(SNMP)、Telnet、簡單檔案傳輸通訊協定(TFTP)、ping等)。 管理流量可以來源並定向到路由器。它們具有特定的任務相關流程。
OSI第2層面向連線的封裝(例如X.25)。 有些任務過於複雜,無法在中斷交換路徑中進行編碼,因為需要運行太多指令,或者需要計時器和視窗。例如,加密、區域傳輸(LAT)轉換和資料鏈路交換Plus(DLSW+)等功能。
資料包在路由器內部所經過的路徑由活動轉發演算法確定。這些也稱為「交換演算法」或「交換路徑」。 與低端平台相比,高端平台通常具有更強大的轉發演算法,但預設情況下,它們通常不處於活動狀態。有些轉發演算法是在硬體中實現的,有些是在軟體中實現的,有些在兩個中都實現,但目的始終是儘可能快地傳送資料包。
Cisco路由器上可用的交換演算法有:
轉發演算法 | 命令(從config-interface模式發出) |
---|---|
快速交換 | 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)而不是二叉樹,從而產生更大的記憶體需求和更快的快取記憶體查詢。有關如何為您的網路選擇最佳路由器交換路徑,請參閱樹狀目錄結構和快速/最佳/思科快速轉發(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中唯一可用的分散式交換方法。必須知道,如果在路由器上啟用分散式交換,就會在路由器中的所有VIP上傳FIB/鄰接表,而不管其介面是否設定了CEF/dCEF。
藉助dCEF,VIP還會處理訪問清單、基於策略的路由資料和速率限制規則,這些全部儲存在VIP卡中。可以與dCEF一起啟用Netflow,以增強VIP對訪問清單的處理。
下表顯示了每個平台支援哪個Cisco IOS軟體版本支援的交換路徑。
交換路徑 | 下限(1) | 低/中端(2) | Cisco AS5850 | Cisco 7000,帶RSP | 思科72xx/71xx | 思科75xx | Cisco GSR 12xxx | 意見 |
---|---|---|---|---|---|---|---|---|
處理序交換 | 全部 | 全部 | 全部 | 全部 | 全部 | 全部 | 否 | 初始化交換快取 |
快速 | 否 | 全部 | 全部 | 全部 | 全部 | 全部 | 否 | 除IP以外的所有高端的預設值 |
最佳交換 | 否 | 否 | 否 | 全部 | 全部 | 全部 | 否 | 12.0之前IP的高端預設值 |
Netflow交換(3) | 否 | 12.0(2)、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 | 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)T | 全部 | 11.1CC、12.0和12.0x | 11.1CC、12.0和12.0x | 11.1CC、12.0和12.0x | 否 | 12.0版IP的高端預設值 |
dCEF | 否 | 否 | 全部 | 否 | 否 | 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)1400、1600和2500平台支援NetFlow匯出v1、v5和v8,目標用於Cisco IOS軟體版本12.0(4)T。Cisco IOS軟體12.0 mainline版本不支援這些平台。
(4)使用UHP對這些平台的效能影響:RSP720-3C/MSFC4、RSP720-3CXL/MSFC4、7600-ES20-GE3CXL/7600-ES20-D3CXL、SUP720-3BXL/MSFC3為顯性Null,會導致PE中的循環並降低效能。吞吐量從RSP720-3C/MSFC4、RSP720-3CXL/MSFC4和SUP720-3BXL/MSFC3上的20 Mpps降至12 Mpps,7600-ES20-GE3CXL/7600-ES20-D3CXL的吞吐量從48 Mpps降至25 Mpps ps。
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