浅谈PVID和VID区别
PVID和VID徹底研究(上)
——PVID的作用及和VID的區別
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的人帶來一點幫助。
轉載于:https://www.cnblogs.com/alanjl/archive/2013/05/16/3082525.html
總結
以上是生活随笔為你收集整理的浅谈PVID和VID区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js基础练习---面向对象浅理解分析
- 下一篇: 韩国发射第一枚月球探测器:全球第七