RIB (route information base) 和 FIB (forwarding information base),又稱Ip路由表 和 CEF表,它們之間的關係能夠用下面這張圖片來高度歸納。算法
本質上,RIB(route information base) 是由節點上各類路由過程經過路由協議(例如OSPF,IS-IS,BGP,甚至是靜態路由條目)提供的信息來構建的。從RIB中的全部路由中選出最佳路由後,將它們複製到FIB。所以,RIB包含節點願意保留的全部路由以及路由協議正在使用的信息,硬件使用FIB來指導轉發,物理上將數據包從移入和移出接口。數據庫
RIB維護每種協議的網絡拓撲和路由表。這將包括許多到達相同目的地前綴的路由。緩存
FIB是從下推的RIB中可能的許多協議到快速轉發查找內存的最佳路徑的最佳路由。網絡
下面詳細展開:數據結構
1. 路由器具備學習到達各個Ip前綴的最佳路徑的多種方法:它們能夠經過直連路由,配置靜態路由或者經過動態路由協議學習。學習
每一個動態路由協議(包括RIP)都有本身內部的數據結構集,稱爲OSPF / IS-IS數據庫,EIGRP拓撲表或BGP表。路由協議基於與其鄰居交換的路由協議來更新其數據結構,最終收集全部相關信息。在本文中,咱們將處理經過OSPF學習的10.0.1.1/32和經過BGP學習的10.0.11.11/32,所以,讓咱們檢查相關的OSPF / BGP數據結構。spa
RR#show ip bgp | begin Network Network Next Hop Metric LocPrf Weight Path r>i10.0.1.1/32 10.0.1.1 0 100 0 i r>i10.0.1.2/32 10.0.1.2 0 100 0 i *>i10.0.11.11/32 10.0.1.1 0 100 0 i
RR#show ip ospf database router 10.0.1.1 OSPF Router with ID (10.0.1.5) (Process ID 1) Router Link States (Area 0) LS age: 1612 Options: (No TOS-capability, DC) LS Type: Router Links Link State ID: 10.0.1.1 Advertising Router: 10.0.1.1 LS Seq Number: 80000003 Checksum: 0xC764 Length: 60 Number of Links: 3 Link connected to: a Stub Network (Link ID) Network/subnet number: 10.0.1.1 (Link Data) Network Mask: 255.255.255.255 Number of MTID metrics: 0 TOS 0 Metrics: 1 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 10.0.1.6 (Link Data) Router Interface address: 10.0.7.9 Number of MTID metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 10.0.7.8 (Link Data) Network Mask: 255.255.255.252 Number of MTID metrics: 0 TOS 0 Metrics: 64
2. 每一個路由協議都運行本身的路由選擇算法(若是是OSPF或IS-IS,則爲SPF算法;若是是BGP,則爲至關複雜的規則集),經過路由協議和下一跳Ip信息得到可到達的IP前綴集。可使用針對特定協議的show命令查看這些路由選擇算法的結果(例如,用於BGP的show ip bgp 前綴和用於OSPF的show ip ospf rib 前綴)code
BGP routing table entry for 10.0.11.11/32, version 6 Paths: (1 available, best #1, table default) Not advertised to any peer Local 10.0.1.1 (metric 66) from 10.0.1.1 (10.0.1.1) Origin IGP, metric 0, localpref 100, valid, internal, best RR#show ip ospf rib 10.0.1.1 OSPF Router with ID (10.0.1.5) (Process ID 1) OSPF local RIB Codes: * - Best, > - Installed in global RIB *> 10.0.1.1/32, Intra, cost 66, area 0 SPF Instance 2, age 00:48:15 Flags: RIB, HiPrio via 10.0.2.1, FastEthernet0/0, flags: RIB LSA: 1/10.0.1.1/10.0.1.1
3. BGP和OSPF都將IP下一跳與IP前綴相關聯,可是BGP僅使用附加到BGP路由的next-hop屬性的值,而OSPF使用SPF算法計算下一跳OSPF路由器的IP地址。
路由內協議路由選擇的結果基於管理距離插入到IP路由表(RIB)中(若是兩個路由協議具備相同的AD,則會產生有趣的結果)。orm
BGP有一個特殊的show命令,能夠顯示RIB故障。在本文的方案中,經過OSPF和BGP分別匹配到10.0.1.1/32前綴,將優先選擇OSPF路由,由於OSPF的AD值比BGP路由低。router
RR#show ip bgp rib-failure Network Next Hop RIB-failure RIB-NH Matches 10.0.1.1/32 10.0.1.1 Higher admin distance n/a 10.0.1.2/32 10.0.1.2 Higher admin distance n/a
4. 理想狀況下,咱們將使用RIB轉發IP數據包,可是實際上,咱們並無這樣作,由於其中某些條目(靜態路由和BGP路由)可能具備未直接鏈接的下一跳。
將IP路由表(RIB)中的IBGP與OSPF路由進行比較:
RR#show ip route 10.0.11.11 Routing entry for 10.0.11.11/32 Known via "bgp 65000", distance 200, metric 0, type internal Last update from 10.0.1.1 00:00:55 ago Routing Descriptor Blocks: * 10.0.1.1, from 10.0.1.1, 00:00:55 ago Route metric is 0, traffic share count is 1 AS Hops 0 MPLS label: none
RR#show ip route 10.0.1.1 Routing entry for 10.0.1.1/32 Known via "ospf 1", distance 110, metric 66, type intra area Last update from 10.0.2.1 on FastEthernet0/0, 00:33:47 ago Routing Descriptor Blocks: * 10.0.2.1, from 10.0.1.1, 00:33:47 ago, via FastEthernet0/0 Route metric is 66, traffic share count is 1
5. OSPF路由具備傳出接口;它是由SPF算法計算得出的,並已在IP路由表中傳輸。BGP路由沒有出接口,下一跳沒有直接鏈接;路由器必須執行遞歸查找以找到傳出接口(遞歸查找還用於經過環回接口實現EBGP負載平衡)。
早期的IOS版本對發送到新目的地的第一個數據包執行遞歸查找(過程切換),併爲後續數據包緩存結果(快速切換)。快速交換在早期Internet(幾乎沒有全局IP前綴)中運行良好,可是隨着Internet的發展和DoS攻擊變得廣泛,核心路由器常常遭受緩存破壞。大量的數據包正在進行過程交換,從而致使很高的CPU利用率和偶爾的路由器崩潰。如今是時候從緩存輔助轉發轉向肯定性轉發了。
引入了轉發信息庫(FIB)和Cisco快速轉發(CEF)交換,以使第3層交換具備肯定性。將IP路由從RIB複製到FIB時,將解析其下一跳,並在下一跳解析致使到達同一目標的多個路徑時計算出站接口並建立多個條目。例如,未來自上一個打印輸出的BGP路由插入到FIB中時,其下一跳將更改成指向實際的下一跳路由器。保留有關遞歸下一跳的信息,由於若是通往BGP下一跳的路徑發生更改,它容許路由器更新FIB(CEF表)而無需從新掃描和從新計算整個RIB。
RR#show ip cef 10.0.11.11 detail 10.0.11.11/32, epoch 0, flags rib only nolabel, rib defined all labels recursive via 10.0.1.1 nexthop 10.0.2.1 FastEthernet0/0 label 19
所以,通過全面評估的FIB(CEF表)可直接用於第3層交換。