前言
??從本文開始介紹路由選擇協議,也就是討論路由表中的路由是怎么形成的。
本文內容
1 路由算法分類
??從路由算法能否隨網絡的通信量或拓撲自適應地進行調整變化來劃分,可以分為:靜態路由選擇策略和動態路由選擇策略。
??(1) 靜態路由選擇策略:即手工配每一條置路由。
??優點:簡單,開銷小。
??缺點:只適用小網絡,難以適應網絡狀態的變化。
??(2) 動態路由選擇策略:又叫自適應路由選擇。
??優點:能較好適應網絡狀態的變化,適用于大網絡。
??缺點:實現復雜,開銷大。
2 分層次的路由協議
??由于互聯網規模非常大,可以把互聯網劃分為許多較小的自治系統(autonomous system),記為AS。每個自治系統通常在相同管理控制下的路由器組成,在一個AS中的路由器都全部運行在同樣的路由算法。各個AS之間彼此是互聯的,因此一個AS中有一個或多個路由器用于不同AS之間的通信,即負責將本AS之外的目的地址轉發分組,這些路由器稱為網關路由器。
??根據上面描述,可以將路由選擇協議劃分為兩個大類:內部網關協議和外部網關協議。
??(1) 內部網關協議IGP(Interior Gateway Protocol):即在一個自治系統內不使用的路由選擇協議,常見的協議有RIP、OSPF協議。
??(2) 外部網關協議EGP(External Gateway Protocol):用于實現不同自治系統之間通信的傳遞,這樣的協議就是EGP協議,目前使用最多的就是BGP的版本4(BGP-4)。
??自治系統之間的路由選擇也叫域間路由選擇,在自治系統之內的路由選擇也叫域內路由選擇。
3 內部網關協議RIP
??RIP(Routing Information Protocol)協議——路由信息協議,是一種分布式的基于距離向量的路由選擇協議,最大的優點是簡單。
??RIP協議要求網絡中的每一個路由器都要維護從它自己到其他每一個目的網絡的距離記錄(距離向量)。RIP協議對距離的定義如下:
??(1) 從一路由器到直接連接的網絡的距離定義為1。
??(2) 從一路由器到非直接連接的網絡的距離定義為所經過的路由器數加1。
RIP協議的距離也稱為跳數,RIP協議允許一條路徑最多只能包含15個路由器。因此,距離等于16時即相當于不可達。
上圖表示路由器R2的轉發表,R2與網絡Net2和Net3直接相連,所以距離為1,下一跳不需要經過任何路由器,所以是直接交付。R2到達網絡Net1需要經過一個路由器即R1,所以距離為經過的路由器個數加1,即2。所以R2路由器維護的到各個網絡的距離向量為(2,1,1,2)。
4 RIP協議特點
??RIP協議是通過每個路由器要不斷的和其他路由器交換路由信息,從而達到自治系統中所有節點都得到正確的路由信息。
??RIP協議考慮了和哪些路由器交換信息、交換什么信息以及什么時候交換信息這三個問題,RIP協議特點:
(1) 僅和相鄰路由器交換信息。
(2) 交換的信息是當前本路由器所知道的全部信息,即自己現在路由表。
(3) 按固定的時間間隔交換信息,如每隔30s或網絡拓撲發生變化時。
??路由器在剛開始工作時,它的路由表是空的,然后路由器就得出到直接相連的幾個網絡的距離(這些距離為1),接著每個絡器也只是和自己相鄰的路由器交換并更新信息。經過若干次交換后,所有路由器都會知道到達本自治系統匯總任何一個網絡的最短距離和下一跳地址。
??在上圖的自治系統中,假設三個路由器都是剛開始工作,剛開始R1只有到網絡1和2的距離信息,R2有網絡2和3的距離信息,R3有網絡3和4的距離信息。
??第一輪交換:R1和R2交換,R2和R3交換,交換后R2從R1得到了到網絡1的距離信息,從R3得到了到網絡4的距離信息,即第一輪交換后R2得到了到本自治系統所有網絡的距離信息。
??第二輪交換:同樣R1和R2交換,R2和R3交換,由于R2已經包含了所有的信息,所以經過此次交換后,R1和R3也就得到了到本自治系統所有網絡的到達信息。
注:RIP協議不能在兩個網絡之間同時使用多條路由,只能有一條最短距離的路由。
4 距離向量算法
??對每一個相鄰路由器發送過來的RIP報文,會進行一下步驟:
??(1) 路由器R1接收到其相鄰路由器R2發送過來的報文,先修改此報文的所有項目:把“下一條”字段中的地址都改為R2,并把所有的“距離”字段的值加1。每個項目都有三個關鍵字段:到目的網絡N,距離是d,下一跳路由器是X。
假設R1接收到R2的報文中某一項是:Net2,2,Y,意思是從R2到Net2的距離是2,并且下一步應該走Y路由器,那么對于R1來說,到Net2的最短走法是先到R2,在按照R2的走法,即從R1到Net2的距離是2 + 1 = 3,下一步走R2,即將 Net2,2,Y 下一跳字段改為R2,將距離字段加1。
??(2) 對修改后的RIP報文中的每一項,進行以下步驟:
????1) 若原來的路由表中沒有網絡N,則把該項目添加到路由表中。
還是上例,如果R1路由表中沒有到Net2的路由,表明這是新的目的網絡,應當加入到自己的路由表中。
????2) 如果R1路由表中已經有目的網絡N,這時查看下一跳的地址,如果下一跳地址是R2,則把收到的項目替換原路由表中的項目。
這里要替換的原因是:因為網絡拓撲可能發生變化或新的節點加入網絡,現在接收到的是最新的消息,要以最新的消息為準。
????如果下一跳的地址不是R2,那么如果收到項目中距離小于路由表中的距離,則進行替換,否則什么也不做。
如果收到的項目距離小于路由表中的距離,說明有更短的路徑,所有更換為更短的路徑,如果比路由表中的路徑還長,那么顯然不用更新,如果距離相同,也沒必要更新。
??(3) 若3分鐘還沒有收到相鄰路由器的更新路由表,則把此路由器記為不可達的距離,即把距離設置為16。
??(4) 返回。
??舉個例子說明,已經路由器R6有以下的路由表,現在收到相鄰的路由器R4發來的更新信息,試更新R6路由表。
第一步:修改R4發來的更新路由表,將所有的下一跳修改為R4,所有的距離加1,得出下表
第二步:將上表的每一項和R6路由器的轉發表進行對比
(1) 第一行,目的網絡為Net1,R6路由器轉發表沒有這個目的網路,因此需要把這一行添加到轉發表。
(2) 第二行,轉發表中有Net2,并且下一跳地址就是R4,所以需要更新。
(3) 第三行,轉發表有Net3,并且下一跳地址不是R4,但是距離2小于轉發表中的距離4,所以也需要更新。
5 RIP缺點
??RIP存在一個問題是當網絡出現故障時,要經過比較長的時間才能將磁信息傳送到所有的路由器。這一特點叫做:好消息傳得快,壞消息傳得慢。
??如下圖所示,在正常的情況下,R1和R2交換信息,其中只畫出了達到的網絡1的表項。
??如果路由器R1到網1的鏈路出現了故障,R1無法達到網1,于是路由器R1把到網1的距離改為16(表示網1不可達),因而R1路由表響應的項目變為 “1,16,直接交付”。但是,可能需要經過30s后R1,才能把更新信息發送給R2,,然而R2可能已經先把自己的路由表發送給了R1,其中有到達網1的這一項 “1,2,R1”。
??R1收到R2的更新報文后,會誤認為自己無法直接到達網1,但是可經過R2到達網1,于是把收到的路由信息 “1,2,R1” 修改為 “1,3,R2”,表明“我到網1的距離是3,下一跳的R2”。
??同理,R2接收到又會更新自己的路由表為 “1,4,R1”,以為“我到網1的距離為4,下一跳為R1”....就這樣一直更新下去,知道R1和R2到網1的距離為16時,R1和R2才知道網1是不可達的。所以,這就是:好消息傳得快,壞消息傳得慢的原因。