虛擬區域網路(VLAN)是網路管理中非常重要的範疇,因為虛擬區域網路,IT人員可以很有效地管理企業內部的區域網路,而不必在實體的分配上做更動,只須做邏輯上的管理即可。因此本文將介紹相關的VTP(VLAN Trunking Protocol)協定,透過VTP來有效地管理虛擬區域網路。
虛擬區域網路,也就是Virtual LAN,簡稱為VLAN(以下稱為VLAN)。不少讀者應該已經大略明白VLAN的概念,但如果身處一家大型企業,光是設定VLAN,就已經暈頭轉向。比較大型企業的VLAN,由於交換器設備(Switch)較多,就必須要有一個好的管理模式與相關的指令,才能讓網管人員在最短的時間內做最有效的管理。如果某台交換器設備能自動地對其他的交換器設備做VLAN的設定,那該有多好。
而VTP就可以協助網管人員完成這樣的夢想。本文主要就是介紹VTP協定,告訴讀者如何透過VTP有效地管理VLAN。
VLAN簡介
也許有些讀者還不了解VLAN是什麼,為了讓所有人都能完全明白這篇文章所要著重的主題,這裡還是稍微介紹一下VLAN。VLAN是由一群終端機器組合而成,例如一些使用者的PC設備,而這些VLAN中的機器通常擁有相同的特性,而這特性並不需要與這些機器的所在位置有任何的關係。
此外,VLAN技術也允許把一台交換器設備的埠分成幾個群組,並可以針對每個不同的群組套用不同的設定。換句話說,VLAN可以在邏輯上區分不同的廣播網域,而這樣的廣播網域可以延伸到多個實體區域網路區段,因此VLAN技術可以增加網路組織的彈性。
舉例來說,假設現在要為一家大型企業組織整個網路設計,希望將整個大型網路區分成幾個小型的網段,而每個網段都是針對不同的使用者,例如工程師應該存取同一個網段的網路,而銷售人員可能會存取另一個不同的網段,但尷尬的是,工程師可能橫跨很多個樓層,同樣地,銷售人員的電腦位置也處於多個樓層,此時,如果希望根據實體的電腦位置來區分不同的網段,想必是一件很累人的事情。
此時,就必須使用VLAN技術來區分不同的網段,把工程師全部分到同一個VLAN中,而銷售人員都分到同一個VLAN內,這樣就不用牽扯到實體的網路連線而達到網段區分的效果。當然,也可以根據公司裡的各個單位來區分網段,或是根據各種其他的區分條件。
VLAN最重要的概念:Trunk
VLAN的相關理論其實頗多也十分複雜,這裡當然無法整個做介紹,但讀者若對整個VLAN不是很了解,至少要明白VLAN的Trunk,這在VLAN中扮演相當重要的角色。了解Trunk,才能明白VLAN的資料傳遞方式。
一般來說,若在眾多的交換器設備之間架設VLAN,則只有同一個VLAN內的電腦才可以互相傳遞資料,但事實上,在交換器設備內部是透過限制資料的轉送來達到這種VLAN的資料傳遞過程。
當交換器設備收到資料後,會根據學習過的MAC位址對應表來決定資料要送往哪個埠,如果沒有學習過的話,則預設會灌沖(Flooding)到所有的埠,這是因為預設上所有的埠都是屬於預設的VLAN內,也就是,所有的埠都屬於同一個VLAN,因此這樣的Flooding動作不會有什麼問題。
但是,若是有分割VLAN,就不能這樣做了,因為會把某個VLAN的資料送往其他的VLAN,因此在這種情況下,交換器設備會了解哪些埠是屬於哪個VLAN,進而限制Flooding時只能送往同一個VLAN。
而當VLAN的資料要跨越多個交換器設備傳遞到其他交換器設備所連接的同一個VLAN時,就必須使用Trunk技術。因為交換器設備之間只會用一條網路線連接,而這條網路線必須要能傳遞承載所有VLAN的資料,為了達到這種需求,在設定這種交換器設備之間的連線時,就必須設定成Trunk類型。
Trunk主要有兩種,分別使用802.1Q協定和ISL協定。簡單來說,Trunk會在資料中增加一個標籤,也就是Tag,用來表示目前這份資料是屬於哪一個VLAN,貼上標籤後,再把這份資料傳到另一台設備,另一台設備收到之後,再根據這個標籤得知這份資料是屬於哪個VLAN,然後把這份資料送往所屬的VLAN。
這就是Trunk主要的工作,所以,這個Trunk必須要能夠傳送所有VLAN的資料,而其作法就是會在資料上貼上標籤。
VTP協定介紹
在設定VLAN時,有很多指令必須要執行,對於每個交換器設備和交換器設備上的埠,都要做相對應的設定,但如果使用VTP協定,就可以一次更改數個設定。
而且透過VIP協定可以做到在一個大型網路內,只要幫某一台交換器設備進行設定,就可以讓這台交換器設備做到幫忙告知其他交換器設備,並指使這些設備套用新的設定值。聽起來相當神奇,但是,VTP在VLAN管理中的確可以達到這樣的功能。
VTP的全名是VLAN Trunking Protocol,VTP是運作在OSI網路七層協定中的第二層,也就是Data Link Layer。請注意,只有Cisco交換器設備才支援VTP協定,其他品牌的交換器設備並不在支援之列。
VTP協定主要是為了建立一套機制,以便在Cisco交換器設備之間做訊息交換的動作,而VLAN的相關資料可以透過這樣的機制互相傳遞到別台Cisco交換器設備上,以便達到Cisco交換器設備之間的VLAN資料同步。
這些所要同步的資料都是經由Cisco交換器設備之間的Trunk連線來傳遞,因此在某一台Cisco交換器設備上做VLAN的設定動作時,VTP協定就會幫忙將這樣的VLAN設定與其他的Cisco交換器設備達到同步。
這些同步的VLAN設定包含VLAN的增加、移除與VLAN名稱的設定。VTP協定不僅加快了VLAN設定動作,也能避免設定VLAN時所可能造成的設定失誤等等。
另外,VTP協定還定義了VTP domain,只有位於同一個VTP domain底下的Cisco交換器設備才能互相同步VLAN資料,而預設上,Cisco交換器設備是不屬於任何一個VTP domain之中,除非加以設定。
如此一來,就可以把一家大型企業中的所有Cisco交換器設備依照需求先分好各個群組(Group),而每個群組都設定成一個VTP domain,所以只要在同一個VTP domain內,就可以互相傳遞並同步彼此之間的VLAN資料。
假設現在有五台Cisco交換器設備,其VTP domain的值與連接關係如下圖所示。A、C與D三台Cisco交換器設備都在D1這個VTP domain內,而B和E這兩台Cisco交換器設備被分派到另一個D2的VTP domain之中。
如果要在Switch A設備上新增一個VLAN,因為C和D都與A處於同一個VTP domain中,所以C和D這兩台設備也會依據情況來做VLAN資料的同步動作。至於為什麼要「依據情況」呢?因為這要看A、C和D這三台交換器設備的角色為何而決定,後面會詳細說明。
Cisco Switch在VTP所扮演的角色
前面提到VLAN的設定資料同步是依據情況來進行,意思就是要看每一台Cisco交換器設備在VTP中所扮演的角色是什麼來決定,也就是這些設備所設定的模式。每一台Cisco交換器設備所能設定的模式,一共有三種選擇,以下就分別針對這三種模式來加以說明。
1. Server模式
2. Client模式
3. Transparent模式
Server模式
Server模式也是預設的模式。若在設定成Server模式的Cisco交換器設備上做任何的VLAN設定時,這台Server模式的設備就會把所做的任何改變傳遞到位於同一個VTP Domain下的所有Cisco交換器設備。
因此,在Server模式的Cisco交換器設備上,可以建立新的VLAN、修改既有的VLAN或刪除VLAN,而Server模式的設備會把所改變的VLAN設定傳遞到其他設備上,也會在自己的設備上儲存這樣的設定,儲存在NVRAM之中,當然Server模式也會同步由其他設備傳遞過來的VLAN設定值。
Client模式
在Client模式下的Cisco交換器設備所能做的事情就比較少了。在這個模式之下,無法建立新的VLAN資料,無法修改VLAN資料,也不能刪除VLAN資料,也不會在自己的設備中將VLAN設定值儲存在NVRAM內。
事實上,這個模式的設備所能做的就是只能被動地做同步動作,根據別台設備傳遞過來的設定進行同步。此外,就是再把別台設備傳遞過來的VLAN設定值再次傳遞到別台Cisco交換器設備上。
Transparent模式
當然,讀者可能會想,那這麼一來也只能在Server模式下設定VLAN資料,可是Server模式又會把這些資料全部丟到別台設備上,強迫別台設備和Server模式做同步。基本上,是這樣的沒錯,但VTP協定提供了第三種模式,也就是Transparent模式。
在Transparent模式中,可以新增VLAN資料、修改VLAN資料以及刪除任何的VLAN資料。但是,所做的這些改變只會影響到自己本身這台設備,Transparent模式並不會把這樣的設定值丟到其他設備來做同步的動作。
雖然Transparent模式比較特異一點,但是它仍然會把別台設備傳遞過來的VLAN設定值再次傳遞到別台Cisco交換器設備上,而且也能把VLAN設定儲存在自己的設備的NVRAM中。
談到這裡,也許讀者已經有點混亂,筆者整理出以下的表格讓大家能夠一眼看出各個模式的差異以及所支援的項目:
舉例說明VTP各種角色的功能
底下舉一個例子來說明這三種模式的真正運作流程,請看如下面這張網路架構圖。接著,將以圖中的網路架構為例,分別說明兩種不同建立VLAN以及自動傳遞這些VLAN設定的方式。
從Server角色建立/修改/刪除VLAN設定
假設現有五台Cisco交換器設備,Switch A的VTP角色為Server,Switch B、Switch D和Switch E的VTP角色都是Client,而Switch C的VTP角色為Transparent。這五台Cisco交換器設備都是隸屬於同一個VTP Domain。
如果現在要在Cisco Switch A上面建立VLAN 1和VLAN 2兩個VLAN,則因為Switch A的VTP角色是Server,所以Switch A會把這兩個新的VLAN設定轉發給鄰近的交換器設備,也就是Switch B和Switch C。
而Switch B因為是Client的角色,所以Switch B不僅把這樣的VLAN設定值套用到自己的設備,也會把設定轉發給鄰近的交換器設備,因此Switch B會把VLAN設定轉發給Switch D。
而另一邊的Switch C,因為是Transparent角色,所以Switch C也會把VLAN設定轉發給Switch E,但是卻不會套用這樣的VLAN設定值。不僅是新增VLAN設定是套用這樣的傳遞方式,同理,修改和移除VLAN設定也是用相同的傳遞方法。
從Transparent角色建立/修改/刪除VLAN設定
假設要在Switch C上面新增一個VLAN 3,由於Switch C是Transparent的角色,所以當然可以在這台設備上新增、修改及移除VLAN設定值,但是Transparent角色的交換器設備是無法主動發送自己的VLAN設定值,而只會轉發而已,所以由Switch C設備上所建立的VLAN 3,只有Switch C自己才知道。
現在各位讀者應該都能感覺到,Transparent角色聽起來其實有點自成一格,既不套用其他設備所傳來的VLAN設定值,也不願意把自己所設定好的VLAN設定值和其他交換器設備分享,但卻也不會阻礙其他設備互相分享VLAN設定的動作。
所以對整個網路而言,Transparent角色的交換器設備是「透明」的,所以才叫做Transparent,這樣各位讀者就應該能很容易地記住這角色所帶來的意義。
Transparent所帶來的這種情況看起來雖然有點特殊,但是用途卻也蠻廣泛的。舉例來說,如果希望重要的伺服器不要受到其他交換器設備的VLAN設定值所影響,就可以把這些重要的伺服器接到Transparent角色的交換器設備上,這樣就解決問題了。
詳細同步方式說明
前面提到過,這樣的VLAN設定值只會在同一個VTP domain內做同步,而傳送的時機是每隔五分鐘各個交換器設備就會做一次同步的動作,或是當VLAN設定值有任何改變的時候也會立即做同步的動作。
而傳送同步資料的方式,是採用Multicast方式來傳送,這每一次的同步資料稱為VTP advertisement。在每一次所傳送的同步資料中,會加上一個Revision Number,也就是版本號碼,以便於讓各個Cisco交換器設備知道現在所接收到的同步資料是比較新的,還是比較舊的資料,而根據這樣的資訊來決定是否要採用新的同步資料。Revision Number的值越大,代表所包含的VLAN設定值越新。
當Cisco交換器設備收到由其他設備所傳來的同步資料後,第一步會先確認這份同步資料是不是由同一個VTP Domain內的交換器設備所傳送過來的,接著會比對密碼等資訊(如果有設定密碼的話),最後則會比較Revision Number。因此,Revision Number也是VLAN同步資料中最重要的資料之一。
每當Server模式的Cisco交換器設備改變VLAN的設定值,要傳送VLAN設定值給其他設備做同步時,會先把這個Revision Number加1,然後再把同步資料送出。
而其他Cisco交換器設備收到這個同步資料時,會先比對Revision Number,如果所收到的同步資料中的Revision Number比儲存於設備中的Revision Number的值還大,就會把所收到的設定值覆蓋掉原本儲存於設備中的設定值。
此外,由於Transparent模式的Cisco交換器設備不希望別的交換器設備同步到它所設定的VLAN設定值,所以由Transparent角色所產生的VLAN設定值同步資料的Revision Number永遠為0。若要讓Revision Number從零開始重新計算,必須執行「delete vtp」指令,如下所示:
何謂VTP最佳化
VTP協定其實還可以做到最佳化的動作,根據前面提到的流程,各位讀者一定了解到如果某台Server模式的Cisco交換器設備對VLAN做了新的設定動作,所有其他的交換器設備都必須根據這個新設定值做同步的動作,而且無論其他交換器設備有沒有這樣的VLAN都會做同步,所以其實還蠻浪費資源的。
因此,VTP有辦法可以針對這點來做最佳化的動作,只要開啟VTP Pruning即可,詳細最佳化的過程如下。
用上面這個網路架構圖來加以說明,假設有六台Cisco交換器設備,其中Switch A和Switch E各自連接位於VLAN 1的伺服器,而目前Switch A想變更VLAN 1中的設定,而Switch B、Switch D和Switch F這三台設備都沒有接到VLAN 1的設備,所以照理說,Switch B、Switch D和Switch F都不需要針對Switch A這台設備對VLAN 1所做的變更進行同步的動作。
若開啟VTP Pruning模式,各個Cisco交換器設備就會自動辨識出這三台交換器設備不需要做同步,所以VLAN設定值的同步資料也就不會送到這些設備內,而這種最佳化的動作也可以增加網路的使用頻寬。
另外,必須注意的是,VTP Pruning最佳化設定只能在Server模式的Cisco交換器設備上才可以設定,Client模式和Transparent模式都不行。VTP pruning最佳化的設定指令如下:
如果想關閉VTP pruning設定,只要在指令前面加上no關鍵字即可:
VTP設定指令介紹
在設定VTP之前,必須要先了解VTP的預設值為何,才知道要更改哪些設定值。預設的VTP設定依據不同的Cisco交換器設備而有差異,也因為各種的Cisco IOS版本而出現不同。其中,Cisco Catalyst 2950 交換器設備的VTP預設值如下所示:
VTP Domain名稱:無
VTP模式:Server
VTP密碼:無
VTP Pruning模式:關閉
VTP Trap:關閉
VTP密碼預設為關閉,使用者可以選擇性地設定VTP密碼來保護VTP的管理。如果在相同VTP domain內的其他Cisco交換器設備沒有設定相同的密碼,將不會同步由其他設備所傳來的VLAN設定資料。設定VLAN的步驟如下:
1. 設定Trunk
2. 建立VLAN
3. 將埠設定到各個VLAN之中
其實,在第一步驟之前,還可以選擇性地設定VTP設定,當然也只有Cisco的交換器設備才有辦法設定VTP。
而設定VTP的相關指令有以下幾種。以下的指令都是採用Cisco Catalyst 2950交換器設備為例子來說明,這是因為此款是比較常見的Cisco交換器型號。
建立VTP Domain
建立VTP domain的指令如下所示。設定VTP的指令都是使用vtp關鍵字,後面若接上mode關鍵字,代表要設定VTP模式,也就是所扮演的角色,最後模式的關鍵字可以是server、client或transparent等。
vtp domain指令是用來設定這台交換器設備要加入到哪一個VTP domain內。至於vtp password,則用來設定密碼。
如果是設定成Transparent模式,還可以透過以下的指令將這些設定值儲存起來:
檢視VTP設定
設定完VTP指令之後,接著可以用以下的指令來檢視VTP設定是否成功:
執行「show vtp status」指令就可以顯示出以上這些資訊。其中,VTP Version的值若為1,代表是乙太網路使用的VTP,如果VTP Version為2,則代表是可以給乙太網路和Token Ring網路使用。但是,即使支援Version 2,也可以選擇是否要運行在Version 2上。
由上面這個例子可以看出,VTP V2 Mode的值是Disabled,代表並沒有運行在Version 2上。通常,在此輸出結果中最常觀察的值就是VTP Operation Mode和VTP Domain Name,可用來檢視這台Cisco交換器設備是扮演什麼模式,以及檢視目前處於哪一個VTP Domain之中。
而最多就是再查看Configuration Revision,這就是之前所談到的Revision Number,因為這裡把VTP Operation Mode設定成Transparent,所以為了不讓其他Cisco交換器設備同步到這台設備所設定的VLAN設定值,因此Transparent模式的Configuration Revision都一定是0。
檢視Trunk設定指令
在使用VTP協定來同步各個Cisco交換器設備的VLAN資料之前,必須記得先設定成Trunk模式,而若要檢視與Trunk相關的設定,其檢視指令如下:
執行上面的指令後,可以顯示出這個埠關於Switchport的詳細設定,其中,若看到Administrative Mode的值是trunk,就代表trunk已經設定成功。
而從Administrative Trunking Encapsulation也可以看出這個埠是使用哪一種Trunking協定。而另一種檢視Trunk設定的指令如下:
這個指令可以讓使用者以不同的觀點來檢視這個埠的Trunk設定值。這個指令比較不同的地方在於,可以看出這個埠對於Trunk設定的模式,例如是desirable還是auto等等。
檢視VLAN設定指令
以下這樣的指令可以用來檢視VLAN設定是否成功,也可以顯示VLAN相關的設定值:
這個指令的語法是「show vlan id」後面再接上VLAN的ID,就可以顯示這個指定的VLAN之詳細設定值。如果忘記ID的話,也可以使用「show vlan name」指令,後面再接上VLAN的名稱。
由上面的輸出結果可以看出,能夠查出有哪些埠已經被指定到這個VLAN中,以及看出目前這個VLAN是啟動的狀態還是暫時關閉的狀態,不過同時也顯示了很多其他更進階的資訊。
由於這些資訊比較複雜,這裡就不再一一為各位介紹,因為很多資訊是提供其他種類的VLAN使用,例如SAID是指Security Association ID,是給FDDI Trunk專用的。
如果各位讀者想看比較精簡的輸出結果,可以執行「show vlan brief」指令,這個指令可以一次顯示出所有VLAN的名稱、狀態以及有哪些埠屬於這個VLAN等等,如底下所示:
上面這樣的輸出就簡單多了,各位讀者會發現到一些奇怪的VLAN也在其中,像是1002到1005這些VLAN,都是屬於系統預設的VLAN,是給FDDI和Token Ring網路專用,這裡略過即可。
檢視VLAN中的STP設定
最後,讀者免不了也會想知道在某個VLAN中的STP設定值到底為何,如果想知道這樣的資訊,可以執行以下這個指令來顯示STP設定值:
由上面的指令就可以看到VLAN 2的STP設定值,而且由其輸出結果可以發現Fa0/12埠是這個VLAN的Root Port。
此外,可以看出在VLAN 2這個STP之中,Root Bridge的Priority值是2,而目前這一台Cisco交換器設備的Priority是32770。同時,也可以看出Root Bridge的MAC位址是0008.20fc.a840,而自己這台Cisco交換器設備的MAC位址是0008.a445.9b40,所以此台Cisco交換器設備並不是這個STP的Root Bridge。
CCNA考試中也常出現這樣的輸出結果,然後要應考者判斷這台設備是不是STP中的Root Bridge,或是使用哪一種STP協定。另外,從輸出的第二行,可以看到最後面寫著ieee的字樣,所以也能夠從這裡得知這個STP是採用IEEE 802.1d的STP協定。
結語
經由這一篇文章的介紹,相信各位讀者能夠了解Cisco交換器設備的VTP要如何設定,也完全了解其內部觀念與使用時機。
Cisco交換器設備最大的重點就是STP和VLAN,若能完全了解這兩大重點和記下指令,對Cisco交換器設備的了解就已經非常足夠,尤其對於要準備CCNA的讀者而言,更是不能錯過的重點。而對於VTP的認識與活用,更是網路管理人員不能錯過的主題。