OSPF,BGP和ICMP

在控制平面我們關注的是,路由器轉發報文的路徑是怎麼樣的。也就是如何在路由器中配置轉發表。配置轉發表有一下兩種方式:

  • 每臺路由器控制:也是是傳統的路由選擇方式,每臺路由器自己計算轉發表。
  • 邏輯集中式控制:就是通過SDNSDN的方式進行路由選擇,由SDNSDN計算並配置轉發表。

這裏我們只涉及傳統的路由控制方法,不涉及SDNSDN。下面我們先講兩種傳統的路由選擇算法,然後再講在因特網路由選擇協議**OSPFOSPFBGPBGP**。

1. 路由選擇算法

根據執行算法需不需要路由器所在網絡中的所有的鏈路信息,可以將算法分爲集中式和分散式兩類:

  • 集中式路由選擇算法:其中一個常用算法是鏈路狀態算法。也是就在數據結構中的DijkstraDijkstra算法。
  • 分散式路由選擇算法:常用的算法是距離向量算法。從數據結構中BellmanFordBellman-Ford算法變形而來。

這兩個算法在數據結構哪裏學過,比較容易理解。

2. 因特網路由選擇協議OSFPOSFPBGPBGP

因爲在全球有很多路由器,不可能把全部的路由器一起的運行路由選擇算法,這樣很浪費時間。同時每一個ISPISP通常希望按照自己的想法配置路由器,如選擇ISPISP內部的路由選擇算法,或對外部隱藏內部的路由器組成。

所以通過ISPISP我們可以把全球的網絡劃分爲多個自治系統(AS),每一個AS內部統一運行自己的路由選擇協議。通常一個ISPISP內部的路由器和鏈路構成一個AS。不過有些比較大的ISPISP將它的內部分成多個互聯AS。每一個AS有一個唯一的AS號(ASN),ASN由ICANNICANN區域註冊機構所分配。

在一個AS的內部,路由器彼此擁有對方的信息,運行自治系統內部路由選擇協議。而在AS之間,運行自治系統間路由選擇協議。下面分別介紹這兩種協議。

2.1 開放最短路優先(OSFPOSFP)

OSFPOSFP是一種鏈路狀態協議,使用鏈路狀態和DijkstraDijkstra最低開銷路徑算法。在使用OSFPOSFP的時候,路由器使用OSFPOSFP報文向AS內部的廣播路由選擇信息。每當鏈路發生變化,路由器就會廣播鏈路狀態信息。即使鏈路狀態不發生變化,路由器也要週期性的廣播鏈路狀態信息,這樣可以使鏈路狀態算法具有更好的健壯性。OSFPOSFP報文直接由IPIP承載,對OSFPOSFP其上層協議的值爲89。

OSFPOSFP的優點有一下幾個方面:

  • 安全:在一般情況下,路由器間的OSFPOSFP報文是未被鑑別的並能被僞造。不過我們可以配置兩種鑑別方式:簡單鑑別和MD5。使用MD5的比較安全。
  • 多條相同的開銷路徑:當到達目的地的多條路徑有相同開銷時,OSFPOSFP允許使用多條路徑。
  • 對單播和多播路由選擇的綜合支持
  • 支持在單個AS中的層次結構:可以在一個AS中,配置多個子AS,每個子AS通過邊界路(子AS系統與主AS系統相連的路由器)互相聯繫。

2.2 ISPISP之間的路由選擇:BGPBGP

在AS內,我們使用的是OSFPOSFP路由選擇協議。在AS之間,我們使用BGPBGP路由選擇。

要運行BGPBGP,要經過兩個階段:

  • BGPBGP通告路由選擇信息
  • 執行路由選擇算法

其實每個路由選擇算法都需要經過個兩個階段。下面依次介紹這兩個階段

2.2.1 BGPBGP通告路由選擇信息

BGPBGP中,路由器通告的不是目的地址,而是一個前綴,前綴是一個子網或子網集合。所以在路由器中具有(x,I)(x,I)的表項,其中xx是一個前綴(例如156.235.123/24),II是該路由器的接口之一。

BGPBGP在通過前綴時,會在裏面包含一些**BGPBGP屬性**,比較重要的有兩個ASPATHAS-PATHNEXTHOPNEXT-HOP

  • ASPATHAS-PATH:要到達前綴xx,經過的AS路徑,也可以用來防止環路。
  • NEXTHOPNEXT-HOP:在BGPBGP中路由器分爲兩種,能與外部的AS的路由器相連的叫做網關路由器,只與內部路由器相連的叫做內部路由器NEXTHOPNEXT-HOP就是要到達前綴xx要經過的第一個外部AS網關路由器的IPIP地址

