一种零丢包的重路由方法及路由系统转让专利
申请号 : CN202111358874.0
文献号 : CN113794633B
文献日 : 2022-02-01
发明人 : 黄勇 , 汪漪 , 李伟超
申请人 : 鹏城实验室
摘要 :
权利要求 :
1.一种零丢包的重路由方法,其特征在于,所述的方法包括:当第一网络节点发现网络故障时,所述第一网络节点为待转发报文添加洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;
当第二网络节点接收到洪泛报文时,所述第二网络节点基于转发表确定所述洪泛报文对应的转发端口;
所述第二网络节点检测所述洪泛报文对应的接收端口与所述转发端口是否相同;
当所述接收端口与所述转发端口相同时,所述第二网络节点将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;
当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故障转发报文。
2.根据权利要求1所述的零丢包的重路由方法,其特征在于,所述若干第一端口包括所述第一网络节点中除故障端口外的一个端口或者多个端口,所述若干第二端口包括所述第二网络节点中除接收端口外的一个端口或者多个端口。
3.根据权利要求1所述的零丢包的重路由方法,其特征在于,所述第二网络节点将所述洪泛报文转换为故障转发报文具体为:所述第二网络节点获取所述洪泛报文中的洪泛标记,并将所述洪泛标记修改为故障标记以得到故障转发报文。
4.根据权利要求1所述的零丢包的重路由方法,其特征在于,所述洪泛报文包括最大洪泛次数,所述当所述接收端口与所述转发端口相同时,所述第二网络节点将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛具体包括:当所述接收端口与所述转发端口相同时,所述第二网络节点读取所述洪泛报文携带的最大洪泛次数;
若所述最大洪泛次数大于零,所述第二网络节点将所述最大洪泛次数减1,再将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;
若所述最大洪泛次数等于零,所述第二网络节点丢弃所述洪泛报文。
5.根据权利要求4所述的零丢包的重路由方法,其特征在于,所述当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文之后,所述方法还包括:
基于所述故障转发报文携带的最大洪泛次数更新所述故障转发报文的报文生存时间。
6.根据权利要求5所述的零丢包的重路由方法,其特征在于,所述故障转发报文对应的更新后的报文生存时间等于报文生存时间‑(预设洪泛次数+1‑最大洪泛次数)‑1。
7.根据权利要求1所述的零丢包的重路由方法,其特征在于,所述当所述接收端口与所述转发端口不相同时,所述第二网络节点将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故障转发报文之后,所述方法还包括:当第三网络节点接收到所述故障转发报文时,所述第三网络节点基于其自身的转发表确定所述故障转发报文对应的转发端口,并通过转发端口转发所述故障转发报文。
8.一种路由系统,其特征在于,所述系统包括若干网络节点,所述若干网络节点中的发现网络故障的第一网络节点用于为待转发报文添加洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;所述若干网络节点中的接收到洪泛报文的第二网络节点用于基于转发表确定所述洪泛报文对应的转发端口;检测所述洪泛报文对应的接收端口与所述转发端口是否相同;当所述接收端口与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;当所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述故障转发报文。
9.根据权利要求8所述的路由系统,其特征在于,所述若干网络节点中的接收到所述故障转发报文的第三网络节点用于基于其自身的转发表确定所述故障转发报文对应的转发端口,并通过转发端口转发所述故障转发报文。
10.根据权利要求8所述的路由系统,其特征在于,所述若干第一端口包括所述第一网络节点中除故障端口外的一个端口或者多个端口,所述若干第二端口包括所述第二网络节点中除接收端口外的一个端口或者多个端口。
说明书 :
一种零丢包的重路由方法及路由系统
技术领域
背景技术
路径下发到网络节点。当网络中出现故障时,基于第一种利用分布式路由协议的方案,需要
路由协议感知到故障,然后更新链路状态,将链路状态在全网重新同步后,计算生成新的路
由表,以指导网络节点按照新的路由转发报文。第二种SDN控制下的网络,需要故障临近节
点将故障通知SDN控制器,SDN控制器基于全网视图重新生成转发表项,安装到相关网络节
点,实现故障自愈。然而,由于网络中时刻有大量报文传送,报文间隔在纳秒级到毫秒级,而
上述两种方案从出现故障到生成或收到新的路由表,所需时间均在百毫秒级到秒级,这就
会造成在这期间因无可用的路由转发表现而导致网络丢包。
发明内容
收端口外的一个端口或者多个端口。
点的若干第二端口洪泛具体包括:
述故障转发报文之后,所述方法还包括:
形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;所述若干
网络节点中的接收到洪泛报文的第二网络节点用于基于转发表确定所述洪泛报文对应的
转发端口;检测所述洪泛报文对应的接收端口与所述转发端口是否相同;当所述接收端口
与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;当
所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障转发报文,并通过所
述转发端口转发所述故障转发报文。
口转发所述故障转发报文。
一个端口或者多个端口。
标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;当
第二网络节点接收到洪泛报文时,所述第二网络节点基于转发表确定所述洪泛报文对应的
转发端口,并检测所述洪泛报文对应的接收端口与所述转发端口是否相同;当所述接收端
口与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;
当所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障转发报文,并通过
所述转发端口转发所述故障转发报文。本申请不需要为每种链路故障预先计算保护路径,
不需要为每一个目的子网预先计算和存贮备用转发表。本申请中发现网络故障的节点洪泛
携带有洪泛标记的洪泛报文,接收到洪泛报文的第二网络节点基于自身已有路由表实现报
文转发,使得在发生网络故障时可以直接进行重路由以形成可实现零丢包高效重路由,避
免因网络故障而导致的网络丢包。
附图说明
本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的
附图。
具体实施方式
处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加
一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元
件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在
中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措
辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的
意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义
来解释。
SDN控制器集中计算再将路径下发到网络节点。当网络中出现故障时,基于第一种利用分布
式路由协议的方案,需要路由协议感知到故障,然后更新链路状态,将链路状态在全网重新
同步后,计算生成新的路由表,以指导网络节点按照新的路由转发报文。第二种SDN控制下
的网络,需要故障临近节点将故障通知SDN控制器,SDN控制器基于全网视图重新生成转发
表项,安装到相关网络节点,实现故障自愈。然而,由于网络中时刻有大量报文传送,报文间
隔在纳秒级到毫秒级,而上述两种方案从出现故障到生成或收到新的路由表,所需时间均
在百毫秒级到秒级,这就会造成在这期间因无可用的路由转发表现而导致网络丢包。
制(如,BFD协议)来实现50ms内的保护倒换。这类面向连接的FRR方案,从出现故障到故障恢
复,能实现更小时间的重路由,但也不能保证不丢包。IP FRR[2],RLFA[3],TI‑LFA[4]方案,
采用预先在每个节点计算对应目的网段/目的端口的备用路由来实现,备用路由的计算,是
以假设对应端口链路故障进行的。当相应端口发生链路故障,或对面的网络设备瘫焕时,将
报文马上转备用路由转发。这类方案虽然可以做到更快速的重路由,但是为备用路由而进
行的计算工作量比较繁重,需要对每个目的网段进行,并且当备用路由计算未达到稳定时
出现故障,可能造成更严重的丢包和业务中断。
一端口洪泛;当第二网络节点接收到洪泛报文时,所述第二网络节点基于转发表确定所述
洪泛报文对应的转发端口,并检测所述洪泛报文对应的接收端口与所述转发端口是否相
同;当所述接收端口与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若
干第二端口洪泛;当所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障
转发报文,并通过所述转发端口转发所述故障转发报文。本申请不需要为每种链路故障预
先计算保护路径,不需要为每一个目的子网预先计算和存贮备用转发表。本申请中发现网
络故障的节点洪泛携带有洪泛标记的洪泛报文,接收到洪泛报文的第二网络节点基于自身
已有路由表实现报文转发,使得在发生网络故障时可以直接进行重路由以形成可实现零丢
包高效重路由,避免因网络故障而导致的网络丢包。
当若干网络节点构成的转发路由发生网络故障时,可以采用本实施例提供的零丢包的重路
由方法实现重路由,以可实现零丢包高效重路由,避免因网络故障而导致的网络丢包。
B、网络节点F、网络节点D以及网络节点E形成的转发路径中连接网络节点F和网络节点D的
链路中断,那么网络节点F通过链路层检测机制可以发现链路中断,由此网络节点F为发现
网络故障的第一网络节点。此外,发现网络故障的第一网络节点在发现网络故障后,在接收
到需要通过发生故障的链路发生的待转发报文时,会基于待转发报文形成洪泛报文,并洪
泛所述洪泛报文以使得路由系统中的网络节点可以接收到洪泛报文。
为洪泛标记,那么当需要为待转发报文添加洪泛标记时,将洪泛标记‘fo’添加到待转发报
文内,例如,添加到报文头部等。由此,洪泛报文可以包括待转发报文和洪泛标记,其中,待
转发报文为第一网络节点接收到的需要通过发生故障的链路转发的报文。可以理解的是,
第一网络节点在接收到需要通过发生故障的链路转发的待转发报文时,会为待转发报文添
加洪泛标记以将待转发报文转换为洪泛报文。
障转发类型为洪泛类型时,将洪泛标记添加至该字段以使得待转发报文标记有洪泛标记。
例如,采用如图3所示的IPv4报文头ID域添加洪泛标识,或新增一个IPv6 per hop扩展头来
承载上。此外,当本实施例提供的方法基于二层实现时,如图4所示,可以扩展一个新的以太
类型。此外,在实际应用中,由于网络中可能同时存在多个网络故障,从而可以在报文头部
增加一个故障ID域,每一个网络节点对应一个故障ID,并各网络节点各自对应的故障ID互
不相同,以区分网络节点进而区分网络故障,其中,故障ID域可采用8bit标识或16bit标识。
者多个端口,若干第一端口的数量可以为预先设置的,用于限制用于洪泛所述洪泛报文的
端口数量。在一个典型实现方式,若干第一端口包括第一网络节点中除网络故障对应的端
口外的所有端口,也就是说,在为待转发报文添加洪泛标记形成洪泛报文后,第一网络节点
通过除网络故障对应的端口外的所有端口将洪泛报文洪泛出去。
收到洪泛报文时,获取其身已有的转发表,并基于转发表确定洪泛报文中的待转发报文对
应的转发端口。例如,如图2所示的路由系统中,由网络节点A、网络节点B、网络节点F、网络
节点D以及网络节点E形成的转发路径中连接网络节点F和网络节点D的链路中断,网络节点
F发现网络故障,网络节点F作为第一网络节点洪泛所述洪泛报文,路由系统中的网络节点B
接收到网络节点F洪泛的洪泛报文,从而网络节点B可以作为接收到洪泛报文的第二网络节
点,网络节点B获取自身已有转发表,基于该转发表确定洪泛报文对应的转发端口。
时确定的,在未发生网络故障时,第二网络节点基于该转发表确定其接收的报文对应的转
发端口。本实施例在发生网络故障时,第二网络节点继续采用该转发表来确定其接收到的
报文对应的转发端口,也就是说,第二网络节点没有为每一个目的子网预先计算和存贮备
用转发表,而第二网络节点可以为路由系统中的任一网络节点,由此,路由系统中的每个网
络节点均没有为每一个目的子网预先计算和存贮备用转发表。例如,第二网络节点为图2所
示的网络节点B,当网络节点接收需要通过B‑F端口转发的报文时,通过其配置的转发表可
以确定该报文对应的转发端口为B‑F端口。
B,网络节点B接收到洪泛报文的接收端口为B‑F的端口,网络节点B根据其配置的转发表确
定洪泛报文对应的转发端口为B‑F的端口,那么所述接收端口与所述转发端口相同。
第二端口洪泛所述洪泛报文,并且若干第二端口不包括所述接收端口,这样可以避免洪泛
报文在两个端口之间往复洪泛而导致网络风暴。此外,若干第二端口包括第二网络节点中
除接收端口外的一个端口或者多个端口,并若干第二端口的数量可以为预先设置的,用于
限制用于洪泛所述洪泛报文的端口数量。在一个典型实现方式,若干第二端口包括第二网
络节点中除接收端口外的所有端口,也就是说,在第二网络节点确定洪泛报文后,通过除接
收端口外的所有端口将洪泛报文洪泛出去。
的若干第二端口洪泛具体包括:
络节点洪泛一次后,洪泛报文内配置的最大洪泛次数会减一,直至洪泛报文被转换为故障
转发报文而正常转发或者是最大洪泛次数达到0。其中,最大洪泛次数可以和洪泛标记作为
一个字段存储于报文中,其中,洪泛标记用于表示故障转发类型为洪泛,最大洪泛次数用于
表示洪泛报文可以被洪泛的次数。例如,字段内容为〈flag=‘fo’,ottl=3〉,则说明故障转发
类型flag为洪泛类型,最大洪泛次数为3次。此外,在实际应用中,所述字段还可以存储有故
障网络节点ID,以区分网络故障。例如,如图5所示,所述字段可以为16bit,8bit用于存储故
障网络节点ID,4bit用于存储故障转发类型flag,4bit用于存储最大洪泛次数ottl。
泛次数减1,以使得下一个接收到洪泛报文的网络节点可以获知该洪泛报文还可以被洪泛
的次数。例如,第二网络节点为图2所示的网络节点B,网络节点B接收到携带有〈flag=‘fo’,
ottl=3〉的洪泛报文后,识别出洪泛报文当前处于因故障洪泛状态,网络节点B基于洪泛报
文的目的地址检查当前转发表得到的转发端口与接收端口相同,并ottl=3>0,网络节点B将
最大洪泛次数ottl减1,并且通过B‑A端口与B‑C端口洪泛报文。此时,通过网络节点B洪泛的
洪泛报文携带有
节点C作为第二网络节点时,网络节点A接收到洪泛报文和网络节点C接收到的洪泛报文携
带的最大洪泛次数均为2。此外,当最大洪泛次数等于0时,说明洪泛报文不可以再被洪泛,
而又无法正常转发洪泛报文,从而将洪泛报文丢弃。
修改洪泛报文中的洪泛标记以将洪泛报文转换为故障转发报文。基于此,在本实施例的一
个实现方式中,所述第二网络节点将所述洪泛报文转换为故障转发报文具体为:
例如,故障标记采用‘fi’,洪泛标记采用‘fo’,那么采用‘fi’替换‘fo’,使得故障转发报文
中的故障转发类型flag=‘fi’。此外,第一网络节点在将故障转发类型修改为故障标记后,
还可以将洪泛报文中的最大洪泛次数修改为0。
间。基于此,在本实施例的一个实现方式中,所述当所述接收端口与所述转发端口不相同
时,所述第二网络节点将所述洪泛报文转换为故障转发报文之后,所述方法还包括:
文被转换为故障转发报文之后,基于最大洪泛次数更新。也就是说,在将洪泛报文转换为故
障转发报文之后,修改故障转发报文中的报文生存时间,而在洪泛报文被洪泛的过程中,不
修改报文生存时间。此外,在修改故障转发报文中的报文生存时间之后,再将修改后的故障
转发报文通过转发端口传输。其中,所述报文生存时间为基于最大洪泛次数更新,更新后的
报文生存时间等于报文生存时间‑(预设洪泛次数+1‑最大洪泛次数)‑1。例如,洪泛报文携
带的报文生存时间为253,洪泛报文携带最大洪泛次数为2,洪泛报文的初始最大洪泛次数
为3,那么修改后的报文生存时间=253‑(3+1‑2)‑1=250。此外,在实际应用中,当网络节点接
收到故障转发报文时,发现故障转发报文对应的转发端口或者转发链路发生故障时,可以
直接丢弃所述故障转发报文,这是由于所述故障转发报文是由于该链路故障所形成的洪泛
报文所得到,如果继续洪泛所述故障转发报文则会出现网络传输死循环,这样不但无法转
发故障转发报文还会占用网络资源。
障转发报文之后,所述方法还包括:
到转发端口之后,可以直接转发故障转发报文,也可以检测转发端口对应的接收端是否为
目的终端,如果不为目的终端,则直接转发故障转发报文,如果为目的终端,在将用于存储
故障标记的字段删除后转发至目的终端,以使得目的终端接收到正常报文。也就是说,当网
络出现网络故障时,传输到目的终端的报文为正常报文,从而使得目的终端在无需存储故
障转发报文的报文格式的情况可以正常接收报文,从而不会出现目的终端解析报文失败的
问题。
端接收到报文后,会检测预设时间内是否已接收过所述报文;若已接收过所述报文,则丢弃
所述报文,若未接收到所述报文,则正常处理所述报文。这样可以避免由于洪泛所述洪泛报
文包括的待转发报文而造成的报文重复转发至目的终端的问题。
或IS‑IS构成转发路由,其中,从源终端S到目的终端T的转发路径为A‑B‑F‑D‑E。
信息,洪泛信息包括故障转发类型flag=’fo’以及泛洪ottl(overflow TTL)ottl=3,以得到
洪泛报文。网络节点F将洪泛报文洪泛到F‑B端口。
与接收端口相同,从而网络节点B将洪泛报文将洪泛信息修改为
修改后的洪泛报文通过B‑A端口与B‑C端口洪泛。
改为
继续洪泛过程直至转发端口与接收端口不同。
端口不同,网络节点C将洪泛报文的洪泛信息修改为
中的生存时间TTL设置为原TTL‑(N+1‑ottl)‑1(例如,网络节点F收到的报文TTL为253,则网
络节点C发到网络节点D的TTL为250),同时带有〈flag=‘fi’,ottl=0〉的标记,其中‘fi’标记
是指故障转发。
将报文正常送达到目的终端T。
OSPF或IS‑IS构成环形拓扑结构,其中,从源终端S连接网络节点A,目的终端T连接网络节点
J,源终端S到目的终端T的转发路径为A‑F‑G‑H‑I‑J。当H‑I链路中断时,如图6所示,本实施
提供的零丢包的重路由方法的实现过程为:
保在故障泛洪时可以绕过正常转发路径走环路另一个方向;
同,将泛洪报文中ottl减1后洪泛至网络节点A;网络节点A,接收洪泛报文的接收端口与转
发端口相同,将泛洪报文中ottl减1后洪泛至网络节点B,其中,网络节点B接收到洪泛报文
携带有
点B将修改得到的故障转发报文转发给网络节点C,其中,故障转发报文携带有
络节点N,网络节点O以及网络节点P,并各网络节点通过运行路由协议OSPF或IS‑IS构成树
型会聚拓朴结构,其中,从源终端S连接网络节点G,目的终端T连接核心网络之前,源终端S
到目的终端T的转发路径为G‑C‑A‑核心网。当A连接核心网的链路中断时,如图7所示,本实
施提供的零丢包的重路由方法的实现过程为:
泛报文;
表实现去冗工作选取发一份洪泛报文转发到核心网,其中,网络节点B点发向核心网的报文
带有标记
去除报文中的标记信息并正常转发,例如,网络节点B点选择网络节点D作为故障转发上游,
则网络节点B转发的报文经过端到端路径G‑C‑A‑D‑B‑核心网‑T,最终到达目的地T;
转发报文,发现转发端口故障,网络节点A不再转发带有
发报文,这样可以避免洪泛携带‘fi’标记的故障转发报文可能会引起网络风暴,通过丢弃
故障转发报文可以避免转发环路引起网络风暴;
由于ottl减为0,不再泛洪,将其丢弃。
将所述洪泛报文通过所述第一网络节点的若干第一端口洪泛;当第二网络节点接收到洪泛
报文时,所述第二网络节点基于转发表确定所述洪泛报文对应的转发端口,并检测所述洪
泛报文对应的接收端口与所述转发端口是否相同;当所述接收端口与所述转发端口相同
时,将所述洪泛报文通过所述第二网络节点的若干第二端口洪泛;当所述接收端口与所述
转发端口不相同时,将所述洪泛报文转换为故障转发报文,并通过所述转发端口转发所述
故障转发报文。本申请不需要为每种链路故障预先计算保护路径,不需要为每一个目的子
网预先计算和存贮备用转发表。本申请中发现网络故障的节点洪泛携带有洪泛标记的洪泛
报文,接收到洪泛报文的第二网络节点基于自身已有路由表实现报文转发,使得在发生网
络故障时可以直接进行重路由以形成可实现零丢包高效重路由,避免因网络故障而导致的
网络丢包。
洪泛标记以形成洪泛报文,并将所述洪泛报文通过所述第一网络节点的若干第一端口洪
泛;所述若干网络节点中的接收到洪泛报文的第二网络节点用于基于转发表确定所述洪泛
报文对应的转发端口;检测所述洪泛报文对应的接收端口与所述转发端口是否相同;当所
述接收端口与所述转发端口相同时,将所述洪泛报文通过所述第二网络节点的若干第二端
口洪泛;当所述接收端口与所述转发端口不相同时,将所述洪泛报文转换为故障转发报文,
并通过所述转发端口转发所述故障转发报文。
口转发所述故障转发报文。
一个端口或者多个端口。
以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;
而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和
范围。