交換機的功能及工作過程


一.交換機概述:

    交換機是一種工作在二層的設備,但是隨着技術的不斷進步,現在已經出現了諸如三層交換機,多層交換機產品。在本篇中討論的是二層交換機的一些特性。

 

二.交換機的功能:

1.    地址學習

   有些地方也叫做基於源MAC地址學習,這個功能主要就是學習和存儲MAC地址。

2.    幀的轉發/過濾

    數據幀的轉發主要是交換機能夠根據MAC地址表來轉發數據,過濾則是對一些受限制的數據進行阻止或丟棄。

3.    環路避免

    由於交換機的某些特性會帶來一些問題,比如形成環路,因此爲了保證網絡上數據的正確傳輸以及網絡的穩定要採取一些措施來避免這些問題,主要是通過STP來實現,稍後會講到。

 

三.交換機的工作過程:

   交換機在運行的時候要維護幾張表,比如CAM表,vlan.data表。CAM表用來保存學到的MAC地址;VLAN.DATA文件用來保存VLAN相關的信息。

 

1.在交換機初始加電的時候它的MAC地址表是空的,當其他與其相連的設備(PC,交換機,路由器等)向它發送一個信息的時候,交換機就會根據數據的源MAC和目標MAC對數據進行處理,因爲發的是第一個包,所以這時候交換機會把源MAC地址和數據從本交換機進來的端口號做關聯,然後加上VLAN號保存起來形成一個CAM表條目。因爲交換機的MAC地址表現在是空的,所以它不知道數據的目的地在那裏,這時候交換機會發送ARP請求把數據從除了數據進來的端口之外的所有端口廣播,這個過程稱爲泛洪,當目標主機收到數據之後會返回一個迴應包,告訴交換機自己的MAC地址,這時候交換機又會根據目標主機返回的包把目標主機的MAC地址和進來的端口關聯起來加上VLAN號形成一個新的CAM表條目。這個過程就是地址學習。我們通過下面的圖來詳細瞭解一下。

wKiom1OtM3vAVy7DAACmjqN4wns099.jpg


現在PC1和PC2要進行通信(比如一個PING包),PC1會發出一個數據包格式大致如下:

源MAC

目標MAC

源IP

目標IP

1111

2222

192.168.1.1

192.168.1.2

  當數據從PC1出來到了SW1之後,交換機就會查看目標MAC,如果源MAC:1111不在CAM表中,這時候交換機會做一條記錄,他會把源MAC和端口對應關係加上VLAN號保存到CAM表中,如:

MAC地址

端口號

Vlan

1111.1111.1111

F0/1

1

   然後他會看目標MAC,因爲此時交換機也沒不知道2222怎麼走,所以它會向除了從F0/1數據進來的端口之外的F0/2,F0/3轉發ARP請求,大致就是詢問192.168.1.2的MAC地址是多少。發送之後PC2,PC3都會受到數據包,PC3把包拆開發現不是自己的IP地址,就會把數據丟棄,而PC2收到數據之後發現目標IP是自己,這時候PC2就回發送一個迴應。告訴交換機“我是192.168.1.2我的MAC地址是2222。交換機收到迴應又會在CAM表中添加一條對應關係。

MAC地址

端口號

Vlan

2222.2222.2222

F0/2

1

   這個過程之後SW1已經學習到倆個MAC地址了,如果PC1或者PC2要和PC3通信的時候會重複上述步驟,SW1就能學到PC3的MAC地址。

但是有一點要注意,就是如果PC1和PC2的位置改變,F0/1聯接PC2,F0/2聯接PC1,這個時候經過一次數據通信和地址學習的過程之後,端口F0/1對應的MAC地址就會變成2222.2222.2222。F0/2對應的MAC地址就會變成1111.1111.1111。這是因爲交換機總是以最後學到的MAC地址爲準的。

 

2.當交換機學習到直連的本網段內所有的MAC地址之後,如果再有數據包過來,交換機就會根據CAM表裏面的對應條目對數據進行處理,還是上面那個圖。PC1要和PC2通信,當數據包進過SW1的時候交換機首先看源和目標MAC地址,然後查看CAM表,因爲CAM表裏面已經有對應關係PC2的MAC地址2222對應端口F0/2所以直接把數據從F0/2發出去而不用再發到PC3。這就是交換機的數據轉發,如果發送方和接收方不在同一網段,或者在不同VLAN,或者在交換機上作了二層ACL,則數據將被過濾掉。

交換機的轉發有三種方式:

直接轉發

     存儲轉發

片段轉發

其中直接轉發不對數據進行校驗,直接把數據從相應端口發送出去。這樣容易造成很多無用的數據幀碎片(殘幀,壞幀,錯誤幀等)。

存儲轉發則是先存儲整個數據幀,然後對其進行校驗,校驗無誤後再轉發出去。雖然這樣做減少了錯誤幀的問題,但是對每個幀進行整體存儲校驗這樣會佔用很多系統資源。

片段轉發則綜合了直接轉發和存儲轉發的優點,它只檢查數據幀的前64個字節,校驗通過則進行轉發,這樣即保證了數據的正確性又能使數據得到比較快速的轉發。

當然對於應用環境的不同,上述三種轉發方式各有其特點。

 

3.由於交換機的地址學習和轉發功能,會帶來一些潛在的問題,如下圖所示,PC1要和PC2通信,我們來分析一下數據的流向:


wKiom1OtM37RSSU-AACi_scyDFM820.jpg

這裏會出現倆種情況:

一.當SW1的F0/2收到數據的時候,首先添加一條MAC地址對應關係,地址1111.1111.1111從F0/2學到,然後查看CAM表發現MAC地址2222.2222.2222不在他的CAM表裏,這時他會向除了F0/2之外的所有端口轉發,於是數據從F0/1轉發出去,這裏有會有兩種情況:

   a.PC2正確收到數據,返回一個數據包。

   b.SW2收到數據,首先添加一條MAC地址對應關係,地址1111.1111.1111從F1/1學到。然後查看CAM表,發現沒有對應的MAC地址則會從除F1/1之外的所有端口即F1/2轉發出去,又回到SW1然後就這樣一直在SW1和SW2之間傳遞。形成廣播風暴。

二.當SW2的F1/2收到數據的時候,第一步添加一條MAC地址條目,1111.1111.1111從F1/2學到,這時候由於上面一種情況1111.1111.1111是由F1/1學到,這時候會把CAM表裏面的對應關係改掉,然後發現MAC地址2222.2222.2222不在他的CAM表裏,SW2同樣會從F1/1將數據轉發出去,這時候也有兩種情況:

  a.PC2收到數據包,這時候由於之前已經收到一個數據包,此時再受到一個包,這樣就出現了重複幀的問題。

  b.SW1收到數據包,他會發現MAC地址1111.1111.1111是由F0/1學到的,同樣改寫自己的CAM表,這樣反反覆覆,CAM表會一直不停的改,造成MAC地址不穩定。

由上可知當存在多鏈路或者多設備在交換機之間形成環的時候會帶來三個問題,即廣播風暴、重複幀、MAC地址不穩定。這三個問題的出現是很危險的,因此我們要想辦法避免它,通過STP(生成樹協議)交換機就可以避免環路。

他的工作過程如下圖:

wKiom1OtM33Ta8KKAACk88YJf_k629.jpg

之所以會出現那三種情況是由於在交換機之間形成了一個邏輯的環,如果能打破這個環那麼上述三種情況就不會出現了。STP就是基於這個思想在邏輯上把某個端口阻塞掉,如上圖把SW2的F1/1端口阻塞掉,這樣在SW2上F1/2過來的數據就不會從F1/1轉發出去,想從F1/1進來的數據也會被擋在外面進不來。這裏介紹的是多鏈路的情況,如果是多設備的情況也是通過邏輯上阻塞掉某個端口來實現的,使得整個拓撲看上去像棵樹一樣,樹是沒有環路的。

 

這裏給大家簡單介紹了一些基於MAC地址的二層交換機的工作過程和原理,希望大家看了之後對二層交換機的工作機制有所瞭解,希望這篇文章能給大家有所收穫。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章