一种报文处理方法及位转发路由器与流程

文档序号:31399362发布日期:2022-09-03 04:12阅读:66来源:国知局
1.本公开涉及网络技术与安全领域,特别是涉及一种报文处理方法及位转发路由器。
背景技术
::2.基于比特索引的显示复制(bitindexexplicitreplication,bier)是一种新型组播技术,与传统组播技术相比,bier技术可以使网络的中间节点无需为每一个组播流建立组播树及保存组播流状态。3.在bier组播网络中,每个位转发路由器(bit-forwardingrouter,bfr)上都会预先配置其支持的位串长度(bitstringlength,bsl)。在设备故障、操作失误等情况下,bier组播网络中的不同bfr可能配置了不同的bsl,这样就会导致bsl不匹配的情况,进而导致报文传输失败。技术实现要素:4.本公开实施例的目的在于提供一种报文处理方法及位转发路由器,用以解决由bsl不匹配所导致的报文传输失败的问题。具体技术方案如下:5.第一方面,本公开实施例提供了一种报文处理方法,应用于bier网络中的第一bfr,所述方法包括:6.获取第一bier报文,所述第一bier报文包括目的位串和所述目的位串的第一位串长度;7.基于所述目的位串,确定所述第一bfr的下一跳第二bfr以及所述第二bfr支持的第二位串长度;8.在所述第一位串长度与所述第二位串长度不同的情况下,根据预先存储的处理方式表,确定所述第二bfr对应的目标处理方式,所述处理方式表包括bfr与处理方式的对应关系;9.按照所述目标处理方式,处理所述第一bier报文。10.可选的,所述处理方式表采用bfr的标识、bfr所属子域的标识表示bfr,所述对应关系采用指示处理方式的预设值表示处理方式;11.所述根据预先存储的处理方式表,确定所述第二bfr对应的目标处理方式的步骤,包括:12.根据预先存储的处理方式表中的bfr的标识、bfr所属子域的标识和预设值,确定所述第二bfr的标识和所述第二bfr所属子域的标识所对应的目标预设值;13.所述按照所述目标处理方式,处理所述第一bier报文的步骤,包括:14.按照所述目标预设值指示的目标处理方式,处理所述第一bier报文。15.可选的,所述处理方式包括以下至少一种:16.将下一跳bfr认定为不支持bier技术的网络设备;17.丢弃bier报文;18.重新封装bier报文,所述重新封装得到的bier报文的报文头中的位串长度为下一跳bfr支持的位串长度。19.可选的,当所述目标处理方式为将下一跳bfr认定为不支持bier技术的网络设备时,20.所述按照所述目标处理方式,处理所述第一bier报文的步骤,包括:21.基于所述目的位串,确定所述第二bfr的下一跳第三bfr以及所述第三bfr支持的第三位串长度;22.在所述第一位串长度与所述第三位串长度相同的情况下,建立所述第一bfr与所述第三bfr之间的第一单播隧道,并将所述第一bier报文封装为所述第一单播隧道传输的第一隧道报文;通过所述第一单播隧道,向所述第三bfr传输所述第一隧道报文;23.在所述第一位串长度与所述第三位串长度不同的情况下,将所述第二bfr更新为所述第三bfr,返回执行所述根据预先存储的处理方式表,确定所述第二bfr对应的目标处理方式的步骤。24.可选的,当所述目标处理方式为丢弃bier报文时,25.所述按照所述目标处理方式,处理所述第一bier报文的步骤,包括:26.丢弃所述第一bier报文。27.可选的,当所述目标处理方式为重新封装bier报文时,28.所述按照所述目标处理方式,处理所述第一bier报文的步骤,包括:29.将所述第一bier报文的报文头中的位串长度更新为所述第二位串长度,得到第二bier报文;30.向所述第二bfr传输给所述第二bier报文。31.可选的,所述方法还包括:32.接收其他bfr发布的针对位串长度不匹配的处理方式信息,所述处理方式信息包括在所述其他bfr支持的位串长度与bier报文包括的位串长度不同时,所述第一bfr所采用的处理方式;33.将所述处理方式信息添加至所述处理方式表中。34.可选的,所述获取第一bier报文的步骤,包括:35.接收第四bfr通过第二单播隧道发送的第二隧道报文;36.在所述第二隧道报文的目的地址为所述第一bfr的地址的情况下,去除所述第二隧道报文的隧道报文头,得到第一bier报文。37.第二方面,本公开实施例提供了一种第一位转发路由器,所述第一位转发路由器,包括:38.获取模块,被配置为获取第一bier报文,所述第一bier报文包括目的位串和所述目的位串的第一位串长度;39.第一确定模块,被配置为基于所述目的位串,确定所述第一bfr的下一跳第二bfr以及所述第二bfr支持的第二位串长度;40.第二确定模块,被配置为在所述第一位串长度与所述第二位串长度不同的情况下,根据预先存储的处理方式表,确定所述第二bfr对应的目标处理方式,所述处理方式表包括bfr与处理方式的对应关系;41.处理模块,被配置为按照所述目标处理方式,处理所述第一bier报文。42.可选的,所述处理方式表采用bfr的标识、bfr所属子域的标识表示bfr,所述对应关系采用指示处理方式的预设值表示处理方式;43.所述第二确定模块,具体被配置为根据预先存储的处理方式表中的bfr的标识、bfr所属子域的标识和预设值,确定所述第二bfr的标识和所述第二bfr所属子域的标识所对应的目标预设值;44.所述处理模块,具体被配置为按照所述目标预设值指示的目标处理方式,处理所述第一bier报文。45.可选的,所述处理方式包括以下至少一种:46.将下一跳bfr认定为不支持bier技术的网络设备;47.丢弃bier报文;48.重新封装bier报文,所述重新封装得到的bier报文的报文头中的位串长度为下一跳bfr支持的位串长度。49.可选的,所述处理模块,具体被配置为:50.当所述目标处理方式为将下一跳bfr认定为不支持bier技术的网络设备时,基于所述目的位串,确定所述第二bfr的下一跳第三bfr以及所述第三bfr支持的第三位串长度;51.在所述第一位串长度与所述第三位串长度相同的情况下,建立所述第一bfr与所述第三bfr之间的第一单播隧道,并将所述第一bier报文封装为所述第一单播隧道传输的第一隧道报文;通过所述第一单播隧道,向所述第三bfr传输所述第一隧道报文;52.在所述第一位串长度与所述第三位串长度不同的情况下,将所述第二bfr更新为所述第三bfr,返回执行所述根据预先存储的处理方式表,确定所述第二bfr对应的目标处理方式的步骤。53.可选的,所述处理模块,具体被配置为:54.当所述目标处理方式为丢弃bier报文时,丢弃所述第一bier报文。55.可选的,所述处理模块,具体被配置为:56.当所述目标处理方式为重新封装bier报文时,将所述第一bier报文的报文头中的位串长度更新为所述第二位串长度,得到第二bier报文;57.向所述第二bfr传输给所述第二bier报文。58.可选的,所述第一位转发路由器还包括:59.接收模块,被配置为接收其他bfr发布的针对位串长度不匹配的处理方式信息,所述处理方式信息包括在所述其他bfr支持的位串长度与bier报文包括的位串长度不同时,所述第一bfr所采用的处理方式;60.添加模块,被配置为将所述处理方式信息添加至所述处理方式表中。61.可选的,所述获取模块,具体被配置为:62.接收第四bfr通过第二单播隧道发送的第二隧道报文;63.在所述第二隧道报文的目的地址为所述第一bfr的地址的情况下,去除所述第二隧道报文的隧道报文头,得到第一bier报文。64.第三方面,本公开实施例提供了一种位转发路由器,包括存储器和处理器,所述存储器上存储有计算机程序指令;所述处理器,被配置为执行存储在所述存储器上的指令,以执行上述任一报文处理方法步骤。65.第四方面,本公开实施例提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序指令,所述指令被处理器执行时实现上述任一报文处理方法步骤。66.本公开实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的报文处理方法。67.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。附图说明68.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。69.图1为本公开实施例提供的报文处理方法的第一种流程示意图;70.图2为本公开实施例提供的报文处理方法的第二种流程示意图;71.图3为本公开实施例提供的处理方式表更新方法的一种流程示意图;72.图4为本公开实施例提供的第一种bier网络架构示意图;73.图5为本公开实施例提供的第二种bier网络架构示意图;74.图6为本公开实施例提供的第一位转发路由器的一种结构示意图;75.图7为本公开实施例提供的位转发路由器的一种结构示意图。具体实施方式76.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员基于本公开所获得的所有其他实施例,都属于本公开保护的范围。77.为便于理解,下面对本公开实施例中出现的词语进行解释说明。78.bier是一种新型组播技术。bier组播技术中,支持bier组播技术的路由器称为位转发路由器(bitforwardingrouter,bfr)。其中,给组播报文添加bier报文头(增加bier报文头后的组播报文称为bier报文)引入子域的bfr称为位转发入口路由器(bit-forwardingingressrouter,bfir);中间复制、转发bier报文的节点称为转发(transit)bfr(即转发节点);位于子域边缘,对bier报文解封装的节点称为位转发出口路由器(bit-forwardingegressrouter,bfer)。79.bier域:是一个路由域中所有支持bier组播技术的路由器集合。一个路由域又可以称为一个自治系统(autonomoussystem,as)。80.子域(subdomain,sd):bier域可以划分为多个sd,一个bfr可以同时属于多个sd,且在每个sd内该bfr都有唯一的bfr前缀(bfr-prefix),每个sd由子域标识(sub-domain-id)来表示,取值为[0-255],长度为8bits。[0081]位转发路由器标识(bfr-id):为每个bfr所分配的id信息,是自然数,同一个bfr,在不同的sd中,可以分配不同的bfr-id信息。取值为[1-65535],长度为16bits。[0082]位串(bitstring,bs):表示报文出口bfr(bfer)的bit序列,sd中每台边缘路由器用二进制序列中的一个bit来标识。从bs的最低位开始,每个bit位对应一个bfr-id。[0083]位串长度(bitstringlength,bsl):bier技术转发时比特位串的长度,最小64位,依次有128,256,512,1024,2048,最大4096位。具体在报文中通过4bits来标识,例如当bsl为64时,报文中用0001标识,当bsl为128时,报文中用0010标识,当bsl为256时,报文中用0011标识,当bsl为512时,报文中用0100标识,当bsl为1024时,报文中用0101标识,当bsl为2048时,报文中用0110标识,当bsl为4096时,报文中用0111标识。当bsl为2048时,报文中用0110标识,当bsl为4096时,报文中用0111标识。[0084]在bier组播网络中,每个bfr上都会预先配置其支持的位串长度(bitstringlength,bsl)。在设备故障、操作失误等情况下,bier组播网络中的不同bfr可能配置了不同的bsl,这样就会导致bsl不匹配的情况,进而导致报文传输失败。[0085]为解决上述由bsl不匹配所导致的报文传输失败的问题,本公开实施例提供了一种报文处理方法,该方法可以应用于bier网络中的第一bfr,其中,第一bfr可以为bier网络中的任意一个bfr,如第一bfr可以为bfir,也可以为转发bfr,也可以为bfer,本公开实施例对此并不做具体限定。[0086]本公开实施例提供的报文处理方法中,第一bfr中预先存储了处理方式表,该处理方式表中存储了bier网络中各个bfr在bsl不匹配的情况下的处理方式,即存储了各个bfr支持的bsl与bier报文中的bsl不同的情况下的处理方式。基于预先存储的处理方式表,第一bfr在接收的第一bier报文包括的第一bsl与下一跳第二bfr支持的第二bsl不匹配的情况下,可以准确的确定相应的目标处理方式,进而准确的按照目标处理方式,处理第一bier报文,保证了第一bier报文的准确处理,解决了上述由bsl不匹配所导致的报文传输失败的问题。[0087]下面通过具体实施例,对本公开实施例提供的报文处理方法进行详细说明。[0088]参见图1,图1为本公开实施例提供的报文处理方法的第一种流程示意图,该方法应用于bier网络中的第一bfr。其中,第一bfr可以为bier网络中的任意一个bfr。该报文处理方法包括如下步骤:[0089]步骤s11,获取第一bier报文,第一bier报文包括目的位串和目的位串的第一位串长度。[0090]本公开实施例中,bier网络中的其他bfr可以通过扩展内部网关协议(interiorgatewayprotocol,igp)向第一bfr转发bier报文,第一bfr接收其他bfr发送的bier报文,作为第一bier报文,实现了第一bfr获取第一bier报文。其中,igp协议可以包括:开放式最短路径优先协议(openshortestpathfirst,ospf)、中间系统到中间系统(intermediatesystem-to-intermediatesystem,isis)协议等。[0091]在一些实施例中,bier网络中多个bfr之间建立有采用多协议标签交换协议(multi-protocallabelswitching,mpls)、通用路由封装协议(genericroutingencapsulation,gre)隧道或其他协议的单播隧道。不同bfr之间可以通过单播隧道传输由封装bier报文得到隧道报文。[0092]这种情况下,上述步骤s11可以为:第一bfr接收bier网络中的其他bfr(如第四bfr)通过单播隧道(如第二单播隧道)发送的隧道报文(如第二隧道报文);在检测到隧道报文的目的地址为第一bfr的地址的情况下,第一bfr去除第二隧道报文的隧道报文头,得到第一bier报文。[0093]若检测到隧道报文的目的地址不是第一bfr的地址的情况下,第一bfr可以直接转发第二隧道报文。[0094]本公开实施例中,第一bier报文也可以为第一bfr连接的本地终端发送的报文,并基于所接收的报文生成的bier报文,对此不进行限定。[0095]步骤s12,基于目的位串,确定第一bfr的下一跳第二bfr以及第二bfr支持的第二位串长度。[0096]本公开实施例中,第一bfr获取到第一bier报文后,将第一bier报文中包含的目的bs与位索引转发表(bitindexforwardingtable,bift)进行匹配,确定第一bfr的下一跳bfr,即第二bfr。第二bfr上预先配置了第二bfr支持的bsl,在确定了第二bfr后,第一bfr就可以确定第二bfr所支持的第二bsl。[0097]步骤s13,在第一位串长度与第二位串长度不同的情况下,根据预先存储的处理方式表,确定第二bfr对应的目标处理方式,处理方式表包括bfr与处理方式的对应关系。[0098]本公开实施例中,第一bfr中预先存储了一张处理方式表,处理方式表中包括bier网络中各个bfr与处理方式的对应关系。该处理方式表中,bfr可以采用bfr的标识(即bfr-id)表示。为准确唯一确定一个bfr,准确确定每个bfr的处理方式,处理方式表中,bfr可以采用bfr-id和bfr所属子域的标识(即sd-id)表示。[0099]该处理方式表中的处理方式为bsl不匹配的处理方式,处理方式可以包括以下至少一种:将下一跳bfr认定为不支持bier技术的网络设备;丢弃bier报文;重新封装bier报文,重新封装得到的bier报文的报文头中的bsl为下一跳bfr支持的bsl。[0100]为了简化处理方式表,降低处理方式表所占用的存储空间,处理方式表中的处理方式可以采用指示该处理方式的预设值表示。预设值的个数与处理方式的个数相同。[0101]例如,bsl不匹配的处理方式与预设值的对应关系如表1所示。[0102]表1[0103][0104]基于表1所示的处理方式与预设值的对应关系,处理方式表可以参见表2所示。[0105]表2[0106]sd-idbfr-id处理方式000010010001100012[0107]本公开实施例中,在获取到第一bsl和第二bsl后,第一bfr可以对比第一bsl与第二bsl。当确定第一bsl与第二bsl不同时,也就是第一bier报文携带的bsl与第二bfr所支持的bsl不匹配,第一bfr根据预先存储的处理方式表,查找第二bfr对应的处理方式,并将查找到处理方式作为第二bfr对应的目标处理方式。[0108]在一些实施例中,如上述处理方式表中,bfr采用bfr-id和sd-id表示,处理方式采用指示该处理方式的预设值表示。这种情况下,上述步骤s13可以为:根据预先存储的处理方式表中的bfr的标识、bfr所属子域的标识和预设值,确定第二bfr的标识和第二bfr所属子域的标识所对应的目标预设值,也就是:[0109]从预先存储的处理方式表中,查找包括第二bfr的bfr-id和第二bfr所属sd的sd-id的对应关系,将查找到的对应关系中的预设值作为目标预设值。[0110]步骤s14,按照目标处理方式,处理第一bier报文。[0111]本公开实施例中,第一bfr在确定第二bfr对应的目标处理方式后,按照目标处理方式,对第一bier报文进行处理。[0112]在一些实施例中,如上述步骤s13中所述,第一bfr确定目标预设值。这种情况下,上述步骤s14可以为:按照目标预设值指示的目标处理方式,处理第一bier报文。[0113]本公开实施例提供的技术方案中,第一bfr中预先存储了处理方式表,该处理方式表中存储了bier网络中各个bfr在bsl不匹配的情况下的处理方式,即存储了各个bfr支持的bsl与bier报文中的bsl不同的情况下的处理方式。基于预先存储的处理方式表,第一bfr在接收的第一bier报文包括的第一bsl与下一跳第二bfr支持的第二bsl不匹配的情况下,可以准确的确定相应的目标处理方式,进而准确的按照目标处理方式,处理第一bier报文,保证了第一bier报文的准确处理,解决了上述由bsl不匹配所导致的报文传输失败的问题。[0114]在一些实施例中,当步骤s13中所确定的目标处理方式为丢弃bier报文时,上述步骤s14可以为:丢弃第一bier报文。[0115]一个示例中,结合表1和表2所示,第一bfr确定目标预设值为“0”,“0”预设值对应的处理方式为丢弃bier报文,则丢弃第一bier报文。[0116]本公开实施例提供的技术方案中,在目标处理方式为丢弃bier报文的情况下,第一bfr丢弃bier报文,节约了网络资源,保证了bier报文的传输的准确性。[0117]在一些实施例中,当步骤s13中所确定的目标处理方式为重新封装bier报文时,上述步骤s14可以为:将第一bier报文的报文头中的bsl更新为第二bsl,得到第二bier报文;向第二bfr传输给第二bier报文。[0118]一个示例中,结合表1和表2所示,第一bfr确定目标预设值为“1”,“1”预设值对应的处理方式为重新封装bier报文,则将第一bier报文的报文头中的bsl更新为第二bsl,得到第二bier报文;向第二bfr传输给第二bier报文。[0119]本公开实施例提供的技术方案中,在目标处理方式为重新封装bier报文的情况下,第一bfr实现通过第二bfr传输bier报文,保证了bier报文的传输的准确性。[0120]在一些实施例中,当步骤s13中所确定的目标处理方式为将下一跳bfr认定为不支持bier技术的网络设备时,本公开实施例还提供了一种报文处理方法,如图2所示,可以包括步骤s21-s27。[0121]步骤s21,获取第一bier报文,第一bier报文包括目的位串和目的位串的第一位串长度。具体可参见步骤s11部分的描述。[0122]步骤s22,基于目的位串,确定第一bfr的下一跳第二bfr以及第二bfr支持的第二位串长度。具体可参见步骤s12部分的描述。[0123]步骤s23,在第一位串长度与第二位串长度不同的情况下,根据预先存储的处理方式表,确定第二bfr对应的目标处理方式,处理方式表包括bfr与处理方式的对应关系。具体可参见步骤s13部分的描述。[0124]步骤s24,基于目的位串,确定第二bfr的下一跳第三bfr以及第三bfr支持的第三位串长度。[0125]本公开实施例中,第一bfr获取到第一bier报文后,将第一bier报文中包含的目的bs与bift进行匹配,确定第一bfr的下一跳第二bfr,以及确定第二bfr的下一跳第三bfr。第三bfr上预先配置了第三bfr支持的bsl,在确定了第三bfr后,第一bfr就可以确定第三bfr所支持的第三bsl。[0126]步骤s25,在第一位串长度与第三位串长度相同的情况下,建立第一bfr与第三bfr之间的第一单播隧道,并将第一bier报文封装为第一单播隧道传输的第一隧道报文。[0127]在第一位串长度与第三位串长度相同的情况下,第一bfr与第三bfr之间建立第一单播隧道,该第一单播隧道可以为基于mpls、gre隧道或其他协议的单播隧道。另外,在第一位串长度与第三位串长度相同的情况下,第一bfr为第一bier报文封装隧道报文头,该隧道报文头的目的地址为第三bfr的地址,这实现将第一bier报文封装为第一单播隧道传输的第一隧道报文。[0128]步骤s26,通过第一单播隧道,向第三bfr传输第一隧道报文。[0129]在建立第一单播隧道,以及获得第一隧道报文之后,第一bfr将第一隧道报文放在第一单播隧道,传输给第三bfr。第三bfr接收到第一隧道报文之后,检测到隧道报文的目的地址为第三bfr的地址,进而第三bfr去除第一隧道报文的隧道报文头,得到第一bier报文,继续采用bier技术传播第一bier报文。[0130]步骤s27,在第一位串长度与第三位串长度不同的情况下,将第二bfr更新为第三bfr,返回执行步骤s23中根据预先存储的处理方式表,确定第二bfr对应的目标处理方式的步骤。[0131]例如,bfr1的下一跳为bfr2,bfr1接收bier报文1后,确定bier报文1携带的bsl1与bfr2支持的bsl2不同,基于处理方式表,确定bfr2对应的目标处理方式为:将下一跳bfr认定为不支持bier技术的网络设备。bfr1确定bfr2的下一跳为bfr3,若bsl1与bfr3支持的bsl3还是不同,则基于处理方式表,继续确定bfr3对应的目标处理方式。[0132]本公开实施例提供的技术方案中,在目标处理方式为将下一跳bfr认定为不支持bier技术的网络设备的情况下,第一bfr通过建立单播隧道,跳过bsl不匹配的bfr,保证了bier报文的传输。[0133]基于图1所示实施例,本公开实施例还提供了一种处理方式表更新方法,如图3所示,该方法可以包括步骤s31-步骤s32。[0134]步骤s31,接收其他bfr发布的针对位串长度不匹配的处理方式信息,处理方式信息包括在其他bfr支持的位串长度与bier报文包括的位串长度不同时,其他bfr所采用的处理方式。[0135]步骤s32,将处理方式信息添加至处理方式表中。[0136]本公开实施例中,第一bfr可以通过igp协议接收bier网络中其他bfr发布的针对bsl不匹配的处理方式信息,处理方式信息可以称为位串长度不匹配处理方式(bslmismatchhandle,bmh)信息。处理方式信息包括:其他bfr支持的bsl与bier报文包括的bsl不同时,其他bfr对bier报文所采用的处理方式,例如,可以包括bfr-id、bfr所属sd的sd-id和指示处理方式的预设值等。[0137]第一bfr接收到bier网络中其他bfr的处理方式信息后,将处理方式信息添加到处理方式表中,完成对处理方式表进行来维护与更新。当bier网络中添加了新的bfr设备,或者bier网络中其他bfr针对bsl不匹配处理方式发生变化时,能及时的对处理方式表进行维护与更新。[0138]本公开实施例提供的技术方案中,第一bfr会接收其他bfr发布的针对bsl不匹配的处理方式信息,并将处理方式信息添加到处理方式表中,也就是对处理方式表进行更新。这样,当其他bfr针对bsl不匹配处理方式发生变化时,处理方式表能够及时进行更新,使得第一bfr可以准确地确定出其他bfr对bier报文的处理方式,准确地处理bier报文,进一步的减少了bsl不匹配所导致的报文传输失败的问题。[0139]下面结合图4和图5所示的bier网络架构,本公开实施例提供的报文处理方法进行详细说明。[0140]如图4所示的bier网络,包括bfra-c,其中,a为bfir,b和c为bfer。基于图4所示的bier网络,报文处理的流程如下。[0141]步骤一,建立bier域时,为每个bfr分配bfr-id。[0142]步骤二,bfra-c通过is-is/ospf协议分别发布包括bmh信息的bier信息,并接收bier域内其他bfr发布的bier信息,从bier信息中提取bmh信息,构建bsl不匹配的处理方式表。以bfra为例,其bsl不匹配的处理方式表的内容如下表3所示。[0143]表3[0144]sd-idbfr-idbmh010001001002000101[0145]表3中,bmh表示处理方式,bmh的值,如表3中的“1”和“2”的含义可参见上述表1所示。[0146]步骤三,bfra接收到bier报文1后,该bier报文1对应的下一跳为bfrb。[0147]步骤四,当bfra得知bfrb不支持bier报文1的报文头中封装的bsl时,根据bfrb的sd-id和bfr-id,查找上述表3所示的处理方式表,得到bfr-b的bmh为“2”。[0148]步骤五,bfra按照bmh=2所对应的处理方式“将下一跳bfr认定为不支持bier的设备”,认定bfr-b为不支持bier的设备。[0149]如图5所示的bier网络,包括bfra-e,其中,a为bfir,b和c为转发bfr,d和e为bfer。基于图5所示的bier网络,报文处理的流程如下。[0150]步骤一,建立bier域时,为每个bfr分配bfr-id;[0151]步骤二,bfra-e通过is-is/ospf协议分别发布包括bmh信息的bier信息,并接收bier域内其他bfr发布的bmh信息bier信息,从bier信息中提取bmh信息,构建bsl不匹配的处理方式表。以bfra为例,其bsl不匹配的处理方式表的内容如下表4所示。[0152]表4[0153][0154][0155]表4中,bmh表示处理方式,bmh的值,如表4中的“0”、“1”和“2”的含义可参见上述表1所示。[0156]步骤三,bfra接收到bier报文2后,该bier报文2对应的下一跳为bfrb。[0157]步骤四,当bfra得知bfrb不支持bier报文2的报文头中封装的bsl时,bfra根据bfrb的sd-id和bfr-id,查找上述表4所示的处理方式表,得到bfrb的bmh为2。[0158]步骤五,基于bfrb的bmh为2,bfra重新确定bfrb的下一跳为bfrd。[0159]步骤六,若bfrd支持bier报文2的报文头携带的bsl,则bfra可以利用mpls隧道或其他单播隧道来绕过bfrb,直接将bier报文2发送给bfrd。这实现了认定bfrb为不支持bier的设备。[0160]若bfrd不支持bier报文2的报文头中携带的bsl,则bfra根据bfrd的sd-id和bfr-id,查找处理方式表,得到bfrd的bmh,如上述表4所示的处理方式表中bfrd的bmh为0,则bfra丢弃bier报文2。[0161]若bfra根据bfrd的sd-id和bfr-id,查找处理方式表,得到bfrd的bmh为2,则认定bfr-b为不支持bier的设备,重新确定bfrd的下一跳为bfr,以便绕过bfrd。[0162]若bfra根据bfrd的sd-id和bfr-id,查找处理方式表,得到bfrd的bmh为1,则重新封装bier报文2,将bier报文2的报文头中的bsl为bfrd支持的bsl,利用mpls隧道或其他单播隧道来绕过bfrb,直接将bier报文3发送给bfrd。[0163]本公开实施例提供的技术方案中,第一bfr中预先存储了处理方式表,该处理方式表中存储了bier网络中各个bfr在bsl不匹配的情况下的处理方式,即存储了各个bfr支持的bsl与bier报文中的bsl不同的情况下的处理方式。基于预先存储的处理方式表,第一bfr在接收的第一bier报文包括的第一bsl与下一跳第二bfr支持的第二bsl不匹配的情况下,可以准确的确定相应的目标处理方式,进而准确的按照目标处理方式,处理第一bier报文,保证了第一bier报文的准确处理,解决了上述由bsl不匹配所导致的报文传输失败的问题。[0164]与上述报文处理方法对应,本公开实施例还提供了一种第一位转发路由器,如图6所示,该第一位转发路由器包括:[0165]获取模块61,被配置为获取第一bier报文,所述第一bier报文包括目的位串和所述目的位串的第一位串长度;[0166]第一确定模块62,被配置为基于所述目的位串,确定所述第一bfr的下一跳第二bfr以及所述第二bfr支持的第二位串长度;[0167]第二确定模块63,被配置为在所述第一位串长度与所述第二位串长度不同的情况下,根据预先存储的处理方式表,确定所述第二bfr对应的目标处理方式,所述处理方式表包括bfr与处理方式的对应关系;[0168]处理模块64,被配置为按照所述目标处理方式,处理所述第一bier报文。[0169]可选的,所述处理方式表采用bfr的标识、bfr所属子域的标识表示bfr,所述对应关系采用指示处理方式的预设值表示处理方式;[0170]所述第二确定模块63,具体被配置为根据预先存储的处理方式表中的bfr的标识、bfr所属子域的标识和预设值,确定所述第二bfr的标识和所述第二bfr所属子域的标识所对应的目标预设值;[0171]所述处理模块,具体被配置为按照所述目标预设值指示的目标处理方式,处理所述第一bier报文。[0172]可选的,所述处理方式包括以下至少一种:[0173]将下一跳bfr认定为不支持bier技术的网络设备;[0174]丢弃bier报文;[0175]重新封装bier报文,所述重新封装得到的bier报文的报文头中的位串长度为下一跳bfr支持的位串长度。[0176]可选的,所述处理模块64,具体被配置为:[0177]当所述目标处理方式为将下一跳bfr认定为不支持bier技术的网络设备时,基于所述目的位串,确定所述第二bfr的下一跳第三bfr以及所述第三bfr支持的第三位串长度;[0178]在所述第一位串长度与所述第三位串长度相同的情况下,建立所述第一bfr与所述第三bfr之间的第一单播隧道,并将所述第一bier报文封装为所述第一单播隧道传输的第一隧道报文;通过所述第一单播隧道,向所述第三bfr传输所述第一隧道报文;[0179]在所述第一位串长度与所述第三位串长度不同的情况下,将所述第二bfr更新为所述第三bfr,返回执行所述根据预先存储的处理方式表,确定所述第二bfr对应的目标处理方式的步骤。[0180]可选的,所述处理模块64,具体被配置为:[0181]当所述目标处理方式为丢弃bier报文时,丢弃所述第一bier报文。[0182]可选的,所述处理模块64,具体被配置为:[0183]当所述目标处理方式为重新封装bier报文时,将所述第一bier报文的报文头中的位串长度更新为所述第二位串长度,得到第二bier报文;[0184]向所述第二bfr传输给所述第二bier报文。[0185]可选的,所述第一位转发路由器还包括:[0186]接收模块,被配置为接收其他bfr发布的针对位串长度不匹配的处理方式信息,所述处理方式信息包括在所述其他bfr支持的位串长度与bier报文包括的位串长度不同时,所述第一bfr所采用的处理方式;[0187]添加模块,被配置为将所述处理方式信息添加至所述处理方式表中。[0188]可选的,所述获取模块61,具体被配置为:[0189]接收第四bfr通过第二单播隧道发送的第二隧道报文;[0190]在所述第二隧道报文的目的地址为所述第一bfr的地址的情况下,去除所述第二隧道报文的隧道报文头,得到第一bier报文。[0191]本公开实施例提供的技术方案中,第一bfr中预先存储了处理方式表,该处理方式表中存储了bier网络中各个bfr在bsl不匹配的情况下的处理方式,即存储了各个bfr支持的bsl与bier报文中的bsl不同的情况下的处理方式。基于预先存储的处理方式表,第一bfr在接收的第一bier报文包括的第一bsl与下一跳第二bfr支持的第二bsl不匹配的情况下,可以准确的确定相应的目标处理方式,进而准确的按照目标处理方式,处理第一bier报文,保证了第一bier报文的准确处理,解决了上述由bsl不匹配所导致的报文传输失败的问题。[0192]本公开实施例还提供了一种位转发路由器,如图7所示,包括处理器71和存储器72;所述存储器72上存储有计算机程序指令;所述处理器71,被配置为执行存储在所述存储器72上的指令,以执行上述任一报文处理方法步骤。[0193]存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。[0194]处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。[0195]在本公开提供的又一实施例中,还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序指令,所述指令被处理器执行时实现上述任一报文处理方法的步骤。[0196]在本公开提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一报文处理方法。[0197]在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。[0198]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0199]本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于位转发路由器和计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0200]以上所述仅为本公开的较佳实施例,并非用于限定本公开的保护范围。凡在本公开的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本公开的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1