GVRP(GARP VLAN Registration Protocol,GARP VLAN注冊協議)是GARP(Generic Attribute Registration Protocol,通用屬性注冊協議)的一種應用,下麵首先介紹一下GARP的相關內容。
GARP提供了一種機製,用於協助同一個局域網內的交換成員之間分發、傳播和注冊某種信息(如VLAN、組播地址等)。
GARP本身不作為一個實體存在於設備中,遵循GARP協議的應用實體稱為GARP應用,GVRP就是GARP的一種應用。當GARP應用實體存在於設備的某個端口上時,該端口對應於一個GARP應用實體。
(1) GARP消息
GARP成員之間的信息交換借助於消息的傳遞來完成,主要有三類消息起作用,分別為Join消息、Leave消息和LeaveAll消息。
l 當一個GARP應用實體希望其它設備注冊自己的屬性信息時,它將對外發送Join消息;當收到其它實體的Join消息或本設備靜態配置了某些屬性,需要其它GARP應用實體進行注冊時,它也會向外發送Join消息。
l 當一個GARP應用實體希望其它設備注銷自己的屬性信息時,它將對外發送Leave消息;當收到其它實體的Leave消息注銷某些屬性或靜態注銷了某些屬性後,它也會向外發送Leave消息。
l 每個GARP應用實體啟動後,將同時啟動LeaveAll定時器,當該定時器超時後GARP應用實體將對外發送LeaveAll消息,LeaveAll消息用來注銷所有的屬性,以使其它GARP應用實體重新注冊本實體上所有的屬性信息。
Join消息、Leave消息與LeaveAll消息配合確保信息的重新注冊或注銷。
通過消息交互,所有待注冊的屬性信息可以傳播到同一局域網配置了GARP的所有設備上。
(2) GARP定時器
GARP消息發送的時間間隔是通過定時器來實現的,GARP定義了四種定時器,用於控製GARP消息的發送周期:
l Hold定時器:當GARP應用實體接收到其它設備發送的注冊信息時,不會立即將該注冊信息作為一條Join消息對外發送,而是啟動Hold定時器,當該定時器超時後,GARP應用實體將此時段內收到的所有注冊信息放在同一個Join消息中向外發送,從而節省帶寬資源。
l Join定時器:GARP應用實體可以通過將每個Join消息向外發送兩次來保證消息的可靠傳輸,在第一次發送的Join消息沒有得到回複的時候,GARP應用實體會第二次發送Join消息。兩次Join消息發送之間的時間間隔用Join定時器來控製。
l Leave定時器:當一個GARP應用實體希望注銷某屬性信息時,將對外發送Leave消息,接收到該消息的GARP應用實體啟動Leave定時器,如果在該定時器超時之前沒有收到Join消息,則注銷該屬性信息。
l LeaveAll定時器:每個GARP應用實體啟動後,將同時啟動LeaveAll定時器,當該定時器超時後,GARP應用實體將對外發送LeaveAll消息,以使其它GARP應用實體重新注冊本實體上所有的屬性信息。隨後再啟動LeaveAll定時器,開始新的一輪循環。
& 說明:
l GARP定時器的值將應用於所有在同一局域網內運行的GARP應用(如GVRP)。
l Hold定時器、Join定時器和Leave定時器的值可以在每個以太網端口單獨進行設置;而LeaveAll定時器隻需在設備的全局進行設置即可,設置完成後,該值將在設備的所有端口上生效。
l 在全網有多台設備的情況下,各個設備的LeaveAll定時器的取值可能不相同,但各設備都將以全網最小的LeaveAll定時器為準發送LeaveAll消息。因為每次發送LeaveAll消息時,當其它設備接收到之後都會清零LeaveAll定時器,因此即使全網存在很多不同的LeaveAll定時器,也隻有最小的那個LeaveAll定時器起作用。
通過GARP機製,一個GARP成員上的配置信息會迅速傳播到整個局域網。GARP成員可以是終端工作站或網橋。GARP成員通過聲明或回收聲明來通知其它的GARP成員注冊或注銷自己的屬性信息,並根據其它GARP成員的聲明或回收聲明注冊或注銷對方的屬性信息。當端口接收到一個屬性聲明時,該端口將注冊該屬性,如果端口接收到回收屬性的聲明,該端口將注銷該屬性。
GARP應用實體的協議數據報文以特定的組播MAC地址為目的MAC。設備在接收到GARP應用實體的報文後,會根據其目的MAC地址加以區分並交給不同的GARP應用(如GVRP)去處理。
圖1 GARP報文格式
GARP的報文格式如圖1所示,其中各字段的說明如表1所示。
字段 | 含義 | 取值 |
Protocol ID | 協議ID | 取值為1 |
Message | 消息,每個Message由Attribute Type、Attribute List構成 | - |
Attribute Type | 屬性類型,由具體的GARP的應用定義 | 對於GVRP,屬性類型為0x01,表示屬性取值為VLAN ID |
Attribute List | 屬性列表,由多個屬性構成 | - |
Attribute | 屬性,每個屬性由Attribute Length、Attribute Event、Attribute Value構成 | - |
Attribute Length | 屬性長度 | 2~255,單位為字節 |
Attribute Event | 屬性描述的事件 | 0:LeaveAll Event 1:JoinEmpty Event 2:JoinIn Event 3:LeaveEmpty Event 4:LeaveIn Event 5:Empty Event |
Attribute Value | 屬性取值 | GVRP的屬性取值為VLAN ID,但LeaveAll屬性的Attribute Value值無效 |
End Mark | 結束標誌、GARP的PDU的結尾標誌 | 以0x00取值表示 |
GVRP是GARP的一種應用。它基於GARP的工作機製,維護設備中的VLAN動態注冊信息,並傳播該信息到其它的設備中。
設備啟動GVRP特性後,能夠接收來自其它設備的VLAN注冊信息,並動態更新本地的VLAN注冊信息,包括當前的VLAN成員、這些VLAN成員可以通過哪個端口到達等。而且設備能夠將本地的VLAN注冊信息向其它設備傳播,以便使同一局域網內所有設備的VLAN信息達成一致。GVRP傳播的VLAN注冊信息既包括本地手工配置的靜態注冊信息,也包括來自其它設備的動態注冊信息。
GVRP的端口注冊模式有三種:Normal、Fixed和Forbidden,各模式描述如下。
l Normal模式:允許該端口動態注冊、注銷VLAN,傳播動態VLAN以及靜態VLAN信息。
l Fixed模式:禁止該端口動態注冊、注銷VLAN,隻傳播靜態VLAN信息,不傳播動態VLAN信息。也就是說被設置為Fixed模式的Trunk口,即使允許所有VLAN通過,實際通過的VLAN也隻能是手動配置的那部分。
l Forbidden模式:禁止該端口動態注冊、注銷VLAN,不傳播除VLAN1以外的任何的VLAN信息。也就是說被配置為Forbidden模式的Trunk端口,即使允許所有VLAN通過,實際通過的VLAN也隻能是VLAN 1。