什么是網橋?
網橋工作在數據鏈路層,將兩個LAN連起來,根據MAC地址來轉發幀, 可以看作一個低層的路由器(路由器工作在網絡層,根據網絡地址如IP地址進行轉發)。
遠程網橋通過一個通常較慢的鏈路(如電話線)連接兩個遠程LAN,對本地網橋而言,性能比較重要, 而對遠程網橋而言,在長距離上可正常運行是更重要的。
網橋與路由器的比較
網橋并不了解其轉發幀中高層協議的信息,這使它可以同時以同種凡是處理IP、IPX等協議, 它還提供了將無路由協議的網絡(如NetBEUI)分段的功能。
由于路由器處理網絡層的數據,因此它們更容易互連不同的數據鏈路層,如令牌環網段和以太網段。 網橋通常比路由器難控制。象IP等協議有復雜的路由協議,使網管易于管理路由; IP等協議還提供了較多的網絡如何分段的信息(即使其地址也提供了此類信息)。 而網橋則只用MAC地址和物理拓撲進行工作。因此網橋一般適于小型較簡單的網絡
二、使用原因
許多單位都有多個局域網,并且希望能夠將它們連接起來。之所以一個單位有多個局域網,有以下6個原因:
首先,許多大學的系或公司的部門都有各自的局域網,主要用于連接他們自己的個人計算機、工作站以及服務器。 由于各系(或部門)的工作性質不同,因此選用了不同的局域網,這些系(或部門)之間早晚需相互交往,因而需要網橋。
其次,一個單位在地理位置上較分散,并且相距較遠,與其安裝一個遍布所有地點的同軸電纜網, 不如在各個地點建立一個局域網,并用網橋和紅外鏈路連接起來,這樣費用可能會低一些。
第3,可能有必要將一個邏輯上單一的LAN分成多個局域網,以調節載荷。例如采用由網橋連接的多個局域網, 每個局域網有一組工作站,并且有自己的文件服務器,因此大部分通信限于單個局域網內,減輕了主干網的負擔。
第4,在有些情況下,從載荷上看單個局域網是毫無問題的,
但是相距最遠的機器之間的物理距離太遠(比如超過802.3所規定的2.5km)。即使電纜鋪設不成問題, 但由于來回時延過長,網絡仍將不能正常工作。唯一的辦法是將局域網分段,在各段之間放置網橋。 通過使用網橋,可以增加工作的總物理距離。
第5,可靠性問題。在一個單獨的局域網中,一個有缺陷的節點不斷地輸出無用的信息流會嚴重地破壞局域網的運行。 網橋可以設置在局域網中的關鍵部位,就像建筑物內的放火門一樣,防止因單個節點失常而破壞整個系統。
第6,網橋有助于安全保密。大多數LAN接口都有一種混雜工作方式(promiscuous mode),在這種方式下,
計算機接收所有的幀,包括那些并不是編址發送給它的幀。如果網中多處設置網橋并謹慎地攔截無須轉發的重要信息, 那么就可以把網絡分隔以防止信息被竊。
三、兼容性問題
有人可能會天真地認為從一個802局域網到另一個802局域網的網橋非常簡單,但實際上并非如此。 在802.x到802.y的九種組合中, 每一種都有它自己的特殊問題要解決。在討論這些特殊問題之前,先來看一看這些網橋共同面臨的一般性問題。
首先,各種局域網采用了不同的幀格式。這種不兼容性并不是由技術上的原因造成的, 而僅僅是由于支持三種標準的公司(Xerox, GM和IBM),沒有一家愿意改變自己所支持的標準。其結果是: 在不同的局域網間復制幀要重排格式,這需要占用CPU時間,重新計算校驗和, 而且還有可能產生因網橋存儲錯誤而造成的無法檢測的錯誤。
第二個問題是互聯的局域網并非必須按相同的數據傳輸速率運行。當快速的局域網向慢速的局域網發送一長串連續幀時, 網橋處理幀的速度要比幀進入的速度慢。網橋必須用緩沖區存儲來不及處理的幀,同時還得提防耗盡存儲器。 即使是10Mb/s的802.4到10Mb/s的802.3的網橋,在某種程度上也存在這樣的問題。因為802.3的部分帶寬耗費于沖突。 802.3實際上并不是真的10Mb/s,而802.4(幾乎)確實為10Mb/s。
與網橋瓶頸問題相關的一個細微而重要的問題是其上各層的計時器值。假如802.4局域網上的網絡層想發送一段很長的報文(幀序列)。 在發出最后一幀之后,它開啟一個計時器,等待確認。如果此報文必須通過網橋轉到慢速的802.5網絡, 那么在最后一幀被轉發到低速局域網之前,計時器就有可能時間到。網絡層可能會以為幀丟失而重新發送整個報文。 幾次傳送失敗后,網絡層就會放棄傳輸并告訴傳輸層目的站點已經關機。
第三,在所有的問題中,可能最為嚴重的問題是三種802 LAN有不同的最大幀長度。對于802.3,最大幀長度取決于配置參數, 但對標準的10M/bs系統最大有效載荷為1500字節。
802.4的最大幀長度固定為8191字節。802.5沒有上限,只要站點的傳輸時間不超過令牌持有時間。如果令牌時間缺省為10ms, 則最大幀長度為5000字節。一個顯而易見的問題出現了:當必須把一個長幀轉發給不能接收長幀的局域網時,將會怎么樣? 在本層中不考慮把幀分成小段。所有的協議都假定幀要么到達要么沒有到達,沒有條款規定把更小的單位重組成幀。 這并不是說不能設計這樣的協議,可以設計并已有這種協議,只是802不提供這種功能。這個問題基本上無法解決, 必須丟棄因太長而無法轉發的幀。其透明程度也就這樣了。
由于各種802 LAN的特殊性,如:802.4幀帶有優先權位、802.5幀字節中有A和C位等,九種網橋都有其特殊的問題,見下表:?
?
?????????? 目的LAN
?????????? 802.3(CSMA/CD? 802.4(令牌總線)???? 802.5(令牌環)
源LAN????? 802.3????????? 1,4???????????????? 1,2,4,8?
?????????? 802.4????????? 1,5,8,9,10 9??????? 1,2,3,8,9,10?
?????????? 802.5????????? 1,2,5,6,7,10??????? 1,2,3,6,7 6,7?
1、重新格式化幀,并計算新的校驗和。
2、反轉比特順序。
3、復制優先權值,不管有無意義。
4、產生一個假想的優先權。
5、丟棄優先權。
6、流向環(某種程度上)。
7、設置A位和C位。
8、擔心擁塞(快速LAN至慢速LAN)。
9、擔心令牌因為交換ACK延遲或不可能而脫手。
10、如果幀對目的LAN太長,則將其丟棄。
設定的參數:
802.3:1500字節幀 10Mb/s(減去碰撞次數)
802.4:8191字節幀 10Mb/s
802.5:5000字節幀 4Mb/s
當IEEE802委員會開始制訂LAN標準時,未能商定一個統一的標準,卻產生了3個互不兼容的標準,這一失策已受到了嚴厲的抨擊。 后來,在制定互聯這3種LAN的網橋的標準時,該委員會決心干得好一些。這一次確實較為成功,他們提出了2種互不兼容的網橋方案。 直到目前為止,還無人要求該委員會制訂連接它的2個不兼容網橋的網關標準。
四、兩種網橋
1、透明網橋
第一種802網橋是透明網橋(transparent bridge)或生成樹網橋(spanning tree bridge)。支持這種設計的人首要關心的是完全透明。 按照他們的觀點,裝有多個LAN的單位在買回IEEE標準網橋之后,只需把連接插頭插入網橋,就萬事大吉。不需要改動硬件和軟件, 無需設置地址開關,無需裝入路由表或參數。總之什么也不干,只須插入電纜就完事,現有LAN的運行完全不受網橋的任何影響。 這真是不可思議,他們最終成功了。
透明網橋以混雜方式工作,它接收與之連接的所有LAN傳送的每一幀。當一幀到達時,網橋必須決定將其丟棄還是轉發。 如果要轉發,則必須決定發往哪個LAN。這需要通過查詢網橋中一張大型散列表里的目的地址而作出決定。該表可列出每個可能的目的地, 以及它屬于哪一條輸出線路(LAN)。在插入網橋之初,所有的散列表均為空。由于網橋不知道任何目的地的位置, 因而采用擴散算法(flooding algorithm):把每個到來的、目的地不明的幀輸出到連在此網橋的所有LAN中(除了發送該幀的LAN)。 隨著時間的推移,網橋將了解每個目的地的位置。一旦知道了目的地位置,發往該處的幀就只放到適當的LAN上,而不再散發。
透明網橋采用的算法是逆向學習法(backward learning)。網橋按混雜的方式工作,故它能看見所連接的任一LAN上傳送的幀。 查看源地址即可知道在哪個LAN上可訪問哪臺機器,于是在散列表中添上一項。
當計算機和網橋加電、斷電或遷移時,網絡的拓撲結構會隨之改變。為了處理動態拓撲問題,每當增加散列表項時, 均在該項中注明幀的到達時間。每當目的地已在表中的幀到達時,將以當前時間更新該項。這樣, 從表中每項的時間即可知道該機器最后幀到來的時間。網橋中有一個進程定期地掃描散列表,清除時間早于當前時間若干分鐘的全部表項。 于是,如果從LAN上取下一臺計算機,并在別處重新連到LAN上的話,那么在幾分鐘內,它即可重新開始正常工作而無須人工干預。 這個算法同時也意味著,如果機器在幾分鐘內無動作,那么發給它的幀將不得不散發,一直到它自己發送出一幀為止。
到達幀的路由選擇過程取決于發送的LAN(源LAN)和目的地所在的LAN(目的LAN),如下所示:
1、如果源LAN和目的LAN相同,則丟棄該幀。
2、如果源LAN和目的LAN不同,則轉發該幀。
3、如果目的LAN未知,則進行擴散。
為了提高可靠性,有人在LAN之間設置了并行的兩個或多個網橋,但是,這種配置引起了另外一些問題,因為在拓撲結構中產生了回路, 可能引發無限循環。其解決方法就是下面要講的生成樹(spanning tree)算法。
?
?
? 2)、生成樹網橋
解決上面所說的無限循環問題的方法是讓網橋相互通信,并用一棵到達每個LAN的生成樹覆蓋實際的拓撲結構。 使用生成樹,可以確保任兩個LAN之間只有唯一一條路徑。一旦網橋商定好生成樹,LAN間的所有傳送都遵從此生成樹。 由于從每個源到每個目的地只有唯一的路徑,故不可能再有循環。
為了建造生成樹,首先必須選出一個網橋作為生成樹的根。 實現的方法是每個網橋廣播其序列號(該序列號由廠家設置并保證全球唯一), 選序列號最小的網橋作為根。接著,按根到每個網橋的最短路徑來構造生成樹。如果某個網橋或LAN故障,則重新計算。 網橋通過BPDU(Bridge Protocol Data Unit)互相通信,在網橋做出配置自己的決定前,每個網橋和每個端口需要下列配置數據:
網橋:網橋
ID(唯一的標識)
端口:端口ID(唯一的標識)
端口相對優先權
各端口的花費(高帶寬 = 低花費)
配置好各個網橋后,網橋將根據配置參數自動確定生成樹,這一過程有三個階段:
1、選擇根網橋
具有最小網橋ID的網橋被選作根網橋。網橋ID應為唯一的,但若兩個網橋具有相同的最小ID,則MAC地址小的網橋被選作根。
2、在其它所有網橋上選擇根端口
除根網橋外的各個網橋需要選一個根端口,這應該是最適合與根網橋通信的端口。通過計算各個端口到根網橋的花費, 取最小者作為根端口。
3、選擇每個LAN的指定(designated)網橋和指定端口
如果只有一個網橋連到某LAN,它必然是該LAN的指定網橋,如果多于一個,則到根網橋花費最小的被選為該LAN的指定網橋。 指定端口連接指定網橋和相應的LAN(如果這樣的端口多于一個,則低優先權的被選)。
一個端口必須為下列之一:
1、根端口
2、某LAN的指定端口
3、阻塞端口
當一個網橋加電后,它假定自己是根網橋,發送出一個CBPDU(Configuration Bridge Protocol Data Unit), 告知它認為的根網橋ID。
一個網橋收到一個根網橋ID小于其所知ID的CBPDU,它將更新自己的表,如果該幀從根端口(上傳)到達, 則向所有指定端口(下傳)分發。 當一個網橋收到一個根網橋ID大于其所知ID的CBPDU,該信息被丟棄,如果該幀從指定端口到達, 則回送一個幀告知真實根網橋的較低ID。 當有意地或由于線路故障引起網絡重新配置,上述過程將重復,產生一個新的生成樹。
2、源路由選擇網橋
透明網橋的優點是易于安裝,只需插進電纜即大功告成。但是從另一方面來說,這種網橋并沒有最佳地利用帶寬, 因為它們僅僅用到了拓撲結構的一個子集(生成樹)。這兩個(或其他)因素的相對重要性導致了802委員會內部的分裂。 支持CSMA/CD和令牌總線的人選擇了透明網橋, 而令牌環的支持者則偏愛一種稱為源路由選擇(source routing)的網橋(受到IBM的鼓勵)。
源路由選擇的核心思想是假定每個幀的發送者都知道接收者是否在同一LAN上。當發送一幀到另外的LAN時, 源機器將目的地址的高位設置成1作為標記。另外,它還在幀頭加進此幀應走的實際路徑。
源路由選擇網橋只關心那些目的地址高位為1的幀,當見到這樣的幀時,它掃描幀頭中的路由, 尋找發來此幀的那個LAN的編號。
如果發來此幀的那個LAN編號后跟的是本網橋的編號,則將此幀轉發到路由表中自己后面的那個LAN。 如果該LAN編號后跟的不是本網橋, 則不轉發此幀。這一算法有3種可能的具體實現:軟件、硬件、混合。這三種具體實現的價格和性能各不相同。 第一種沒有接口硬件開銷,
但需要速度很快的CPU處理所有到來的幀。最后一種實現需要特殊的VLSI芯片,該芯片分擔了網橋的許多工作,因此, 網橋可以采用速度較慢的CPU,或者可以連接更多的LAN。
源路由選擇的前提是互聯網中的每臺機器都知道所有其他機器的最佳路徑。如何得到這些路由是源路由選擇算法的重要部分。 獲取路由算法的基本思想是:如果不知道目的地地址的位置,源機器就發布一廣播幀,詢問它在哪里。 每個網橋都轉發該查找幀(discovery frame),這樣該幀就可到達互聯網中的每一個LAN。當答復回來時,
途經的網橋將它們自己的標識記錄在答復幀中,于是,廣播幀的發送者就可以得到確切的路由,并可從中選取最佳路由。
?
五、遠程網橋
網橋有時也被用來連接兩個或多個相距較遠的LAN。比如,某個公司分布在多個城市中, 該公司在每個城市中均有一個本地的LAN, 最理想的情況就是所有的LAN均連接起來,整個系統就像一個大型的LAN一樣。
該目標可通過下述方法實現:每個LAN中均設置一個網橋, 并且用點到點的連接(比如租用電話公司的電話線)將它們兩個兩個地連接起來。 點到點連線可采用各種不同的協議。辦法之一就是選用某種標準的點到點數據鏈路協議,將完整的MAC幀加到有效載荷中。 如果所有的LAN均相同,這種辦法的效果最好,它的唯一問題就是必須將幀送到正確的LAN中。 另一種辦法是在源網橋中去掉MAC的頭部和尾部,并把剩下的部分加到點到點協議的有效載荷中, 然后在目的網橋中產生新的頭部和尾部。 它的缺點是到達目的主機的校驗和并非是源主機所計算的校驗和,因此網橋存儲器中某位損壞所產生的錯誤可能不會被檢測到。
?
雖然此算法可以找到最佳路由(它找到了所有的路由),但同時也面臨著幀爆炸的問題。透明網橋也會發生有點類似的狀況,
但是沒有這么嚴重。其擴散是按生成樹進行,所以傳送的總幀數是網絡大小的線性函數,而不象源路由選擇是指數函數。
一旦主機找到至某目的地的一條路由,它就將其存入到高速緩沖器之中,無需再作查找。雖然這種方法大大遏制了幀爆炸,
但它給所有的主機增加了事務性負擔,而且整個算法肯定是不透明的。
透明網橋一般用于連接以太網段,而源路由選擇網橋則一般用于連接令牌環網段。
五、遠程網橋
網橋有時也被用來連接兩個或多個相距較遠的LAN。比如,某個公司分布在多個城市中,該公司在每個城市中均有一個本地的LAN,
最理想的情況就是所有的LAN均連接起來,整個系統就像一個大型的LAN一樣。
該目標可通過下述方法實現:每個LAN中均設置一個網橋,
并且用點到點的連接(比如租用電話公司的電話線)將它們兩個兩個地連接起來。
點到點連線可采用各種不同的協議。辦法之一就是選用某種標準的點到點數據鏈路協議,將完整的MAC幀加到有效載荷中。
如果所有的LAN均相同,這種辦法的效果最好,它的唯一問題就是必須將幀送到正確的LAN中。
另一種辦法是在源網橋中去掉MAC的頭部和尾部,
并把剩下的部分加到點到點協議的有效載荷中,然后在目的網橋中產生新的頭部和尾部。
它的缺點是到達目的主機的校驗和并非是源主機所計算的校驗和,因此網橋存儲器中某位損壞所產生的錯誤可能不會被檢測到。
評論
查看更多