深刻淺出圖解【計算機網絡】 之 【路由選擇協議】

這個系列主要會介紹一些計算機網絡體系中「看上去稍有些複雜」但「一旦理解了又會很容易」的內容,我會嘗試經過示意圖/動圖的方式對概念進行儘可能直觀的詮釋,若是可以對你們學習計算機網絡有所啓發的話就最好了。算法

分層次的路由選擇協議

互聯網採用分層次的路由選擇協議。緣由是:數據庫

  • 互聯網的規模很是大。若是讓全部的路由器知道全部的網絡應怎樣到達,則這種路由表將很是大,處理起來也太花時間。
  • 許多單位不肯意外界瞭解本身單位網絡的佈局細節和本部門所採用的路由選擇協議(這屬於本部門內部的事情),但同時還但願鏈接到互聯網上。

自治系統 AS (Autonomous System)

定義:在單一的技術管理下的一組路由器,而這些路由器使用一種 AS 內部的路由選擇協議和共同的度量以肯定分組在該 AS 內的路由,同時還使用一種 AS 之間的路由選擇協議用以肯定分組在 AS之間的路由。
儘管一個 AS 使用了多種內部路由選擇協議和度量,但重要的是一個 AS 對其餘 AS 表現出的是一個單一的和一致的路由選擇策略。
AS_structure網絡

兩大類路由選擇協議

「路由器」和「網關」在這裏能夠視做同義詞。session

內部網關協議 IGP (Interior Gateway Protocol)分佈式

  • 在一個自治系統內部使用的路由選擇協議
  • 具體的協議有多種,如接下來會介紹的RIP和OSPF

外部網關協議 EGP (External Gateway Protocol)佈局

  • 用於將路由選擇信息傳遞到另外一個自治系統中
  • 目前使用的最多的是 BGP-4

內部網關協議 RIP

路由信息協議 RIP (Routing Information Protocol) 是內部網關協議 IGP 中最早獲得普遍使用的協議。
RIP 是一種分佈式的、基於距離向量的路由選擇協議。學習

RIP 協議中的「距離」也稱爲「跳數」(hop count),由於每通過一個路由器,跳數就加 1。(這裏的「距離」實際上就是指「最短距離」)計算機網絡

RIP 容許一條路徑最多隻能包含 15 個路由器。「距離」的最大值爲 16 時即至關於不可達。3d

RIP協議的特色

  • 僅和相鄰路由器交換信息
  • 交換的信息是當前本路由器所知道的所有信息,即本身的路由表
  • 按固定的時間間隔交換路由信息
  • *「好消息傳播得快,壞消息傳播得慢

RIP報文

以目前普遍使用的RIP version2爲例,簡單瞭解一下RIP報文的組成:
RIP_packetorm

  • RIP2 報文由首部和路由部分組成。
  • RIP2 報文中的路由部分由若干個路由信息組成。每一個路由信息須要用 20 個字節。地址族標識符(Address Family Identifier)字段用來標誌所使用的地址協議。
  • 路由標記(Route Tag)填入自治系統的號碼,這是考慮使 RIP 有可能收到本自治系統之外的路由選擇信息。
  • 再後面指出某個網絡地址(IP Address)、該網絡的子網掩碼(Subnet Mask)、下一跳路由器地址(Next Hop)以及到此網絡的距離(Metric)。
  • 一個 RIP 報文最多可包括 25 個路由。

路由表的創建與更新

距離向量算法

路由器收到相鄰路由器(其地址爲 X)的一個 RIP 報文:

(1) 先修改此 RIP 報文中的全部項目:把「下一跳」字段中的地址都改成 X,並把全部的「距離」字段的值加 1。

(2) 對修改後的 RIP 報文中的每個項目,重複如下步驟:
若項目中的目的網絡不在路由表中,則把該項目加到路由表中。
不然
若下一跳字段給出的路由器地址是一樣的,則把收到的項目替換原路由表中的項目。
不然
若收到項目中的距離小於路由表中的距離,則進行更新,
不然,什麼也不作。

(3) 若 3 分鐘尚未收到相鄰路由器的更新路由表,則把此相鄰路由器記爲不可達路由器,即將距離置爲 16(表示不可達)。

(4) 返回。

文字敘述看着有點累,不過理解了「不一樣路徑選短的,一樣路徑選新的」的思路就會很容易。
exchange_router_info

RIP只與相鄰路由交換信息不可避免會帶來路由更新的一類延遲,即以前提到的「好消息傳得快,壞消息傳得慢」。

