PVID和VID徹底研究

2021-08-31 02:11:18 字數 4743 閱讀 2802

pvid和vid經常出現於

二、三層交換機裡,由於pvid和vid的設定不合理,造成vlan劃分變得混亂。本文就對pvid和vid進行了徹底研究。

pvid是交換機上的概念,說的是進入該埠的報文如果沒有打vlan id就按pvid的值打上,

vid是報文上的vlan tag的意思.不是同個概念哦.

首先解釋一下什麼是pvid,pvid英文解釋為port-base vlan id,是基於埠的vlan id乙個埠可以屬於多個vlan,但是只能有乙個pvid收到乙個不帶tag頭的資料報時,會打上pvid所表示的vlan號,視同該vlan的資料報處理,所以也有人說pvid就是某個埠預設的vlan id號

預設情況下,簡單的理解為:

access埠接pc,vid=pvid

trunk埠級聯,vid=全部,pvid=1

簡單的說,vid(vlan id)是vlan的標識,定義其中的埠可以接收發自這個vlan的包;而pvid(port vlan id)定義這個untag埠可以**哪個vlan的包。比如,當埠1同時屬於vlan1、vlan2和vlan3時,而它的pvid為1,那麼埠1可以接收到vlan1,2,3的資料,但發出的包只能發到vlan1中

在網上發現乙個比較好的解釋是:pvid並不是加在幀頭的標記,而是埠的屬性,用來標識埠接收到的未標記的幀。也就是說,當埠收到乙個未標記的幀時,則把該幀**到vid和本埠pvid相等的vlan中去。為了驗證這一說法,在s3026上做了以下實驗:

在s3026上選兩個埠,連線兩台主機a、b,按照下表給埠設定不同的pvid和vid,用a ping b,並在b上抓包,記錄實驗結果。

注:結果中「有」表示抓包有icmp的包(但ping不同),「無」表示沒有,「通」表示可以ping通。vid為「無」表示該埠沒有加到任何vlan裡。

所有結果為「無」的可以解釋為:當埠1收到無標記的幀後,**到vid=pvid=1的埠去,由於埠2無vid,故主機b收不到包。

所有結果為「有」的可以解釋為:當埠1收到無標記的幀後,**到vid=pvid=1的埠去,由於埠2的vid=1,故主機b收到icmp的echo包,並發出echo reply,由於此種情況下埠1的vid不等於1,故b的reply並不能到達a。所以只有當兩個埠的pvid和vid一樣時,才可以互通。

到此我和大家一樣有個疑問,乙個vlan幹嗎要設定pvid和vid兩種標識呀?方正只有當pvid=vid時才能互通,只有乙個不就夠了嗎?請往下看。

當所有vlan都在乙個交換機裡時,確實只需要乙個標識就夠了,但跨裝置的vlan就需要另一種標識,這就是802.1q的vlan id,即vid

我們知道802.1q的vlan是在二層幀裡加進vlan標識,俗稱打tag,而計算機不能解析這種二層的幀,所以交換機的乙個埠在分到乙個vlan時有tag和untag屬性,tag埠用來連線裝置,untag埠用來連線計算機。tag埠出去的幀一般都打上了tag,tag中的vid有的來自pvid,有的則來自其它tag埠中本身就含有tag的幀

裝置互連時,由tag中的vid決定了乙個二層幀屬於哪個vlan,而計算機不具備打tag的功能,所以只有給連線計算機的埠新增乙個屬性,用來決定計算機發出的未標記的幀屬於哪個vlan,這個屬性就是pvid

我們來總結一下,s3026的vlan**的機制:在乙個埠接收到乙個無標記幀時,僅僅由該埠的pvid決定該幀**到哪個vlan中,即**到vid=pvid的vlan中

到此我們理解了pvid的含義和作用,但似乎只有untag埠下的pvid才具有意義,而實際上tag埠也有pvid屬性,pvid對tag埠會造成什麼影響呢?請看中篇。

pvid和vid徹底研究(中)

——pvid值對tag埠影響

在上篇,我們理解了pvid的含義和作用,本篇將通過實驗,分別在s3026和s3526上研究pvid值對tag埠的影響。首先在s3026上進行實驗,如下圖所示:

我們將用到3個埠:port 1、2、3,

各埠pvid設定如下:

port 1:pvid = n

port 2:pvid = 2

port 3:pvid = 3

建立2個vlan:

vlan2:vid = 2,包含port 1 (tag)、port 2 (untag)

vlan3:vid = 3,包含port 1 (tag)、port 3 (untag)

將3臺主機a、b、c分別接在port 1、2、3上,

分別用主機b、c去ping主機a,在主機a上抓包。

實際上tag埠接計算機是沒有意義的,因為計算機無法解析打了tag的二層包文,但通過抓包軟體可以抓到這種二層報文,通過這種方法可以進行分析。

實驗時主機b和c可以是同一臺計算機,只不過接到不通埠上,為了方便說明,將它們分開表示。

實驗結果如下:

當n = 1時,可以看到來自b和c的包頭前都含有802.1q的packet,b、c都不能ping通a(ping不通的由於主機a無法解析打了tag的二層包);

當n = 2時,可以看到來自b的包頭前不含有802.1q的packet,而來自c的有,僅b可ping通a;;

當n = 3時,可以看到來自c的包頭前不含有802.1q的packet,而來自b的有,僅c可ping通a;;

