一种零丢包的重路由方法及路由系统转让专利

申请号 : CN202111358874.0

文献号 : CN113794633B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄勇汪漪李伟超

申请人 : 鹏城实验室

摘要 :

本申请公开了一种零丢包的重路由方法及路由系统,方法包括当第一网络节点发现网络故障时,为报文添加洪泛标记以形成洪泛报文,将洪泛报文通过若干第一端口洪泛;当第二网络节点接收到洪泛报文时,基于转发表确定洪泛报文的转发端口并检测接收端口与转发端口是否相同;相同时将洪泛报文通过若干第二端口洪泛;不相同时将洪泛报文转换为故障转发报文以转发。本申请不需要为各链路故障预先计算保护路径,不需要为各目的子网预先计算和存贮备用转发表。本申请中发现网络故障的节点洪泛携带有洪泛标记的洪泛报文,接收洪泛报文的节点基于自身路由表转发报文,使得在发生网络故障时形成可实现零丢包高效重路由,避免因网络故障而导致的网络丢包。

权利要求 :

1.一种零丢包的重路由方法,其特征在于,所述的方法包括:当第一网络节点发现网络故障时,所述第一网络节点为待转发报文添加洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;

当第二网络节点接收到洪泛报文时,所述第二网络节点基于转发表确定所述洪泛报文对应的转发端口;

所述第二网络节点检测所述洪泛报文对应的接收端口与所述转发端口是否相同;

当所述接收端口与所述转发端口相同时,所述第二网络节点将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;

当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故障转发报文。

2.根据权利要求1所述的零丢包的重路由方法,其特征在于,所述若干第一端口包括所述第一网络节点中除故障端口外的一个端口或者多个端口,所述若干第二端口包括所述第二网络节点中除接收端口外的一个端口或者多个端口。

3.根据权利要求1所述的零丢包的重路由方法,其特征在于,所述第二网络节点将所述洪泛报文转换为故障转发报文具体为:所述第二网络节点获取所述洪泛报文中的洪泛标记,并将所述洪泛标记修改为故障标记以得到故障转发报文。

4.根据权利要求1所述的零丢包的重路由方法,其特征在于,所述洪泛报文包括最大洪泛次数,所述当所述接收端口与所述转发端口相同时,所述第二网络节点将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛具体包括:当所述接收端口与所述转发端口相同时,所述第二网络节点读取所述洪泛报文携带的最大洪泛次数;

若所述最大洪泛次数大于零,所述第二网络节点将所述最大洪泛次数减1,再将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;

若所述最大洪泛次数等于零,所述第二网络节点丢弃所述洪泛报文。

5.根据权利要求4所述的零丢包的重路由方法,其特征在于,所述当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文之后,所述方法还包括:

基于所述故障转发报文携带的最大洪泛次数更新所述故障转发报文的报文生存时间。

6.根据权利要求5所述的零丢包的重路由方法,其特征在于,所述故障转发报文对应的更新后的报文生存时间等于报文生存时间‑(预设洪泛次数+1‑最大洪泛次数)‑1。

7.根据权利要求1所述的零丢包的重路由方法,其特征在于,所述当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故障转发报文之后,所述方法还包括:当第三网络节点接收到所述故障转发报文时,所述第三网络节点基于其自身的转发表确定所述故障转发报文对应的转发端口,并通过转发端口转发所述故障转发报文。

8.一种路由系统,其特征在于,所述系统包括若干网络节点,所述若干网络节点中的发现网络故障的第一网络节点用于为待转发报文添加洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;所述若干网络节点中的接收到洪泛报文的第二网络节点用于基于转发表确定所述洪泛报文对应的转发端口;检测所述洪泛报文对应的接收端口与所述转发端口是否相同;当所述接收端口与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;当所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故障转发报文。

9.根据权利要求8所述的路由系统,其特征在于,所述若干网络节点中的接收到所述故障转发报文的第三网络节点用于基于其自身的转发表确定所述故障转发报文对应的转发端口,并通过转发端口转发所述故障转发报文。

10.根据权利要求8所述的路由系统,其特征在于,所述若干第一端口包括所述第一网络节点中除故障端口外的一个端口或者多个端口,所述若干第二端口包括所述第二网络节点中除接收端口外的一个端口或者多个端口。

说明书 :

一种零丢包的重路由方法及路由系统

技术领域

[0001] 本申请涉及通信网络技术领域,特别涉及一种零丢包的重路由方法及路由系统。

背景技术

[0002] 分组网络的路由计算主要有两种类型,一种类型是利用分布式的路由协议(例如,OSPF/IS‑IS/BGP)来实现,另一种类型是采用SDN控制器的网络,由SDN控制器集中计算再将
路径下发到网络节点。当网络中出现故障时,基于第一种利用分布式路由协议的方案,需要
路由协议感知到故障,然后更新链路状态,将链路状态在全网重新同步后,计算生成新的路
由表,以指导网络节点按照新的路由转发报文。第二种SDN控制下的网络,需要故障临近节
点将故障通知SDN控制器,SDN控制器基于全网视图重新生成转发表项,安装到相关网络节
点,实现故障自愈。然而,由于网络中时刻有大量报文传送,报文间隔在纳秒级到毫秒级,而
上述两种方案从出现故障到生成或收到新的路由表,所需时间均在百毫秒级到秒级,这就
会造成在这期间因无可用的路由转发表现而导致网络丢包。
[0003] 因而现有技术还有待改进和提高。

发明内容

[0004] 本申请要解决的技术问题在于,针对现有技术的不足,提供一种零丢包的重路由方法及路由系统。
[0005] 为了解决上述技术问题,本申请实施例第一方面提供了一种零丢包的重路由方法,所述的方法包括:
[0006] 当第一网络节点发现网络故障时,所述第一网络节点为待转发报文添加洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;
[0007] 当第二网络节点接收到洪泛报文时,所述第二网络节点基于转发表确定所述洪泛报文对应的转发端口;
[0008] 所述第二网络节点检测所述洪泛报文对应的接收端口与所述转发端口是否相同;
[0009] 当所述接收端口与所述转发端口相同时,所述第二网络节点将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;
[0010] 当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故障转发报文。
[0011] 所述的零丢包的重路由方法,其中,所述若干第一端口包括所述第一网络节点中除故障端口外的一个端口或者多个端口,所述若干第二端口包括所述第二网络节点中除接
收端口外的一个端口或者多个端口。
[0012] 所述的零丢包的重路由方法,其中,所述第二网络节点将所述洪泛报文转换为故障转发报文具体为:
[0013] 所述第二网络节点获取所述洪泛报文中的洪泛标记,并将所述洪泛标记修改为故障标记以得到故障转发报文。
[0014] 所述的零丢包的重路由方法,其中,所述洪泛报文包括最大洪泛次数,所述当所述接收端口与所述转发端口相同时,所述第二网络节点将所述洪泛报文通过所述第二网络节
点的若干第二端口洪泛具体包括:
[0015] 当所述接收端口与所述转发端口相同时,所述第二网络节点读取所述洪泛报文携带的最大洪泛次数;
[0016] 若所述最大洪泛次数大于零,所述第二网络节点将所述最大洪泛次数减1,再将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;
[0017] 若所述最大洪泛次数等于零,所述第二网络节点丢弃所述洪泛报文。
[0018] 所述的零丢包的重路由方法,其中,所述当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文之后,所述方法还包括:
[0019] 基于所述故障转发报文携带的最大洪泛次数更新所述故障转发报文的报文生存时间。
[0020] 所述的零丢包的重路由方法,其中,所述故障转发报文对应的更新后的报文生存时间等于报文生存时间‑(预设洪泛次数+1‑最大洪泛次数)‑1。
[0021] 所述的零丢包的重路由方法,其中,所述当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所
述故障转发报文之后,所述方法还包括:
[0022] 当第三网络节点接收到所述故障转发报文时,所述第三网络节点基于其自身的转发表确定所述故障转发报文对应的转发端口,并通过转发端口转发所述故障转发报文。
[0023] 本申请实施例第二方面提供了一种路由系统,所述路由系统包括若干网络节点,所述若干网络节点中的发现网络故障的第一网络节点用于为待转发报文添加洪泛标记以
形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;所述若干
网络节点中的接收到洪泛报文的第二网络节点用于基于转发表确定所述洪泛报文对应的
转发端口;检测所述洪泛报文对应的接收端口与所述转发端口是否相同;当所述接收端口
与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;当
所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障转发报文,并通过所
述转发端口转发所述故障转发报文。
[0024] 所述的路由系统,其中,所述若干网络节点中的接收到所述故障转发报文的第三网络节点用于基于其自身的转发表确定所述故障转发报文对应的转发端口,并通过转发端
口转发所述故障转发报文。
[0025] 所述的路由系统,其中,所述若干第一端口包括所述第一网络节点中除故障端口外的一个端口或者多个端口,所述若干第二端口包括所述第二网络节点中除接收端口外的
一个端口或者多个端口。
[0026] 有益效果:与现有技术相比,本申请提供了一种零丢包的重路由方法及路由系统,所述方法包括当第一网络节点发现网络故障时,所述第一网络节点为待转发报文添加洪泛
标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;当
第二网络节点接收到洪泛报文时,所述第二网络节点基于转发表确定所述洪泛报文对应的
转发端口,并检测所述洪泛报文对应的接收端口与所述转发端口是否相同;当所述接收端
口与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;
当所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障转发报文,并通过
所述转发端口转发所述故障转发报文。本申请不需要为每种链路故障预先计算保护路径,
不需要为每一个目的子网预先计算和存贮备用转发表。本申请中发现网络故障的节点洪泛
携带有洪泛标记的洪泛报文,接收到洪泛报文的第二网络节点基于自身已有路由表实现报
文转发,使得在发生网络故障时可以直接进行重路由以形成可实现零丢包高效重路由,避
免因网络故障而导致的网络丢包。

