CN117714518A - 网络传输方法、装置、设备及存储介质 - Google Patents

网络传输方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117714518A
CN117714518A CN202311686517.6A CN202311686517A CN117714518A CN 117714518 A CN117714518 A CN 117714518A CN 202311686517 A CN202311686517 A CN 202311686517A CN 117714518 A CN117714518 A CN 117714518A
Authority
CN
China
Prior art keywords
message
tcp
client
handshake message
tcp handshake
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311686517.6A
Other languages
English (en)
Inventor
刘志文
王昌蒙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN202311686517.6A priority Critical patent/CN117714518A/zh
Publication of CN117714518A publication Critical patent/CN117714518A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本申请提供一种网络传输方法、装置及存储介质,涉及数据传输技术领域,通过由客户端发送握手报文到设备或服务器上,由设备或服务器上的dpdk接收第一次握手报文,创建临时会话并构造第一次握手报文的响应报文,也称第二次握手报文,并发送给客户端,这些握手过程直接在用户态完成,比经典的TCP三次握手发送给内核处理更能提高设备性能。客户端收到设备或服务器发送的响应报文后,客户端回复第三次握手报文给设备,设备上的dpdk接收到第三次握手报文,建立连接。相比经典的TCP三次握手中减少了用户态切换到内核态处理报文的次数,从而提高了网络传输性能。

Description

网络传输方法、装置、设备及存储介质
技术领域
本申请涉及数据传输技术领域,具体而言,涉及一种网络传输方法、装置及存储介质。
背景技术
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP使用三次握手协议建立连接,TCP的三次握手过程如下:1、客户端发送syn报文给服务器端。2、服务器端收到syn报文,回应一个syn+ack报文。3、客户端收到服务器端的syn报文,回应一个ack报文。三次握手完成,TCP客户端和服务器端成功建立连接。
目前,在dpdk+kni环境里面,对于上述这种标准的TCP三次握手过程,由dpdk接收到的客户端握手报文,通过kni接口传递到linux内核,然后由内核处理握手报文,内核把响应报文转给dpdk,dpdk再发送给客户端。上述过程存在频繁的用户态和内核态的切换,这种切换会严重损耗服务器的性能。
发明内容
有鉴于此,本申请实施例的目的在于提供一种网络传输方法、装置及存储介质,通过提出一种在dpdk+kni环境提升TCP连接传输性能的方法,客户端发送握手报文到设备或服务器上,由设备或服务器上的dpdk接收第一次握手报文,创建临时会话并构造第一次握手报文的响应报文,也称第二次握手报文,并发送给客户端,这些握手过程直接在用户态完成,比经典的TCP三次握手发送给内核处理更能提高设备性能。客户端收到设备或服务器发送的响应报文后,客户端回复第三次握手报文给设备,设备上的dpdk接收到第三次握手报文,建立连接。相比经典的TCP三次握手中进行用户态切换到内核态处理报文更能提高设备性能,从而解决上述技术问题。
第一方面,本申请实施例提供一种网络传输方法,应用于代理设备端或服务端;所述代理设备端或所述服务端与客户端通信连接;所述方法包括:
基于dpdk环境,接收客户端发送的第一TCP握手报文;
在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至所述客户端;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
接收所述客户端回复的第三TCP握手报文,并建立所述代理设备端与所述客户端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
在上述实现过程中,通过应用于代理设备端或服务端的网络传输方法,由设备或服务器上的dpdk接收客户端发送的第一次握手报文,创建临时会话并构造第一次握手报文的响应报文,也称第二次握手报文,并发送给客户端,这些握手过程直接在用户态完成,比经典的TCP三次握手发送给内核处理更能提高设备性能。相比经典的TCP三次握手中减少了用户态切换到内核态处理报文的次数,从而提高了网络传输性能。
可选地,所述接收所述客户端回复的第三TCP握手报文,并建立所述代理设备端与所述客户端的TCP连接,包括:
接收所述客户端回复的第三TCP握手报文;
在用户态协议栈中将所述第三TCP握手报文的状态标记为新临时会话,并转发至内核态协议栈;
在所述内核态协议栈中构造socket网络接口,以建立所述代理设备端与所述客户端的TCP连接。
在上述实现过程中,通过在dpdk环境下的用户态和内核态处理握手报文并构造网络接口建立TCP连接,提高了TCP代理的数据传输速率,解决了相关技术中传输控制协议TCP数据通过TCP代理传输或TCP传输时,效率低的问题。
可选地,所述在用户态协议栈中将所述第三TCP握手报文的状态标记为新临时会话,并转发至内核态协议栈,包括:
在用户态协议栈中将所述第三TCP握手报文的状态标记为新临时会话;
基于用户态和内核协议栈之间的kni报文交换机制,将标记后的第三TCP握手报文转发至内核态协议栈。
在上述实现过程中,通过增加kni报文交换机制进行报文处理,相较于传统的内核态与应用层之间的内存拷贝操作,kni报文交换机制减少了这种操作,从而提高了网络报文交换的性能。
可选地,所述新临时会话的标记通过对临时会话结构体中的状态字段赋值生成。
在上述实现过程中,通过对第三TCP握手报文打上新临时会话标记,方便内核态更快更准确地识别,提高了TCP连接建立的效率。
可选地,所述第一TCP握手报文包括:syn报文;所述第二TCP握手报文包括:syn报文和ack报文;所述第三TCP握手报文包括:ack报文。
在上述实现过程中,通过使用syn报文和ack报文用于建立TCP连接和进行通信,它们在不同的阶段中发挥着不同的作用,从而提高了数据的可靠传输和连接的正常关闭。
第二方面,本申请实施例提供了一种网络传输方法,应用于客户端;所述客户端与代理设备端或服务端通信连接;所述方法包括:
向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
接收所述代理设备端或服务端在用户态协议栈中创建临时会话后构造的第二TCP握手报文;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
向所述代理设备端或服务端回复第三TCP握手报文,以建立所述客户端与所述代理设备端或服务端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
在上述实现过程中,通过应用于客户端的网络传输方法,由客户端发送握手报文到设备或服务器上,由设备或服务器上的dpdk接收第一次握手报文,创建临时会话并构造第一次握手报文的响应报文,也称第二次握手报文,并发送给客户端,这些握手过程直接在用户态完成,比经典的TCP三次握手发送给内核处理更能提高设备性能。客户端收到设备或服务器发送的响应报文后,客户端回复第三次握手报文给设备,设备上的dpdk接收到第三次握手报文,建立连接。相比经典的TCP三次握手中减少了用户态切换到内核态处理报文的次数,从而提高了网络传输性能。
第三方面,本申请实施例提供了一种网络传输方法,应用于包括代理设备端或服务端、客户端的系统;所述代理设备端或所述服务端与客户端通信连接;所述方法包括:
由所述客户端,向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
由所述代理设备端或服务端,基于dpdk环境,接收客户端发送的第一TCP握手报文;
由所述代理设备端或服务端,在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至所述客户端;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
由所述客户端,接收所述第二TCP握手报文,并向所述代理设备端或服务端回复第三TCP握手报文,以建立所述客户端与所述代理设备端或服务端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息;
由所述代理设备端或服务端,接收所述第三TCP握手报文,并建立所述代理设备端与所述客户端之间的TCP连接。
在上述实现过程中,通过由客户端发送握手报文到设备或服务器上,由设备或服务器上的dpdk接收第一次握手报文,创建临时会话并构造第一次握手报文的响应报文,也称第二次握手报文,并发送给客户端,这些握手过程直接在用户态完成,比经典的TCP三次握手发送给内核处理更能提高设备性能。客户端收到设备或服务器发送的响应报文后,客户端回复第三次握手报文给设备,设备上的dpdk接收到第三次握手报文,建立连接。相比经典的TCP三次握手中减少了用户态切换到内核态处理报文的次数,从而提高了网络传输性能。
第四方面,本申请实施例提供了一种网络传输装置,应用于代理设备端或服务端;所述代理设备端或服务端与客户端通信连接;所述装置包括:
接收请求握手模块,用于基于dpdk环境,接收客户端发送的第一TCP握手报文;
握手响应模块,用于在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至所述客户端;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
建立握手模块,用于接收所述客户端回复的第三TCP握手报文,并建立所述代理设备端与所述客户端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
第五方面,本申请实施例提供了一种网络传输装置,应用于客户端;所述客户端与代理设备端或服务端通信连接;所述装置包括:
请求握手模块,用于向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
接收握手响应模块,用于接收所述代理设备端或服务端在用户态协议栈中创建临时会话后构造的第二TCP握手报文;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
确认握手模块,用于向所述代理设备端或服务端回复第三TCP握手报文,以建立所述客户端与所述代理设备端或服务端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
第六方面,本申请实施例提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法的步骤。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种网络传输方法的流程图;
图2为本申请实施例提供的一种网络传输方法的示意图;
图3为本申请实施例提供的一种应用于代理设备端或服务端的网络传输方法的流程图;
图4为本申请实施例提供的一种应用于客户端端的网络传输方法的流程图;
图5为本申请实施例提供的应用于代理设备端或服务端的网络传输装置的功能模块示意图;
图6为本申请实施例提供的应用于客户端的网络传输装置的功能模块示意图;
图7为本申请实施例提供网络传输装置的电子设备的方框示意图。
图标:210-接收请求握手模块;220-握手响应模块;230-建立握手模块;240-请求握手模块;250-接收握手响应模块;260-确认握手模块;300-电子设备;311-存储器;312-存储控制器;313-处理器;314-外设接口;315-输入输出单元;316-显示单元。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在介绍本申请实施例前,首先对本申请涉及的技术概率作简要介绍。
dpdk(Data Plane Development Kit):一个开源的、用于数据平面加速的库和驱动程序集合,主要被用于高速数据包处理,如网络通信、大数据处理和虚拟化等领域。而kni(Kernel-based NIC Interface)是dpdk为用户态和内核协议栈交互提供的一种机制。在dpdk+kni环境中,kni机制被用于在用户态和内核协议栈之间进行报文交换。当物理口收到报文但用户态无法处理时,将报文转换写入队列,模拟kni口收到了报文。报文经过协议栈处理后发出,相当于写入kni和物理口的发送队列。dpdk+kni环境的应用场景包括但不限于网络通信、大数据处理、虚拟化等领域。在这些场景中,kni机制可以提供更高效的数据包处理能力,提高系统的性能和响应速度。同时,由于kni机制是在用户态和内核协议栈之间进行交互的,因此可以避免内核态切换带来的开销,进一步提高系统的性能。总之,dpdk+kni环境提供了一种高效的数据包处理方案,适用于各种需要进行高速数据包处理的应用场景。
TCP CPS:每秒传输的包数(Packets Per Second),在网络传输中每秒钟传输的TCP数据包数量,是衡量网络传输性能的重要指标之一。在TCP/IP协议中,TCP是一种面向连接的传输协议,它提供了一种可靠的数据传输服务,可以保证数据的顺序和完整性。提升TCP CPS的方法有很多种,包括但不限于以下几种:1、调整TCP参数:通过调整TCP参数,如增加传输大小、增加窗口大小、增加最大传输段大小等,可以优化TCP连接的性能,从而提高TCP CPS。2、使用更快的硬件:使用更快的处理器、内存和网络硬件可以提升TCP CPS。3、优化网络架构:优化网络架构可以减少网络延迟并提高TCP连接的效率,从而提高TCP CPS。4、调整TCP接收缓冲区的大小:增大TCP接收缓冲区的大小可以避免TCP接收缓冲区溢出,从而提高TCP连接的性能,从而提高TCP CPS。5、使用更新的操作系统和TCP版本:更新的操作系统和TCP版本通常具有更好的性能和功能,可以提升TCP CPS。6、减少网络拥塞:减少网络拥塞可以避免数据包丢失和延迟,从而提高TCP连接的性能,从而提高TCP CPS。7、使用更高效的算法:使用更高效的算法可以优化TCP连接的性能,例如使用快速重传算法、快速恢复算法等,从而提高TCP CPS。8、减少TCP连接的数量:减少不必要的TCP连接可以减轻网络拥塞和系统负载,从而提高TCP连接的性能,从而提高TCP CPS。9、使用更高级的网络协议:使用更高级的网络协议可以提供更好的性能和功能,例如使用UDP协议等。综上,提升TCP CPS需要综合考虑多个因素,包括硬件、软件、网络架构、算法等。
syn cookie技术是一种专门用来防范syn flood攻击的手段。它的原理是在TCP服务器收到TCP syn包并返回TCP syn+ack包时,不分配一个专门的数据区,而是根据这个syn包计算出一个cookie值。在收到TCP ack包时,TCP服务器再根据那个cookie值检查这个TCPack包的合法性。如果合法,再分配专门的数据区处理未来的TCP连接。
本申请发明人注意到,TCP使用三次握手协议建立连接,TCP的三次握手过程如下:客户端发送syn报文给服务器端。服务器端收到syn报文,回应一个syn+ack报文。客户端收到服务器端的syn报文,回应一个ack报文。三次握手完成,TCP客户端和服务器端成功建立连接。在dpdk+kni环境,客户端发送syn报文由设备的dpdk接收,然后由dpdk通过kni接口传递给内核,这个过程进程会由用户态切换到内核态,内核构造syn+ack报文,发送给dpdk,这个过程会由内核态再切换到用户态。如果大量的TCP连接需要建立,会存在频繁的由用户态切换到内核态和由内核态切换到用户态。这种频繁的切换严重损耗设备的性能。有鉴于此,本申请实施例提供了一种如下介绍的网络传输方法、装置及存储介质。
请参阅图1,图1为本申请实施例提供的一种网络传输方法的流程图。下面对本申请实施例进行详细阐释。该网络传输方法应用于包括代理设备端或服务端、客户端的系统;代理设备端或服务端与客户端通信连接;该方法包括:步骤100、步骤120、步骤140、步骤160和步骤180。
步骤100:由客户端,向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
步骤120:由代理设备端或服务端,基于dpdk环境,接收客户端发送的第一TCP握手报文;
步骤140:由代理设备端或服务端,在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至客户端;其中,第二TCP握手报文为第一TCP握手报文的确认消息,并在用户态协议栈中构造;
步骤160:由客户端,接收第二TCP握手报文,并向代理设备端或服务端回复第三TCP握手报文,以建立客户端与代理设备端或服务端之间的TCP连接;其中,第三TCP握手报文为第二TCP握手报文的确认消息;
步骤180:由代理设备端或服务端,接收第三TCP握手报文,并建立代理设备端与客户端之间的TCP连接。
示例性地,该系统架构可包括客户端与服务端(服务端)或代理设备端,客户端与服务器端或代理设备端之间通过TCP三次握手建立通信连接。其中,客户端作为发起TCP连接的一侧,服务端或代理设备端作为被动接收TCP连接的一侧,建立TCP连接之后,客户端发送请求数据,通过应用层检查之后,再由TCP连接发送给服务端或代理设备端。客户端可以是:手机,笔记本,电脑,个人数字助理(英文:Personal DigitalAssistant,PDA)、车载电脑等任意终端设备,终端设备的操作系统可以是Windows系列操作系统、Unix类操作系统、Linux类操作系统、MAC操作系统等操作系统。服务端可以是:基于TCP/IP协议,接收发送的握手报文,并对应发送响应报文,建立TCP连接的服务器硬件系统;其中,服务器硬件系统可以由上述几种操作系统在软件层面进行运行和执行。代理设备端可以是:设置在客户端与服务器的中间转发代理设备,为客户端和服务器进行TCP报文的转发和处理;特别地,如果是代理设备,本申请的握手连接发生在客户端与代理设备的三次握手,代理设备和服务器还是遵循经典的TCP三次握手,在内核态完成。第一TCP握手报文、第二TCP握手报文和第三TCP握手报文分别可以是:建立TCP连接进行三次握手发送的报文。
可选地,如图2所示,客户端向代理设备发送请求TCP连接的第一TCP握手报文,例如syn报文。代理设备在dpdk的用户态环境下接收syn报文,并解析该syn报文,可通过查找哈希表创建结构体(临时会话),并对session结构体的new_flg参数赋值1完成临时会话的创建,该临时会话为在网络中客户端与代理设备之间进行通信时建立的临时连接关系,这个临时连接关系在会话期间一直存在,直到会话结束或关闭。同时,构造用于第二次握手的第二TCP握手报文,例如:syn+ack报文,将带有syn请求握手的syn报文与ack确认信息的叠加报文返回至客户端。代理设备当收到客户端发来的syn报文时,在用户态TCP/IP协议栈中可直接拷贝记录该syn报文的TCP header(标头)、TCP option(选项)等目标字段,然后将该syn报文与ack确认信息返回给客户端。客户端接收syn+ack报文,并返回第三次握手的第三TCP握手报文,例如ack报文。代理设备在用户态环境接收ack报文,切换到内核态处理,构造网络连接接口建立与客户端的TCP连接。
通过由客户端发送握手报文到设备或服务器上,由设备或服务器上的dpdk接收第一次握手报文,创建临时会话并构造第一次握手报文的响应报文,也称第二次握手报文,并发送给客户端,这些握手过程直接在用户态完成,比经典的TCP三次握手发送给内核处理更能提高设备性能。客户端收到设备或服务器发送的响应报文后,客户端回复第三次握手报文给设备,设备上的dpdk接收到第三次握手报文,建立连接。相比经典的TCP三次握手中减少了用户态切换到内核态处理报文的次数,从而提高了网络传输性能。
请参阅图3,图3为本申请实施例提供的应用于代理设备端或服务端的网络传输方法的流程图。下面对本实施例的具体流程进行详细阐释。该方法应用于代理设备端或服务端,代理设备端或服务端与客户端通信连接,该方法包括:步骤110、步骤130和步骤150。
步骤110:基于dpdk环境,接收客户端发送的第一TCP握手报文;
步骤130:在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至客户端;其中,第二TCP握手报文为第一TCP握手报文的确认消息,并在用户态协议栈中构造;
步骤150:接收客户端回复的第三TCP握手报文,并建立代理设备端与客户端之间的TCP连接;其中,第三TCP握手报文为第二TCP握手报文的确认消息。
示例性地,请继续查看图2,代理设备在dpdk的用户态环境下接收客户端发送的syn报文,并解析该syn报文,可通过查找哈希表创建结构体(临时会话),并对session结构体的new_flg参数赋值1完成临时会话的创建,该临时会话为在网络中客户端与代理设备之间进行通信时建立的临时连接关系,这个临时连接关系在会话期间一直存在,直到会话结束或关闭。同时,构造用于第二次握手的第二TCP握手报文,例如:syn+ack报文,将带有syn请求握手的syn报文与ack确认信息的叠加报文返回至客户端。代理设备当收到客户端发来的syn报文时,在用户态TCP/IP协议栈中可直接拷贝记录该syn报文的TCP header(标头)、TCP option(选项)等目标字段,然后将该syn报文与ack确认信息返回给客户端,建立与客户端的TCP连接。
通过应用于代理设备端或服务端的网络传输方法,由设备或服务器上的dpdk接收客户端发送的第一次握手报文,创建临时会话并构造第一次握手报文的响应报文,也称第二次握手报文,并发送给客户端,这些握手过程直接在用户态完成,比经典的TCP三次握手发送给内核处理更能提高设备性能。相比经典的TCP三次握手中减少了用户态切换到内核态处理报文的次数,从而提高了网络传输性能。
在一个实施例中,步骤150可以包括:步骤151、步骤152和步骤153。
步骤151:接收客户端回复的第三TCP握手报文;
步骤152:在用户态协议栈中将第三TCP握手报文的状态标记为新临时会话,并转发至内核态协议栈;
步骤153:在内核态协议栈中构造socket网络接口,以建立代理设备端与客户端的TCP连接。
示例性地,代理设备或服务器在dpdk下接收客户端发送的ack报文,在用户态环境标记为new session,然后发送到内核,会发生一次用户态到内核态的切换;内核接收ack报文,识别到new session标记,使用内核现有的syn-cookie技术构造socket,建立与客户端的TCP连接。其中,socket是对TCP/IP协议的封装,它把复杂的TCP/IP协议族隐藏在socket接口后面,提供一个调用接口(API),在一定程度可以认为socket位于应用层和传输层之间。例如:可使用socket库构造socket并建立连接,如下:
import socket
client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)//创建一个socket对象;
server_address=('localhost',8080)//定义服务器地址和端口号;
client_socket.connect(server_address)//连接到服务器。
通过在dpdk环境下的用户态和内核态处理握手报文并构造网络接口建立TCP连接,提高了TCP代理的数据传输速率,解决了相关技术中传输控制协议TCP数据通过TCP代理传输或TCP传输时,效率低的问题。
在一个实施例中,步骤152可以包括:步骤1521和步骤1522。
步骤1521:在用户态协议栈中将第三TCP握手报文的状态标记为新临时会话;
步骤1522:基于用户态和内核协议栈之间的kni报文交换机制,将标记后的第三TCP握手报文转发至内核态协议栈。
示例性地,kni(Kernel Network Interface)报文交换机制是一种用于dpdk(DataPlane Development Kit)应用程序的网络报文交换机制,它通过共享内存的方式,实现用户态dpdk应用程序与内核态网络协议栈之间网络报文的传递。代理设备或服务器在dpdk下接收客户端发送的ack报文,在用户态环境标记为new session,用户态dpdk应用程序通过kni接口将ack报文发送到内核态。ack报文传了一些元数据,通过mbuf->headroom进行识别。内核态协议栈对接收到的ack报文进行处理,先解析元数据,把元数据中的信息记录到skb结构体上。处理完的ack报文通过kni接口发送回用户态dpdk应用程序。
通过增加kni报文交换机制进行报文处理,相较于传统的内核态与应用层之间的内存拷贝操作,kni报文交换机制减少了这种操作,从而提高了网络报文交换的性能。
在一个实施例中,新临时会话的标记通过对临时会话结构体中的状态字段赋值生成。
示例性地,session_hash数组用于存储哈希表中的会话结构体指针。hash()函数实现了简单的哈希算法,将输入的字符串key映射到一个整数索引值。find_session()函数根据key在哈希表中查找相应的会话结构体,如果找到则返回该结构体的指针,否则返回NULL。create_session()函数用于创建新的会话结构体,并将其添加到哈希表中。接收到syn报文后,可通过handle_syn()函数根据key查找或创建会话结构体session,把session结构体的将session.new_sess字段赋值为1,以表示新的会话已经建立。
通过对第三TCP握手报文打上新临时会话标记,方便内核态更快更准确地识别,提高了TCP连接建立的效率。
在一个实施例中,第一TCP握手报文包括:syn报文;第二TCP握手报文包括:syn报文和ack报文;第三TCP握手报文包括:ack报文。
示例性地,syn报文和ack报文是TCP协议中用于建立连接和进行通信的两种报文。syn报文是用于在TCP连接建立过程中进行握手的一种报文。在连接建立阶段,syn报文是由客户端发送给服务端或代理设备端的,它表示客户端想与服务端或代理设备端建立连接。当服务端收到syn报文后,它会向客户端发送一个syn-ack报文,以确认连接请求。ack报文是用于确认收到的数据报文的一种回应。在TCP连接中,当接收到一个数据报文后,接收方会向发送方发送一个ack报文,以告知已成功接收数据。
通过使用syn报文和ack报文用于建立TCP连接和进行通信,它们在不同的阶段中发挥着不同的作用,从而提高了数据的可靠传输和连接的正常关闭。
请参阅图4,图4为本申请实施例提供的一种应用于客户端的网络传输方法的流程图。下面对本实施例的具体流程进行详细阐释。客户端与代理设备端或服务端通信连接,该方法包括:步骤170、步骤171和步骤172。
步骤170:向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
步骤171:接收代理设备端或服务端在用户态协议栈中创建临时会话后构造的第二TCP握手报文;其中,第二TCP握手报文为第一TCP握手报文的确认消息,并在用户态协议栈中构造;
步骤172:向代理设备端或服务端回复第三TCP握手报文,以建立客户端与代理设备端或服务端之间的TCP连接;其中,第三TCP握手报文为第二TCP握手报文的确认消息。
示例性地,请继续参看图2,客户端向代理设备发送请求TCP连接的第一TCP握手报文,例如syn报文。代理设备在dpdk的用户态环境下接收syn报文,并解析该syn报文,可通过查找哈希表创建结构体(临时会话),并对session结构体的new_flg参数赋值1完成临时会话的创建。同时,构造第二次握手的第二TCP握手报文,例如:syn+ack报文,将带有syn请求握手的syn报文与ack确认信息的叠加报文返回至客户端。客户端接收syn+ack报文,并返回第三次握手的第三TCP握手报文,例如ack报文。代理设备在用户态环境接收ack报文,切换到内核态处理,构造网络连接接口建立与客户端的TCP连接。
通过应用于客户端的网络传输方法,由客户端发送握手报文到设备或服务器上,由设备或服务器上的dpdk接收第一次握手报文,创建临时会话并构造第一次握手报文的响应报文,也称第二次握手报文,并发送给客户端,这些握手过程直接在用户态完成,比经典的TCP三次握手发送给内核处理更能提高设备性能。客户端收到设备或服务器发送的响应报文后,客户端回复第三次握手报文给设备,设备上的dpdk接收到第三次握手报文,建立连接。相比经典的TCP三次握手中减少了用户态切换到内核态处理报文的次数,从而提高了网络传输性能。
请参阅图5,图5为本申请实施例提供的一种应用于代理设备端或服务端的网络传输装置的模块示意图,代理设备端或服务端与客户端通信连接,该装置包括:接收请求握手模块210、握手响应模块220和建立握手模块230。
接收请求握手模块210,用于基于dpdk环境,接收客户端发送的第一TCP握手报文;
握手响应模块220,用于在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至所述客户端;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
建立握手模块230,用于接收所述客户端回复的第三TCP握手报文,并建立所述代理设备端与所述客户端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
可选地,建立握手模块230可以用于:
接收所述客户端回复的第三TCP握手报文;
在用户态协议栈中将所述第三TCP握手报文的状态标记为新临时会话,并转发至内核态协议栈;
在所述内核态协议栈中构造socket网络接口,并建立所述代理设备端与所述客户端的TCP连接。
可选地,建立握手模块230可以用于:
在用户态协议栈中将所述第三TCP握手报文的状态标记为新临时会话;
基于用户态和内核协议栈之间的kni报文交换机制,将标记后的第三TCP握手报文转发至内核态协议栈。
可选地,所述新临时会话的标记通过对临时会话结构体中的状态字段赋值生成。
可选地,所述第一TCP握手报文包括:syn报文;所述第二TCP握手报文包括:syn报文和ack报文;所述第三TCP握手报文包括:ack报文。
请参阅图6,图6为本申请实施例提供的一种应用于客户端的网络传输装置的模块示意图,客户端与代理设备端或服务端通信连接,该装置包括:请求握手模块240、接收握手响应模块250和确认握手模块260。
请求握手模块240,用于向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
接收握手响应模块250,用于接收所述代理设备端或服务端在用户态协议栈中创建临时会话后构造的第二TCP握手报文;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
确认握手模块260,用于向所述代理设备端或服务端回复第三TCP握手报文,以建立所述客户端与所述代理设备端或服务端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
请参阅图7,图7是电子设备的方框示意图。电子设备300可以包括存储器311、存储控制器312、处理器313、外设接口314、输入输出单元315、显示单元316。本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对电子设备300的结构造成限定。例如,电子设备300还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。
上述的存储器311、存储控制器312、处理器313、外设接口314、输入输出单元315、显示单元316各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器313用于执行存储器中存储的可执行模块。
其中,存储器311可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器311用于存储程序,所述处理器313在接收到执行指令后,执行所述程序,本申请实施例任一实施例揭示的过程定义的电子设备300所执行的方法可以应用于处理器313中,或者由处理器313实现。
上述的处理器313可能是一种集成电路芯片,具有信号的处理能力。上述的处理器313可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述的外设接口314将各种输入/输出装置耦合至处理器313以及存储器311。在一些实施例中,外设接口314,处理器313以及存储控制器312可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
上述的输入输出单元315用于提供给用户输入数据。所述输入输出单元315可以是,但不限于,鼠标和键盘等。
上述的显示单元316在电子设备300与用户之间提供一个交互界面(例如用户操作界面)给用户参考。在本实施例中,所述显示单元316可以是液晶显示器或触控显示器。液晶显示器或触控显示器可以对处理器执行所述程序的过程进行显示。
本实施例中的电子设备300可以用于执行本申请实施例提供的各个方法中的各个步骤。
此外,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中的步骤。
本申请实施例所提供的上述方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中的步骤,具体可参见上述方法实施例,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。在本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种网络传输方法,其特征在于,应用于代理设备端或服务端;所述代理设备端或所述服务端与客户端通信连接;所述方法包括:
基于dpdk环境,接收客户端发送的第一TCP握手报文;
在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至所述客户端;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
接收所述客户端回复的第三TCP握手报文,并建立所述代理设备端与所述客户端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
2.根据权利要求1所述的方法,其特征在于,所述接收所述客户端回复的第三TCP握手报文,并建立所述代理设备端与所述客户端的TCP连接,包括:
接收所述客户端回复的第三TCP握手报文;
在用户态协议栈中将所述第三TCP握手报文的状态标记为新临时会话,并转发至内核态协议栈;
在所述内核态协议栈中构造socket网络接口,以建立所述代理设备端与所述客户端的TCP连接。
3.根据权利要求2所述的方法,其特征在于,所述在用户态协议栈中将所述第三TCP握手报文的状态标记为新临时会话,并转发至内核态协议栈,包括:
在用户态协议栈中将所述第三TCP握手报文的状态标记为新临时会话;
基于用户态和内核协议栈之间的kni报文交换机制,将标记后的第三TCP握手报文转发至内核态协议栈。
4.根据权利要求2所述的方法,其特征在于,其中,所述新临时会话的标记通过对临时会话结构体中的状态字段赋值生成。
5.根据权利要求1-4任一所述的方法,其特征在于,所述第一TCP握手报文包括:syn报文;所述第二TCP握手报文包括:syn报文和ack报文;所述第三TCP握手报文包括:ack报文。
6.一种网络传输方法,其特征在于,应用于客户端;所述客户端与代理设备端或服务端通信连接;所述方法包括:
向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
接收所述代理设备端或服务端在用户态协议栈中创建临时会话后构造的第二TCP握手报文;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
向所述代理设备端或服务端回复第三TCP握手报文,以建立所述客户端与所述代理设备端或服务端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
7.一种网络传输方法,其特征在于,应用于包括代理设备端或服务端、客户端的系统;所述代理设备端或所述服务端与客户端通信连接;所述方法包括:
由所述客户端,向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
由所述代理设备端或服务端,基于dpdk环境,接收客户端发送的第一TCP握手报文;
由所述代理设备端或服务端,在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至所述客户端;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
由所述客户端,接收所述第二TCP握手报文,并向所述代理设备端或服务端回复第三TCP握手报文,以建立所述客户端与所述代理设备端或服务端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息;
由所述代理设备端或服务端,接收所述第三TCP握手报文,并建立所述代理设备端与所述客户端之间的TCP连接。
8.一种网络传输装置,其特征在于,应用于代理设备端或服务端;所述代理设备端或服务端与客户端通信连接;所述装置包括:
接收请求握手模块,用于基于dpdk环境,接收客户端发送的第一TCP握手报文;
握手响应模块,用于在用户态协议栈中创建临时会话,并将第二TCP握手报文返回至所述客户端;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
建立握手模块,用于接收所述客户端回复的第三TCP握手报文,并建立所述代理设备端与所述客户端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
9.一种网络传输装置,其特征在于,应用于客户端;所述客户端与代理设备端或服务端通信连接;所述装置包括:
请求握手模块,用于向dpdk环境下的代理设备端或服务端发送第一TCP握手报文;
接收握手响应模块,用于接收所述代理设备端或服务端在用户态协议栈中创建临时会话后构造的第二TCP握手报文;其中,所述第二TCP握手报文为所述第一TCP握手报文的确认消息,并在所述用户态协议栈中构造;
确认握手模块,用于向所述代理设备端或服务端回复第三TCP握手报文,以建立所述客户端与所述代理设备端或服务端之间的TCP连接;其中,所述第三TCP握手报文为所述第二TCP握手报文的确认消息。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至6任一所述的方法的步骤。
CN202311686517.6A 2023-12-08 2023-12-08 网络传输方法、装置、设备及存储介质 Pending CN117714518A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311686517.6A CN117714518A (zh) 2023-12-08 2023-12-08 网络传输方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311686517.6A CN117714518A (zh) 2023-12-08 2023-12-08 网络传输方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117714518A true CN117714518A (zh) 2024-03-15

Family

ID=90156349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311686517.6A Pending CN117714518A (zh) 2023-12-08 2023-12-08 网络传输方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117714518A (zh)

Similar Documents

Publication Publication Date Title
US20220309025A1 (en) Multi-path rdma transmission
US11770344B2 (en) Reliable, out-of-order transmission of packets
TWI332150B (en) Processing data for a tcp connection using an offload unit
US20180278540A1 (en) Connectionless transport service
US8370447B2 (en) Providing a memory region or memory window access notification on a system area network
US8023520B2 (en) Signaling packet
WO2023005773A1 (zh) 基于远程直接数据存储的报文转发方法、装置、网卡及设备
US8544025B2 (en) Efficient data transfer on local network connections using a pseudo socket layer
US11068412B2 (en) RDMA transport with hardware integration
US11025564B2 (en) RDMA transport with hardware integration and out of order placement
US11886940B2 (en) Network interface card, storage apparatus, and packet receiving method and sending method
WO2017000593A1 (zh) 报文处理方法及装置
CN110838935B (zh) 高可用sdn控制器集群方法、系统、存储介质及设备
US6898638B2 (en) Method and apparatus for grouping data for transfer according to recipient buffer size
US11444882B2 (en) Methods for dynamically controlling transmission control protocol push functionality and devices thereof
CN113973091A (zh) 一种报文处理方法、网络设备以及相关设备
CN117714518A (zh) 网络传输方法、装置、设备及存储介质
US20080056263A1 (en) Efficient transport layer processing of incoming packets
US7636313B2 (en) Use of internal buffer to reduce acknowledgement related delays in acknowledgement-based reliable communication protocols
WO2023027854A1 (en) System for storage of received messages
CN110609866A (zh) 用于协商事务的方法、设备和计算机程序产品
JP2023057210A (ja) 情報処理装置,情報処理方法および情報処理プログラム
CN117896436A (zh) 一种基于智能网卡的存储方法及系统
KR20240027822A (ko) 포워드 메시지 처리 방법 및 장치, 포워드 인터페이스, 통신 장치, 컴퓨터 판독 가능한 저장 매체

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination