您好,登錄后才能下訂單哦!
L3 Switch二三層轉(zhuǎn)發(fā)原理是怎樣的,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
三層交換機(jī)(L3 Switch)因為其具備路由功能、三層轉(zhuǎn)發(fā)功能,且轉(zhuǎn)發(fā)效率遠(yuǎn)遠(yuǎn)高于路由器,而被廣泛用于大型網(wǎng)絡(luò)的骨干網(wǎng)絡(luò)中(從角色上來看:路由器的主要角色是路由選擇,而不是報文轉(zhuǎn)發(fā);從實現(xiàn)上來看:路由器轉(zhuǎn)發(fā)報文是軟件轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)性能自然遜色于交換機(jī)了),今天我們就來簡單介紹一下關(guān)于交換機(jī)的二三層轉(zhuǎn)發(fā)。
首先二層轉(zhuǎn)發(fā)是基于MAC地址轉(zhuǎn)發(fā),三層轉(zhuǎn)發(fā)基于IP地址轉(zhuǎn)發(fā),但是這并不意味著僅僅依靠IP地址就能轉(zhuǎn)發(fā),三層轉(zhuǎn)發(fā)是建立在二層的基礎(chǔ)上的,而僅僅依靠MAC地址是能夠轉(zhuǎn)發(fā)的。另外,由于二三層轉(zhuǎn)發(fā)基于MAC地址、IP地址、FDB表(MAC地址學(xué)習(xí)、更新、老化、刪除等)、ARP表、路由表、三層轉(zhuǎn)發(fā)表、VLAN端口類型(Access、Trunk、Hybrid)、VLAN幀格式、ARP報文格式等,需要對此有基本的熟知。以下圖為例,總結(jié)一下交換機(jī)中,基于VLAN的二三層轉(zhuǎn)發(fā)原理。
1、基本概念術(shù)語:
①M(fèi)AC地址:48bit的硬件地址,單播地址格式為首字節(jié)最低位為1,多播地址格式為首字節(jié)最低位為0,廣播地址為全1(即FF:FF:FF:FF:FF:FF)。另外有其他一些網(wǎng)絡(luò)協(xié)議的特定MAC地址格式。
②FDB表(FordWarding DateBase):即MAC地址映射表,有MAC地址、端口、VLAN ID等信息(不同廠商交換機(jī)可能還有其他信息)。
③ARP表:用于記錄IP和MAC映射關(guān)系的表。
④三層轉(zhuǎn)發(fā)表:即基于硬件三層轉(zhuǎn)發(fā)的包含目的IP地址、VLAN ID、端口號和下一跳MAC地址等的關(guān)系表。
⑤路由表:包含默認(rèn)路由、RIP、OSPF等動態(tài)路由的路由路徑信息的記錄表。
⑥VLAN端口:有三種模式,主要是Access口(接入口),一般是用于連接主機(jī),其發(fā)出的數(shù)據(jù)幀不帶vlan tag標(biāo)簽;還有就是Trunk(主干口)用于可連接不同交換機(jī)的主干鏈路,其上發(fā)出的數(shù)據(jù)幀可能會帶tag標(biāo)簽,用以識別不同VLAN,如果沒帶則采用默認(rèn)的VLAN (PVID)。
假設(shè)初始情況下,所有PC和交換機(jī)沒有任何表項存在(ARP緩存、FDB緩存、三層轉(zhuǎn)發(fā)表緩存等),且端口均為Access模式。
2、二層轉(zhuǎn)發(fā)(同一VLAN中主機(jī)通信):
以上圖中PC_A ping PC_B為例來詳細(xì)分析整個過程。
①PC_A(192.168.10.1/24) 要 ping PC_B(192.168.10.2/24),首先PC_A要去檢查目標(biāo)IP地址和自己的IP地址是否在同一個網(wǎng)段中,經(jīng)過IP和子網(wǎng)掩碼進(jìn)行與運(yùn)算,得知PC_A和PC_B屬于同一網(wǎng)段:192.168.10.0網(wǎng)段。因此進(jìn)行下一步:ARP表項查詢。
②根據(jù)目標(biāo)IP:192.168.10.2作為索引,在ARP表中查找對應(yīng)的MAC地址,由于ARP表最開始是空的,所以沒有找到對應(yīng)MAC。因此PC_A需要發(fā)送一個ARP廣播報文在VLAN 1中請求PC_B(192.168.10.2)的MAC地址,PC封裝的ARP報文主要內(nèi)容為,opcode操作碼字段為0X01代表這是一個ARP請求報文,目標(biāo)MAC由于不知道因此全部填充為0,其余包含以太幀頭部具體如下圖所示:
關(guān)于ARP報文各個字段的含義,用wireshark抓一個ARP包來查看,如下所示:
該報文是我從自己電腦上抓取到的一個發(fā)送到房間無線路由器的ARP請求報文,是一個請求回復(fù)的ARP報文(即網(wǎng)關(guān)的ARP緩存超時需要清除前,PC發(fā)送的一個ARP報文,如果網(wǎng)關(guān)在規(guī)定時間內(nèi)不回復(fù)該ARP請求,則PC清除該緩存,具體細(xì)節(jié)參考:RFC 826)。
③當(dāng)交換機(jī)從a端口收到PC_A發(fā)出的報文,解析以太頭部后發(fā)現(xiàn)目標(biāo)MAC是FF:FF:FF:FF:FF:FF,則知其是一個廣播幀,解析源MAC:MA,由于FDB表當(dāng)前空空如也,因此先將"port a:MA:VLAN 1"等信息緩存到FDB表中。之后根據(jù)端口為Access模式,加上一個VLAN tag(主要包含優(yōu)先級和VLAN ID=1),使其成為一個802.1Q的帶有VLAN tag的以太幀,在交換機(jī)內(nèi)部開始進(jìn)行交換。
④根據(jù)vlan tag以及端口檢測后,發(fā)現(xiàn)b、c、d三個端口(其實還有一個VLAN接口,暫不提及)歸屬于VLAN 1,與報文的tag標(biāo)簽一致,因此將tag剝離并從這三個端口轉(zhuǎn)發(fā)出去。
⑤當(dāng)PC_C、PC_D收到該廣播幀后解析內(nèi)容,發(fā)現(xiàn)目標(biāo)IP不是自己則丟棄該數(shù)據(jù)幀,而PC_B發(fā)現(xiàn)目標(biāo)IP就是自己,則先將PC_A的“192.168.10.1:MA”的映射信息更新緩存到本地ARP表中。然后封裝一個ARP回應(yīng)的單播報文,內(nèi)容主要為:源IP:192.168.10.2,目標(biāo)IP:192.168.10.1,源MAC:MB,目標(biāo)MAC:MA。發(fā)送出去,經(jīng)端口b到達(dá)交換機(jī)。
⑥交換機(jī)收到來自端口b的報文,解析頭部獲得源MAC,則先將“port b:MB:VLAN 1”等信息緩存到FDB表中去,由于FDB表中已經(jīng)有了PC_A的MAC地址緩存,因此根據(jù)ARP回復(fù)報文數(shù)據(jù)中,幀頭部的目標(biāo)MAC將報文從端口a轉(zhuǎn)發(fā)出去(該步中當(dāng)然也存在入口數(shù)據(jù)幀tag的添加與出口數(shù)據(jù)幀tag剝離的操作)。
⑦PC_A接收到交換機(jī)從端口a發(fā)出的ARP報文后,解析以太頭部進(jìn)行目標(biāo)MAC匹配判斷,匹配后解析報文內(nèi)容,發(fā)現(xiàn)“源IP:源MAC”的對應(yīng)關(guān)系,因此先緩存“192.168.10.2:MB”到ARP表中,之后有了PC_B的MAC地址接可以封裝icmp報文進(jìn)行ping的后續(xù)操作了。
⑧交換機(jī)收到來自PC_A和PC_B的icmp request與icmp reply報文,由于之前有緩存FDB表項,因此之后只會更新對應(yīng)表項的老化標(biāo)志,長時間沒有這倆源MAC的報文到交換機(jī)則會刪除對應(yīng)表項。
3、三層轉(zhuǎn)發(fā)(跨越不同VLAN的主機(jī)通信):
以上,以一臺交換機(jī)上的同一個VLAN內(nèi)的不同主機(jī)通信為例,描述了的是二層轉(zhuǎn)發(fā)的基本過程,包括ARP表查詢、ARP請求、交換機(jī)MAC地址查詢、FDB表緩存、端口類型檢查、VLAN tag添加與剝離、目標(biāo)主機(jī)ARP回復(fù)等步驟。
而三層交換基本步驟差不多。以VLAN 1的PC_A(192.168.10.1,MA)和VLAN 2的PC_E(192.168.20.1,ME)相互ping為例分析(假設(shè)VLAN 1的網(wǎng)關(guān)為VLAN 1 interface的IP:192.168.10.254,VLAN 2的網(wǎng)關(guān)為VLAN 2 interface 的IP:192.168.20.254),以下過程也有加VLAN tag和剝離VLAN tag的過程,但與二層基本一致,因此不再贅述(對于跨交換機(jī)的不同VLAN間通信,涉及trunk口,其vlan tag添加可能與此稍有些不同):
①當(dāng)PC_A(192.168.10.1/24)要ping PC_E(192.168.20.1/24)時,依然是檢查目標(biāo)IP是不是和自己在同一個網(wǎng)段,發(fā)現(xiàn)不在同一網(wǎng)段(一個在192.168.10.0/24網(wǎng)段一個在192.168.20.0/24網(wǎng)段),則需要經(jīng)過網(wǎng)關(guān)(這里是交換機(jī)三層接口)來轉(zhuǎn)發(fā)。因此PC_A在自己的ARP表中尋找網(wǎng)關(guān)對應(yīng)的MAC地址,如果有則直接將報文封裝為:目標(biāo)MAC為網(wǎng)關(guān)MAC,源MAC為MA,發(fā)送端IP為192.168.10.1,接收端IP為192.168.20.1。
②由于第一次PC_A的ARP緩存中不存在網(wǎng)關(guān)的MAC地址。則先向VLAN 1內(nèi)廣播發(fā)送一個ARP請求,請求網(wǎng)關(guān)192.168.10.254的MAC地址,封裝為:源MAC為MA,目標(biāo)MAC不可知則為全0,源IP為192.168.10.1,目標(biāo)IP為192.168.10.254,到鏈路層封裝的頭部為,源MAC為MA,目標(biāo)MAC為全F即廣播包,“幀類型”字段則填上ARP的協(xié)議號0x0806。
③交換機(jī)SW1收到PC_A發(fā)送的報文,二層解析頭部檢查為廣播包,則從VLAN 1的除源端口外的各個端口轉(zhuǎn)發(fā)出去,另外也轉(zhuǎn)發(fā)一份到VLAN 1的三層接口,由于PC_A之前給PC_B發(fā)送過報文,SW 1有PC_A的FDB緩存,則檢查匹配后更新老化標(biāo)志位,定時器重新計數(shù)。此外將PC_A的IP、MAC、對應(yīng)port、VLAN ID等信息記錄到交換機(jī)的三層轉(zhuǎn)發(fā)表中。
④VLAN 1其他主機(jī)收到請求對象不是自己的ARP請求,丟棄該廣播報文,而SW 1的三層接口解析到目標(biāo)IP是自己,則封裝一個源MAC是交換機(jī)VLAN 1 interface的MAC,源IP是192.168.10.254,目標(biāo)IP是192.168.10.1,目標(biāo)MAC是MA的ARP應(yīng)答報文,再經(jīng)過以太頭部封裝,添加ARP單播報文頭部,目標(biāo)MAC為MA。交換機(jī)二層收到自三層的報文,解析數(shù)據(jù)幀頭部,根據(jù)目標(biāo)MAC地址MA在FDB表中查找到其出端口是port a,為ACCESS端口,則剝掉tag(之前請求報文進(jìn)入port a之后會被加上tag,以致能夠區(qū)分識別出VLAN 1的其他端口與VLAN 1 interface)轉(zhuǎn)發(fā)給PC_A。
⑤PC_A收到網(wǎng)關(guān)的MAC地址,則先緩存網(wǎng)關(guān)的ARP表項,然后將發(fā)給PC_E的報文修改目標(biāo)MAC為VLAN 1 interface即網(wǎng)關(guān)的MAC地址,而目標(biāo)IP依舊是PC_E的IP:192.168.20.1,然后封裝以太頭部以單播形式發(fā)送出去。
⑥SW 1在收到這個數(shù)據(jù)包后,因為“目的MAC地址”為交換機(jī)自己VLAN接口的MAC地址,而且“目的IP地址”和“源IP地址”不在同一網(wǎng)段,所以直接提交到三層,根據(jù)包中的“目的IP地址”(PC_E的IP地址)在三層硬件轉(zhuǎn)發(fā)表中查看有無對應(yīng)表項,因為是第一次通信,所以結(jié)果是查找失敗,于是將數(shù)據(jù)包再轉(zhuǎn)送到CPU去進(jìn)行軟件路由處理。
⑦ CPU同樣會根據(jù)包中的“目的IP地址”去查找其軟件路由表,發(fā)現(xiàn)匹配了一個直連網(wǎng)段(PC_E對應(yīng)的網(wǎng)段),于是繼續(xù)查在ARP表中查找對應(yīng)的MAC地址項。同樣是由于是第一次查找,所以仍然查找失敗。如果在ARP表中找到了對應(yīng)的MAC地址,則數(shù)據(jù)可以直接由軟件路由表轉(zhuǎn)發(fā)了。
⑧如果沒查找到則以PC_E的目標(biāo)IP為請求對象,在其所在VLAN 2的目標(biāo)網(wǎng)段內(nèi)發(fā)送ARP請求廣播(目標(biāo)MAC為全0,目標(biāo)IP為192.168.20.1,源MAC為VLAN 2 interface對應(yīng)MAC,源IP為VLAN 2 interface對應(yīng)IP:192.168.20.254),PC_E收到該ARP請求報文后,則先緩存網(wǎng)關(guān)的ARP表項,然后以ARP單播形式回復(fù)自己的MAC地址ME給網(wǎng)關(guān)192.168.20.254,SW 1的CPU則根據(jù)回復(fù)的報文更新記三層轉(zhuǎn)發(fā)表項,記錄PC_E的IP、MAC、出端口、VLAN ID等信息,此時三層轉(zhuǎn)發(fā)表中有了PC_A和PC_E的轉(zhuǎn)發(fā)表項。另外緩存PC_E的ARP表項與FDB表項。
⑨三層交換機(jī)的CPU根據(jù)獲取到的目標(biāo)主機(jī)MAC和現(xiàn)有的直連路由信息將PC_A發(fā)來的數(shù)據(jù)包轉(zhuǎn)發(fā)給PC_E,這就是一次單方向的三層轉(zhuǎn)發(fā)過程,其中也大量涉及到了二層轉(zhuǎn)發(fā)(PC_A在VLAN 1內(nèi)廣播請求網(wǎng)關(guān)MAC,交換機(jī)CPU控制在VLAN2內(nèi)廣播請求PC_E的MAC等)。
⑩當(dāng)PC_E回復(fù)PC_A報文時,與PC_A步驟相同,只是在PC_E上已經(jīng)存在了網(wǎng)關(guān)ARP表項、交換機(jī)上已經(jīng)存在了到PC_A的三層轉(zhuǎn)發(fā)表項、FDB表項等,所以會更簡單些。另外由于三層轉(zhuǎn)發(fā)表項的存在,因此PC_E回復(fù)PC_A的報文會直接根據(jù)三層轉(zhuǎn)發(fā)表進(jìn)行硬件轉(zhuǎn)發(fā),而不是CPU路由軟件轉(zhuǎn)發(fā),效率會更快。
看完上述內(nèi)容,你們掌握L3 Switch二三層轉(zhuǎn)發(fā)原理是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。