好消息傳得快,壞消息傳得慢」其實是信息傳送延遲形成路由器的「誤判」
例如:
R1本來直接鏈接NET-A(可直接交付),但NET-A忽然出故障,變爲不可達。
R1中關於NET-A不可達的更新尚未傳遞給鏈接着R1的路由R2,此時R2仍覺得能夠經過R1達到NET-A,便向R1發送<NET-A,2,R2>的路由表;
R1收到後覺得R2能夠到達NET-A(其實已經不行了),便更新本身的路由表爲<NET-A,3,R2>,並將更新發送出去;
R2收到更新後將本身的路由表更新爲<NET-A,4,R1>,並將更新發送出去;
如此來來回回直到兩個路由器的路由表跳數都更新至16才肯定了NET-A不可達。

爲了克服RIP的缺點,咱們便開發出了OSPF協議。

內部網關協議 OSPF

開放最短路徑優先協議,即OSPF(Open Shortest Path First),如上所述,是爲克服 RIP 的缺點在 1989 年開發出來的。

OSPF協議的特色

  • 向本自治系統中全部路由器發送信息,這裏使用的方法是洪泛法
  • 發送的信息就是與本路由器相鄰的全部路由器的鏈路狀態,但這只是路由器所知道的部分信息
    • 「鏈路狀態」就是說明本路由器都和哪些路由器相鄰,以及該鏈路的「度量」(metric)。
  • 只有當鏈路狀態發生變化時,路由器才用洪泛法向全部路由器發送此信息
  • OSPF 的更新過程收斂得快,這是它很是重要的一個優勢,也是它彌補RIP不足的關鍵。

因爲各路由器之間頻繁地交換鏈路狀態信息,所以全部的路由器最終都能創建一個鏈路狀態數據庫。
這個數據庫實際上就是全網的拓撲結構圖,它在全網範圍內是一致的(這稱爲鏈路狀態數據庫的同步)。

同時,爲了使 OSPF 可以用於規模很大的網絡,OSPF 將一個自治系統再劃分爲若干個更小的範圍,叫作區域

OSPF_region

劃分區域後,利用洪泛法交換鏈路狀態信息的範圍侷限於每個區域而不是整個的自治系統。
在一個區域內部的路由器只知道本區域的完整網絡拓撲,而不知道其餘區域的網絡拓撲的狀況。
OSPF 使用層次結構的區域劃分。在上層的區域叫作主幹區域 (backbone area)。
主幹區域的標識符規定爲0.0.0.0,用來連通其餘在下層的區域。

OSPF還有一點與RIP不一樣,即OSPF 不用 UDP 而是直接用 IP 數據報傳送
OSPF 構成的數據報很短,這樣作可減小路由信息的通訊量。
OSPF_packet

OSPF有五種分組類型
下圖簡單說明了OSPF的五種分組類型以及它們所能完成的操做
OSPF分組類型

外部網關協議 BGP

BGP 是不一樣自治系統的路由器之間交換路由信息的協議。 默認爲當前較新的版本BGP-4。

互聯網的規模太大,使得自治系統之間路由選擇很是困難。對於自治系統之間的路由選擇,要尋找最佳路由是很不現實的。
所以,邊界網關協議BGP只能是力求尋找一條可以到達目的網絡且比較好的路由(不能兜圈子),而並不是要尋找一條最佳路由

BGP發言人

每個自治系統的管理員要選擇至少一個路由器做爲該自治系統的「** BGP 發言人**」 (BGP speaker)。經過它與其餘自治系統(中的 BGP 發言人)交換路由信息。

BGP交換路由信息

一個 BGP 發言人與其餘自治系統中的 BGP 發言人要交換路由信息,就要先創建 TCP 鏈接,而後在此鏈接上交換 BGP 報文以創建 BGP 會話(session),利用 BGP 會話交換路由信息。
使用 TCP 鏈接交換路由信息的兩個 BGP 發言人,彼此成爲對方的鄰站(neighbor)或對等站(peer)。

BGP所交換的網絡可達性的信息就是要到達某個網絡所要通過的一系列 AS
當BGP發言人互相交換了網絡可達性的信息後,各BGP發言人就根據所採用的策略從收到的路由信息中找出到達各 AS 的較好路由

在衆多路由選擇協議中,BGP是爲數很少的使用TCP做爲傳輸協議的路由選擇協議。

BGP有四種分組類型

  • 打開 (OPEN) 報文,用來與相鄰的另外一個BGP發言人創建關係。
  • 更新 (UPDATE) 報文,用來發送某一路由的信息,以及列出要撤消的多條路由。
  • 保活 (KEEPALIVE) 報文,用來確認打開報文和週期性地證明鄰站關係。
  • 通知 (NOTIFICATION) 報文,用來發送檢測到的差錯。

真的很但願可以和你們交流啊(有任何想法/意見/建議的話均可以在留言區留言~

相關文章
相關標籤/搜索