CN113852547B - 一种报文转发方法、装置、线卡及存储介质 - Google Patents
一种报文转发方法、装置、线卡及存储介质 Download PDFInfo
- Publication number
- CN113852547B CN113852547B CN202111062204.4A CN202111062204A CN113852547B CN 113852547 B CN113852547 B CN 113852547B CN 202111062204 A CN202111062204 A CN 202111062204A CN 113852547 B CN113852547 B CN 113852547B
- Authority
- CN
- China
- Prior art keywords
- message
- port
- identification information
- routing table
- port identification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/22—Alternate routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文转发方法、装置、线卡及存储介质,线卡维护有本线卡的端口状态表,线卡接收到交换网板发送的报文和第一端口标识信息之后,通过查询本线卡的端口状态表,判断第一端口是否故障。如果第一端口故障,则通过查找路由表和第一报文中携带的查找路由表次数字段的字段值确定第二端口标识信息,并由第二端口所属的线卡判断第二端口是否故障;若确定第二端口未故障,通过第二端口转发所述报文。本发明实施例线卡只需维护自身的端口状态表,便可实现在端口故障时,快速选择其它端口进行报文转发,线卡自身端口数量较少,维护自身的端口状态表耗时较少,解决了链路切换过程中故障端口所在的链路报文丢失较多的问题。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种报文转发方法、装置、线卡及存储介质。
背景技术
随着通信技术的快速发展,网络会议、网上直播、远程医疗等业务对实时性的要求越来越高。当网络设备中线卡的端口出现故障时,为了保证报文的正常转发,需要进行路由收敛,从而将故障端口所在链路切换至正常端口所在链路,通过正常端口转发报文。实际上,为了满足网络业务对实时性的要求,需要减少路由收敛的耗时,有时该耗时需要控制在50毫秒以内。
为了减少路由收敛过程造成的丢包,在路由收敛完成之前,一般采用快速重路由(Fast ReRoute,FRR)和等价多路径路由(Equal Cost Multipath,ECMP)等等链路快速切换方法。为了便于理解,首先对报文转发的过程进行简单说明。
网络设备中包括多个线卡,各个线卡根据路由表转发报文,路由表中的各个路由包括前缀信息和下一跳信息,前缀信息与下一跳信息之间存在对应关系。下一跳信息包含下一跳索引、下一跳IP地址、端口标识信息、封装格式等。线卡接收到报文之后,根据报文中携带的目的IP地址确定前缀信息;根据前缀信息与下一跳信息的对应关系,确定下一跳信息;通过计算确定出下一跳索引,最后通过确定出的下一跳索引对应的端口,按照封装格式将报文转发到下一跳IP地址对应的目标地址。
上述FRR和ECMP这两种链路切换方法是通过更新路由表中故障端口的端口标识信息及对应的下一跳IP地址,来保证报文正常转发。以表A和表B为例进行说明。
表A:
下一跳索引 | 下一跳IP | 端口 | 优先级 |
100 | 2.0.0.2 | ge0/1 | 主 |
101 | 3.0.0.2 | ge0/2 | 备 |
表B:
下一跳索引 | 下一跳IP | 端口 | 优先级 |
100 | 3.0.0.2 | ge0/2 | 主 |
101 | 3.0.0.2 | ge0/2 | 备 |
表A为更新之前的路由表中的部分下一跳信息,例如端口ge0/1故障,端口ge0/2正常,若根据接收到的报文确定出下一跳索引为100,由于下一跳索引100对于的端口ge0/1故障,因此报文被丢弃。链路切换是将端口ge0/1和对应的下一跳IP 2.0.0.2更新为端口ge0/2和对应的下一跳IP 3.0.0.2。表B为更新后的表。这样再次接收到报文,确定出下一跳索引为100,然后通过端口ge0/2转发报文,确保报文正常转发。
在下一跳IP较少的场景中,上述方法链路切换过程耗时较少,但是在下一跳IP较多的场景中,逐条更新路由表中故障端口的端口标识信息及对应的下一跳IP的过程耗时较长,导致故障端口所在的链路丢失报文较多。
发明内容
本发明实施例提供了一种报文转发方法、装置、线卡及存储介质,用以解决故障端口所在的链路丢失报文较多的问题。
第一方面,本发明实施例提供了一种报文转发方法,应用于与网络设备的交换网板连接的至少两个线卡中,所述方法包括:
接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的;
基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障;
若确定所述第一端口故障,则通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡;
若确定所述第一端口正常,则通过所述第一端口转发所述第一报文。
进一步地,所述方法还包括:
若接收到外部设备发送的第二报文,则通过查找所述路由表确定所述第二报文对应的第三端口标识信息;
将所述第二报文和所述第三端口标识信息发送至所述交换网板,以使所述交换网板将所述第二报文和所述第三端口标识信息发送至所述第三端口标识信息所属的线卡。
进一步地,通过查找所述路由表确定所述第二报文对应的第三端口标识信息之前,所述方法还包括:
在所述第二报文中设置查找路由表次数字段,并设置查找路由表次数字段的字段值为0;
所述将所述第一报文和所述第二端口标识信息发送至所述交换网板,或将所述第二报文和所述第三端口标识信息发送至所述交换网板之前,所述方法还包括:
将所述第一报文中携带的查找路由表次数字段的字段值增加1,或将所述第二报文中携带的查找路由表次数字段的字段值增加1。
进一步地,所述方法还包括:
实时或按照预设的周期检查自身线卡的每个端口的端口状态信息;
更新所述端口状态表中端口状态信息发生变化的端口的端口状态信息。
进一步地,所述通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,包括:
获取所述第一报文中携带的查找路由表次数字段的字段值;
通过查找所述路由表确定所述第一报文对应的下一跳索引基址和下一跳个数;
计算所述第一报文的哈希值与所述第一报文中携带的查找路由表次数字段的字段值的和值;
计算所述和值与所述下一跳个数的比值的余数;
将所述余数与所述下一跳索引基址的和值作为下一跳索引;
根据所述下一跳索引确定所述第一报文对应的第二端口标识信息。
进一步地,所述确定所述第一报文对应的第二端口标识信息之前,所述方法还包括:
判断所述第一报文中携带的查找路由表次数字段的字段值是否小于所述下一跳个数以及预设的查找路由表次数字段的最大字段值;
如果判断结果为是,执行所述确定所述第一报文对应的第二端口标识信息的步骤。
进一步地,所述计算所述第一报文的哈希值,包括:
通过查找所述路由表获取重路由方式;
若确定所述重路由方式为快速重路由FRR,则确定所述第一报文的哈希值为0;若确定所述重路由方式为等价多路径路由ECMP,则通过哈希算法计算所述第一报文的哈希值。
第二方面,本发明实施例提供了一种报文转发装置,所述装置包括:
接收模块,用于接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的;
第一判断模块,用于基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障;若确定所述第一端口故障,触发重路由模块;若确定所述第一端口正常,触发转发模块;
所述重路由模块,用于通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡;
所述转发模块,用于通过所述第一端口转发所述第一报文。
进一步地,所述接收模块,还用于若接收到外部设备发送的第二报文,则通过查找所述路由表确定所述第二报文对应的第三端口标识信息;将所述第二报文和所述第三端口标识信息发送至所述交换网板,以使所述交换网板将所述第二报文和所述第三端口标识信息发送至所述第三端口标识信息所属的线卡。
进一步地,所述装置还包括:
设置模块,用于通过查找所述路由表确定所述第二报文对应的第三端口标识信息之前,在所述第二报文中设置查找路由表次数字段,并设置查找路由表次数字段的字段值为0;
所述设置模块,还用于将所述第一报文和所述第二端口标识信息发送至所述交换网板,或将所述第二报文和所述第三端口标识信息发送至所述交换网板之前,将所述第一报文中携带的查找路由表次数字段的字段值增加1,或将所述第二报文中携带的查找路由表次数字段的字段值增加1。
进一步地,所述装置还包括:
更新模块,用于实时或按照预设的周期检查自身线卡的每个端口的端口状态信息;更新所述端口状态表中端口状态信息发生变化的端口的端口状态信息。
进一步地,所述重路由模块,具体用于获取所述第一报文中携带的查找路由表次数字段的字段值;通过查找所述路由表确定所述第一报文对应的下一跳索引基址和下一跳个数;计算所述第一报文的哈希值与所述第一报文中携带的查找路由表次数字段的字段值的和值;计算所述和值与所述下一跳个数的比值的余数;将所述余数与所述下一跳索引基址的和值作为下一跳索引;根据所述下一跳索引确定所述第一报文对应的第二端口标识信息。
进一步地,所述装置还包括:
第二判断模块,用于判断所述第一报文中携带的查找路由表次数字段的字段值是否小于所述下一跳个数以及预设的查找路由表次数字段的最大字段值,如果判断结果为是,触发所述重路由模块。
进一步地,所述重路由模块,具体用于通过查找所述路由表获取重路由方式;若确定所述重路由方式为FRR,则确定所述第一报文的哈希值为0;若确定所述重路由方式为ECMP,则通过哈希算法计算所述第一报文的哈希值。
第三方面,本发明实施例提供了一种线卡,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一项所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法步骤。
本发明实施例提供了一种报文转发方法、装置、线卡及存储介质,所述方法包括:接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的;基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障;若确定所述第一端口故障,则通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡;若确定所述第一端口正常,则通过所述第一端口转发所述第一报文。本发明实施例中,线卡维护自身的端口状态表,线卡接收到交换网板发送的第一报文和第一端口标识信息之后,通过查询端口状态表,确定第一端口标识信息对应的第一端口是否故障。如果第一端口故障,则通过查找路由表和第一报文中携带的查找路由表次数字段的字段值确定第一报文对应的第二端口标识信息,并通过交换网板将第一报文和第二端口标识信息发送至第二端口标识信息所属的线卡,第二端口标识信息所属的线卡再根据自身的端口状态表判断第二端口标识信息对应的第二端口是否故障。当线卡确定端口正常时,通过正常的端口实现第一报文转发。本发明实施例中,线卡只需维护自身的端口状态表,便可实现在端口故障时,快速选择其它正常端口进行报文转发。线卡自身端口数量较少,相较于现有技术中逐条更新路由表中故障端口的端口标识信息及对应的下一跳IP的链路切换方案,本发明实施例提供的方案链路切换的过程耗时较短,解决了链路切换过程中故障端口所在的链路报文丢失较多的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的报文转发过程示意图;
图2为现有技术中的转发流程示意图;
图3为本发明实施例提供的转发流程示意图;
图4为本发明实施例提供的具体转发流程图;
图5为本发明实施例提供的ECMP路由转发说明示意图;
图6为本发明实施例提供的报文转发装置结构示意图;
图7为本发明实施例提供的线卡结构示意图。
具体实施方式
下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1:
图1为本发明实施例提供的报文转发过程示意图,包括以下步骤:
S101:接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的。
S102:基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障。
S103:若确定所述第一端口故障,则通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡。
S104:若确定所述第一端口正常,则通过所述第一端口转发所述第一报文。
本发明实施例提供的报文转发方法应用于与网络设备的交换网板连接的至少两个线卡中,网络设备可以是路由器等设备。网络设备中的线卡与线卡之间通过交换网板连接,将交换网板发送的报文称为第一报文,将交换网板发送的端口标识信息称为第一端口标识信息。线卡接收到交换网板发送的第一报文和第一端口标识信息之后,通过查询本线卡的端口状态表,判断第一端口标识信息对应的第一端口是否故障;如果未故障,则通过第一端口转发报文。如果故障,通过查找路由表和第一报文中携带的查找路由表次数字段的字段值确定第二端口标识信息,第二端口标识信息对应的第二端口与第一端口标识信息对应的第一端口有可能所属同一个线卡,也可能属于不同的线卡。第一端口所属线卡确定出第二端口标识信息之后,通过交换网板将第二端口标识信息和第一报文转发至第二端口所属线卡,然后再由第二端口所属线卡继续通过查询本线卡的端口状态表,判断第二端口是否故障,如果仍然故障,则继续确定新的端口,如果未故障,则通过第二端口转发报文。
路由表(Fowarding Information Base,FIB),一般情况指的是IP路由表,即根据报文的目的IP,查找路由表,获得下一跳索引。但本发明实施例中的路由表不仅是IP路由表,也可以是多协议标签交换(Multi-Protocol Label Switching,MPLS)报文路由表,即根据报文的标签查找获得下一跳索引。因此,本发明实施例中的路由表是指导报文转发的信息集合。如果是IP报文,则根据报文中的目的IP来查找路由表(IP地址/掩码长度),根据最长前缀匹配(Longest Prefix Match,LPM)原则得到下一跳索引;如果是MPLS报文,则根据报文中的MPLS标签查找标签表(Incoming Label Map,ILM)获得下一跳索引。通过查找路由表确定出下一跳索引之后,确定下一跳索引对应的下一跳信息,进而获取下一跳信息中的端口标识信息以及封装索引信息。当确定出的端口故障时,重新确定新的下一跳索引,也就得到了新的下一跳信息,直至确定出的端口未故障时,通过端口按照封装索引信息转发报文。本发明实施例中,当网络设备接收到外部设备发送的报文后在报文中设置有查找路由表次数字段,并初始化查找路由表次数字段的字段值为0。每次查找路由表之后,将查找路由表次数字段的字段值加1。若确定第一端口故障,因为增加了查找路由表次数字段的字段值,因此通过查找路由表和第一报文中携带的查找路由表次数字段的字段值,可以确定出与第一端口标识信息不同的第二端口标识信息。然后再由第二端口标识信息所属的线卡确定第二端口标识信息对应的第二端口是否故障。通过增加第一报文中携带的查找路由表次数字段的字段值可以实现ECMP路由方式的快速切换。
本发明实施例中,线卡维护自身的端口状态表,线卡接收到交换网板发送的第一报文和第一端口标识信息之后,通过查询端口状态表,确定第一端口标识信息对应的第一端口是否故障。如果第一端口故障,则通过查找路由表和第一报文中携带的查找路由表次数字段的字段值确定第一报文对应的第二端口标识信息,并通过交换网板将第一报文和第二端口标识信息发送至第二端口标识信息所属的线卡,第二端口标识信息所属的线卡再根据自身的端口状态表判断第二端口标识信息对应的第二端口是否故障。当线卡确定端口正常时,通过正常的端口实现第一报文转发。本发明实施例中,线卡只需维护自身的端口状态表,便可实现在端口故障时,快速选择其它正常端口进行报文转发。线卡自身端口数量较少,相较于现有技术中逐条更新路由表中故障端口的端口标识信息及对应的下一跳IP的链路切换方案,本发明实施例提供的方案链路切换的过程耗时较短,解决了链路切换过程中故障端口所在的链路报文丢失较多的问题。
另外,现有技术中交换网板的上行线卡将报文通过交换网板转发至下行线卡,下行线卡确定端口故障后,需要将故障信息通过交换网板回传至上行线卡,上行线卡再重新确定报文转发对应的端口。现有技术中将故障消息回传至其它线卡的过程也相对耗时。本发明实施例中,交换网板的下行线卡确定端口故障后,由下行线卡重新决策新的端口,不需要将故障消息回传至其它线卡,也进一步解决了故障端口所在的链路报文丢失较多的问题。
实施例2:
在上述实施例的基础上,在本发明实施例中,所述方法还包括:
若接收到外部设备发送的第二报文,则通过查找所述路由表确定所述第二报文对应的第三端口标识信息;
将所述第二报文和所述第三端口标识信息发送至所述交换网板,以使所述交换网板将所述第二报文和所述第三端口标识信息发送至所述第三端口标识信息所属的线卡。
本发明实施例中,将外部设备发送的报文称为第二报文,线卡若接收到外部设备发送的第二报文,通过查找路由表确定第二报文对应的第三端口标识信息,将第二报文和第三端口标识信息通过交换网板转发至第三端口所属的线卡,需要说明的是,第三端口所属的线卡与接收外部设备发送第二报文的线卡可能是同一线卡或不同线卡。线卡接收到交换网板发送的第二报文和第三端口标识信息之后的处理流程与上述报文转发方法相同,在此不再进行赘述。本发明实施例中,将接收外部设备发送第二报文的线卡确定出的端口标识信息称为第三端口标识信息,将线卡接收到的交换网板发送的端口标识信息称为第一端口标识信息,将第一端口故障时,重新查找路由表确定出的端口标识信息称为第二端口标识信息。
实施例3:
在上述各实施例的基础上,本发明实施例中,通过查找所述路由表确定所述第二报文对应的第三端口标识信息之前,所述方法还包括:
在所述第二报文中设置查找路由表次数字段,并设置查找路由表次数字段的字段值为0;
所述将所述第一报文和所述第二端口标识信息发送至所述交换网板,或将所述第二报文和所述第三端口标识信息发送至所述交换网板之前,所述方法还包括:
将所述第一报文中携带的查找路由表次数字段的字段值增加1,或将所述第二报文中携带的查找路由表次数字段的字段值增加1。
本发明实施例中,接收到外部设备发送的第二报文之后,在第二报文中设置查找路由表次数字段,并设置查找路由表次数字段的字段值为0。通过查找路由表确定第二报文对应的第三端口标识信息之后,将第二报文中携带的查找路由表次数字段的字段值增加1,然后再将第二报文和第三端口标识信息发送至交换网板,以使交换网板将第二报文和第三端口标识信息发送至第三端口标识信息所属的线卡。本发明实施例中将外部设备发送的报文称为第二报文,将交换网板发送的报文称为第一报文。交换网板将第二报文和第三端口标识信息发送至第三端口标识信息所属的线卡。第三端口标识信息所属的线卡接收到的便称为是第一报文。因此,第一报文中也是设置有查找路由表次数字段的。
线卡通过查找路由表和第一报文中携带的查找路由表次数字段的字段值确定第一报文对应的第二端口标识信息之后,将第一报文中携带的查找路由表次数字段的字段值增加1,然后再将第一报文和第二端口标识信息发送至交换网板,以使交换网板将第一报文和第二端口标识信息发送至第二端口标识信息所属的线卡。
由于在本发明实施例中,每次查找路由表之后,将报文中携带的查找路由表次数字段的字段值增加1。若确定出的第一端口故障,可以保证通过查找路由表和第一报文中携带的查找路由表次数字段的字段值确定与第一端口标识信息不同的第二端口标识信息。以便能够快速重路由出正常的端口用来转发第一报文。
实施例4:
在上述各实施例的基础上,本发明实施例中,所述方法还包括:
实时或按照预设的周期检查自身线卡的每个端口的端口状态信息;
更新所述端口状态表中端口状态信息发生变化的端口的端口状态信息。
线卡可以实时或按照预设的周期检查本线卡的每个端口的端口状态信息,并在判断端口状态信息发生变化时对原有的端口状态表进行更新。需要说明的是,线卡更新端口状态表的过程与报文转发的过程属于两个过程,线卡实时或按照预设的周期更新端口状态表,而线卡接收到报文时只是根据当前最新的端口状态表来判断端口是否故障。
本发明实施例中,为了避免线卡报文转发性能的降低,利用故障的第一端口的查表带宽,通过查找路由表确定第二端口标识信息。
在本发明实施例中,线卡判断第一端口故障时,利用故障的第一端口的查表带宽,进行查找路由表,通过查找路由表和第一报文中携带的查找路由表次数字段的字段值确定第一报文对应的第二端口标识信息。因为第一端口故障之后,第一端口的入口流量会减少,第一端口的查表带宽利用率较少。本发明实施例中,利用故障的第一端口的查表带宽进行查找路由表,在提高第一端口的查表带宽利用率的基础上,也避免了线卡报文转发性能的降低。链路故障切换只是短时间(如5秒内)的临时转发状态,后续软件切换会重新更新路由表,恢复正常的转发流程,因此,对故障的第一端口的转发性能没有不利影响。
实施例5:
在上述各实施例的基础上,在本发明实施例中,所述通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,包括:
获取所述第一报文中携带的查找路由表次数字段的字段值;
通过查找所述路由表确定所述第一报文对应的下一跳索引基址和下一跳个数;
计算所述第一报文的哈希值与所述第一报文中携带的查找路由表次数字段的字段值的和值;
计算所述和值与所述下一跳个数的比值的余数;
将所述余数与所述下一跳索引基址的和值作为下一跳索引;
根据所述下一跳索引确定所述第一报文对应的第二端口标识信息。
线卡在确定下一跳索引时,首先计算第一报文的哈希值。为了能够支持ECMP和FRR,所述计算所述第一报文的哈希值,包括:通过查找所述路由表获取重路由方式;若确定所述重路由方式为快速重路由FRR,则确定所述第一报文的哈希值为0;若确定所述重路由方式为等价多路径路由ECMP,则通过哈希算法计算所述第一报文的哈希值。
本发明实施例中,根据下一跳索引基址,第一报文的哈希值,第一报文中携带的查找路由表次数字段的字段值和下一跳的个数确定第一报文对应的下一跳索引。具体的,根据nh_id=nh_base+(hash+fwd_cnt)%nh_cnt确定第一报文对应的下一跳索引;其中,nh_id为第一报文对应的下一跳索引,nh_base为预设的下一跳索引基址,hash为第一报文的哈希值,fwd_cnt为第一报文中携带的查找路由表次数字段的字段值,nh_cnt为下一跳的个数。
实施例6:
为了避免查找路由表次数过多,影响链路切换效率,在上述各实施例的基础上,在本发明实施例中,所述确定所述第一报文对应的第二端口标识信息之前,所述方法还包括:
判断所述第一报文中携带的查找路由表次数字段的字段值是否小于所述下一跳个数以及预设的查找路由表次数字段的最大字段值;
如果判断结果为是,执行所述确定所述第一报文对应的第二端口标识信息的步骤。
本发明实施例中增加查找路由表次数字段的字段值之后,设置两个判断条件。第一个判断条件是判断当前的查找路由表次数字段的字段值是否小于下一跳个数,第二个判断条件是判断当前的查找路由表次数字段的字段值是否小于预设的查找路由表次数字段的最大字段值。如果上述两个判断条件的判断结果都为是,进行通过查找路由表以及第一报文中携带的查找路由表次数字段的字段值确定第一报文对应的第二端口标识信息的步骤。如果上述两个判断条件任一的判断结果为否,丢弃第一报文。
如果判断当前的查找路由表次数字段的字段值小于下一跳个数,则说明还有未切换的端口,因此有条件进行后续通过查找路由表以及第一报文中携带的查找路由表次数字段的字段值确定第一报文对应的第二端口标识信息的步骤。如果判断当前的查找路由表次数字段的字段值不小于下一跳个数,则说明所有端口故障,此时丢弃第一报文。
线卡中预设有查找路由表次数字段的最大字段值,例如预设的查找路由表次数字段的最大字段值为5、6等。如果判断当前的查找路由表次数字段的字段值小于预设的查找路由表次数字段的最大字段值,此时认为没有影响链路切换效率,进行后续通过查找路由表以及第一报文中携带的查找路由表次数字段的字段值确定第一报文对应的第二端口标识信息的步骤。如果判断当前的查找路由表次数字段的字段值不小于预设的查找路由表次数字段的最大字段值,此时认为如果继续进行链路切换会影响链路切换效率,此时丢弃第一报文。
下面通过具体的示例对本发明实施例提供的报文转发方法进行详细介绍。
本发明实施例针对的是链路故障情况下,多路径转发如何快速切换问题,具体发明点如下:
1、线卡接收交换网板发送的第一报文之后,根据线卡自身端口状态表决策是否重新查表转发;
每个线卡只需维护本卡端口状态表,而不用保存全局端口状态;
线卡决策是否重新查表转发,离端口故障最近,不需要软件或硬件跨卡传递故障信息,切换性能更快。
2、修订多径下一跳决策逻辑,新增查找路由表次数字段的字段值(fwd_cnt)参与计算下一跳索引;
下一跳索引nh_id=nh_base+(hash+fwd_cnt)%nh_cnt;
nh_base:下一跳索引基址;
nh_cnt:下一跳个数;
fwd_cnt:查找路由表次数字段的字段值;
hash:根据第一报文信息计算出的哈希值;如果是FRR,则hash值取0,如果是ECMP,则根据第一报文计算哈希值。
3、多径下一跳报文私有信息中携带查找路由表次数字段的字段值(fwd_cnt)和是否有备份路径(has_bak)信息,以便区分普通单径转发和多径转发,以及控制转发次数;
每次查表计算出新的下一跳索引后,fwd_cnt自增;
如果第一报文中携带的查找路由表次数字段的字段值小于下一跳个数并且小于预设的查找路由表次数字段的最大字段值,则标记有备份路径(has_bak=1),否则为无备份路径(has_bak=0);
线卡判断端口状态,如果端口故障(down)并且有备份路径(has_bak为1),则重新触发查表转发;
重新查找利用的是故障的端口带宽,不会导致转发性能降低;
本来端口down,其入口流量就减少;
快速切换只是短时间(如,5秒内)的临时转发状态,后续软件切换会重新更新路由表,恢复正常的转发流程,因此,对转发性能没什么影响。
4、利用多次查表转发,每次决策新的下一跳索引,可以支持ECMP多径路由快速切换;但考虑转发时延和过多查表意义不大,需要限制单个报文的转发次数。
图2为现有技术中的转发流程示意图,如图2所示,交换网板的上行线卡:报文查表转发得到端口标识信息和封装索引信息。前缀查找:根据报文信息查找路由表,获取下一跳信息。ECMP下一跳决策:如果是多径下一跳(包括FRR),需要决策出具体转发下一跳索引。交换网板:根据端口所在线卡将报文送到指定线卡。交换网板的下行线卡:修改和封装报文,例如生存时间值(Time To Live,TTL)递减、分片和封装新的报文头部。需要说明的是,这里将向交换网板发送报文的线卡称为上行线卡,将接收交换网板发送的报文的线卡称为下行线卡。
图3为本发明实施例提供的转发流程示意图,如图3所示,相较于传统的方案,增加下行线卡决策模块:根据端口状态表及报文是否有备份下一跳信息决策是否重新查找路由。增加在下行线卡重新查找路由表流程,相当于再次输入转发。修改ECMP下一跳决策模块逻辑:根据查找路由表次数字段的字段值参与决策获得新的下一跳索引,避免再次选择相同端口,同时控制重新查找路由表最大次数,避免无限环路。
本发明实施例中,如果是单径路由(只有一个端口),按现有的转发流程处理即可。本发明实施例提供的具体转发流程如图4所示;1、报文从上行线卡进来,初始化转发标记;查表转发次数fwd_cnt=0;是否有备份路径:has_bak=0。2、查找路由表,获取下一跳信息;如果是单径下一跳,则按正常转发直接选择端口即可;如果是多径下一跳则需要决策下一跳索引。3、多径下一跳索引(nh_id)决策:nh_id=nh_base+(hash+fwd_cnt)%nh_cnt;如果是FRR,则hash值取0。4、修改转发标记:查找路由表次数字段的字段值fwd_cnt自增;如果查找路由表次数字段的字段值小于下一跳个数,并且小于预设的查找路由表次数字段的最大字段值,则bas_bak=1,否则has_bak=0。5、根据下一跳索引获取端口标识信息和封装索引信息,通过交换网板转发到对应的下行线卡。6、在下行线卡,根据端口状态表判断端口是否故障:如果端口down(故障)并且有备份路径,则重新进入查表转发流程;如果出口up(未故障),则按正常修改、封装转发报文。
当线卡的软件或硬件检测到端口down,更新本线卡的端口状态表即可;则转发报文会自动根据端口状态表,重新转发,尝试选择新的端口。
本发明实施例在下行线卡决策是否重新路由,离端口故障最近(本线卡内),不需要通过软件或硬件消息同步到其它线卡,因此,能够减少耗时;软件处理简单,不会导致链路故障处理扩散到所有线卡;在端口down的时候重新查转发,利用了该端口所属查表带宽,不会导致转发性能降低;因为:本来端口down,其入口流量就减少;快速切换只是短时间(如,5秒内)的临时转发状态,后续软件切换会重新更新路由表,恢复正常的转发流程,因此,对转发性能没有不利影响。
本发明实施例利用多次查表,每次决策一个新的下一跳索引,可以支持FRR、ECMP等多径下一跳的快速切换;通过控制最大查表次数,避免环路或浪费查表性能;快速切换只是减少用户报文丢包数量,通过多次尝试转发,提高发送概率而已。查表次数过多,会导致转发时延变大,且没有太大意义。
例如,预设的查找路由表次数字段的最大字段值为4,可以保证4个下一跳ECMP路由或4个端口同时down时,100%切换成功,这已经能满足绝大部分场景需求。即使按32个下一跳,同时down 16个出口,因为第二次选择,会跳过上次失败的下一跳,每次查找至少有50%的概率成功,失败概率小于6.25%,理论为:((16/32)*(15/31)*(14/30)*(13/29)。
下面进行实例说明。
修订ECMP表:
字段 | 描述 | 类型 | 举例 |
ecmp_id | 【KEY】ECMP索引 | 整形 | 5 |
is_frr | 是否为FRR(不是则为ECMP) | bool(1bit) | 0或1 |
nh_base | 下一跳索引基址 | 整形 | 100 |
nh_cnt | 下一跳个数 | 整形 | 4 |
下一跳索引计算:nh_id=nh_base+(hash+fwd_cnt)%nh_cnt,当is_frr=1时,hash值取0;
增加出口状态表:
字段 | 描述 | 类型 | 举例 |
port | 【KEY】出口索引 | 整形 | 3:举例代表g0/3 |
status | 端口状态up或down | bool(1bit) | 0(down)、1(up) |
ECMP路由转发说明如图5所示,ECMP路由:1.0.0.0/24有4个下一跳IP地址(2.0.0.2、3.0.0.2、4.0.0.2、5.0.0.2);硬件最大重转发次数max_fwd_cnt=3;假设ge2/3和ge1/2端口down了;
1槽端口状态表:
port | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
status | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
2槽端口状态表:
port | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
status | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
报文目的IP地址为1.0.0.2,从输入卡进来初始fwd_cnt=0,has_bak=0;
查找路由表命中1.0.0.0/24对应的路由,得到ECMP索引10。(如果单径,则直接得到下一跳索引)。
查ECMP组索引10表项,获得nh_base和nh_cnt信息,计算下一跳索引:
nh_id=100+(hash+fwd_cnt)%4;举例,hash值333,nh_id=101。
修改转发标记:fwd_cnt++(变为1);fwd_cnt小于nh_cnt(4),并且fwd_cnt小于max_fwd_cnt(3),因此,有备份路径has_bak=1。
根据nh_id 101选择下一跳IP地址3.0.0.2,端口ge1/2。并通过交换网板转发到1槽;报文在1槽查端口状态表,2端口down,并且有备份路径,重新查表转发;由于fwd_cnt为1,因此计算得到的是第3个下一跳IP地址4.0.0.2,端口是ge2/3;修改转发标记,fwd_cnt++(变为2),has_bak=1。报文通过交换网板转发到2槽,查端口状态表,3端口down;有备份路径,重新查表转发;由于fwd_cnt为2,计算得到第4个下一跳IP地址5.0.0.2,端口是ge4/5,修改转发标记,fwd_cnt++(变为3),has_bak=0(达到最大重传次数)报文通过交换网板转发到4槽,查端口状态表,5端口up,按正常封装转发出去。
本发明实施例所描述的路由表,不限制查表内容,可以是IP路由表,也可以是MPLS标签或L2交换机MAC转发表;即可以支持LDP协议快速重路由LDP FRR或虚拟专用网路快速重路由VPN FRR等多种快速切换。
本发明实施例中的端口状态,可以是物理端口状态,也可以是隧道逻辑端口状态;可以与远端链路故障检查协议联动,实现端到端的链路故障切换;本发明实施例中的多径下一跳,可以是FRR、ECMP也可以是WCMP(Weighted Cost Multiple Path,加权多路径)。
本发明实施例提供的技术方案在线卡根据端口状态表决策是否重新路由来实现硬件多径路由快速切换;避免所有线卡维护全局端口状态,减少硬件表项资源;软件只需要处理本卡内端口故障,简化了软件处理;避免故障信息跨卡传递所带来的性能消耗,提高了切换性能;利用多次查表转发,每次决策新的下一跳索引,可以支持多径(FRR或ECMP)下一跳快速切换;在线卡充分利用故障的端口的带宽进行查找路由表,不会影响转发性能;通过控制最大查表次数,避免环路或浪费查表性能;减少了硬件资源消耗,简化了软件处理,提高了快速切换性能,且支持ECMP等多径下一跳转发。
实施例7:
图6为本发明实施例提供的报文转发装置结构示意图,该装置包括:
接收模块21,用于接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的;
第一判断模块22,用于基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障;若确定所述第一端口故障,触发重路由模块;若确定所述第一端口正常,触发转发模块;
所述重路由模块23,用于通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡;
所述转发模块24,用于通过所述第一端口转发所述第一报文。
可选的,所述接收模块21,还用于若接收到外部设备发送的第二报文,则通过查找所述路由表确定所述第二报文对应的第三端口标识信息;将所述第二报文和所述第三端口标识信息发送至所述交换网板,以使所述交换网板将所述第二报文和所述第三端口标识信息发送至所述第三端口标识信息所属的线卡。
所述装置还包括:
设置模块25,用于通过查找所述路由表确定所述第二报文对应的第三端口标识信息之前,在所述第二报文中设置查找路由表次数字段,并设置查找路由表次数字段的字段值为0;
可选的,所述设置模块,还用于将所述第一报文和所述第二端口标识信息发送至所述交换网板,或将所述第二报文和所述第三端口标识信息发送至所述交换网板之前,将所述第一报文中携带的查找路由表次数字段的字段值增加1,或将所述第二报文中携带的查找路由表次数字段的字段值增加1。
所述装置还包括:
更新模块26,用于实时或按照预设的周期检查自身线卡的每个端口的端口状态信息;更新所述端口状态表中端口状态信息发生变化的端口的端口状态信息。
所述重路由模块23,具体用于获取所述第一报文中携带的查找路由表次数字段的字段值;通过查找所述路由表确定所述第一报文对应的下一跳索引基址和下一跳个数;计算所述第一报文的哈希值与所述第一报文中携带的查找路由表次数字段的字段值的和值;计算所述和值与所述下一跳个数的比值的余数;将所述余数与所述下一跳索引基址的和值作为下一跳索引;根据所述下一跳索引确定所述第一报文对应的第二端口标识信息。
所述装置还包括:
第二判断模块27,用于判断所述第一报文中携带的查找路由表次数字段的字段值是否小于所述下一跳个数以及预设的查找路由表次数字段的最大字段值,如果判断结果为是,触发所述重路由模块。
所述重路由模块23,具体用于通过查找所述路由表获取重路由方式;若确定所述重路由方式为FRR,则确定所述第一报文的哈希值为0;若确定所述重路由方式为ECMP,则通过哈希算法计算所述第一报文的哈希值。
实施例8:
在上述各实施例的基础上,本发明实施例中还提供了一种线卡,如图7所示,包括:处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信;
所述存储器303中存储有计算机程序,当所述程序被所述处理器301执行时,使得所述处理器301执行如下步骤:
接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的;
基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障;
若确定所述第一端口故障,则通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡;
若确定所述第一端口正常,则通过所述第一端口转发所述第一报文。
基于同一发明构思,本发明实施例中还提供了一种线卡,由于上述线卡解决问题的原理与报文转发方法相似,因此上述线卡的实施可以参见方法的实施,重复之处不再赘述。
上述线卡提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口302用于上述线卡与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
实施例9:
在上述各实施例的基础上,本发明实施例还提供了一种计算机存储可读存储介质,所述计算机可读存储介质内存储有可由线卡执行的计算机程序,当所述程序在所述线卡上运行时,使得所述线卡执行时实现如下步骤:
接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的;
基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障;
若确定所述第一端口故障,则通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡;
若确定所述第一端口正常,则通过所述第一端口转发所述第一报文。
基于同一发明构思,本发明实施例中还提供了一种计算机可读存储介质,由于处理器在执行上述计算机可读存储介质上存储的计算机程序时解决问题的原理与报文转发方法相似,因此处理器在执行上述计算机可读存储介质存储的计算机程序的实施可以参见方法的实施,重复之处不再赘述。
上述计算机可读存储介质可以是线卡中的处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器如软盘、硬盘、磁带、磁光盘(MO)等、光学存储器如CD、DVD、BD、HVD等、以及半导体存储器如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD)等。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (16)
1.一种报文转发方法,应用于与网络设备的交换网板连接的至少两个线卡中,其特征在于,所述方法包括:
接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的;
基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障;
若确定所述第一端口故障,则通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡;
若确定所述第一端口正常,则通过所述第一端口转发所述第一报文。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
若接收到外部设备发送的第二报文,则通过查找所述路由表确定所述第二报文对应的第三端口标识信息;
将所述第二报文和所述第三端口标识信息发送至所述交换网板,以使所述交换网板将所述第二报文和所述第三端口标识信息发送至所述第三端口标识信息所属的线卡。
3.如权利要求2所述的方法,其特征在于,通过查找所述路由表确定所述第二报文对应的第三端口标识信息之前,所述方法还包括:
在所述第二报文中设置查找路由表次数字段,并设置查找路由表次数字段的字段值为0;
所述将所述第一报文和所述第二端口标识信息发送至所述交换网板,或将所述第二报文和所述第三端口标识信息发送至所述交换网板之前,所述方法还包括:
将所述第一报文中携带的查找路由表次数字段的字段值增加1,或将所述第二报文中携带的查找路由表次数字段的字段值增加1。
4.如权利要求1-3任一所述的方法,其特征在于,所述方法还包括:
实时或按照预设的周期检查自身线卡的每个端口的端口状态信息;
更新所述端口状态表中端口状态信息发生变化的端口的端口状态信息。
5.如权利要求1所述的方法,其特征在于,所述通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,包括:
获取所述第一报文中携带的查找路由表次数字段的字段值;
通过查找所述路由表确定所述第一报文对应的下一跳索引基址和下一跳个数;
计算所述第一报文的哈希值与所述第一报文中携带的查找路由表次数字段的字段值的和值;
计算所述和值与所述下一跳个数的比值的余数;
将所述余数与所述下一跳索引基址的和值作为下一跳索引;
根据所述下一跳索引确定所述第一报文对应的第二端口标识信息。
6.如权利要求5所述的方法,其特征在于,所述确定所述第一报文对应的第二端口标识信息之前,所述方法还包括:
判断所述第一报文中携带的查找路由表次数字段的字段值是否小于所述下一跳个数以及预设的查找路由表次数字段的最大字段值;
如果判断结果为是,执行所述确定所述第一报文对应的第二端口标识信息的步骤。
7.如权利要求5所述的方法,其特征在于,所述计算所述第一报文的哈希值,包括:
通过查找所述路由表获取重路由方式;
若确定所述重路由方式为快速重路由FRR,则确定所述第一报文的哈希值为0;若确定所述重路由方式为等价多路径路由ECMP,则通过哈希算法计算所述第一报文的哈希值。
8.一种报文转发装置,应用于与网络设备的交换网板连接的至少两个线卡中,其特征在于,所述装置包括:
接收模块,用于接收所述交换网板发送的第一报文和所述第一报文对应的第一端口标识信息,所述第一端口标识信息是与所述交换网板连接的另一线卡确定并通过所述交换网板进行转发的;
第一判断模块,用于基于自身的端口状态表确定所述第一端口标识信息对应的第一端口是否故障;若确定所述第一端口故障,触发重路由模块;若确定所述第一端口正常,触发转发模块;
所述重路由模块,用于通过查找路由表和所述第一报文中携带的查找路由表次数字段的字段值确定所述第一报文对应的第二端口标识信息,将所述第一报文和所述第二端口标识信息发送至所述交换网板,以使所述交换网板将所述第一报文和所述第二端口标识信息发送至所述第二端口标识信息所属的线卡;
所述转发模块,用于通过所述第一端口转发所述第一报文。
9.如权利要求8所述的装置,其特征在于,所述接收模块,还用于若接收到外部设备发送的第二报文,则通过查找所述路由表确定所述第二报文对应的第三端口标识信息;将所述第二报文和所述第三端口标识信息发送至所述交换网板,以使所述交换网板将所述第二报文和所述第三端口标识信息发送至所述第三端口标识信息所属的线卡。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
设置模块,用于通过查找所述路由表确定所述第二报文对应的第三端口标识信息之前,在所述第二报文中设置查找路由表次数字段,并设置查找路由表次数字段的字段值为0;
所述设置模块,还用于将所述第一报文和所述第二端口标识信息发送至所述交换网板,或将所述第二报文和所述第三端口标识信息发送至所述交换网板之前,将所述第一报文中携带的查找路由表次数字段的字段值增加1,或将所述第二报文中携带的查找路由表次数字段的字段值增加1。
11.如权利要求8-10任一项所述的装置,其特征在于,所述装置还包括:
更新模块,用于实时或按照预设的周期检查自身线卡的每个端口的端口状态信息;更新所述端口状态表中端口状态信息发生变化的端口的端口状态信息。
12.如权利要求8所述的装置,其特征在于,所述重路由模块,具体用于获取所述第一报文中携带的查找路由表次数字段的字段值;通过查找所述路由表确定所述第一报文对应的下一跳索引基址和下一跳个数;计算所述第一报文的哈希值与所述第一报文中携带的查找路由表次数字段的字段值的和值;计算所述和值与所述下一跳个数的比值的余数;将所述余数与所述下一跳索引基址的和值作为下一跳索引;根据所述下一跳索引确定所述第一报文对应的第二端口标识信息。
13.如权利要求12所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于判断所述第一报文中携带的查找路由表次数字段的字段值是否小于所述下一跳个数以及预设的查找路由表次数字段的最大字段值,如果判断结果为是,触发所述重路由模块。
14.如权利要求12所述的装置,其特征在于,所述重路由模块,具体用于通过查找所述路由表获取重路由方式;若确定所述重路由方式为FRR,则确定所述第一报文的哈希值为0;若确定所述重路由方式为ECMP,则通过哈希算法计算所述第一报文的哈希值。
15.一种线卡,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一项所述的方法步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111062204.4A CN113852547B (zh) | 2021-09-10 | 2021-09-10 | 一种报文转发方法、装置、线卡及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111062204.4A CN113852547B (zh) | 2021-09-10 | 2021-09-10 | 一种报文转发方法、装置、线卡及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113852547A CN113852547A (zh) | 2021-12-28 |
CN113852547B true CN113852547B (zh) | 2023-07-25 |
Family
ID=78973572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111062204.4A Active CN113852547B (zh) | 2021-09-10 | 2021-09-10 | 一种报文转发方法、装置、线卡及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113852547B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866456B (zh) * | 2022-04-22 | 2024-07-23 | 新华三工业互联网有限公司 | 一种报文发送方法及装置 |
CN117221215A (zh) * | 2022-06-02 | 2023-12-12 | 华为技术有限公司 | 链路故障处理方法、相关装置、存储介质及程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018108149A1 (zh) * | 2016-12-15 | 2018-06-21 | 中兴通讯股份有限公司 | 数据链路切换方法和装置以及数据链路切换设备 |
CN112104478A (zh) * | 2020-07-30 | 2020-12-18 | 新华三信息安全技术有限公司 | 一种链路切换方法、装置、设备及机器可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1469600B (zh) * | 2002-07-15 | 2010-11-24 | 华为技术有限公司 | 一种互联网协议报文转发过程中快速重选路由的方法 |
US8477791B2 (en) * | 2009-05-13 | 2013-07-02 | Avaya Inc. | Method and apparatus for locally implementing port selection via synchronized port state databases maintained by the forwarding plane of a network element |
US8619605B2 (en) * | 2009-05-13 | 2013-12-31 | Avaya Inc. | Method and apparatus for maintaining port state tables in a forwarding plane of a network element |
CN107579921B (zh) * | 2017-09-26 | 2020-09-25 | 锐捷网络股份有限公司 | 流量控制方法及装置 |
CN110768917B (zh) * | 2019-10-31 | 2021-09-21 | 杭州迪普科技股份有限公司 | 一种报文传输方法及装置 |
CN113014502B (zh) * | 2021-02-08 | 2022-08-19 | 北京星网锐捷网络技术有限公司 | 基于线卡的负载均衡方法及装置 |
-
2021
- 2021-09-10 CN CN202111062204.4A patent/CN113852547B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018108149A1 (zh) * | 2016-12-15 | 2018-06-21 | 中兴通讯股份有限公司 | 数据链路切换方法和装置以及数据链路切换设备 |
CN112104478A (zh) * | 2020-07-30 | 2020-12-18 | 新华三信息安全技术有限公司 | 一种链路切换方法、装置、设备及机器可读存储介质 |
Non-Patent Citations (2)
Title |
---|
Fast Recovery From Link Failures in Ethernet Networks;A. Gopalan and S. Ramasubramanian;IEEE Transactions on Reliability;第63卷(第2期);412-426 * |
基于逐跳方式的单链路故障保护算法;耿海军;施新刚;王之梁;尹霞;尹少平;;计算机科学(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113852547A (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210409321A1 (en) | Method and System for Determining Packet Forwarding Path, and Network Node | |
US10103981B2 (en) | BIER forwarding validation | |
US7656792B2 (en) | Method and apparatus for computing alternate multicast/broadcast paths in a routed network | |
CN113852547B (zh) | 一种报文转发方法、装置、线卡及存储介质 | |
US10439880B2 (en) | Loop-free convergence in communication networks | |
CN110099000B (zh) | 一种转发报文的方法、网络设备和计算机可读介质 | |
US11411858B2 (en) | Method for updating route in network, network device, and system | |
WO2020165627A1 (en) | Limited flooding in dense graphs | |
US20230291682A1 (en) | Method and device for processing data packet, storage medium, and electronic device | |
CN111654437B (zh) | 基于数据中心的报文转发方法及装置 | |
WO2020135339A1 (zh) | 一种网络路径收敛的方法以及相关设备 | |
US11558282B2 (en) | System and method for interior gateway protocol (IGP) fast convergence | |
US9246797B2 (en) | PORT based redundant link protection | |
US12058028B2 (en) | Method and system to prevent micro-loops during a network topology change | |
US11909546B2 (en) | Method and network node for sending and obtaining assert packet | |
US11784919B2 (en) | Method for sending BIERv6 packet and first network device | |
US11855883B2 (en) | System and methods for computing flooding topology | |
CN108337181B (zh) | 一种交换网拥塞管理方法和装置 | |
CN112637053B (zh) | 路由的备份转发路径的确定方法及装置 | |
US11088945B1 (en) | Dynamic source-driven path setup across a switch fabric | |
CN114531396A (zh) | 一种以太网虚拟专用网络中的故障回切方法及装置 | |
CN115883446A (zh) | 一种环路的检测方法和装置 | |
CN103795625A (zh) | 多协议标签交换网络的快速重路由实现方法及装置 | |
CN113014481B (zh) | 传输链路状态通告的方法、装置、设备及存储介质 | |
CN118101552A (zh) | 一种故障处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |