通信方法、装置、设备及存储介质与流程

文档序号:33464133发布日期:2023-03-15 05:57阅读:37来源:国知局
通信方法、装置、设备及存储介质与流程

1.本技术涉及网络技术领域,尤其涉及一种通信方法、装置、设备及存储介质。


背景技术:

2.在现有的网络通信过程中,客户端在用户态实现一套传输协议,自定义可靠、拥塞算法和流量控制等,传输层基于udp协议。用户可以使用此自定义协议传输可靠udp流量,或者传输原生非可靠udp流量。两种通道使用同一个socket资源。
3.对于代理服务:自定义传输协议与客户端配对出现。两个通道同样使用一个socket资源。在代理服务中,因为udp是报文形式传输的,非tcp流形式。因此在内核态和用户态上下文切换更加频繁,消耗资源更多。在非可靠通道显得更为明显。
4.然而,原有的基于tcp协议,依赖内核版本更新,其周期漫长,涉及面广,一些新的传输算法难以在短期内得到应用。原有的基于udp协议,在用户态实现可靠性、拥塞控制、流量控制,增加了上下文切换的消耗,以及数据包的处理路径。
5.在背景技术中公开的上述信息仅用于加强对本技术的背景的理解,因此其可能包含没有形成为本领域普通技术人员所知晓的现有技术的信息。


技术实现要素:

6.本技术提供一种通信方法、装置、设备及存储介质,用以解决现有技术存在的问题。
7.第一方面,本技术提供一种通信方法,应用于服务器,所述服务器包括控制面以及转发面,所述方法包括:
8.s1、控制面运行在用户态,并处理自定义传输协议的握手流程;
9.s2、握手成功后,控制面将转发数据下发至内核中;
10.s3、转发面运行在内核态,基于所述转发数据确定对应的数据处理策略。
11.在一些实施例中,s1中,所述握手流程包括:
12.s11、客户端产生进程内唯一的连接id,所述连接id包括第一id以及第二id,其中,所述第一id用于标识可靠传输队列,所述第二id用于标识非可靠传输队列;
13.s12、客户端向所述服务器发送包含所述连接id的握手请求;
14.s13、服务器收到握手请求后,根据客户端的源ip、源port以及当前时间,确定对应的cookie值,并将所述cookie值发送至客户端;
15.s14、客户端向服务器返回所述cookie值以及网络协商参数;
16.s15、服务器校验所述cookie值,与客户端协商网络参数,生成唯一的第三id以及第四id,并确定握手成功,其中,所述第三id用于标识可靠传输队列,所述第四id用于标识非可靠传输队列。
17.在一些实施例中,s2中,控制面通过ebpf map技术将转发数据下发到内核中。
18.在一些实施例中,所述转发数据包括key和value;
19.其中,key包括:源ip、源端口、目的ip、目的端口、连接id;
20.value包括:flag、后端服务的ip+port以及路由信息。
21.在一些实施例中,s3,包括:
22.s31、通过attch在xdp hook上的prog程序读取转发数据库,查找是否存在匹配的key;
23.s32、若存在,则判断value中的flag值,并判断是可靠还是非可靠udp报文;
24.s33、若为可靠udp报文,则修改ip头中的协议域段,将17修改为自定义传输协议值,并返回协议栈,等待后面的内核模块处理。
25.在一些实施例中,还包括:
26.若不存在匹配的key,则返回xdp_pass让协议栈继续处理。
27.在一些实施例中,还包括:
28.若为非可靠udp报文,则修改报文头、校验和,查找路由代理出去。
29.第二方面,本技术提供一种通信装置,应用于服务器,所述服务器包括控制面以及转发面,所述装置包括:
30.第一运行模块,用于控制面运行在用户态,并处理自定义传输协议的握手流程;握手成功后,控制面将转发数据下发至内核中;
31.第二运行模块,用于转发面运行在内核态,基于所述转发数据确定对应的数据处理策略。
32.第三方面,本技术提供一种终端设备,包括存储器,处理器:
33.存储器,用于存储计算机程序;处理器,用于读取所述存储器中的计算机程序并执行上述的通信方法。
34.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述的通信方法。
35.本技术提供的通信方法、装置、设备及存储介质,本技术提出基于xdp技术,将网络代理中实现的可靠性、拥塞控制等算法从用户态移到内核态,拆分为控制面和数据转发面。减少上下切换次数以及缩短数据包处理路径。同时以更少的资源支持可靠和非可靠数据并发传输。无需更新内核版本。可以根据其自身需求更改其算法,如提升弱网环境下的传输性能。
附图说明
36.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
37.图1为现有网络通信过程的示意图;
38.图2为本技术实施例提供的通信方法的示意图;
39.图3为本技术实施例提供的通信方法的实例图;
40.图4为本技术实施例提供的自定义传输协议的握手流程的示意图;
41.图5为本技术实施例提供的基于所述转发数据确定对应的数据处理策略的示意图。
42.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图
和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
43.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
44.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术实施例中所使用的单数形式的“一种”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
45.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术的描述中,“多个”、“若干个”的含义是两个或两个以上,除非另有明确具体的限定。
46.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的关系。
47.取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
48.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
49.图1为现有网络通信过程的示意图,如图1所示,客户端在用户态实现一套传输协议,自定义可靠、拥塞算法和流量控制等,传输层基于udp协议。用户可以使用此自定义协议传输可靠udp流量,或者传输原生非可靠udp流量。两种通道使用同一个socket资源。对于代理服务:自定义传输协议与客户端配对出现。两个通道同样使用一个socket资源。在代理服务中,因为udp是报文形式传输的,非tcp流形式。因此在内核态和用户态上下文切换更加频繁,消耗资源更多。在非可靠通道显得更为明显。
50.然而,原有的基于tcp协议,依赖内核版本更新,其周期漫长,涉及面广,一些新的传输算法难以在短期内得到应用。原有的基于udp协议,在用户态实现可靠性、拥塞控制、流量控制,增加了上下文切换的消耗,以及数据包的处理路径。
51.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
52.图2为本技术实施例提供的通信方法的示意图,图3为本技术实施例提供的通信方法的实例图,如图2以及图3所示,本技术提供一种通信方法,包括:
53.s1、控制面运行在用户态,并处理自定义传输协议的握手流程;
54.s2、握手成功后,控制面将转发数据下发至内核中;
55.s3、转发面运行在内核态,基于所述转发数据确定对应的数据处理策略。
56.本技术的整体思路包括:1.分为控制面和转发面;2.在xdp hook上attch一个prog程序,用于识别数据报文并做简单处理;3.新增一个内核模块,并使用inet_add_protocol()添加自定义的传输协议,运行其可靠、拥塞算法和流量控制;4.转发数据库使用ebpf map格式存储。
57.本技术提出基于xdp技术,将网络代理中实现的可靠性、拥塞控制等算法从用户态移到内核态,拆分为控制面和数据转发面。减少上下切换次数以及缩短数据包处理路径。同时以更少的资源支持可靠和非可靠数据并发传输。无需更新内核版本。可以根据其自身需求更改其算法,如提升弱网环境下的传输性能。
58.图4为本技术实施例提供的自定义传输协议的握手流程的示意图,如图4所示,在一些实施例中,s1中,所述握手流程包括:
59.s11、客户端(client)产生进程内唯一的连接id,所述连接id包括第一id(connid1)以及第二id(connid2),其中,所述第一id用于标识可靠传输队列,所述第二id用于标识非可靠传输队列;
60.s12、客户端向所述服务器(server)发送包含所述连接id的握手请求;
61.s13、服务器收到握手请求后,根据客户端的源ip、源port以及当前时间,确定对应的cookie值,并将所述cookie值发送至客户端;
62.s14、客户端向服务器返回所述cookie值以及网络协商参数;
63.s15、服务器校验所述cookie值,与客户端协商网络参数,生成唯一的第三id(connid3)以及第四id(connid4),并确定握手成功,其中,所述第三id用于标识可靠传输队列,所述第四id用于标识非可靠传输队列。
64.本实施例中,基于udp,握手过程交互两端的配置,并产生两个唯一的连接id,connid1、connid2作为连接的标识符。
65.在一些实施例中,s2中,控制面通过ebpf map技术将转发数据下发到内核中。
66.在一些实施例中,所述转发数据包括key和value;
67.其中,key包括:源ip、源端口、目的ip、目的端口、连接id;
68.value包括:flag、后端服务的ip+port以及路由信息。
69.其中,flag的取值以及意义包括:
70.(1)0-该连接为传输可靠数据,需要丢给内核模块处理;
71.(2)1-该连接为传输非可靠数据,满足条件时可以直接重定向发送出去;
72.后端服务的ip+port:该数据包要代理到哪一个后端服务;
73.路由信息:代理过程可以先查找这里有没路由,没有路由的话就去内核路由表中查找,找到后在此保存起来。内核的路由更新可以通过netlink_notify同步更新到转发数据库。
74.在一些实施例中,s3,包括:
75.s31、通过attch在xdp hook上的prog程序读取转发数据库,查找是否存在匹配的key;
76.s32、若存在,则判断value中的flag值,并判断是可靠还是非可靠udp报文;
77.s33、若为可靠udp报文,则修改ip头中的协议域段,将17修改为自定义传输协议值,并返回协议栈,等待后面的内核模块处理。
78.在一些实施例中,还包括:若不存在匹配的key,则返回xdp_pass让协议栈继续处理。
79.在一些实施例中,还包括:若为非可靠udp报文,则修改报文头、校验和,查找路由代理出去。
80.具体的,转发面运行在内核态,主要包括了两块主体:一是基于xdp的udp报文识别及简单处理,二是自定义传输协议的内核模块,实现可靠、拥塞算法和流量控制等。转发面负责处理三种udp报文:要求可靠的udp报文;不要求可靠的udp报文;自定义传输协议的握手报文(udp报文)
81.图5为本技术实施例提供的基于所述转发数据确定对应的数据处理策略的示意图,如图5所示,该处理过程主要包括以下步骤:
82.1.xdp程序首先读取转发数据库,查找有没匹配的key。没有则返回xdp_pass让协议栈继续处理。该报文要么是握手报文,要么是其他应用的udp报文。握手报文最终会交给控制面处理。
83.2.如果找到匹配的key,则判断value中的flag值,判断是可靠还是非可靠udp报文。
84.3.如果是非可靠udp报文,则修改报文头、校验和等,查找路由代理出去。
85.4.如果是可靠udp报文,则修改ip头中的协议域段,将17(udp)改为自定义传输协议值。然后返回协议栈,等待后面的内核模块处理。
86.本技术主要思路为控制面、转发面分离,其中,转发面:自定义传输协议的内核模块,实现可靠、拥塞算法和流量控制等。此模块用户可根据需求实现自己的传输算法,比如提升弱网传输性能。1.内核模块通过inet_add_protocol函数将自定义的传输协议处理函数注册到内核中。2.要求可靠的的udp报文,在xdp程序中,被修改了协议域段,因此该报文将会被此内核模块处理。3.此内核模块可以通过内核线程的方式,实现发送、接收逻辑。
87.和现有技术相比,本技术的主要优势在于:1.内核可定义传输层的可靠、拥塞控制、流量控制等算法;2.减少网络代理的上下文切换;3.控制面、数据转发面分离,提升转发性能;4.以更少的资源支持可靠、非可靠并发传输;
88.本技术将来可能的应用场景包括:1.需要提升弱网优化的,可以通过自定义传输协议实现。2.需要提升代理转发性能的,可以通过控制面、数据转发面分离实现。3.支持同一条数据流,既有可靠传输需求、也有非可靠传输需求的场景。
89.可能价值:1.内核态的网络代理大大减少了进程上下文切换,释放了cpu的负载;2.用户可以自定义传输层算法,实现不同的传输方案;
90.本技术提供一种通信装置,应用于服务器,所述服务器包括控制面以及转发面,所述装置包括:
91.第一运行模块,用于控制面运行在用户态,并处理自定义传输协议的握手流程;握
手成功后,控制面将转发数据下发至内核中;
92.第二运行模块,用于转发面运行在内核态,基于所述转发数据确定对应的数据处理策略。
93.在一些实施例中,本技术提供一种终端设备,包括存储器,处理器:
94.存储器,用于存储计算机程序;处理器,用于读取所述存储器中的计算机程序并执行上述的通信方法。
95.在一些实施例中,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述的通信方法。
96.应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
97.在一些实施例中,本技术提供一种终端设备,包括存储器,处理器:
98.存储器,用于存储计算机程序;处理器,用于读取所述存储器中的计算机程序并执行上述的通信方法。
99.在一些实施例中,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述的通信方法。
100.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
101.本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
102.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1