通過分析,得出s3026**機制大致如下:

1、由主機b發出的包到介面2(由於此時b不知道a的mac位址,會發出arp廣播包)

2、根據介面2的pvid的值(pvid=2),發往vid=2的vlan中的所有介面

3、介面1屬於vlan 2,所以介面1能收到此包

4、此時如果vlan 2中介面1是tag埠,則將介面1的pvid值和vid進行比較:

如果pvid=vid則從介面1出去的包不打tag

如果pvid!=vid則從介面1出去的包打tag

由此可見,以前設為tag埠的pvid不起作用的說法在s3026上並不適用,正確的說法應該是:s3026上的某個vlan中的tag埠,在**在此vlan中包時出去前,先檢查該tag埠的pvid是否等於vid,若相等則發出的包不打tag,若不等則打上tag。

而在s3526上重複這個實驗時,得到了不同的結果:在s3526上,只要某個vlan中的埠設為tag埠,在**來在此vlan中包時出不管該埠的pvid值是多少,都打上tag。(不同廠家裝置的實現方式不一樣,需要注意!)

到此,我們都只是在單獨乙個裝置上研究pvid的影響,下篇將結合乙個故障例項,解釋跨裝置時pvid的影響。

pvid和vid徹底研究(下)

——乙個故障例項的分析

某網組網結構如下圖所示,某路由器下掛s3526,s3526下掛s3026,s3026下面接了4個使用者:

其中s3526的介面1上接路由器,打tag標記;介面2接s3026,打tag標記,pvid為1。

s3026的配置是這樣的:

s3026的介面1上接s3526,打tag標記,屬於vlan 2、3、4、5,pvid為2;

介面2接使用者2,屬於vlan 2,pvid為2;

介面3接使用者3,屬於vlan 3,pvid為3;

介面4接使用者4,屬於vlan 4,pvid為4;

介面5接使用者5,屬於vlan 5,pvid為5;

故障現象為:使用者2的使用者無法上網,而其它的使用者可以上網;如果將s3026的上連口的pvid值配置為3,那麼使用者3的使用者無法上網,其它的使用者可以上網;

最後我們將s3026的上連口的pvid值設定為1,4個使用者的使用者就都可以上網了。

根據前兩篇的結論,我們發現,介面1的pvid=2,故從vlan 2來的包從介面1出去後不打tag,而此時s3526的介面2的pvid=1,收到未標記得包後,將其送到vlan 1裡。原本vlan 2的包送到了錯誤的vlan裡,所以vlan 2下的使用者上不了網。

當我們將s3026介面1的pvid設為1時,它不等於所屬任何vlan地vid,送出去的包都打了tag,此時s3526能根據tag將接受到的包送到正確的vlan裡,故所有vlan下使用者都能上網了。

我們可以補充乙個實驗,將s3026的介面1和s3526的介面2的pvid都設為2,此時所有使用者都能正常上網,原因是這樣的:s3026將vlan 2的包不打tag的從介面1送出去,s3526的介面2收到的包有打tag的(vlan 3、4、5),也有不打tag的(vlan 2)。s3526的介面2對於打tag的包,能夠發往正確的vlan;不打tag的包,根據介面2的pvid值,送到vid=pvid的vlan裡,而此時介面2的pvid=2,也恰巧正確的送到了vlan 2裡。所有vlan的包在跨裝置後,通過不同的方式,都正確的發往所在的vlan,於是所有使用者都能正常上網,只不過vlan 2和其它的vlan途徑有點不同。可見,裝置兩端的pvid一致時,在解決問題的同時,也把潛在問題給隱藏起來。例如在把s3526隔接為其它裝置時,可能會又造成某個vlan的使用者上不了網,而此時故障原因不容易找到。

我們來總結一下,交換機的pvid和vid給vlan配置帶來了靈活性,同時也帶來了一些麻煩,配置的不好可能帶來問題很隱蔽。所以我們以後在配置vlan時要注意以下幾點:

1、 對於untag埠,pvid要和所屬vlan的vid一致;

2、 對於tag埠,pvid要不同於所有所屬vlan的vid;

3、 兩台裝置互聯時,兩端介面的pvid保持一致時,有弊也有利

到此,我們真正意義上理解了基於埠的vlan,也理解了pvid的作用,希望本文能給困惑於pvid和vid的人帶來一點幫助。

PVID和VID徹底研究

pvid和vid徹底研究 上 pvid的作用及和vid的區別 pvid和vid經常出現於 二 三層交換機裡,由於pvid和vid的設定不合理,造成vlan劃分變得混亂。本文就對pvid和vid進行了徹底研究。pvid是交換機上的概念,說的是進入該埠的報文如果沒有打vlan id就按pvid的值打上,...

PVID和VID的理解

vid vlan id 是vlan的標識,在交換機裡面用來劃分埠。比如乙個交換機有8個埠,現在將port1,port2,port5三個埠的vid設定成1111,那麼這三個埠就能接收vlantag 1111的資料報。擁有和資料幀tag標記一致的vid的物理埠,不論是否在這個vid上是untagged ...

PVID和VID的理解

vid vlan id 是vlan的標識,在交換機裡面用來劃分埠。比如乙個交換機有8個埠,現在將port1,port2,port5三個埠的vid設定成1111,那麼這三個埠就能接收vlantag 1111的資料報。擁有和資料幀tag標記一致的vid的物理埠,不論是否在這個vid上是untagged ...