链路故障处理方法、IRF成员设备及数据通信装置
技术领域
本申请涉及通信技术领域,特别是涉及一种IRF(IntelligentResilientFramework,智能弹性架构)系统成员设备间链路故障的处理方法、一种IRF成员设备和一种数据通信装置。
背景技术
IRF的核心思想是将多台设备通过IRF物理端口连接在一起,进行必要的配置后,虚拟化成一台“分布式设备”,使用这种虚拟化技术可以集合多台设备的硬件资源和软件处理能力,实现多台设备的协同工作、统一管理、提高设备的利用率和效率。图1是一种IRF示意图,如图1所示,DeviceA(设备A)、DeviceB(设备B)两台设备堆叠,组成IRF系统,DeviceA和DeviceB是该IRF系统的成员设备,DeviceA和DeviceB堆叠形成一台虚拟设备。
当IRF的成员设备之间的堆叠链路故障时,会导致一个IRF变成多个新的IRF。这些新的IRF拥有相同的IP地址等三层配置,会引起地址冲突,导致故障在网络中扩大。目前,当IRF分裂时使用MAD(Multi-ActiveDetection,多Active检测机制)检测网络中同时存在多个IRF,并进行相应的处理,以尽量降低IRF分裂对业务的影响,提高系统的可用性。
其中,MAD在检测到IRF分裂后,进行冲突处理时,会让Master(主设备)成员编号最小的IRF成员设备继续正常工作,其它IRF成员设备会迁移到Recovery状态(即禁用状态),并关闭Recovery状态的IRF中所有成员设备上除保留端口以外的其它所有物理端口(通常为业务接口),以保证该IRF成员设备不能再转发业务报文。如图1所示,DeviceA成员编号为1,DeviceB成员编号为2,当A、B之间的堆叠链路出现故障时,根据现有的MAD检测机制,冲突处理会让Master成员编号最小的IRF成员设备(即DeviceA)继续正常工作,其它IRF成员设备(即DeviceB)会迁移到Recovery状态(即禁用状态),同时关闭Recovery状态的IRF成员设备(即DeviceB)上除保留端口以外的其它所有物理端口。
然而,此时被关闭的Recovery状态的IRF成员设备(即DeviceB)上仍然在转发流量,这样必然会导致关闭的Recovery状态的IRF成员设备(即DeviceB)的流量中断和丢失,造成数据丢包。
发明内容
本申请提供了一种链路故障处理方法、一种IRF成员设备和一种数据通信装置,以解决现有IRF成员设备之间的堆叠链路故障时,容易造成流量丢失的问题。
为了解决上述问题,本申请公开了一种链路故障处理方法,用于IRF的堆叠成员设备,包括:IRF的堆叠成员设备确定需要转入禁用状态时,所述堆叠成员设备向其上下游设备发送通知报文,使所述上下游设备进入通知状态,不再向所述堆叠成员设备发送业务数据,其中,所述通知状态用于表示所述上下游设备接收所述堆叠成员设备发送的业务数据但不向所述堆叠成员设备发送业务数据的状态;同时,所述堆叠成员设备保持硬件转发表项不变,并根据所述硬件转发表项向所述上下游设备发送所述堆叠成员设备上的剩余业务数据;所述堆叠成员设备在确定所述剩余业务数据发送完毕后,转入禁用状态。
为了解决上述问题,本申请还公开了一种链路故障处理方法,应用于IRF的堆叠成员设备的上下游设备,包括:IRF的堆叠成员设备的上下游设备接收所述堆叠成员设备发送的通知报文;根据所述通知报文确定进入通知状态,并设置存储的聚合表中与所述堆叠成员设备相对应的端口的发送状态为不发送,使所述端口处于选中状态但不发送数据,其中,所述通知状态用于表示所述上下游设备接收所述堆叠成员设备发送的业务数据但不向所述堆叠成员设备发送业务数据的状态;根据所述设置,接收所述堆叠成员设备的数据但不向所述堆叠成员设备发送数据。
为了解决上述问题,本申请还公开了一种IRF成员设备,包括:发送模块,用于所述IRF成员设备因IRF堆叠链路故障确定需要转入禁用状态时,向所述IRF成员设备的上下游设备发送通知报文,使所述上下游设备进入通知状态,不再向所述堆叠成员设备发送业务数据,其中,所述通知状态用于表示所述上下游设备接收所述堆叠成员设备发送的业务数据但不向所述堆叠成员设备发送业务数据的状态;同时,保持所述IRF成员设备的硬件转发表项不变,并根据所述硬件转发表项向所述上下游设备发送所述IRF成员设备上的剩余业务数据;转换模块,用于在确定所述剩余业务数据发送完毕后,将所述IRF成员设备转入禁用状态。
为了解决上述问题,本申请还公开了一种数据通信装置,应用于与IRF成员设备相连的上下游设备,包括:第一接收模块,用于接收IRF成员设备发送的通知报文;设置模块,用于根据所述通知报文确定进入通知状态,并设置存储的聚合表中与所述IRF成员设备相对应的端口的发送状态为不发送,使所述端口处于选中状态但不发送数据,其中,所述通知状态用于表示本设备接收所述堆叠成员设备发送的业务数据但不向所述堆叠成员设备发送业务数据的状态;第二接收模块,用于根据所述设置,接收所述IRF成员设备的数据但不向所述IRF成员设备发送数据。
与现有技术相比,本申请具有以下优点:
本申请在IRF的堆叠成员设备之间的链路故障,部分IRF堆叠成员设备需要转入禁用状态前,向该部分IRF堆叠成员设备的上下游设备发送通知报文,使这些上下游设备不再向该部分IRF堆叠成员设备发送业务数据;同时该部分IRF堆叠成员设备保持硬件转发表项不变,并根据该硬件转发表项向相应的上下游设备发送该部分IRF堆叠成员设备上的剩余业务数据,直至发送完毕后,再转入禁用状态。通过本申请,IRF堆叠成员设备在没有数据需要发送后才转入禁用状态,防止了IRF堆叠成员设备迁移到禁用状态时的丢包现象,解决了现有IRF成员设备之间的堆叠链路故障时,容易造成流量丢失的问题。
附图说明
图1是一种现有技术的IRF示意图;
图2是根据本申请实施例一的一种链路故障处理方法的步骤流程图;
图3是根据本申请实施例二的一种链路故障处理方法的步骤流程图;
图4是根据本申请实施例三的一种链路故障处理方法的步骤流程图;
图5是根据本申请实施例四的一种链路故障处理方法的步骤流程图;
图6是根据本申请实施例五的一种IRF成员设备侧进行链路故障处理的步骤流程图;
图7是根据本申请实施例五的一种IRF上游设备侧进行链路故障处理的步骤流程图;
图8是根据本申请实施例六的一种IRF成员设备的结构框图;
图9是根据本申请实施例七的一种IRF上下游设备的结构框图;
图10是根据本申请实施例八的一种IRF系统的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
实施例一
参照图2,示出了根据本申请实施例一的一种链路故障处理方法的步骤流程图。
本实施例从IRF堆叠成员设备侧对IRF的链路故障处理进行说明。
本实施例的链路故障处理方法用于IRF的堆叠成员设备之间的链路故障处理,包括以下步骤:
步骤S102:IRF的堆叠成员设备之间的链路故障时,IRF分裂,部分IRF的堆叠成员设备确定需要转入禁用状态,即Recovery状态。
如前所述,IRF分裂后,Master成员编号最小的IRF会继续正常工作,而其它IRF成员设备需要迁移到Recovery状态(即禁用状态)。
步骤S104:需要转入禁用状态的堆叠成员设备向其上下游设备发送通知报文,使其上下游设备不再向其发送业务数据;同时,该部分堆叠成员设备保持硬件转发表项不变,并根据硬件转发表项向其上下游设备发送堆叠成员设备上的剩余业务数据。
也即,在该部分堆叠成员设备转入禁用状态前,会先将自身剩余的业务数据继续发送到相应的上下游设备,而此时,上下游设备不会再向这部分堆叠成员设备再发送数据。
硬件转发表项中记录了各数据的转发事项,如源地址,目标地址、发送数据的接口等,堆叠成员设备根据该硬件转发表项实现数据的转发。
步骤S106:需要转入禁用状态的堆叠成员设备在确定剩余业务数据发送完毕后,转入禁用状态。
通知报文可以是一个简单的报文,通知到堆叠成员设备的上下游设备,使上下游设备只接收堆叠成员设备的数据而不再向堆叠成员设备发送业务数据即可。在实际应用中,本领域技术人员可以根据实际情况设置通知报文。优选地,堆叠成员设备在向其上下游设备发送的通知报文中携带通知字段,其中,通知字段用于指示接收该通知报文的上下游设备是否进入通知状态,通知状态用于表示上下游设备接收堆叠成员设备发送的业务数据但不向堆叠成员设备发送业务数据的状态。如,通过LACP(LinkAggregationControlProtocol,链路聚合控制协议)协议报文、ND(NeighborDiscoveryProtocol,邻居发现协议)协议报文、ARP(AddressResolutionProtocol,地址解析协议)协议报文等携带通知字段,或者设置专门携带通知字段的报文等。通过通知字段,可以最大限度地利用现有的协议报文,无须对现有流程做大太改动,节约了实现成本,简化了实现过程。
优选地,通知报文中还携带有定时器字段,定时器字段用于指示上下游设备保持通知状态的最长时间。一般来说,该定时器字段的值可以和堆叠成员设备中定时器的设定值一致,以便于堆叠成员设备上剩余数据的完全发送。但不限于此,在实际使用中,本领域技术人员也可以根据实际情况,设置定时器字段的值与堆叠成员设备中定时器的设定值略有差异。通过定时器字段,上下游设备能够获知堆叠成员设备发送剩余数据的需要时间,明确了对某个堆叠成员设备只接收不发送数据的时长。
优选地,堆叠成员设备在确定剩余业务数据发送完毕后,转入禁用状态的步骤包括:堆叠成员设备在监控定时器设定的一个时间周期内,通过流量监控确定没有数据接收和发送,则确定剩余业务数据发送完毕,向上下游设备发送通知确认报文,并将堆叠成员设备的状态转入禁用状态;其中,通知确认报文用于通知相应的上下游设备,也即接收通知确认报文的上下游设备,堆叠成员设备即将进入禁用状态,以及指示接收通知确认报文的上下游设备退出通知状态。通过监控定时器和流量监控,堆叠成员设备可以准确获知剩余数据的发送情况;而通过通知确认报文,上下游设备能够明确获知堆叠成员设备是否已将剩余数据发送完毕。
优选地,本实施例的链路故障处理方法还包括:若堆叠成员设备确定监控定时器已超时,则直接转入禁用状态。若监控定时器已超时,则说明要么剩余数据已发送完毕,要么剩余数据发送出现问题,此时,堆叠成员设备都将直接转入禁用状态,从而保障了链路故障不会扩大。堆叠成员设备转入禁用状态后,解除除了LACP协议报文、堆叠协议报文之外的其他协议报文的阻断状态,关闭堆叠成员设备上除保留端口以外的其它所有物理端口(通常为业务接口),这样堆叠成员设备不再转发业务报文。
通过本实施例,在IRF的堆叠成员设备之间的链路故障,部分IRF堆叠成员设备需要转入禁用状态前,向该部分IRF堆叠成员设备的上下游设备发送通知报文,使这些上下游设备不再向该部分IRF堆叠成员设备发送业务数据;同时该部分IRF堆叠成员设备保持硬件转发表项不变,并根据该硬件转发表项向相应的上下游设备发送该部分IRF堆叠成员设备上的剩余业务数据,直至发送完毕后,再转入禁用状态。通过本实施例,IRF堆叠成员设备在没有数据需要发送后才转入禁用状态,防止了IRF堆叠成员设备迁移到禁用状态时的丢包现象,解决了现有IRF成员设备之间的堆叠链路故障时,容易造成流量丢失的问题。
实施例二
参照图3,示出了根据本申请实施例二的一种链路故障处理方法的步骤流程图。
本实施例从IRF堆叠成员设备的上下游设备侧对IRF的链路故障处理进行说明。
本实施例的链路故障处理方法用于IRF的堆叠成员设备之间的链路故障处理,包括以下步骤:
步骤S202:IRF堆叠成员设备的上下游设备接收IRF堆叠成员设备发送的通知报文。
需要转入禁用状态的IRF堆叠成员设备会向其上下游设备发送通知报文,以通知其上下游设备不再向其发送业务数据,但可接收其发送的业务数据。
步骤S204:IRF堆叠成员设备的上下游设备根据通知报文设置与IRF堆叠成员设备相对应的聚合成员端口不发送数据。
步骤S206:IRF堆叠成员设备的上下游设备根据所述设置,接收IRF堆叠成员设备的数据但不向IRF堆叠成员设备发送数据。
也即,在与IRF堆叠成员设备相对应的聚合成员端口上,上下游设备只接收数据不发送数据。
优选地,IRF堆叠成员设备的上下游设备根据通知报文设置上下游设备存储的聚合表中,与堆叠成员设备相对应的聚合成员端口的发送状态为不发送,使聚合成员端口不发送数据,其中,发送状态用于指示是否通过该聚合成员端口发送数据;IRF堆叠成员设备的上下游设备根据设置的聚合成员端口的发送状态,接收堆叠成员设备的数据但不向堆叠成员设备发送数据。发送状态字段可以设置在上下游设备存储的聚合表中,通过该字段,能够简单快速地获取相应端口的发送状态,进而进行后续操作。
优选地,IRF堆叠成员设备的上下游设备根据通知报文中携带的通知字段,确定进入通知状态,并设置与堆叠成员设备相对应的聚合成员端口的发送状态为不发送;其中,通知字段用于指示接收通知报文的上下游设备是否进入通知状态,通知状态用于表示上下游设备接收堆叠成员设备发送的业务数据但不向堆叠成员设备发送业务数据的状态。
优选地,通知报文中还携带有定时器字段,定时器字段用于指示上下游设备保持通知状态的最长时间。
优选地,本实施例的链路故障处理方法还包括:若上下游设备在定时器字段指示的时间内,接收到堆叠成员设备发送的通知确认报文,则设置聚合表中,与堆叠成员设备相对应的聚合成员端口的发送状态为不发送、以及选中状态为非选中,并退出通知状态,其中,选中状态用于指示该聚合成员端口是否被选中,通知确认报文用于通知接收通知确认报文的上下游设备堆叠成员设备即将进入禁用状态,以及指示接收通知确认报文的上下游设备退出通知状态;若上下游设备在定时器字段指示的时间内,未接收到堆叠成员设备发送的通知确认报文,则设置聚合表中,与堆叠成员设备相对应的聚合成员端口的发送状态为不发送、以及选中状态为非选中,并退出所述通知状态。当发送状态为不发送、选中状态为选中时,上下游设备可以接收对应的IRF堆叠成员设备的数据但不能向其发送数据;当发送状态为不发送、选中状态为非选中时,上下游设备既不能接收对应的IRF堆叠成员设备的数据也不能向其发送数据。
通过本实施例,当IRF堆叠成员设备之间的链路发生故障时,需要转入禁用状态的IRF堆叠成员设备会向其上下游设备发送通知报文,其上下游设备在收到该通知报文后,禁止对应端口的数据发送,也即,不再向IRF堆叠成员设备发送设备,但可接收IRF堆叠成员设备发送的数据,从而使得IRF堆叠成员设备将自身的剩余数据发送完,避免了流量丢失。
需要说明的是,本实施例中以聚合成员端口为例,通知报文以及通知确认报文通过链路聚合控制协议报文发送,但本领域技术人员应当明了,使用其它协议的其它端口类型均可参照本实施例实现本发明的链路故障处理。
实施例三
参照图4,示出了根据本申请实施例三的一种链路故障处理方法的步骤流程图。
本实施例从IRF堆叠成员设备和其上下游设备的数据交互对IRF的链路故障处理进行说明。
本实施例的链路故障处理方法包括以下步骤:
步骤S302:IRF堆叠成员设备确定需要转入禁用状态。
本实施例中的IRF堆叠成员设备均指链路故障后,确定需要转入禁用状态的IRF堆叠成员设备。
步骤S304:IRF堆叠成员设备向其上下游设备发送通知报文,同时,IRF堆叠成员设备保持硬件转发表项不变,并根据硬件转发表项向其上下游设备发送IRF堆叠成员设备上的剩余业务数据。
优选地,本实施例的通知报文中携带有通知字段和定时器字段。
步骤S306:上下游设备接收IRF堆叠成员设备发送的通知报文以及剩余数据。
步骤S308:上下游设备根据通知报文设置与IRF堆叠成员设备相对应的聚合成员端口不发送数据,并继续接收IRF堆叠成员设备发送剩余数据。
优选地,本实施例中,上下游设备根据通知报文中携带的通知字段,确定进入通知状态,并设置与IRF堆叠成员设备相对应的聚合成员端口的发送状态为不发送,使聚合成员端口不发送数据。
步骤S310:上下游设备根据所述设置,继续接收IRF堆叠成员设备发送的剩余数据但不向IRF堆叠成员设备发送数据。
优选地,本实施例中,上下游设备根据设置的聚合成员端口的发送状态,接收IRF堆叠成员设备的数据但不向IRF堆叠成员设备发送数据。
步骤S312:IRF堆叠成员设备确定剩余业务数据发送完毕,转入禁用状态。
优选地,本实施例中,IRF堆叠成员设备在监控定时器设定的时间(与通知报文的定时器字段的时间一致)内的一个时间周期中,通过流量监控确定没有数据接收和发送,则确定剩余业务数据发送完毕,向其上下游设备发送通知确认报文,并转入禁用状态。
优选地,本实施例中,上下游设备在通知报文的定时器字段指示的时间内,接收到IRF堆叠成员设备发送的通知确认报文,则设置聚合表中,与IRF堆叠成员设备相对应的聚合成员端口的发送状态为不发送、以及选中状态为非选中,并退出通知状态。
通过本实施例,实现了需要转入禁用状态的IRF堆叠成员设备上剩余数据的完全发送,以及该IRF堆叠成员设备的上下游设备只接收该IRF堆叠成员设备的数据而不再向其发送数据,避免了IRF堆叠链路故障时,IRF堆叠成员设备上的数据丢包和流量丢失。
需要说明的是,本实施例中以聚合成员端口为例,通知报文以及通知确认报文通过链路聚合控制协议报文发送,但本领域技术人员应当明了,使用其它协议的其它端口类型均可参照本实施例实现本发明的链路故障处理。
实施例四
参照图5,示出了根据本申请实施例四的一种链路故障处理方法的步骤流程图。
本实施例以LACPMAD检测冲突处理机制为例,对本申请的链路故障处理进行说明。
本实施例的链路故障处理方法包括以下步骤:
步骤S402:定义通知报文、通知确认报文。
包括:对LACP报文进行扩展,使用预留的Reserved字段新增TIMERTLV字段、INFOTLV字段和INFOACKTLV字段,用来在冲突处理时和对端设备进行状态通知。新增字段如下:
TIMERTLV字段:TYPE为1,长度4字节,VLAUE默认为0。TIMERTLV字段用于指示IRF堆叠成员设备的上下游设备进行通知状态的最长保持时间。如果超过该时间上下游设备还没有收到堆叠成员设备的通知状态退出报文,如通知确认报文,则直接退出通知状态。
INFOTLV字段:TYPE为2,长度1字节,VLAUE可以为0和1,默认为0。为0时表示接受通知报文的设备不需要进入通知状态,为1时表示接受通知报文的设备需要进入通知状态。
INFOACKTLV字段:TYPE为3,长度1字节,VLAUE可以为0和1,默认为0。为0时表示接受通知确认报文的设备不需要退出通知状态,为1时表示接受通知确认报文的设备需要退出通知状态。
当INFOACKTLV字段的VLAUE为0时,LACP报文可以作为通知报文,当当INFOACKTLV字段的VLAUE为1时,LACP报文可以作为通知确认报文。
步骤S404:定义报文发送时机。
通知报文发送时机:当堆叠成员设备根据MAD检测机制检测到冲突,确定本堆叠成员设备需要转到Recovery状态,则触发堆叠成员设备向上下游设备发送通知报文。
通知确认报文发送时机:若在堆叠成员设备的定时器超时前的一个时间周期内,堆叠成员设备监测到本堆叠成员设备端口没有发送和接受数据报文,则触发堆叠成员设备向上下游设备发送通知确认报文。
步骤S406:定义堆叠成员设备的状态通知、确认机制。
当堆叠成员设备根据MAD检测机制检测到冲突,确定本堆叠成员设备需要转到Recovery状态,则触发堆叠成员设备向其上下游设备发送通知报文,使得上下游设备中对应的聚合成员端口只进行流量的接收,不会再进行流量的发送。同时,堆叠成员设备保持硬件转发表项不变,阻止除LACP协议报文、堆叠协议报文的发送,启动监控定时器,增加流量监控模块的处理,对堆叠成员设备进行流量的实时监控。
若堆叠成员设备在定时器超时前的一个时间周期内监测到没有流量进行发送、接收,则堆叠成员设备向其上下游设备发送通知确认报文,告知上下游设备本堆叠成员设备即将进入Recovery状态。若定时器已超过配置时间,则直接进入Recovery状态,协议报文恢复正常发送。
步骤S408:定义上下游设备中LACP协议模块的处理。
上下游设备中,内部存储的原聚合表如表1所示:
表1原聚合表
当前上下游设备中的聚合模块发送数据和接收数据都是根据成员端口的选中状态而定,选中状态为选中时,端口可以接收和发送报文,非选中端口不能进行发送数据和接收数据。
本申请为了对IRF堆叠分裂处理中的流量进行保护,对原聚合表新增发送状态选项数据,如表2所示:
表2新聚合表
其中,端口的发送状态初始值根据选中状态而定,选中端口发送状态为Y(可发送数据),非选中端口发送状态为N(不可发送数据)。
同时,聚合模块处理流程中增加发送状态的处理,包括:上下游设备收到通知报文后,启动通知状态定时器,更新对应的设备聚合口和聚合成员口的信息,计算堆叠成员设备对应的聚合成员端口的选中状态,将对应聚合成员端口的发送状态设置为N;当上下游设备有流量要从聚合口发送,先进行发送状态判断,过滤掉发送状态为N的端口,再对选中端口进行hash(哈希),这样收到通知报文的端口仍然可以正常接收流量,但不会发送流量;上下游设备若在通知状态定时器超时前收到通知确认报文,得知对端设备即将进入Recovery状态,将对应聚合成员端口状态设置为非选中状态,发送状态为N;上下游设备若未在通知状态定时器超时前收到通知确认报文,定时器超时,将对应聚合成员端口状态设置为非选中状态,发送状态为N。
步骤S410:根据上述定义,当堆叠成员设备根据MAD检测机制检测到冲突,确定本堆叠成员设备需要转到Recovery状态时,堆叠成员设备和堆叠成员设备的上下游设备进行相应的链路故障处理。
包括:根据上述定义,当堆叠成员设备根据MAD检测机制检测到冲突,确定本堆叠成员设备需要转到Recovery状态时,则触发堆叠成员设备向上下游设备发送通知报文,同时,堆叠成员设备保持硬件表项不变,继续向上下游设备发送剩余业务数据,并阻止除LACP协议报文、堆叠协议报文的发送;上下游设备收到通知报文后,根据通知报文设置对应端口的发送状态,使得上下游设备中的对应的端口只进行流量的接收,不再进行流量的发送。
通过本实施例,提供了一种IRF堆叠成员设备MAD冲突检测处理机制中的流量保护方案。当用户的组网是通过LACP协议来连接IRF堆叠成员设备与上下游设备,通过利用LACP协议报文扩展字段携带设备状态信息,使得当堆叠链路出现故障后,要迁移到Recovery状态的IRF堆叠成员设备硬件转发表项保持不变,当没有流量需要转发后再迁移到Recovery状态,防止出现IRF堆叠成员设备迁移到Recovery状态时的丢包现象。
需要说明的是,本实施例仅以LACPMAD冲突检测为例,但本领域技术人员应当明了,ARPMAD检测机制和NDMAD检测机制均可以通过类似方案,参照本实施例实现。
实施例五
本实施例以图1所示组网,LACPMAD检测为例,对本申请的链路故障处理进行说明。
图1中,DeviceA、DeviceB两台设备堆叠,形成一台虚拟设备,DeviceA、DeviceB分别通过链路聚合协议LACP与上游设备DeviceC相连。其中DeviceA为MASTER(主设备),DeviceB为SLAVE(从设备)。
IRF堆叠成员设备侧的链路故障处理如图6所示,包括:
步骤S502:IRF堆叠成员设备根据MAD检测机制判断出现冲突,确定本IRF堆叠成员设备需要进入到Recovery状态。
本实施例中,当DeviceA、DeviceB堆叠链路出现故障,DeviceB通过MAD检测机制检测到冲突,进入冲突处理阶段,判断本堆叠成员设备(DeviceB)需要进入Recovery状态。
步骤S504:IRF堆叠成员设备通过聚合链路向其上下游设备发送通知报文。
DeviceB通过聚合链路向其上游设备DeviceC发送通知报文,通知报文中携带TIMERTLV字段和INFOTLV字段。其中,TIMERTLV字段内容如下:TYPE为1,长度为4字节,VLAUE为1分钟;INFOTLV字段内容如下:TYPE为2,长度1字节,VLAUE为1,表示需要接受该报文的设备进入通知状态。
步骤S506:同时,IRF堆叠成员设备阻断除LACP协议报文、堆叠协议报文之外的协议报文发送,保持硬件转发表项不变,启动流量监测定时器,进行流量监测。
同时,DeviceB会阻止除LACP协议报文、堆叠协议报文外的其它报文的发送,保持硬件转发表项不变,启动通知状态定时器,通过流量监测模块实时监控DeviceB所有端口的流量(LACP协议报文、堆叠协议报文除外)发送接收情况。
步骤S508:IRF堆叠成员设备判断是否定时器超时前监测到一个时间周期内没有流量接收和发送,若是,执行步骤S510,若否,则直接执行步骤S512。
DeviceB通过流量监测模块实时监控DeviceB所有端口的流量(LACP协议报文、堆叠协议报文除外)发送接收情况,在定时器超时前监测到DeviceB所有端口发送接收的业务流量为0,则会触发DeviceB通过聚合链路向上游设备DeviceC发送通知确认报文。
步骤S510:IRF堆叠成员设备通过聚合链路向上下游设备发送通知确认报文。
DeviceB在定时器超时前监测到DeviceB所有端口发送接收的业务流量为0,触发DeviceB通过聚合链路向上游设备DeviceC发送通知确认报文,通知确认报文中INFOACKTLV字段内容如下:TYPE为3,长度为1字节,VLAUE为1,表示需要接受该报文的设备退出通知状态。
步骤S512:IRF堆叠成员设备进入Recovery状态。
DeviceB发送通知确认报文后,将本设备转入Recovery状态,解除除了LACP协议报文、堆叠协议报文之外的其他协议报文的阻断状态,关闭DeviceB上除保留端口以外的其它所有物理端口(通常为业务接口),这样DeviceB不再转发业务报文。
IRF堆叠成员设备的上游设备侧的链路故障处理如图7所示,包括:
步骤S602:上游设备通过聚合链路收到IRF堆叠成员设备发送的通知报文。
本实施例中,DeviceC收到DeviceB发送的通知报文。
步骤S604:上游设备设置对应成员端口发送状态为N,启动通知状态定时器。
例如,DeviceC收到通知报文后,设置对应成员端口发送状态为N,则此时聚合组1的数据如表3所示:
表3聚合表数据存储
从表3中可以看出,当堆叠链路故障,DeviceB需要转入Recovery状态,向DeviceC发送通知报文,DeviceC收到该通知报文后,将与DeviceB对应的聚合端口GE1/0/2的发送状态设置为“N”。
当DeviceC有流量要从聚合组1发送出去,会从选中端口(GE1/0/1、GE1/0/2)中进行发送状态判断,过滤掉发送状态为N的端口(GE1/0/2),再对剩余选中端口(GE1/0/1)进行hash,流量会从GE1/0/1端口发送出去。这样收到通知报文的端口(GE1/0/2)仍然可以正常接收流量,但不会发送流量。
然后,DeviceC启动通知状态定时器,等待DeviceB的通知确认报文。
步骤S606:上游设备判断是否在定时器超时前收到通知确认报文,若是,执行步骤S608;若否,则执行步骤S610。
步骤S608:上游设备保持对应聚合成员端口为非选中状态,发送状态为N。
DeviceC启动通知状态定时器,在通知状态定时器超时前若收到DeviceB发送的通知确认报文,得知DeviceB即将进入Recovery状态,则保持GE1/0/2口状态为非选中状态,发送状态为N。
此外,当IRF堆叠成员设备转入Recovery状态后,上游设备会获知IRF堆叠成员设备转入了Recovery状态,则设置相应的端口为非选中状态,发送状态为N。本实施例中,当DeviceB设备进入Recovery状态,关闭物理接口,DeviceC设备感知链路事件,进行聚合重计算,将聚合组1中GE1/0/2口设置为非选中状态,发送状态为N。
步骤S610:上游设备设置对应聚合成员端口为非选中状态,发送状态为N。
DeviceC在通知状态定时器超时前未收到DeviceB发送的通知确认报文,而DeviceB设备进入Recovery状态,关闭物理接口,DeviceC设备感知链路事件,进行聚合重计算,将聚合组1中GE1/0/2口设置为非选中状态,发送状态为N。
需要说明的是,本实施例以上游设备为例,但本领域技术人员应当明了,下游设备可参考本实施例的上游设备实现本申请的链路故障处理。
另外,本实施例以LACPMAD检测为例,当用户使用LACPMAD检测机制进行IRF分裂冲突检测处理时,可以使用LACP协议报文携带扩展选项数据来进行设备间信息的交互,保证冲突处理时IRF设备流量转发不中断。但不限于此,ARPMAD检测机制和NDMAD检测机制也可以参照本实施例通过类似方法实现,如,当用户使用NDMAD检测机制进行IRF分裂冲突检测处理时,可以使用ND协议报文携带扩展选项数据来进行设备间信息的交互,保证冲突处理时IRF设备流量转发不中断;当用户使用ARPMAD检测机制进行IRF分裂冲突检测处理时,可以使用ARP协议报文携带扩展选项数据来进行设备间信息的交互,保证冲突处理时IRF设备流量转发不中断。
本实施例通过协议报文扩展字段携带设备状态信息,定义通知报文、通知确认报文,提供了一种堆叠成员设备与上下游设备在堆叠分裂处理时通知设备状态的方式。IRF设备发生分裂时保持硬件转发表项不变,根据冲突处理原则与上下游设备交互报文,当堆叠成员设备一个监测周期内没有业务流量接收、发送后,再将该堆叠成员设备迁移到Recovery状态,从而避免当前堆叠设备分裂进行冲突处理流量的丢失,能够在堆叠分裂检测处理时对流量进行保护,避免堆叠分裂冲突处理时的流量丢失。
实施例六
参照图8,示出了根据本申请实施例六的一种IRF成员设备(即IRF堆叠成员设备)的结构框图。
本实施例的IRF成员设备中设置有链路故障处理装置,包括:发送模块702,用于IRF成员设备因IRF堆叠链路故障确定需要转入禁用状态时,向IRF成员设备的上下游设备发送通知报文,使上下游设备不再向其发送业务数据;同时保持IRF成员设备的硬件转发表项不变,并根据硬件转发表项向上下游设备发送IRF成员设备上的剩余业务数据;转换模块704,用于在确定剩余业务数据发送完毕后,将IRF成员设备转入禁用状态。
优选地,发送模块702在向IRF成员设备的上下游设备发送通知报文时,在通知报文中携带通知字段,其中,通知字段用于指示接收通知报文的上下游设备是否进入通知状态,通知状态用于表示上下游设备接收堆叠成员设备发送的业务数据但不向堆叠成员设备发送业务数据的状态。
优选地,通知报文中还携带有定时器字段,定时器字段用于指示上下游设备保持通知状态的最长时间。
优选地,转换模块704,用于在IRF成员设备的监控定时器设定的时间内,通过流量监控确定没有数据接收和发送,则确定剩余业务数据发送完毕,向上下游设备发送通知确认报文(也可以交由发送模块702发送),并将堆叠成员设备的状态转入禁用状态;其中,通知确认报文用于通知接收通知确认报文的上下游设备堆叠成员设备即将进入禁用状态,以及指示接收通知确认报文的上下游设备退出通知状态。
优选地,转换模块704,还用于若IRF成员设备确定监控定时器已超时,则直接转入禁用状态。
本实施例的IRF成员设备用于实现前述多个方法实施例中相应的IRF成员设备侧的链路故障处理,并具有相应的方法实施例的有益效果,在此不再赘述。
实施例七
参照图9,示出了根据本申请实施例七的一种IRF上下游设备的结构框图。
本实施例的IRF上下游设备中设置有数据通信装置,该装置包括:第一接收模块802,用于接收IRF成员设备发送的通知报文;设置模块804,用于根据通知报文设置与IRF成员设备相对应的聚合成员端口不发送数据;第二接收模块806,用于根据所述设置,接收IRF成员设备的数据但不向IRF成员设备发送数据。
优选地,设置模块804,用于根据通知报文设置存储的聚合表中,与堆叠成员设备相对应的聚合成员端口的发送状态为不发送,使聚合成员端口不发送数据,其中,发送状态用于指示是否通过该聚合成员端口发送数据;第二接收模块806,用于根据设置的聚合成员端口的发送状态,接收堆叠成员设备的数据但不向堆叠成员设备发送数据。
优选地,设置模块804,用于根据通知报文中携带的通知字段,确定进入通知状态,并设置与IRF成员设备相对应的聚合成员端口的发送状态为不发送;其中,通知字段用于指示接收通知报文的IRF上下游设备是否进入通知状态,通知状态用于表示IRF上下游设备接收IRF成员设备发送的业务数据但不向IRF成员设备发送业务数据的状态。
优选地,通知报文中还携带有定时器字段,定时器字段用于指示IRF上下游设备保持通知状态的最长时间。
优选地,设置模块804,还用于若IRF上下游设备在定时器字段指示的时间内,接收到IRF成员设备发送的通知确认报文(也可以由第一接收模块802接收),则设置聚合表中,与IRF成员设备相对应的聚合成员端口的发送状态为不发送、以及选中状态为选中,并退出通知状态,其中,选中状态用于指示该聚合成员端口是否被选中,通知确认报文用于通知接收通知确认报文的IRF上下游设备IRF成员设备即将进入禁用状态,以及指示接收通知确认报文的IRF上下游设备退出通知状态;若IRF上下游设备在定时器字段指示的时间内,未接收到IRF成员设备发送的通知确认报文,则设置聚合表中,与IRF成员设备相对应的聚合成员端口的发送状态为不发送、以及选中状态为非选中,并退出通知状态。
需要说明的是,本实施例中以聚合成员端口为例,通知报文以及通知确认报文通过链路聚合控制协议报文发送,但本领域技术人员应当明了,使用其它协议的其它端口类型均可参照本实施例实现本发明的链路故障处理。
本实施例的IRF上下游设备用于实现前述多个方法实施例中相应的IRF成员设备的上下游设备侧的链路故障处理,并具有相应的方法实施例的有益效果,在此不再赘述。
实施例八
参照图10,示出了根据本申请实施例八的一种IRF系统的结构框图。
本实施例的IRF系统包括实施例六中的IRF成员设备700和实施例七中的IRF上下游设备800。其中,IRF成员设备700的结构可参考实施例六,IRF上下游设备800的结构可参考实施例七,在此不再赘述。
在本实施例的IRF系统中,当IRF成员设备之间的堆叠链路发生故障时,IRF成员设备700的发送模块702在确定本IRF成员设备700需要转入禁用状态时,向IRF成员设备700的上下游设备800发送通知报文,使上下游设备800不再向其发送业务数据;同时保持IRF成员设备700的硬件转发表项不变,并根据硬件转发表项向上下游设备800发送IRF成员设备700上的剩余业务数据,其中,通知报文中携带有通知字段和定时器字段;IRF上下游设备800的第一接收模块802接收到IRF成员设备700发送的通知报文后,由设置模块804根据通知报文设置存储的聚合表中,与IRF成员设备700相对应的聚合成员端口的发送状态为不发送,使聚合成员端口不发送数据;进而,第二接收模块806根据设置的聚合成员端口的发送状态,接收IRF成员设备700的数据但不向IRF成员设备700发送数据;当IRF成员设备700的转换模块704在IRF成员设备700的监控定时器设定的时间内,通过流量监控确定没有数据接收和发送,则确定剩余业务数据发送完毕,向IRF上下游设备800发送通知确认报文,并将堆叠成员设备的状态转入禁用状态;IRF上下游设备800若在定时器字段指示的时间内,接收到IRF成员设备700发送的通知确认报文,则设置聚合表中,与IRF成员设备700相对应的聚合成员端口的发送状态为不发送、以及选中状态为选中,并退出通知状态;若IRF上下游设备800在定时器字段指示的时间内,未接收到IRF成员设备700设备发送的通知确认报文,则设置聚合表中,与IRF成员设备700相对应的聚合成员端口的发送状态为不发送、以及选中状态为非选中,并退出通知状态;而在IRF成员设备700侧,若监控定时器已超时,则直接转入禁用状态。
通过本实施例,在IRF的堆叠成员设备之间的链路故障,部分IRF堆叠成员设备需要转入禁用状态前,向该部分IRF堆叠成员设备的上下游设备发送通知报文,使这些上下游设备不再向该部分IRF堆叠成员设备发送业务数据;同时该部分IRF堆叠成员设备保持硬件转发表项不变,并根据该硬件转发表项向相应的上下游设备发送该部分IRF堆叠成员设备上的剩余业务数据,直至发送完毕后,再转入禁用状态。通过本实施例,IRF堆叠成员设备在没有数据需要发送后才转入禁用状态,防止了IRF堆叠成员设备迁移到禁用状态时的丢包现象,解决了现有IRF成员设备之间的堆叠链路故障时,容易造成流量丢失的问题。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置和系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种链路故障处理方法、一种IRF成员设备、一种IRF上下游设备,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。