?

深入理解VLAN 工作機制

2022-10-14 02:01廖繼東伍琰
網絡安全技術與應用 2022年9期
關鍵詞:本征交換機報文

◆廖繼東 伍琰

(河南省總工會干部學校 河南 45002)

VLAN 是一種依賴于交換技術之上的,基于協議的虛擬網絡技術[1]。每個 VLAN 都由一組相同需求的計算機組成,并且這些計算機可以來自不同的物理空間,VLAN 內的主機間通信就和在一個LAN 內一樣;而VLAN 之間則不能直接互通,每個VLAN 是一個廣播域,廣播報文就被限制在一個VLAN 內[2]。

初學者對VLAN 的劃分比較容易掌握,但是對VLAN 的工作機制、相關協議并不是很清楚。作者以思科Packet Tracer 為實驗平臺,搭建VLAN 的網絡拓撲,如圖1,通過抓取協議包來分析VLAN 的工作機制,以提供對VLAN 技術更清晰的認識。

圖1 實驗拓撲

其中PC0、PC2、PC4 劃到VLAN 10,PC1 和PC3 劃到VLAN 20,兩臺交換機之間使用trunk 鏈路。

1 不同的VLAN 如何被識別

通過PC0(192.168.1.10)PING PC2(192.168.1.20),我們發現盡管這兩臺PC 不屬于一臺交換機,但是屬同一VLAN,他們可以PING 通。通過PC0(192.168.1.10)PING PC1(192.168.1.100),我們發現盡管這兩臺PC 同屬于一臺交換機,一個網段,但是由于分屬不同VLAN,他們不能PING 通。

那么交換機是如何來識別數據幀是否屬于不同的VLAN 呢?

IEEE 于1999 年頒布了用以標準化VLAN 實現方案的IEEE 802.1Q 協議標準草案。思科還可以使用私有協議ISL 進行封裝[3],由于很少使用這里不作討論。802.1Q VLAN 只定義了數據幀的封裝格式,即,在以太網幀頭中插入了4 個字節的VLAN 字段。

我們通過交換機1 的VLAN10 的PC0(192.168.1.10)PING 交換機2 的VLAN10 的PC2(192.168.1.20),兩臺交換機連接端口設置為trunk,可以PING 通。通過抓取協議包,我們可以看到,ICMP 包在Trunk 鏈路上被封裝為802.1q 數據幀。

如圖2 所示,IEEE802.1Q 就是在幀中插入了一個四個字節的TAG 標簽[3]:

圖2 802.1Q 的幀結構

(1)標記協議標致(TPID):固定值0x8100,標識該幀載有802.1Q標記信息

(2)標記控制信息(TCI):

Priority:優先級,3 比特。

Canonical Format Indicator:1 比特,表示總線型以太網,FDDI,令牌環網。

VLANID:12 比特,表示VID,范圍1~4094。

從圖2 也可以看出PC0 發往PC2 的數據包攜帶的VLANID 是10,這就表明它的VLAN 信息。

2 VLAN 標簽是如何被添加

2.1 誰來添加VLAN 標簽

在PC0 PING PC2 的時候,通過抓取數據包,可以看到PC0 發出的數據包不是802.1Q 數據幀,如圖3 所示,但是在兩臺交換機的trunk鏈路上被封裝為802.1Q 數據幀,如圖4 所示,這說明是交換機對PC發送的數據重新進行封裝,添加VLAN 標簽。

圖3 PC0 發出的數據包

圖4 PC0 PING PC3 的數據在交換機0 中的變化

添加VLAN 標簽,是由交換機的端口所屬的VLAN ID 決定的。思科交換機端口支持三種常用模式,接入模式(access)、中繼模式(trunk)、動態模式(dynamic)[4]。在同一端口上,access 模式與trunk模式只能選擇其一。配置成access 模式的端口通常連接終端設備,配置成trunk 模式的端口通常用來連接網絡設備。access 模式下端口只能劃分給某一個 VLAN,而trunk 模式則是為了允許多個 VLAN通過而設計的,思科默認容許所有VLAN。

2.2 何時添加VLAN 標簽

我們通過交換機1 的VLAN10 的PC0(192.168.1.10)PING 同一交換機1 的VLAN10 的PC4(192.168.1.30),可以PING 通,但是發現數據包在交換機中并沒有被封裝為802.1Q,如圖5 所示。

圖5 PC0 PING PC4 的數據在交換機0 中沒有變化

為什么同一個VLAN 之間的PC 是可以通信,但是數據包卻有的被封裝為802.1Q,有的卻沒有?

是因為access 端口和trunk 端口對報文不同的處理方式。

(1)access 端口

接收報文:對不帶VLAN 標簽的報文,接收該報文。對帶VLAN標簽的報文,當VLAN 標簽與端口VLAN 標簽相同時,接收該報文;否則,丟棄該報文。

發送報文:發送無VLAN 標簽的報文。

因為PC0 和PC4 都是在同一個交換機的access 口,PC0 發出的數據是不帶VLAN 標簽的,而PC0 和PC4 所處的交換機端口屬于同樣的VLAN ID,所以可以直接轉發。

(2)trunk 端口

