電腦網路與連結技術第十三章 TCP/IP 與 Internet 連結技術 上一頁    下一頁

13-10 自治系統內繞路選擇

內容:

如圖 13-38 所示,一個自治系統可由若干個網域所構成,每一個內部閘門管理一個網域。如果網域內所傳送的封包目的位址,是屬於本網域所管轄的網路內,封包將被留在內部傳送,但如果封包的目的位址超過網域所管轄範圍,該封包將會被送出該網域的內部閘門,且於若干個內部閘門(其它網域)之間,尋找出可到達目的地的最佳路徑。

一般來說,企業內之網路範圍較小,且多半屬於同一權責單位所管,所以通常選用『鏈路狀態路徑選擇法』(Link-State Routing, LS Routing)(請參考 4-7 節說明)或『距離向量路徑選擇法』(DistanceVector Routing, DV Routing)(請參考 4-8 節說明)做為內部閘門之間的路徑選擇演譯法,。

兩者之間的不同點是內部閘門之間所互相傳遞的訊息,LS Routing 是傳遞本身和相鄰內部閘門之間的鏈路狀況;而 DV Routing 是計算所有可能到達目的地,所經過的「跳躍次數」(hop count)傳遞給其他內部閘門。每一個內部閘門接收到這些訊息後,再計算出最佳路徑填入路由表,至於進入內部閘門的封包就依照路由表上,查出最佳路徑,並發送到下一個內部閘門(next hop),再由下一個內部閘門決定往哪一個路徑傳送。因此,所有內部閘門之間必須存在一個共通的通訊協定,以便傳遞網路之間的訊息,依此建立動態路由表,目前網際網路上較常用的『路徑協定』(Routing Protocol)有:

    • Routing Information Protocol (RIP)

    • Interior Gateway Routing ProtocolIGRP

    • Enhanced Interior Gateway Routing ProtocolEIGRP

    • Open Shortest Path FirstOSPF

13-10-1 RIP 繞路協定

路徑訊息協定』(Routing Information Protocol, RIP)是由 Xerox 公司的 Palo Alto Research CenterPARC)所發展出來,目前是 Unix 電腦上的共通路徑選擇協定。RIP採用『距離向量路徑選擇法』(Distance Vector Routing),首先路由器(內部閘門)紀錄每進入封包的來源位址和計算其所經過路徑的數目(hop)(可由 IP 封包之 TTL 欄位數值計算出),在每一段時間(一般設定 30 秒)內廣播給相鄰的路由器。每一個路由器從自己所計算的訊息和其他路由器所傳遞過來的訊息之中計算出最佳路徑(請參閱 4-8 節之演算法),再更新路由表。目前 RIP 協定在 Internet 網路上應用有兩種規格版本:RIP RIP 2,以下分別介紹其封包格式。

13-40 RIP 封包格式,各欄位功能如下:

(1) 命令(Command, COM):表示此封包的命令是要求訊息(request)或回應訊息(response)。

(2) 版本(Version, Ver):表示此封包的版本。

(3) 位址家族標示(Address family Identifier, AFI): RIP 協定中允許不同網路之間的訊息傳遞,AFI 表示所傳遞訊息之網路型態或位址格式。

(4) 位址(Address, Addr):訊息之位址,IP 位址表示之。

(5) 路由值(Metric):到達位址欄位內之 IP 位址所必須經過的跳躍次數(hop count)。最高值為 15,如果超過 1516)表示不可到達。

在一個 RIP 封包內最多可增列 25 筆訊息資料,每一筆訊息的長度為 20 Bytes,因此 RIP 訊息最長為 50420 × 25 + 4 Bytes,還不超過 UDP 封包最長 512 Bytes 限制,在一般環境下都可順利傳輸(MTU 限制)。其實 RIP 封包內設計可存放 14 位元組長的位址,但使用 IP 位址格式只用到 4 個位元組,其餘都設為 0

13-40 RIP 封包格式

        13-41 RIP 2 封包格式,由圖中我們可發現 RIP 2 充分利用 RIP 的位址的空白欄位,填入更多的訊息。以下介紹所增加的3 個訊息欄位:

(1) 路由標籤(Route Tag, RT):用來區分內部閘門和外部閘門之間的路徑訊息。

(2) 次網路遮罩(Subnet Mask, SM):提供該筆訊息的次網路遮罩,如都為 0 表示沒有提供 SM 資料。

(3) 下一路徑(Next Hop, NH):到達該筆訊息之位址的下一路徑。

13-41 RIP 2 封包格式

        RIP 協定的最大限制就是跳躍距離最大為 15 個區段,目前網路中自治系統環境愈來愈大,一個自治系統的路由器也許就會超過這個數目。又因採用距離向量法可能會發生訊息過慢收斂問題,也就是說當網路變更或故障時,無法在快速的時間內傳遞及更新所有路由器上的路由表,造成封包回繞或到達不了目的地。解決方法有水平分割法、以毒攻毒法等等(請參閱 4-8-2 節)。

13-10-2 IGRP 繞路協定

        內部閘門路徑協定』(Interior Gateway Routing Protocol, IGRP)是由 Cisco 公司於1980 年中期發展出來,提供比較完整的自治系統(Autonomous System, AS)內之路徑選擇,也是針對 RIP 協定的功能增強。RIP 提供使用較小自治系統內,而且是在同等級(Homogeneous)網路之間使用,也限制 16 個跳躍距離。IGRP 提供較大型且複雜的自治系統內的路徑選擇協定。IGRP RIP 的不同點如下:

    • IGRP 可以服務較大的自治系統,跳躍距離不受限於 16

    • IGRP 可以提供多條路徑選擇,RIP 只提供單一最佳路徑。

    • IGRP 可以重新配置於 RIPOSPFEIGRP 之協定內,也就是說可以共同使用及轉換。

    • IGRP 提供快速更新資料計時器(Flush timer),如有資料變動,將更新之資料於迅速告知相鄰路由器(一般設定 10 秒)。

    • IGRP 廣播訊息週期是每 90 秒一次。

基本上,IGRP 也是採用『距離向量演算法』來計算最佳路徑,但它的向量值(metric)不只使用跳躍距離。IGRP 的向量值可由下列參數的組合:網路間延遲時間(internetwork delay)、頻寬(bandwidth)、可靠度(reliability)與負載(load)。網路間延遲時間可由進入封包內所紀錄的發送時間和實際接收到時間的差異計算出來。頻寬可以將傳輸速率分為不同等級 1 255 之間來計算,例如將 1200 bps 10Mbps 的傳輸速率以 1 24 的級數之間來分別。至於向量值(metric)對於這些參數的權重比率值必須由系統管理員來設定,一般內定值(default)只會採用 delay bandwidth 兩個參數,並以最佳權重比率計算。

路由器利用與其他路由器相互傳遞的訊息來建立路由表,其中最大的困擾就是收斂問題。網路上任何區段發生故障,或網路架構變更之訊息,無法立即傳遞給有關的路由器,造成網路之傳遞訊息暫時性的不正確,必須經過一段時間的訊息更新後,才能到達穩定狀況,這段時間稱之為『收斂時間』。IGRP 為提高路由選擇效率,採取多種方法來縮短收斂時間,以及預防網路不穩定,方法如下列說明:(如圖 13-42 所示)

    • Flash Update使用 Flash Update 訊息,以便快速通知相鄰路由器網路有變更,使加快收斂時間。

    • Hold-Down Timer使用 Hold-Down Timer 計時器,以預防路徑回繞。

    • Split Horizon用來防止傳回不正確訊息。

    • Poison Reverse用來移除不正確路徑。

在圖 13-42 中,假設網路 C 發生故障,Router_4 發現通往網路 C 的路徑已不通,立即廣播 Flash Update 訊息給相鄰之路由器。Router_3 接收到 Flash Update 訊息,知道經由 Router_4 到達網路 C 路徑已不通,立即啟動 Hold-Down Timer 並將往網路 C 之路徑刪除。並且啟動 Split Horizon ,將欲往網路 C 的路徑隔離,以防止任何封包欲經由 Router_3 傳送到網路 C。也就是說,要到網路 C 的封包不可再經由 Router_3 送往 Router_4,必須經由其他路徑。如果 Router_1 還未更新路由表,發送 Update Router 訊息給 Router_3,並告知經由 Router_3 可到達網路 C。則 Router_3 回應 Poison Reverse Router_1 經由 Router_3 到達網路 C 的路徑為無限大。因此,Router_1 便知道必須移除該路徑。

13-42 IGRP 預防網路震盪範例

13-10-3 EIGRP 繞路協定

        加強型內部閘門路徑協定』(Enhanced Interior Gateway Routing Protocol, EIGRP)是 Cisco 公司加強 IGRP 功能以求更適合較大型網路的路徑選擇協定。EIGRP 的路徑選擇演算法是整合『鏈路狀態法』(LS Routing)和『距離向量法』(DV Routing),成為一個稱之為『擴張型更新演算法』(Diffusing-Update Algorithm, DUAL)。另外,EIGRP 和其他路徑選擇協定有下列四個主要不同點:

