在Linux系統中有兩中不同的交換方式,也就是NBMA和BMA。不要看著兩種交換方式只是差了一個字母,但是確實完全不同,甚至互相對立機制。本文就來介紹一下Linux系統的這兩種網絡的交換方式。
1.NBMA交換
雖然大家都連接在一個鏈路上,但這並不意味著數據幀可以隨意到達任何地方。NBMA網絡中,控制權在交換機,端主機只能通過交換機到達目標端主機,也就是說,只有在交換機上配置了“這個從這個端口來的數據幀通過了某種檢驗,可以且只可以從那個端口發出去”這個策略時,數據幀才能通過。對於NBMA網絡,交換機的實現會更加復雜,因為它內置了很多的協議層邏輯,而不是一個被動的學習。如果我們舉幾個NBMA的實例,可能會更好一些。
對於NBMA,最典型的就是幀中繼和ATM了,廣泛使用的技術是ATM,我們知道ATM十分的復雜,比以太網復雜多了,我覺得它比IP都要復雜。對於ATM而言,其中一個重要的概念就是虛電路和虛通道,虛電路必須在通信前建立,ATM交換機的工作就是交換虛路徑使數據幀在配置好的虛通道中傳輸,一個特定的數據幀只能沿著一條虛通道前進,不會到達別的虛通道。ATM的虛通道的配置就是在交換機上進行的,也就是說是交換機控制了數據幀如何進行轉發,端主機只能被動接受這種安排。
NBMA的優勢在於其可控性,不像BMA那樣。對於WAN,一般很少使用BMA,大多數都是使用NBMA,因為WAN的轉發策略相當復雜,在BGP的指導下,鏈路層一般都是特定目標的轉發,絕不能出現任意的廣播,這關系到各個AS的強制性政策,如果一旦出現任意的廣播,將會使WAN不再安全,這裡的安全可能和政治,國家安全高度相關。
2.BMA交換
其實BMA網絡根本就不是交換網絡,也不需要交換,BMA網絡的邏輯拓撲永遠都是總線型拓撲,在BMA網絡引入交換的概念完全是為了優化網絡。以以太網為例,最初的以太網就是總線型的,後來為了便於拓展引入了HUB,也有了網橋用於連接異構以太網,後來的以太網交換機在高性能且廉價的雙絞線廣泛應用這個事實的推動下風靡開來,基於總線的同軸線逐漸退出。以太網交換機的最大優勢在於其學習功能,這種學習是一種被動學習,雖說在BMA網絡上沒有秘密,然而由於學習型交換機的存在,秘密就局限於互相認可的通信雙方了。縱觀整個歷史,我們可以發現,以太網交換機是一個後來者,雖然它真的顛覆了以太網的架構,以至於後來的千兆,萬兆以太網僅僅為了兼容才和傳統802.3保持一致,它還是無法顛覆以太網的本質,這個本質是什麼呢?這就是ARP協議,ARP請求是一個廣播,這個廣播確認了以太網還是那個最初的廣播型網絡。任何通信都不得不使用arp協議進行地址解析(不考慮靜態配置arp映射的情況),這個地址解析以及後續的單播通信給了交換機一個學習的機會,知道了某個MAC地址之於本交換機,哪個端口可以到達,這樣交換機就可以過濾掉不必要的廣播了。這種學習是被動的助推性的,即使沒有這種學習機制,數據包還是可以到達目標的,因為BMA網絡的實現在端主機,而不是交換機,對於以太網,默認數據幀會到達同鏈路的任意主機,主機會過濾掉目標MAC不是本機的數據幀,這才是BMA的本質-即實現在主機,交換機僅僅助力,交換機在對於判斷無能為力(比如MAC/端口映射條目老化)時,就會回歸BMA的本質,也就是使用廣播將數據幀在每個端口廣播。
IPv6取消了arp廣播,某種程度上正在徹底摧毀了以太網廣播性質的根基。然而即使如此,一個數據幀還是可以將目標MAC改成廣播地址的,在標准沒有改變之前,在交換機對於組播還處於蒙昧階段時,交換機看到這種數據幀還是會在所有端口轉發的。
以上就是Linux系統兩種網絡交換方式的介紹了,NBMA和BMA可以說是各有各的優勢,可以互相彌補。