报文发送方法、装置及存储介质与流程

文档序号:25793406发布日期:2021-07-09 11:41阅读:48来源:国知局
报文发送方法、装置及存储介质与流程

1.本申请涉及通信技术领域,特别涉及一种报文发送方法、装置及存储介质。


背景技术:

2.软件定义广域网(software defined wan,sd-wan)是软件定义网络(software defined networking,sdn)的重要实践。在sd-wan中,通常可以通过叠加(overlay)技术在两个站点的网络设备之间建立隧道,进而通过隧道发送报文。而且,这些网络设备还可以通过深度报文检测(deep packet inspection,dpi)来识别报文所属的应用类型,进而按照该应用类型来发送报文。但是,为了确保通信的可靠性,往往会在一些重要的站点内部署两个网络设备。而且对于dpi来说,通常需要关于同一应用发送的报文和接收的报文都经过同一网络设备,才可以成功识别应用类型。因此,在这种情况下,如何确保这两个网络设备之间的互通,以及如何确保关于同一应用发送的报文和接收的报文都经过同一网络设备,成为目前亟待解决的问题。


技术实现要素:

3.本申请提供了一种报文发送方法、装置及存储介质,可以解决在一个站点内部署多个网络设备的情况下,无法确保关于同一应用发送的报文和接收的报文都经过同一网络设备的问题。所述技术方案如下:
4.第一方面,提供了一种报文发送方法,第一站点内部署有多个网络设备,所述第一站点内部署的网络设备与第二站点内的部署的网络设备之间建立有多条隧道,所述第二站点是指与所述第一站点传输数据的站点。在这种情况下,第一网络设备接收来自所述第二站点的第一数据报文;所述第一网络设备从所述第一网络设备存储的流表中,查找流标识为第一数据流的流标识的目标流表项;如果查找到所述目标流表项,则所述第一网络设备通过所述目标流表项中的出接口标识对应的接口发送所述第一数据报文。
5.其中,所述第一网络设备为所述多个网络设备中的任一网络设备。所述流表包括多个流表项,所述多个流表项中的每个流表项包括一个流标识和对应的出接口标识。所述第一数据流为所述第一数据报文所属的数据流,所述目标流表项是从所述第一站点向所述第二站点发送第二数据流时创建的,所述第二数据流的源地址为所述第一数据流的目的地址,所述第二数据流的目的地址为所述第一数据流的源地址。
6.在本申请中,当第一网络设备接收到来自第二站点的第一数据报文时,可以在流表中查找流标识为第一数据流的流标识的目标流表项。由于第一数据流为第一数据报文所属的数据流,目标流表项是从第一站点向第二站点发送第二数据流时创建的,第二数据流的源地址为第一数据流的目的地址,第二数据流的目的地址为第一数据流的源地址,因此,只有在第二数据流经由第一网络设备的情况下,第一网络设备的流表中才存在目标流表项,这样,第一网络设备才可以查找到目标流表项,进而通过目标流表项中的出接口标识对应的接口发送第一数据报文。由此可见,本申请可以确保关于同一应用发送的报文和接收
的报文都经过同一网络设备。
7.可选地,在所述第一网络设备从所述第一网络设备存储的流表中,查找流标识为第一数据流的流标识的目标流表项之后,如果未查找到所述目标流表项,且所述多个网络设备中还存在未查找所述目标流表项的网络设备,则所述第一网络设备将所述第一数据报文发送给第二网络设备,以指示所述第二网络设备从所述第二网络设备存储的流表中查找所述目标流表项,所述第二网络设备为所述多个网络设备中未查找所述目标流表项的一个网络设备;如果未查找到所述目标流表项,且所述多个网络设备均已查找过所述目标流表项,则所述第一网络设备通过本地路由发送所述第一数据报文。
8.作为一种示例,第一站点内的多个网络设备中每两个网络设备之间可以通过网络链路进行连接,也即是,每两个网络设备之间可以进行通信。在这种情况下,第一数据报文中可以携带第一数据报文经过的每个网络设备的设备标识。这样,当第一网络设备确定第一站点内是否还存在未查找目标流表项的网络设备时,可以根据第一数据报文中携带的网络设备的设备标识,确定第一站点内的多个网络设备中未查找目标流表项的网络设备。
9.需要说明的是,第一站点内的各个网络设备中都存储有本地路由,本地路由中存储有相应网络设备与第一站点内的用户端之间的路由信息。因此,当第一网络设备接收到第一数据报文,且第一站点内的多个网络设备均已查找过目标流表项后,可以根据本地路由向第一站点内的用户端发送第一数据报文。
10.可选地,所述第一网络设备通过所述目标流表项中的出接口标识对应的接口发送所述第一数据报文时,如果所述目标流表项中的出接口标识对应的接口为第一类接口,则所述第一网络设备通过所述目标流表项中的出接口标识对应的接口,将所述第一数据报文发送给所述第一站点内的用户端;如果所述目标流表项中的出接口标识对应的接口为第二类接口,则所述第一网络设备通过所述目标流表项中的出接口标识对应的接口,将所述第一数据报文发送给第三网络设备,以指示所述第三网络设备从所述第三网络设备存储的流表中查找所述目标流表项。
11.其中,所述第一类接口是指与所述第一站点内的用户端之间通信的接口,所述第二类接口是指与所述多个网络设备中的其他网络设备之间通信的接口,所述第三网络设备是指所述多个网络设备中通过所述目标流表项中的出接口标识对应的接口与所述第一网络设备通信的设备。
12.可选地,在所述第一网络设备接收来自所述第二站点的第一数据报文之前,所述第一网络设备接收来自所述第一站点内的用户端的第二数据报文;所述第一网络设备根据所述目的地址,从所述多条隧道中选择一条隧道作为目标隧道;所述第一网络设备根据所述第二数据流的流标识确定所述第一数据流的流标识;所述第一网络设备在所述第一网络设备存储的流表中添加所述目标流表项;如果所述目标隧道为所述第一网络设备与所述第二站点内的网络设备之间建立的隧道,则所述第一网络设备通过所述目标隧道发送所述第二数据报文。
13.其中,所述第二数据报文携带目的地址,所述第二数据报文属于所述第二数据流,且所述第一网络设备当前添加的所述目标流表项中的流标识为所述第一数据流的流标识,当前添加的所述目标流表项中的出接口标识为第一接口的标识,所述第一接口是指所述第一网络设备中用于从所述第一站点内的用户端接收所述第二数据报文的接口。
14.需要说明的是,由于第二数据报文属于第二数据流,而第二数据流为第一站点的用户端发送至第二站点的用户端的数据流,因此,第二数据报文携带的目的地址为第二站点内的用户端的目的地址。
15.值得注意的是,当第一站点内的用户端向第二站点内的用户端发送第二数据报文时,由于两个用户端属于不同的站点,因此,第一站点内的用户端需要将第二数据报文发送至第一站点内的一个网络设备,从而通过该网络设备将第二数据数据报文发送至第二站点内的一个网络设备,进而由第二站点内的网络设备将第二数据报文发送给第二站点内的用户端。
16.作为一种示例,第一站点内的用户端可以根据第一站点的组网方式,从第一站点内的多个网络设备中选择一个网络设备作为第一网络设备,之后,可以将第二数据报文发送至第一网络设备,并通过第一网络设备将第二数据报文发送至第二站点内的一个网络设备。
17.可选地,所述第一网络设备中存储有路由表,所述路由表包括多个路由表项,所述多个路由表项中的每个路由表项包括一个站点前缀和对应的站点标识;这样,所述第一网络设备根据所述目的地址,从所述多条隧道中选择一条隧道作为目标隧道时,所述第一网络设备根据所述目的地址,从所述路由表中确定目标路由表项,所述目的地址匹配所述目标路由表项包括的站点前缀;所述第一网络设备根据所述目标路由表项包括的站点标识,确定一个或多个隧道表项,所述一个或多个隧道表项是指所述第一站点与所述第二站点之间建立的隧道对应的隧道表项;所述第一网络设备从所述一个或多个隧道表项中选择一个隧道表项作为目标隧道表项,将所述目标隧道表项对应的隧道作为所述目标隧道。
18.在本申请中,由于站点前缀是指站点对应的网段,因此,可以将第二数据报文携带的目的地址与路由表中每个路由表项包括的站点前缀进行匹配,从而可以从路由表中确定目标路由表项。
19.需要说明的是,基于上述描述,第二数据报文携带的目标地址为第二站点内的用户端的地址,因此,目标路由表项包括的站点前缀为第二站点的站点前缀,目标路由表项包括的站点标识为第二站点的标识。
20.在本申请中,第一网络设备中可以存储一个隧道表,这个隧道表用于存储多个站点对应的隧道表项,当然,第一网络设备中也可以存储多个隧道表,该多个隧道表与该多个站点一一对应。其中,该多个站点是指与第一站点之间建立有隧道的站点,且该多个站点包括第二站点。对于这两种情况,第一网络设备确定上述一个或多个隧道表项的方式不同,因此,接下来分为两种情况进行说明。
21.第一种情况、第一网络设备中存储有一个隧道表。此时,第一网络设备可以根据目标路由表项包括的站点标识,确定一个或多个隧道标识,该一个或多个隧道标识是指第一站点与第二站点之间建立的隧道的标识。之后,第一网络设备可以根据该一个或多个隧道标识,从隧道表中确定上述的一个或多个隧道表项。
22.需要说明的是,不管第一网络设备中存储有多少个隧道表,每个隧道表都可以包括多个隧道表项,该多个隧道表项中的每个隧道表项可以包括一个隧道标识和对应的隧道属性信息。该隧道属性信息可以包括隧道封装方式、隧道的源地址和目的地址、隧道是否可用、隧道的带宽以及隧道的时延等。而且,在一些情况下,第一网络设备中可以存储站点标
识与隧道标识的第一映射关系,也即是,第一映射关系中存储有与第一站点建立有隧道的各个站点的标识,以及各个站点与第一站点之间建立的隧道的标识。这样,第一网络设备可以根据目标路由表项包括的站点标识,从第一映射关系中,确定一个或多个隧道标识。之后,第一网络设备可以从隧道表中确定包括的隧道标识与这一个或多个隧道标识相同的隧道表项,从而得到一个或多个隧道表项。
23.第二种情况、第一网络设备中存储有多个隧道表。此时,第一网络设备可以根据目标路由表项包括的站点标识,确定目标隧道表的标识,目标隧道表是指该多个隧道表中与第二站点对应的隧道表。之后,第一网络设备可以根据目标隧道表的标识,从该多个隧道表中确定目标隧道表,将目标隧道表中存储的隧道表项确定为上述的一个或多个隧道表项。
24.由于第一网络设备中针对不同的站点存储不同的隧道表,且第一网络设备可以存储站点标识与隧道表标识的第二映射关系,也即是,第二映射关系中存储有与第一站点建立有隧道的各个站点的标识,以及各个站点对应的隧道表的标识。这样,第一网络设备可以根据目标路由表项包括的站点标识,从第二映射关系中,确定目标隧道表的标识。之后,可以根据目标隧道表的标识,从该多个隧道表中确定目标隧道表,进而将目标隧道表中的隧道表项确定为上述的一个或多个隧道表项。
25.在确定该一个或多个隧道表项后,第一网络设备可以根据隧道选择策略,从该一个或多个隧道表项中选择一个隧道表项作为目标隧道表项,进而将目标隧道表项对应的隧道确定为目标隧道,也即是,将目标隧道表项中包括的隧道标识所标识的隧道作为目标隧道。
26.可选地,所述第二数据流的流标识中包括源端信息和目的端信息;则所述第一网络设备根据所述第二数据流的流标识确定所述第一数据流的流标识时,所述第一网络设备将所述第二数据流的流标识中源端信息和目的端信息对调之后,得到所述第一数据流的流标识。
27.其中,第一数据流为第二站点内的用户端发送至第一站点内的用户端的数据流,第二数据流为第一站点内的用户端发送至第二站点内的用户端的数据流,故第一数据流的源地址为第二数据流的目的地址,第一数据流的目的地址为第二数据流的源地址。
28.在本申请中,第一网络设备可以根据第二数据报文确定第二数据流的流标识,进而根据第二数据流的流标识确定第一数据流的流标识。
29.作为一种示例,第一网络设备可以获取第二数据报文的元组信息,该元组信息中至少包括源端信息和目的端信息。将获取到的元组信息作为第二数据流的流标识。之后,第一网络设备可以将第二数据流的流标识中源端信息和目的端信息对调,得到第一数据流的流标识。
30.作为另一种示例,第一网络设备可以获取第二数据报文的元组信息,根据第二数据报文的元组信息,从存储的元组信息与流标识之间的对应关系中,获取第二数据流的流标识。之后,根据第二数据流的流标识,从存储的第一数据流标识与第二数据流标识之间的对应关系中,获取第一数据流的流标识。
31.第一网络设备根据第二数据报文确定第一数据流的流标识后,可以在第一网络设备存储的流表中添加目标流表项。其中,该流表中可以包括多个流表项,该多个流表项中的每个流表项包括一个流标识和对应的出接口标识,因此,当前添加的目标流表项中包括一
个流标识和对应的出接口标识,且当前添加的目标流表项中的流标识为第一数据流的流标识,当前添加的目标流表项中的出接口标识为第一接口的标识,第一接口是指第一网络设备中用于从第一站点内的用户端接收第二数据报文的接口。
32.需要说明的是,由于同一个数据流在流入第一网络设备时,可能是通过与第一站点内的用户端通信的接口流入第一网络设备,也可能是通过与第一站点内其他网络设备通信的接口流入第一网络设备,这样,第一网络设备当前添加的目标流表项中的出接口标识可能为第一网络设备中与第一站点内的用户端通信的接口,也可能为第一网络设备中与第一站点内的其他网络设备通信的接口。
33.可选地,在所述第一网络设备在所述第一网络设备存储的流表中添加所述目标流表项之后,如果所述目标隧道为第四网络设备与所述第二站点内的网络设备之间建立的隧道,则所述第一网络设备在所述第二数据报文中添加所述目标隧道的隧道标识,得到第三数据报文;所述第一网络设备将所述第三数据报文发送给所述第四网络设备,以指示所述第四网络设备解析出所述第二数据报文,根据所述第二数据流的流标识确定所述第一数据流的流标识,在所述第四网络设备存储的流表中添加所述目标流表项,并通过所述目标隧道发送所述第二数据报文。
34.其中,所述第四网络设备为所述多个网络设备中除所述第一网络设备之外的一个网络设备,且所述第四网络设备当前添加的所述目标流表项包括的流标识为所述第一数据流的流标识,当前添加的所述目标流表项中的出接口标识为第二接口的标识,所述第二接口是指所述第四网络设备中用于接收所述第三数据报文的接口。
35.需要说明的是,由于隧道表包括第一站点内的网络设备与第二站点内的网络设备之间建立的所有隧道,因此,第一网络设备确定的目标隧道可能是第一网络设备与第二站点内的网络设备之间建立的隧道,也可能是第一站点内除第一网络设备外的其他网络设备与第二站点内的网络设备之间建立的隧道,即第四网络设备与第二站点内的网络设备之间建立的隧道。
36.在一些可能的情况下,如果目标隧道为第四网络设备与第二站点内的网络设备之间建立的隧道,则第一网络设备可以在第二数据报文中添加一个隧道索引字段,该隧道索引字段中可以包括目标隧道的隧道标识,从而得到第三数据报文,之后,第一网络设备可以将第三数据报文发送至第四网络设备。
37.基于上述描述,第一网络设备与第四网络设备之间建立有网络链路,且第一网络设备与第四网络设备之间是通过该网络链路通信的。因此,第一网络设备在第二数据报文中添加目标隧道的隧道标识,得到第三数据报文后,可以通过第一网络设备与第四网络设备之间的网络链路将第三数据报文发送给第四网络设备。
38.第四网络设备接收到第三数据报文之后,由于隧道索引字段不仅包括目标隧道的隧道标识,还包括隧道索引字段的封装方式、标签、版本号、协议类型等,因此,可以按照封装方式、标签、版本号、协议类型这些信息,从第三数据报文中解析出第二数据报文。
39.在本申请中,第四网络设备解析出第二数据报文之后,可以根据第二数据报文确定第二数据流的流标识,进而根据第二数据流的流标识确定第一数据流的流标识。
40.作为一种示例,第四网络设备可以获取第二数据报文的元组信息,该元组信息中至少包括源端信息和目的端信息。将获取到的元组信息作为第二数据流的流标识。之后,第
四网络设备可以将第二数据流的流标识中源端信息和目的端信息对调,得到第一数据流的流标识。
41.作为另一种示例,第四网络设备可以获取第二数据报文的元组信息,根据第二数据报文的元组信息,从存储的元组信息与流标识之间的对应关系中,获取第二数据流的流标识。之后,根据第二数据流的流标识,从存储的第一数据流标识与第二数据流标识之间的对应关系中,获取第一数据流的流标识。
42.需要说明的是,由于第四网络设备是通过与第一网络设备之间的网络链路接收到第三数据报文,因此,第四网络设备当前添加的目标流表项中的出接口标识为与第一网络设备通信的接口,也即是,第二类接口。
43.第四网络设备在存储的流表中添加目标流表项之后,可以根据获取到目标隧道的隧道标识,从存储的隧道表中获取目标隧道表项,并从目标隧道表项中获取目标隧道的隧道属性信息,进而按照获取的隧道属性信息,对第二数据报文进行隧道封装,得到第四数据报文,并通过目标隧道发送第四数据报文。
44.可选地,所述第一数据报文是所述第一网络设备通过所述第一网络设备与所述第二站点内的网络设备之间建立的隧道接收的数据报文,或者,所述第一数据报文是所述第一网络设备接收第五网络设备发送的数据报文,所述第五网络设备为所述多个网络设备中除所述第一网络设备之外的一个网络设备。
45.可选地,所述多个网络设备之间建立有网络链路,所述多个网络设备是通过所述网络链路通信的,所述网络链路为物理链路或者网络隧道,所述网络隧道包括通用路由封装gre隧道。
46.需要说明的是,当多个网络设备之间的距离较近时,该网络链路可以为物理链路。当多个网络设备之间的距离较远,或无法通过物理链路连接时,该网络链路可以为网络隧道,该网络隧道可以包括通用路由封装(generic routing encapsulation,gre)隧道。当然,该网络隧道也可以为其他的隧道。
47.另外,第一站点内的两个网络设备之间的网络链路主要是用于同步站点内的隧道表项、以及站点内的数据报文的传输,无需发布到站点外部的网络,因此,第一站点内的网络设备上用于建立网络链路的接口上的网络地址均可以设置为私网地址,甚至不同站点都可以采用相同的地址空间,可以节约sd-wan网络对运营商网络地址资源的消耗。
48.可选地,在第一数据流包括的数据报文通过第一网络设备与第二站点内的网络设备之间的隧道发送给第二站点的情况下,当第一网络设备在第一网络设备存储的流表中添加目标流表项后,第一网络设备可以将目标流表项通过网络链路发送给第一站点内的其他网络设备。其他网络设备接收到目标流表项后,可以将目标流表项的出接口修改为第二类接口,也即是,每个其他网络设备与第一网络设备通信的接口,并将修改后的目标流表项存储在流表中。这样,当其他网络设备接收到第一数据报文时,在存储的流表中查找到目标流表项,可以将第一数据报文通过目标流表项包括的出接口标识对应的接口发送至第一网络设备,之后,第一网络设备可以根据目标流表项将第一数据报文发送至第一站点内的用户端。由此可见,将目标流表项同步至第一站点内的其他网络设备中,可以大大减少在未查找到目标流表项时,将第一数据报文在网络设备间不断的遍历查询的情况,提高了第一数据报文发送的效率。
49.第二方面,提供了另一种报文发送方法,第一站点内部署有多个网络设备,所述多个网络设备之间建立有网络链路,所述第一站点内部署的网络设备与第二站点内的部署的网络设备之间建立有多条隧道,所述第二站点是指与所述第一站点传输数据的站点,所述方法包括:第一网络设备接收来自所述第二站点的第一数据报文,所述第一数据报文是所述第一网络设备通过所述第一网络设备与第二网络设备之间的网络链路接收的数据报文,所述第一网络设备为所述多个网络设备中的任一网络设备,所述第二网络设备为所述多个网络设备中与所述第一网络设备建立有网络链路的一个网络设备;所述第一网络设备向所述第一站点内的用户端发送所述第一数据报文。
50.在本申请中,由于第一站点内的多个网络设备之间建立有网络链路,第一网络设备的隧道表中不仅包括第一网络设备与第二站点内的网络设备之间的隧道对应的隧道表项,还包括第一站点内的其他网络设备与第二站点内的网络设备之间的隧道对应的隧道表项,因此,当第一网络设备接收到来自第一站点内的用户端的第二数据报文,且选择的目标隧道为第三网络设备与第二站点内的网络设备之间的隧道时,第一网络设备可以通过与第三网络设备之间的网络链路,将第二数据报文发送给第三网络设备,进而由第三网络设备通过目标隧道发送给第二站点,从而实现了第一网络设备与第三网络设备之间的互通,无需创建过多的隧道即可实现第一站点与第二站点之间的通信。
51.第三方面,提供了一种报文发送装置,所述报文发送装置具有实现上述第一方面中报文发送方法行为的功能。所述报文发送装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的报文发送方法。
52.第四方面,提供了另一种报文发送装置,所述报文发送装置具有实现上述第一方面中报文发送方法行为的功能。所述报文发送装置包括至少一个模块,该至少一个模块用于实现上述第二方面所提供的报文发送方法。
53.第五方面,提供了一种网络设备,所述网络设备包括处理器和存储器,所述存储器用于存储执行上述第一方面或第二方面所提供的报文发送方法的程序,以及存储用于实现上述第一方面或第二方面所提供的报文发送方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
54.第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的报文发送方法。
55.第七方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的报文发送方法。
56.上述第二方面、第三方面、第四方面、第五方面、第六方面和第七方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
57.本申请提供的技术方案至少可以带来以下有益效果:
58.在本申请中,当第一网络设备接收到来自第二站点的第一数据报文时,可以在流表中查找流标识为第一数据流的流标识的目标流表项。由于第一数据流为第一数据报文所属的数据流,目标流表项是从第一站点向第二站点发送第二数据流时创建的,第二数据流的源地址为第一数据流的目的地址,第二数据流的目的地址为第一数据流的源地址,因此,
只有在第二数据流经由第一网络设备的情况下,第一网络设备的流表中才存在目标流表项,这样,第一网络设备才可以查找到目标流表项,进而通过目标流表项中的出接口标识对应的接口发送第一数据报文。由此可见,本申请可以确保关于同一应用发送的报文和接收的报文都经过同一网络设备。
附图说明
59.图1是本申请实施例提供的一种报文发送方法所涉及的系统架构图;
60.图2是本申请实施例提供的另一种报文发送方法所涉及的系统架构图;
61.图3是本申请实施例提供的一种网络设备的结构示意图;
62.图4是本申请实施例提供的一种报文发送方法的流程图;
63.图5是本申请实施例提供的一种隧道索引字段的示意图;
64.图6是本申请实施例提供的另一种报文发送方法的流程图;
65.图7是本申请实施例提供的一种第一站点内部署网络设备的示意图;
66.图8是本申请实施例提供的又一种报文发送方法的流程图;
67.图9是本申请实施例提供的一种报文发送装置的结构示意图;
68.图10是本申请实施例提供的另一种报文发送装置的结构示意图。
具体实施方式
69.为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
70.图1是本申请实施例提供的一种报文发送方法所涉及的系统架构图。如图1所示,该系统包括网络设备101、网络设备102、网络设备103以及控制设备104。其中,网络设备101和网络设备102是部署在第一站点内的网络设备,网络设备103是部署在第二站点内的网络设备。网络设备101、网络设备102、网络设备103可以与控制设备104之间通过无线或有线方式连接以进行通信。
71.网络设备上电后,可以向控制设备104进行注册,之后,属于不同站点的两个网络设备之间可以通过控制设备104建立隧道,在此,以网络设备101和网络设备103为例进行说明。
72.如图1所示,网络设备101的第一接口接入长期演进(long term evolution,lte)网络,网络设备102的第一接口接入多协议标签交换(multi-protocol label switching,mpls)网络,网络设备103的第一接口接入lte网络,网络设备103的第二接口接入mpls网络。假设在网络设备101上电前,网络设备102和网络设备103均已完成注册,也即是,网络设备102的第一接口与网络设备103的第二接口之间已经建立有隧道2。
73.在网络设备101上电后,可以向控制设备104发送第一站点的站点前缀和站点标识、以及网络设备101的第一接口的传输网络端口(transport network port,tnp)信息。之后,控制设备104根据存储的网络拓扑结构,确定网络设备101可以与网络设备103之间进行通信。这样,控制设备104可以将第一站点的站点前缀和站点标识、以及网络设备101的第一接口的tnp信息发送至网络设备103,并将第二站点的站点前缀和站点标识、以及网络设备103的第一接口的tnp信息发送至网络设备101。
74.网络设备101接收到第二站点的站点前缀和站点标识后,可以将第二站点的站点前缀和站点标识作为一个路由表项添加在存储的路由表中,同样的,网络设备103接收到第一站点的站点前缀和站点标识后,也可以将第一站点的站点前缀和站点标识作为一个路由表项添加在存储的路由表中。接下来,当网络设备101接收到控制设备104发送的网络设备103的第一接口的tnp信息,且网络设备103接收到控制设备104发送的网络设备101的第一接口的tnp信息后,假设这两个接口的tnp信息能够匹配上,那么,网络设备101的第一接口和网络设备103的第一接口之间可以建立隧道1。之后,网络设备101的第二接口与网络设备102的第二接口之间还可以建立有网络链路,该网络链路可以为物理链路或者网络隧道,网络设备101与网络设备102之间可以通过该网络链路进行通信。
75.基于此,网络设备101在建立隧道1后,可以将隧道1的隧道标识以及隧道属性信息存储于隧道表中,并将隧道1的隧道标识以及隧道属性信息通过网络链路发送至网络设备102。之后,网络设备101可以接收网络设备102发送的隧道2的隧道标识以及隧道属性信息,并存储在隧道表中。同样的,网络设备102和网络设备103的隧道表中也存储有隧道1的隧道标识以及隧道属性信息、隧道2的隧道标识以及属性信息。
76.需要说明的是,tnp信息可以包括接口的网络地址、加密模式等用于和其他网络设备建立隧道的参数信息。另外,关于同一隧道,隧道两端的设备中存储的隧道属性信息中的源端信息和对端信息是相反的。比如,对于隧道1来说,网络设备101和网络设备102中存储的隧道属性信息中的源端信息为网络设备103中存储的隧道属性信息的目的端信息,网络设备101和网络设备102中存储的隧道属性信息中的目的端信息为网络设备103中存储的隧道属性信息的源端信息。其中,隧道的源端信息可以包括隧道的源网络地址,隧道的目的端信息可以包括隧道的目的网络地址。
77.接下来,当网络设备101接收到第一站点内的用户端发送至第二站点内的用户端的数据报文时,可以从隧道表中选择隧道1或隧道2作为目标隧道,并通过目标隧道发送数据报文。当目标隧道为隧道1时,网络设备101可以直接通过隧道1发送数据报文。当目标隧道为隧道2时,网络设备101可以在数据报文中添加隧道2的隧道标识,再将添加了隧道标识的数据报文发送至网络设备102,以指示网络设备102通过隧道2发送数据报文。
78.同样的,当网络设备102接收到第一站点内的用户端发送至第二站点内的用户端的数据报文时,可以从隧道表中选择隧道1或隧道2为目标隧道,并根据前述相同的方法通过目标隧道发送数据报文。当网络设备103接收到第二站点内的用户端发送至第一站点内的用户端的数据报文时,可以从隧道表中选择隧道1或隧道2为目标隧道,并通过目标隧道发送数据报文。
79.可选地,图1所示的系统中是以第一站点内部署有两台网络设备、第二站点内部署有一台网络设备进行举例说明。当然,在其他可能的情况下,第一站点内也可以部署有一台网络设备,或者两台以上的网络设备,第二站点内也可以部署有两台或两台以上的网络设备,且第一站点内部署的网络设备的数量可以与第二站点内部署的网络设备的数量相同或者不同。
80.比如,如图2所示,在图2所示的系统架构中,第一站点和第二站点内均部署有两台网络设备,即,第一站点内部署有网络设备101和网络设备102,第二站点内部署有网络设备105和网络设备106。按照上述方法,可以在网络设备101与网络设备105之间建立隧道1,在
网络设备102与网络设备106之间建立隧道2,且网络设备101与网络设备102之间建立有网络链路。
81.请参考图3,图3是根据本申请实施例示出的一种网络设备的结构示意图,该网络设备可以是图1或图2中所示的网络设备。该网络设备包括至少一个处理器301、通信总线302、存储器303以及至少一个通信接口304。
82.处理器301可以是一个微处理器(包括中央处理器(central processing unit,cpu)等)、网络处理器(np)、微处理器、或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld),现场可编程逻辑门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。
83.通信总线302用于在上述组件之间传送信息。通信总线302可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
84.存储器303可以是只读存储器(read-only memory,rom),也可以是随机存取存储器(random access memory,ram),也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、光盘(包括只读光盘(compact disc read-only memory,cd-rom)、压缩光盘、激光盘、数字通用光盘、蓝光光盘等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由网络存取的任何其它介质,但不限于此。存储器303可以是独立存在,并通过通信总线302与处理器301相连接。存储器303也可以和处理器301集成在一起。
85.通信接口304使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口304包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,wlan)接口,蜂窝网络通信接口或其组合等。
86.在具体实现中,作为一种实施例,处理器301可以包括一个或多个cpu,如图3中所示的cpu0和cpu1。
87.在具体实现中,作为一种实施例,网络设备可以包括多个处理器,如图3中所示的处理器301和处理器305。这些处理器中的每一个可以是一个单核处理器,也可以是一个多核处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如网络程序指令)的处理核。
88.在一些实施例中,存储器303用于存储执行本申请方案的程序代码310,处理器301可以执行存储器303中存储的程序代码310。也即是,该网络设备可以通过处理器301以及存储器303中的程序代码310,来实现下文图4、图6或图8实施例提供的报文发送方法。
89.图4是本申请实施例提供的一种报文发送方法的流程图,在本申请实施例中,第一站点内部署有多个网络设备,该多个网络设备之间建立有网络链路,第一站点内部署的网络设备与第二站点内的部署的网络设备之间建立有多条隧道,第二站点是指与第一站点传输数据的站点。请参考图4,该方法包括如下步骤。
90.步骤401:第一网络设备接收来自第一站点内的用户端的第二数据报文,第二数据报文携带目的地址,第二数据报文属于第二数据流。
91.其中,第一网络设备为第一站点内的多个网络设备中的任一网络设备。由于第二数据报文属于第二数据流,而第二数据流为第一站点的用户端发送至第二站点的用户端的数据流,因此,第二数据报文携带的目的地址为第二站点内的用户端的目的地址。
92.需要说明的是,当第一站点内的用户端向第二站点内的用户端发送第二数据报文时,由于两个用户端属于不同的站点,因此,第一站点内的用户端需要将第二数据报文发送至第一站点内的一个网络设备,从而通过该网络设备将第二数据数据报文发送至第二站点内的一个网络设备,进而由第二站点内的网络设备将第二数据报文发送给第二站点内的用户端。
93.作为一种示例,第一站点内的用户端可以根据第一站点的组网方式,从第一站点内的多个网络设备中选择一个网络设备作为第一网络设备,之后,可以将第二数据报文发送至第一网络设备,并通过第一网络设备将第二数据报文发送至第二站点内的一个网络设备。
94.需要说明的是,用户端中可以存储组网方式与设备标识之间的对应关系,当用户端需要发送数据报文时,可以根据自身所在站点的组网方式,以及组网方式与设备标识之间的对应关系,确定一个网络设备来发送数据报文。示例地,对于第一站点内的用户端来说,该用户端可以根据第一站点的组网方式,从存储的组网方式与设备标识之间的对应关系中,获取对应的设备标识,进而将该设备标识所标识的网络设备确定为第一网络设备。
95.步骤402:第一网络设备根据第二数据报文携带的目的地址,从第一站点与第二站点之间建立的多条隧道中选择一条隧道作为目标隧道。
96.在本申请实施例中,第一网络设备中存储有路由表,该路由表包括多个路由表项,该多个路由表项中的每个路由表项包括一个站点前缀和对应的站点标识。其中,站点前缀是指站点对应的网段,站点标识是指站点的标识,用于唯一标识一个站点。
97.接下来将通过步骤(1)-(3)对第一网络设备确定目标隧道的实现过程进行说明。
98.(1)、第一网络设备根据第二数据报文携带的目的地址,从该路由表中确定目标路由表项,该目的地址匹配目标路由表项包括的站点前缀。
99.由于站点前缀是指站点对应的网段,因此,可以将第二数据报文携带的目的地址与路由表中每个路由表项包括的站点前缀进行匹配,从而可以从路由表中确定目标路由表项。
100.需要说明的是,基于上述描述,第二数据报文携带的目标地址为第二站点内的用户端的地址,因此,可以确定目标路由表项包括的站点前缀为第二站点的站点前缀,目标路由表项包括的站点标识为第二站点的标识。
101.(2)、第一网络设备根据目标路由表项包括的站点标识,确定一个或多个隧道表项,该一个或多个隧道表项是指第一站点与第二站点之间建立的隧道对应的隧道表项。
102.第一网络设备中可以存储一个隧道表,这个隧道表用于存储多个站点对应的隧道表项,当然,第一网络设备中也可以存储多个隧道表,该多个隧道表与该多个站点一一对应。其中,该多个站点是指与第一站点之间建立有隧道的站点,且该多个站点包括第二站点。对于这两种情况,第一网络设备确定上述一个或多个隧道表项的方式不同,因此,接下
来分为两种情况进行说明。
103.第一种情况、第一网络设备中存储有一个隧道表。此时,第一网络设备可以根据目标路由表项包括的站点标识,确定一个或多个隧道标识,该一个或多个隧道标识是指第一站点与第二站点之间建立的隧道的标识。之后,第一网络设备可以根据该一个或多个隧道标识,从隧道表中确定上述的一个或多个隧道表项。
104.需要说明的是,不管第一网络设备中存储有多少个隧道表,每个隧道表都可以包括多个隧道表项,该多个隧道表项中的每个隧道表项可以包括一个隧道标识和对应的隧道属性信息。该隧道属性信息可以包括隧道封装方式、隧道的源地址和目的地址、隧道是否可用、隧道的带宽以及隧道的时延等。而且,在一些实施例中,第一网络设备中可以存储站点标识与隧道标识的第一映射关系,也即是,第一映射关系中存储有与第一站点建立有隧道的各个站点的标识,以及各个站点与第一站点之间建立的隧道的标识。这样,第一网络设备可以根据目标路由表项包括的站点标识,从第一映射关系中,确定一个或多个隧道标识。之后,第一网络设备可以从隧道表中确定包括的隧道标识与这一个或多个隧道标识相同的隧道表项,从而得到一个或多个隧道表项。
105.第二种情况、第一网络设备中存储有多个隧道表。此时,第一网络设备可以根据目标路由表项包括的站点标识,确定目标隧道表的标识,目标隧道表是指该多个隧道表中与第二站点对应的隧道表。之后,第一网络设备可以根据目标隧道表的标识,从该多个隧道表中确定目标隧道表,将目标隧道表中存储的隧道表项确定为上述的一个或多个隧道表项。
106.由于第一网络设备中针对不同的站点存储不同的隧道表,且第一网络设备可以存储站点标识与隧道表标识的第二映射关系,也即是,第二映射关系中存储有与第一站点建立有隧道的各个站点的标识,以及各个站点对应的隧道表的标识。这样,第一网络设备可以根据目标路由表项包括的站点标识,从第二映射关系中,确定目标隧道表的标识。之后,可以根据目标隧道表的标识,从该多个隧道表中确定目标隧道表,进而将目标隧道表中的隧道表项确定为上述的一个或多个隧道表项。
107.(3)、第一网络设备从该一个或多个隧道表项中选择一个隧道表项作为目标隧道表项,将目标隧道表项对应的隧道确定为目标隧道。
108.第一网络设备可以根据隧道选择策略,从该一个或多个隧道表项中选择一个隧道表项作为目标隧道表项,进而将目标隧道表项对应的隧道确定为目标隧道,也即是,将目标隧道表项中包括的隧道标识所标识的隧道作为目标隧道。
109.示例性地,第一网络设备存储的隧道选择策略为:选择带宽最大的隧道。这样,第一网络设备可以获取该一个或多个隧道表项中包括的隧道属性信息,并从隧道属性信息中获取隧道的带宽。之后,第一网络设备可以根据隧道的带宽,从该一个或多个隧道表项中选择带宽最大的一个隧道表项。
110.可选地,每个隧道表项中还包括一个联通标识,该联通标识用于指示对应的隧道是否联通,也即是,用于指示对应的隧道是否可用。因此,在第一网络设备根据隧道选择策略选择目标隧道表项之前,还可以从该一个或多个隧道表项中筛选联通标识有效的隧道表项,进而按照隧道选择策略,从筛选出的隧道表项中选择目标隧道表项。
111.步骤403:如果目标隧道为第三网络设备与第二站点内的网络设备之间建立的隧道,则第一网络设备在第二数据报文中添加目标隧道的隧道标识,得到第三数据报文,第三
网络设备为第一站点内的多个网络设备中除第一网络设备之外的一个网络设备。
112.需要说明的是,由于隧道表包括第一站点内的网络设备与第二站点内的网络设备之间建立的所有隧道,因此,第一网络设备确定的目标隧道可能是第一网络设备与第二站点内的网络设备之间建立的隧道,也可能是第三网络设备与第二站点内的网络设备之间建立的隧道,第三网络设备为第一站点内除第一网络设备外的一个网络设备。
113.在一些实施例中,如果目标隧道为第三网络设备与第二站点内的网络设备之间建立的隧道,则第一网络设备可以在第二数据报文中添加一个隧道索引字段,该隧道索引字段中可以包括目标隧道的隧道标识,从而得到第三数据报文。
114.示例性地,如图5所示,隧道索引字段可以包括隧道标识,该隧道标识可以为目标隧道的隧道标识。可选地,隧道索引字段还可以包括封装方式、标签、版本号、协议类型等。其中,封装方式为隧道标识对应的隧道的类型,标签为标志位,可以用于指示数据报文是用户侧发往隧道侧,或者是从隧道侧接收的,版本号为所使用的隧道索引字段的版本号,协议类型为第二数据报文的协议类型。
115.步骤404:第一网络设备通过与第三网络设备之间的网络链路,将第三数据报文发送给第三网络设备。
116.基于上述描述,第一网络设备与第三网络设备之间建立有网络链路,且第一网络设备与第三网络设备之间是通过该网络链路通信的。因此,第一网络设备在第二数据报文中添加目标隧道的隧道标识,得到第三数据报文后,可以通过第一网络设备与第三网络设备之间的网络链路将第三数据报文发送给第三网络设备。
117.需要说明的是,当第一网络设备与第三网络设备之间的距离较近时,该网络链路可以为物理链路。当第一网络设备与第三网络设备之间的距离较远,或无法通过物理链路连接时,该网络链路可以为网络隧道,该网络隧道可以包括通用路由封装(generic routing encapsulation,gre)隧道。当然,该网络隧道也可以为其他的隧道。
118.另外,第一站点内的两个网络设备之间的网络链路主要是用于同步站点内的隧道表项、以及站点内的数据报文的传输,无需发布到站点外部的网络,因此,第一站点内的网络设备上用于建立网络链路的接口上的网络地址均可以设置为私网地址,甚至不同站点都可以采用相同的地址空间,可以节约sd-wan网络对运营商网络地址资源的消耗。
119.步骤405:第三网络设备接收第三数据报文,并从第三数据报文中解析出第二数据报文,通过目标隧道发送第二数据报文。
120.在一些实施例中,由于隧道索引字段不仅包括目标隧道的隧道标识,还包括隧道索引字段的封装方式、标签、版本号、协议类型等,因此,可以按照封装方式、标签、版本号、协议类型这些信息,从第三数据报文中解析出第二数据报文,同时,还可以获取到目标隧道的隧道标识。
121.由于第三网络设备中也存储有目标隧道表项,因此,第三网络设备可以根据目标隧道的隧道标识,从目标隧道表项中获取目标隧道的隧道属性信息,进而按照获取的隧道属性信息,对第二数据报文进行隧道封装,得到第四数据报文,并通过目标隧道发送第四数据报文。
122.上述步骤403-405是针对目标隧道为第三网络设备与第二站点内的网络设备之间的隧道的情况。在目标隧道为第一网络设备与第二站点内的网络设备之间的隧道的情况
下,第一网络设备可以直接通过目标隧道发送第二数据报文。
123.在这种情况下,第一网络设备通过目标隧道发送第二数据报文的实现过程可以包括:第一网络设备可以从目标隧道表项中获取目标隧道的隧道属性信息,进而按照获取的隧道属性信息,对第二数据报文进行隧道封装,得到第四数据报文,并通过目标隧道发送第四数据报文。
124.需要说明的是,第二站点内的网络设备接收到第四数据报文后,可以对第四数据报文进行隧道解封装,从而得到第二数据报文。
125.需要说明的是,上述步骤401-405是第一站点内的用户端向第二站点内的用户端发送数据报文的情况。应当理解的是,第二站点内的用户端也可以向第一站点内的用户端发送数据报文,因此,接下来,通过步骤406-407,对第二站点内的用户端向第一站点内的用户端发送数据报文的情况进行介绍。
126.步骤406:第一网络设备接收来自第二站点的第一数据报文,第一数据报文属于第一数据流。
127.其中,第一数据流为第二站点内的用户端发送至第一站点内的用户端的数据流,故第一数据流的源地址为第二数据流的目的地址,第一数据流的目的地址为第二数据流的源地址。
128.需要说明的是,第二站点内的网络设备接收来自第二站点内的用户端的第一数据报文,并将第一数据报文发送至第一站点内的网络设备的实现过程与上述步骤401-405的方式类似,这里不作赘述。
129.步骤407:第一网络设备向第一站点内的用户端发送第一数据报文。
130.在一些实施例中,第一站点内的各个网络设备都可以与第一站点内的用户端进行通信,因此,当第一网络设备接收到来自第二站点的第一数据报文之后,可以直接向第一站点内的用户端发送第一数据报文。也即是,第一网络设备按照上述步骤406-407的方式,向第一站点内的用户端发送第一数据报文。
131.在另一些实施例中,第一站点内的多个网络设备可以按照虚拟路由冗余协议(virtual router redundancy protocol,vrrp)组成一个vrrp组。该vrrp组中包括一个主网络设备,以及一个或多个备网络设备。主网络设备用于与第一站点内的用户端进行交互,备网络设备可以在主网络设备发生故障的情况下,接替主网络设备的工作。在这种情况下,当第一网络设备为主网络设备时,在第一网络设备接收到第一数据报文之后,可以将第一数据报文发送给第一站点内的用户端。其中,第一数据报文可以是第一网络设备通过第一网络设备与第二网络设备之间的网络链路接收的数据报文,第二网络设备为第一站点内的多个网络设备中与第一网络设备建立有网络链路的一个网络设备。当然,第一数据报文也可以是第一网络设备通过第一网络设备与第二站点内的网络设备之间建立的隧道接收的数据报文。
132.需要说明的是,第二站点内的网络设备接收到第一数据报文后,可以从第二站点与第一站点之间的隧道中选择一个隧道,并通过选择的隧道将第一数据报文发送至第一站点。当选择的隧道为第二站点内的网络设备与第一网络设备之间建立的隧道时,第一网络设备可以直接通过隧道接收到第一数据报文,由于第一网络设备为主网络设备,因此,第一网络设备可以直接将第一数据报文发送给第一站点内的用户端。当选择的隧道为第二站点
内的网络设备与第二网络设备之间建立的隧道时,第二网络设备可以通过隧道接收第一数据报文。由于第一网络设备为主网络设备,因此,第二网络设备还需要将第一数据报文通过网络链路发送至第一网络设备,也即是,第一网络设备可以通过网络链路接收第二网络设备发送的第一数据报文。之后,第一网络设备可以将第一数据报文发送给第一站点内的用户端。
133.需要说明的是,第一网络设备中存储有本地路由,本地路由中存储有第一网络设备与第一站点内的用户端之间的路由信息。因此,当第一网路设备接收到第一数据报文后,可以根据本地路由向第一站点内的用户端发送第一数据报文。
134.另外,第二网络设备可以与第三网络设备为同一网络设备,当然,第二网络设备与第三网络设备也可以为不同的网络设备。
135.在本申请实施例中,由于第一站点内的多个网络设备之间建立有网络链路,第一网络设备的隧道表中不仅包括第一网络设备与第二站点内的网络设备之间的隧道对应的隧道表项,还包括第一站点内的其他网络设备与第二站点内的网络设备之间的隧道对应的隧道表项,因此,当第一网络设备接收到来自第一站点内的用户端的第二数据报文,且选择的目标隧道为第三网络设备与第二站点内的网络设备之间的隧道时,第一网络设备可以通过与第三网络设备之间的网络链路,将第二数据报文发送给第三网络设备,进而由第三网络设备通过目标隧道发送给第二站点,从而实现了第一网络设备与第三网络设备之间的互通,无需创建过多的隧道即可实现第一站点与第二站点之间的通信。
136.图6是本申请实施例提供的一种报文发送方法的流程图,在本申请实施例中,第一站点内部署有多个网络设备,第一站点内部署的网络设备与第二站点内的部署的网络设备之间建立有多条隧道,第二站点是指与第一站点传输数据的站点。请参考图6,该方法包括如下步骤。
137.步骤601:第一网络设备接收来自第一站点内的用户端的第二数据报文,第二数据报文携带目的地址,第二数据报文属于第二数据流。
138.在本申请实施例中,步骤601中相关解释可以参考前述实施例中步骤401中的相关解释,在此不再赘述。
139.步骤602:第一网络设备根据第二数据报文携带的目的地址,从第一站点与第二站点之间建立的多条隧道中选择一条隧道作为目标隧道。
140.在本申请实施例中,步骤602中相关解释可以参考前述实施例中步骤402中的相关解释,在此不再赘述。
141.步骤603:第一网络设备根据第二数据流的流标识确定第一数据流的流标识。
142.其中,第一数据流为第二站点内的用户端发送至第一站点内的用户端的数据流,第二数据流为第一站点内的用户端发送至第二站点内的用户端的数据流,故第一数据流的源地址为第二数据流的目的地址,第一数据流的目的地址为第二数据流的源地址。
143.在一些实施例中,第一网络设备可以根据第二数据报文确定第二数据流的流标识,进而根据第二数据流的流标识确定第一数据流的流标识。
144.作为一种示例,第一网络设备可以获取第二数据报文的元组信息,该元组信息中至少包括源端信息和目的端信息。将获取到的元组信息作为第二数据流的流标识。之后,第一网络设备可以将第二数据流的流标识中源端信息和目的端信息对调,得到第一数据流的
流标识。
145.需要说明的是,在这种示例中,可以将第二数据报文的五元组信息确定为第二数据流的流标识,也可以将第二数据报文的三元组信息确定为第二数据流的流标识,或者,将第二数据报文的七元组信息确定为第二数据流的流标识,本申请实施例对此不作限定,只要第二数据流的流标识中至少包括源端信息和目的端信息即可唯一标识第二数据流。
146.比如,第二数据流的流标识为五元组信息,且源地址:192.168.0.1,目的地址:192.168.1.1,源端口:端口1,目的端口:端口2,协议号:协议号1。之后,第一网络设备可以将第二数据流的流标识中的源地址和目的地址对调,以及将第二数据流的流标识中的源端口和目的端口对调,得到新的五元组信息,源地址:192.168.1.1,目的地址:192.168.0.1,源端口:端口2,目的端口:端口1,协议号:协议号1,并将该新的五元组信息作为第一数据流的流标识。
147.作为另一种示例,第一网络设备可以获取第二数据报文的元组信息,根据第二数据报文的元组信息,从存储的元组信息与流标识之间的对应关系中,获取第二数据流的流标识。之后,根据第二数据流的流标识,从存储的第一数据流标识与第二数据流标识之间的对应关系中,获取第一数据流的流标识。
148.比如,第二数据报文的五元组信息为,源地址:192.168.0.1,目的地址:192.168.1.1,源端口:端口1,目的端口:端口2,协议号:协议号1。之后,第一网络设备可以根据第二数据报文的五元组信息,从下述表1所示的元组信息与流标识之间的对应关系中,获取第二数据流的流标识为id2。之后,第一网络设备根据第二数据流的流标识,从下述表2所示的第一数据流标识与第二数据流标识之间的对应关系中,获取第一数据流的流标识为id1。
149.表1
150.151.表2
152.第二数据流标识第一数据流标识id2id1id4id3id6id5
153.步骤604:第一网络设备在第一网络设备存储的流表中添加目标流表项。
154.其中,该流表中可以包括多个流表项,该多个流表项中的每个流表项包括一个流标识和对应的出接口标识,因此,当前添加的目标流表项中包括一个流标识和对应的出接口标识,且当前添加的目标流表项中的流标识为第一数据流的流标识,当前添加的目标流表项中的出接口标识为第一接口的标识,第一接口是指第一网络设备中用于从第一站点内的用户端接收第二数据报文的接口。
155.需要说明的是,由于同一个数据流在流入第一网络设备时,可能是通过与第一站点内的用户端通信的接口流入第一网络设备,也可能是通过与第一站点内其他网络设备通信的接口流入第一网络设备,这样,第一网络设备当前添加的目标流表项中的出接口标识可能为第一网络设备中与第一站点内的用户端通信的接口,也可能为第一网络设备中与第一站点内的其他网络设备通信的接口。
156.步骤605:如果目标隧道为第一网络设备与第二站点内的网络设备之间建立的隧道,则第一网络设备通过目标隧道发送第二数据报文。
157.在这种情况下,第一网络设备可以直接通过目标隧道发送第二数据报文。第一网络设备通过目标隧道发送第二数据报文的实现过程可以包括:第一网络设备可以从目标隧道表项中获取目标隧道的隧道属性信息,进而按照获取的隧道属性信息,对第二数据报文进行隧道封装,得到第四数据报文,并通过目标隧道发送第四数据报文。
158.上述步骤605是针对目标隧道为第一网络设备与第二站点内的网络设备之间建立的隧道的情况。在目标隧道为第四网络设备与第二站点内的网络设备之间的隧道的情况下,第一网络设备可以在第二数据报文中添加目标隧道的隧道标识,得到第三数据报文,第四网络设备为第一站点内的多个网络设备中除第一网络设备之外的一个网络设备。第一网络设备将第三数据报文发送给第四网络设备。第四网络设备接收第三数据报文,从第三数据报文中解析出第二数据报文。第四网络设备根据第二数据流的流标识确定第一数据流的流标识,在第四网络设备存储的流表中添加目标流表项,并通过目标隧道发送第二数据报文,其中,第四网络设备当前添加的目标流表项包括的流标识为第一数据流的流标识,当前添加的目标流表项中的出接口标识为第二接口的标识,第二接口是指第四网络设备中用于接收第三数据报文的接口。
159.其中,第一网络设备得到第三数据报文,将第三数据报文发送至第四网络设备,第四网络设备接收到第三数据报文后解析出第二数据报文的具体的实现方式可以参考前述实施例中步骤403-405中的实现方式,在此不再赘述。
160.在本申请实施例中,第四网络设备确定第一数据流的流标识并在存储的流表中添加目标流表项的具体实现方式可以参考前述步骤603-604中的实现方式,在此不再赘述。
161.需要说明的是,由于第四网络设备是通过与第一网络设备之间的网络链路接收到第三数据报文,因此,第四网络设备当前添加的目标流表项中的出接口标识为与第一网络
设备通信的接口,也即是,第二类接口。
162.需要说明的是,上述步骤601-605是第一站点内的用户端向第二站点内的用户端发送数据报文的情况。应当理解的是,第二站点内的用户端也可以向第一站点内的用户端发送数据报文,因此,接下来,通过步骤606-608,对第二站点内的用户端向第一站点内的用户端发送数据报文的情况进行介绍。
163.步骤606:第一网络设备接收来自第二站点的第一数据报文,第一数据报文属于第一数据流。
164.在本申请实施例中,第一数据报文是第一网络设备通过第一网络设备与第二站点内的网络设备之间建立的隧道接收的数据报文,或者,第一数据报文是第一网络设备接收第五网络设备发送的数据报文,第五网络设备为多个网络设备中除第一网络设备之外的一个网络设备。
165.为了保证关于同一应用发送的数据报文和接收的数据报文经由同一网络设备,因此,在第一站点内的某个网络设备通过与第二站点之间的隧道接收到第一数据报文之后,需要查找流标识为第一数据流的流表标识的目标流表项。如果这个网络设备中不存在目标流表项,那么可以表明第二数据流并未经由这个网络设备,那么,这个网络设备需要将第一数据报文发送给第一站点内的其他网络设备,从而查找到第二数据流经由的网络设备。所以,第一数据报文也有可能是第一网络设备接收第五网络设备发送的数据报文。
166.需要说明的是,第五网络设备可以与第四网络设备为同一网络设备,也可以与第四网络设备为不同的网络设备。
167.步骤607:第一网络设备从第一网络设备存储的流表中,查找流标识为第一数据流的流标识的目标流表项。
168.基于上述描述,流表包括多个流表项,该多个流表项中的每个流表项包括一个流标识和对应的出接口标识,第一数据流为第一数据报文所属的数据流,因此,第一网络设备可以将第一数据流的流标识与流表中的每个流表项包括的流标识进行比较,从而查找流标识为第一数据流的流标识的目标流表项。
169.步骤608:如果查找到目标流表项,则第一网络设备通过目标流表项中的出接口标识对应的接口发送第一数据报文。
170.在一些实施例中,当第一网络设备查找到目标流表项时,可以获取目标流表项包括的出接口标识,进而根据出接口标识对应的接口发送第一数据报文。由于目标流表项包括的出接口标识对应的接口可能为与第一站点内的用户端通信的接口,也可能为与第一站点内的其他网络设备通信的接口,因此,接下来分别对该两种情况下发送第一数据报文的方法进行说明。
171.在一种可能的情况下,如果目标流表项中的出接口标识对应的接口为第一类接口,则第一网络设备通过目标流表项中的出接口标识对应的接口,将第一数据报文发送给第一站点内的用户端,第一类接口是指与第一站点内的用户端之间通信的接口。
172.在另一种可能的情况下,如果目标流表项中的出接口标识对应的接口为第二类接口,则第一网络设备通过目标流表项中的出接口标识对应的接口,将第一数据报文发送给第三网络设备,以指示第三网络设备从第三网络设备存储的流表中查找目标流表项,第二类接口是指与第一站点内的多个网络设备中的其他网络设备之间通信的接口,第三网络设
备是指第一站点内的多个网络设备中通过目标流表项中的出接口标识对应的接口与第一网络设备通信的设备。
173.需要说明的是,第三网络设备与第五网络设备可能为不同的网络设备,但是第三网络设备可以与第四网络设备为同一网络设备,也可以与第四网络设备为不同的网络设备。
174.在另一些实施例中,当第一网络设备未查找到目标流表项时,第一网络设备可以确定第一站点内的多个网络设备中是否还存在未查找目标流表项的网络设备。如果第一站点内的多个网络设备中还存在未查找目标流表项的网络设备,则第一网络设备将第一数据报文发送给第二网络设备,以指示第二网络设备从第二网络设备存储的流表中查找目标流表项,第二网络设备为第一站点内的多个网络设备中未查找目标流表项的一个网络设备。如果第一站点内的多个网络设备均已查找目标流表项,则第一网络设备通过本地路由发送第一数据报文。
175.作为一种示例,第一站点内的多个网络设备中每两个网络设备之间可以通过网络链路进行连接,也即是,每两个网络设备之间可以进行通信。在这种情况下,第一数据报文中可以携带第一数据报文经过的每个网络设备的设备标识。这样,当第一网络设备确定第一站点内是否还存在未查找目标流表项的网络设备时,可以根据第一数据报文中携带的网络设备的设备标识,确定第一站点内的多个网络设备中未查找目标流表项的网络设备。
176.可选地,在这种情况下,可以在第一数据报文中添加一个设备标识字段,该设备标识字段中可以包括第一数据报文经过的每个网络设备的设备标识。这样,当第一网络设备确定第一站点内是否还存在未查找目标流表项的网络设备时,可以根据第一数据报文中的设备标识字段中包括的设备标识,确定第一站点内的多个网络设备中未查找目标流表项的网络设备。
177.示例性地,如图7所示,第一站点内部署有3台网络设备,分别为网络设备701、网络设备702、网络设备703,且网络设备701分别与网络设备702、网络设备703之间有网络链路,网络设备702分别与网络设备701、网络设备703之间有网络链路,网络设备703分别与网络设备701、网络设备702之间有网络链路。当网络设备701接收到第一数据报文后,在流表中未查找到目标流表项的情况下,网络设备701可以获取第一数据报文携带的设备标识字段,并根据设备标识字段包括的网络设备的设备标识,确定第一站点内未查找目标流表项的网络设备。假设,网络设备702和网络设备703都未查找目标流表项,网络设备701可以在第一数据报文携带的设备标识字段中添加自身的设备标识,并将第一数据报文通过网络链路发送至网络设备702或网络设备703,在此以发送至网络设备702为例。网络设备702接收到第一数据报文后,在流表中未查找到目标流表项的情况下,网络设备702可以获取第一数据报文中携带的设备标识字段,并根据设备标识字段包括的网络设备的设备标识,确定第一站点内未查找目标流表项的网络设备为网络设备703,之后,网络设备702可以在第一数据报文携带的设备标识字段中添加自身的设备标识,进而将第一数据报文发送至网络设备703。
178.需要说明的是,第一站点内的各个网络设备中都存储有本地路由,本地路由中存储有相应网络设备与第一站点内的用户端之间的路由信息。因此,当第一网络设备接收到第一数据报文,且第一站点内的多个网络设备均已查找过目标流表项后,可以根据本地路由向第一站点内的用户端发送第一数据报文。
179.另外,第二网络设备与第五网络设备可能为不同的网络设备,但是,第二网络设备可以与第三网络设备和第四网络设备为同一网络设备,也可以与第三网络设备和第四网络设备为不同的网络设备。
180.可选地,在第一数据流包括的数据报文通过第一网络设备与第二站点内的网络设备之间的隧道发送给第二站点的情况下,当第一网络设备在第一网络设备存储的流表中添加目标流表项后,第一网络设备可以将目标流表项通过网络链路发送给第一站点内的其他网络设备。其他网络设备接收到目标流表项后,可以将目标流表项的出接口修改为第二类接口,也即是,每个其他网络设备与第一网络设备通信的接口,并将修改后的目标流表项存储在流表中。这样,当其他网络设备接收到第一数据报文时,在存储的流表中查找到目标流表项,可以将第一数据报文通过目标流表项包括的出接口标识对应的接口发送至第一网络设备,之后,第一网络设备可以根据目标流表项将第一数据报文发送至第一站点内的用户端。由此可见,将目标流表项同步至第一站点内的其他网络设备中,可以大大减少在未查找到目标流表项时,将第一数据报文在网络设备间不断的遍历查询的情况,提高了第一数据报文发送的效率。
181.在本申请实施例中,当第一网络设备接收到来自第二站点的第一数据报文时,可以在流表中查找流标识为第一数据流的流标识的目标流表项。由于第一数据流为第一数据报文所属的数据流,目标流表项是从第一站点向第二站点发送第二数据流时创建的,第二数据流的源地址为第一数据流的目的地址,第二数据流的目的地址为第一数据流的源地址,因此,只有在第二数据流经由第一网络设备的情况下,第一网络设备的流表中才存在目标流表项,这样,第一网络设备才可以查找到目标流表项,进而通过目标流表项中的出接口标识对应的接口发送第一数据报文。由此可见,本申请实施例可以确保关于同一应用发送的报文和接收的报文都经过同一网络设备。
182.上述实施例均是以第一站点内部署有多个网络设备为例,对本申请实施例提供的报文发送方法进行介绍的。接下来以第一站点内部署有第一网络设备和第二网络设备为例,对本申请实施例提供的报文发送方法进行说明。请参考图8,图8是本申请实施例提供的一种报文发送方法的流程图,在本申请实施例中,第一网络设备和第二网络设备分别与第三网络设备之间建立有隧道,第二站点是指与第一站点传输数据的站点。该方法包括如下步骤。
183.步骤801:第一网络设备接收来自第一站点内的用户端的第二数据报文,第二数据报文携带目的地址,第二数据报文属于第二数据流。
184.在本申请实施例中,步骤801中相关解释可以参考前述实施例中步骤401中的相关解释,在此不再赘述。
185.步骤802:第一网络设备根据第二数据报文携带的目的地址,从第一站点与第二站点之间建立的多条隧道中选择一条隧道作为目标隧道。
186.在本申请实施例中,步骤802中相关解释可以参考前述实施例中步骤402中的相关解释,在此不再赘述。
187.步骤803:第一网络设备根据第二数据流的流标识确定第一数据流的流标识。
188.在本申请实施例中,步骤803中相关解释可以参考前述实施例中步骤603中的相关解释,在此不再赘述。
189.步骤804:第一网络设备在第一网络设备存储的流表中添加目标流表项。
190.在本申请实施例中,步骤804中相关解释可以参考前述实施例中步骤604中的相关解释,在此不再赘述。
191.步骤805:如果目标隧道为第一网络设备与第二站点内的网络设备之间建立的隧道,则第一网络设备通过目标隧道发送第二数据报文。
192.在本申请实施例中,步骤805中相关解释可以参考前述实施例中步骤605中的相关解释,在此不再赘述。
193.上述步骤805是针对目标隧道为第一网络设备与第二站点内的网络设备之间建立的隧道的情况。在目标隧道为第二网络设备与第二站点内的网络设备之间的隧道的情况下,第一网络设备可以在第二数据报文中添加目标隧道的隧道标识,得到第三数据报文。第一网络设备将第三数据报文发送给第二网络设备,以指示第二网络设备解析出第二数据报文。第二网络设备根据第二数据流的流标识确定第一数据流的流标识,在第二网络设备存储的流表中添加目标流表项,并通过目标隧道发送第二数据报文,其中,当前添加的目标流表项包括的流标识为第一数据流的流标识,当前添加的目标流表项中的出接口标识为第二接口的标识,第二接口是指第二网络设备中用于接收第三数据报文的接口。
194.其中,第一网络设备得到第三数据报文,将第三数据报文发送至第二网络设备,第二网络设备接收到第三数据报文后解析出第二数据报文的具体的实现方式可以参考前述实施例中步骤403-405中的实现方式,在此不再赘述。
195.在本申请实施例中,第二网络设备确定第一数据流的流标识并在存储的流表中添加目标流表项的具体实现方式可以参考前述实施例中步骤603-604中的实现方式,在此不再赘述。
196.需要说明的是,上述步骤801-805是第一站点内的用户端向第二站点内的用户端发送数据报文的情况。应当理解的是,第二站点内的用户端也可以向第一站点内的用户端发送数据报文,因此,接下来,通过步骤806-808,对第二站点内的用户端向第一站点内的用户端发送数据报文的情况进行介绍。
197.步骤806:第一网络设备接收来自第二站点的第一数据报文,第一数据报文属于第一数据流。
198.在本申请实施例中,步骤806中相关解释可以参考前述实施例中步骤606中的相关解释,在此不再赘述。
199.步骤807:第一网络设备从第一网络设备存储的流表中,查找流标识为第一数据流的流标识的目标流表项。
200.在本申请实施例中,步骤807中相关解释可以参考前述实施例中步骤607中的相关解释,在此不再赘述。
201.步骤808:如果查找到目标流表项,则第一网络设备通过目标流表项中的出接口标识对应的接口发送第一数据报文。
202.在一些实施例中,当第一网络设备查找到目标流表项时,可以获取目标流表项包括的出接口标识,进而根据出接口标识对应的接口发送第一数据报文。由于目标流表项包括的出接口标识对应的接口可能为与第一站点内的用户端通信的接口,也可能为与第二网络设备通信的接口,因此,接下来分别对该两种情况下发送第一数据报文的方法进行说明。
203.在一种可能的情况下,如果目标流表项中的出接口标识对应的接口为第一类接口,则第一网络设备通过目标流表项中的出接口标识对应的接口,将第一数据报文发送给第一站点内的用户端,第一类接口是指与第一站点内的用户端之间通信的接口。
204.在另一种可能的情况下,如果目标流表项中的出接口标识对应的接口为第二类接口,则第一网络设备通过目标流表项中的出接口标识对应的接口,将第一数据报文发送给第二网络设备,以指示第二网络设备从第二网络设备存储的流表中查找目标流表项,第二类接口是指与第二网络设备之间通信的接口。
205.在另一些实施例中,如果第一网络设备未查找到目标流表项,且第一数据报文是通过第一网络设备与第二站点内的网络设备之间建立的隧道接收的,则第一网络设备可以将第一数据报文发送至第二网络设备,以指示第二网络设备从第二网络设备存储的流表中查找目标流表项。如果第二网络设备从存储的流表中查找到目标流表项,此时,第二网络设备可以根据目标流表项包括的出接口标识对应的接口向第一站点内的用户端发送第一数据报文。如果第二网络设备从存储的流表中未查找到目标流表项,此时,第二网络设备可以根据配置的本地路由所指示的接口向第一站点内的用户端发送第一数据报文。
206.如果第一网络设备未查找到目标流表项,且第一数据报文是通过第一网络设备与第二网络设备之间的网络链路接收的,则第一网络设备可以根据配置的本地路由所指示的接口向第一站点内的用户端发送第一数据报文。
207.需要说明的是,第一网络设备和第二网络设备中都存储有本地路由,第一网络设备存储的本地路由中存储有第一网络设备与第一站点内的用户端之间的路由信息,第二网络设备存储的本地路由中存储有第二网络设备与第一站点内的用户端之间的路由信息。因此,当第一网路设备或第二网络设备向第一站点内的用户端发送第一数据报文时,可以根据各自存储的本地路由向第一站点内的用户端发送第一数据报文。
208.在本申请实施例中,当第一网络设备接收到来自第二站点的第一数据报文时,可以在流表中查找流标识为第一数据流的流标识的目标流表项。由于第一数据流为第一数据报文所属的数据流,目标流表项是从第一站点向第二站点发送第二数据流时创建的,第二数据流的源地址为第一数据流的目的地址,第二数据流的目的地址为第一数据流的源地址,因此,只有在第二数据流经由第一网络设备的情况下,第一网络设备的流表中才存在目标流表项,这样,第一网络设备才可以查找到目标流表项,进而通过目标流表项中的出接口标识对应的接口发送第一数据报文。由此可见,本申请实施例可以确保关于同一应用发送的报文和接收的报文都经过同一网络设备。
209.图9是本申请实施例提供的一种报文发送装置的结构示意图,该报文发送装置可以由软件、硬件或者两者的结合实现成为第一网络设备的部分或者全部。其中,第一站点内部署有多个网络设备,第一站点内部署的网络设备与第二站点内的部署的网络设备之间建立有多条隧道,第二站点是指与第一站点传输数据的站点,第一网络设备为第一站点内的多个网络设备中的任一网络设备。参见图9,该装置包括:第一接收模块901、查找模块902和第一发送模块903。
210.第一接收模块901,用于接收来自第二站点的第一数据报文;
211.查找模块902,用于从第一网络设备存储的流表中,查找流标识为第一数据流的流标识的目标流表项,该流表包括多个流表项,该多个流表项中的每个流表项包括一个流标
识和对应的出接口标识,第一数据流为第一数据报文所属的数据流,目标流表项是从第一站点向第二站点发送第二数据流时创建的,第二数据流的源地址为第一数据流的目的地址,第二数据流的目的地址为第一数据流的源地址;
212.第一发送模块903,用于如果查找到目标流表项,则通过目标流表项中的出接口标识对应的接口发送第一数据报文。
213.可选地,该装置还包括:
214.第二发送模块,用于如果未查找到目标流表项,且该多个网络设备中还存在未查找目标流表项的网络设备,则将第一数据报文发送给第二网络设备,以指示第二网络设备从第二网络设备存储的流表中查找目标流表项,第二网络设备为该多个网络设备中未查找目标流表项的一个网络设备;
215.第三发送模块,用于如果未查找到目标流表项,且该多个网络设备均已查找过目标流表项,则通过本地路由发送第一数据报文。
216.可选地,第一发送模块903主要用于:
217.如果目标流表项中的出接口标识对应的接口为第一类接口,则通过目标流表项中的出接口标识对应的接口,将第一数据报文发送给第一站点内的用户端,第一类接口是指与第一站点内的用户端之间通信的接口;
218.如果目标流表项中的出接口标识对应的接口为第二类接口,则通过目标流表项中的出接口标识对应的接口,将第一数据报文发送给第三网络设备,以指示第三网络设备从第三网络设备存储的流表中查找目标流表项,第二类接口是指与该多个网络设备中的其他网络设备之间通信的接口,第三网络设备是指该多个网络设备中通过目标流表项中的出接口标识对应的接口与所述第一网络设备通信的设备。
219.可选地,该装置还包括:
220.第二接收模块,用于接收来自第一站点内的用户端的第二数据报文,第二数据报文携带目的地址,第二数据报文属于所述第二数据流;
221.选择模块,用于根据目的地址,从该多条隧道中选择一条隧道作为目标隧道;
222.确定模块,用于根据第二数据流的流标识确定第一数据流的流标识;
223.第一添加模块,用于在第一网络设备存储的流表中添加目标流表项,其中,当前添加的目标流表项中的流标识为第一数据流的流标识,当前添加的目标流表项中的出接口标识为第一接口的标识,第一接口是指第一网络设备中用于从第一站点内的用户端接收第二数据报文的接口;
224.第四发送模块,用于如果目标隧道为第一网络设备与第二站点内的网络设备之间建立的隧道,则通过目标隧道发送第二数据报文。
225.可选地,第一网络设备中存储有路由表,该路由表包括多个路由表项,该多个路由表项中的每个路由表项包括一个站点前缀和对应的站点标识;
226.选择模块主要用于:
227.根据第二数据报文携带的目的地址,从路由表中确定目标路由表项,第二数据报文携带的目的地址匹配目标路由表项包括的站点前缀;
228.根据目标路由表项包括的站点标识,确定一个或多个隧道表项,该一个或多个隧道表项是指第一站点与第二站点之间建立的隧道对应的隧道表项;
229.从该一个或多个隧道表项中选择一个隧道表项作为目标隧道表项,将目标隧道表项对应的隧道作为目标隧道。
230.可选地,第二数据流的流标识中包括源端信息和目的端信息;
231.确定模块主要用于:
232.将第二数据流的流标识中源端信息和目的端信息对调之后,得到第一数据流的流标识。
233.可选地,该装置还包括:
234.第二添加模块,用于如果目标隧道为第四网络设备与第二站点内的网络设备之间建立的隧道,则在第二数据报文中添加目标隧道的隧道标识,得到第三数据报文,第四网络设备为该多个网络设备中除第一网络设备之外的一个网络设备;
235.第五发送模块,用于将第三数据报文发送给第四网络设备,以指示第四网络设备解析出第二数据报文,根据第二数据流的流标识确定第一数据流的流标识,在第四网络设备存储的流表中添加目标流表项,并通过目标隧道发送该第二数据报文,其中,当前添加的目标流表项包括的流标识为第一数据流的流标识,当前添加的目标流表项中的出接口标识为第二接口的标识,第二接口是指第四网络设备中用于接收第三数据报文的接口。
236.可选地,第一数据报文是第一网络设备通过第一网络设备与第二站点内的网络设备之间建立的隧道接收的数据报文,或者,第一数据报文是第一网络设备接收第五网络设备发送的数据报文,第五网络设备为该多个网络设备中除第一网络设备之外的一个网络设备。
237.可选地,该多个网络设备之间建立有网络链路,该多个网络设备是通过该网络链路通信的,该网络链路为物理链路或者网络隧道,该网络隧道包括gre隧道。
238.在本申请实施例中,当第一网络设备接收到来自第二站点的第一数据报文时,可以在流表中查找流标识为第一数据流的流标识的目标流表项。由于第一数据流为第一数据报文所属的数据流,目标流表项是从第一站点向第二站点发送第二数据流时创建的,第二数据流的源地址为第一数据流的目的地址,第二数据流的目的地址为第一数据流的源地址,因此,只有在第二数据流经由第一网络设备的情况下,第一网络设备的流表中才存在目标流表项,这样,第一网络设备才可以查找到目标流表项,进而通过目标流表项中的出接口标识对应的接口发送第一数据报文。由此可见,本申请实施例可以确保关于同一应用发送的报文和接收的报文都经过同一网络设备。
239.图10是本申请实施例提供的另一种报文发送装置的结构示意图,该报文发送装置可以由软件、硬件或者两者的结合实现成为第一网络设备的部分或者全部,其中,第一站点内部署有多个网络设备,该多个网络设备之间建立有网络链路,第一站点内部署的网络设备与第二站点内的部署的网络设备之间建立有多条隧道,第二站点是指与第一站点传输数据的站点,第一网络设备为该多个网络设备中的任一网络设备。参见图10,该装置包括:接收模块1001和发送模块1002。
240.接收模块1001,用于接收来自第二站点的第一数据报文,第一数据报文是第一网络设备通过第一网络设备与第二网络设备之间的网络链路接收的数据报文,第二网络设备为该多个网络设备中与第一网络设备建立有网络链路的一个网络设备;
241.发送模块1002,用于向第一站点内的用户端发送第一数据报文。
242.在本申请实施例中,由于第一站点内的多个网络设备之间建立有网络链路,第一网络设备的隧道表中不仅包括第一网络设备与第二站点内的网络设备之间的隧道对应的隧道表项,还包括第一站点内的其他网络设备与第二站点内的网络设备之间的隧道对应的隧道表项,因此,当第一网络设备接收到来自第一站点内的用户端的第二数据报文,且选择的目标隧道为第三网络设备与第二站点内的网络设备之间的隧道时,第一网络设备可以通过与第三网络设备之间的网络链路,将第二数据报文发送给第三网络设备,进而由第三网络设备通过目标隧道发送给第二站点,从而实现了第一网络设备与第三网络设备之间的互通,无需创建过多的隧道即可实现第一站点与第二站点之间的通信。
243.需要说明的是:上述实施例提供的报文发送装置在发送报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的报文发送装置与报文发送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
244.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,dvd))或半导体介质(例如:固态硬盘(solid state disk,ssd))等。值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
245.本申请中术语“第一”、“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一图像可以被称为第二图像,并且类似地,第二图像可以被称为第一图像。第一图像和第二图像都可以是图像,并且在某些情况下,可以是单独且不同的图像。
246.本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
247.应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,
单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
248.还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
249.还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
250.应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。
251.还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
252.还应理解,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
253.还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
[0254]
应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
[0255]
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1