CN115834665B - 一种网络通信方法和装置 - Google Patents
一种网络通信方法和装置 Download PDFInfo
- Publication number
- CN115834665B CN115834665B CN202310083040.6A CN202310083040A CN115834665B CN 115834665 B CN115834665 B CN 115834665B CN 202310083040 A CN202310083040 A CN 202310083040A CN 115834665 B CN115834665 B CN 115834665B
- Authority
- CN
- China
- Prior art keywords
- target
- application service
- network
- target application
- protocol stack
- 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.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种网络通信方法和装置,该方法包括:在接收到针对Socket的目标应用服务时,执行所述目标应用服务;在执行所述目标应用服务时,加载VPP的动态库;通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈。通过本发明实施例,实现了在用户态协议栈中处理目标应用服务,无需切换内核态协议栈,从而避免了内核态协议栈对单机性能的影响,提高网络通信性能。
Description
技术领域
本发明涉及网络通信技术领域,特别是涉及一种网络通信方法和装置。
背景技术
随着互联网时代应用规模越来越大,DNS(Domain Name System,域名系统)域名解析服务也承受着越来越大的压力,对于CPU、内存、带宽、IO等都提出了新的挑战。
目前,绝大多数的服务端应用都是运行在Linux服务器上面,并依赖Linux本身的TCP/IP协议栈来实现网络通信,DNS域名解析服务也不例外。Linux的TCP/IP协议栈完全运行于内核态中,同时,Linux作为一个通用的多用户多进程操作系统必须要考虑很多同步和竞态的问题,因此,其PPS(PacketPer Second,包每秒,用于表示以网络包为单位的传输速率,一般用来评估系统对于网络的转发能力)并不是很高,在DNS域名解析服务这种高网络IO(Input/Output,输入/输出)的场景下面很容易成为瓶颈,即由于内核数据包复制、CPU中断、系统调用导致的上下文切换、内核自旋锁等原因,DNS域名解析服务往往在触及CPU上限或者网卡上限的时候就已经达到了Linux内核网络处理的瓶颈,从而由于软件限制了硬件的能力,导致了单机性能无法提升。
发明内容
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种网络通信方法和装置,包括:
一种网络通信方法,所述方法包括:
在接收到针对Socket的目标应用服务时,执行所述目标应用服务;
在执行所述目标应用服务时,加载VPP的动态库;
通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈。
可选地,还包括:
在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;
基于所述目标数据帧生成目标电子信号;
将所述目标电子信号传送至目标用户。
可选地,所述用户态协议栈包括传输层以及基于DPDK的网络层和所述数据链路层,所述DPDK与网卡进行交互。
可选地,所述在所述用户态协议栈中,生成所述目标应用服务的目标数据帧,包括:
依照所述传输层的TCP协议,生成所述目标应用服务的TCP网络包;
将所述TCP网络包传输至所述网络层;
在所述网络层中,生成所述TCP网络包对应的IP网络包;
将所述IP网络包传输至所述数据链路层;
在所述数据链路层中,生成所述IP网络包对应的目标数据帧。
可选地,所述基于所述目标数据帧生成目标电子信号,包括:
基于所述DPDK将所述目标数据帧发送至所述网卡;
在所述网卡中,生成所述目标数据帧对应的电子信号。
可选地,所述VPP还包括内存和队列管理,所述内存和队列管理用于针对待处理的目标应用服务分配内存以及进行队列排序。
可选地,所述目标应用服务为DNS域名解析服务。
可选地,所述方法应用于Linux应用系统。
可选地,所述用户态协议栈还包括会话层,所述会话层用于对多个双向会话消息进行控制和管理。
一种网络通信装置,所述装置包括:
目标应用服务执行模块,用于在接收到针对Socket的目标应用服务时,执行所述目标应用服务;
动态库加载模块,用于在执行所述目标应用服务时,加载VPP的动态库;
流量传送模块,用于通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈。
可选地,还包括:
目标数据帧生成模块,用于在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;
目标电子信号确定模块,用于基于所述目标数据帧生成目标电子信号;
用户发送模块,用于将所述目标电子信号传送至目标用户。
可选地,所述用户态协议栈包括传输层以及基于DPDK的网络层和所述数据链路层,所述DPDK与网卡进行交互。
可选地,所述目标数据帧生成模块包括:
TCP网络包生成子模块,用于依照所述传输层的TCP协议,生成所述目标应用服务的TCP网络包;
TCP网络包传输子模块,用于将所述TCP网络包传输至所述网络层;
IP网络包生成子模块,用于在所述网络层中,生成所述TCP网络包对应的IP网络包;
IP网络包传输子模块,用于将所述IP网络包传输至所述数据链路层;
目标数据帧生成子模块,用于在所述数据链路层中,生成所述IP网络包对应的目标数据帧。
一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述网络通信方法。
一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述网络通信方法。
本发明实施例具有以下优点:
本发明实施例通过在接收到针对Socket的目标应用服务时,执行所述目标应用服务,进而在执行所述目标应用服务时,加载VPP(VectorPacket Processing,矢量包处理)的动态库,进而通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈,从而实现了在用户态协议栈中处理目标应用服务,无需切换内核态协议栈,从而避免了内核态协议栈对单机性能的影响,提高网络通信性能。
本发明实施例在执行目标应用服务时,无需从用户态切换至内核协议栈,可直接在用户态协议栈中执行应用服务,从而通过用户态协议栈解决Linux内核协议栈的性能瓶颈问题;同时,VPP相比于整个操作系统更容易编译,从而容易进行调试和定制化修改。
此外,本发明实施例中目标应用服务的处理对应用是无感知、无侵入的,且能够最大化利用CPU和网卡的能力,从而实现了降低硬件成本。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种网络通信方法的步骤流程图;
图2是本发明一实施例提供的另一种网络通信方法的步骤流程图;
图3是本发明一实施例提供的一种域名解析服务的部署框架示意图;
图4是本发明一实施例提供的网络通信装置的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在实际应用中,绝大多数的服务端应用都是运行在Linux服务器上面,并依赖Linux本身的TCP(Transmission Control Protocol,传输控制协议)/IP(InternetProtocol,网际互连协议)协议栈来实现网络通信,例如,DNS域名解析服务。
然而,Linux的TCP/IP协议栈完全运行于内核态中,同时,Linux作为一个多用户多进程操作系统必须要考虑很多同步和竞态的问题,从而导致PSS(PacketPer Second,包/秒)较低。
以下以Linux操作系统中DNS域名解析服务为例,说明TCP/IP协议栈的性能低的原因:
在Linux操作系统中,DNS域名解析服务的传输链路为:DNS域名解析服务—TCP/IP协议栈—NIC(Network Interface Card,网卡),其中,当用户请求DNS域名解析服务时,在DNS域名解析服务针对用户输入的域名进行解析,该步骤为用户态协议栈,在解析后,将得到的解析数据转至TCP/IP协议栈进行封装,而TCP/IP协议栈为内核态协议栈,从而在此步骤需要从用户态切换到内核态协议栈中,当存在大量DNS域名解析服务需要处理时,不断进行内核态协议栈切换会降低整体的处理效率,从而导致性能减低。
在本发明实施例中,通过接入用户态协议栈的VPP(VectorPacket Processing,矢量包处理)应用,在处理应用服务时,加载VPP的动态库,使目标应用服务流量转入VPP的用户态协议栈中处理,从而无需切换内核态协议栈,避免了内核态协议栈导致的性能降低。
参照图1,示出了本发明一实施例提供的一种网络通信方法的步骤流程图,具体可以包括如下步骤:
步骤101,在接收到针对Socket的目标应用服务时,执行目标应用服务;
在本发明一实施例中,目标应用服务可以是针对Socket(套接字)的目标应用服务,具体可以为DNS域名解析服务。针对Socket(套接字)的目标应用服务可以采用TCP(TransmissionControl Protocol,传输控制协议)/IP(InternetProtocol,网际互连协议)协议栈来实现网络通信。
在本发明一实施例中,该方法应用于Linux应用系统,Linux应用系统为可以支持多用户、多任务、支持多线程和多个核心 CPU(CentralProcessing Unit,中央处理器)的操作系统。
在实际应用中,当用户向操作系统请求应用服务时,操作系统可以依照用户所请求的应用服务,执行应用服务相应程序,并将执行结果反馈用户。
当用户向操作系统请求的是针对Socket的目标应用服务时,服务器在接收到该目标应用程序时,可执行该目标应用服务。
例如,当用户请求的是DNS域名解析服务,用户在终端输入需要解析的域名,进而服务器针对该域名启动域名解析服务,确定用户所输入的域名对应的IP地址等信息。
步骤102,在执行目标应用服务时,加载VPP的动态库;
其中,VPP的动态库可以应用Socket挟持技术,当执行Socket时,触发启动VPP(Vector Packet Processing,矢量包处理)的动态库,以通过劫持POSIX(PortableOperating SystemInterface of UNIX,移植操作系统接口) Socket来将目标应用服务的流量传到VPP,从而实现绕过内核协议栈,直接在用户态协议栈中处理目标应用服务。
其中,VPP的动态库为VCL(VPP Comms Library,VPP 通信库),VCL旨在通过提供与POSIX 类似但不兼容 POSIX 的 API 来简化应用程序与 VPP 的集成。
动态库预先配置了Socket的相关执行代码,进而在执行目标应用服务过程中,会触发加载VPP的动态库。
具体的,VPP上层提供了与应用程序交互的共享内存机制,并由LD_PRELOAD(环境变量)加载的VCL动态库以进行通讯。
例如:当服务器中不采用VPP时,进行DNS解析服务:
// DNS解析服务
#include<socket.h>
解析socket.send(xxx)
进而,在解析DNS时切换至TCP/IP协议栈进行处理。
当设置动态库后,配置VPP(socket.h),进而VPP(socket) -- preload-->DNS域名,进而在进行DNS域名解析服务,则会加载动态库,继而转入VPP中的用户态协议栈继续处理DNS,跳过TCP/IP协议栈。
在实际应用中,代码库可以分为动态库、静态库,例如,设置socket、dns--静态-->可执行,即按照既定的socket、dns执行;dns --动态-->可执行,socket --动态-->动态库,即为,当执行DNS时,针对socket加载动态库。
步骤103,通过加载动态库,将目标应用服务的流量传送至基于VPP构建的用户态协议栈。
在服务器中加载动态库时,可以应用socket劫持技术,将目标应用服务的流量劫持到基于VPP构建的用户态协议栈中继续执行目标应用服务。
从而,通过动态加载库技术劫持流量至VPP,将绕过内核协议栈,在用户空间去运行目标应用服务,解决Linux内核网络处理的瓶颈问题,提高性能。
在本发明实施例中,通过在接收到针对Socket的目标应用服务时,执行所述目标应用服务,进而在执行所述目标应用服务时,加载VPP(VectorPacket Processing,矢量包处理)的动态库,进而通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈,从而实现了在用户态协议栈中处理目标应用服务,无需切换内核态协议栈,从而避免了内核态协议栈对单机性能的影响,提高网络通信性能。
本发明实施例通过这一整套的内核绕过技术就可以绕过Linux自身的TCP/IP协议栈,把网络数据包处理全部在用户空间中处理,避免了频繁的系统调用带来的性能损耗,所有基于socket的应用服务可以用这种方式来提高网络性能。
参照图2,示出了本发明一实施例提供的另一种网络通信方法的步骤流程图,具体可以包括如下步骤:
步骤201,在接收到针对Socket的目标应用服务时,执行目标应用服务;
步骤202,在执行目标应用服务时,加载VPP的动态库;
步骤203,通过加载动态库,将目标应用服务的流量传送至基于VPP构建的用户态协议栈。
在本发明一实施例中,用户态协议栈包括传输层以及基于DPDK的网络层和数据链路层,DPDK与网卡进行交互。
在实际应用中,VPP所构建的用户态协议栈包括TCP传输层、以及基于DPDK的网络层和数据链路层,其中,传输层、网络层、数据链路层均可以配置相应的数据处理协议,进而对接收的数据按照其对应的数据处理协议进行数据处理,例如,传输层可以设置有TCP协议,从而传输层针对接收的数据则按照TCP协议进行封装处理。
其中,DPDK(Data Plane Development Ki,数据平面开发套件)可以基于Linux系统运行,主要用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
在本发明实施例中,DPDK提供与网卡连接的功能,从而DPDK可以与网卡进行数据交互,在实际应用中,在VPP内经过用户态协议栈处理后的数据,由DPDK输出至网卡处理,DPDK也可以接收从网卡传入至VPP的数据。
步骤204,在用户态协议栈中,生成目标应用服务的目标数据帧;
当目标应用服务的流量被劫持至用户态协议栈中后,可以基于用户态协议栈继续执行目标应用程序,具体的,可以将目标应用程序解析后的数据进行封装处理等。在经过用户态协议栈处理后,可以生成目标应用服务的目标数据帧。
在本发明一实施例中,步骤204可以包括以下子步骤:
子步骤S11,依照传输层的TCP协议,生成目标应用服务的TCP网络包;
在实际应用中,目标应用服务可以依次经过传输层、网络层以及数据链路层的处理。
其中,在传输层,可以确定传输层的TCP协议,进而依照TCP协议进行数据封装。从而可以生成目标应用服务的TCP网络包。
子步骤S12,将TCP网络包传输至网络层;
在传输层生成TCP网络包后,可以将生成的TCP网络包传输至网络层继续进行处理。
子步骤S13,在网络层中,生成TCP网络包对应的IP网络包;
当网络层接收到TCP网络包后,则按照网络层中预设协议对TCP网络包进行处理,进而生成IP网络包。
子步骤S14,将IP网络包传输至数据链路层;
在生成IP网络包后,可以将IP网络包传输至数据链路层进行数据处理。
子步骤S15,在数据链路层中,生成IP网络包对应的目标数据帧。
在数据链路层中,可以将IP网络包处理成目标数据帧。
步骤205,基于目标数据帧生成目标电子信号;
在生成目标数据帧后,可以将目标数据帧转换为可传输的电子信号,如0、1信号。
在本发明另一实施例中,步骤204可以包括以下子步骤:
子步骤S21,基于DPDK将目标数据帧发送至网卡;
在实际应用中,VPP中生成的目标数据帧可以通过DPDK输出到网卡。
子步骤S22,在网卡中,生成目标数据帧对应的目标电子信号。
网卡在接收到目标数据帧后,将其转换为目标电子信号以进行数据传输。
步骤206,将目标电子信号传送至目标用户。
在生成目标电子信号后,将目标电子信号依照网络结构传输至目标用户。
在本发明一实施例中,VPP还包括内存和队列管理,内存和队列管理用于针对待处理的目标应用服务分配内存以及进行队列排序。
在一示例中,该方法还可以包括:响应于针对VPP的调试操作,按照调试操作对应的调试项对VPP进行调试。
在实际应用中,VPP相比于操作系统更容易进行调试,当用户针对VPP进行调试时,则可以在VPP中按照预设的调试项目进行调试。
在一示例中,该方法还可以包括:响应于针对VPP的代码修改操作,按照代码修改操作更新VPP。
在实际应用中,VPP可以进行定制化服务,针对VPP采用编码器进行快速编码,修改VPP代码,定制VPP的相应功能实现。
TCP/IP网络协议栈的内核调试程序复杂的,经常会导致内核崩溃挂死,反之在用户态协议栈中进行调试就会保险很多。除此之外,Linux内核协议栈由于历史包袱原因,改动也越来越难,而在用户态协议栈上面去做定制化需求就会简单很多。
在本发明实施例中,通过在接收到针对Socket的目标应用服务时,执行所述目标应用服务,进而在执行所述目标应用服务时,加载VPP(VectorPacket Processing,矢量包处理)的动态库,进而通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈,在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;基于所述目标数据帧生成目标电子信号;将所述目标电子信号传送至目标用户,从而实现了在用户态协议栈中处理目标应用服务,无需切换内核态协议栈,从而避免了内核态协议栈对单机性能的影响,提高网络通信性能。
以下结合图3所示部署框架对DNS域名解析服务的处理过程进行示例性说明。
如图3所示,展示了DNS域名解析服务整体应用部署架构,在该部署架构中,可以包括DNS域名解析服务、VPP构成的用户态协议栈以及NIC,其中,DNS域名解析服务设置有LD_PRELOAD以及VCL动态库,在执行DNS域名解析服务过程中,可以通过LD_PRELOAD加载VCL动态库,进而将DNS域名解析服务流量劫持到VPP中。
在VPP中可以包括SVM infa 、L5会话层、L4传输层、以及基于DPDK(数据平面开发套件)的L3网络层以及L2数据链路层。
SVM infa为支持向量机(Support Vector Machines, SVM)的Informatica,为一类ETL工具,支持各种数据源之间的数据抽取(extract)、转换(transform)、加载(load)等数据传输,具体可以包括VPP中的内存和队列管理以及Binary API(二进制应用程序接口),主要用于管理内存和按照预设的队列规则将待处理的应用程序分配到对应队列中。
例如,在进行DNS域名解析服务时,加载VPP的动态库,进而流量被劫持到VPP中,进而,按照内存和队列管理,将该DNS域名解析服务分配至目标队列中,按照队列在VPP的用户态协议栈中进行DNS域名解析服务。
L5会话层主要功能是用来管理网络设备的会话连接,细分为三大功能:建立会话、保持会话以及断开会话。
例如,L5会议层可以在DNS域名解析服务流量转入VPP时建立会话,进而在VPP中处理DNS域名解析服务过程中保持会话,当DNS域名解析服务转出VPP后,断开会话。
L4传输层的功能包括是选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。
L3网络层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。
L2数据链路层定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。
在实际应用中,DNS协议具体可以包括:七层应用层协议 ->VPP:四层传输层自定义的TCP协议 ->IP:三层网络层(DPDK) ->数据链数层(DPDK)
当用户发起DNS域名服务,在Linux操作系统中DNS域名解析服务对用户需要解析的域名进行解析,进而基于VPP上层提供的与应用程序交互的共享内存机制,由LD_PRELOAD(环境变量)加载的VCL动态库进行通讯,将DNS域名解析服务的流量劫持到VPP中,在L4传输层将解析结果按照TCP协议封装成TCP网络包(L4 VPP),进而在L3网络层,将TCP网络包封装成IP网络包(L3 DPDK),进而在L2层将IP网络包封装成数据帧(L2 DPDK),基于DPDK与网卡的交互能力,将数据帧从VPP转到物理网卡NIC,进而在物理网卡中间数据帧转换成可传输电子信号,并根据具体网络架构进行数据传输,将电子信号发送给用户。
其中,在VPP中构建了基于DPDK的用户态协议栈,当处理DNS域名服务,通过动态库加载技术将流量劫持到VPP中,以绕过内核态协议栈,从而实现了提高网络性能。
需要说明的是,对于方法实施例,为了简单描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了本发明一实施例提供的一种网络通信装置的结构示意图,具体可以包括如下模块:
目标应用服务执行模块401,用于在接收到针对Socket的目标应用服务时,执行所述目标应用服务;
动态库加载模块402,用于在执行所述目标应用服务时,加载VPP的动态库;
流量传送模块403,用于通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈。
在本发明一实施例中,所述装置还可以包括:
目标数据帧生成模块,用于在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;
目标电子信号确定模块,用于基于所述目标数据帧生成目标电子信号;
用户发送模块,用于将所述目标电子信号传送至目标用户。
在本发明一实施例中,所述用户态协议栈包括传输层以及基于DPDK的网络层和所述数据链路层,所述DPDK与网卡进行交互。
在本发明一实施例中,所述目标数据帧生成模块包括:
TCP网络包生成子模块,用于依照所述传输层的TCP协议,生成所述目标应用服务的TCP网络包;
TCP网络包传输子模块,用于将所述TCP网络包传输至所述网络层;
IP网络包生成子模块,用于在所述网络层中,生成所述TCP网络包对应的IP网络包;
IP网络包传输子模块,用于将所述IP网络包传输至所述数据链路层;
目标数据帧生成子模块,用于在所述数据链路层中,生成所述IP网络包对应的目标数据帧。
在本发明一实施例中,所述目标电子信号确定模块可以包括:
目标数据帧发送子模块,用于基于所述DPDK将所述目标数据帧发送至所述网卡;
电子信号生成子模块,用于在所述网卡中,生成所述目标数据帧对应的目标电子信号。
在本发明一实施例中,所述VPP还包括内存和队列管理,所述内存和队列管理用于针对待处理的目标应用服务分配内存以及进行队列排序。
在本发明一实施例中,所述目标应用服务为DNS域名解析服务。
在本发明一实施例中,所述方法应用于Linux应用系统。
在本发明一实施例中,所述用户态协议栈还包括会话层,所述会话层用于对多个双向会话消息进行控制和管理。
本发明一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上网络通信方法。
本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上网络通信方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对所提供的一种网络通信方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种网络通信方法,其特征在于,应用于Linux应用系统,所述方法包括:
在接收到针对Socket的目标应用服务时,执行所述目标应用服务,所述目标应用服务为DNS域名解析服务;
在执行所述目标应用服务时,加载VPP的动态库;所述VPP采用编码器进行编码;
通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈,以使所述DNS域名解析服务绕过所述Linux应用系统自身的内核协议栈;
在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;
基于所述目标数据帧生成目标电子信号;
将所述目标电子信号传送至目标用户。
2.根据权利要求1所述的方法,其特征在于,所述用户态协议栈包括传输层以及基于DPDK的网络层和数据链路层,所述DPDK与网卡进行交互。
3.根据权利要求2所述的方法,其特征在于,所述在所述用户态协议栈中,生成所述目标应用服务的目标数据帧,包括:
依照所述传输层的TCP协议,生成所述目标应用服务的TCP网络包;
将所述TCP网络包传输至所述网络层;
在所述网络层中,生成所述TCP网络包对应的IP网络包;
将所述IP网络包传输至所述数据链路层;
在所述数据链路层中,生成所述IP网络包对应的目标数据帧。
4.根据权利要求2所述的方法,其特征在于,所述基于所述目标数据帧生成目标电子信号,包括:
基于所述DPDK将所述目标数据帧发送至所述网卡;
在所述网卡中,生成所述目标数据帧对应的目标电子信号。
5.根据权利要求1所述的方法,其特征在于,所述VPP还包括内存和队列管理,所述内存和队列管理用于针对待处理的目标应用服务分配内存以及进行队列排序。
6.根据权利要求1所述的方法,其特征在于,所述用户态协议栈还包括会话层,所述会话层用于对多个双向会话消息进行控制和管理。
7.一种网络通信装置,其特征在于,应用于Linux应用系统,所述装置包括:
目标应用服务执行模块,用于在接收到针对Socket的目标应用服务时,执行所述目标应用服务;所述目标应用服务为DNS域名解析服务;
动态库加载模块,用于在执行所述目标应用服务时,加载VPP的动态库;所述VPP采用编码器进行编码;
流量传送模块,用于通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈,以使所述DNS域名解析服务绕过所述Linux应用系统自身的内核协议栈;
目标数据帧生成模块,用于在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;
目标电子信号确定模块,用于基于所述目标数据帧生成目标电子信号;
用户发送模块,用于将所述目标电子信号传送至目标用户。
8.根据权利要求7所述的装置,其特征在于,所述用户态协议栈包括传输层以及基于DPDK的网络层和数据链路层,所述DPDK与网卡进行交互。
9.根据权利要求8所述的装置,其特征在于,所述目标数据帧生成模块包括:
TCP网络包生成子模块,用于依照所述传输层的TCP协议,生成所述目标应用服务的TCP网络包;
TCP网络包传输子模块,用于将所述TCP网络包传输至所述网络层;
IP网络包生成子模块,用于在所述网络层中,生成所述TCP网络包对应的IP网络包;
IP网络包传输子模块,用于将所述IP网络包传输至所述数据链路层;
目标数据帧生成子模块,用于在所述数据链路层中,生成所述IP网络包对应的目标数据帧。
10.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述网络通信方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述网络通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310083040.6A CN115834665B (zh) | 2023-02-08 | 2023-02-08 | 一种网络通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310083040.6A CN115834665B (zh) | 2023-02-08 | 2023-02-08 | 一种网络通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115834665A CN115834665A (zh) | 2023-03-21 |
CN115834665B true CN115834665B (zh) | 2023-06-23 |
Family
ID=85520900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310083040.6A Active CN115834665B (zh) | 2023-02-08 | 2023-02-08 | 一种网络通信方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115834665B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018107433A1 (zh) * | 2016-12-15 | 2018-06-21 | 华为技术有限公司 | 信息处理方法和装置 |
CN110768994A (zh) * | 2019-10-30 | 2020-02-07 | 中电福富信息科技有限公司 | 一种基于dpdk技术的提高sip网关性能的方法 |
CN111970249A (zh) * | 2020-07-22 | 2020-11-20 | 山西大学 | 一种基于DPDK的Modbus协议实现方法和装置 |
CN113067849A (zh) * | 2021-02-05 | 2021-07-02 | 湖南国科亿存信息科技有限公司 | 基于Glusterfs的网络通信优化方法及装置 |
CN113485823A (zh) * | 2020-11-23 | 2021-10-08 | 中兴通讯股份有限公司 | 数据传输方法、装置、网络设备、存储介质 |
CN113596171A (zh) * | 2021-08-04 | 2021-11-02 | 杭州朗和科技有限公司 | 云计算数据交互方法、系统、电子设备及存储介质 |
CN114025018A (zh) * | 2021-11-29 | 2022-02-08 | 北京天融信网络安全技术有限公司 | 数据处理方法、装置、网络设备及计算机可读存储介质 |
CN114095251A (zh) * | 2021-11-19 | 2022-02-25 | 南瑞集团有限公司 | 一种基于dpdk与vpp的sslvpn实现方法 |
-
2023
- 2023-02-08 CN CN202310083040.6A patent/CN115834665B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018107433A1 (zh) * | 2016-12-15 | 2018-06-21 | 华为技术有限公司 | 信息处理方法和装置 |
CN110768994A (zh) * | 2019-10-30 | 2020-02-07 | 中电福富信息科技有限公司 | 一种基于dpdk技术的提高sip网关性能的方法 |
CN111970249A (zh) * | 2020-07-22 | 2020-11-20 | 山西大学 | 一种基于DPDK的Modbus协议实现方法和装置 |
CN113485823A (zh) * | 2020-11-23 | 2021-10-08 | 中兴通讯股份有限公司 | 数据传输方法、装置、网络设备、存储介质 |
WO2022105884A1 (zh) * | 2020-11-23 | 2022-05-27 | 中兴通讯股份有限公司 | 数据传输方法、装置、网络设备、存储介质 |
CN113067849A (zh) * | 2021-02-05 | 2021-07-02 | 湖南国科亿存信息科技有限公司 | 基于Glusterfs的网络通信优化方法及装置 |
CN113596171A (zh) * | 2021-08-04 | 2021-11-02 | 杭州朗和科技有限公司 | 云计算数据交互方法、系统、电子设备及存储介质 |
CN114095251A (zh) * | 2021-11-19 | 2022-02-25 | 南瑞集团有限公司 | 一种基于dpdk与vpp的sslvpn实现方法 |
CN114025018A (zh) * | 2021-11-29 | 2022-02-08 | 北京天融信网络安全技术有限公司 | 数据处理方法、装置、网络设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115834665A (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xiang et al. | Reducing latency in virtual machines: Enabling tactile Internet for human-machine co-working | |
US6941341B2 (en) | Method and apparatus for balancing distributed applications | |
US6757291B1 (en) | System for bypassing a server to achieve higher throughput between data network and data storage system | |
US11716264B2 (en) | In situ triggered function as a service within a service mesh | |
CN110677277B (zh) | 数据处理方法、装置、服务器和计算机可读存储介质 | |
CN112104754B (zh) | 网络代理方法、系统、装置、设备及存储介质 | |
US7844708B2 (en) | Method and apparatus for load sharing and data distribution in servers | |
JP5540963B2 (ja) | 情報処理方法、装置及びプログラム | |
US20030120782A1 (en) | Method and computer system for client server inter process communication | |
CN115834665B (zh) | 一种网络通信方法和装置 | |
CN111158782B (zh) | 一种基于DPDK技术的Nginx配置热更新系统和方法 | |
US9537931B2 (en) | Dynamic object oriented remote instantiation | |
CN117642724A (zh) | 使用无服务器计算系统的流式分析 | |
Emako et al. | A mobile agent-based advanced service architecture for wireless Internet telephony: design, implementation, and evaluation | |
Buddhikot et al. | Scalable multimedia-on-demand via world-wide-web (WWW) with QOS guarantees | |
Rosa et al. | INSANE: A Unified Middleware for QoS-aware Network Acceleration in Edge Cloud Computing | |
CN110769026A (zh) | 分布式互联网信息采集系统及方法 | |
Kumar et al. | quicSDN: Transitioning from TCP to QUIC for southbound communication in software-defined networks | |
CN115277419B (zh) | 一种无服务计算中加速网络启动方法 | |
Bhonagiri et al. | Constraint based network communications in a virtual environment of a proprietary hardware | |
Bonfoh | VTL: A Stable Framework for Conception, Implementation, and Deployment of Internet Communication Protocols | |
Narayan et al. | Bringing Reconfigurability to the Network Stack | |
CN114090280A (zh) | 基于远程过程调用协议的交互方法及装置 | |
EP2463777A1 (en) | System for improving performance of a real time communication application | |
CN115834722A (zh) | 一种数据处理方法、装置、网元设备以及可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Patentee before: Tianyiyun Technology Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |