實例解析GVRP、VTP協議和Trunk技術
原創【51CTO.com 獨家特稿】GVRP、VTP協議和Trunk技術三者之間有很多的相似性:它們都屬于二層協議或二層技術;在這三者的具體配置命令中,涉及最多的配置就是VLAN方面的配置;三者的廣泛應用都是為了精簡網絡維護人員在配置和管理網絡設備時,對命令頻繁和大量的使用。但它們之間又有著根本的不同,下面就以三則實例,分別對其進行全面的介紹。
一、GVRP在H3C交換機上的應用
GVRP(GARP VLAN Registration Protocol,GARP VLAN注冊協議)是GARP(Generic Attribute Registration Protocol,通用屬性注冊協議)的一種應用。GARP的應用主要包括GMRP和GVRP,其中GMRP(GARP Multicast Registration Protocol,GARP組播注冊協議)是基于GARP的一個組播注冊協議。用于維護交換機中的組播注冊信息。而GVRP維護設備中的VLAN 動態注冊信息,并傳播該信息到其它的設備中。
設備啟動 GVRP 特性后,能夠接收來自其它設備的VLAN 注冊信息,并動態更新本地的VLAN 注冊信息,包括當前的VLAN 成員、這些VLAN 成員可以通過哪個端口到達等。而且設備能夠將本地的VLAN 注冊信息向其它設備傳播,以便使同一局域網內所有設備的VLAN 信息達成一致。GVRP 傳播的VLAN 注冊信息既包括本地手工配置的靜態注冊信息,也包括來自其它設備的動態注冊信息。下面就通過一則實例介紹GVRP協議在H3C交換機上的應用。
圖1 三個H3C S3100交換機兩兩互聯圖示
如圖1所示,三臺交換機的型號都是H3C S3100-52TP-SI,兩兩互聯。設備間的連接情況如下所示:
- S3100-A Eth 1/0/1 <-----> S3100-B Eth 1/0/1
- S3100-B Eth 1/0/2 <-----> S3100-C Eth 1/0/1
- S3100-C Eth 1/0/2 <-----> S3100-A Eth 1/0/2
在S3100-A上的配置:
- [S3100-A] gvrp
- //開啟全局GVRP功能,缺省情況下,全局GVRP功能處于關閉狀態
- [S3100-A] interface ethernet 1/0/1
- [S3100-A-Ethernet1/0/1] port link-type trunk
- [S3100-A-Ethernet1/0/1] port trunk permit vlan all
- [S3100-A] interface ethernet 1/0/2
- [S3100-A-Ethernet1/0/2] port link-type trunk
- [S3100-A-Ethernet1/0/2] port trunk permit vlan all
- //將兩個以太網端口Ethernet1/0/1和Ethernet1/0/2 配置為Trunk 端口,并允許所有VLAN 通過
- [S3100-A-Ethernet1/0/1] gvrp
- [S3100-A-Ethernet1/0/2] gvrp
- //在兩個Trunk 端口上開啟GVRP功能,缺省情況下,端口GVRP 功能處于關閉狀態
- [S3100-A] vlan 2
- //配置靜態VLAN2
- 在S3100-B上的配置:
- [S3100-B] gvrp
- //開啟全局GVRP功能
- [S3100-B] interface ethernet 1/0/1
- [S3100-B-Ethernet1/0/1] port link-type trunk
- [S3100-B-Ethernet1/0/1] port trunk permit vlan all
- [S3100-B] interface ethernet 1/0/2
- [S3100-B-Ethernet1/0/2] port link-type trunk
- [S3100-B-Ethernet1/0/2] port trunk permit vlan all
- //將兩個以太網端口Ethernet1/0/1和Ethernet1/0/2 配置為Trunk 端口,并允許所有VLAN 通過。
- [S3100-B-Ethernet1/0/1] gvrp
- [S3100-B-Ethernet1/0/2] gvrp
- //在兩個Trunk 端口上開啟GVRP功能
- [S3100-B-Ethernet1/0/2] gvrp registration fixed
- //配置端口注冊模式為Fixed,缺省情況下,GVRP 端口注冊模式為Normal
- [S3100-B] vlan 3
- //配置靜態VLAN3
- 在S3100-C上的配置:
- [S3100-C] gvrp
- //開啟全局GVRP功能
- [S3100-C] interface ethernet 1/0/1
- [S3100-C-Ethernet1/0/1] port link-type trunk
- [S3100-C-Ethernet1/0/1] port trunk permit vlan all
- [S3100-C] interface ethernet 1/0/2
- [S3100-C-Ethernet1/0/2] port link-type trunk
- [S3100-C-Ethernet1/0/2] port trunk permit vlan all
- //將兩個以太網端口Ethernet1/0/1和Ethernet1/0/2 配置為Trunk 端口,并允許所有VLAN 通過。
- [S3100-C-Ethernet1/0/1] gvrp
- [S3100-C-Ethernet1/0/2] gvrp
- //在Trunk 端口上開啟GVRP功能
- [S3100-C-Ethernet1/0/1] gvrp registration forbidden
- [S3100-C-Ethernet1/0/2] gvrp registration forbidden
- //配置兩個端口的注冊模式都為Forbidden
- [S3100-C] vlan 4
- //配置靜態VLAN4
以上三個H3C交換機上的配置命令看著好像都一樣,但其實在最關鍵的地方都會有細微的差別。主要就是在配置端口的注冊模式時,三個交換機上端口的配置是不一樣的。S3100-A的兩個端口上沒有專門配置注冊模式,但默認情況下使用的就是Normal模式,所以S3100-A的Ethernet1/0/1和Ethernet1/0/2的端口注冊模式為Normal;S3100-B上的Ethernet1/0/1也沒有專門配置注冊模式,所以它也是Normal模式,而S3100-B的Ethernet1/0/2端口注冊模式配置成了Fixed模式;S3100-C上的兩個端口配置成了Forbidden模式。所以這幾個端口在實際的運行中,所傳播VLAN的機制會有所不同。
可以使用命令"display vlan dynamic"來查看驗證各個端口的運行機制,命令中的dynamic參數是指,顯示系統動態創建的VLAN的數量和編號,動態VLAN是指通過GVRP協議生成或通過Radius服務器所下發的VLAN。下面是在三臺交換機上分別執行"display vlan dynamic"的顯示結果:
- [S3100-A] display vlan dynamic
- Now, the following dynamic VLAN exist(s):
- 3
- //顯示S3100-A上的動態VLAN 信息
- [S3100-B] display vlan dynamic
- Now, the following dynamic VLAN exist(s):
- 2
- //顯示S3100-B上的動態VLAN 信息
- [S3100-C] display vlan dynamic
- Now, the following dynamic VLAN exist(s):
- No dynamic vlans exist!
- //顯示S3100-C上的動態VLAN 信息
從以上的輸出結果可以看出,S3100-A和S3100-B兩臺交換機之間可以互相交換所創建的VLAN,這是因為S3100-A的Ethernet1/0/1和S3100-B的Ethernet1/0/1端口的注冊模式都是Normal模式,此模式允許端口動態注冊、傳播動態VLAN 以及靜態VLAN 信息。但是在S3100-A和S3100-B兩臺交換機上看不到S3100-C交換機所創建的VLAN 4,同時在S3100-C上也看不到S3100-A和S3100-B兩臺交換機所創建的VLAN 2和VLAN 3信息,這是因為雖然分別在S3100-A和S3100-B的Ethernet1/0/2端口上配置了Normal和Fixed模式,但S3100-C兩個端口的注冊模式都是Forbidden,所以S3100-C和其它兩臺交換機之間也就不能交換除VLAN 1以外的所有VLAN信息。GVRP的端口注冊模式有以下三種:
Normal模式:允許該端口動態注冊、注銷VLAN,傳播動態VLAN 以及靜態VLAN 信息。
Fixed模式:禁止該端口動態注冊、注銷VLAN,只傳播靜態VLAN 信息,不傳播動態VLAN 信息。也就是說被設置為Fixed 模式的Trunk 口,即使允許所有VLAN 通過,實際通過的VLAN 也只能是手動配置的那部分。
Forbidden模式:禁止該端口動態注冊、注銷VLAN,不傳播除VLAN1 以外的任何的VLAN 信息。也就是說被配置為Forbidden 模式的Trunk 端口,即使允許所有VLAN 通過,實際通過的VLAN也只能是VLAN1。
另外,可以通過一些"display gvrp"命令顯示配置后GVRP的運行情況,或者是查看顯示信息驗證配置效果。命令如下所示:
- [H3C-S3100]display gvrp status
- //顯示GVRP 的全局狀態信息
- [H3C-S3100]display gvrp statistics [ interface interface-list ]
- //顯示 GVRP 的統計信息
- [H3C-S3100]display gvrp state interface interface-type interface-number vlan vlan-id
- //顯示 GVRP 的狀態機信息
- [H3C-S3100]display gvrp vlan-operation interface interface-type interface-number
- //顯示當前的動態 VLAN 操作信息
#p#
二、Trunk技術在Cisco交換機和H3C交換機之間的應用
圖2 Cisco 3750和H3C S3100交換機相連圖示
從上面的例"一"中,可以看出GVRP協議可以減輕網絡維護人員,在進行網絡設備二層配置方面的工作量。可能在配置幾個,或十幾個VLAN時感覺不出GVRP的作用所在,但如果要配置的VLAN數量在成百上千的話,馬上就能體現出GVRP的巨大功用。只需要在一臺設備上配置好相關的VLAN,其它的設備只要設置好GVRP的相關設置,它就會自動把VLAN的配置同步過去。
但是,所有協議的使用都只能在支持它的設備上使用,GVRP協議在以前思科的CatOS系統上支持的還比較好。目前,大部分的思科IOS系統已不支持GVRP協議。而目前H3C的設備基本上都能支持GVRP協議。所以在實際工作中,如果使用的網絡設備都是思科的設備,或者所有的設備都是H3C設備,就可以使用VTP或GVRP協議簡化網絡的配置工作。但若是思科的設備和H3C的設備放在一起使用話,GVRP協議和VRP協議就不能再應用了。如圖2所示,一臺Cisco 3750交換機和一臺H3C S3100相連,它們相連的端口分別為Cisco 3750 GigabitEthernet1/0/1和H3C S3100 GigabitEthernet1/1/1。
為了讓兩臺交換機中的VLAN數據能夠互相通信,最好的方法就是使用Trunk技術。如下所示是在H3C和Cisco交換機上所做的Trunk配置:
- [H3C-S3100] interface GigabitEthernet1/1/1
- [H3C-S3100-GigabitEthernet1/1/1] port link-type trunk
- [H3C-S3100-GigabitEthernet1/1/1] port trunk permit vlan all
- //把H3C-S3100的GigabitEthernet 1/1/1端口配置為trunk模式,并允許所有VLAN通過
- Cisco 3750(config)#interface GigabitEthernet1/0/1
- Cisco 3750(config-if)# switchport trunk encapsulation dot1q
- Cisco 3750(config-if)#switchport trunk allowed vlan all
- Cisco 3750(config-if)#switchport mode trunk
- //把Cisco 3750的Gig1/0/1端口配置為trunk模式,并指定封裝模式為dot1q
在進行上面的配置命令時,在Cisco的交換機上最好指定trunk的封裝模式,因為默認情況下,思科設備使用的封裝模式可能是思科專有的封裝模式ISL。而H3C交換機只支持dot1q的封裝模式,所以雙方必須匹配才行。配置完上面的命令后,也可以使用如下所示的命令,查看在端口上配置的Trunk情況:
- Cisco 3750#show interface trunk
- Port Mode Encapsulation Status Native vlan
- Gi1/0/1 on 802.1q trunking 1
- Port Vlans allowed on trunk
- Gi1/0/1 1-4094
- //在Cisco 3750上查看顯示的結果
- [H3C-S3100]display port trunk
- The following trunk ports exist:
- GigabitEthernet1/1/1
- //在H3C S3100上查看顯示的結果
通過上面的查看命令可以確定,在兩個交換機上的兩個端口上已做好了Trunk的配置。這時只要在兩臺交換機上分別創建相同的VLAN,并把Cisco 3750和H3C S3100交換機上的其它端口都劃入到所創建的VLAN中,并在兩個交換機上分別接入兩個終端,并在終端上配置相應的IP地址,這樣兩個終端就可以通過兩個交換機進行通信了。例如,在兩臺交換機上都創建了VLAN 2,并把Cisco 3750的Gi1/0/2和H3C S3100的Eth1/0/1都劃入到VLAN 2中,然后分別在這兩個端口上接入PC1和PC2,PC1的IP地址為192.168.2.1 255.255.255.0,PC2的IP地址為192.168.2.2 255.255.255.0,這樣在PC1上就能ping通PC2的IP地址192.168.2.2,同理PC2也能ping通PC1。
通過上面的配置,使用Trunk技術也就很好的解決了不同型號網絡設備之間的數據通信。#p#
三、VTP協議在Cisco交換機上的應用
圖3 四個Cisco 3750交換機通過Trunk線相連圖示
VTP(VLAN Trunking Protocol)協議是思科私有協議,它的作用和上面提到的GVRP協議基本一致。如圖3所示,網絡中共使用了四臺Cisco 3750交換機,設備間的連接情況如下所示:
- 3750-A GigabitEthernet 1/0/1 <-----> 3750-C GigabitEthernet 1/0/1
- 3750-A GigabitEthernet 1/0/2 <-----> 3750-B GigabitEthernet 1/0/1
- 3750-B GigabitEthernet 1/0/2 <-----> 3750-D GigabitEthernet 1/0/2
- 3750-C GigabitEthernet 1/0/2 <-----> 3750-D GigabitEthernet 1/0/1
網絡中的四條線路都是Trunk線路,每臺交換機上的兩個端口都配置成了Trunk口,其中3750-A上的兩個端口的配置如下所示:
- 3750-A(config)#interface GigabitEthernet1/0/1
- 3750-A(config-if)# switchport trunk encapsulation dot1q
- 3750-A(config-if)#switchport trunk allowed vlan all
- 3750-A(config-if)#switchport mode trunk
- 3750-A(config)#interface GigabitEthernet1/0/2
- 3750-A(config-if)# switchport trunk encapsulation dot1q
- 3750-A(config-if)#switchport trunk allowed vlan all
- 3750-A(config-if)#switchport mode trunk
然后在3750-B、3750-C和3750-D三臺交換機上共六個端口上的Trunk配置命令和上面在3750-A上兩個端口的配置命令是一樣的。
下面是在四臺Cisco 3750交換機上配置VTP的命令:
- 3750-A(config)#vtp version 2
- 3750-A(config)#vtp domain cisco
- 3750-A(config)#vtp password 123456
- 3750-A(config)#vtp mode server
- //在3750-A上配置VTP,并把VTP模式配置為server
- 3750-B(config)#vtp version 2
- 3750-B(config)#vtp domain cisco
- 3750-B(config)#vtp password 123456
- 3750-B(config)#vtp mode client
- //在3750-B上配置VTP,并把VTP模式配置為client
- 3750-C(config)#vtp version 2
- 3750-C(config)#vtp domain cisco
- 3750-C(config)#vtp password 123456
- 3750-C(config)#vtp mode client
- //在3750-C上配置VTP,并把VTP模式配置為client
- 3750-D(config)#vtp version 2
- 3750-D(config)#vtp domain cisco
- 3750-D(config)#vtp password 123456
- 3750-D(config)#vtp mode transparent
- //在3750-D上配置VTP,并把VTP模式配置為transparent
在進行上面的配置時需要注意,所有交換機必須使用相同的VTP域名,除非網絡設計時就強調了多個不同的VTP域;在同一個VTP域中,所有的交換機都必須運行同一個VTP版本;在同一個VTP域中,在交換機上配置VTP密碼并不是必須的,但如果要使用VTP密碼,所有的交換機就必須使用相同的VTP密碼;所有VTP服務器模式的交換機都應具有相同的配置修改編號,而且應當是在最高編號的域中;在必須把一個交換機從透明模式轉換成服務器模式時,先要把透明模式交換機上的所有VLAN退出服務器模式。
配置完上面的命令后,就可以在VTP模式是server的3750-A上創建VLAN,然后所創建的VLAN會自動分發到3750-B和3750-C上。也就是在3750-B和3750-C上不用手動創建VLAN,它們上面就會自動生成在3750-A上所創建的VLAN。例如,在3750-A上創建了VLAN 2, 那么在3750-B和3750-C上,使用命令"show vlan",就能查看到在這兩個交換機上也存在VLAN 2。但是在3750-D上就查看不到存在VLAN 2的信息。
這是因為3750-A 的VTP模式是server模式,它可以維護該VTP域中所有VLAN 信息列表,可以創建、刪除或修改VLAN。而3750-B和3750-C 的VTP模式是client模式,它雖然也維護所有VLAN信息列表,但其VLAN的配置信息是從3750-A學到的。VTP Client不能建立、刪除或修改VLAN。另外,3750-D的VTP模式是Transparent,它相當于是網絡中一臺獨立的交換機,不參與VTP的工作,它不從VTP Server學習VLAN的配置信息,它只擁有本交換機上自己維護的VLAN信息。3750-D只可以創建、刪除和修改本機上的VLAN信息。
可以使用命令"show vtp status"查看交換機上配置VTP的基本信息,如下所示是在3750-A上執行此命令的輸出:
- 3750-A#show vtp status
- VTP Version : 2
- Configuration Revision : 6
- Maximum VLANs supported locally : 1005
- Number of existing VLANs : 1
- VTP Operating Mode : Server
- VTP Domain Name : cisco
從上面所配置的命令可以看出,如果把3750-A、3750-B和3750-C上還沒有使用的端口都劃入到VLAN 2中,那接入到所有這些端口上的終端之間就可以通信了,因為這些終端實際上都是位于VLAN 2的這個局域網中。但是如果想讓連接到VTP模式是Transparent的3750-D上的終端,也能和連接到3750-A上的位于VLAN 2中的終端之間相互通信,那還需要做那些配置?
因為3750-D交換機VTP模式的緣故,它上面并沒有自動創建VLAN 2,不過這時我們可以在3750-D上手動創建VLAN 2,又因為3750-D與兩個交換機3750-B和3750-C的連接都是Trunk連接,并且允許所有VLAN在其上通過。所以,只要在3750-D上手動創建了VLAN 2,并把3750-D上沒有使用的端口都劃入到VLAN 2中,這樣接入到位于3750-D上VLAN 2中端口的終端,也就能和接入到3750-A上VLAN 2中端口的終端之間相互通信了。
但這時圖3中的四臺交換機,每臺交換機都有端口位于VLAN 2中,哪是不是位于四臺交換機上VLAN 2中的端口就構成了一個環路?是不是VLAN 2中的一個終端發送一個數據信號,這個數據信號就在這四臺交換機中永不停息的傳輸下去,因為它們構成了一個環路?
其實不然,因為在Cisco交換機上默認是運行了生成樹協議,生成樹協議的運行目的就是要阻止交換機物理上的環路導致最終數據傳輸上的環路。它會把構成物理環路上的某個端口變成Blocked狀態,從而把物理上的環路切斷。如下所示是在3750-A和3750-D上執行"show spanning-tree interface interface-type"命令的顯示結果:
- 3750-A#show spanning-tree interface g1/0/1
- Vlan Role Sts Cost Prio.Nbr Type
- ------------- --------------- -------- -----
- VLAN0002 Root FWD 4 128.25 P2p
- //在3750-A執行顯示生成樹命令的顯示結果
- 3750-D#show spanning-tree interface g1/0/2
- Vlan Role Sts Cost Prio.Nbr Type
- ------------- --------------- -------- -----
- VLAN0002 Root BLK 4 128.25 P2p
- //在3750-D執行顯示生成樹命令的顯示結果
從上面的輸出結果,可以看出在3750-A上的端口g1/0/1的狀態為"FWD",它是Forward的縮寫,也就是VLAN 2中的數據傳輸到該端口,它會把接收到的VLAN 2中的數據轉發出去。而在3750-D上的端口g1/0/2的狀態為"BLK",它是Blocked的縮寫,也就是VLAN 2中的數據傳輸到該端口,它會阻塞接收到的VLAN 2中的數據繼續傳輸下去,目的就是阻止環路的生成。也就是說3750-D上端口g1/0/2的阻塞狀態,阻止了四臺交換機在VLAN 2中生成環路的可能性。這其實也就是生成樹的根本作用。
通過上面例"三"中的實例,依次介紹了VTP協議、Trunk技術和生成樹協議三個知識點。從中也可以看出它們之間是環環相扣,緊密結合在一起使用的。#p#
四、總結
1、學習。從事技術工作,不斷地學習是每個技術工作者所必不可少的要求。就像上面例"一"中的GVRP協議,它的原理其實很簡單,如果設備齊全的話,實施起來也很簡單,但這前提是你必須去學習,了解這個協議,并最終掌握它。只有這樣,當你面對問題需要解決它時,才不至于手忙腳亂。如果做不到持續不斷學習的話,是很難在工作中走到其它技術者的前列。
尤其是現在各種新技術不斷涌現,不學習肯定就要落伍。在剛開始面對云計算和虛擬化,可能誰都不清楚它們的概念和具體的應用,只有查看、學習各種資料和書籍,了解它的定義。并且有條件的話,多參與實踐學習,這樣才能徹底掌握它,要不然面對新技術總是一頭霧水。活到老,學到老,這句話尤其適用從事技術的工作者。
2、實踐。從事網絡維護工作,是萬萬不能少了各種各樣的實踐操作。從我自己開始參加CCNA的培訓,到后期的CCIE的培訓,幾乎每一堂課都有實踐操作,都有實驗。甚至在CCIE的培訓中,絕大部分的時間和精力放在"CCIE集訓營"、"CCIE LAB實驗室"等這些實實在在的做實驗上。這是因為我們學到的每一個知識點,最終都要在實踐中驗證,通過做實驗來說明它是正確的還是錯誤的。
包括平時在書本上,或網絡上看到一些知識點,可能在原理上都能明白,知道它們運行的機制和過程。但即使是這樣,也只有通過把這些知識點涉及到的一些命令在交換機、路由器等設備上操作一遍,看看它們到底符合不符合書上所講的結果。這樣心底才能"踏實"的接受這個知識點,因為它經過了實踐的檢驗!
所有從事網絡工作者,一定要不斷的給自己創造參與實踐工作的機會。如果在工作中能接觸到現成的網絡設備更好,這樣學習起來更方便。要是達不到這種條件的話,可以參加一些培訓班,它們多多少少都能提供一些操作實驗。實在不行,還可以使用一些模擬器,如Dynamips,它們所搭建起來的實驗環境也很接近真實的網絡環境。總之,一切網絡知識,只有經過實踐的檢驗,才能算它是正確的,也才能算自己真正掌握了它。
3、總結。除非你有過目不忘的能力,否則,經常對所學到的知識點進行歸納總結是必不可少的。如果要把所有的知識點,操作命令都記在腦子里的話,這幾乎是不可能的。因為現實中,制造網絡設備的廠家會有很多種,它們可能為了實現同樣一種功能,而使用了不同的操作命令。最典型的就是Cisco和H3C,前者的顯示命令用是"show",后面再加上各種參數,來查看交換機或路由器的各種配置,而后者卻是用"display"。另外,在這兩個廠家設備上顯示端口基本信息的命令上,前者是"show interface brief",而后者是"display brief interface",最后兩個單詞順序還是相反的。這些知識點如果不進行提前總結記憶的話,到了要使用的時候才去熟悉和記憶,就會嚴重影響工作的效率。
另外,就像本篇文章所寫的東西,其實也是一種總結。把相似的協議,相關的技術放到一起進行比較和分析。再把和協議相關的命令都羅列出來進行對比,加上一些相關的實例。這樣以后在工作中,若再想了解、查看和使用這方面的協議和技術時,就只需打開這些文章,所有的相關知識就都一目了然,不用再去查各種各樣的資料,或在網上搜來搜去的。這其實就是總結提高了工作效率。
【51CTO.com獨家特稿,非經授權謝絕轉載!合作媒體轉載請注明原文出處及出處!】