《分布式系統 概念與設計》一3 3 5 路由

2021-09-23 08:21:30 字數 3176 閱讀 7955

3.3.5 路由

路由是除了區域網以外,例如乙太網(區域網在所有相連的主機間兩兩都有直接連線),其他網路都需要的功能。在大型網路中,採用的是自適應路由,即網路兩點間通訊的最佳路由會周期性地重新評估, 圖3-7 廣域網中的路由評估時會考慮到當時的網路流量以及故障情況(如路由器故障或網路斷鏈)。

如圖3-7所示,在網路中將資料報傳遞到目的位址是處於連線點的路由器的共同責任。除非源主機和目的主機都在同乙個區域網中,否則資料報都必須經過乙個或多個路由結點,輾轉多次才能到達。而決定資料報傳輸到目的位址的路由是由路由演算法負責的——它由每個結點的乙個網路層程式實現。

路由演算法包括兩個部分:

1)它必須決定每個資料報穿梭於網路時所應經過的路徑。在電路交換網路層(如x.25)和幀中繼網路(如atm)中,一旦建立虛電路或連線,路由也就確定了。98在包交換網路層(如ip)中,資料報的路由是單獨決定的。如果希望不降低網路效能,演算法必須特別簡單有效。

2)它必須通過監控流量和檢測配置變化或故障來動態地更新網路的知識。在這種活動中,時間並不是至關重要的,可以使用速度較慢但計算量較大的技術。

這兩個活動分布在整個網路中。路由是一段一段決定的,它用本地擁有的資訊決定每個進入的資料報下一步的方向。本地擁有的路由資訊依靠乙個分發鏈路狀態資訊(它們的負載和故障狀態)的演算法定期更新。

乙個簡單的路由演算法我們在這裡描述的是「距離向量」演算法。這將為3.4.3節中討論鏈路-狀態演算法提供基礎,而鏈路-狀態演算法從1979以來就成為網際網路上主要的路由演算法。網路中的路由是在圖中尋找路徑問題的乙個例項。bellman的最短路徑演算法[bellman 1957]早在計算機網路出現之前就發表了,它為距離向量法提供了基礎。bellman的方法已被ford和fulkerson[1962]改寫成乙個適合大型網路實現的分布式演算法,而基於他們的工作成果的協議常常被稱為「bellman-ford」協議。

圖3-8給出了圖3-7的網路中每個路由器中儲存的路由表,其中假設網路中沒有出故障的鏈路和路由器。路由表的每行為傳送給定目的位址的資料報提供了路由資訊。鏈路域為傳送到指定目的地的資料報指明了下一段鏈路。開銷域計算向量距離,99或到達目的地的跳數。對於具有相似頻寬的鏈路的儲存**網路,這張表對乙個資料報傳輸到目的地所需的時間給出了合理估計。儲存在路由表中的開銷資訊並不是路由演算法的第1部分所採取的包路由動作中使用的,而是在演算法的第2部分建立和維護路由表時使用。

路由表中為每個可能的目的地單獨設定一項,給出了資料報到達目的地而要採取的下一跳(hop)。當資料報到達乙個路由器時,就會抽取目的位址並在本地路由表中查詢該位址。路由表中的表項給出了指引資料報傳送到目的要經過的下乙個鏈路。

例如,乙個目的地為c的資料報從路由器a開始傳送,路由器在路由表中檢查有關c的項。路由表表明資料報應該從a沿標號為1的鏈路路由。資料報到達b後,按照前述的過程,在b的路由表中查詢,發現需要經過標號為2的鏈路路由到c。當資料報到達c時,路由表中的相關項顯示「本地」,而不是乙個鏈路號。這表明應該將資料報傳送到本地主機上去。

現在讓我們來考慮一下怎樣建立路由表,以及在網路發生故障時怎樣維護路由表,即上面所說的路由演算法的第2部分是怎樣完成的。因為每個路由表只為每個路由指定一跳,所以路由資訊的構建或修正就可以按分布的方式進行。每個路由器使用路由器資訊協議(router information protocol,rip)通過傳送自己路由表資訊的概要和鄰接結點相互交換網路資訊。下面簡要描述一下路由器所完成的rip動作:

1)周期性地並且只要本地路由表發生改變,就將自己的路由表(以概要的方式)發給鄰接的所有可訪問的路由器。也就是說,在每個沒有故障的鏈路上發出乙個包含路由表副本的rip資料報。

2)當從鄰接路由器收到這樣的表時,如果接收到的表中給出了到達乙個新目的地的路由,或對於已有的乙個目的地更好(開銷更低)的路由,則用新的路由更新本地的路由表。如果路由表是從鏈路n接收到的,並且表中給出的從鏈路n開始到達某地的開銷和本地路由表中的不相同,則用新的開銷替換本地表中已有的開銷。這樣做的原因是,新錶是從和相關的目的地更近的路由器傳來的,因此對經過該路由器的路由而言更加有權威性。

圖3-9給出的偽**程式將更準確地描述這個演算法,其中tr是從另乙個路由器接收到的表,tl是本地路由表。ford和fulkerson[1962]已經證明,無論何時網路發生變化,上面描述的步驟都能充分確保路由表收斂到到達每個目的地的最佳路由。即使網路沒有發生變化,也會以頻率t來傳播路由表,以確保其穩定性,例如,要在丟失rip資料報的情況下保證穩定性。網際網路採用的t值是30s。

為了處理故障,每個路由器都監控著自己的鏈路並做以下的工作:

當檢測到一條有故障的鏈路n時,將本地表中指向故障鏈路的所有項的開銷都設為無窮大(∝),並執行send動作。

這樣,乙個斷開的鏈路資訊被表示成通往相關目的地的開銷值是無窮大。當這一資訊傳播到鄰接路由器時,它們的路由表也將根據receive動作進行更新(注意:∝+1=∝),然後繼續傳播直到有路由到相關目的地的結點。最終,具有可用路由的結點將會傳播其路由表,它的可用路由也將替代所有結點上的故障路由。

向量-距離演算法可以用多種方法進行改進。開銷,也被稱為度量,可以根據鏈路的實際頻寬來計算;可以修改演算法,以增加資訊收斂的速度,並避免那些在達到收斂前可能出現的不希望出現的中間狀態,例如迴圈。具有這些改進的路由資訊協議是第乙個在網際網路中使用的路由協議,也就是眾所周知的rip-1,其具體描述見rfc 1058[hedrick 1988]。但收斂速度過慢所帶來的問題並沒有得到很好的解決,當網路處於中間狀態時就會出現路由低效和資料報丟失的問題。

後來,路由演算法的發展趨於在每個網路結點中增加對於網路的資訊容量。這一類演算法中最重要的一族是鏈路-狀態演算法。它們的基本思想是分布並更新在每個結點中乙個表示網路所有部分或重要部分的資料庫。每個結點負責計算在自己的資料庫中所顯示的到達目的地的最佳路由。這種計算可利用多種演算法完成,有些演算法避免了bellman-ford演算法中存在的問題,如收斂的時間慢和出現的不希望中間狀態。101路由演算法的設計是乙個相當重要的主題,我們這裡的討論是非常有限的。我們將在3.4.3節重新討論這個主題,在那裡將描述rip-1演算法的操作,rip-1演算法是最早用於ip路由的演算法之一,目前在網際網路的許多地方還在使用它。對於網際網路中更深入的路由問題,請參閱huitema[2000],如想全面地了解路由演算法,請參閱tanenbaum[2003]。

《分布式系統 概念與設計》一1 7 小結

分布式系統無處不在。網際網路使得全世界使用者無論走到 都能訪問網際網路上的服務。每個組織管理乙個企業內部網,並通過該企業內部網為本地使用者提供本地服務和網際網路服務,也為網際網路上的其他使用者提供服務。小型的分布式系統可由移動計算機和其他可連線到無線網路的小型計算裝置構造。資源共享是構造分布式系統的...

分布式 分布式系統的設計

在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...

《分布式系統 概念與設計》一第2章 系統模型

本章提供三個重要且互補的解釋方法,以便有效地描述和討論分布式系統的設計 物理模型考慮組成系統的計算機和裝置的型別以及它們的互連,不涉及特定的技術細節。體系結構模型是從系統的計算元素執行的計算和通訊任務方面來描述系統 這裡計算元素或是指單個計算機或是指通過網路互連的計算機集合。客戶 伺服器和對等模型是...