一种环路的检测方法和装置与流程

文档序号:33698151发布日期:2023-03-31 17:10阅读:43来源:国知局
一种环路的检测方法和装置与流程

1.本技术涉及通信领域,并且更具体地,涉及一种环路的检测方法和装置。


背景技术:

2.段路由(segment routing,sr)是用于转发报文的一种技术,sr将网络分为一个或多个段,且将各个段和网络中的网络节点进行有序排列,就可以得到一条转发路径,其本质类似于源路由。
3.sr分为流量工程段路由(segment routing-traffic engineering,sr-te)和尽力而为段路由(segment routing-best effort,sr-be)。其中,在sr-be技术中,内部网关协议(interior gateway protocol,igp)通过最短路径优先算法(shortest path first,spf)计算得到最优的标签交换路径(label switched path,lsp),也可称为主路径,同时,igp也可以计算生成一条能为sr-be提供链路及节点保护的拓扑无关的无环路备份路径(topology-independent loop-free alternate,ti-lfa),也可称为备路径。当某处链路或节点发生故障时,流量会快速切换到备路径,报文通过备路径转发。正常情况下,报文沿着主路径转发。
4.当链路出现故障或故障恢复时,会触发各网络节点收敛,导致每个网络节点都会重新计算lsp,由于各网络节点性能的差异,进而导致生成lsp后下发到转发面的时间不一致,导致形成短暂环路。环路可能会影响业务传输,比如引起业务丢包、端口拥塞,进而影响其他同优先级的业务等。
5.因此,确定各网络节点之间是否存在环路是至关重要的。


技术实现要素:

6.本技术提供了一种环路的检测方法和装置,以期通过判断接收报文时的接口与转发该报文时的出接口是否一致,来确定节点之间是否存在环路,以便于在存在环路的情况下,及时调整对报文的转发操作,从而避免端口拥塞、业务丢包等问题。
7.第一方面,本技术提供了一种环路的检测方法,该方法可以由第一节点来执行,或者,也可以由配置在第一节点中的部件(如芯片、芯片系统等)执行,本技术对此不作限定。
8.示例性地,该方法包括:第一节点从第一接口接收来自第二节点的报文,该报文外层封装节点段标识(segment identifier,sid),该节点sid用于标识目的节点;第一节点基于节点sid,确定用于转发报文的出接口是第一接口;第一节点确定报文的转发路径中存在环路。
9.基于上述技术方案,第一节点通过判断接收报文时的接口与转发该报文时的出接口是否一致,来确定该第一节点与上一跳节点之间是否存在环路,如二者一致的情况下确定存在环路,进而可以及时调整对报文的转发操作,从而避免引起端口堵塞,业务丢包等问题。
10.结合第一方面,在第一方面可能的实现方式中,第一节点可以基于sr-be转发报
文,也可以基于第六代(version 6)因特网协议(internet protocol,ip)(ipv6)的sr(简称srv6)be转发该报文。且两种情况下转发报文时报文外层封装的节点sid不同。
11.上述报文外层封装节点sid有如下两种可能的情况:
12.一种可能的情况是,第一节点基于传统的sr-be转发报文,节点sid对应于多协议标签交换(multiprotocol label switching,mpls)标签。
13.具体地,报文外层封装节点sid是指基于节点sid与段路由全局块(segment routing global block,srgb)的起始地址的和确定的对应于节点sid的标签。例如,第一节点转发报文时所携带的出标签是下一跳节点的srgb的起始地址与目的节点的节点sid的和。
14.另一种可能的情况是,第一节点基于srv6 be转发报文,节点sid对应于srv6 sid。具体地,报文外层封装节点sid是指基于目的地址封装的srv6 sid。
15.结合第一方面,在第一方面可能的实现方式中,所述方法还包括:第一节点基于报文封装的入标签携带的节点sid,确定出标签携带的节点sid与入标签携带的节点sid相同;第一节点确定报文的转发路径中存在环路。
16.第一节点通过确定接收报文时的接口与转发该报文时的出接口一致,且出标签携带的节点sid与入标签携带的节点sid相同,来确定第一节点与第二节点之间存在环路,可以有效地避免在sr-te的情况下误判该报文的转发路径中存在环路。可以理解,若网络中完全部署sr-be,则可以通过判断接收报文时的接口与转发该报文时的出接口是否一致,来确定该第一节点与上一跳节点之间是否存在环路;若网络中完全部署srv6 be,换言之,报文外层只封装了目的地址的节点sid,则可以通过判断接收报文时的接口与转发该报文时的出接口是否一致,来确定该第一节点与上一跳节点之间是否存在环路;若网络中部署sr-te隧道,且sr-te隧道中标签栈的类型为节点sid和邻接sid组成的混合标签栈的形式,换言之,报文外层封装节点sid和邻接sid的标签栈,则第一节点还需要基于入标签携带的节点sid,确定出标签携带的节点sid与入标签携带的节点sid是否相同,避免在sr-te基于节点sid和邻接sid组成的混合标签栈转发报文的情况下误判该路径存在环路。
17.结合第一方面,在第一方面可能的实现方式中,所述方法还包括:第一节点调整报文的转发操作,避免通过第一接口向第二节点转发该报文。
18.一种可能的设计是,第一节点在报文的转发路径中存在环路的情况下,直接丢弃该报文。通过在报文的转发路径中存在环路时,直接丢弃该报文,可以避免端口堵塞,影响其他同优先级的业务。
19.另一种可能的设计是,第一节点通过备路径转发该报文,具体地,第一节点通过第二接口向下一跳节点转发该报文,其中,经过第二接口到目的节点的路径为用于转发报文的备路径。第一节点通过备路径转发报文,可以避免业务丢包、端口堵塞等问题。
20.第二方面,本技术提供了一种环路的检测装置,可以实现上述第一方面以及第一方面任一种可能的实现方式中的方法。该装置包括用于执行上述方法的相应的单元。该装置包括的单元可以通过软件和/或硬件方式实现。
21.第三方面,本技术提供了一种环路的检测装置,该环路的检测装置包括处理器。该处理器与存储器耦合,可用于执行存储器中的计算机程序,以实现第一方面以及第一方面任一种可能实现方式中的环路的检测方法。
22.可选地,该装置还包括存储器。
23.可选地,该装置还包括通信接口,处理器与通信接口耦合。
24.第四方面,本技术提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,当该计算机程序或指令被执行时,以实现第一方面以及第一方面任一种可能实现方式中的环路的检测方法。
25.第五方面,本技术提供了一种计算机程序产品,该计算机程序产品包括计算机程序,当该计算机程序被运行时,以实现第一方面以及第一方面任一种可能实现方式中的环路的检测方法。
26.第六方面,本技术提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现第一方面以及第一方面任一种可能实现方式中的环路的检测方法。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
27.应当理解的是,本技术的第二方面至第六方面与本技术的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
28.图1是本技术实施例提供的sid的两种类型的示意图;
29.图2是本技术实施例提供的sr-be转发流程的示意图;
30.图3是适用于本技术实施例提供的方法的应用场景示意图;
31.图4是适用于本技术实施例提供的方法的又一应用场景示意图;
32.图5是适用于本技术实施例提供的方法的再一应用场景示意图;
33.图6是本技术实施例提供的环路的检测方法的流程示意图;
34.图7是本技术实施例提供的第一节点基于节点sid确定出接口的示意图;
35.图8是本技术实施例提供的第一节点转发报文的示意图;
36.图9是本技术实施例提供的第一节点转发报文的又一示意图;
37.图10是本技术实施例提供的环路的检测装置的示意性框图;
38.图11是本技术实施例提供的环路的检测装置的另一示意性框图。
具体实施方式
39.下面将结合附图,对本技术中的技术方案进行描述。
40.为了便于清楚描述本技术实施例的技术方案,在本技术实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一节点和第二节点是为了区分不同的网络节点,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
41.此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
42.为了更好地理解本技术实施例提供的环路的检测方法,下面首先对本技术中涉及
到的术语作简单说明。
43.1、sr:是用于转发报文的一种技术。sr将网络分为一个或多个段(segment),为这些段和网络中的网络节点分配标识(identifier,id),即sid,并对sid进行有序排列,也就是,对各个段和网络中的节点进行有序排列,就可以得到一条转发路径,其本质类似于源路由。sr分为sr-te和sr-be两种类型,本技术实施例提供的方法既可以适用于传统的sr-be技术中,也可以适用于srv6 be技术中。
44.2、sid:相当于传统mpls技术中的mpls标签,在sr-be技术中,sid在转发层面即可映射为mpls标签。sid分为两种类型,分别是节点sid(node sid)和邻接sid(adjacency sid)。图1示出了sid的两种类型的示意图。
45.图1中的a)是node sid的一示例,node sid是特殊的前缀sid(prefix sid),用于标识特定的网络节点,在节点的环回(loopback)接口下配置ip地址作为前缀,则此节点的node sid就是prefix sid,换言之,node sid也可以称为prefix sid。例如,a节点分配的node sid为101,b节点分配的node sid为102,c节点分配的node sid为103,换言之,101可以标识a节点,102可以标识b节点,103可以标识c节点。
46.图1中的b)是adjacency sid的一示例,adjacency sid用于标识网络中某个网络节点的某个邻接,具有一定的方向性,例如,a节点到b节点的adjacency sid为1001,b节点到c节点的adjacency sid为1002。在本技术实施例中,使用node sid标识目的节点。
47.3、段路由全局块(segment routing global block,srgb):用户指定的为sr预留的mpls标签范围。例如,某一网络节点的srgb为[16000,23999],其中,16000是该srgb的起始地址。
[0048]
4、sr-be:igp通过spf计算得到最优的lsp,是一种隧道技术,在sr-be技术中,目的节点的node sid通过igp协议扩散到各个节点,每个节点基于本地的srgb计算标签值,使用中间系统到中间系统(intermediate system to intermediate system,is-is)路由协议或开放最短路径优先(open shortest path first,ospf)路由协议计算标签转发路径,找到下一跳节点,指导报文转发到目的节点。
[0049]
在sr-be技术中,igp也可以计算生成一条能为sr-be隧道提供链路及节点保护的ti-lfa,也可称为备路径。当某处链路或节点发生故障时,流量会快速切换到备路径,报文通过备路径转发。
[0050]
图2是本技术实施例提供的sr-be转发流程的一示例。如图2所示,报文需要从a节点转发到d节点,报文从a节点输入,igp协议将目的节点(即d节点)的node sid=100扩散到各个网络节点,a节点的srgb为[16000,23999],动作是压栈(push),a节点在报文外层封装标签26100,该标签26100为下一跳节点的srgb的起始地址与node sid的和。a节点将报文发送给下一跳节点(即b节点),b节点的srgb为[26000,65535],动作是交换(swap),b节点接收报文,此时报文外层封装的标签为26100。
[0051]
在本技术实施例中,为了便于区分报文进入b节点时所封装的标签与输出b节点时所封装的标签,将报文进入b节点时所封装的标签记为入标签,即入标签为26100,将报文从b节点输出时所封装的标签记为出标签。
[0052]
b节点接收报文后,基于标签交换表确定出将报文发送至下一跳节点时需要封装的标签,即出标签。应理解,报文携带该出标签进入下一跳节点,即相当于报文进入下一跳
sid和邻接sid组成的混合标签栈,换言之,报文在整个转发路径中一部分基于node sid转发,一部分基于邻接sid转发。sr-te lsp转发标签栈有两种:一种是邻接sid组成的标签栈,另一种node sid和邻接sid组成的混合标签栈。如图5所示,报文从a节点转发到f节点,报文外层封装node sid和邻接sid组成的混合标签栈,当链路出现故障时,报文沿着备路径转发,随后各个节点的路由收敛,以b节点为例,报文从a节点到b节点基于node sid计算标签交换路径,a节点的路由收敛完成,下发至转发面的路径是a
→b→c→d→e→
f,即下一跳节点是b节点,但b节点的路由未收敛完成,则继续按照原来的路径b
→a→
f转发,则a节点和b节点之间形成环路。
[0065]
可以理解的是,在sr-be技术中,当链路出现故障或故障恢复时,由于不同网络节点的设备的性能差异,或某一网络节点的控制面繁忙,导致收敛速度不一致,换言之,新计算的lsp下发到转发面的时间不一致,进而导致形成短暂环路,而环路可能会影响业务传输,比如引起业务丢包、端口拥塞,进而影响其他同优先级的业务等。因此,判断出节点之间是否存在环路是至关重要的。
[0066]
基于此,本技术提供了一种环路的检测方法,基于第一节点接收报文时的接口与转发该报文时的出接口是否一致,来确定该第一节点与上一跳节点之间是否存在环路,如,在二者一致的情况下确定存在环路,进而可以及时调整对报文的转发操作,从而避免引起端口堵塞,业务丢包等问题。
[0067]
图6是本技术实施例提供的环路的检测方法600的流程示意图,图6所示的方法600可以包括s610至s640,下面将详细说明方法600中的各个步骤。
[0068]
应理解,图6所示的方法中以第一节点为执行主体来描述。该第一节点可以是中间节点,对于一条lsp通道来说,第一节点的两端均可以使用以太接口与相邻的网络节点连接。在本技术实施例中,第一节点的上一跳节点记为第二节点,第二节点有可能是中间节点,也可能是边缘节点,本技术实施例对此不作限定。其中,边缘节点的一端使用以太接口与相邻的网络节点连接,另一端使用用户接口与用户设备连接。
[0069]
s610、第一节点从第一接口接收来自第二节点的报文。
[0070]
其中,所述报文外层封装node sid,该node sid用于标识目的节点。第二节点是第一节点的上一跳节点,第一接口是第一节点连接第二节点的接口。
[0071]
应理解,上述目的节点是报文的转发路径中sr-be隧道的尾节点。例如,报文的转发路径上完全部署了sr-be隧道时,该目的节点可以是sr-be隧道的尾节点,也可以称为报文的目的节点,当报文的转发路径上部署了node sid和邻接sid组成混合标签栈的sr-te隧道时,换言之,报文一部分基于node sid转发,一部分基于邻接sid转发,则该目的节点为基于node sid转发报文的路径的尾节点,不能称之为报文的目的节点。
[0072]
可选地,第一节点可以基于传统的sr-be转发所述报文,也可以基于srv6 be转发所述报文。
[0073]
当第一节点基于传统的sr-be转发所述报文时,node sid对应于mpls标签,报文的外层的标签封装的是node sid标签。具体地,所述报文外层封装node sid是指基于node sid与srgb的起始地址的和确定的对应于node sid的标签(如前所述的入标签、出标签)。例如,第一节点转发所述报文时所携带的出标签是下一跳节点的srgb的起始地址与目的节点的node sid的和。
[0074]
当第一节点基于srv6 be转发报文时,node sid对应于srv6 sid。前已述及,srv6 be技术中,可以将ipv6头的目的地址设置为sid,所述报文外层封装node sid是指基于目的地址封装的srv6 sid。
[0075]
需要说明的是,第二节点将所述报文发送给第一节点的两种情况如下:
[0076]
一种可能的情况是,第二节点感知到用于转发所述报文的主路径出现故障,例如,第二节点感知第二节点连接用于转发报文的主路径上的下一跳节点的接口宕机,则第二节点确定主路径的链路出现故障,第二节点将报文沿备路径转发,该备路径上下一跳节点为第一节点,即第二节点将报文发送至第一节点,相应地,第一节点从第一接口接收来自第二节点的报文。
[0077]
另一种可能的情况是,第二节点感知到用于转发所述报文的主路径链路故障恢复,例如,第二节点可以通过确定接口是否恢复来确定链路故障是否恢复。链路故障时,第二节点的下一跳节点为第一节点,链路故障恢复,第二节点的转发面未接收到新的lsp时,第二节点依然按照链路故障时规划的路径转发上述报文,即第二节点将报文发送给第一节点,相应地,第一节点从第一接口接收来自第二节点的报文。
[0078]
应理解,第一节点只能感知相邻节点的链路故障,如图3所示的a节点到d节点的链路故障时,第二节点(如a节点)可以感知链路故障,进而切换至备路径转发报文,但第一节点(如b节点)无法感知a节点到d节点的链路故障,因此,b节点无法同a节点一样,自动切换至备路径转发所述报文。
[0079]
综合上述两种情况下,第二节点将报文发送给第一节点,相应地,第一节点从第一接口接收来自第二节点的报文,其中,第一接口为第一节点连接第二节点的接口。
[0080]
s620、第一节点基于node sid,确定用于转发报文的出接口是否是第一接口。
[0081]
第一节点接收报文后,可以记录下接收该报文的接口,即第一接口,进一步确定出用于转发该报文的出接口,其中,出接口是指第一节点输出所述报文时的接口。可以理解,第一节点确定用于转发报文的出接口是第一接口,是指第一节点确定接收所述报文的接口和发送该报文的接口是同一接口,即第一节点的下一跳节点为第二节点。若第一节点确定用于转发报文的出接口不是第一接口,换言之,第一节点确定接收所述报文的接口和发送该报文的接口不是同一接口,则第一节点和上一跳节点之间不存在环路,无需执行s630和s640。
[0082]
第一节点接收报文后,基于报文外层封装的node sid,确定用于转发该报文的出接口。前已述及,报文外层封装的node sid有两种可能的情况,分别是node sid对应于mpls标签和node sid对应于srv6 sid。图7是第一节点确定用于转发报文的出接口的示意图。下面结合图7详细描述node sid对应于mpls标签时,第一节点基于node sid确定用于转发所述报文的出接口的过程。
[0083]
一种可能的实现方式是,第一节点确定出接口为第一接口。如图7所示,第一节点从第一接口接收报文,该报文外层封装有入标签,该入标签携带有目的节点的node sid。第一节点基于入标签查询标签交换表,基于标签交换表确定下一跳转发表的索引,根据索引,查询到下一跳转发表,下一跳转发表中有主路径和备路径上下一跳节点的相关信息,如出标签、下一跳节点的srgb、以及出接口。则第一节点可以根据下一跳转发表确定出用于转发报文的主路径的出接口是第一接口。
[0084]
作为可选的步骤,第一节点基于报文封装的入标签携带的node sid,确定出标签携带的node sid与入标签携带的node sid相同。
[0085]
应理解,node sid对应于mpls标签,即报文外层封装的是第一节点基于node sid与srgb的起始地址的和确定的标签,由上文可知,有两种可能的场景,一种是网络中完全部署sr-be隧道,另一种是部署基于node sid和邻接sid组成的混合标签栈的sr-te隧道。因此,当网络中部署基于node sid和邻接sid组成的混合标签栈的sr-te隧道时,报文外层封装node sid和邻接sid,第一节点还需要基于入标签携带的node sid,确定出标签携带的node sid与入标签携带的node sid相同,避免在sr-te基于邻接标签转发的情况下误判该路径存在环路。
[0086]
另一种可能的实现方式是,第一节点确定出标签携带的node sid与入标签携带的node sid相同,且出接口为第一接口。如图7所示,第一节点从第一接口接收报文,该报文外层封装有入标签,该入标签携带有目的节点的node sid。第一节点基于该报文头部的入标签计算出node sid,即入标签和本地的srgb的差值为入标签携带的node sid。进一步地,第一节点基于该入标签查询标签交换表,得到下一跳转发表索引,根据下一跳转发表索引,查询下一跳转发表,根据下一跳转发表中主路径上的出标签确定出标签携带的node sid,即出标签与srgb的差值。第一节点可以得出出标签携带的node sid与入标签携带的node sid相同,且出接口为第一接口。
[0087]
需要说明的是,在一些实施例中,下一跳转发表的信息可以携带待标签交换表中,换言之,标签交换表中无需存储下一跳转发表的索引,直接存储下一跳节点的相关信息。
[0088]
还应理解,在上述实施例中,下一跳转发表中存储有主路径和备路径的相关信息,在一些实施例中,下一跳转发表中只有主路径的相关信息,即查询不到备路径的相关信息。
[0089]
下面描述node sid对应于srv6 sid时,第一节点基于node sid确定用于转发报文的出接口的过程。
[0090]
需要说明的是,在srv6 be技术中,sid可以统称为虚拟专用网络(virtual private network,vpn)sid,其中,在ipv4 vpn场景中,sid可以称为“end.dt4 sid”,在ipv6 vpn场景中,sid可以称为“end.dt6 sid”。在本技术实施例中,node sid对应于srv6 sid可以理解为报文外层基于目的地址封装vpn sid。为了便于清楚地描述本技术实施例,下面将srv6 be技术中的sid称为vpn sid。应理解,上文所述的srv6 sid可以理解为srv6 be技术中的sid,与此处描述的vpn sid含义相同。
[0091]
第一节点从第一接口接收报文,该报文外层封装node sid是指基于目的地址封装的vpn sid,换言之,该报文外层是目的节点的ip地址。第一节点首先判断报文外层封装的是vpn sid,再判断接收报文的接口和用于转发报文的出接口是否一致。具体地,第一节点基于目的地址查询路由转发表,基于路由转发表确定下一跳转发表的索引,根据索引,查询到下一跳转发表,根据下一跳转发表确定出用于转发报文的主路径的出接口是第一接口。
[0092]
s630、第一节点确定报文的转发路径中存在环路。
[0093]
在s620中,第一节点确定用于转发报文的出接口是否是第一接口,若用于转发报文的出接口是第一接口,则执行s630和s640;若用于转发报文的出接口不是第一接口,则报文的转发路径中不存在环路,继续按照原路径转发即可。
[0094]
第一节点确定报文的转发路径中存在环路有如下两种可能的设计:
[0095]
一种可能的设计是,第一节点基于node sid,确定用于转发报文的出接口是第一接口之后,确定报文的转发路径中存在环路,即第一节点和第二节点之间存在环路。
[0096]
另一种可能的设计是,第一节点基于node sid,确定用于转发报文的出接口是第一接口且报文封装的入标签携带的node sid与出标签携带的node sid相同之后,确定报文的转发路径中存在环路,即第一节点和第二节点之间存在环路。
[0097]
s640、第一节点调整对报文的转发操作。
[0098]
第一节点确定报文的转发路径中存在环路之后,可以通过如下两种方式调整对报文的转发操作,避免第一节点从第一接口向第二节点转发该报文。
[0099]
一种可能的实现方式是,第一节点直接丢弃报文,避免端口拥塞,进而影响其他优先级的业务,直至第一节点的转发面接收到新的lsp时,报文沿着新路径转发。
[0100]
另一种可能的实现方式是,第一节点通过备路径转发报文。第一节点确定报文的转发路径中存在环路后,可以基于下一跳转发表中存储的用于转发报文的备路径转发该报文。第一节点根据用于转发该报文的备路径,确定与下一跳节点连接的第二接口,从第二接口向目的节点转发报文,第一节点通过第二接口到目的节点的路径为用于转发所述报文的备路径,也就是说,当能够从下一跳转发表中查询到备路径时,第一节点通过备路径转发报文。直至当第一节点的转发面接收到新的lsp时,报文沿着新路径转发。
[0101]
可以理解,上述两种实现方式仅为调整对报文的转发操作的两个示例。在一些实施例中,第一节点可以基于下一跳转发表确定是否存在备路径,再进一步选择如何处理报文。示例性地,第一节点确定报文的转发路径中存在环路之后,进一步确定下一跳转发表中是否可以查询到用于转发上述报文的备路径。若第一节点查询到用于转发报文的备路径,则按照备路径转发报文;若没有查询到用于转发报文的备路径,则丢弃报文,避免端口拥塞,影响其他优先级的业务。
[0102]
图8是第一节点转发报文的一示例。需要说明的是,图8是基于sr-be转发报文,a节点到d节点的链路发生故障时,第一节点转发报文的详细流程。
[0103]
如图8所示,以a节点为第二节点,b节点为第一节点为例来进行描述。a节点本地的srgb的范围为[1000,4000],b节点本地的srgb的范围为[2000,5000],目的节点为d节点,即部署sr-be隧道的尾节点为d节点。a节点感知到a节点到d节点的链路故障,切换至备路径a
→b→c→
d转发报文。随后各节点的路由收敛,a节点的收敛速度比b节点快,即a节点已经将计算的新的lsp下发至转发面,即a
→b→c→
d。对于b节点来说,收敛前的主路径是b
→a→
d,备路径是b
→c→
d。b节点尚未将新的sr-be lsp下发至转发面。
[0104]
b节点从接口3(即第一接口)接收来自于a节点的报文,基于报文外层封装的入标签2100查询标签交换表,标签交换表中下一跳转发表的索引为10,根据索引10查询下一跳转发表,下一跳转发表中,沿主路径转发报文时,出标签为2100,srgb为2000,出接口为接口3。可以看出出标签携带的node sid为2100-2000=100,入标签携带的node sid为2100-2000=100,接口3即第一接口,因此,a节点和b节点之间存在环路。
[0105]
由图中的下一跳转发表可知,下一跳转发表中存储有备路径的相关信息,b节点可以从接口4(即第二接口)转发报文,下一跳节点为c节点,对于b节点而言,报文沿着备路径转发,直至b节点收敛完成,新的sr-be lsp下发至转发面。应理解,b节点将报文封装的入标签2100交换为出标签3100,b节点从接口4转发报文时所封装的出标签为3100。
[0106]
收敛完成后,对于b节点而言,新的sr-be lsp下发至转发面,新的sr-be lsp为b
→c→
d,报文沿着b
→c→
d转发。
[0107]
应理解,对于c节点也可以通过上述方法确定出c节点与b节点之间是否存在环路,为了简洁,此处不再详述。
[0108]
图9是第一节点转发报文的又一示例。需要说明的是,图9是基于sr-be转发报文,a节点到d节点的链路故障恢复时,第一节点转发报文的详细流程。
[0109]
如图9所示,以a节点为第二节点,b节点为第一节点为例来进行描述。a节点本地的srgb的范围为[1000,4000],b节点本地的srgb的范围为[2000,5000],目的节点为d节点。a节点感知到a节点到d节点的链路故障恢复,各网络节点的路由收敛,做出如下假设:a节点的收敛速度比b节点慢,换言之,b节点已经将计算的新的sr-be lsp下发至转发面,即主路径是b
→a→
d,备路径是b
→c→
d,收敛前b节点到d节点的路径为b
→c→
d;对于a节点来说,收敛前的sr-be lsp是a
→b→c→
d,a节点尚未收敛完成,即未将新的sr-be lsp下发至转发面,则a节点继续将报文发送给b节点。
[0110]
b节点已收敛完成,其转发面接收到新的sr-be lsp。b节点从接口3(即第一接口)接收来自于a节点的报文,基于报文外层封装的入标签2100查询标签交换表,标签交换表中下一跳转发表的索引为10,根据索引10查询下一跳转发表,下一跳转发表中,沿主路径转发报文时,出标签为2100,srgb为2000,出接口为接口3。可以看出出标签携带的node sid为2100-2000=100,入标签携带的node sid为2100-2000=100,接口3即第一接口,因此,a节点和b节点之间存在环路。
[0111]
由图中的下一跳转发表可知,下一跳转发表中存储有备路径的相关信息,b节点可以从接口4(即第二接口)转发报文,下一跳节点为c节点,对于a节点而言,当a节点的转发面接收到新的sr-be lsp时,报文沿着新的sr-be lsp转发。应理解,b节点将报文封装的入标签2100交换为出标签3100,b节点从接口4转发报文时所封装的出标签为3100。
[0112]
基于上述技术方案,通过确定第一节点接收报文时的接口与转发该报文时的出接口是否一致,确定报文的转发路径中是否存在环路,在报文的转发路径中存在环路的情况下,进一步调整报文的转发路径,如将报文沿备路径转发、将报文丢弃等,从而及时地破坏报文转发路径中的环路,避免了端口堵塞,业务丢包等问题。
[0113]
下文将结合图10和图11详细说明本技术实施例提供的环路的检测装置。
[0114]
图10是本技术实施例提供的环路的检测装置1000的示意性框图。如图10所示,该装置1000可以包括:收发单元1010和处理单元1020。该装置1000中的各单元可用于实现图6所示的方法600中第一节点执行的相应流程。
[0115]
当该装置1000用于执行上述方法实施例中第一节点执行的步骤时,其中,收发单元1010可用于从第一接口接收来自第二节点的报文,该报文外层封装node sid,该node sid用于标识目的节点;处理单元1020可用于基于node sid,确定用于转发报文的出接口是第一接口;还可以用于确定报文的转发路径中存在环路。具体参见方法实施例中的详细描述,此处不作赘述。
[0116]
应理解,各单元执行上述相应步骤的具体过程在上述方法实施例中已经详细说明,为了简洁,在此不再赘述。
[0117]
还应理解,本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,
实际实现时可以有另外的划分方式。另外,在本技术各个实施例中的各功能单元可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0118]
图11是本技术实施例提供的环路的检测装置1100的另一示意性框图。该装置1100可以为芯片系统,或者,也可以为配置了芯片系统,以用于实现上述方法实施例中环路的检测功能的装置。在本技术实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立元器件。
[0119]
如图11所示,该装置1100可以包括处理器1110和通信接口1120。其中,通信接口1120可用于通过传输介质和其它设备进行通信,从而用于装置1100中的装置可以和其它设备进行通信。所述通信接口1120例如可以是收发器、接口、总线、电路或者能够实现收发功能的装置。处理器1110可利用通信接口1120输入输出数据,并用于实现图6对应的实施例中所述的环路的检测方法。具体地,该装置1100可用于实现上述方法实施例第一节点的功能。
[0120]
示例性地,若该装置1100用于实现本技术实施例提供的方法中第一节点的功能,该处理器1110可用于控制通信接口1120接收来自第二节点的报文,所述报文外层封装node sid,该node sid用于标识目的节点;该处理器1110还可用于基于node sid,确定用于转发报文的出接口是第一接口;还可以用于确定报文的转发路径中存在环路。具体参见方法实施例中的详细描述,此处不作赘述。
[0121]
可选地,该装置1100还包括至少一个存储器1130,用于存储程序指令和/或数据。存储器1130和处理器1110耦合。本技术实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器1110可能和存储器1130协同操作。处理器1110可能执行存储器1130中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
[0122]
本技术实施例中不限定上述处理器1110、通信接口1120以及存储器1130之间的具体连接介质。本技术实施例在图11中以处理器1110、通信接口1120以及存储器1130之间通过总线1140连接。总线1140在图11中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0123]
本技术还提供一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序被运行时,使得计算机执行图6所示实施例的方法。
[0124]
本技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)。当所述计算机程序被运行时,使得计算机执行图6所示实施例的方法。
[0125]
应理解,本技术实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门电路或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中
的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0126]
还应理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0127]
本说明书中使用的术语“单元”、“模块”等,可用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。
[0128]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各种说明性逻辑块(illustrative logical block)和步骤(step),能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。在本技术所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0129]
所述作为分立部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0130]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0131]
在上述实施例中,各功能单元的功能可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令(程序)。在计算机上加载和执行所述计算机程序指令(程序)时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0132]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0133]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1