一种数据报文转发的方法及装置与流程

文档序号:19058973发布日期:2019-11-06 01:35阅读:398来源:国知局
一种数据报文转发的方法及装置与流程

本发明涉及通信领域,特别涉及一种数据报文转发的方法及装置。



背景技术:

rfc7432定义的mplsevpn在spe节点上必须感知用户mac条目,这是因为其tpe之间需要相互发布用户mac条目,但是,tpe之间直接建立bgp会话在大型evpn网络中是不实际的,因为tpe数量很多,假设tpe的数量为n,所需bgp会话的数量则为n的二次方。比较实际的做法是,如图1所示,tpe只跟附近的少数几个spe建立bgp会话,而spe之间则两两建立bgp会话。由于spe的数量远远小于tpe的数量,这就大大减少了evpn网络中所需的bgp会话数量。但这同时也使得spe要感知用户mac条目,并且将来自一个tpe的用户mac条目重新发布给其它tpe或spe。

rfc7623定义了evpn业务的pbbevpn形态,所述pbbevpn就采用了图1所示的bgp会话建立方式,可以解决大型层次化l2evpn网络中spe节点上用户mac条目过载的问题,因为pbbevpn的evpn实例分为i组件实例和b组件实例,其中b组件实例中不感知用户mac条目,而所述pbbevpn在spe节点上只需要部署pbbevpn的b组件实例,所述pbbevpn在tpe节点上需要部署i组件和b组件,但是不需要发布用户mac条目,因为pbbevpn的i组件可以在数据面学习用户mac条目及其转发信息。

但是,rfc7432定义的mplsevpn的在imet路由、ead-evi路由和mac/ip分发路由中发布的evpn私网标签均是一种mp2p标签,ldplsp作为evpn单播报文转发的外层隧道也是采用的mp2p标签,而mp2p标签的出口节点(即rfc3031定义的mplsegressnode)无法区分不同入口节点(即rfc3031定义的mplsingressnode)发来的数据报文,这使得出口tpe无法在数据面学习用户mac条目与归属tpe的对应关系,也就无法确定用户mac条目的转发信息。因此,所述mplsevpn的tpe节点必须发布用户mac条目信息,所述spe节点必须感知所有tpe节点上的用户mac条目信息,由于大型evpn网络中tpe数量众多,每个tpe上的用户mac条目也很多,这使得所述mplsevpn面临spe节点用户mac条目过载的危险,目前解决此问题的方法是改用pbbevpn或vxlanoverl3evpn。

现有的pbbevpn的数据报文封装格式为rfc7623中定义的带有802.1ahpbb头的报文格式,但是,原生的802.1ah本身已经很少部署,为了pbbevpn而实现802.1ah成本较高。

现有的在大型层次化l2evpn网络中使spe节点不感知用户mac条目的技术方案,要么需要给报文添加pbb封装,要么需要给报文添加vxlan封装,通过不带pbb头也不带vxlan头的封装使层次化l2evpn网络中spe节点不感知用户mac条目的技术方案在现有技术中还不存在。



技术实现要素:

根据本发明实施例提供的方案解决的技术问题是spe节点mac条目过载。

根据本发明实施例提供的一种数据报文转发的方法,包括:

终结点运营商边缘设备tpe1接收包含标签栈的mpls封装evpn数据报文medp1,其中,所述medp1封装了以太数据报文edp1,所述edp1的源mac为mac1;

所述tpe1根据所述medp1中的标签栈确定所述medp1所属的广播域bd1和远端入口esi的值esi1,其中,所述medp1对应的远端入口esi为将所述edp1封装为medp1的远端tpe2节点接收所述edp1所用的ac所属的esi;

其中,所述tpe1将所述远端入口esi用于以下至少之一用途:

当所述medp1的所述远端入口esi为指定值且所述edp1在所述tpe2节点上为已知单播时,所述tpe1对所述medp1报文进行指定处理;

所述tpe1记录所述远端入口esi1为<bd1,mac1>的目的esi,其中,所述bd1为所述medp1所属的广播域bd,所述<bd1,mac1>的目的esi为所述bd1中目的mac为所述mac1的以太数据报文的目的esi,所述目的esi为用于标识mac1所标识的设备所在的es的esi。

所述tpe1记录所述远端入口tpe2为<bd1,mac1>的目的tpe,其中,所述<bd1,mac1>的目的tpe为所述bd1中目的mac为所述mac1的以太数据报文的目的tpe,所述目的tpe为用于标识mac1所标识的设备所连接的ac的所在的tpe。

优选地,所述tpe1将所述bd1中目的mac与所述mac1相等的以太数据报文转发到所述<bd1,mac1>的目的tpe或目的esi的一个远端邻接tpe节点。

优选地,所述tpe1根据所述medp1中的标签栈所包含的上下文标识信息和远端入口esi标签来确定所述medp1的远端入口esi的值,其中,所述tpe1确定所述标签栈中的上下文标识信息和远端入口esi标签的方法如下:

所述tpe1读取所述medp1标签栈中的当前栈顶标签l;

所述标签l为其标签值为第一指定值的rspl标签或espl标签,则所述标签l以内依次为上下文标识lse和远端入口esi标签,所述上下文标识lse即为所述上下文标识信息;

所述标签l为其标签值为第二指定值的rspl或espl标签,则所述标签l以内紧邻标签为上下文标识lse,所述远端入口esi为0,所述上下文标识lse即为所述上下文标识信息;

所述标签l的标签值为所述tpe1分配的指示其内层紧邻lse为上下文标识lse的标签值,则所述标签l以内依次为上下文标识lse和远端入口esi标签,所述上下文标识lse即为所述上下文标识信息;

所述标签l为所述tpe1分配的标识其本地esix的下游分配方式标签,且所述tpe1已确定所述medp1所属的广播域bd1,则所述标签l即为所述远端入口esi标签,所述esix即为远端入口esi;

所述标签l为所述tpe1分配的标识本地esix的下游分配方式标签,且所述tpe1未确定所述medp1所属的广播域bd1,则所述标签l以内依次为上下文标识lse和远端入口esi标签,所述上下文标识lse即为所述上下文标识信息;

所述标签l为标识mldpp2mplsp或rsvpp2mplsp的下游分配标签,则根据所述标签l获取所述p2mplsp的根节点的标识符作为上下文标识信息,所述标签l以内紧邻的标签以内紧邻的标签为远端入口esi标签;

所述标签l为标识rsvplsp的下游分配方式标签,且所述rsvplsp承载上游分配方式标签,则根据所述标签l获取所述rsvplsp的扩展隧道id作为上下文标识信息,若所述标签l以内紧邻的标签为所述tpe1分配的标识本地esi的下游分配方式标签,则所述标签l以内紧邻的标签以内紧邻的标签为远端入口esi标签。

优选地,所述tpe1根据所述上下文标识信息确定所述远端入口tpe的节点标识符的值,包括:

若所述medp1中包含的下游分配方式gucli标签或值为第二指定值的rspl或espl标签在所述tpe1节点弹出标签栈,且所述tpe1收到的imet路由中的原始路由器ip地址的值与所述上下文标识信息一致,则该imet路由中的原始路由器ip地址的值就是所述入口tpe的节点标识信息;

其中,所述原始路由器ip地址字段的值与所述上下文标识信息一致指的是所述字段值与所述上下文标识信息相等或者所述字段值的指定部分二进制位与所述上下文标识信息的指定部分二进制位按位分别相等。

优选地,所述tpe1根据所述上下文标识信息和所述远端入口esi标签确定所述远端入口esi的值和远端入口tpe的节点标识信息,包括:

若所述tpe1收到的ead-es路由中的esi标签的值与所述远端入口esi标签的值相等,且所述ead-es路由中的路由源节点标识符与所述上下文标识信息一致,则该ead-es路由的nlri中的esi就是所述远端入口esi,该ead-es路由的源节点标识符中的信息就是所述远端入口tpe的标识信息;

其中,所述路由源节点标识符为所述ead-es路由中的标识发布该路由的tpe节点的信息,该信息由该tpe节点在发布该路由时填写,所述路由源节点标识符与上下文标识信息一致指的是所述标识符与所述上下文标识信息相等或者所述标识符的指定部分二进制位与所述上下文标识信息的指定部分二进制位按位分别相等。

优选地,所述tpe1取ead-es路由中的如下信息之一作为该ead-es路由的路由源节点标识符:

所述ead-es路由的下一跳字段的值;

所述ead-es路由的路径属性的值;

所述ead-es路由的发起者标识符originator_id路径属性的值;

所述ead-es路由的原始运营商边缘设备opetlv的值。

优选地,所述tpe1确定所述medp1所属广播域bd1的方法为以下之一:

通过所述medp1的指定入标签确定所属bd1;

通过被所述medp1封装的所述edp1的两层vlantag确定所属bd1;

通过被所述medp1封装的所述edp1的一层vlantag和指定入标签共同确定所属bd1。

根据本发明实施例提供的一种数据报文转发的方法,包括:

终结点运营商边缘设备tpe3从接入电路ac3获取单播以太数据报文edp3,其中,所述ac3属于以太分段标识符esi3且所述ac3绑定到以太虚拟专用网络evpn广播域bd1,所述edp3的目的mac为mac2;

所述tpe3以二元组<所述bd1,所述edp3的目的mac>为键值查找到对应的目的esi4或目的tpe5,并据以进行多协议标签交换mpls封装处理,生成包含本地入口esi标签、上下文标识标签栈元素lse和与目的esi或目的tpe对应的多点到点mp2p出标签的mpls封装evpn数据报文medp3,且所述上下文标识lse携带有源节点标识符的信息;

优选地,所述tpe3不往所述medp3中添加pbb封装或vxlan封装;所述tpe3不将所述bd1中的本地mac条目发布给远端tpe节点。

所述tpe3将所述medp3转发给所述或目的tpe5或所述目的esi4的一个邻接节点tpe4;

其中,所述esi4为此前预先确定的所述bd1内目的mac为所述mac2的以太数据报文的目的esi,所述tpe5为此前预先确定的所述bd1内目的mac为所述mac2的以太数据报文的目的tpe,所述本地入口esi为接收所述edp3的ac3所属的esi3,所述本地入口esi标签为所述esi3的esi标签,所述源节点标识符为发送所述medp3的tpe3节点在所述evpn网络中的全局唯一标识符。

优选地,所述本地入口esi标签由所述tpe3分配,且所述本地入口esi标签为所述esi3对应的上游分配方式esi标签。

优选地,所述上下文标识lse通过如下方式之一标识发送所述medp3的tpe3节点:

所述上下文标识lse的标签值为所述tpe3节点在为所述esi3发布的ead-es路由中携带的源节点标识符的值;

所述上下文标识lse中的除栈底标识以外的指定部分二进制位与所述tpe3节点在为所述esi3发布的ead-es路由中携带的源节点标识符的对应部分二进制位按位分别相等。

优选地,所述与目的tpe对应的mp2p出标签包括以下情况之一:

所述与目的tpe对应的出标签为所述目的tpe节点发来的esi为0的ead-es路由中的下一跳esi标签;

所述与目的tpe对应的出标签为所述目的tpe节点发来的esi为0的ead-evi路由中的nlri中的mpls标签;

所述与目的tpe对应的出标签为从所述目的tpe节点为所述bd1发来的imet路由中获取的下游分配方式标签。

优选地,所述与目的esi对应的mp2p出标签包括以下情况之一:

所述与目的esi对应的出标签为所述目的esi所在的tpe节点为所述目的esi发来的ead-es路由中的下一跳esi标签;

所述与目的esi对应的出标签从所述目的esi所在的tpe节点为所述目的esi发来的ead-evi路由中的nlri中的mpls标签。

优选地,所述medp3中还包括上下文标识预示标签,且所述上下文标识预示标签在所述上下文标识lse的外层,其中,所述上下文标识预示标签表示其内层如果还存在lse,则其中紧邻所述上下文标识预示标签的那个lse为上下文标识lse。

优选地,所述确定所述bd1内目的mac为所述mac2的以太数据报文的目的esi的方法如下:

所述目的esi为静态配置的与mac2绑定的esi;

所述目的esi为根据封装了一个源mac为mac2的以太数据报文的mpls封装evpn数据报文medp4的mpls标签栈确定的esi;

所述目的esi为一条远端mac分发路由中携带的esi,所述mac分发路由的nlri中的mac字段的值为mac2。

优选地,所述tpe3选取ead-es路由中的如下字段之一填写所述路由源节点标识符:

所述ead-es路由的下一跳字段的值;

所述ead-es路由的路径属性的值;

所述ead-es路由的发起人标识符originator_id路径属性的值;

所述ead-es路由的原始运营商边缘设备opetlv的值。

优选地,所述下一跳esi标签为下游分配方式,并且,所述下一跳esi标签在所述ead-es路由的如下之一属性中携带:

所述ead-es路由的nlri中的mpls标签字段的值;

所述ead-es路由的路径属性的值。

优选地,添加所述上下文标识预示标签需要满足以下条件之一:

所述上下文标识预示标签为指定rspl标签;

所述上下文标识预示标签为指定espl标签;

所述上下文标识预示标签的标签值在每平台标签空间中且被所述tpe4节点保留,且所述tpe4节点通过信令通告其支持所述上下文标识预示标签的能力给所述tpe3节点;

所述上下文标识预示标签的标签值在每平台标签空间中且需通过静态配置指定,且所述tpe3节点和所述tpe4节点上指定的所述上下文标识预示标签的标签值相等。

优选地,所述medp3中还包括不低于12位的以太标记标识符eti,所述eti通过两层vlantag传输,且所述eti在本地唯一标识所述medp3所属的广播域bd1。

根据本发明实施例提供的一种路由报文反射的方法,包括:

交换点运营商边缘设备spe1接收tpe1发送的同时携带原始esi标签和下一跳esi标签的ead-es路由,在对所述ead-es路由进行更换下一跳方式的路由反射,重写所述下一跳esi标签而不重写所述原始esi标签。

优选地,重写所述下一跳esi标签所用的新下一跳esi标签,符合如下规则:

所述新下一跳esi标签为下游分配方式的标签,且为所述spe1节点所分配;

所述新下一跳esi标签与原下一跳esi标签在转发面形成一个标签交换操作,其中,新下一跳esi标签为入标签,原下一跳esi标签为出标签。

根据本发明实施例提供的一种数据报文转发的装置,包括:

接收模块,用于接收包含标签栈的mpls封装evpn数据报文medp1,其中,所述medp1封装了以太数据报文edp1,所述edp1的源mac为mac1;

确定模块,用于根据所述medp1中的标签栈确定所述medp1所属的远端入口tpe的节点标识符或远端入口esi的值esi1,其中,所述远端入口tpe为将所述edp1封装为medp1的远端tpe2节点,所述medp1对应的远端入口esi为所述tpe2节点接收所述edp1所用的ac所属的esi;

其中,所述tpe1将所述远端入口esi用于以下至少之一用途:

当所述medp1的所述远端入口esi为指定值且所述edp1在所述tpe2节点上为已知单播时,所述tpe1对所述medp1报文进行指定处理;

所述tpe1记录所述远端入口esi1为<bd1,mac1>的目的esi,其中,所述bd1为所述medp1所属的广播域bd,所述<bd1,mac1>的目的esi为所述bd1中目的mac为所述mac1的以太数据报文的目的esi,所述目的esi为用于标识mac1所标识的设备所在的es的esi。

所述tpe1记录所述远端入口tpe2为<bd1,mac1>的目的tpe,其中,所述<bd1,mac1>的目的tpe为所述bd1中目的mac为所述mac1的以太数据报文的目的tpe,所述目的tpe为用于标识mac1所标识的设备所连接的ac的所在的tpe。

根据本发明实施例提供的一种数据报文转发的装置,包括:

获取模块,用于从接入电路ac3获取单播以太数据报文edp3,其中,所述ac3属于以太分段标识符esi3且所述ac3绑定到以太虚拟专用网络evpn广播域bd1,所述edp3的目的mac为mac2;

封装模块,用于以二元组<所述bd1,所述edp3的目的mac>为键值查找到对应的目的esi4或目的tpe5,并据以进行多协议标签交换mpls封装处理,生成包含本地入口esi标签、上下文标识标签栈元素lse和与目的esi或目的tpe对应的多点到点mp2p出标签的mpls封装evpn数据报文medp3,且所述上下文标识lse携带有源节点标识符的信息;

转发模块,用于将所述medp3转发给所述目的tpe5或所述目的esi4的一个邻接节点tpe4;

其中,所述esi4为此前预先确定的所述bd1内目的mac为所述mac2的以太数据报文的目的esi,所述tpe5为此前预先确定的所述bd1内目的mac为所述mac2的以太数据报文的目的tpe,所述本地入口esi为接收所述edp3的ac3所属的esi3,所述本地入口esi标签为所述esi3的esi标签,所述源节点标识符为发送所述medp3的tpe3节点在所述evpn网络中的全局唯一标识符。

优选地,所述tpe3不往所述medp3中添加pbb封装或vxlan封装;所述tpe3不将所述bd1中的本地mac条目发布给远端tpe节点。

根据本发明实施例提供的一种数据报文转发的设备,所述设备包括:处理器,以及与所述处理器耦接的存储器;所述存储器上存储有可在所述处理器上运行的数据报文转发的程序,所述数据报文转发的程序被所述处理器执行时实现根据本发明实施例提供的数据报文转发的方法的步骤。

根据本发明实施例提供的一种计算机存储介质,存储有数据报文转发的程序,所述数据报文转发的程序被处理器执行时实现根据本发明实施例提供的数据报文转发的方法的步骤。

根据本发明实施例提供的方案,通过在已知单播报文中封装esi标签的方法,使得下游节点在数据面可以对指定远端入口esi的数据报文进行差异化处理,包括学习其源mac与远端入口esi的对应关系,采用本发明优选实施例基于上述方法提供的所述tpe节点,在不采用pbb封装和vxlan封装的前提下,解决了spe需要感知用户mac条目的缺点,避开了pbb封装或vxlan封装对芯片解码的成本压力,采用本发明实施例定义的所述spe节点,使得tpe之间不再需要发布ead-evi路由,进一步减少了所述spe节点上感知ead-evi路由所带来的内存和处理器压力。

附图说明

图1是现有技术提供的相关技术中rfc7623定义的pbbevpn业务的拓扑图;

图2是本发明实施例提供的一种数据报文转发的方法流程图;

图3是本发明实施例提供的一种数据报文转发的装置示意图;

图4是根据本发明实施例提供的报文封装格式示意图;

图5是根据本发明实施例提供的tpe节点单独应用的组网图;

图6是根据本发明实施例的报文的标签栈1和标签栈2的各层lse中的标签的取值的示意图;

图7是根据本发明实施例提供的报文的标签栈3和标签栈4的各层lse中的标签的取值的示意图;

图8是根据本发明实施例提供的报文的标签栈5和标签栈6的各层lse中的标签的取值的示意图;

图9是根据本发明实施例提供的报文的标签栈7和标签栈8的各层lse中的标签的取值的示意图;

图10是根据本发明实施例提供的报文的标签栈9和标签栈10的各层lse中的标签的取值的示意图;

图11是根据本发明实施例提供的报文的标签栈11和标签栈12的各层lse中的标签的取值的示意图;

图12是根据本发明实施例提供的报文的标签栈13和标签栈14的各层lse中的标签的取值的示意图;

图13是根据本发明实施例提供的单归es和双归es混合接入evpn网络的组网图;

图14是根据本发明实施例提供的报文的标签栈15和标签栈16的各层lse中的标签的取值的示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

rfc6073定义了t-pe和s-pe的概念,本公开沿用了所述t-pe和s-pe概念,但rfc6073针对的是传统l2vpn业务,本公开描述的是evpn业务,为了加以区别,本公开将t-pe称为tpe,将s-pe称为spe。

rfc7432定义了es(ethernetsegment,以太网分段)和esi(ethernetsegmentidentifier,以太网分段标识符)的概念,其中,es分为单归属(single-homed)es和多归属(multi-homed)es,esi为多归属es的标识符。在本公开中,当某个es与某个tpe相邻时,称该tpe为该es以及标识该es的esi的邻接tpe,否则称为其非邻接tpe。

rfc7432中定义了esi标签,所述esi标签用于esi过滤,所述esi过滤仅针对bum报文,已知单播报文不能封装esi标签,原因在于,目前evpn单播报文只能封装下游分配方式的标签,若单播报文中封装了下游分配方式的esi标签,则所述单播报文在经过optionb跨域节点时,所述optionb跨域节点会将所述单播报文在相应esi的多个邻接tpe节点之间进行负载均衡,导致所述下游分配esi标签可能会到达错误的下游。已知单播报文中不能携带esi标签的限制,使得下游节点在数据面不能获知所述已知单播报文的远端入口esi,也就无法对指定远端入口esi的已知单播报文进行差异化处理,比如,无法将指定远端入口esi的已知单播报文镜像到指定服务器或进行qos处理,比如,无法在数据面学习所述已知单播报文的源mac与其远端入口esi的对应关系。

rfc3032定义了mpls封装的标签栈编码,pbbevpn和mplsevpn也采用了所述标签栈编码,rfc3032定义的标签栈由一个lse(labelstackentry,标签栈元素,简称lse)序列所组成,序列中的每个lse含有32个二进制位,其中,标签值占20位,栈底标识占1位,生存时间ttl占8位,流量类别tc占3位。

rfc7432section6中定义了eti(eti,以太网标记标识符)概念,并基于eti定义了三种业务界面,即vlan-based业务界面、vlan-bundle业务界面、vlan-awarebundle业务界面,其中,vlan-awarebundle业务界面中定义了bd(broadcastdomain,广播域)概念,并采用eti标识指定evi中的一个广播域,但仅凭所述eti无法区别分属不同evi的两个广播域,因为不同evi中可以使用同一eti分别标识一个广播域;此外,bd概念在vlan-bundle业务界面和vlan-based业务界面中也适用,在这两种业务界面中,每个evi(evpninstance,evpn实例,简称为evi)中只有一个bd,此时bd等价于evi。

在draft-ietf-bess-evpn-usage-09中的section6.4和section7.4中定义了vlan-awarebundle业务界面下的evpn路由发布规范,在其中的section6.2和section7.2定义了vlan-based业务界面下的evpn路由发布规范。

rfc5331定义了mpls标签的下游分配方式和上游分配方式,其中,在mplsevpn中esi标签既可以采用下游分配方式又可以采用上游分配方式,相应控制面和转发面在rfc7432中都有描述。同时,rfc5331还定义了被上游分配的标签概念和上下文标签概念,其中被上游分配的标签表示由fec的上游节点负责分配的标签。一般情况下,被上游分配的标签也可以称为上游分配方式标签或者上游分配标签,被下游分配的标签也可以称为下游分配方式标签或下游分配标签。此外,rfc5331还定义了上下文标签(contextlabel)概念,所述上下文标签为其内层紧邻的上游分配方式标签提供标签空间标识信息;一般地,上下文标签也可以称为上下文标识标签,因此,上下文标签所在的lse也可以称为上下文标识lse,其中,上下文标签本身也可以是一种上游分配标签。特别地,rfc5331的section8中还定义了一种特殊的上下文标签,即局域网上下文标签(contextlabelonlans),并且认为所述局域网上下文标签也是一种上游分配方式标签。

rfc3031定义了每平台标签空间的概念,这是一种下游分配方式的标签空间,mpls标签栈中的标签,缺省在每平台标签空间中查找ilm表,所述ilm表也是rfc3031定义的,同时还有nhlfe和fec等概念,ilm表中可以记录对应标签的上下文信息,一种常见的上下文信息就是该标签所属的fec信息。

rfc7274定义了xl(extensionlabel,扩展标签)和espl(extendedspecial-purposelabel,扩展特殊目的标签)概念,同时定义了与espl相对比的rspl(regularspecial-purposelabel,常规特殊目的标签)概念,其中xl是标签值为15的mpls标签,espl是xl内层紧跟xl的标签,xl与其相邻的espl共同组成一个复合标签(compoundlabel)。

除xl、rspl和espl三种标签外,为描述方便起见,本说明书还定义了以下14种标签类别,分别是irel(ingress-replicationesilabel,入口复制esi标签,简称为irel)、irml(ingress-replicationmulticastlabel,入口复制组播标签,简称为irml)、ldpl(ldplabel,ldp标签,简称为ldpl)、dael(downstream-assignedesilabel,下游分配方式esi标签,简称为dael)、daeel(downstream-assignedead-eviroute’slabel,下游分配方式es-evi路由标签,简称为daeel)、uael(upstream-assignedesilabel,上游分配方式esi标签,简称为uael)、uaml(upstream-assignedmulticastlabel,上游分配方式组播标签,简称为uaml)、mldpl(multicastldplabel,mldp标签,简称为mldpl)、gucl(globaluniquecontextlabel,全局唯一上下文标签,简称为gucl)、nhel(nexthopesilabel,下一跳esi标签,简称为nhel)和rsvpl(rsvplabel,rsvp标签,简称为rsvpl)、gucli(guclindicator,gucl标签预示符,简称gucli)、dpi(double-popindicator,标签双重弹出操作预示符,简称dpi)、daoil(downstream-assignedoperationindicatinglabel,下游分配方式的标签操作预示标签,简称daoil);

其中,具体地,所述irel标签为将所述irel标签压栈的节点上收到的ead-es路由中携带的下游分配方式原始esi标签,为描述方使起见,本公开给所述irel标签的fec的值进行命名,所述fec的值的名称为所述ead-es路由的nlri中的esi的值的名称;

其中,具体地,所述dael标签为在已知单播转发流程中被压栈的irel标签;

其中,具体地,所述uael标签为将所述uael标签压栈的节点上为该节点上的本地esi分配的上游分配方式esi标签,为描述方使起见,本公开给所述uael标签的fec的值进行命名,所述fec的值的名称为为对应esi的值的名称;

其中,具体地,所述irml标签为将所述irml标签压栈的节点上收到的imet路由中携带的入口复制模式的私网标签,为描述方使起见,本公开给所述irml标签的fec的值进行命名,所述fec的值的名称为所述imet路由所述的bd名称与所述imet路由的nlri中的原始路由器ip地址字段的值的名称的拼接;

其中,具体地,所述uaml标签为将所述uaml标签压栈的节点上为该节点上的本地bd分配的上游分配方式私网标签,为描述方使起见,本公开给所述uaml标签的fec的值进行命名,所述fec的值的名称为该bd的名称与该节点的名称的拼接;

其中,具体地,所述daml标签为将所述daml标签压栈的节点上收到的imet路由中携带的下游分配方式的私网标签,为描述方使起见,本公开给所述daml标签的fec的值进行命名,所述fec的值的名称为所述imet路由所述的bd名称与所述imet路由的nlri中的原始路由器ip地址字段的值的名称的拼接,同一tpe节点为同一bd分配的irml标签和daml标签可以是同一标签值,也可以是不同标签值,当两者是同一标签值时,可以使用imet路由的同一路由属性来发布;

其中,具体地,所述daeel标签为将所述daeel标签压栈的节点从其下游节点收到的ead-evi路由中携带的标签(具体就是所述ead-evi路由的nlri中的mpls标签),为描述方使起见,本公开给所述daeel标签的fec的值进行命名,所述fec的值的名称为所述ead-evi路由的nlri中的esi的值的名称与所述ead-evi路由所属的bd的名称的拼接;

其中,具体地,除特殊说明之处以外,所述gucl标签为将所述gucl标签压栈的节点上的节点标识符的低20位;

其中,具体地,所述nhel标签为将所述nhel标签压栈的节点上收到的ead-es路由中携带的下游分配方式下一跳esi标签,为描述方使起见,本公开给所述nhel标签的fec的值进行命名,所述fec的值的名称为所述ead-es路由的nlri中的esi的值的名称;

其中,具体地,所述daoil标签为将所述daoil标签压栈的节点上收到的ead-es路由中携带的下游分配方式标签,daoil标签是一种下游分配方式的dpi标签或者gucli标签,所述dpi和所述gucli在后面说明;

其中,rsvpl为将所述rsvpl标签压栈的节点上的rsvp-te隧道出标签;

其中,ldpl为将所述ldpl标签压栈的节点上的ldplsp出标签;

其中,rsvpl、ldpl、daeel、nhel、daml、irml等标签在经过spe节点时标签值会发生变化。

其中,irel/irml/daml/dael特指其它节点分配给将它们压入标签栈的节点的irel/irml/daml/dael标签,uael/uaml特指将它们压入标签栈的节点上分配的上游分配方式uael/uaml标签。

本公开采用的数据报文封装格式如图4中目标封装所示,其中包括一个mpls标签栈,为描述方便起见,本公开为各节点发送的mpls封装evpn数据报文中所述标签栈中的每层lse都进行了命名,具体地,每层lse都使用其中包含的标签的类别作为自身在所属标签栈中的名称;

为描述方便起见,本公开为各优选实施例中的所述每层lse中的标签的取值也进行了命名,具体地,除特殊说明之处以外,标签值的名称由三部分组成,三部分之间由下划线分隔,第一部分是该标签所归属的fec的名称,第二部分是分配该标签的节点名称(特殊地,gucl标签值名称的第二部分为gu,表示全局唯一),第三部分是该标签所在的lse的名称。

本说明书公开了一种具体的双重弹出操作,即通过与所述双重弹出操作对应的内层esi标签和外层gucl标签共同查找到对应的esi值的操作,基于该方法,本说明书公开了一种在数据面学习mac条目与目的esi对应关系的方法。

为了实现所述spe节点不感知用户mac条目,本说明书公开了一种在数据面通过接收mpls封装evpn数据报文来学习mac条目与其目的esi对应关系的方法,所述mac条目从所述evpn数据报文的源mac中获取,所述目的esi从同一报文的标签栈中的标签的fec信息获取。

本发明公开了一种evpn路由扩展,使得在evpn路由(包括imet路由、ead-evi路由、ead-es路由和mac/ip分发路由等)中可以携带gucl标签,所述gucl标签是unls标签空间中的标签,它是tpe节点在所属evpn网络中的全局唯一标识符。

相应地,本说明书公开了一种双重弹出预示机制,即在双重弹出操作对应的两层相邻标签的紧邻的外层标签的上下文信息中指示在弹出所述外层标签后紧接着要进行双重弹出操作,起这种指示作用的标签在本说明书中称为dpi(double-popindicator,双重弹出预示,简称为dpi)标签。

本说明书公开了一种具体的双重弹出操作,即通过与所述双重弹出操作对应的两层相邻标签中的内层esi标签和外层gucl标签共同查找到对应的esi值的操作,基于该方法,本说明书公开了一种通过给报文添加esi标签和gucl标签使得目的tpe节点可以按所述mac学习方法学习mac条目与其目的esi的对应关系的方法。所述gucl标签可以通过evpn路由携带的bgp路径属性来发布,也可以包含在evpn路由的源节点标识符字段的指定二进制位中与所述源节点标识符一起发布。

基于所述双重弹出预示机制和gucl标签携带方法,本说明书定义了一种通过在数据报文中同时封装所述gucl标签、uael标签和dpi标签来使得远端tpe节点可以通过mpls封装的已知单播evpn数据报文学习到mac条目与其目的tpe节点或目的esi的对应关系的方法。

本说明书公开了一种gucli标签(guclindicator,全局唯一上下文标签预识符),在将所述gucli标签弹出标签栈的节点上,该标签预示其内层紧邻标签x要在gucl标签空间中查找ilm表。所述gucl标签空间与rfc5331section8中的局域网上下文标签(contextlabelonlans)所属的标签空间一样,其中的每个标签都是所在节点所在的mpls网络中的某个节点的节点标识符,其区别在于:第一,所述gucl标签空间是所在节点上的所有接口共享的,而不是每个接口有不同的gucl标签空间;第二,所述gucl标签空间中的标签(例如所述标签x)的上下文信息中包括与该标签对应的节点的全局唯一标识信息,而不是只在lan内唯一的节点标识信息;第三,所述gucl标签空间中的标签(例如所述标签x)不一定预示其内层紧邻标签为unls标签空间中的标签,因为所述gucl标签空间中的标签有可能作为栈底(参见优选实施例8)。

本发明公开了一种ead-es路由扩展,使得一条ead-es路由中可以同时携带uael和dael两种esi标签;本发明还公开了另一种ead-es路由扩展,使得在ead-es路由中能够区分下一跳esi标签和原始esi标签,能够区分ead-es路由的下一跳esi标签和esi标签是ead-es路由在存在spe的evpn网络中能够用来作为到目的tpe的完整转发信息的前提条件之一,因为原始esi标签是无法在spe节点上暴露为栈顶标签的。

值得注意的是,同一ead-es路由中的原始esi标签和下一跳esi标签可以是同一标签,也可以是不同标签;其中,原始esi标签可能是dael,也可以是uael,也可以同时携带dael和uael作为原始esi标签,但下一跳esi标签只能是下游分配方式的标签;当原始esi标签为dael且与下一跳esi标签是同一标签时,两者一般也需要使用不同字段来携带,因为spe上对这两个标签的处理是不同的,但是,在确定evpn网络中不存在spe节点时,原始esi标签也可以与下一跳esi标签是同一字段。

针对esi为0的ac,本发明还公开了一种对同一远端tpe1节点发来的不同的mpls封装evpn数据报文分别进行不同的mac学习流程的方法:具体是,对于tpe1转发过来的其从esi为0的ac上收到的数据报文,学习mac条目与目的tpe的对应关系,对于tpe1转发过来的其从esi不为0的ac上收到的数据报文,学习mac条目与目的esi的对应关系。tpe1通过在转发其从esi为0的ac上收到的数据报文时在其标签栈中添加gucli标签来使得目的tpe上能够将该报文识别出来。

基于以上方法,本发明公开了一种evpn业务tpe节点,所述tpe节点可以与spe节点组合使用,也可以在没有spe节点的evpn网络中使用,也可以在只使用spe节点的p节点能力的情况下使用。当所述tpe节点只使用spe节点的p节点能力时,本公开也称这些spe节点为所述tpe节点的evpn业务p节点。值得注意的是,作为所述tpe节点的evpn业务p节点的spe节点,对于其它业务(比如传统mplsl3vpn业务)可能仍然是spe节点。

本发明还公开了一种spe节点,所述spe节点在收到携带下一跳esi标签的ead-es路由并对其进行重新发布时,若重新发布时将修改其下一跳为表示所述spe节点自身的ip地址,则所述spe节点将同时修改所述ead-es路由的下一跳esi标签,而对原始esi标签保持不变。

值得注意的是,采用所述spe节点,使得在存在spe节点的evpn网络中,tpe节点可以不再发布ead-evi路由,所述ead-es路由将取代所述ead-evi路由用于获取到相应esi的邻接tpe节点的完整转发信息(这意味着,nhel标签将取代daeel标签,参见优选实施例4);这样一来,进一步减轻了spe节点上的路由管理压力。

实施例1

图2是本发明实施例提供的一种数据报文转发的方法流程图,如图2所示,包括:

步骤s101:终结点运营商边缘设备tpe1接收包含标签栈的mpls封装evpn数据报文medp1,其中,所述medp1封装了以太数据报文edp1,所述edp1的源mac为mac1;

步骤s102:所述tpe1根据所述medp1中的标签栈确定所述medp1所属的远端入口tpe的节点标识符或远端入口esi的值esi1,其中,所述远端入口tpe为将所述edp1封装为medp1的远端tpe2节点,所述medp1对应的远端入口esi为所述tpe2节点接收所述edp1所用的ac所属的esi;

其中,所述tpe1将所述远端入口esi用于以下至少之一用途:

当所述medp1的所述远端入口esi为指定值且所述edp1在所述tpe2节点上为已知单播时,所述tpe1对所述medp1报文进行指定处理;

所述tpe1记录所述远端入口esi1为<bd1,mac1>的目的esi,其中,所述bd1为所述medp1所属的广播域bd,所述<bd1,mac1>的目的esi为所述bd1中目的mac为所述mac1的以太数据报文的目的esi,所述目的esi为用于标识mac1所标识的设备所在的es的esi。

所述tpe1记录所述远端入口tpe2为<bd1,mac1>的目的tpe,其中,所述<bd1,mac1>的目的tpe为所述bd1中目的mac为所述mac1的以太数据报文的目的tpe,所述目的tpe为用于标识mac1所标识的设备所连接的ac的所在的tpe。

其中,所述tpe1将所述bd1中目的mac与所述mac1相等的以太数据报文转发到所述<bd1,mac1>的目的tpe或目的esi的一个远端邻接tpe节点。

其中,所述tpe1根据所述medp1中的标签栈所包含的上下文标识信息和远端入口esi标签来确定所述medp1的远端入口esi的值,其中,所述tpe1确定所述标签栈中的上下文标识信息和远端入口esi标签的方法如下:所述tpe1读取所述medp1标签栈中的当前栈顶标签l;所述标签l为其标签值为第一指定值的rspl标签或espl标签,则所述标签l以内依次为上下文标识lse和远端入口esi标签,所述上下文标识lse即为所述上下文标识信息;所述标签l为其标签值为第二指定值的rspl或espl标签,则所述标签l以内紧邻标签为上下文标识lse,所述远端入口esi为0,所述上下文标识lse即为所述上下文标识信息;所述标签l的标签值为所述tpe1分配的指示其内层紧邻lse为上下文标识lse的标签值,则所述标签l(即所述daoil标签)以内依次为上下文标识lse和远端入口esi标签,所述上下文标识lse即为所述上下文标识信息;所述标签l为所述tpe1分配的标识其本地esix的下游分配方式标签,且所述tpe1已确定所述medp1所属的广播域bd1,则所述标签l(即所述irel标签)即为所述远端入口esi标签,所述esix即为远端入口esi;所述标签l为所述tpe1分配的标识本地esix的下游分配方式标签,且所述tpe1未确定所述medp1所属的广播域bd1,则所述标签l(即所述nhel标签)以内依次为上下文标识lse和远端入口esi标签,所述上下文标识lse即为所述上下文标识信息;所述标签l为标识mldpp2mplsp或rsvpp2mplsp的下游分配标签,则根据所述标签l获取所述p2mplsp的根节点的标识符作为上下文标识信息,所述标签l以内紧邻的标签以内紧邻的标签为远端入口esi标签;所述标签l为标识rsvplsp的下游分配方式标签,且所述rsvplsp承载上游分配方式标签,则根据所述标签l获取所述rsvplsp的扩展隧道id作为上下文标识信息,若所述标签l以内紧邻的标签为所述tpe1分配的标识本地esi的下游分配方式标签(即所述nhel标签),则所述标签l以内紧邻的标签以内紧邻的标签为远端入口esi标签。

其中,所述tpe1根据所述上下文标识信息确定所述远端入口tpe的节点标识符的值,包括:若所述medp1中包含的下游分配方式gucli标签或值为第二指定值的rspl或espl标签在所述tpe1节点弹出标签栈,且所述tpe1收到的imet路由中的原始路由器ip地址的值与所述上下文标识信息一致,则该imet路由中的原始路由器ip地址的值就是所述入口tpe的节点标识信息;其中,所述原始路由器ip地址字段的值与所述上下文标识信息一致指的是所述字段值与所述上下文标识信息相等或者所述字段值的指定部分二进制位与所述上下文标识信息的指定部分二进制位按位分别相等。

其中,所述tpe1根据所述上下文标识信息和所述远端入口esi标签确定所述远端入口esi的值和远端入口tpe的节点标识信息,包括:若所述tpe1收到的ead-es路由中的esi标签的值与所述远端入口esi标签的值相等,且所述ead-es路由中的路由源节点标识符与所述上下文标识信息一致,则该ead-es路由的nlri中的esi就是所述远端入口esi,该ead-es路由的源节点标识符中的信息就是所述远端入口tpe的标识信息;其中,所述路由源节点标识符为所述ead-es路由中的标识发布该路由的tpe节点的信息,该信息由该tpe节点在发布该路由时填写,所述路由源节点标识符与上下文标识信息一致指的是所述标识符与所述上下文标识信息相等或者所述标识符的指定部分二进制位与所述上下文标识信息的指定部分二进制位按位分别相等。

具体得说,所述tpe1取ead-es路由中的如下信息之一作为该ead-es路由的路由源节点标识符:所述ead-es路由的下一跳字段的值;所述ead-es路由的路径属性的值;所述ead-es路由的发起者标识符originator_id路径属性的值;所述ead-es路由的原始运营商边缘设备opetlv的值。

具体地说,所述tpe1确定所述medp1所属广播域bd1的方法为以下之一:通过所述medp1的指定入标签确定所属bd1(参见优选实施例1);通过被所述medp1封装的所述edp1的两层vlantag确定所属bd1(参见优选实施例9);通过被所述medp1封装的所述edp1的一层vlantag和指定入标签共同确定所属bd1。

实施例2

本发明实施例还提供了一种数据报文转发的方法,包括:

终结点运营商边缘设备tpe3从接入电路ac3获取单播以太数据报文edp3,其中,所述ac3属于以太分段标识符esi3且所述ac3绑定到以太虚拟专用网络evpn广播域bd1,所述edp3的目的mac为mac2;

所述tpe3以二元组<所述bd1,所述edp3的目的mac>为键值查找到对应的目的esi4或目的tpe5,并据以进行多协议标签交换mpls封装处理,生成包含本地入口esi标签、上下文标识标签栈元素lse和与目的esi或目的tpe对应的多点到点mp2p出标签的mpls封装evpn数据报文medp3,且所述上下文标识lse携带有源节点标识符的信息;

所述tpe3将所述medp3转发给所述目的tpe5或所述目的esi4的一个邻接节点tpe4;

其中,所述esi4为此前预先确定的所述bd1内目的mac为所述mac2的以太数据报文的目的esi,所述tpe5为此前预先确定的所述bd1内目的mac为所述mac2的以太数据报文的目的tpe,所述本地入口esi为接收所述edp3的ac3所属的esi3,所述本地入口esi标签为所述esi3的esi标签,所述源节点标识符为发送所述medp3的tpe3节点在所述evpn网络中的全局唯一标识符。

优选地,所述tpe3不将所述bd1中的本地mac条目发布给远端tpe节点,所述tpe3不往所述medp3中添加pbb封装或vxlan封装。

其中,所述本地入口esi标签由所述tpe3分配,且所述本地入口esi标签为所述esi3对应的上游分配方式esi标签。

具体地说,所述上下文标识lse通过如下方式之一标识发送所述medp3的tpe3节点:所述上下文标识lse的标签值为所述tpe3节点在为所述esi3发布的ead-es路由中携带的源节点标识符的值;所述上下文标识lse中的除栈底标识以外的指定部分二进制位与所述tpe3节点在为所述esi3发布的ead-es路由中携带的源节点标识符的对应部分二进制位按位分别相等。

其中,所述与目的tpe对应的mp2p出标签包括以下情况之一:所述与目的tpe对应的出标签为所述目的tpe节点发来的esi为0的ead-es路由中的下一跳esi标签;所述与目的tpe对应的出标签为所述目的tpe节点发来的esi为0的ead-evi路由中的nlri中的mpls标签;所述与目的tpe对应的出标签为从所述目的tpe节点为所述bd1发来的imet路由中获取的下游分配方式标签。

其中,所述与目的esi对应的mp2p出标签包括以下情况之一:所述与目的esi对应的出标签为所述目的esi所在的tpe节点为所述目的esi发来的ead-es路由中的下一跳esi标签;所述与目的esi对应的出标签从所述目的esi所在的tpe节点为所述目的esi发来的ead-evi路由中的nlri中的mpls标签。

优选地,所述medp3中还包括上下文标识预示标签,且所述上下文标识预示标签在所述上下文标识lse的外层,其中,所述上下文标识预示标签表示其内层如果还存在lse,则其中紧邻所述上下文标识预示标签的那个lse为上下文标识lse。

具体地说,所述确定所述bd1内目的mac为所述mac2的以太数据报文的目的esi的方法如下:所述目的esi为静态配置的与mac2绑定的esi;所述目的esi为根据封装了一个源mac为mac2的以太数据报文的mpls封装evpn数据报文medp4的mpls标签栈确定的esi;所述目的esi为一条远端mac分发路由中携带的esi,所述mac分发路由的nlri中的mac字段的值为mac2。

具体地说,所述tpe3选取ead-es路由中的如下字段之一填写所述路由源节点标识符:所述ead-es路由的下一跳字段的值;所述ead-es路由的路径属性的值;所述ead-es路由的发起人标识符originator_id路径属性的值;所述ead-es路由的原始运营商边缘设备opetlv的值。

其中,所述下一跳esi标签为下游分配方式,并且,所述下一跳esi标签在所述ead-es路由的如下之一属性中携带:所述ead-es路由的nlri中的mpls标签字段的值;所述ead-es路由的路径属性的值。

具体地说,添加所述上下文标识预示标签需要满足以下条件之一:所述上下文标识预示标签为指定rspl标签;所述上下文标识预示标签为指定espl标签;所述上下文标识预示标签的标签值在每平台标签空间中且被所述tpe4节点保留,且所述tpe4节点通过信令通告其支持所述上下文标识预示标签的能力给所述tpe3节点;所述上下文标识预示标签的标签值在每平台标签空间中且需通过静态配置指定,且所述tpe3节点和所述tpe4节点上指定的所述上下文标识预示标签的标签值相等(即所述daoil标签)。

可选地,所述medp3中还包括不低于12位的以太标记标识符eti,所述eti通过两层vlantag传输,且所述eti在本地唯一标识所述medp3所属的广播域bd1。

实施例3

本发明实施例还提供了一种路由报文转发的方法,包括:

交换点运营商边缘设备spe1接收tpe1发送的同时携带原始esi标签和下一跳esi标签的ead-es路由,在对所述ead-es路由进行更换下一跳方式的路由反射,重写所述下一跳esi标签而不重写所述原始esi标签。

其中,重写所述下一跳esi标签所用的新下一跳esi标签,符合如下规则:所述新下一跳esi标签为下游分配方式的标签,且为所述spe1节点所分配;所述新下一跳esi标签与原下一跳esi标签在转发面形成一个标签交换操作,其中,新下一跳esi标签为入标签,原下一跳esi标签为出标签。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例4

图3是本发明实施例提供的一种数据报文转发的装置示意图,如图3所示,接收模块201,用于接收包含标签栈的mpls封装evpn数据报文medp1,其中,所述medp1封装了以太数据报文edp1,所述edp1的源mac为mac1;确定模块202,用于根据所述medp1中的标签栈确定所述medp1所属的远端入口tpe的节点标识符或远端入口esi的值esi1,其中,所述远端入口tpe为将所述edp1封装为medp1的远端tpe2节点,所述medp1对应的远端入口esi为所述tpe2节点接收所述edp1所用的ac所属的esi;其中,所述tpe1将所述远端入口esi用于以下至少之一用途:当所述medp1的所述远端入口esi为指定值且所述edp1在所述tpe2节点上为已知单播时,所述tpe1对所述medp1报文进行指定处理;所述tpe1记录所述远端入口esi1为<bd1,mac1>的目的esi,其中,所述bd1为所述medp1所属的广播域bd,所述<bd1,mac1>的目的esi为所述bd1中目的mac为所述mac1的以太数据报文的目的esi,所述目的esi为用于标识mac1所标识的设备所在的es的esi。

所述tpe1记录所述远端入口tpe2为<bd1,mac1>的目的tpe,其中,所述<bd1,mac1>的目的tpe为所述bd1中目的mac为所述mac1的以太数据报文的目的tpe,所述目的tpe为用于标识mac1所标识的设备所连接的ac的所在的tpe。

实施例5

本发明实施例还提供了一种数据报文转发的装置,包括:获取模块,用于从接入电路ac3获取单播以太数据报文edp3,其中,所述ac3属于以太分段标识符esi3且所述ac3绑定到以太虚拟专用网络evpn广播域bd1,所述edp3的目的mac为mac2封装模块,用于以二元组<所述bd1,所述edp3的目的mac>为键值查找到对应的目的esi4或目的tpe5,并据以进行多协议标签交换mpls封装处理,生成包含本地入口esi标签、上下文标识标签栈元素lse和与目的esi或目的tpe对应的多点到点mp2p出标签的mpls封装evpn数据报文medp3,且所述上下文标识lse携带有源节点标识符的信息;转发模块,用于将所述medp3转发给所述目的tpe5或所述目的esi4的一个邻接节点tpe4;其中,所述esi4为此前预先确定的所述bd1内目的mac为所述mac2的以太数据报文的目的esi,所述tpe5为此前预先确定的所述bd1内目的mac为所述mac2的以太数据报文的目的tpe,所述本地入口esi为接收所述edp3的ac3所属的esi3,所述本地入口esi标签为所述esi3的esi标签,所述源节点标识符为发送所述medp3的tpe3节点在所述evpn网络中的全局唯一标识符。

实施例6

本发明实施例还提供了一种数据报文转发的设备,所述设备包括:处理器,以及与所述处理器耦接的存储器;所述存储器上存储有可在所述处理器上运行的数据报文转发的程序,所述数据报文转发的程序被所述处理器执行时实现根据本发明实施例还提供的数据报文转发的方法的步骤。

实施例7

本发明实施例还提供了一种计算机存储介质,存储有数据报文转发的程序,所述数据报文转发的程序被处理器执行时实现本发明实施例还提供的数据报文转发的方法的步骤。

优选实施例1

下面就结合图5对所述使mplsevpn核心spe节点不感知用户mac的方法和装置(系统)的技术方案的tpe节点的实施作进一步的详细描述:

建立如图5所示mplsevpn网络,包括ce节点、tpe节点和p节点,bum报文转发采用入口复制模式,psn隧道采用ldplsp;其中,ce1与tpe1通过esi1上的ac1连接,ce2与tpe2通过esi2上的ac2连接,不失一般性,考察其中一个evpn实例evi2000的一个广播域bd1中ce1与ce2之间经过tpe1和tpe2进行通信的过程,不失一般性,只考虑ce1请求ce2的arp以及ce2对ce1回复arp这一回合交互过程中的tpe1和tpe2上的转发情况,其中,ac1、ac2均归属于广播域bd1。

为描述方便起见,不失一般性,除特殊说明之处以外,本说明书各个优选实施例的evpn网络的部署均附加特定约束,这些约束由所述evpn网络的管理员通过调整各节点上的配置人为保证,具体地,这些约束为:

第一,各tpe/spe节点的节点标识符为单播可路由ip地址,并且只凭各tpe/spe节点的节点标识符的后20位就能够在所述evpn网络中唯一标识该tpe/spe节点;第二,各tpe/spe的节点标识符同时作为:ldp和rsvp-te的lsrid,bgp的路由器id,bgp会话的tcp会话的源ip地址,该节点发布bgp路由时填写的表示该节点自身的下一跳地址;以该节点为根的p2mplsp的fec中的根节点标识符;以该节点为出口lsr的ldplsp的fec中的ip地址;以该节点为出口lsr的rsvp-te隧道的fec中的ipv4/ipv6隧道端点地址;以该节点为入口lsr的rsvp-te隧道的fec中的扩展隧道id;该节点为tpe节点时,该tpe节点发布的imet路由的原始路由器ip地址(originatingrouter'sipaddress)字段的值;该节点为tpe节点时,该tpe节点发布的evpn路由的opetlv中远端端点子tlv(remoteendpointsub-tlv)的值。

为描述方便起见,不失一般性,除特殊说明之处以外,本说明书各个优选实施例中每个tpe节点均为每个本地bd分配两个独立的标签,分别记为l1和l2,其中,标签l1作为该bd对应的imet路由中携带(如果需要的话)的irml或daml标签,标签l2作为该tpe节点为该bd发布的ead-evi路由(如果发布的话)中的daeel标签,同时,每个tpe节点均为每个本地bd分配一个上游分配方式的标签l3,作为该bd对应的imet路由中携带(如果携带的话)的uaml标签,同时,每个tpe节点将自己的节点标识符的低20位作为自己的gucl标签(如果需要的话)的值。

值得注意的是,这些约束是为了便于描述本公开的技术方案细节,并不构成对本发明保护范围的不当限定,根据本公开的内容,本领域的一般技术人员很容易知道在突破这些约束的情况下,如何实现本公开的技术方案,这一点,在后面各优选实施例中不再一一重复说明,但每个优选实施例会说明自己发布的evpn路由类型。

值得注意的是,图中p1、p2和p3节点同时作为bgp路由反射器rr节点,这些rr节点不修改所反射的evpn路由的下一跳。

除特殊说明之处以外,所述mplsevpn网络中各tpe节点按rfc7432定义的vlan-based业务界面实现mplsevpn业务,由于vlan-based业务界面中一个evi中只有一个广播域bd,因此,只要确定所述evi2000,所述bd1就随之确定了。

与rfc7432不同,各tpe不通过evpn路由发布自己从本地ac上学习到的用户mac。

与rfc7432不同,各tpe上对于本地不邻接的esi也需要分配(采用下游分配方式)esi标签并且发布ead-es路由,但不需要发布ead-evi路由;值得注意的是,对于本地不邻接的esix,只有当x至少有一条远端发来的ead-es路由导入本地某个evpn实例中时,才应当发布与esix对应的ead-es路由。

为描述方便起见,本说明书中各优选实施例对标签栈取值情况的描述,采取只描述具体到优选实施例和具体节点的具体标签取值的方式,而不再进行抽象的取值规则描述,但由于在实施例中描述了取值规则,在标签类别名称定义中描述了每种标签类别的取值规则,结合所述两种规则、所述具体标签取值情况(尤其是标签的类别名称)的描述和现有evpn技术,本领域的一般技术人员很容易从中提取出具有一般性的标签取值规则。

tpe1转发给tpe2的bum报文(比如来自ce1的arp请求报文)的标签栈记为标签栈1,标签栈1中从内到外有3层lse,依次是irel、irml和ldpl,其中,各层lse中的标签的取值如图6中标签栈1(图中内层标签在上,外层标签在下,图7、图8、图9、图10、图11、图12、图14也是如此,不再赘述)所示:

其中,所述esi1_tpe2_irel为tpe2为esi1分配的入口复制方式esi标签,此标签由tpe2通过ead-es路由发布给tpe1,tpe2_p_ldpl为tpe1到tpe2的ldplsp的出标签,bd1tpe2_tpe2_irml为tpe2为bd1分配的irml标签,所述irml标签即imet路由中携带的下游分配方式标签;其中,无论tpe1上ac1在esi1上是df还是非df角色,都要封装所述esi1_tpe2_irel标签;

值得注意是的,rfc7432明确要求当ac1为df角色时,将从ac1收到的bum报文转发到远端节点时不封装esi标签,这使得在数据面学习mac条目与其目的esi的对应关系成为不可能;

其中,由于“tpe上对于本地不邻接的esi也需要分配esi标签并且发布ead-es路由”的存在,按rfc7432定义的evpn转发流程tpe1给tpe2发bum包时本来并不会进入esi标签压栈流程,在本优选实施例修改后的mplsevpn控制面的作用下,则会进入此流程,因为tpe2给tpe1发布了与esi1对应的ead-es路由。

其中,tpe2通过所述arp请求报文中的irml标签确定报文所属的bd。

与rfc7432不同,tpe2转发给tpe1的已知单播报文(比如来自ce2的arp应答报文)需要将tpe1为该报文的本地入口esi(即esi2)所分配(采用下游分配方式)的esi标签压栈,其标签栈记为标签栈2,标签栈2中从内到外依次包括dael、daeel和ldpl三层标签,其中,各标签的取值如图6中标签栈2所示:

其中,esi2_tpe1_dael标签即tpe1对于esi2发布的dael标签,esi2即所述arpreply报文的入口ac所属的esi;值得注意的是,因为tpe2上到esi1的ead-evi路由有多条负载均衡转发信息,每条负载均衡转发信息通往esi1的一个邻接tpe节点,标签栈2中所述dael标签的取值要与负载均衡选择的ead-evi路由转发信息一致,因为本例中负载均衡选择了到tpe1的ead-evi路由的转发信息,所以标签栈2中所述dael标签取值选择所述esi2_tpe1_dael,其中,tpe1是esi1的一个邻接tpe节点。

其中,esi1bd1_tpe1_daeel标签即fec为<esi1,bd1>的daeel标签,因此,esi1bd1_tpe1_daeel即tpe1对于二元组<esi1,bd1>发布的ead-evi路由中的标签,其中esi1即所述arprequest报文的esi1_tpe2_irel标签对应的ilm表项所属的esi;值得注意的是,这意味着在收到所述arprequest报文时,需要在数据面对该arprequest报文进行源mac(本例中为m1)学习,从中获得m1与esi1的对应关系,将esi1作为m1的目的esi。

其中,所述mac学习分为两个步骤:第一步(以下各实施例中简称为mac学习第一步),从作为mpls封装evpn数据报文的所述bum报文(本例中为所述arp请求报文)中获取所述arp请求报文的远端入口esi的值;第二步(除特殊说明之处以外,各优选实施例中mac学习的第二步均相同),将该esi记录为所述bd1中所述bum报文的源mac标识的主机的目的esi。

其中,tpe1_p_ldpl标签即从tpe2到tpe1的ldplsp的出标签,其中,所述tpe1由负载均衡流程在esi1的各个邻接tpe中选出。

在所述ce1给ce2发送arp请求报文直到ce1收到ce2回复的arp应答报文之后,ce1就可以给ce2发送普通单播以太数据报文edp1(目的mac为m2),由于tpe1在收到所述arp应答报文进也会进行与tpe2上同样的mac学习流程(即从irel标签和内层源mac获取mac条目与其目的esi的对应关系),所述edp1到所述tpe1节点时,已经是一个已知单播报文,所述edp1根据与tpe2相同的逻辑,将所述edp1转发给所述esi2的一个邻接pe节点;

每个tpe在从网络侧收到任何合法的mpls封装evpn数据报文时,无论该数据报文是bum报文还是已知单播报文,均要进行所述mac学习流程,所学习到的mac条目与其目的esi的对应关系,均可用于相应广播域中相应目的mac的以太数据报文的转发;

值得注意的是,源节点标识符可以通过opetlv来发布,也可以通过originator_id属性或下一跳属性发布,也可以通过bgp扩展团体属性或路径属性来发布。

值得一提的是,本优选实施例的psn隧道不仅可以使用ldplsp,也可以使用rsvp隧道、静态te隧道、bgp-lulsp、sr-mpls等mpls隧道或lsp;并且,本优选实施例为了描述方便,只以ce1先主动给ce2的通信为例进行说明,实际上,对于ce2先主动给ce1通信的情况,其arp交互过程与本优选实施例中的arp交互过程是对称的,转发原理是相同的,可以按相同的转发原理进行实现;并且,本优选实施例定义的mac学习过程和数据转发过程也不局限于arp报文,普通的以太数据报文都是可以的,包括bum报文和已知单播报文,其中bum报文参照所述arp请求报文的流程,已知单播报文参照所述arp应签报文的流程。

值得一提的是,本公开各优选实施例采用的数据报文封装格式及其与pbbevpn的对比,如图2所示,其中,目标封装即为本公开所采用的封装,它不包括802.1ahpbb头,并且除标签栈内容有所不同之外,它与rfc7432定义的mplsevpn数据封装格式具有完全相同的结构,值得注意的是,它既不包括pbb封装,也不包括vxlan封装。

优选实施例2

优选实施例1定义的tpe节点存在如下缺陷:它只能在图5所示不含spe节点的拓扑中使用,在图1所示含有spe节点的拓扑中则无法使用。

其原因就在于,当tpe2给tpe1发送的arp应答报文经过spe1节点时,spe1节点会将其在esi1的两个邻接节点tpe1和tpe3之间负载均衡,虽然所述arp应答报文中封装的esi2_tpe1_dael是tpe1分配的下游分配方式esi标签,但是,所述arp应答报文却可能被spe1节点负载均衡到所述tpe3节点上,因而造成在tpe3上的解包错误。

此外,优选实施例1要求各tpe为本地没有邻接关系的esi分配下游分配方式的esi标签,这加重了tpe的控制面负担和标签消耗。

为解决这些问题,本优选实施例采用上游分配方式esi标签取代标签栈2中的所述dael标签。

本优选实施例采用增强tpe节点的方法来使spe节点不感知用户mac条目,各spe节点按draft-heitz-bess-evpn-option-b(以下简称[evpnoptionb])实现。

值得注意的是,所述spe节点在改变ead-es路由的下一跳并重新发布时,不会改变所述ead-es路由中的esi标签的值,无论所述esi标签是上游分配方式还是下游分配方式。

下面就结合图1将图5中的p节点替换为所述spe节点,成为图1)对所述使mplsevpn核心spe节点不感知用户mac的方法和装置(系统)的技术方案的tpe节点的实施作进一步的详细描述:

除特殊说明之处以外,本优选实施例与优选实施例1相同。

除特殊说明之处以外,每个tpe均在自己发布的ead-es路由中指明自己所发布的esi标签是上游分配方式标签,还是下游分配方式标签。特殊地,一条ead-es路由可以同时携带一个上游分配方式esi标签和一个下游分配方式esi标签,此时,需要指明哪一个是上游分配方式esi标签。后面各优选实施例均是如此,不再赘述。

与优选实施例1不同,本优选实施例中,tpe1转发给tpe2的bum报文的标签栈记为标签栈3,所述标签栈3中自内而外依次包括uael、gucl、rspl、irml和ldpl等5层标签,其中,所述标签栈3中各层lse中的标签取值如图7中标签栈3所示:

其中,所述esi1_tpe1_uael为tpe1给esi1分配的uael标签,esi1即所述arprequest报文的入口ac所属的esi;

其中,tpe1unls_gu_gucl标签即tpe1在图1所示evpn网络中的全局唯一标识符,tpe1通过gucl扩展团体属性在每条ead-es路由中发布该标签;

其中,所述bd1tpe2_spe1_irml为tpe2给bd1分配的irml标签经过spe重新进行标签映射之后的irml标签,所述spe1_p_ldpl为从tpe1到spe1的ldplsp的出标签;

其中,所述dpi_rspl是一个用于给弹出所述dpi_rspl标签的节点预示其内层紧邻两层标签(即uael标签和gucl标签)为双重弹出操作的rspl标签(标签值小于16的标签),其标签值为第一指定值;

其中,tpe2在收到所述arp请求报文时需要进行mac学习,所述mac学习的第一步与优选实施例1中的mac学习第一步有所不同,具体流程如下:tpe2通过标签值为第一指定值的rspl标签知道弹出rspl标签后要进行双重弹出操作,在evpn上下文中,认为双重弹出操作的两个标签分别是内层uael标签和外层gucl标签,然后,查找tpe2收到的ead-es路由中上游分配方式esi标签与所述uael标签相等且gucl标签与所述gucl标签相等的那条ead-es路由,该ead-es路由的nlri中的esi字段的值就是所述arp请求报文的远端入口esi的值。

值得注意的是,在tpe2收到的所述arp请求报文中,所述gucl标签所在的lse就是所述上下文标识lse,所述uael标签就是所述远端入口esi标签,所述rspl标签就是所述上下文标识预示标签。

本优选实施例中,tpe2转发给tpe1的已知单播报文的标签栈记为标签栈4,所述标签栈4自内而外依次为uael、gucl、rspl、daeel和ldpl等5层lse,其中,各层lse中的标签的取值如图7中标签栈4所示:

其中,esi2_tpe2_uael标签即tpe2为esi2分配的上游分配方式esi标签,esi2即所述arpreply报文的入口ac所属的esi;

其中,tpe2unls_gu_gucl标签即tpe2在图1所示evpn网络中的全局唯一标识符,tpe2通过gucl扩展团体属性在ead-es路由中发布该标签;

其中,dpi_rspl同标签栈3中的dpi_rspl;

其中,esi1bd1_spe2_daeel即本节点收到的与<esi1,bd1>对应的daeel标签,这一点是与优选实施例1中的daeel标签相同的,不同的是,本优选实施例中tpe2收到的所述daeel标签是由spe2分配的。

其中,spe2_p_ldpl标签即从tpe2到spe2的ldplsp的出标签。

在所述ce1给ce2发送arp请求报文直到ce1收到ce2回复的arp应答报文之后,ce1就可以给ce2发送普通单播以太数据报文edp1(目的mac为m2)了,由于tpe1在收到所述arp应答报文时也会进行mac学习流程,所述edp1到所述tpe1节点时,已经是一个已知单播报文,所述edp1根据与tpe2相同的逻辑,将所述edp1转发给所述esi2的一个邻接pe节点;

值得注意的是,在tpe1收到的所述arp应答报文中,所述gucl标签所在的lse就是所述上下文标识lse,所述uael标签就是所述远端入口esi标签,所述rspl标签就是所述上下文标识预示标签。

tpe1收到所述arp应答报文时进行mac学习的流程与tpe2收到所述arp请求报文时进行mac学习的流程相比,在确定所述mpls封装evpn数据报文的远端入口esi的值上面有如下不同:

tpe1从dpi_rspl标签知道其内层紧邻标签为gucl标签,gucl标签内层紧邻标签为uael标签,所述gucl标签和所述uael标签均不能在所述tpe1的每平台标签空间中查ilm表,而是按如下规则找到两者共同对应的esi:携带了值为所述uael标签的上游分配方式esi标签和值为所述gucl标签的gucl扩展团体属性的ead-es路由的nlri中的esi值即为两者共同对应的esi值;

每个tpe在从网络侧收到任何合法的mpls封装evpn数据报文时,无论该数据报文是bum报文还是已知单播报文,均要进行所述mac学习流程,所学习到的mac条目与其目的esi的对应关系,均可用于相应广播域中相应目的mac的以太数据报文的转发;

值得注意的是,在入口复制模式的bum报文转发中采用上游分配方式esi标签,是现有技术中所没有的,现有技术认为入口复制模式应当采用下游分配方式esi标签,而在本优选实施例中,恰恰是通过在入口复制模式的bum报文中采用上游分配方式esi标签避免了每个esi的非邻接tpe不得不发布对应的ead-es路由(否则所述非邻接tpe无法在数据面学习以该esi为目的esi的mac条目)。

值得注意的是,通过在已知单播报文转发中封装uael标签,使得无论spe1将tpe2发来的所述arp应答报文转发给tpe1还是tpe3,都是能正常转发给ce1的。

值得注意的是,同一tpe对同一本地esi分配的uael和dael的标签值可以相等,但即使两者相等,本质上仍然是不同的标签;进一步地,当tpe的实现能保证本地任何esi的uael和dael的标签值均相等时,两者甚至可以通过同一字段携带,但本公开并不建议这么做;一般地,uael和dael应当通过两个字段来携带,两者可以在同一bgp路由属性中,也可以在不同路由属性中。

值得注意的是,gucl标签可以通过bgp扩展团体属性或路径属性来发布,也可以通过节点标识符的低20位来发布。所述gucl扩展团体属性是一种新定义的bgp扩展团体属性,用来发布gucl标签,这只是发布gucl标签的方法之一。

值得注意的是,当esi为single-active模式时,mac学习可以同时记录mac条目的目的esi和目的tpe,并根据目的tpe选择指定ead-evi路由中的转发信息,这样一来,可以使得从某个主机发来的报文与发往该主机的报文经过相同的转发路径(只是方向不同);当esi为all-active模式时,也可如此处理,但从用户角度,可能没有这样做的必要。

优选实施例3

优选实施例2虽然解决了优选实施例1中的tpe不能与spe节点配合使用的问题,但是,rfc7274要求优先采用espl而不是rspl,因为rspl只有16个,是很稀缺的资源。

为解决这些问题,本优选实施例采用espl标签取代rspl标签。

除特殊说明之处以外,本优选实施例与优选实施例2相同。

与优选实施例2不同,本优选实施例中,evi实例的控制面和转发面都采用vlan-awarebundle业务界面,这意味着,每个bd由二元组<所述bd所属的evi实例,与所述bd对应的eti>来标识。

与优选实施例2不同,本优选实施例中,tpe1转发给tpe2的bum报文的标签栈记为标签栈5,所述标签栈5与标签栈3完全一样,tpe2转发给tpe1的已知单播报文的标签栈记为标签栈6,所述标签栈6是将标签栈5中的dpi_rspl标签替换为dpi_espl标签及其外层的xl标签之后得到的,所述标签栈5和标签栈6的各lse中标签取值的详情如图8中所示;

其中,所述xl标签即标签值为15的标签,dpi_espl即为标签值为指定值tbd1的espl标签,在tpe1上,当栈顶标签值为tbd1且为espl标签时,tpe1就知道该标签弹出后要执行一个双重弹出操作,因为是在evpn上下文中,tpe1还知道所述双重弹出操作对应的内层标签为esi标签外层标签为gucl标签。

当tpe1收到所述arp应答报文时,除所述双重弹出预示标签为espl而不是rspl外,其它处理流程(包括mac学习流程)均与优选实施例2中相同。

值得注意的是,所述rspl/espl标签就是所述上下文标识预示标签。

值得注意的是,所述espl/rspl标签还可以用于现有tpe节点和本发明定义的tpe节点的混合组网,具体方法如下:

若tpe30是现有tpe节点,则tpe30会通过bgp路由发布mac条目并且不需要其它节点对自己发送的mpls封装evpn数据报文进行数据面的mac学习;反之,若tpe31是本发明定义的tpe节点,则它优选不通过bgp路由发布mac条目,因而需要其它其点进行数据面的mac学习;当两者混合组网时,所述tpe31节点要给所述tpe30节点通过bgp路由发布mac条目,但是,不给其它由本发明定义的tpe节点通过bgp路由发布mac条目,并且,所述tpe31节点只对携带指定rspl/espl标签的mpls封装evpn数据报文进行数据面的mac学习,因而所述tpe30节点发来的mpls封装evpn数据报文由于未携带指定rspl/espl标签,所述tpe31节点就不会对这些报文进行数据面的mac学习。

这种混合组网能力使得用本发明定义的tpe节点逐一取代现有正在运行evpn业务的tpe节点时,可以在一定程度上保持所述正在运行的evpn业务的连续性。

优选实施例4

优选实施例3虽然解决了优选实施例1和优选实施例2存在的一些问题,但它与那两个优选实施例一样,仍然存在一些可以改进的地方。

一方面,采用espl标签使得标签栈中标签层次过多,加重了转发面负担,另一方面,spe节点虽然不感知用户mac条目,但仍然要感知ead-evi路由,假如有m个esi,每个esi加入n个广播域,那么,spe上将有m乘以n条ead-evi路由。

为了解决这些问题,本优选实施例去除了rspl/espl标签,并采用ead-es路由取代ead-evi路由(因而不再需要发布ead-evi路由),相应地,需要定义一种新的spe节点。

下面就结合图1对所述使mplsevpn核心spe节点不感知用户mac的方法和装置(系统)的技术方案的tpe节点的实施作进一步的详细描述:

除特殊说明之处以外,本优选实施例与优选实施例3相同。

与优选实施例3不同,本优选实施例采用vlan-awarebundl业务界面转发数据报文,并采用vlan-awarebundle业务界面发布imet路由,但是,与rfc7432中的vlan-awarebundle业务界面不同,本优选实施例不发布ead-evi路由,并且采用vlan-based业务界面发布ead-es路由。

与优选实施例3相同,本优选实施例中,每个bd虽然仍然可以由二元组<所述bd所属的evi实例,与所述bd对应的eti>来标识。但是,与优选实施例3不同,本优选实施例中,同一tpe上不同evi中的标识广播域的eti的值互不相等,因此,仅仅通过eti也可以直接标识所述bd。

与优选实施例3不同,本优选实施例中,tpe1转发给tpe2的bum报文的标签栈记为标签栈7,所述标签栈7由标签栈5去掉rspl得到,其中各lse的标签的取值如图9中标签栈7所示。

其中,所述tpe2在分配所述bd1tpe2_tpe2_irml标签给tpe1时,在该标签的ilm表中写入了表示双重弹出预示的上下文信息,使得该标签同时成为一个下游分配方式的dpi标签,并且,所述tpe2在发布所述irml标签的imet路由中携带了dpi扩展团体属性,所述tpe1通过该扩展团体属性知道所述irml同时作为dpi标签,因此,不再向报文中添加rspl标签或espl标签;

其中,除dpi标签类型不同之外,所述tpe2在接收到所述arp请求报文以后进行的mac学习流程与优选实施例3是一致的,只是本优选实施例中的广播域为vlan-awarebundle用户界面下的广播域。

本优选实施例中,tpe2转发给tpe1的已知单播报文的标签栈记为标签栈8,所述标签栈8自内而外依次包括uael、gucl、nhel和ldpl等4层lse,所述标签栈8由标签栈6去掉espl标签和xl标签并将daeel标签替换为nhel标签得到,其中各lse的标签的取值如图9中标签栈8所示:

其中,所述esi1_spe2_nhel为tpe2收到的esi1的ead-es路由中所带的下一跳esi标签,具体地,所述esi1_spe2_nhel标签由spe2分配。所述ead-es路由由tpe1发布给spe1,再由spe1发布给spe2,再由spe2发布给tpe2,中间spe1和spe2均会为该路由重新分配下一跳esi标签,并且将下一跳改写为自己以后再重新发布。

其中,tpe1在接收到所述arp应答报文以后,通过报文中携带的最外两层vlantag可以直接找到对应的广播域bd1,而不需要所述nhel标签的参与。

值得注意的是,所述dpi标签和nhel标签就是所述上下文标识预示标签。所述dpi扩展团体属性是通过定义一种新的bgp扩展团体属性来通知某个标签具有dpi能力的方法,但dpi能力的通知方法并不局限于此。

结合图1对所述使mplsevpn核心spe节点不感知用户mac的方法和装置(系统)的技术方案的spe节点的实施作进一步的详细描述:

除特殊说明之处以外,所述mplsevpn网络中各tpe节点按本优选实施例中定义的tpe节点实现,各spe节点按draft-heitz-bess-evpn-option-b(以下简称[evpnoptionb])实现。

本优选实施例中的spe节点能够识别所述tpe节点发出的同时携带原始esi标签和下一跳esi标签的ead-es路由,在对所述ead-es路由进行更换下一跳方式的路由反射,重写所述下一跳esi标签而不重写所述原始esi标签,并且,重写所述下一跳esi标签所用的新下一跳esi标签,符合如下规则:

所述新下一跳esi标签为下游分配方式的标签,且为所述spe1节点所分配;

所述新下一跳esi标签与原下一跳esi标签在转发面形成一个标签交换操作,其中,新下一跳esi标签为入标签,原下一跳esi标签为出标签。

优选实施例5

在优选实施例4中,gucl标签用于携带入口tpe的节点标识信息到出口tpe,但是,部分mpls隧道(比如rsvp-te或p2mplsp)的上下文信息中自带隧道的入口lsr信息,evpn的入口tpe与evpn外层隧道的入口lsr可以选用同一ip地址来标识,此时,不再需要通过gucl标签携带入口tpe的节点标识信息。

本优选实施例通过mpls隧道的上下文信息来间接获取入口tpe的节点标识信息,以进一步减少标签栈的长度。

除特殊说明之处以外,本优选实施例与优选实施例1相同。

与优选实施例1不同,本优选实施例采用mldp隧道来对bum报文进行复制。

与优选实施例1不同,本优选实施例中,tpe1转发给tpe2的bum报文的标签栈记为标签栈9,所述标签栈9中自内而外依次包括uael、uaml、mldpl等3层lse,其中,各层lse的标签的取值如图10中标签栈9所示:

其中,所述esi1_tpe1_uael同标签栈7;

其中,所述bd1tpe1_tpe1_uaml是tpe1为bd1分配的uaml标签;

其中,所述tpe1bd1_p(tpe2)_mldpl为tpe1与tpe2之间的p设备为以tpe1为根以bd1为opaquevalue的mldpp2mplsp分配的下游分配方式出标签;

值得注意的是,在tpe2收到的所述arp请求报文中,所述mldpl标签所在的lse就是所述上下文标识lse,所述uael标签就是所述远端入口esi标签。

与优选实施例1不同,tpe2转发给tpe1的已知单播报文的标签栈记为标签栈10,所述标签栈10中自内而外依次包括uael、nhel和rsvpl等3层lse,其中,各层lse的标签的取值如图10中标签栈10所示:

其中,所述esi2_tpe2_uael和esi1_tpe1_nhel同标签栈8;

其中,所述tpe1_p_rsvpl为tpe2与tpe1之间的p设备为从tpe2到tpe1的rsvp-te隧道分配的下游分配方式出标签;

其中,所述标签栈6是将标签栈5中的dpi_rspl标签替换为dpi_espl标签及其外层的xl标签之后得到的;

其中,所述xl标签即标签值为15的标签,dpi_espl即为标签值为指定值tbd1的espl标签,在tpe1上,当栈顶标签值为tbd1且为espl标签时,tpe1就知道该标签弹出后要执行一个双重弹出操作,因为是在evpn上下文中,tpe1还知道所述双重弹出操作对应的内层标签为esi标签外层标签为gucl标签。

值得注意的是,在tpe1收到的所述arp应答报文中,所述rsvpl标签所在的lse就是所述上下文标识lse,所述uael标签就是所述远端入口esi标签。

当tpe1收到所述arp应答报文时,除所述双重弹出预示标签为espl而不是rspl之外,其它处理流程(包括mac学习流程)均与优选实施例2中相同。

优选实施例6

优选实施例5中的方案只适用于图5所示不含spe节点的evpn网络,不适用于图1所示含有spe节点的evpn网络,因为,在图1所示evpn网络中,rsvp-te隧道只能从tpe2建到spe2,tpe1收到的rsvpl标签实际上是从spe1建到tpe1的rsvp-te隧道的标签,所述rsvpl标签的上下文信息中实际上包含的是spe1的节点标识信息,而不是tpe2的节点标识信息,因此,所述tpe1节点无法对所述arp应答报文进行正确的mac学习流程。

本优选实施例通过在已知单播报文中增加下游分配方式操作预示标签daoil来解决上述问题。

除特殊说明之处以外,本优选实施例与优选实施例5相同。

与优选实施例5不同,本优选实施例将图5中的p节点替换为spe节点,成为图1所示evpn网络结构。

与优选实施例5不同,本优选实施例中,tpe1转发给tpe2的bum报文的标签栈记为标签栈11,所述标签栈11中自内而外依次包括uael、uaml、mldpl等3层lse,其中,各层lse的标签的取值如图11中标签栈11所示:

其中,所述esi1_tpe1_uael和bd1tpe1_tpe1_uaml同标签栈9;

其中,所述tpe1bd1_p(spe1)_mldpl为tpe1与spe1之间的p/spe设备为以tpe1为根的mldpp2mplsp分配的下游分配方式出标签;本例中所述mldpl由spe1分配;

值得注意的是,虽然tpe2收到的mldpl标签是tpe2为以spe2为根的mldpp2mplsp分配的入标签,其上下文信息中并不包括tpe1的节点标识信息,但是却包括tpe2收到的uaml标签的上下文信息,根据所述上下文信息和uaml标签能够得知所述uaml标签的fec信息,所述fec信息中包括tpe1的节点标识信息,以所述节点标识信息和tpe2收到的uael标签可以获取所述esi1的值。

值得注意的是,所述esi1_tpe1_uael在从tpe1到tpe2的过程中不会被交换。

值得注意的是,在tpe2收到的所述arp请求报文中,所述mldpl标签所在的lse就是所述上下文标识lse,所述uael标签就是所述远端入口esi标签。

与优选实施例5不同,tpe2转发给tpe1的已知单播报文的标签栈记为标签栈12,所述标签栈12中自内而外依次包括uael、gucl、daoil、nhel和rsvpl等5层lse,其中,各层lse的标签的取值如图11中标签栈12所示:

其中,所述esi2_tpe2_uael、tpe2unls_tpe2_gucl和esi2_spe2_nhel同标签栈8;

其中,所述spe2_p_rsvpl为tpe2与spe2之间的p设备为从tpe2到spe2的rsvp-te隧道分配的下游分配方式出标签;

其中,所述dpi_tpe1_daoil为所述tpe1上分配的预示双重弹出操作的daoil标签;所述tpe1收到以所述dpi_tpe1_daoil为当前栈顶标签的mpls封装evpn数据报文后,就认为所述dpi_tpe1_daoil标签以内紧邻两层标签需要进行双重弹出操作;