(1) 提供重新配置(Redistribution)功能以整合不同網路的路徑選擇協定,如 Apple-TalkIP Novell Netware 之間。在 Apple-Talk 網路之下,重新配置是由 RTMPRouting Table Maintenance Protocol)所建立的路由表;在 IP 網路下,重新配置是由 RIP OSPFOpen Shortest Path First)、EGPExterior Gateway Protocol)、或 BGPBorder Gateway Protocol)等協定所建立的路由表;Novell 網路下,重新配置是由 Novell RIP 等協定所建立的路由表,使這些異質網路(Heterogeneous Network)之間可經由 EIGRP 作最佳路徑選擇。

(2) 快速收斂。 EIGRP 之下的所有路由器皆有儲存其相鄰路由器之路由表,因此它可以快速更新替代路徑,如果沒有適當路徑,路由器會發送查詢訊息給相鄰的路由器,這查詢訊息會一直被傳遞,直到找出適當路徑為止。

(3) 提供可變長度的網路遮罩。路由器會自動收集網路號碼的範圍,更進一步,EIGRP 可以被規劃為總結(summarize)任意位元長度的遮罩。

(4) EIGRP 並非週期性的廣播訊息,而是當本身路由表有所變更時,才將更新部份廣播給其他路由器,因此 EIGRP 使用頻寬比 IGRP 用的少。

為增強 EIGRP 的功能,它使用了四個主要技術:

(1) 鄰居發現與復原(Neighbor discovery/recovery)。路由器必須隨時注意相連接網路之間是否有發生不可到達或停止工作的情況,當它發現某一路徑的負載特別低,便週期性發送 Hello 封包詢問對方,如一直沒有收到回應,表示該網路已不正常工作,則必須更新路由表並通知其他相鄰路由器。任何路由器接收到 Hello 封包必須即時回應。

(2) 可靠的傳輸協定(Reliable Transport Protocol)。為了保證訊息封包都能按順序及安全到達相鄰路由器,EIGRP 提供多點廣播(Multicast)和單一廣播(Unicast)兩種封包。對於多重存取(Multiaccess)網路,則使用多點廣播封包;如是單一存取網路(如 Ethernet),則使用單一廣播封包。當廣播封包是 Hello 時不用回應確認訊息;但廣播更新(Update)封包時,接收者必須回應確認訊息。

(3) DUAL 狀態轉換(DUAL Finite-State Machine被崁入計算和搜尋最佳路徑演算法內。DUAL 整合距離向量演算法和鏈路狀態演算法,能隨時找出最佳路徑更新路由表。

(4) 協定相依模組(Protocol-Dependent Module)。特定網路層路徑選擇協定之間的連結可採用不同模組,這對網路的擴充性較高。

13-10-4 OSPF 繞路協定

『開放式最短路徑優先』(Open Shortest Path First, OSPF是在 1980 年中期由 IETFInternet Engineering Task Force)發展出來,主要應用於 IP 網路中內部閘門之間的路徑選擇協定。和 RIP 相比較,OSPF 能適用於較大網路或異質網路上。OSFP 有兩個重要特性:(1) 是開放性架構(Open),它的規格是公開性的(RFC 1247),任何廠商可任意安裝在自家電腦上,並修改或增加其功能。(2) 使用最短路徑演算法(SPF),找出所有路徑中的最短路徑,一般會參考採用 Dijkstra Algorithm(請參考 4-7-4 節)。

和其他路徑選擇協定的另一不同點是,OSPF 採用『鏈路狀態路徑選擇法』(Link-State routing)。在 OSPF 下的路由器定時傳送『鏈路狀態宣傳』(Link-State Advertisement, LSA)訊息給同等階級地區的其他路由器,LSA 訊息包含有連接介面、路由值(Metric)、以及其他相關變數值。OSPF 路由器計算這些參數後,並以最短路徑演算法找出,針對網路上(自治系統內)所有路由器中的最短路徑。另外和使用距離向量法的 RIP IGRP 有很大的不同,它們皆傳送某部份(或更新部份)的路由表給其他路由器;而 OSPF 是傳遞路由器所管轄內之『路由拓樸圖』給相鄰之路由器。

OSPF 能將自己管轄的自治系統(Autonomous System, AS)以階層式分割為若干個小區域(如圖 13-43 所示)。基本上,OSPF 是負責自治系統內(intra-AS)路徑選擇的功能,但它也有能力處理接收和傳送自治系統之間(inter-AS)的路徑選擇問題。被分割的小區域一般都稱為網域(Domain),一個網域內也許連接數個路由器和若干個主機。網域之間連接的路由器稱之為『邊界路由器』(Border Router)或稱『骨幹路由器』(Backbone Router),如圖中的 Router_4Router_5Router_12Router_11Router_10、以及 Router_6,它們之間連線稱為骨幹(Backbone)。骨幹路由器和一般網域內路由器(如 Router_3 等)處理不同的拓樸圖資料庫(Topological Database)。

13-43 自治系統內 OSPF 的拓樸圖

網域內所有路由器接收網域內其他路由器所傳送的 LAS 建立網路架構圖,並將其建構於拓樸圖資料庫內。骨幹路由器不僅必須建構網域內的拓樸圖,還必須建立骨幹的拓樸圖資料庫,因此在任一部骨幹路由器上可觀察到所有網域和骨幹網路的拓樸圖。在 OSPF 中有兩種路徑選擇功能:

(1) 網域內(intra-domain,處理封包的目的和來源位址皆屬於本網域之路徑選擇;

(2) 網域間(inter-domain),跨越不同網域必須透過骨幹路由器轉送。

如圖 13-43 網域 3 的主機_B欲傳送封包到網域 2 的主機_A,該封包被傳送到 Router_13、再往前送到 Router_11、再送到 Router_10inter-domain);之後再經由 Router_9 轉送到 Router_7 到達主機_Aintra-domain)。

