1. 程式人生 > 實用技巧 >淺談網路協議(六) 交換機與VLAN

淺談網路協議(六) 交換機與VLAN

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

上一次,我們在宿舍裡組建了一個本地的區域網 LAN,可以愉快地玩遊戲了。這是一個非常簡單的場景,因為只有一臺交換機,電腦數目很少。今天,讓我們切換到一個稍微複雜一點的場景,辦公室。 上一篇說了如何組建一個簡單的區域網,只用到了一個交換機,但是很多地方,比如辦公室,需要用到多臺交換機,這一篇說說如何實現。

拓撲結構

先說說看拓撲結構是什麼,以下引自百度百科:

計算機網路拓撲結構是指網路中各個站點相互連線的形式,在區域網中明確一點講就是檔案伺服器、工作站和電纜等的連線形式。現在最主要的拓撲結構有匯流排型拓撲、星形拓撲、環形拓撲、樹形拓撲(由匯流排型演變而來)以及它們的混合型。顧名思義,匯流排型其實就是將檔案伺服器和工作站都連在稱為匯流排的一條公共電纜上,且匯流排兩端必須有終結器;星形拓撲則是以一臺裝置作為中央連線點,各工作站都與它直接相連形成星型;而環形拓撲就是將所有站點彼此序列連線,像鏈子一樣構成一個環形迴路;把這三種最基本的拓撲結構混合起來運用自然就是混合型了!

計算機網路的拓撲結構是引用拓撲學中研究與大小、形狀無關的點、線關係的方法,把網路中的計算機和通訊裝置抽象為一個點,把傳輸介質抽象為一條線,由點和線組成的幾何圖形就是計算機網路的拓撲結構。
網路的拓撲結構反映出網中各實體的結構關係,是建設計算機網路的第一步,是實現各種網路協議的基礎,它對網路的效能,系統的可靠性與通訊費用都有重大影響。

我們常見到的辦公室大多是一排排的桌子,每個桌子都有網口,一排十幾個座位就有十幾個網口,一個樓層就會有幾十個甚至上百個網口。如果算上所有樓層,這個場景自然比你宿舍裡的複雜多了。

一個交換機肯定不夠用,需要多臺交換機,交換機之間連線起來,就形成一個稍微複雜的拓撲結構。

先看兩臺交換機的情形。兩臺交換機連線著三個區域網,每個區域網上都有多臺機器。如果機器 1 只知道機器 4 的 IP 地址,當它想要訪問機器 4,把包發出去的時候,它必須要知道機器 4 的 MAC 地址。

1

機器 1 發起廣播,機器 2 收到這個廣播,但這不是找它的,所以沒它什麼事。交換機 A 一開始是不知道任何拓撲資訊的,在它收到這個廣播後,採取的策略是,除了廣播包來的方向外,它還要轉發給其他所有的網口。機器 3 也收到廣播資訊了,但是這和它也沒什麼關係。

交換機 B 也能收到廣播資訊,但是這時候它也是不知道任何拓撲資訊的,因而也是進行廣播的策略,將包轉發到區域網三。這個時候,機器 4 和機器 5 都收到了廣播資訊。傳送包的 MAC 地址是機器 4 的地址,於是機器 4 主動響應,一個 ARP 請求就成功完成了。

在這個請求完成時,交換機 A 就會知道機器 1 是直接與自己相連線的,就回記錄下機器 1 的 MAC 地址與內網地址。同時交換機 B 也會記錄機器 4 的 MAC 地址與內網地址。

當機器 2 要訪問機器 1 的時候,機器 2 並不知道機器 1 的 MAC 地址,所以機器 2 會發起一個 ARP 請求。這個廣播訊息會到達機器 1,也同時會到達交換機 A。這個時候交換機 A 已經知道機器 1 是不可能在右邊的網口的,所以這個廣播資訊就不會廣播到區域網二和區域網三。

當機器 3 要訪問機器 1 的時候,也需要發起一個廣播的 ARP 請求。這個時候交換機 A 和交換機 B 都能夠收到這個廣播請求。交換機 A 當然知道主機 A 是在左邊這個網口的,所以會把廣播訊息轉發到區域網一。同時,交換機 B 收到這個廣播訊息之後,由於它知道機器 1 是不在右邊這個網口的,所以不會將訊息廣播到區域網三。

如何解決常見的環路問題?

這樣看起來,兩臺交換機工作得非常好。隨著辦公室越來越大,交換機數目肯定越來越多。當整個拓撲結構複雜了,這麼多網線,繞過來繞過去,不可避免地會出現一些意料不到的情況。其中常見的問題就是環路問題。

例如這個圖,當兩個交換機將兩個區域網同時連線起來的時候。你可能會覺得,這樣反而有了高可用性。但是卻不幸地出現了環路。出現了環路會有什麼結果呢?

2

我們來想象一下機器 1 訪問機器 2 的過程。一開始,機器 1 並不知道機器 2 的 MAC 地址,所以它需要發起一個 ARP 的廣播。廣播到達機器 2,機器 2 會把 MAC 地址返回來,看起來沒有這兩個交換機什麼事情。

但是問題來了,這兩個交換機還是都能夠收到廣播包的。交換機 A 一開始是不知道機器 2 在哪個區域網的,所以它會把廣播訊息放到區域網二,在區域網二廣播的時候,交換機 B 右邊這個網口也是能夠收到廣播訊息的。交換機 B 會將這個廣播息資訊傳送到區域網一。區域網一的這個廣播訊息,又會到達交換機 A 左邊的這個介面。交換機 A 這個時候還是不知道機器 2 在哪個區域網,於是將廣播包又轉發到區域網二。就形成了閉環迴路。

這還是一個包轉來轉去,每臺機器都會發廣播包,交換機轉發也會複製廣播包,當廣播包越來越多的時候,按照上一節講過一個共享道路的演算法,也就是路會越來越堵,最後誰也別想走。所以,必須有一個方法解決環路的問題,怎麼破除環路呢?

STP 協議中那些難以理解的概念

在資料結構中,有一個方法叫作最小生成樹。有環的我們常稱為圖。將圖中的環破了,就生成了樹。在計算機網路中,生成樹的演算法叫作STP,全稱Spanning Tree Protocol。

3

在 STP 協議裡面有很多概念:

  • Root Bridge,也就是根交換機。顧名思義,最底層的交換機,主管一切。
  • Designated Bridges,有的翻譯為指定交換機。其他交換機通過這個交換機到達根交換機。這裡注意是樹枝,不是葉子,因為葉子往往是主機。
  • Bridge Protocol Data Units (BPDU) ,網橋協議資料單元。
  • Priority Vector,優先順序向量。

STP 的工作過程是怎樣的? 接下來,我們來看 STP 的工作過程。

一開始,每個網橋都被分配了一個 ID。這個 ID 裡有管理員分配的優先順序,當然網路管理員知道哪些交換機貴,哪些交換機好,就會給它們分配高的優先順序。

其他的交換機互相都連著網線,就互相傳送 BPDU 來比比較誰的效率比較高。高的級別就比較高,後面就能繼續發 BPDU,而效率低的只能收到上級發的 BPDU 的時候進行轉發。由此形成高階與低階的基本單元進行進一步合併。

最終,生成一棵樹狀的機構。

如何解決廣播問題和安全問題?

機器多了,交換機也多了,就算交換機比 Hub 智慧一些,但是還是難免有廣播的問題,一大波機器,相關的部門、不相關的部門,廣播一大堆,效能就下來了。就像一家公司,創業的時候,一二十個人,坐在一個會議室,有事情大家討論一下,非常方便。但是如果變成了 50 個人,全在一個會議室裡面吵吵,就會亂的不得了。

而且,不同部門之間也許還會存在一些保密資訊,那麼怎麼辦呢?答案是分離。

有兩種分的方法,一個是物理隔離。每個部門設一個單獨的會議室,對應到網路方面,就是每個部門有單獨的交換機,配置單獨的子網,這樣部門之間的溝通就需要路由器了。路由器咱們還沒講到,以後再說。這樣的問題在於,有的部門人多,有的部門人少。人少的部門慢慢人會變多,人多的部門也可能人越變越少。如果每個部門有單獨的交換機,口多了浪費,少了又不夠用。

另外一種方式是虛擬隔離,就是用我們常說的VLAN,或者叫虛擬區域網。使用 VLAN,一個交換機上會連屬於多個區域網的機器,那交換機怎麼區分哪個機器屬於哪個區域網呢?

10

我們只需要在原來的二層的頭上加一個 TAG,裡面有一個 VLAN ID,一共 12 位。為什麼是 12 位呢?因為 12 位可以劃分 4096 個 VLAN。這樣是不是還不夠啊。現在的情況證明,目前雲端計算廠商裡面絕對不止 4096 個使用者。當然每個使用者需要一個 VLAN 了啊,怎麼辦呢,這個我們在後面的章節再說。

如果我們買的交換機是支援 VLAN 的,當這個交換機把二層的頭取下來的時候,就能夠識別這個 VLAN ID。這樣只有相同 VLAN 的包,才會互相轉發,不同 VLAN 的包,是看不到的。這樣廣播問題和安全問題就都能夠解決了。

11

而且對於交換機來講,每個 VLAN 的口都是可以重新設定的。一個財務走了,把他所在的作為的口從 VLAN 30 移除掉,來了一個程式設計師,坐在財務的位置上,就把這個口設定為 VLAN 10,十分靈活。

有人會問交換機之間怎麼連線呢?將兩個交換機連線起來的口應該設定成什麼 VLAN 呢?對於支援 VLAN 的交換機,有一種口叫作Trunk 口。它可以轉發屬於任何 VLAN 的口。交換機之間可以通過這種口相互連線。

好了,解決這麼多交換機連線在一起的問題,辦公室的問題似乎搞定了。然而這只是一般複雜的場景,因為你能接觸到的網路,到目前為止,不管是你的桌上型電腦,還是筆記本所連線的網路,對於頻寬、高可用等都要求不高。就算出了問題,一會兒上不了網,也不會有什麼大事。

我們在宿舍、學校或者辦公室,經常會訪問一些網站,這些網站似乎永遠不會“掛掉”。那是因為這些網站都生活在一個叫做資料中心的地方,那裡的網路世界更加複雜。

小結 好了,這節就到這裡,我們這裡來總結一下:

當交換機的數目越來越多的時候,會遭遇環路問題,讓網路包迷路,這就需要使用 STP 協議,將有環路的圖變成沒有環路的樹,從而解決環路問題。 交換機數目多會面臨隔離問題,可以通過 VLAN 形成虛擬區域網,從而解決廣播問題和安全問題。

轉載於:https://my.oschina.net/OSrainn/blog/1941673