CN115442319A - 数据传输方法、电子设备和计算机可读存储介质 - Google Patents
数据传输方法、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115442319A CN115442319A CN202211065639.9A CN202211065639A CN115442319A CN 115442319 A CN115442319 A CN 115442319A CN 202211065639 A CN202211065639 A CN 202211065639A CN 115442319 A CN115442319 A CN 115442319A
- Authority
- CN
- China
- Prior art keywords
- skb
- data
- buffer pool
- packet
- processor
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000005540 biological transmission Effects 0.000 title claims abstract description 46
- 238000013507 mapping Methods 0.000 claims abstract description 68
- 238000005516 engineering process Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009469 supplementation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的实施例提供了一种数据传输方法、电子设备和计算机可读存储介质,涉及通信领域。其中,数据传输方法,包括:设置SKB缓冲池,在所述SKB缓冲池中设置若干SKB;将网卡的接收缓存区映射到所述SKB的数据区;将所述网卡接收到的数据包根据映射关系填充至所述SKB的数据区,形成带包SKB;将所述带包SKB输送至数据处理器。与现有技术相比,本发明实施例所提供的数据传输方法、电子设备和计算机可读存储介质具有提高收包效率的优点。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种数据传输方法、电子设备和计算机可读存储介质。
背景技术
随着互联网技术的快速发展,网络带宽也越来越大,网络设备面临更大的流量处理压力,收发包性能是网络设备性能提高的关键点之一,所以需要对传统收发包方式进行改进以适应大流量的收发包需求。linux系统中网卡驱动程序作为数据包收取的第一软件入口点,对于整个linux网络子系统处理数据包的效率至关重要。
目前大多数网卡驱动在收到数据包时都会使用SKB(Struct sk_buffer,套接字缓冲区)进行数据包的转送工具,并采用数据包拷贝的方式将数据从网卡的缓存区放入SKB中。然而,由于此种方式的收发包需要在内核模块和应用程序间进行多次数据拷贝,导致传统收发包方式性能低下,收包效率低。
发明内容
本发明的目的包括,例如,提供了一种数据传输方法、电子设备和计算机可读存储介质,其能够减少申请SKB的次数、减少数据包在传输过程中的拷贝次数,提升收包效率。
本发明的实施例可以这样实现:
第一方面,本发明提供一种数据传输方法,包括:设置SKB缓冲池,在所述SKB缓冲池中设置若干SKB;将网卡的接收缓存区映射到所述SKB的数据区;将所述网卡接收到的数据包根据映射关系填充至所述SKB的数据区,形成带包SKB;将所述带包SKB输送至数据处理器。
第二方面,本发明提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如前述实施方式中任意一项所述的数据传输方法。
第三方面,本发明提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行实现前述实施方式中任意一项所述的数据传输方法。
本发明实施例的有益效果包括,例如:预先设置SKB缓冲池、并在SKB缓冲池中预先设置有若干SKB,网卡的接收缓存区映射到SKB的数据区;网卡在接收到数据包后,可以根据接收缓存区与SKB数据区的映射关系,将原本应该存储在接收缓存区中的数据包直接填充到SKB的数据区中,而无需经过将接收的数据包存储在接收缓存区,然后将接收缓存区中存储的数据包拷贝到SKB的数据区中这一拷贝动作,有效的提升了收包效率。同时,相较于现有技术中将接收缓存区中存储的数据包拷贝到SKB的数据区中这的技术方案,根据接收缓存区与SKB数据区的映射关系,将原本应该存储在接收缓存区中的数据包直接填充到SKB的数据区中这一过程无需中央处理器的参与,可以节省中央处理器资源,使得中央处理器有更多的能力处理进行其它操作,可以从整体上提升电子设备的工作能力。此外,由于SKB预设在SKB缓冲池内,且网卡接收到数据包后可以直接填充到SKB的数据区中,无需即时申请SKB进行数据包的运输,减少对SKB的申请次数,同样可以提升收包效率。
在可选的实施方式中,所述将所述带包SKB输送至数据处理器前,所述方法还包括:解除所述带包SKB与所述接收缓存区的映射关系。解除带包SKB与接收缓存区的映射关系一方面可以避免后续接收的数据包持续向带包SKB中进行填充,导致带包SKB中原本存储的数据包损坏或者丢失等问题的发生,提升收包准确率;另一方面还可以释放与带包SKB映射的接收缓存区的内存空间,使得与带包SKB映射的接收缓存区的内存空间不被无法继续填充数据包的带包SKB占用,进一步的提升收包效率。
在可选的实施方式中,所述将所述带包SKB输送至数据处理器后,所述方法还包括:获取被所述数据处理器清空数据区的所述带包SKB,形成空包SKB;将所述空包SKB再次填充至所述SKB缓冲池;将所述接收缓存区再次映射到所述空包SKB的数据区。带包SKB将数据包输送至数据处理器后,数据包被数据处理器获取,此时带包SKB数据区存储的数据包被清空,形成空包SKB,空包SKB可以重新填充新的数据包,将空包SKB再次填充至SKB缓冲池,并将接收缓存区再次映射到空包SKB的数据区,可以实现对SKB的回收再利用,减少对SKB的申请次数,进一步的提升收包效率。
在可选的实施方式中,所述将所述空包SKB再次填充至所述SKB缓冲池前,包括:获取存储在所述SKB缓冲池内的所述SKB的第一数量;判断所述第一数量是否小于第一预设阈值;若所述第一数量小于所述第一预设阈值,将所述空包SKB再次填充至所述SKB缓冲池。当存储在SKB缓冲池内的SKB的第一数量小于第一预设阈值时,将空包SKB再次填充至SKB缓冲池,可以避免SKB缓冲池内存储的SKB数量过多造成资源拥挤,提升整个收包过程的稳定性。
在可选的实施方式中,所述方法还包括:若所述第一数量大于或等于所述第一预设阈值,释放所述空包SKB。由于第一数量大于或等于第一预设阈值时无法将空包SKB存储在SKB缓冲池中,释放空包SKB可以避免空包SKB长时间空置造成的资源浪费。
在可选的实施方式中,所述方法还包括:若所述第一数量大于或等于所述第一预设阈值,搁置所述空包SKB直至所述第一数量小于所述第一预设阈值。由于第一数量大于或等于第一预设阈值时无法将空包SKB存储在SKB缓冲池中,搁置空包SKB直至第一数量小于第一预设阈值可以避免在SKB缓冲池后续存储的SKB数量减小至第一预设阈值后需要重新申请SKB进行补充,减少对SKB的申请次数。
在可选的实施方式中,所述方法还包括:获取存储在所述SKB缓冲池内的所述SKB的第一数量;当所述第一数量小于第二预设阈值时,向所述SKB缓冲池内填充新的SKB,将所述接收缓存区映射到所述新的SKB的数据区。当第一数量小于第二预设阈值时,向SKB缓冲池内填充新的SKB,并将接收缓存区映射到新的SKB的数据区,可以避免SKB缓冲池内存储的SKB数量不足造成的数据包运送能力的下降,进一步的保证收包效率。
在可选的实施方式中,所述将网卡的接收缓存区映射到所述SKB的数据区,包括:将所述接收缓存区通过直接存储器访问技术映射到所述SKB的数据区。将接收缓存区通过直接存储器访问技术映射到SKB的数据区,由于直接存储器访问技术无需中央处理器参与设置,从而节约中央处理器资源,从整体上提升整个电子设备的运算能力。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例一所提供的数据传输方法的流程示意图;
图2为本接收缓存区与SKB缓冲区之间的映射关系示意图;
图3为本发明实施例二所提供的数据传输方法的流程示意图;
图4为本发明实施例三所提供的数据传输方法的流程示意图;
图5为本发明实施例四所提供的数据传输方法的流程示意图;
图6为本发明实施例五所提供的数据传输方法的流程示意图;
图7为本发明实施例六所提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
此外,术语“水平”、“竖直”、“悬垂”等术语并不表示要求部件绝对水平或悬垂,而是可以稍微倾斜。如“水平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,本发明实施例中例举的各个步骤在实际应用过程中的执行次数并不限定,在实际应用过程中,部分步骤可以是只执行一次,也可以是多次执行,具体可以根据实际需要进行灵活的设置。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本实施例一提供了一种数据传输方法,具体步骤如图1所示,包括以下步骤:
步骤S101:设置SKB缓冲池,在SKB缓冲池中设置若干SKB。
SKB(Struct sk_buffer,套接字缓冲区)是linux系统中,用于管理Data Buffer(数据缓冲区)的结构,并用于在linux网络中传输数据包,一个SKB结构一般由SKB数据结构(即SKB包头,用于存储数据包包头)和数据包内容(即数据区,用于存储数据包实体)组成。现有技术中,当需要使用SKB进行数据传输时,需要预先申请SKB,系统接收到申请后在内存中分配一段内存空间用于构建SKB结构,在SKB完成数据传输后,释放用于构建SKB结构的内存空间。
具体的,在本步骤中,在系统初始化时,在内存中分配一段内存空间建立SKB缓冲池,在建立SKB缓冲池后在SKB缓冲池内设置若干SKB。
步骤S102:将网卡的接收缓存区映射到SKB的数据区。
具体的,如图2所示,在本步骤中,在网卡的接收缓存区中划分多个映射区,每个映射区与唯一一个SKB的数据区建立映射关系,即每个映射区对应唯一一个SKB的数据区,网卡在接收到数据包时,将数据包存储到映射区同时可以直接将数据包存储到与之对应的SKB的数据区中,而无需通过拷贝将数据包自接收缓存区中拷贝至SKB的数据区中。
优选的,在本发明的一种实施例中,可以使用DMA(Direct Memory Access,直接存储器访问)技术建立接收缓存区到SKB的数据区之间的映射关系。将接收缓存区通过直接存储器访问技术映射到SKB的数据区,由于直接存储器访问技术无需中央处理器参与设置,从而节约中央处理器资源,从整体上提升整个电子设备的运算能力。可以理解的是,前述使用DMA技术建立接收缓存区到SKB的数据区之间的映射关系仅为本发明一种实施例中的具体的举例说明,并不构成限定,在本发明的其它实施例中,也可以是通过内存映射函数(如mmap()函数、remap_pfn_range函数等)建立接收缓存区到SKB的数据区之间的映射关系,具体可以根据实际需要进行灵活的设置。
步骤S103:将网卡接收到的数据包根据映射关系填充至SKB的数据区,形成带包SKB。
具体的,在本步骤中,网卡在接收到数据包后,将接收的数据包存储在接收缓存区内的过程中,由于接收缓存区与SKB的数据区已经建立映射关系,可以直接根据这一映射关系将原本应该存储在接收缓存区内的数据包直接存储在SKB的数据区内,数据区存储数据包后的SKB即形成本实施例的带包SKB。可以理解的是,所谓带包SKB仅为本实施例中便于对不同状态的SKB进行区分进行的命名,其本质仍为SKB结构,并不存在结构的改变。
步骤S104:将带包SKB输送至数据处理器。
具体的,在本步骤中,带包SKB存储数据包后,即根据数据包的传输需要,将数据包传输至相应的数据处理器中,例如SKB较为常见的应用场景为网卡的收发包过程,在这一过程中,带包SKB即需将数据包传输至协议栈中进行数据包调用、并经由驱动发送接口向下一节点发送数据包。而在协议栈等数据处理器调用、发送数据包后,带包SKB中存储的数据包即被清空,SKB的数据包传输过程完成。
本实施例一提供的一种数据传输方法至少具有以下优点:首先,预先设置SKB缓冲池、并在SKB缓冲池中预先设置有若干SKB,网卡的接收缓存区映射到SKB的数据区;网卡在接收到数据包后,可以根据接收缓存区与SKB数据区的映射关系,将原本应该存储在接收缓存区中的数据包直接填充到SKB的数据区中,而无需经过将接收的数据包存储在接收缓存区,然后将接收缓存区中存储的数据包拷贝到SKB的数据区中这一拷贝动作,有效的提升了收包效率。其次,相较于现有技术中将接收缓存区中存储的数据包拷贝到SKB的数据区中这的技术方案,根据接收缓存区与SKB数据区的映射关系,将原本应该存储在接收缓存区中的数据包直接填充到SKB的数据区中这一过程无需中央处理器的参与,可以节省中央处理器资源,使得中央处理器有更多的能力处理进行其它操作,可以从整体上提升电子设备的工作能力。此外,由于SKB预设在SKB缓冲池内,且网卡接收到数据包后可以直接根据映射关系填充到SKB的数据区中,无需在网卡接收到数据包时即时申请SKB进行数据包的传输,减少对SKB的申请次数,同样可以提升收包效率。
本发明实施例二也提供了一种数据传输方法,具体步骤如图3所示,包括以下步骤:
步骤S201:设置SKB缓冲池,在SKB缓冲池中设置若干SKB。
步骤S202:将网卡的接收缓存区映射到SKB的数据区。
步骤S203:将网卡接收到的数据包根据映射关系填充至SKB的数据区,形成带包SKB。
步骤S204:解除带包SKB与接收缓存区的映射关系。
具体的,在本步骤中,当SKB缓冲池中任意一个带包SKB中数据包已经填充完成后,即解除此带包SKB与接收缓存区的映射关系,解除映射关系后,即无法直接将接收到的数据包存储到这一带包SKB中。此外,解除此带包SKB与接收缓存区的映射关系后,接收缓存区中原本与此带包SKB映射的映射区被释放,被释放的映射区可以与其它SKB建立新的映射关系。
步骤S205:将带包SKB输送至数据处理器。
具体的,本实施例二中的步骤S201至步骤S203、步骤S205与前述实施例一中的步骤S101至步骤S104大致相同,具体可以参照前述实施例的具体说明,在此不再赘述。
本实施例二提供的一种数据传输方法至少具有以下优点:首先,由于本实施例二中的步骤S201至步骤S203、步骤S205与前述实施例一中的步骤S101至步骤S104大致相同,因此本实施例二所提供的数据传输方法同样具有实施例一所具备的技术效果;此外,本实施例二中新增解除带包SKB与接收缓存区的映射关系的步骤,解除带包SKB与接收缓存区的映射关系后,即无法直接将接收到的数据包根据映射关系存储到带包SKB中,避免后续接收的数据包持续向带包SKB中进行填充,导致带包SKB中原本存储的数据包损坏或者丢失等问题的发生,提升收包准确率;此外,由于解除带包SKB与接收缓存区的映射关系后,接收缓存区中原本与此带包SKB映射的映射区被释放,被释放的映射区可以与其它SKB建立新的映射关系,避免与已经填充完全的带包SKB映射的映射区持续被占用而无法连续的进行数据包的传输,进一步的提升收包效率。
本发明实施例三也提供了一种数据传输方法,具体步骤如图4所示,包括以下步骤:
步骤S301:设置SKB缓冲池,在SKB缓冲池中设置若干SKB。
步骤S302:将网卡的接收缓存区映射到SKB的数据区。
步骤S303:将网卡接收到的数据包根据映射关系填充至SKB的数据区,形成带包SKB。
步骤S304:解除带包SKB与接收缓存区的映射关系。
步骤S305:将带包SKB输送至数据处理器。
具体的,本实施例三中的步骤S301至步骤S305与前述实施例二中的步骤S201至步骤S205大致相同,具体可以参照前述实施例的具体说明,在此不再赘述。
步骤S306:获取被数据处理器清空数据区的带包SKB,形成空包SKB。
具体的,在本步骤中,带包SKB将数据包传输至相应的数据处理器后,数据处理器对带包SKB中存储的数据包进行响应的调用、杀毒、发送等可能需要进行的数据处理过程后,带包SKB中存储的数据包即被清空,形成空包SKB。
步骤S307:将空包SKB再次填充至SKB缓冲池。
具体的,在本步骤中,将空包SKB再次填充至SKB缓冲池的同时,还将接收缓存区再次映射到空包SKB的数据区。将接收缓存区再次映射到空包SKB的数据区可以使用前述实施例一的步骤S102中进行说明的例如DMA技术建立映射关系、内存映射函数建立映射关系等方法,具体可以根据实际需要进行灵活的使用。
本实施例三提供的一种数据传输方法至少具有以下优点:首先,由于本实施例三中的步骤S301至步骤S305与前述实施例二中的步骤S201至步骤S205大致相同,因此本实施例三所提供的数据传输方法同样具有实施例二所具备的技术效果;此外,本实施例三中新增步骤S306和步骤S307,其中通过获取数据区被清空的空包SKB,由于空包SKB可以重新填充新的数据包,将空包SKB再次填充至SKB缓冲池,并将接收缓存区再次映射到空包SKB的数据区,可以实现对SKB的回收再利用,减少对SKB的申请次数,进一步的提升收包效率。
本发明实施例四也提供了一种数据传输方法,具体步骤如图5所示,包括以下步骤:
步骤S401:设置SKB缓冲池,在SKB缓冲池中设置若干SKB。
步骤S402:将网卡的接收缓存区映射到SKB的数据区。
步骤S403:将网卡接收到的数据包根据映射关系填充至SKB的数据区,形成带包SKB。
步骤S404:解除带包SKB与接收缓存区的映射关系。
步骤S405:将带包SKB输送至数据处理器
步骤S406:获取被数据处理器清空数据区的带包SKB,形成空包SKB。
步骤S407:获取存储在SKB缓冲池内的SKB的第一数量;判断第一数量是否小于第一预设阈值,若是,执行步骤S408,若否,执行步骤S409。
具体的,在本实施例中,在SKB缓冲池内设置有计数器,计数器中在初始化时即存储有SKB缓冲池中原始存储的SKB的数量,并在每次SKB缓冲池减少和/或新增SKB时进行计数,在获取第一数量时直接获取计数器存储的SKB数量即可。可以理解的是,前述仅为本实施例中获取存储在SKB缓冲池内的SKB的第一数量的一种具体的可行方法的举例说明,并不构成限定,在本发明的其它实施例中,也可以是不设置计数器,而通过对SKB缓冲池内的SKB进行遍历的方法获取存储在SKB缓冲池内的SKB的第一数量等其它方法获取第一数量,具体可以根据实际需要进行灵活的使用。
其中,第一预设阈值为预先设置的获取存储在SKB缓冲池内的SKB的数量阈值,第一预设阈值可以是在初始化并建立SKB缓冲池时设置,也可以是后续用户根据自身需要、使用linux的proc文件系统等工具进行设置,例如可以设置第一预设阈值为SKB缓冲池正常工作状态下可以存储的SKB的数量最大值,或者是用户需要使用的SKB的最大值,具体可以根据实际需要进行灵活的设置。
步骤S408:将空包SKB再次填充至SKB缓冲池。
可以理解的是,本实施例四中的步骤S401至步骤S406、以及步骤S408与前述实施例三中的步骤S301至步骤S307大致相同,具体可以参照前述实施例的具体说明,在此不再赘述。
步骤S409:释放空包SKB。
具体的,在本步骤中,释放空包SKB即解除SKB结构,释放SKB原本占据的内存空间。
本实施例四提供的一种数据传输方法至少具有以下优点:首先,由于本实施例四中的步骤S401至步骤S406、以及步骤S408与前述实施例三中的步骤S301至步骤S307大致相同,因此本实施例四所提供的数据传输方法同样具有实施例三所具备的技术效果;此外,本实施例四中在将空包SKB再次填充至SKB缓冲池前,判断存储在SKB缓冲池内的SKB的第一数量是否小于第一预设阈值,当存储在SKB缓冲池内的SKB的第一数量小于第一预设阈值时,将空包SKB再次填充至SKB缓冲池,可以避免SKB缓冲池内存储的SKB数量过多造成资源拥挤,提升整个收包过程的稳定性;而在第一数量大于或等于第一预设阈值时释放空包SKB,可以避免空包SKB长时间空置造成的资源浪费。
可以理解的是,在第一数量大于或等于第一预设阈值时释放空包SKB仅为本发明实施例四中的一种具体的举例说明,并不构成限定,在本发明的其它实施例中,也可以是在第一数量大于或等于第一预设阈值时,搁置空包SKB直至第一数量小于第一预设阈值,然后将空包SKB再次填充至SKB缓冲池。在第一数量大于或等于第一预设阈值时,搁置空包SKB直至第一数量小于第一预设阈值,无需在SKB缓冲池后续存储的SKB数量减小至小于第一预设阈值后需要重新申请SKB进行补充,减少对SKB的申请次数。
本发明实施例五也提供了一种数据传输方法,具体步骤如图6所示,包括以下步骤:
步骤S501:设置SKB缓冲池,在SKB缓冲池中设置若干SKB。
步骤S502:将网卡的接收缓存区映射到SKB的数据区。
步骤S503:将网卡接收到的数据包根据映射关系填充至SKB的数据区,形成带包SKB。
步骤S504:将带包SKB输送至数据处理器。
可以理解的是,本实施例五中的步骤S501至步骤S504、与前述实施例一中的步骤S101至步骤S104大致相同,具体可以参照前述实施例一的具体说明,在此不再赘述。
步骤S505:获取存储在SKB缓冲池内的SKB的第一数量。
具体的,在本实施例中,在SKB缓冲池内设置有计数器,计数器中在初始化时即存储有SKB缓冲池中原始存储的SKB的数量,并在每次SKB缓冲池减少和/或新增SKB时进行计数,在获取第一数量时直接获取计数器存储的SKB数量即可。可以理解的是,前述仅为本实施例中获取存储在SKB缓冲池内的SKB的第一数量的一种具体的可行方法的举例说明,并不构成限定,在本发明的其它实施例中,也可以是不设置计数器,而通过对SKB缓冲池内的SKB进行遍历的方法获取存储在SKB缓冲池内的SKB的第一数量等其它方法获取第一数量,具体可以根据实际需要进行灵活的使用。
步骤S506:当第一数量小于第二预设阈值时,向SKB缓冲池内填充新的SKB,将接收缓存区映射到新的SKB的数据区。
其中,第二预设阈值为预先设置的获取存储在SKB缓冲池内的SKB的数量阈值,第二预设阈值可以是在初始化并建立SKB缓冲池时设置,也可以是后续用户根据自身需要、使用linux的proc文件系统等工具进行设置,例如可以设置第二预设阈值为SKB缓冲池正常工作状态下需要存储的SKB的数量最小值,或者是用户需要使用的SKB的最少值,具体可以根据实际需要进行灵活的设置。
具体的,本步骤中向SKB缓冲池中填充的新的SKB可以是如实施例四中所记载的搁置的空包SKB,也可以是向系统申请的新的SKB,具体可以根据实际需要进行灵活的选用。
本实施例五提供的一种数据传输方法至少具有以下优点:首先,由于本实施例五中的步骤S501至步骤S504、与前述实施例一中的步骤S101至步骤S104大致相同,具体可以参照前述实施例一的具体说明,在此不再赘述,因此本实施例五所提供的数据传输方法同样具有实施例一所具备的技术效果;此外,本实施例五中在第一数量小于第二预设阈值时,向SKB缓冲池内填充新的SKB,并将接收缓存区映射到新的SKB的数据区,可以避免SKB缓冲池内存储的SKB数量不足造成的数据包运送能力的下降,进一步的保证收包效率。
本发明实施例六涉及一种电子设备,如图7所示,包括:至少一个处理器701;以及,与至少一个处理器701通信连接的存储器702;其中,存储器702存储有可被至少一个处理器701执行的指令,指令被至少一个处理器701执行,以使至少一个处理器701能够执行上述各实施例中的数据传输方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本发明实施例七涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
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所述的数据传输方法,其特征在于,所述方法还包括:
若所述第一数量大于或等于所述第一预设阈值,释放所述空包SKB。
6.根据权利要求4所述的数据传输方法,其特征在于,所述方法还包括:
若所述第一数量大于或等于所述第一预设阈值,搁置所述空包SKB直至所述第一数量小于所述第一预设阈值。
7.根据权利要求1所述的数据传输方法,其特征在于,所述方法还包括:
获取存储在所述SKB缓冲池内的所述SKB的第一数量;
当所述第一数量小于第二预设阈值时,向所述SKB缓冲池内填充新的SKB,将所述接收缓存区映射到所述新的SKB的数据区。
8.根据权利要求1所述的数据传输方法,其特征在于,所述将网卡的接收缓存区映射到所述SKB的数据区,包括:
将所述接收缓存区通过直接存储器访问技术映射到所述SKB的数据区。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至8中任意一项所述的数据传输方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行实现权利要求1至8中任意一项所述的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211065639.9A CN115442319B (zh) | 2022-08-31 | 2022-08-31 | 数据传输方法、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211065639.9A CN115442319B (zh) | 2022-08-31 | 2022-08-31 | 数据传输方法、电子设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115442319A true CN115442319A (zh) | 2022-12-06 |
CN115442319B CN115442319B (zh) | 2024-03-12 |
Family
ID=84244702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211065639.9A Active CN115442319B (zh) | 2022-08-31 | 2022-08-31 | 数据传输方法、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115442319B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227341A (zh) * | 2007-12-18 | 2008-07-23 | 浪潮电子信息产业股份有限公司 | Linux系统上以太网卡快速捕包的方法 |
CN103581181A (zh) * | 2013-10-28 | 2014-02-12 | 清华大学 | 数据包捕获、处理和发送方法及系统 |
CN113422793A (zh) * | 2021-02-05 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及计算机存储介质 |
CN113986969A (zh) * | 2021-10-25 | 2022-01-28 | 展讯通信(上海)有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN114218130A (zh) * | 2021-12-16 | 2022-03-22 | 展讯通信(上海)有限公司 | 一种内存使用方法、电子设备及存储介质 |
-
2022
- 2022-08-31 CN CN202211065639.9A patent/CN115442319B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227341A (zh) * | 2007-12-18 | 2008-07-23 | 浪潮电子信息产业股份有限公司 | Linux系统上以太网卡快速捕包的方法 |
CN103581181A (zh) * | 2013-10-28 | 2014-02-12 | 清华大学 | 数据包捕获、处理和发送方法及系统 |
CN113422793A (zh) * | 2021-02-05 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及计算机存储介质 |
CN113986969A (zh) * | 2021-10-25 | 2022-01-28 | 展讯通信(上海)有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN114218130A (zh) * | 2021-12-16 | 2022-03-22 | 展讯通信(上海)有限公司 | 一种内存使用方法、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
PHONE1126: ""SKB buff 数据结构"", Retrieved from the Internet <URL:https://yebd1h.smartapps.cn/pages/blog/index?blogld=102652453&_refluxos=a10&_swebfr=26&_swebFromHost=bdhonorbrowser> * |
Also Published As
Publication number | Publication date |
---|---|
CN115442319B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113014528B (zh) | 报文处理方法、处理单元及虚拟专用网络服务器 | |
CN108536543A (zh) | 具有基于跨步的数据分散的接收队列 | |
CN106034084B (zh) | 一种数据传输方法及装置 | |
EP3855704A1 (en) | Data processing method and apparatus, and computing device | |
CN109756536A (zh) | 一种数据传输的方法、装置及系统 | |
CN109408243B (zh) | 一种基于rdma的数据处理方法、装置和介质 | |
CN109996338A (zh) | 一种确定bwp状态的方法、设备及系统 | |
US20200076742A1 (en) | Sending data using a plurality of credit pools at the receivers | |
US7974190B2 (en) | Dynamic queue memory allocation with flow control | |
CN113938431B (zh) | 突发数据包传输方法、装置和电子设备 | |
US9923794B2 (en) | Method, apparatus, and system for identifying abnormal IP data stream | |
EP4057143A1 (en) | Resource adjusting method and apparatus | |
CN112039835B (zh) | 自适应轮询时间估算方法、装置、设备及存储介质 | |
CN115442319B (zh) | 数据传输方法、电子设备和计算机可读存储介质 | |
CN104022961A (zh) | 一种数据传输方法、装置及系统 | |
CN112749012A (zh) | 终端设备的数据处理方法、装置、系统及存储介质 | |
CN111416775B (zh) | 数据接收和发送方法、装置及系统 | |
EP3624526B1 (en) | Resource indication method and device, and computer storage medium | |
CN107371263B (zh) | 上行资源的调度方法和装置 | |
US7853739B1 (en) | Method and system for transmitting USB communication | |
CN116954874A (zh) | 资源分配方法、装置、设备及存储介质 | |
CN112543154B (zh) | 一种数据传输方法及装置 | |
US10499396B2 (en) | Resource request method and device | |
CN115176453A (zh) | 报文缓存方法、内存分配器及报文转发系统 | |
EP2726992B1 (en) | Network control model driver |
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 |