因此,骨幹路由器在做跨越不同網域的路徑選擇時,必須搜尋較複雜的拓樸圖資料庫,尤其做連續封包傳送的時候,每個封包都必須搜尋資料庫。為了節省搜尋時間及次數,骨幹路由器可以建立虛擬鏈路(Virtual Link),來連結經常使用的路徑。但網域內路由器之間的虛擬路徑是共享而非專屬。骨幹路由器也可以學習經由外部閘門所傳過的路徑訊息,作自治系統之間的路徑選擇功能。

13-44 OSPF 的封包格式,其中各欄位功能如下:

(1) 版本(Version, Ver):表示該封包之 OSPF 的版本。

(2) 型態(Type):表示該封包的工作型態,有下列四種型態:

        • Hello建立和管理相鄰路由器關係。

        • Database Description描述拓樸圖資料庫的內容。這些訊息將因調整資料庫而被改變。

        • Link-state Request向相鄰路由器要求傳遞某些片段的拓樸圖資料庫。這些訊息被傳送是因為某些路由器發現資料庫的內容已經失去時效性,要求重新更新。

        • Link-state Update回應 Link-state Request 要求。傳送中的訊息可能經由 LSA 訊息修正過。

        • Link-state Acknowledge確認接收到回應訊息。

(3) 封包長度(Length, Len):整個封包的長度,以位元組為單位。

(4) Router ID發送封包的來源路由器之識別碼。

(5) Area ID來源封包之區域(或網域)的識別碼。

(6) ChecksumCS):檢查集之檢查碼。

(7) 認證型態(Authentication Type, AT):內容為認證型態。所有 OSPF 的交換訊息都必須經過認證,任何區域可自行規劃認證型態。

(8) 認證(Authentication, Auth):內容為認證訊息。

(9) 資料(Data):傳送給上層通訊協定之包裝資料。

13-44 OSPF 封包格式

未來 OSPF 將被加入適當價格(equal-cost)與多重路徑選擇(multipath routing)的功能,使路徑選擇能依照上層服務型態(Type-of-Service, ToS)的要求來配置路徑。ToS 路徑選擇是由上層通訊協定依照服務的特殊需求而制定,因此可達到服務品質(Quality of Service, QoS)的需求。在應用上,譬如某個封包特別緊急,如果 OSPF 採用不同優先等級鏈路,就可讓它優先通過。OSPF 提供一個或多個路由值(metric)計算路徑效率,如果只採用一個路由值,將沒有所謂 ToS 功能,我們可按照 ToS 的需求採用多種有關的路由值。例如在 IP ToS 之下,我們可採用延遲、傳輸量、可靠度等等參數,再由 OSPF 計算出適當價格(equal-cost)的路徑。

翻轉工作室:粘添壽

 

電腦網路與連結技術:

 

 

翻轉電子書系列: