圖文并茂深入了解VLAN工作原理,不能錯(cuò)過(guò)干貨
了解了VLAN的劃分的幾種方法和配置,我非常好奇VLAN是一個(gè)怎樣的工作過(guò)程呢?它是如何做到隔離的功能,帶著這些疑問(wèn),今天一起來(lái)看看吧。
VLAN基本通信原理
為了提高處理效率,交換機(jī)內(nèi)部的數(shù)據(jù)幀一律都帶有VLAN Tag,已統(tǒng)一方式處理。當(dāng)一個(gè)數(shù)據(jù)進(jìn)入交換機(jī)接口時(shí),如果沒(méi)有帶VLAN Tag標(biāo)簽,且該接口上配置了PVID,那么,該數(shù)據(jù)幀就會(huì)被標(biāo)記上接口的PVID。如果數(shù)據(jù)幀已經(jīng)帶有VLAN Tag,那么,即使接口已經(jīng)配置了PVID,交換機(jī)不會(huì)再給數(shù)據(jù)幀標(biāo)記VLAN Tag。
由于接口類型不同,交換機(jī)對(duì)數(shù)據(jù)幀的處理過(guò)程也不同,下面通過(guò)兩個(gè)案例來(lái)說(shuō)明一下VLAN的工作原理:
同一交換機(jī)不同VLAN情況
上圖交換機(jī)分別配置了VLAN 10 20,同時(shí)把相應(yīng)的PC加入不同的VLAN中,通過(guò)在交換機(jī)上GE0/01和GE0/0/3抓包,發(fā)現(xiàn)GE0/0/1能抓取數(shù)據(jù)包,而GE0/0/3沒(méi)有數(shù)據(jù)包經(jīng)過(guò)。這也證實(shí)了VLAN的一個(gè)特性,隔離廣播風(fēng)暴。
正常的情況先,PC1在和PC2的第一次通信,先廣播一個(gè)ARP請(qǐng)求,在交換機(jī)的所有端口,除了自己發(fā)送數(shù)據(jù)端口之外,其他端口都能正常收到的。但是上述拓?fù)溆捎趧澐至薞LAN,所以ARP廣播被GE0/0/3端口丟棄。所以導(dǎo)致PC1不能獲取PC2的MAC地址,導(dǎo)致無(wú)法通信。
小伙伴們看到這里,可能會(huì)說(shuō),我們能不能提前把PC2的MAC地址告訴PC1,這樣PC1就不用再發(fā)ARP廣播包去請(qǐng)求MAC地址啦。
通過(guò)在PC1和PC2中相互把對(duì)方的MAC地址進(jìn)行添加,執(zhí)行如下命令:
- PC1>arp -s 192.168.1.3 54-89-98-C1-58-5A
- PC2>arp -s 192.168.1.2 54-89-98-05-20-B9
添加完之后,重新在交換機(jī)GE0/0/1和GE0/0/3端口進(jìn)行抓包,如下圖,GE0/0/3還是沒(méi)有數(shù)據(jù)抓取到,這次GE0/0/1端口到ICMP包的請(qǐng)求超時(shí)。
通過(guò)提前綁定MAC地址信息,但是,依然PC1和PC2不能相互訪問(wèn)。那么VLAN數(shù)據(jù)包是如何工作的呢?先來(lái)看Access端口在接收和發(fā)送數(shù)據(jù)包的是都做了什么操作。
- Access接口對(duì)接收不帶Tag的報(bào)文處理:接收該報(bào)文,并打上缺省的VLAN ID
- Access接口對(duì)接收帶Tag的報(bào)文處理:當(dāng)VLAN ID 與缺省VLAN ID相同時(shí),接收該報(bào)文;當(dāng)VLAN ID與缺省VLAN ID不同時(shí),丟棄該報(bào)文;
- 發(fā)送幀處理過(guò)程:先剝離幀的PVID Tag,然后再轉(zhuǎn)發(fā)。
注意:如果端口為access類型,并加入了一個(gè)vlan ,那么這端口的PVID屬性值變成和VID值一樣;缺省VLAN ID 就是當(dāng)前加入的VLAN ID
從以上access端口接收發(fā)送數(shù)據(jù)包,可以大致推測(cè)出PC1和PC2的通信過(guò)程如下:
- 當(dāng)PC1發(fā)送數(shù)據(jù)包時(shí),數(shù)據(jù)包是不帶Tag標(biāo)簽的。進(jìn)入交換機(jī)GE0/0/1端口后,則被帶上VLAN 10 的標(biāo)簽。
- 當(dāng)交換機(jī)GE0/0/3端口接收到GE0/0/1端口發(fā)來(lái)的數(shù)據(jù)包,然后檢查發(fā)現(xiàn)是帶上Tag標(biāo)簽的,進(jìn)一步比較與自己的缺省VLAN是否一致,結(jié)果發(fā)現(xiàn)不一致,直接發(fā)數(shù)據(jù)包丟棄了。
同一交換機(jī)相同VLAN情況
上圖兩臺(tái)交換機(jī)通過(guò)GE0/0/24端口互聯(lián),并把GE0/0/24配置成trunk口模式,允許VLAN 10、20通過(guò)。那么垮交換機(jī)的VLAN又是怎么一個(gè)流程呢?
先分別在SW1和SW2的GE0/0/24端口抓包,看看什么樣的數(shù)據(jù)包經(jīng)過(guò)GE0/0/24。
從上圖看到通過(guò)SW1和SW2的G0/0/24端口數(shù)據(jù)包都是一樣的,攜帶了Tag標(biāo)簽。再來(lái)看看trunk收發(fā)數(shù)包的流程。
trunk端口對(duì)不帶Tag的報(bào)文處理:
- 打上缺省的VLAN ID,當(dāng)缺省VLAN ID在允許通過(guò)的VLAN ID列表時(shí),接收該報(bào)文。
- 當(dāng)缺省VLAN ID不在允許通過(guò)的VLAN ID列表時(shí),丟棄該報(bào)文。
trunk端口對(duì)帶Tag的報(bào)文處理:
- 當(dāng)VLAN ID在接口允許通過(guò)的VLAN ID列表里時(shí),接收該報(bào)文;
- 當(dāng)VLAN ID不在接口允許通過(guò)的VLAN ID列表時(shí),丟棄報(bào)文。
發(fā)送幀處理過(guò)程:
- 當(dāng)VLAN ID與缺省VLAN ID相同,且是該接口允許通過(guò)的VLAN ID時(shí),去掉Tag,發(fā)送該報(bào)文;
- 當(dāng)VLAN ID與缺省VLAN ID不同,且是該接口允許通過(guò)的VLAN ID時(shí),保持原有Tag,發(fā)送該報(bào)文。
從以上Trunk端口收發(fā)數(shù)據(jù)包的處理過(guò)程,大致可以推測(cè)出PC1和PC3的過(guò)程如下:
- 當(dāng)PC1發(fā)送數(shù)據(jù)包到SW1端口(數(shù)據(jù)包不帶Tag標(biāo)簽),進(jìn)入SW1交換機(jī)的GE0/0/1端口后,被加上該端口VLAN ID 20進(jìn)行轉(zhuǎn)發(fā)。
- 進(jìn)行ARP廣播請(qǐng)求PC3端MAC地址,數(shù)據(jù)包進(jìn)入SW1的GE0/0/24端口,由于SW1的GE0/0/24端口為trunk模式,允許VLAN 10 和20通過(guò),并根據(jù)trunk端口發(fā)送幀處理過(guò)程。數(shù)據(jù)包順利到達(dá)SW2的G0/0/24端口。
- 由于ARP廣播包攜帶了Tag標(biāo)簽,只有對(duì)應(yīng)的端口對(duì)此廣播進(jìn)行處理,并相應(yīng)。
- PC1得到PC3的MAC地址,進(jìn)行數(shù)據(jù)包封裝轉(zhuǎn)發(fā),進(jìn)行通信。