-
1 # Geek視界
-
2 # IT老菜鳥
不同交換機轉發晶片的差異
ASIC又叫專用積體電路,是目前交換機使用最多的核心轉發晶片。這個晶片的特點簡單的說就是效能強勁,但是邏輯簡單。效能簡單的意思就是轉發效能非常強,而邏輯簡單的意思是這個晶片內部的流程都是定好的,不能隨便編輯和新增功能。
NP又叫網路處理器,本來一般是用在路由器的晶片,特點是可程式設計,可以自定義很多複雜靈活的流程,但是效能可能比ASIC簡單一些。原因很明顯,ASIC邏輯簡單,沒有那麼多花花腸子可以修改,所以效能最好,NP是犧牲了一部分效能豐富了功能。目前業界的趨勢也有ASIC和NP大一統的趨勢,如Jericho的ASIC和華為的SoC形式的NP,都是這種型別
目前,華為的交換機很多是基於NP的,國內交換機如果使用的是盛科或者博通的,那麼基本是ASIC的,還有很少量的小交換機的確是基於CPU的。
瞭解交換機的晶片轉發流程中的一些概念不管用什麼樣子的晶片,交換機中晶片的轉發流程是差不多的。我們平時把報文在交換機中的轉發分為控制面和轉發面。轉發面的意思是交換機收到報文後需要從出埠送出丟給下一個轉發裝置處理,控制面的意思是,交換機收到報文後自己處理,例如一些協議報文。
那麼交換機收到一個報文做什麼事情呢?這裡又涉及TCP/IP的結構了。簡單的說,報文從減緩及的入口進入時,是從物理層處理到應用層的一個解封裝過程,而從出口轉發時,是一個反向的過程,從應用層到物理層的一個封裝過程(如下圖)。二層交換機只有物理層、資料鏈路層的處理,三層交換機報文有物理層、資料鏈路層、網路層的處理
報文在交換機晶片的處理流程介紹當一個報文從交換機的入口進入時,交換機會先處理物理層的內容,例如幀校驗等。處理完後開始解包,根據一定的格式獲取資料鏈路層、網路層、甚至傳輸層的資訊。例如普通二層交換機獲取原MAC、目的MAC、VLAN資訊,如果是三、四、七層交換機會獲取原目的IP、原目的埠、協議等資訊。
在解包的同時,還會儲存這個報文的一些特徵資料,例如,這個報文是從交換機哪個埠進來的
解包後,報文會暫時存在記憶體,根據解包資訊進行後續的處理。後續的處理依據是交換機內一個個“表項”。什麼是表項?表項就是你配置或者自動生成的資訊,這些資訊在處理晶片裡對映為一個個邏輯表項,用於指示下一步的處理。
例如你配置了交換機某個埠是一個二層轉發埠,那麼交換機內這個埠就有一個表項,指示這個是一個普通的二層口。如果有VLAN配置,還會有表項,說明這個二層口配置了什麼型別的VLAN,以及VLAN的型別等等,不同的晶片可能不太一樣,大體的流程是一樣的。
然後根據表項就開始處理。例如
先看看你的這個報文是從哪個介面進來的,一查這個埠的表是一個二層介面,那麼就開始二層處理流程,依據的是配置時生成的埠表項。
然後進行下一步,檢查發現這個埠是個VLAN介面,然後就開始VLAN的處理的流程,報文的VLAN自然是從剛才的解包過程中獲得的,根據解包獲得的VLAN和埠的VLAN規則進行處理。符合規則的進入下一流程,不符合規則的丟棄。
接下來就是轉發的處理。如果是二層轉發,那麼就是查MAC表。前面講過了各種“表項”可以是配置生成的,可以是動態生成的,MAC轉發表就是動態學習生成的。當來一個報文,交換機在解包獲取了報文的源MAC,就會生成MAC、埠和VLAN的對應關係。查MAC表就是依據目的MAC查詢這個對應關係。例如如果發現目的MAC是從某個埠學習來的,那麼報文就會從那個埠丟出去。
如果是三層轉發,就不會查MAC表,就會繼續查路由表。路由器表就是透過動態路由協議或者靜態路由配置,獲取哪個IP地址從哪個介面來的,然後依據目的IP查路由表,就可以找到正確的出介面。不過要注意的是,如果目的IP地址是三層交換機自己的,表明這個是發給自己的報文,那麼IP報文可能是協議報文,會送到控制面,由CPU來處理
下行處理是一個反向過程,先處理VLAN相關的內容,例如重新封裝,然後再處理資料鏈路層相關的內容。不過一般二層交換機不需要處理,三層交換機需要根據ARP表的內容,更改源目的MAC為自己的埠的MAC和互連網路裝置的介面MAC,最後再進行物理層的處理,處理完後從記憶體獲取處理完的報文發出去。
當然,有一些處理是和TCP/IP沒有關係的。例如配置了QOS限速。那麼在報文送到下行,查詢下行的介面表時,介面表中會有限速相關的資訊,這個時候還需要先完成限速處理,才能繼續進行物理層處理轉發出去。如果超帶寬了,報文就直接丟了,不會繼續轉發
這是一個大概的處理過程。當然越複雜的交換機的處理過程就更復雜,這些複雜的功能都體現為一個個連續的“表項“,固化在交換機的上下行流程裡,可能不同的晶片有略微的差異,但是整體過程是差不多的。
回覆列表
交換機是常用的組網裝置,一個報文進入交換機之後,如何順利到達目的地址呢?下文說一說,報文在交換機中的“旅程”。
交換機的二層轉發交換機的二層轉發,不涉及IP地址,透過MAC地址進行轉發資料,如何能夠找到通訊對方的MAC地址呢,這裡涉及到一個很重要的協議ARP協議。
如上圖所示,PC-A與PC-B通訊,但是A只知道B的IP地址是10.1.1.2,但是不知道其MAC地址,這時就需要透過ARP協議詢問“10.1.1.2的MAC地址是多少啊,廣播告知”,這時B收到廣播訊息後,就會發出ARP響應,將自己的MAC地址告訴A。
MAC地址學習
A知道了B的MAC地址,接下來就要傳送資料了。此時,需要用到交換機的“MAC地址對映表”,就是交換機埠和MAC地址的對映表,如下圖所示▼。
交換機剛啟動時,MAC地址表時空的,當A給B傳送資料時,交換機讀取到源MAC地址,記錄一條“MAC1:+Port1”,A給B傳送資料時,查詢交換機的MAC地址表:
如果交換機中沒有MAC3對應的對映關係,A就需要廣播這個資料幀,“洪泛”到所有的埠,這樣B就可以收到這個資料幀了。
透過上述不斷的學習,交換機就可以知道所有埠連線的裝置的MAC地址了。
VLAN轉發由於交換機對所有的廣播幀、未知單播幀進行廣播泛洪,區域網中存在很多廣播幀,消耗了大量的鏈路資源。為了減少廣播幀,VLAN就誕生了,VLAN講一個區域網邏輯劃分成多個廣播域,同一個VLAN中的主機是可以相互通訊的。
同一VLAN的資料轉發與二層轉發一樣,比如介面1屬於VLAN 10,那麼A主機發送的廣播資料,只有B、D、E可以收到,也就是同一個VLAN的廣播幀只有VLAN成員才能收到,不會傳輸到其他VLAN中。