二層交換機和三層交換機

二層交換機
二層交換機就是傳統意義上的交換,使用mac地址做爲轉發依據,創建起mac到端口的映射(mac表,相似於(00:08:06:09:ab:01 port1))。
二層交換技術是發展比較成熟,二層交換機屬數據鏈路層設備,能夠識別數據包中的MAC地址信息,根據MAC地址進行轉發,並將這些MAC地址與對應的端口記錄在本身內部的一個地址表(mac表)中。具體的工做流程以下:
 
(1) 當交換機從某個端口收到一個數據幀,它先讀取幀頭中的源MAC地址,這樣它就知道源MAC地址的主機是連在哪一個端口上的;(學習的是源mac)
 
(2) 再去讀取幀頭中的目的MAC地址,並在mac表中查找相應的端口;
 
(3) 若是mac表中有與這目的MAC地址對應的端口,把數據幀直接複製到這端口上;
 
(4) 若是mac表中找不到相應的端口,則把數據幀廣播到全部端口上,當目的主機對源主機進行迴應時,交換機又能夠學習一目的MAC地址與哪一個端口對應,在下次傳送數據時就再也不須要對全部端口進行廣播了。
 
不斷的循環這個過程,對於全網的MAC地址信息均可以學習到,二層交換機就是這樣創建和維護它本身的地址表。
 
三層交換機
二層交換機的二層數據交換通常都是使用ASIC(Application Specific Integrated Circuit ,專用集成電路)的硬件芯片中的CAM表來實現的,由於是硬件轉發,因此轉發性能很是高。而三層交換機的三層轉發也是依靠ASIC芯片完成的(路由器的路由功能主要依靠CPU軟件進行的),但其中除了二層交換用的CAM表外,還保存有專門用於三層轉發的三層硬件轉發表
三層交換示例
      在三層交換中,同一交換機上的不一樣網段主機通訊和不一樣交換機上的不一樣網段主機通訊的基本原理是同樣的,只是具體流程有所區別。本節僅以比較簡單的「同一交換機上的不一樣網段主機通訊」這種情形來解釋上節介紹的三層交換原理。
如圖所示,通訊的源、目的主機鏈接在同一臺三層交換機上,但它們位於不一樣VLAN(也位於不一樣網段)。對於三層交換機來講,這兩臺主機都位於它的直連網段內,它們的IP對應的路由都是直連路由。圖中已標明瞭兩臺主機的MAC地址、IP地址、網關IP地址(也就是對應VLAN接口IP地址),以及三層交換機的MAC地址。
【說明】本示例中雖然劃分了VLAN,可是在下面的數據轉發流程中咱們並無提到VLAN標記,那是由於在本示例中,通訊雙方主機都鏈接到同一個三層交換機上,端口類型均爲Access類型,發送和接收的數據幀都是無VLAN標記的。在下節介紹的示例中,在數據的轉發過程當中將會涉及到VLAN標記問題。
 
當 PC A 要第一次向 PC B 發數據包時,數據包的傳輸流程以下:(假設三層交換機上當前還未創建任何硬件轉發表項)
(1)PC A首先檢查出目的IP地址2.1.1.2(PC B)與本身不在同一網段,以爲就這樣直接發送確定不行,因而把要發送的數據包先緩存起來。它知道這個數據包必須通過網關來轉發,因此先查看一下本身是已經知道網關的MAC地址(也就是在PC A主機的ARP表中查看是否有與網關IP地址對應的MAC地址表項)。若是有,則直接把要發送給PC B的數據包在封裝成數據幀時,把「目的MAC地址」字段的值設爲網關的MAC地址(也就是三層交換機的MAC地址MAC S,交換機上各端口、各VLAN是共享一個或多個MAC地址的)。
(2)若是PC A在本身的ARP表中沒有找到網關MAC地址,則先向網關發出(實際上是會向本VLAN內全部節點發出)一個ARP廣播請求報文,以獲取網關IP地址1.1.1.1所對應的MAC地址。此ARP請求報文的「源MAC地址」字段是PC A的MAC地址「MAC A」,「目的MAC地址」由於未知,以全0格式填充;「源IP地址」和「目的IP地址」字段分別填上PC A的IP地址(1.1.1.2)和網關的IP地址(1.1.1.1)。
ARP請求報文向下傳輸到了以太網數據鏈路層後被再次封裝成以太網幀,以太網幀頭中的「源MAC地址」字段值仍爲PC A的MAC地址「MAC A」,「目的MAC地址」字段值爲廣播MAC地址FF-FF-FF-FF-FF-FF,「幀類型」字段填上ARP的協議號0x0806。
(3)三層交換機在收到PC A發來的ARP請求報文後,檢查請求報文發現被請求IP地址(也就是「目的IP地址」)是本身的三層接口IP地址,因而向PCA A發回一個ARP應答報文,並將對應的三層接口MAC(MAC S)填充在應答報文中的「目的MAC地址「字段其中。同時經過對PC A發送的ARP請求報文分析,把PC A的IP地址與MAC地址對應關係(1.1.1.2<==>MAC A)記錄到本身的ARP表中去,而後把PC A的IP地址(做爲「目的IP地址」)、MAC地址(做爲「下一跳MAC地址」),以及與交換機直接相連的端口號等信息下發到三層交換機ASIC芯片中的三層硬件轉發表。此時在三層硬件轉發表中就有了第一個轉發表項,即PC A的轉發表項。
【說明】在三層交換機中,最關鍵的就是它有一個專門用於三層轉發的「三層硬件轉發表」,它和「ARP表」之間有聯繫,但也有區別。ARP表中只是IP地址和MAC地址的映射關係,不包括轉發出口,也不包括對應的VLAN ID,而三層硬件轉發表中則包括了所有這些,造成一個:目的IP地址、VLAN ID、端口和下一跳MAC地址的關係表項。由於在進行三層轉發時,改變的是幀封裝後的源和目的MAC地址這兩個字段,原來輸入IP包中的「目的MAC地址」做爲轉發的「下一跳MAC地址」,原來的「源MAC地址」改成三層交換機自身的MAC地址,源和目的IP地址都不變(由於這是封裝在幀的「數據」部分)。另外,三層轉發表是存儲在ASCI硬件芯片上的,直接由ASIC芯片調用,而ARP表是存儲在內存中,由CPU軟件調用。但三層硬件轉發表項仍是由CPU提供的。
(4)PC A在收到網關的ARP應答報文後,把要發送給PC B的數據包通過幀封裝後的 「目的MAC地址」修改成網關MAC地址(MAC S1),其它不變,先把數據包發給網關(三層交換機)。
(5)三層交換機在收到這個數據包後,由於「目的MAC地址」爲交換機本身的MAC地址,並且「目的IP地址」和「源IP地址」不在同一網段,因此會直接提交到負責三層交換的ASIC芯片,根據包中的「目的IP地址」(PC B的IP地址2.1.1.2)在三層硬件轉發表中查看有無對應表項,由於是第一次通訊,因此結果是查找失敗,因而將數據包再轉送到CPU去進行軟件路由處理。
(6)CPU一樣會根據包中的「目的IP地址」去查找其軟件路由表,發現匹配了一個直連網段(PC B對應的網段),因而繼續查在ARP表中查找對應的MAC地址項。一樣是因爲是第一次查找,因此仍然查找失敗。若是在ARP表中找到了對應的MAC地址,則數據能夠直接由軟件路由錶轉發了。
(7)下面仍以在ARP表中也沒找到PC B對應的MAC地址爲例進行介紹。此時三層交換機CPU會在PC B所在網段的AN 3中全部端口發送一個ARP廣播請求報文,查找「目的IP地址」爲2.1.1.2所對應MAC地址。報文通過幀封裝後的「源MAC地址」是三層交換機的MAC地址(MAC S),「目的MAC地址」全爲0,「源IP地址」是VLAN 3網段的網關IP地址(2.1.1.1),「目的IP地址」是PC B的IP地址(2.1.1.2)。
(8)PC B在收到三層交換機CPU發送的ARP請求報文後,檢查發現被請求的IP地址是本身的IP地址,因而發送一個ARP應答報文,並將本身的MAC地址(MAC B)包含在其中。同時,將三層交換機上VLAN 3網段的網關IP地址與MAC地址的對應關係(2.1.1.1<==>MAC S)記錄到本身的ARP表中去。
(9)三層交換機CPU在收到PC B的ARP應答報文後,將其IP地址和MAC地址對應關係(2.1.1.2<==>MAC B)記錄到本身的ARP表中去,把PC B的IP地址、MAC地址、進入交換機的端口號等信息下發到三層交換機的三層轉發中。此時轉發表中就有到達PC A和PC B這兩條對應的表項了。
(10)三層交換機CPU根據得到的PC B的MAC地址和端口信息,以及軟件路由表信息,把由PC A發來的IP數據包轉發給PC B,這樣就完成了PC A到PC B的第一次單向通訊。
      因爲芯片內部的三層引擎中已經保存了從PC A到達PC B的完整轉發路徑信息,因此之後PC A與PC B之間進行通訊,或其它網段的站點想要與PC A或PC B進行通訊時,三層交換機的ASIC芯片就會直接把包從對應的三層硬件轉發表項中指定的端口轉發出去,而沒必要再把包交給CPU進行路由處理。這就是所謂的「一次路由(指經過CPU路由表查到了對應的直連網段),屢次交換」的原理,大大提升了轉發速度。

以上整理來源於網絡。緩存

相關文章
相關標籤/搜索