本发明涉及互联网,特别是涉及一种网卡设备、网络数据传输方法、装置、系统、电子设备及可读存储介质。
背景技术:
1、网络数据为在互联网和其他网络环境中传输的数据,其可为结构化的、组织起来的数据信息,也可为没有经过任何处理的原始数据,还可为发布和接收的音频数据和视频数据。
2、在网络数据的发送和接收过程中,相关技术使用网卡的dma(direct memoryaccess,直接内存访问)模块进行数据的搬移操作。对于网络数据的发送过程,dma模块将主机内存的数据发送至接收端设备的缓存,对于网络数据的接收过程,dma模块将发送端缓存中数据发送至主机内存。而对于某些应用场景,如有些数据并不需要主机处理,使用dma模块进行网络数据搬移操作效率不高,导致整个网络数据传输效率较低。
3、鉴于此,提高网络数据的传输效率,是所属领域技术人员需要解决的技术问题。
技术实现思路
1、本发明提供了一种网卡设备、网络数据传输方法、装置、系统、电子设备及可读存储介质,可以有效提高网络数据的传输效率。
2、为解决上述技术问题,本发明提供以下技术方案:
3、本发明第一方面提供了一种网络设备,包括可编程器件,所述可编程器件基于内存扩展方法搭建网络平台,其包括网络接口、目标内存和网络组件;
4、所述可编程器件通过所述网络接口连接网络,通过所述内存扩展方法与主机进行数据交互;所述主机基于所述内存扩展方法,将所述可编程器件的目标内存设置为所述主机的扩展内存;所述网络组件采用与待传输数据的数据报文类型相匹配的数据传输方式进行数据传输;
5、其中,所述待传输数据为接收到的目标网络数据或所述主机的待发送网络数据;所述数据报文类型根据待传输数据的数据类型和数据长度确定;所述扩展内存用于存储属于网卡处理报文类型的待传输数据。
6、在第一种示例性的实施方式中,所述网络组件包括媒体访问控制层模块、直接内存访问模块、缓存器和分包器;
7、其中,所述媒体访问控制层模块,用于将从所述网络中接收到的目标网络数据存储至所述缓存器中,还用于将所述缓存器中的所述待发送网络数据发送至所述网络;
8、所述分包器,用于识别所述目标网络数据的数据报文类型,并根据所述目标网络数据的数据报文类型确定相应的存储位置;还用于将从所述目标内存或通过所述直接内存访问模块从所述主机的内存中读取的待发送网络数据,存储至输送所述缓存器;其中,所述存储位置包括所述主机的内存和所述目标内存。
9、在第二种示例性的实施方式中,所述主机的中央处理器通过内存拷贝方式访问所述目标内存;所述网卡处理报文类型包括数据长度小于长度阈值的数据报文类型;
10、若所述待传输数据为所述目标网络数据,且所述待传输数据的数据长度小于所述长度阈值,所述网络组件将所述待传输数据存储至所述目标内存,并向所述主机发送报文数据读取指令;
11、若所述待传输数据为所述待发送网络数据,且所述待传输数据的数据长度小于所述长度阈值,所述主机通过所述内存拷贝方式将所述待传输数据搬移至所述目标内存中。
12、在第三种示例性的实施方式中,所述网络组件包括直接内存访问模块,所述主机的中央处理器通过直接内存访问方式访问所述目标内存;所述网卡处理报文类型不包括数据长度大于长度阈值的数据报文类型;
13、若所述待传输数据为所述目标网络数据,且所述待传输数据的数据长度大于所述长度阈值,所述网络组件通过所述直接内存访问模块将所述待传输数据搬移至所述主机的内存中;
14、若所述待传输数据为所述待发送网络数据,且所述待传输数据的数据长度大于所述长度阈值,所述主机将所述待传输数据存储至所述主机的内存中,并向所述网络组件发送报文数据读取指令。
15、在第四种示例性的实施方式中,所述可编程器件采用现场可编程逻辑门阵列,并基于计算高速互连技术搭建网络平台;
16、所述主机通过所述计算高速互连技术将所述现场可编程逻辑门阵列的目标内存配置为所述扩展内存;
17、所述待传输数据为所述目标网络数据,所述现场可编程逻辑门阵列识别所述待传输数据的数据报文类型,若所述待传输数据属于目标预设数据类型和/或所述待传输数据的数据长度小于长度阈值,则将所述待传输数据存储至所述目标内存中;所述待传输数据为所述待发送网络数据,所述主机识别所述待传输数据的数据报文类型,若所述待传输数据属于目标预设数据类型和/或所述待传输数据的数据长度小于长度阈值,则将所述待传输数据通过内存拷贝方式存储至所述现场可编程逻辑门阵列的目标内存中。
18、本发明第二方面提供了一种网络数据传输方法,包括:
19、获取待传输数据;
20、基于如前任一项所述网卡设备,根据所述待传输数据的数据报文类型确定相匹配的数据传输方式,以根据所述数据传输方式对所述待传输数据进行网络传输。
21、在第一种示例性的实施方式中,所述待传输数据为接收到网络发送的目标网络数据,所述网卡设备识别所述待传输数据的数据报文类型;所述根据所述待传输数据的数据报文类型确定相匹配的数据传输方式,包括:
22、若所述待传输数据的数据报文类型属于网卡处理报文类型,则将所述待传输数据存储至所述网卡设备的目标内存中,并向主机发送报文数据读取指令;
23、若所述待传输数据的数据报文类型属于主机处理报文类型,则将所述待传输数据通过直接内存访问模块存储至主机的内存中。
24、在第二种示例性的实施方式中,所述根据所述待传输数据的数据报文类型确定相匹配的数据传输方式,包括:
25、若所述待传输数据的数据类型为预设数据类型,则所述待传输数据的数据报文类型属于网卡处理报文类型;其中,所述预设数据类型为不存储至所述主机的内存的数据;
26、若所述待传输数据的数据长度小于长度阈值,则所述待传输数据的数据报文类型属于网卡处理报文类型。
27、在第三种示例性的实施方式中,所述主机通过内存拷贝方式访问目标内存,包括:
28、若所述待传输数据属于第一预设数据类型,所述主机读取所述待传输数据,并直接将所述待传输数据丢弃;
29、若所述待传输数据属于第二预设数据类型,所述主机读取所述待传输数据,并转发所述待传输数据;
30、若所述待传输数据的数据长度小于长度阈值,所述主机调用内存拷贝函数将所述待传输数据拷贝至所述主机的内存中,以使主机通过内存拷贝方式访问目标内存。
31、在第四种示例性的实施方式中,所述主机通过内存拷贝方式访问目标内存,包括:
32、若所述待传输数据为循环冗余校验码数据,所述主机读取所述待传输数据,并直接将所述待传输数据丢弃;
33、若所述待传输数据为待转发报文,所述主机读取所述待传输数据,并将所述待传输数据转发至目标地址。
34、在第五种示例性的实施方式中,所述根据所述待传输数据的数据报文类型确定相匹配的数据传输方式之前,还包括:
35、分别基于内存拷贝方式和直接内存访问方式对不同数据长度的测试传输数据进行数据传输,并统计相应的传输时间;
36、对所述内存拷贝方式和所述直接内存访问方式传输同一数据长度的测试传输数据所需传输时长进行对比分析,确定所述内存拷贝方式和所述直接内存访问方式所需传输时间相同时对应的数据长度,以作为长度阈值。
37、在第六种示例性的实施方式中,所述根据所述待传输数据的数据报文类型确定相匹配的数据传输方式之前,还包括:
38、当接收到用户输入的长度阈值配置指令,通过解析所述长度阈值配置指令得到长度阈值,并将所述长度阈值存储至目标位置。
39、在第七种示例性的实施方式中,所述待传输数据为主机的待发送网络数据,所述主机识别所述待传输数据的数据报文类型,所述根据所述待传输数据的数据报文类型确定相匹配的数据传输方式,包括:
40、若所述待传输数据的数据报文类型属于网卡处理报文类型,则将所述待传输数据存储至所述网卡设备的目标内存中,并向所述网卡设备发送报文数据读取指令;
41、若所述待传输数据的数据报文类型属于主机处理报文类型,则将所述待传输数据存储至所述主机的内存中,并向所述网卡设备发送报文数据读取指令。
42、在第八种示例性的实施方式中,所述根据所述待传输数据的数据报文类型确定相匹配的数据传输方式,包括:
43、预先在所述网卡设备的目标内存中构建存储数据索引信息;所述存储数据索引信息用于记录接收报文和发送报文的存储位置信息;
44、基于所述待传输数据的数据报文类型,更新所述存储数据索引信息;
45、根据所述存储数据索引信息和所述待传输数据的发送端信息,确定所述待传输数据对应的数据传输方式。
46、在第九种示例性的实施方式中,所述待传输数据为目标网络数据,所述根据所述存储数据索引信息和所述待传输数据的发送端信息,确定所述待传输数据对应的数据传输方式,包括:
47、预先分别在所述网卡设备的目标内存中构建网卡报文接收队列,在主机的内存中构建主机报文接收队列;
48、预先分别将所述网卡报文接收队列和所述主机报文接收队列对应的接收生产者的队列指针指向相应的初始化位置;所述接收生产者包括缓存器生产者和直接内存访问模块生产者;
49、基于所述存储数据索引信息的接收队列,若所述待传输数据属于网卡处理报文类型,则将所述待传输数据存储至所述网卡报文接收队列中的缓存器生产者的指针位置,并将所述缓存器生产者的指针下移;若所述待传输数据属于主机处理报文类型,则将所述待传输数据存储至所述主机报文接收队列中的直接内存访问模块生产者的指针位置,并将所述直接内存访问模块生产者的指针下移。
50、在第十种示例性的实施方式中,所述根据所述数据传输方式对所述待传输数据进行网络传输之后,还包括:
51、预先分别将所述网卡报文接收队列和主机报文接收队列对应的接收消费者的队列指针指向相应的初始化位置;所述接收消费者为主机的报文数据收发线程;所述接收消费者的指针位置小于所述接收生产者的指针位置;
52、所述主机根据所述接收队列确定所述待传输数据对应存储队列的存储位置,并根据所述待传输数据的存储位置读取所述待传输数据,并将所述接收消费者的指针下移。
53、在第十一种示例性的实施方式中,所述待传输数据为待发送网络数据,所述根据所述存储数据索引信息和所述待传输数据的发送端信息,确定所述待传输数据对应的数据传输方式,包括:
54、预先分别在所述网卡设备的目标内存中构建网卡报文发送队列,在主机的内存中构建主机报文发送队列;
55、预先分别将所述网卡报文接收队列和所述主机报文接收队列对应的发送生产者的队列指针指向相应的初始化位置;所述发送生产者为主机的报文数据收发线程;
56、预先将所述存储数据索引信息的发送队列对应的发送生产者的队列指针指向相应的初始化位置,并在更新所述发送队列时,将所述发送生产者的指针位置下移;
57、基于所述存储数据索引信息的发送队列,若所述待传输数据属于网卡处理报文类型,则将所述待传输数据存储至所述网卡报文接收队列中,并将所述发送生产者的指针下移;若所述待传输数据属于主机处理报文类型,则将所述待传输数据存储至所述主机报文接收队列中,并将所述发送生产者的指针下移。
58、在第十二种示例性的实施方式中,所述根据所述数据传输方式对所述待传输数据进行网络传输之后,还包括:
59、预先分别将所述网卡报文发送队列和主机报文发送队列对应的发送消费者的队列指针指向相应的初始化位置;所述发送消费者为缓存器消费者和直接内存访问模块消费者;所述发送消费者的指针位置小于所述发送生产者的指针位置;
60、基于所述存储数据索引信息的发送队列,若所述待存储数据属于网卡处理报文类型,则从所述网卡报文发送队列中读取所述待存储数据,并将所述缓存器消费者的指针下移;若所述待存储数据属于主机处理报文类型,则从所述主机报文发送队列中读取所述待存储数据,并将所述直接内存访问模块消费者的指针下移。
61、本发明第三方面提供了一种网络数据传输装置,包括:
62、数据获取模块,用于获取待传输数据;
63、网络传输模块,用于基于如前任一项所述网卡设备,根据所述待传输数据的数据报文类型确定相匹配的数据传输方式,以根据所述数据传输方式对所述待传输数据进行网络传输。
64、本发明第四方面还提供了一种电子设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述网络数据传输方法的步骤。
65、本发明第五方面还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前任一项所述网络数据传输方法的步骤。
66、本发明第六方面提供了一种网络数据传输系统,包括主机、如前一项所述网卡设备和处理器;
67、其中,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述网络数据传输方法的步骤。
68、本发明提供的技术方案的优点在于,利用可编程器件和内存扩展技术实现高性能网卡的功能,主机通过内存扩展技术将可编程器件中的一块儿内存配置为其自身能够使用的扩展内存,该扩展内存便可以用于存储预先指定报文类型的网络数据,而无需都存储至主机的内存中,对于无需主机处理以及利用直接内存访问模块搬移数据效率低的一些网络数据,便可直接存储至该扩展内存中,也即根据待传输数据的报文数据类型确定最优的数据传输方式,从而便可有效提高网络数据的传输效率。
69、此外,本发明还针对网卡设备提供了相应的网络数据传输方法、实现装置、系统、电子设备及可读存储介质,进一步使得所述网卡设备更具有实用性和可行性,所述网络数据传输方法、装置、电子设备、系统及可读存储介质具有相应的优点。
70、应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。