交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)...
一、概述
? ? ?打不打標記Tag,untag以及交換機的各種端口模式是網絡工程技術人員調試交換機時接觸最多的概念了。標記tag就是指VLAN的標簽,數據包屬于哪個VLAN的。交換機三種端口模式Access vlan、Trunk vlan和Hybrid vlan三種,即以太網端口有三種鏈路類型:Access、Hybrid和Trunk。在Trunk和Hybird模式下,存在端口缺省vlan的概念(pvid、native vlan id)。
二、打不打標記(Tag,untag)
tag是指vlan的標簽,即vlan的id,用于指名數據包屬于那個vlan,untag指數據包不屬于任何vlan,沒有vlan標記。
untag就是普通的ethernet報文,普通PC機的網卡是可以識別這樣的報文進行通訊;
tag報文結構的變化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag頭;一般來說這樣的報文普通PC機的網卡是不能識別的。?
下面說了802.1Q封裝tag報文幀結構
ISL Trunk上所有的包都是tag的(Cisco專用);802.1Q 設計的時候為了兼容與不支持VLAN的交換機混合部署,特地設計成可以不tag:但是只有一個VLAN允許不tag,這樣N個VLAN,(N-1)個都tag了,不tag的包一定是來自那個特殊VLAN的,所以不會亂套。(當然也可以所有VLAN都tag)
帶802.1Q的幀是在標準以太網幀上插入了4個字節的標識。其中包含:2個字節的協議標識符(TPID),當前置0x8100的固定值,表明該幀帶有802.1Q的標記信息。
2個字節的標記控制信息(TCI),包含了三個域。
Priority域,占3bits,表示報文的優先級,取值0到7,7為最高優先級,0為最低優先級。該域被802.1p采用。
規范格式指示符(CFI)域,占1bit,0表示規范格式,應用于以太網;1表示非規范格式,應用于Token Ring。
VLAN ID域,占12bit,用于標示VLAN的歸屬。
三、交換機三種端口模式:Access、Hybrid和Trunk
1.三種端口模式
Access類型的端口只能屬于1個VLAN,一般用于連接計算機的端口;
Trunk類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,一般用于交換機之間連接的端口;
Hybrid類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,可以用于交換機之間連接,也可以用于連接用戶的計算機。
2.Hybrid端口和Trunk端口的對比
Hybrid端口和Trunk端口在接收數據時,處理方法是一樣的,唯一不同之處在于發送數據時:Hybrid端口可以允許多個VLAN的報文發送時不打標簽,而Trunk端口只允許缺省VLAN的報文發送時不打標簽。
2.1 端口的缺省VLAN(native/Pvid vlan)
Access端口只屬于1個VLAN,所以它的缺省VLAN就是它所在的VLAN,不用設置;
Hybrid端口和Trunk端口屬于多個VLAN,所以需要設置缺省VLAN ID。缺省情況下,Hybrid端口和Trunk端口的缺省VLAN為VLAN 1。
如果設置了端口的缺省VLAN ID,當端口接收到不帶VLAN Tag的報文后,則將報文轉發到屬于缺省VLAN的端口;當端口發送帶有VLAN Tag的報文時,如果該報文的VLAN ID與端口缺省的VLAN ID相同,則系統將去掉報文的VLAN Tag,然后再發送該報文。
注:對于華為交換機缺省VLAN被稱為“Pvid Vlan”,對于思科交換機缺省VLAN被稱為“Native Vlan”。
2.2 pvid
???pvid,即端口vlan id號,是非標記端口的vlan id 設定,當非標記數據包進入交換機,交換機將檢查vlan設定并決定是否進行轉發。一個ip包進入交換機端口的時候,如果沒有帶tag頭,且該端口上配置了pvid,那么,該數據包就會被打上相應的tag頭!如果進入的ip包已經帶有tag頭(vlan數據)的話,那么交換機一般不會再增加tag頭,即使是端口上配置了pvid號。
? ? 問答:端口的缺省VLAN與pvid的區別???
? ? ? 看了2.1和2.2,有些矛盾,針對于端口在發送和接收打不打標記數據包時,數據包的去向有些矛盾。-----至少我沒理解,大俠可以回帖答疑解惑,謝謝。
? ? ??端口的缺省VLAN與pvid的區別-------應該不是同一個事物。
2.3 交換機接口出入數據處理過程
Acess端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發;如果有則直接丟棄(缺省)
Acess端口發報文:
將報文的VLAN信息剝離,直接發送出去
trunk端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發;如果有判斷該trunk端口是否允許該 VLAN的數據進入:如果可以則轉發,否則丟棄
trunk端口發報文:
比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送,如果不相等則直接發送
hybrid端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發;如果有則判斷該hybrid端口是否允許該VLAN的數據進入:如果可以則轉發,否則丟棄(此時端口上的untag配置是不用考慮的,untag配置只對發送報文時起作用)
hybrid端口發報文:
1、判斷該VLAN在本端口的屬性(disp interface 即可看到該端口對哪些VLAN是untag, 哪些VLAN是tag)
2、如果是untag則剝離VLAN信息,再發送,如果是tag則直接發送
各端口收發數據的表格
| 端口類型 | 收發 | 描述 |
| Access | 收報文 | 判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發,如果有則直接 丟棄(缺省) |
| 發報文 | 將報文的VLAN信息剝離,直接發送出去 | |
| Trunk | 收報文 | 收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發, 如果有判斷該trunk端口是否允許該 VLAN的數據進入:如果可以則轉發,否則丟棄 |
| 發報文 | 比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送, 如果不相等則直接發送 | |
| Hybrid | 收報文 | 收到一個報文判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發, 如果有則判斷該hybrid端口是否允許該VLAN的數據進入:如果可以則轉發,否則丟棄 |
| 發報文 | 判斷該VLAN在本端口的屬性(disp interface 即可看到該端口對哪些VLAN是untag, ?哪些VLAN是tag)如果是untag則剝離VLAN信息,再發送,如果是tag則直接發送 |
? ? ??若某一端口在vlan設定中被指定為非標記端口untagged port, 所有從此端口轉發出的數據包上都沒有標記 (untagged)--類似于access口發報文。若有標記的數據包進入交換機,則其經過非標記端口時,標記將被去除----類似于access口收到帶標記的報文。因為目前眾多設備并不支持標記數據包,其也無法識別標記數據包,因此,需要將與其連接的端口設定為非標記。
? ??若某一端口在vlan設定中被指定為標記端口tagged port, 所有從此端口轉發出的數據包上都將有標記 (tagged)。若有非標記的數據包進入交換機,則其經過標記端口時,標記將被加上。此時,其將使用在ingress 端口上的pvid設定作為增加的標記中的vlan id號。
以下案例可以幫助大家深入理解華為交換機的hybrid端口模式
[Switch-Ethernet0/1]int e0/1
[Switch-Ethernet0/1]port link-type hybrid
[Switch-Ethernet0/1]port hybrid pvid vlan 10
[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
[Switch-Ethernet0/1]int e0/2
[Switch-Ethernet0/2]port link-type hybrid
[Switch-Ethernet0/2]port hybrid pvid vlan 20
[Switch-Ethernet0/2]port hybrid vlan 10 20 untagged
此時inter e0/1和inter e0/2下的所接的PC是可以互通的,但互通時數據所走的往返vlan是不同的。
以下以inter e0/1下的所接的pc1訪問inter e0/2下的所接的pc2為例進行說明
pc1所發出的數據,由inter0/1所在的pvid vlan10封裝vlan10的標記后送入交換機,交換機發現inter e0/2允許vlan 10的數據通過,于是數據被轉發到inter e0/2上,由于inter e0/2上vlan 10是untagged的,于是交換機此時去除數據包上vlan10的標記,以普通包的形式發給pc2,此時pc1->p2走的是vlan10
再來分析pc2給pc1回包的過程,pc2所發出的數據,由inter0/2所在的pvid vlan20封裝vlan20的標記后送入交換機,交換機發現inter e0/1允許vlan 20的數據通過,于是數據被轉發到inter e0/1上,由于inter e0/1上vlan 20是untagged的,于是交換機此時去除數據包上vlan20的標記,以普通包的形式發給pc1,此時pc2->pc1走的是vlan20。
綜上所述,以下列舉 Switch收發 Switch對標記的處理 remark
Access (接收) Tagged =?PVID?不接收 注:部分高端產品可能接收。
Access (接收) Tagged =/?PVID?不接收 注:部分高端產品可能接收。
Access (接收) Untagged 接收 增加tag=PVID?從PC
Access (發送) Tagged =?PVID?轉發 刪除tag?
Access (發送) Tagged =/?PVID?不轉發 不處理?
Access (發送) Untagged 無此情況 無此情況 無此情況
Trunk (接收) Tagged =?PVID?接收 不修改tag?
Trunk (接收) Tagged =/?PVID?接收 不修改tag?
Trunk (接收) Untagged 接收 增加tag=PVID?
Trunk (發送) Tagged =?PVID?If Passing then 轉發 刪除tag?
Trunk (發送) Tagged =/?PVID?If Passing then 轉發 不修改tag?
Trunk (發送) Untagged 無此情況 無此情況 無此情況(注)
Hybrid (接收) Tagged =?PVID?接收 不修改tag 對端是trunk
Hybrid (接收) Tagged =/?PVID?接收 不修改tag 對端是trunk
Hybrid (接收) Untagged 接收 增加tag=PVID?類Trunk
Hybrid (發送) Tagged =?PVID?Tag 和 untag 中列出的vlan可以passing 看Tag項和untag項
Hybrid (發送) Tagged =/?PVID?Tag 和 untag 中列出的vlan可以passing 看Tag項和untag項?
Hybrid (發送) Untagged 無此情況 無此情況 無此情況(注)
另外需要注意的是:
(1)Trunk端口不能和isolate-user-vlan同時配置;Hybrid端口可以和isolate-user-vlan同時配置。但如果缺省VLAN是在isolate-user-vlan中建立了映射的VLAN,則不允許修改缺省VLAN ID,只有在解除映射后才能進行修改。
(2) 本Hybrid端口或Trunk端口的缺省VLAN ID和相連的對端交換機的Hybrid端口或Trunk端口的缺省VLAN ID必須一致,否則報文將不能正確傳輸。
四、參考文獻
1.交換機三種端口模式Access、Hybrid和Trunk的理解
http://blog.sina.com.cn/s/blog_65421bc80100ikdj.html
2.關于Trunk、Hybrid、Access、Tag、Untag、Pvid的關系
http://blog.sina.com.cn/s/blog_5f70c7060100kbev.html
3.有關于Native Vlan 或者 Pvid Vlan
http://blog.csdn.net/hxg130435477/article/details/5907430
轉載于:https://blog.51cto.com/benshitong/1671040
總結
以上是生活随笔為你收集整理的交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到多年的同学什么意思
- 下一篇: [LeetCode] Power of