
1.本公开涉及通信技术,并且更具体地,涉及用于标签交换路径(lsp)路由跟踪(traceroute)的方法和网络节点。
背景技术:2.目前,分段路由(sr)lsp与软件定义网络(sdn)一起使用以实现业务工程(te)路径的网络编程。通过在网络节点(例如,标签交换路由器或lsr)处对分组报头中的分段的有序列表进行编码来建立sr-te lsp,以引导业务流。绑定分段(bs)可以用于sr-te lsp以提供缩放、网络不透明度和服务独立性。
3.请求注解(rfc)8029“detecting multi-protocol label switching(mpls)data-plane failures”公开了一种用于测试mpls lsp的lsp路由跟踪机制,其全部内容通过引用合并于此。在rfc 8029中,定义了“mpls回送请求”和“mpls回送应答”,并且mpls回送请求的报头中的生存时间(ttl)值由发起节点控制以用于逐跳故障定位。
4.rfc 8287“label switched path(lsp)ping/traceroute for segment routing(sr)igp-prefix and igp-adjacency segment identifiers(sids)with mpls data planes”将路由跟踪定义为一种用于按需检查基于sr的lsp中的失败的诊断工具,其全部内容通过引用合并于此。
5.互联网草案“draft-arora-mpls-spring-ttl-procedure-srte-paths-01,ttl procedures for sr-te paths in label switched path traceroute mechanisms,k.arora,et al.,february 2019”提出了一种对mpls数据面内的绑定sid(bsid)执行lsp路由跟踪的机制,其全部内容通过引用合并于此。根据该互联网草案,当通告bsid的网络节点在统一模型中操作时(参考rfc 3443“ttl processing in mpls networks”,其全部内容通过引用合并于此),它应当发送转发等价类(fec)堆栈改变子类型长度值(tlv),以便对由bsid表示的lsp(或被称为“隧道”)中的网络节点进行跟踪。另一方面,当通告bsid的网络节点在短管道模型中操作时(参考rfc 3443),它不应当发送fec堆栈改变子tlv,bsid被视为单跳,并且不对由bsid表示的lsp中的网络节点进行跟踪。
6.然而,期望使用路由跟踪机制以逐跳的方式跟踪由bsid表示的lsp中的网络节点,尤其是在短管道模型中,例如当通告bsid的网络节点和发起路由跟踪的网络节点在同一管理域中时。
技术实现要素:7.本公开的目的在于提供一种用于lsp路由跟踪的方法和网络节点,其能够以逐跳的方式跟踪由bsid表示的lsp中的网络节点,尤其是在短管道模型中。
8.根据本公开的第一方面,提供了一种在通告bsid的网络节点中的方法。该方法包括:接收包含第一目标fec堆栈的第一回送请求分组,该第一目标fec堆栈包括与bsid相关联的fec;以及响应于与第一回送请求分组相关联的ttl到期,向发起第一回送请求分组的
发起网络节点发送第一回送应答分组。第一回送应答分组包含指示该fec将被fec集合替换的指示符。
9.在实施例中,该指示符可以被包括在下游详细映射tlv中的fec堆栈改变子tlv中。
10.在实施例中,该方法还可以包括:接收包含第二标签堆栈和第二目标fec堆栈的第二回送请求分组,该第二标签堆栈包括对应于bsid的标签,并且该第二目标fec堆栈包括来自该fec集合的至少第一fec;以及响应于检测到与第二回送请求分组相关联的ttl到期,基于第二回送请求分组向下游网络节点发送第三回送请求分组。第三回送请求分组包含与fec集合相关联的第三标签堆栈和包括第一fec的第三目标fec堆栈。
11.在实施例中,与第三标签堆栈中的至少一个标签相关联的ttl值可以被配置为使得与第三回送请求分组相关联的ttl到期将发生在要由第三回送请求分组跟踪的网络节点处。要由第三回送请求分组跟踪的网络节点可以是与第一fec相关联的网络节点或在与第一fec相关联的网络节点上游的网络节点。
12.在实施例中,第二回送请求分组可以包含指示沿着由bsid表示的lsp从通告bsid的网络节点到要由第三回送请求分组跟踪的网络节点的跳数的值,并且与第三标签堆栈中的至少一个标签相关联的ttl值可以基于该值来配置。
13.在实施例中,可以在第二标签堆栈中与bsid相关联的ttl值中携带该值。
14.在实施例中,与第三标签堆栈中的至少一个标签相关联的ttl值可以进一步基于从通告bsid的网络节点或从与第三标签堆栈中紧接在与第一fec相关联的标签之外的标签相关联的网络节点到与第一fec相关联的网络节点的跳数来配置。
15.在实施例中,该方法还可以包括:从要由第三回送请求分组跟踪的网络节点接收第三回送应答分组;确定第三回送应答分组响应于第三回送请求分组;以及向发起网络节点发送响应于第二回送请求分组的第二回送应答分组。第二回送应答分组基于第三回送应答分组。
16.在实施例中,第二回送请求分组可以包含由发起网络节点发起的路由跟踪实例的第一标识符,第三回送请求分组可以包含映射到第一标识符的第二标识符,当第三回送应答分组包含与第二标识符一致的标识符时,可以确定第三回送应答分组响应于第三回送请求分组,并且可以以与第一标识符一致的标识符来发送第二回送应答分组。
17.在实施例中,第二回送请求分组可以包含发起网络节点的互联网协议(ip)地址作为源ip地址,第三回送请求分组可以包含该网络节点的ip地址作为源ip地址,并且可以使用发起网络节点的ip地址作为目的地ip地址来发送第二回送应答分组。
18.根据本公开的第二方面,提供了一种在发起lsp路由跟踪的网络节点中的方法。该方法包括:从通告bsid的网络节点接收响应于第一回送请求分组的第一回送应答分组。第一回送请求分组包含第一目标fec堆栈,第一目标fec堆栈包括与bsid相关联的fec,并且第一回送应答分组包含指示该fec将被fec集合替换的指示符。该方法还包括:发送包含基于该fec集合的第二目标fec堆栈的第二回送请求分组。第二回送请求分组还包含指示沿着由bsid表示的lsp从通告bsid的网络节点到要由第二回送请求分组跟踪的网络节点的跳数的值。
19.在实施例中,可以在第二回送请求分组中的标签堆栈中与bsid相关联的ttl值中携带该值。
20.在实施例中,该方法还可以包括:配置与标签堆栈中对应于bsid的标签之外的至少一个标签相关联的ttl值,使得与第二回送请求分组相关联的ttl到期将发生在通告bsid的网络节点处。
21.在实施例中,配置操作可以包括:添加与ttl值1相关联的显式空标签,作为标签堆栈中紧接在对应于bsid的标签之外的标签。
22.在实施例中,可以响应于以下来执行添加操作:确定当通告bsid的网络节点接收到第二回送请求时,标签堆栈中对应于bsid的标签之外的一个或多个标签中的每个标签将已经被弹出。
23.在实施例中,确定当通告bsid的网络节点接收到第二回送请求时标签堆栈中对应于bsid的标签之外的一个或多个标签中的每个标签将已经被弹出的操作可以包括:确定标签堆栈中紧接在bsid之外的标签与通告bsid的网络节点的邻接sid或倒数第二跳弹出(php)启用的节点sid相关联。
24.在实施例中,该方法还可以包括:从通告bsid的网络节点接收响应于第二回送请求分组的第二回送应答分组;以及发送包含另一值的另一回送请求分组,该另一值指示沿着由bsid表示的lsp从通告bsid的网络节点到要跟踪的下一网络节点的跳数。
25.根据本公开的第三方面,提供了一种网络节点。该网络节点包括通信接口、处理器和存储器。存储器存储由处理器可执行的指令,由此网络节点操作用于执行根据上述第一方面和第二方面中的任一方面的方法。
26.根据本公开的第四方面,提供了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序指令。计算机程序指令在由网络节点中的处理器执行时,使网络节点执行根据上述第一方面和第二方面中的任一方面的方法。
27.利用本公开的实施例,当通告bsid的网络节点接收到包含包括与bsid相关联的fec的目标fec堆栈的回送请求分组时,它可以响应于与该回送请求分组相关联的ttl到期而向发起回送请求分组的发起网络节点发送回送应答分组。回送应答分组可以包含指示该fec将被fec集合替换的指示符。在接收到包含该指示符的回送应答分组时,发起网络节点可以发送另外的回送请求分组,该另外的回送请求分组均包含基于该fec集合的目标fec堆栈,用于沿着由bsid表示的lsp对网络节点进行逐跳路由跟踪。在接收到该另外的回送请求分组中的每一个时,通告bsid的网络节点可以充当代理,该代理沿着lsp发送回送请求分组,从lsp中的网络节点接收回送应答分组并且将回送应答分组转发给发起网络节点。以这种方式,发起方网络节点可以以逐跳的方式跟踪lsp中的网络节点。
附图说明
28.根据以下参考附图对实施例的描述,以上及其他目的、特征和优点将更为明显,在附图中:
29.图1是示出了根据本公开的实施例的用于lsp路由跟踪的方法的流程图;
30.图2是示出了根据本公开的实施例的fec堆栈改变子tlv的示意图;
31.图3是示出了根据本公开的另一实施例的用于lsp路由跟踪的方法的流程图;
32.图4是示出了根据本公开的lsp路由跟踪的示例的示意图;
33.图5是根据本公开的实施例的网络节点的框图;以及
34.图6是根据本公开的另一实施例的网络节点的框图。
具体实施方式
35.在下文中,说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括具体特征、结构或特性,但是不一定每个实施例包括该具体特征、结构或特性。此外,这些短语不必指同一实施例。此外,当结合实施例描述具体特征、结构或特性时,应认为结合其他实施例(不管是否是显式描述的)来实现这种特征、结构或特性是在本领域技术人员的知识内的。
36.应理解,尽管术语“第一”和“第二”等可以在本文中用于描述各个元件,这些元件不应受这些术语限制。这些术语仅用来将元件彼此区分。例如,不脱离示例实施例的范围,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件。如本文所使用的,术语“和/或”包括一个或多个相关列出词语的任何和所有组合。
37.本文使用的术语仅仅是为了描述具体实施例的目的,而非意在限制示例实施例。如本文所使用的,单数形式“一”、“一个”和“所述”旨在还包括复数形式,除非上下文另有明确指示。将进一步理解的是,当在本文中使用时,词语“包含”、“具有”、“包括”指明所陈述的特征、元件和/或组件等的存在,但不排除存在或添加一个或多个其它特征、元件、组件和/或其组合。
38.在下面的描述和权利要求中,除非另外定义,否则本文中所使用的所有技术和科学术语具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。
39.图1是示出了根据本公开的实施例的用于lsp路由跟踪的方法100的流程图。方法100可以在通告bsid的网络节点(例如,lsr)处执行(为了简单起见,该网络节点在下文中被称为“通告节点”)。
40.在框110处,接收第一回送请求分组。第一回送请求分组包含第一目标fec堆栈,该第一目标fec堆栈包括与bsid相关联的fec。
41.在框120处,响应于与第一回送请求分组相关联的ttl到期,向发起第一回送请求分组的发起网络节点发送第一回送应答分组。第一回送应答分组包含指示该fec将被fec集合替换的指示符。
42.这里,ttl到期意味着与回送请求分组中的标签堆栈的最外标签相关联的ttl值或与标签堆栈中要用于转发的标签相关联的ttl值在递减1之后变为零(0)。
43.在框120中,指示符可以被包括在下游详细映射tlv中的fec堆栈改变子tlv中。fec堆栈改变子tlv在rfc 8029中定义。根据rfc 8029,被跟踪的网络节点在其下游节点具有与在回送请求中接收到的fec堆栈不同的fec堆栈时将该子tlv编码在回送应答中。利用回送应答中的该信息,发起网络节点知道如何操纵下一回送请求中的ttl值以正确地跟踪下一网络节点。该机制适用于使用节点分段或邻接分段的sr-te路径,但是通常它不适用于绑定分段,因为发起网络节点不知道由于在远程bsid通告节点处用sid的集合替换该bsid而导致的标签堆栈改变。
44.图2示出了根据本公开的实施例的fec堆栈改变子tlv的示例性格式。如图所示,在fec堆栈改变子tlv中引入b比特,即上述指示符。例如,如果要在fec堆栈改变中弹出的fec是与bsid相关联的fec,则设置了b比特;否则未设置b比特。
45.一旦被设置,b比特就向发起网络节点通知fec堆栈改变是用fec集合替换与bsid相关联的fec的结果,以及通告节点能够充当用于代表发起节点沿着由bsid表示的lsp跟踪网络节点的代理。
46.因此,通告节点然后可以接收从发起网络节点发起的第二回送请求分组。第二回送请求分组包含第二标签堆栈和第二目标fec堆栈。第二标签堆栈包括对应于bsid的标签,并且第二目标fec堆栈包括来自fec集合的至少第一fec。响应于检测到与第二回送请求分组相关联的ttl到期,通告节点可以基于第二回送请求分组向下游网络节点发送第三回送请求分组。第三回送请求分组包含与fec集合相关联的第三标签堆栈和包括第一fec的第三目标fec堆栈。在示例中,第三目标fec堆栈可以与第二目标fec堆栈相同。
47.在示例中,第二回送请求分组可以包含由发起网络节点发起的路由跟踪实例的第一标识符,并且第三回送请求分组可以包含映射到第一标识符的第二标识符。此外,第二回送请求分组可以包含发起网络节点的ip地址作为源ip地址,并且第三回送请求分组可以包含通告节点的ip地址作为源ip地址。
48.例如,通告节点可以从第二回送请求分组中提取发送方句柄(被表示为ini_sh)和源ip地址(被表示为ini_sip),指派新的发送方句柄(被表示为new_sh)以在第三回送请求分组中使用,以及维护{ini_sh,ini_sip}与{new_sh}之间的映射。
49.这里,与第三标签堆栈中的至少一个标签相关联的ttl值可以被配置为使得与第三回送请求分组相关联的ttl到期将发生在要由第三回送请求分组跟踪的网络节点处。要由第三回送请求分组跟踪的网络节点可以是与第一fec相关联的网络节点或在与第一fec相关联的网络节点上游的网络节点。
50.在示例中,第二回送请求分组可以包含指示沿着由bsid表示的lsp从通告节点到要由第三回送请求分组跟踪的网络节点的跳数的值(在下文中被称为跳指示符或hi)。例如,可以在第二标签堆栈中与bsid相关联的ttl值中携带该值。因此,可以基于该值来配置与第三标签堆栈中的至少一个标签相关联的ttl值。这里,可以进一步基于从通告节点或从与第三标签堆栈中紧接在与第一fec相关联的标签之外的标签相关联的网络节点到与第一fec相关联的网络节点的跳数来配置与第三标签堆栈中的至少一个标签相关联的ttl值。
51.例如,假设第三标签堆栈是{label1,label2,
…
,labelm},其中m表示第三标签堆栈中的标签数量,通告节点可以维护本地记录{nhop1,nhop2,
…
,nhopm},其中nhopm(1≤m≤m)表示从与label
m-1
相关联的节点到与labelm相关联的节点的跳数(nhop1表示从通告节点到与label1相关联的节点的跳数)。在示例中,nhop1,nhop2,
…
,nhopm中的每一个最初可以被设置为零,并且与第三标签堆栈中的labelm相关联的ttl值(被表示为ttlm)可以被配置为:
52.ttlm=255,如果nhopm≠0,或
53.如果nhopm=0,
54.其中hi是第二回送请求分组中的hi的值。
55.在示例中,除了发送方句柄、源ip地址、标签堆栈和与标签堆栈中的标签相关联的ttl值之外,第三回送请求分组可以与第二回送请求分组基本上相同。
56.然后,通告节点可以从要由第三回送请求分组跟踪的网络节点接收第三回送应答分组。通告节点可以例如通过确定第三回送应答分组包含与第二标识符一致的标识符来确定第三回送应答分组响应于第三回送请求分组。接下来,通告节点可以向发起网络节点发
送响应于第二回送请求分组的第二回送应答分组。第二回送应答分组基于第三回送应答分组。例如,可以使用发起网络节点的ip地址作为目的地ip地址来发送第二回送应答分组,并且第二回送应答分组可以包含与第一标识符一致的标识符,使得发起网络节点可以确定第二回送应答分组响应于第二回送请求分组。
57.例如,利用{ini_sh,ini_sip}与{new_sh}之间的上述映射,在接收到包含new_sh的第三回送应答分组时,通告节点确定第三回送应答分组响应于第三回送请求分组,并且使用ini_sh作为标识符和ini_sip作为目的地ip地址来发送第二回送应答分组。在示例中,除了标识符和目的地ip地址之外,第二回送应答分组可以与第三回送应答分组基本上相同。
58.在示例中,当第三回送应答分组包含指示应答网络节点是操作类型为pop的第一fec的出口节点的fec堆栈改变子tlv时,通告节点可以基于与第三回送请求分组中的labelm相关联的ttl值来更新nhopm的记录(假设应答网络节点对应于labelm)。
59.备选地,通告节点可以更新nhopm的记录,例如通过每当它接收到第三回送应答分组时将nhopm递增1。在这种情况下,可以引入出口标志,其被设置为false,除非第三回送应答分组指示应答网络节点是操作类型为pop的第一fec的出口节点。因此,上述ttl值ttlm可以被配置为:
60.ttlm=255,如果出口标志=true,或
61.如果出口标志=false。
62.图3是示出了根据本公开的实施例的用于lsp路由跟踪的方法300的流程图。方法300可以在发起lsp路由跟踪的网络节点(例如,lsr)处执行。
63.在框310处,从通告bsid的网络节点(在下文中该网络节点被称为“通告节点”)接收响应于第一回送请求分组的第一回送应答分组。第一回送请求分组包含第一目标fec堆栈,该第一目标fec堆栈包括与bsid相关联的fec。第一回送应答分组包含指示该fec将被fec集合替换的指示符。在示例中,指示符可以是如图2所示的b比特。
64.在框320处,发送第二回送请求分组。第二回送请求分组包含基于该fec集合的第二目标fec堆栈。第二回送请求分组还包含指示沿着由bsid表示的lsp从通告节点到要由第二回送请求分组跟踪的网络节点的跳数的值。在示例中,可以在第二回送请求分组中的标签堆栈中与bsid相关联的ttl值中携带该值。
65.在示例中,与标签堆栈中对应于bsid的标签之外的至少一个标签相关联的ttl值可以被配置为使得与第二回送请求分组相关联的ttl到期将发生在通告节点处。例如,可以添加与ttl值1相关联的显式空标签,作为标签堆栈中紧接在对应于bsid的标签之外的标签。可以响应于确定当通告节点接收到第二回送请求时标签堆栈中对应于bsid的标签之外的一个或多个标签中的每个标签将已经被弹出(例如,响应于确定标签堆栈中紧接在bsid之外的标签与通告节点的邻接sid或倒数第二跳弹出(php)启用的节点sid相关联)来添加显式空标签。备选地,可以总是添加显式空标签来确保与第二回送请求分组相关联的ttl到期将发生在通告节点处。
66.然后,发起网络节点可以从通告节点接收响应于第二回送请求分组的第二回送应答分组。接下来,发起网络节点可以发送包含另一值的另一回送请求分组,该另一值指示沿着由bsid表示的lsp从通告节点到要跟踪的下一网络节点的跳数。在示例中,该另一值可以
通过将该值递增1来获得。
67.在下文中,将参考图4进一步说明上述方法100和300,图4示出了lsp路由跟踪的示例。在该示例中,示出了五个网络节点(例如,lsr)r1、r2、r3、r4和r5,并且它们各自的标签是501、502、503、504和505。这里,为了简单起见,在以下描述中,标签不与它们对应的sid和相关联的fec进行区分。例如,r1具有标签501,而对应的sid和相关联的fec也被表示为501。在该示例中,r1是发起lsp路由跟踪的发起网络节点,并且r3是通告bsid 7701的通告节点,该bsid 7701可以用两个节点sid 404和405替换。在图4中,标注(x,y)表示标签x及其相关联的ttl值y。这里假设要跟踪的lsp被表示为标签堆栈{503,7701}。
68.如图4所示,在4.1处,对于跳1,r1发送具有标签堆栈{(503,1),(7701,0)}和目标fec堆栈(被表示为t-fec){503,7701}的回送请求。r2接收该回送请求并且检测tll到期(对于最外标签503,ttl=1),然后验证最外fec并且确定其是针对最外fec 503的php节点。在4.2处,r2然后向r1发送回送应答,其包含p比特,该p比特指示在下游详细映射tlv中的下游映射对象标志(ds标志)中针对503是php启用的。
69.在4.3处,对于跳=2,r1发送具有标签堆栈{(503,2),(7701,1)}和t-fec{503,7701}的下一回送请求。r2接收该回送请求,在启用php时弹出标签503,并且在4.4处将回送请求转发到r3。在接收到回送请求时,r3检测tll到期(对于最外标签7701,ttl=1),查看最外fec 503并且知道它是最外fec的出口节点。r3然后弹出fec503,继续查看下一fec 7701并且知道它是针对bsid 7701的通告节点,该bsid 7701将被节点sid列表{404,405}替换。在4.5处,r3向r1发送回送应答,其包含返回代码15(具有fec改变的标签交换)和以下fec堆栈改变子tlv:
70.针对节点sid 503的操作类型为“pop”的fec堆栈改变,
71.针对bsid 7701的操作类型为“pop”的fec堆栈改变,其中设置了b比特,
72.针对节点sid 404的操作类型为“push”的fec堆栈改变,以及
73.针对节点sid 405的操作类型为“push”的fec堆栈改变。
74.在接收到回送应答时,r1查看fec堆栈改变子tlv并且发现fec503被弹出,因此它知道r3是针对sid 503的出口节点。r1还发现与弹出的fec 7701相关联的b比特,因此r1知道7701是可以被转换成节点sid列表{404,405}的bsid,以及知道r3是针对bsid 7701的通告节点并且能够充当用于沿着由{404,405}表示的lsp跟踪网络节点的代理。结果,在4.6处,对于跳3,r1发送具有标签堆栈{(503,2),(显式空,1),(7701,1)}和t-fec{404,405}的下一回送请求,其中标签7701的ttl值作为hi(即,hi=1)。r2接收该回送请求,在启用php时弹出标签503,并且在4.7处将回送请求转发到r3。在接收到回送请求时,r3检测tll到期(对于最外标签显式空,ttl=1),基于所接收的回送请求生成新的回送请求,并且在4.8处将其发送给下游。新的回送请求与所接收的回送请求基本上相同,除了它具有标签堆栈{(404,1),(405,0)}并且包含新的发送方句柄作为路由跟踪实例标识符和r3的ip地址作为其源ip地址。在接收到新的回送请求时,r4检测tll到期(对于最外标签404,ttl=1),查看最外fec 404并且知道它是针对最外fec的出口节点。在4.9处,r4向r3发送回送应答(使用r3的ip地址作为其目的地ip地址),其包含返回代码15(具有fec改变的标签交换)和以下fec堆栈改变子tlv:
75.针对节点sid 404的操作类型为“pop”的fec堆栈改变。
76.在接收到回送应答时,r3例如基于回送应答中与新的发送方句柄一致的发送方句柄来确定它响应于在4.8处发送的回送请求,并且知道节点sid 404被弹出。因此,r3用{label1=404,nhop1=1}来更新其本地记录。在4.10处,r3然后发送响应于在4.6处接收到的回送请求的回送应答。该回送应答与在4.9处接收到的回送应答基本上相同,除了它具有r1的ip地址作为其目的地ip地址。
77.在接收到回送应答时,r1从fec堆栈改变子tlv中知道节点sid404被弹出,并且从返回代码中知道尚未到达lsp{503,7701}的出口节点并且它需要继续路由跟踪。在4.11处,对于跳4,r1发送具有标签堆栈{(503,2),(显式空,1),(7701,2)}和t-fec 405的下一回送请求,其中标签7701的ttl值作为hi(即,hi=2)。r2接收该回送请求,在启用php时弹出标签503,并且在4.12处将回送请求转发到r3。在接收到回送请求时,r3检测tll到期(对于最外标签显式空,ttl=1),基于所接收的回送请求生成新的回送请求,并且在4.13处将其发送给下游。新的回送请求与所接收的回送请求基本上相同,除了它具有标签堆栈{(404,255),(405,1)}并且包含新的发送方句柄作为路由跟踪实例标识符和r3的ip地址作为其源ip地址。这里,与标签405相关联的tll值被计算为:ttl2=hi-nhop1=1。然后,r4简单地从标签堆栈中弹出标签404并且在4.14处将新的回送请求转发给下游。在接收到新的回送请求时,r5检测tll到期(对于最外标签405,ttl=1),查看最外fec 405并且知道它是针对最外fec的出口节点以及知道在t-fec中没有另外的fec。在4.15处,r5向r3发送回送应答(使用r3的ip地址作为其目的地ip地址),其包含返回代码3(应答路由器是针对堆栈深度《2》处的fec的出口)和以下fec堆栈改变子tlv:
78.针对节点sid 405的操作类型为“pop”的fec堆栈改变。
79.在接收到回送应答时,r3例如基于回送应答中与新的发送方句柄一致的发送方句柄来确定它响应于在4.13处发送的回送请求,并且知道节点sid 405被弹出。因此,r3用{label2=405,nhop2=1}来更新其本地记录。在4.16处,r3然后发送响应于在4.12处接收到的回送请求的回送应答。该回送应答与在4.15处接收到的回送应答基本上相同,除了它具有r1的ip地址作为其目的地ip地址。在接收到回送应答时,r1从fec堆栈改变子tlv中知道节点sid 405被弹出,并且从返回代码中知道已经到达lsp{503,7701}的出口节点并且路由跟踪已经完成。
80.这里,应当注意,虽然在图4所示的示例中,r4是r3的下一跳下游节点,并且r5是r4的下一跳下游节点,但是在r3和r4之间可以存在一个或多个中间节点和/或在r4和r5之间可以存在一个或多个中间节点,并且简单地遵循rfc 8029中阐述的规则,本公开同样地适用于这些情况中的任一种。
81.对应于如上所述的方法100和/或300,提供了网络节点。图5是根据本公开的实施例的网络节点500的框图。
82.网络节点500可以是通告bsid的网络节点(例如,lsr),并且可以被配置为执行如上面结合图1描述的方法100。如图5所示,网络节点500包括接收单元510,其被配置为接收包含第一目标fec堆栈的的第一回送请求分组,该第一目标fec堆栈包括与bsid相关联的fec。网络节点500还包括发送单元520,其被配置为响应于与第一回送请求分组相关联的ttl到期而向发起第一回送请求分组的发起网络节点发送第一回送应答分组。第一回送应答分组包含指示该fec将被fec集合替换的指示符。
83.在实施例中,该指示符可以被包括在下游详细映射tlv中的fec堆栈改变子tlv中。
84.在实施例中,接收单元510还可以被配置为接收包含第二标签堆栈和第二目标fec堆栈的第二回送请求分组,该第二标签堆栈包括对应于bsid的标签,并且该第二目标fec堆栈包括来自fec集合的至少第一fec。发送单元520还可以被配置为响应于检测到与第二回送请求分组相关联的ttl到期而基于第二回送请求分组向下游网络节点发送第三回送请求分组。第三回送请求分组包含与fec集合相关联的第三标签堆栈和包括第一fec的第三目标fec堆栈。
85.在实施例中,与第三标签堆栈中的至少一个标签相关联的ttl值可以被配置为使得与第三回送请求分组相关联的ttl到期将发生在要由第三回送请求分组跟踪的网络节点处。要由第三回送请求分组跟踪的网络节点可以是与第一fec相关联的网络节点或在与第一fec相关联的网络节点上游的网络节点。
86.在实施例中,第二回送请求分组可以包含指示沿着由bsid表示的lsp从通告bsid的网络节点到要由第三回送请求分组跟踪的网络节点的跳数的值,并且与第三标签堆栈中的至少一个标签相关联的ttl值可以基于该值来配置。
87.在实施例中,可以在第二标签堆栈中与bsid相关联的ttl值中携带该值。
88.在实施例中,与第三标签堆栈中的至少一个标签相关联的ttl值可以进一步基于从通告bsid的网络节点或从与第三标签堆栈中紧接在与第一fec相关联的标签之外的标签相关联的网络节点到与第一fec相关联的网络节点的跳数来配置。
89.在实施例中,接收单元510还可以被配置为从要由第三回送请求分组跟踪的网络节点接收第三回送应答分组。网络节点500还可以包括确定单元,其被配置为确定第三回送应答分组响应于第三回送请求分组。发送单元520还可以被配置为向发起网络节点发送响应于第二回送请求分组的第二回送应答分组。第二回送应答分组基于第三回送应答分组。
90.在实施例中,第二回送请求分组可以包含由发起网络节点发起的路由跟踪实例的第一标识符,第三回送请求分组可以包含映射到第一标识符的第二标识符,当第三回送应答分组包含与第二标识符一致的标识符时,可以确定第三回送应答分组响应于第三回送请求分组,并且可以以与第一标识符一致的标识符来发送第二回送应答分组。
91.在实施例中,第二回送请求分组可以包含发起网络节点的ip地址作为源ip地址,第三回送请求分组可以包含该网络节点的ip地址作为源ip地址,并且可以使用发起网络节点的ip地址作为目的地ip地址来发送第二回送应答分组。
92.备选地,网络节点500可以是发起lsp路由跟踪的网络节点(例如,lsr),并且可以被配置为执行如上面结合图3描述的方法300。如图5所示,网络节点500包括接收单元510,其被配置为从通告bsid的网络节点接收响应于第一回送请求分组的第一回送应答分组。第一回送请求分组包含第一目标fec堆栈,第一目标fec堆栈包括与bsid相关联的fec,并且第一回送应答分组包含指示该fec将被fec集合替换的指示符。网络节点500还包括发送单元520,其被配置为发送包含基于该fec集合的第二目标fec堆栈的第二回送请求分组。第二回送请求分组还包含指示沿着由bsid表示的lsp从通告bsid的网络节点到要由第二回送请求分组跟踪的网络节点的跳数的值。
93.在实施例中,可以在第二回送请求分组中的标签堆栈中与bsid相关联的ttl值中携带该值。
94.在实施例中,网络节点500还可以包括配置单元,其被配置为配置与标签堆栈中对应于bsid的标签之外的至少一个标签相关联的ttl值,使得与第二回送请求分组相关联的ttl到期将发生在通告bsid的网络节点处。
95.在实施例中,配置单元可以被配置为添加与ttl值1相关联的显式空标签,作为标签堆栈中紧接在对应于bsid的标签之外的标签。
96.在实施例中,可以响应于以下来添加显式空标签:确定当通告bsid的网络节点接收到第二回送请求时,标签堆栈中对应于bsid的标签之外的一个或多个标签中的每个标签将已经被弹出。
97.在实施例中,确定当通告bsid的网络节点接收到第二回送请求时标签堆栈中对应于bsid的标签之外的一个或多个标签中的每个标签将已经被弹出的操作可以包括:确定标签堆栈中紧接在bsid之外的标签与通告bsid的网络节点的邻接sid或倒数第二跳弹出(php)启用的节点sid相关联。
98.在实施例中,接收单元510还可以被配置为从通告bsid的网络节点接收响应于第二回送请求分组的第二回送应答分组。发送单元520还可以被配置为发送包含另一值的另一回送请求分组,该另一值指示沿着由bsid表示的lsp从通告bsid的网络节点到要跟踪的下一网络节点的跳数。
99.单元510-520可以例如通过以下一个或多个实现为纯硬件解决方案或软件和硬件的组合:处理器或微处理器和适当软件以及用于存储软件的存储器、可编程逻辑器件(pld)或其他电子组件或被配置为执行上述以及例如在图1或图3中示出的动作的处理电路。
100.图6是根据本公开的另一实施例的网络节点600的框图。
101.网络节点600包括通信接口610、处理器620和存储器630。存储器630包含由处理器620可执行的指令,由此网络节点600操作用于执行例如前面结合图1或图3描述的过程的动作。
102.例如,网络节点600可以是通告bsid的网络节点(例如,lsr)。具体地,存储器630可以包含由处理器620可执行的指令,由此网络节点600操作用于:接收包含第一目标fec堆栈的第一回送请求分组,该第一目标fec堆栈包括与bsid相关联的fec;以及响应于与第一回送请求分组相关联的ttl到期,向发起第一回送请求分组的发起网络节点发送第一回送应答分组。第一回送应答分组包含指示该fec将被fec集合替换的指示符。
103.在实施例中,该指示符可以被包括在下游详细映射tlv中的fec堆栈改变子tlv中。
104.在实施例中,存储器630还可以包含由处理器620可执行的指令,由此网络节点600操作用于:接收包含第二标签堆栈和第二目标fec堆栈的第二回送请求分组,该第二标签堆栈包括对应于bsid的标签,并且该第二目标fec堆栈包括来自该fec集合的至少第一fec;以及响应于检测到与第二回送请求分组相关联的ttl到期,基于第二回送请求分组向下游网络节点发送第三回送请求分组。第三回送请求分组包含与fec集合相关联的第三标签堆栈和包括第一fec的第三目标fec堆栈。
105.在实施例中,与第三标签堆栈中的至少一个标签相关联的ttl值可以被配置为使得与第三回送请求分组相关联的ttl到期将发生在要由第三回送请求分组跟踪的网络节点处。要由第三回送请求分组跟踪的网络节点可以是与第一fec相关联的网络节点或在与第一fec相关联的网络节点上游的网络节点。
106.在实施例中,第二回送请求分组可以包含指示沿着由bsid表示的lsp从通告bsid的网络节点到要由第三回送请求分组跟踪的网络节点的跳数的值,并且与第三标签堆栈中的至少一个标签相关联的ttl值可以基于该值来配置。
107.在实施例中,可以在第二标签堆栈中与bsid相关联的ttl值中携带该值。
108.在实施例中,与第三标签堆栈中的至少一个标签相关联的ttl值可以进一步基于从通告bsid的网络节点或从与第三标签堆栈中紧接在与第一fec相关联的标签之外的标签相关联的网络节点到与第一fec相关联的网络节点的跳数来配置。
109.在实施例中,存储器630还可以包含由处理器620可执行的指令,由此网络节点600操作用于:从要由第三回送请求分组跟踪的网络节点接收第三回送应答分组;确定第三回送应答分组响应于第三回送请求分组;以及向发起网络节点发送响应于第二回送请求分组的第二回送应答分组。第二回送应答分组基于第三回送应答分组。
110.在实施例中,第二回送请求分组可以包含由发起网络节点发起的路由跟踪实例的第一标识符,第三回送请求分组可以包含映射到第一标识符的第二标识符,当第三回送应答分组包含与第二标识符一致的标识符时,可以确定第三回送应答分组响应于第三回送请求分组,并且可以以与第一标识符一致的标识符来发送第二回送应答分组。
111.在实施例中,第二回送请求分组可以包含发起网络节点的ip地址作为源ip地址,第三回送请求分组可以包含该网络节点的ip地址作为源ip地址,并且可以使用发起网络节点的ip地址作为目的地ip地址来发送第二回送应答分组。
112.备选地,网络节点600可以是发起lsp路由跟踪的网络节点(例如,lsr)。具体地,存储器630可以包含由处理器620可执行的指令,由此网络节点600操作用于:从通告bsid的网络节点接收响应于第一回送请求分组的第一回送应答分组。第一回送请求分组包含第一目标fec堆栈,第一目标fec堆栈包括与bsid相关联的fec,并且第一回送应答分组包含指示该fec将被fec集合替换的指示符。存储器630包含由处理器620可执行的指令,由此网络节点600操作用于:发送包含基于该fec集合的第二目标fec堆栈的第二回送请求分组。第二回送请求分组还包含指示沿着由bsid表示的lsp从通告bsid的网络节点到要由第二回送请求分组跟踪的网络节点的跳数的值。
113.在实施例中,可以在第二回送请求分组中的标签堆栈中与bsid相关联的ttl值中携带该值。
114.在实施例中,存储器630还可以包含由处理器620可执行的指令,由此网络节点600操作用于:配置与标签堆栈中对应于bsid的标签之外的至少一个标签相关联的ttl值,使得与第二回送请求分组相关联的ttl到期将发生在通告bsid的网络节点处。
115.在实施例中,配置操作可以包括:添加与ttl值1相关联的显式空标签,作为标签堆栈中紧接在对应于bsid的标签之外的标签。
116.在实施例中,可以响应于以下来执行添加操作:确定当通告bsid的网络节点接收到第二回送请求时,标签堆栈中对应于bsid的标签之外的一个或多个标签中的每个标签将已经被弹出。
117.在实施例中,确定当通告bsid的网络节点接收到第二回送请求时标签堆栈中对应于bsid的标签之外的一个或多个标签中的每个标签将已经被弹出的操作可以包括:确定标签堆栈中紧接在bsid之外的标签与通告bsid的网络节点的邻接sid或倒数第二跳弹出
(php)启用的节点sid相关联。
118.在实施例中,存储器630还可以包含由处理器620可执行的指令,由此网络节点600操作用于:从通告bsid的网络节点接收响应于第二回送请求分组的第二回送应答分组;以及发送包含另一值的另一回送请求分组,该另一值指示沿着由bsid表示的lsp从通告bsid的网络节点到要跟踪的下一网络节点的跳数。
119.本公开还提供了非易失性或易失性存储器(例如,非暂时性计算机可读存储介质、电可擦除可编程只读存储器(eeprom)、闪存和硬盘驱动器)的形式的至少一个计算机程序产品。计算机程序产品包括计算机程序。计算机程序包括:在由处理器620执行时使网络节点600执行例如先前结合图1或图3描述的过程的动作的代码/计算机可读指令。
120.计算机程序产品可以被配置为以计算机程序模块构造的计算机程序代码。计算机程序模块可以基本上执行图1或图3所示流程的动作。
121.处理器可以是单个cpu(中央处理单元),但是还可以包括两个或更多个处理单元。例如,处理器可以包括通用微处理器;指令集处理器和/或相关芯片集和/或专用微处理器,例如专用集成电路(asic)。处理器还可以包括用于高速缓存目的的板载存储器。计算机程序可以由与处理器相连的计算机程序产品来承载。计算机程序产品可以包括存储计算机程序的非暂时性计算机可读存储介质。例如,计算机程序产品可以是闪存、随机存取存储器(ram)、只读存储器(rom)或eeprom,并且上述计算机程序模块在备选实施例中可以分布在以存储器的形式的不同的计算机程序产品上。
122.以上已经参考其实施例描述了本公开。应当理解,在不脱离本公开的精神和范围的情况下,本领域技术人员可以进行各种修改、替换和添加。因此,本公开的范围不限于上述特定实施例,而是仅由所附权利要求限定。