网工路由基础(2)路由选路原理
往期回顧??網工路由基礎(1)靜態路由
歡迎關注微信公眾號【廈門微思網絡】。www.xmws.cn專業IT認證培訓19周年
主要課程:思科、華為、紅帽、ORACLE、VMware、CISP、PMP等認證培訓及考證
路由器是實現網絡互聯,在不同網絡之間轉發數據單元的重要網絡設備。路由器主要在OSI參考模型的第三層(網絡層),路由器的主要任務就是為經過它的每個數據幀尋找一條最佳傳輸路徑,并將該數據有效地傳送到目的終點。
為了完成這項工作,在路由器中保存著各種傳輸路徑的相關數據——路由表(Routing Table),供路由選擇時使用。由此可見,選擇最佳路徑策略即路由算法是路由器的關鍵所在。
因此,當路由器接收到來自一個網絡端口的數據包時,首先根據其中所含的目的地址查詢路由表,決定轉發路徑(轉發接口與下一跳地址),然后從ARP緩存中調出下一跳地址的MAC地址,將路由器自己的MAC地址作為源MAC, 下一跳地址的NAC作為目的MAC封裝成幀頭,同時IP數據包頭的TTL(Time To Live)也開始減數,最后將數據發送到轉發端口,按順序等待,傳送到傳輸鏈路上去。
在這個過程中,路由器被認為執行兩個最重要的基本 功能:路由功能與交換功能。
?
路由器的基本功能
?路由功能
路由功能指路由器通過運行動態路由協議或其他方法來學習和維護網絡拓撲結構,建立,查詢和維護路由表。
? ? ? ?路由表里則保存著路由器進行運行動態路由選擇時所需的關鍵信息,,包含了目的地址、目的地址的掩碼、下一跳地址、轉發端口、路由信息來源、路由優先級、度量值(metric)等。
? ? ? ?路由信息可通過多種協議的學習而來,其來源方式可分為直連路由、靜態路由、缺省路由和動態路由。一個路由器上可以 同時運行多個不同的路由 協議,每個路由協議都會根據自己的選路算法計算出到達目的網絡的最佳路徑,但是由于選路算法不同,不同的路由協議對某一個特定的目的網絡可能選擇的最佳路徑不同。
? ? ? ?此時路由器根據路由優先級(決定了來自不同路由來源的路由信息的優先權)選擇將具有最高路由優先級(數值最小)的路由協議計算出的最佳路徑放置在路由表中,作為到達這個目的網絡的轉發路徑(優先級順序:直連路由>靜態路由>動態路由(OSPF>RIP))
? ? ? ?而對于一個特定的路由協議,可以發現到達目的網絡的所有路徑,根據選路算法賦予每一條路徑metric值,并比較metric值,選擇metric數值最小的路徑為最佳路徑。
? ? ? ?在路由器的交換過程中查找路由時也可能會發現能匹配上多條路由條目。此時路由器將根據最長匹配原則(最長匹配原則的優先級最高,大于優先級和metric)進行數據的轉發。路由器會選擇匹配最深的,也就是說可以匹配的掩碼長度最長的一條路由進行轉發。
?
?轉發功能
一般來說,路由器的主要工作是對數據包進行存儲轉發,具體如下:
第一、當一個數據幀到達某一端口,端口對幀進行CRC校對并檢查其目的數據鏈路層地址是否與本端口符合。
第二、如果通過檢查,則去掉幀的封裝并讀出IP數據包中的目的地址信息,查詢路由表,并決定轉發接口與下一跳地址。
第三、根據路由表中所查到的下一跳IP地址,再從ARP緩存中調出下一跳的MAC地址,并將轉發接口的MAC地址為源MAC,下一跳地址的MAC作為目的MAC,封裝成幀頭。同時,IP數據包頭的TTL減一,并重新計算校驗和。
第四、最后封裝成幀,經轉發接口發送到輸出鏈路上去。
? ? ? ?那么,問題來了:路由器在諸多路由協議、手工配置和路由策略下,是如何選擇最佳路由的?理解這個問題,對于掌握路由器的工作原理大有裨益。
?
路由選擇牽涉到三個方面:
1、各種路由協議的處理,包括rip, igrp, eigrp, ospf, is-is, bgp等,每個協議都通過IP數據包在路由器間傳遞網絡的路由信息,為路由表的建立提供信息。
2、路由表,它從路由協議那里接受信息,并為轉發數據包提供所需要的信息。
3、轉發過程,它從路由表那里請求所需要信息,為正確轉發數據包做出決策。
下面從幾個方面對此進行討論:
?
?建立路由表?
? ? ? ?每個路由協議處理路由更新時,選擇到目的地址的最佳路由,并試圖安裝到路由表中。如果只有多個動態路由協議運行,存在爭先安裝路由的問題。
? ? ? ?必須有機制來管理路由的安裝。該機制就是根據各個路由協議的優先級來決定安裝過程。每個路由協議都有缺省的管理距離值,值越小其優先級越高。各路由協議的缺省管理距離值如下圖:
?
? ? ? ? 假設路由器運行EIGRP、OSPF、RIP、IGRP四種路由協議,它們都得到了網絡192.168.24.0/24 的路由,但只有EIGRP(internal)可將其路由安裝到路由表中,因為其管理距離值最小,優先權最高。
?備份路由?
?
? ? ? ?其他協議對于未安裝的協議怎么處理?EIGRP安裝的路由失敗了怎么辦?對此有兩種解決方法:
? ? ? ? 一是每個路由協議周期性地嘗試安裝它們的路由到路由表中,如果EIGRP安裝的路由失效了,IGRP會將它的相應路由安裝到路由表中。
? ? ? ?另一個辦法是將未安裝的路由掛靠在路由表中,如果先前安裝的路由失效了,將掛靠的路由正式安裝到路由表中。
? ? ? ?對于沒有自身路由信息表的路由協議,比如:IGRP,將采取第一種方法,每次收到路由更新都嘗試安裝到路由表中。
?
? ? ? ?對于EIGRP 、IS-IS、OSPF、BGP、RIP這樣的有自身路由信息表的路由協議,將采取第二種辦法,安裝失敗的路由將登記在路由表中,當原路由條目失效時,將通知做登記的路由協議的處理進程來安裝它們的路由,如果有多個進程來安裝,管理距離小的協議優先。
?調整管理距離值?
? ? ? ?改變路由協議的缺省距離值是比較慎重的動作,有可能導致路由循環或其他奇怪的問題,必須非常小心!
? ? ? ?其命令distance 后跟具體的值。也可以只改變從某一協議分布進來的路由的管理距離值。在靜態路由的最后也可以跟上一個值,改變原來的缺省值1.
?前綴長度
? ? ? ?不同前綴長度的路由將視為不同的路由,將同時安裝到路由表中,比如三個路由協議分別得到以下路由:
?
-
EIGRP (internal): 192.168.32.0/26
-
RIP: 192.168.32.0/24
-
OSPF: 192.168.32.0/19?
三個路由的前綴長度(子網掩碼)不同,所以得到不同目的網絡的路由,同時安裝到路由表中。
?
?轉發決策?
先看一下路由器剛才安裝的三個路由條目:
router#show ip route
....
D ?192.168.32.0/26 [90/25789217] via 10.1.1.1
R ?192.168.32.0/24 [120/4] via 10.1.1.2
O ?192.168.32.0/19 [110/229840] via 10.1.1.3
? ? ? ? 如果目的地址為192.168.32.1 ,將選擇哪條路由呢?這依賴于所匹配的前綴長度,最長匹配的前綴長度優先。
?
? ? ? ?匹配是用路由條目中的掩碼與目的地址相遇后再與網絡地址比較,相同意味著匹配。該地址與這三條路由都匹配,但第一跳匹配的路由前綴(26)最長,所以該包將轉發到10.1.1.1。
? ? ? ?如果目的地址為192.168.32.100,它與第一跳路由不匹配,與第二、第三條路由匹配,所以將被轉發到10.1.1.2。
? ? ? ?具體的路由查找速度依賴于路由表的結構與硬件速度,如采用二叉樹結構的路由表,那么32位的IP地址最多查找32次就可以決定是否找到適應的路由條目。
?IP CLASSLESS?的影響?
該命令只影響轉發進程,不影響路由表的建立。如下:
?
router#show ip route
....
172.30.0.0/16 is variablysubnetted, 2 subnets, 2 masks
D ? 172.30.32.0/20 [90/4879540] via10.1.1.2
D ? 172.30.32.0/24[90/25789217] via 10.1.1.1
S* ? 0.0.0.0/0 [1/0] via 10.1.1.3
假設? ip classless ?命令沒有設置,那么:
?
-
到172.30.32.1 的包被轉發到10.1.1.1 ,因為該路由是最長匹配。
-
到172.30.33.1 的包被轉發到10.1.1.2 ,因為該路由是最長匹配。
-
到192.30.32.1 的包被轉發到10.1.1.3 ,因為無對應的網絡路由,用缺省路由轉發。
-
到172.30.100.1 的包無法轉發,被丟棄。為什么不用缺省路由?因為該目的地址的主網絡部分在路由表中已知,并有子網路由,故路由器查找對應的子網路由,結果沒有匹配的路由,最終丟棄該包。如果用IP classless 命令進行了配置,那么最終將應用到缺省路由將數據包轉發到10.1.1.3。
數據包的轉發決定依賴于三部分的進程:路由協議、路由表、實際的轉發交換,這三者的關系圖如下:
?
選擇路由時采取最長匹配的原則,而路由協議安裝路由的優先級取決于管理距離值。
?
路由選擇原理
?最長掩碼匹配
l ?主機地址
l ?子網
l ?一組子網(匯總路由)
l ?主類網絡號(ABC類)
l ?超網匯總(CIDR)
l ?缺省地址(默認路由)
示例:
去往172.16.10.1,應該被172.16.10.1/32匹配住
去往172.16.10.2,應該被172.16.10.0/30匹配住
去往172.16.10.100,應該被172.16.10.0/24匹配住
去往172.16.20.1,應該被172.16.0.0/16匹配住
去往172.17.20.1,應該被172.0.0.0/8匹配住
去往192.168.10.1,應該被默認路由匹配住
show ip route
4.0.0.0/24 is subnetted, 1 subnets
S ? ? ? ?4.4.4.0 [1/0] via 12.1.1.2
路由標識:也可稱為路由來源,S表示靜態
目的網絡地址:4.4.4.0/24,目的網絡地址
[1/0]? ? ? 管理距離AD,靜態路由為1 ,Metric值,靜態路由0
AD:管理距離,用于確定路由協議的優先級
Metric:度量值,用于確定到達目的的最佳路徑
?
各類協議的管理距離:
?
?
R1#show ip route 1.1.1.1
Routing entry for 1.1.1.1/32
Known via "connected", distance 0, metric 0 (connected) ? 直連路由
Routing Descriptor Blocks:
* directly connected, via Loopback0
Route metric is 0, traffic share count is 1
R1#show ip route 4.4.4.0
Routing entry for 4.4.4.0/24
Known via "static", distance 1, metric 0 ? ?靜態路由
Routing Descriptor Blocks:
* 12.1.1.2
Route metric is 0, traffic share count is 1
全局模式下,show ip protocols可以查看動態路由協議的管理距離
show ip protocols
Routing Protocol is "ospf 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 1.1.1.1
Number of areas in this router is 0. 0 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
Routing Information Sources:
Gateway ? ? ? ? Distance ? ? ?Last Update
Distance: (default is 110)
度量值分類:
l ?帶寬,負載,延遲,可靠性,EIGRP協議使用
l ?開銷 ,OSPF,IS-IS協議使用
l ?跳數 ,RIP協議使用
靜態路由配置:
?
配置要點:
l ?通信是雙向的,因此要留意往返流量
l ?盡量配置下一跳IP,不要配置出接口,會產生ARP消息,但可以下一跳和出接口一起配置,如:
l ip route 192.168.23.0 255.255.255.0 s0/0 192.168.12.2 ,多一個路由屬性,比如BFD檢測,路由策略會用到。
l ?注意通信雙方的源地址,以及目的地址
l ?路由遞歸查詢
何謂路由遞歸:
? ? ? 假設上面的圖例,R3后面還有一個網段,比如192.168.20.0,那么在R1上可以這樣寫:
ip route 192.168.20.0 255.255.255.0 192.168.23.3
? ? ? ?那么當R1收到一個去往目的網絡192.168.20.0/24的數據包時,先查路由表,發現有去往這個目的網絡的路由,
? ? ? 但發現下一跳路由器是192.168.23.3,這時路由器會做一個操作,路由遞歸。那就是再查路由表,看192.168.23.3
怎么去,發現去往192.168.23.3,有路由,下一跳是192.168.12.2。
浮動靜態路由:
去往一個目的網段,有多個路徑,一條為主,一條為備
指定兩個下一跳,通過調整AD值,正常情況下,AD值小的路由加表,AD值大的大的隱藏在后臺,
當主路由出現問題時才加入路由表,
ip route 192.168.23.0 255.255.255.0 192.168.12.2
ip route 192.168.23.0 255.255.255.0 192.168.12.3?10 ? ?//AD調整為10
負載均衡:
去往一個目的網段,有多個路徑,路由的AD值一致,metric值也一致,流量兩條鏈路同時走
ip route 192.168.23.0 255.255.255.0 192.168.12.2
ip route 192.168.23.0 255.255.255.0 192.168.12.3
匯總路由:
改變子網掩碼,通過匯總路由匹配明細,從而簡化路由表,減少配置量及路由負器載
ip route 192.168.0.0 255.255.252.0 192.168.254.1
實際上匹配了:
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
默認路由:
常用于邊緣路由器,比如,最底層接入路由器,或者出口路由器
匹配所有目的網段,
ip route 0.0.0.0 0.0.0.0 192.168.12.2
黑洞路由:
將不需要的流量丟棄到null 0接口,null 0 是路由的一個黑洞接口,
ip route 10.10.10.0 255.255.255.0 null ?0
loopback接口:
l ?也叫回環口,是一個邏輯的、虛擬的接口
l ?使用全局配置命令 interface looback x 創建
l ?創建完成后即可為接口配置IP地址 (可以是32位的IP地址)
l ?Looback 接口創建后,除非人為shutdown,否則不會down
作用:
?
l ?模擬路由器的直連網段,用于測試
l ?可用于設備管理(Loopback接口比較穩定)
l ?供其它協議使用。例如OSPF、BGP、MPLS等
l ?其他用途,總之非常廣泛
案例分享:
通過浮動靜態路由,結合BFD雙向技術檢測,保證出口路由冗余,環境如下:
交換機為二層交換機
R5 IP地址:
l loopback:5.5.5.5/32
l E0/1:100.1.1.5/24
l E0/3:200.1.1.5/24
R6 IP地址:
l loopback:6.6.6.6/32
l E0/0:100.1.1.6/24
l E0/2:200.1.1.6/24
配置要點:
l ?接口下開啟BFD檢測,R5,R6都要開啟,并且參數保持一致,因為BFD是雙向檢測技術
l ?配置靜態路由,必須帶上出接口字段,否則BFD無法檢測
l ?將靜態路由與BFD進行關聯
查看:show bfd nei
?動態路由協議
? ? ? ?通過在路由器之間,運行動態路由協議,賦予路由器動態感知網絡變化,以及發現網絡的能力,并且將發現的網絡生成路由條目,自動的添加到本地路由表中,并進行維護。
動態路由協議分類
距離矢量路由協議:
l ?距離矢量路由協議,他并不了解網絡的拓撲
l ?只知道自身與目的網絡之間的距離
l ?應該往那個方向,從哪個接口轉發數據
l ?直接傳遞路由條目
l ?周期性的更新自己整張路由表
l ?距離=有多遠,矢量=方向
鏈狀態路由協議:
l ?傳遞的不是路由條目,而是自己本地的一些鏈路狀態的信息
l ?全網都能夠收集到這些鏈路信息,了解整個網絡的拓撲情況
l ?觸發更新
有類路由協議:
在進行路由更新的時候是不帶掩碼信息;
RIPv1、 IGRP
無類路由協議:
在更新路由協議的時候,包含網絡前綴以及子網掩碼,更加精準。
RIPv2、ISPF、EIGRP、IS-IS,BGP
?有類及無類路由查找區別
無類路由(ip classless,默認打開):
路由器不會注意目的地址的類別,它會在目的地址和本身已知的路由之間進行逐位執行最長匹配。
去往目的IP:192.168.1.1,走F1/0
去往目的IP:192.168.1.33,走F0/0
有類路由(no ip classless或ip classful):
當路由器收到一個數據包時,先查看目的地址所屬的主類網絡。
去往目的IP:192.168.1.1,主類網絡是192.168.1.0/24
查子網,匹配192.168.1.0/27,所以走F1/0
去往目的IP:192.168.1.33,主類網絡是192.168.1.0/24
查子網,應該是192.168.1.32/27,所以被丟棄
有主類路由的情況下:
l ?如果路由表中有主類網絡,則查找下屬子網??
l ?如果有該子網的路由,就在該子網中進一步查找
l ?如果查找失敗,則丟棄數據包 ,不管有沒有配置默認路由。
無主類路由的情況下:
l ?則查看是否有默認路由,有則轉發,無則丟棄
總結
以上是生活随笔為你收集整理的网工路由基础(2)路由选路原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网工路由基础(1)静态路由
- 下一篇: 新生代农民工必看:模拟器eNSP安装教程