在交换机内对虚拟局域网的创建与删除进行热备份的方法 【发明领域】
本发明涉及交换机技术,特别涉及在含有主用单元和备用单元的交换机内使用基于GARP(通用属性注册协议)的虚拟局域网注册协议进行VLAN(虚拟局域网)的动态创建与删除的热备份(或称实时备份),以使备用单元与主用单元的VLAN信息保持同步的方法。
背景技术
GARP即通用属性注册协议提供了一种机制,用于协助同一个交换网内的交换成员之间分发、传播、注册某种信息(如VLAN、多播组地址等)。通过GARP机制,一个GARP成员上的配置信息会迅速传播到整个交换网,GARP成员可以是终端工作站或网桥,GARP成员通过声明或回收声明,通知其他的GARP成员注册或注销自己的属性信息,并根据其他GARP成员的声明或回收声明注册或注销对方的属性信息。
GARP成员之间的信息交换借助于消息完成,GARP的消息类型有五种,分别为JoinIn、Leave、Empty、JoinEmpty和LeaveAll。当一个GARP应用实体(即GARP成员,可以是终端工作站或网桥)希望注册某属性信息时,将对外发送JoinIn消息。当一个GARP应用实体希望注销某属性信息时,将对外发送Leave消息。每个GARP应用实体启动后,将同时启动LeaveAll定时器,当超时后将对外发送LeaveAll消息。JoinEmpty消息与Leave消息配合,确保消息的注销或重新注册。通过消息的交互,所有待注册的属性信息可以传播到同一交换网地所有交换机上。GARP应用实体的协议数据报文都有特定的目的MAC地址。在支持GARP特性的交换机中接收到GARP应用实体的报文时,根据该MAC地址加以区分后将这些报文交给不同的应用处理,例如GVRP(GARP虚拟局域网注册协议)。
GVRP应用处理是基于GARP的工作机制,维护交换机中的VLAN动态注册信息,并将该信息注册到其他的交换机中。所有支持GVRP特性的交换机能够接收来自其他交换机的VLAN注册信息,并动态更新本地的VLAN注册信息,包括当前的VLAN成员、这些VLAN成员可以通过哪个端口访问等。而且所有支持GVRP特性的交换机能够将本地的VLAN注册信息向交换网内的其他交换机传播。以便使同一交换网内所有支持GVRP特性的设备的VLAN信息达成一致。GVRP传播的VLAN注册信息既包括本地手工配置的静态注册信息,也包括来自其他交换机的动态注册信息。
对于具有数据备份功能的交换机来说,采用在主、备用单元之间及时地进行数据备份的方式,从而在主用单元出现故障时,可以自动切换到备用单元上,不会造成包括VLAN信息在内的重要数据或信息的丢失。
现有技术在实现动态VLAN的注册时,没有考虑在发生主、备用单元切换的情况下,对主用单元注册学习到的动态VLAN信息向备用单元进行备份。虽然备用单元在切换为主用单元后,能够继续学习并且创建动态VLAN,但是在这个过程中,会造成数据的中断,有一定的时延。
【发明内容】
因此,针对上述现有技术中存在的问题,本发明的目的就是要提供一种新的基于GVRP实现主用单元将VLAN的动态创建或删除备份到备用单元的方法,以解决在交换机的主用、备用单元都在位,也就是处于活动可用状态的情况下,使动态VLAN的信息在主用和备用单元上保持一致。在备用单元自动切换为主用单元的情况下,不需要重新进行动态VLAN的学习创建。同时在主用单元上对动态VLAN进行配置操作后,使备用单元上关于动态VLAN的信息与主用单元保持一致。
需要说明的是,在实际系统中,存在VLAN的静态和动态的创建与删除,本发明主要是关于VLAN的动态创建或删除的,以下如无特别说明,VLAN均指动态创建或删除的VLAN。
为了实现本发明的目的,本发明提供了一种在交换机内对VLAN的创建与删除进行热备份的方法,所述交换机包含有主用单元和备用单元,所述主用单元和备用单元使用GVRP进行VLAN信息的维护,其特征在于,所述方法包括:
(1)当所述主用单元创建或删除VLAN时,向所述备用单元发送包含该创建或删除VLAN消息的数据包;
(2)所述备用单元根据所接收的数据包,创建或删除所述VLAN,以保持与所述主用单元的VIAN信息保持一致。
在本发明的上述方法中,还可以包括,
(1-1)判断要发送的所述数据包中是否包含了预定数量的创建或删除VLAN;
(1-2)在所述数据包中包含了预定数量的创建或删除VLAN之后,向所述备用单元发送所述包含了创建或删除VLAN消息的数据包;
(1-3)在所述数据包中未包含预定数量的创建VLAN时,判断该数据包是否满足向备用单元发送的条件;
(1-4)在所述数据包满足向备用单元发送的条件时,向所述备用单元发送所述包含了创建或删除VLAN消息的数据包。
根据本发明的上述方法,能够更好地保证动态信息在具有主、备用单元的交换机上的数据一致性。并且可以提高提高数据信息的连续和可靠性。
【附图说明】
通过详细文字说明并结合以下附图,本发明的上述目的、特征及优点将变得更加易于理解,其中:
图1是根据本发明的在交换机的主用单元和备用单元(以下简称主板和备板)上保持创建或删除动态VLAN信息一致的方法的流程图。
【具体实施方式】
本发明的方法可应用于支持主、备用单元实时备份的系统中,例如在主、备板同时在位情况下的交换机。当主、备板同时在位时,交换机收到协议报文,创建或删除动态VLAN,主板向热备份处理模块发送备板实时数据处理消息。备板接收到该消息后,根据消息类型创建或删除动态VLAN。
下面参考图1详细描述本发明的一种实施方案的例子。
首先以交换机创建动态VLAN后的情况为例来说明。交换机利用GARP处理的JOIN协议消息进行常规的动态VLAN创建。
在本发明的优选实施例中,是在数据包中VLAN的数量达到一个预定数量之后才一次性地发送该数据包。这样做的好处是可以减少主、备板之间的数据通信量。这时,需要设定一次发送的数据包中所含的VLAN最大数量,该最大数量可以根据不同的应用情况进行调整。同时,在将VLAN信息装入数据包后需要对该数据包中的VLAN进行计数。当计数值等于上述设定的VLAN最大数量时,即可向备板传输该数据包。这样,为了减少主板和备板之间的通讯量,在进行备份时,不是对VLAN进行逐个的备份,而是定义了一个备份消息的数据包,在该数据包中可以最大传输例如100个VLAN信息。
具体地说,在该实施例中,要设置全局变量,并将VLAN传输标志置为真(TRUE)。以下是具体设置的例子。
定义一个数据包传输的最多VLAN数量,
MAX_TRANS_VLAN=100
定义传输的数据包结构。
typedef struct tag_Vlan_snap
{
ULONG ulMsgType; /*消息类型--GID_JOIN,GID_LEAVE*/
ULONG ulMsgLen; /*消息长度*/
USHORT usPortIndex; /*端口*/
USHORT usVIlanCount;/*记录的VLAN个数*/
USHORT usVlanId[MAX_TRANS_VLAN]
}Vlan_snap_S;
定义全局变量
Vlan_snap_S g_stVlansnap;/*用于发送的全局数据包*/
g_ucSendVlanFlag;/*在VLAN数量小于MAX_TRANS_VLAN的情
况下确定是否传输的VLAN标志*/
在上述处理过程中,每创建一个动态VLAN,就将VLAN信息记录到g_stVlansnap中,同时g_stVlansnap的usVlanCount(即VLAN计数)加1,同时设置g_ucSendVlanFlag(即VLAN发送标志)为TRUE。
接下来,将VLAN信息装入数据包中。该数据包的结构通常包括:消息类型(创建、删除)、接收该VLAN信息的端口信息、以及消息中VLAN个数,传递的具体VLAN信息等。对于分布式交换机系统,分主控板(包括备用控制板)和接口板(各种不同应用的接口板)。在控制板(主板和备板)上保存有接口板的信息。在交换机中,接口板用于处理数据报文的转发,接口板收到的协议处理报文要上送到主板处理,而不会在接口板处理。
对于接收VLAN信息的端口,在主板和备板上都保存有该端口信息。端口信息主要包括端口在控制板(主板和备板)上的编号。在具体的实例中,例如一个ID是10的端口接收到报文。尽管在备板上也存在ID为10的端口,但是备板上的端口10是不会收到报文并进行处理的。也就是说,从接口上传送来的信息是不会送到备板的,仍然是主板进行控制处理。
具体VLAN信息主要包括VLAN ID和端口索引。在本例中,该数据包的消息类型为GID_JOIN,即创建动态VLAN消息。(如果是删除动态VLAN时,消息类型就变为GID_LEAVE)
如果计数值小于上述设定的VLAN最大数量,则需要进一步判断是否发送该数据包。在图1所示的实施例中,可以进一步判断备板对创建VLAN的消息包的处理(包括备份处理)是否全部完成。如果该判断的结果为是否定的,则返回到创建动态VLAN的处理中。否则,进一步判断是否全局传输标志为TRUE。如果该步的判断是否定的,即全局传输标志不为TRUE,则主板处理结束,也不向备板发送VLAN创建的数据包。反之,如果该步判断是肯定的,即全局传输标志为TRUE,则即使计数值小于上述设定的VLAN最大数量,也可以向备板发送关于VLAN创建的数据包。设置定义全局传输标志就是为了保证在不足100的情况下,也能将VLAN信息备份到备板。
在向备板传输数据包成功后,将上述计数清零,同时将上述VLAN传输标志置为FALSE。
然后,备板根据所接收数据包中包含的VLAN消息,同样利用GARP处理的JOIN协议消息进行与主板一致的创建VLAN的处理。
在本发明的另一种实施例中,可以是在处理接收GVRP消息创建VLAN时,采用每处理完一个GVRP消息包后发送一次消息。即在主板创建一个VLAN后将VLAN信息装入数据包并立即发送至备板。这样就无需定义对数据包中VLAN个数以及对VLAN进行计数。具体地说,GVRP消息包包含的是VLAN的信息,系统根据此消息包创建或删除动态VLAN。但是只有主板接收到GVRP消息包,备板上接收不到该消息包。主板每处理一个GVRP消息,就创建一个VLAN,然后将VLAN信息装入消息包发送到备板。当然,这种方法会增加主、备板之间传送的消息量。GVRP消息包的结构例如为:
1.以太网封装 DA SA length DSAP SSAP Ctrl PDU FCS
其中:
DA(6字节):目的MAC地址,例如为二层组播地址01-80-C2-00-00-21;
SA(6字节):源MAC地址;
length(2字节):length封装的数据长度,包括从DSAP开始到FCS之前的所有数据的长度;
DSAP(1字节):0x42;
SSAP(1字节):0x42;
Ctrl(1字节):0x03;
PDU:封装的GARP报文数据;
FCS(4字节):以太网封装FCS位,硬件自动添加处理。
2.PDU结构
每个以太网封装的是一个PDU,每个PDU的格式如下: Protocol ID Message 1… Message n End Marker
其中:
Protocol ID(2字节):协议ID号,为0x0001,代表GARP协议;
Message:携带不同的属性消息;
EndMarker(1字节):结束位,0x00。
3.Message结构
每个Message都携带若干属性Attribute,其结构如下:Attribute Type Attribute 1… Attribute n End Marker
其中:
Attribute Type(1字节):0x01表示VLAN Identifier;
Attribute:要操作的属性;
End Marker(1字节):结束标志0x00。
4.Attribute结构
每个Attribute都包括一个独立的属性项目,其结构如下: Attribute Length Attribute Event Attribute Value
其中:
Attribute Length(属性长度,1字节):表示该属性项目的字节长度(包括长度字段本身);
Attribute Event(属性事件,1字节):
0x00:LeaveAll
0x01:JoinEmpty
0x02:JoinIn
0x03:LeaveEmpty
0x04:LeaveIn
0x05:Empty;
Attribute Value(属性值,2字节):VLAN Identifier
上面是以创建VLAN为例来说明本发明的方案的。另一方面,在主板动态地删除VLAN时,删除VLAN通过GARP处理的LEAVE协议来完成。这是与上述创建VLAN的过程不同之处。但是,随后使备板与主板同步地删除动态VLAN的过程与上面实施例的使备板与主板同步地创建VLAN的方法过程是相同的。因此,对主、备板关于删除VLAN的同步处理不再详细说明。
尽管上面对本发明进行了说明,应当理解,这些说明只是列举了本发明的一些具体实施的例子,而不是对本发明的限定。对本发明实施例的各个细节显然可以进行各种修改和采用各种等同的手段。因此,本发明的范围仅由权利要求书所限定。