- 相關(guān)推薦
三層交換原理剖析
三層交換與路由原理方面的區別與聯(lián)系。其實(shí)三層交換機不僅同時(shí)與二層交換和路由有著(zhù)密切的聯(lián)系,同時(shí)與要依靠三層的ARP協(xié)議。下面小編具體剖析一下三層交換原理。
三層交換原理
二層交換機的二層數據交換一般都是使用ASIC(Application Specific Integrated Circuit ,專(zhuān)用集成電路)的硬件芯片中的CAM表來(lái)實(shí)現的,因為是硬件轉發(fā),所以轉發(fā)性能非常高。而三層交換機的三層轉發(fā)也是依靠ASIC芯片完成的(路由器的路由功能主要依靠CPU軟件進(jìn)行的),但其中除了二層交換用的CAM表外,還保存有專(zhuān)門(mén)用于三層轉發(fā)的三層硬件轉發(fā)表。
三層交換機的三層交換原理比較復雜,不同網(wǎng)絡(luò )環(huán)境下、不同廠(chǎng)家的三層交換機的三層交換流程都不完全相同。如圖7-55所示的僅一個(gè)直接連接在一臺三層交換機上的兩個(gè)不同網(wǎng)段主機三層交換的基本流程,各主要步驟解釋如下:
(1)源主機在發(fā)起通信之前,將自己的IP地址與目的主機的IP地址進(jìn)行比較,如果源主機判斷目的主機與自己位于不同網(wǎng)段時(shí),它需要通過(guò)網(wǎng)關(guān)來(lái)遞交報文的,所以它首先需要通過(guò)一個(gè)ARP請求報文獲取網(wǎng)關(guān)的MAC地址(在源主機不知道網(wǎng)關(guān)MAC地址的情形下),即源主機先發(fā)送ARP請求幀以獲取網(wǎng)關(guān)IP地址對應的MAC地址。
(2)網(wǎng)關(guān)在收到源主機發(fā)來(lái)的ARP請求報文后以一個(gè)ARP應答報文進(jìn)行回應,在應答報文中的“源MAC地址”就包含了網(wǎng)關(guān)的MAC地址。
(3)在得到網(wǎng)關(guān)的ARP應答后,源主機再用網(wǎng)關(guān)MAC地址作為報文的“目的MAC地址”,以源主機的IP地址作為報文的“源IP地址”,以目的主機的IP地址作為“目的IP地址”,先把發(fā)送給目的主機的數據發(fā)給網(wǎng)關(guān)。
(4)網(wǎng)關(guān)在收到源主機發(fā)送給目的主機的數據后,由于查看得知源主機和目的主機的IP地址不在同一網(wǎng)段,于是把數據報上傳到三層交換引擎(ASIC芯片),在里面查看有無(wú)目的主機的三層轉發(fā)表。
(5)如果在三層硬件轉發(fā)表中沒(méi)有找到目的主機的對應表項,則向CPU請求查看軟件路由表,如果有目的主機所在網(wǎng)段的路由表項,則還需要得到目的主機的MAC地址,因為數據包在鏈路層是要經(jīng)過(guò)幀封裝的。于是三層交換機CPU向目的主機所在網(wǎng)段發(fā)送一個(gè)ARP廣播請求包,以獲得目的主機MAC地址。
(6)交換機獲得目的主機MAC地址后,向ARP表中添加對應的表項,并轉發(fā)由源主機到達目的主機的靈氣包。同時(shí)三層交換機三層引擎會(huì )結合路由表生成目的主機的三層硬件轉發(fā)表。
以后到達目的主機的數據包就可以直接利用三層硬件轉發(fā)表中的轉發(fā)表項進(jìn)行數據交換,不用再查看CPU中的路由表了。
以上流程適用位于不同VLAN(網(wǎng)段)中的主機互訪(fǎng)時(shí)屬于這種情況,這時(shí)用于互連的交換機作三層交換轉發(fā)。這就是“一次路由,多次交換”的原理。
三層交換示例
在三層交換中,同一交換機上的不同網(wǎng)段主機通信和不同交換機上的不同網(wǎng)段主機通信的基本原理是一樣的,只是具體流程有所區別。本節僅以比較簡(jiǎn)單的“同一交換機上的不同網(wǎng)段主機通信”這種情形來(lái)解釋上節介紹的三層交換原理。
如下圖所示,通信的源、目的主機連接在同一臺三層交換機上,但它們位于不同VLAN(也位于不同網(wǎng)段)。對于三層交換機來(lái)說(shuō),這兩臺主機都位于它的直連網(wǎng)段內,它們的IP對應的路由都是直連路由。圖中已標明了兩臺主機的MAC地址、IP地址、網(wǎng)關(guān)IP地址(也就是對應VLAN接口IP地址),以及三層交換機的MAC地址。
【說(shuō)明】本示例中雖然劃分了VLAN,但是在下面的數據轉發(fā)流程中我們并沒(méi)有提到VLAN標記,那是因為在本示例中,通信雙方主機都連接到同一個(gè)三層交換機上,端口類(lèi)型均為Access類(lèi)型,發(fā)送和接收的數據幀都是無(wú)VLAN標記的。在下節介紹的示例中,在數據的轉發(fā)過(guò)程中將會(huì )涉及到VLAN標記問(wèn)題。
同一交換機上不同網(wǎng)段主機間的三層交換示例
當PC A要第一次向PC B發(fā)向數據包時(shí),數據包的傳輸流程如下:(假設三層交換機上當前還未建立任何硬件轉發(fā)表項)
(1)PC A首先檢查出目的IP地址2.1.1.2(PC B)與自己不在同一網(wǎng)段,覺(jué)得就這樣直接發(fā)送肯定不行,于是把要發(fā)送的數據包先緩存起來(lái)。它知道這個(gè)數據包必須經(jīng)過(guò)網(wǎng)關(guān)來(lái)轉發(fā),所以先查看一下自己是已經(jīng)知道網(wǎng)關(guān)的MAC地址(也就是在PC A主機的ARP表中查看是否有與網(wǎng)關(guān)IP地址對應的MAC地址表項)。如果有,則直接把要發(fā)送給PC B的數據包在封裝成數據幀時(shí),把“目的MAC地址”字段的值設為網(wǎng)關(guān)的MAC地址(也就是三層交換機的MAC地址MAC S,交換機上各端口、各VLAN是共享一個(gè)或多個(gè)MAC地址的)。
(2)如果PC A在自己的ARP表中沒(méi)有找到網(wǎng)關(guān)MAC地址,則先向網(wǎng)關(guān)發(fā)出(其實(shí)是會(huì )向本VLAN內所有節點(diǎn)發(fā)出)一個(gè)ARP廣播請求報文,以獲取網(wǎng)關(guān)IP地址1.1.1.1所對應的MAC地址。此ARP請求報文的“源MAC地址”字段是PC A的MAC地址“MAC A”,“目的MAC地址”因為未知,以全0格式填充;“源IP地址”和“目的IP地址”字段分別填上PC A的IP地址(1.1.1.2)和網(wǎng)關(guān)的IP地址(1.1.1.1)。
ARP請求報文向下傳輸到了以太網(wǎng)數據鏈路層后被再次封裝成以太網(wǎng)幀,以太網(wǎng)幀頭中的“源MAC地址”字段值仍為PC A的MAC地址“MAC A”,“目的MAC地址”字段值為廣播MAC地址FF-FF-FF-FF-FF-FF以,“幀類(lèi)型”字段填上ARP的協(xié)議號0x0806。有關(guān)ARP報文和ARP幀格式參見(jiàn)本章7.3.10節。
(3)三層交換機在收到PC A發(fā)來(lái)的ARP請求報文后,檢查請求報文發(fā)現被請求IP地址(也就是“目的IP地址”)是自己的三層接口IP地址,于是向PCA A發(fā)回一個(gè)ARP應答報文,并將對應的三層接口MAC(MAC S)填充在應答報文中的“目的MAC地址“字段其中。同時(shí)通過(guò)對PC A發(fā)送的ARP請求報文分析,把PC A的IP地址與MAC地址對應關(guān)系(1.1.1.2<==>MAC A)記錄到自己的ARP表中去,然后把PC A的IP地址(作為“目的IP地址”)、MAC地址(作為“下一跳MAC地址”),以及與交換機直接相連的端口號等信息下發(fā)到三層交換機ASIC芯片中的三層硬件轉發(fā)表。此時(shí)在三層硬件轉發(fā)表中就有了第一個(gè)轉發(fā)表項,即PC A的轉發(fā)表項。
【說(shuō)明】在三層交換機中,最關(guān)鍵的就是它有一個(gè)專(zhuān)門(mén)用于三層轉發(fā)的“三層硬件轉發(fā)表”,它和“ARP表”之間有聯(lián)系,但也有區別。ARP表中只是IP地址和MAC地址的映射關(guān)系,不包括轉發(fā)出口,也不包括對應的VLAN ID,而三層硬件轉發(fā)表中則包括了全部這些,形成一個(gè):目的IP地址、VLAN ID、端口和下一跳MAC地址的關(guān)系表項。因為在進(jìn)行三層轉發(fā)時(shí),改變的是幀封裝后的源和目的MAC地址這兩個(gè)字段,原來(lái)輸入IP包中的“目的MAC地址”作為轉發(fā)的“下一跳MAC地址”,原來(lái)的“源MAC地址”改為三層交換機自身的MAC地址,源和目的IP地址都不變(因為這是封裝在幀的“數據”部分)。另外,三層轉發(fā)表是存儲在A(yíng)SCI硬件芯片上的,直接由ASIC芯片調用,而ARP表是存儲在內在中,由CPU軟件調用。但三層硬件轉發(fā)表項還是由CPU提供的。
(4)PC A在收到網(wǎng)關(guān)的ARP應答報文后,把要發(fā)送給PC B的數據包經(jīng)過(guò)幀封裝后的 “目的MAC地址”修改為網(wǎng)關(guān)MAC地址(MAC S1),其它不變,先把數據包發(fā)給網(wǎng)關(guān)(三層交換機)。
(5)三層交換機在收到這個(gè)數據包后,因為“目的MAC地址”為交換機自己的MAC地址,而且“目的IP地址”和“源IP地址”不在同一網(wǎng)段,所以會(huì )直接提交到負責三層交換的ASIC芯片,根據包中的“目的IP地址”(PC B的IP地址2.1.1.2)在三層硬件轉發(fā)表中查看有無(wú)對應表項,因為是第一次通信,所以結果是查找失敗,于是將數據包再轉送到CPU去進(jìn)行軟件路由處理。
(6)CPU同樣會(huì )根據包中的“目的IP地址”去查找其軟件路由表,發(fā)現匹配了一個(gè)直連網(wǎng)段(PC B對應的網(wǎng)段),于是繼續查在A(yíng)RP表中查找對應的MAC地址項。同樣是由于是第一次查找,所以仍然查找失敗。如果在A(yíng)RP表中找到了對應的MAC地址,則數據可以直接由軟件路由表轉發(fā)了。
(7)下面仍以在A(yíng)RP表中也沒(méi)找到PC B對應的MAC地址為例進(jìn)行介紹。此時(shí)三層交換機CPU會(huì )在PC B所在網(wǎng)段的AN 3中所有端口發(fā)送一個(gè)ARP廣播請求報文,查找“目的IP地址”為2.1.1.2所對應MAC地址。報文經(jīng)過(guò)幀封裝后的“源MAC地址”是三層交換機的MAC地址(MAC S),“目的MAC地址”全為0,“源IP地址”是VLAN 3網(wǎng)段的網(wǎng)關(guān)IP地址(2.1.1.1),“目的IP地址”是PC B的IP地址(2.1.1.2)。
(8)PC B在收到三層交換機CPU發(fā)送的ARP請求報文后,檢查發(fā)現被請求的IP地址是自己的IP地址,于是發(fā)送一個(gè)ARP應答報文,并將自己的MAC地址(MAC B)包含在其中。同時(shí),將三層交換機上VLAN 3網(wǎng)段的網(wǎng)關(guān)IP地址與MAC地址的對應關(guān)系(2.1.1.1<==>MAC S)記錄到自己的ARP表中去。
(9)三層交換機CPU在收到PC B的ARP應答報文后,將其IP地址和MAC地址對應關(guān)系(2.1.1.2<==>MAC B)記錄到自己的ARP表中去,把PC B的IP地址、MAC地址、進(jìn)入交換機的端口號等信息下發(fā)到三層交換機的三層轉發(fā)中。此時(shí)轉發(fā)表中就有到達PC A和PC B這兩條對應的表項了。
(10)三層交換機CPU根據獲得的PC B的MAC地址和端口信息,以及軟件路由表信息,把由PC A發(fā)來(lái)的IP數據包轉發(fā)給PC B,這樣就完成了PC A到PC B的第一次單向通信。
由于芯片內部的三層引擎中已經(jīng)保存了從PC A到達PC B的完整轉發(fā)路徑信息,所以以后PC A與PC B之間進(jìn)行通信,或其它網(wǎng)段的站點(diǎn)想要與PC A或PC B進(jìn)行通信時(shí),三層交換機的ASIC芯片就會(huì )直接把包從對應的三層硬件轉發(fā)表項中指定的端口轉發(fā)出去,而不必再把包交給CPU進(jìn)行路由處理。這就是所謂的“一次路由(指通過(guò)CPU路由表查到了對應的直連網(wǎng)段),多次交換”的原理,大大提高了轉發(fā)速度。
【三層交換原理剖析】相關(guān)文章:
詳析三層交換原理07-28
三層交換機的轉發(fā)原理及配置10-03
H3C三層交換機配置VLAN代碼剖析09-12
三層交換機詳細測試08-19
第三層交換技術(shù)介紹07-31
思科三層交換機配置08-21
三層交換機配置步驟05-23
華為三層交換機配置教程09-12
華為三層交換機配置案例07-12
三層交換機配置及命令解釋09-04