Cisco IOS®軟體支援多個機制,以便以最小延遲和高吞吐量轉送流量。本檔案將說明如何判斷封包採用哪個Cisco IOS交換或轉送路徑。
註:本檔案僅討論流程交換、快速交換和思科快速轉發(CEF)。
本文檔的讀者應熟悉以下主題:
Cisco IOS軟體
Cisco 1600、2500和3600系列平台
本文件所述內容不限於特定軟體和硬體版本。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
Cisco IOS交換定義了通過路由器的資料包流。更具體地說,它決定了資料包通過路由器轉發的速度,以及資料包儲存於哪個物理緩衝區中。
在Cisco IOS的發展歷史中,已經開發了多種交換方法。某些方法僅在特定平台上受支援。CEF是最新的交換方法。全域性啟用CEF時(預設行為),也會啟用ip route-cache cef interface specific命令。此命令可確保對進入此介面的資料包執行CEF交換。有時,如果需要單獨在一個介面上禁用CEF,會新增no ip route-cache cef命令。這將對該介面單獨禁用CEF交換。在強制停用CEF時,Cisco IOS不會自行將no ip route-cache命令新增到running-config。它在Cisco IOS 12.0主線中的許多平台上推出,尤其是中低端平台,如Cisco 1600、2500和3600系列。
當路由器在路由介面上收到資料包時,它會首先刪除第2層(L2)幀資訊。然後將第3層(L3)封包儲存在輸入/輸出(I/O)記憶體中。接下來會發生什麼情況取決於封包遵循的交換路徑。
以下步驟可用於確認封包遵循CEF交換路徑:
確認已在全域性範圍內並在特定介面上啟用CEF。
router#show ip cef %CEF not running
在全域性配置模式下使用ip cef命令啟用(中央)CEF。
註:在Cisco 7200系列上,CEF是即將發佈的Cisco IOS版本中的預設Cisco IOS交換方法。
使用show ip cef prefix命令並確認已列出字首。
router#show ip cef Prefix Next Hop Interface 0.0.0.0/32 receive 192.168.0.0/30 attached Serial2/0/0:1 192.168.0.0/32 receive
確認已在特定介面上啟用CEF。
使用show cef interface x/x 命令可查詢「IP CEF switching enabled」或「IP distributed CEF(dCEF)switching enabled」。
router#show cef interface fastEthernet 0/0/0 FastEthernet0/0/0 is up (if_number 2) Internet address is 192.168.1.253/24 ICMP redirects are always sent Per packet loadbalancing is disabled Inbound access list is not set Hardware idb is FastEthernet0/0/0 Fast switching type 1, interface type 18 IP Distributed CEF switching enabled Fast flags 0x0. ifindex 1(1) Slot 0 Slot unit 0 VC -1 Hardware transmit queue ptr 0x48001A00 (0x48001A00) Transmit limit accumulator 0x48001A02 (0x48001A02) IP MTU 1500
使用show ip interface命令顯示已啟用的Cisco IOS交換方法。
router#show ip interface fastethernet 1/0/0.1 FastEthernet1/0/0.1 is up, line protocol is up IP fast switching is enabled IP fast switching on the same interface is enabled IP Flow switching is disabled IP CEF switching is enabled IP Distributed 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, Distributed, No CEF
在此輸出中,「無CEF」標誌表示由於特定介面上的no ip route-cache cef命令而禁用了CEF。「CEF」標誌表示CEF正在運行。在穩定狀態下,不應該同時顯示兩個標誌。思科錯誤ID CSCdr80269(僅供註冊客戶使用)解決了可能導致出現兩個標誌的罕見情況。如需錯誤ID的詳細資訊,請參閱Bug工具包(僅限註冊客戶)。
確認流經路由器的大多數封包都經過CEF交換。
使用show interface x/x stat命令並確定路由器通過「處理器」而不是「路由快取」轉發的資料包和位元組數。 請注意,「路由快取」包括快速交換資料包和CEF交換資料包。
router#show interface stats FastEthernet0/0 Switching path Pkts In Chars In Pkts Out Chars Out Processor 95084 26211621 33493 3386174 Route cache 24581 1132797 24542 13297583 Distributed cache 0 0 0 0 Total 119665 27344418 58035 16683757
使用show ip cache命令以確定是否存在IP快取條目,該條目表示資料包遵循快速交換路徑。快速交換建立在按需路由快取之上,可加快通過路由器的資料包轉發。在介面硬體上運行的驅動程式碼將控制臨時轉移到快速交換代碼,快速交換代碼在路由快取中搜尋幀以及從先前傳輸的分組構建的其他資訊。如果路由快取包含條目,快速交換代碼會嘗試將資料包直接傳送到目標介面。
router#show ip cache IP routing cache 0 entries, 0 bytes 0 adds, 0 invalidates, 0 refcounts Minimum invalidation interval 2 seconds, maximum interval 5 seconds, quiet interval 3 seconds, threshold 0 requests Invalidation rate 0 in last second, 0 in last 3 seconds Prefix/Length Age Interface Next Hop
這些步驟概述了驗證資料包是否使用CEF轉發的更具體的過程。
使用ip cef 命令啟用CEF。
發出clear ip cache命令以清除快速交換快取條目。
啟動您的流量流。
發出show ip cache命令。確認由於封包是CEF交換的,因此快速交換快取中沒有顯示任何專案。
發出show interface stats命令,並確認入站路由快取的增量命中。
注意:路由快取計數器包括快速交換資料包和CEF交換資料包。
在入站介面上使用no ip route-cache cef命令禁用CEF。
發出show interface stats命令,並確認路由快取的增量命中數。
發出show ip cache命令,並確認您看到條目是因為Cisco IOS已回退到快速交換狀態。
在出站介面上發出no ip route-cache命令以禁用快速交換。匹配的入站介面上的資料包將被進程交換。
注意:建議不要在流量繁重的網路中配置進程交換。
如果您已確認路由器介面上啟用了CEF,且已確定大多數封包不是CEF交換的,請在將問題報告給思科技術協助中心(TAC)時擷取這些命令。
註:在發出debug命令前,請先參閱有關Debug命令的重要資訊。
show cef interface x/x — 顯示CEF相關的介面資訊。
show ip cef prefix — 在轉發資訊庫(FIB)中顯示字首條目。
show adjacency interface detail — 顯示通過鄰接解析的遞迴和直接字首。
show cef not-cef-switched — 顯示哪些資料包不是CEF交換的。
debug ip cef drop — 顯示CEF丟棄的資料包的調試資訊。
輸入介面確定資料包採用的Cisco IOS交換路徑。在特定介面上啟用或停用交換方法時,請考慮以下經驗法則。
傳入介面 | 傳出介面 | 切換方法 |
---|---|---|
CEF | 流程 | CEF |
流程 | CEF | 快速 |
流程 | 快速交換(IP路由快取) | 快速交換 |
CEF | 快速交換 | CEF |
換句話說,您需要在傳入介面上啟用CEF,以便資料包進行CEF交換。由於CEF對輸入做出轉發決策,因此請在輸入介面上使用no ip route-cache cef命令禁用CEF。相反,由於Cisco IOS在交換資料包後構建快速交換快取條目,因此進入進程交換介面並通過快速交換介面出去的資料包會進行快速交換,因此請在出口介面上使用no ip route-cache命令禁用快速交換。這些流量型別不是CEF交換的:
交換快取中沒有條目的資料包
發往路由器的資料包
廣播流量
包含選項的IP資料包
需要協定轉換的資料包
加密流量
術語「punt」由Cisco定義,用於描述介面裝置驅動程式將資料包「down」傳送到下一個最快交換級別的操作。此清單定義了首選Cisco IOS交換方法的順序(從最快到最慢)。
分散式CEF
CEF
快速交換
進程交換
以下情況下會發生點選:
下一個較低級別未生成有效路徑或有效鄰接(對於CEF)。換句話說,如果CEF查詢過程在轉發資訊庫中找不到有效條目,則資料包將被轉發到下一個可用交換路徑或丟棄。
最低層不支援特定功能或第2層封裝。如果CEF支援特定功能,則封包的所有權會透過CEF「功能路徑」中一組軟體常式。
某個功能需要特殊處理。
當CEF中不支援某些輸出功能時,會在CEF中安裝點鄰接關係。CEF會將所有進入此類鄰接關係的資料包傳送到下一個最佳交換模式,以便交換所有資料包。
center#show ip cef 45.0.0.0 45.0.0.0/8, version 184, 0 packets, 0 bytes via 1.1.1.1, Tunnel0, 0 dependencies next hop 1.1.1.1, Tunnel0 valid punt adjacency CEF Packets passed on to next switching layer Slot No_adj No_encap Unsupported Redirect Receive Bad_ttl Options RP 0 0 0 0 5700 0 0 2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0
如果鄰接關係不完整,CEF會認為路由器作為一個整體(包括所有其它交換路徑)不知道如何到達相鄰節點。我們將資料包轉發到處理交換,以啟動某些解析協定(如地址解析協定[ARP]),從而導致鄰接在一段時間後完成。在這種情況下,CEF會每兩秒將一個封包傳送到下一個交換路徑,以避免封包泛濫。因此,在這種情況下,對IP地址的ping操作可能會失敗50%,您會看到「!..!..!」 ping模式。當CEF表損壞時,也會發生此情況,如特定IP地址的show ip route命令資訊和show ip cef命令資訊之間的差異所示。
注意:在Gigabit交換器路由器(GSR)上,線路卡(LC)從CEF內部產生網際網路控制訊息通訊協定(ICMP)回應回覆。如果資料包不是發往其中一個GSR本地地址,則不會涉及任何進程。根據您使用的LC,它會在硬體中直通或在中斷dCEF中直通交換。
在GSR上,快速交換和進程交換不可用。如果目的地首碼無法解析為傳入LC表中的轉送專案,則捨棄封包。只有與快速鄰接匹配的資料包才會被傳送到千兆路由處理器(GRP)。 此外,在GSR上,LC CPU不會針對功能將封包傳送到GRP,而LC會傳送無法連線的ICMP(只要未設定no ip unreachables指令)。 在GSR上,發往GRP的唯一流量是發往路由器介面的資料包或發往路由器的資料包。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
28-May-2007 |
初始版本 |