一文讀懂以太網(wǎng)交換技術(shù)
Labs 導(dǎo)讀
當(dāng)前園區(qū)網(wǎng)大多使用交換機(jī)組網(wǎng),使用交換機(jī)組建的網(wǎng)絡(luò)管理非常靈活,可以根據(jù)同一部門或者具有相同管理要求的需要?jiǎng)?chuàng)建虛擬局域網(wǎng)(Vlan)。那么園區(qū)內(nèi)的交換機(jī)是如何進(jìn)行數(shù)據(jù)包交換的?不同部門之間是如何進(jìn)行隔離的?
Part 01、 以太網(wǎng)基礎(chǔ)
1.1 MAC地址
MAC地址又稱為物理地址,是制造商為網(wǎng)卡分配的地址,MAC地址是唯一的,如同我們每個(gè)人都有一個(gè)身份證號(hào)碼來(lái)標(biāo)識(shí)自己一樣,網(wǎng)卡就用MAC地址來(lái)標(biāo)識(shí)自己。一個(gè)MAC地址有48位,一般采用十六進(jìn)制數(shù)的方式來(lái)表示。如圖為MAC地址的表示方式:
1.2 以太網(wǎng)幀格式
以太網(wǎng)技術(shù)所使用的幀稱為以太網(wǎng)幀,簡(jiǎn)稱以太幀,以太幀一般使用Ethernet Ⅱ格式,下圖為Ethernet Ⅱ格式的以太幀:
(1)目標(biāo)MAC地址:該字段表示的是幀的接收者,可以是一個(gè)單播地址,也可以是組播或者廣播地址。
(2)源MAC地址:該字段表示的是該幀的發(fā)送者。源MAC地址只能是一個(gè)單播MAC地址。
(3)類型:表示載荷數(shù)據(jù)的類型,該字段2字節(jié)。若是是一個(gè)IPv4包,則為是0x0800。
(4)載荷數(shù)據(jù):表示數(shù)據(jù)幀的有效載荷,它的長(zhǎng)度可變。
(5)CRC字段:循環(huán)冗余校驗(yàn),它是用來(lái)對(duì)幀進(jìn)行檢錯(cuò)校驗(yàn)的。
Part 02、以太網(wǎng)交換機(jī)
2.1 交換機(jī)轉(zhuǎn)發(fā)操作
交換機(jī)有一張MAC地址表,交換機(jī)會(huì)基于此表進(jìn)行幀的轉(zhuǎn)發(fā)。交換機(jī)的轉(zhuǎn)發(fā)操作一般有三種:轉(zhuǎn)發(fā)、丟棄、泛洪。轉(zhuǎn)發(fā)即為收到幀之后,從另一個(gè)接口轉(zhuǎn)發(fā)出去;丟棄即為收到幀之后將其丟棄,不進(jìn)行轉(zhuǎn)發(fā);泛洪是指將從某一接口收到的幀通過(guò)其他所有的接口轉(zhuǎn)發(fā)出去。下圖為交換機(jī)的三種轉(zhuǎn)發(fā)方式示意圖:
圖4 交換機(jī)泛洪操作
2.2 交換機(jī)轉(zhuǎn)發(fā)流程
前面已經(jīng)介紹,交換機(jī)是基于MAC地址表進(jìn)行幀轉(zhuǎn)發(fā)的,而一開始交換機(jī)的MAC地址表是空的,交換機(jī)能夠通過(guò)收到的幀的源MAC地址自動(dòng)構(gòu)建MAC地址表。如圖所示,PC1給PC2發(fā)送一個(gè)幀x,當(dāng)幀到達(dá)交換機(jī)的時(shí)候,交換機(jī)就會(huì)在MAC地址表中添加源MAC地址和對(duì)應(yīng)接口的映射條目。交換機(jī)會(huì)在MAC地址表中查找該幀的目的MAC對(duì)應(yīng)的接口,假如在MAC地址表中查找到了就會(huì)進(jìn)行轉(zhuǎn)發(fā),假如沒(méi)有找到,交換機(jī)就會(huì)將此幀x進(jìn)行泛洪。其中PC3收到此幀時(shí)會(huì)將其丟棄。PC2收到此幀之后就會(huì)回應(yīng)一個(gè)源MAC為PC2 MAC地址,目的地址為PC1 MAC地址的幀y,交換機(jī)收到之后,就會(huì)查詢MAC地址表,此時(shí),會(huì)查到MAC對(duì)應(yīng)的接口,然后從此接口轉(zhuǎn)發(fā)出去。同時(shí)會(huì)在MAC地址表中添加PC2 MAC地址和對(duì)應(yīng)接口的映射條目。
Part 03、Vlan
3.1 什么是Vlan
一臺(tái)交換機(jī)就是一個(gè)廣播域,整臺(tái)交換機(jī)的所有端口均屬于同一個(gè)廣播域。通常一個(gè)廣播域就是一個(gè)邏輯子網(wǎng)。當(dāng)一個(gè)網(wǎng)絡(luò)中有多個(gè)交換機(jī)的時(shí)候,網(wǎng)絡(luò)會(huì)變得特別大,此時(shí),網(wǎng)絡(luò)中的設(shè)備有可能被大量的廣播損耗資源,而且也無(wú)法根據(jù)業(yè)務(wù)需求靈活的規(guī)劃網(wǎng)絡(luò)結(jié)構(gòu)。虛擬局域網(wǎng)(Vlan)可以解決上述問(wèn)題。通過(guò)將交換機(jī)的端口劃入特定的Vlan,可以起到隔離廣播域的作用。不同的Vlan是不同的廣播域,就算兩個(gè)Vlan之間的PC的IP地址在同一網(wǎng)段也無(wú)法進(jìn)行通信。不同的Vlan之間無(wú)法進(jìn)行二層互訪。可根據(jù)業(yè)務(wù)需求靈活的進(jìn)行Vlan的規(guī)劃。如圖所示,PC1、PC2、PC3屬于Vlan 1,PC4、PC5、PC6屬于Vlan 2,當(dāng)PC1發(fā)送一幀x的時(shí)候,交換機(jī)剛開始MAC地址表查不到進(jìn)行泛洪,此時(shí),只有同一Vlan的PC2、PC3才能收到此幀,PC4發(fā)送的幀y同理。
3.2 Vlan的劃分方式
在一個(gè)支持Vlan的網(wǎng)絡(luò)中,計(jì)算機(jī)發(fā)出的幀是不帶tag的幀,當(dāng)這個(gè)幀到達(dá)交換機(jī)的時(shí)候,交換機(jī)就會(huì)根據(jù)劃分方式將其劃分到某個(gè)Vlan中,一般主要有以下四種劃分方式:
- 基于接口劃分的Vlan:將Vlan id映射到交換機(jī)的物理接口上,pc發(fā)送的數(shù)據(jù)幀都是沒(méi)有tag的,都會(huì)被劃分到該接口的vlan id 所表明的Vlan。
- 基于MAC地址的Vlan:通過(guò)查詢并記錄端口所連PC上網(wǎng)卡的MAC地址來(lái)決定數(shù)據(jù)幀屬于哪個(gè)Vlan。
- 基于子網(wǎng)的Vlan:通過(guò)所連計(jì)算機(jī)的IP地址,來(lái)決定端口所屬Vlan的。
- 基于用戶的Vlan:根據(jù)交換機(jī)各端口所連的計(jì)算機(jī)上當(dāng)前登錄的用戶,來(lái)決定該端口屬于哪個(gè)Vlan。
3.3 交換機(jī)的接口類型
普通交換機(jī)的二層接口一般分為以下三種類型:access、trunk、hybird。一般常用的為access接口和trunk接口,下面通過(guò)對(duì)Vlan tag的處理過(guò)程分別來(lái)介紹這access和trunk端口類型:
(1)Access:通常用于直連終端,常用于連接PC、服務(wù)器或其他終端,交換機(jī)連路由器一般也用Access。Access接口只能加入一個(gè)Vlan,一旦加入特定的Vlan后,該接口所連接的設(shè)備也就加入了該Vlan。缺省的話默認(rèn)加入Vlan 1。Access接口收數(shù)據(jù)時(shí)如果收的是untag數(shù)據(jù),會(huì)打上此接口的vlan id進(jìn)行接收,如果是tag數(shù)據(jù),比較tag數(shù)據(jù)vlan id與此接口vlan id是否一致,一致則接收,否則丟棄。發(fā)數(shù)據(jù)時(shí)首先比較待發(fā)數(shù)據(jù)的vlan id ,如果和此接口vlan id一致,則剝離標(biāo)簽,并以u(píng)ntag形式發(fā)送;如果和此接口vlan id不一致,則不發(fā)。如下圖所示:A、B、C、D屬于Vlan 1, E、F、H、G屬于Vlan 2。計(jì)算機(jī)A 給 D 發(fā)送一個(gè)幀,進(jìn)入交換機(jī)接口加上Vlan 1標(biāo)記,從接口出去,去掉Vlan 1標(biāo)記。計(jì)算機(jī)發(fā)送和接收的幀不帶 Vlan標(biāo)記。
(2)trunk:當(dāng)一條鏈路,需要承載多Vlan信息的時(shí)候,需要使用trunk來(lái)實(shí)現(xiàn)。trunk一般用于交換機(jī)之間或者交換機(jī)和防火墻之間。trunk端口可以屬于多個(gè)Vlan。trunk接口在收數(shù)據(jù)時(shí)如果收的是untag數(shù)據(jù),會(huì)打上此接口的vlan id進(jìn)行接收,如果是tag數(shù)據(jù),首先查看接口的列表是否存在此vlan id,如果存在,則接收,否則丟棄。發(fā)數(shù)據(jù)時(shí)首先查看接口的列表,如果待發(fā)數(shù)據(jù)的vlan id在此列表中,則允許發(fā)送,否則不會(huì)從此接口發(fā)送。其次如果數(shù)據(jù)允許發(fā)送,則比較此待發(fā)數(shù)據(jù)的tag是否和此接口vlan id是否一致,一致則發(fā)untag數(shù)據(jù),否則發(fā)tag數(shù)據(jù)。如下圖所示:A、B、C、D屬于Vlan 1,E、F、H、G屬于Vlan 2,它們分別連在兩個(gè)交換機(jī)上。計(jì)算機(jī)C給D 發(fā)送一個(gè)幀,進(jìn)入交換機(jī)接口加上Vlan 1標(biāo)記,從trunk接口出去的時(shí)候仍然帶有Vlan tag。
Part 04、 總結(jié)
綜上所述,二層交換機(jī)主要通過(guò)MAC地址進(jìn)行數(shù)據(jù)幀的轉(zhuǎn)發(fā),使用交換機(jī)搭建組網(wǎng)管理非常靈活,而且可以增加網(wǎng)絡(luò)的吞吐量,通過(guò)使用Vlan技術(shù)來(lái)隔離廣播域可以減少大量廣播帶來(lái)的資源損耗,過(guò)濾一部分不需要轉(zhuǎn)發(fā)的報(bào)文。