FIB表與RIB表的區別與聯系


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數據結構。

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 前綴)

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,則會產生有趣的結果)。

BGP有一個特殊的show命令,可以顯示RIB故障。在本文的方案中,通過OSPF和BGP分別匹配到10.0.1.1/32前綴,將優先選擇OSPF路由,因為OSPF的AD值比BGP路由低。

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層交換。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM