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