值得注意的是,为了防止由于spe1将所述已知单播报文负载均衡到tpe2节点而导致所述tpe2节点由于不能识别所述dpi_tpe1_daoil标签而将报文丢弃,同一esi的所有邻接pe上分配的双重弹出预示daoil标签必须相同,这一点可以通过静态配置所述双重弹出预示daoil标签来保证,也可以通过由一个中心节点统一负责所有tpe节点上的双重弹出预示daoil标签来保证。

值得注意的是,所述daoil标签的标签值也可以在每平台标签空间中且被所述各tpe节点保留(保留为相同的标签值),且所述各tpe节点通过信令通告其支持所述daoil标签的能力给其它tpe节点。

值得注意的是,所述daoil标签就是所述上下文标识预示标签。

优选实施例7

优选实施例4虽然通过去除dpi标签减少了标签栈的长度,但是,由于缺少dpi标签,它只能支持携带gucl标签和uael标签的标签栈格式,当两个远端tpe一个携带gucl标签和uael标签,一个不携带gucl标签和uael标签时,它就无法区分处理了。

本优选实施例通过引入dacl标签来解决此问题。

下面就结合图1对所述使mplsevpn核心spe节点不感知用户mac的方法和装置(系统)的技术方案的tpe节点的实施作进一步的详细描述:

除特殊说明之处以外,本优选实施例与优选实施例4相同。

与优选实施例1不同,本优选实施例中,tpe1转发给tpe2的bum报文的标签栈记为标签栈13,所述标签栈13为将标签栈7中的gucl标签替换为dacl标签得到,其中各lse的标签的取值如图12中标签栈13所示:

其中,所述tpe1unls_tpe2_dacl为所述tpe2为标识tpe1节点上的上游分配邻居标签空间而分配的下游分配方式标签;

值得注意的是,每个tpe要为每个远端tpe分配一个所述dacl标签,并且,同一esi的各个邻接tpe上为同一远端tpe分配的所述dacl标签必须相等,这可以通过静态配置所述dacl标签来保证。

值得注意的是,每个tpe要将自己分配的每个dacl标签通知给对应的远端tpe;

其中,tpe2在接收到所述arp请求报文以后,通过报文中携带的tpe1unls_tpe2_dacl可以获得tpe1的unls标签空间的标识信息,然后用esi1_tpe1_uael在所述标签空间中查ilm表得到esi1的值。

值得注意的是,在tpe2收到的所述arp请求报文中,所述dacl标签所在的lse就是所述上下文标识lse,所述uael标签就是所述远端入口esi标签。

与优选实施例1不同,本优选实施例中,tpe2转发给tpe1的已知单播报文的标签栈记为标签栈14,所述标签栈14为将标签栈8中的gucl标签替换为dacl标签得到,其中各lse的标签的取值如图12中标签栈14所示:

其中,所述dacl标签与标签栈13中的dacl标签有相同的含义,只是对应的节点不同。

值得注意的是,在tpe1收到的所述arp应答报文中,所述dacl标签所在的lse就是所述上下文标识lse,所述uael标签就是所述远端入口esi标签。

值得注意的是,所述dacl标签可以通过定义新的bgp路由类型来发布,也可以通过在现有bgp路由中携带新的bgp路由属性来发布。

优选实施例8

优选实施例1-7都只考虑了所有ac全部绑定有效esi(值不为0)的情况,当evpn网络中存在单归属ac时,由于单归属ac的esi全部为0,也没有对应的esi标签,无法完全不变地通过上述方法来进行mac学习,实际上,从单归属ac收到以太数据报文并以mpls封装的evpn数据报文的形式发到远端tpe节点上后,在远端tpe节点上必须学习mac条目与其目的tpe节点的对应关系,而不是学习mac与esi的对应关系,因为esi为0并不真正代表一个es,各个tpe上esi为0的es之间也不属于同一es。

本优选实施例在图1的基础上添加两条单归属ac及其对应的ce节点,成为图13,然后基于图13来描述存在单归ac时的mac学习流程。

除特殊说明之处以外,本优选实施例与优选实施例3相同。

除考察ce1与ce2之间的arp请求/应答交互之外,本优选实施例还考察ce7与ce6之间的arp请求/应答交互,由于ce1与ce2之间的arp请求/应答交互流程与优选实施例3完全相同,除特殊说明之处以外,本节所述的arp请求/应答报文均是指ce7与ce6之间交互的arp请求/应答报文。

值得注意的是,在tpe2收到的所述arp请求报文中,所述gucl标签所在的lse就是所述上下文标识lse。

与优选实施例3不同,本优选实施例中,tpe1从esi为0的ac收到并转发给tpe2的bum报文的标签栈记为标签栈15,所述标签栈15自内而外包括gucl、espl、xl、irml、ldpl等5层lse,其中,各层lse中的标签的取值如图14中标签栈15所示:

其中,unlsi_espl是值为tbd3的espl标签,在将所述unlsi_espl标签弹出标签栈的节点上(本例中即tpe2),它表示其内层紧邻标签是全局unls标签空间中的标签,在evpn上下文中,进一步表示它是一个gucl标签;然后,tpe2将所述gucl标签与tpe2收到的所述bd1中的imet路由中携带的gucl标签进行比较,两者相等的imet路由中的源始路由器ip地址就是所述arp应该报文的源mac对应的目的tpe节点的节点标识信息。

与优选实施例3不同,本优选实施例中,tpe2从esi为0的ac收到并转发给tpe1的已知单播报文的标签栈记为标签栈16,所述标签栈16自内而外包括gucl、espl、xl、daml、ldpl等5层lse,其中,各层lse中的标签的取值如图14中标签栈16所示:

其中,gucl、espl、ldpl取值规则与标签栈15中相同,只是对应的节点不同;

其中,所述bd1tpe1_tpe1_daml标签为tpe1节点为bd1分配的daml标签,该标签根据所述arp应答报文的目的mac(即mac1)以及从mac学习流程中得到的mac1的目的tpe(即tpe1)从tpe1节点为bd1发来的imet路由中得到。

值得注意的是,在tpe1收到的所述arp应答报文中,所述gucl标签所在的lse就是所述上下文标识lse。

本优选实施例对于从esi不为0的ac收到的报文的转发流程和mac学习流程与优选实施例3相同,接收端通过espl/rspl标签的不同取值来区分两种报文,所述espl标签就是所述上下文标识预示标签。

值得注意的是,也可以通过发布esi为0的ead-es路由和ead-evi路由来按照与前面各优选实施例基本一致的方法来处理单归属ac,此时,需要注意如下问题:第一,不同tpe发布的esi为0的ead-es和ead-evi路由必须携带不同的rd,这是为了避免在spe节点上这些路由形成保护关系(比如负荷分担关系),同时,也避免了spe节点将来自不同tpe的esi为0的ead-es(或ead-evi)路由中的标签(比如下一跳esi标签)修改为该spe节点分配的同一下游分配方式标签,同理,同一tpe节点对不同广播域bd发布的esi为0的ead-evi路由也必须携带不同rd;第二,tpe在收到bd1对应的esi为0的ead-evi或ead-es路由时,这些路由之间不能形成保护关系(比如负荷分担关系);第三,当mac条目中没有记录有效的目的esi时,tpe在转发evpn数据报文时根据mac条目与目的tpe的对应关系选择对应的esi为0的ead-evi路由中的daeel标签及其转发信息,或者,选择对应的esi为0的ead-es路由中的nhel标签及其转发信息。值得注意的是,采用这种方法,接收端tpe需要通过获取到的远端入口esi值是否为0来决定是记录mac条目与目的esi的对应关系,还是记录mac条目与目的tpe的对应关系。

值得注意的是,当源节点标识符为单播ipv4地址时,所述gucl标签所在的lse作为一种上下文标识lse可以整体等价于源节点标识符,其判定方法是:所述lse中除栈底标识以外的所有二进制位组成数值p,所述源节点标识符中除单播/组播标志之外的所有二进制位组成数值q,若p与q相等,则说所述lse等价于源节点标识符,或者说所述lse与所述源节点标识符中的节点标识信息一致。

值得注意的是,对于目的esi为0的mac条目,从原始路由器ip地址字段与所述mac条目的目的tpe相等的imet路由选择转发信息,这一做法,还可以应用于如下场景:所述tpe发布mac分发路由到路由反射器rr节点而不是spe节点,但是仍然发布ead-es、ead-evi、imet路由到spe节点,所述tpe接收mac分发路由但不使用所述mac分发路由中的标签和下一跳信息,只使用所述mac分发路由中的esi信息或原始节点标识符信息(比如opetlv的值)来选择其它类型的evpn路由(比如ead-evi路由或imet路由)中的信息作为转发信息。采用所述做法,也可以使得spe节点上不感知用户mac条目(取而代之的是,另一个rr节点感知用户mac条目,但rr节点不转发数据流量,两者分别承担了流量压力和路由压力),同时,tpe节点还不用进行数据面的mac学习,前提是能建立一个路由反射网络。

值得注意的是,所述gucl标签也可以用于优化rfc6074定义的vpls自动发现。所述vpls自动发现的控制面是两个过程:第一步先用bgp发现要建立的pw,第二步再用ldp建立所发现的pw。采用gucl标签,在改进后的第一步中就可以同时完成pw的发现和建立过程,因而所述第二步也就不再需要了。其方法为:给每个vpls实例分配一个标签,称为vpls标签,所述vpls标签在rfc6074定义的自动发现路由中发布,则二元组<本地gucl标签,远端vpls标签>组成一个复合标签,称为pw远端复合标签,同理,二元组<远端gucl标签,本地vpls标签>组成一个复合标签,称为pw本地复合标签,用所述pw远端复合标签取代原来第二步中的从ldp会话获取的pw远端标签,用所述pw本地复合标签取代原来在ldp会话中发布的pw本地标签,pw也就得以建立了。

值得注意的是,也可以用所述优化rfc6074定义的vpls自动发现过程的方法去优化rfc4761定义的vpls自动发现过程,其方法为:以所述rfc4761中定义的vpls自动发现路由的标签基址labelbase作为远端vpls标签,以rfc4761中定义的本地veid构造一个相同值的标签取代所述gucl标签作为内层出标签,两者作为复合标签共同取代pw出标签。采用这种方式改进的vpls自动发现过程,不再需要基于标签块(一段连续标签)的标签分配方式,因而可以简化实现和提高标签资源利用率。

优选实施例9

除特殊说明之处以外,本优选实施例与优选实施例1相同。

与优选实施例4不同,本优选实施例中,标识ac所属的bd的eti为24位宽,并且通过两层vlan标记(vlan-tag)在evpn数据报文中携带。

与优选实施例4不同,本优选实施例中,tpe2上通过两层vlan-tag而不是一层vlan-tag来确定所述arp请求报文所属的bd。

值得注意的是,所述标识bd的eti在evpn数据报文中也可以体现为具有大于12位vid(vlanid,vlan标识符)值的单层扩展vlan-tag,所述扩展vlan-tag可以通过一个新的以太类型(ethertype)值来指示。

优选实施例10

除特殊说明之处以外,本优选实施例与优选实施例9相同。

与优选实施例9不同,本优选实施例采用i组件实例表示ac所绑定的bd,采用b组件实例发布imet路由和ead-es路由;其中,每个i组件实例只绑定一个b组件实例,但多个i组件实例可以绑定同一个b组件实例,绑定同一b组件实例的不同i组件实例之间以eti互相区分。

与优选实施例9不同,本优选实施例在b组件中接收的imet路由根据eti导入到所属的i组件实例中,就如同i组件实例亲自收到了这些路由一样处理。

除表示bd和发布evpn路由的方式不同以外,本优选实施例在数据报文封装和转发流程上与优选实施例9相同。

根据本发明实施例提供的方案,避开了pbb封装或vxlan封装对芯片解码的成本压力。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1