发送报文的方法、网络设备及计算机存储介质与流程

文档序号:25042348发布日期:2021-05-14 11:07阅读:138来源:国知局
发送报文的方法、网络设备及计算机存储介质与流程
发送报文的方法、网络设备及计算机存储介质
1.本申请要求于2018年09月06日提交的申请号为201811038578.0、发明名称为“一种路由震荡源查询方法、路由设备及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。本申请是于2019年4月29日提交国家知识产权局、申请号为201910357506.0、发明名称为“发送报文的方法、网络设备及计算机存储介质”的中国专利申请的分案申请,其全部内容通过引用结合在本申请中。
技术领域
2.本申请涉及通信技术领域,特别涉及一种发送报文的方法、网络设备及计算机存储介质。


背景技术:

3.随着协议的发展,网络中的某个网络设备在运行第一协议之后,可能需要与其他网络设备进行报文交互,以传输诊断数据等数据,从而使网络基于这些数据实现新的功能。比如,为了实现路由震荡溯源功能,采用边界网关协议(border gateway protocol,bgp)的网络设备可以通过报文将震荡源的信息传输至诊断发起设备,由诊断发起设备根据震荡源的信息进行故障诊断。目前,网络设备运行的第一协议还不支持传输这些数据,因此亟需研究一种发送报文的方法,用于传输这些数据。


技术实现要素:

4.本申请提供了一种发送报文的方法,可以提高发送报文的灵活性。所述技术方案如下:
5.第一方面,提供了一种发送报文的方法,该方法包括:网络设备生成第一报文,第一报文包括用于指示第一协议的字段,第一报文还包括携带第一协议的数据的字段,第一报文遵循的协议不同于第一协议;网络设备向对端网络设备发送第一报文。
6.在本申请中,网络设备可以通过第一报文向对端网络设备传输第一协议的数据。由于第一报文遵循的协议与第一协议不同,这样不管第一协议具体是什么协议,均可采用第一报文交互第一协议的数据。也即是,本申请提供了一种通用的协议,用于传输第一协议的数据,因此提高了发送报文的灵活性。
7.可选地,网络设备生成第一报文之前,该方法还包括:网络设备接收来自对端网络设备的第二报文,第二报文包括用于指示第一协议的字段,第二报文用于指示网络设备向对端网络设备反馈第一协议的数据,第二报文遵循的协议和第一报文遵循的协议相同;网络设备生成第一报文,包括:网络设备响应于第二报文,网络设备生成第一报文。
8.在本申请中,网络设备可以主动向对端网络设备发送第一报文,以传输第一协议的数据,比如,第一报文可以为通告报文。当然,网络设备还可以基于对端网络设备的请求(比如第二报文)发送第一报文,比如,第一报文可以为应答报文,进一步提高了发送第一报文的灵活性。
9.可选地,网络设备生成第一报文之前,该方法还包括:网络设备向对端网络设备发送第三报文,第三报文包括用于指示第一协议的字段,第三报文用于指示网络设备支持第一协议的数据的交互,第三报文遵循的协议和第一报文遵循的协议相同。其中,网络设备在与对端网络设备进行协商的过程中,可以通过上述方式向对端网络设备通知本端支持第一协议的数据的交互。
10.可选地,网络设备生成第一报文之前,该方法还包括:网络设备接收来自对端网络设备的第四报文,第四报文包括用于指示第一协议的字段,第四报文遵循的协议和第一报文遵循的协议相同;网络设备基于第四报文,确定对端网络设备支持第一协议的数据的交互。
11.在本申请中,网络设备与对端网络设备交互第一协议的数据之前,网络设备可以与对端网络设备进行协商,用于确定对端网络设备是否支持第一协议的数据的交互,通过这种方式,可以避免网络设备向对端网络设备发送对端网络设备不支持的数据,从而降低网络设备的功耗。
12.可选地,网络设备生成第一报文之前,该方法还包括:网络设备使能交互第一协议的数据的能力;网络设备向对端网络设备发送第五报文,第五报文包括用于指示第一协议的字段,第五报文还携带用于指示网络设备使能交互第一协议的数据的能力的字段,第五报文遵循的协议和第一报文遵循的协议相同。
13.进一步地,网络设备与对端网络设备交互第一协议的数据之前,网络设备可以开启交互第一协议的数据的能力,并通过第五报文通知对端网络设备本端已开启交互第一协议的数据的能力。
14.可选地,网络设备生成第一报文之前,该方法还包括:网络设备接收对端网络设备发送的第九报文,第九报文包括用于指示第一协议的字段,第九报文还携带用于指示对端网络设备使能交互第一协议的数据的能力的字段,第九报文遵循的协议和第一报文遵循的协议相同。
15.进一步地,网络设备与对端网络设备交互第一协议的数据之前,对端网络设备可以开启交互第一协议的数据的能力,并通过第九报文通知网络设备本端已开启交互第一协议的数据的能力。
16.可选地,网络设备向对端网络设备发送第五报文之后,该方法还包括:网络设备去使能交互第一协议的数据的能力;网络设备向对端网络设备发送第六报文,第六报文包括用于指示第一协议的字段,第六报文还携带用于指示网络设备去使能交互第一协议的数据的能力的字段,第六报文遵循的协议和第一报文遵循的协议相同。
17.进一步地,网络设备在开启交互第一协议的数据的能力之后,可以关闭交互第一协议的数据的能力,并通过第六报文通知对端网络设备本端已关闭交互第一协议的数据的能力。
18.可选地,网络设备向对端网络设备发送第五报文之后,该方法还包括:网络设备接收对端网络设备发送第十报文,第十报文包括用于指示第一协议的字段,第十报文还携带用于指示对端网络设备去使能交互第一协议的数据的能力的字段,第十报文遵循的协议和第一报文遵循的协议相同。
19.进一步地,对端网络设备在开启交互第一协议的数据的能力之后,可以关闭交互
第一协议的数据的能力,并通过第十报文通知网络设备本端已关闭交互第一协议的数据的能力。
20.可选地,网络设备向对端网络设备发送第一报文之后,该方法还包括:网络设备接收来自对端网络设备的第七报文,第七报文用于指示对端网络设备接收到第一报文,第七报文遵循的协议和第一报文遵循的协议相同。
21.进一步地,网络设备在向对端网络设备发送第一报文之后,网络设备可以通过第七报文确定对端网络设备接收到第一报文。
22.可选地,网络设备向对端网络设备发送第三报文之后,该方法还包括:网络设备接收来自对端网络设备的第八报文,第八报文用于指示对端网络设备接收到第三报文,第八报文遵循的协议和第一报文遵循的协议相同。同样地,对端网络设备在接收到网络设备发送的第三报文之后,对端网络设备可以向网络设备发送第八报文,用于通知网络设备本端接收到第三报文。
23.可选地,网络设备接收来自对端网络设备的第四报文之后,该方法还包括:网络设备向对端网络设备发送第十一报文,第十一报文用于指示网络设备接收到第四报文,第十一报文遵循的协议和第一报文遵循的协议相同。同样地,网络设备在接收到对端网络设备发送的第四报文之后,网络设备可以向对端网络设备发送第十一报文,用于通知对端网络设备本端接收到第四报文。
24.第二方面,提供了一种网络设备,所述网络设备具有实现上述第一方面中发送报文的方法行为的功能。所述网络设备包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的发送报文的方法。
25.第三方面,提供了一种网络设备,所述网络设备的结构中包括处理器和存储器,所述存储器用于存储支持网络设备执行上述第一方面所提供的发送报文的方法的程序,以及存储用于实现上述第一方面所提供的发送报文的方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
26.第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的发送报文的方法。
27.第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的发送报文的方法。
28.上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
29.图1是本申请实施例提供的一种网络系统示意图;
30.图2是本申请实施例提供的一种发送报文的方法流程图;
31.图3是本申请实施例提供的一种pap报文头的格式示意图;
32.图4是本申请实施例提供的一种协商交互过程示意图;
33.图5是本申请实施例提供的一种te诊断场景示意图;
34.图6是本申请实施例提供的一种通告过程的交互示意图;
35.图7是本申请实施例提供的一种查询应答过程的交互示意图;
36.图8为本申请实施例提供的一种协商流程的方法示意图;
37.图9为本申请实施例提供的去使能路由设备的查询路由震荡源的能力的方法流程示意图;
38.图10为本申请实施例提供的一种协商报文的格式的示意图;
39.图11为本申请实施例提供的一种路由震荡源查询方法的流程示意图;
40.图12为本申请实施例提供的一种数据报文的格式的示意图;
41.图13为本申请实施例提供的一种路由发布的方法流程示意图;
42.图14为本申请实施例提供的一种路由震荡源查询方法的流程示意图;
43.图15为本申请实施例提供的一种网络设备的结构示意图;
44.图16为本申请实施例提供的另一种网络设备的结构示意图;
45.图17为本申请实施例提供的另一种网络设备的结构示意图。
具体实施方式
46.为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
47.为便于理解本申请实施例,首先以图1中示出的适用于本申请实施例的通信系统为例进行说明。应理解,图1仅为便于理解而示例的简化示意图,该通信系统中还可以包括其他网络设备,图1中未予以画出。如图1所示,该通信系统中包括一个或多个自治系统(autonomous system,as),比如as100和as200。每个as中可以包括一个或多个路由设备,比如图1中位于as100中的路由设备101和路由设备102,以及位于as200中的路由设备103和路由设备104。同一个as中的不同的路由设备可以连接,不同的as中的不同的路由设备也可以连接。比如图1中路由设备101、路由设备102、路由设备103和路由设备104依次连接。路由发布方向为:路由设备104

路由设备103

路由设备102

