GVRP技術白皮書

GVRP技術白皮書

關鍵詞:GARPGVRP,屬性,注冊,VLAN

    要:GVRP可以實現VLAN的動態配置,本文介紹了GVRP協議的基本原理和典型應用。

縮略語:

縮略語

英文全名

中文解釋

GARP

Generic Attribute Registration Protocol

通用屬性注冊協議

GMRP

GARP Multicast Registration Protocol

組播屬性注冊協議

GVRP

GARP VLAN Registration Protocol

VLAN屬性注冊協議

MSTP

Multiple Spanning Tree Protocol

多生成樹協議

 

 



概述

GARP協議主要用於建立一種屬性傳遞擴散的機製,以保證協議實體能夠注冊和注銷該屬性。GARP作為一個屬性注冊協議的載體,可以用來傳播屬性。將GARP協議報文的內容映射成不同的屬性即可支持不同上層協議應用。例如,GMRPGVRP

l              GMRPGARP的一種應用,用於注冊和注銷組播屬性;

l              GVRPGARP的一種應用,用於注冊和注銷VLAN屬性。

GARP協議通過目的MAC地址區分不同的應用。在IEEE Std 802.1D中將01-80-C2-00-00-20分配給組播應用,即GMRP。在IEEE Std 802.1Q中將01-80-C2-00-00-21分配給VLAN應用,即GVRP

本文僅介紹GVRP的相關知識。

1.1  產生背景

如果需要為網絡中的所有設備都配置某些VLAN,就需要網絡管理員在每台設備上分別進行手工添加。如1所示,Device A上有VLAN 2Device BDevice C上隻有VLAN 1,三台設備通過Trunk鏈路連接在一起。為了使Device AVLAN 2的報文可以傳到Device C,網絡管理員必須在Device BDevice C上分別手工添加VLAN 2

圖1 GVRP應用組網

對於上麵的組網情況,手工添加VLAN很簡單,但是當實際組網複雜到網絡管理員無法短時間內完全了解網絡的拓撲結構,或者是整個網絡的VLAN太多時,工作量會非常大,而且非常容易配置錯誤。在這種情況下,用戶可以通過GVRPVLAN自動注冊功能完成VLAN的配置。

1.2  技術優點

GVRP基於GARP機製,主要用於維護設備動態VLAN屬性。通過GVRP協議,一台設備上的VLAN信息會迅速傳播到整個交換網。GVRP實現動態分發、注冊和傳播VLAN屬性,從而達到減少網絡管理員的手工配置量及保證VLAN配置正確的目的。

技術實現方案

2.1  概念介紹

2.1.1  應用實體

在設備上,每一個參與協議的端口可以視為一個應用實體。當GVRP在設備上啟動的時候,每個啟動GVRP的端口對應一個GVRP應用實體,如2所示。

圖2 GVRP應用實體

2.1.2  VLAN的注冊和注銷

GVRP協議可以實現VLAN屬性的自動注冊和注銷:

l              VLAN的注冊:指的是將端口加入VLAN

l              VLAN的注銷:指的是將端口退出VLAN

GVRP協議通過聲明和回收聲明實現VLAN屬性的注冊和注銷。

l              當端口接收到一個VLAN屬性聲明時,該端口將注冊該聲明中包含的VLAN信息(端口加入VLAN)。

l              當端口接收到一個VLAN屬性的回收聲明時,該端口將注銷該聲明中包含的VLAN信息(端口退出VLAN)。

GVRP協議的屬性注冊和注銷僅僅是對於接收到GVRP協議報文的端口而言的。

圖3 VLAN的注冊和注銷

2.1.3  消息類型

GARP應用實體之間的信息交換借助於消息的傳遞來完成,主要有三類消息起作用,分別為Join消息、Leave消息和LeaveAll消息。

1. Join消息

當一個GARP應用實體希望其它設備注冊自己的屬性信息時,它將對外發送Join消息;當收到其它實體的Join消息或本設備靜態配置了某些屬性,需要其它GARP應用實體進行注冊時,它也會向外發送Join消息。

Join消息分為JoinEmptyJoinIn兩種,區別如下:

l              JoinEmpty:聲明一個本身沒有注冊的屬性。

l              JoinIn:聲明一個本身已經注冊的屬性。

2. Leave消息

當一個GARP應用實體希望其它設備注銷自己的屬性信息時,它將對外發送Leave消息;當收到其它實體的Leave消息注銷某些屬性或靜態注銷了某些屬性後,它也會向外發送Leave消息。

Leave消息分為LeaveEmptyLeaveIn兩種,區別如下:

l              LeaveEmpty:注銷一個本身沒有注冊的屬性。

l              LeaveIn:注銷一個本身已經注冊的屬性。

3. LeaveAll消息

每個應用實體啟動後,將同時啟動LeaveAll定時器,當該定時器超時後應用實體將對外發送LeaveAll消息。

LeaveAll消息用來注銷所有的屬性,以使其它應用實體重新注冊本實體上所有的屬性信息,以此來周期性地清除網絡中的垃圾屬性(例如某個屬性已經被刪除,但由於設備突然斷電,並沒有發送Leave消息來通知其他實體注銷此屬性)。

2.1.4  定時器

GARP協議中用到了四個定時器,下麵分別介紹一下它們的作用。

1. Join定時器

Join定時器是用來控製Join消息(包括JoinInJoinEmpty)的發送的。

為了保證Join消息能夠可靠的傳輸到其它應用實體,發送第一個Join消息後將等待一個Join定時器的時間間隔,如果在一個Join定時器時間內收到JoinIn消息,則不發送第二個Join消息;如果沒收到,則再發送一個Join消息。

每個端口維護獨立的Join定時器。

2. Hold定時器

Hold定時器是用來控製Join消息(包括JoinInJoinEmpty)和Leave消息(包括LeaveInLeaveEmpty)的發送的。

當在應用實體上配置屬性或應用實體接收到消息時不會立刻將該消息傳播到其它設備,而是在等待一個Hold定時器後再發送消息,設備將此Hold定時器時間段內接收到的消息盡可能封裝成最少數量的報文,這樣可以減少報文的發送量。如果沒有Hold定時器的話,每來一個消息就發送一個,造成網絡上報文量太大,既不利於網絡的穩定,也不利於充分利用每個報文的數據容量。

每個端口維護獨立的Hold定時器。Hold定時器的值要小於等於Join定時器值的一半。

3. Leave定時器

Leave定時器是用來控製屬性注銷的。

每個應用實體接收到LeaveLeaveAll消息後會啟動Leave定時器,如果在Leave定時器超時之前沒有接收到該屬性的Join消息,屬性才會被注銷。這是因為網絡中如果有一個實體因為不存在某個屬性而發送了Leave消息,並不代表所有的實體都不存在該屬性了,因此不能立刻注銷屬性,而是要等待其他實體的消息。例如,某個屬性在網絡中有兩個源,分別在應用實體AB上,其他應用實體通過協議注冊了該屬性。當把此屬性從應用實體A上刪除的時候,實體A發送Leave消息,由於實體B上還存在該屬性源,在接收到Leave消息之後,會發送Join消息,以表示它還有該屬性。其他應用實體如果收到了應用實體B發送的Join消息,則該屬性仍然被保留,不會被注銷。隻有當其它應用實體等待兩個Join定時器以上仍沒有收到該屬性的Join消息時,才能認為網絡中確實沒有該屬性了,所以這就要求Leave定時器的值大於2Join定時器的值。

每個端口維護獨立的Leave定時器。

4. LeaveAll定時器

每個GARP應用實體啟動後,將同時啟動LeaveAll定時器,當該定時器超時後GARP應用實體將對外發送LeaveAll消息,隨後再啟動LeaveAll定時器,開始新的一輪循環。

接收到LeaveAll消息的實體將重新啟動所有的定時器,包括LeaveAll定時器。在自己的LeaveAll定時器重新超時之後才會再次發送LeaveAll消息,這樣就避免了短時間內發送多個LeaveAll消息。

如果不同設備的LeaveAll定時器同時超時,就會同時發送多個LeaveAll消息,增加不必要的報文數量,為了避免不同設備同時發生LeaveAll定時器超時,實際定時器運行的值是大於LeaveAll定時器的值,小於1.5LeaveAll定時器值的一個隨機值。

一次LeaveAll事件相當於全網所有屬性的一次Leave。由於LeaveAll影響範圍很廣,所以建議LeaveAll定時器的值不能太小,至少應該大於Leave定時器的值。

每個設備隻在全局維護一個LeaveAll定時器。

2.1.5  注冊模式

手工配置的VLAN稱為靜態VLAN,通過GVRP協議創建的VLAN稱為動態VLANGVRP有三種注冊模式,不同的模式對靜態VLAN和動態VLAN的處理方式也不同。GVRP的三種注冊模式分別定義如下:

l              Normal模式:允許動態VLAN在端口上進行注冊,同時會發送靜態VLAN和動態VLAN的聲明消息。

l              Fixed模式:不允許動態VLAN在端口上注冊,隻發送靜態VLAN的聲明消息。

l              Forbidden模式:不允許動態VLAN在端口上進行注冊,同時刪除端口上除VLAN 1外的所有VLAN,隻發送VLAN 1的聲明消息。

2.2  報文結構

GARP協議報文采用IEEE 802.3 Ethernet封裝形式,報文結構如4所示。

圖4 GARP協議報文

各個字段的說明如1所示。

表1 各個字段的說明

字段

含義

取值

Protocol ID

協議ID

取值為1,代表GARP協議

Message

消息,每個MessageAttribute TypeAttribute List構成

-

Attribute Type

屬性類型,由具體的GARP的應用定義

對於GVRP,屬性類型為0x01,表示屬性取值為VLAN ID

Attribute List

屬性列表,由多個屬性構成

-

Attribute

屬性,每個屬性由Attribute LengthAttribute EventAttribute Value構成

-

Attribute Length

屬性長度(包括長度字段本身)

2255,單位為字節

Attribute Event

屬性描述的事件

0LeaveAll Event

1JoinEmpty Event

2JoinIn Event

3LeaveEmpty Event

4LeaveIn Event

Attribute Value

屬性取值

GVRP的屬性取值為VLAN ID,但LeaveAll屬性的此值無效

End Mark

結束標誌、GARPPDU的結尾標誌

0x00取值表示

 

2.3  工作過程

下麵通過一個簡單的例子來介紹一下GVRP的工作過程。該例子分四個階段描述了一個VLAN屬性在網絡中是如何被注冊和注銷的。

1. VLAN屬性的單向注冊

圖5 VLAN屬性的單向注冊

Device A上創建靜態VLAN 2,通過VLAN屬性的單向注冊,將Device BDevice C的相應端口自動加入VLAN 2

l              Device A上創建靜態VLAN 2後,Port 1啟動Join定時器和Hold定時器,等待Hold定時器超時後,Device ADevice B發送第一個JoinEmpty消息,Join定時器超時後再次啟動Hold定時器,再等待Hold定時器超時後,發送第二個JoinEmpty消息。

l              Device B上接收到第一個JoinEmpty後創建動態VLAN 2,並把接收到JoinEmpty消息的Port 2加入到動態VLAN 2中,同時告知Port 3啟動Join定時器和Hold定時器,等待Hold定時器超時後向Device C發送第一個JoinEmpty消息,Join定時器超時後再次啟動Hold定時器,Hold定時器超時之後,發送第二個JoinEmpty消息。Device B上收到第二個JoinEmpty後,因為Port 2已經加入動態VLAN 2,所以不作處理。

l              Device C上接收到第一個JoinEmpty後創建動態VLAN 2,並把接收到JoinEmpty消息的Port 4加入到動態VLAN 2中。Device C上收到第二個JoinEmpty後,因為Port 4已經加入動態VLAN 2,所以不作處理。

l              此後,每當Leaveall定時器超時或收到LeaveAll消息,設備會重新啟動Leaveall定時器、Join定時器、Hold定時器和Leave定時器。Device APort 1Hold定時器超時之後發送第一個JoinEmpty消息,再等待Join定時器+Hold定時器之後,發送第二個JoinEmpty消息,Device BDevice C發送JoinEmpty消息的過程也是如此。

2. VLAN屬性的雙向注冊

圖6 VLAN屬性的雙向注冊

通過上述VLAN屬性的單向注冊過程,端口Port 1Port 2Port 4已經加入VLAN 2,但是Port 3還沒有加入VLAN 2(隻有收到JoinEmpty消息或JoinIn消息的端口才能加入動態VLAN)。為使VLAN 2流量可以雙向互通,需要進行Device CDevice A方向的VLAN屬性的注冊過程:

l              VLAN屬性的單向注冊完成後,在Device C上創建靜態VLAN 2(將動態VLAN轉換成靜態VLAN),Port 4啟動Join定時器和Hold定時器,等待Hold定時器超時後,Device CDevice B發送第一個JoinIn消息(因為Port 4已經注冊了VLAN 2,所以發送JoinIn消息),Join定時器超時後再次啟動Hold定時器,Hold定時器超時之後,發送第二個JoinIn消息。

l              Device B上接收到第一個JoinIn後,把接收到JoinIn消息的Port 3加入到動態VLAN 2中,同時告知Port 2啟動Join定時器和Hold定時器,等待Hold定時器超時後,向Device A發送第一個JoinIn消息,Join定時器超時後再次啟動Hold定時器,Hold定時器超時之後,發送第二個JoinIn消息;Device B上收到第二個JoinIn後,因為Port 3已經加入動態VLAN 2,所以不作處理。

l              Device A上接收到JoinIn之後,停止向Device B發送JoinEmpty消息。此後,當Leaveall定時器超時或收到LeaveAll消息,設備重新啟動Leaveall定時器、Join定時器、Hold定時器和Leave定時器。Device APort 1Hold定時器超時之後就開始發送JoinIn消息;

l              Device BDevice C發送JoinIn消息。

l              Device C收到JoinIn消息後,由於本身已經創建了靜態VLAN 2,所以不會再創建動態VLAN 2

3. VLAN屬性的單向注銷

圖7 VLAN屬性的單向注銷

當設備上不再需要VLAN 2時,可以通過VLAN屬性的注銷過程將VLAN 2從設備上刪除:

l              Device A上刪除靜態VLAN 2Port 1啟動Hold定時器,等待Hold定時器超時後,Device ADevice B發送LeaveEmpty消息。LeaveEmpty消息隻需發送一次。

l              Device B上接收到LeaveEmptyPort 2啟動Leave定時器,等待Leave定時器超時之後Port 2注銷VLAN 2,將Port 2從動態VLAN 2中刪除(由於此時VLAN 2中還存在端口Port 3,所以不會刪除VLAN 2),同時告知Port 3啟動Hold定時器和Leave定時器,等待Hold定時器超時後,向Device C發送LeaveIn消息。由於Device C的靜態VLAN 2還沒有刪除,Port 3Leave定時器超時之前仍然能夠收到Port 4發送的JoinIn消息,所以Device ADevice B上仍然能夠學習到動態的VLAN 2

l              Device C上接收到LeaveIn後,由於Device C上存在靜態VLAN 2,所以Port 4不會從VLAN 2中刪除。

4. VLAN屬性的雙向注銷

圖8 VLAN屬性的雙向注銷

為了徹底刪除所有設備上的VLAN 2,需要進行VLAN屬性的雙向注銷:

l              Device C上刪除靜態VLAN 2Port 4啟動Hold定時器,等待Hold定時器超時後,Device CDevice B發送LeaveEmpty消息;

l              Device B接收到LeaveEmpty消息後,Port 3啟動Leave定時器,等待Leave定時器超時之後Port 3注銷VLAN 2,將Port 3從動態VLAN 2中刪除並刪除動態VLAN 2,同時告知Port 2啟動Hold定時器,等待Hold定時器超時後,向Device A發送LeaveEmpty消息。

l              Device A接收到LeaveEmpty消息後,Port 1啟動Leave定時器,等待Leave定時器超時之後Port 1注銷VLAN 2,將Port 1從動態VLAN 2中刪除並刪除動態VLAN 2

2.4  應用限製

l              啟用業務環回功能後GVRP報文發送不出去,所以GVRP功能與業務環回功能不可以同時應用。

l              GVRP功能隻能運行在MSTPCIST實例上,並且在CIST實例上被MSTP阻塞的端口不能收發GVRP報文。

典型組網應用

GVRP特性使得不同設備上的VLAN信息可以由協議動態維護和更新,用戶隻需要對少數設備進行VLAN配置即可應用到整個交換網絡,無需耗費大量時間進行拓撲分析和配置管理。

9中所有設備都使能GVRP功能,設備之間相連的端口均為Trunk端口,並允許所有VLAN通過。隻需在Device ADevice G上分別手工配置靜態VLAN 1001000,那麼,設備Device BDevice F就可以通過GVRP協議學習到這些VLAN,最後各設備上都存在VLAN 1001000

圖9 典型組網應用

展望

GVRP是一種VLAN的動態配置技術,在複雜的組網環境中應用GVRP,能夠簡化VLAN配置管理,減少因為配置不一致而導致的網絡互通問題。此外,沒有收到VLAN注冊消息的端口不會加入動態VLAN,從而實現了VLAN的裁減,抑製了不必要的流量。隨著GVRP支持MSTP多實例,在未來的組網應用中,GVRP將會得到更廣泛的應用。

參考文獻

l              IEEE Std 802.1D

l              IEEE Std 802.1Q

 

 

Copyright ©2008 杭州華三通信技術有限公司 版權所有,保留一切權利。

非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部,並不得以任何形式傳播。

本文檔中的信息可能變動,恕不另行通知。

附件下載

聯係我們