絕大多數人沒搞懂的思科VTP修剪原理

作爲一名技術人、老IT圖書作者,一直秉持着一個習慣,那就是喜歡“深入背後”,發現大多數人不知道的“祕密”,因爲這些纔是真正的“乾貨”。正因如此,每個領域都會許多“Why”要去找答案,但在國內是很難找到的,有的僅是一些人云亦云,連作者自己都不知道說什麼的膚淺,甚至是錯誤的論述。看這類圖書或文章,問一萬個“爲什麼”都還嫌少。

這裏就舉一個實例,就是關於Cisco自己的私有協議VTP中的VTP修剪功能。網上介紹這一功能的文章大把,幾乎所有Cisco設備圖書也都介紹了這一功能,但很遺憾幾乎沒有看到正確介紹了這一功能的作用和工作原理的圖書或文章。不信,如果你學了這項技術,你自己問一下自己,你知道答案嗎?相信至少90%的人答不上,或者連自己都沒理解的書上或網上說法。最根本原因就是Cisco自己的官方文檔是英文的,而且這方面的原理介紹實在是太簡單,真正的理解就全靠自己摸索了。PS一句,思科官網上的錯誤也比較多,特別是一些命令格式輸入不嚴謹,明明是可選的,但從格式上看卻是必選的。這對於初學者來說是很難發現的。

1. VTP修剪與Trunk VLAN許可的區別

說到VTP修剪就很容易與Trunk端口的VLAN許可搞混,甚至認爲是一樣的,因爲表面上看它們都是基於VLAN的許可。其實兩者的引入背景,或者說出發點是根本不一樣的。

引入VTP修剪功能的出發點是爲了限制對於鄰居交換機來說沒有意義的廣播、組播和未知單播流量在中繼鏈路上傳輸,以節省中繼鏈路的帶寬使用,因爲交換機上根本沒有在這些VLAN中的設備(交換機上沒有任何端口的Native VLAN,或者Default VLAN是該VLAN),所以最終這些沒有意義的泛洪流量也會在鄰居交換機上被丟棄。而引入Trunk VLAN許可功能的目的就是明確規定哪些VLAN中的幀可以在當前中繼鏈路上通過,哪些不可以通過,但其出發點不是爲了節省中繼教鏈路的帶寬使用,而是爲了限制設備或用戶間的通信(包括各種通信)。

儘管這兩者最終的結果是被限制的VLAN中的幀都不能通過所在中繼鏈路,但VTP修剪實際上僅作用於廣播、組播和未知單播之類的泛洪流量,因爲此時鄰居交換機上沒沒有連接對應VLAN中的設備,不存在該VLAN內部的單播通信。相反,如果鄰居交換機連接了某VLAN中的設備,則該VLAN又不能在連接該交換機的Trunk接口上被VTP修剪。而Trunk端口的VLAN許可是直接進行限制,而且是針對這些VLAN中的各種通信流量。

2. VTP修剪功能的工作原理

那問題又來了,爲什麼鄰居交換機上沒有連接到位於VLAN的設備,卻有該VLAN中的流量發往該交換機呢?這就又涉及到VTP的功能了。VTP是用來做什麼的?是用來在交換網絡上進行動態VLAN註冊的,類似於通用的GVRP協議。啓用了VTP功能後,VTP客戶交換機上的VLAN配置就可以與VTP服務器上的VLAN配置保持同步,即使某個客戶交換機上根本沒有連接位於某VLAN中的設備。也就是很可能在VTP客戶交換機上創建了許多根本不需要的VLAN。

如圖1所示,VTP服務器SwitchB上創建了VLAN 2~5,共4個VLAN。假設各交換機所連接的設備僅位於圖中所示的VLAN中。SwitchA和SwitchC根本沒有連接位於VLAN 4~5中的設備,所以這兩臺交換機上實際上也不需要註冊這兩個VLAN,但VTP的VLAN動態註冊是不能限制的,所以SwitchA和SwitchC同樣仍有VLAN 2~5這4個VLAN。可通過執行show vlan brief特權模式命令查看,如圖2所示。

很多人沒搞懂的思科VTP修剪原理                             

                                             圖1 VTP修剪配置示例拓撲結構

很多人沒搞懂的思科VTP修剪原理

                           圖2 VTP客戶交換機動態創建的VLAN

如果僅是VLAN創建還沒多大影響,因爲沒有位於這些VLAN的用戶的話,也就不存在這些VLAN內部的單播通信。但是對於廣播、組播、未知單播通信,它們不是從特定的路徑發給特定的用戶,而是會從所有允許這些VLAN通過的Trunk鏈路上以泛洪方式向鄰居交換機發送,即使這些交換機根本沒有位於這些VLAN中的設備。最終的結果就是這些交換機在Trunk端口上收到這些流量後直接丟棄。但這些無用的流量在到達到鄰居交換機前還是佔用了Trunk鏈路帶寬的,造成了帶寬浪費。

