當路由器收到一個IP數據包,路由器會根據數據包的目的IP地址查找FIB(ForwardingInformation Base,轉發信息庫)表,找到“最匹配”的路由條目后,將數據包根據路由條目所指示的出接口或下一跳轉發出去。
路由器獲取路由的方式有三種,分別是動態路由(例如OSPF)、靜態路由、直連路由。一個網絡中可能會同時存在這三種方式,那么采用不同方式獲取路由的路由器之間如何實現路由可達?
本文介紹IP路由的基礎知識,包括路由轉發和路由表,以及路由引入的相關知識。
IP路由基礎
IP路由概述

當路由器收到一個IP報文時,路由器根據該IP報文的目的地址匹配路由條目(或路由表項)。
若有匹配的路由條目,則依據該條目中的出接口或下一跳等信息進行報文轉發;
若無匹配的路由條目,則路由器沒有相關路由信息用于指導報文轉發,此時會丟棄該報文。
RIB與FIB
具有路由功能的網絡設備都維護兩種重要的數據表:一是路由表RIB(Routing Information Base,路由信息庫);二是轉發表FIB。

路由表
每個路由器都有路由表,而路由表又分為本地核心路由表和協議路由表。

IP路由查找的最長匹配原則
路由器查找FIB表時,將報文的目的IP地址和FIB表中各表項的掩碼進行按位“邏輯與”,得到的地址符合FIB表中的網絡地址則匹配。
最終選擇一個掩碼最長的FIB表項轉發報文。
| [Huawei] display fib 0 |
| Route Flags: G - Gateway Route, H - Host Route, U - Up Route |
| S - Static Route, D - Dynamic Route, B - Black Hole Route |
| --------------------------------------------------------------------------------------------- |
| FIB Table: |
| Total number of Routes : 8 |
| Destination/Mask Nexthop Flag TimeStamp Interface TunnelID |
| 10.3.3.3/32 10.0.1.1 DGHU t[15123] GE0/0/0 0x0 |
| 10.4.4.4/32 10.0.2.2 DGHU t[11177] GE0/0/1 0x0 |
| 10.0.1.2/32 127.0.0.1 HU t[9058] InLoop0 0x0 |
| 127.0.0.1/32 127.0.0.1 HU t[19] InLoop0 0x0 |
| 127.0.0.0/8 127.0.0.1 U t[19] InLoop0 0x0 |
| 0.0.0.0/0 10.0.2.2 GSU t[122] GE0/0/1 0x0 |
| 10.0.1.0/24 10.0.1.2 U t[9058] GE0/0/0 0x0 |
| 10.0.3.0/24 10.0.2.2 DGU t[11177] GE0/0/1 0x0 |
路由的來源

動態路由協議
動態路由協議根據作用范圍不同,可分為:
內部網關協議IGP(Interior Gateway Protocol):在一個自治系統內部運行。常見的IGP協議包括OSPF和IS-IS。
外部網關協議EGP(Exterior Gateway Protocol):運行于不同自治系統之間。BGP是目前最常用的EGP協議。

路由迭代
路由必須有直連的下一跳才能夠指導轉發,靜態路由或BGP路由的下一跳可能不是直連的鄰居,因此需要計算出一個直連的下一跳,這個過程就叫做路由迭代。

數據轉發流程

IP路由高級應用
IP路由高級應用場景分析

場景描述:
假設A公司和B公司各有自己的網絡,這兩個網絡被獨立管理及運維,A公司網絡使用的路由協議為OSPF,B公司網絡使用的路由協議為IS-IS。
現在兩家公司合并成一家公司,導致原有的兩張網絡不得不進行整合,為了使合并后的新公司業務流量能夠正常在整合后的網絡上交互,最重要的就是實現路由互通。

場景描述:
在大型企業網絡中,網絡規模十分龐大,選用單一的路由協議無法滿足網絡的需求,因此多種路由協議共存的情況十分常見。
或者出于業務邏輯或行政管理的考慮,會在不同的網絡結構中設計和部署不同的路由協議,使路由的層次結構更加清晰可控。
在這樣的網絡環境下,也需要實現全網路由互通。
路由引入的基本概念

路由引入指的是將路由信息從一種路由協議發布到另一種路由協議的操作。
通過路由引入,可以實現路由信息在不同路由協議間傳遞。
執行路由引入時,還可以部署路由控制,從而實現對業務流量的靈活把控。
路由引入的方向性
路由引入是具有方向性的,將路由信息從路由協議A引入到路由協議B(A-to-B),則路由協議B可獲知A中的路由信息,但是此時,A還并不知曉B路由協議中的路由信息,除非配置B-to-A的路由引入。
路由引入時需要注意以下幾點:
路由優先級
路由回灌
路由度量值

路由引入:路由優先級

場景描述:
- R1將直連路由10.1.1.0/24引入到OSPF中。
- R3通過OSPF學習到10.1.1.0/24網段路由(OSPF外部路由,路由優先級為150)。
- R2在IS-IS進程中引入OSPF路由。
- R3也會通過IS-IS學習到10.1.1.0/24網段路由(路由優先級為15)。
- 對R3而言,IS-IS路由優于OSPF外部路由,因此優選來自R4的IS-IS路由。
? 后續R3訪問10.1.1.0/24網段的路徑為:R3->R4->R2->R1,這是次優路徑。
路由引入:路由回灌

場景描述:
- R1將直連路由10.1.1.0/24引入到OSPF中。
- 10.1.1.0/24網段路由全OSPF域內通告。
- R2在IS-IS進程中引入OSPF路由。
- 10.1.1.0/24網段路由全IS-IS域內通告。
- R3在OSPF進程中引入IS-IS路由。
- 10.1.1.0/24網段路由再次被通告進OSPF域內,形成路由回灌。
路由引入:路由度量值

場景描述:
- 在IS-IS中引入OSPF路由。
- 在OSPF中引入IS-IS路由。
路由引入場景
路由引入主要涉及以下幾種場景:
- 動態路由協議之間的路由引入
- 引入直連路由到動態路由協議
- 引入靜態路由到動態路由協議

路由引入的基礎配置命令
- 配置OSPF引入外部路由
[Huawei-ospf-100] import-route { bgp | direct | static | isis [ process-id-isis ] | ospf [ process-id-ospf ]}
在OSPF視圖下,引入BGP路由/直連路由/靜態路由/IS-IS路由/OSPF其他進程路由。
案例1:引入直連路由到OSPF

可以通過使用import-route direct命令,將路由表中所有直連路由引入到動態路由協議。
引入后的路由會作為OSPF外部路由,在整個OSPF網絡內通告。
案例2:引入靜態路由到OSPF

可以通過使用import-route static命令,將路由表中所有靜態路由引入到動態路由協議。
引入后的路由會作為OSPF外部路由,在整個OSPF網絡內通告。
案例3:將IS-IS路由引入到OSPF

可以通過使用import-route isis 1命令,將路由表中所有IS-IS路由引入到動態路由協議。
引入后的路由會作為OSPF外部路由,在整個OSPF網絡內通告。
本文版權歸作者和博客園共有,歡迎轉載,但必須給出原文鏈接,并保留此段聲明,否則保留追究法律責任的權利。