本申请涉及通信技术领域,尤其涉及一种evpn多归属组网避免环路的方法及装置。
背景技术:
在以太网虚拟专用网络(英文:ethernetvirtualprivatenetwork,简称:evpn)多归属组网中,当链路故障时,为了达到流量不中断的目的,通常采用旁路(bypass)链路技术。如图1所示,图1为提供的一种evpn多归属组网示意图。用户边缘(英文:customeredge,简称:ce)2发送的数据报文到达pe3后,pe3对数据报文进行封装后,可通过与pe1、pe2之间的等价路径,将封装后得到的网络报文转发至运营商边缘(英文:provideredge,简称:pe)1或pe2处,由pe1、pe2中的任一pe对网络报文进行解封装后向ce1发送数据报文。当pe1与ce1之间的链路down时,pe3发往pe1的网络报文会通过pe1与pe2之间的保护链路经过pe2后到达ce1。
如前所描述,当ce1与pe1、pe2之间的链路同时down,或者ce1故障导致其与pe1、pe2之间的链路同时down时,也即是ce1脱网。由于pe1、pe2的地位是对称且pe1、pe2之间存在bypass链路,pe3发送的网络报文会在pe1、pe2之间不停转发,出现短暂环路的情况,直至pe1、pe2中的某一台设备撤销自身发布的evpn路由为止。
为了解决前述中pe1、pe2之间出现短暂环路的问题,现有通常为pe中配置的每个evpn实例分配两个标签,一个标签标识远端网络侧(例如,pe3)发送的网络报文,另一个标签标识bypass链路侧发送的网络报文。如此,当多归属组中的多归属成员pe接收到网络报文后,通过不同标签可区分出网络报文的来源,对于从bypass链路侧发送的网络报文,当pe与ce之间的链路down时,不再通过bypass链路返回,避免形成环路。
但是,如此方式尽管避免了形成环路的情况,但是也存在下述缺陷:1)用于标识bypass链路侧的bypass标签需单独配置,如未配置独立的bypass标签,则会出现前述的短暂环路问题;2)若配置独立的bypass标签,则pe中每个evpn实例均需配置多个标签,如此,也会出现申请标签数过多的问题。
技术实现要素:
有鉴于此,本申请提供了一种evpn多归属组网避免环路的方法及装置,用以解决现有技术中pe未配置独立的bypass标签而无法识别网络报文来源,导致组网内短暂环路的问题以及pe配置独立的bypass标签,又导致标签数过多的问题。
第一方面,本申请提供了一种evpn多归属组网避免环路的方法,所述方法应用于第一pe,所述第一pe处于多归属组网中,所述多归属组网还包括ce以及第二pe,所述ce分别通过第一链路、第二链路与所述第一pe、第二pe连接,所述第一pe与所述第二pe之间通过bypass链路连接,所述方法包括:
接收远端pe发送的第一网络报文,所述第一网络报文包括所述第一pe的第一vpn标签;
根据所述第一vpn标签,获取与所述第一vpn标签对应的本地vpn实例,并获取所述vpn实例的第一出接口;
当确定所述第一出接口对应的所述第一链路故障时,通过所述bypass链路,向所述第二pe发送第二网络报文,所述第二网络报文包括所述第二pe的bypass标签以及所述第二pe的第二vpn标签,以使得所述第二pe根据所述第二pe的bypass标签确定所述第二网络报文为属于同一多归属组内的所述第一pe通过bypass链路发送,并根据所述第二vpn标签确定对应的所述第二链路故障时,丢弃所述第二网络报文。
第二方面,本申请提供了一种evpn多归属组网避免环路的装置,所述装置应用于第一pe,所述第一pe处于多归属组网中,所述多归属组网还包括ce以及第二pe,所述ce分别通过第一链路、第二链路与所述第一pe、第二pe连接,所述第一pe与所述第二pe之间通过bypass链路连接,所述装置包括:
接收单元,用于接收远端pe发送的第一网络报文,所述第一网络报文包括所述第一pe的第一vpn标签;
获取单元,用于根据所述第一vpn标签,获取与所述第一vpn标签对应的本地vpn实例,并获取所述vpn实例的第一出接口;
发送单元,用于当确定所述第一出接口对应的所述第一链路故障时,通过所述bypass链路,向所述第二pe发送第二网络报文,所述第二网络报文包括所述第二pe的bypass标签以及所述第二pe的第二vpn标签,以使得所述第二pe根据所述第二pe的bypass标签确定所述第二网络报文为属于同一多归属组内的所述第一pe通过bypass链路发送,并根据所述第二vpn标签确定对应的所述第二链路故障时,丢弃所述第二网络报文。
第三方面,本申请提供了一种网络设备,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器被机器可执行指令促使执行本申请第一方面所提供的方法。
因此,通过应用本申请提供的一种evpn多归属组网避免环路的方法及装置,第一pe接收到携带第一pe的第一vpn标签的第一网络报文后,根据第一vpn标签,获取对应的本地vpn实例以及该vpn实例的第一出接口。当第一pe确定第一出接口对应的链路故障时,通过bypass链路,向第二pe发送携带第二pe的bypass标签以及第二pe的第二vpn标签的第二网络报文,以使得第二pe根据第二pe的bypass标签确定第二网络报文为属于同一多归属组内的第一pe通过bypass链路发送,并根据第二vpn标签确定对应的第二链路故障时,丢弃第二网络报文。由于pe在转发网络报文的过程中,通过bypass标签即可确定网络报文的发送方,所以,可以解决现有技术中pe未配置独立的bypass标签而无法识别网络报文来源,导致组网内短暂环路的问题以及pe配置独立的bypass标签,又导致标签数过多的问题。
附图说明
图1为提供的一种evpn多归属组网示意图;
图2为本申请实施例提供的evpn多归属组网避免环路的方法的流程图;
图3为本申请实施例提供的路由通告报文携带bypass标签所在字段格式图;
图4为本申请实施例提供的evpn多归属组网避免环路的装置结构图;
图5为本申请实施例提供的一种网络设备硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施例并不代表与本申请相一致的所有实施例。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面对本申请实施例提供的evpn多归属组网避免环路的方法进行详细地说明。参见图2,图2为本申请实施例提供的evpn多归属组网避免环路的方法的流程图。该方法应用于第一pe。第一pe处于多归属组网中,多归属组网还包括ce以及第二pe,ce为多归属设备,即ce分别通过第一链路、第二链路与第一pe、第二pe连接,第一pe、第二pe属于同一多归属组。第一pe与第二pe之间通过bypass链路连接。本申请实施例提供的evpn多归属组网避免环路的方法可包括如下所示步骤。
步骤210、接收远端pe发送的第一网络报文,所述第一网络报文包括所述第一pe的第一vpn标签。
具体地,如图1所示。该组网包括ce1、ce2、pe1、pe2以及pe3。ce1为多归属设备,分别通过第一链路、第二链路与pe1、pe2连接。pe1与pe2之间通过bypass链路连接,pe1、pe2属于同一多归属组的多归属成员。pe3通过隧道(例如,虚拟扩展局域网(英文:virtualextensiblelocalareanetwork,简称:vxlan)隧道)分别与pe1、pe2连接。
在本申请实施例中,以pe1为第一pe进行说明。可以理解的是与pe1处于同一多归属组中的其他多归属成员也执行相同的过程。
在本步骤中,远端pe(即,pe3)接收到ce2发送的数据报文后,对数据报文进行封装处理,得到第一网络报文。pe3通过隧道转发至pe1处(当然,也可以转发至pe2处,pe2与pe1执行相同的步骤)。pe1接收到pe3发送的第一网络报文后,从该第一网络报文中获取第一pe的第一虚拟专用网络(英文:virtualprivatenetwork,简称:vpn)标签。
进一步地,在本步骤之前,还包括第一pe启动bypass保护功能,并分配自身的bypass标签的过程。
具体地,pe1接收用户输入的配置指令,该配置指令用于指示第一pe开启bypass保护功能。根据配置指令,pe1为自身设备分配一个bypass标签,该bypass标签用于标识承载bypass标签的网络报文的发送方为多归属组中的多归属成员。
更进一步地,在本步骤之前,还包括组网内pe相互通告evpn路由的过程。
具体地,组网内的pe加入evpn多归属组且与组网内的其他pe建立对等体后,均生成evpn路由并相互通告。例如,pe2生成第一路由通告报文,该第一路由通告报文包括pe2的bypass标签以及以太网段es信息。pe1接收到pe2发送的第一路由通告报文后,从该第一路由通告报文中获取pe2的bypass标签以及以太网段(英文:ethernetsegment,简称:es)信息。pe1判断es信息的值。如果es信息的值为第一值(例如,第一值为0)时,pe1保存pe2的bypass标签。
在本申请实施例中,pe2的bypass标签由pe2分配得到,具体分配过程可参考前述pe1分配自身的bypass标签的过程。es信息具体为以太网段标识(英文:ethernetsegmentidentifier,简称:esi)的值,当esi得值为0时,表示与任意es链路无关,仅与设备相关。
可以理解的是,pe1也生成第二路由通告报文,该第二路由通告报文包括pe1的bypass标签以及es信息。pe2接收到pe1发送的第二路由通告报文后,从该第二路由通告报文获取pe1的bypass标签以及es信息。pe2判断es信息的值。如果es信息的值为第一值(例如,第一值为0)时,pe2保存pe1的bypass标签。
在本申请实施例中,第一路由通告报文、第二路由通告报文可具体为evpn1类路由(即,以太网自动发现路由(ethernetauto-discoveryroute)),该路由通告报文新增一扩展团体属性(即,bypass扩展团体(bypassextendedcommunity))字段,该扩展团体属性字段用于承载pe的bypass标签。如图3所示,图3为本申请实施例提供的路由通告报文携带bypass标签所在字段格式图。
其中,该扩展团体属性包括类型(type)字段,可设置为0x06、子类型(sub-type)字段,可设置为0x05、保留(reserved)字段以及旁路标签(bypasslabel)字段。
更进一步地,evpn1类路由具体包括evpnadperes路由以及evpnadperevi路由。前述中携带bypass标签的evpn1类路由具体为evpnadperes路由,或者称之为特殊的evpnadperes路由。
可以理解的是,每个pe(例如,pe1)在与组网内其他pe建立对等体后,均对外发布(即,pe2、pe3)两个evpn1类路由。即evpnadperes路由以及evpnadperevi路由。其中,evpnadperes路由用于通告自身的es链路状态。evpnadperevi路由用于通告自身的虚拟专线服务(英文:virtualprivatewireservice,简称:vpws)vpn信息。上述两条路由均包括路由标识符(英文:routedistinguisher,简称:rd)字段、以太网段标识(英文:ethernetsegmentidentifier,简称:esi)字段、以太网标记id(ethernettagid)字段以及mpls标签字段。
其中,evpnadperes路由中,rd字段为bgp的路由站点标记,设置为本地配置值,esi字段设置为pe的es链路的值,以太网标记id设置为0xffffffff,mpls标签字段设置为0。evpnadperevi路由中,rd字段为bgp的路由站点标记,设置为本地配置值,esi字段设置为pe的es链路的值,以太网标记id设置为pe的站点信息,mpls标签字段设置为pe的vpn标签。
pe1对外通告evpnadperes路由后,pe2、pe3接收到该路由后,从中获取并保存pe1的bypass标签;pe1对外通告evpnadperevi路由后,pe2、pe3接收到该路由后,从中获取并保存pe1的第一vpn标签。
如此,在本步骤中,pe3接收到ce2发送的数据报文后,根据数据报文携带的目的ip,确定下一跳为pe1或pe2。若pe3选择下一跳为pe1,则pe3在封装第一网络报文时,将保存的第一vpn标签封装在数据报文之前。
可以理解的是,pe3在封装过程中,还将以太网头部(ethheader)、隧道标签(tunnellabel)也一同封装在第一vpn标签之前。
同理,pe2也会对外发布上述两个evpn1类路由。pe1、pe3接收到上述路由后,从中获取并保存pe2的第二vpn标签。
在本申请实施例中,pe1、pe2在分配自身的bypass标签后,还通过一特殊的evpnadperes路由携带bypass标签,以使得接收到evpnadperes路由的pe保存bypass标签,例如,pe2保存pe1的bypass标签,pe1保存pe2的bypass标签。
其中,该特殊的evpnadperes路由还包括es信息,该es信息具体为esi的值。该特殊的evpnadperes路由中还包括rt,该rt的值为pe中vpn实例的rt合集。
需要说明的是,该esi的值为0,表示与任意es链路无关,仅与设备相关。接收到该特殊的evpnadperes路由的pe,在判断esi的值为0时,确定该evpnadperes路由为用于携带bypass标签的路由,pe保存该bypass标签。
步骤220、根据所述第一vpn标签,获取与所述第一vpn标签对应的本地vpn实例,并获取所述vpn实例的第一出接口。
具体地,pe1从第一网络报文中获取第一vpn标签后,pe1根据第一vpn标签查找到与第一vpn标签对应的本地vpn实例,并获取该vpn实例的第一出接口。
在本申请实施例中,第一出接口对应的链路为第一链路。
步骤230、当确定所述第一出接口对应的所述第一链路故障时,通过所述bypass链路,向所述第二pe发送第二网络报文,所述第二网络报文包括所述第二pe的bypass标签以及所述第二pe的第二vpn标签,以使得所述第二pe根据所述第二pe的bypass标签确定所述第二网络报文为属于同一多归属组内的所述第一pe通过bypass链路发送,并根据所述第二vpn标签确定对应的所述第二链路故障时,丢弃所述第二网络报文。
具体地,当pe1确定第一链路故障时,pe1从本地获取pe2的bypass标签以及pe2的第二vpn标签。pe1生成第二网络报文,该第二网络报文包括pe2的bypass标签以及第二vpn标签。pe1通过bypass链路向pe2发送第二网络报文。
可以理解的是,pe1在生成第二网络报文的过程中,将第二vpn标签以及pe2的bypass标签封装在隧道标签之后数据报文之前。
pe2接收到第二网络报文后,从第二网络报文中获取pe2的bypass标签以及第二vpn标签。根据pe2的bypass标签,pe2确定第二网络报文为与自身处于同一多归属组中的多归属成员发送,即pe2确定第二网络报文为属于同一多归属组内的pe1通过bypass链路发送。同时,pe2根据第二vpn标签,查找到与第二vpn标签对应的本地vpn实例,并获取该vpn实例的第二出接口。
在本申请实施例中,第二出接口对应的链路为第二链路。
当pe2确定第二链路故障时,pe2丢弃该第二网络报文。
因此,通过应用本申请提供的一种evpn多归属组网避免环路的方法,第一pe接收到携带第一pe的第一vpn标签的第一网络报文后,根据第一vpn标签,获取对应的本地vpn实例以及该vpn实例的第一出接口。当第一pe确定第一出接口对应的链路故障时,通过bypass链路,向第二pe发送携带第二pe的bypass标签以及第二pe的第二vpn标签的第二网络报文,以使得第二pe根据第二pe的bypass标签确定第二网络报文为属于同一多归属组内的第一pe通过bypass链路发送,并根据第二vpn标签确定对应的第二链路故障时,丢弃第二网络报文。由于pe在转发网络报文的过程中,通过bypass标签即可确定网络报文的发送方,所以,可以解决现有技术中pe未配置独立的bypass标签而无法识别网络报文来源,导致组网内短暂环路的问题以及pe配置独立的bypass标签,又导致标签数过多的问题。
可选地,当pe3发送的第一网络报文转发至pe2处时,pe2也执行步骤210-步骤230的过程。
即当pe2确定第二出接口对应的第二链路故障时,通过bypass链路,向pe1发送第三网络报文。pe1接收到第三网络报文后,从第三网络报文中获取pe1的bypass标签以及第一vpn标签。根据pe1的bypass标签,pe1确定第三网络报文为与自身处于同一多归属组中的多归属成员发送,即pe1确定第三网络报文为属于同一多归属组内的pe2通过bypass链路发送。同时,pe1根据第一vpn标签,查找到与第一vpn标签对应的本地vpn实例,并获取该vpn实例的第一出接口。
在本申请实施例中,第一出接口对应的链路为第一链路。
当pe1确定第一链路故障时,pe1丢弃该第三网络报文。
基于同一发明构思,本申请实施例还提供了与上述evpn多归属组网避免环路的方法对应的evpn多归属组网避免环路的装置。参见图4,图4为本申请实施例提供的evpn多归属组网避免环路的装置结构图,该装置应用于第一pe,所述第一pe处于多归属组网中,所述多归属组网还包括ce以及第二pe,所述ce分别通过第一链路、第二链路与所述第一pe、第二pe连接,所述第一pe与所述第二pe之间通过bypass链路连接,该装置包括:
接收单元410,用于接收远端pe发送的第一网络报文,所述第一网络报文包括所述第一pe的第一vpn标签;
获取单元420,用于根据所述第一vpn标签,获取与所述第一vpn标签对应的本地vpn实例,并获取所述vpn实例的第一出接口;
发送单元430,用于当确定所述第一出接口对应的所述第一链路故障时,通过所述bypass链路,向所述第二pe发送第二网络报文,所述第二网络报文包括所述第二pe的bypass标签以及所述第二pe的第二vpn标签,以使得所述第二pe根据所述第二pe的bypass标签确定所述第二网络报文为属于同一多归属组内的所述第一pe通过bypass链路发送,并根据所述第二vpn标签确定对应的所述第二链路故障时,丢弃所述第二网络报文。
可选地,所述接收单元410还用于,接收用户输入的配置指令,所述配置指令用于指示所述第一pe开启bypass保护功能;
所述装置还包括:分配单元(图中未示出),用于根据所述配置指令,为所述第一pe分配一个bypass标签,所述bypass标签用于标识承载所述bypass标签的网络报文的发送方为多归属组中的多归属成员。
可选地,所述接收单元410还用于,接收所述第二pe发送的第一路由通告报文,所述第一路由通告报文包括所述第二pe的bypass标签以及以太网段es信息;
所述装置还包括:保存单元(图中未示出),用于当所述es信息的值为第一值时,保存所述第二pe的bypass标签。
可选地,所述接收单元410还用于,接收所述第二pe发送的第三网络报文,所述第三网络报文包括所述第一pe的bypass标签以及所述第一vpn标签;
所述获取单元420还用于,根据所述第一vpn标签,获取与所述第一vpn标签对应的本地vpn实例,并获取所述第一出接口;
所述装置还包括:确定单元(图中未示出),用于根据所述第一pe的bypass标签,确定所述第三网络报文为所述第二pe发送;
丢弃单元(图中未示出),用于当确定所述第一出接口对应的所述第一链路故障时,丢弃所述第三网络报文。
可选地,所述发送单元430还用于,向所述第二pe发送第二路由通告报文,所述第二路由通告报文包括所述第一pe的bypass标签以及es信息,以使得所述第二pe确定所述es信息的值为第一值时,保存所述第一pe的bypass标签。
可选地,所述路由通告报文为evpn1类路由,所述路由通告报文包括扩展团体属性字段,所述扩展团体属性字段承载所述pe的bypass标签。
因此,通过应用本申请提供的一种evpn多归属组网避免环路的装置,该装置接收到携带第一pe的第一vpn标签的第一网络报文后,根据第一vpn标签,获取对应的本地vpn实例以及该vpn实例的第一出接口。当第一pe确定第一出接口对应的链路故障时,通过bypass链路,该装置向第二pe发送携带第二pe的bypass标签以及第二pe的第二vpn标签的第二网络报文,以使得第二pe根据第二pe的bypass标签确定第二网络报文为属于同一多归属组内的第一pe通过bypass链路发送,并根据第二vpn标签确定对应的第二链路故障时,丢弃第二网络报文。由于pe在转发网络报文的过程中,通过bypass标签即可确定网络报文的发送方,所以,可以解决现有技术中pe未配置独立的bypass标签而无法识别网络报文来源,导致组网内短暂环路的问题以及pe配置独立的bypass标签,又导致标签数过多的问题。
基于同一发明构思,本申请实施例还提供了一种网络设备,如图5所示,包括处理器510、收发器520和机器可读存储介质530,机器可读存储介质530存储有能够被处理器510执行的机器可执行指令,处理器510被机器可执行指令促使执行本申请实施例所提供的evpn多归属组网避免环路的方法。前述图5所示的evpn多归属组网避免环路的装置,可采用如图5所示的网络设备硬件结构实现。
上述计算机可读存储介质530可以包括随机存取存储器(英文:randomaccessmemory,简称:ram),也可以包括非易失性存储器(英文:non-volatilememory,简称:nvm),例如至少一个磁盘存储器。可选的,计算机可读存储介质530还可以是至少一个位于远离前述处理器510的存储装置。
上述处理器510可以是通用处理器,包括中央处理器(英文:centralprocessingunit,简称:cpu)、网络处理器(英文:networkprocessor,简称:np)等;还可以是数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)、现场可编程门阵列(英文:field-programmablegatearray,简称:fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例中,处理器510通过读取机器可读存储介质530中存储的机器可执行指令,被机器可执行指令促使能够实现处理器510自身以及调用收发器520执行前述本申请实施例描述的evpn多归属组网避免环路的方法。
另外,本申请实施例提供了一种机器可读存储介质530,机器可读存储介质530存储有机器可执行指令,在被处理器510调用和执行时,机器可执行指令促使处理器510自身以及调用收发器520执行前述本申请实施例描述的evpn多归属组网避免环路的方法。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
对于evpn多归属组网避免环路的装置以及机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。