溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

三層交換原理及示例詳解

發(fā)布時(shí)間:2020-05-26 04:12:08 來源:網(wǎng)絡(luò) 閱讀:6501 作者:茶鄉(xiāng)浪子 欄目:系統(tǒng)運(yùn)維

7.7.5  三層交換原理

  二層交換機(jī)的二層數(shù)據(jù)交換一般都是使用ASICApplication Specific Integrated Circuit ,專用集成電路)的硬件芯片中的CAM表來實(shí)現(xiàn)的,因?yàn)槭怯布D(zhuǎn)發(fā),所以轉(zhuǎn)發(fā)性能非常高。而三層交換機(jī)的三層轉(zhuǎn)發(fā)也是依靠ASIC芯片完成的(路由器的路由功能主要依靠CPU軟件進(jìn)行的),但其中除了二層交換用的CAM表外,還保存有專門用于三層轉(zhuǎn)發(fā)的三層硬件轉(zhuǎn)發(fā)表。

三層交換機(jī)的三層交換原理比較復(fù)雜,不同網(wǎng)絡(luò)環(huán)境下、不同廠家的三層交換機(jī)的三層交換流程都不完全相同。如圖7-55所示的僅一個(gè)直接連接在一臺(tái)三層交換機(jī)上的兩個(gè)不同網(wǎng)段主機(jī)三層交換的基本流程,各主要步驟解釋如下:

   (1 源主機(jī)在發(fā)起通信之前,將自己的IP地址與目的主機(jī)的IP地址進(jìn)行比較,如果源主機(jī)判斷目的主機(jī)與自己位于不同網(wǎng)段時(shí),它需要通過網(wǎng)關(guān)來遞交報(bào)文的,所以它首先需要通過一個(gè)ARP請(qǐng)求報(bào)文獲取網(wǎng)關(guān)的MAC地址(在源主機(jī)不知道網(wǎng)關(guān)MAC地址的情形下),即源主機(jī)先發(fā)送ARP請(qǐng)求幀以獲取網(wǎng)關(guān)IP地址對(duì)應(yīng)的MAC地址。

  (2)網(wǎng)關(guān)在收到源主機(jī)發(fā)來的ARP請(qǐng)求報(bào)文后以一個(gè)ARP應(yīng)答報(bào)文進(jìn)行回應(yīng),在應(yīng)答報(bào)文中的“源MAC地址”就包含了網(wǎng)關(guān)的MAC地址。

  (3)在得到網(wǎng)關(guān)的ARP應(yīng)答后,源主機(jī)再用網(wǎng)關(guān)MAC地址作為報(bào)文的“目的MAC地址”,以源主機(jī)的IP地址作為報(bào)文的“源IP地址”,以目的主機(jī)的IP地址作為“目的IP地址”,先把發(fā)送給目的主機(jī)的數(shù)據(jù)發(fā)給網(wǎng)關(guān)。

三層交換原理及示例詳解

 

 

 

圖7-55  三層交換基本流程

   (4)網(wǎng)關(guān)在收到源主機(jī)發(fā)送給目的主機(jī)的數(shù)據(jù)后,由于查看得知源主機(jī)和目的主機(jī)的IP地址不在同一網(wǎng)段,于是把數(shù)據(jù)報(bào)上傳到三層交換引擎(ASIC芯片),在里面查看有無目的主機(jī)的三層轉(zhuǎn)發(fā)表。

   (5)如果在三層硬件轉(zhuǎn)發(fā)表中沒有找到目的主機(jī)的對(duì)應(yīng)表項(xiàng),則向CPU請(qǐng)求查看軟件路由表,如果有目的主機(jī)所在網(wǎng)段的路由表項(xiàng),則還需要得到目的主機(jī)的MAC地址,因?yàn)閿?shù)據(jù)包在鏈路層是要經(jīng)過幀封裝的。于是三層交換機(jī)CPU向目的主機(jī)所在網(wǎng)段發(fā)送一個(gè)ARP廣播請(qǐng)求包,以獲得目的主機(jī)MAC地址。

   (6)交換機(jī)獲得目的主機(jī)MAC地址后,向ARP表中添加對(duì)應(yīng)的表項(xiàng),并轉(zhuǎn)發(fā)由源主機(jī)到達(dá)目的主機(jī)的靈氣包。同時(shí)三層交換機(jī)三層引擎會(huì)結(jié)合路由表生成目的主機(jī)的三層硬件轉(zhuǎn)發(fā)表。

   以后到達(dá)目的主機(jī)的數(shù)據(jù)包就可以直接利用三層硬件轉(zhuǎn)發(fā)表中的轉(zhuǎn)發(fā)表項(xiàng)進(jìn)行數(shù)據(jù)交換,不用再查看CPU中的路由表了。
   
以上流程適用位于不同VLAN(網(wǎng)段)中的主機(jī)互訪時(shí)屬于這種情況,這時(shí)用于互連的交換機(jī)作三層交換轉(zhuǎn)發(fā)。這就是“一次路由,多次交換”的原理。

 

7.7.6 三層交換示例

   在三層交換中,同一交換機(jī)上的不同網(wǎng)段主機(jī)通信和不同交換機(jī)上的不同網(wǎng)段主機(jī)通信的基本原理是一樣的,只是具體流程有所區(qū)別。本節(jié)僅以比較簡(jiǎn)單的“同一交換機(jī)上的不同網(wǎng)段主機(jī)通信”這種情形來解釋上節(jié)介紹的三層交換原理。

如圖7-56所示,通信的源、目的主機(jī)連接在同一臺(tái)三層交換機(jī)上,但它們位于不同VLAN(也位于不同網(wǎng)段)。對(duì)于三層交換機(jī)來說,這兩臺(tái)主機(jī)都位于它的直連網(wǎng)段內(nèi),它們的IP對(duì)應(yīng)的路由都是直連路由。圖中已標(biāo)明了兩臺(tái)主機(jī)的MAC地址、IP地址、網(wǎng)關(guān)IP地址(也就是對(duì)應(yīng)VLAN接口IP地址),以及三層交換機(jī)的MAC地址。

   【說明】本示例中雖然劃分了VLAN,但是在下面的數(shù)據(jù)轉(zhuǎn)發(fā)流程中我們并沒有提到VLAN標(biāo)記,那是因?yàn)樵诒臼纠校ㄐ烹p方主機(jī)都連接到同一個(gè)三層交換機(jī)上,端口類型均為Access類型,發(fā)送和接收的數(shù)據(jù)幀都是無VLAN標(biāo)記的。在下節(jié)介紹的示例中,在數(shù)據(jù)的轉(zhuǎn)發(fā)過程中將會(huì)涉及到VLAN標(biāo)記問題。

三層交換原理及示例詳解

 

 

 

圖7-56  同一交換機(jī)上不同網(wǎng)段主機(jī)間的三層交換示例

   當(dāng) PC A 要第一次 PC B 發(fā)向數(shù)據(jù)包時(shí),數(shù)據(jù)包的傳輸流程如下:(假設(shè)三層交換機(jī)上當(dāng)前還未建立任何硬件轉(zhuǎn)發(fā)表項(xiàng))

   (1)PC A首先檢查出目的IP地址2.1.1.2(PC B)與自己不在同一網(wǎng)段,覺得就這樣直接發(fā)送肯定不行,于是把要發(fā)送的數(shù)據(jù)包先緩存起來。它知道這個(gè)數(shù)據(jù)包必須經(jīng)過網(wǎng)關(guān)來轉(zhuǎn)發(fā),所以先查看一下自己是已經(jīng)知道網(wǎng)關(guān)的MAC地址(也就是在PC A主機(jī)的ARP表中查看是否有與網(wǎng)關(guān)IP地址對(duì)應(yīng)的MAC地址表項(xiàng))。如果有,則直接把要發(fā)送給PC B的數(shù)據(jù)包在封裝成數(shù)據(jù)幀時(shí),把“目的MAC地址”字段的值設(shè)為網(wǎng)關(guān)的MAC地址(也就是三層交換機(jī)的MAC地址MAC S,交換機(jī)上各端口、各VLAN是共享一個(gè)或多個(gè)MAC地址的)。

   (2)如果PC A在自己的ARP表中沒有找到網(wǎng)關(guān)MAC地址,則先向網(wǎng)關(guān)發(fā)出(其實(shí)是會(huì)向本VLAN內(nèi)所有節(jié)點(diǎn)發(fā)出)一個(gè)ARP廣播請(qǐng)求報(bào)文,以獲取網(wǎng)關(guān)IP地址1.1.1.1所對(duì)應(yīng)的MAC地址。此ARP請(qǐng)求報(bào)文的“源MAC地址”字段是PC A的MAC地址“MAC A”,“目的MAC地址”因?yàn)槲粗匀?格式填充;“源IP地址”和“目的IP地址”字段分別填上PC A的IP地址(1.1.1.2)和網(wǎng)關(guān)的IP地址(1.1.1.1)。

    ARP請(qǐng)求報(bào)文向下傳輸?shù)搅艘蕴W(wǎng)數(shù)據(jù)鏈路層后被再次封裝成以太網(wǎng)幀,以太網(wǎng)幀頭中的“源MAC地址”字段值仍為PC A的MAC地址“MAC A”,“目的MAC地址”字段值為廣播MAC地址FF-FF-FF-FF-FF-FF以,“幀類型”字段填上ARP的協(xié)議號(hào)0x0806。有關(guān)ARP報(bào)文和ARP幀格式參見本章7.3.10節(jié)。

   (3)三層交換機(jī)在收到PC A發(fā)來的ARP請(qǐng)求報(bào)文后,檢查請(qǐng)求報(bào)文發(fā)現(xiàn)被請(qǐng)求IP地址(也就是“目的IP地址”)是自己的三層接口IP地址,于是向PCA A發(fā)回一個(gè)ARP應(yīng)答報(bào)文,并將對(duì)應(yīng)的三層接口MAC(MAC S)填充在應(yīng)答報(bào)文中的“目的MAC地址“字段其中。同時(shí)通過對(duì)PC A發(fā)送的ARP請(qǐng)求報(bào)文分析,把PC A的IP地址與MAC地址對(duì)應(yīng)關(guān)系(1.1.1.2<==>MAC A)記錄到自己的ARP表中去,然后把PC AIP地址(作為“目的IP地址”)、MAC地址(作為“下一跳MAC地址”),以及與交換機(jī)直接相連的端口號(hào)等信息下發(fā)到三層交換機(jī)ASIC芯片中的三層硬件轉(zhuǎn)發(fā)表。此時(shí)在三層硬件轉(zhuǎn)發(fā)表中就有了第一個(gè)轉(zhuǎn)發(fā)表項(xiàng),即PC A的轉(zhuǎn)發(fā)表項(xiàng)。

   【說明】在三層交換機(jī)中,最關(guān)鍵的就是它有一個(gè)專門用于三層轉(zhuǎn)發(fā)的三層硬件轉(zhuǎn)發(fā)表,它和“ARP之間有聯(lián)系,但也有區(qū)別。ARP表中只是IP地址和MAC地址的映射關(guān)系,不包括轉(zhuǎn)發(fā)出口,也不包括對(duì)應(yīng)的VLAN ID,而三層硬件轉(zhuǎn)發(fā)表中則包括了全部這些,形成一個(gè):目的IP地址、VLAN ID、端口和下一跳MAC地址的關(guān)系表項(xiàng)。因?yàn)樵谶M(jìn)行三層轉(zhuǎn)發(fā)時(shí),改變的是幀封裝后的源和目的MAC地址這兩個(gè)字段,原來輸入IP包中的“目的MAC地址”作為轉(zhuǎn)發(fā)的“下一跳MAC地址”,原來的“源MAC地址”改為三層交換機(jī)自身的MAC地址,源和目的IP地址都不變(因?yàn)檫@是封裝在幀的“數(shù)據(jù)”部分)。另外,三層轉(zhuǎn)發(fā)表是存儲(chǔ)在ASCI硬件芯片上的,直接由ASIC芯片調(diào)用,而ARP表是存儲(chǔ)在內(nèi)在中,由CPU軟件調(diào)用。但三層硬件轉(zhuǎn)發(fā)表項(xiàng)還是由CPU提供的。

   (4)PC A在收到網(wǎng)關(guān)的ARP應(yīng)答報(bào)文后,把要發(fā)送給PC B的數(shù)據(jù)包經(jīng)過幀封裝后的 “目的MAC地址”修改為網(wǎng)關(guān)MAC地址(MAC S1),其它不變,先把數(shù)據(jù)包發(fā)給網(wǎng)關(guān)(三層交換機(jī))。

   (5)三層交換機(jī)在收到這個(gè)數(shù)據(jù)包后,因?yàn)?ldquo;目的MAC地址”為交換機(jī)自己的MAC地址,而且“目的IP地址”和“源IP地址”不在同一網(wǎng)段,所以會(huì)直接提交到負(fù)責(zé)三層交換的ASIC芯片,根據(jù)包中的“目的IP地址”(PC BIP地址2.1.1.2)在三層硬件轉(zhuǎn)發(fā)表中查看有無對(duì)應(yīng)表項(xiàng),因?yàn)槭堑谝淮瓮ㄐ牛越Y(jié)果是查找失敗,于是將數(shù)據(jù)包再轉(zhuǎn)送到CPU去進(jìn)行軟件路由處理。

   (6)CPU同樣會(huì)根據(jù)包中的“目的IP地址”去查找其軟件路由表,發(fā)現(xiàn)匹配了一個(gè)直連網(wǎng)段(PC B對(duì)應(yīng)的網(wǎng)段),于是繼續(xù)查在ARP表中查找對(duì)應(yīng)的MAC地址項(xiàng)。同樣是由于是第一次查找,所以仍然查找失敗。如果在ARP表中找到了對(duì)應(yīng)的MAC地址,則數(shù)據(jù)可以直接由軟件路由表轉(zhuǎn)發(fā)了。

   (7)下面仍以在ARP表中也沒找到PC B對(duì)應(yīng)的MAC地址為例進(jìn)行介紹。此時(shí)三層交換機(jī)CPU會(huì)在PC B所在網(wǎng)段的AN 3中所有端口發(fā)送一個(gè)ARP廣播請(qǐng)求報(bào)文,查找“目的IP地址”為2.1.1.2所對(duì)應(yīng)MAC地址。報(bào)文經(jīng)過幀封裝后的“源MAC地址”是三層交換機(jī)的MAC地址(MAC S),“目的MAC地址”全為0,“源IP地址”是VLAN 3網(wǎng)段的網(wǎng)關(guān)IP地址(2.1.1.1),“目的IP地址”是PC BIP地址(2.1.1.2)。

   (8)PC B在收到三層交換機(jī)CPU發(fā)送的ARP請(qǐng)求報(bào)文后,檢查發(fā)現(xiàn)被請(qǐng)求的IP地址是自己的IP地址,于是發(fā)送一個(gè)ARP應(yīng)答報(bào)文,并將自己的MAC地址(MAC B)包含在其中。同時(shí),將三層交換機(jī)上VLAN 3網(wǎng)段的網(wǎng)關(guān)IP地址與MAC地址的對(duì)應(yīng)關(guān)系(2.1.1.1<==>MAC S)記錄到自己的ARP表中去。

   (9)三層交換機(jī)CPU在收到PC B的ARP應(yīng)答報(bào)文后,將其IP地址和MAC地址對(duì)應(yīng)關(guān)系(2.1.1.2<==>MAC B)記錄到自己的ARP表中去,把PC BIP地址、MAC地址、進(jìn)入交換機(jī)的端口號(hào)等信息下發(fā)到三層交換機(jī)的三層轉(zhuǎn)發(fā)中。此時(shí)轉(zhuǎn)發(fā)表中就有到達(dá)PC APC B這兩條對(duì)應(yīng)的表項(xiàng)了。

   (10)三層交換機(jī)CPU根據(jù)獲得的PC BMAC地址和端口信息,以及軟件路由表信息,把由PC A發(fā)來的IP數(shù)據(jù)包轉(zhuǎn)發(fā)給PC B,這樣就完成了PC APC B的第一次單向通信。

   由于芯片內(nèi)部的三層引擎中已經(jīng)保存了從PC A到達(dá)PC B的完整轉(zhuǎn)發(fā)路徑信息,所以以后PC A與PC B之間進(jìn)行通信,或其它網(wǎng)段的站點(diǎn)想要與PC A或PC B進(jìn)行通信時(shí),三層交換機(jī)的ASIC芯片就會(huì)直接把包從對(duì)應(yīng)的三層硬件轉(zhuǎn)發(fā)表項(xiàng)中指定的端口轉(zhuǎn)發(fā)出去,而不必再把包交給CPU進(jìn)行路由處理。這就是所謂的“一次路由(指通過CPU路由表查到了對(duì)應(yīng)的直連網(wǎng)段),多次交換”的原理,大大提高了轉(zhuǎn)發(fā)速度。

   以上內(nèi)容摘自最新上市,已被納入全國高校教材系統(tǒng),并在全國熱銷、四大網(wǎng)店(當(dāng)當(dāng)網(wǎng)、京東網(wǎng)、卓越網(wǎng)、互動(dòng)網(wǎng))100%高度好評(píng)《深入理解計(jì)算機(jī)網(wǎng)絡(luò)書。

   另外,已專門為本書編寫并在ChinaUnix自測(cè)專欄上發(fā)表了100道配套自測(cè)題,如果購買了本書,正好可以檢測(cè)一下你對(duì)各章學(xué)習(xí)的效果;如果你還沒有購買本書,也可以測(cè)試一下你現(xiàn)有的水平。還有雙重大禮等著你哦:http://selftest.chinaunix.net/remen/wangluo/

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI