本申请要求于2019年09月12日提交的申请号为201910866651.1、申请名称为“收集参数”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及路由技术领域,特别涉及一种路径探测方法、装置及计算机存储介质。
背景技术:
随着路由技术的发展,在源节点和目的节点之间可以部署有多条路径。这种场景下,通常需要对源节点和目的节点之间的多条路径进行探测,从而获取源节点和目的节点之间的多条路径的拓扑以及性能等探测数据,以便于对源节点和目的节点之间的多条路径进行操作、管理和维护(operationadministrationandmaintenance,oam)。
相关技术中,如图1所示,源节点r1发送包括多路径信息地址段的探测报文给中间节点r2,,假设该多路径信息地址段为(0-200),中间节点r2在接收到该探测报文时,确定到目的节点r5有两个下一跳的中间节点r3和r6,并分别确定两个中间节点r3和r6的多路径信息地址段是否在(0-200)之内。如果在,比如这两个中间节点r3和r6的多路径信息地址段分别为(0-100)和(100-200),此时中间节点r2则将这两个中间节点r3和r6的多路径信息地址段(0-100)和(100-200)返回给源节点r1,由源节点r1重新基于中间节点r3和r6的多路径信息地址段(0-100)和(100-200)分别重新发送两个探测报文。中间节点r3和r6接收到探测报文之后,执行和中间节点r2相同的操作,直至源节点r1发送的探测报文到达目的节点r5,便可探测出源节点r1和目的节点r5之间的路径。
上述探测路径的方式中,对于中间节点r2而言,如果中间节点r3和r6中任一中间节点的多路径信息地址段不在(0-200)之内,那么中间节点r2向源节点返回的多路径信息地址段就不包括该中间节点的多路径信息地址段,这样后续源节点重新发送的探测报文就不能发送到所有下一跳的中间节点。也即是,上述探测路径的方式存在检测不准确的问题。另外,在上述探测路径的方式中,对于每个中间节点,都需要源节点发送一次探测报文才能确定该中间节点的下一跳的中间节点,导致在整个探测路径的过程中源节点需要发送的探测报文较多,从而导致整个探测效率低下。
技术实现要素:
本申请提供了一种路径探测方法、装置及计算机存储介质,可以提高探测路径的效率和准确率。所述技术方案如下:
第一方面,提供了一种路径探测方法,该方法由通信网络中的第一节点实施。该通信网络包括源节点、一个或多个中间节点、以及目的节点。其中该第一节点为一个或多个中间节点中的任一个中间节点。在该方法中,第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,其中,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型。第一节点根据该多路径探测指示信息以及探测数据收集指示信息添加探测数据至所述第一探测报文,并将添加了所述探测数据的第一探测报文发送至该第一节点的下一跳节点。
本申请实施例提供的路径探测方法只需要源节点发送包括多路径探测指示信息以及探测数据收集指示信息的第一探测报文便可实现源节点和目的节点之间的多路径的探测。多路径中的各节点在收到第一探测报文后,可根据所述第一探测报文中的多路径探测指示信息以及探测数据收集指示信息获取探测数据并将特定的探测数据添加至所述第一探测报文,从而实现多路径探测。这样可以避免源节点重复发送多次探测报文才能探测路径,从而提高了探测路径的效率。另外,由于源节点向下一跳节点发送包括多路径探测指示信息以及探测数据收集指示信息第一探测报文,使得多路径中各个节点均会根据报文中的多路径探测指示信息以及探测数据收集指示信息收集探测数据并添加特定的探测数据,如此可以避免遗漏源节点到目的节点之间的任何路径,从而提高了探测路径的准确率。
可选地,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率。其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号。这种场景下,该探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识。
在本申请实施例中,可以通过收集第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识来探测多路径拓扑或路径丢包率,进一步提高了路径探测的效率,从而便于推广本申请实施例提供的路径探测方法的应用。
可选地,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;以及第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
在本申请实施例中,在第一节点有多个下一跳节点到达探测报文的目的地的情况下,第一节点需要向每个下一跳节点发送第一探测报文,从而避免遗漏源节点到目的节点之间的任何路径,相应地提高了探测路径的准确率。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率的情况下,该探测数据包括第一节点的标识以及发送第一探测报文的出口标识。其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号。在这种场景下,在路径探测方法中:在待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、第一节点的上一跳节点添加的探测数据、以及报文中序列号上报至通信网络中的控制节点或源节点。
在本申请实施例中,各个节点直接将收集的部分探测数据上报至源节点或控制节点,以减少向下一跳节点发送的第一探测报文的负载,从而节省了发送第一探测报文所需的带宽,也就提高了发送第一探测报文的效率。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点的标识以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;第一节点将添加了第一节点的标识以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
在各个节点直接将收集的部分探测数据上报至源节点或控制节点的情况下,第一节点仍需要向每个下一跳节点发送第一探测报文,使得多路径中各个节点均会根据报文中的多路径探测指示信息以及探测数据收集指示信息收集探测数据并添加特定的探测数据,从而避免遗漏源节点到目的节点之间的任何路径,相应地提高了探测路径的准确率。
可选地,第一节点判断第一节点是否有至少两个下一跳节点可到达第一探测报文的目的地,并在确定该第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
在本申请实施例中,每个中间节点可以直接执行上报步骤,或者,也可以在每个中间节点判断自身有多个下一跳节点的情况下执行上报步骤,提高了路径探测的灵活性。
可选地,在该待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu的情况下,该探测数据包括:第一节点到第一节点的下一跳节点之间的链路上的mtu。
本申请实施例提供的路径探测方法还可以应用于测量路径最小的mtu,提高了路径探测的灵活性。
可选地,在第一节点上存在到达第一探测报文的目的地的至少两个下一跳节点的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点到第二节点之间的链路上的mtu的第一探测报文通过第一端口发送至第二节点,第一节点通过第一端口与第二节点连接;第一节点将添加了第一节点到第三节点之间的链路上的mtu的第一探测报文通过第二端口发送至第三节点,第一节点通过第二端口与第三节点连接。
在本申请实施例中,在第一节点存在多个下一跳节点的情况下,第一节点需要向每个下一跳节点发送第一探测报文,从而避免遗漏源节点到目的节点之间的任何路径,相应地提高了探测路径的准确率。
可选地,在所述待收集的探测数据的类型为从所述源节点到所述目的节点之间路径上的最小的mtu的情况下,所述第一节点根据所述多路径探测指示信息以及所述探测数据收集指示信息添加探测数据至所述第一探测报文,具体为:所述第一节点将所述第一节点到所述第一节点的下一跳节点之间的链路上的mtu与所述第一探测报文中已经存在的mtu进行比较后保留最小的mtu。相应地,所述第一节点将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点,具体为:将保留最小的mtu之后的第一探测报文发送至所述第一节点的下一跳节点。
进一步地,为了降低传输第一探测报文所需的带宽,第一节点可以直接将收集的mtu和第一探测报文中已经存在的mtu进行比对之后仅保留最小的mtu即可。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值;探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。
本申请实施例提供的路径探测方法还可以应用于测量报文的传输时延值,提高了路径探测的灵活性。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第二出口标识、以及从第二出表标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
在本申请实施例中中,在第一节点存在多个下一跳节点的情况下,第一节点需要向每个下一跳节点发送第一探测报文,从而避免遗漏源节点到目的节点之间的任何路径,相应地提高了探测路径的准确率。
可选地,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值的情况下,此时,该探测数据包括:第一节点的标识、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。在这种场景下的路径探测方法中:第一节点还可以将第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。
在本申请实施例中,各个节点直接将收集的部分探测数据上报至源节点或控制节点,以减少向下一跳节点发送的第一探测报文的负载,从而节省了发送第一探测报文所需的带宽,也就提高了发送第一探测报文的效率。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点的标识、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;第一节点将添加了第一节点的标识、发送第一探测报文的第二出口标识、从第二出口标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
在各个节点直接将收集的部分探测数据上报至源节点或控制节点的情况下,第一节点仍需要向每个下一跳节点发送第一探测报文,从而避免遗漏源节点到目的节点之间的任何路径,相应地提高了探测路径的准确率。
可选地,第一节点判断第一节点是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
在本申请实施例中,每个中间节点可以直接执行上报步骤,或者,也可以在每个中间节点判断自身存在多个下一跳节点的情况下执行上报步骤,提高了路径探测的灵活性。
可选地,该第一探测报文包括第一指令和第二指令,该第一指令携带该多路径探测指示信息,该第二指令携带该探测数据收集指示信息。可选地,该第一探测报文包括第一指令和telemetry指示信息,该第一指令携带该多路径探测指示信息,该telemetry指示信息携带该探测数据收集指示信息。
也即是,在本申请实施例中,可以在探测报文中扩展用于指示第二指令的字段,以携带探测数据收集指示信息。或者,利用探测报文中已经有的telemetry指示信息来携带探测数据收集指示信息,从而提高探测报文的格式的灵活性。
可选地,该探测数据收集指示信息包括节点的标识、接收该第一探测报文的入口的标识、以及发送该第一探测报文的出口标识,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间的路径拓扑,和/或,从该源节点到该目的节点之间的路径上的丢包率;或者,该探测数据收集指示信息包括mtu,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间路径上的最小的mtu;或者,该探测数据收集指示信息包括节点的标识、接收该第一探测报文的入口的标识、接收该第一探测报文的时间戳、发送该第一探测报文的出口标识以及发送该第一探测报文的时间戳,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间的路径上的时延值。
可选地,该探测数据收集指示信息包括该待收集的探测数据的类型,用于指示该第一节点根据该探测数据收集指示信息包括的类型和待收集的数据之间的对应关系确定待收集的数据。
也即是,在本申请实施例中,可以在探测数据收集指示信息中指明待收集的具体数据,也可以在探测数据收集指示信息中指明一个类型,中间节点可以根据类型从对应关系中获取待待收集的具体数据,提高了测报文的格式的灵活性。
可选地,该第一探测报文中还包括指示报文源地址和目的地址对的指示信息。
此外,第一探测报文中还可以包括指示报文源地址和目的地址对的指示信息,这样网络中的其他节点只要看到该指示信息即可确定该报文的源地址和目的地址,而不用去解析报文中其他部分携带的源地址和目的地址信息,提高报文处理效力。
第二方面、提供了一种路径探测方法,应用于通信网络中的第一节点,通信网络包括源节点、一个或多个中间节点、以及目的节点,第一节点为一个或多个中间节点中的任一个中间节点;该方法包括:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu;第一节点根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点;第一节点将接收到的第一探测报文发送至第一节点的下一跳节点。
各个节点直接将收集的探测数据上报至源节点或控制节点,以减少向下一跳节点发送的第一探测报文的负载,从而节省了发送第一探测报文所需的带宽,也就提高了发送第一探测报文的效率。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将接收到的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点通过第一端口将接收到的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;第一节点通过第二端口将接收到的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
在各个节点直接将收集的探测数据上报至源节点或控制节点的情况下,第一节点仍需要向每个下一跳节点发送第一探测报文,从而避免遗漏源节点到目的节点之间的任何路径,相应地提高了探测路径的准确率。
可选地,第一节点判断第一节点是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点的步骤。此时,在该方法中,第一节点将第一探测报文中已经存在的mtu也上报至控制节点或源节点。
可选地,第一节点在确定第一节点只有一个下一跳节点可到达第一探测报文的目的地的情况下,在该方法中,第一节点不执行上报步骤,而是将第一节点与第一节点的下一跳节点之间的链路上的mtu添加至第一探测报文;第一节点将添加了第一节点与第一节点的下一跳节点之间的链路上的mtu的第一探测报文发送至第一节点的下一跳节点。
在本申请中,每个中间节点可以直接执行上报步骤,或者,也可以在每个中间节点判断自身存在多个下一跳节点的情况下执行上报步骤,提高了路径探测的灵活性。
第三方面、提供了一种路径探测方法,应用于通信网络中的源节点,通信网络包括源节点、一个或多个中间节点以及目的节点;该方法包括:源节点生成包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型;源节点向源节点的下一跳节点发送第一探测报文,用于指示源节点的下一跳节点执行第一方面所述的任一的方法,或者,用于指示源节点的下一跳节点执行第二方面所述的任一的方法。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径拓扑、从源节点到目的节点之间的路径上的丢包率、从源节点到目的节点之间路径上的最小的mtu、从源节点到目的节点之间的路径上的时延值中的一者或多者。
本申请提供的路径探测方法可以应用于多种场景中,提高了路径探测的灵活性。
可选地,该第一探测报文包括第一指令和第二指令,该第一指令携带该多路径探测指示信息,该第二指令携带该探测数据收集指示信息。可选地,该第一探测报文包括第一指令和telemetry指示信息,该第一指令携带该多路径探测指示信息,该telemetry指示信息携带该探测数据收集指示信息。
也即是,在本申请实施例中,可以在探测报文中扩展用于指示第二指令的字段,以携带探测数据收集指示信息。或者,利用探测报文中已经有的telemetry指示信息来携带探测数据收集指示信息,从而提高探测报文的格式的灵活性。
可选地,该探测数据收集指示信息包括节点的标识、接收该第一探测报文的入口的标识、以及发送该第一探测报文的出口标识,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间的路径拓扑,和/或,从该源节点到该目的节点之间的路径上的丢包率;或者,该探测数据收集指示信息包括mtu,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间路径上的最小的mtu;或者,该探测数据收集指示信息包括节点的标识、接收该第一探测报文的入口的标识、接收该第一探测报文的时间戳、发送该第一探测报文的出口标识以及发送该第一探测报文的时间戳,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间的路径上的时延值。
可选地,该探测数据收集指示信息包括该待收集的探测数据的类型,用于指示该第一节点根据该探测数据收集指示信息包括的类型和待收集的数据之间的对应关系确定待收集的数据。
也即是,在本申请实施例中,可以在探测数据收集指示信息中指明待收集的具体数据,也可以在探测数据收集指示信息中指明一个类型,中间节点可以根据类型从对应关系中获取待待收集的具体数据,提高了测报文的格式的灵活性。
可选地,该第一探测报文中还包括指示报文源地址和目的地址对的指示信息。
此外,第一探测报文中还可以包括指示报文源地址和目的地址对的指示信息,这样网络中的其他节点只要看到该指示信息即可确定该报文的源地址和目的地址,而不用去解析报文中其他部分携带的源地址和目的地址信息,提高报文处理效力。
第四方面、提供了一种通信网络中的第一节点,该通信网络包括源节点、一个或多个中间节点、以及目的节点,第一节点为一个或多个中间节点中的任一个中间节点,第一节点包括存储器和处理器;
该存储器用于存储计算机程序;
该处理器用于执行该存储器中存储的计算机程序以执行下述路径探测方法:
第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,其中,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型。第一节点根据该多路径探测指示信息以及探测数据收集指示信息添加探测数据至所述第一探测报文,并将添加了所述探测数据的第一探测报文发送至该第一节点的下一跳节点。
可选地,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率。其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号。这种场景下,该探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识。
可选地,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;以及第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率的情况下,该探测数据包括第一节点的标识以及发送第一探测报文的出口标识。其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号。在这种场景下,在路径探测方法中:在待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、第一节点的上一跳节点添加的探测数据、以及报文中序列号上报至通信网络中的控制节点或源节点。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点的标识以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;第一节点将添加了第一节点的标识以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
可选地,第一节点判断第一节点是否有至少两个下一跳节点可到达第一探测报文的目的地,并在确定该第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu的情况下,第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,具体为:第一节点将第一节点到第一节点的下一跳节点之间的链路上的mtu与第一探测报文中已经存在的mtu进行比较后保留最小的mtu。相应地,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:将保留最小的mtu之后的第一探测报文发送至第一节点的下一跳节点。
可选地,在第一节点上存在到达第一探测报文的目的地的至少两个下一跳节点的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点到第二节点之间的链路上的mtu的第一探测报文通过第一端口发送至第二节点,第一节点通过第一端口与第二节点连接;第一节点将添加了第一节点到第三节点之间的链路上的mtu的第一探测报文通过第二端口发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu的情况下,该探测数据包括:第一节点到源节点之间的路径上的最小的mtu。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值;探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第二出口标识、以及从第二出表标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值的情况下,此时,该探测数据包括:第一节点的标识、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。在这种场景下的路径探测方法中:第一节点还可以将第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点将添加了第一节点的标识、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;第一节点将添加了第一节点的标识、发送第一探测报文的第二出口标识、从第二出口标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,第一节点判断第一节点是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
可选地,该第一探测报文包括第一指令和第二指令,该第一指令携带该多路径探测指示信息,该第二指令携带该探测数据收集指示信息。可选地,该第一探测报文包括第一指令和telemetry指示信息,该第一指令携带该多路径探测指示信息,该telemetry指示信息携带该探测数据收集指示信息。
可选地,该探测数据收集指示信息包括节点的标识、接收该第一探测报文的入口的标识、以及发送该第一探测报文的出口标识,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间的路径拓扑,和/或,从该源节点到该目的节点之间的路径上的丢包率;或者,该探测数据收集指示信息包括mtu,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间路径上的最小的mtu;或者,该探测数据收集指示信息包括节点的标识、接收该第一探测报文的入口的标识、接收该第一探测报文的时间戳、发送该第一探测报文的出口标识以及发送该第一探测报文的时间戳,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间的路径上的时延值。
可选地,该探测数据收集指示信息包括该待收集的探测数据的类型,用于指示该第一节点根据该探测数据收集指示信息包括的类型和待收集的数据之间的对应关系确定待收集的数据。
可选地,该第一探测报文中还包括指示报文源地址和目的地址对的指示信息,该指示信息可以包括在所述第一探测报文的第三指令中。
上述执行的任一方法中的有益效果已在第一方面所述的路径探测方法中进行了解释说明,在此不再重复说明。
第五方面、提供了一种通信网络中的第一节点,该通信网络包括源节点、一个或多个中间节点、以及目的节点,第一节点为一个或多个中间节点中的任一个中间节点,第一节点包括存储器和处理器;
该存储器用于存储计算机程序;
该处理器用于执行该存储器中存储的计算机程序以执行下述路径探测方法:
第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu;第一节点根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点;第一节点将接收到的第一探测报文发送至第一节点的下一跳节点。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,比如至少两个下一跳节点包括第二节点和第三节点。此时,第一节点将接收到的第一探测报文发送至第一节点的下一跳节点,具体为:第一节点通过第一端口将接收到的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;第一节点通过第二端口将接收到的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,第一节点判断第一节点是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点的步骤。此时,在该方法中,第一节点将第一探测报文中已经存在的mtu也上报至控制节点或源节点。
可选地,第一节点在确定第一节点只有一个下一跳节点可到达第一探测报文的目的地的情况下,在该方法中,第一节点不执行上报步骤,而是将第一节点与第一节点的下一跳节点之间的链路上的mtu添加至第一探测报文;第一节点将添加了第一节点与第一节点的下一跳节点之间的链路上的mtu的第一探测报文发送至第一节点的下一跳节点。
上述执行的任一方法中的有益效果已在第二方面所述的路径探测方法中进行了解释说明,在此不再重复说明。
第六方面、提供了一种通信网络中的源节点,该通信网络包括源节点、一个或多个中间节点以及目的节点,源节点包括存储器和处理器;
该存储器用于存储计算机程序;
该处理器用于执行该存储器中存储的计算机程序以执行下述路径探测方法:
源节点生成包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型;源节点向源节点的下一跳节点发送第一探测报文。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径拓扑、从源节点到目的节点之间的路径上的丢包率、从源节点到目的节点之间路径上的最小的mtu、从源节点到目的节点之间的路径上的时延值中的一者或多者。
可选地,该第一探测报文包括第一指令和第二指令,该第一指令携带该多路径探测指示信息,该第二指令携带该探测数据收集指示信息。可选地,该第一探测报文包括第一指令和telemetry指示信息,该第一指令携带该多路径探测指示信息,该telemetry指示信息携带该探测数据收集指示信息。
可选地,该探测数据收集指示信息包括节点的标识、接收该第一探测报文的入口的标识、以及发送该第一探测报文的出口标识,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间的路径拓扑,和/或,从该源节点到该目的节点之间的路径上的丢包率;或者,该探测数据收集指示信息包括mtu,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间路径上的最小的mtu;或者,该探测数据收集指示信息包括节点的标识、接收该第一探测报文的入口的标识、接收该第一探测报文的时间戳、发送该第一探测报文的出口标识以及发送该第一探测报文的时间戳,用于指示该待收集的探测数据的类型为从该源节点到该目的节点之间的路径上的时延值。
可选地,该探测数据收集指示信息包括该待收集的探测数据的类型,用于指示该第一节点根据该探测数据收集指示信息包括的类型和待收集的数据之间的对应关系确定待收集的数据。
可选地,该第一探测报文中还包括指示报文源地址和目的地址对的指示信息。
上述执行的任一方法中的有益效果已在第三方面所述的路径探测方法中进行了解释说明,在此不再重复说明。
第七方面、提供了一种路径探测系统,路径探测系统包括源节点、一个或多个中间节点以及目的节点;
源节点用于:生成包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型;并中间节点发送所述第一探测报文,该中间节点为源节点的下一跳节点;
可选地,所述待收集的探测数据的类型包括从所述源节点到所述目的节点之间的路径拓扑、从所述源节点到所述目的节点之间的路径上的丢包率、从所述源节点到所述目的节点之间路径上的最小的最大传输单元mtu、从所述源节点到所述目的节点之间的路径上的时延值中的一者或多者。
可选地,所述第一探测报文包括第一指令和第二指令,所述第一指令携带所述多路径探测指示信息,所述第二指令携带所述探测数据收集指示信息。
可选地,所述第一探测报文包括第一指令和telemetry指示信息,所述第一指令携带所述多路径探测指示信息,所述telemetry指示信息携带所述探测数据收集指示信息。
可选地,所述探测数据收集指示信息包括节点的标识、接收所述第一探测报文的入口的标识、以及发送所述第一探测报文的出口标识,用于指示所述待收集的探测数据的类型为从所述源节点到所述目的节点之间的路径拓扑,和/或,从所述源节点到所述目的节点之间的路径上的丢包率;或者,
所述探测数据收集指示信息包括mtu,用于指示所述待收集的探测数据的类型为从所述源节点到所述目的节点之间路径上的最小的mtu;或者,
所述探测数据收集指示信息包括节点的标识、接收所述第一探测报文的入口的标识、接收所述第一探测报文的时间戳、发送所述第一探测报文的出口标识以及发送所述第一探测报文的时间戳,用于指示所述待收集的探测数据的类型为从所述源节点到所述目的节点之间的路径上的时延值。
可选地,所述探测数据收集指示信息包括所述待收集的探测数据的类型,用于指示所述第一节点根据所述探测数据收集指示信息包括的类型和待收集的数据之间的对应关系确定待收集的数据。
可选地,所述第一探测报文中还包括指示报文源地址和目的地址对的指示信息。
第七方面中的路径探测系统中的中间节点用于:接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文;根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文;并将添加了探测数据的第一探测报文发送至该中间节点节点的下一跳节点。
可选地,该中间节点还用于:接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文;该中间节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文;并将添加了探测数据的第一探测报文发送至该中间节点的下一跳节点。
可选地,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号;探测数据包括:该中间节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识。
可选地,在该中间节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;该中间节点用于:
将添加了该中间节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,该中间节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;
将添加了该中间节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,该中间节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
可选地,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率的情况下,探测数据包括该中间节点的标识以及发送第一探测报文的出口标识,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号;
该中间节点还用于:
在待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑的情况下,将该中间节点的标识、接收第一探测报文的入口的标识、以及该中间节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点;
在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,将该中间节点的标识、接收第一探测报文的入口的标识、该中间节点的上一跳节点添加的探测数据、以及报文中序列号上报至通信网络中的控制节点或源节点。
可选地,在该中间节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;该中间节点具体用于:
将添加了该中间节点的标识以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,该中间节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;
将添加了该中间节点的标识以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,该中间节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
可选地,该中间节点还用于:判断该中间节点是否有至少两个下一跳节点可到达第一探测报文的目的地,并在确定该中间节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,执行上报步骤。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的最大传输单元mtu的情况下,探测数据包括:该中间节点到该中间节点的下一跳节点之间的链路上的mtu。
可选地,在该中间节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;该中间节点具体用于:
将添加了该中间节点到第二节点之间的链路上的mtu的第一探测报文通过第一端口发送至第二节点,该中间节点通过第一端口与第二节点连接;
将添加了该中间节点到第三节点之间的链路上的mtu的第一探测报文通过第二端口发送至第三节点,该中间节点通过第二端口与第三节点连接。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu的情况下,该中间节点具体用于:第一节点将第一节点到第一节点的下一跳节点之间的链路上的mtu与第一探测报文中已经存在的mtu进行比较后保留最小的mtu,将保留最小的mtu之后的第一探测报文发送至第一节点的下一跳节点。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值;探测数据包括:该中间节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。
可选地,在该中间节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;该中间节点具体用于:
将添加了该中间节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,该中间节点通过第一端口与第二节点连接;
将添加了该中间节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第二出口标识、以及从第二出表标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,该中间节点通过第二端口与第三节点连接。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值;探测数据包括:该中间节点的标识、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳;
该中间节点还用于:
将该中间节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、以及该中间节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。
可选地,在该中间节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;该中间节点具体用于:
将添加了该中间节点的标识、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,该中间节点通过第一端口与第二节点连接;
将添加了该中间节点的标识、发送第一探测报文的第二出口标识、从第二出口标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,该中间节点通过第二端口与第三节点连接。
可选地,该中间节点还用于:判断该中间节点是否有至少两个下一跳节点可到达第一探测报文的目的地,并在确定该中间节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,执行上报步骤。
第八方面、提供了一种路径探测系统,路径探测系统包括源节点、一个或多个中间节点以及目的节点;
路径探测系统中的源节点用于:生成包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型;并向中间节点发送所述第一探测报文,该中间节点为源节点的下一跳节点;
可选地,所述待收集的探测数据的类型包括从所述源节点到所述目的节点之间路径上的最小的最大传输单元mtu。
可选地,所述第一探测报文包括第一指令和第二指令,所述第一指令携带所述多路径探测指示信息,所述第二指令携带所述探测数据收集指示信息。
可选地,所述第一探测报文包括第一指令和telemetry指示信息,所述第一指令携带所述多路径探测指示信息,所述telemetry指示信息携带所述探测数据收集指示信息。
可选地,所述探测数据收集指示信息包括mtu,用于指示所述待收集的探测数据的类型为从所述源节点到所述目的节点之间路径上的最小的mtu。
可选地,所述探测数据收集指示信息包括所述待收集的探测数据的类型,用于指示所述第一节点根据所述探测数据收集指示信息包括的类型和待收集的数据之间的对应关系确定待收集的数据。
可选地,所述第一探测报文中还包括指示报文源地址和目的地址对的指示信息。
第八方面中的路径探测系统中的中间节点用于:
接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述探测数据收集指示信息用于指示待收集的探测数据的类型为从所述源节点到所述目的节点之间路径上的最小的最大传输单元mtu;根据所述多路径探测指示信息以及所述探测数据收集指示信息将所述第一节点与所述第一节点的下一跳节点之间的链路上的mtu上报至所述通信网络中的控制节点或所述源节点;并将接收到的所述第一探测报文发送至所述中间节点的下一跳节点。
可选地,在该中间节点上存在到达第一探测报文的目的地的至少两个下一跳节点的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;该中间节点具体用于:
该中间节点通过第一端口将接收到的第一探测报文发送至第二节点,该中间节点通过第一端口与第二节点连接;该中间节点通过第二端口将接收到的第一探测报文发送至第三节点,该中间节点通过第二端口与第三节点连接。
可选地,该中间节点还用于:判断该中间节点是否有至少两个下一跳节点可到达第一探测报文的目的地,并在确定该中间节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,执行根据多路径探测指示信息以及探测数据收集指示信息将该中间节点与该中间节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点的步骤;
此时,该中间节点还用于:将第一探测报文中已经存在的mtu上报至控制节点或源节点。
可选地,在该中间节点只有一个下一跳节点可到达第一探测报文的目的地的情况下,该中间节点还用于:
将该中间节点与该中间节点的下一跳节点之间的链路上的mtu添加至第一探测报文;
将添加了该中间节点与该中间节点的下一跳节点之间的链路上的mtu的第一探测报文发送至该中间节点的下一跳节点。
第九方面,提供了一种通信网络中的第一节点,该通信网络包括源节点、一个或多个中间节点、以及目的节点,第一节点为一个或多个中间节点中的任一个中间节点,第一节点具有实现上述第二方面中的路径探测方法行为的功能。第一节点包括:
接收模块,用于接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型;
添加模块,用于根据所述多路径探测指示信息以及所述探测数据收集指示信息添加探测数据至所述第一探测报文;
发送模块,用于将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点。
可选地,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号;探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块,用于:
将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;
将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
可选地,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率的情况下,探测数据包括第一节点的标识以及发送第一探测报文的出口标识,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号;
第一节点还包括:
上报模块,用于在待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点;
上报模块,还用于在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、第一节点的上一跳节点添加的探测数据、以及报文中序列号上报至通信网络中的控制节点或源节点。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块,用于:
将添加了第一节点的标识以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;
将添加了第一节点的标识以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
可选地,上报模块,用于判断第一节点上是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu的情况下,探测数据包括:第一节点到第一节点的下一跳节点之间的链路上的mtu。
可选地,在第一节点上存在到达第一探测报文的目的地的至少两个下一跳节点的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块用于:
将添加了第一节点到第二节点之间的链路上的mtu的第一探测报文通过第一端口发送至第二节点,第一节点通过第一端口与第二节点连接;
将添加了第一节点到第三节点之间的链路上的mtu的第一探测报文通过第二端口发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,在所述待收集的探测数据的类型为从所述源节点到所述目的节点之间路径上的最小的mtu,且所述第一节点有至少两个下一跳节点可到达所述第一探测报文的目的地的情况下,其中,所述至少两个下一跳节点包括第二节点和第三节点;前述发送模块,具体用于:所述第一节点将所述第一节点到所述第二节点之间的链路上的mtu与所述第一探测报文中已经存在的mtu进行比较后保留最小的mtu之后的第一探测报文发送至所述第二节点;所述第一节点将所述第一节点到所述第三节点之间的链路上的mtu与所述第一探测报文中已经存在的mtu进行比较后保留最小的mtu之后的第一探测报文发送至所述第三节点。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值;探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块用于:
将添加了第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;
将添加了第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第二出口标识、以及从第二出表标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值;探测数据包括:第一节点的标识、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳;
第一节点还包括上报模块,用于将第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块用于:
将添加了第一节点的标识、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;
将添加了第一节点的标识、发送第一探测报文的第二出口标识、从第二出口标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,上报模块用于:判断第一节点上是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
可选地,第一探测报文包括第一指令和第二指令,第一指令携带多路径探测指示信息,第二指令携带探测数据收集指示信息。
可选地,第一探测报文包括第一指令和telemetry指示信息,第一指令携带多路径探测指示信息,telemetry指示信息携带探测数据收集指示信息。
可选地,探测数据收集指示信息包括节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识,用于指示待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率;或者,
探测数据收集指示信息包括mtu,用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu;或者,
探测数据收集指示信息包括节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识以及发送第一探测报文的时间戳,用于指示待收集的探测数据的类型为从源节点到目的节点之间的路径上的时延值。
可选地,探测数据收集指示信息包括待收集的探测数据的类型,用于指示第一节点根据探测数据收集指示信息包括的类型和待收集的数据之间的对应关系确定待收集的数据。
可选地,第一探测报文中还包括指示报文源地址和目的地址对的指示信息。
第十方面,提供了一种通信网络中的第一节点,该通信网络包括源节点、一个或多个中间节点、以及目的节点,第一节点为一个或多个中间节点中的任一个中间节点;第一节点包括:
接收模块,用于接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型为从所述源节点到所述目的节点之间路径上的最小的最大传输单元mtu;
上报模块,用于根据所述多路径探测指示信息以及所述探测数据收集指示信息将所述第一节点与所述第一节点的下一跳节点之间的链路上的mtu上报至所述通信网络中的控制节点或所述源节点;
发送模块,用于将接收到的所述第一探测报文发送至所述第一节点的下一跳节点。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块用于:
第一节点通过第一端口将接收到的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;
第一节点通过第二端口将接收到的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,上报模块,还用于判断第一节点上是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点的步骤;此时,第一节点还包括添加模块,用于第一节点将第一探测报文中已经存在放入mtu上报至控制节点或源节点。
可选地,在第一节点只要一个下一跳节点可达第一探测报文的目的地的情况下,添加模块,还用于将第一节点与第一节点的下一跳节点之间的链路上的mtu添加至第一探测报文;
前述发送模块,还用于第一节点将添加了第一节点与第一节点的下一跳节点之间的链路上的mtu的第一探测报文发送至第一节点的下一跳节点。
本申请中只需要源节点发送包括多路径探测指示信息以及探测数据收集指示信息的第一探测报文便可实现源节点和目的节点之间的多路径的探测,因此可以避免源节点重复发送多次探测报文才能探测路径,从而提高了探测路径的效率。另外,由于第一节点直接向下一跳节点发送包括多路径探测指示信息以及探测数据收集指示信息第一探测报文,使得第一节点的下一跳节点均会按照第一节点所示的方式收集探测数据,如此可以避免遗漏源节点到目的节点之间的任何路径,从而提高了探测路径的准确率。
第十一方面,提供了一种通信网络中的源节点,该通信网络包括源节点、一个或多个中间节点、以及目的节点,源节点包括:
生成模块,用于生成包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型;
发送模块,用于向所述源节点的下一跳节点发送所述第一探测报文。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径拓扑、从源节点到目的节点之间的路径上的丢包率、从源节点到目的节点之间路径上的最小的最大传输单元mtu、从源节点到目的节点之间的路径上的时延值中的一者或多者。
可选地,第一探测报文包括第一指令和第二指令,第一指令携带多路径探测指示信息,第二指令携带探测数据收集指示信息。
可选地,第一探测报文包括第一指令和telemetry指示信息,第一指令携带多路径探测指示信息,telemetry指示信息携带探测数据收集指示信息。
可选地,探测数据收集指示信息包括节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识,用于指示待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率;或者,
探测数据收集指示信息包括mtu,用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu;或者,
探测数据收集指示信息包括节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识以及发送第一探测报文的时间戳,用于指示待收集的探测数据的类型为从源节点到目的节点之间的路径上的时延值。
第十二方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面、或者第三方面所述的任一路径探测方法。
第十三方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面、或者第三方面所述的任一路径探测方法。
第十四方面,提供了一种芯片,所述芯片设置在源节点中,应用于通信网络,所述通信网络包括源节点、一个或多个中间节点以及目的节点;所述芯片包括处理器和接口电路;
所述接口电路用于接收指令并传输至所述处理器;
所述处理器用于执行上述第三方面中任一所述的路径探测方法。
第十五方面、提供了一种芯片,所述芯片设置在第一节点中,应用于通信网络,所述通信网络包括源节点、一个或多个中间节点以及目的节点,所述第一节点为所述一个或多个中间节点中的任一节点;所述芯片包括处理器和接口电路;
所述接口电路用于接收指令并传输至所述处理器;
所述处理器用于执行上述第一方面中任一所述的路径方法,或者执行上述第二方面中任一所述的路径方法。
第十六方面、提供了一种通信网络中的控制节点,该控制节点用于接收目的节点、或者目的节点和中间节点上报的探测数据,并根据上报的探测数据分析源节点与目的节点之间的路径拓扑、源节点与目的节点之间的路径上的最小的mtu,源节点与目的节点之间的路径上的时延值以及源节点与目的节点之间的路径上的丢包率中的一者或多者。
附图说明
图1是本申请实施例提供的一种通信网络的架构示意图;
图2是本申请实施例提供的一种路径探测方法流程图;
图3是本申请实施例提供的一种探测报文的结构示意图;
图4是本申请实施例提供的另一种路径探测方法流程图;
图5是本申请实施例提供的另一种通信网络的架构示意图;
图6是本申请实施例提供的另一种路径探测方法流程图;
图7是本申请实施例提供的另一种路径探测方法流程图;
图8是本申请实施例提供的另一种路径探测方法流程图;
图9是本申请实施例提供的另一种通信网络的架构示意图;
图10是本申请实施例提供的另一种路径探测方法流程图;
图11是本申请实施例提供的另一种路径探测方法流程图;
图12是本申请实施例提供的另一种路径探测方法流程图;
图13是本申请实施例提供的另一种通信网络的架构示意图;
图14是本申请实施例提供的另一种路径探测方法流程图;
图15是本申请实施例提供的另一种路径探测方法流程图;
图16是本申请实施例提供的一种网络设备的结构示意图;
图17是本申请实施例提供的另一种网络设备的结构示意图;
图18是本申请实施例提供的一种图17所示网络设备中的接口板的结构示意图;
图19是本申请实施例提供的一种第一节点的结构示意图;
图20是本申请实施例提供的另一种第一节点的结构示意图;
图21是本申请实施例提供的一种源节点的结构示意图;
图22是本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应当理解的是,本文提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在对本申请实施例提供的路径探测方法进行解释说明之前,先对本申请实施的应用场景进行解释说明。
传统的路径追踪(traceroute)被用来测量网络中设备(主机或者网络设备)之间的一条路径信息,被广泛用于如下用途:
(1)诊断设备之间的连接性问题
(2)计算网络性能,如时延、丢包等
(3)还原网络拓扑
目前涉及网路探测技术包括巴黎路径追踪(paristraceroute,一种新型的路径追踪技术)方案以及基于多协议标签交换和标签转发通道的多重通道追踪(multi-protocollabelswitching-lableswitchingpathmultipathtrace,mplslspmultipathtrace)方案。
paristraceroute方案主要是在源设备实施多路径检测(multi-pathdetectionalgorithm,mda)算法(主要是改变数据包中用于hash的字段),根据mda算法产生多组探测报文(用于探测某一条从源到目的设备的路径),每组探测包包含的中间设备用于hash算法的字段均不同,从而尽可能的覆盖所有路径。该方案有以下两个缺陷:为了探测所有路径,每次探测每条路径上收到多个冗余探测报文;mda算法不保证所有路径均会被探测到,只能去尽量覆盖,但是存在遗漏路径的情况,这样就会导致收集的信息不准确。
mplslspmultipathtrace方案主要通过源设备发送不同ttl和hash字段的数据包到中间设备,中间设备返回所有出接口对应的hash字段给源设备,然后源设备重新构造对应的报文的方式来完成多路径信息收集。该方案存在以下两个缺陷:不确定每个出接口都能在前一个节点指定的多路径信息中(用于hash)找到各自的地址段,这样就会导致收集的信息不准确;共享路径上存在一定冗余探测包,且探测所有路径信息的周期较长(每条路径逐跳探测,路径和路径间串行探测)。
可见,传统的traceroute方法在多路径场景(等价多路径(equal-costmulti-pathrouting,ecmp)、非等价多路径(unequal-costmultiplepath,ucmp)、链路聚合(linkaggregationgroups,lag))下存在不准确和低效率问题。而本申请实施例提供的路径探测方法就应用于上述多路径场景中,以提高多路径场景下的获取的探测数据的准确性和效率。
另外,本申请实施例中设备和节点可以互用。例如,源设备可以称之为源节点,中间设备可以称之为中间节点,目的设备可以称之为目的节点。本实施例中需要探测从源设备到目的设备之间的路径信息,把探测的路径信息上报给控制器设备或者转发给源设备,由控制器设备或者源设备根据探测的路径信息对源设备到目的设备之间的多路径拓扑或者路径性能进行分析。另外,源节点还可以称为头节点。
本申请实施例提供的路径探测方法应用于包括多路径的通信网络中,该通信网络中包括源节点、一个或多个中间节点、以及目的节点。图1是本申请实施例提供的一种通信网络的架构示意图,图1所示的通信网路中节点之间的拓扑以及节点的具体数量均仅仅用于举例说明,并不构成对本申请实施例提供的路径探测方法能够应用的通信网络的限定。
如图1所示,该通信网络100中包括源节点r1,中间节点r2、r3、r4、r6、r7,以及目的节点r5。如图1所示,源节点r1与中间节点r2之间可以通过无线或有线方式连接以进行通信,中间节点r2与中间节点r3之间可以通过有线或无线方式连接以进行通信,中间节点r3与中间节点r4之间可以通过有线或无线方式连接以进行通信,中间节点r4与目的节点r5之间可以通过有线或无线方式连接以进行通信。也即是,源节点r1、中间节点r2、中间节点r3、中间节点r4、以及目的节点r5形成了源节点r1到目的节点r5的第一条路径。
如图1所示,中间节点r2还与中间节点r6之间可以通过有线或无线方式连接以进行通信,中间节点r6与中间节点r4之间可以通过有线或无线方式连接以进行通信。此时,源节点r1、中间节点r2、中间节点r6、中间节点r4、以及目的节点r5形成了源节点r1到目的节点r5的第二条路径。
此外,如图1所示,中间节点r6还与中间节点r7之间可以通过有线或无线方式连接以进行通信,中间节点r7与中间节点r5之间可以通过有线或无线方式连接以进行通信。此时,源节点r1、中间节点r2、中间节点r6、中间节点r7、以及目的节点r5形成了源节点r1到目的节点r5的第三条路径。
图1所示的通信网络中的各个节点可以为任一设备,比如可以为路由器、网关、交换机等设备,在此不再一一举例说明。
下面对本申请实施例提供的路径探测方法展开详细说明。
图2是本申请实施例提供的一种路径探测方法流程示意图,可以应用于图1所示的通信网络。如图2所示,该路径探测方法包括如下几个步骤:
步骤201:源节点生成包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型。
为了能够提高探测路径的效率以及探测路径的准确率,本申请实施例提供了一种探测报文的方法。为了后续便于说明,将该探测报文称为第一探测报文。第一探测报文中包括多路径探测指示信息和探测数据收集指示信息。在一个具体的实现方式中,第一探测报文包括第一指令和第二指令,第一指令携带多路径探测指示信息,第二指令携带探测数据收集指示信息。在另一个具体的实现方式中,第一探测报文包括第一指令和telemetry(远距离测量)指示信息,第一指令携带多路径探测指示信息,telemetry指示信息携带探测数据收集指示信息。其中,第一指令还可以称为指令a,第二指令还可以称为指令b。也即是,在本申请实施例中,该多路径探测指示信息可以以用于指示多路径信息收集的指令a的方式表示。该探测数据收集指示信息可以以需要收集信息的指令b的方式表示,也可以采用已有的telemetry指示信息指示收集何种类型的探测数据。
在一个具体的实现方式中,指令b或telemetry指示信息里封装的字段可以为待收集的探测数据的类型,这种场景下,通信网络中的各个节点中预先保存有类型和待收集的具体数据之间的对应关系。比如,类型为从源节点到目的节点之间的路径拓扑时,或者,为从源节点到目的节点之间的路径上的丢包率时对应的待收集的具体数据包括当前节点标识(identity,id)、入口的id、出口的id;类型为从源节点到目的节点之间路径上的最小的最大传输单元(maximumtransmissionunit,mtu)时对应的待收集的具体数据包括当前节点与下一跳节点之间的链路的mtu;类型为从源节点到目的节点之间的路径上的时延值时对应的待收集的具体数据包括接收和发送报文时的时间戳、以及当前节点的id、入口的id、出口的id。后续当任一节点接收到包括指令b或telemetry指示信息的第一探测报文时,根据指令b或telemetry指示信息中封装的类型和存储的对应关系,便可知悉待收集的具体的数据。
上述类型和待收集的具体数据之间的对应关系可以是通信网络中的控制节点预先发布的。也可以是网管在各个节点上配置的。对此不做具体限定。此外,通信网络中的控制节点用于统一对图1所示的通信网络中的各个节点进行管理,比如,发布各个节点的配置信息等。控制节点还可以称为控制器或者控制器设备等。
在另一种具体的实现方式中,第一探测报文中的探测数据收集指示信息可以通过在指令b或telemetry指示信息里封装待收集的具体的数据来实现。例如,在当前场景为需要探测从源节点到目的节点之间的路径拓扑时,或者,为需要探测从源节点到目的节点之间的路径上的丢包率时,指令b或telemetry指示信息里装的字段可以为当前节点的id、入口的id、出口的id;在当前场景为需要探测从源节点到目的节点之间路径上的最小的最大传输单元mtu时,指令b或telemetry指示信息里装的字段可以为mtu;在当前场景为需要探测从源节点到目的节点之间的路径上的时延值时,指令b或telemetry指示信息里装的字段可以为接收和发送报文时的时间戳、以及当前节点的id、入口的id、出口的id。
需要说明的是,探测数据收集指示信息可以仅仅指示一种待收集的探测数据的类型,也可以同时指示多种待收集的探测数据的类型。当探测数据收集指示信息同时指示多种待收集的探测数据的类型时,第一节点可以同时收集多种类型的探测数据,在此就不再一一举例说明。
此外,第一探测报文中还可以进一步包括指示报文源地址和目的地址对的指示信息。在一个具体的实现方式中,第一探测报文还可以包括第三指令,该第三指令中携带指示报文源地址和目的地址对的指示信息。例如第三指令以指令c的方式表示,指令c表示第一探测报文中的源和目的地址对为源地址为r1的地址,目的地址为r6的地址,该指令c的值可以为1或者其他值。不同的源地址和目的地址对的值不一样。这样网络中的其他节点只要看到探测报文中包括指令c的值是1即可以该报文的源地址是r1的地址,目的地址是r6的地址,而不用去解析报文中其他部分携带的源地址和目的地址信息。这样可以提高报文处理效力。下面其他实施例中的探测报文中的指令c具有相同含义。
图3为本申请实施例提供的两种第一探测报文的结构,图3左侧所示的第一探测报文包括报文头(header),源地址(source),目的地址(destination),a、b、c分别代表上述指令a,b以及c。图3右侧所示的第一探测报文包括报文头(header),源地址(source),目的地址(destination),a、远距离测试指示信息、c分别代表上述指令a,telemetry指示信息(图3中表示为远距离测试指示信息),以及指令c。下面其他实施例中的探测报文的报文结构一样可以采用图3所示的报文结构。
步骤202:源节点向源节点的下一跳节点发送第一探测报文。
根据步骤201可知,在不同的检测场景下,源节点可以向下一跳节点发送封装有不同指令b或telemetry指示信息的第一探测报文,后续将针对不同的场景分别进行解释说明,在此先不赘述。
步骤203:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文。
此时,第一节点为源节点的下一跳节点,当第一节点通过步骤203至步骤205实现向第一节点的下一跳节点发送第一探测报文时,第一节点的下一跳节点同样可以继续参考步骤203至步骤205实现第一探测报文的转发。因此,在本申请实施例中,步骤203至步骤205中的第一节点实际上可以为通信网络中的任一个中间节点。
步骤204:第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文。
为了实现收集探测数据,第一节点需要根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,并且在不同的检测场景下,第一节点添加的探测数据也不同,后续将针对不同的场景分别进行解释说明,在此先不赘述。
步骤205:第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点。
通过步骤205可以实现将第一探测报文转发至下一跳节点,以实现各个下一跳节点能够继续收集探测数据以及添加特定的探测数据。
在本申请实施例中,只需要源节点发送步骤201中的第一探测报文便可实现源节点和目的节点之间的多路径的探测,既不需要源节点重复发送多次探测报文,也不会遗漏源节点到目的节点之间的任何路径,因此,本申请实施例提供的路径探测方法能够同时提高探测路径的效率和准确率。
由图2所示的实施例可知,本申请实施例提供的路径探测方法可以应用于不同的探测场景中。比如,可以应用于需要探测从源节点到目的节点之间的路径拓扑的场景中,也可以应用于需要探测从源节点到目的节点之间的路径上的丢包率的场景中,也可以应用于需要探测从源节点到目的节点之间路径上的最小的mtu的场景中,也可以应用于需要探测从源节点到目的节点之间的路径上的时延值的场景中,下面将对上述几个场景下的路径探测过程分别展开说明。需要说明的是,前述几个场景仅仅用于举例说明,并不构成对本申请实施例提供的路径探测方法的限定,本申请实施例提供的路径探测方法也可以应用于其他的探测场景中,比如,也可以应用于需要探测从源节点到目的节点之间的路径上的抖动情况的场景中,此时,同样可以根据探测数据收集指示信息来指示待收集的探测数据的类型即可,在此就不再一一详细说明。
图4是本申请实施提供的一种路径探测方法流程图,该方法应用于需要探测从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率的的场景中。如图4所示,该方法包括如下步骤:
步骤401:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号。
也即是,图4所示的实施例可以应用于需要探测从源节点到目的节点之间的路径拓扑的场景中,也可以应用于需要探测从源节点到目的节点之间的路径上的丢包率的场景中,或者,应用于同时需要探测前述两种类型的探测数据的场景中。只不过在后两者中,第一探测报文需要包括报文序列号,以便于后续源节点或控制节点根据报文序列号确定丢包率。
步骤402:第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识。
在一个具体的实施方式中,第一节点在接收到第一探测报文时,可以先将第一节点的标识、接收第一探测报文的入口的标识添加在第一探测报文中,然后在通过某个出口发送第一探测报文时,再将发送第一探测报文的出口的标识添加或封装在第一探测报文中。具体实现过程可以参考下述图5所示实施例中的详细说明。
步骤403:第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点。
在一种具体的实现方式中,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,例如,以下以第一节点到达第一探测报文的目的地有两个下一跳节点(称之为第二节点和第三节点)为例说明。其中,第一节点通过第一端口与第二节点连接,通过第二端口与第三节点连接,其中,第一端口的标识为第一出口标识,第二端口的标识为第二出口标识。在这种场景下,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点的实现过程可以为:第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第一出口标识的第一探测报文通过第一端口发送至第二节点;第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第二出口标识的第一探测报文通过第二端口发送至第三节点。
在上述实现方式中,在第一节点上存在到达第一探测报文的目的地的至少两个下一跳节点的情况下,第一节点需要对第一探测报文进行复制,以实现向每个下一跳节点发送第一探测报文,从而避免遗漏源节点和目的节点之间的路径。
下一跳节点在接收到第一探测报文时,同样可以参考步骤401至步骤403继续收集探测数据并转发第一探测报文,直至目的节点接收到第一探测报文。
步骤404:目的节点将接收到的各个探测报文中的探测数据上报至源节点或控制节点。
由于源节点与目的节点之间存在多路径,因此,目的节点最终将接收到多个第一探测报文。此时,在一种具体的实现方式中,目的节点可修改接收到的各个第一探测报文的目的地址,以将接收到的各个第一探测报文上报给通信网络中的控制节点或源节点,由控制节点或源节点根据接收到的各个第一探测报文中携带的各个节点添加的探测数据分析源节点和目的节点之间的多路径。
在另一种具体的实现方式中,目的节点也可以将接收到的各个第一探测报文中携带的各个节点添加的探测数据上报给通信网络中的控制节点或源节点,由控制节点或源节点根据各个节点添加的探测数据分析源节点和目的节点之间的多路径。
可以理解的是,目的节点还可以采用其他报文格式将探测数据上报至控制节点(例如,控制节点和目的节点之间的的交互报文)或源节点,在此就不再详细说明。
下面以图5所示的通信网络对上述步骤401至步骤404进一步解释说明。
假设当前为需要探测从源节点到目的节点之间的路径拓扑的场景,且第一探测报文中的探测数据收集指示信息通过在指令b或者telemetry指示信息里携带待收集的具体的数据来实现,则源节点在生成包括探测数据指示信息的第一探测报文里封装上自己的节点id(r1)以及转发第一探测报文的出接口id(0),并将第一探测报文转发给中间节点r2,以指示r2根据探测数据指示信息中指示的具体的数据收集探测数据。
中间节点r2收到第一探测报文后,根据指令a识别出需要做多路径数据收集,中间节点r2根据收集信息指令b或telemetry指示信息封装上需要携带的信息,即封装上自己的节点id(r2)、探测报文入接口id(0)。r2检查到达第一探测报文中的目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地。在一个具体的实施方式中,可以采用ecmp、ucmp、lag等技术检查多个出接口。r2将该探测报文复制n-1份(此实施例中n=2,因此复制1份),在复制后的n份报文中封装上相应的出接口(此实施例中是在2份复制后的报上分别封装上出接口1和出接口2)的标识。然后,r2分别把封装出接口1的报文从出接口1转发出去,把封装出接口2的报文从出接口2转发出去。
需要说明的是,上述检查出接口数量和封装本节点id(r2)以及探测报文入接口id(0)的处理并没有先后限制,可以在检查步骤后,在两份探测报文中分别封装节点id(r2)、探测报文入接口id(0)以及相应的出接口标识。为了描述方便,本申请实施例(包括下面的实施例)中可以将r2从r1接收的报文称之为第一探测报文,将添加不同出接口信息或其他信息(如下面其他实施例中所描述的情况)通过不同出接口发送的探测报文称之为第二探测报文(通过出接口r2(1)发送的探测报文)和第三探测报文(通过出接口r2(2)发送的探测报文)。可以理解,第一探测报文和第二、三探测报文仅仅是为了方便区分,实质上第二、三探测报文的主体还是从r1接收到的第一探测报文,只是添加了不同的出接口信息或其他信息而已,后续内容中提到的任一探测报文的主体也还是从r1接收到的第一探测报文。
r3收到第二探测报文后,操作步骤和r2一样,封装上自己的节点id、入接口id、出接口id后,把探测报文发给r5,然后r5做同样的操作步骤后把探测报文发给目的节点r6。r6的探测报文最终封装的信息为r1(0)-(0)r2(1)-(0)r3(1)-(1)r5(2)-(0)r6,此处的r1-r6是报文经过的所有节点的id,节点id的左边信息为探测报文进入该节点的入接口id,节点id的右边信息为探测报文出该节点的出接口id。
r4收到探测报文后,操作步骤和r2类似,封装上自己的节点id、入接口id,因为r4上也存在多接口,所以复制2份探测报文,2份探测报文分别为r1(0)-(0)r2(2)-(0)r4(1)以及r1(0)-(0)r2(2)-(0)r4(2),然后把探测报文r1(0)-(0)r2(2)-(0)r4(1)从出接口1转发给r5,把探测报文r1(0)-(0)r2(2)-(0)r4(2)从出接口2转发给节点r7。r5和r7收到来自r4的探测报文后,做相应的操作步骤后,分别把各自收到的探测报文发给目的节点r6。r6又收到两个探测报文r1(0)-(0)r2(2)-(0)r4(1)-(0)r5(2)-(0)r6,r1(0)-(0)r2(2)-(0)r4(2)-(0)r7(1)-(1)r6。
针对源节点r1和目的节点r6之间的本次探测,目的节点r6一共收到了三个探测报文,这三个探测报文中添加的探测数据分别为r1(0)-(0)r2(1)-(0)r3(1)-(1)r5(2)-(0)r6、r1(0)-(0)r2(2)-(0)r4(1)-(0)r5(2)-(0)r6、r1(0)-(0)r2(2)-(0)r4(2)-(0)r7(1)-(1)r6。目的节点r6可以把该信息以探测报文的方式上报给控制节点或者转发给源节点。比如,r6可以更改这三个探测报文的目的地址为源节点或控制节点,以将这三个探测报文上报给控制节点或者转发给源节点。控制节点或者源结点根据这收到的探测报文计算出r1到r6之间的拓扑。
其中,控制节点或源节点对于接收到的多个探测报文,可以根据各个探测报文中的目的地址和源地址或探测报文中的指令c将用于探测同一源节点到目的节点的探测报文关联起来。对于关联之后的探测报文,获取各个探测报文中节点标识、节点入口标识以及节点出口标识,根据获取的这些数据便可将目的节点到源节点之间的多路径拓扑还原出来。
如果当前为需要探测从源节点到目的节点之间的路径上的丢包率的场景,由于第一探测报文中包括报文序列号,因此,目的节点便可根据接收到的探测报文的报文序列号确定源节点发送的哪些报文是成功接收到的。目的节点可以将该探测报文上报给控制节点或者转发给源节点,由控制节点或者源节点根据成功接收到的探测报文和源节点全部发送的探测报文来确定源节点和目的节点之间的丢包率。
上述实施例中的出接口也即是出口,入接口也即是入口。也即是,本申请实施例中出接口和出口可以互用,入接口和入口可以互用。
此外,在图4所示的实施例中,各个节点在接收到第一探测报文之后,只需向第一探测报文中添加探测数据即可,最后由目的节点统一向源节点或控制节点上报各个节点收集的探测数据,然后由源节点或控制节点分析源节点与目的节点之间的多路径。该路径探测模式还可以称为trace(追踪)模式。
通过本实施例中的探测多路径中的拓扑,可以解决了探测包冗余问题,而且提高了探测效率以及探测的准确率。
在图4所示的实施例中,由目的节点统一将各个中间节点添加在第一探测报文中的探测数据上报至源节点或控制节点。在本申请实施例中,也可以由各个中间节点将探测数据上报给源节点或控制节点。下述实施例用于对此进行解释说明。
图6是本申请实施提供的一种路径探测方法流程图,该方法同样应用于需要探测从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率的的场景中。如图6所示,该方法包括如下几个步骤:
步骤601:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率。
步骤601的实现方式可以参考步骤401,在此不再详细阐述。
步骤602:第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,探测数据包括第一节点的标识以及发送第一探测报文的出口标识,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号。
具体实现过程参考以下结合图5所示实施例的详细描述。
在步骤602中,第一节点将自身的标识和发送探测报文的出口的标识添加在第一探测报文中,将自身的标识、入口标识以及第一节点的上一跳节点添加的探测数据等数据直接通过步骤604和步骤605上报给源节点或目的节点,如此,可以减小第一节点向下一跳节点发送的探测报文的负载,从而提高转发探测报文的效率。
步骤603:第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点。
由于在此实施例中,第一节点需要向源节点或控制节点上报探测数据,因此,在一种具体的实现方式中,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,例如,以下以第一节点到达第一探测报文的目的地有两个下一跳节点(称之为第二节点和第三节点)为例说明。其中,第一节点通过第一端口与第二节点连接,通过第二端口与第三节点连接,其中,第一端口的标识为第一出口标识,第二端口的标识为第二出口标识。这种场景下,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点的实现过程可以为:第一节点将添加了第一节点的标识以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;第一节点将添加了第一节点的标识以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
也即是,第一节点在将部分探测数据上报至源节点或目的节点之后,只需将第一节点的标识以及发送探测报文的出口的标识封装在第一探测报文中,然后将封装后的第一探测报文发送至下一跳节点即可。
步骤604:在待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。
具体实现过程参考以下结合图5所示实施例的详细描述。
步骤605:在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、第一节点的上一跳节点添加的探测数据、以及报文中序列号上报至通信网络中的控制节点或源节点。
具体实现过程参考以下结合图5所示实施例的详细描述。
通过步骤604和步骤605便可实现第一节点将探测数据上报给控制节点或源节点。
在步骤604和步骤605中,第一节点向控制节点或源节点上报探测数据的实现方式可以为直接将探测数据进行上报,也可以先将这些探测数据携带在第一探测报文中进行上报。在后一种实现方式中,第一节点可以先将第一节点的标识、接收第一探测报文的入口的标识添加到第一探测报文中,然后添加有这两个探测数据的第一探测报文上报至源节点或目的节点。后续,当需要向下一跳节点发送探测报文时,删除接收第一探测报文的入口的标识以及第一节点的上一条节点添加的探测数据,并封装上发送探测报文的出口的标识,即可将第一探测报文发送给下一跳节点。可以理解的是,还可以采用其他报文格式将探测数据上报至控制节点(例如,控制节点和中间节点之间的交互报文所采用的报文格式)或源节点。在直接上报探测数据或者采用其他报文格式上报探测数据的情况下,第一节点可以将上一条节点添加的探测数据删除然后添加第一节点的标识和发送探测报文的出口的标识。当然,也可以不删除上一条节点添加的探测数据而直接添加第一节点的标识和发送探测报文的出口的标识。
下面以图5所示的通信网络对上述步骤601至步骤605进一步解释说明。
假设当前为需要探测从源节点到目的节点之间的路径拓扑的场景,且第一探测报文中的探测数据收集指示信息通过在指令b或者telemetry指示信息里携带待收集的具体的数据来实现,则源节点在探测报文里封装上自己的节点id(r1)以及转发探测报文的出接口id(0),并将探测报文转发给中间节点r2。后续以各个中间节点将探测数据携带在第一探测报文中进行上报为例进行说明。
中间节点r2收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据指令b或telemetry指示信息在第一探测报文中封装上需要携带的信息,即封装上自己的节点id(r2)、探测报文入接口id(0)。r2检查到达第一探测报文的目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地。在一个具体的实施方式中,可采用以ecmp、ucmp、lag技术等来检查多个出接口。r2将封装了(r1(0)-(0)r2)的第一探测报文上报给控制节点或者转发给源节点,然后将封装后的第一探测报文中的r2的入口标识和其他节点添加的探测数据删除(此实施例中为r1(0)),并将删除数据后的探测报文复制n-1份探测报文(此实施例中有两个出接口因此复制1份),在复制后的n份探测报文中分别封装上相应的出接口的标识(此实施例中是在2份复制的探测报文中分别封装上出接口1和出接口2)。。然后,r2分别把封装了节点id以及出接口1(r2(1))的探测报文从出接口1发给r3,把封装了节点id和出接口2(r2(2))的探测报文从出接口2发给r4。需要说明的是,本实施例中采用以探测报文的方式向控制器或源节点上报探测数据,其他上报探测数据方式同样适用,此处不再逐一赘述。下面实施例涉及上报探测数据的场景都以上报探测报文的方式描述。
此外,需要说明的是,上述检查出接口数量、以及封装本节点id(r2)以及探测报文入接口id(0)的处理并没有先后限制,可以在检查步骤后,在两份探测报文中分别封装节点id(r2)、探测报文入接口id(0),此时,仅需上报其中的一个探测报文即可,在上报其中的一个探测报文之后,再对两份探测报文中的数据进行删除,最后再在删除数据后的探测报文中封装上相应出接口标识。此外需要说明的是,r2在将添加了探测数据的2份探测报文上报给源节点或控制节点之后,r2也可以不将探测报文中的数据进行删除,直接继续将这2份报文分别发送至2个下一跳节点,这种情况下可以由控制器决定采用哪个数据确定探测结果。
r3收到探测报文后,操作步骤和r2一样,封装上自己的节点id、入接口id,先将封装了(r2(1)-(0)r3)探测报文上报给控制节点或者转发给源节点。r3检查到达第一探测报文中的目的地址是否有多个出接口(本实施例中只有一个出接口),也即是,r3可以通过一个下一跳节点(r5)到达第一探测报文的目的地。r3删除探测报文中r2封装进去的数据(r2(1)和自身已经封装进去的入接口的标识,然后再封装上自己的出接口标识(1),发送封装了该r3(1)的探测报文给r5。此外需要说明的是,r3在将添加了探测数据的探测报文上报给源节点或控制节点之后,r3也可以不将探测报文中的数据进行删除,直接继续将报文分别发送至下一跳节点。
r5收到的探测报文仅包含r3的信息,即r3(1),r5封装上自己的节点id(r5)、探测报文入接口id(1),然后将封装了(r3(1)-r5(1))的探测报文上报至控制节点或转发至源节点。r5检查到达第一探测报文中的目的地址是否有多个出接口(本实施例中只有一个出接口),也即是,r5可以通过一个下一跳节点(r6)到达第一探测报文的目的地。r5删除探测报文中r3封装进入的数据(r3(1))和自身已经封装进去的入接口的标识(1),然后再封装上自己出接口的标识(2),发送封装了该r5(2)的探测报文给r6。此外需要说明的是,r5在将添加了探测数据的探测报文上报给源节点或控制节点之后,r5也可以不将探测报文中的数据进行删除,直接继续将报文分别发送至下一跳节点。
其余节点收到探测报文后,参照r2和r3的处理方式,如r4到目的节点r6有两个出接口,可参照r2的处理,r5到目的节点有一个出接口,可参照r3的处理。此处不再一一赘述。
r6最终收到三个探测报文(分别来自于r3,r4以及r7),这三个探测报文中封装的数据分别为r5(2)-(0)r6、r5(2)-(0)r6、r7(1)-(1)r6。r6把三个探测报文上报给控制节点或者转发给源节点。
控制节点或者源节点一共收到9个探测报文:携带的内容分别为r1(0)-(0)r2,r2(1)-(0)r3,r2(2)-(0)r4,r3(1)-(1)r5,r4(1)-(0)r5,r4(2)-(0)r7,r5(2)-(0)r6,r5(2)-(0)r6,r7(1)-(1)r6,则可还原r1到r6间的多路径拓扑与图5所示的路径一致。具体方式参考上述实施例,此处不再赘述。
其中,控制节点或源节点对于接收到的多个探测报文,可以根据各个探测报文中的目的地址和源地址或探测报文中的指令c将用于探测同一源节点到目的节点的探测报文关联起来。对于关联之后的探测报文,获取各个探测报文中节点标识、节点入口标识以及节点出口标识,根据获取的这些数据便可将目的节点到源节点之间的多路径拓扑还原出来。
对于图5所示的通信网络,如果各个中间节点将探测数据直接进行上报,此时,各个中间节点上报探测数据和在第一探测报文中封装数据并向下一跳节点发送探测报文没有先后限制。以图5中的r2为例进行说明,中间节点r2在接收到封装了r1(0)的探测报文之后,可以先将r1(0)-(0)r2上报给源节点或控制节点,然后再删除掉第一探测报文中的r1(0)并封装上自身的出接口标识,并将处理后的探测报文发送至下一跳节点。或者,中间节点r2在接收到封装了r1(0)的探测报文之后,可以先删除掉第一探测报文中的r1(0)并封装上自身的出接口标识,并将理后的探测报文发送至下一跳节点,然后再将r1(0)-(0)r2上报给源节点或控制节点。在直接上报探测数据的场景中,其他节点的实现方式均可以参考中间节点r2,在此不再详细说明。
此外,如果当前为需要探测从源节点到目的节点之间的路径上的丢包率的场景,同样可以参考上述过程来完成本申请实施提供的路径探测方法,只需在第一节点向源节点或控制节点上报的数据中添加上第一探测报文的报文序列号即可。此时,由于每个中间节点均向源节点或控制节点上报数据,因此,源节点或控制节点不仅可以确定源节点到目的节点之间的各条路径上的丢包率,对于任一条路径,还可以确定具体的丢包位置,在此就不再一一详细阐述。
通过本实施例中的探测多路径中的拓扑,同样可以解决探测包冗余问题,而且提高了探测效率以及探测的准确率。
在图6所示的实施例中,由各个中间节点中的每个中间节点将探测数据上报给源节点或控制节点。在本申请实施例中,还可以由各个中间节点中的部分中间节点来上报探测数据,其他节点则不需要上报探测数据。上报探测数据的中间节点可以为满足指定条件的中间节点,该指定条件可以为有多个可达目的节点的下一跳节点,也可以为其他指定条件。下述实施例以指定条件为有多个可达目的节点的下一跳节点为例进行解释说明。
图7是本申请实施提供的一种路径探测方法流程图,该方法同样应用于需要探测从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率的的场景中。如图7所示,该方法包括如下几个步骤:
步骤701:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率。
步骤701的实现方式可以参考步骤601,在此不再详细阐述。
步骤702:第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,探测数据包括第一节点的标识以及发送第一探测报文的出口标识,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号。
步骤702的实现方式可以参考步骤602,在此不再详细阐述。
步骤703:第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点。
步骤703的实现方式可以参考步骤603,在此不再详细阐述。
步骤704:第一节点判断第一节点上是否存在到达第一探测报文的目的地的至少两个下一跳节点,并在确定第一节点存在到达第一探测报文的目的地的至少两个下一跳节点的情况下,执行上报步骤。
在本实施例中,只有在第一节点存在至少两个可达目的节点下一跳节点的情况下才会执行步骤604和/或步骤605所示的上报步骤以及步骤702至步骤703所示的转发第一探测报文的步骤,否则第一节点就执行步骤402和步骤403所示的添加探测数据和转发第一探测报文的步骤。
下面以图5所示的通信网络对上述步骤701至步骤704进一步解释说明。
假设当前为需要探测从源节点到目的节点之间的路径拓扑的场景,且第一探测报文中的探测数据收集指示信息通过在指令b或者telemetry指示信息里携带待收集的具体的数据来实现,则源节点在探测报文里封装上自己的节点id(r1)以及转发探测报文的出接口id(0),并将探测报文转发给中间节点r2。后续以中间节点将探测数据携带在第一探测报文中进行上报为例进行说明。
中间节点r2收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据指令b或telemetry指示信息在第一探测报文中封装上需要携带的信息,即封装上自己的节点id(r2)、探测报文入接口id(0)。r2检查到达第一探测报文的目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地。在一个具体的实施方式中,可采用以ecmp、ucmp、lag技术等来检查多个出接口。r2将封装了(r1(0)-(0)r)的第一探测报文上报给控制节点或者转发给源节点,然后将封装后的第一探测报文中的r2的入口标识和其他节点添加的探测数据删除(此实施例中为r1(0)),并将删除数据后的探测报文复制n-1份探测报文(此实施例中有两个出接口因此复制1份),在复制后的n份探测报文中分别封装上相应的出接口(此实施例中是在2份复制的报上分别封装上出接口1和出接口2)的标识。然后,r2分别把封装了节点id以及出接口1(r2(1))的探测报文从出接口1发给r3,把封装了节点id和出接口2(r2(2))的探测报文从出接口2发给r4。需要说明的是,本实施例中采用以探测报文的方式向控制器或源节点上报探测数据,其他上报探测数据方式同样适用,此处不再逐一赘述。下面实施例涉及上报探测数据的场景都以上报探测报文的方式描述。此外,需要说明的是,上述检查出接口数量、删除探测报文中的数据、以及封装本节点id(r2)以及探测报文入接口id(0)的处理并没有先后限制,可以在检查步骤后,在两份探测报文中分别封装节点id(r2)、探测报文入接口id(0),此时,仅需上报其中的一个探测报文即可,在上报其中的一个探测报文之后,再对两份探测报文中的数据进行删除,最后再在删除数据后的探测报文中封装上相应出接口标识。
r3收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r3根据指令b封装上自己的节点id、探测报文入接口id,并在检查到达探测报文到目的地只有一个出接口(即只存在一个下一跳节点到达探测报文到目的地),则不进行探测数据的上报而直接封装上出接口id后,把封装了(r2(1)-(0)r3(1))探测报文发给r5。同样需要说明的是,上述检查出接口数量、封装本节点id(r3)以及探测报文入接口id(0)的处理并没有先后限制,可以在检查步骤后,在探测报文中封装节点id(r3)以及入接口id以及相应出接口标识。
r5接收到报文后,由于r5到达目的节点也只有一个下一跳节点,因此r5做和r3同样的操作步骤后把封装了(r2(1)-(0)r3(1)-(1)r5(2))探测报文发给目的节点r6。
r6接收到的探测报文后,将自身的id和探测报文入接口的id封装到探测报文中,探测报文中最终封装的信息为r2(1)-(0)r3(1)-(1)r5(2)-(0)r6,此处的r2-r6是报文经过的所有节点的id,节点id的左边信息为探测报文进入该节点的入接口id,节点id的右边信息为探测报文出该节点的出接口id。如上述(0)r3(1),节点idr3其左边的(0)表示探测报文进入节点r3的入接口id(为0),节点idr3其右边的(1)表示探测报文出节点r3的出接口id(为1)。与上述图4所示实施例中的探测报文携带的信息(即r1(0)-(0)r2(1)-(0)r3(1)-(1)r5(2)-(0)r6)相比,减少了报文携带的信息,特别在r2到r6的路径上如果有多个多路径节点(即与r2节点一样,该节点到达目的节点r6存在多条路径),则到达r6的探测报文中添加的内容更少,更有利于节省资源,如节省带宽等。
此外,与图6所示实施例相比,不用每个节点都需要向控制节点或源节点上报信息,本实施例中只有多路径节点才向控制节点或源节点上报探测数据,减轻了节点与控制器之间的交互负担。此外,由于多路径节点上报探测数据,其向下一跳节点发送的探测报文中仅携带部分探测数据,这样到达目的地r6的探测报文中添加的内容还是比图4所示实施例中到达r6的探测报文的内容少,有利于节省资源,如节省带宽等。因此,本实施例相对于上述图6所示的实施例而言,减轻了节点与控制器之间的交互负担。本实施例相对于上述图4所示的实施例,达到了节省如节省带宽等资源的效果。
另外,r2把封装了节点id和出接口2(r2(2))的探测报文从出接口2发给r4之后,r4收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r4根据指令b封装上自己的节点id、探测报文入接口id,即封装上自己的节点id(r4)、探测报文入接口id(0)。r4检查到目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r4可以通过两个下一跳节点(r5和r7)到达第一探测报文的目的地r6。在一个具体的实施方式中,可以采用ecmp、ucmp、lag技术等检查r4上是否存在到达探测报文目的地的多个出接口。r4在检查到该r4上存在到达探测报文目的地的多个出接口的情况下(本实施例中两个出接口1和2,相应的存在两个下一跳节点下一跳节点(r5和r7)到达第一探测报文的目的地r6),将封装了(r2(2)-(0)r4)的探测报文先上报给控制节点或者转发给源节点,然后将封装后的第一探测报文中的r4的入口标识和其他节点添加的探测数据删除(此实施例中为r2(2)),并删除数据后的探测报文复制n-1份(此实施例中有两个出接口因此复制1份),在复制后的n份探测报文中封装上相应的出接口信息(此实施例中是在构造的2份报文中分别封装上出接口1和出接口2),r4将封装出接口1的探测报文(r4(1))从出接口1发给r5,将封装出接口2的探测报文(r4(2))从出接口2发给r7。r5和r7分别做相应处理后将探测报文发给r6,r6收到封装有r4(1)-(0)r5(2)-(0)r6的探测报文和封装有r4(2)-(0)r7(1)-(1)r6的探测报文。同样需要说明的是,本实施例中采用以探测报文的方式向控制器或源节点上报探测数据,其他上报探测数据方式同样适用,此处不再逐一赘述。下面实施例涉及上报探测数据的场景都以上报探测报文的方式描述。
此外同样需要说明的是,上述检查出接口数量和封装本节点id(r4)以及探测报文入接口id(0)的处理并没有先后限制,可以在检查步骤后,在复制后的两份探测报文中分别封装节点id(r2)、探测报文入接口id(0),此时,仅需上报其中的一个探测报文即可,在上报其中的一个探测报文之后,再对两份探测报文中的数据进行删除,最后再在删除数据后的探测报文中封装上相应出接口标识。此外同样需要说明的是,r2在将添加了探测数据的2份探测报文上报给源节点或控制节点之后,r2也可以不将探测报文中的数据进行删除,直接继续将这2份报文分别发送至2个下一跳节点。
最终r6收到三个探测报文,r6把三个探测报文上报给控制节点或者转发给源节点。在本实施例中控制节点或者源节点一共收到5个探测报文。控制节点或源节点根据r2以及r4之前上报的报文关联r6上报的报文即可从上述报文中获得从r1到r6的3条路径的完整信息,从而还原r1到r6间的多路径拓扑。具体关联方式,例如可以通过报文中的指令c的值,或者直接通过各探测报文中携带的源地址和目的地址信息进行关联,还原r1到r6间的多路径拓扑。比如,可以将指令c的值用于指示同一对源节点的地址和目的节点的地址的所有探测报文收集在一起,然后获取收集的探测报文中的探测数据,获取的探测数据分别为:r1(0)-(0)r(2)、r2(1)-(0)r3(1)-(1)r5(2)-(0)r6、r2(2)-(0)r4、r4(1)-(0)r5(2)-(0)r6、r4(2)-(0)r7(1)-(1)r6,根据这些探测数据即可还原出图5所示的多路径拓扑。
可以理解的是,具体实现中,可以针对不同的中间节点设置是否需发送探测报文至控制节点或源节点,具体设置要求可以根据业务需要,本申请实施例不限于图6和图7所示的这两类上报方式。其中,图6所示的探测模式可以称为per-hop(逐跳)模式,图7所示的探测模式可以称为per-section(选择性跳)模式。
图8是本申请实施提供的一种路径探测方法流程图,该方法应用于需要探测从源节点到目的节点之间的最小的mtu的场景中,图8所示的实施例是通过trace模式探测路径。如图8所示,该方法包括如下几个步骤:
步骤801:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu。
步骤802:第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,探测数据包括:第一节点到第一节点的下一跳节点之间的链路上的mtu。
参考步骤403的实现方式可知,在一种具体的实现方式中,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,例如,以下以第一节点到达第一探测报文的目的地有两个下一跳节点(称之为第二节点和第三节点)为例说明。其中,第一节点通过第一端口与第二节点连接,通过第二端口与第三节点连接。在这种场景下,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点的实现过程可以为:第一节点将添加了第一节点到第二节点之间的链路上的mtu的第一探测报文通过第一端口发送至第二节点;第一节点将添加了第一节点到第三节点之间的链路上的mtu的第一探测报文通过第二端口发送至第三节点。
需要说明的是,第一节点到第一节点的下一跳节点之间的链路上的mtu还可以称为第一节点的端口的mtu或者第一节点的下一跳节点的端口的mtu。其中,第一节点的端口和第一节点的下一跳节点的端口是指连接第一节点和第一节点的下一跳节点的两个端口,这两个端口的mtu是相同的。
步骤803:第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点。
步骤804:目的节点将接收到的各个探测报文中的探测数据上报至源节点或控制节点。
上述步骤801至步骤804的实现过程基本可以参考步骤401至步骤404,只是两者添加的探测数据不同,在此就不再赘述。
下面结合图9所示的通信网络对图8所示的路径探测方法进一步解释说明。
如图9所示,源节点在探测报文里封装上自己的mtu值,如mtu(1600),把探测报文发送给r2。
中间节点r2收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据指令b或telemetry指示信息封装上需要携带的信息。具体而言,r2检查到目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地r6。在一个具体的实施方式中,可以采用ecmp、ucmp、lag技术等检查r2上是否存在到达探测报文目的地的多个出接口。r2在检查到该r2上存在到达探测报文目的地的多个出接口的情况下,将该探测报文复制n-1份(此实施例复制1份),在复制后的2份报文中分别添加mtu(1400)以及mtu(1300),然后将该2份探测报文从相应出接口发送出去。中间节点r3、r4、r5操作步骤和r2一样。
目的节点r6收到两个探测报文,两个探测报文封装的mtu值分别为mtu=1600、1400、1400、1400和mtu=1600、1300、1300、1400。目的节点r6可以把该信息上报给控制节点或者转发给源节点,控制节点或者源节点根据这收到的信息计算出r1到r6之间最小mtu值为1300。
在一种具体的实现方式中,控制节点或源节点可以根据报文中的指令c的值,或者直接通过各探测报文中携带的源地址和目的地址信息将目的节点上报的三个探测报文进行关联。比如,可以将指令c的值用于指示同一对源节点的地址和目的节点的地址的所有探测报文收集在一起,然后获取收集的探测报文中的探测数据,获取的探测数据分别为:600、1400、1400、1400和1600、1300、1300、1400,根据这些探测数据即可还原出图9所示的源节点到目的节点之间最小的mtu为1300。
另外,由于最终需要获取的是源节点到目的节点之间的最小的mtu,因此,在另一种具体的实现方式中,第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,具体为:第一节点将第一节点到第一节点的下一跳节点之间的链路上的mtu与第一探测报文中已经存在的mtu进行比较后保留最小的mtu。此时,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点,具体为:将保留最小的mtu之后的第一探测报文发送至第一节点的下一跳节点。
以第一节点到达第一探测报文的目的地有两个下一跳节点(称之为第二节点和第三节点)为例说明,这种场景下,第一节点将第一节点到第二节点之间的链路上的mtu与第一探测报文中已经存在的mtu进行比较后保留最小的mtu之后的第一探测报文发送至第二节点。第一节点将第一节点到第三节点之间的链路上的mtu与第一探测报文中已经存在的mtu进行比较后保留最小的mtu之后的第一探测报文发送至第三节点。
也即是,第一节点在添加当前收集的mtu时,会直接进行比对,保留最小的mtu即可,以减小第一探测报文的负载,从而提高传输第一探测报文的效率。
下面结合图9所示的通信网络对上述过程进一步解释说明。
如图9所示,源节点在探测报文里封装上自己的mtu值,如mtu(1600),把探测报文发送给r2。
中间节点r2收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据指令b或telemetry指示信息封装上需要携带的信息(封装时与报文中的mtu比较,小于则更改报文中的mtu,否则不改变报文中的mtu)。具体而言,r2检查到目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地r6。在一个具体的实施方式中,可以采用ecmp、ucmp、lag技术等检查r2上是否存在到达探测报文目的地的多个出接口。r2在检查到该r2上存在到达探测报文目的地的多个出接口的情况下,将该探测报文复制n-1份(此实施例复制1份),在复制后的2份报文中分别封装上需要携带的信息,在向r3发送的探测报文中将1400和探测报文中已经存在的1600进行比对之后保留1400,然后将保留1400的探测报文从相应出接口发送至r3。在向r4发送的探测报文中将1300和探测报文中已经存在的1600进行比对之后保留1300,然后将保留1300的探测报文从相应出接口发送至r4。
中间节点r3、r4、r5操作步骤和r2一样。
目的节点r6收到两个探测报文,两个探测报文封装的mtu值分别为mtu=1400和mtu=1300。目的节点r6可以把该信息上报给控制节点或者转发给源节点,控制节点或者源结点根据这收到的信息计算出r1到r6之间最小mtu值为1300。
通过本实施例中的多路径上各节点mtu的探测方法,解决了探测包冗余以及探测效率低、以及准确率不高的问题。
基于图6和图7所示的实施例可知,在探测最小的mtu时,同样可以基于per-section模式或per-hop模式由第一节点对探测到的最小的mtu进行上报,而不是由目的节点最终统一上报。下面针对这两种模式下的探测最小的mtu进一步解释说明。
图10是本申请实施提供的一种路径探测方法流程图,该方法应用于需要探测从源节点到目的节点之间的最小的mtu的场景中,图10所示的实施例是通过per-hop模式探测路径。
如图10所示,该方法包括如下几个步骤:
步骤1001:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu。
步骤1001的实现方式可以参考步骤801,在此不再详细阐述。
步骤1002:第一节点根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点。
在图10所示的实施例中,每个节点均将自身收集的mtu上报至控制节点或源节点,以减小传输探测报文所需要的带宽。
步骤1003:第一节点将接收到的第一探测报文发送至第一节点的下一跳节点。
参考步骤403的实现方式可知,在一种具体的实现方式中,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,例如,以下以第一节点到达第一探测报文的目的地有两个下一跳节点(称之为第二节点和第三节点)为例说明。其中,第一节点通过第一端口与第二节点连接,通过第二端口与第三节点连接。在这种场景下,第一节点将接收到的第一探测报文发送至第一节点的下一跳节点的实现过程可以为:第一节点通过第一端口将接收到的第一探测报文发送至第二节点;第一节点通过第二端口将接收到的第一探测报文发送至第三节点。
下面结合图9所示的通信网络对图10所示的路径探测方法进一步解释说明。
假设第一探测报文中的探测数据收集指示信息通过在指令b或者telemetry指示信息里携带待收集的具体的数据来实现,如图9所示,源节点在探测报文里封装上自己的mtu值,如mtu(1600),把探测报文发送给r2。后续以中间节点将探测数据携带在第一探测报文中进行上报为例进行说明。
中间节点r2收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据收集信息指令b或telemetry指示信息封装上需要携带的信息。具体而言,r2检查到目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地r6。在一个具体的实施方式中,可以采用ecmp、ucmp、lag技术等检查r2上是否存在到达探测报文目的地的多个出接口。r2在检查到该r2上存在到达探测报文目的地的多个出接口的情况下,r2将接收到的探测报文复制n-1份探测报文(此实施例中有两个出接口因此复制1份),在复制后的2份探测报文中分别添加mtu(1400)、mtu(1300),然后将添加了mtu的2份的探测报文先上报给控制节点或者转发给源节点。之后将2份探测报文中的已经存在mtu删除,r2分别把这两个删除mtu后的探测报文从出接口1和出接口2发送出去。需要说明的是,r2在将添加了探测数据的2份探测报文上报给源节点或控制节点之后,r2也可以不将探测报文中的数据进行删除,直接继续将这2份报文分别发送至2个下一跳节点。此外,r2在上报mtu时,也可以直接将两个mtu携带在一个探测报文中一起上报,而不是分别通过两个探测报文上报,在此不再详细说明。
r3收到探测报文后,操作步骤和r2一样,根据指令a识别出需要做多路径数据收集,节点r2根据收集信息指令b或telemetry指示信息封装上需要携带的信息。具体而言,r3检查到目的地是否有多个出接口,本实施例中r3到达目的地r6只有一个出接口,r3将mtu(1400)封装进探测报文,并将封装后的探测报文上报给源节点或控制节点。之后将探测报文中的mtu删除,并将删除后的探测报文发给r5。需要说明的是,r3在将添加了探测数据的探测报文上报给源节点或控制节点之后,r3也可以不将探测报文中的数据进行删除,直接继续将探测报文发送至r5。
r5收到探测报文后,与r3的处理类似,在检查其达到目的地r6只有一个出接口的情况下,封装上自己收集的mtu(1400),然后将该探测报文上报至控制节点或转发至源节点,之后将探测报文中的mtu删除,并将删除后的探测报文发送至r6,r5将接收到的探测报文通过出接口2发送至r6。需要说明的是,r5在将添加了探测数据的探测报文上报给源节点或控制节点之后,r5也可以不将探测报文中的数据进行删除,直接继续将探测报文发送至r6。
其余节点和r2处理类似,在收到上一跳节点发送的探测报文后将自身收集的mut上报至控制节点或转发至源节点,并将接收到的探测报文发送至下一跳节点。此处不再一一赘述。
控制节点或源节点在接收到各个节点上报的mtu之后,便可确定出源节点与目的节点之间的最小的mtu。在一种具体的实现方式中,控制节点或源节点对于接收到的多个探测报文,可以根据各个探测报文中的目的地址和源地址或探测报文中的指令c将用于探测同一源节点到目的节点的探测报文关联起来。对于关联之后的探测报文,获取各个探测报文中的mtu,根据获取的这些数据便可将目的节点到源节点之间的上的路径上的最小的mtu确定出来。
通过本实施例中的多路径上各节点mtu的探测方法,解决了探测包冗余以及探测效率低、以及准确率不高的问题。
在图10所示的实施例中,由各个中间节点中的每个中间节点将探测数据上报给源节点或控制节点。在本申请实施例中,还可以由各个中间节点中的部分中间节点来上报探测数据,其他节点则不需要上报探测数据。上报探测数据的中间节点可以为满足指定条件的中间节点,该指定条件可以为有多个可达目的节点的下一跳节点,也可以为其他指定条件。下述实施例以指定条件为有多个可达目的节点的下一跳节点为例进行解释说明。
图11是本申请实施提供的一种路径探测方法流程图,该方法应用于需要探测从源节点到目的节点之间的最小的mtu的场景中,图11所示的实施例是通过per-section模式探测路径。
如图11所示,该方法包括如下几个步骤:
步骤1101:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu。
步骤1101的实现方式可以参考步骤801,在此不再详细阐述。
步骤1102:第一节点判断第一节点是否有至少两个下一跳节点可到达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,执行根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu、以及第一探测报文中已经存在的mtu上报至通信网络中的控制节点或源节点的步骤。
在图11所示的实施例中,只有存在多个下一跳节点的节点才会将自身收集的mtu以及探测报文中已经有的上报至控制节点或源节点,以减小传输探测报文所需要的带宽。
步骤1103:第一节点将接收到的第一探测报文发送至第一节点的下一跳节点。
在一种具体的实现方式中,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,例如,以下以第一节点到达第一探测报文的目的地有两个下一跳节点(称之为第二节点和第三节点)为例说明。其中,第一节点通过第一端口与第二节点连接,通过第二端口与第三节点连接。这种场景下,第一节点将接收到的第一探测报文发送至第一节点的下一跳节点的实现过程可以为:第一节点通过第一端口将接收到的第一探测报文发送至第二节点;第一节点通过第二端口将接收到的第一探测报文发送至第三节点。
需要说明的是,在步骤1102的场景中,由于第一节点已经将收集的mtu以及报文中已经存在的mtu上报给控制节点和源节点,因此,第一节点只需向下一跳节点发送不包括mtu的第一探测报文即可。也即是,如果接收到的第一探测报文中存在mtu,则将mtu删除,然后向下一跳节点发送删除数据后的第一探测报文。如果接收的第一探测报文中不存在mtu,则将直接将接收到的第一探测报文发送至第一节点的下一跳节点。
步骤1104:在第一节点只有一个下一跳节点可到达第一探测报文的目的地的情况下,第一节点将第一节点与第一节点的下一跳节点之间的链路上的mtu添加至第一探测报文。
步骤1105:第一节点将添加了第一节点与第一节点的下一跳节点之间的链路上的mtu的第一探测报文发送至第一节点的下一跳节点。
在步骤1104的场景中,此时,第一节点向下一跳节点发送的第一节点报文中添加了自身收集的mtu。
下面以图9所示的通信网络对上述步骤1101至步骤1105进一步解释说明。
假设第一探测报文中的探测数据收集指示信息通过在指令b或者telemetry指示信息里携带待收集的具体的数据来实现,如图9所示,源节点在探测报文里封装上自己的mtu值,如mtu(1600),把探测报文发送给r2。后续以中间节点将探测数据携带在第一探测报文中进行上报为例进行说明。
中间节点r2在接收到第一探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据收集信息指令b或telemetry指示信息封装上需要携带的信息。具体而言,r2检查到目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地r6。在一个具体的实施方式中,可以采用ecmp、ucmp、lag技术等检查r2上是否存在到达探测报文目的地的多个出接口。r2在检查到该r2上存在到达探测报文目的地的多个出接口的情况下,r2将将接收到的探测报文复制n-1份探测报文(此实施例中有两个出接口因此复制1份),在复制后的2份探测报文中分别添加mtu(1400)、mtu(1300),然后将添加了mtu的2份的探测报文先上报给控制节点或者转发给源节点。之后将2份探测报文中的已经存在mtu删除,r2分别把这两个删除mtu后的探测报文从出接口1和出接口2发送出去。
需要说明的是,r2在将添加了探测数据的2份探测报文上报给源节点或控制节点之后,r2也可以不将探测报文中的数据进行删除,直接继续将这2份报文分别发送至2个下一跳节点。此外,r2在上报mtu时,也可以直接将两个mtu携带在一个探测报文中一起上报,而不是分别通过两个探测报文上报,在此不再详细说明。
当r3接收到第一探测报文时,检查其到目的地r6只有一个出接口的情况下,向第一探测报文中添加r3到r5之间的链路上的mtu=1400,并将添加了mtu之后的第一探测报文发送至节点r5。r5的处理与r3的处理方式相同,将第一探测报文中添加r5到r6之间的链路上的mtu=1400,并将添加了mtu之后的第一探测报文发送至节点r6。
节点r4接收到第一探测报文后的处理过程和节点r3的处理方式相同,r4将第一探测报文中添加r4到r5之间的链路上的mtu=1300,并将添加了mtu之后的第一探测报文发送至节点r5,r5将第一探测报文中添加r5到r6之间的链路上的mtu=1400,并将添加了mtu之后的第一探测报文发送至节点r6。
节点r6接收到两个第一探测报文,一个第一探测报文携带r3到r5之间的链路上的mtu=1400、r5到r6之间的链路上的mtu=1400,另一个第一探测报文携带r4到r5之间的链路上的mtu=1300、r5到r6之间的链路上的mtu=1400。节点r6可以将这些数据上报至源节点或控制节点,由源节点或控制节点分析源节点到目的节点之间的路径上的最小的mtu。源节点或控制节点分析源节点到目的节点之间的路径上的最小的mtu具体方式参考上述实施例中的描述,这里不再赘述。
与上述图8所示实施例中的探测报文携带的信息(路径上的全部mtu)相比,本实施例减少了探测报文携带的信息,特别在r2到r6的路径上如果有多个多路径节点(即与r2节点一样,该节点到达目的节点r6存在多条路径),则到达r6的探测报文中添加的内容更少,更有利于节省资源,如节省带宽等。
此外,与图10所示实施例相比,不用每个节点都需要向控制节点或源节点上报信息,本实施例中只有多路径节点才向控制节点或源节点上报探测数据,减轻了节点与控制器之间的交互负担。此外,由于多路径节点上报探测数据,其向下一跳节点发送的探测报文中仅携带部分探测数据,这样到达目的地r6的探测报文中添加的内容还是比图8所示实施例中到达r6的探测报文的内容少,有利于节省资源,如节省带宽等。因此,本实施例相对于上述图10所示的实施例而言,减轻了节点与控制器之间的交互负担。本实施例相对于上述图8所示的实施例,达到了节省如节省带宽等资源的效果。
上述图10和图11的详细实现方式基本可以分别参考图6和图7所示的实现方式,在此就不再详细说明。
通过本实施例中的多路径上各节点mtu的探测方法,解决了探测包冗余以及探测效率低、以及准确率不高的问题。
图12是本申请实施提供的一种路径探测方法流程图,该方法应用于需要探测从源节点到目的节点之间的路径上的时延值的场景中,图12所示的实施例是通过trace模式探测路径。
如图12所示,该方法包括如下几个步骤:
步骤1201:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,待收集的探测数据的类型为从源节点到目的节点之间的路径上的时延值。
步骤1202:第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。
第一节点在接收到第一探测报文时,可以将第一节点的标识、接收第一探测报文的入口的标识,接收第一探测报文的时间戳,发送第一探测报文的出口的标识,发送第一探测报文的时间戳添加在第一探测报文中,然后在通过某个出口发送第一探测报文。
步骤1203:第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点。
在一种具体的实现方式中,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,例如,以下以第一节点到达第一探测报文的目的地有两个下一跳节点(称之为第二节点和第三节点)为例说明。其中,第一节点通过第一端口与第二节点连接,通过第二端口与第三节点连接,其中,第一端口的标识为第一出口标识,第二端口的标识为第二出口标识。在这种场景下,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点的实现过程可以为:第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识,接收第一探测报文的时间戳、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的的第一探测报文发送至第二节点;第一节点将添加了第一节点的标识、接收第一探测报文的入口的标识,接收第一探测报文的时间戳、发送第一探测报文的第二出口标识、以及从第二出表标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点。
也即是,在第一节点上存在到达第一探测报文的目的地的至少两个下一跳节点的情况下,第一节点需要对第一探测报文进行复制,以实现向每个下一跳节点发送第一探测报文,从而避免遗漏掉源节点和目的节点之间的路径。
下一跳节点在接收到第一探测报文时,同样可以参考步骤1201至步骤1203继续收集探测数据并转发第一探测报文,直至目的节点接收到第一探测报文。
步骤1204:目的节点将接收到的各个探测报文中的探测数据上报至源节点或控制节点。
在一种具体的实现方式中,目的节点可直接修改接收到的各个第一探测报文的目的地址,以将接收到的各个第一探测报文上报给通信网络中的控制节点或源节点,由控制节点或源节点根据接收到的第一探测报文中携带的各个节点添加的探测数据分析源节点和目的节点之间的路径上的时延值。在另一种具体的实现方式中,目的节点也可以将接收到的各个第一探测报文中携带的各个节点添加的探测数据上报给通信网络中的控制节点或源节点,由控制节点或源节点根据各个节点添加的探测数据分析源节点和目的节点之间的路径上的时延值。可以理解的是,还可以采用其他报文格式将探测数据上报至控制节点(例如,控制节点和目的节点之间的的交互报文)或源节点。
其中,控制节点或源节点对于接收到的多个探测报文,可以根据各个探测报文中的目的地址和源地址或探测报文中的指令c将用于探测同一源节点到目的节点的探测报文关联起来。对于关联之后的探测报文中的探测数据,先根据探测数据中的节点标识、节点入口标识以及节点入口标识还原出源节点到目的节点之间的多路径拓扑。对于多路径拓扑中任意相邻的两个节点,根据探测数据中与这两个节点对应的时间戳,即可确定出探测报文在每个节点的时延值,以及在这两个节点之间的链路上的时延值。
下面以图13所示的通信网络对上述步骤1201至步骤1204进一步解释说明。
假设第一探测报文中的探测数据收集指示信息通过在指令b或者telemetry指示信息里携带待收集的具体的数据来实现。源节点在探测报文里封装上自己的节点id(r1)以及转发探测报文的出接口id(0),以及发送探测报文的时间戳t2,并将封装后的探测报文转发给中间节点r2。
中间节点r2收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据收集信息指令b或者telemetry指示信息封装上需要携带的信息。具体而言,r2检查到目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地r6。在一个具体的实施方式中,可以采用ecmp、ucmp、lag技术等检查r2上是否存在到达探测报文目的地的多个出接口。r2在检查到该r2上存在到达探测报文目的地的多个出接口的情况下,将该探测报文复制n-1份(此实施例复制1份),在复制后的n份报文中封装上节点id(r2),探测报文入接口id(0),接收探测报文的时间戳t1,相应的出接口id以及相应的发送探测报文的时间戳。本实施例中是在其中一份复制的报文里分别封装上节点id(r2),探测报文入接口id(0),探测报文入节点时间戳t1,出接口1,出节点时间戳t2,在另外一份复制的报文里分别封装上节点id(r2),探测报文入接口id(0),探测报文入节点时间戳t1,出接口2,发送探测报文的时间戳t2。r2分别把封装出接口1的报文从出接口1发送出去,把封装出接口2的报文从出接口2发送出去。此实施例中两个报文中的t2不一定相同,t2是指探测报文离开该节点转发接口的时间戳。另外,每个节点的t1和t2也不一样。
发往r3的探测报文经过r3、r5并封装上相应的信息最后发给目的节点r6,探测报文里的信息为r1(0&t2)-(0&t1)r2(1&t2)-(0&t1)r3(1&t2)-(1&t1)r5(2&t2)-(0&t1)r6。
发往r4的探测报文经过r4、r5并封装上相应的信息最后发给目的节点r6,最终r6收到探测报文的内容为r1(0&t2)-(0&t1)r2(2&t2)-(0&t1)r4(1&t2)-(0&t1)r5(2&t2)-(0&t1)r6。
最终r6收到两个探测报文,目的节点r6可以把这两个探测报文修改目的地址之后上报给控制节点或者转发给源节点,控制节点或者源结点根据接收到的探测报文计算出r1到r6之间的时延。如图13所示,源节点或控制节点根据收到的信息确定出r1到r2的时延值为5ms(毫秒),r2到r3的时延值为5ms(毫秒),r3到r5的时延值为5ms(毫秒),r5到r6的时延值为5ms(毫秒),r2到r4的时延值为15ms(毫秒),r4到r5的时延值为5ms(毫秒)。
其中,控制节点或源节点对于接收到的探测报文,可以根据各个探测报文中的目的地址和源地址或探测报文中的指令c将用于探测同一源节点到目的节点的探测报文关联起来。对于关联之后的探测报文,获取各个探测报文中节点标识、节点入口标识,接收报文的时间戳以及节点出口标识、发送报文的时间戳,根据获取的这些数据便可将目的节点到源节点之间路径上的时延确定出来。
通过本实施例中的多路径上时延值的探测方法,解决了探测包冗余以及探测效率低、以及准确率不高的问题。
在图12所示的实施例中,由目的节点统一将各个中间节点添加在第一探测报文中的探测数据上报至源节点或控制节点。在本申请实施例中,也可以由各个中间节点将探测数据上报给源节点或控制节点。下述实施例用于对此进行解释说明。
图14是本申请实施提供的一种路径探测方法流程图,该方法同样应用于需要探测从源节点到目的节点之间的路径上的时延值的场景中,图14所示的实施例是通过per-hop模式探测路径。如图14所示,该方法包括如下几个步骤:
步骤1401:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,待收集的探测数据的类型为从源节点到目的节点之间的路径上的时延值。
步骤1401的实现方式可以参考步骤1201,在此不再详细阐述。
步骤1402:第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,探测数据包括:第一节点的标识、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。
在步骤1402中,第一节点将自身的标识、发送探测报文的出口的标识以及发送探测报文的时间戳添加在第一探测报文中。将自身的标识、入口标识以及发送探测报文的时间戳、以及第一节点的上一跳节点添加的探测数据等数据直接通过步骤1404上报给源节点或控制节点,如此,可以减小探测报文的负载,从而提高转发探测报文的效率。
步骤1403:第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点。
由于在此实施例中,第一节点需要向源节点或控制节点上报探测数据,因此,在一种具体的实现方式中,在第一节点有至少两个下一跳节点可到达第一探测报文的目的地的情况下,例如,以下以第一节点到达第一探测报文的目的地有两个下一跳节点(称之为第二节点和第三节点)为例说明。其中,第一节点通过第一端口与第二节点连接,通过第二端口与第三节点连接,其中,第一端口的标识为第一出口标识,第二端口的标识为第二出口标识。在这种场景下,第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点的实现过程可以为:第一节点将添加了第一节点的标识,发送第一探测报文的第一出口标识,以及发送第一探测报文的时间戳的第一探测报文通过第一端口发送至第二节点;第一节点将添加了第一节点的标识,发送第一探测报文的第二出口标识,以及发送第一探测报文的时间戳的的第一探测报文通过第二端口发送至第三节点。
步骤1404:第一节点将第一节点的标识、接收第一探测报文的入口的标识,接收第一探测报文的时间戳、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。
通过步骤1404便可实现第一节点将探测数据上报给控制节点或源节点。
可以理解的是,该多路径节点上报控制节点或源节点的方案也可以参考上述图6所示的实施例中的探测从源节点到目的所有路径拓扑的方案中。具体的处理过程和原理相似,这里不再逐一赘述。区别在于在图14所示的实施例中,在上报数据中新增了接收到探测报文的时间戳,在发送至下一跳节点的添加的数据中新增了发送探测报文的时间戳。
下面以图13所示的通信网络对上述步骤1401至步骤1405进一步解释说明。
假设第一探测报文中的探测数据收集指示信息通过在指令b或者telemetry指示信息里携带待收集的具体的数据来实现,则源节点在探测报文里封装上自己的节点id(r1)、转发探测报文的出接口id(0)以及发送探测报文的时间戳(t2),并将封装后的探测报文转发给中间节点r2。后续以各个中间节点将探测数据携带在第一探测报文中进行上报为例进行说明。
中间节点r2收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据收集信息指令b或telemetry指示信息封装上需要携带的信息即封装上自己的节点id(r2)、探测报文入接口id(0)、接收探测报文的时间戳(t1)。r2检查到达第一探测报文的目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地。在一个具体的实施方式中,可采用以ecmp、ucmp、lag技术等来检查多个出接口。r2将封装了(r1(0&t2)-(0&t1)r2)的第一探测报文上报给控制节点或者转发给源节点,然后将封装后的第一探测报文中的r2的入口标识和其他节点添加的探测数据删除(此实施例中为r1(0&t2)),并将删除数据后的探测报文复制n-1份探测报文(此实施例中有两个出接口因此复制1份),在复制后的n份探测报文中分别封装上相应的出接口的标识以及发送探测报文的时间戳(此实施例中是在2份复制的报文上其中一份报文封装上出接口1的标识和从出接口1发送探测报文的时间戳,另一份报文中封装上出接口2的标识以及从出接口2发送探测报文的时间戳)。然后,r2分别把封装了节点id、出接口1以及从出接口1发送探测报文的时间戳(r2(1&t2))的探测报文从出接口1发给r3,把封装了节点id、出接口2从出接口2发送探测报文的时间戳(r2(2&t2))的探测报文从出接口2发给r4。
需要说明的是,本实施例中采用以探测报文的方式向控制器或源节点上报探测数据,其他上报探测数据方式同样适用,此处不再逐一赘述。下面实施例涉及上报探测数据的场景都以上报探测报文的方式描述。此外,需要说明的是,上述检查出接口数量、以及封装本节点id(r2)以及探测报文入接口id和接收报文的时间戳(0&t1)的处理并没有先后限制,可以在检查步骤后,在两份探测报文中分别封装节点id(r2)、探测报文入接口id(0)以及接收报文的时间戳,此时,仅需上报其中的一个探测报文即可,在上报其中的一个探测报文之后,再对两份探测报文中的数据进行删除,最后再在删除数据后的探测报文中封装上相应出接口标识和发送报文的时间戳。此外需要说明的是,r2在将添加了探测数据的2份探测报文上报给源节点或控制节点之后,r2也可以不将探测报文中的数据进行删除,直接继续将这2份报文分别发送至2个下一跳节点。
r3收到封装有r2(1&t2)探测报文后,操作步骤和r2一样,封装上自己的节点id、入接口id以及接收报文的时间戳,将封装了r2(1&t2)-(0&t1)r3的报文上报给控制节点或者转发给源节点,并检查到目的地是否有多个出接口(本实施例中r3到达目的地r6只有一个出接口),也即是,r3可以通过一个下一跳节点(r5)到达第一探测报文的目的地。r3删除探测报文中r2封装进去的数据(r2(1&t2)和自身已经封装进去的入接口的标识和接收报文的时间戳,然后再封装上自己的出接口标识r3(1)以及发送探测报文的时间戳t2,发送封装了该r3(1&t2)的探测报文给r5。
r5收到的探测报文仅包含r3的信息,即r3(1&t2),r5封装上自己的节点id(r5)、探测报文入接口id(0)以及接收探测报文的时间戳t1,然后将封装了r3(1&t2)-(1&t1)r5的探测报文上报至控制节点或转发至源节点。r5检查到达第一探测报文中的目的地址是否有多个出接口(本实施例中只有一个出接口),也即是,r5可以通过一个下一跳节点(r6)到达第一探测报文的目的地。r5删除探测报文中r3封装进入的数据(r3(1&t2))和自身已经封装进去的入接口的标识(1)和接收报文的时间戳,然后再封装上自己出接口的标识(2)和发送报文的时间戳,发送封装了该r5(2&t2)的探测报文给r6。
其余节点和r2处理类似,在收到上一跳节点发送的探测报文后将添加了自身的节点标识和入接口标识、接收报文的时间戳后上报至控制节点或转发至源节点,然后删除入接口标识、接收报文的时间戳以及其他节点添加的探测数据,并在删除数据后的第一探测报文中封装上出口标识、发送报文的时间戳,将最后封装后的第一探测报文发送至下一跳节点。此处不再一一赘述。
r6收到两个探测报文(分别来自于r3,r4),内容均为r5(2&t2)-(0&t1)r6。r6把两个探测报文上报给控制节点或者转发给源节点。
控制节点或者源节点一共收到7个探测报文:携带的内容分别为r1(0&t2)-(0&t1)r2,r2(1&t2)-(0&t1)r3,r2(2&t2)-(0&t1)r4,r3(1&t2)-(0&t1)r5,r4(1&t2)-(0&t1)r5,r5(2&t2)-(0&t1)r6,r5(2&t2)-(0&t1)r6,则可分析r1到r6间的多路径拓扑上的时延值。具体方式参考上述实施例,此处不再赘述。
其中,控制节点或源节点对于接收到的多个探测报文,可以根据各个探测报文中的目的地址和源地址或探测报文中的指令c将用于探测同一源节点到目的节点的探测报文关联起来。对于关联之后的探测报文中的探测数据,先根据探测数据中的节点标识、节点入口标识以及节点入口标识还原出源节点到目的节点之间的多路径拓扑。对于多路径拓扑中任意相邻的两个节点,根据探测数据中与这两个节点对应的时间戳,即可确定出探测报文在每个节点的时延值,以及在这两个节点之间的链路上的时延值。
通过本实施例中的多路径上时延值的探测方法,解决了探测包冗余以及探测效率低、以及准确率不高的问题。
在图14所示的实施例中,由各个中间节点中的每个中间节点将探测数据上报给源节点或控制节点。在本申请实施例中,还可以由各个中间节点中的部分中间节点来上报探测数据,其他节点则不需要上报探测数据。上报探测数据的中间节点可以为满足指定条件的中间节点,该指定条件可以为有多个可达目的节点的下一跳节点,也可以为其他指定条件。下述实施例以指定条件为有多个可达目的节点的下一跳节点为例进行解释说明。
图15是本申请实施提供的一种路径探测方法流程图,该方法同样应用于需要探测从源节点到目的节点之间的路径上的时延值的场景中,图15所示的实施例是通过per-section模式探测路径。如图15所示,该方法包括如下几个步骤:
步骤1501:第一节点接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,待收集的探测数据的类型为从源节点到目的节点之间的路径上的时延值。
步骤1501的实现方式可以参考步骤1401,在此不再详细阐述。
步骤1502:第一节点根据多路径探测指示信息以及探测数据收集指示信息添加探测数据至第一探测报文,探测数据包括第一节点的标识、发送第一探测报文的出口标识,发送第一探测报文的时间戳。
步骤1502的实现方式可以参考步骤1402,在此不再详细阐述。
步骤1503:第一节点将添加了探测数据的第一探测报文发送至第一节点的下一跳节点。
步骤1503的实现方式可以参考步骤1403,在此不再详细阐述。
步骤1504:第一节点判断第一节点是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点存有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
在本实施例中,只有在第一节点存在多个下一跳节点的情况下才会执行步骤1504和步骤1505所示的上报步骤以及步骤1502至步骤1503所示的转发第一探测报文的步骤,否则第一节点就执行步骤1202和步骤1203所示的添加探测数据和转发第一探测报文的步骤。
可以理解的是,该多路径节点上报控制节点或源节点的方案也可以参考上述图7所示的实施例中中的探测从源节点到目的所有路径拓扑的方案中。具体的处理过程和原理相似,这里不再逐一赘述。区别在于在图15所示的实施例中,在上报数据中新增了接收到探测报文的时间戳,在发送至下一跳节点的添加的数据中新增了发送探测报文的时间戳。
下面以图13所示的通信网络对上述步骤1501至步骤1504进一步解释说明。
假设第一探测报文中的探测数据收集指示信息通过在指令b或者telemetry指示信息里携带待收集的具体的数据来实现,则源节点在探测报文里封装上自己的节点id(r1)、转发探测报文的出接口id(0)以及发送探测报文的时间戳(t2),并将封装后的探测报文转发给中间节点r2。后续以各个中间节点将探测数据携带在第一探测报文中进行上报为例进行说明。
中间节点r2收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r2根据收集信息指令b或telemetry指示信息封装上需要携带的信息即封装上自己的节点id(r2)、探测报文入接口id(0)、接收探测报文的时间戳(t1)。r2检查到达第一探测报文的目的地址存在多路径,即有n(n>1)个出接口(此实施例有2个出接口),也就是说,r2可以通过两个下一跳节点(r3和r4)到达第一探测报文的目的地。在一个具体的实施方式中,可采用以ecmp、ucmp、lag技术等来检查多个出接口。r2将封装了(r1(0&t2)-(0&t1)r2)的第一探测报文上报给控制节点或者转发给源节点,然后将封装后的第一探测报文中的r2的入口标识和其他节点添加的探测数据删除(此实施例中为r1(0&t2)),并将删除数据后的探测报文复制n-1份探测报文(此实施例中有两个出接口因此复制1份),在复制后的n份探测报文中分别封装上相应的出接口的标识以及发送探测报文的时间戳(此实施例中是在2份复制的报文上其中一份报文封装上出接口1的标识和从出接口1发送探测报文的时间戳,另一份报文中封装上出接口2的标识以及从出接口2发送探测报文的时间戳)。然后,r2分别把封装了节点id、出接口1以及从出接口1发送探测报文的时间戳(r2(1&t2))的探测报文从出接口1发给r3,把封装了节点id、出接口2从出接口2发送探测报文的时间戳(r2(2&t2))的探测报文从出接口2发给r4。需要说明的是,本实施例中采用以探测报文的方式向控制器或源节点上报探测数据,其他上报探测数据方式同样适用,此处不再逐一赘述。下面实施例涉及上报探测数据的场景都以上报探测报文的方式描述。此外,需要说明的是,上述检查出接口数量、以及封装本节点id(r2)以及探测报文入接口id和接收报文的时间戳(0&t1)的处理并没有先后限制,具体实现方式可以参考图14所示的实施例,在此不再赘述。此外需要说明的是,r2在将添加了探测数据的2份探测报文上报给源节点或控制节点之后,r2也可以不将探测报文中的数据进行删除,直接继续将这2份报文分别发送至2个下一跳节点。
r3收到探测报文后,根据指令a识别出需要做多路径数据收集,节点r3根据指令b封装上自己的节点id、探测报文入接口id以及接收探测报文的时间戳,并在检查到达探测报文到目的地只有一个出接口(即只存在一个下一跳节点到达探测报文到目的地),则不进行探测数据的上报而直接封装上出接口id和发送探测报文的时间戳后,把封装了(r2(1&t2)-(0&t1)r3(1&t2))探测报文发给r5。同样需要说明的是,上述检查出接口数量、封装本节点id(r3)、探测报文入接口id(0)和接收探测报文的时间戳的处理并没有先后限制,可以在检查步骤后,在探测报文中封装节点id(r3)以及入接口id以及接收探测报文的时间戳。
r5接收到报文后,由于r5到达目的节点也只有一个下一跳节点,因此r5做和r3同样的操作步骤后把封装了(r2(1&t2)-(0&t1)r3(1&t2)-(1&t1)r5(2&t2))探测报文发给目的节点r6。
r6接收到的探测报文后,将自身的id、探测报文入接口的id以及接收探测报文的时间戳封装到探测报文中,探测报文中最终封装的信息为r2(1&t2)-(0&t1)r3(1&t2)-(1&t1)r5(2&t2)-(0&t1)r6。
其余节点(r4和r5)和r3处理类似,由于r4和r5都只有一个下一跳节点,因此他们在收到上一跳节点发送的探测报文后直接在探测报文中添加自身的节点标识、入接口标识、接收报文的时间戳后、出接口标识、发送探测报文的时间戳,然后将添加探测数据后的探测报文发送至下一跳节点。此处不再一一赘述。
最终r6收到两个探测报文,r6把两个探测报文上报给控制节点或者转发给源节点。在本实施例中控制节点或者源节点一共收到三个探测报文。控制节点或源节点根据r2之前上报的探测报文(该探测报文中携带的探测数据为r1(0&t2)-(0&t1)r2)关联r6上报的两个探测报文(这两个探测报文中携带的探测数据分别为r2(1&t2)-(0&t1)r3(1&t2)-(1&t1)r5(2&t2)-(0&t1)r6、r2(2&t2)-(0&t1)r4(1&t2)-(0&t1)r5(2&t2)-(0&t1)r6),即可从上这三个探测报文中获得从r1到r6的3条路径的完整信息以及路径上各个节点之间的时延值。
其中,控制节点或源节点对于接收到的多个探测报文,可以根据各个探测报文中的目的地址和源地址或探测报文中的指令c将用于探测同一源节点到目的节点的探测报文关联起来。对于关联之后的探测报文中的探测数据,先根据探测数据中的节点标识、节点入口标识以及节点入口标识还原出源节点到目的节点之间的多路径拓扑。对于多路径拓扑中任意相邻的两个节点,根据探测数据中与这两个节点对应的时间戳,即可确定出探测报文在每个节点的时延值,以及在这两个节点之间的链路上的时延值。
与上述图12所示实施例中的探测报文携带的信息相比,本实施例减少了报文携带的信息,特别在r2到r6的路径上如果有多个多路径节点(即与r2节点一样,该节点到达目的节点r6存在多条路径),则到达r6的探测报文中添加的内容更少,更有利于节省资源,如节省带宽等。
此外,与图14所示实施例相比,不用每个节点都需要向控制节点或源节点上报信息,本实施例中只有多路径节点才向控制节点或源节点上报探测数据,减轻了节点与控制器之间的交互负担。此外,由于多路径节点上报探测数据,其向下一跳节点发送的探测报文中仅携带部分探测数据,这样到达目的地r6的探测报文中添加的内容还是比图12所示实施例中到达r6的探测报文的内容少,有利于节省资源,如节省带宽等。因此,本实施例相对于上述图14所示的实施例而言,减轻了节点与控制器之间的交互负担。本实施例相对于上述图12所示的实施例,达到了节省如节省带宽等资源的效果。
通过本实施例中的多路径上时延值的探测方法,解决了探测包冗余以及探测效率低、以及准确率不高的问题。
图16是本申请实施例提供的一种网络设备的结构示意图,该网络设备可以为上述图2-15所示实施例中的第一节点1600。该网络设备1600可以为交换机,路由器或者其他转发报文的网路设备。在该实施例中,该网络设备1600包括:主控板1610、接口板1630和接口板1640。多个接口板的情况下可以包括交换网板(图中未示出),该交换网板用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。
主控板1610用于完成系统管理、设备维护、协议处理等功能。接口板1630和1640用于提供各种业务接口(例如,pos接口、ge接口、atm接口等),并实现报文的转发。主控板1610上主要有3类功能单元:系统管理控制单元、系统时钟单元和系统维护单元。主控板1610、接口板1630以及接口板1640之间通过系统总线与系统背板相连实现互通。接口板1630上包括一个或多个处理器1631。处理器1631用于对接口板进行控制管理并与主控板上的中央处理器进行通信,以及用于报文的转发处理。接口板1630上的存储器1632用于存储转发表项,处理器1631通过查找存储器1632中存储的转发表项进行报文的转发。
所述接口板1630包括一个或多个网络接口1633用于接收上一跳节点发送的探测报文,并根据处理器1631的指示向下一跳网络节点发送处理后的探测报文。具体实现过程可以参考图2所示实施例中的202、203以及205步骤,图4所示实施例中的401、403和404步骤,图6所示实施例中的601和603步骤,图7所示实施例中的701和703步骤,图8所示实施例中的801和803步骤,图10所示实施例中的1001和1003步骤,图11所示实施例中的1101和1103步骤,图12所示实施例中的1201和1203步骤,图14所示实施例中的1401和1403步骤,以及图15所示实施例中的1501和1503步骤。这里不再逐一赘述。
所述处理器1631用于执行图2-15所示实施例中所描述的第一节点的处理步骤和功能,具体可以参看上述图2所示实施例中的201(作为源节点时的处理)或204步骤(作为中间节点时的处理),图4所示实施例中的402步骤,图6所示实施例中的602,以及604-605步骤,图7所示实施例中的702和704步骤,图8所示实施例中的802步骤,图10所示实施例中的1002步骤,图11所示实施例中的1102以及1104步骤,图12所示实施例中的1202步骤,图14所示实施例中的1402以及1404步骤,以及图15所示实施例中的1502步骤以及1504步骤。这里不再逐一赘述。
可以理解,如图16所示,本实施例中包括多个接口板,采用分布式的转发机制,这种机制下,接口板1640上的操作与所述接口板1630的操作基本相似,为了简洁,不再赘述。此外,可以理解的是,图16中的接口板1630中的处理器1631和/或1641可以是专用硬件或芯片,如网络处理器或者专用集成电路(applicationspecificintegratedcircuit)来实现上述功能,这种实现方式即为通常所说的转发面采用专用硬件或芯片处理的方式。采用网络处理器这一专用硬件或芯片的具体实现方式可以参考下面图17所示的实施例。在另外的实施方式中,所述处理器1631和/或1641也可以采用通用的处理器,如通用的cpu来实现以上描述的功能。
此外,需要说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,该设备的数据处理能力越强,提供的接口板越多。多块接口板的情况下,该多块接口板之间可以通过一块或多块交换网板通信,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,该设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,该设备包括多块接口板,可以通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
具体的实施例中,存储器1632可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1632可以是独立存在,通过通信总线与处理器1631相连接。存储器1632也可以和处理器1631集成在一起。
其中,存储器1632用于存储程序代码,并由处理器1631来控制执行,以执行上述实施例所提供的路径探测方法。处理器1631用于执行存储器1632中存储的程序代码。程序代码中可以包括一个或多个软件模块。这一个或多个软件模块可以为下面图19、图20或图21任一实施例中提供的软件模块。
具体实施例中,所述网络接口1633,可以是使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(radioaccessnetworkran),无线局域网(wirelesslocalareanetworks,wlan)等。
图17是本申请实施例提供的另一种网络设备的结构示意图,该网络设备可以为上述图2-15所示实施例中的第一节点1700。该网络设备1700可以为交换机,路由器或者其他转发报文的网路设备。在该实施例中,该网络设备1700包括:主控板1710、接口板1730、交换网板1720和接口板1740。主控板1710用于完成系统管理、设备维护、协议处理等功能。交换网板1720用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。接口板1730和1740用于提供各种业务接口(例如,pos接口、ge接口、atm接口等),并实现数据包的转发。控制平面由主控板1710的各管控单元及接口板530和540上的管控单元等构成。主控板510上主要有3类功能单元:系统管理控制单元、系统时钟单元和系统维护单元。主控板1710、接口板1730和1740,以及交换网板1720之间通过系统总线与系统背板相连实现互通。接口板1730上的中央处理器1731用于对接口板进行控制管理并与主控板上的中央处理器进行通信。接口板1730上的转发表项存储器1734用于存储转发表项,网络处理器1732通过查找转发表项存储器1734中存储的转发表项进行报文的转发。
所述接口板1730的物理接口卡1733用于接收上一跳节点发送的探测报文。具体实现过程可以参考图2所示实施例中的203步骤,图4所示实施例中的401步骤,图6所示实施例中的601步骤,图7所示实施例中的701步骤,图8所示实施例中的801步骤,图10所示实施例中的1001步骤,图11所示实施例中的1101步骤,图12所示实施例中的1201步骤,图14所示实施例中的1401以及1402步骤,以及图15所示实施例中的1501步骤以及1504步骤。这里不再逐一赘述。
所述网络处理器1732用于执行图2-15所示实施例中所描述的第一节点的处理步骤和功能,具体可以参看上述图2所示实施例中的201(作为源节点时的处理)或204步骤(作为中间节点时的处理),图4所示实施例中的402步骤,图6所示实施例中的602以及604-605步骤,图7所示实施例中的702和704步骤,图8所示实施例中的802步骤,图10所示实施例中的1002步骤,图11所示实施例中的1102以及1104步骤,图12所示实施例中的1202步骤,图14所示实施例中的1402以及1404步骤,以及图15所示实施例中的1502以及1504步骤。这里不再逐一赘述。
然后,添加了探测数据的探测报文通过所述物理接口卡1733向该第一节点的下一跳节点发送。具体可以参考图2所示实施例中的205步骤,图4所示实施例中的403以及404步骤,图6所示实施例中的603步骤,图7所示实施例中的703步骤,图8所示实施例中的803以及804步骤,图10所示实施例中的1003步骤,图11所示实施例中的1103步骤,图12所示实施例中的1203以及1204步骤,图14所示实施例中的1403步骤,以及图15所示实施例中的1503步骤。这里不再逐一赘述。
可以理解,如图17所示,本实施例中包括多个接口板,采用分布式的转发机制,这种机制下,接口板1740上的操作与所述接口板1730的操作基本相似,为了简洁,不再赘述。此外,如上所述,图17中的网络处理器1732以及1742的功能可以用专用集成电路(applicationspecificintegratedcircuit)替换来实现。
此外,需要说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,该设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,该设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,该设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
图18是本申请实施例提供的一种上述图17所示网络设备中的接口板1800的结构示意图,该接口板1800所在的网络设备可以为上述图2-15所示实施例中的第一节点。该接口板1800可以包括物理接口卡(physicalinterfacecard,pic)1830,网络处理器(networkprocessor,np)1810,以及流量管理模块(trafficmanagement)1820。
其中,pic:物理接口卡(physicalinterfacecard),用于实现物理层的对接功能,原始的流量由此进入网络设备的接口板,以及处理后的报文从该pic卡发出。
网络处理器np1810用于实现报文的转发处理。具体而言,上行报文的处理包括:报文入接口的处理,时间戳的获取(应用于上述图12-15所示实施例中),上行流分类,转发表查找,测量信息封装(如上述实施例中的探测数据的封装),报文复制处理(如上述实施例中涉及多个下一跳节点的报文复制处理);下行报文的处理:转发表查找,下行流分类,时间戳获取(应用于上述图12-15所示实施例中),测量信息封装(如上述实施例中的探测数据的封装),出接口处理等等。
流量管理tm,用于实现qos、线速转发、大容量缓存,队列管理等功能。具体而言,上行流量管理包括:上行qos处理(如拥塞管理和队列调度等)以及切片处理;下行流量管理包括:组包处理,多播复制,以及下行qos处理(如拥塞管理和队列调度等)。
可以理解的是,若网络设备有多个接口板1800的情况下,多个接口板1800之间可以通过交换网1840通信。
需要说明的是,图18仅示出了np内部的示意性处理流程或模块,具体实现中各模块的处理顺序不限于此,而且实际应用中可以根据需要部署其他模块或者处理流程。本申请实施例对比不做限制。
参见图19,本申请实施例提供了一种通信网络中的第一节点1900,该第一节点1900可以为上述图2-9以及图12-15所示实施例中的第一节点。该第一节点1900可以为交换机,路由器或者其他转发报文的网路设备。该通信网络包括源节点、一个或多个中间节点、以及目的节点,第一节点为一个或多个中间节点中的任一个中间节点;第一节点1900包括:
接收模块1901,用于接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型。具体实现过程请参考图2所示实施例中的步骤203、图4所示实施例中的步骤401、图6所示实施例中的步骤601、图7所示实施例中的步骤701、图8所示实施例中的步骤801、图12所示实施例中的步骤1201、图14所示实施例中的步骤1401、图15所示实施例中的步骤1501,这里不再赘述。
添加模块1902,用于根据所述多路径探测指示信息以及所述探测数据收集指示信息添加探测数据至所述第一探测报文;具体实现过程请参考图2所示实施例中的步骤204、图4所示实施例中的步骤402、图6所示实施例中的步骤602、图7所示实施例中的步骤702、图8所示实施例中的步骤802、图12所示实施例中的步骤1202、图14所示实施例中的步骤1402、图15所示实施例中的步骤1502,这里不再赘述。
发送模块1903,用于将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点;具体实现过程请参考图2所示实施例中的步骤205、图4所示实施例中的步骤403、图6所示实施例中的步骤603、图7所示实施例中的步骤703、图8所示实施例中的步骤803、图12所示实施例中的步骤1203、图14所示实施例中的步骤1403、图15所示实施例中的步骤1503。
可选地,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号;探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块,用于:
将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;
将添加了第一节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
可选地,待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率的情况下,探测数据包括第一节点的标识以及发送第一探测报文的出口标识,其中,在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一探测报文还包括报文序列号;
第一节点还包括:
上报模块,用于在待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点;
上报模块,还用于在待收集的探测数据的类型包括从源节点到目的节点之间的路径上的丢包率的情况下,第一节点将第一节点的标识、接收第一探测报文的入口的标识、第一节点的上一跳节点添加的探测数据、以及报文中序列号上报至通信网络中的控制节点或源节点。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块,用于:
将添加了第一节点的标识以及发送第一探测报文的第一出口标识的第一探测报文发送至第二节点,第一节点通过发送第一探测报文的第一出口标识所标识的第一端口与第二节点连接;
将添加了第一节点的标识以及发送第一探测报文的第二出口标识的第一探测报文发送至第三节点,第一节点通过发送第一探测报文的第二出口标识所标识的第二端口与第三节点连接。
可选地,上报模块,用于判断第一节点上是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu的情况下,前述添加模块具体用于:将第一节点到第一节点的下一跳节点之间的链路上的mtu与第一探测报文中已经存在的mtu进行比较后保留最小的mtu。此时,前述发送模块,具体用于:将保留最小的mtu之后的第一探测报文发送至第一节点的下一跳节点。
可选地,在第一节点上存在到达第一探测报文的目的地的至少两个下一跳节点的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块用于:
将添加了第一节点到第二节点之间的链路上的mtu的第一探测报文通过第一端口发送至第二节点,第一节点通过第一端口与第二节点连接;
将添加了第一节点到第三节点之间的链路上的mtu的第一探测报文通过第二端口发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,在待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu的情况下,探测数据包括:第一节点到源节点之间的路径上的最小的mtu。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值;探测数据包括:第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块用于:
将添加了第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;
将添加了第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的第二出口标识、以及从第二出表标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径上的时延值;探测数据包括:第一节点的标识、发送第一探测报文的出口标识、以及发送第一探测报文的时间戳;
第一节点还包括上报模块,用于将第一节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、以及第一节点的上一跳节点添加的探测数据上报至通信网络中的控制节点或源节点。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块用于:
将添加了第一节点的标识、发送第一探测报文的第一出口标识、以及从第一出口标识所标识的第一端口发送第一探测报文的时间戳的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;
将添加了第一节点的标识、发送第一探测报文的第二出口标识、从第二出口标识所标识的第二端口发送第一探测报文的时间戳的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,上报模块用于:判断第一节点上是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行上报步骤。
可选地,第一探测报文包括第一指令和第二指令,第一指令携带多路径探测指示信息,第二指令携带探测数据收集指示信息。
可选地,第一探测报文包括第一指令和telemetry指示信息,第一指令携带多路径探测指示信息,telemetry指示信息携带探测数据收集指示信息。
可选地,探测数据收集指示信息包括节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识,用于指示待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率;或者,
探测数据收集指示信息包括mtu,用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu;或者,
探测数据收集指示信息包括节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识以及发送第一探测报文的时间戳,用于指示待收集的探测数据的类型为从源节点到目的节点之间的路径上的时延值。
可选地,探测数据收集指示信息包括待收集的探测数据的类型,用于指示第一节点根据探测数据收集指示信息包括的类型和待收集的数据之间的对应关系确定待收集的数据。
可选地,第一探测报文中还包括指示报文源地址和目的地址对的指示信息。
本申请中只需要源节点发送包括多路径探测指示信息以及探测数据收集指示信息的第一探测报文便可实现源节点和目的节点之间的多路径的探测,因此可以避免源节点重复发送多次探测报文才能探测路径,从而提高了探测路径的效率。另外,由于第一节点直接向下一跳节点发送包括多路径探测指示信息以及探测数据收集指示信息第一探测报文,使得第一节点的下一跳节点均会按照第一节点所示的方式收集探测数据,如此可以避免遗漏源节点到目的节点之间的任何路径,从而提高了探测路径的准确率。
需要说明的是:上述实施例提供的第一节点在进行路径探测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的第一节点与路径探测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图20,本申请实施例提供了一种通信网络中的第一节点,该第一节点可以为上述图10-11所示实施例中的第一节点2000。该第一节点2000可以为交换机,路由器或者其他转发报文的网路设备。该通信网络包括源节点、一个或多个中间节点、以及目的节点,第一节点为一个或多个中间节点中的任一个中间节点;第一节点2000包括:
接收模块2001,用于接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu。具体实现过程请参考图10实施例中的步骤1001、图11所示实施例中的步骤1101,这里不再赘述。
上报模块2002,用于根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点。具体实现过程请参考图10实施例中的步骤1002、图11实施例中的步骤1102;
发送模块2003,用于将接收到的第一探测报文发送至第一节点的下一跳节点。具体实现过程请参考图10实施例中的步骤1003、图11实施例中的步骤1103。
可选地,在第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,其中,至少两个下一跳节点包括第二节点和第三节点;发送模块用于:
第一节点通过第一端口将接收到的第一探测报文发送至第二节点,第一节点通过第一端口与第二节点连接;
第一节点通过第二端口将接收到的第一探测报文发送至第三节点,第一节点通过第二端口与第三节点连接。
可选地,上报模块,还用于判断第一节点上是否有至少两个下一跳节点可达第一探测报文的目的地,并在确定第一节点有至少两个下一跳节点可达第一探测报文的目的地的情况下,执行根据多路径探测指示信息以及探测数据收集指示信息将第一节点与第一节点的下一跳节点之间的链路上的mtu上报至通信网络中的控制节点或源节点的步骤;此时,第一节点还包括添加模块,用于第一节点将第一探测报文中已经存在放入mtu上报至控制节点或源节点。
可选地,在第一节点只要一个下一跳节点可达第一探测报文的目的地的情况下,添加模块,还用于将第一节点与第一节点的下一跳节点之间的链路上的mtu添加至第一探测报文;
前述发送模块,还用于第一节点将添加了第一节点与第一节点的下一跳节点之间的链路上的mtu的第一探测报文发送至第一节点的下一跳节点。
本申请中只需要源节点发送包括多路径探测指示信息以及探测数据收集指示信息的第一探测报文便可实现源节点和目的节点之间的多路径的探测,因此可以避免源节点重复发送多次探测报文才能探测路径,从而提高了探测路径的效率。另外,由于第一节点直接向下一跳节点发送包括多路径探测指示信息以及探测数据收集指示信息第一探测报文,使得第一节点的下一跳节点均会按照第一节点所示的方式收集探测数据,如此可以避免遗漏源节点到目的节点之间的任何路径,从而提高了探测路径的准确率。
需要说明的是:上述实施例提供的第一节点在进行路径探测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的第一节点与路径探测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图21,本申请实施例提供了一种通信网络中的源节点,该源节点可以为上述图2-15所示实施例中的源节点2100。该源节点2100可以为交换机,路由器或者其他转发报文的网路设备。该通信网络包括源节点、一个或多个中间节点、以及目的节点,源节点2100包括:
生成模块2101,用于生成包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,多路径探测指示信息用于指示探测报文用于探测从源节点到目的节点之间的多条路径,探测数据收集指示信息用于指示待收集的探测数据的类型。具体实现过程请参考图2实施例中的步骤201;
发送模块2102,用于向源节点的下一跳节点发送第一探测报文,以指示源节点的下一跳节点执行图4至图15任一的路径探测方法。具体实现过程请参考图2实施例中的步骤202。
可选地,待收集的探测数据的类型包括从源节点到目的节点之间的路径拓扑、从源节点到目的节点之间的路径上的丢包率、从源节点到目的节点之间路径上的最小的最大传输单元mtu、从源节点到目的节点之间的路径上的时延值中的一者或多者。
可选地,第一探测报文包括第一指令和第二指令,第一指令携带多路径探测指示信息,第二指令携带探测数据收集指示信息。
可选地,第一探测报文包括第一指令和telemetry指示信息,第一指令携带多路径探测指示信息,telemetry指示信息携带探测数据收集指示信息。
可选地,探测数据收集指示信息包括节点的标识、接收第一探测报文的入口的标识、以及发送第一探测报文的出口标识,用于指示待收集的探测数据的类型为从源节点到目的节点之间的路径拓扑,和/或,从源节点到目的节点之间的路径上的丢包率;或者,
探测数据收集指示信息包括mtu,用于指示待收集的探测数据的类型为从源节点到目的节点之间路径上的最小的mtu;或者,
探测数据收集指示信息包括节点的标识、接收第一探测报文的入口的标识、接收第一探测报文的时间戳、发送第一探测报文的出口标识以及发送第一探测报文的时间戳,用于指示待收集的探测数据的类型为从源节点到目的节点之间的路径上的时延值。
本申请中只需要源节点发送包括多路径探测指示信息以及探测数据收集指示信息的第一探测报文便可实现源节点和目的节点之间的多路径的探测,因此可以避免源节点重复发送多次探测报文才能探测路径,从而提高了探测路径的效率。另外,由于第一节点直接向下一跳节点发送包括多路径探测指示信息以及探测数据收集指示信息第一探测报文,使得第一节点的下一跳节点均会按照第一节点所示的方式收集探测数据,如此可以避免遗漏源节点到目的节点之间的任何路径,从而提高了探测路径的准确率。
需要说明的是:上述实施例提供的源节点在进行路径探测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的源节点与路径探测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
此外,本申请实施例还提供了一种路径探测系统,如图1所示,该路径探测系统包括源节点、一个或多个中间节点以及目的节点;一个或多个中间节点中任一中间节点用于执行图4至图15任一的任一项的方法;源节点用于执行图2中的步骤201和步骤202。
可选地,该路径探测系统还可以包括控制节点,控制节点或源节点用于根据收集的探测数据分析源节点与目的节点之间的路径拓扑、源节点与目的节点之间的路径上的最小的mtu,源节点与目的节点之间的路径上的时延值以及源节点与目的节点之间的路径上的丢包率中的一者或多者。
关于路径探测系统中的源节点、中间节点、目的节点以及控制节点的相关功能已在上述实施例中进行了详细说明,在此就不再赘述。
图22是本申请实施例提供的一种网络设备2200的结构示意图。图2至图15实施例中的源节点、中间节点均可以通过图22所示的网络设备2200来实现,此时,该网络设备2200可以为交换机,路由器或者其他转发报文的网路设备。另外,图2至图15实施例中的目的节点和控制节点同样可以通过图22所示的网络设备2200来实现,此时该网络设备2200的具体功能可以参考前述图2至图15任一实施例汇中的目的节点和控制节点的具体实现方式,在此不再赘述。参见图22,该网络设备包括至少一个处理器2201,通信总线2202、存储器2203以及至少一个通信接口2204。
处理器2201可以是一个通用中央处理器(centralprocessingunit,cpu)、特定应用集成电路(application-specificintegratedcircuit,asic)或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线2202可包括一通路,在上述组件之间传送信息。
存储器2203可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器2203可以是独立存在,通过通信总线2202与处理器2201相连接。存储器2203也可以和处理器2201集成在一起。
其中,存储器2203用于存储程序代码,并由处理器2201来控制执行,以执行上述任一实施例所提供的路径探测方法。处理器2201用于执行存储器2203中存储的程序代码。程序代码中可以包括一个或多个软件模块。图1中的通信网路中的任一节点可以通过处理器2201以及存储器2203中的程序代码中的一个或多个软件模块,来确定用于开发应用的数据。这一个或多个软件模块可以为图19、图20或图21任一实施例中提供的软件模块。
通信接口2204,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(radioaccessnetworkran),无线局域网(wirelesslocalareanetworks,wlan)等。
在具体实现中,作为一种实施例,网络设备可以包括多个处理器,例如图19中所示的处理器2201和处理器2205。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
可以理解的是,在图22所示网络设备为上述方法实施例中的第一节点时,本实施例也可以基于通用的物理服务器结合网络功能虚拟化nfv技术实现的虚拟第一节点,所述虚拟第一节点为虚拟路由器,而且可以虚拟出第二,三,n个节点(根据实际需要)。所述虚拟第一节点可以是运行有用于提供发送消息功能的程序的虚拟机(英文:virtualmachine,vm),所述虚拟机部署在硬件设备上(例如,物理服务器)。虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。本领域技术人员通过阅读本申请即可结合nfv技术在通用物理服务器上虚拟出具有上述功能的多个第一节点。此处不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digitalsubscriberline,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digitalversatiledisc,dvd))、或者半导体介质(例如:固态硬盘(solidstatedisk,ssd))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
1.一种路径探测方法,其特征在于,应用于通信网络中的第一节点,所述通信网络包括源节点、一个或多个中间节点、以及目的节点,所述第一节点为所述一个或多个中间节点中的任一个中间节点;所述方法包括:
所述第一节点接收多路径探测指示信息和探测数据收集指示信息,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型;
所述第一节点根据所述多路径探测指示信息以及所述探测数据收集指示信息获取探测数据;
所述第一节点发送所述探测数据至所述第一节点的下一跳节点。
2.如权利要求1所述的方法,所述多路径探测指示信息和探测数据收集指示信息携带在所述第一节点接收的第一探测报文中;
所述第一节点发送所述探测数据至所述第一节点的下一跳节点包括:
所述第一节点将所述探测数据添加至所述第一探测报文;
所述第一节点将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点。
3.如权利要求2所述的方法,其特征在于,所述待收集的探测数据的类型为从所述源节点到所述目的节点之间的路径拓扑,和/或,从所述源节点到所述目的节点之间的路径上的丢包率,其中,在所述待收集的探测数据的类型包括从所述源节点到所述目的节点之间的路径上的丢包率的情况下,所述第一探测报文还包括报文序列号;
所述探测数据包括:所述第一节点的标识、接收所述第一探测报文的入口的标识、以及发送所述第一探测报文的出口标识。
4.如权利要求3所述的方法,其特征在于,在所述第一节点有至少两个下一跳节点可到达所述第一探测报文的目的地的情况下,其中,所述至少两个下一跳节点包括第二节点和第三节点;所述第一节点将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点,包括:
所述第一节点将添加了所述第一节点的标识、接收所述第一探测报文的入口的标识、以及发送所述第一探测报文的第一出口标识的第一探测报文发送至所述第二节点,所述第一节点通过所述发送所述第一探测报文的第一出口标识所标识的第一端口与所述第二节点连接;
所述第一节点将添加了所述第一节点的标识、接收所述第一探测报文的入口的标识、以及发送所述第一探测报文的第二出口标识的第一探测报文发送至所述第三节点,所述第一节点通过所述发送所述第一探测报文的第二出口标识所标识的第二端口与所述第三节点连接。
5.如权利要求2所述的方法,其特征在于,所述待收集的探测数据的类型为从所述源节点到所述目的节点之间的路径拓扑,和/或,从所述源节点到所述目的节点之间的路径上的丢包率的情况下,所述探测数据包括所述第一节点的标识以及发送所述第一探测报文的出口标识,其中,在所述待收集的探测数据的类型包括从所述源节点到所述目的节点之间的路径上的丢包率的情况下,所述第一探测报文还包括报文序列号;
所述方法进一步包括下述上报步骤:
在所述待收集的探测数据的类型为从所述源节点到所述目的节点之间的路径拓扑的情况下,所述第一节点将所述第一节点的标识、接收所述第一探测报文的入口的标识、以及所述第一节点的上一跳节点添加的探测数据上报至所述通信网络中的控制节点或所述源节点;
在所述待收集的探测数据的类型包括从所述源节点到所述目的节点之间的路径上的丢包率的情况下,所述第一节点将所述第一节点的标识、接收所述第一探测报文的入口的标识、所述第一节点的上一跳节点添加的探测数据、以及所述报文中序列号上报至所述通信网络中的控制节点或所述源节点。
6.如权利要求5所述的方法,其特征在于,在所述第一节点有至少两个下一跳节点可到达所述第一探测报文的目的地的情况下,其中,所述至少两个下一跳节点包括第二节点和第三节点;所述第一节点将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点,包括:
所述第一节点将添加了所述第一节点的标识以及发送所述第一探测报文的第一出口标识的第一探测报文发送至所述第二节点,所述第一节点通过所述发送所述第一探测报文的第一出口标识所标识的第一端口与所述第二节点连接;
所述第一节点将添加了所述第一节点的标识以及发送所述第一探测报文的第二出口标识的第一探测报文发送至所述第三节点,所述第一节点通过所述发送所述第一探测报文的第二出口标识所标识的第二端口与所述第三节点连接。
7.如权利要求5或6所述的方法,其特征在于,所述第一节点判断所述第一节点是否有至少两个下一跳节点可到达所述第一探测报文的目的地,并在确定所述第一节点有至少两个下一跳节点可到达所述第一探测报文的目的地的情况下,执行所述上报步骤。
8.如权利要求2所述的方法,其特征在于,在所述待收集的探测数据的类型为从所述源节点到所述目的节点之间路径上的最小的最大传输单元mtu的情况下,所述探测数据包括:所述第一节点到所述第一节点的下一跳节点之间的链路上的mtu。
9.如权利要求8所述的方法,其特征在于,在所述第一节点有至少两个下一跳节点可到达所述第一探测报文的目的地的情况下,其中,所述至少两个下一跳节点包括第二节点和第三节点;所述第一节点将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点,包括:
所述第一节点将添加了所述第一节点到所述第二节点之间的链路上的mtu的第一探测报文通过第一端口发送至所述第二节点,所述第一节点通过所述第一端口与所述第二节点连接;
所述第一节点将添加了所述第一节点到所述第三节点之间的链路上的mtu的第一探测报文通过第二端口发送至所述第三节点,所述第一节点通过所述第二端口与所述第三节点连接。
10.如权利要求2所述的方法,其特征在于,所述待收集的探测数据的类型包括从所述源节点到所述目的节点之间的路径上的时延值;所述探测数据包括:所述第一节点的标识、接收所述第一探测报文的入口的标识、接收所述第一探测报文的时间戳、发送所述第一探测报文的出口标识、以及发送所述第一探测报文的时间戳。
11.如权利要求10所述的方法,其特征在于,在所述第一节点有至少两个下一跳节点可到达所述第一探测报文的目的地的情况下,其中,所述至少两个下一跳节点包括第二节点和第三节点;所述第一节点将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点,包括:
所述第一节点将添加了所述第一节点的标识、接收所述第一探测报文的入口的标识、接收所述第一探测报文的时间戳、发送所述第一探测报文的第一出口标识、以及从所述第一出口标识所标识的第一端口发送所述第一探测报文的时间戳的第一探测报文发送至所述第二节点,所述第一节点通过所述第一端口与所述第二节点连接;
所述第一节点将添加了所述第一节点的标识、接收所述第一探测报文的入口的标识、接收所述第一探测报文的时间戳、发送所述第一探测报文的第二出口标识、以及从所述第二出表标识所标识的第二端口发送所述第一探测报文的时间戳的第一探测报文发送至所述第三节点,所述第一节点通过所述第二端口与所述第三节点连接。
12.如权利要求2所述的方法,其特征在于,所述待收集的探测数据的类型包括从所述源节点到所述目的节点之间的路径上的时延值;所述探测数据包括:所述第一节点的标识、发送所述第一探测报文的出口标识、以及发送所述第一探测报文的时间戳;
所述方法进一步包括下述上报步骤:
所述第一节点将所述第一节点的标识、接收所述第一探测报文的入口的标识、接收所述第一探测报文的时间戳、以及所述第一节点的上一跳节点添加的探测数据上报至所述通信网络中的控制节点或所述源节点。
13.如权利要求12所述的方法,其特征在于,在所述第一节点有至少两个下一跳节点可到达所述第一探测报文的目的地的情况下,其中,所述至少两个下一跳节点包括第二节点和第三节点;所述第一节点将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点,包括:
所述第一节点将添加了所述第一节点的标识、发送所述第一探测报文的第一出口标识、以及从所述第一出口标识所标识的第一端口发送所述第一探测报文的时间戳的第一探测报文发送至所述第二节点,所述第一节点通过所述第一端口与所述第二节点连接;
所述第一节点将添加了所述第一节点的标识、发送所述第一探测报文的第二出口标识、从所述第二出口标识所标识的第二端口发送所述第一探测报文的时间戳的第一探测报文发送至所述第三节点,所述第一节点通过所述第二端口与所述第三节点连接。
14.如权利要求12或13所述的方法,其特征在于,所述第一节点判断所述第一节点是否有至少两个下一跳节点可到达所述第一探测报文的目的地,并在确定所述第一节点有至少两个下一跳节点可到达所述第一探测报文的目的地的情况下,执行所述上报步骤。
15.一种通信网络中的第一节点,其特征在于,所述通信网络包括源节点、一个或多个中间节点、以及目的节点,所述第一节点为所述一个或多个中间节点中的任一个中间节点,所述第一节点包括存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器中存储的计算机程序以执行权利要求1-14任一项所述的方法。
16.一种芯片,所述芯片设置在第一节点中,应用于通信网络,所述通信网络包括源节点、一个或多个中间节点以及目的节点,所述第一节点为所述一个或多个中间节点中的任一节点;其特征在于,所述芯片包括处理器和接口电路;
所述接口电路用于接收指令并传输至所述处理器;
所述处理器用于执行权利要求1-14任一项所述的方法。
17.一种路径探测系统,所述路径探测系统包括源节点、一个或多个中间节点、以及目的节点,所述第一节点为所述一个或多个中间节点中的任一个中间节点;所述源节点用于:生成包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型;并向所述源节点的下一跳节点发送所述第一探测报文;
所述第一节点用于执行权利要求2-14任一项所述的方法。
18.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行权利要求1-14任一项所述的方法。
19.一种通信网络中的第一节点,该通信网络包括源节点、一个或多个中间节点、以及目的节点,第一节点为一个或多个中间节点中的任一个中间节点,所述第一节点包括:
接收模块,用于接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型;
添加模块,用于根据所述多路径探测指示信息以及所述探测数据收集指示信息添加探测数据至所述第一探测报文;
发送模块,用于将添加了所述探测数据的所述第一探测报文发送至所述第一节点的下一跳节点。
20.一种通信网络中的第一节点,该通信网络包括源节点、一个或多个中间节点、以及目的节点,所述第一节点为一个或多个中间节点中的任一个中间节点;所述第一节点包括:
接收模块,用于接收包括多路径探测指示信息和探测数据收集指示信息的第一探测报文,所述多路径探测指示信息用于指示探测报文用于探测从所述源节点到所述目的节点之间的多条路径,所述探测数据收集指示信息用于指示待收集的探测数据的类型为从所述源节点到所述目的节点之间路径上的最小的最大传输单元mtu;
上报模块,用于根据所述多路径探测指示信息以及所述探测数据收集指示信息将所述第一节点与所述第一节点的下一跳节点之间的链路上的mtu上报至所述通信网络中的控制节点或所述源节点;
发送模块,用于将接收到的所述第一探测报文发送至所述第一节点的下一跳节点。
技术总结