一种基于fpga的网络数据连包拆分方法

文档序号:9508941阅读:607来源:国知局
一种基于fpga的网络数据连包拆分方法
【技术领域】
[0001]本发明涉及网络数据领域,尤其涉及一种基于FPGA的网络数据连包拆分方法。
【背景技术】
[0002]当下,随着对信息化应用要求程度的不断深入,网络传输速度大幅提高,瞬时传输速率可达10,000Mbps,对于如此快的速度,如此大的数据量,协议栈必定会有数据积压的时亥IJ,而对于较小的数据包,协议栈会将很多个这样的小数据包连到一起组成一个大包发送出去。在接收端的协议栈再将数据解析还原。于是,接收端上位机操作系统就收到了所有的数据。
[0003]但是,随着网络环境越来越复杂,网络中越来越多的问题涌现出来,迫切的需要得到解决。网络窃听就是众多问题之一,特别是在无线网络领域更显重要。问题的解决就是将数据加密传输,而加密对象就是MAC帧。这就需要从网络数据中提取出完整的MAC帧,然后在对MAC帧进一步处理。
[0004]MAC帧是数据帧的一种。而所谓数据帧,就是数据链路层的协议数据单元,它包括三部分:帧头、数据部分和帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如:同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ARP数据包。如果帧长小于64字节,则要求“填充”,以使这个帧的长度达到64字节。
[0005]实际应用中,会议系统为提高WiFi芯片的数据传输速率和吞吐量,需要采用连续传输方式。但是连续传输方式会产生一个问题:经过上位机的网络协议栈传过来的连续数据常常不是一个完整的MAC帧,而会议系统后续的处理需要完整的MAC帧。

【发明内容】

[0006]本发明提供了一种基于FPGA的网络数据连包拆分方法,本发明通过网络数据的连包拆分,实现了对混杂数据MAC帧的拆分获取,为进一步的后续数据处理做好准备,详见下文描述:
[0007]一种基于FPGA的网络数据连包拆分方法,所述网络数据连包拆分方法包括以下步骤:
[0008]通过通信接口配置网络通信模块,并控制网络通信模块通过TCP协议与无线路由器建立socket链接;
[0009]根据数据通信协议对上行的第一数据包进行组包,将组包后的第一数据包通过通信接口发送至网络通信模块;
[0010]网络通信模块将组包后的第一数据包封装成TCP数据包后输入至协议栈;
[0011]无线路由器在第二 FPGA控制下实现第一数据包的接收,并按照数据通信协议完成对第一数据包的拆包,将拆包后的第一数据包中继发送出去;
[0012]无线路由器接收下行的第二数据包,并在第二 FPGA控制下按照数据通信协议完成对第二数据包的组包,将组包后的第二数据包中继发送出去;
[0013]网络通信模块接收无线路由器发送的根据数据通信协议组包的第二数据包,通过通信接口传输至第一 FPGA ;
[0014]第一 FPGA根据数据通信协议拆分第二数据包,识别第二数据包中MAC帧,解析成完整的MAC帧,对完整的MAC帧进行数据解析处理。
[0015]所述网络数据连包拆分方法还包括:网络通信模块将TCP数据包传输至无线路由器。
[0016]所述网络通信模块具体为:WiFi芯片、3G无线网卡、4G无线网卡或100M无线网卡。
[0017]所述通信接口具体为:SPI接口、UART接口或USB接口。
[0018]其中,所述网络数据连包拆分方法还包括:
[0019]统一编址寄存器,用于进行与外部芯片的通信,统一编址先进先出队列用于传输不同时域或不同单位长度的数据包;
[0020]其中,所述数据通信协议具体为:
[0021]在数据发起单元,将每个MAC帧加头部,头部定义为6个字节,前4个字节是头标志,后两个字节是MAC帧长度;
[0022]收到头标志,启动MAC帧接收过程,接收完长度字节后建立一个长度计数器;
[0023]每接收一个字节长度计数器减一,在长度计数器未等于零之前不去判断4个字节头标志ο
[0024]本发明提供的技术方案的有益效果是:
[0025]1、在网络高速传输过程中实现了对混杂模式数据的整理,使数据做进一步解析或其他处理成为可能。
[0026]2、在不改变原有数据通信方式的基础上,未增加任何外部接口信号,实现了对外部芯片发来数据的明确划分。
[0027]3、协议数据字段短小,对数据传输吞吐量的影响可以忽略。
[0028]4、可移植性强,经过较少改动就可以应用在其他系统,甚至可以是基于别的协议的系统。
【附图说明】
[0029]图1为一种基于FPGA的网络数据连包拆分方法的流程图;
[0030]图2为数据通信协议头部示例图;
[0031 ]图3为一个MAC帧被两数据包传输的示意图;
[0032]图4为协议字段被分到两个包传输的示意图;
[0033]图5为实验效果图;
[0034]图6为另一实验效果图。
【具体实施方式】
[0035]为使本发明的目的、技术方案和优点更加清楚,下面对本发明实施方式作进一步地详细描述。
[0036]实施例1
[0037]参见图1,本发明实施例提供的一种基于FPGA的网络数据连包拆分方法中包括以下步骤:
[0038]101:第一 FPGA通过通信接口配置网络通信模块,并控制网络通信模块通过TCP协议与无线路由器建立socket链接;
[0039]例如:设置IP、连接无线路由以及链接TCP server等。
[0040]102:第一 FPGA根据数据通信协议对上行的第一数据包进行组包,将组包后的第一数据包通过通信接口发送至网络通信模块;
[0041]定义数据通信协议,即:在数据发起单元,将每个MAC帧加头部,以便遇到数据包解析时,能够找到MAC帧的头和尾。头部的定义为6个字节,前4个字节是头标志,后两个字节是MAC帧长度。当收到头标志,则启动MAC帧接收过程,接收完长度字节后建立一个长度计数器。每接收一个字节计数器减一,在长度计数器未等于零之前不去判断协议的4个字节头标志。参见图2,为数据通信协议头部示例图,20 14 09 30是一个32位、连续,16进制的标识符,该标识符标示每一帧的开始,在实际数据中不易出现这样的16进制连字;003C是16位的帧长度表示;6个字节结合起来共同完成数据传输完整性的任务。
[0042]本发明实施例对头标志、帧长度的具体表示字符不做限制,例如:在图2中00 3C表示帧长度,在后续的图3和图4中,也可以采用01 40、05 E6、04 3C表示帧长度。
[0043]数据包中MAC帧有如下组合情况:
[0044]1) 一包数据只含有一个完整MAC帧;
[0045]2) 一包数据含有一个或几个完整MAC帧,以及一个不完整MAC帧;
[0046]3) 一包数据含有一个或几个完整MAC帧,以及一个不完整协议头;
[0047]4) 一包数据含有上一个包的一个不完整MAC帧,以及0个完整或几个完整的MAC帧。
[0048]5) —包数据只含有一个不完整MAC帧。
[0049]参见图3和图4,在网络数据传输时,系统要传输一个数据包,会将此数据包先打入协议栈,协议栈会根据其算法、网路的忙闲程度等因素,决定是将数据包马上发出去,还是暂存一会。在这段暂存时间内,可能还会有数据进入协议栈。当条件满足可以将数据发送出去时,协议栈会将当时栈内的数据组成一个个大包,最大1520个字节,发送出去。
[0050]图3中,协议栈先收到了 320字节,之后又收到了 1340字节,又收到了 60字节的数据,协议栈可以发送数据时,会将数据组成一个1520字节的大包。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1