字體:小 中 大 | |
|
|
2009/11/19 04:44:12瀏覽854|回應0|推薦0 | |
先來談談網路路由(network routing)。對這方面有興趣的讀者可以參考之前的《生命的形態|討論(16)》以及《生命的形態|討論(18)》這兩篇PO文,現在我就用下面這張圖來簡單地說明網路路由的概念。 網路路由就是透過所謂的路由器(router)將資料由IN送達到OUT的過程。簡而言之,每項需求進入網路就必須有個出口來執行這項需求,而這個過程就必須仰賴路由器,一個一個地將需求的資料以接力的方式由IN送達到OUT,然後被執行。但是,即使是相同的IN and OUT跟相同的需求,傳送資料的路徑可不一定都是一樣的呦!譬如說,路徑可能是0-1-3-5或0-1-2-4-5或0-1-2-3-4-5等等。 打從一開始,Internet 之所以會發展成多重路徑來做資料傳輸的主要原因,就是戰爭的考量!兩國戰爭首先要破壞的就是對方的通訊系統。以前以電話線路為主的通訊系統,一旦接通之後,由IN送達到OUT只有一條路徑,斷了就得重新連線;而今天的網際網路採用多重路徑來做資料傳輸,一條路徑斷了,就連結出新的路徑。過程中的路由器越多,可能的資料傳輸路徑就越多,於是通訊系統就越不容易被摧毀。這就是美國國防部發展Internet 的首要目的:即使美國遭受突如其來的攻擊,美國也能透過Internet來發射大規模毀滅性武器。科技始終來自於人性?嘿,或許應該說,科技始終來自於爭戰。(So, 人性 = 爭戰?) 那麼,路由的路徑是如何被決定的呢?最簡單的回答,就是透過網路路由演算法(network routing algorithm),它主要有以下兩種演算方式: 連線狀態演算法(link-state algorithm,簡稱為LS演算法 ) 所有的路由器(router)每時每刻地向交通指揮中心報告交通狀況。所以,交通指揮中心完全掌握所有的路由資訊,其中包括有沒有新的路由器加入,哪裡線路擁塞,哪個路由器剛剛掛了,哪些路段有交通管制,哪些路段要收費,哪一條是高速公路,哪一條是市區道路等等非常詳細的全區域的地圖與交通狀況。交通指揮中心很可能是一個或多個路由器來擔任,當車子帶著需求由IN出發,交通指揮中心就會幫忙車子決定OUT和全程的最佳路徑;或者只要車子帶著OUT的地址由IN出發,無需交代需求為何,交通指揮中心也會幫忙車子決定全程的最佳路徑。 距離向量演算法(distance vector algorithm,簡稱為DV演算法) 所有的路由器(router)每時每刻地向周圍的路由器報告交通狀況。沒有交通指揮中心,只有靠站崗的交通警察各自與鄰近的交通警察相互聯繫來指揮交通。交通警察會把車子攔下來並檢查它所帶著的IN和需求,然後根據當下的路況,他會要車子開到下一個站崗的交通警察,直到車子抵達OUT為止。每一個路由器就是站崗的交通警察,只要車子說明從IN來,載著甚麼需求,交通警察就會幫車子決定鄰近的最佳路徑;或者只要車子給定IN和OUT的地址,無需交代需求為何,交通警察也會幫車子決定鄰近的最佳路徑。 現在讓我用下圖來進一步說明這兩種演算方式: 當IN送出需求到達0時,如果是使用LS演算法,可能會先產生三條路徑(0-1-4-6-9,0-2-7,0-3-5-8)來帶出三種處理方式(OUT#1,OUT#2,OUT#3)。最後的最佳路徑卻有可能是0-1-4-5-8!如果是使用DV演算法,可能先到1,接下來可能是4,接下來如果到5,就會先產生兩條路徑(5-8,5-7)來帶出兩種處理方式(OUT#2,OUT#3)。最後的最佳路徑卻也有可能是0-1-4-5-8! 從這樣的決策過程來看,LS演算法可以說是全面考量型的演算法,我稱之為理性的演算法;另一方面,DV演算法可以說是隨遇而安型的演算法,我稱之為感性的演算法。 感性的演算法最怕的就是面臨所謂的路由迴圈(routing loop),譬如1交給4、4交給5、5又交給1,如此1-4-5-1-4-5-1地轉不出個結果來,完全不知所措,不知道該如何是好! 理性的演算法最怕的就是面臨所謂的路由擺盪(routing oscillation),這是因為存在多個交通指揮中心而造成的問題,譬如0跟4都是俱備指揮中心功能的路由器,兩者同時算出最佳路徑分別為0-1-4-5-8和0-1-4-6-9,於是在OUT#1跟OUT#3之間舉棋不定,不知道該如何是好!這一秒用OUT#1,,但是下一秒又改成OUT#3,結果一事無成。 無論是那種演算法,其目的就是算出最佳路徑。那麼,最佳路徑是用甚麼來考量的呢?這就牽扯到品格與情緒了。下回再聊。 |
|
( 知識學習|科學百科 ) |