啓用了VTP修剪功能後,以上問題就可以得到有效解決,因爲VTP修剪功能會自動根據鄰居交換機是否有成員端口分配到該VLAN來決定是否向此鄰居交換機發送該VLAN中的流量(其實是同時包括單播和泛洪流量的,只是鄰居交換機上沒有位於某VLAN中的設備時,就不會存在該VLAN內的單播流量通過,所以實際上只可能有泛洪流量),以實現對某些VLAN中的泛洪流量進行修剪。

交換機如何獲知鄰居交換機上是否存在有某VLAN中的成員端口呢?這也是VTP中的功能,就是要啓用了VTP協議後,當交換機上的VLAN有加入的成員端口(真正加入,不是僅允許通過)時,它會向鄰居交換機發送通告(Advertisement)消息,向上遊鄰居交換機通知它自己在該VLAN上活動的端口,即所加入的成員端口。這些信息隨後由上游鄰居交換機存儲,並用於決定是否應該通過中繼端口將VLAN中的泛洪通信轉發到交換機。

3. VTP修剪資格列表

默認情況下,在全局啓用了VTP修剪功能後,鄰居交換機上已動態創建,但所有無成員端口的VLAN中的泛洪量都將被修剪,不允許向該鄰居交換機發送。

如在圖1中的示例中,僅在VTP服務器SwitchB上創建了VLAN 2~5,所以VTP服務器向VTP客戶交換機上傳播的也是這4個VLAN的註冊信息,在VTP客戶交換機SwitchA和SwitchC上自己創建了這4個VLAN,如圖2所示。

但因爲SwitchA上沒有加入VLAN 3~5的端口(只有E0/2端口加入VLAN 2),所以SwitchB連接SwitchA的E0/1接口上的VTP資格列表是VLAN 3~5,而SwitchC上沒有加入VLAN 2、4~5的端口(只有E0/2端口加入VLAN 3),所以SwitchB連接SwitchC的E0/2接口上的VTP資格列表是VLAN 2、4~5。執行show interface pruning命令可以查看,如圖3所示。

很多人沒搞懂的思科VTP修剪原理

                                     圖3 默認的VTP修剪資格列表

在實際配置中,管理員還可針對具體的Trunk端口(可以在VTP客戶交換機上,但更多是在VTP服務器上)進行VTP修剪資格列表配置,手工指定允許進行修剪的VLAN,即修剪資格列表。位於這個列表中的VLAN中的泛洪流量都將不再通過該Trunk接口對應的鏈路向鄰居交換機發送,不在這個列表中的VLAN中的泛洪流量仍然可以向鄰居交換機發送,儘管該鄰居交換機也沒有成員端口分配到這些VLAN中。但是一定要注意,在配置修剪資格列表時,其中包括的VLAN必須是所連鄰居交換機上沒有分配成員端口的VLAN,否則即使加入了修剪資格列表也起不到泛洪流量修剪的作用。可以修剪的VLAN範圍爲VLAN 2~1001,VLAN 1、VLAN 1002~1005,以及擴展範圍VLAN均不能被修剪。

圖4是對VTP服務器SwitchB的E0/1和E0/2接口修改了VTP修剪列表後VTP修剪資格列表。

很多人沒搞懂的思科VTP修剪原理

                                           圖4 手工修改的VTP資格列表

至於最終效果的驗證,可以在設備上抓包,如ARP廣播包,看在啓用了VTP修剪後,某些VLAN中設備發出的ARP請求包是否還可以通過Trunk鏈路向鄰居交換機傳輸。

以上僅主要就VTP修剪功能、修剪原理,以及修剪資格列表配置作了比較具體的介紹,當然VTP協議還涉及到許多更深層次的工作原理,如VTP通告、VTP消息內容和格式、VTP協議交互等,在此就不作具體介紹,因爲這涉及到太多內容了,具體在我的會員視頻課程中有詳細介紹,想要深入瞭解的,請關注我,並私信諮詢。

本公司有國內唯一全面包括華爲、H3C和Cisco三大主流品牌的超系統、超實戰視頻課程(共1200小時以上,1000個以上實戰實驗),在CSDN學院上的課程中心地址爲https://edu.csdn.net/lecturer/74 ,歡迎試聽、選購,有問題可以加學員交流QQ羣:398772643 ,或加微信windanet諮詢。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章