掌桥专利:专业的专利平台
掌桥专利
首页

一种报文转发方法及装置

文献发布时间:2023-06-19 13:48:08


一种报文转发方法及装置

技术领域

本申请涉及通信技术领域,特别是涉及一种报文转发方法及装置。

背景技术

位索引显式复制(Bit Index Explicit Replication,BIER)是一种新型组播技术。与传统组播技术相比,这种组播技术通过将组播报文目的节点的集合以位串(BitString,BS)的方式封装在组播报文头部进行发送,从而使网络中间节点无需为每一条组播流建立分发树及保存流状态,仅需根据BS进行复制和转发即可。

然而,基于BIER的报文转发的前提条件是,每一边缘节点匹配一个唯一的位转发路由器标识(Bit Forwarding Router identity,BFR-id),基于边缘节点的BFR-id生成位索引转发表(Bit Index Forwarding Table,BIFT),并基于BIFT转发BIER报文。若出现边缘节点的BFR-id冲突的情况下,则会影响正常的通信。

发明内容

本申请实施例的目的在于提供一种报文转发方法及装置,以降低出现BFR-id冲突时对正常通信的影响。具体技术方案如下:

第一方面,本申请实施例提供了一种报文转发方法,应用于第一子域内的BIER节点,所述方法包括:

学习第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id;

若所述第一BFR-id和所述第二BFR-id相同,且所述第一边缘节点和所述第二边缘节点位于所述第一子域内,则生成第一BIFT,所述第一BIFT不包括所述第一BFR-id和所述第二BFR-id;

利用所述第一BIFT,转发BIER报文。

第二方面,本申请实施例提供了一种报文转发装置,应用于第一子域内的BIER节点,所述装置包括:

学习单元,用于学习第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id;

生成单元,用于若所述第一BFR-id和所述第二BFR-id相同,且所述第一边缘节点和所述第二边缘节点位于所述第一子域内,则生成第一BIFT,所述第一BIFT不包括所述第一BFR-id和所述第二BFR-id;

转发单元,用于利用所述第一BIFT,转发BIER报文。

第三方面,本申请实施例提供了一种BIER节点,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现第一方面提供的任一方法步骤。

第四方面,本申请实施例提供了一种机器可读存储介质,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使实现第一方面提供的任一方法步骤。

第五方面,本申请实施例还提供了一种计算机程序,该计算机程序被处理器执行实现第一方面提供的任一方法步骤。

本申请实施例提供的技术方案中,对于BIER节点所属子域内的第一边缘节点和第二边缘节点,若第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id相同,即第一边缘节点的BFR-id和第二边缘节点的BFR-id冲突,则生成的第一BIFT不包括第一BFR-id和第二BFR-id,进而BIER节点只利用第一边缘节点和第二边缘节点转发BIER报文,第一边缘节点和第二边缘节点不再进行BIER报文封装和BIER报文解封装等处理。本申请实施例提供的技术方案,除第一边缘节点和第二边缘节点外的其他边缘节点之间可以正常通信,降低了出现BFR-id冲突时对正常通信的影响。

当然,实施本申请的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的子域的第一种组网示意图;

图2为本申请实施例提供的报文转发方法的第一种流程示意图;

图3a为本申请实施例提供的子域的第二种组网示意图;

图3b为对图3a所示的子域执行冲突处理后的组网示意图;

图4为本申请实施例提供的报文转发方法的第二种流程示意图;

图5为本申请实施例提供的子域的第三种组网示意图;

图6为本申请实施例提供的报文转发方法的第三种流程示意图;

图7为本申请实施例提供的子域的第四种组网示意图;

图8为本申请实施例提供的报文转发装置的一种结构示意图;

图9为本申请实施例提供的BIER节点的一种结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。

为便于理解,下面对本申请实施例中出现的词语进行解释说明。

BIER是一种新型组播技术。BIER组播技术中,支持BIER组播技术的路由器称为位转发路由器(Bit Forwarding Router,BFR)。其中,给组播报文添加BIER报文头(增加BIER报文头后的组播报文称为BIER报文)引入子域的BFR称为位转发入口路由器(Bit-Forwarding Ingress Router,BFIR);中间复制、转发BIER报文的节点称为转发(Transit)BFR(即转发节点);位于子域边缘,对BIER报文解封装的节点称为位转发出口路由器(Bit-Forwarding Egress Router,BFER)。

上述BFIR和BFER统称为边缘节点,Transit BFR、BFIR和BFER统称为BIER节点,也就是BFR可以称为BIER节点。其中,边缘节点除了可以实现给组播报文添加BIER报文头或对BIER报文解封装的功能外,还可以实现复制、转发BIER报文的功能;而转发节点只能用于实现复制、转发BIER报文的功能,因此,转发节点又可以称为纯转发节点,也就是无效边缘节点。

BIER域:是一个路由域中所有支持BIER组播技术的路由器集合。一个路由域又可以称为一个自治系统(Autonomous System,AS)。

子域(Sub Domain,SD):BIER域可以划分为多个SD,一个BFR可以同时属于多个SD,且在每个SD内该BFR都有唯一的BFR前缀(BFR-prefix),如果是边缘节点(BFIR/BFER),还要求配置唯一的BFR-id。

BIER域内的每个SD都有唯一编号,不同BIER域内具有相同编号的SD可以通过跨域技术实现通信。

对于一个BIER节点,与该BIER节点属于同一SD的其他BIER节点为域内BIER节点,与该BIER节点属于不同SD的其他BIER节点为域外BIER节点。一个SD内BIER节点可以学习到域内BIER节点的BFR-id和导入的域外BIER节点的BFR-id,本申请实施例中描述的BFR-id冲突场景的处理方式包括SD内BIER节点学习到的各种BFR-id冲突场景的处理方式。

BFR-prefix:BFR的IPv4/IPv6地址,通常使用环回口上配置的IP地址,每SD内唯一。

BFR-id:16bit(比特)的标识整数,唯一标识SD内的BFR,有效BFR-id的取值范围为1~65535,0表示无效BFR-id。可以理解的,边缘节点(BFIR/BFER)的BFR-id的取值范围为1~65535,转发节点(Transit BFR)的BFR-id为0。

集合标识(Set Identity,SI):当BFR-id的个数超过位串长度(Bit StringLength,BSL)能表示的范围,需要用多个集合来表示,每个集合一个ID。例如,BFR-id集合为{1,2,3…,512},BSL为256,则需要两个Set来表示BFR-id集合{1,2,3…,512},SI 0表示{1,2,3…,256},SI 1表示{257,258,…,512}。

位串(Bit String,BS):表示报文出口BFR(BFER)的bit序列,SD中每台边缘路由器用二进制序列中的一个bit来标识。从BS的最低位开始,每个bit位对应一个BFR-id。

子域内,每个边缘节点需要分配一个BFR-id,以不超过256个边缘节点的子域为例,每个边缘节点需要配置一个唯一值,该值的取值范围为1~256。BFER集合使用一个256bit的BS来表示,BS中的每个bit位表示一个BFER。

如图1所示的子域的组网示意图。图1所示的子域内包括6个BIER节点,分别为A-F。其中,BIER节点B和C为Transit BFR,BIER节点A、D、E和F为边缘节点,边缘节点D的BFR-id为1(即0:0001),边缘节点F的BFR-id为2(即0:0010),边缘节点E的BFR-id为3(即0:0100),边缘节点A的BFR-id为4(即0:1000)。其中,“:”之前的一位“0”为SI,“:”之后的4位为BS。实际协议规定的位串最小长度是64bit,图1仅以4bit长度的BS说明原理,不代表实际组网。

图1中示出了每个BIER节点中的BIFT。BIFT中,转发掩码(Forwarding-BitMask,F-BM)。实际应用中,F-BM指的是图1中“:”之后的位串。图1中转发掩码融合SI,并在BIFT中省略了BFR-id列。以BIER节点E为例,BIER节点E中完整的BIFT如下表所示。

F-BM与目的BS相与后的结果通过指定的邻居路由器(Neighbor Router,NBR)(即邻居BIER节点)转发出去。

BIER报文转发处理流程:从低位开始检测目的位串,如果目的位串的某一位被置位,即目的位串的某一位为1,查询BIFT,将目的位串与BIFT中表项的F_BM相与,如果相与的结果不为0,复制BIER报文,并替换目的位串为上一步相与的结果,转发给表项指定的NBR;从目的位串中清除与F_BM中1所在位对应的位,继续检测修改后的目的位串,获取下一个被置1的位,重复上述处理,直到目的位串中没有被置1的位,即目的位串为0。

以图1所示的组网为例,若有一个包含目的位串为0101的BIER报文需要从BIER节点A发送到BIER节点D和E,则报文转发过程如下:

BIER节点A从低位开始检测目的位串0101,根据目的位串0101中被置1的最低位0001查询BIFT,得到F-BM为0111,F-BM 0111与目的位串0101相与,结果为0101;BIER节点A复制BIER报文,并在设置复制报文的目的位串为相与的结果0101后,向F-BM 0111所在表项指定的NBR B转发设置后的BIER报文;BIER节点A从原目的位串0101中清除F-BM 0111中1所在位对应位后,目的位串为0,BIER节点A上的报文转发结束;

BIER节点B收到来自BIER节点A的BIER报文后,根据目的位串0101被置1的最低位0001查询BIFT,得到F-BM为0011,F-BM 0011与目的位串0101相与,结果为0001;BIER节点B复制BIER报文,并在设置复制报文的目的位串为0001后,向F-BM 0011所在表项指定的NBRC转发设置后的BIER报文;BIER节点B从原目的位串0101中清除F-BM 0011中1所在位对应位后,目的位串为0100;根据目的位串0100中被置1的最低位0100查询BIFT,得到F-BM为0100,F-BM 0100与目的位串0100相与,结果为0100;BIER节点B复制BIER报文,并在设置复制报文的目的位串为0100后,向F-BM 0100所在表项指定的NBR E转发设置后的BIER报文;BIER节点B从原目的位串0100中清除F-BM 0100中1所在位对应位后,目的位串为0,BIER节点B上的报文转发结束;

BIER节点C收到来自BIER节点B的BIER报文后,根据目的位串0001中被置1的最低位0001查询BIFT,得到F-BM为0001,F-BM 0001与目的位串0001相与,结果为0001;BIER节点C复制BIER报文,并在设置复制报文的目的位串为0001后,向F-BM 0001所在表项指定的NBRD转发设置后的BIER报文;BIER节点C从原目的位串0001中清除F-BM 0001中1所在位对应位后,目的位串为0,BIER节点C上的报文转发结束。

BIER节点E收到来自BIER节点B的BIER报文后,根据目的位串0100中被置1的最低位0100查询BIFT,得到F-BM为0100,F-BM 0100与目的位串0100相与,结果为0100;由于F-BM0100所在表项指定的NBR是BIER节点E自身,BIER节点E复制BIER报文,并执行BIER报文解封装处理;BIER节点E从原目的位串0100中清除F-BM 0100中1所在位对应位后,目的位串为0,BIER节点E上的报文转发结束;

BIER节点D收到来自BIER节点C的BIER报文后,根据目的位串0001中被置1的最低位0001查询BIFT,得到F-BM为0001,F-BM 0001与目的位串0001相与,结果为0001,由于F-BM0001所在表项指定的NBR是BIER节点D自身,BIER节点D复制BIER报文,并执行BIER报文解封装处理;BIER节点D从原目的位串0001中清除F-BM 0001中1所在位对应位后,目的位串为0,BIER节点D上的报文转发结束。

基于BIER的报文转发的前提条件是,每一边缘节点匹配一个唯一的BFR-id。若出现边缘节点的BFR-id冲突的情况,则会影响正常的通信。例如,图1中BIER节点B和D的BFR-id冲突时,BIER节点B和D会被完全隔离,此时,由于BIER节点A与BIER节点E和F位于隔离的BIER节点B两侧,BIER节点A与BIER节点E和F的通信会中断。

为解决上述问题,本申请实施例提供了一种报文转发方法,该方法可以应用于子域内的任一BIER节点,该BIER节点可以为边缘节点,也可以为转发节点,也可以为与其他子域连接的BIER节点。其中,转发节点为BFR-id为预设BFR-id的BIER节点,如图1中的BIER节点B和C。

本申请实施例中,预设BFR-id用于指示已具有原始BFR-id的BIER节点为无效边缘节点。预设BFR-id可以根据实际需求设定。例如,预设BFR-id可以为0。本申请实施例中,预先规定的指示BIER节点为无效边缘节点的BFR-id均可以作为预设BFR-id,也就是,只要BIER节点的BFR-id被配置为一个BFR-id,该BIER节点就会将自身作为无效边缘节点,那么该BFR-id就可以作为预设BFR-id。

本申请实施例提供的技术方案中,对于BIER节点所属子域内的第一边缘节点和第二边缘节点,若第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id相同,即第一边缘节点的BFR-id和第二边缘节点的BFR-id冲突,则生成的第一BIFT不包括第一BFR-id和第二BFR-id,进而BIER节点只利用第一边缘节点和第二边缘节点转发BIER报文,第一边缘节点和第二边缘节点不再进行BIER报文封装和BIER报文解封装等处理。本申请实施例提供的技术方案,除第一边缘节点和第二边缘节点外的其他边缘节点之间可以正常通信,降低了出现BFR-id冲突时对正常通信的影响。

下面通过具体实施例,对本申请实施例提供的报文转发方法进行详细说明。

参见图2,图2为本申请实施例提供的报文转发方法的第一种流程示意图,该方法应用于第一子域内的BIER节点。其中,第一子域可以为任一子域。该报文转发方法包括如下步骤:

步骤S21,学习第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id。

第一子域可以包括一个或多个边缘节点,其他子域可以包括一个或多个边缘节点。

BIER节点学习各个边缘节点的BFR-id,以便于建立BIFT,实现边缘节点间的通信。本申请实施例中,以BIER节点学习第一边缘节点的BFR-id为第一BFR-id,学习到第二边缘节点的BFR-id为第二BFR-id为例进行说明,并不起限定作用。

步骤S22,若第一BFR-id和第二BFR-id相同,且第一边缘节点和第二边缘节点位于第一子域内,则生成第一BIFT,第一BIFT不包括第一BFR-id和第二BFR-id。

BIER节点学习到第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id后,检测第一BFR-id和第二BFR-id是否相同。若第一BFR-id和第二BFR-id不同,则BIER节点可将第一BFR-id和第二BFR-id分别加入BIFT,以便基于BIFT,实现第一边缘节点与其他边缘节点之间的通信、以及第二边缘节点与其他边缘节点之间的通信。

若第一BFR-id和第二BFR-id相同,则确定第一边缘节点的BFR-id和第二边缘节点的BFR-id冲突,执行冲突处理,包括:BIER节点确定第一边缘节点和第二边缘节点是否位于第一子域内;若第一边缘节点和第二边缘节点位于第一子域内,则说明是域内BFR-id冲突,BIER节点生成第一BIFT,该第一BIFT不包括第一BFR-id和第二BFR-id。

本申请实施例中,在第一边缘节点的BFR-id和第二边缘节点的BFR-id冲突的情况下,BIER节点将第一边缘节点的BFR-id和第二边缘节点的BFR-id均看作是预设BFR-id,也就是,将第一边缘节点和第二边缘节点作为无效边缘节点,第一边缘节点和第二边缘节点仅用于转发BIER报文,进而,BIER节点不会将第一BFR-id和第二BFR-id加入BIFT,也就是,生成不包括第一BFR-id和第二BFR-id的第一BIFT。

步骤S23,利用第一BIFT,转发BIER报文。

本申请实施例中,第一BIFT中不包括第一BFR-id和第二BFR-id。BIER节点利用第一BIFT转发BIER报文时,就不会依据冲突的第一BFR-id和第二BFR-id,对BIER报文进行BIER报文封装和BIER报文解封装等处理,保证了除第一边缘节点和第二边缘节点外的其他边缘节点之间可以正常通信,降低了出现BFR-id冲突时对正常通信的影响。

此外,本申请实施例中,BIER节点不会依据冲突的第一BFR-id和第二BFR-id,对BIER报文进行BIER报文封装和BIER报文解封装等处理,避免了BIER报文的误传,提高了网络的安全性。

本申请实施例中,存在冲突BFR-id的边缘节点可以是上述BIER节点本身,如BIER节点为第一边缘节点。这种情况下,为了避免误处理报文,BIER节点(即第一边缘节点)除按照上述步骤S21-S23处理BIER信息外,若第一BFR-id和第二BFR-id相同,且第一边缘节点和第二边缘节点位于第一子域内,则BIER节点(即第一边缘节点)还可以将BIER节点的运行BFR-id配置为预设BFR-id。这样,BIER节点就不会在F-BM所在表项指定的NBR是该BIER节点本身的情况下,执行BIER报文解封装处理,避免了误处理报文。

本申请实施例中,存在冲突BFR-id的边缘节点可以不是上述BIER节点本身,如BIER节点不是第一边缘节点,也不是第二边缘节点。这种情况下,BIER节点按照上述步骤S21-S23处理BIER信息即可。

本申请实施例中,BIER节点在学习到第一子域内边缘节点的BFR-id(如第一子域内第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id)后,无论第一BFR-id和第二BFR-id是否冲突,均可以直接向第一子域内的其他BIER节点同步第一BIER信息,该第一BIER信息包括第一BFR-id和第二BFR-id。这样,可以有效避免如下问题:因第一子域内的其他BIER节点未学习到第一BFR-id和第二BFR-id,导致第一边缘节点和第二边缘节点被隔离,进而影响第一子域内其他BIER节点间的正常通信。

下面结合图3a和图3b所示的子域的组网,对本申请实施例提供的报文转发方法进行说明。预设BFR-id为0。

图3a中,BIER节点A-F属于同一子域,其中,BIER节点A、B、D、E和F为边缘节点,BIER节点A的BFR-id为4,BIER节点B和D的BFR-id为1,BIER节点E的BFR-id为3,BIER节点F的BFR-id为2。基于此可知,BIER节点B和D的BFR-id相同,即BIER节点B和D的BFR-id冲突。

对于BIER节点A、C、E或F,学习到BIER节点B和D的BFR-id后,确定BIER节点B和D的BFR-id冲突,且BIER节点B和D属于同一子域,因此,出现域内BFR-id冲突,以BIER节点B和D的BFR-id分别为0,生成BIFT。此时,在BIER节点A、C、E或F上,BFR-id 1无效,BIER节点A、C、E或F上的BIFT中不包括BFR-id 1。

对于BIER节点B或D,学习到BIER节点B和D的BFR-id后,确定BIER节点B和D的BFR-id冲突,且BIER节点B和D属于同一子域,因此,出现域内BFR-id冲突,将BIER节点B和D的BFR-id均看作为0,生成BIFT,该BIFT不包括BFR-id 1。此外,BIER节点B配置本身的运行BFR-id为0,BIER节点D配置本身的运行BFR-id为0。

通过上述处理后,子域的组网如图3b所示,BFR-id 1在整个子域内无效,BIER节点B和D退化为转发节点。

本申请实施例中,在控制平面,BIER节点可以记录第一子域内冲突BFR-id的状态为冲突状态。BIER节点可以动态的学习第一子域内的各个边缘节点的BFR-id。对于记录的信息,当BIER节点确定BFR-id冲突状态解除时,即发现第一边缘节点的第一BFR-id与第二边缘节点的第二BFR-id不同时,则将第一BFR-id与第二BFR-id分别加入BIFT;并且第一边缘节点配置自身的运行BFR-id为第一BFR-id,第二边缘节点配置自身的运行BFR-id为第二BFR-id,以实现第一边缘节点与第二边缘节点正常进行BIER报文封装和BIER报文解封装等处理。

在本申请的一个实施例中,基于图2,本申请实施例还提供了一种报文转发方法,如图4所示,该方法应用于第一子域内的BIER节点,可以包括如下步骤:

步骤S41,学习第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id。

步骤S42,若第一BFR-id和第二BFR-id相同,且第一边缘节点和第二边缘节点位于第一子域内,则生成第一BIFT,第一BIFT不包括第一BFR-id和第二BFR-id。

步骤S43,利用第一BIFT,转发BIER报文。

步骤S41-S43与上述步骤S21-S23相同。

步骤S44,若第一BFR-id和第二BFR-id相同,第一边缘节点位于第一子域内,第二边缘节点位于第二子域内,则生成第二BIFT,第二BIFT包括第一BFR-id,且不包括第二BFR-id。

BIER节点学习到第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id后,检测第一BFR-id和第二BFR-id是否相同。若第一BFR-id和第二BFR-id相同,则确定第一边缘节点的BFR-id和第二边缘节点的BFR-id冲突,执行冲突处理,可以包括:BIER节点确定第一边缘节点和第二边缘节点是否位于第一子域内;若第一边缘节点位于第一子域内,第二边缘节点位于第二子域内,则说明是域内BFR-id与域外BFR-id冲突,将域内第一边缘节点的第一BFR-id加入BIFT,得到第二BIFT,也就是,该第二BIFT包括第一BFR-id,且不包括第二BFR-id。

步骤S45,利用第二BIFT,转发BIER报文。

本申请实施例中,第二BIFT中包括第一BFR-id,而不包括第二BFR-id。BIER节点利用第二BIFT转发BIER报文时,就可依据第一BFR-id,向第一边缘节点转发BIER报文,第一边缘节点可正常进行BIER报文封装和BIER报文解封装等处理。这保证了在域内BFR-id与域外BFR-id冲突时,优先保证域内BIER节点的正常通信。

本申请实施例中,BIER节点在学习到其他子域内边缘节点的BFR-id(如第二子域内第二边缘节点的第二BFR-id)后,可以直接将学习到的BIER信息同步给第一子域内其他BIER节点,该BIER信息包括第一BFR-id和第二BFR-id。

为了节约网络资源,并节约每个BIER节点的计算资源,在第一BFR-id和第二BFR-id相同,第一边缘节点位于第一子域内,第二边缘节点位于第二子域内的情况下,BIER节点向第一子域内的其他BIER节点同步第二BIER信息,该第二BIER信息不包括第二BFR-id,也就是,BIER节点仅记录第二边缘节点的第二BFR-id,而不使用第二BFR-id。

此时,第一子域内的所有BIER节点使用BFR-id通信时,不会感知到第一子域外BFR-id冲突的BIER节点,保证了第一子域内BIER节点的通信不受影响。

下面结合图5所示的子域的组网,对本申请实施例提供的报文转发方法进行说明。图5中,BIER节点A、B和C位于AS100,属于同一子域中,BIER节点D、E和F位于AS200,属于同一子域中。其中,BIER节点A和E的BFR-id为1,BIER节点B的BFR-id为2,BIER节点F的BFR-id为4。

AS100中的BIER节点C与AS200中的BIER节点D通过外部边界网关协议(ExternalBorder Gateway Protocol,EBGP),建立了BGP邻居。BIER节点D将AS200内的BIER信息(包括:BIER节点E的BFR-id为1,BIER节点F的BFR-id为4)导入BIER节点C。BIER节点C将AS100内的BIER信息(包括:BIER节点A的BFR-id为1,BIER节点B的BFR-id为2)导入BIER节点D。

AS100内BIER节点C检测到AS100内BIER节点A的BFR-id 1与AS200内BIER节点E的BFR-id 1冲突,优先使用域内BIER节点A的BFR-id 1,即将BIER节点A的BFR-id 1加入BIFT,不使用域外BIER节点E的BFR-id 1,即拒绝将BIER节点E的BFR-id 1加入BIFT。另外,BIER节点C将不冲突的BIER节点F的BFR-id 4的信息传递给AS100内的BIER节点A和B,而不将冲突的BIER节点E的BFR-id 1的信息传递给AS100内的BIER节点A和B。

这样,对于BFR-id冲突的BIER节点A和E,在AS100内,可正常使用BFR-id 1的域内BIER节点A进行BIER报文封装和BIER报文解封装等处理,而不使用BFR-id 1的域外BIER节点E进行BIER报文封装和BIER报文解封装等处理。对于不存在BFR-id冲突的BIER节点B和F,在AS100内,可正常使用BIER节点B和F进行BIER报文封装和BIER报文解封装等处理。

同理,AS200内BIER节点处理导入的AS100的BIER信息,此处不再赘述。

本申请实施例中,在控制平面,BIER节点可以记录第一子域外冲突BFR-id的状态为冲突状态。BIER节点可以动态的学习第一子域内和第一子域外的各个边缘节点的BFR-id。对于记录的信息,当BIER节点确定域内与域外的BFR-id冲突状态解除时,即发现第一边缘节点的第一BFR-id与第二边缘节点的第二BFR-id不同时,则将第二BFR-id加入BIFT,以实现第一边缘节点与第二边缘节点正常进行BIER报文封装和BIER报文解封装等处理。

在本申请的一个实施例中,基于图2,本申请实施例还提供了一种报文转发方法,如图6所示,该方法应用于第一子域内的BIER节点,可以包括如下步骤:

步骤S61,学习第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id。

步骤S62,若第一BFR-id和第二BFR-id相同,且第一边缘节点和第二边缘节点位于第一子域内,则生成第一BIFT,第一BIFT不包括第一BFR-id和第二BFR-id。