接收報文:對不帶VLAN 標簽的報文,打上本征 VLAN ID。對帶VLAN 標簽的報文,當VLAN ID 在接口允許通過的VLAN ID列表里時,接收該報文。

發送報文:當VLAN ID 與本征VLAN ID 相同,且是該接口允許通過的VLAN ID 時,去掉VLAN 標簽并發送該報文;當VLAN ID與本征VLAN ID 不同,且是該接口允許通過的VLAN ID 時,保持原有VLAN 標簽,發送該報文。

因為PC0 和PC2 之間需要通過trunk 鏈路,所以數據被打上PC0所接入的交換機端口的VLAN ID(VLAN 10),封裝為802.1Q 數據幀,由交換機0 通過trunk 鏈路傳輸到交換機1。

2.3 VLAN 數據在交換機內部是否攜帶標簽

很多書上解釋:為了提高處理效率,交換機內部的數據幀一律都帶有VLAN 標簽,已統一方式處理。當一個數據進入交換機接口時,如果沒有帶VLAN 標簽,該數據幀就會被標記上默認VLAN。

作者對這樣的理解不認同,因為如果這樣做的話,多此一舉。我們來看剛才PC0 與PC4 通信,同屬一臺交換機,一個VLAN,他們之間通信經過交換機如果需要打標簽的話,那豈不是加重交換機的計算負載嗎?所以作者認為,像這樣的兩個主機在相互通信的時候,僅僅是查看CAM 表,而不需要執行打標簽和剝離標簽的動作。

3 本征VLAN

本征VLAN,本征 VLAN 常出現在trunk 類型端口的配置中,也稱為Native VLAN。下面我們搭建一個網絡拓撲,如圖6,來理解本征VLAN。

圖6 PC0 PING PC3 的數據包

PC0(192.168.1.10)屬于VLAN10,PC0(192.168.1.20)屬于VLAN10,PC2 和PC3 沒有加入任何VLAN,也就屬于默認VLAN1。交換機之間使用Trunk 鏈路。這時,PC2 和PC0 不能通信,這很容易理解,因為它們分屬VLAN10 和VLAN1。

但是當PC0 PING PC1,可以通信,ICMP 包在trunk 鏈路上被封裝為802.1Q。PC2 PING PC3,可以通信,但ICMP 包在trunk鏈路上沒有被封裝為802.1Q。

這就是本征VLAN 的作用,Native VLAN(本征VLAN)和其他VLAN 的另外一個區別在于:非Native VLAN 在trunk 中傳輸數據時要被添加VLAN 標記的(如dot1q 或者isl),但是native VLAN 在trunk中傳輸數據時是不進行標記的。當前的本征VLAN 是缺省VLAN,也就是VLAN1,所以屬于VLAN1 的數據在通過trunk 鏈路,是不帶VLAN 標簽的。

但是我們把交換機的trunk 鏈路的本征VLAN 改為VLAN 10:

Switch(config)#int gigabitEthernet 0/1

Switch(config-if)#switchport trunk native VLAN 10

在這里注意,兩個交換機都要配置本征VLAN,而且要一致。

這時候,PC0 PING PC1,發現ICMP 包在trunk 鏈路上沒有被封裝為802.1Q,如圖7 所示。這是因為本征VLAN 已經改為PC0所處的VLAN10 了。

圖7 PC0 PING PC1 的數據包

但是,PC2 PING PC3,發現ICMP 包在trunk 鏈路上被封裝為802.1Q,其中攜帶的VLANID 是1,正是PC2 和PC3 所處的VLAN1,如圖8 所示。

圖8 PC2 PING PC3 的數據包

本征VLAN,可以理解為是不打標簽的VLAN,對于在局域網中數據報文量大的VLAN,在經過交換設備老是打標簽tag,然后再去標簽,很浪費計算資源,指定這種VLAN 在通過trunk 鏈路時不加標簽。另外如果幀在進入trunk 時是沒有標記的,那么trunk 就會給他打上native VLAN 的標記,該幀在trunk 中就以native VLAN 的身份傳輸,native VLAN 是用于trunk 口的,在access 口沒有native VLAN 的概念。

4 結束語

VLAN 的本質就是數據包進入VLAN 環境中,通過增加標簽對數據幀進行隔離。初學者對VLAN 的劃分比較容易掌握,但是對VLAN 的工作機制、相關協議并不是很清楚。作者以思科Packet Tracer 為實驗平臺,通過抓取協議包來分析VLAN 的工作機制,分析了數據在傳輸中如何表明所屬VLAN,如何添加VLAN 標簽以及什么是本征VLAN,以提供對VLAN 技術更清晰的認識。

猜你喜歡
本征交換機報文
基于J1939 協議多包報文的時序研究及應用
基于本征正交分解的水平軸風力機非定常尾跡特性分析
一類4×4無界算子矩陣的本征向量組的塊狀基性質及其在彈性力學中的應用
基于APDL 語言的本征應變法重構激光沖擊強化后的殘余應力場
CTCS-2級報文數據管理需求分析和實現
KP和mKP可積系列的平方本征對稱和Miura變換
淺析反駁類報文要點
更換匯聚交換機遇到的問題
基于地鐵交換機電源設計思考
締造工業級的強悍——評測三旺通信IPS7110-2GC-8PoE工業交換機
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合