路由设备101。
48.在实际应用中,可能由于多种原因导致路由震荡的发生,比如可能是某个路由设备之间的链路发生故障从而导致路由震荡(比如为图1中路由设备103和路由设备104之间的链路发生故障)。再比如也可能是某个路由设备发生故障(比如为图1中路由设备104发生故障)。再比如可能是由于配置问题导致路由震荡,例如:将bgp路由的优先级配置的高于静态路由,当bgp路由引入静态路由时,由于bgp路由优先级高于静态路由,因此会导致静态路由不活跃,进而使该静态路由被从bgp撤销,bgp路由不活跃,而bgp路由不活跃又回导致静态路由重新活跃,如此循环往复导致该bgp路由处于持续震荡状态。
49.当出现路由震荡情况时,若尽快排查出引起路由震荡的源设备(引起路由震荡的源设备在本申请实施例中也可以称为震荡源),则可以为维护人员尽快修复链路、恢复业务奠定基础。基于此,本申请实施例中提供一种发送报文的方法,以便于能够快速查找出震荡源。
50.在介绍本申请实施例之前,首先简单介绍几个相关概念。
51.bgp网络是指支持bgp协议的网络,例如:bgp网络、支持bgp协议的以太网虚拟专用网(ethernet virtual private network,evpn)、支持bgp协议的新一代组播虚拟专用网(new generation multicast vpn,ngmvpn)等。
52.中文中,路由没有区分名词和动词,当路由指名词时,对应英文是route;当路由指动词时,对应英文是routing。作为名词的路由(route)可以是指数据包从源地址传输到目的地址的路径。作为动词的路由(routing)可以是指通过互联的网络把数据包从源地址传输到目的地址的活动。本申请实施例中待查询路由可以是作为名词的一条路由。
53.路由设备属于网络层设备,提供路由和转发两种传输方式,可以决定数据包从来源端到目的端所经过的路由路径。本申请实施例中的路由设备还可以是指可以建立bgp协议邻居的路由设备,比如能建立bgp协议邻居的路由器、能建立bgp协议邻居的交换机等设备。本申请实施例中的第一路由设备、第二路由设备和第三路由设备为三个不同的路由设备。本申请实施例中的第一路由设备、第二路由设备和第三路由设备中的“第一”、“第二”和“第三”仅仅用于区别,无其它限制含义。
54.路由前缀,路由前缀用于指示待查询路由的网络协议(internet protocol,ip)地址和掩码。路由前缀的概念可以参见标准rfc6811中的描述:route prefix:the prefix derived from a route。在本申请中路由前缀也可以称为ip前缀或前缀信息。
55.地址族标识(address family identifier,afi)用于指示待查询路由所在的地址族。afi的概念可以参见标准rfc4271的描述。
56.子地址族标识(subsequent address family identifier,safi)用于指示待查询路由所在的子地址族。safi的概念可以参见标准rfc4271的描述。
57.路由标识(route distinguisher,rd)用于指示待查询路由的路由标识。rd的概念可以参见标准rfc4271的描述。
58.bgp邻居关系也成为bgp对等体关系,即bgp peer关系。a和b之间的bgp peer关系表示:a是b的bgp peer,并且b是a的bgp peer。
59.需要说明的是,本申请实施例提供的发送报文的方法可以应用在图1所示的场景中,也可以应用在其他场景中,具体细节将在下述实施例中详细说明,在此就先不阐述。
60.图2是本申请实施例提供的一种发送报文的方法流程图,应用于网络设备中,该网络设备可以为图1所示的通信系统中的路由设备。如图2所示,该方法包括如下步骤:
61.步骤201:网络设备生成第一报文,第一报文包括用于指示第一协议的字段,第一报文还包括携带第一协议的数据的字段,第一报文遵循的协议不同于第一协议。
62.第一协议是网络设备运行的协议。比如,第一协议可以为bgp,还可以为资源预留协议(resource reservation protocol,rsvp)等协议。网络设备在运行第一协议之后,产生的该协议相关的数据当前暂无协议支持其与其他网络设备交互。在本申请实施例中,将这类与第一协议运行相关的数据,例如报文的统计计数,设备对该协议的诊断信息等,统称为第一协议的数据。
63.由于第一协议当前还不完全支持本网络设备与其他网络设备进行第一协议的数据的交互,因此,本申请实施例提供了一个通用的可以为各种协议服务的协议:协议伺服协议(protocol aided protocol,pap)。通过pap,网络设备可以无需对第一协议进行扩展即可交互第一协议的数据。因此,当网络设备需要与对端网络设备交互第一协议的数据时,网络设备可以基于pap通过步骤201生成第一报文。也即是,第一报文遵循的协议为pap。
64.其中,第一协议的数据可以为:网络设备发送基于第一协议的报文的数量、接收到的基于第一协议的报文的数量、网络设备的配置信息存在错误、转发表中的至少一个表项、
与诊断有关的信息、第一协议的相关信息等数据。
65.上述与诊断有关的信息可以包括:bgp路由震荡溯源诊断信息的交互,rsvp

te隧道建立失败诊断信息的交互。具体的信息如下举例:头节点支持向下游节点通告rsvp诊断信息处理能力、pap支持rsvp通过pap通道发送接收诊断信息、支持下发处理诊断隧道建立失败命令行、支持下发诊断隧道震荡命令行、支持诊断建立失败、支持诊断标签交换路径(label switched path,lsp)震荡、诊断发起设备询问网络中的其他网络设备是否是震荡源、网络设备确定自身是震荡源等。
66.其中,上述诊断建立失败的场景可以包括:配置错误导致算路失败场景、基本配置缺失无法触发lsp建立场景、中间节点算路失败、头节点感知认证失败根因、头节点感知入接口没有使能rsvp根因、出接口没有使能rsvp、lsp建立超时、lsp路径超长、无法快速获取到报文被丢弃的节点或链路等场景。
67.上述诊断lsp震荡的场景可以包括:感知到出接口下线(down)拆除lsp场景、感知到邻居问好(hello)超时拆除lsp、上游节点感知到预留(resv)超时或者下游节点感知路径(path)超时拆除lsp、快速重路由(fast reroute,frr)切换后frr解绑定导致下线、双向转发检测(bidirectional forwarding detection,bfd)for rsvp报下线拆除lsp、支持诊断配置类触发拆除lsp场景、收到错包导致lsp建立失败或者lsp下线、控制器下发管理下线(admin_down)导致lsp下线需要记录根因、由于头节点套接字通道丢弃报文导致不上线(up)等场景。
68.另外,第一协议的相关信息可以包括rsvp支持触发套接字(socket)收发方向抓包、rsvp支持处理套接字抓包结果、协议栈套接字支持收发方向抓包以及抓包结果上送、支持tem和rsvp所有新增代码都受到特性开关控制、支持多vs、path或resv检测到网络协议(internet protocol,ip)冲突等信息。
69.另外,第一报文遵循的协议可以为pap。其中,第一报文遵循的协议可以通过端口标识来指示。比如,预先可以申请一个用户数据协议(user datagram protocol,udp)端口,该udp端口用于传输遵循pap协议生成的报文。
70.在本申请实施例中,遵循pap生成的报文包括pap报文头(header)和有效载荷(payload)。其中,有效载荷也可以称为pap消息数据,pap报文头也可以称为pap头,本申请实施例对此不做具体限定。
71.图3是本申请实施例提供的一种pap报文头的格式示意图。如图3所示,pap报文头包括报文序列号(sequence number)、报文类型(type)和报文总长度(total length)。其中,报文序列编号用于唯一标识一个报文,每发送一个报文,报文序列号加1。
72.其中,报文类型用于指示报文的类型,在本申请实施例中,用于交互第一协议的数据的报文的类型可以包括协商报文类型、查询报文类型、应答报文类型、通告报文类型以及ack报文类型。在一种可能的实现方式中,当报文类型对应的字段的值等于1时,表明当前报文类型为协商报文类型。当报文类型对应的字段的值等于2时,表明当前报文类型为查询报文类型。当报文类型对应的字段的值等于3时,表明当前报文类型为应答报文类型。当报文类型对应的字段的值等于4时,表明当前报文类型为通告报文类型。当报文类型对应的字段的值等于5时,表明当前报文类型为ack报文类型。当然,报文类型和对应的字段的值之间的也可以存在其他对应关系,在此就不再一一展开说明。
73.当然,在本申请实施例中,pap报文头的格式可以不限于图3所示的格式,任何能够实现交互第一协议的数据的pap报文头的格式均在本申请实施例的范围之内。
74.另外,有效载荷可以包括pap的版本号(version)、标志位(flag)、协议标识(protocol capability)、应用数据(appdata),应答报文序列号等字段中的一个或多个。
75.步骤202:网络设备向对端网络设备发送第一报文。
76.网络设备在通过步骤201生成第一报文之后,还可以通过步骤202发送第一报文。
77.其中,第一报文中的标志位可以用于指示需要回复ack报文或不需要回复ack报文。在一种可能的实现方式中,在网络设备通过上述步骤201向对端网络设备发送第一报文之后,为了使得网络设备能够及时了解到对端网络设备是否成功接收到第一协议的数据,可以将标志位设置为用于指示需要回复ack报文。此时,网络设备向对端网络设备发送第一报文之后,网络设备可以通过下述步骤203确定对端网络设备是否成功接收到第一报文。
78.步骤203:网络设备接收来自对端网络设备的第七报文,第七报文用于指示对端网络设备接收到第一报文,第七报文遵循的协议和第一报文遵循的协议相同。
79.此时,第七报文的类型可以为ack报文类型。网络设备接收来自对端网络设备的第七报文的实现方式可以为:如果网络设备在发送第一报文之后的第一参考时长内接收到对端网络设备发送的第七报文,则确定对端网络设备接收到第一报文。如果网络设备在发送第一报文后的第一参考时长内没有接收到第七报文,可以重新将第一报文发送至对端网络设备直至接收到ack报文或超过第一报文发送的第一参考次数;如果网络设备发送第一报文的次数超过第一参考次数,且在此过程中都没有接收到第七报文,则判断对端网络设备没有接收到第一报文。
80.其中,由于第七报文是用于针对第一报文进行响应的,因此,第七报文的有效载荷中还可以携带应答报文序列号,且第七报文的有效载荷中携带的应答报文序列号与响应的第一报文的pap报文头中的报文序列号相同。另外,第一参考时长和第一参考次数均是用户设置的,本申请实施例在此不做具体限定。
81.另外,在本申请实施例中,为了进一步提高交互第一协议的数据的灵活性,网络设备和对端网络设备在通过pap交互第一协议的数据之前,还可以与对端网络设备协商,以确定对端是否支持第一协议的数据的交互,以及是否使能第一协议的诊断和数据交互的能力。其中,该能力是指设备对第一协议的诊断能力并且支持与其他设备交互第一协议的数据的能力,使能该能力是指在设备上开启该故障诊断功能以及协议交互功能。因此,如图2所示,在步骤201之前,网络设备还可以执行下述步骤:
82.步骤204:网络设备向对端网络设备发送第三报文,第三报文包括用于指示第一协议的字段,第三报文用于指示网络设备支持第一协议的数据的交互,第三报文遵循的协议和第一报文遵循的协议相同。
83.此时,第三报文的报文类型为协商报文。另外,当对端网络设备接收到第三报文时,对端网络设备还可以向网络设备发送第八报文,网络设备接收来自对端网络设备的第八报文,第八报文用于指示对端网络设备接收到第三报文,第八报文遵循的协议和第一报文遵循的协议相同。
84.其中,第八报文的报文类型为ack报文,且第八报文的有效载荷中携带的应答报文序列号与第三报文的pap报文头中的报文序列号相同,第八报文的有效载荷中携带的协议
标识与第三报文的有效载荷中携带的协议标识相同。如果网络设备在发送第三报文之后的第二参考时长内接收到的第八报文,网络设备则可以确定对端网络设备成功接收到第三报文。
85.其中,第三报文可以用于通知对端网络设备当前网络设备支持第一协议的数据的交互。此时,网络设备如果确定对端网络设备也支持第一协议的数据的交互,那么网络设备还可以使能交互第一协议的数据的能力,也即是,开启交互第一协议的数据的能力。并向对端网络设备发送第五报文,第五报文包括用于指示第一协议的字段,第五报文还携带用于指示网络设备使能交互第一协议的数据的能力的字段,第五报文遵循的协议和第一报文遵循的协议相同。当对端网络设备接收到该第五报文时,确定网络设备已开启交互第一协议的数据的能力。
86.其中,第五报文的报文类型可以为协商报文,第五报文中携带标志位,该标志位用于指示网络设备使能交互第一协议的数据的能力。且网络设备在向对端网络设备发送第五报文之后,对端网络设备同样可以通过ack报文向网络设备通知自身接收到第五报文,在此不再详细说明。
87.上述步骤204用于解释说明网络设备如何向对端网络设备通知是否支持第一协议的数据的交互,以及是否开启交互第一协议的数据的能力。同样地,对端网络设备也可以通过下述步骤205向网络设备通知是否支持第一协议的数据的交互,以及是否开启交互第一协议的数据的能力。
88.步骤205:网络设备接收来自对端网络设备的第四报文,第四报文包括用于指示第一协议的字段,第四报文遵循的协议和第一报文遵循的协议相同,网络设备基于第四报文,确定对端网络设备支持第一协议的数据的交互。
89.其中,步骤205的具体实现方式可以参考上述步骤204,在此不再详细阐述。
90.另外,网络设备接收来自对端网络设备的第四报文之后,网络设备可以向对端网络设备发送第十一报文,第十一报文用于指示网络设备接收到第四报文,第十一报文遵循的协议和第一报文遵循的协议相同。
91.其中,第十一报文的报文类型为ack报文。也即是,在本申请实施例中,网络设备在接收到对端网络设备发送的第四报文之后,网络设备可以向对端网络设备发送第十一报文,用于通知对端网络设备本端接收到第四报文。
92.另外,网络设备在开启交互第一协议的数据的能力,并向对端网络设备发送第五报文之后,对端网络设备也可以开启交互第一协议的数据的能力,并向网络设备发送第九报文。其中,第九报文包括用于指示第一协议的字段,第九报文还携带用于指示对端网络设备使能交互第一协议的数据的能力的字段,第九报文遵循的协议和第一报文遵循的协议相同。网络设备在接收到第九报文之后,可以向对端网络设备回复ack报文,以通知对端网络设备本端已接收到第九报文。
93.也即是,在本申请实施例中,网络设备和对端网络设备可以通过第五报文和第九报文,实现开启交互第一协议的数据的能力的协商。
94.可选地,网络设备在与对端网络设备交互完第一协议的数据之后,网络设备还可以自行关闭pap功能,以降低网络设备的功耗,并向对端网络设备告知网络设备已关闭pap功能。具体地,在一种可能的实现方式中,网络设备去使能交互第一协议的数据的能力,网
络设备向对端网络设备发送第六报文,第六报文包括用于指示第一协议的字段,第六报文还携带用于指示网络设备去使能交互第一协议的数据的能力的字段,第六报文遵循的协议和第一报文遵循的协议相同。网络设备在向对端网络设备发送第六报文之后,对端网络设备在接收到第六报文时,可以向网络设备回复ack报文,用于通知网络设备本端已接收到第六报文。
95.可选地,对端网络设备也可以自行关闭pap功能,以降低网络设备的功耗,并向网络设备告知网络设备已关闭pap功能。具体地,在一种可能的实现方式中,网络设备接收对端网络设备发送第十报文,第十报文包括用于指示第一协议的字段,第十报文还携带用于指示对端网络设备去使能交互第一协议的数据的能力的字段,第十报文遵循的协议和第一报文遵循的协议相同。其中,对端网络设备在向网络设备发送第十报文之后,网络设备在接收到第十报文时,可以向对端网络设备回复ack报文,用于通知对端网络设备本端已接收到第六报文。
96.上述第三报文和第四报文、第五报文和第九报文、第六报文和第十报文的报文类型均可以为协商报文。其中,协商报文包括pap报文头。协商报文的pap报文头中的报文类型为协商报文类型,协商报文中有效载荷中可以无需设置“标志位”字段,此时协商报文仅仅用于告知对方自身支持交互第一协议的数据。为了后续便于说明,将这一类协商报文称为支持功能协商报文。协商报文中的应用数据字段可以为可选字段,用于携带其他类型信息。比如,流量调优、设备端的人工智能(device ai)信息等,本申请实施例不做具体限定。
97.当然,协商报文中有效载荷中也可以设置“标志位”字段,标志位可以用于pap支持能力的协商、还是用于指示开启pap功能/关闭pap功能。当协商报文的标志位用于pap支持能力的协商时,该协商报文也即是支持功能协商报文,比如上述第三报文和第四报文。当协商报文中的标志位用于指示开启pap功能,通过协商报文网络设备可以告知对端网络设备本端已开启了pap功能,为了后续便于说明,将该类协商报文称为协商开启报文,比如上述第五报文和第九报文。当协商报文的pap报文头中的标志位用于指示关闭pap功能,通过协商报文网络设备可以告知对端网络设备本端已关闭pap功能,为了后续便于说明,将该类协商报文称为协商关闭报文,比如上述第六报文和第十报文。
98.另外,协商报文中的标志位还可以用于指示是否需要对本报文进行ack回复。也即是,在本申请实施例中,协商报文中可以包括两种类型的标志位字段,第一类用于ap支持能力的协商、还是用于指示开启pap功能/关闭pap功能。第二类用于指示是否需要对本报文进行ack回复。
99.表1是本申请实施例提供的一种协商报文中的字段和含义的对应关系。如表1所示,在协商报文中,字段“报文类型”的值为1,用于表明当前的报文为协商报文。标志位中的c bit位的值为1,表示能力协商,c bit位的值为0表示能力开启/关闭指示。a bit的值位为1,表示需要回复ack;a bit位的值为0,表示不需要回复ack。
100.表1协商报文中的pap报文头的字段和含义的对应关系
[0101][0102]
具体地,当c bit位的值为0由于此时用于能力开启/关闭指示,因此,可以与协商报文中的协议标识字段结合来区分当前报文是协商开启报文还是协商关闭报文。比如,当c bit位的值为0,如果该协商报文中的协议标识字段中与第一协议对应的指定bit位上的值为1,则表明该协商报文为协商开启报文,用于通知已开启基于pap交互第一协议的数据能力。其中,第一协议为协议标识字段中的任一协议。如果该协商报文中的协议标识字段中与第一协议对应的指定bit位上的值为0,则表明该协商报文为协商关闭报文,用于通知已关闭基于pap交互第一协议的数据能力。其中,上述a bit位、c bit位以及指定bit位均可以灵活配置,本申请实施例对各个bit位的具体位置不做具体限定。
[0103]
因此,在本申请实施例中,如图4所示,协商报文的交互主要包括以下三类交互过程:
[0104]
第一类交互过程:双方互相知会各自支持的能力,此轮协商不涉及功能的开启。如表1所示,可以通过标志位字段的c bit位的值来指示当前的协商报文为支持功能协商报文(neg.(cap.))。
[0105]
在一种可能的实现方式中,如图4所示,网络设备向对端网络设备发送支持功能协商报文,如果ack报文设置为强制发送(如表1中的a bit位的值为1),网络设备发送支持功能协商报文给对端网络设备,该支持功能协商报文发送出去后在第一规定时间内收到该支持功能协商报文的ack报文,同时在第一规定时间内收到了对端网络设备发来的支持功能协商报文,且针对接收到的支持功能协商报文向对端网络设备发送ack报文,此过程认为协商支持功能成功。其中,对端设备在接收到支持功能协商报文后发送的ack报文、网络设备在接收到对端网络设备的ack报文和支持功能协商报文之后发送的ack报文,均会参考协议标识字段,但不强制要求两个网络设备的完全匹配,具体实现由两端网络设备的配置决定。如果ack不强制发送(如表1中的a bit位的值为0),则把上述流程中的ack动作删除即可。
[0106]
如果ack报文设置为强制发送(如表1中的a bit位的值为1),在任意支持功能协商报文在第一规定时间内未接收到ack报文的情况下,需要基于第一重传次数进行数次重传(比如第一重传次数可以为2次)。如果数次重传之后还未收到任何ack报文,则认为协商功能支持失败。
[0107]
如果ack设置为不强制发送(如表1中的a bit位的值为0),在任意功能协商报文在第二规定时间内未接收到任何功能协商报文的情况下,需要基于第二重传次数进行数次重传,如果数次重传之后还未在第二规定时间内收到对端网络设备发送的功能协商报文,则认为协商失败。
[0108]
第二类交互过程:两个网络设备在成功协议完支持能力之后,在需要的时候,会通过协商开启报文(neg.(open))通知对方自己开启了双方共同支持的某一个或者几个能力。
该协商开启报文可以在能力协商完成之后任意时刻发送,且可以多次发送。该协商开启报文的标志位字段中指示该报文是开启/关闭指示的标志位。具体地,可以通过标志位字段的c bit位的值为0,以及协议标识字段结合来指示当前协商报文是协商开启报文。
[0109]
在一种可能的实现方式中,如图4所示,网络设备向对端网络设备发送协商开启报文,协商开启报文用于指示本端已开启pap功能。如果ack报文设置为强制发送(如表1中的a bit位的值为1),网络设备发送协商开启报文给对端网络设备,该协商开启报文发送出去后在第三规定时间内收到针对该协商开启报文的ack报文,同时在第三规定时间内收到了对端网络设备发来的协商开启报文,且针对接收到的协商开启报文向对端网络设备发送ack报文,此过程认为协商功能开启成功。对端网络设备在接收到协商开启报文后发送的ack报文、以及网络设备在接收到对端网络设备的ack报文和协商开启报文之后发送的ack报文,均会参考协议标识字段,但不强制要求两个网络设备的完全匹配,具体实现由两端设备的配置决定。如果ack报文不强制发送(如表1中的a bit位的值为0),则把上述流程中的ack动作删除即可。
[0110]
如图4所示,如果ack设置为强制发送(如表1中的a bit位的值为1),在任意协商开启报文在第三规定时间内未接收到ack报文的情况下,需要基于第三重传次数进行数次重传(比如第三重传次数可以为2次),如果还未收到任何ack报文,则认为协商开启失败。
[0111]
如果ack设置为不强制发送(如表1中的a bit位的值为0),任意协商开启报文在发送之后,在第四规定时间内未接收到对端网络设备发送的协商开启报文的情况下,需要基于第四重传次数进行数次重传,如果还未在第四规定时间内收到对端网络设备发送的协商开启报文,则认为协商开启失败。
[0112]
也即是,在本申请实施例中,网络中任一网络设备均可与其他网络设备进行协商,以确告知对端本端是否开启了pap功能。
[0113]
第三类交互过程:两个网络设备在成功协商完支持能力之后,并且在交互完一个或者多个协商开启报文之后,可发送一个或者多个协商关闭报文(neg.(close)),用于指示本端已关闭已经开启的功能。该协商关闭报文的标志位字段中指示该报文是开启/关闭指示的标志位。具体地,可以通过标志位字段的c bit位的值为0,以及协议标识字段结合来指示当前协商报文是协商关闭报文。
[0114]
在一种可能的实现方式中,如图4所示,如果ack报文设置为强制发送(如表1中的a bit位的值为1),在任何时刻任何网络设备想要通知对端网络设备本端已关闭对一个或者多个特定协议数据的功能支持(协议标识字段中特定协议对应的bit位置0),即发送一个协商关闭报文,如果在第五规定时间内收到对端网络设备发送的ack报文后则确认成功结束该交互。如果ack报文设置为不强制发送(如表1中的a bit位的值为0),在任何时刻任何网络设备想要通知对端本端已关闭对一个或者多个特定协议数据的功能支持(协议标识字段中特定定协议对应的bit位置0),即发送一个协商关闭报文,无需接收到ack报文,即可认为pap关闭指示的交互结束,该情况下不存在协商关闭失败的情况。
[0115]
如果ack报文设置为强制发送(如表1中的a bit位的值为1),在任意协商关闭报文在第五规定时间内未接收到ack报文的情况下,需要基于第五重传次数进行数次重传(比如,可以为2次),如果数次重传之后还未收到任何ack报文,则认为关闭指示交互失败。
[0116]
上述各个规定时间可以相同,也可以不同。各个重传次数也可以相同,或者不同。
本申请实施例对此不做具体限定。
[0117]
上述实施例中,在一个网络设备向另一个网络设备发送报文之后,另一个网络设备通常需要回复ack报文,以告知对端本端已接收到该报文。表2是本申请实施例提供的一种ack报文中的字段和含义的对应关系。如表2所示,在ack报文中,字段“报文类型”的值为5,用于表明当前的报文为ack报文。有效载荷中携带字段“应答报文序列号”指示的报文序列号需要与要回复的报文的报文头中的报文序列号相同。其中,本申请实施例中涉及的所有ack报文均可以参考表2,在此就不再一一展开说明。
[0118]
表2ack报文中的pap报文头的字段和含义的对应关系
[0119][0120][0121]
在本申请实施例中,网络设备可以通过第一报文向对端网络设备传输第一协议的数据。由于第一报文遵循的协议与第一协议不同,这样不管第一协议具体是什么协议,均可采用第一报文交互第一协议的数据。也即是,本申请提供了一种通用的协议,用于传输第一协议的数据,因此提高了发送报文的灵活性。
[0122]
在本申请实施例中,网络设备通过步骤201和步骤203交互第一协议的数据可以有以下两种应用场景。下面将针对这两种应用场景分别展开说明。下述两种应用场景仅仅用于举例说明,并不构成对本申请实施例提供的交互第一协议的数据的应用场景的限定。比如,网络设备交互第一协议的数据也可以应用到其他需要进行网络调优的场景中,在此就不再一一展开说明。
[0123]
第一种场景:在te隧道建联失败之后,如果需要快速诊断根因,则需要故障节点的网络设备向处于头节点的网络设备发送诊断信息。
[0124]
此时,处于中间节点的网络设备相当于步骤201中的网络设备,处于头节点的网络设备相当于步骤201中的对端网络设备。步骤201中的pap报文头中的报文类型为通告报文类型,网络设备向对端网络设备发送的第一报文也称为通告报文。如图5所示,在te隧道建联失败之后,中间节点如果感知到故障,则向头节点发送通告报文
[0125]
表3是本申请实施例提供的一种通告报文中的字段和含义的对应关系。如表3所示,在通告报文的pap报文头中,字段“报文类型”的值为4,用于表明当前的报文为通告报文。通告报文的有效载荷字段中的“标志位”的值为1,用于指示需要对端网络设备回复ack报文,通告报文的有效载荷字段中的“标志位”的值为0,用于指示不需要对端网络设备回复ack报文。另外,如表3所示,通告报文中的协议标识字段用于表示通告报文中具体携带的是哪一个协议的数据。在一种可能的实现方式中,假设通告报文携带是第一协议的数据,那么将协议标识字段中第一协议对应的bit位的值设置为1,将协议标识字段中其他协议对应的bit位的值设置为0。
[0126]
比如,如图6所示,网络设备在发送通告报文之后,对端网络设备在接收到通告报文之后向网络设备回复ack报文,也即是步骤203中的第七报文。如果10秒内接收到对端网
络设备发送的ack报文,则确定通告成功。如果10秒内没有接收到ack报文,则重新发送通告报文。当发送通告报文的次数超过3次,且在第三次发送通告报文之后10秒内仍然没有接收到ack报文,网络设备则确定对端无法接收通告报文,此时停止发送通告报文。
[0127]
表3通告报文中的字段和含义的对应关系
[0128][0129]
第二种场景:bgp溯源,以查找震荡源。
[0130]
此时,网络设备接收来自对端网络设备的第二报文,第二报文包括用于指示第一协议的字段,第二报文用于指示网络设备向对端网络设备反馈第一协议的数据,第二报文遵循的协议和第一报文遵循的协议相同。相应地,在上述步骤201中,网络设备是响应于第二报文生成第一报文。
[0131]
其中,第二报文的报文类型为查询报文类型,第二报文还可以称为查询报文。第一报文的报文类型为应答报文类型,第一报文还可以称为应答报文。比如,诊断发起设备可以向网络中的其他网络设备发送查询报文,用于查询对端是否是震荡源。如果对端确定自身是震荡源,则需要向诊断发起设备回复应答报文,用于指示自身是震荡源。此时,其他设备相当于步骤201中的网络设备,诊断发起设备相当于步骤201中的对端网络设备。
[0132]
在第二种场景中,由于对端网络设备向网络设备发送的查询报文也是用于交互第一协议的数据的,因此,该查询报文遵循的协议和第一报文遵循的协议相同。比如,均可以为pap。
[0133]
表4是本申请实施例提供的一种查询报文或应答报文中的字段和含义的对应关系。如表4所示,在查询报文或应答报文的pap报文头中,字段“报文类型”的值为2,用于表明当前的报文为查询报文,字段“报文类型”的值为3,用于表明当前的报文为应答报文。并且,对于应答报文,有效载荷字段中还可以包括“标志位”字段,且字段“标志位”的值为1,用于指示需要对端回复ack报文,字段“标志位”的值为0,用于指示需要不对端回复ack报文。其中,对于查询报文,可以不包括“标志位”字段,也可以设置“标志位”字段,但是字段“标志位”中的具体数值可以无需设置。
[0134]
如表4所示,查询或应答报文中的协议标识字段用于表示相应报文中具体携带的是哪一个协议的数据。在一种可能的实现方式中,假设报文携带是第一协议的数据,那么将协议标识字段中第一协议对应的bit位的值设置为1,将协议标识字段中其他协议对应的bit位的值设置为0。
[0135]
另外,对于查询报文,报文中的应用数据字段用于指示设备想要查询该协议的具体什么数据,具体格式可以自行定义。对于应答报文,报文中的应用数据字段用于指示根据对端设备发来的查询报文里的应用数据字段指示的内容需要返回的数据,具体格式也可以自行定义。
[0136]
表4查询报文或应答报文中的字段和含义的对应关系
[0137][0138]
如图7所示,如果查询报文的ack设置为强制发送(表4中对应的标志位的值为1),在任何时刻任何网络设备发送查询报文到对端网络设备,在规定时间内收到对端网络设备的ack报文,以及对端网络设备发来的应答报文,如果接收到的应答报文中要求回复ack报文则发送ack报文,该流程结束,如果不要求回复ack则接收到应答报文之后该流程结束。如果查询报文的ack设置为不强制发送(表4中对应的标志位的值为1),在任何时刻任何网络设备发送查询报文到对端网络设备,在规定时间内收到对端网络设备发来的应答报文,如果应答报文要求回复ack报文则向对端网络设备发送ack报文,该流程结束,如果应答报文中不要求回复ack报文则接收到应答报文时该流程结束。
[0139]
相应地,如图7所示,如果查询报文的ack设置为强制发送(表4中对应的标志位的值为1),任意网络设备在发送完查询报文,在规定时间内未接收到对端网络设备发送的ack报文的情况下,需要进行数次重传(比如,可以为2次)。如果数次重传之后还未收到任何ack报文,则认为该交互失败。如果查询报文的ack设置为不强制发送(表4中对应的标志位的值为1),在发送完查询报文,在规定时间内未接收到应答报文的情况下,需要进行数次重传,如果数次重传之后还未收到任何应答报文,则认为该交互失败。
[0140]
也即是,在第二种场景中,对端网络设备在向网络设备发送查询报文之后,网络设备也可以先针对查询报文发送ack报文,以通知对端网络设备本端已接收到该查询报文。在发送ack报文之后,再向对端网络设备回复应答报文。当然,对端网络设备也可以在发送查询报文之后,直接根据是否接收到应答报文来确定对端是否接收到该查询报文,本申请实施例在此不做具体限定。
[0141]
下述实施例用于对上述第二种场景“bgp溯源,以查找震荡源”进行举例说明,下述实施例并不构成对上述图2对应的实施例的限定。
[0142]
图8从设备交互的角度示例性示出了一种协商流程的方法示意图,如图8所示,该方法包括:
[0143]
步骤801,第一路由设备向第二路由设备发送第一协商报文。第一协商报文指示第二设备开启查询路由震荡源的能力。
[0144]
第一路由设备发送第一协商报文的时机可以根据具体情况灵活确定,比如可以在第一路由设备和第二路由设备建立bgp邻居关系之后发起,也可以在第一路由设备开启查询路由震荡源的能力后发起(本申请实施例中开启查询路由震荡源的能力也可以称为使能溯源协商能力)。可选地,在第二路由设备与第一路由设备的bgp邻居关系down(bgp邻居关系down也可以称为未建立bgp邻居关系)的情况下,若第二路由设备具备且开启查询路由震
荡源的能力,则可以关闭第二路由设备的查询路由震荡源的能力。
[0145]
第一协商报文也可以描述为st_open能力协商报文等。
[0146]
步骤802,第二路由设备接收到第一协商报文之后,根据第一协商报文确定自己是否具备查询路由震荡源的能力。
[0147]
在步骤802中,若第二路由设备不具备查询路由震荡源的能力,则第二路由设备可以向第一路由设备反馈用于指示第二路由设备不具备查询路由震荡源的能力的指示信息,也可以不反馈给第一路由设备信息,比如执行步骤803。
[0148]
在步骤802中,若第二路由设备具备查询路由震荡源的能力,则第二路由设备可以执行步骤804。
[0149]
步骤803,结束该方法流程。
[0150]
步骤804,第二路由设备判定第二路由设备是否已开启查询路由震荡源的能力。
[0151]
在步骤804中,若第二路由设备未开启查询路由震荡源的能力,则可执行步骤805。
[0152]
在步骤804中,若第二路由设备已开启查询路由震荡源的能力,则可执行步骤806。
[0153]
步骤805,第二路由设备开启查询路由震荡源的能力。
[0154]
步骤806,第二路由设备发送第一协商响应报文给第一路由设备。
[0155]
第一协商响应报文是第一协商报文的响应报文。
[0156]
步骤807,第一路由设备判定是否收到第一协商响应报文。
[0157]
上述步骤807中,一种可能地实现方式中,第一路由设备可以判定是否在第一预设时长内收到第一协商响应报文。
[0158]
在步骤807中,第一路由设备判定收到第一协商响应报文,则可以执行步骤808。
[0159]
在步骤807中,第一路由设备判定未收到第一协商响应报文,则可以结束该方法流程,也可以执行步骤809,或者也可以执行步骤810。
[0160]
图8中示出的方案是在第一路由设备判定未收到第一协商响应报文的情况下执行步骤809的示例。另外一种可能地实施方式中,在上述步骤801中,第一路由设备可以周期性发送第一协商报文,比如可以在第二路由设备与第一路由设备的bgp邻居关系up时(bgp邻居关系up也可以称为建立bgp邻居关系),以1分钟为周期,周期性向第二路由设备发送第一协商报文。在执行步骤807时,若连续三个第一协商报文对应的响应报文都没有收到,则直接执行步骤810。
[0161]
步骤808,第一路由设备根据第一协商响应报文确定第二路由设备具备查询路由震荡源的能力,且第二路由设备开启查询路由震荡源的能力。
[0162]
步骤809,第一路由设备判断是否发送了n次第一协商报文。
[0163]
在上述步骤809中,一种可能地实施方式中,第一路由设备可以判断是否在第二预设时长内发送了n次第一协商报文,n为正整数,n可以根据具体情况设置,比如设置为3。
[0164]
在步骤809中,第一路由设备确定未发送n次第一协商报文(比如,第一路由设备在第二预设时长内发送第一协商报文的次数小于n),则第一路由设备可以重复执行上述步骤801,以便重复发送第一协商报文。
[0165]
在步骤809中,第一路由设备确定发送了n次第一协商报文(比如,第一路由设备在第二预设时长内发送第一协商报文的次数等于n),则第一路由设备可以执行步骤810。
[0166]
步骤810,第一路由设备确定第二路由设备不具备查询路由震荡源的能力。
[0167]
上述图8所示的方案流程示例性的介绍了第一路由设备如何跟第二路由设备协商,以使第二路由设备在具备查询路由震荡源的能力之下开启查询路由震荡源的能力。而第二路由设备也可以执行与上述第一路由设备所执行的相类似的步骤,以在第一路由设备在具备查询路由震荡源的能力之下开启查询路由震荡源的能力,在此不再赘述。
[0168]
图9从设备交互的角度示例性示出了如何去使能路由设备的查询路由震荡源的能力的方法流程示意图。本申请实施例中关闭查询路由震荡源的能力也可以称为去使能查询路由震荡源的能力,也就是说关闭也可以用去使能替换。如图9所示,该方法包括:
[0169]
步骤901,第一路由设备向第二路由设备发送第二协商报文。第二协商报文指示第二设备去使能查询路由震荡源的能力。
[0170]
第一路由设备发送第二协商报文的时机可以根据具体情况灵活确定,比如在第一路由设备发现第一路由设备与第二路由设备之间的邻居关系down的情况下发起,再比如可以由人工灵活配置第一路由设备发起第二协商报文的时机。
[0171]
一种可能地实施方式中,第一路由设备可以在确定第二路由设备具备开启查询路由震荡源的能力,且已开启查询路由震荡源的能力的情况下,向第二路由设备发送第二协商报文,这种情况下,第二路由设备在接收到第二协商报文之后可以直接执行步骤905。
[0172]
另一种可能地实施方式中,第一路由设备在需要去使能查询路由震荡源的能力的情况下,向第二路由设备发送第二协商报文,第二路由设备可能具备查询路由震荡源的能力,也可能不具备查询路由震荡源的能力,而在具备查询路由震荡源的能力下也有可能开启或未开启查询路由震荡源的能力。这种情况下,第二路由设备在接收到第二协商报文的情况下,可以执行步骤902或者执行步骤904。本领域技术人员可以灵活确定。图9以第二路由设备在接收到第二协商报文301后执行步骤902为例进行介绍。
[0173]
第二协商报文可以描述为st_open能力协商报文,当第二协商报文和第一协商报文都被称为st_open能力协商报文的情况下,被称为st_open能力协商报文的第二协商报文中可以设置一个标志位,用于与被称为st_open能力协商报文的第一协商报文以区别。
[0174]
步骤902,第二路由设备接收到第二协商报文之后,根据第二协商报文确定自己是否具备查询路由震荡源的能力。
[0175]
在步骤902中,若第二路由设备不具备查询路由震荡源的能力,则第二路由设备可以向第一路由设备反馈用于指示第二路由设备不具备查询路由震荡源的能力的指示信息,也可以不反馈给第一路由设备信息,比如执行步骤903。
[0176]
在步骤902中,若第二路由设备具备查询路由震荡源的能力,则第二路由设备可以执行步骤904。
[0177]
步骤903,结束该方法流程。
[0178]
步骤904,第二路由设备判定第二路由设备是否已开启查询路由震荡源的能力。
[0179]
在步骤904中,若第二路由设备已开启查询路由震荡源的能力,则可执行步骤905。
[0180]
在步骤904中,若第二路由设备未开启查询路由震荡源的能力,则可执行步骤906。
[0181]
步骤905,第二路由设备关闭查询路由震荡源的能力。
[0182]
步骤906,第二路由设备发送第二协商响应报文给第一路由设备。
[0183]
第二协商响应报文是第二协商报文的响应报文。
[0184]
步骤907,第一路由设备判定是否收到第二协商响应报文。
[0185]
在上述步骤907中,一种可能地实现方式中,第一路由设备可以判定是否在第四预设时长内收到第二协商响应报文。
[0186]
在步骤907中,若第一路由设备收到第二协商响应报文,则可以执行步骤908。
[0187]
在步骤907中,若第一路由设备未收到第二协商响应报文(比如,在第四预设时长内未收到第二协商响应报文),则可以结束该方法流程,也可以执行步骤909,或者也可以执行步骤910。
[0188]
图9中示出的方案是在第一路由设备未收到第二协商响应报文的情况下执行步骤909的示例。另外一种可能地实施方式中,在上述步骤901中,第一路由设备可以周期性发送第二协商报文,比如以1分钟为周期,周期性向第二路由设备发送第二协商报文。在执行步骤807时,若连续三个第二协商报文对应的响应报文都没有收到,则直接执行步骤910。
[0189]
步骤908,第一路由设备根据第二协商响应报文确定第二路由设备具备查询路由震荡源的能力,且第二路由设备关闭查询路由震荡源的能力。
[0190]
步骤909,第一路由设备是否发送了m次第二协商报文。
[0191]
在上述步骤909中,一种可能地实现方式中,第一路由设备可以判定是否在第五预设时长内发送了m次第二协商报文,m为正整数,m可以根据具体情况设置,比如设置为3。
[0192]
在步骤909中,第一路由设备发送第二协商报文的数量小于m(比如在第五预设时长内发送的第二协商报文的数量小于m),则第一路由设备可以重复执行上述步骤901,以便重复发送第二协商报文。
[0193]
在步骤909中,第一路由设备发送第二协商报文的数量不小于m(比如在第五预设时长内发送的第二协商报文的数量等于m),则第一路由设备可以执行步骤910。
[0194]
步骤910,第一路由设备确定第二路由设备不具备查询路由震荡源的能力。
[0195]
上述图9所示的方案流程示例性的介绍了第一路由设备如何跟第二路由设备协商,以使第二路由设备去使能查询路由震荡源的能力。而第二路由设备也可以执行与上述第一路由设备所执行的相类似的步骤,以在第一路由设备去使能查询路由震荡源的能力,在此不再赘述。
[0196]
在上述图8和图9中所涉及的第一协商报文、第一协商响应报文、第二协商报文和第二协商响应报文的格式可以灵活设置,第一协商报文、第一协商响应报文、第二协商报文和第二协商响应报文可以统称为协商报文。图10示例性示出了本申请实施例提供的一种协商报文的格式的示意图,如图10所示:
[0197]
协商报文中报文标识字段可以占用4字节,比如可以如图10所示填充0xfe,也可以填充其它数值。报文标识字段可用于指示该报文为本申请实施例中所定义的协商报文或下述内容中提到的数据报文,如此可以将本申请实施例中定义的协商报文和数据报文与现有技术中已定义的其它报文区别开来。
[0198]
协商报文中的报文总长度(totallen)字段可以占用16比特(bit),可用于指示该报文的总长度。
[0199]
协商报文中的类型(type)字段可以占用5比特,可用于指示该报文的类型,当该报文为协商报文时,该报文的类型字段承载用于指示该报文为协商报文的内容。比如,将类型字段的值设置为1时,可以表示该报文为第一协商报文或第二协商报文。
[0200]
c字段,可以占用1个比特,示例性地,将c字段的值设置为0,可表示该报文为第二
协商报文,设置为1可表示该报文为第一协商报文。当第二协商报文和第一协商报文都被称为st_open能力协商报文的情况下,c字段可以用于标识第一协商报文和第二协商报文的标志位。
[0201]
a字段,可以占用1个比特,示例性地,将a字段的值设置为1可表示该报文为响应报文(第一协商响应报文或第二协商响应报文),设置为0可表示该报文为非响应报文(第一协商报文或第二协商报文)。
[0202]
r字段,可以占用1个比特,可以为保留字段。r字段可以默认填充为0。
[0203]
可选地,报文中还可以包括如图10中所示的协议编号(protocolno)字段,可以占用8个比特,可以承载协议编号。
[0204]
上述示例介绍了第一路由设备和第二路由设备可以灵活启动或关闭查询路由的震荡源的能力的方案,可选地,也可以统一设置第一路由设备和第二路由设备开启查询路由的震荡源的能力。在第一路由设备和第二路由设备开启查询路由震荡源的能力的情况下,本申请实施例提供一种路由震荡源查询方法。该方法应用于边界网关协议bgp网络中,bgp网络的含义如上述内容所示,不再赘述。bgp网络包括第一路由设备。图11示例性示出了本申请实施例提供的一种路由震荡源查询方法的流程示意图,如图11所示,该方法包括:
[0205]
步骤1101,第一路由设备根据路由信息确定该待查询路由,路由信息用于确定与路由信息对应的该待查询路由。
[0206]
本申请实施例中路由设备可以分为两种类型,分别为:溯源发起设备和溯源协助设备。其中,溯源发起设备可以为发起查询事件的设备,查询事件即为查询该待查询路由的震荡源的事件。参与该查询事件中的所有路由设备中除溯源发起设备之外的路由设备可以称为溯源协助设备。溯源发起设备可以是待查询路由中的任一台路由设备,一种可能地实施方式中,溯源发起设备可以是沿路由发布方向的处于较下游的路由设备(比如为沿路由发布方向的最下游路由设备或倒数第二跳路由设备等),例如可以是图1中的路由设备101或路由设备102。另一种可能地实施方式中,溯源发起设备可以是沿路由发布方向的处于最下游的路由设备,例如可以是图1中的路由设备101,如此,可以由业务感知到的路由设备发起,最接近业务受损的地方发起,如此,可以更贴合实际应用场景,为实际业务操作人员提供更大的便利。
[0207]
一种可能地实施方式中,溯源发起设备有多种方式触发查询事件,比如可以是用户人工输入的命令触发溯源发起设备发起查询事件,比如用户可以在发现出现业务受损的情况下发起命令以触发溯源发起设备发起查询事件。也可以是预设一些规则,当满足这些规则时可以触发溯源发起设备发起查询事件,这些规则比如为cpu占用率高于占用率阈值,再比如可以为检测到待查询路由上的业务受损,比如路由设备检测到不能对报文解封装,或者解封装之后查不到路由表项等,可触发溯源发起设备发起查询事件。再比如,溯源发起设备可以在检测到发生路由震荡情况时发起。
[0208]
待查询路由的路由信息可以是用户通过人工输入的,也可以是溯源发起设备自行挑选的发生震荡的路由的路由信息。举个例子,溯源发起设备从发生震荡的路由中随机挑选一条或多条路由的路由信息,针对所挑选的一条或多条路由中的每条路由的路由信息,发起查询事件,即将每条路由的路由信息都作为本申请实施例中的一条待查询路由对应的路由信息以执行本申请实施例中的方案,从而查出待查询路由的震荡源。发生震荡的路由
可以是路由的最近一次更新的时间距离当前时间之间的时长小于第六预设时长的路由,第六预设时长可以是灵活确定的,比如可以是2分钟。路由的最近一次更新的时间点也可以称为路由的时间戳。
[0209]
当第一路由设备为溯源发起设备时,第一路由设备根据路由信息确定出待查询路由,继而查询引起该待查询路由震荡的震荡源。
[0210]
而当第一路由设备为溯源协助设备时,第一路由设备可以接收其它路由设备发送的查询请求,比如第一路由设备根据路由信息确定待查询路由之前,第一路由设备接收第三路由设备发送的第二查询请求,第三路由设备是用于从第一路由设备接收待查询路由的路由设备。第二查询请求用于请求第一路由设备确定待查询路由的震荡源。第三路由设备可以描述为沿路由发布方向上第一路由设备的下一跳路由设备。第二查询请求包括路由信息。
[0211]
在上述步骤1101之后,第一设备可以确定该待查询路由是否是从第二路由设备接收到的路由,可以存在两种结果:该待查询路由不是第一路由设备从第二路由设备接收到的路由,以及该待查询路由是第一路由设备从第二路由设备接收到的路由。
[0212]
当第一路由设备确定该待查询路由不是第一路由设备从第二路由设备接收到的路由,则第一路由设备可以确定该待查询路由是第一路由设备的本地路由,这种情况下,可以确定导致该待查询路由发生路由震荡的源设备为第一路由设备。这种情况下,第一路由设备可以直接反馈第一查询响应,第一查询响应指示待查询路由的震荡源,该震荡源即为第一路由设备。当第一路由设备是溯源发起设备(溯源发起设备为发起查询事件的设备)时,第一路由设备可以直接将第一查询响应反馈给用户。当第一路由设备不是溯源发起设备(第一路由设备是溯源协助设备)时,第一路由设备可以将第一查询响应转发给其它路由设备,比如第三路由设备。在第一路由设备确定第一路由设备为待查询路由的震荡源的情况下,第一路由设备还可以直接结束该方法流程,也可以对第一路由设备的发生震荡的原因进行分析,也可以进一步修复该震荡源等。
[0213]
进一步,当第一路由设备确定该待查询路由不是第一路由设备从第二路由设备接收到的路由,则可以进一步确定出待查询路由的路由类型,比如该待查询路由是聚合路由,还是引入路由,并且可以在第一查询响应中携带该待查询路由的路由类型的指示信息,从而可以为用户提供进一步的辅助信息,也可以为用户后续维护工作提供更多的便利。本申请实施例中的引入路由可以是指bgp从内部网关协议(interior gateway protocol,igp)、用户网络路由(user network route,unr)、静态、直连路由等其他路由协议学习到的路由。本申请实施例中的聚合路由可以称为通过路由聚合命令产生的路由。
[0214]
而另一种结果:该待查询路由是第一路由设备从第二路由设备接收到的路由的情况可参见步骤1102。
[0215]
步骤1102,第一路由设备确定该待查询路由是第一路由设备从第二路由设备接收到的路由,第二路由设备是向第一路由设备发送该待查询路由的路由设备。
[0216]
待查询路由是第一路由设备从第二路由设备接收到的路由也可以描述为待查询路由是第一路由设备从第二路由设备学习到的。也就是说,路由发布方向是从第二路由设备向第一路由设备方向发布的,第二路由设备也可以描述为上一跳路由设备,上一跳路由设备用于沿着路由发布方向向第一路由设备发布路由。
[0217]
步骤1103,第一路由设备确定第一路由设备是否为该待查询路由的震荡源,该待查询路由的震荡源指示导致该待查询路由发生路由震荡的源设备。
[0218]
本申请实施例中导致该待查询路由发生路由震荡的源设备也可以称为该待查询路由的震荡源。
[0219]
在上述步骤1103之后,有两种结果,一种是第一路由设备确定第一路由设备为该待查询路由的震荡源,这种情况下,第一路由设备可以反馈第一查询响应,具体反馈的对象可以视第一路由设备的角色来确定,例如:当第一路由设备是溯源发起设备(溯源发起设备为发起查询事件的设备)时,第一路由设备可以直接将第一查询响应反馈给用户。当第一路由设备不是溯源发起设备(第一路由设备是溯源协助设备)时,第一路由设备可以将第一查询响应转发给其它路由设备,比如第三路由设备。
[0220]
另一种结果是第一路由设备确定第一路由设备不是该待查询路由的震荡源,该种情况可以参见步骤1104。
[0221]
步骤1104,当第一路由设备确定第一路由设备不是该待查询路由的震荡源,第一路由设备向第二路由设备发送第一查询请求,第一查询请求用于请求第二路由设备确定该待查询路由的震荡源,第一查询请求包括路由信息。
[0222]
通过上述步骤1101至步骤1104的方案可以看出,本申请实施例中当出现路由震荡的情况时,当第一路由设备并非震荡源时,第一路由设备可以将第一查询请求发送给第二路由设备,以使第二路由设备继续查询震荡源,可见该路由震荡源的查询方法相比现有技术中维护人员逐台检查路由设备的方案,可以节省人力。
[0223]
在上述步骤1101中,一种可选地实施方式中,路由信息包括路由前缀,路由前缀用于指示待查询路由的网络协议ip地址和掩码。第一路由设备根据路由信息确定待查询路由,包括:第一路由设备根据路由前缀确定待查询路由。第一路由设备根据路由前缀确定待查询路由具体方法可以参见rfc4364第7节和第8节内容。
[0224]
上述步骤1101中,另一种可选地实施方式中,路由信息包括路由前缀、地址族标识afi、子地址族标识safi和路由标识rd;afi用于指示待查询路由所在的地址族,safi用于指示待查询路由所在的子地址族,rd用于指示待查询路由的路由标识。第一路由设备根据路由信息确定待查询路由,包括:第一路由设备根据afi、safi、rd和路由前缀,确定待查询路由。第一路由设备根据afi、safi、rd和路由前缀,确定待查询路由的具体方法可以参见rfc4364第7节和第8节内容。
[0225]
本申请实施例中,一种可选地实施方中,路由信息还可以包括:序列号和/或溯源发起设备的标识;其中,序列号用于标识用于查询待查询路由的查询事件,溯源发起设备的标识用于标识发起查询事件的设备的标识。
[0226]
本申请实施例中提供一种用于执行上述步骤1103的可能地实现方式,第一路由设备根据待查询路由确定第一路由设备与第二路由设备之间的bgp邻居关系最近一次发生震荡的时间与当前时间之间的时长是否小于第一阈值。在这种可能地实现方式下,上述步骤1104中,第一路由设备可以根据待查询路由确定第一路由设备与第二路由设备之间的bgp邻居关系发生震荡的时间与当前时间之间的时长小于第一阈值,第一路由设备向第二路由设备发送第一查询请求。该实现方式中,第一路由设备在确定出该待查询路由是从第二路由设备学习到的情况下,确定第二路由设备和第一路由设备是bgp邻居关系。这种可能地实
现方式下,第一路由设备最近一次向第二路由设备发送待查询路由的更新报文的时间与当前时间之间的时长可能小于第二阈值也可能不小于第二阈值。在这种可能地实现方式下,第一路由设备与第二路由设备之间的bgp邻居关系最近一次发生震荡的时间与当前时间之间的时长小于第一阈值,则说明第一路由设备与第二路由设备之间的bgp邻居关系不稳定,而这很大可能是引发待查询路由发生震荡的原因,因此通过该种实现方式可以更加准确的确定出待查询路由发生震荡的震荡源。
[0227]
本申请实施例中提供另一种用于执行上述步骤1103的可能地实现方式,第一路由设备确定第一路由设备最近一次向第二路由设备发送待查询路由的更新报文的时间与当前时间之间的时长是否小于第二阈值。在这种可能地实现方式下,上述步骤1104中,第一路由设备可以确定最近一次向第二路由设备发送待查询路由的更新报文的时间与当前时间之间的时长小于第二阈值,第一路由设备向第二路由设备发送第一查询请求。待查询路由的更新报文也可以称为待查询路由的refersh报文,refersh报文的相关描述可以参见rfc2918中第2节和第3节中的相关描述。第一路由设备可能由于策略修改、配置修改等原因向第二路由设备发送更新报文。这种可能地实现方式下,第一路由设备与第二路由设备之间的bgp邻居关系最近一次发生震荡的时间与当前时间之间的时长可能小于第一阈值也可能不小于第一阈值。在这种可能地实现方式下,第一路由设备最近一次向第二路由设备发送待查询路由的更新报文的时间与当前时间之间的时长小于第二阈值,则说明存在很大可能性是第一路由设备发送的待查询路由的更新报文导致了待查询路由上震荡的发生,因此通过该种实现方式可以更加准确的确定出待查询路由发生震荡的震荡源。
[0228]
本申请实施例中提供第三种用于执行上述步骤1103的可能地实现方式,第一路由设备根据待查询路由确定第一路由设备与第二路由设备之间的bgp邻居关系最近一次发生震荡的时间与当前时间之间的时长是否小于第一阈值,以及确定第一路由设备最近一次向第二路由设备发送待查询路由的更新报文的时间与当前时间之间的时长是否小于第二阈值。在这种可能地实现方式下,上述步骤1104中,第一路由设备可以根据待查询路由确定第一路由设备与第二路由设备之间的bgp邻居关系发生震荡的时间与当前时间之间的时长小于第一阈值,且第一路由设备确定第一路由设备最近一次向第二路由设备发送待查询路由的更新报文的时间与当前时间之间的时长小于第二阈值的情况下,第一路由设备向第二路由设备发送第一查询请求。该实现方式结合第一路由设备与第二路由设备之间的bgp邻居关系最近一次发生震荡的时间与当前时间之间的时长和第一路由设备最近一次向第二路由设备发送待查询路由的更新报文的时间与当前时间之间的时长这两个参数,从而可以更加准确的确定出待查询路由发生震荡的震荡源。
[0229]
本申请实施例中第二阈值可以与第一阈值相等,也可以与第一阈值不相等。本申请实施例中,第一阈值的选取可以根据实际情况灵活设置,比如可以设置两个路由设备对应的第一阈值不同,也可以设置为相同,可以设置两个路由设备对应的第二阈值不同,也可以设置为相同。例如:当第一路由设备为溯源发起设备时,第一路由设备在执行上述步骤1103的几种可能地实现方式中,第一阈值取值为2分钟,第二阈值也取值为2分钟。而当第一路由设备为溯源协助设备时,第一路由设备在执行上述步骤1103的几种可能地实现方式中,第一阈值和第二阈值可以根据溯源发起设备上的该待查询路由的时间戳来取值。溯源发起设备上的该待查询路由的时间戳具体是指该待查询路由在溯源发起设备上的最近一
次进行更新的时间。比如当第一路由设备为溯源协助设备时,可以将第一阈值取值为溯源发起设备上的该待查询路由的时间戳与当前时间之间的时长加上第一时长阈值,将第二阈值取值为溯源发起设备上的该待查询路由的时间戳与当前时间之间的时长加上第二时长阈值。第一时长阈值和第二时长阈值可以相等也可以不相等,比如可以将第一时长阈值和第二时长阈值均设置为60秒。
[0230]
通过上述两个示例,可以看出,本申请实施例中路由设备担任的角色不同时,第一阈值和第二阈值可以分别设置,一方面可以提高方案的灵活性,另一方面将溯源协助设备对应的第一阈值和溯源协助设备对应的第二阈值结合溯源发起设备上的该待查询路由的时间戳来考虑,可以更加贴合实际,更加准确的确定出待查询路由的震荡源。
[0231]
本申请实施例提供一种用于实现上述步骤1104的可能地实现方式,第一路由设备在确定第一路由设备不是该待查询路由的震荡源的情况下向第二路由设备发送第一查询请求,而第二路由设备可以具有查询待查询路由的震荡源的能力,也可以不具有查询待查询路由的震荡源的能力。这种情况下,第二路由设备在具有查询待查询路由的震荡源的能力且开启了查询待查询路由的震荡源的能力的情况下,可以根据第一查询请求查询该待查询路由的震荡源。
[0232]
本申请实施例提供另一种用于实现上述步骤1104的可能地实现方式,第一路由设备是在确定第一路由设备不是该待查询路由的震荡源,且第二路由设备具有查询待查询路由的震荡源的能力的情况下向第二路由设备发送第一查询请求。如此,可以使第二路由设备根据第一查询请求确定该待查询路由的震荡源。
[0233]
在上述另一种用于实现上述步骤1104的可能地实现方式,若第一路由设备确定第一路由设备不是该待查询路由的震荡源,但第二路由设备不具有查询待查询路由的震荡源的能力,这种情况下,第一路由设备可以结束该查询震荡源的流程。进一步,第一路由设备可以反馈第二查询响应,第二查询响应中可以包括该查询事件所经过的历史路由设备的路由信息,第二查询响应中也可以为用户提供一个查询接口,从而可以使用户结合反馈的第二查询响应对待查询路由进行进一步的筛查,从而可以节省人力。第一查询响应中还可以包括待查询路由、待查询路由在溯源发起设备上的时间戳等属性信息中的任一项或任多项。
[0234]
在上述另一种用于实现上述步骤1104的可能地实现方式,若第一路由设备确定第一路由设备不是该待查询路由的震荡源,但第二路由设备具有的查询待查询路由的震荡源的能力被去使能了,这种情况下,第一路由设备可以先通过上述协商流程去开启第二路由设备的查询待查询路由的震荡源的能力,也可以直接将第一查询请求发送给第二路由设备,当第二路由设备确定需要使用查询待查询路由的震荡源的能力的情况下,自行开启查询待查询路由的震荡源的能力,并根据第一查询请求查询待查询路由的震荡源。第一路由设备也可以结束该查询震荡源的流程。进一步,第一路由设备可以反馈第二查询响应,第二查询响应中可以包括该查询事件所经过的历史路由设备的路由信息,第二查询响应中也可以为用户提供一个查询接口,从而可以使用户结合反馈的第二查询响应对待查询路由进行进一步的筛查,从而可以节省人力。
[0235]
在上述步骤1104之后,若第二路由设备确定第二路由设备不是该待查询路由的震荡源,则第二路由设备可以继续向沿路由发布方向向上游溯源,以查询待查询路由的震荡
源。若第二路由设备确定第二路由设备是该待查询路由的震荡源,则第二路由设备可以向第一路由设备发送第一查询响应。相对应地,第一路由设备接收第二路由设备发送的第一查询响应,第一查询响应指示待查询路由的震荡源。第一路由设备对接收到的第一查询响应的处理方式可以视第一路由设备的角色来确定,例如:当第一路由设备是溯源发起设备(溯源发起设备为发起查询事件的设备)时,第一路由设备可以直接将第一查询响应反馈给用户。当第一路由设备不是溯源发起设备(第一路由设备是溯源协助设备)时,第一路由设备可以将第一查询响应转发给其它路由设备,比如第三路由设备。
[0236]
上述步骤1104中,一种可能地实现方式下,当第一路由设备确定第一路由设备不是该待查询路由的震荡源,第一路由设备可以判断该查询事件遍历的历史路由设备的数量是否小于数量阈值,在小于的情况下,第一路由设备向第二路由设备发送第一查询请求。在不小于的情况下,可以直接结束该查询事件,也可以反馈第二查询响应。该查询事件遍历的历史路由设备的数量可以是指从溯源发起设备起始,至第一路由设备止,待查询路由对应的路由设备的数量。数量阈值可以根据具体情况设置,比如可以设置为20。
[0237]
当第一路由设备为溯源协助设备,第一路由设备接收第二查询请求,在上述步骤1104中,第一路由设备确定第一路由设备不是该待查询路由的震荡源,可以将第二查询请求中的该查询事件遍历的历史路由设备的数量加1,以更新第二查询请求,进一步可以根据更新后的第二查询请求,向第二路由设备发送第一查询请求。比如可以将更新后的第二查询请求中的源地址和目的地址进行修改,从而得到第一查询请求。
[0238]
上述步骤1101至步骤1104中,第一路由设备可以是溯源发起设备,也可以是溯源协助设备。针对第一路由设备为溯源协助设备的情况,本申请实施例提供一种可能地实现方式,该实现方式中,第一路由设备从第三路由设备接收第二查询请求之后,第一路由设备可以根据第二查询请求包括的路由信息确定至少一条候选待查询路由,并从一条或多条候选待查询路由中确定出待查询路由,待查询路由为一条或多条候选待查询路由中的最优路由。本申请实施例中至少一条候选待查询路由是指一条或多条候选待查询路由。最优路由也可以描述为best route。最优路由是在所有活跃路由中根据一定规则选出来的路由。比如最优路由可以是从至少一条候选待查询路由中选出的路径最短的一条路由,再比如,最优路由可以是从至少一条候选待查询路由中选出的业务负荷量最少的一条路由。再比如,最优路由可以是针对至少一条候选待查询路由中的每条候选待查询路由进行多个元素的衡量,并为多个元素中的每个元素设置不同的权重,之后从至少一条候选待查询路由中选出综合性能最好的一条路由,其中,多个元素可以是路径的长短、业务量的多少等等内容。并且在步骤1102之前,第一路由设备确定待查询路由在第一路由设备上的时间戳与当前时间之间的时长小于第三阈值,待查询路由在第一路由设备上的时间戳用于指示待查询路由在第一路由设备上的最近一次更新的时间。第三阈值可以根据溯源发起设备上的该待查询路由的时间戳来取值。溯源发起设备上的该待查询路由的时间戳具体是指该待查询路由在溯源发起设备上的最近一次进行更新的时间。比如可以将第三阈值取值为溯源发起设备上的该待查询路由的时间戳与当前时间之间的时长加上第三时长阈值,第三时长阈值可以设置为60秒。
[0239]
当第一路由设备为溯源协助设备,若第一路由设备根据第二查询请求包括的路由信息未命中候选待查询路由(比如所有候选待查询路由都已经被撤销,这种情况下第一路
由设备中无法命中与路由信息匹配的候选待查询路由),也就是说第一路由设备上不存在与路由信息匹配的候选待查询路由。或者,第一路由设备根据第二查询请求包括的路由信息命中一条或多条候选待查询路由,但是所有的候选待查询路由中没有一条候选待查询路由是最优路由(比如所有的候选待查询路由中的每一个候选待查询路由是非活跃路由或活跃但非最优路由)(当一条路由为最优路由时,该路由的参数信息中可以包括该路由为最优路由的指示信息,第一路由设备可以根据该指示信息确定一条路由是否为最优路由)。这两种情况下,第一种可能地实现方式中,第一路由设备可以直接结束该查询事件。另一种可能地实现方式中,第一路由设备也可以等待一段时长(比如3秒)之后重新查询一次,也可以以一定的时长为间隔多查询几次,如果均没有查到候选待查询路由,则可以结束该查询事件。第三种可能地实现方式中,第一路由设备也可以反馈第二查询响应。
[0240]
当第一路由设备为溯源协助设备,还存在一种情况,该情况下,可以根据路由信息确定出待查询路由,但是待查询路由在第一路由设备上的时间戳与当前时间之间的时长不小于第三阈值,这种情况下,可以直接结束该查询事件。也可以进一步判定路由的下一跳迭代路由的更新时间与当前时间之间的时长是否小于第四阈值,如果小于,则可以反馈第一查询响应,第一查询响应中可以指示第一路由设备为震荡源。而当不小于的情况下,可以反馈第二查询响应,也可以等待一段时间再次查询是否命中与路由信息匹配的待查询路由,也可以以一定的时长为间隔多次重复查询是否命中与路由信息匹配的待查询路由。
[0241]
在上述图11以及相关方案中所涉及的第一查询请求、第二查询请求、第一查询响应和第二查询响应可以统称为数据报文,数据报文的格式可以灵活设置。本申请实施例中第一查询请求可以描述为第一bst_query报文,第二查询请求可以描述为第二bst_query报文,本申请实施例中第一查询响应可以描述为第一bst_reply报文,第二查询响应可以描述为第二bst_reply报文,图12示例性示出了本申请实施例提供的一种数据报文的格式的示意图,如图12所示:
[0242]
数据报文中报文标识字段可以占用4字节,比如可以如图12所示,填充0xfe,也可以填充其它数值。报文标识字段可用于指示该报文为本申请实施例中所定义的协商报文或下述内容中提到的数据报文,如此可以将本申请实施例中定义的协商报文和数据报文与现有技术中已定义的其它报文区别开来。
[0243]
数据报文中的报文总长度(totallen)字段可以占用16比特(bit),可用于指示报文的总长度。
[0244]
数据报文中的类型(type)字段可以占用5比特,可用于指示该报文的类型,当该报文为数据报文时,该报文的类型字段承载用于指示该报文为数据报文的内容。比如,将类型字段的值设置为2时,可以表示该报文为数据报文。
[0245]
c字段,可以占用1个比特,示例性地,将c字段的值设置为0,可表示该报文为第二协商报文,设置为1可表示该报文为第一协商报文。
[0246]
a字段,可以占用1个比特,示例性地,将a字段的值设置为1可表示该报文为响应报文(比如第一查询响应和第二查询响应),设置为0可表示该报文为非响应报文(比如为第一查询请求或第二查询请求)。
[0247]
r字段,可以占用1个比特,可以为保留字段。r字段可以默认填充为0。
[0248]
可选地,报文中还可以包括如图10中所示的协议编号(protocolno)字段,可以占
用8个比特,可以承载协议编号。
[0249]
数据字段也可以描述为app data字段。
[0250]
当图12中所示的报文为第一查询请求或第二查询请求时,数据字段中可以承载如下内容中的一项或多项:
[0251]
类型字段,可以描述为type字段,可以占用1字节,可用于指示该数据报文为查询请求(第一查询请求和第二查询请求可以统称为查询请求)还是查询响应(第一查询响应和第二查询响应可以统称为查询响应)当数据报文为第一查询请求或第二查询请求时,类型字段的值为query;
[0252]
长度字段,可以描述为len字段,可占用2字节,用于指示报文长度;
[0253]
溯源发起设备标识字段,也可以描述为bgp src router id字段,可占用4字节,指示溯源发起设备的标识;
[0254]
序列号(series number,sn)字段,可占用4字节,承载序列号,序列号用于标识用于查询待查询路由的查询事件;
[0255]
afi字段,可占用1字节,可用于指示待查询路由的地址族;
[0256]
safi字段,可占用1字节,可用于指示待查询路由的子地址族;
[0257]
rd字段,可占用6字节,可用于指示待查询路由所在rd;
[0258]
ip地址字段,也可以描述为ip address字段,可占用4字节,可用于指示待查询路由的ip地址;
[0259]
掩码字段,也可以描述为masklen字段,可占用1字节,可用于指示待查询路由的掩码长度;
[0260]
age字段,可占用4字节,可用于指示待查询路由在溯源发起设备上的最近一次更新的时间;
[0261]
跳数量字段,也可以描述为hops字段,可占用1字节,可用于指示查询事件遍历的历史路由设备的数量。
[0262]
当图12中所示的报文为第一查询响应或第二查询响应时,数据字段中可以承载如下内容中的一项或多项:
[0263]
类型字段,可以描述为type字段,可以占用1字节,可用于指示该数据报文为查询响应(第一查询响应和第二查询响应可以统称为查询响应)还是查询响应(第一查询响应和第二查询响应可以统称为查询响应)当数据报文为第一查询响应或第二查询响应时,类型字段的值为query;
[0264]
长度字段,可以描述为len,可占用2字节,用于指示报文长度;
[0265]
溯源发起设备标识字段,也可以描述为bgp src router id字段,可占用4字节,指示溯源发起设备的标识;
[0266]
sn字段,可占用4字节,承载序列号,序列号用于标识用于查询待查询路由的查询事件;
[0267]
震荡源标识字段,可以描述为damp router id字段,可占用4字节,可以用于指示导致待查询路由发生路由震荡的源设备的标识,即可以用于指示震荡源的标识;
[0268]
返回码字段,可以描述为reply code字段,可占用1字节,用于指示溯源结果;
[0269]
跳数量字段,也可以描述为hops字段,可占用1字节,可用于指示查询事件遍历的
历史路由设备的数量。
[0270]
基于上述内容,下面结合图1的通信系统架构示意图,提供一个具体示例,如图13和图14所示。图13示例性示出了本申请实施例提供的一种路由发布的方法流程示意图,如图13所示,通信系统105中路由发布方向为:路由设备104

路由设备103

路由设备102

路由设备101。路由设备104的地址为4.4.4.4,路由设备103的地址为3.3.3.3,路由设备102的地址为2.2.2.2,路由设备101的地址为1.1.1.1。
[0271]
下面详细说明路由发布过程,如图13所示,路由设备104确定出路由设备104对应的路由信息,路由设备104对应的路由信息如图可以包括:公网(public);ipv4单播(ipv4 unicast);路由前缀100.1.1.1/32;来源(form)0.0.0.0。图中form0.0.0.0用于指示沿路由发布方向上路由设备104的上一跳地址为0.0.0.0,这表示路由设备104为该路由上沿路由发布方向上的最起始的路由设备。
[0272]
由于路由设备104和路由设备103同在as200中,因此路由设备104通过虚拟专用网(virtual private network,vpn)2向路由设备103发布路由信息,路由设备103通过vpn2收到的路由信息如图可以包括:vpn2;ipv4单播(ipv4 unicast);路由前缀100.1.1.1/32;form4.4.4.4。图中form4.4.4.4表示沿路由发布方向上路由设备103的上一跳地址为4.4.4.4。
[0273]
由于路由设备103和路由设备102在两个不同的as中,因此路由设备103需要将通过vpn2接收到的路由信息转换(“转换”在有些场景下也可以称为“复制”)至公网中,路由设备103转换至公网的路由信息如图可以包括:public;vpnv4,rd:200:1;路由前缀100.1.1.1/32,form4.4.4.4。
[0274]
路由设备103将转换至公网的路由信息发送给路由设备102。路由设备102通过公网收到的路由信息如图可以包括:public;vpnv4,rd:200:1;路由前缀100.1.1.1/32,form3.3.3.3。图中form4.4.4.4表示沿路由发布方向上路由设备102的上一跳地址为3.3.3.3。
[0275]
由于路由设备102和路由设备101同在as100中,因此路由设备102需要将通过公网接收到的路由信息转换至vpn1中,路由设备102转换至vpn1的路由信息如图可以包括:vpn1;ipv4单播(ipv4 unicast);路由前缀100.1.1.1/32;form3.3.3.3。
[0276]
由于路由设备102和路由设备101同在as100中,因此路由设备102通过vpn1向路由设备101发布路由信息,路由设备101最终得到的路由信息如图可以包括:public;ipv4单播(ipv4 unicast);路由前缀100.1.1.1/32;form2.2.2.2。图中form2.2.2.2表示沿路由发布方向上路由设备101的上一跳地址为2.2.2.2。
[0277]
基于图13所示的内容,图14示例性示出了本申请实施例提供的一种路由震荡源查询方法的流程示意图,图14中的通信系统为图13中所示的通信系统,图14中的路由发布方向即为上述图13中所示内容。如图14所示:
[0278]
路由设备101发起查询事件,路由设备101位溯源发起设备,查询事件的相关信息如图所示,可以包括以下内容中的一项或多项:
[0279]
事务1type=query;表示路由设备101针对该查询事件中所发起的报文的报文类型为查询请求;
[0280]
sn:1.1.1.1 00009527;表示该次查询事件的序列号为1.1.1.1 00009527;
[0281]
afi/safi:1/1;表示该次查询事件的afi/safi为1/1;
[0282]
src:1.1.1.1;表示路由设备101针对该查询事件中所发起的报文的源地址为1.1.1.1(即为路由设备101的地址);
[0283]
dst:2.2.2.2;表示路由设备101针对该查询事件中所发起的报文的目的地址为2.2.2.2(即为路由设备102的地址);
[0284]
ip:100.1.1.1/32;表示路由前缀为100.1.1.1/32。
[0285]
路由设备101确定自身不是震荡源,则向路由设备102发送查询请求,路由设备101所发送的查询请求如图可以包括以下内容中的一项或多项:
[0286]
type=query;表示路由设备101发送的该报文的报文类型为查询请求;
[0287]
sn:1.1.1.1 00009527;
[0288]
src:1.1.1.1;表示路由设备101发送的该报文的源地址为1.1.1.1(即为路由设备101的地址);
[0289]
dst:2.2.2.2;表示路由设备101发送的该报文的目的地址为2.2.2.2(即为路由设备102的地址);
[0290]
afi/safi:1/1;
[0291]
rd:0:0;
[0292]
ip:100.1.1.1/32;表示路由前缀为100.1.1.1/32。
[0293]
age=10s;表示路由在路由设备101上的时间戳;
[0294]
hops=1;表示查询事件遍历的历史路由设备的数量为1(查询事件遍历的历史路由设备当前有路由设备101)。
[0295]
路由设备102收到路由设备101发送的查询请求后,确定自身不是震荡源,则向路由设备103发送查询请求,路由设备102所发送的查询请求如图可以包括以下内容中的一项或多项:
[0296]
type=query;表示路由设备102发送的该报文的报文类型为查询请求;
[0297]
sn:1.1.1.1 00009527;
[0298]
src:2.2.2.2;表示路由设备102发送的该报文的源地址为2.2.2.2;
[0299]
dst:3.3.3.3;表示路由设备102发送的该报文的目的地址为3.3.3.3;
[0300]
afi/safi:1/1;
[0301]
rd:0:0;
[0302]
ip:100.1.1.1/32;表示路由前缀为100.1.1.1/32。
[0303]
age=10s;表示路由在路由设备101上的时间戳;
[0304]
hops=2;表示查询事件遍历的历史路由设备的数量为2(查询事件遍历的历史路由设备当前有路由设备101、路由设备102)。
[0305]
路由设备103收到路由设备102发送的查询请求后,确定自身不是震荡源,则向路由设备104发送查询请求,路由设备103所发送的查询请求如图可以包括以下内容中的一项或多项:
[0306]
type=query;表示路由设备103发送的该报文的报文类型为查询请求;
[0307]
sn:1.1.1.1 00009527;
[0308]
src:3.3.3.3;表示路由设备103发送的该报文的源地址为3.3.3.3;
[0309]
dst:4.4.4.4;表示路由设备103发送的该报文的目的地址为4.4.4.4;
[0310]
afi/safi:1/1;
[0311]
rd:0:0;
[0312]
ip:100.1.1.1/32;表示路由前缀为100.1.1.1/32。
[0313]
age=10s;表示路由在路由设备101上的时间戳;
[0314]
hops=3;表示查询事件遍历的历史路由设备的数量为3(查询事件遍历的历史路由设备当前有路由设备101、路由设备102、路由设备103)。
[0315]
路由设备104收到路由设备103发送的查询请求后,可以获取该次查询事件的部分或全部相关信息,如图所示,可以包括:
[0316]
事务1type=query;表示路由设备101针对该查询事件中所发起的报文的报文类型为查询请求;
[0317]
sn:1.1.1.1 00009527;
[0318]
afi/safi:1/1;表示该次查询事件的afi/safi为1/1;
[0319]
src:3.3.3.3;表示路由设备104收到的该报文的源地址为3.3.3.3;
[0320]
dst:4.4.4.4;表示路由设备104收到的该报文的目的地址为4.4.4.4;
[0321]
ip:100.1.1.1/32;表示路由前缀为100.1.1.1/32。
[0322]
路由设备104确定自己为震荡源,则路由设备104可以生成第一查询响应,并向路由设备103反馈第一查询响应,第一查询响应的相关信息如图可以包括:
[0323]
返回码;
[0324]
hops=3;表示查询事件遍历的历史路由设备的数量为3(查询事件遍历的历史路由设备当前有路由设备101、路由设备102、路由设备103);
[0325]
震荡源地址(dampsrcid):4.4.4.4;表示路由前缀100.1.1.1/32对应的震荡源地址为4.4.4.4。
[0326]
路由设备生成的第一查询响应如图可以包括:
[0327]
type=query;表示路由设备103发送的该报文的报文类型为查询请求;
[0328]
sn:1.1.1.1 00009527;
[0329]
返回码;
[0330]
hops=3;表示查询事件遍历的历史路由设备的数量为3(查询事件遍历的历史路由设备当前有路由设备101、路由设备102、路由设备103);
[0331]
震荡源地址(dampsrcid):4.4.4.4;表示路由前缀100.1.1.1/32对应的震荡源地址为4.4.4.4。
[0332]
路由设备103将该第一查询响应转发至路由设备102,路由设备102再将其转发至路由设备101,以使路由设备101最终确定出第一查询响应中的信息“hops=3和震荡源地址(dampsrcrid):4.4.4.4”。路由设备101可以确定此次查询事件的震荡源地址为4.4.4.4,且从路由设备101至地址为4.4.4.4的路由设备需经过3个路由设备。
[0333]
图15是本申请实施例提供的一种网络设备的结构示意图,本申请实施例涉及的任一网络设备、路由设备以及节点等设备均可以通过图15所示的装置来实现。如图15所示,该网络设备1500包括:
[0334]
生成模块1501,用于执行图2实施例中的步骤201;
[0335]
发送模块1502,用于执行图2实施例中的步骤202。
[0336]
可选地,如图16所示,该网络设备1500还包括:
[0337]
接收模块1503,用于接收来自对端网络设备的第二报文,第二报文包括用于指示第一协议的字段,第二报文用于指示网络设备向对端网络设备反馈第一协议的数据,第二报文遵循的协议和第一报文遵循的协议相同;
[0338]
生成模块,具体用于:
[0339]
网络设备响应于第二报文,网络设备生成第一报文。
[0340]
可选地,发送模块1502,还用于执行图2实施例中的步骤204。
[0341]
可选地,接收模块1503,还用于执行图2实施例中的步骤205;
[0342]
确定模块,用于基于第三报文,确定对端网络设备支持第一协议的数据的交互。
[0343]
可选地,网络设备1500还包括:
[0344]
使能模块,用于使能交互第一协议的数据的能力;
[0345]
发送模块,还用于向对端网络设备发送第五报文,第五报文包括用于指示第一协议的字段,第五报文还携带用于指示网络设备使能交互第一协议的数据的能力的字段,第五报文遵循的协议和第一报文遵循的协议相同。
[0346]
可选地,网络设备还包括:
[0347]
去使能模块,用于去使能交互第一协议的数据的能力;
[0348]
发送模块,还用于向对端网络设备发送第六报文,第六报文包括用于指示第一协议的字段,第六报文还携带用于指示网络设备去使能交互第一协议的数据的能力的字段,第六报文遵循的协议和第一报文遵循的协议相同。
[0349]
可选地,网络设备还包括:
[0350]
接收模块,用于接收来自对端网络设备的第七报文,第七报文用于指示对端网络设备接收到第一报文,第七报文遵循的协议和第一报文遵循的协议相同。
[0351]
可选地,接收模块,还用于接收来自对端网络设备的第八报文,第八报文用于指示对端网络设备接收到第三报文,第八报文遵循的协议和第一报文遵循的协议相同。
[0352]
在本申请实施例中,网络设备可以通过第一报文向对端网络设备传输第一协议的数据。由于第一报文遵循的协议与第一协议不同,这样不管第一协议具体是什么协议,均可采用第一报文交互第一协议的数据。也即是,本申请提供了一种通用的协议,用于传输第一协议的数据,因此提高了发送报文的灵活性。
[0353]
需要说明的是:上述实施例提供的网络设备在发送报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络设备与发送报文的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0354]
图17是本申请实施例提供的一种网络设备的结构示意图。本申请实施例中涉及的网络设备均可以通过图17所示的装置来实现。参见图17,该装置包括至少一个处理器1701,通信总线1702、存储器1703以及至少一个通信接口1704。
[0355]
处理器1701可以是一个通用中央处理器(central processing unit,cpu)、微处理器、特定应用集成电路(application

specific integrated circuit,asic)或一个或多
个用于控制本申请方案程序执行的集成电路。
[0356]
通信总线1702可包括一通路,在上述组件之间传送信息。
[0357]
存储器1703可以是只读存储器(read

only memory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read

only memory,eeprom)、只读光盘(compact disc read

only memory,cd

rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1703可以是独立存在,通过通信总线1702与处理器1701相连接。存储器1703也可以和处理器1701集成在一起。
[0358]
通信接口1704,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网、无线接入网(ran)、无线局域网(wireless local area networks,wlan)等。
[0359]
在具体实现中,作为一种实施例,该装置可以包括多个处理器,例如图17中所示的处理器1701和处理器1705。这些处理器中的每一个可以是一个单核(single

cpu)处理器,也可以是一个多核(multi

cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
[0360]
上述的该装置可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,该装置可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digital assistant,pda)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备。本申请实施例不限定该装置的类型。
[0361]
其中,存储器1703用于存储执行本申请方案的程序代码,并由处理器1701来控制执行。处理器1701用于执行存储器1703中存储的程序代码。程序代码中可以包括一个或多个软件模块。本申请实施例中涉及的网络设备可以通过处理器1701以及存储器1703中的程序代码中的一个或多个软件模块,来确定用于开发应用的数据。
[0362]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,dvd))、或者半导体介质(例如:固态硬盘(solid state disk,ssd))等。
[0363]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件
来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0364]
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1