步骤S63,利用第一BIFT,转发BIER报文。

步骤S61-S63与上述步骤S21-S23相同。

步骤S64,若第一BFR-id和第二BFR-id相同,第一边缘节点位于第三子域内,第二边缘节点位于第二子域内,则生成第三BIFT,第三BIFT不包括第一BFR-id和第二BFR-id。

BIER节点学习到第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id后,检测第一BFR-id和第二BFR-id是否相同。若第一BFR-id和第二BFR-id相同,则确定第一边缘节点的BFR-id和第二边缘节点的BFR-id冲突,执行冲突处理,可以包括:BIER节点确定第一边缘节点和第二边缘节点是否位于第一子域内;若第一边缘节点位于第三子域内,第二边缘节点位于第二子域内,则说明是域外BFR-id冲突,生成第三BIFT,第三BIFT不包括第一BFR-id和第二BFR-id。

步骤S65,利用第三BIFT,转发BIER报文。

本申请实施例中,当第三子域内的BFR-id与第二子域内的BFR-id冲突时,即除第一子域外的两个不同子域的BFR-id冲突时,拒绝使用该BFR-id进行通信,以最大可能保证BIER节点所属的第一子域内的正常通信。

本申请实施例中,BIER节点在学习到其他子域内边缘节点的BFR-id(如第三子域内第一边缘节点的第一BFR-id,第二子域内第二边缘节点的第二BFR-id)后,可以直接将学习到的BIER信息同步给第一子域内其他BIER节点,该BIER信息包括第一BFR-id和第二BFR-id。

为了节约网络资源,并节约每个BIER节点的计算资源,在第一BFR-id和第二BFR-id相同,第一边缘节点位于第三子域内,第二边缘节点位于第二子域内,即第一边缘节点和第二边缘节点均不属于第一子域的情况下,BIER节点向第一子域内的其他BIER节点同步第三BIER信息,该第三BIER信息不包括第一BFR-id和第二BFR-id,也就是,BIER节点仅记录第一边缘节点的第一BFR-id,第二边缘节点的第二BFR-id,而不使用第一BFR-id和第二BFR-id。

此时,第一子域内的所有BIER节点使用BFR-id通信时,不会感知到第一子域外BFR-id冲突的BIER节点,保证了第一子域BIER节点的通信不受影响。

下面结合图7所示的子域的组网,对本申请实施例提供的报文转发方法进行说明。图7中,BIER节点A、B和C位于AS100,属于同一子域中,BIER节点D、E和F位于AS200,属于同一子域中,BIER节点G、H和I位于AS300,属于同一子域。其中,BIER节点A的BFR-id为1,BIER节点B的BFR-id为2,BIER节点E和H的BFR-id为3,BIER节点F的BFR-id为4,BIER节点I的BFR-id为6。

AS100中的BIER节点C与AS200中的BIER节点D通过EBGP建立BGP邻居,AS100中的BIER节点C与AS300中的BIER节点G通过EBGP建立BGP邻居。BIER节点D将AS200内的BIER信息(包括:BIER节点E的BFR-id为3,BIER节点F的BFR-id为4)导入BIER节点C。BIER节点G将AS300内的BIER信息(包括:BIER节点H的BFR-id为3,BIER节点I的BFR-id为6)导入BIER节点C。

AS100内的BIER节点C检测到AS200内的BIER节点E的BFR-id 3与AS300内BIER节点H的BFR-id 3冲突,则不使用BIER节点E的BFR-id 3,也不使用BIER节点H的BFR-id 3,即拒绝将域外BIER节点E和H的BFR-id3加入BIFT。

对于AS200内的BIER节点F的BFR-id 4和AS300内的BIER节点I的BFR-id 6,AS100内的BIER节点C未检测到BFR-id冲突,因此,可以使用域外BIER节点F的BFR-id 4和域外BIER节点I的BFR-id 6,即将BIER节点F的BFR-id 4和BIER节点I的BFR-id 6加入BIFT。

本申请实施例中,在控制平面,BIER节点可以记录第一子域外冲突BFR-id的状态为冲突状态。BIER节点可以动态的学习第一子域外的各个边缘节点的BFR-id。对于记录的信息,当BIER节点确定域外的BFR-id冲突状态解除时,即发现第一边缘节点的第一BFR-id与第二边缘节点的第二BFR-id不同时,则将第一BFR-id和第二BFR-id加入BIFT,以实现第一边缘节点与第二边缘节点正常进行BIER报文封装和BIER报文解封装等处理。

与上述报文转发方法对应,本申请实施例还提供了一种报文转发装置,如图8所示,该装置应用于第一子域内的BIER节点,包括:

学习单元81,用于学习第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id;

生成单元82,用于若第一BFR-id和第二BFR-id相同,且第一边缘节点和第二边缘节点位于第一子域内,则生成第一BIFT,第一BIFT不包括第一BFR-id和第二BFR-id;

转发单元83,用于利用第一BIFT,转发BIER报文。

一个可选的实施例中,BIER节点为第一边缘节点,则上述报文转发装置还可以包括:

配置单元,用于若第一BFR-id和第二BFR-id相同,且第一边缘节点和第二边缘节点位于第一子域内,则将BIER节点的运行BFR-id配置为预设BFR-id,预设BFR-id用于指示已具有原始BFR-id的BIER节点为无效边缘节点。

一个可选的实施例中,上述报文转发装置还可以包括:

同步单元,用于若第一BFR-id和第二BFR-id相同,且第一边缘节点和第二边缘节点位于第一子域内,则向第一子域内的其他BIER节点同步第一BIER信息,第一BIER信息包括第一BFR-id和第二BFR-id。

一个可选的实施例中,生成单元82,还可以用于若第一BFR-id和第二BFR-id相同,第一边缘节点位于第一子域内,第二边缘节点位于第二子域内,则生成第二BIFT,第二BIFT包括第一BFR-id,且不包括第二BFR-id;

转发单元83,还可以用于利用第二BIFT,转发BIER报文。

一个可选的实施例中,上述报文转发装置还可以包括:

同步单元,用于若第一BFR-id和第二BFR-id相同,第一边缘节点位于第一子域内,第二边缘节点位于第二子域内,则向第一子域内的其他BIER节点同步第二BIER信息,第二BIER信息不包括第二BFR-id。

一个可选的实施例中,生成单元82,还可以用于若第一BFR-id和第二BFR-id相同,第一边缘节点位于第三子域内,第二边缘节点位于第二子域内,则生成第三BIFT,第三BIFT不包括第一BFR-id和第二BFR-id;

转发单元83,还可以用于利用第三BIFT,转发BIER报文。

一个可选的实施例中,上述报文转发装置还可以包括:

同步单元,用于若第一BFR-id和第二BFR-id相同,第一边缘节点位于第三子域内,第二边缘节点位于第二子域内,则向第一子域内的其他BIER节点同步第三BIER信息,第三BIER信息不包括第一BFR-id和第二BFR-id。

本申请实施例提供的技术方案中,对于BIER节点所属子域内的第一边缘节点和第二边缘节点,若第一边缘节点的第一BFR-id和第二边缘节点的第二BFR-id相同,即第一边缘节点的BFR-id和第二边缘节点的BFR-id冲突,则生成的第一BIFT不包括第一BFR-id和第二BFR-id,进而BIER节点只利用第一边缘节点和第二边缘节点转发BIER报文,第一边缘节点和第二边缘节点不再进行BIER报文封装和BIER报文解封装等处理。本申请实施例提供的技术方案,除第一边缘节点和第二边缘节点外的其他边缘节点之间可以正常通信,降低了出现BFR-id冲突时对正常通信的影响。

与上述报文转发方法对应,本申请实施例还提供了一种BIER节点,如图9所示,包括处理器91和机器可读存储介质92,机器可读存储介质92存储有能够被处理器91执行的机器可执行指令。处理器91被机器可执行指令促使实现上述图2-图7所示的任一报文转发方法步骤。

与上述报文转发方法对应,本申请实施例还提供了一种机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令。处理器被机器可执行指令促使实现上述图2-图7所示的任一报文转发方法步骤。

与上述报文转发方法对应,本申请实施例还提供了一种计算机程序,该计算机程序被处理器执行实现上述图2-图7所示的任一报文转发方法步骤。

上述机器可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。

上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于报文转发装置、BIER节点、机器可读存储介质和计算机程序实施例而言,由于其基本相似于报文转发方法实施例,所以描述的比较简单,相关之处参见报文转发方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

技术分类

06120113818794