背景技术
快速环网保护协议(RRPP:Rapid Ring Protection Protocol)是一个专门应用于以太网环的链路层协议,其在以太网环完整时能够防止由于环路引起的广播风暴,并在以太网环上一条链路断开时能迅速恢复各个节点之间的通信。与STP协议相比,RRPP协议具有以下特点:拓扑收敛速度快,拓扑收敛时间与环网上的节点数无关等。下面对RRPP的基本概念进行描述:
RRPP环:
所谓RRPP环,其实质为一个环形连接的以太网网络拓扑。RRPP环可分为主环和子环,其中,RRPP环为主环还是子环,完全根据用户对该RRPP环的级别配置决定。其中,主环的级别配置为0,子环的级别配置为1。如图1所示的RRPP组网中两个环(Ring):环1和环2,其中,环1由设备(Device)A至设备D组成,环2由设备B、设备C和设备E组成。若环1为主环,环2为子环,则环1的级别配置为0,环2的级别配置为1。
每一RRPP环都具有以下两种状态:健康状态,表示该RRPP环上的所有物理链路都是连通的,断裂状态,表示该RRPP环上的某处物理链路断开。
RRPP域(Domain):
所谓RRPP域,其实质由具有相同域标识(ID)和相同控制VLAN的设备组成,下文对控制VLAN进行描述。RRPP域建立在RRPP环的基础上。一个RRPP域可包含多个RRPP环。在图1中,环1和环2属于同一个RRPP域,即Domain 1。
控制VLAN和数据VLAN:
控制VLAN是一个特征的VLAN,用于传递RRPP中的协议报文,比如环路健康探测(health)报文等。每一设备上接入RRPP环的端口可加入控制VLAN。其中,主环上的控制VLAN由用户配置,子环上的控制VLAN由系统自动分配,其一般为主环的控制VLAN ID加1。同一RRPP域中所有子环的控制VLAN均相同。
数据VLAN,用于传递数据报文,其包含接入RRPP环的端口和其他端口。
节点:
RRPP环上的每台设备都称为一个节点,其基于担任的角色(该角色可由用户配置)可分为以下四种节点:
主节点(Master node),一个RRPP环上仅存在一个主节点,其是发起环路检测和进行环路预防的操作节点。
传输节点(Transmit node):主环上除了主节点外的其他所有节点都成为传输节点。
边缘节点(Edge node),同时位于主环和子环上的节点,其在主环上的角色为传输节点,在子环上的角色为边缘节点。
辅助边缘节点(Assistant node),同时位于主环和子环上的节点,其在主环上的角色为传输节点,在子环上的角色为辅助边缘节点,与边缘节点成对使用。
在图1所示的RRPP组网中,设备A为环1的主节点,设备B至设备D为环1的传输节点,设备E为环2的主节点,设备B和设备C分别为环2的边缘节点和辅助边缘节点。
主端口和副端口:
RRPP环中的每一节点都分别有两个端口,其中一个为主端口,另一个为副端口。端口的角色由用户配置。
主节点的主端口和副端口在功能上有所区别,当RRPP环处于健康状态时,主节点的副端口在逻辑上阻塞数据VLAN中的报文通过,仅允许控制VLAN中的报文通过,当RRPP环处于断裂状态时,主节点的副端口将解除数据VLAN的阻塞状态,允许数据VLAN中的报文通过。在图1所示的RRPP组网中,设备A为环1的主节点,port1和port2分别为设备A的主端口和副端口。
传输节点的主端口和副端口在功能上没有区别,都允许数据VLAN和控制VLAN中的报文通过。在图1所述的RRPP组网中,设备B至设备D为环1的传输节点,其各自的port1和port2分别为各自的主端口和副端口。
定时器:
在RRPP环中,主节点依赖于两个定时器,其中一个定时器为hello定时器,用于主节点的主端口发送环路探测报文,另一个为fail定时器,用于主节点的副端口接收主端口发送的环路探测报文的超时时间。针对一个RRPP环,如果该RRPP环上主节点的副端口在fail定时器超时之前收到自身的主节点发送的环路探测报文,则表示该RRPP环处于健康状态,否则,表示该RRPP环处于断裂状态。
以上对RRPP的基本概念进行了描述。
通常,以太网中的网关设备处于RRPP环上,比如,图2显示了网关设备为RRPP环的主节点,图3显示了网关设备为RRPP环的传输节点。以图3为例,图2的实现原理类似,在图3中,当RRPP环处于健康状态时,RRPP环中作为主节点的节点1的副端口处于阻塞状态,作为传输节点的节点4的上下行流量分别通过图3所示的虚线(1)和虚线(2)正常转发。但是,当节点4和其相邻的节点3之间的链路出现异常,则节点3和节点4均分别发送Link-Down报文至主节点,以告知节点4和节点3之间的链路出现异常。当主节点接收到link-down报文后,打开副端口,并发送COMMON-FLUSH-FDB报文至所有的传输节点,已通知各个传输节点删除自身上的MAC表和ARP表。其中,ARP表仅存在网关设备中,而其他设备仅存在MAC表。也就是说,当传输节点接收到COMMON-FLUSH-FDB报文后,如果自身同时作为网关设备,比如图3中的节点2,则删除自身上的MAC表和ARP表,如果自身不作为网关设备,比如图3中的节点2至节点6,则自身不存在ARP表,仅有MAC表,则仅删除自身上的MAC表。
此时,节点4的上行流量通过图3所示的虚线(3)正常转发。而向节点4发送的下行流量在到达网关设备即节点2时,需要节点2查询ARP表找出发送该下行流量的出端口。但是,根据上面描述可以知道,节点2此时已删除了ARP表,如此,就需要终端该下行流量的转发,等再次重新学习ARP表后利用该重新学习的ARP表找出发送该下行流量的出端口,之后转发该下行流量。通常,该重新学习ARP表的时间比较长,在150~300ms之间,如此,就会导致下行流量的中断时间也在150~300ms之间,中断时间比较长,不能保证业务流量在50ms内收敛。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明实施例提供的方法包括图4所示的流程:
参见图4,图4为本发明实施例提供的基本流程图。该流程应用于包含网关设备的RRPP环中,也就是说,网关设备可以如图2所示,作为RRPP环的主节点,也可如图3所示,作为RRPP环的传输节点。
如图4所示,该流程可包括以下步骤:
步骤401,网关设备获取所述RRPP环中各节点的位置信息。
步骤402,网关设备接收到用于表示RRPP环异常的第一报文后,根据自身的位置信息和发送了第一报文的节点的位置信息从ARP表中确定需要更新的ARP表项。
其中,ARP表为执行本流程之前按照现有方式建立的。按照现有方式建立的ARP表中包含若干ARP表项,每一ARP表项包含RRPP环中节点接入的主机的地址信息比如MAC地址、网关设备向该主机发送下行流量的出端口信息等。
本步骤402中,第一报文为实现本发明新增加的报文,其具体可简称为LINK-DownGW,是RRPP环发生异常时,与该异常相邻的节点向网关设备发送的。该第一报文与现有的Link-Down报文类似,只不过目的MAC地址不同,前者由于是向网关设备发送,因此,目的MAC地址为网关设备的MAC地址,后者是向主节点发送,因此,目的MAC地址为主节点的MAC地址。
另外,本实施例中,RRPP环发生的异常可包括:节点之间的链路异常或者节点本身异常,当所述RRPP环发生的异常为节点之间的链路异常时,所述与异常相邻的节点为该链路上的两个节点,比如,图3中,节点3和节点4之间的链路异常,则与异常相邻的节点为节点3和节点4;而当所述RRPP环的异常为节点本身异常时,所述与异常相邻的节点为该异常节点相连的两个节点,比如,图3中,节点4由于掉电发生异常,则与异常相邻的节点为节点3和节点5。
步骤403,网关设备接收到主节点发送的用于通知表项更新的第二报文后,更新步骤B确定的ARP表项中的出端口信息。
其中,步骤403中的第二报文可为COMMON-FLUSH-FDB报文。
从步骤402和步骤403可以看出,本发明中的网关设备并非像现有技术那样接收到COMMON-FLUSH-FDB报文后,删除自身上的ARP表,而是更新ARP表中的表项,这样,在网关设备接收到下行流量时,相比于现有技术,并非等到学习完ARP表后下发下行流量,而是直接利用更新后的ARP表发送该下行流量,减少下行流量中断时间。
至此,完成图4所示的流程。
为使图4所示的流程更加清楚,下面以第二报文为COMMON-FLUSH-FDB报文为例进行详细描述:
参见图5,图5为本发明实施例提供的详细流程图。该实施例1可应用于图2或图3所示的RRPP环,以图3所示的RRPP环为例,其他情况原理类似,则如图5所示,该流程可包括以下步骤:
步骤501,在RRPP环的各节点上配置网关设备的地址信息。
网关设备的地址信息具体为网关设备的MAC地址。
步骤502,RRPP环中的节点侦听其接入的主机的地址信息,在侦听到主机地址信息时,利用预先配置的所述网关设备的地址信息向网关设备发送自身的位置信息和该侦听到的主机地址信息。
优选地,RRPP环中的节点在其被配置的ARP Snooping侦听功能启动时执行上述侦听操作。当然作为本发明实施例的一种扩展,也可默认RRPP环中的节点在上电后执行上述侦听操作。
另外,为保证节点将自身的位置信息和侦听到的主机地址信息发送给网关设备,本发明可增加一种遵守RRPP协议的ARP-Flush报文,用于节点在侦听到其接入的主机的地址信息时,将自身的位置信息和该主机的地址信息携带在该ARP-Flush报文中发送给网关设备。
在上面描述中,主机地址信息具体可为主机的MAC地址。
步骤503,网关设备在ARP表中查找包含了该接收的主机地址信息的ARP表项,将接收的节点位置信息添加至该查找到的ARP表项中。
在执行步骤503之前,ARP表中ARP表项主要包括:主机地址信息、向主机发送下行流量的出端口信息。当执行完步骤503时,可以看出,ARP表项中又增加了节点位置属性。该节点位置属性用于记录主机所接入的节点的位置信息。
步骤504,网关设备收到LINK-DownGW报文后,从发送了所述LINK-DownGW报文的节点中选取位置距离所述网关设备最远的节点。
本发明实施例中,所述RRPP环中各节点的位置信息是预先被设置的,其在设置时,可按照从主节点开始,沿着主节点的主端口方向依次递增的原则设置。比如,图3中,主节点为节点1,传输节点为节点2至节点6,节点2至节点6依次为沿着主节点的主端口方向上的节点,则节点2至节点6的位置信息递增,即图3中RRPP环上按照节点位置信息从低到高的排序为:节点1至节点6。基于此,步骤504具体可为:网关设备比较自身的位置信息和发送了LINK-DownGW报文的节点的位置信息,如果前者大于或者等于后者,则从发送了LINK-DownGW报文的节点中选取位置信息低的节点,如果前者小于后者,则从发送了LINK-DownGW报文的节点中选取位置信息高的节点。
比如,如果图3所示的RRPP环中节点的位置信息按照从主节点开始,沿着主节点的主端口方向依次递增的原则设置,则当图3所示的RRPP环中节点3和节点4之间的链路异常时,节点3和节点4均向网关设备发送Link-DownGW报文,当网关设备接收到Link-DownGW报文后,发现自身的位置信息均小于发送了Link-DownGW报文的节点的位置信息,基于此,在本步骤504中,从发送了Link-DownGW报文的节点中选取位置信息高的节点即节点4。当然,如果图3所示的RRPP环中节点1和节点2之间的链路异常,则节点1和节点均向网关设备发送Link-DownGW报文,当网关设备接收到Link-DownGW报文后,发现自身的位置信息大于或者等于发送了Link-DownGW报文的节点的位置信息,基于此,在本步骤504中,从发送了Link-DownGW报文的节点中选取位置信息低的节点即节点1。
步骤505,网关设备以与步骤504选取的节点相关的节点的位置信息为关键字,在所述ARP表中查找包含该关键字的ARP表项,将查找到的ARP表项确定为需要更新的ARP表项。
与步骤504选取的节点相关的节点为:步骤504选取的节点、从该选取的节点开始按照远离网关设备的方向到达主节点所经过的节点。
如果本实施例按照从主节点开始,沿着主节点的主端口方向依次递增的原则依次设置所述RRPP环中节点的位置信息,则在步骤504比较出网关设备的位置信息高于发送了LINK-DownGW报文的节点的位置信息时,本步骤505中,从该选取的节点开始按照远离网关设备的方向到达主节点所经过的节点为:位置信息低于该选取节点的节点;而在步骤504比较出网关设备的位置信息低于发送了LINK-DownGW报文的节点的位置信息时,则本步骤505中,从该选取的节点开始按照远离网关设备的方向到达主节点所经过的节点为:位置信息高于该选取节点的节点。
仍以图3所示的RRPP环为例,如果图3所示的RRPP环中节点的位置信息按照从主节点开始,沿着主节点的主端口方向依次递增的原则设置,则在步骤504中选取的节点为节点4时,本步骤505中,从步骤504选取的节点开始按照远离网关设备的方向到达主节点所经过的节点具体为节点5和节点6。因此,本步骤505是将ARP表中包含节点4、节点5和节点6的位置信息的ARP表项确定为需要更新的ARP表项。当然,如果步骤504中选取的节点为节点1,由于该节点1本身为主节点,因此,从步骤504选取的节点开始按照远离网关设备的方向到达主节点不经过任何节点,基于此,本步骤505中,将ARP表中包含节点1的位置信息的ARP表项确定为需要更新的ARP表项。
步骤506,网关设备收到主节点发送的COMMON-FLUSH_FDB报文后,更新步骤505确定的ARP表项中的出端口信息。
其中,ARP表项中的出端口信息为网关设备向该ARP表项中的主机地址信息发送下行流量时的出端口标识,其具体可为主端口或者副端口。如此,步骤506具体为:针对步骤505确定的每一ARP表项,如果该ARP表项中的出端口为主端口,则更新该出端口为副端口,如果该ARP表项中的出端口为副端口,则更新该出端口为主端口。
需要说明的是,本步骤506中,在更新所述ARP表项中的出端口信息之后,进一步包括:将该ARP表项标识为临时变更(Pre-Forwarding)状态,该临时变更状态表示网关设备可以按照该标识为临时变更状态的ARP表项正常转发流量,但是在收到主节点发送的用于通知RRPP环正常的第三报文时需要恢复该表项到之前未更新的状态,如此,当接收到主节点发送的用于通知RRPP环正常的第三报文时,将标识了临时变更状态的ARP表项恢复到未被更新的状态。其中,该第三报文具体可为COMPLETE-FLUSH-FDB报文。
其中,将标识了临时变更状态的ARP表项恢复到未被更新的状态具体可包括:针对标识了临时变更状态的每一ARP表项,如果该ARP表项中的出端口为主端口,则将该出端口更新为副端口,如果该ARP表项中的出端口为副端口,则更新该出端口为主端口。
另外,将ARP表项标识为临时变更状态具体实现时可通过在ARP表项增加临时变更属性实现,比如,预先在每一ARP表项中增加一个临时变更属性,当该ARP表项未被更新时,对该临时变更属性取值为用于表示未被更新的标识,而当ARP表项被更新时,对该临时变更属性取值为用于表示该ARP处于临时变更状态的标识。
步骤507,网关设备在向RRPP环中节点接入的主机发送下行流量时,利用ARP表中的ARP表项下发该下行流量。
比如,图3中,网关设备在节点3和节点4之间的链路处于异常时接收到向节点4接入的主机发送的下行流量,则网关设备在ARP表中查找包含该主机地址信息的ARP表项,依据该查找到的ARP表项中的出端口信息下发该下行流量。
从步骤507可以看出,相比于现有技术,本发明实施例并非等到学习完ARP表后下发下行流量,而是直接利用更新后的ARP表发送该下行流量,减少下行流量中断时间,能够实现流量中断时间小于50ms。
至此,完成图5所示的流程。
在图5所示的流程中,步骤502至步骤503具体为网关设备获取RRPP环中节点位置信息的操作。步骤505为网关设备根据与步骤504选取的节点相关的节点的位置信息从ARP表中确定需要更新的ARP表项的操作。
需要说明的是,作为本发明实施例的一种扩展,在步骤503中,当网关设备接收到主机地址信息和节点位置信息时,其也可不将节点位置信息添加在ARP表中,而是将接收的主机地址信息和节点位置信息之间的对应关系记录在独立于ARP表的另一张表(记为表1)中。如此,步骤505替换为:网关设备从表1中获取与步骤504选取的节点相关的节点的位置信息对应的主机地址信息,以获取的主机地址信息为关键字在ARP表中查找到包含该关键字的ARP表项,将查找到的ARP表项确定为需要更新的ARP表项。其他步骤不变。
下面以图5所示的流程,举具体实施例进行描述:
该实施例应用于图6所示的RRPP环。其中,节点1为主节点,其余节点为传输节点,传输节点中节点2为网关设备。
在图6中,RRPP环上各个节点被配置的位置信息遵守从主节点开始,沿着主端口方向上节点的位置信息依次递增的原则,如此,假如主节点的位置信息为Unit1,按照沿着主端口方向位置信息依次递增的原则顺序指定各传输节点即节点2至节点6的位置信息依次为Unit2至Unit6,其中,Unit取值越大,表示位置越高。
另外,RRPP环上的每一个节点(包括主节点和传输节点)被配置了网关设备的地址信息,并且,每一节点在启动ARP Snooping功能后侦听接入的主机的地址信息比如主机的MAC地址等,当侦听到主机地址信息时,将自身的位置信息和侦听到的主机地址信息通过新增加的ARP-Flush报文发送给网关设备。当网关设备接收到ARP-Flush报文时,在ARP表中查找包含该ARP-Flush报文携带的主机地址信息的ARP表项,将该ARP-Flush报文携带的节点位置信息添加在该查找到的ARP表项中。如此,网关设备即可将每一节点的位置信息添加在包含该节点接入的主机的地址信息的ARP表项中。
在RRPP环正常时,主节点的副端口处于阻塞状态,而当RRPP环发生异常,这里以异常为图6中节点3和4之间的链路异常为例,其他情况原理类似。基于此,节点3和4向主节点发出Link-Down报文,同时向网关设备发出Link-DownGW报文。
当主节点接收到Link-Down报文后,根据现有机制开通副端口,并发出COMMON-FLUSH-FDB报文通知传输节点更新各自MAC表和ARP表。其中,除网关设备之外的传输节点均按照现有RRPP机制更新MAC表和ARP表,而网关设备不同,具体见下文描述。
当网关设备收到Link-DownGW报文时,发现是节点3和4发出的Link-DownGW,则将自身的位置信息分别与节点3和4的位置信息进行比较,比较出节点3和4的位置信息都比自身高,则继续比较节点3和节点4的位置信息,比较出节点4的位置较高;如此,将包含节点4、以及位置信息高于节点4的节点即节点5和节点6的位置信息的ARP表项确定为需要更新的ARP表项。之后,当网关设备收到主节点发出的COMMON-FLUSH-FDB报文后,对需要更新的ARP表项即包含节点4、节点5、节点6的位置信息的ARP表项进行更新。以节点4为例,节点5和节点6原理类似,则网关设备从ARP表中查找包含节点4位置信息的ARP表项,更新查找到的ARP表项中的出端口信息:若ARP表项中的出端口是主端口,则直接更新为副端口,若ARP表项中的出端口是副端口,则直接更新为主端口。并将更新后的ARP表项置为临时变更状态,如此,当网关设备此时向节点4接入的主机发送下行流量时,则查找包含该主机地址信息的ARP表项,通过该ARP表项中的出端口下发该下行流量,具体可通过图6中虚线表示的路径1即节点2-节点1-节点6-节点5形成的路径正常转发,而此时节点4发送的上行流量可通过图6中虚线表示的路径2即节点4-节点5-节点6-节点1-节点2形成的节点正常转发。
当节点3和4之间的链路恢复正常后,主节点根据现有RRPP机制恢复环路,阻断副端口,并发出COMPLETE-FLUSH-FDB报文给网关设备。
当网关设备收到COMPLETE-FLUSH-FDB后,将处于临时变更状态的ARP表项回复到之前未更新的正常状态,具体为:若处于临时变更状态的ARP表项中的出端口是主端口,则直接更新为副端口,若处于临时变更状态的ARP表项中的出端口是副端口,则直接更新为主端口。
至此,完成该实施例的描述。
以上对本发明实施例提供的方法进行了描述,下面对本发明实施例提供的装置进行描述。
参见图7,图7为本发明实施例提供的装置结构图。如图7所示,该装置可包括:
获取单元,用于获取所述RRPP环中各节点的位置信息;
确定单元,用于接收到用于表示RRPP环异常的第一报文后,根据自身的位置信息和发送了第一报文的节点的位置信息从ARP表中确定需要更新的ARP表项;
更新单元,用于接收到主节点发送的用于通知表项更新的第二报文后,更新步骤B确定的ARP表项中的出端口信息。
其中,所述确定单元在具体实现时可包括以下子单元:
选取子单元,用于从发送了所述第一报文的节点中选取位置距离所述网关设备最远的节点。其中,如果所述RRPP环中各节点的位置按照从主节点开始,沿着主节点的主端口方向依次递增的原则设置,则所述选取子单元通过以下方式选取位置距离所述网关设备最远的节点:比较自身的位置信息和发送了所述报文的节点的位置信息,如果前者大于或者等于后者,则从发送了所述报文的节点中选取位置信息小的节点,如果前者小于后者,则从发送了所述报文的节点中选取位置信息大的节点。
确定子单元,用于根据与所述选取子单元选取的节点相关的节点的位置信息从ARP表中确定需要更新的ARP表项;其中,与所述选取子单元选取的节点相关的节点为:所述选取子单元选取的节点、从该选取的节点开始按照远离网关设备的方向到达主节点所经过的节点。
本实施例中,获取单元在具体实现时通过以下子单元获取RRPP环中各节点的位置信息:
接收子单元,用于接收RRPP环中节点在侦听到其接入的主机的地址信息时发送的自身的位置信息和该侦听到的主机地址信息;
添加子单元,用于在ARP表中查找包含了主机地址信息的ARP表项,将接收的节点位置信息添加至该查找到的ARP表项中。
基于此,所述确定子单元根据与所述选取子单元选取的节点相关的节点的位置信息从ARP表中确定需要更新的ARP表项包括:以与所述选取子单元选取的节点相关的节点的位置信息为关键字,在所述ARP表中查找包含该关键字的ARP表项,将查找到的ARP表项确定为需要更新的ARP表项。
本实施例中,所述ARP表项中的出端口信息为所述网关设备向所述ARP表项中主机地址信息对应的主机发送下行流量时的出端口信息;基于此,所述更新单元更新确定单元确定的ARP表项中的出端口信息为:针对确定单元确定的每一ARP表项,如果该ARP表项中的出端口为主端口,则更新该出端口为副端口,如果该ARP表项中的出端口为副端口,则更新该出端口为主端口。
本实施例中,所述更新单元在更新所述ARP表项中的出端口信息之后,进一步包括:该ARP表项标识为临时变更状态;当接收到主节点发送的用于通知RRPP环正常的第三报文时,将标识了临时变更状态的ARP表项恢复到未被更新的状态。具体地,将标识了临时变更状态的ARP表项恢复到未被更新的状态包括:针对标识了临时变更状态的ARP表项,如果该ARP表项中的出端口为主端口,则将该出端口更新为副端口,如果该ARP表项中的出端口为副端口,则更新该出端口为主端口。其中,第三报文具体可为COMPLETE-FLUSH-FDB报文。
至此,完成本发明实施例提供的装置描述。
由以上技术方案可以看出,本发明中,本发明并非像现有技术那样删除ARP表,而是更新ARP表中的表项,这样,在网关设备接收到下行流量时,相比于现有技术,并非等到学习完ARP表后下发下行流量,而是直接利用更新后的ARP表发送该下行流量,减少下行流量中断时间。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。