簡介
本檔案介紹基於Cisco IOS® XE的裝置上的Cisco快速轉送(CEF)功能。與其他Cisco路由器不同,基於Cisco IOS XE的路由器不僅在硬體方面而且在軟體方面都是模組化的。由於這種性質,大多數功能和協定的行為也略有不同。您還將看到如何在基於Cisco IOS XE的裝置上維護CEF表,以及如何根據Cisco IOS XE平台上的CEF更新來管理大邊界網關協定(BGP)表。
Cisco IOS XE平台上的CEF行為
XE平台內的CEF表更新
在Cisco IOS XE裝置(如ASR1000)上,控制平面與轉發平面是分開的。每當需要將任何更新從控制平面傳遞到資料平面時,它都必須通過流程圖中顯示的資料流。例如,對於CEF,每當在控制平面上學習到任何字首時,此更新都會從控制平面(IOSd)傳遞到控制平面(FMAN-RP)的轉發管理器。 控制平面上的轉送管理器使用核心實用程式(如lsmpi、超傳輸(HT)連結等),以將更新傳遞到轉送平面(ESP)轉送管理器(FMAN-FP)。 轉送管理器將更新傳送到量子流處理器(QFP),該處理器對QFP微碼進行程式設計,以便最終對QFP子系統程式設計,該子系統在Cisco Aggregation Services Router(ASR)裝置中執行資料包的實際轉送。
可以使用各種命令檢查這些軟體模組中的CEF更新。這是分步進行的。
若要檢查控制平面上的CEF:
Router#show ip cef
Prefix Next Hop Interface
0.0.0.0/0 no route
0.0.0.0/8 drop
0.0.0.0/32 receive
1.1.1.1/32 10.10.10.1 GigabitEthernet0/0/0
2.2.2.2/32 receive Loopback1
10.10.10.0/24 attached GigabitEthernet0/0/0
10.10.10.0/32 receive GigabitEthernet0/0/0
Router#show platform software ip rp active cef summary
Forwarding Table Summary
Name VRF id Table id Protocol Prefixes State
------------------------------------------------------------------------------------------------
Default 0 0 IPv4 20 OM handle: 0x404a4df8
Router#show platform software ip rp active cef detail
Forwarding Table
0.0.0.0/0 -> OBJ_ADJ_NOROUTE (0), urpf: 5
Prefix Flags: Default, Default route handler
OM handle: 0x404a91e8
0.0.0.0/8 -> OBJ_ADJ_DROP (0), urpf: 13
Prefix Flags: unknown
OM handle: 0x404bd5e8
0.0.0.0/32 -> OBJ_ADJ_RECEIVE (0), urpf: 12
Prefix Flags: Receive
OM handle: 0x404bd298
1.1.1.1/32 -> OBJ_ADJACENCY (16), urpf: 20
Prefix Flags: unknown
OM handle: 0x404fec70
若要檢查轉送平面(ESP)中的CEF詳細資訊:
Router#show platform software ip fp active cef detail
Forwarding Table
0.0.0.0/0 -> OBJ_ADJ_NOROUTE (0), urpf: 5
Prefix Flags: Default, Default route handler
aom id: 73, HW handle: 0x4310df8 (created)
0.0.0.0/8 -> OBJ_ADJ_DROP (0), urpf: 13
Prefix Flags: unknown
aom id: 90, HW handle: 0x4362cd8 (created)
0.0.0.0/32 -> OBJ_ADJ_RECEIVE (0), urpf: 12
Prefix Flags: Receive
aom id: 86, HW handle: 0x4333568 (created)
127.0.0.0/8 -> OBJ_ADJ_DROP (0), urpf: 13
Prefix Flags: unknown
aom id: 91, HW handle: 0x4387048 (created)
224.0.0.0/4 -> OBJ_ADJ_DROP (0), urpf: 13
Prefix Flags: unknown
aom id: 92, HW handle: 0x43870d8 (created)
Router#show platform software ip fp active cef summary
Forwarding Table Summary
Name VRF id Table id Protocol Prefixes State
------------------------------------------------------------------------------------------------
Default 0 0 IPv4 20 hw: 0x43010a8 (created)
當您在裝置上遇到CEF問題時,也可以使用這些命令。例如,雖然路由已獲知,但字首不可訪問。您可以挖掘所有模組,檢視是否正確更新了所有CEF表。
檢查CEF鄰接關係
通過類似方式,您可以進一步檢查CEF鄰接表以獲取有關相鄰字首的所有第2層資訊。
若要檢查控制平面上的CEF鄰接關係:
Router#show adjacency gigabitEthernet 0/0/0 detail
Protocol Interface Address
IP GigabitEthernet0/0/0 10.10.10.1(11)
72772 packets, 4622727 bytes
epoch 0
sourced in sev-epoch 0
Encap length 14
0062EC6B89000062EC6BEC000800
L2 destination address byte offset 0
L2 destination address byte length 6
Link-type after encap: ip
ARP
Router#show platform software adjacency rp active
Number of adjacency objects: 4
Adjacency id: 0x10 (16)
Interface: GigabitEthernet0/0/0, IF index: 8, Link Type: MCP_LINK_IP
Encap: 0:62:ec:6b:89:0:0:62:ec:6b:ec:0:8:0
Encap Length: 14, Encap Type: MCP_ET_ARPA, MTU: 1500
Flags: no-l3-inject
Incomplete behavior type: None
Fixup: unknown
Fixup_Flags_2: unknown
Nexthop addr: 10.10.10.1
IP FRR MCP_ADJ_IPFRR_NONE 0
OM handle: 0x404ea1d8
您需要記下鄰接關係ID,才能檢查轉發平面中有關此特定鄰接關係的詳細資訊。在這種情況下,鄰接ID為16。
若要檢查轉發平面上的CEF鄰接關係:
Router#show platform software adjacency fp active index 16
Number of adjacency objects: 4
Adjacency id: 0x10 (16)
Interface: GigabitEthernet0/0/0, IF index: 8, Link Type: MCP_LINK_IP
Encap: 0:62:ec:6b:89:0:0:62:ec:6b:ec:0:8:0
Encap Length: 14, Encap Type: MCP_ET_ARPA, MTU: 1500
Flags: no-l3-inject
Incomplete behavior type: None
Fixup: unknown
Fixup_Flags_2: unknown
Nexthop addr: 10.10.10.1
IP FRR MCP_ADJ_IPFRR_NONE 0
aom id: 114, HW handle: 0x43ae148 (created)
在這裡,您可以看到CEF鄰接資訊已填充到FP上的轉發管理器(FMAN)中。FMAN FP將此資訊傳送到QFP客戶端驅動程式,該驅動程式對QFP轉發表進行程式設計,該轉發表最終將用於轉發。從上一個命令複製硬體控制代碼以檢查QFP上的轉發資訊。
Router#show pla hard qfp act feature cef-mpls adjacency handle 0x43ae148
Adj Type: : IPV4 Adjacency
Encap Len: : 14
L3 MTU: : 1500
Adj Flags: : 0
Fixup Flags: : 0
Output UIDB: :
Interface Name: GigabitEthernet0/0/0
Encap: : 00 62 ec 6b 89 00 00 62 ec 6b ec 00 08 00
Next Hop Address: : 10.10.10.1
Lisp Fixup HW Ptr: : 0x767b28f0
Next HW OCE Ptr: : 00000000
CM HW Ptr:: 946947588
Fixup_Falgs_2: : 0
在這裡,您知道所有鄰接表都正確更新,並且路由器已準備好轉發。然而,隔離的整個過程需要大量命令,並且需要瞭解一定級別的模組化架構。因此,為了簡化這一過程,最近引入了一個命令,它提供來自所有模組的統一資訊。
附註:對於路由表長的裝置,此命令可能需要幾分鐘才能運行。
命令是show ip cef platform detail。
觀察到的常見現象
對於在路由器上獲知大量字首的所有Cisco IOX XE模組化裝置,通常需要一些時間對所有轉發模組中的所有字首進行程式設計。這經常出現在位於提供商邊緣的路由器上,它們從ISP獲取完整的BGP路由表。
在技術支援中心,很少收到這樣的情況:在BGP會話啟動後,甚至在路由表中更新BGP路由後,字首仍會暫時無法訪問。一般情況下,需要20到30秒鐘,且取決於路由器平台來對這些字首執行ping。例如,以下是一個測試案例:
Pagent是一種流量生成器工具,用於將100萬條BGP路由推送到ASR1002HX路由器。
此處您會看到,即使是在裝置上學習了BGP路由並且控制平面CEF表已更新,內部網路也無法ping學習的字首數秒鐘。根據CEF討論,您顯然需要在每個軟體模組上更新CEF條目。您可以在此特定情況下看到此行為的一個後果,其中由於ESP轉發表中未更新字首而無法訪問字首。以下是ASR1002HX的一些輸出以供參考。
BGP表更新了全部一百萬條路由。
Router#show ip bgp summary
BGP router identifier 1.1.1.1, local AS number 100
BGP table version is 1, main routing table version 1
1000002 network entries using 248000496 bytes of memory
1000002 path entries using 128000256 bytes of memory
100002/0 BGP path/bestpath attribute entries using 26400528 bytes of memory
100000 BGP AS-PATH entries using 5402100 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 407803380 total bytes of memory
BGP activity 8355774/7355772 prefixes, 9438985/8438983 paths, scan interval 60 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.10.10.2 4 100 5 2 1 0 0 00:00:58 1
20.20.20.2 4 100 100002 3 1 0 0 00:01:02 1000000
雖然BGP表有100萬個字首,但轉發管理器CEF表只獲得了48613字首。
如果等待20-30秒,則會看到帶有一百萬個字首的完全更新的FP CEF表。
Router#show platform software ip fp active cef summary
Forwarding Table Summary
Name VRF id Table id Protocol Prefixes State
------------------------------------------------------------------------------------------------
Default 0 0 IPv4 48613 hw: 0x2edce98 (created)
結論
處理基於Cisco IOS XE的模組化架構裝置轉發相關問題時,必須驗證來自所有軟體模組的轉發表相關資訊。解釋的BGP方案可視為此平台的預期行為,因為裝置更新所有軟體模組中的字首需要幾秒鐘。