检测报文的传输方法、反向路径的确定方法及设备与流程

文档序号:30087512发布日期:2022-05-18 06:24阅读:268来源:国知局
1.本技术涉及网络
技术领域
:,特别涉及一种检测报文的传输方法、反向路径的确定方法及设备。
背景技术
::2.很多场景中报文的转发过程是双向的,比如分为上行方向和下行方向这两种方向或者去程方向和回程方向这两种方向,上行方向由第一网络设备发往第二网络设备,下行方向则由第二网络设备发往第一网络设备。通常要求两个方向的转发路径尽量保持一致,从而防止双向流量承载在质量不一致的链路上。3.相关技术中,网管人员可以在控制器上执行配置操作,从而手动地部署每条转发路径对应的反向路径。控制器根据配置操作确定反向路径,并将反向路径下发至网络设备。网络设备接收控制器下发的反向路径,从而获得反向路径。4.以上方法依赖于大量的人工配置,费时费力,影响了网络设备获得反向路径的效率。技术实现要素:5.本技术实施例提供了一种检测报文的传输方法、反向路径的确定方法及设备,能够提高网络设备获得反向路径的效率。所述技术方案如下。6.第一方面,提供了一种检测报文的传输方法,在该方法中,第一网络设备接收第一检测报文,所述第一检测报文的转发路径的中间节点包括所述第一网络设备;所述第一网络设备向所述第一检测报文添加反向路径的路径信息,以得到第二检测报文,所述反向路径与所述转发路径的传输方向相反,所述反向路径与所述转发路径具有相同的约束的集合,所述约束包括节点或链路,所述路径信息用于指示所述反向路径中所述第一网络设备对应的约束,所述第二检测报文包括所述路径信息;所述第一网络设备发送所述第二检测报文。7.以上提供的方法中,中间节点在转发检测报文的过程中,通过向检测报文添加反向路径的路径信息,使得反向路径的路径信息随着检测报文传递到尾节点,从而帮助尾节点利用检测报文中的路径信息确定反向路径。该方法支持尾节点自动发现反向路径,避免控制器手动部署或者人工规划反向路径所产生的开销,降低网络配置的复杂度,因此提高了获得反向路径的效率。8.在一种可能的实现方式中,所述第一检测报文包括目的选项头,所述第一网络设备向所述第一检测报文添加路径信息,以得到第二检测报文,包括:所述第一网络设备向所述第一检测报文的目的选项头添加所述路径信息,以得到所述第二检测报文。9.通过使用目的选项头来记录反向路径的路径信息,不支持的节点收到检测报文后,会自动跳过这种新增的目的选项,并继续处理报文的其他部分,所以有助于提高兼容性。10.在一种可能的实现方式中,所述目的选项头包括指示信息,所述指示信息用于指示向所述第一检测报文添加所述反向路径的路径信息。11.在一种可能的实现方式中,所述路径信息包括互联网协议第6版段路由端点段标识srv6end.sid,所述第一网络设备向所述第一检测报文添加路径信息,以得到第二检测报文,包括:12.若所述第一检测报文的目的地址为本地end.sid,所述第一网络设备向所述第一检测报文添加所述本地end.sid,所述本地end.sid为用于标识所述第一网络设备的一类srv6end.sid。13.通过在目的地址是本地end.sid的情况下,向检测报文添加本地end.sid,使得去程方向上约束的节点与回程方向上约束的节点一致,提高路径还原的准确性。14.在一种可能的实现方式中,所述路径信息包括srv6端点三层交叉连接段标识end.xsid,所述第一网络设备向所述第一检测报文添加路径信息,得到第二检测报文,包括:若所述第一检测报文的目的地址为本地end.xsid,所述第一网络设备向所述第一检测报文添加对端end.xsid,所述本地end.xsid为用于标识从所述第一网络设备至第二网络设备的三层连接的srv6end.xsid,所述对端end.xsid为用于标识从所述第二网络设备至所述第一网络设备的三层连接的srv6end.xsid。15.通过在目的地址是本地end.xsid的情况下,向检测报文添加本地end.xsid,使得去程方向上约束的链路与回程方向上约束的链路一致,提高路径还原的准确性。16.在一种可能的实现方式中,所述第一网络设备向所述第一检测报文添加对端设备信息之前,所述方法还包括:所述第一网络设备根据所述本地end.xsid查询流量工程数据库tedb,得到所述本地end.xsid对应的对端end.xsid,所述tedb保存有本地end.xsid与对端end.xsid之间的对应关系。17.由于中间节点通过tedb即可获得自己和对端链路的信息,进而完成添加路径信息的任务,而不必要求有端到端的视角,所以支持跨域转发场景实施方案,应用场景更加丰富。18.在一种可能的实现方式中,所述第一检测报文采用下述协议报文之一:双向转发检测bfd报文、操作维护管理oam检测报文、基于网际互连协议数据流的随路oam性能测量ifit报文、双向主动测量协议twamp检测报文、因特网包探索器ping检测报文。19.通过上述方式,能够分别确保bfd报文、oam检测报文、ifit报文、twamp检测报文以及ping检测报文的往返路径一致,避免往返流量分别承载在不同路径导致bfd、oam、ifit、twamp以及ping误检测。20.第二方面,提供了一种反向路径的确定方法,在该方法中,网络设备接收检测报文,所述检测报文经过的转发路径的尾节点为所述网络设备,所述检测报文包括反向路径的路径信息,所述反向路径与所述转发路径的传输方向相反,所述反向路径与所述转发路径具有相同的约束的集合,所述约束包括节点或链路;所述网络设备根据所述路径信息确定所述反向路径。21.以上提供的方法中,尾节点利用检测报文携带的路径信息,能够自动准确的获取反向路径,避免控制器手动部署或者人工规划反向路径所产生的开销,降低网络配置的复杂度,因此提高了获得反向路径的效率。22.在一种可能的实现方式中,所述网络设备根据所述路径信息确定所述反向路径之后,所述方法还包括:所述网络设备生成响应报文,所述响应报文用于对所述检测报文响应,所述响应报文包括段路由头srh,所述srh中的段列表用于指示所述反向路径;所述网络设备发送所述响应报文。23.在一种可能的实现方式中,所述网络设备接收检测报文之后,所述方法还包括:所述网络设备向网络中的控制器发送所述路径信息。24.在一种可能的实现方式中,所述检测报文包括第一目的选项头,所述第一目的选项头包括所述反向路径的路径信息。25.在一种可能的实现方式中,所述检测报文包括段路由头srh,所述第一目的选项头在srh之前。26.在一种可能的实现方式中,所述检测报文包括第二目的选项头,所述第二目的选项头包括业务信息,所述业务信息用于指示所述转发路径的属性或者所述检测报文承载的业务,所述网络设备接收检测报文之后,所述方法还包括:所述网络设备根据所述业务信息进行业务处理。27.在一种可能的实现方式中,所述检测报文包括第二目的选项头,所述第二目的选项头包括业务信息,所述业务信息为颜色信息、优先级信息或描述符,所述网络设备生成响应报文包括:所述网络设备根据所述业务信息封装所述响应报文。28.在一种可能的实现方式中,所述检测报文包括载荷,所述第二目的选项头在所述载荷之前所述srh之后。29.在一种可能的实现方式中,所述反向路径的所述约束是所述转发路径的所述约束的一部分。30.第三方面,提供了一种检测报文的传输方法,在该方法中,网络设备生成检测报文,所述检测报文的转发路径的头节点为所述网络设备,所述检测报文包括反向路径的路径信息,所述反向路径与所述转发路径的传输方向相反,所述反向路径与所述转发路径具有相同的约束的集合,所述约束包括节点或链路,所述路径信息用于指示所述反向路径中所述网络设备对应的约束;所述网络设备发送所述检测报文。31.以上提供的方法中,头节点通过在检测报文中携带反向路径的路径信息,从而帮助尾节点利用检测报文中的路径信息确定反向路径,有助于支持尾节点自动发现反向路径,避免控制器手动部署或者人工规划反向路径所产生的开销,降低网络配置的复杂度,因此提高了获得反向路径的效率。32.在一种可能的实现方式中,所述检测报文包括第一目的选项头,所述第一目的选项头包括所述反向路径的路径信息。33.在一种可能的实现方式中,所述第一目的选项头包括指示信息,所述指示信息用于指示向所述检测报文添加所述反向路径的路径信息。34.在一种可能的实现方式中,所述检测报文包括第二目的选项头,所述第二目的选项头包括业务信息,所述业务信息用于指示所述转发路径的属性或者所述检测报文承载的业务。35.在一种可能的实现方式中,所述网络设备生成检测报文,包括:36.当所述转发路径首次建立时,或者当所述转发路径发生变化时,所述网络设备生成所述检测报文。37.第四方面,提供了一种网络设备,该网络设备具有实现上述第一方面或第一方面任一种可选方式的功能。该网络设备包括至少一个单元,至少一个单元用于实现上述第一方面或第一方面任一种可选方式所提供的方法。38.在一些实施例中,第四方面提供的网络设备中的单元通过软件实现,网络设备中的单元是程序模块。在另一些实施例中,第四方面提供的网络设备中的单元通过硬件或固件实现。第四方面提供的网络设备的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。39.第五方面,提供了一种网络设备,该网络设备具有实现上述第二方面或第二方面任一种可选方式的功能。该网络设备包括至少一个单元,至少一个单元用于实现上述第二方面或第二方面任一种可选方式所提供的方法。40.在一些实施例中,第五方面提供的网络设备中的单元通过软件实现,网络设备中的单元是程序模块。在另一些实施例中,第五方面提供的网络设备中的单元通过硬件或固件实现。第五方面提供的网络设备的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。41.第六方面,提供了一种网络设备,该网络设备具有实现上述第三方面或第三方面任一种可选方式的功能。该网络设备包括至少一个单元,至少一个单元用于实现上述第三方面或第三方面任一种可选方式所提供的方法。42.在一些实施例中,第六方面提供的网络设备中的单元通过软件实现,网络设备中的单元是程序模块。在另一些实施例中,第六方面提供的网络设备中的单元通过硬件或固件实现。第六方面提供的网络设备的具体细节可参见上述第三方面或第三方面任一种可选方式,此处不再赘述。43.第七方面,提供了一种网络设备,该网络设备包括处理器和通信接口,该处理器用于执行指令,使得该网络设备执行上述第一方面或第一方面任一种可选方式所提供的方法,所述通信接口用于接收或发送报文。第七方面提供的网络设备的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。44.第八方面,提供了一种网络设备,该网络设备包括处理器和通信接口,该处理器用于执行指令,使得该网络设备执行上述第二方面或第二方面任一种可选方式所提供的方法,所述通信接口用于接收或发送报文。第八方面提供的网络设备的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。45.第九方面,提供了一种网络设备,该网络设备包括处理器和通信接口,该处理器用于执行指令,使得该网络设备执行上述第三方面或第三方面任一种可选方式所提供的方法,所述通信接口用于接收或发送报文。第九方面提供的网络设备的具体细节可参见上述第三方面或第三方面任一种可选方式,此处不再赘述。46.第十方面,提供了一种网络设备,该网络设备包括:主控板和接口板。主控板包括:第一处理器和第一存储器。接口板包括:第二处理器、第二存储器和接口卡。主控板和接口板耦合。47.第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:向第一检测报文添加反向路径的路径信息,以得到第二检测报文,所述反向路径与所述转发路径的传输方向相反,所述反向路径与所述转发路径具有相同的约束的集合,所述约束包括节点或链路,所述路径信息用于指示所述反向路径中所述第一网络设备对应的约束,所述第二检测报文包括所述路径信息。48.第二存储器可以用于存储程序代码,第二处理器用于调用第二存储器中的程序代码,触发接口卡执行如下操作:接收第一检测报文,所述第一检测报文的转发路径的中间节点包括所述第一网络设备。发送所述第二检测报文。49.在一种可能的实现方式中,主控板和接口板之间建立进程间通信协议(inter-processcommunication,ipc)通道,主控板和接口板之间通过ipc通道进行通信。50.第十一方面,提供了一种网络设备,该网络设备包括:主控板和接口板。主控板包括:第一处理器和第一存储器。接口板包括:第二处理器、第二存储器和接口卡。主控板和接口板耦合。51.第二存储器可以用于存储程序代码,第二处理器用于调用第二存储器中的程序代码,触发接口卡执行如下操作:接收检测报文,所述检测报文经过的转发路径的尾节点为所述网络设备,所述检测报文包括反向路径的路径信息,所述反向路径与所述转发路径的传输方向相反,所述反向路径与所述转发路径具有相同的约束的集合,所述约束包括节点或链路。52.第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:根据所述路径信息确定所述反向路径。53.在一种可能的实现方式中,主控板和接口板之间建立ipc通道,主控板和接口板之间通过ipc通道进行通信。54.第十二方面,提供了一种网络设备,该网络设备包括:主控板和接口板。主控板包括:第一处理器和第一存储器。接口板包括:第二处理器、第二存储器和接口卡。主控板和接口板耦合。55.第一存储器可以用于存储程序代码,第一处理器用于调用第一存储器中的程序代码执行如下操作:生成检测报文,所述检测报文的转发路径的头节点为所述网络设备,所述检测报文包括反向路径的路径信息,所述反向路径与所述转发路径的传输方向相反,所述反向路径与所述转发路径具有相同的约束的集合,所述约束包括节点或链路,所述路径信息用于指示所述反向路径中所述网络设备对应的约束。56.第二存储器可以用于存储程序代码,第二处理器用于调用第二存储器中的程序代码,触发接口卡执行如下操作:发送所述检测报文。57.在一种可能的实现方式中,主控板和接口板之间建立ipc通道,主控板和接口板之间通过ipc通道进行通信。58.第十三方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,当所述程序代码被计算机(如第一网络设备)执行时,使得计算机(如第一网络设备)执行上述第一方面或第一方面任一种可选方式所提供的方法。59.第十四方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,当所述程序代码被计算机(如网络设备)执行时,使得计算机(如网络设备)执行上述第二方面或第二方面任一种可选方式所提供的方法。60.第十五方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,当所述程序代码被计算机(如网络设备)执行时,使得计算机(如网络设备)执行上述第三方面或第三方面任一种可选方式所提供的方法。61.第十六方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。网络设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该网络设备执行上述第一方面或第一方面任一种可选方式所提供的方法。62.第十七方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。网络设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该网络设备执行上述第二方面或第二方面任一种可选方式所提供的方法。63.第十八方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。网络设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该网络设备执行上述第三方面或第三方面任一种可选方式所提供的方法。64.第十九方面,提供了一种芯片,当该芯片在网络设备上运行时,使得网络设备执行上述第一方面或第一方面任一种可选方式所提供的方法。65.第二十方面,提供了一种芯片,当该芯片在网络设备上运行时,使得网络设备执行上述第二方面或第二方面任一种可选方式所提供的方法。66.第二十一方面,提供了一种芯片,当该芯片在网络设备上运行时,使得网络设备执行上述第三方面或第三方面任一种可选方式所提供的方法。67.第二十二方面,提供了一种网络系统,该网络系统包括上述第四方面、第七方面或第十方面所述的网络设备,该网络系统还包括上述第五方面、第八方面或第十一方面所述的网络设备,该网络系统还包括上述第六方面、第九方面或第十二方面所述的网络设备。附图说明68.图1是本技术实施例提供的一种网络系统10的架构示意图;69.图2是本技术实施例提供的一种报文格式的示意图;70.图3是本技术实施例提供的一种报文格式的示意图;71.图4是本技术实施例提供的一种报文格式的示意图;72.图5是本技术实施例提供的一种方法200的流程图;73.图6是本技术实施例提供的一种转发报文的场景示意图;74.图7是本技术实施例提供的一种网络设备300的结构示意图;75.图8是本技术实施例提供的一种网络设备400的结构示意图;76.图9是本技术实施例提供的一种网络设备500的结构示意图;77.图10是本技术实施例提供的一种网络设备600的结构示意图;78.图11是本技术实施例提供的一种网络设备700的结构示意图;79.图12是本技术实施例提供的一种网络系统800的结构示意图。具体实施方式80.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。81.随着网络的演进、软件定义网络(softwaredefinednetwork,sdn)概念的提出,在传统的多协议标签交换(multi-protocollabelswitching,mpls)技术上演进了多协议标签交换分段路由(segmentroutingmulti-protocolforlabelswitching,srmpls)。传统mpls带来了很多优势,比如端到端业务仿真,虚拟专用网络(virtualprivatenetwork,vpn)隔离等。但同时,mpls也具有很多固有缺陷,例如标签转发对人类不直观,并且mpls需要端到端硬件支持mpls转发,造成拉通云化数据中心(datacenter,dc)障碍,服务器/交换机不支持mpls。同时,随着公网互联网协议第四版(internetprotocolversion4,ipv4)地址资源池耗尽,终端/视频及数据服务业务(overthetop,ott)的互联网协议第六版(internetprotocolversion6,ipv6)地址化加速,需要一种技术能够继承mpls的优点,且解决mpls固有的缺陷。有鉴于此,srv6技术应运而生,带来以下三个方面的优势。82.第一方面,srv6继承了sr-mpls的优点。具体地,srv6和sr-mpls同属于段路由(segmentrouting,sr)架构,srv6继承了sr-mpls的协议简化、拓扑无关无环备份(topology-independentloop-freealternate,ti-lfa)/微环避免、流量工程、面向sdn的集中式部署的优势。83.第二方面,srv6技术支持大规模组网并提供丰富的编程能力。中间节点只需要支持ipv6native转发,无需支持srv6,因此srv6技术兼容性好。在跨网络拉通,如srv6从承载网入dc场景等,srv6具有天然的优势。84.第三方面,srv6通过对128位的ipv6地址的定义,提出srv6段标识(segmentid,sid)从而标识目标、内容、业务功能,提供了应用与网络深度结合的可能,因此srv6技术具备更强的创新的能力。85.回归到业务本身,大多数的业务都是双向的,比如上行或者下行。两个方向的业务关键绩效指标(keyperformanceindicator,kpi)的要求通常是一致的,所以,通常要求两个方向的业务路径尽量保持一致,这样能防止双向流量承载在质量不一致的链路上。86.另外,随着流量工程在网络中大规模应用,也就是通常意义上说的业务隧道,为了实现业务的快速保护,也需要通过双向转发检测(bidirectionalforwardingdetection,bfd)等检测协议对转发路径进行快速地检测,从而完成电信级的保护。这样也要求检测报文的回程路径和去程路径一致,减少不在转发路径上的链路故障导致业务的误检测。87.为了保证回程路径和去程路径的一致性,一些研究尝试使用控制器手动部署或者是手工指定强规划路径。但是,这种方式存在很多缺陷。第一,部署成本高,需要人工强规划,容易出现部署错误。第二,对于各种业务模型都需要定制开发,控制器深度参与所有方向的业务发放。第三,对于单向隧道等,必须显式部署反向隧道,浪费设备资源。88.而本技术的一些实施例中,提供了一种srv6组网下自动发现回程路径(即反向路径)的方法,使用该方法能基于业务自动学习回程路径(即反向路径),确保正反向路径一致。89.具体地,由头节点发送检测报文。中间节点将反向路径的路径信息添加至检测报文的指定位置,使得携带反向路径的路径信息的检测报文传递到尾节点。尾节点利用检测报文携带的路径信息,能够自动准确的获取反向路径。此外尾节点还能根据学习到的反向路径做进一步地深入处理。通过这种方式,一个业务只需发送少量的检测报文就可以完成路径探测和感知。设备开销小,不需要其他的协议扩展支持。90.下面对本实施例涉及的反向路径(reversepath)这一概念进行介绍。91.反向路径是与转发路径共路、且与转发路径传输方向相反的路径。本实施例中,设备发现的反向路径与转发路径具有相同的约束(constraint)的集合。92.约束包括节点或链路。举例来说,在sr技术中,报文中的段列表(segmentlist)指示了路径的部分或全部约束,segmentlist中的一个段(segment)指示了路径的一个约束。以srv6技术为例,segment为srv6sid,srv6sid的类型包括端点(endpoint,end)、端点三层交叉连接(endpointwithlayer-3cross-connect,end.x)等。类型为end的srv6sid指示节点对应的约束。类型为end.x的srv6sid指示链路对应的约束。93.在一些实施例中,反向路径的尾节点与转发路径的头节点为同一个设备。转发路径的尾节点与反向路径的头节点为同一个设备。例如,转发路径的头节点是设备a,转发路径的尾节点是设备b,转发路径是从设备a到设备b的路径。与此相对的,反向路径的头节点是设备b,反向路径的尾节点是设备a,反向路径是从设备b到设备a的路径。94.在一些实施例中,反向路径的约束与转发路径的约束全部相同。具体地,反向路径具有与转发路径全部相同的中间节点。反向路径具有与转发路径全部相同的链路。例如,转发路径为设备a→设备c→设备d→设备e→设备b,反向路径为设备b→设备e→设备d→设备c→设备a。95.在另一些实施例中,反向路径的约束是转发路径的约束的一部分。具体地,反向路径具有与转发路径部分相同的中间节点。反向路径具有与转发路径部分相同的链路。例如,反向路径的节点数量可能少于转发路径的节点数量。比如,当转发路径上部分节点不支持添加反向路径的路径信息时,发现的反向路径可能不包括这部分节点。换句话说,对于不支持添加反向路径的路径信息的部分节点而言,这部分节点出现在转发路径中,而在反向路径中被跳过。例如,转发路径为设备a→设备c→设备d→设备e→设备b,设备d不支持添加反向路径的路径信息,则发现的反向路径可能为设备b→设备e→设备c→设备a。96.下面结合附图1介绍本技术实施例提供的系统运行环境。97.附图1是本技术实施例提供的网络系统10的架构示意图。网络系统10包括rta、rtb、rtc、rtd、rte、rtf、rtg、rth以及rti。rta、rtb、rtc、rtd、rte、rtf、rtg、rth、rti均是网络设备。网络设备例如为交换机或路由器。网络设备例如为物理设备或者虚拟化设备。98.网络系统10中创建了一条隧道t。隧道t的头节点为rta。隧道t的中间节点为rtb、rtc以及rtd。隧道t的尾节点为rte。隧道t的传输方向为从rta到rte。隧道t用于将检测报文从rta传输至rte。99.在一些实施例中,网络系统10为srv6网络。网络系统10中的网络设备均使能了srv6,换句话说,rta、rtb、rtc等设备均为srv6节点。100.具体而言,rta用于在检测报文中增加srh。srh中的segmentlist指明转发路径上需要经过rtb、rtc、rtd以及rte。检测报文中基本ipv6头中的目的地址(destinationaddress,da)字段指示检测报文需要到达的下一个节点。当rtb、rtc或者rtd接收到检测报文时,会分别根据检测报文中da字段的目的地址,查询本地sid表(localsidtable)。当报文的目的地址与本地sid表中的sid匹配时,确认目的地址命中了本地sid表,则rtb、rtc或者rtd会基于命中的sid执行相应的操作,并将sl减1,将da字段的值更新为下一个sid,使得检测报文转发至rte。101.其中,rta、rtb、rtc、rtd以及rte分别保存了本地sid表。每个设备上的本地sid表包括至少一个srv6sid。例如,实现隧道t的srv6sid包括end(b)、end.x(cd)、end.x(de)、end(e)。实现隧道t的反向路径的srv6sid包括end.x(ed)、end.x(dc)、end(b)以及end(a)。102.下面,对隧道t以及隧道t的反向路径涉及的一些sid进行具体解释说明。103.rta的本地sid表保存了end(a)。换句话说,end(a)是rta本地的srv6sid。end(a)的类型为end.sid。end(a)用于标识rta。在一些实施例中,rta将end(a)通过路由协议发布至网络系统10中rta之外的其他设备,以便其他设备在路由寻址的过程中将目的地址为end(a)的报文转发至rta。104.rtb的本地sid表保存了end(b)。换句话说,end(b)是rtb本地的srv6sid。end(b)的类型为end.sid。end(b)用于标识rtb。在一些实施例中,rtb将end(b)通过路由协议发布至网络系统10中rtb之外的其他设备,以便其他设备在路由寻址的过程中将目的地址为end(b)的报文转发至rtb。105.rtc的本地sid表保存了end.x(cd)。换句话说,end.x(cd)是rtc本地的srv6sid。end.x(cd)的类型为end.xsid。end.x(cd)用于标识从rtc到rtd的三层连接。end.x(cd)绑定的出接口为rtc上与rtd相连的出接口。end.x(cd)绑定的下一跳为rtd。在一些实施例中,rtc将end.x(cd)通过路由协议发布至网络系统10中rtc之外的其他设备,以便其他设备在路由寻址的过程中将目的地址为end.x(cd)的报文转发至rtc。106.rtd的本地sid表保存了end.x(de)和end.x(dc)。换句话说,end.x(de)和end.x(dc)是rtd本地的srv6sid。end.x(de)和end.x(dc)的类型均为end.xsid。end.x(de)用于标识从rtd到rte的三层连接。end.x(de)绑定的出接口为rtd上与rte相连的出接口。end.x(de)绑定的下一跳为rte。end.x(dc)用于标识从rtd到rtc的三层连接。end.x(dc)绑定的出接口为rtd上与rtc相连的出接口。end.x(dc)绑定的下一跳为rtc。end.x(de)和end.x(dc)均由rtd生成和发布。在一些实施例中,rtd将end.x(de)和end.x(dc)通过路由协议发布至网络系统10中rtd之外的其他设备,以便其他设备在路由寻址的过程中将目的地址为end.x(de)或者end.x(dc)的报文转发至rtd。107.在一些实施例中,rtd将end.x(dc)通告(advertise)给rtc。rtc建立end.x(cd)与end.x(dc)之间的对应关系,rtc将end.x(cd)与end.x(dc)之间的对应关系保存至流量工程数据库(trafficengineeringdatabase,tedb,也称ted或te拓扑数据库)。例如,rtc在tedb中为end.x(cd)建立一个用于记录对端接口sid的表项,rtc在该表项中记录end.x(dc)。其中,通告可采用泛洪的方式。108.rte的本地sid表保存了end(e)和end.x(ed)。换句话说,end(e)和end.x(ed)是rte本地的srv6sid。end(e)的类型为end.sid。end.x(ed)的类型为end.xsid。end(e)用于标识rte。end.x(ed)用于标识从rte到rtd的三层连接。end.x(ed)绑定的出接口为rte上与rtd相连的出接口。end.x(ed)绑定的下一跳为rtd。end(e)和end.x(ed)均由rte生成和发布。在一些实施例中,rte将end(e)和end.x(ed)通过路由协议发布至网络系统10中rte之外的其他设备,以便其他设备在路由寻址的过程中将目的地址为end(e)或者end.x(ed)的报文转发至rte。109.在一些实施例中,rte将end.x(ed)通告给rtd。rtd建立end.x(de)与end.x(ed)之间的对应关系,rtd将end.x(de)与end.x(ed)之间的对应关系保存至tedb。例如,rtd在tedb中为end.x(de)建立一个用于记录对端接口sid的表项,rtd在该表项中记录end.x(ed)。110.网络系统10支持bfd的路径发现和处理。例如,在rta上发起bfd检测,rta生成的bfd报文通过隧道t传输至rte。通过实施下述方法200,能够确保rte返回的bfd报文沿着隧道t的反向路径返回rta,防止不在隧道t转发路径上故障影响隧道t的bfd检测。111.下面对本实施例提供的报文格式进行介绍。112.附图2是检测报文的报文格式的示意图。附图2所示的检测报文能够在附图1所示的网络系统10中沿着隧道t转发。113.请参考附图2,检测报文包括基本ipv6头(ipv6header)、目的选项1、srh、目的选项2以及载荷(payload)。114.检测报文中的目的选项头(destinationoptionheader,doh)有两种。如附图2所示,一种目的选项头在srh之前,如附图2中的目的选项1所示,由每个segment对应的节点进行处理。另一种目的选项头在载荷之前,如附图2中的目的选项2所示,由尾节点进行处理。115.其中,用于记录路径信息的目的选项头位于srh之前。另外,在载荷之前使用目的选项头(如附图2中的目的选项2所示)记录业务信息,如路径属性(颜色、权重)或者bfd会话的描述符、业务路由目标(routetarget,rt)等,以便尾节点通过目的选项头获取业务信息。也就是说,路径信息携带在段路由头(segmentroutingheader,srh)之前的目的选项头中。路径属性或者其他业务信息携带在srh之前的目的选项头中,也可以携带在payload之前的目的选项头中。116.以上介绍了检测报文整体的格式,下面对检测报文中目的选项头的格式进行具体介绍。117.附图3是目的选项头的格式示意图。图3所示的目的选项头的格式适用图2中的目的选项1和目的选项2。换句话说,图2中的目的选项1和目的选项2均可以为图3所示的目的选项头。118.请参考附图3,目的选项头包括下一报头(nextheader)字段、报头长度(headerextendedlength,hdrextlen,也称报头扩展长度)字段以及可选项字段。119.可选项字段携带的信息由报文的目的节点检查。目的选项头由紧接在目的选项头前面的报头中的下一报头字段的值(60)标识。本实施例中,可选项字段携带了反向路径的路径信息,下面对可选项字段的格式进行具体说明。120.附图4是目的选项头中可选项字段的格式示意图。图3中的目的选项头中的可选项字段例如为图4所示的可选项字段。121.请参考附图4,可选项字段采用类型-长度-值(type-length-value,tlv)的结构。具体地,可选项字段包括选项类型(optiontype)字段、选项长度(optionlength)字段以及选项数据(optiondata)字段。122.选项类型字段中最高的两个比特定义了对于不支持该目的选项头的节点的处理方式。具体地,如果选项类型字段中最高两个比特的值为00,则不支持该目的选项的节点跳过此选项并继续处理报文其他部分。如果选项类型字段中最高两个比特的值为01,则不支持该目的选项的节点丢弃报文。如果选项类型字段中最高两个比特的值为10,则不支持该目的选项的节点丢弃报文,并且节点会向报文的源地址发送“icmp参数存在问题,代码(code)为2”的消息,该消息指向无法识别的选项类型,icmp即因特网控制报文协议(internetcontrolmessageprotocol,icmp)。如果选项类型字段中最高两个比特的值为11,则不支持该目的选项的节点丢弃报文,并且当报文的目的地址不是多播地址时,节点向报文的源地址发送“icmp参数存在问题,code为2”的消息,该消息指向无法识别的选项类型。123.选项类型字段中最高第三个比特定义了该选项的选项数据在转发过程中是否可更改。具体地,当选项类型字段中最高第三个比特为0时,表示选项数据在转发过程中不可更改。当选项类型字段中最高第三个比特为1时,表示选项数据在转发过程中可更改。124.在本实施例中,用于记录路径信息的可选项字段中选项类型字段的最高三个比特设置为001。例如,附图3所示的检测报文中目的选项1中选项类型字段的最高三个比特设置为001,从而指示不支持目的选项1的节点跳过目的选项1并继续处理报文其他部分,且目的选项1中的选项数据在转发过程中可更改。125.以上介绍了目的选项头整体的封装结构,下面对目的选项1和目的选项2分别具体说明。126.针对srh之前的目的选项头(即图2中的目的选项1)而言,目的选项头中选项类型字段占8个比特,8个比特中最高3比特固定为001,001表示不丢弃并可修改。选项类型字段其余5个比特的值待定。选项长度字段的值待定。选项数据字段的格式如下表1所示,每当检测报文经过一个节点,选项数据字段中会添加一个segmentlist。新添加的segmentlist在最下面,这样目的节点可以直接复制optiondata的内容作为响应报文中srh中的segmentlist。也即是,检测报文的srh中对应的目的节点的segment在最上面,选项头的optiondata不用再做倒序调整。127.表1128.segmentlist[0](128比特的ipv6地址)segmentlist[1](128比特的ipv6地址)segmentlist[2](128比特的ipv6地址)[0129]针对payload之前的目的选项头(即图2中的目的选项2)而言,目的选项头中选项类型字段占8个比特,8个比特中最高3比特均固定为0。选项类型字段其余5个比特的值待定。选项长度字段的值待定。选项数据字段包括头节点的地址、颜色(color)信息和可选信息。其中,颜色信息由头节点确定。例如,在srv6流量工程(trafficengineering,te)的场景下,颜色信息为srv6te策略(policy)的参数。可选信息用于将来扩展,例如用于添加更多的业务参数。[0130]在一些实施例中,检测报文模拟了业务报文,例如检测报文的payload包括业务数据。[0131]下面结合附图5对本技术实施例提供的方法200进行介绍。附图5是本技术实施例提供的方法200的流程图。在一些实施例中,方法200用于自动发现反向路径,从而支持业务转发双向共路。[0132]方法200为了区分描述不同的网络设备,用“第一网络设备”“第二网络设备”和“第三网络设备”分别指代不同的网络设备。在方法200中,检测报文的转发路径的头节点为第一网络设备,检测报文的转发路径的中间节点包括第二网络设备,检测报文经过的转发路径的尾节点为第三网络设备。换句话说,第一网络设备扮演着头节点的角色,第二网络设备扮演着中间节点的角色,第三网络设备扮演着尾节点的角色。[0133]在一些实施例中,方法200应用在srv6网络中,第一网络设备负责在检测报文中添加srh。srh中的segmentlist包括第二网络设备对应的segment,因此检测报文会转发至第二网络设备。[0134]在一些实施例中,方法200涉及的各个网络设备的部署场景如附图1所示。例如,结合附图1来看,方法200中的第一网络设备为网络系统10中的rta;方法200中的第二网络设备为网络系统10中的rtb、rtc或者rtd;方法200中的第三网络设备为网络系统10中的rte。方法200中检测报文的转发路径为隧道t,例如,方法200中转发路径可简化表示为,end(a)→end(b)→end.x(cd)→end.x(de);方法200中的反向路径为隧道t的反向路径,例如,方法200中反向路径可简化表示为end.x(ed)→end.x(dc)→end(b)→end(a)。[0135]方法200通过分布式处理的方式实现路径发现。具体地,转发路径上的头节点和每一跳中间节点均会在收到的检测报文中,添加本端对应的路径信息。换句话说,每当检测报文经过一个节点,检测报文中会新增一个路径信息。当检测报文传递到尾节点时,检测报文携带了沿途经过的每个节点对应的路径信息。因此,尾节点能够根据检测报文中的路径信息,获取到完整的反向路径。[0136]基于这一构思,方法200第一网络设备(头节点)和第二网络设备(中间节点)均涉及添加路径信息的动作。为了区分描述不同设备添加的路径信息,方法200中将第一网络设备添加的反向路径的路径信息称为第一路径信息,将第二网络设备添加的反向路径的路径信息称为第二路径信息。此外,由于转发路径上各个设备发送的检测报文可能具有差异,为了区分描述不同设备发送的检测报文,方法200将第一网络设备发送的检测报文称为第一检测报文,将第二网络设备发送的检测报文称为第二检测报文。[0137]方法200以第二网络设备添加第二路径信息的过程为例,对中间节点如何添加反向路径的路径信息进行描述。在存在多个中间节点的转发场景中,每个中间节点可以采用与第二网络设备执行的流程相类似的过程添加路径信息。[0138]方法200用“第一目的选项头”指代携带路径信息的目的选项头,用“第二目的选项头”指代携带业务信息的目的选项头。在一些实施例中,路径信息和业务信息分别位于不同的目的选项头。例如,第一目的选项头为图2中的目的选项1。第二目的选项头为图2中的目的选项2。在另一些实施例中,路径信息和业务信息位于同一个目的选项头。例如,第一目的选项头为图2中的目的选项1。第二目的选项头也为图2中的目的选项1。[0139]方法200包括步骤s210至步骤s270。[0140]步骤s210,第一网络设备生成第一检测报文。[0141]步骤s220,第一网络设备发送第一检测报文。[0142]具体地,第一网络设备会将第一路径信息封装至检测报文中,以得到第一检测报文。第一路径信息用于指示反向路径中第一网络设备对应的约束。下面结合场景a和场景b,对第一路径信息具体说明。[0143]场景a、约束节点的场景[0144]在约束节点的场景下,检测报文的转发路径将头节点约束为第一网络设备。本实施例中,第一网络设备在检测报文中添加的路径信息(第一路径信息)用于标识第一网络设备,从而将反向路径的尾节点也约束为第一网络设备。那么,由于转发路径的头节点与反向路径的尾节点被约束为同一个设备(第一网络设备),保证约束节点场景下去程方向上约束的节点与回程方向上约束的节点一致。[0145]在一些实施例中,第一路径信息为第一网络设备的互联网协议(internetprotocol,ip)地址。例如,当应用在ipv6网络时,第一路径信息为第一网络设备的ipv6地址。例如,当应用在srv6网络时,第一路径信息为第一网络设备的本地end.sid。[0146]场景b、约束链路的场景[0147]在约束链路的场景下,检测报文的转发路径将第一条链路约束为第一网络设备与第二网络设备(第一个中间节点)之间的链路。本实施例中,第一网络设备在检测报文中添加的路径信息(第一路径信息)用于标识第一网络设备与第二网络设备之间的链路,从而将反向路径中的最后一条链路也约束为第一网络设备与第二网络设备之间的链路。那么,由于转发路径中的第一条链路与反向路径中的最后一条链路被约束为同一条链路,从而保证约束链路场景下去程方向上约束的链路与回程方向上约束的链路一致。[0148]例如,第一网络设备与第二网络设备之间建立了邻接关系,第一路径信息为第二网络设备为该邻接关系分配的任意信息。例如,当应用在srv6网络时,第一路径信息为第二网络设备的本地end.xsid,该end.xsid用于标识从第二网络设备至第一网络设备的三层连接。该end.xsid绑定了第二网络设备上与第一网络设备相连的一个出接口。[0149]第一网络设备如何获得第一路径信息包括多种实现方式。例如,在上述场景a下,第一路径信息为第一网络设备的本地end.sid,第一网络设备在本地sid表中预先保存本地end.sid。在生成第一检测报文的过程中,第一网络设备从本地sid表中获得本地end.sid。又如,在上述场景b下,第二网络设备预先将本地end.xsid通告给第一网络设备;第一网络设备接收第二网络设备的本地end.xsid,将第二网络设备的本地end.xsid保存在tedb中;在生成第一检测报文的过程中,第一网络设备从tedb中获得本地end.xsid。其中,tedb保存有第一网络设备本地end.xsid与第二网络设备本地end.xsid之间的对应关系。[0150]如何在检测报文中携带第一路径信息存在多种实现方式。在一些实施例中,第一路径信息是通过目的选项头携带的。例如,第一网络设备在srh之前添加第一目的选项头,以得到第一检测报文。其中,第一检测报文包括srh和第一目的选项头。第一目的选项头在第一检测报文中的srh之前。第一目的选项头包括反向路径的第一路径信息。第一目的选项头包括optiondata字段,optiondata字段包括第一路径信息。第一目的选项头的具体格式可参考上文对图3和图4的介绍。[0151]在一些实施例中,第一网络设备通过在检测报文中添加指示信息,从而指明中间节点需要执行添加反向路径的路径信息的动作。具体地,第一目的选项头包括指示信息,指示信息用于指示向第一检测报文添加反向路径的路径信息。在一些实施例中,指示信息为目的选项头中的选项类型。具体地,第一目的选项头包括optiontype字段,optiontype字段的值为指示信息。[0152]在一些实施例中,第一网络设备还根据业务需要在检测报文中添加业务信息,以便将业务信息随着检测报文传递到尾节点。其中,业务信息是通过目的选项头携带的。在一种可能的实现中,业务信息是通过payload之前的目的选项头携带的。具体地,第一网络设备在检测报文的载荷之前、srh之后添加第二目的选项头,以得到第一检测报文。第一检测报文包括第二目的选项头,第二目的选项头包括业务信息。第二目的选项头在第一检测报文的载荷之前,第一检测报文中的srh之后。第二目的选项头的具体格式可参考对图3的介绍。[0153]业务信息用于指示转发路径的属性。或者,业务信息用于指示第一检测报文承载的业务。在一些实施例中,业务信息为颜色信息、优先级信息或描述符。颜色信息例如为隧道color。描述符即业务标识符。此外,业务信息还可以包括第一网络设备的地址。[0154]第一网络设备发送第一检测报文的场景包括很多种,下面结合场景一至场景二举例说明。[0155]场景一、当转发路径首次建立时,第一网络设备生成和发送第一检测报文。[0156]具体地,当转发路径创建成功时,触发第一网络设备执行路径发现流程。第一网络设备通过生成和发送检测报文,从而利用检测报文对转发路径进行探测,便于尾节点利用收到的检测报文学习转发路径。[0157]在一些实施例中,第一网络设备连续发送多个检测报文,从而避免单个检测报文丢包对路径发现流程造成影响。例如,第一网络设备连续发送3个检测报文。以检测报文为bfd报文为例,当bfd会话创建成功,会话状态为up时,第一网络设备连续发送3个bfd报文。[0158]场景二、当转发路径发生变化时,第一网络设备生成和发送第一检测报文。[0159]具体地,如果第一网络设备感知转发路径发生变化,第一网络设备会重新发送检测报文,以便尾节点(第三网络设备)将历史发现的转发路径刷新为变化后的转发路径。[0160]步骤s230,第二网络设备接收第一检测报文。[0161]步骤s240,第二网络设备向第一检测报文添加反向路径的路径信息,以得到第二检测报文。[0162]第二检测报文包括第二路径信息(即第二网络设备添加的路径信息)。第二路径信息用于指示反向路径中第二网络设备对应的约束。[0163]第二网络设备向检测报文中的哪个位置添加路径信息包括多种方式。在一些实施例中,第二网络设备向目的选项头添加路径信息。具体地,第二网络设备向第一检测报文的第一目的选项头添加第二路径信息,以得到第二检测报文。第二检测报文包括第一目的选项头。第二检测报文中的第一目的选项头包括第二路径信息。[0164]其中,第一目的选项头包括optiondata字段,第二网络设备具体向第一目的选项头的optiondata字段添加第二路径信息。相应地,第二网络设备执行添加路径信息的动作后,得到的第二检测报文中第一目的选项头的optiondata字段包括第二路径信息。[0165]如何触发第二网络设备执行路径信息的添加动作包括多种方式。在一些实施例中,第二网络设备从第一检测报文中第一目的选项头获得指示信息,根据指示信息执行添加第二路径信息的步骤。例如,第二网络设备从第一目的选项头中的optiontype字段获得optiontype字段的值;第二网络设备根据optiontype字段的值识别第一目的选项头的选项类型。如果第一目的选项头是一种要求添加路径信息的选项,则第二网络设备添加第二路径信息。[0166]下面结合场景a和场景b,对第二路径信息具体说明。[0167]场景a、约束节点的场景[0168]在约束节点的场景下,检测报文的转发路径将一个中间节点约束为第二网络设备。本实施例中,第二网络设备在检测报文中添加的路径信息(第二路径信息)也用于标识第二网络设备,从而将反向路径一个中间节点也约束为第二网络设备。那么,由于转发路径的一个中间节点与反向路径的一个中间节点被约束为同一个设备(第二网络设备),保证约束节点场景下去程方向上约束的节点与回程方向上约束的节点一致。[0169]在一些实施例中,第二路径信息为第二网络设备的ip地址。例如,当应用在ipv6网络时,第二路径信息为第二网络设备的ipv6地址。其中,当应用在srv6网络时,第二路径信息为srv6sid。[0170]在一些实施例中,第二路径信息为第二网络设备的本地end.sid。具体地,第二网络设备接收到第一检测报文后,第二网络设备从第一检测报文的ipv6头中的目的地址(da)字段获得第一检测报文的目的地址。第二网络设备根据第一检测报文的目的地址查询本地sid表。如果第一检测报文的目的地址(ipv6头中的目的地址)为本地end.sid,第二网络设备向第一检测报文中第一目的选项头中optiondata字段添加本地end.sid(第二路径信息)。[0171]其中,第二网络设备的本地end.sid是指用于标识第二网络设备的一类srv6end.sid。end为srv6网络中的转发行为,end.sid用于将报文发送至对应的节点。end的具体定义可以参见draft-ietf-spring-srv6-network-programming-15的第4节。结合本实施例的场景,第二网络设备添加的本地end.sid用于将报文发送至第二网络设备。[0172]第二网络设备添加的本地end.sid与第一检测报文中da字段携带的sid是用来标识同一个中间节点(第二网络设备)的end.sid,这两个end.sid之间的具体数值关系包括多种情况。[0173]在一些实施例中,第二网络设备添加的本地end.sid与第一检测报文中目的地址字段携带的本地end.sid相同。例如,如果第二网络设备发现第一检测报文的目的地址为本地end.sid,第二网络设备将第一检测报文中目的地址字段携带的本地end.sid复制到第一目的选项头中的optiondata字段,从而复用目的地址字段携带的本地end.sid作为反向路径的路径信息。或者,如果第二网络设备发现第一检测报文的目的地址为本地end.sid,第二网络设备将第一检测报文的srh的segmentlist中当前活跃的sid(activesid)复制到第一目的选项头中的optiondata字段,从而复用segmentlist中的sid作为反向路径的路径信息。[0174]在另一些实施例中,第二网络设备添加的本地end.sid与第一检测报文中目的地址字段携带的本地end.sid不同。例如,如果第二网络设备发现第一检测报文的目的地址为本地end.sid,第二网络设备从本地sid表中选择另一个end.sid,将选择的end.sid添加至第一目的选项头中的optiondata字段。[0175]场景b、约束链路的场景[0176]在约束链路的场景下,检测报文的转发路径将第二条链路约束为第二网络设备与第二网络设备的邻居节点(第二个中间节点)之间的链路。本实施例中,第二网络设备在检测报文中添加的路径信息(第二路径信息)用于标识第二网络设备与邻居节点之间的链路,从而将反向路径中的倒数第二条链路也约束为第二网络设备与邻居节点之间的链路。那么,由于转发路径中的第二条链路与反向路径中的倒数第二条链路被约束为同一条链路,从而保证约束链路场景下去程方向上约束的链路与回程方向上约束的链路一致。[0177]在一些实施例中,第二路径信息为srv6end.xsid。具体地,第二路径信息为第二网络设备的邻居节点的srv6end.xsid。为简明起见,下面将第二网络设备的邻居节点的srv6end.xsid称为对端end.xsid。具体地,第二网络设备接收到第一检测报文后,第二网络设备从第一检测报文的ipv6头中的目的地址(da)字段获得第一检测报文的目的地址。第二网络设备根据第一检测报文的目的地址查询本地sid表。如果第一检测报文的目的地址(ipv6头中的目的地址)为第二网络设备的本地end.xsid,第二网络设备向第一检测报文添加对端end.xsid。[0178]第二网络设备的本地end.xsid为用于标识从第二网络设备至第二网络设备的邻居节点的三层连接的srv6end.xsid。end.x为srv6网络中的转发行为,end.xsid用于将报文通过指定的链路发送出去。[0179]其中,end.x的具体定义可以参见draft-ietf-spring-srv6-network-programming-15的第4节。[0180]结合本实施例的场景,第二网络设备的本地end.sid用于将报文通过第二网络设备上一条指定的链路发送出去。更具体地说,第二网络设备的本地end.sid绑定了第二网络设备中的一个出接口,第二网络设备的本地end.sid绑定的下一跳为第二网络设备的邻居节点,第二网络设备的本地end.sid约束了第二网络设备与邻居节点之间的一条链路。[0181]第二网络设备的对端end.xsid为第二网络设备的邻居节点本地的srv6end.xsid。对端end.xsid用于标识从第二网络设备的邻居节点至第二网络设备的三层连接的srv6end.xsid。结合本实施例的场景,对端end.xsid用于将报文通过第二网络设备的邻居节点上一条指定的链路发送出去。更具体地说,对端end.xsid绑定了邻居节点中的一个出接口,对端end.xsid绑定的下一跳为第二网络设备,对端end.xsid约束了邻居节点与第二网络设备之间的一条链路。[0182]以上介绍了本地end.xsid以及对端end.xsid这两种概念。在本步骤中,第二网络设备添加的对端end.xsid标识的链路,与da字段携带的本地end.xsid标识的链路具有端点相同且方向相反的关系。其中,本地end.xsid与对端end.xsid所标识的链路的端点均为第二网络设备以及邻居节点。本地end.xsid所标识的链路的方向为检测报文的转发路径的方向,即从第二网络设备至邻居节点的方向。对端end.xsid所标识的链路的方向为反向路径的方向,即从邻居节点至第二网络设备的方向。[0183]第二网络设备如何获得对端end.xsid包括多种实现方式。在一些实施例中,第二网络设备预先建立并保存本地end.xsid与对端end.xsid之间的对应关系;第二网络设备根据本地end.xsid以及预先保存的对应关系,确定本地end.xsid对应的对端end.xsid。[0184]如何构建和保存本地end.xsid与对端end.xsid之间的对应关系包括多种方式。在一些实施例中,第二网络设备的邻居节点预先将对端end.xsid通告给第二网络设备;第二网络设备接收对端end.xsid,建立本地end.xsid与对端end.xsid之间的对应关系。第二网络设备将本地end.xsid与对端end.xsid之间的对应关系保存至tedb。当第二网络设备接收到第一检测报文时,第二网络设备根据本地end.xsid查询tedb,得到本地end.xsid对应的对端end.xsid。其中,邻居节点通告对端end.xsid时例如采用泛洪的方式。[0185]tedb保存有本地end.xsid与对端end.xsid之间的对应关系。tedb中的对端end.xsid可称为p2p-srv6-x-sid。以设备a和设备b之间建立了邻居关系为例,tedb中设备a和设备b相关的内容可简化表示为下表2。当第二网络设备为设备a时,第二网络设备的邻居节点为设备b。第二网络设备的对端sid为设备a的p2p-srv6-x-sid,即108:1101:2::107:0:0/128。其中,p2p表示对等(peertopeer)。表2中的function表示功能,即sid的类型。同理地,当第二网络设备为设备b时,第二网络设备的邻居节点为设备a。第二网络设备的对端sid为设备b的p2p-srv6-x-sid,即108:1101:1::103:0:0/128。[0186]表2[0187]tedb本地链路标识远端链路标识p2p-srv6-x-sidfunction设备a69653108:1101:2::107:0:0/128end.x设备b53696108:1101:1::103:0:0/128end.x[0188]其中,表2中的本地链路标识(linklocalidentifier)表示本地的链路id。表2中的远端链路标识(linkremoteidentifier)表示对端的链路id。[0189]上文以第二网络设备为例介绍了中间节点如何在检测报文中添加反向路径的路径信息。在一些场景中,检测报文的转发路径上经过多个节点,每个节点分别向检测报文添加各自对应的路径信息,使得检测报文中携带了多份路径信息。[0190]在检测报文携带多份路径信息的情况下,检测报文中多份路径信息的排列顺序包括多种实现方式。在一些实施例中,检测报文中的多份路径信息是正向排列的。正向排列是指,晚添加的路径信息位于早添加的路径信息之前。比如,转发路径中每个中间节点在添加路径信息时,每个中间节点都在第一目的选项头中optiondata的最前面添加自己对应的路径信息。以第一网络设备和第二网络设备这两个节点为例进行说明,第一网络设备是检测报文先经过的节点,第二网络设备是检测报文后经过的节点。第一网络设备在检测报文中optiondata字段添加第一路径信息,将包含第一路径信息的检测报文发给第二网络设备。第二网络设备收到检测报文后,第二网络设备在optiondata字段中第一路径信息之前添加第二路径信息。因此,第二网络设备发出的检测报文的第一目的选项头中的optiondata字段存在两份路径信息,分别是第一路径信息和第二路径信息,且第二路径信息在第一路径信息之前。[0191]下面结合srv6场景对检测报文中多份路径信息的排列顺序进一步解释说明。在srv6场景下,检测报文包括srh,srh的segmentlist中包含一些sid,而segmentlist中的sid通常是反向排列的。比如,转发路径为sid1‑‑》sid2‑‑‑》sid3‑‑‑》sid4,在segmentlist中,sid1在最下面,sid4在最上面。在本实施例中,检测报文的目的选项头中也包含一些sid,转发路径上越靠后的中间节点将反向路径对应的sid放在最前面。通过这种排序方式,尾节点在收到检测报文时,能够将检测报文中反向路径的sid直接复制到srh中用来转发,而不用重新排序,从而减少尾节点的处理开销。[0192]需要说明的一点是,检测报文中反向路径的多份路径信息正向排列是可选的方式。在另一些实施例中,检测报文中反向路径的多份路径信息反向排列,尾节点通过对检测报文中的多份路径信息重新排序从而确定反向路径。[0193]步骤s250,第二网络设备发送第二检测报文。[0194]以上步骤s240以及步骤s250以一个第二网络设备执行的流程为例,对中间节点的动作进行了说明。在一些实施例中,一条转发路径中存在多个第二网络设备,每一个第二网络设备均执行以上步骤s240以及步骤s250,使得步骤s240、步骤s250执行多次。检测报文经过多次步骤s240以及步骤s250后,然后再到达第三网络设备。[0195]步骤s260,第三网络设备接收第二检测报文。[0196]第三网络设备收到第二检测报文之后,第三网络设备从第二检测报文中获得反向路径的路径信息。在一些实施例中,第三网络设备识别第二检测报文外层的目的选项头(第一目的选项头)中的optiondata字段,从optiondata字段获得反向路径的路径信息。[0197]步骤s270,第三网络设备根据路径信息确定反向路径。[0198]具体地,第三网络设备获得的路径信息包括第一网络设备添加的第一路径信息以及第二网络设备添加的第二路径信息,第三网络设备根据第一路径信息以及第二路径信息确定反向路径。[0199]第三网络设备如何应用确定出的反向路径包括多种场景,下面结合两个应用场景举例说明。[0200]应用场景一、第三网络设备基于确定出的反向路径返回响应报文。[0201]例如,第三网络设备根据反向路径生成响应报文。第三网络设备发送响应报文。其中,响应报文用于对第二检测报文响应。在一些实施例中,响应报文为srv6报文。响应报文包括srh。响应报文的srh中的段列表用于指示反向路径。[0202]在一些实施例中,第三网络设备将第二检测报文中反向路径的路径信息复制至响应报文中srh的segmentlist,以得到响应报文。例如,第二检测报文中第一目的选项头包括sid4、sid3和sid2和sid1,第三网络设备将sid4、sid3和sid2和sid1复制至响应报文中的segmentlist。在另一些实施例中,第三网络设备将第二检测报文中反向路径的路径信息先进行排序,再将排序后的路径信息添加至响应报文中srh的segmentlist,以得到响应报文。[0203]应用场景二、第三网络设备将确定出的反向路径上报给控制器。[0204]具体地,第三网络设备向网络中的控制器发送反向路径的路径信息。[0205]在一些实施例中,第三网络设备还从srh头或者payload之前的目的选项头(第二目的选项头)获得业务信息。第三网络设备根据业务信息进行业务处理。第三网络设备进行业务处理的方式包括很多种。比如,第三网络设备自动上报控制器决策,或者第三网络设备自动创建隧道等,即两种应用场景:数据报文转发,或bfd探测。[0206]在一些实施例中,业务信息为颜色信息、优先级信息或描述符。第三网络设备从第二检测报文中的第二目的选项头获得颜色信息、优先级信息或描述符之后,第三网络设备根据该颜色信息、优先级信息或描述符封装响应报文,并发送响应报文。[0207]本实施例提供的方法,中间节点在转发检测报文的过程中,通过向检测报文添加反向路径的路径信息,使得反向路径的路径信息随着检测报文传递到尾节点,从而帮助尾节点利用检测报文中的路径信息确定反向路径。该方法支持尾节点自动发现反向路径,避免控制器手动部署或者人工规划反向路径所产生的开销,降低网络配置的复杂度,因此提高了获得反向路径的效率。[0208]方法200用于支持网络设备自动发现反向路径。方法200能够应用在诸多场景下,下面对方法200支持的一些应用场景举例说明。[0209]应用场景一、bfd检测的场景[0210]应用在bfd检测的场景下,方法200中由头节点发起、中间节点转发的检测报文(第一检测报文、第二检测报文等)均为bfd报文,方法200中尾节点返回的响应报文为bfd应答报文。通过在bfd检测场景下实施方法200,能够确保bfd报文的往返路径一致,避免往返流量分别承载在不同路径导致bfd误检测。[0211]应用场景二、操作维护管理(operationsadministrationandmaintenance,oam)检测的场景[0212]应用在oam检测的场景下,方法200中由头节点发起、中间节点转发的检测报文(第一检测报文、第二检测报文等)均为oam检测报文,方法200中尾节点返回的响应报文为oam检测应答报文。通过在oam检测场景下实施方法200,能够确保oam检测报文的往返路径一致,避免往返流量分别承载在不同路径导致oam检测误检测。[0213]应用场景三、基于网际互连协议数据流的随路oam性能测量(in-situflowinformationtelemetry,ifit)检测的场景[0214]应用在ifit检测的场景下,方法200中由头节点发起、中间节点转发的检测报文(第一检测报文、第二检测报文等)均为ifit报文,方法200中尾节点返回的响应报文为ifit应答报文。通过在ifit检测场景下实施方法200,能够确保ifit报文的往返路径一致,避免往返流量分别承载在不同路径导致ifit误检测。[0215]应用场景四、双向主动测量协议(two-wayactivemeasurementprotocol,twamp)检测的场景[0216]应用在twamp检测的场景下,方法200中由头节点发起、中间节点转发的检测报文(第一检测报文、第二检测报文等)均为twamp报文,方法200中尾节点返回的响应报文为twamp应答报文。通过在twamp检测场景下实施方法200,能够确保twamp报文的往返路径一致,避免往返流量分别承载在不同路径导致twamp误检测。[0217]应用场景五、因特网包探索器(packetinternetgroper,ping)检测的场景[0218]应用在ping检测的场景下,方法200中由头节点发起、中间节点转发的检测报文(第一检测报文、第二检测报文等)均为ping报文,方法200中尾节点返回的响应报文为ping应答报文。通过在ping检测场景下实施方法200,能够确保ping报文的往返路径一致,避免往返流量分别承载在不同路径导致ping误检测。[0219]下面通过一个实例,对如何将上述方法200应用在bfd检测的场景举例说明。[0220]以下实例应用在附图1所示的网络系统10中。以下实例中的bfd报文是对方法200中检测报文的举例说明。以下实例中的rta是对方法200中第一网络设备的举例说明。以下实例中的rtb、rtc或rtd是对第二网络设备的举例说明。以下实例中的rte是对第三网络设备的举例说明。换句话说,bfd报文的转发路径中的头节点为rta,中间节点为rtb、rtc和rtd,尾节点为rte。以下实例的实施过程如下。[0221]rta执行以下步骤a-1至步骤a-2。[0222]步骤a-1、bfd会话按照原先的规程创建成功后,状态协商up。[0223]步骤a-2、在bfd会话协商up后,rta连续发起3个bfd报文,bfd报文的格式如下表3所示。[0224]表3[0225][0226]rtb执行以下步骤b-1至步骤b-2。[0227]步骤b-1、rtb接收的bfd报文中目的ip地址为end(b),rtb将本地的end.sid,即end(b)添加到目的选项1中。其中,end(b)是rtb本地的end.sid。end(b)用于标识rtb。[0228]步骤b-2、rtb检查bfd报文的srh。rtb将目的ip地址替换为srh中的下一个segment,即end.x(cd)。rtb将sl减1,再发送到下一跳(rtc)。在rtb上发送的bfd报文格式如下表4所示。[0229]表4[0230][0231]rtc执行以下步骤c-1至步骤c-2。[0232]步骤c-1、rtc接收的bfd报文中目的ip地址为end.x(cd)。rtc根据end.x的对应关系,rtc将end.x(dc)添加到目的选项1中。在执行步骤c-1之前,rtc提前构建了本地end.x和对端接口的end.x的对应关系。[0233]步骤c-2、rtc检查bfd报文的srh头,rtc将目的ip地址替换为srh中的下一个segment,即end.x(de)。rtc将sl减1,发送到下一跳。在rtc上发送的bfd报文格式如下表5所示。[0234]表5[0235][0236]rtd执行以下步骤d-1至步骤d-2。[0237]步骤d-1、rtd接收的bfd报文中目的ip地址为end.x(de)。rtd根据end.x的对应关系,将end.x(ed)添加到目的选项1中(rtd提前构建本地end.x和对端接口end.x的对应关系)。[0238]步骤d-2、rtd检查bfd报文的srh头,rtd将目的ip地址替换为srh中的下一个segment,rtd将sl减1,发送到下一跳,在rtd上发送的bfd报文格式如下表6所示。[0239]表6[0240][0241]rte执行以下步骤e-1至步骤e-3。[0242]步骤e-1、rte接收bfd报文。rte获取bfd报文中目的选项1的optiondata包含end(a)、end(b)、end.x(dc)、end.x(ed)。rte构建标签栈,该标签栈包括end(a)、end(b)、end.x(dc)、end.x(ed)。[0243]步骤e-2、rte获取目的选项2的optiondata:rta节点地址+color+discriminator。[0244]步骤e-3、rte将bfd会话和标签栈进行关联,根据标签栈封装回程的bfd报文,回程的bfd报文格式如下表7所示。[0245]表7[0246][0247]通过实施上述实例,能够确保srv6组网下bfd的往返路径一致。[0248]以上通过bfd检测的场景进行了举例说明。以上方法中的bfd报文可以替换成oam检测报文、ifit报文、twamp检测报文或者ping检测报文,相应的处理流程与bfd检测的场景同理,在此不再赘述。[0249]需要说明的一点是,以上列举的应用场景以及检测报文的类型均是示意性的,检测报文可以替换为bfd报文、oam检测报文、ifit报文、twamp检测报文、ping检测报文之外的其他检测报文,本实施例对检测报文的具体类型不做限定,对具体的检测场景不做限定。[0250]以下从四个方面对上述方案带来的有益效果进行说明。[0251]第一方面,由于路径发现过程分布式处理,反向路径的整个路径信息获取由每个节点添加一跳的方式实现,因此单个设备的压力小。并且,反向路径由报文的转发路径确定,路径还原准确。具体地,由于反向路径的路径信息是由转发路径中约束的节点添加的,并且节点会在检测报文的目的地址是本地end.sid时,向检测报文添加本地end.sid,在检测报文的目的地址是本地end.xsid时向检测报文添加对端end.xsid,使得约束节点场景反向也是约束节点,约束链路场景反向也是约束链路,使得路径探测结果和路径转发完全一致,因此确保路径还原准确。[0252]第二方面,能保证兼容,即使部分节点不支持。具体地,通过对目的选项头进行了扩展,新增了一种类型的目的选项,使用这种新增的目的选项来记录反向路径的路径信息。由于这种新增选项的optiontype的最高两个比特是00,不支持的节点收到检测报文后,会自动跳过这种新增选项,并继续处理报文的其他部分,所以能保证兼容。[0253]第三方面,天然支持跨内部网关协议(internalgatewayprotocol,igp)域和跨自治系统(autonomoussystem,as)场景。具体地,当转发路径跨多个域时,节点难以知道端到端的拓扑,造成获取整条反向路径的路径信息的难度较大。而本实施例中,节点通过获取到本地的end.sid或者对端节点的end.xsid即可完成添加路径信息的任务。例如,参见附图6,附图6所示的拓扑中隧道路径为a‑‑‑f,该隧道路径跨了3个igp域,每个igp域具体是一个中间系统到中间系统(intermediatesystemtointermediatesystem,isis)域,3个igp域分别是isis1、isis2以及isis3。因为采用分布式处理的方式,每个中间节点只需要知道自己和对端链路的信息,而不必要求有端到端的视角,所以一定程度上摆脱了跨igp场景可能对方案实施造成的限制。[0254]第四方面,解决部分场景往返共路的疑难问题(如bfd场景),构建产品竞争力。[0255]以上介绍了本技术实施例的方法200,以下介绍本技术实施例的网络设备。应理解,以下介绍的各种网络设备分别具有上述方法200中第一网络设备、第二网络设备或者第三网络设备的任意功能。[0256]附图7示出了上述实施例中所涉及的第一网络设备的一种可能的结构示意图。附图7所示的网络设备300例如实现方法200中第一网络设备的功能,或者,网络设备300实现网络系统10中rta的功能。[0257]请参考附图7,网络设备300包括处理单元301和发送单元302。网络设备300中的各个单元全部或部分地通过软件、硬件、固件或者其任意组合来实现。网络设备300中的各个单元用于执行上述方法200中第一网络设备或rta的相应功能。处理单元301用于支持网络设备300执行s210。发送单元302用于支持网络设备300执行s220。[0258]本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可选地有另外的划分方式。[0259]在一些实施例中,网络设备300中各个单元集成在一个处理单元中。例如,网络设备300中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元301通过芯片中的处理电路实现。发送单元302通过芯片中的输出接口实现。例如,该芯片通过一个或多个现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑器件(programmablelogicdevice,英文简称:pld)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本技术通篇所描述的各种功能的电路的任意组合实现。[0260]在另一些实施例中,网络设备300各个单元单独物理存在。在另一些实施例中,网络设备300一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一些实施例中,处理单元301和发送单元302是同一个单元。在另一些实施例中,处理单元301和发送单元302是不同的单元。在一些实施例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。[0261]在网络设备300中通过硬件实现的情况下,网络设备300中处理单元301例如通过网络设备600中的主控板610上的中央处理器611实现,又如通过网络设备700中的处理器701实现。网络设备300中发送单元302例如通过网络设备600中接口板630实现,又如通过网络设备700中的通信接口704实现。[0262]在网络设备300中通过软件实现的情况下,网络设备300中各个单元例如为网络设备600中的主控板610上的中央处理器611或者网络设备700中的处理器701读取存储器中存储的程序代码后生成的软件。例如,网络设备300为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、pod中的至少一种。在一些实施例中,网络设备300以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合网络功能虚拟化(networkfunctionsvirtualization,nfv)技术来实现网络设备300。采用虚拟机的方式实现时,网络设备300例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本技术即可结合nfv技术在通用物理服务器上虚拟出网络设备300。在另一些实施例,网络设备300以容器(例如docker容器)的形式,部署在硬件设备上。例如,网络设备300执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建网络设备300。在另一些实施例中,网络设备300以pod的形式,部署在硬件设备上。pod包括多个容器,每个容器用于实现网络设备300中的一个或多个功能单元。[0263]附图8示出了上述实施例中所涉及的第二网络设备的一种可能的结构示意图。附图8所示的网络设备400例如实现方法200中第二网络设备的功能,或者,网络设备400实现网络系统10中rtb、rtc或rtd的功能。[0264]请参考附图8,网络设备400包括接收单元401、处理单元402和发送单元403。网络设备400中的各个单元全部或部分地通过软件、硬件、固件或者其任意组合来实现。网络设备400中的各个单元用于执行上述方法200中第一网络设备、rtb、rtc或rtd的相应功能。具体地,接收单元401用于支持网络设备400执行s230。处理单元402用于支持网络设备400执行s240。发送单元403用于支持网络设备400执行s250。在一些实施例中,处理单元402还用于支持网络设备400查询tedb。[0265]本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可选地有另外的划分方式。[0266]在一些实施例中,网络设备400中各个单元集成在一个处理单元中。例如,网络设备400中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元402通过芯片中的处理电路实现。接收单元401通过芯片中的输入接口实现。发送单元403通过芯片中的输出接口实现。例如,该芯片通过一个或多个fpga、pld、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本技术通篇所描述的各种功能的电路的任意组合实现。[0267]在另一些实施例中,网络设备400各个单元单独物理存在。在另一些实施例中,网络设备400一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一些实施例中,接收单元401和发送单元403是同一个单元。在另一些实施例中,接收单元401和发送单元403是不同的单元。在一些实施例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。[0268]在网络设备400中通过硬件实现的情况下,网络设备400中处理单元402例如通过网络设备600中的主控板610上的中央处理器611实现,又如通过网络设备700中的处理器701实现。网络设备400中接收单元401和发送单元403例如通过网络设备600中接口板630实现,又如通过网络设备700中的通信接口704实现。[0269]在网络设备400中通过软件实现的情况下,网络设备400中各个单元例如为网络设备600中的主控板610上的中央处理器611或者网络设备700中的处理器701读取存储器中存储的程序代码后生成的软件。例如,网络设备400为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、pod中的至少一种。在一些实施例中,网络设备400以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合nfv技术来实现网络设备400。采用虚拟机的方式实现时,网络设备400例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本技术即可结合nfv技术在通用物理服务器上虚拟出网络设备400。在另一些实施例中,网络设备400以容器(例如docker容器)的形式,部署在硬件设备上。例如,网络设备400执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建网络设备400。在另一些实施例中,网络设备400以pod的形式,部署在硬件设备上。pod包括多个容器,每个容器用于实现网络设备400中的一个或多个功能单元。[0270]附图9示出了上述实施例中所涉及的第三网络设备的一种可能的结构示意图。附图9所示的网络设备500例如实现方法200中第三网络设备的功能,或者,网络设备500实现网络系统10中rte的功能。[0271]请参考附图9,网络设备500包括接收单元501和处理单元502。网络设备500中的各个单元全部或部分地通过软件、硬件、固件或者其任意组合来实现。网络设备500中的各个单元用于执行上述方法200中第一网络设备或rc505的相应功能。具体地,接收单元501用于支持网络设备500执行s260。处理单元502用于支持网络设备500执行s270。在一些实施例中,处理单元502还用于支持网络设备500生成响应报文或者进行业务处理中的至少一项。在一些实施例中,网络设备500还包括发送单元,发送单元用于支持网络设备500发送响应报文或者向控制器发送反向路径的路径信息中的至少一项。[0272]本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可选地有另外的划分方式。[0273]在一些实施例中,网络设备500中各个单元集成在一个处理单元中。例如,网络设备500中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元502通过芯片中的处理电路实现。接收单元501通过芯片中的输入接口实现。网络设备500中发送单元通过芯片中的输出接口实现。例如,该芯片通过一个或多个fpga、pld、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本技术通篇所描述的各种功能的电路的任意组合实现。[0274]在另一些实施例中,网络设备500各个单元单独物理存在。在另一些实施例中,网络设备500一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一些实施例中,处理单元502和接收单元501是同一个单元。在另一些实施例中,处理单元502和接收单元501是不同的单元。在一些实施例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。[0275]在网络设备500中通过硬件实现的情况下,网络设备500中处理单元502例如通过网络设备600中的主控板610上的中央处理器611实现,又如通过网络设备700中的处理器701实现。网络设备500中接收单元501以及发送单元例如通过网络设备600中接口板630实现,又如通过网络设备700中的通信接口704实现。[0276]在网络设备500中通过软件实现的情况下,网络设备500中各个单元例如为网络设备600中的中央处理器631、中央处理器611或者网络设备700中的处理器701读取存储器中存储的程序代码后生成的软件。例如,网络设备500为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、pod中的至少一种。在一些实施例中,网络设备500以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合nfv技术来实现网络设备500。采用虚拟机的方式实现时,网络设备500例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本技术即可结合nfv技术在通用物理服务器上虚拟出网络设备500。在另一些实施例,网络设备500以容器(例如docker容器)的形式,部署在硬件设备上。例如,网络设备500执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建网络设备500。在另一些实施例中,网络设备500以pod的形式,部署在硬件设备上。pod包括多个容器,每个容器用于实现网络设备500中的一个或多个功能单元。[0277]以上通过网络设备300、网络设备400和网络设备500,从逻辑功能的角度介绍了如何实现第一网络设备、第二网络设备以及第三网络设备。以下通过网络设备600和网络设备700,从硬件的角度介绍如何实现第一网络设备、第二网络设备以及第三网络设备。附图10所示的网络设备600和附图11所示的网络设备700是对第一网络设备、第二网络设备或第三网络设备的硬件结构的举例说明。[0278]网络设备600或网络设备700对应于上述方法200中的第一网络设备、第二网络设备或第三网络设备,网络设备600或网络设备700中的各硬件、模块和上述其他操作和/或功能分别为了实现方法实施例中第一网络设备、第二网络设备或第三网络设备所实施的各种步骤和方法,关于网络设备600或网络设备700如何传输检测报文或者如何确定反向路径的详细流程,具体细节可参见上述方法200,为了简洁,在此不再赘述。其中,方法200的各步骤通过网络设备600或网络设备700处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块例如位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤,为避免重复,这里不再详细描述。[0279]参见附图10,附图10示出了本技术一个示例性实施例提供的网络设备的结构示意图,网络设备600例如配置为第一网络设备、第二网络设备或第三网络设备。网络设备600包括:主控板610和接口板630。[0280]主控板也称为主处理单元(mainprocessingunit,mpu)或路由处理卡(routeprocessorcard),主控板610用于对网络设备600中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板610包括:中央处理器611和存储器612。[0281]接口板630也称为线路接口单元卡(lineprocessingunit,lpu)、线卡(linecard)或业务板。接口板630用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、pos(packetoversonet/sdh)接口等,以太网接口例如是灵活以太网业务接口(fexibleethernetclients,flexeclients)。接口板630包括:中央处理器631、网络处理器632、转发表项存储器634和物理接口卡(physicalinterfacecard,pic)633。[0282]接口板630上的中央处理器631用于对接口板630进行控制管理并与主控板610上的中央处理器611进行通信。[0283]网络处理器632用于实现报文的转发处理。网络处理器632的形态例如是转发芯片。具体而言,网络处理器632用于基于转发表项存储器634保存的转发表转发接收到的报文,如果报文的目的地址为网络设备600的地址,则将该报文上送至cpu(如中央处理器611)处理;如果报文的目的地址不是网络设备600的地址,则根据该目的地址从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。其中,上行报文的处理包括:报文入接口的处理,转发表查找;下行报文的处理:转发表查找等等。[0284]物理接口卡633用于实现物理层的对接功能,原始的流量由此进入接口板630,以及处理后的报文从该物理接口卡633发出。物理接口卡633也称为子卡,可安装在接口板630上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器632处理。在一些实施例中,中央处理器也可执行网络处理器632的功能,比如基于通用cpu实现软件转发,从而物理接口卡633中不需要网络处理器632。[0285]可选地,网络设备600包括多个接口板,例如网络设备600还包括接口板640,接口板640包括:中央处理器641、网络处理器642、转发表项存储器644和物理接口卡643。[0286]可选地,网络设备600还包括交换网板620。交换网板620也例如称为交换网板单元(switchfabricunit,sfu)。在网络设备有多个接口板630的情况下,交换网板620用于完成各接口板之间的数据交换。例如,接口板630和接口板640之间例如通过交换网板620通信。[0287]主控板610和接口板630耦合。例如。主控板610、接口板630和接口板640,以及交换网板620之间通过系统总线与系统背板相连实现互通。在一种可能的实现方式中,主控板610和接口板630之间建立进程间通信协议(inter-processcommunication,ipc)通道,主控板610和接口板630之间通过ipc通道进行通信。[0288]在逻辑上,网络设备600包括控制面和转发面,控制面包括主控板610和中央处理器631,转发面包括执行转发的各个组件,比如转发表项存储器634、物理接口卡633和网络处理器632。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器632基于控制面下发的转发表对物理接口卡633收到的报文查表转发。控制面下发的转发表例如保存在转发表项存储器634中。在有些实施例中,控制面和转发面例如完全分离,不在同一设备上。[0289]应理解,本技术实施例中接口板640上的操作与接口板630的操作一致,为了简洁,不再赘述。应理解,本实施例的网络设备600可对应于上述各个方法实施例中的网络设备,该网络设备600中的主控板610、接口板630和/或640例如实现上述各个方法实施例中的网络设备所具有的功能和/或所实施的各种步骤,为了简洁,在此不再赘述。[0290]值得说明的是,主控板可能有一块或多块,有多块的时候例如包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。[0291]参见附图11,附图11示出了本技术一个示例性实施例提供的网络设备700的结构示意图,该网络设备700可以配置为第一网络设备、第二网络设备或第三网络设备。网络设备700可以是主机、服务器或个人计算机等。该网络设备700可以由一般性的总线体系结构来实现。[0292]网络设备700包括至少一个处理器701、通信总线702、存储器703以及至少一个通信接口704。[0293]处理器701例如是通用中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocesser,np)、图形处理器(graphicsprocessingunit,gpu)、神经网络处理器(neural-networkprocessingunits,npu)、数据处理单元(dataprocessingunit,dpu)、微处理器或者一个或多个用于实现本技术方案的集成电路。例如,处理器701包括专用集成电路(application-specificintegratedcircuit,asic),可编程逻辑器件(programmablelogicdevice,pld)或其组合。pld例如是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)、现场可编程逻辑门阵列(field-programmablegatearray,fpga)、通用阵列逻辑(genericarraylogic,gal)或其任意组合。[0294]通信总线702用于在上述组件之间传送信息。通信总线702可以分为地址总线、数据总线、控制总线等。为便于表示,附图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0295]存储器703例如是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器703例如是独立存在,并通过通信总线702与处理器701相连接。存储器703也可以和处理器701集成在一起。[0296]通信接口704使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口704包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wirelesslocalareanetworks,wlan)接口,蜂窝网络通信接口或其组合等。[0297]在具体实现中,作为一种实施例,处理器701可以包括一个或多个cpu,如附图11中所示的cpu0和cpu1。[0298]在具体实现中,作为一种实施例,网络设备700可以包括多个处理器,如附图11中所示的处理器701和处理器705。这些处理器中的每一个可以是一个单核处理器(single-cpu),也可以是一个多核处理器(multi-cpu)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。[0299]在具体实现中,作为一种实施例,网络设备700还可以包括输出设备和输入设备。输出设备和处理器701通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquidcrystaldisplay,lcd)、发光二级管(lightemittingdiode,led)显示设备、阴极射线管(cathoderaytube,crt)显示设备或投影仪(projector)等。输入设备和处理器701通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。[0300]在一些实施例中,存储器703用于存储执行本技术方案的程序代码710,处理器701可以执行存储器703中存储的程序代码710。也即是,网络设备700可以通过处理器701以及存储器703中的程序代码710,来实现方法实施例提供的方法。[0301]本技术实施例的网络设备700可对应于上述各个方法实施例中的第一网络设备、第二网络设备或第三网络设备,并且,该网络设备700中的处理器701、通信接口704等可以实现上述各个方法实施例中的第一网络设备、第二网络设备或第三网络设备所具有的功能和/或所实施的各种步骤和方法。为了简洁,在此不再赘述。[0302]参见附图12,本技术实施例提供了一种网络系统800,网络系统800包括:第一网络设备801、第二网络设备802和第三网络设备803。[0303]在一些实施例中,第一网络设备801为如附图7所示的网络设备300,第二网络设备802为如附图8所示的网络设备400,第三网络设备803为如附图9的网络设备500。[0304]在一些实施例中,第一网络设备801、第二网络设备802或者第三网络设备803中的至少一项为附图10所示的网络设备600或附图11所示的网络设备700。[0305]本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0306]所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。[0307]在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。[0308]该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本技术实施例方案的目的。[0309]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0310]该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例中方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0311]本技术中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种示例的范围的情况下,第一网络设备可以被称为第二网络设备,并且类似地,第二网络设备可以被称为第一网络设备。第一网络设备和第二网络设备都可以是网络设备,并且在某些情况下,可以是单独且不同的网络设备。[0312]本技术中术语“至少一个”的含义是指一个或多个,本技术中术语“多个”的含义是指两个或两个以上。[0313]还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。[0314]以上描述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。[0315]在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。[0316]该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digitalvideodisc,dvd)、或者半导体介质(例如固态硬盘)等。[0317]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。[0318]以上,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1