一、pvid: 端口vlan id.
從某個端口接收到的數據包將被賦予該端口的pvid 值,然後,將該數據包轉發到其目的地址(查看
交換機的轉發地址表)。如果接收數據包的端口的pvid 與將轉發該數據包的端口的pvid 不同,那麼,交
換機將丟棄此數據包,不進行轉發。
在交換機內,不同的pvid 意味着不同的vlan。
交換機上的每個物理端口都有一個pvid,同時802.1q 端口也會被賦予一個pvid(如果交換機上未定義
vlan,那麼,所有端口都將屬於一個缺省的vlan,其pvid 都等於1)。
接收到的未加標記的(untagged)數據包將被賦予接收端口的pvid 值,是否轉發的決定將依據該
pvid 進行確定。已攜帶有標記信息的(tagged)數據包將根據其標記的vid信息來決定是否進行轉發。
已攜帶有標記信息的(tagged)數據包將根據其標記的vid信息來決定是否進行轉發。已有標記的數
據包也將被賦予一個pvid,但是,並不是根據此pvid 來決定是否轉發該數據包,而是根據其vid 信息來
進行判定。
支持標記功能的交換機(tag-aware switches)必須具有能夠建立交換機內各端口的pvid 與網絡上
的vid 之間關係表的能力。交換機將把數據包中的vid 與將傳送該數據包的端口的vid 進行比較,如果兩
個vid 不同,那麼,交換機將丟棄此數據包,不進行傳送。
由於針對未加標記的數據包存在着pvid,對加過標記的數據包存在着vid,所以,具有標記功能的交
換機和不具有標記功能的交換機可以在同一個網絡中共存。
交換機上的一個端口只可以有一個pvid,但是,可以有多個vid,(也就是是說一個端口可以屬於多
個vlan)。交換機內有vlan 表(vlan table)可以用於存儲vid 信息。
802.1q vlan 需要創建一個包含所有端口的缺省vlan ,這將賦予所有端口的pvid =1 ,並將pvid
對應出相應的vid.
因爲網絡上的有些設備不具有標記功能(tag-unaware),所以,在數據包被傳送之前,具有標記功
能的(tag-aware)設備上的端口必須做出決定將傳送出去的數據包是否應加上一個標記(tag)?如果傳
送端口連接的是一臺不支持標記功能的設備,那麼,數據包就不必加上標記。反之,如果傳送端口連接的
是一臺支持標記功能的設備,那麼,數據包就必須加上標記。
二、如何判斷一個端口爲tagged端口還是一個untagged端口?
1、在一個物理端口上,如果該端口爲access端口則只有一個vlan,且vlan號等於pvid(即native vlan號
碼也就是端口默認的vlan號),且其一定是一個untagged端口。
2、在一個物理端口上,如果該端口爲trunk端口則支持多個vlan,其中vlan號等於pvid的端口爲untagged
,其餘的都爲tagged端口。所以,一個物理端口可以在某一個VID上是Untagged Port,在另一個VID上是
tagged Port。(一個物理端口只能擁有一個PVID,當一個物理端口擁有了一個PVID的時候,必定會擁有和
PVID的TAG等同的VID,而且在這個VID上,這個物理端口必定是Untagged Port。)
三、怎樣判斷一個數據進入端口後是否會被打上標記?
Tagged 數據幀 | Tagged 數據幀 | Untagged數據幀 | Untagged數據幀 | |
in | out | in | out | |
Tagged端口 | 原樣接收 | 原樣發送 | 按端口PVID打TAG標記 | 按端口PVID打TAG標記 |
Untagged端口 | 丟棄 | 去掉TAG標記 | 按端口PVID打TAG標記 | 原樣發送 |
1、一個數據包要進入一個tagged端口,如果其原來是untagged,則給其打上爲tag,號碼爲pvid。
如果其已經爲tagged則原樣輸入
2、一個數據包要進入一個untagged端口,如果其原來是untagged,則給其打上tag,號碼爲pvid。
如果其已經打上了tagged,則丟棄
該包
3、一個數據包要出一個tagged端口,如果其原來是untagged包,則給其打上tag,號碼爲pvid。
如果其原來是tagged包,則原樣輸出
。
4、一個數據包要出一個untagged端口,如果其原來是untagged包,則原樣輸出。
如果其原來是tagged包,則去掉其
tag頭部,變爲untagged。
四、access vlan 與truck vlan 的區別
具有access性質的端口只能屬於一個vlan,且該端口不打tag;
具有trunk性質的端口可以屬於多個vlan,且該端口都是打tag的;
具有hybid性質的端口可以屬於多個vlan,至於該端口在vlan中是否打tag由用戶根據具體情況而定;
如果兩臺交換機都設置有同一VLAN裏的計算機,怎麼辦呢,我們可以通過VLAN Trunk來解決。
如果交換機1的VLAN1中的機器要訪問交換機2的VLAN1中的機器,我們可以把兩臺交換機的級聯端口設置爲Trunk端口,這樣,當交換機把數據包從級聯口發出去的時候,會在數據包中做一個標記(TAG),以使其它交換機識別該數據包屬於哪一個VLAN,這樣,其它交換機收到這樣一個數據包後,只會將該數據包轉發到標記中指定的VLAN,從而完成了跨越交換機的VLAN內部數據傳輸。