附图说明

[0027] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于
本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的
附图。
[0028] 图1为本申请提供的零丢包的重路由方法的流程图。
[0029] 图2为本申请提供的零丢包的重路由方法应用于路由系统的一个具体实施例的转发过程示意图。
[0030] 图3为本申请提供的零丢包的重路由方法中的用于存储洪泛标记以及最大洪泛次数的字段的示意图。
[0031] 图4为IPv4报文编码示意图。
[0032] 图5为MAC报文编码示意图。
[0033] 图6为本申请提供的零丢包的重路由方法应用于环形拓扑结构的转发过程示意图。
[0034] 图7为本申请提供的零丢包的重路由方法应用于树型会聚拓朴结构的转发过程示意图。

具体实施方式

[0035] 本申请提供一种零丢包的重路由方法及路由系统,为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。应当理解,此
处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
[0036] 本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措
辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加
一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元
件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在
中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措
辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0037] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该
理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的
意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义
来解释。
[0038] 应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0039] 发明人经过研究发现,分组网络的路由计算主要有两种类型,一种类型是利用分布式的路由协议(例如,OSPF/IS‑IS/BGP)来实现,另一种类型是采用SDN控制器的网络,由
SDN控制器集中计算再将路径下发到网络节点。当网络中出现故障时,基于第一种利用分布
式路由协议的方案,需要路由协议感知到故障,然后更新链路状态,将链路状态在全网重新
同步后,计算生成新的路由表,以指导网络节点按照新的路由转发报文。第二种SDN控制下
的网络,需要故障临近节点将故障通知SDN控制器,SDN控制器基于全网视图重新生成转发
表项,安装到相关网络节点,实现故障自愈。然而,由于网络中时刻有大量报文传送,报文间
隔在纳秒级到毫秒级,而上述两种方案从出现故障到生成或收到新的路由表,所需时间均
在百毫秒级到秒级,这就会造成在这期间因无可用的路由转发表现而导致网络丢包。
[0040] 基于以上问题,研究人员设计了快速重路由方案,其中,MPLS TE FRR[1]方案基于面向连接的属性,预先为待保护业务建立备选路径,并采用快速端到端的路径连通检测机
制(如,BFD协议)来实现50ms内的保护倒换。这类面向连接的FRR方案,从出现故障到故障恢
复,能实现更小时间的重路由,但也不能保证不丢包。IP FRR[2],RLFA[3],TI‑LFA[4]方案,
采用预先在每个节点计算对应目的网段/目的端口的备用路由来实现,备用路由的计算,是
以假设对应端口链路故障进行的。当相应端口发生链路故障,或对面的网络设备瘫焕时,将
报文马上转备用路由转发。这类方案虽然可以做到更快速的重路由,但是为备用路由而进
行的计算工作量比较繁重,需要对每个目的网段进行,并且当备用路由计算未达到稳定时
出现故障,可能造成更严重的丢包和业务中断。
[0041] 在本申请实施例中,当第一网络节点发现网络故障时,所述第一网络节点为待转发报文添加洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第
一端口洪泛;当第二网络节点接收到洪泛报文时,所述第二网络节点基于转发表确定所述
洪泛报文对应的转发端口,并检测所述洪泛报文对应的接收端口与所述转发端口是否相
同;当所述接收端口与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若
干第二端口洪泛;当所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障
转发报文,并通过所述转发端口转发所述故障转发报文。本申请不需要为每种链路故障预
先计算保护路径,不需要为每一个目的子网预先计算和存贮备用转发表。本申请中发现网
络故障的节点洪泛携带有洪泛标记的洪泛报文,接收到洪泛报文的第二网络节点基于自身
已有路由表实现报文转发,使得在发生网络故障时可以直接进行重路由以形成可实现零丢
包高效重路由,避免因网络故障而导致的网络丢包。
[0042] 下面结合附图,通过对实施例的描述,对申请内容作进一步说明。
[0043] 本实施例提供了一种零丢包的重路由方法,所述方法可以应用于路由系统,路由系统包括若干网络节点,若干网络节点基于路由协议(如,OSPF或IS‑IS等)构成转发路由,
当若干网络节点构成的转发路由发生网络故障时,可以采用本实施例提供的零丢包的重路
由方法实现重路由,以可实现零丢包高效重路由,避免因网络故障而导致的网络丢包。
[0044] 本实施例提供了一种零丢包的重路由方法,如图1所示,所述方法包括:
[0045] S10、当第一网络节点发现网络故障时,所述第一网络节点为待转发报文添加洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛。
[0046] 具体地,网络故障包括用于转发带转发报文的链路故障或者是第一网络节点用于发放带转发报文的端口故障等。例如,在如图2所示的路由系统中,由网络节点A、网络节点
B、网络节点F、网络节点D以及网络节点E形成的转发路径中连接网络节点F和网络节点D的
链路中断,那么网络节点F通过链路层检测机制可以发现链路中断,由此网络节点F为发现
网络故障的第一网络节点。此外,发现网络故障的第一网络节点在发现网络故障后,在接收
到需要通过发生故障的链路发生的待转发报文时,会基于待转发报文形成洪泛报文,并洪
泛所述洪泛报文以使得路由系统中的网络节点可以接收到洪泛报文。
[0047] 所述洪泛报文是通过为待转发报文添加洪泛标记所形成的,其中,所述洪泛标记用于标识携带有该洪泛标记的报文为因网络故障需要故障洪泛的报文,例如,采用‘fo’作
为洪泛标记,那么当需要为待转发报文添加洪泛标记时,将洪泛标记‘fo’添加到待转发报
文内,例如,添加到报文头部等。由此,洪泛报文可以包括待转发报文和洪泛标记,其中,待
转发报文为第一网络节点接收到的需要通过发生故障的链路转发的报文。可以理解的是,
第一网络节点在接收到需要通过发生故障的链路转发的待转发报文时,会为待转发报文添
加洪泛标记以将待转发报文转换为洪泛报文。
[0048] 在一个实现方式中,待转发报文添加洪泛标记以形成洪泛报文的过程可以为:在待转发报文中增加用于存储故障转发类型的字段,故障转发类型包括洪泛类型,并且当故
障转发类型为洪泛类型时,将洪泛标记添加至该字段以使得待转发报文标记有洪泛标记。
例如,采用如图3所示的IPv4报文头ID域添加洪泛标识,或新增一个IPv6 per hop扩展头来
承载上。此外,当本实施例提供的方法基于二层实现时,如图4所示,可以扩展一个新的以太
类型。此外,在实际应用中,由于网络中可能同时存在多个网络故障,从而可以在报文头部
增加一个故障ID域,每一个网络节点对应一个故障ID,并各网络节点各自对应的故障ID互
不相同,以区分网络节点进而区分网络故障,其中,故障ID域可采用8bit标识或16bit标识。
[0049] 在形成洪泛报文后,第一网络节点会通过其自身配置的若干第一端口洪泛所述洪泛报文,其中,若干第一端口包括第一网络节点中除网络故障对应的端口外的一个端口或
者多个端口,若干第一端口的数量可以为预先设置的,用于限制用于洪泛所述洪泛报文的
端口数量。在一个典型实现方式,若干第一端口包括第一网络节点中除网络故障对应的端
口外的所有端口,也就是说,在为待转发报文添加洪泛标记形成洪泛报文后,第一网络节点
通过除网络故障对应的端口外的所有端口将洪泛报文洪泛出去。
[0050] S20、当第二网络节点接收到洪泛报文时,所述第二网络节点基于转发表确定所述洪泛报文对应的转发端口。
[0051] 具体地,第二网络节点与第一网络节点位于同一路由系统内,并且第二网络节点自身配置有转发表,其中,转发表为在发生网络故障前所使用的转发表。当第二网络节点接
收到洪泛报文时,获取其身已有的转发表,并基于转发表确定洪泛报文中的待转发报文对
应的转发端口。例如,如图2所示的路由系统中,由网络节点A、网络节点B、网络节点F、网络
节点D以及网络节点E形成的转发路径中连接网络节点F和网络节点D的链路中断,网络节点
F发现网络故障,网络节点F作为第一网络节点洪泛所述洪泛报文,路由系统中的网络节点B
接收到网络节点F洪泛的洪泛报文,从而网络节点B可以作为接收到洪泛报文的第二网络节
点,网络节点B获取自身已有转发表,基于该转发表确定洪泛报文对应的转发端口。
[0052] S30、所述第二网络节点检测所述洪泛报文对应的接收端口与所述转发端口是否相同。
[0053] 具体地,所述接收端口为接收到洪泛报文的端口,转发端口为基于第二网络节点自身已有转发表确定的转发端口,其中,转发表为第二网络节点在路由系统生成转发路由
时确定的,在未发生网络故障时,第二网络节点基于该转发表确定其接收的报文对应的转
发端口。本实施例在发生网络故障时,第二网络节点继续采用该转发表来确定其接收到的
报文对应的转发端口,也就是说,第二网络节点没有为每一个目的子网预先计算和存贮备
用转发表,而第二网络节点可以为路由系统中的任一网络节点,由此,路由系统中的每个网
络节点均没有为每一个目的子网预先计算和存贮备用转发表。例如,第二网络节点为图2所
示的网络节点B,当网络节点接收需要通过B‑F端口转发的报文时,通过其配置的转发表可
以确定该报文对应的转发端口为B‑F端口。
[0054] S40、当所述接收端口与所述转发端口相同时,所述第二网络节点将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛。
[0055] 具体地,所述接收端口与所述转发端口相同指的是第二网络节点接收到洪泛报文的端口与需要转发洪泛报文的端口为同一端口。例如,第二网络节点为图2所示的网络节点
B,网络节点B接收到洪泛报文的接收端口为B‑F的端口,网络节点B根据其配置的转发表确
定洪泛报文对应的转发端口为B‑F的端口,那么所述接收端口与所述转发端口相同。
[0056] 当所述接收端口与所述转发端口相同时,说明洪泛报文无法通过转发端口正常转发,此时需要第二网络节点继续洪泛所述洪泛报文,其中,第二网络节点通过其配置的若干
第二端口洪泛所述洪泛报文,并且若干第二端口不包括所述接收端口,这样可以避免洪泛
报文在两个端口之间往复洪泛而导致网络风暴。此外,若干第二端口包括第二网络节点中
除接收端口外的一个端口或者多个端口,并若干第二端口的数量可以为预先设置的,用于
限制用于洪泛所述洪泛报文的端口数量。在一个典型实现方式,若干第二端口包括第二网
络节点中除接收端口外的所有端口,也就是说,在第二网络节点确定洪泛报文后,通过除接
收端口外的所有端口将洪泛报文洪泛出去。
[0057] 在本实施例的一个实现方式中,所述洪泛报文包括最大洪泛次数,所述当所述接收端口与所述转发端口相同时,所述第二网络节点将所述洪泛报文通过所述第二网络节点
的若干第二端口洪泛具体包括:
[0058] 当所述接收端口与所述转发端口相同时,所述第二网络节点读取所述洪泛报文携带的最大洪泛次数;
[0059] 若所述最大洪泛次数大于零,所述第二网络节点将所述最大洪泛次数减1,再将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;
[0060] 若所述最大洪泛次数等于零,所述第二网络节点丢弃所述洪泛报文。
[0061] 具体地,所述最大洪泛次数用于限制洪泛报文可以被洪泛的次数,在第一网络节点形成洪泛报文时,可以将最大洪泛次数配置于洪泛报文内,并且每当洪泛报文被一个网
络节点洪泛一次后,洪泛报文内配置的最大洪泛次数会减一,直至洪泛报文被转换为故障
转发报文而正常转发或者是最大洪泛次数达到0。其中,最大洪泛次数可以和洪泛标记作为
一个字段存储于报文中,其中,洪泛标记用于表示故障转发类型为洪泛,最大洪泛次数用于
表示洪泛报文可以被洪泛的次数。例如,字段内容为〈flag=‘fo’,ottl=3〉,则说明故障转发
类型flag为洪泛类型,最大洪泛次数为3次。此外,在实际应用中,所述字段还可以存储有故
障网络节点ID,以区分网络故障。例如,如图5所示,所述字段可以为16bit,8bit用于存储故
障网络节点ID,4bit用于存储故障转发类型flag,4bit用于存储最大洪泛次数ottl。
[0062] 进一步,当最大洪泛次数大于零时,说明洪泛报文还可以继续被洪泛,此时所述第二网络节点可以将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛,并将最大洪
泛次数减1,以使得下一个接收到洪泛报文的网络节点可以获知该洪泛报文还可以被洪泛
的次数。例如,第二网络节点为图2所示的网络节点B,网络节点B接收到携带有〈flag=‘fo’,
ottl=3〉的洪泛报文后,识别出洪泛报文当前处于因故障洪泛状态,网络节点B基于洪泛报
文的目的地址检查当前转发表得到的转发端口与接收端口相同,并ottl=3>0,网络节点B将
最大洪泛次数ottl减1,并且通过B‑A端口与B‑C端口洪泛报文。此时,通过网络节点B洪泛的
洪泛报文携带有,也就是说,当网络节点A作为第二网络节点,和网络
节点C作为第二网络节点时,网络节点A接收到洪泛报文和网络节点C接收到的洪泛报文携
带的最大洪泛次数均为2。此外,当最大洪泛次数等于0时,说明洪泛报文不可以再被洪泛,
而又无法正常转发洪泛报文,从而将洪泛报文丢弃。
[0063] S50、当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故障转发报文。
[0064] 具体地,当接收端口与转发端口不相同时,转发端口不是接收到洪泛报文的洪泛端口,从而可以通过转发端口正常转发洪泛报文。此时,洪泛报文不需要继续洪泛,则需要
修改洪泛报文中的洪泛标记以将洪泛报文转换为故障转发报文。基于此,在本实施例的一
个实现方式中,所述第二网络节点将所述洪泛报文转换为故障转发报文具体为:
[0065] 所述第二网络节点获取所述洪泛报文中的洪泛标记,并将所述洪泛标记修改为故障标记以得到故障转发报文。
[0066] 具体地,故障标记用于标识携带有该故障标记的报文为因网络故障导致的故障转发报文,所述洪泛标记修改为故障标记指的是采用故障标记替换洪泛报文中的洪泛标记。
例如,故障标记采用‘fi’,洪泛标记采用‘fo’,那么采用‘fi’替换‘fo’,使得故障转发报文
中的故障转发类型flag=‘fi’。此外,第一网络节点在将故障转发类型修改为故障标记后,
还可以将洪泛报文中的最大洪泛次数修改为0。
[0067] 进一步,在将洪泛标记修改为故障标记后,还可以修改故障转发报文中的报文生存时间,以使得接收到故障转发报文的第三网络节点可以获知故障转发报文的报文生存时
间。基于此,在本实施例的一个实现方式中,所述当所述接收端口与所述转发端口不相同
时,所述第二网络节点将所述洪泛报文转换为故障转发报文之后,所述方法还包括:
[0068] 基于所述故障转发报文携带的最大洪泛次数更新所述故障转发报文的报文生存时间。
[0069] 具体地,所述报文生存时间在第一网络节点将洪泛报文转换为故障转发报文之后,且在第二网络节点通过故障转发报文对应的转发端口传输之前保持不变,而当洪泛报
文被转换为故障转发报文之后,基于最大洪泛次数更新。也就是说,在将洪泛报文转换为故
障转发报文之后,修改故障转发报文中的报文生存时间,而在洪泛报文被洪泛的过程中,不
修改报文生存时间。此外,在修改故障转发报文中的报文生存时间之后,再将修改后的故障
转发报文通过转发端口传输。其中,所述报文生存时间为基于最大洪泛次数更新,更新后的
报文生存时间等于报文生存时间‑(预设洪泛次数+1‑最大洪泛次数)‑1。例如,洪泛报文携
带的报文生存时间为253,洪泛报文携带最大洪泛次数为2,洪泛报文的初始最大洪泛次数
为3,那么修改后的报文生存时间=253‑(3+1‑2)‑1=250。此外,在实际应用中,当网络节点接
收到故障转发报文时,发现故障转发报文对应的转发端口或者转发链路发生故障时,可以
直接丢弃所述故障转发报文,这是由于所述故障转发报文是由于该链路故障所形成的洪泛
报文所得到,如果继续洪泛所述故障转发报文则会出现网络传输死循环,这样不但无法转
发故障转发报文还会占用网络资源。
[0070] 在本实施例的一个实现方式中,所述当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故
障转发报文之后,所述方法还包括:
[0071] 当第三网络节点接收到所述故障转发报文时,第三网络节点通过其身的转发表确定所述故障转发报文对应的转发端口,并通过转发端口转发所述故障转发报文。
[0072] 具体地,第三网络节点为接收到故障转发报文的网络节点,第三网络节点接收到故障转发报文之后,基于其自身配置的转发表确定故障转发报文对应的转发端口,在获取
到转发端口之后,可以直接转发故障转发报文,也可以检测转发端口对应的接收端是否为
目的终端,如果不为目的终端,则直接转发故障转发报文,如果为目的终端,在将用于存储
故障标记的字段删除后转发至目的终端,以使得目的终端接收到正常报文。也就是说,当网
络出现网络故障时,传输到目的终端的报文为正常报文,从而使得目的终端在无需存储故
障转发报文的报文格式的情况可以正常接收报文,从而不会出现目的终端解析报文失败的
问题。
[0073] 此外,当目的终端接收到报文后,会进行报文查重操作以避免重复处理相同报文。在网络节点将故障转发报文中用于存储故障标记的字段删除后转发至目的终端后,目的终
端接收到报文后,会检测预设时间内是否已接收过所述报文;若已接收过所述报文,则丢弃
所述报文,若未接收到所述报文,则正常处理所述报文。这样可以避免由于洪泛所述洪泛报
文包括的待转发报文而造成的报文重复转发至目的终端的问题。
[0074] 以上完成对本实施例提供的零丢包的重路由方法的实现过程的具体说明,下面给出几个具体例子加以说明。
[0075] 实施例一
[0076] 如图2所示,路由系统包括网络节点A、网络节点B、网络节点C、网络节点D、网络节点E、网络节点F、网络节点G、网络节点H、网络节点I,并各网络节点通过运行路由协议OSPF
或IS‑IS构成转发路由,其中,从源终端S到目的终端T的转发路径为A‑B‑F‑D‑E。
[0077] 当源终端S与目的终端T进行正常通信时,连接F‑D的链路中断,网络节点F通过链路层检测机制发现故障后,在需要通过从F‑D端口转发的待转发报文的报文头部增加洪泛
信息,洪泛信息包括故障转发类型flag=’fo’以及泛洪ottl(overflow TTL)ottl=3,以得到
洪泛报文。网络节点F将洪泛报文洪泛到F‑B端口。
[0078] 网络节点B收到洪泛报文后,识别出洪泛报文当前处于因故障的洪泛状态,网络节点B基于待转发报文的目的地址以及当前转发表确定的转发端口为B‑F端口,由于转发端口
与接收端口相同,从而网络节点B将洪泛报文将洪泛信息修改为,并将
修改后的洪泛报文通过B‑A端口与B‑C端口洪泛。
[0079] 网络节点A收到洪泛报文后,网络节点A基于待转发报文的目的地址以及当前转发表确定的洪泛报文的转发端口与接收端口相同,从而网络节点A将洪泛报文将洪泛信息修
改为,并通过A‑G端口洪泛携带有〈flag=’fo’,ottl=1〉的洪泛报文,并
继续洪泛过程直至转发端口与接收端口不同。
[0080] 网络节点C收到洪泛报文后,网络节点C基于待转发报文的目的地址以及当前转发表确定的洪泛报文的转发端口为C‑D端口,洪泛报文的接收端口为C‑B端口,C‑D端口与C‑B
端口不同,网络节点C将洪泛报文的洪泛信息修改为,同时将报文IP头
中的生存时间TTL设置为原TTL‑(N+1‑ottl)‑1(例如,网络节点F收到的报文TTL为253,则网
络节点C发到网络节点D的TTL为250),同时带有〈flag=‘fi’,ottl=0〉的标记,其中‘fi’标记
是指故障转发。
[0081] 网络节点D按照正常的转发表转发故障转发报文,转发到网络节点E的故障转发报文带有标记〈flag=‘fi’,ottl=0〉,网络节点E收到报文后,去除标记〈flag=‘fi’,ottl=0〉,
将报文正常送达到目的终端T。
[0082] 实施例二
[0083] 路由系统包括网络节点A、网络节点B、网络节点C、网络节点D、网络节点E、网络节点F、网络节点G、网络节点H、网络节点I以及网络节点J,并各网络节点通过运行路由协议
OSPF或IS‑IS构成环形拓扑结构,其中,从源终端S连接网络节点A,目的终端T连接网络节点
J,源终端S到目的终端T的转发路径为A‑F‑G‑H‑I‑J。当H‑I链路中断时,如图6所示,本实施
提供的零丢包的重路由方法的实现过程为:
[0084] X100、待转发报文从A‑F‑G‑H到达网络节点H,网络节点H检测到H‑I链路故障;
[0085] X101、网络节点H在待转发报文增加洪泛信息,网络节点H将洪泛报文洪泛值网络节点G,其中,ottl值是管理员针对网络拓朴设定的最大ottl值,以确
保在故障泛洪时可以绕过正常转发路径走环路另一个方向;
[0086] X102、网络节点G点接收泛洪报文,并对比泛洪报文的转发端口与接收端口相同,将ottl减1后,将泛洪报文至网络节点F,网络节点F接收洪泛报文的接收端口与转发端口相
同,将泛洪报文中ottl减1后洪泛至网络节点A;网络节点A,接收洪泛报文的接收端口与转
发端口相同,将泛洪报文中ottl减1后洪泛至网络节点B,其中,网络节点B接收到洪泛报文
携带有
[0087] X103、网络节点B收到洪泛报文后,确定洪泛报文对应的转发端口B‑C端口与接收端口B‑A不同,网络节点B将洪泛报文中的洪泛标记修改为故障标记并将ottl置零,网络节
点B将修改得到的故障转发报文转发给网络节点C,其中,故障转发报文携带有0>;
[0088] X104、网络节点C收到故障转发报文,按照原转发表对报文进行转发,一次转发到网络节点D、网络节点E以及网络节点J;
[0089] X105、网络节点J接收到故障转发报文后,将去除后转发到目的终端T。
[0090] 实施例三
[0091] 路由系统包括网络节点A、网络节点B、网络节点C、网络节点D、网络节点E、网络节点F、网络节点G、网络节点H、网络节点I、网络节点J、网络节点K,网络节点L,网络节点M,网
络节点N,网络节点O以及网络节点P,并各网络节点通过运行路由协议OSPF或IS‑IS构成树
型会聚拓朴结构,其中,从源终端S连接网络节点G,目的终端T连接核心网络之前,源终端S
到目的终端T的转发路径为G‑C‑A‑核心网。当A连接核心网的链路中断时,如图7所示,本实
施提供的零丢包的重路由方法的实现过程为:
[0092] Y100、源终端S出发的报文,经过G‑C‑A路径,到达网络节点A时,网络节点A发现网络节点A上行连接核心网的链路故障;
[0093] Y101、基于树型拓朴结构,将网络最大ottl设置为2;网络节点A将报文打上标记形成洪泛报文,将洪泛报文通过A‑C、A‑D、A‑E以及A‑F端口洪泛;
[0094] Y102、网络节点C、网络节点D、网络节点E以及网络节点F的转发表当前都指向网络节点A,所以这四个网络节点均将洪泛报文中的标记修改为,均继续洪
泛报文;
[0095] Y103、网络节点B点接收到来自网络节点C、网络节点D、网络节点E以及网络节点F的洪泛报文,查转发表后得知转发端口与接收端口不同,网络节点B会利用内部的故障转发
表实现去冗工作选取发一份洪泛报文转发到核心网,其中,网络节点B点发向核心网的报文
带有标记;并且当核心网节点不支持携带有标记的协议时,网络节点B
去除报文中的标记信息并正常转发,例如,网络节点B点选择网络节点D作为故障转发上游,
则网络节点B转发的报文经过端到端路径G‑C‑A‑D‑B‑核心网‑T,最终到达目的地T;
[0096] Y104、C‑D链路是一个会聚网可能出现的横向链路,网络节点C、网络节点D两点分别收到来自对方的洪泛报文,按照转发规则,网络节点C、网络节点D都会将标签转为‘fi’,ottl=0>,并发向网络节点A;网络节点A接收到带有标记的故障
转发报文,发现转发端口故障,网络节点A不再转发带有标记的故障转
发报文,这样可以避免洪泛携带‘fi’标记的故障转发报文可能会引起网络风暴,通过丢弃
故障转发报文可以避免转发环路引起网络风暴;
[0097] Y105、会聚网中更下游的节点,网络节点G、网络节点H、网络节点I、网络节点J、网络节点L、网络节点M、网络节点N、网络节点O收到带有标记的报文后,
由于ottl减为0,不再泛洪,将其丢弃。
[0098] 综上所述,本实施例提供了一种零丢包的重路由方法,所述方法包括当第一网络节点发现网络故障时,所述第一网络节点为待转发报文添加洪泛标记以形成洪泛报文,并
将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;当第二网络节点接收到洪泛
报文时,所述第二网络节点基于转发表确定所述洪泛报文对应的转发端口,并检测所述洪
泛报文对应的接收端口与所述转发端口是否相同;当所述接收端口与所述转发端口相同
时,将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;当所述接收端口与所述
转发端口不相同时,将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述
故障转发报文。本申请不需要为每种链路故障预先计算保护路径,不需要为每一个目的子
网预先计算和存贮备用转发表。本申请中发现网络故障的节点洪泛携带有洪泛标记的洪泛
报文,接收到洪泛报文的第二网络节点基于自身已有路由表实现报文转发,使得在发生网
络故障时可以直接进行重路由以形成可实现零丢包高效重路由,避免因网络故障而导致的
网络丢包。
[0099] 基于上述零丢包的重路由方法,本实施例提供了一种路由系统,所述系统包括若干网络节点,所述若干网络节点中的发现网络故障的第一网络节点用于为待转发报文添加
洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪
泛;所述若干网络节点中的接收到洪泛报文的第二网络节点用于基于转发表确定所述洪泛
报文对应的转发端口;检测所述洪泛报文对应的接收端口与所述转发端口是否相同;当所
述接收端口与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若干第二端
口洪泛;当所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障转发报文,
并通过所述转发端口转发所述故障转发报文。
[0100] 所述的路由系统,其中,所述若干网络节点中的接收到所述故障转发报文的第三网络节点用于基于其自身的转发表确定所述故障转发报文对应的转发端口,并通过转发端
口转发所述故障转发报文。
[0101] 所述的路由系统,其中,所述若干第一端口包括所述第一网络节点中除故障端口外的一个端口或者多个端口,所述若干第二端口包括所述第二网络节点中除接收端口外的
一个端口或者多个端口。
[0102] 此外,上述路由系统中的各网络节点的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
[0103] 最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可
以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;
而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和
范围。