舉個例子:

如圖,要將AS3的前綴xx通告給AS1和AS2,總的來看,就是AS3通告AS2,然後AS2通告AS1。

上圖AS2中知到的路由情況爲:

ASPATHAS-PATHAS3 xNEXTHOPNEXT-HOP:路由器3a最上面接口IPIP地址。

AS1知到的路由情況爲:

ASPATHAS-PATHAS2 AS3 xNEXTHOPNEXT-HOP:路由器2a最左面接口IPIP地址。

BGPBGP中每對路由器通過使用179端口的半永久TCPTCP連接交換路由選擇信息,每條直接相連以及所有通過該連接發送的BGPBGP報文,稱爲BGPBGP連接。跨越兩個AS的BGPBGP連接稱爲外部BGPBGP,在AS之內的叫做內部BGPBGP。注意:內部BGPBGP並不總是與物理鏈路相對應。下圖是上面那張圖的對應的BGPBGP連接。

那麼你現在可能有疑問,ASPATHAS-PATH是在什麼地方被添加的呢?

答:在網關路由器添加,也就是在外部BGPBGP添加。例如AS2想AS1通告時,ASPATHAS-PATH在路由器2a處添加上AS2

2.2.2 BGPBGP的路由選擇

有兩種比較常用的BGPBGP路由選擇算法:一是燙手山芋路由選擇算法(書上的是熱土豆路由選擇,是直接從英文翻譯過來的,不過符合中文俗語翻譯爲燙手山芋應該更好),二是比較綜合的路由選擇算法,下面分別描述。

1. 燙手山芋路由選擇

當一個節點要發送報文時,他選擇的路徑是從他自己到網關路由的最短的路線。步驟如下:

  • 從AS間協議學到經多個網關可達子網xx
  • 使用來自AS內部協議的路由選擇信息,以決定到達每個網關的最低開銷路徑的開銷。
  • 選擇具有最小最低開銷的網關。
  • 從轉發表確定最低開銷網關的接口II,在轉發表中加入表項(x,I)(x, I)

2. 路由選擇算法

在實際情況中,我們使用的路由選擇算法選用了好幾個特徵,通過特徵的先後順序來選擇路徑。

  1. 路由被指派一個本地偏好值作爲其屬性之一(除了ASPATHAS-PATHNEXTHOPNEXT-HOP)。具有最好本地偏好值的路由將被選擇。
  2. 當本地偏好相同時,選擇具有最短ASPATHAS-PATH的路由。
  3. 如果上述的都相同,則使用燙手山芋路由選擇,即選擇具有靠近的NEXTHOPNEXT-HOP路由器的路由。
  4. 如有仍然有多條路由,該路由器使用BGPBGP標識符來選擇路由。

2.2.3 IP任播

使用BGPBGP可以自然地支持IPIP任播。當某臺BGPBGP路由器收到該IPIP地址的多個路由通告,他將這些通告處理爲對相同物理地址提供的不同路徑(實際上,可以處於不同的物理地址)。舉個例子,假設城市A和B有兩臺服務器有相同的IPIP地址,於是我的電腦收到了這兩個服務器的BGPBGP通告,但是我的電腦並不知到這兩個通告來字不同的物理地址。IPIP任播被DNSDNS系統廣泛用於將DNSDNS請求指向最近的根DNSDNS服務器。根DNSDNS服務器有13個IPIP地址,但是對應於這些地址,一個地址有多個DNSDNS服務器。

3. ICMPICMP:因特網控制報文協議

ICMPICMP報文有一個類型字段和一個編碼字段,並且包含引起該ICMPICMP報文首次生成的IPIP數據報的首部和前8個字節(使發送方可以確定引發該報文差錯的數據報)。

一般來說:ICMPICMP有兩種格式:詢問報文和差錯報告報文。

  • 詢問報文:如下圖使用Ping發送請求。包含類型,編碼,檢驗和,標識符,序號和數據部分。
  • 差錯報告報文:如下圖,這是使用TracerouteTraceroute程序發送的ICMPICMP,當TTLTTL超時時,返回的ICMPICMP差錯報告報文。裏面包含了類型,編碼,檢驗和,IPIP首部和原來ICMPICMP報文的前8個字節。

通過類型和編碼的不同組合,有許多不同種類的ICMPICMP報文,如下圖

更加具體的內容可見維基百科

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章