路由器在諸多路由協議、手工配置和路由策略下,是如何選擇最佳路由的?理解這個問題,對於掌握路由器的工做原理大有裨益。
路由選擇牽涉到三個方面:
一、
各類路由協議的處理,包括
rip
,
igrp
eigrp
,
ospf
,
is-is
,
bgp
等,每一個協議都經過
IP
數據包在路由器間傳遞網絡的路由信息,爲路由表的創建提供信息。
二、
路由表,它從路由協議那裏接受信息,
併爲轉發數據包提供所須要的信息。
三、
轉發過程,它從路由表那裏請求所須要
信息,爲正確轉發數據包作出決策。
下面從幾個方面對此進行討論。
創建路由表
每一個路由協議處理路由更新時,選擇到目的地址的最佳路由,並試圖安裝到路由表中。若是隻有多個動態路由協議運行,存在爭先安裝路由的問題。必須有機制來管理路由的安裝。該機制就是根據各個路由協議的優先級來決定安裝過程。每一個路由協議都有缺省的管理距離值,值愈小其優先級愈高。各路由協議的缺省管理距離值如:
假設路由器運行
EIGRP
、
OSPF
、
RIP
、
IGRP
四種路由協議,它們都獲得了到網絡
192.168.24.0/24
的路由,但只有
EIGRP
(
internal
)可將其路由安裝到路由表中,由於其管理距離值最小,優先權最高。
備份路由
其餘協議對於未安裝的協議怎麼處理?
EIGRP
安裝的路由失敗了怎麼辦?對此有兩種解決方法,一是每一個路由協議週期性地嘗試安裝它們的路由到路由表中,若是
EIGRP
安裝的路由失效了,
IGRP
會將它的相應路由安裝到路由表中。另外一個辦法是將未安裝的路由掛靠在路由表中,若是先前安裝的路由失效了,將掛靠的路由正式安裝到路由表中。
對於沒有自身路由信息表的路由協議,好比
IGRP
,將採起第一種方法,每次收到路由更新都嘗試安裝到路由表中。
對於
EIGRP
、
IS-IS
、
OSPF
、
BGP
、
RIP
這樣的有自身路由信息表的路由協議,將採起第二種辦法,安裝失敗的路由將登記在路由表中,當原路由條目失效時,將通知作登記的路由協議的處理進程來安裝它們的路由,若是有多個進程來安裝,管理距離小的協議優先。
調整管理距離值
改變路由協議的缺省距離值是比較慎重的動做,有可能致使路由循環或其餘奇怪的問題,必須很是當心!其命令爲
distance
後跟具體的值。也能夠只改變從某一協議分佈進來的路由的管理距離值。在靜態路由的最後也能夠跟上一個值,改變原來的缺省值
1
。
前綴長度
不一樣前綴長度的路由將視爲不一樣的路由,將同時安裝到路由表中,好比三個路由協議分別獲得如下路由:
l
EIGRP (internal): 192.168.32.0/26
l
RIP: 192.168.32.0/24
l
OSPF: 192.168.32.0/19
三個路由的前綴長度(子網掩碼)不一樣,因此獲得不一樣目的網絡的路由,同時安裝到路由表中。
轉發決策
先看一下路由器剛纔安裝的三個路由條目:
router#show ip route
....
D 192.168.32.0/26 [90/25789217] vi
a 10.1.1
.1
R 192.168.32.0/24 [120/4] vi
a 10.1.1
.2
O 192.168.32.0/19 [110/229840] vi
a 10.1.1
.3
若是目的地址爲
192.168.32.1
,將選擇哪條路由呢?這依賴於所匹配的前綴長度,最長匹配的前綴長度優先。匹配是用路由條目中的掩碼與目的地址相與後再與網絡地址比較,相贊成味着匹配。該地址與這三條路由都匹配,但第一條匹配的路由前綴(
26
)最長,因此該包將被轉發到
10.1.1
.1
。
若是目的地址爲
192.168.32.100
,它與第一條路由不匹配,與第2、第三條路由匹配,因此將被轉發到
10.1.1
.2
。
具體的路由查找速度依賴於路由表的結構與硬件速度,如採用二叉樹結構的路由表,那麼
32
位的
IP
地址最多查找
32
次就能夠決定是否找到適應的路由條目。
IP CLASSLESS的影響
該命令隻影響轉發進程,不影響路由表的創建。看如下的例子:
router#show ip route
....
172.30.0.0/16 is variably subnetted, 2 subnets, 2 masks
D 172.30.32.0/20 [90/4879540] via
10.1.1
.2
D 172.30.32.0/24 [90/25789217] vi
a 10.1.1
.1
S*
0.0.0
.0/0 [1/0] vi
a 10.1.1
.3
假設
ip classless
命令沒有配置,那麼:
l
到
172.30.32.1
的包被轉發到
10.1.1
.1
,由於
該路由是最長匹配。
l
到
172.30.33.1
的包被轉發到
10.1.1
.2
,由於
該路由是最長匹配。
l
到
192.30.32.1
的包被轉發到
10.1.1
.3
,由於
無對應的網絡路由,用缺省路由轉發。
l
到
172.30.100.1
的包沒法轉發,被丟棄。爲什
麼不用缺省路由?由於該目的地址的主網絡部分在路由表中已知,並有子網路由,故路由器查找對應的子網路由,結果沒有匹配的路由,最終丟棄該包。若是用
IP classless
命令進行了配置,那麼最終將應用缺省路由將數據包轉發到
10.1.1
.3
。
總結
數據包的轉發決定依賴於三部分的進程:路由協議、路由表、實際的轉發交換,這三者的關係圖示以下:
選擇路由時採起最長匹配的原則,而路由協議安裝路由的優先級取決於管理距離值。