实现UDP报文聚合转发的方法、客户端、服务器端网关设备与流程
未命名
08-13
阅读:132
评论:0
实现udp报文聚合转发的方法、客户端、服务器端网关设备
技术领域
1.本发明涉及以太网通信技术领域,具体涉及一种实现udp报文聚合转发的方法、客户端、服务器端网关设备。
背景技术:
2.多网卡聚合是由多个小容量网络通道形成一个大容量通道,将数据先拆包再组包,中间传输经由多个不同的链路实现,将大的数据高速、稳定、安全地传送至云端,可达到高安全、大带宽、业务不中断的效果。
3.mptcp(multipath tcp,多路径tcp)允许tcp(transmission control protocol,传输控制协议)连接使用多个路径来最大化信道资源使用,现有实现多网卡聚合大多是基于软件的mptcp。mptcp的优点是可以跨多个接口平衡单个tcp连接,也能根据链路质量实现选路。
4.常用的音视频是基于udp(user datagram protocol,用户数据报协议)的,但是udp是基于数据报的而mptcp是基于数据流的,因此在现有技术中,网关在代理udp报文时不能直接使用mptcp的多路功能,也就是说,无法直接实现通过mptcp代理udp报文的转发。
技术实现要素:
5.本发明实施例提供一种实现udp报文聚合转发的方法、客户端网关设备、服务器,以提高对udp报文的传输能力。
6.为此,本发明提供如下技术方案:
7.一方面,本发明实施例提供一种实现udp报文聚合转发的方法,应用于客户端网关,所述客户端网关上配置有内核mptcp,且与多个网口关联,所述方法包括:
8.接收客户端报文;
9.将所述客户端报文封装为udp报文;
10.将所述udp报文转换为rds报文;
11.将所述rds报文基于mptcp通过所述多个网口发送至服务器端网关。
12.可选地,所述将所述客户端报文封装为udp报文包括:
13.将所述客户端报文封装为基于套接字的udp报文。
14.可选地,所述将所述udp报文转换为rds格式报文包括:根据rds和udp的用户编程接口将所述基于套接字的udp报文转换为基于套接字的rds报文。
15.可选地,所述将所述rds格式报文基于mptcp通过所述多个网口发送至服务器端网关包括:
16.将所述rds格式报文承载到mptcp报文中;
17.基于mptcp通过所述多个网口将所述mptcp报文发送至所述服务器端网关。
18.另一方面,本发明实施例还提供一种实现udp报文聚合转发的方法,应用于服务器端网关,所述方法包括:
19.接收客户端网关基于mptcp发送的mptcp报文;
20.解析所述mptcp报文,得到rds报文;
21.将所述rds报文转换为udp报文;
22.解析所述udp报文,得到客户端报文及其目的地址;
23.将所述客户端报文发送至所述目的地址对应的目标服务器。
24.可选地,所述mptcp报文包括:子路径序号、tcp报文及其目的地址;
25.所述解析所述mptcp报文,得到rds报文包括:
26.根据所述子路径序号及其目的地址对所述tcp报文进行排序,得到排序后的tcp报文;
27.解析所述排序后的tcp报文,得到rds报文。
28.可选地,所述将所述rds报文转换为udp报文包括:根据udp和rds的用户编程接口将所述rds报文转换为udp报文。
29.可选地,所述udp报文为基于套接字的udp报文;所述解析所述udp报文,得到客户端报文及其目的地址包括:去除所述udp报文中的套接字头,得到客户端报文及其目的地址。
30.另一方面,本发明实施例还提供一种客户端网关设备,包括:
31.配置模块,用于配置内核mptcp,并关联到多个网口;
32.第一接收模块,用于接收客户端报文;
33.udp代理模块,用于将所述客户端报文封装为udp报文;
34.第一格式转换模块,用于将所述udp报文转换为rds报文;
35.第一发送模块,用于将所述rds报文基于mptcp通过所述多个网口发送至目标服务器。
36.另一方面,本发明实施例还提供一种服务器端网关设备,包括:
37.第二接收模块,用于接收客户端网关基于mptcp发送的mptcp报文;
38.第一解析模块,用于解析所述mptcp报文,得到rds报文;
39.第二格式转换模块,用于将所述rds报文转换为udp报文;
40.第二解析模块,用于解析所述udp报文,得到客户端报文及其目的地址;
41.第二发送模块,用于将所述客户端报文发送至所述目的地址对应的客户端。
42.本发明实施例提供的实现udp报文聚合转发的方法、客户端网关设备、服务器端网关设备,客户端网关上配置有内核mptcp,且与多个网口关联,在接收到客户端发送的报文后,将客户端报文封装为udp报文,将udp报文转换为rds报文,将rds报文基于mptcp通过所述多个网口发送至服务器端网关,从而对udp报文实现全内核态的聚合转发,提升了客户端网关对udp报文的处理能力,进而提升了udp报文的发送效率。相应地,服务器端网关接收到客户端网关基于mptcp发送的mptcp报文后,对其进行解析,得到rds报文,然后再将该rds报文转换为udp报文,解析所述udp报文得到客户端报文及其目的地址,将该客户端报文发送至其目的地址对应的目标服务器,保证了客户端报文高效、准确的传输。
附图说明
43.图1是本发明实施例提供的实现udp报文聚合转发的方法的一种流程图;
44.图2是udp报文格式示意图;
45.图3是本发明实施例提供的实现udp报文聚合转发的方法的另一种流程图;
46.图4是本发明实施例提供网关设备的一种结构示意图;
47.图5是本发明实施例提供的服务器的一种结构示意图;
48.图6是利用本发明实施例提供的客户端网关设备和服务器端网关设备实现udp报文传输的系统示意图。
具体实施方式
49.为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
50.针对现有技术中客户端网关在代理udp报文时,无法直接实现基于mptcp方式对udp报文进行转发这一问题,本发明实施例提供一种实现udp报文聚合转发的方法及装置、客户端网关设备、服务器网关设备,利用rds(reliable datagram sockets,可靠数据报套接字)协议可以基于mptcp、并且rds传输承载的同样是数据报文这一特点,将udp报文转化为rds报文,将所述rds报文基于mptcp通过所述多个网口发送至服务器端网关,从而对udp报文实现全内核态的聚合转发,有效提升udp报文的发送效率。
51.rds是一种用于传递数据报的高性能、低延迟、可靠、无连接的协议,并且该协议已经集成在linux内核中。rds提供和udp类似的用户接口,用法相同,但rds比udp增加实现了可靠传输和高性能。可靠是因为rds这个协议设计时就可以自己转为tcp再发送,高性能是因为rds可利用cpu多核等特性。
52.如图1所示,是本发明实施例提供的实现udp报文聚合转发的方法的一种流程图。
53.图1所示实施例的方法可以应用于客户端网关设备,所述客户端网关上配置有内核mptcp,且与多个网口关联,比如与以太网口eth0、eth1关联。该方法包括以下步骤:
54.步骤101,接收客户端报文。
55.步骤102,将所述客户端报文封装为udp报文。
56.udp报文格式如图2所示,包括以下几部分:
57.(1)源端口,用于表示发送数据报文的应用程序使用的udp端口。
58.(2)目的端口,用于表示接收端应用程序使用的udp端口。
59.(3)长度,表示udp报文的总长度,该总长度包含8字节的udp报文头和udp数据的长度。
60.(4)校验值,用于在接收端进行对比校验,确定接收的udp报文是否有错。
61.(5) 数据,即udp报文承载的数据。
62.在本发明实施例中,所述客户端报文承载在上述udp数据对应的字段。在本发明实施例中,可以将客户端报文封装为基于套接字(socks)的udp报文,具体地,将需要发送的udp报文发送到socks5服务器,由socks5服务器将udp报文封装为基于套接字的udp报文,为了描述方便,将其记为socks-udp。
63.socks协议是一种代理(proxy)协议,目前最新的版本为socks5,它在使用tcp/ip协议通讯的前端设备和服务器之间扮演一个中介角色,使得内部网中的前端设备变得能够访问因特网(internet)中的服务器,或者使通讯更加安全。socks 5协议工作在传输层
(transport layer)与应用层(application layer)的中间,提供了一种对应用层协议透明的代理服务,当主机与代理服务器完成socks握手之后,应用层对代理服务器是无感知的,socks5代理通过将前端设备发来的请求转发给真正的目标服务器,模拟了一个前端的行为。
64.socks 5协议的第一步是与代理服务器握手,当认证过程通过后,握手正式完成,此时客户端网关向代理服务器发起正式请求以指示所要访问的目的地址、端口等信息,其数据包格式如下表1所示:
65.表1:
66.vercmdrsvatypdst.addrdst.port11x’00’1variable2
67.其中,各字段的含义如下:
68.ver字段表征socks版本,固定为0x05;
69.cmd字段指示连接的类型,占1个字节,共有3个取值,分别为0x01(connect),0x02(bind),0x03(udp associate);
70.rsv字段为保留字段,占1个字节,固定为0x00;
71.atyp字段指示地址类型(即dst.addr字段的类型),0x01为ipv4地址,0x03为域名,0x04为ipv6地址;
72.dst.addr字段指示客户端所要访问的目的地址,为变长字段,其长度由前一个字段的值来决定,当atyp字段的值为0x01时,表示该字段为ipv4地址,从而长度为4个字节;当atyp字段的值为0x03时,代表地址类型为域名,此时dst.addr字段的第一个字节的值指示其后所跟随的域名所占的字节数;当atyp字段的值为0x04时,表示该字段为ipv6地址,其长度为16个字节。
73.socks代理服务器在收到以上请求后,其返回的数据包格式如下表2所示:
74.表2:
75.verreprsvatypbnd.addrbnd.port11x’00’1variable2
76.其中,各字段的含义如下:
77.ver字段占1字节,表征协议版本,固定为0x05;
78.rep字段占1字节,可以理解为状态码,它的值表征了此次连接的状态;
79.rsv字段占1字节,为保留字段,固定为0x00;
80.atyp字段与请求的atyp字段含义相同;
81.bnd.addr与bnd.port的含义随请求中的cmd的不同而不同,有以下三种:cmd:connect、bind、以及udp associate,具体如下:
82.当客户端网关发往socks代理服务器的数据包的cmd字段的值为0x01时,代表connect,此时dst.addr和dst.port指示客户端网关所想要访问的目的地址和端口,socks代理服务器在收到该请求后建立“代理服务器到目标主机”的tcp连接,并将socks代理服务器分配的ip地址和端口在返回的数据包中的bind.addr和bind.port字段中告诉客户端网关;
83.当客户端网关发往socks代理服务器的数据包的cmd字段的值为0x02时,代表
bind,bind主要用在双向连接场景中,最典型的例子为ftp,ftp会建立两个连接,第一个连接为客户端网关
→
socks服务器,用于发送指令及状态信息;第二个连接为socks服务器
→
客户端网关,用于传输数据;
84.当客户端网关发往socks代理服务器的数据包的cmd字段的值为0x03时,代表udp associate。
85.步骤103,将所述udp报文转换为rds报文。
86.在本发明实施例中,可以利用socks 5代理服务功能,在内核中将udp报文转换为rds报文。
87.基于socks 5的udp报文的用户编程接口为:
88.socket(af_inet,sock_dgram,0);
89.其中,af_inet表示ip报文,sock_dgram表示udp,0是缺省默认值。
90.基于socks 5的rds的用户编程接口和udp的用户编程接口类似,具体为:
91.socket(pf_rds,sock_seqpacket,0);
92.其中,pf_rds表示rds报文,sock_seqpacket表示提供一种有序的、可靠的、双向的、基于连接的数据传输通道传输数据报文。
93.为此,可以利用上述用户编程接口,将基于socks 5的udp报文转换为基于socks 5的rds报文,也就是说,将基于套接字的udp报文(记为socks-udp)转换为基于套接字的rds报文(记为socks-rds)。
94.步骤104,将所述rds报文基于mptcp通过所述多个网口发送至服务器端网关。具体地,将所述rds格式报文承载到mptcp报文中,然后基于mptcp通过所述多个网口将所述mptcp报文发送至服务器端网关。
95.本发明实施例提供的实现udp报文聚合转发的方法,应用于客户端网关,客户端网关上配置有内核mptcp,且与多个网口关联,在接收到客户端发送的报文后,将其封装为udp报文,将该udp报文转换为rds报文,将rds报文基于mptcp通过所述多个网口发送至服务器端网关,从而对udp报文实现全内核态的聚合转发,有效地提升了udp报文的发送效率。
96.相应地,服务器端网关接收到客户端网关基于mptcp发送的mptcp报文后,解析该mptcp报文,得到rds报文,然后将rds报文转换为udp报文,然后再解析udp报文,得到客户端报文及其目的地址,根据该目的地址发送客户端报文。
97.服务器端网关接收到客户端网关发送的mptcp报文后的处理过程如图3所示。
98.参照图3,图3示出了本发明实施例提供的实现udp报文聚合转发的方法的另一种流程图,包括以下步骤:
99.步骤301,接收客户端网关基于mptcp发送的mptcp报文。
100.步骤302解析所述mptcp报文,得到rds报文。
101.所述mptcp报文包括子路径序号、tcp报文及其目的地址;相应地,可以根据所述子路径序号及其目的地址对所述tcp报文进行排序,得到排序后的tcp报文;解析所述排序后的tcp报文,得到rds报文。
102.需要理解的是,在客户端网关将rds报文基于mptcp通过多个网络发送时,是将rds报文拆分到各个网口中封装为tcp报文,然后各网口中的tcp报文通过mptcp对应的各个路径传输,故在服务器端网络中,需要对各个路径中传输的tcp报文进行重组。在重组时,获取
rds报文拆分到的各网口对应的路径的序号,以及该rds报文的目的地址,因为同一路径中可能同时传输多个tcp报文,故可以根据其对应的目的地址确定哪个tcp报文是与当前rds报文对应的tcp报文,从而再依据路径序号依次对拆分后的多个tcp报文进行排序重组,得到重组后的tcp报文,再对重组后的tcp报文解封装进而得到rds报文,这里可以理解的是,对重组后的tcp报文解封装是对各路径对应的tcp报文进行解封装,对重组后的tcp报文整体进行解封装处理,效率更高。
103.步骤303,将所述rds报文转换为udp报文。
104.与将udp报文转换为rds报文的过程类似,可以根据两者的用户编程接口定义对其进行转换,对此不再赘述。
105.步骤304,解析所述udp报文,得到客户端报文及其目的地址。
106.对于基于套接字的udp报文,通过去除所述udp报文中的套接字头,得到客户端报文及其目的地址。
107.步骤305,将所述客户端报文发送至所述目的地址对应的目标服务器。
108.利用本发明实施例提供的实现udp报文聚合转发的方法,借助于udp报文和rds报文的相互转换,可以对udp报文实现全内核态的聚合转发,进而可以将客户端报文封装为udp报文,实现对客户端报文的高效、准确传输。
109.相应地,本发明实施例还提供一种客户端网关设备,如图4所示,是该客户端网关设备的一种结构示意图。
110.该网关设备400包括以下各模块:
111.配置模块401,用于配置内核mptcp,并关联到多个网口;
112.第一接收模块402,用于接收客户端报文;
113.udp代理模块403,用于将所述客户端报文封装为udp报文;
114.第一格式转换模块404,用于将所述udp报文转换为rds报文;
115.第一发送模块405,用于将所述rds格式报文基于mptcp通过所述多个网口发送至目标服务器。
116.其中,udp代理模块403具体可以将所述客户端报文封装为基于套接字的udp报文。
117.相应地,第一格式转换模块404可以将基于套接字的udp报文转换为基于套接字的rds报文,具体转换方式可参见前面本发明方法实施例中的描述,在此不再赘述。
118.第一发送模块405具体可以将所述rds报文承载到mptcp报文中,然后基于mptcp通过所述多个网口将所述tcp报文发送至所述目标服务器。
119.本发明实施例提供的客户端网关设备,通过配置内核mptcp,并关联到多个网口,在接收到客户端发送的客户端报文后,先将其封装为udp报文,然后将该udp报文转换为rds报文,将rds格式报文基于mptcp通过所述多个网口发送至服务器端网关,从而对udp报文实现全内核态的聚合转发,有效地提升了udp报文的发送效率。
120.相应地,本发明实施例还提供一种服务器端网关设备,如图5所示,是该服务器端网关设备的一种结构示意图。
121.该实施例的服务器端网关设备500包括以下各模块:
122.第二接收模块501,用于接收客户端网关基于mptcp发送的mptcp报文;
123.第一解析模块502,用于解析所述mptcp报文,得到rds报文;
124.第二格式转换模块503,用于将所述rds报文转换为udp报文;
125.第二解析模块504,用于解析所述udp报文,得到客户端报文及其目的地址;
126.第二发送模块505,用于将所述客户端报文发送至所述目的地址对应的客户端。
127.其中,所述第一解析模块502具体可以根据所述子路径序号及其目的地址对所述tcp报文进行排序,得到排序后的tcp报文;解析所述排序后的tcp报文,得到rds报文。
128.所述rds报文可以是基于套接字的rds报文,相应地,第二格式转换模块503可以根据udp和rds的用户编程接口将所述rds报文转换为基于套接字的udp报文,具体可以参照前面本发明方法实施例中的描述,在此不再赘述。
129.对于基于套接字的udp报文,第二解析模块504通过去除所述udp报文中的套接字头,即可得到客户端报文及其目的地址。
130.本发明实施例提供的服务器,接收到客户端网关基于mptcp发送的mptcp报文后,通过将该报文进行解封装、格式转换等处理,最终得到客户端报文,然后将该客户端报文发送到其目的地址,保证了对客户端报文的高效、准确的传输。
131.利用上述本发明实施例提供的客户端网关设备和服务器端网关设备对客户端报文传输的系统如图6所示。
132.其中,客户端网关设备400接收客户端600发送的客户端报文,需要说明的是,所述客户端报文可以是来自多个客户端,也可以是来自一个客户端设备的多个网口,对此本发明实施例不做限定。
133.客户端网关设备400对接收到的客户端报文按照图1所示流程对其进行处理,最终将其封装为mptcp报文,并通过多个网口发送至服务器端网关设备500。
134.服务器端网关设备500接收到来自客户端网关设备400不同网口的mptcp报文,按照上述图3所示流程对该mptcp报文进行解析、格式转换等处理,得到客户端报文及其目的地址,将该客户端报文发送到其目的地址。
135.利用图6所示实施例的udp报文传输系统,借助于rds报文,使udp报文可以利用mptcp多网卡的聚合功能进行发送,提高了udp报文的发送及传输效率,而且也能够有效地保证系统传输性能。
136.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
137.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。而且,以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的模块和单元可以是或者也可以不是物理上分开的,即可以位于一个网络单元上,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
138.以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及装置,其仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做
出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围,本说明书内容不应理解为对本发明的限制。因此,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种实现udp报文聚合转发的方法,其特征在于,应用于客户端网关,所述客户端网关上配置有内核mptcp,且与多个网口关联,所述方法包括:接收客户端报文;将所述客户端报文封装为udp报文;将所述udp报文转换为rds报文;将所述rds报文基于mptcp通过所述多个网口发送至服务器端网关。2.根据权利要求1所述的方法,其特征在于,所述将所述客户端报文封装为udp报文包括:将所述客户端报文封装为基于套接字的udp报文。3.根据权利要求2所述的方法,其特征在于,所述将所述udp报文转换为rds格式报文包括:根据rds和udp的用户编程接口将所述基于套接字的udp报文转换为基于套接字的rds报文。4.根据权利要求1至3任一项所述的方法,其特征在于,所述将所述rds格式报文基于mptcp通过所述多个网口发送至服务器端网关包括:将所述rds格式报文承载到mptcp报文中;基于mptcp通过所述多个网口将所述mptcp报文发送至所述服务器端网关。5.一种实现udp报文聚合转发的方法,其特征在于,应用于服务器端网关,所述方法包括:接收客户端网关基于mptcp发送的mptcp报文;解析所述mptcp报文,得到rds报文;将所述rds报文转换为udp报文;解析所述udp报文,得到客户端报文及其目的地址;将所述客户端报文发送至所述目的地址对应的目标服务器。6.根据权利要求5所述的方法,其特征在于,所述mptcp报文包括:子路径序号、tcp报文及其目的地址;所述解析所述mptcp报文,得到rds报文包括:根据所述子路径序号及其目的地址对所述tcp报文进行排序,得到排序后的tcp报文;解析所述排序后的tcp报文,得到rds报文。7.根据权利要求5所述的方法,其特征在于,所述将所述rds报文转换为udp报文包括:根据udp和rds的用户编程接口将所述rds报文转换为udp报文。8.根据权利要求5所述的方法,其特征在于,所述udp报文为基于套接字的udp报文;所述解析所述udp报文,得到客户端报文及其目的地址包括:去除所述udp报文中的套接字头,得到客户端报文及其目的地址。9.一种客户端网关设备,其特征在于,包括:配置模块,用于配置内核mptcp,并关联到多个网口;第一接收模块,用于接收客户端报文;udp代理模块,用于将所述客户端报文封装为udp报文;第一格式转换模块,用于将所述udp报文转换为rds报文;
第一发送模块,用于将所述rds报文基于mptcp通过所述多个网口发送至目标服务器。10.一种服务器端网关设备,其特征在于,包括:第二接收模块,用于接收客户端网关基于mptcp发送的mptcp报文;第一解析模块,用于解析所述mptcp报文,得到rds报文;第二格式转换模块,用于将所述rds报文转换为udp报文;第二解析模块,用于解析所述udp报文,得到客户端报文及其目的地址;第二发送模块,用于将所述客户端报文发送至所述目的地址对应的客户端。
技术总结
本发明公开了一种实现UDP报文聚合转发的方法、客户端网关设备、服务器,应用于客户端网关的实现UDP报文聚合转发的方法包括:接收客户端报文,将所述客户端报文封装为UDP报文,将所述UDP报文转换为RDS报文;将所述RDS格式报文基于MPTCP通过所述多个网口发送至目标服务器。利用本发明方案,可以提高对UDP报文的传输能力。能力。能力。
技术研发人员:范维庭
受保护的技术使用者:北京东土军悦科技有限公司
技术研发日:2022.11.25
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
