数据传输方法、电子设备和计算机可读存储介质技术

技术编号:35863176 阅读:19 留言:0更新日期:2022-12-07 10:53
本发明专利技术的实施例提供了一种数据传输方法、电子设备和计算机可读存储介质,涉及通信领域。其中,数据传输方法,包括:设置SKB缓冲池,在所述SKB缓冲池中设置若干SKB;将网卡的接收缓存区映射到所述SKB的数据区;将所述网卡接收到的数据包根据映射关系填充至所述SKB的数据区,形成带包SKB;将所述带包SKB输送至数据处理器。与现有技术相比,本发明专利技术实施例所提供的数据传输方法、电子设备和计算机可读存储介质具有提高收包效率的优点。质具有提高收包效率的优点。质具有提高收包效率的优点。

【技术实现步骤摘要】
数据传输方法、电子设备和计算机可读存储介质


[0001]本专利技术涉及通信领域,具体而言,涉及一种数据传输方法、电子设备和计算机可读存储介质。

技术介绍

[0002]随着互联网技术的快速发展,网络带宽也越来越大,网络设备面临更大的流量处理压力,收发包性能是网络设备性能提高的关键点之一,所以需要对传统收发包方式进行改进以适应大流量的收发包需求。linux系统中网卡驱动程序作为数据包收取的第一软件入口点,对于整个linux网络子系统处理数据包的效率至关重要。
[0003]目前大多数网卡驱动在收到数据包时都会使用SKB(Struct sk_buffer,套接字缓冲区)进行数据包的转送工具,并采用数据包拷贝的方式将数据从网卡的缓存区放入SKB中。然而,由于此种方式的收发包需要在内核模块和应用程序间进行多次数据拷贝,导致传统收发包方式性能低下,收包效率低。

技术实现思路

[0004]本专利技术的目的包括,例如,提供了一种数据传输方法、电子设备和计算机可读存储介质,其能够减少申请SKB的次数、减少数据包在传输过程中的拷贝次数,提升收包效率。
[0005]本专利技术的实施例可以这样实现:
[0006]第一方面,本专利技术提供一种数据传输方法,包括:设置SKB缓冲池,在所述SKB缓冲池中设置若干SKB;将网卡的接收缓存区映射到所述SKB的数据区;将所述网卡接收到的数据包根据映射关系填充至所述SKB的数据区,形成带包SKB;将所述带包SKB输送至数据处理器。
[0007]第二方面,本专利技术提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如前述实施方式中任意一项所述的数据传输方法。
[0008]第三方面,本专利技术提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行实现前述实施方式中任意一项所述的数据传输方法。
[0009]本专利技术实施例的有益效果包括,例如:预先设置SKB缓冲池、并在SKB缓冲池中预先设置有若干SKB,网卡的接收缓存区映射到SKB的数据区;网卡在接收到数据包后,可以根据接收缓存区与SKB数据区的映射关系,将原本应该存储在接收缓存区中的数据包直接填充到SKB的数据区中,而无需经过将接收的数据包存储在接收缓存区,然后将接收缓存区中存储的数据包拷贝到SKB的数据区中这一拷贝动作,有效的提升了收包效率。同时,相较于现有技术中将接收缓存区中存储的数据包拷贝到SKB的数据区中这的技术方案,根据接收缓存区与SKB数据区的映射关系,将原本应该存储在接收缓存区中的数据包直接填充到SKB的数据区中这一过程无需中央处理器的参与,可以节省中央处理器资源,使得中央处理器有
更多的能力处理进行其它操作,可以从整体上提升电子设备的工作能力。此外,由于SKB预设在SKB缓冲池内,且网卡接收到数据包后可以直接填充到SKB的数据区中,无需即时申请SKB进行数据包的运输,减少对SKB的申请次数,同样可以提升收包效率。
[0010]在可选的实施方式中,所述将所述带包SKB输送至数据处理器前,所述方法还包括:解除所述带包SKB与所述接收缓存区的映射关系。解除带包SKB与接收缓存区的映射关系一方面可以避免后续接收的数据包持续向带包SKB中进行填充,导致带包SKB中原本存储的数据包损坏或者丢失等问题的发生,提升收包准确率;另一方面还可以释放与带包SKB映射的接收缓存区的内存空间,使得与带包SKB映射的接收缓存区的内存空间不被无法继续填充数据包的带包SKB占用,进一步的提升收包效率。
[0011]在可选的实施方式中,所述将所述带包SKB输送至数据处理器后,所述方法还包括:获取被所述数据处理器清空数据区的所述带包SKB,形成空包SKB;将所述空包SKB再次填充至所述SKB缓冲池;将所述接收缓存区再次映射到所述空包SKB的数据区。带包SKB将数据包输送至数据处理器后,数据包被数据处理器获取,此时带包SKB数据区存储的数据包被清空,形成空包SKB,空包SKB可以重新填充新的数据包,将空包SKB再次填充至SKB缓冲池,并将接收缓存区再次映射到空包SKB的数据区,可以实现对SKB的回收再利用,减少对SKB的申请次数,进一步的提升收包效率。
[0012]在可选的实施方式中,所述将所述空包SKB再次填充至所述SKB缓冲池前,包括:获取存储在所述SKB缓冲池内的所述SKB的第一数量;判断所述第一数量是否小于第一预设阈值;若所述第一数量小于所述第一预设阈值,将所述空包SKB再次填充至所述SKB缓冲池。当存储在SKB缓冲池内的SKB的第一数量小于第一预设阈值时,将空包SKB再次填充至SKB缓冲池,可以避免SKB缓冲池内存储的SKB数量过多造成资源拥挤,提升整个收包过程的稳定性。
[0013]在可选的实施方式中,所述方法还包括:若所述第一数量大于或等于所述第一预设阈值,释放所述空包SKB。由于第一数量大于或等于第一预设阈值时无法将空包SKB存储在SKB缓冲池中,释放空包SKB可以避免空包SKB长时间空置造成的资源浪费。
[0014]在可选的实施方式中,所述方法还包括:若所述第一数量大于或等于所述第一预设阈值,搁置所述空包SKB直至所述第一数量小于所述第一预设阈值。由于第一数量大于或等于第一预设阈值时无法将空包SKB存储在SKB缓冲池中,搁置空包SKB直至第一数量小于第一预设阈值可以避免在SKB缓冲池后续存储的SKB数量减小至第一预设阈值后需要重新申请SKB进行补充,减少对SKB的申请次数。
[0015]在可选的实施方式中,所述方法还包括:获取存储在所述SKB缓冲池内的所述SKB的第一数量;当所述第一数量小于第二预设阈值时,向所述SKB缓冲池内填充新的SKB,将所述接收缓存区映射到所述新的SKB的数据区。当第一数量小于第二预设阈值时,向SKB缓冲池内填充新的SKB,并将接收缓存区映射到新的SKB的数据区,可以避免SKB缓冲池内存储的SKB数量不足造成的数据包运送能力的下降,进一步的保证收包效率。
[0016]在可选的实施方式中,所述将网卡的接收缓存区映射到所述SKB的数据区,包括:将所述接收缓存区通过直接存储器访问技术映射到所述SKB的数据区。将接收缓存区通过直接存储器访问技术映射到SKB的数据区,由于直接存储器访问技术无需中央处理器参与设置,从而节约中央处理器资源,从整体上提升整个电子设备的运算能力。
附图说明
[0017]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0018]图1为本专利技术实施例一所提供的数据传输方法的流程示意图;
[0019]图2为本接收缓存区与SKB缓冲区之间的映射关系示意图;...

【技术保护点】

【技术特征摘要】
1.一种数据传输方法,其特征在于,包括:设置SKB缓冲池,在所述SKB缓冲池中设置若干SKB;将网卡的接收缓存区映射到所述SKB的数据区;将所述网卡接收到的数据包根据映射关系填充至所述SKB的数据区,形成带包SKB;将所述带包SKB输送至数据处理器。2.根据权利要求1所述的数据传输方法,其特征在于,所述将所述带包SKB输送至数据处理器前,所述方法还包括:解除所述带包SKB与所述接收缓存区的映射关系。3.根据权利要求2所述的数据传输方法,其特征在于,所述将所述带包SKB输送至数据处理器后,所述方法还包括:获取被所述数据处理器清空数据区的所述带包SKB,形成空包SKB;将所述空包SKB再次填充至所述SKB缓冲池;将所述接收缓存区再次映射到所述空包SKB的数据区。4.根据权利要求3所述的数据传输方法,其特征在于,所述将所述空包SKB再次填充至所述SKB缓冲池前,包括:获取存储在所述SKB缓冲池内的所述SKB的第一数量;判断所述第一数量是否小于第一预设阈值;若所述第一数量小于所述第一预设阈值,将所述空包SKB再次填充至所述SKB缓冲池。5.根据权利要求4所述的数据传输方法,其特征在于,所述方法还包括:若所述第一数量...

【专利技术属性】
技术研发人员:刘会潮祖静
申请(专利权)人:北京天融信科技有限公司北京天融信软件有限公司
类型:发明
国别省市:

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

1