专利名称:网卡数据传输方法及系统的制作方法
技术领域:
本发明涉及ー种网卡数据传输方法及系统。
背景技术:
在目前的测试中,网卡传输封包的大致机制如下在源端主机Linux操作系统的应用层创建通讯端传输封包,该封包通过OSI 7层模型自上而下层层转发,到达Linux操作系统的kernel层中的数据链路层;在数据链路层网卡的驱动程序将该封包写入网卡共享的write_buffer中,并对write_buffer中的封包进行分割,在物理层将分割后封包以序列的形式传送到网络中去,网络中的目的主机将根据封包中的目的地址来接受属于自己的封包。该测试方法虽然能达到传输数据,及验证物理链路的连通性的目的,但是在エ厂 测试项目中,测试的目的往往只是验证物理链路的连通性和数据在网卡之间传输的峰值,所以不需要数据通过完整的OSI七层。而在OSI七层模型中,封包从应用层往下传输资料的过程中,根据相关协议与机制,封包每经过ー层,都要在头部做相关封装的动作才往下传输,耗时相当长,成为封包传输的一大瓶颈,且无法得到物理层的数据在网卡之间传输的峰值;再者,封包从Linux操作系统的应用层传到Linux操作系统的kernel层以及从Linux操作系统的kernel层返回报告给Linux操作系统的应用层的过程中,也需要耗费掉响应的传输时间,这也就成了封包传送的另ー瓶颈。假设Linux操作系统的应用层要发送1000个封包,如果用常规的方法做这件事情,Linux操作系统的应用层需要与Linux操作系统的kernel层进行1000次的沟通,这是非常耗时的事情;另外,传送给目的网卡的数据由于从上至下的传输,数据包有丢失的可能性,存在稳定性的隐患,有时无法正确响应给源端主机Linux操作系统的应用层,从而无法有效判断数据是否准确传送到目的地。
发明内容
鉴于以上内容,有必要提供一种网卡数据传输方法,能够将封包直接由Linux操作系统的应用层发送至数据链路层,可准确、稳定、高效的进行网卡数据的传输。鉴于以上内容,还有必要提供ー种网卡数据传输系统,能够将封包直接由Linux操作系统的应用层发送至数据链路层,可准确、稳定、高效的进行网卡数据的传输。所述网卡数据传输方法,应用于网卡的数据传输,该方法包括以下步骤设置步骤在源端主机的Linux操作系统的应用层设置用于发送的控制參数,并在源端主机的Linux操作系统的kernel层定义与控制參数格式相同的数据结构;封装步骤在所述应用层创建底层套接字,并将控制參数、源端地址、目的地址及发送内容封装至封包中,所述源端地址为源端主机中第一网卡的MAC地址,所述目的地址为目的主机中第二网卡的MAC地址,所述源端主机与目的主机通过网络连接;发送步骤在源端主机中将封包由所述应用层发送至所述kernel层中的数据链路层;解析步骤在数据链路层中解析封包,将要发送的封包及控制參数进行分离,所述控制參数包括发送參数、随机设置參数、延时參数、反馈參数和调试參数;管控步骤在源端主机中根据分离出的控制參数管控封包的发送过程。所述网卡数据传输系统,运行于计算机中,该系统包括设置模块,用于在源端主机的Linux操作系统的应用层设置用于发送的控制參数,并在源端主机的Linux操作系统的kernel层定义与控制參数格式相同的数据结构;封装模块,用于在所述应用层创建底层套接字,并将控制參数、源端地址、目的地址及发送内容封装至封包中,所述源端地址为源端主机中第一网卡的MAC地址,所述目的地址为目的主机中第二网卡的MAC地址,所述源端主机与目的主机通过网络连接;发送模块,用于在源端主机中将封包由所述应用层发送至 所述kernel层中的数据链路层;解析模块,用于在数据链路层中解析封包,将要发送的封包及控制參数进行分离,所述控制參数包括发送參数、随机设置參数、延时參数、反馈參数和调试參数;管控模块,用于在源端主机中根据分离出的控制參数管控封包的发送过程。相较于现有技术,所述的网卡数据传输方法及系统,能够将封包直接由Linux操作系统的应用层发送至数据链路层,并可減少Linux操作系统的应用层与Linux操作系统的kernel层沟通的次数,可准确、稳定、高效的进行网卡数据的传输。
图I是本发明网卡数据传输系统较佳实施例的架构图。图2是本发明网卡数据传输系统较佳实施例的功能模块图。图3是本发明网卡数据传输方法较佳实施例的流程图。图4是本发明网卡数据传输方法较佳实施例的管控子流程图。图5是本发明网卡数据传输系统较佳实施例的网卡数据传输示例图。图6是本发明网卡数据传输系统较佳实施例所定义的数据结构。主要元件符号说明
权利要求
1.一种网卡数据传输方法,其特征在于,该方法包括步骤设置步骤在源端主机的Linux操作系统的应用层设置用于发送的控制參数,并在源端主机的Linux操作系统的kernel层定义与控制參数格式相同的数据结构;封装步骤在所述应用层创建底层套接字,并将控制參数、源端地址、目的地址及发送内容封装至封包中,所述源端地址为源端主机中第一网卡的MAC地址,所述目的地址为目的主机中第二网卡的MAC地址,所述源端主机与目的主机通过网络连接;发送步骤在源端主机中将封包由所述应用层发送至所述kernel层中的数据链路层;解析步骤在数据链路层中解析封包,将要发送的封包及控制參数进行分离,所述控制參数包括发送參数、随机设置參数、延时參数、反馈參数和调试參数;管控步骤在源端主机中根据分离出的控制參数管控封包的发送过程。
2.如权利要求I所述的网卡数据传输方法,其特征在于,所述管控步骤包括发送步骤ー将源端主机中分割的封包发送至目的主机,封包的发送时间间隔由延时參数决定;判断步骤在所述kernel层中,根据目的主机的返回值判断封包是否发送成功,当封包发送成功吋,则执行计数步骤一,当封包发送失败时,则执行计数步骤ニ ;计数步骤ー统计发送的封包成功投递的次数,当封包成功投递的次数达到M次吋,则执行沟通步骤,当封包成功投递的次数没有达到M次吋,则返回发送步骤一,所述M值,为发送參数设定的封包投递的次数;计数步骤ニ 统计封包重新发送的次数,当封包重新发送的次数达到N次吋,则执行沟通步骤,否则,返回发送步骤一,所述N值,为反馈參数所设置的封包发送失败时,重新发送封包的次数;沟通步骤所述kernel层与所述应用层进行沟通。
3.如权利要求2所述的网卡数据传输方法,其特征在于,所述发送步骤ー包括在数据链路层第一网卡的驱动程序将分离出的要发送的封包写入第一网卡的write_buffer中,并对write_buffer中封包进行分割,在物理层经网络将分割后封包发送至目的主机,其中由随机设置參数控制要分割的封包的数据内容及长度。
4.如权利要求2所述的网卡数据传输方法,其特征在于,所述沟通步骤还包括返回封包发送完成时的信息至所述应用层,供用户查看。
5.如权利要求I所述的网卡数据传输方法,其特征在于,所述底层套接字用于实现封包直接由所述应用层发送至数据链路层的目的。
6.—种网卡数据传输系统,其特征在于,该系统包括设置模块,用于在源端主机的Linux操作系统的应用层设置用于发送的控制參数,并在源端主机的Linux操作系统的kernel层定义与控制參数格式相同的数据结构;封装模块,用于在所述应用层创建底层套接字,并将控制參数、源端地址、目的地址及发送内容封装至封包中,所述源端地址为源端主机中第一网卡的MAC地址,所述目的地址为目的主机中第二网卡的MAC地址,所述源端主机与目的主机通过网络连接;发送模块,用于在源端主机中将封包由所述应用层发送至所述kernel层中的数据链路层;解析模块,用于在数据链路层中解析封包,将要发送的封包及控制參数进行分离,所述控制參数包括发送參数、随机设置參数、延时參数、反馈參数和调试參数;管控模块,用于在源端主机中根据分离出的控制參数管控封包的发送过程。
7.如权利要求6所述的网卡数据传输系统,其特征在于,所述管控模块包括发送单元一,用于将源端主机中分割的封包发送至目的主机,封包的发送时间间隔由延时參数决定;判断単元,在所述kernel层中,根据目的主机的返回值判断封包是否发送成功;计数单元一,用于当封包发送成功吋,统计发送的封包成功投递的次数,判断封包成功投递的次数是否达到M次;所述M值,为发送參数设定的封包投递的次数;计数单元ニ,用于当封包发送失败时,统计封包重新发送的次数,判断是否已达到N次,所述N值,为反馈參数所设置的当封包发送失败时,重新发送封包的次数;沟通单元,用于当封包投递数达到M次吋,或封包发送N次依然失败后,控制所述kernel层与所述应用层进行沟通。
8.如权利要求7所述的网卡数据传输系统,其特征在于,所述发送単元一的具体操作为在数据链路层第一网卡的驱动程序将分离出的要发送的封包写入第一网卡的write_buffer中,并对write_buffer中封包进行分割,在物理层经网络将分割后封包发送至目的主机,其中由随机设置參数控制要分割的封包的数据内容及长度。
9.如权利要求7所述的网卡数据传输系统,其特征在于,所述沟通単元还用于返回封包发送完成时的信息至所述应用层,供用户查看。
10.如权利要求6所述的网卡数据传输系统,其特征在于,所述封装模块中底层套接字用于实现封包直接由所述应用层发送至数据链路层的目的。
全文摘要
一种网卡数据传输方法,包括在源端主机的Linux操作系统的应用层设置用于发送的控制参数,并在源端主机的Linux操作系统的kernel层定义与控制参数格式相同的数据结构;在所述应用层创建底层套接字,并将控制参数、源端地址、目的地址及发送内容封装至封包中;在源端主机中将封包由所述应用层发送至所述kernel层中的数据链路层;在数据链路层中解析封包,将要发送的封包及控制参数进行分离;在源端主机中根据分离出的控制参数管控封包的发送过程。本发明还提供一种网卡数据传输系统。本发明可以将封包直接由Linux操作系统的应用层发送至数据链路层,可以准确、稳定、高效的进行网卡数据的传输。
文档编号H04L12/56GK102833144SQ20111015976
公开日2012年12月19日 申请日期2011年6月15日 优先权日2011年6月15日
发明者罗探科, 贺颜, 王庆康 申请人:鸿富锦精密工业(深圳)有限公司, 鸿海精密工业股份有限公司
转载请注明原文地址:https://www.famiwei.com/read-7750183.html