一种网络通信方法和装置制造方法及图纸

技术编号:36933712 阅读:11 留言:0更新日期:2023-03-22 18:55
本发明专利技术实施例提供了一种网络通信方法和装置,该方法包括:在接收到针对Socket的目标应用服务时,执行所述目标应用服务;在执行所述目标应用服务时,加载VPP的动态库;通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈。通过本发明专利技术实施例,实现了在用户态协议栈中处理目标应用服务,无需切换内核态协议栈,从而避免了内核态协议栈对单机性能的影响,提高网络通信性能。能。能。

【技术实现步骤摘要】
一种网络通信方法和装置


[0001]本专利技术涉及网络通信
,特别是涉及一种网络通信方法和装置。

技术介绍

[0002]随着互联网时代应用规模越来越大,DNS(Domain Name System,域名系统)域名解析服务也承受着越来越大的压力,对于CPU、内存、带宽、IO等都提出了新的挑战。
[0003]目前,绝大多数的服务端应用都是运行在Linux服务器上面,并依赖Linux本身的TCP/IP协议栈来实现网络通信,DNS域名解析服务也不例外。Linux的TCP/IP协议栈完全运行于内核态中,同时,Linux作为一个通用的多用户多进程操作系统必须要考虑很多同步和竞态的问题,因此,其PPS(PacketPer Second,包每秒,用于表示以网络包为单位的传输速率,一般用来评估系统对于网络的转发能力)并不是很高,在DNS域名解析服务这种高网络IO(Input/Output,输入/输出)的场景下面很容易成为瓶颈,即由于内核数据包复制、CPU中断、系统调用导致的上下文切换、内核自旋锁等原因,DNS域名解析服务往往在触及CPU上限或者网卡上限的时候就已经达到了Linux内核网络处理的瓶颈,从而由于软件限制了硬件的能力,导致了单机性能无法提升。

技术实现思路

[0004]鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种网络通信方法和装置,包括:一种网络通信方法,所述方法包括:在接收到针对Socket的目标应用服务时,执行所述目标应用服务;在执行所述目标应用服务时,加载VPP的动态库;通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈。
[0005]可选地,还包括:在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;基于所述目标数据帧生成目标电子信号;将所述目标电子信号传送至目标用户。
[0006]可选地,所述用户态协议栈包括传输层以及基于DPDK的网络层和所述数据链路层,所述DPDK与网卡进行交互。
[0007]可选地,所述在所述用户态协议栈中,生成所述目标应用服务的目标数据帧,包括:依照所述传输层的TCP协议,生成所述目标应用服务的TCP网络包;将所述TCP网络包传输至所述网络层;在所述网络层中,生成所述TCP网络包对应的IP网络包;将所述IP网络包传输至所述数据链路层;
在所述数据链路层中,生成所述IP网络包对应的目标数据帧。
[0008]可选地,所述基于所述目标数据帧生成目标电子信号,包括:基于所述DPDK将所述目标数据帧发送至所述网卡;在所述网卡中,生成所述目标数据帧对应的电子信号。
[0009]可选地,所述VPP还包括内存和队列管理,所述内存和队列管理用于针对待处理的目标应用服务分配内存以及进行队列排序。
[0010]可选地,所述目标应用服务为DNS域名解析服务。
[0011]可选地,所述方法应用于Linux应用系统。
[0012]可选地,所述用户态协议栈还包括会话层,所述会话层用于对多个双向会话消息进行控制和管理。
[0013]一种网络通信装置,所述装置包括:目标应用服务执行模块,用于在接收到针对Socket的目标应用服务时,执行所述目标应用服务;动态库加载模块,用于在执行所述目标应用服务时,加载VPP的动态库;流量传送模块,用于通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈。
[0014]可选地,还包括:目标数据帧生成模块,用于在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;目标电子信号确定模块,用于基于所述目标数据帧生成目标电子信号;用户发送模块,用于将所述目标电子信号传送至目标用户。
[0015]可选地,所述用户态协议栈包括传输层以及基于DPDK的网络层和所述数据链路层,所述DPDK与网卡进行交互。
[0016]可选地,所述目标数据帧生成模块包括:TCP网络包生成子模块,用于依照所述传输层的TCP协议,生成所述目标应用服务的TCP网络包;TCP网络包传输子模块,用于将所述TCP网络包传输至所述网络层;IP网络包生成子模块,用于在所述网络层中,生成所述TCP网络包对应的IP网络包;IP网络包传输子模块,用于将所述IP网络包传输至所述数据链路层;目标数据帧生成子模块,用于在所述数据链路层中,生成所述IP网络包对应的目标数据帧。
[0017]一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述网络通信方法。
[0018]一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述网络通信方法。
[0019]本专利技术实施例具有以下优点:本专利技术实施例通过在接收到针对Socket的目标应用服务时,执行所述目标应用服务,进而在执行所述目标应用服务时,加载VPP(VectorPacket Processing,矢量包处理)的
动态库,进而通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈,从而实现了在用户态协议栈中处理目标应用服务,无需切换内核态协议栈,从而避免了内核态协议栈对单机性能的影响,提高网络通信性能。
[0020]本专利技术实施例在执行目标应用服务时,无需从用户态切换至内核协议栈,可直接在用户态协议栈中执行应用服务,从而通过用户态协议栈解决Linux内核协议栈的性能瓶颈问题;同时,VPP相比于整个操作系统更容易编译,从而容易进行调试和定制化修改。
[0021]此外,本专利技术实施例中目标应用服务的处理对应用是无感知、无侵入的,且能够最大化利用CPU和网卡的能力,从而实现了降低硬件成本。
附图说明
[0022]为了更清楚地说明本专利技术的技术方案,下面将对本专利技术的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0023]图1是本专利技术一实施例提供的一种网络通信方法的步骤流程图;图2是本专利技术一实施例提供的另一种网络通信方法的步骤流程图;图3是本专利技术一实施例提供的一种域名解析服务的部署框架示意图;图4是本专利技术一实施例提供的网络通信装置的结构示意图。
具体实施方式
[0024]为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0025]在实际应用中,绝大多数的服务端应用都是运行在Linux服务器上面,并依赖Linux本身的TCP(Transmission Control Protocol,传输控制协议)/IP(Internet本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种网络通信方法,其特征在于,所述方法包括:在接收到针对Socket的目标应用服务时,执行所述目标应用服务;在执行所述目标应用服务时,加载VPP的动态库;通过加载所述动态库,将所述目标应用服务的流量传送至基于所述VPP构建的用户态协议栈。2.根据权利要求1所述的方法,其特征在于,还包括:在所述用户态协议栈中,生成所述目标应用服务的目标数据帧;基于所述目标数据帧生成目标电子信号;将所述目标电子信号传送至目标用户。3.根据权利要求2所述的方法,其特征在于,所述用户态协议栈包括传输层以及基于DPDK的网络层和数据链路层,所述DPDK与网卡进行交互。4.根据权利要求3所述的方法,其特征在于,所述在所述用户态协议栈中,生成所述目标应用服务的目标数据帧,包括:依照所述传输层的TCP协议,生成所述目标应用服务的TCP网络包;将所述TCP网络包传输至所述网络层;在所述网络层中,生成所述TCP网络包对应的IP网络包;将所述IP网络包传输至所述数据链路层;在所述数据链路层中,生成所述IP网络包对应的目标数据帧。5.根据权利要求3所述的方法,其特征在于,所述基于所述目标数据帧生成目标电子信号,包括:基于所述DPDK将所述目标数据帧发送至所述网卡;在所述网卡中,生成所述目标数据帧对应的目标电子信号。6.根据权利要求1所述的方法,其特征在于,所述VPP还包括内存和队列管理,所述内存和队列管理用于针对待处理的目标应用服务分配内存以及进行队列排序。7.根据权利要求1所述的方法,其特征在于,所述目标应用服务为DNS域名解析服务。8.根据权利要求1所述的方法,其特征在于,所述方法应用于Linux应用系统。9.根据权利要求1所述的方法,其特征在于,所述用户态协议栈还包括会话层,所述会话层用于对多个双向会话消息进行控制和管理。10....

【专利技术属性】
技术研发人员:李嘉瑛
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1