CN108462642A - 基于fpga的udp/ip硬件协议栈及实现方法 - Google Patents
基于fpga的udp/ip硬件协议栈及实现方法 Download PDFInfo
- Publication number
- CN108462642A CN108462642A CN201810218086.3A CN201810218086A CN108462642A CN 108462642 A CN108462642 A CN 108462642A CN 201810218086 A CN201810218086 A CN 201810218086A CN 108462642 A CN108462642 A CN 108462642A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- udp
- protocol
- frame
- 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 38
- 238000004891 communication Methods 0.000 claims abstract description 55
- 238000009432 framing Methods 0.000 claims abstract description 31
- 238000012795 verification Methods 0.000 claims abstract description 17
- 230000005540 biological transmission Effects 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 22
- 239000000284 extract Substances 0.000 claims description 11
- 238000003780 insertion Methods 0.000 claims description 9
- 230000037431 insertion Effects 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims 1
- 238000013461 design Methods 0.000 abstract 2
- 238000012937 correction Methods 0.000 abstract 1
- 230000009191 jumping Effects 0.000 description 81
- 238000013500 data storage Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明是一种基于FPGA的UDP/IP硬件协议栈及实现方法,包括捕获模块、拆帧模块、UDP校验模块、执行模块、数据缓存模块、IP首部生成模块、UDP首部生成模块、组帧模块以及插入模块。同时,根据系统的整体设计方案,制定采用硬件FPGA方式实现通信控制协议的策略,通信控制协议通过UDP报文和以太网帧实现对交换机的远程配置及管理。本发明为了保证交换容量与数据转发速率,采用FPGA实现,而FPGA不适合运行复杂的路由协议,为了实现三层查找、远程配置管理以及保证远程配置管理的有效性和可靠性,需要设计专用通信控制协议,从而提高发送数据的效率,使整个系统得以优化,节省大量存储资源。
Description
技术领域
本发明属于通信技术领域,更进一步涉及网络通信技术领域中的一种基于现场可编 程门阵列FPGA(Filed Programmable Gate Array)的用户数据报协议/网络互联协议UDP/IP(User Datagrame Protocol/Internet Protocol)硬件协议栈及实现方法。本发明可 用于在高速大容量的以太网交换网络中,通过构建一个基于FPGA的UDP/IP硬件协议栈,实现对UDP/IP协议的解析。
背景技术
在高速数据转发网络中,传统技术采用嵌入式系统的UDP/IP协议栈来提高网络交换 容量与数据转发速率,但该技术会增加互联网主机的资源消耗,导致部署成本增高,不利于其在交换网络中进行大规模应用。
叶祎恒在其发表的论文“基于FPGA的UDP/IP硬件协议栈的研究与实现”(西安电子科技大学,硕士学位论文2010.01)中公开了一种基于FPGA的UDP/IP硬件协议栈及实 现方法。该硬件协议栈包括UDP接收模块、IP发送模块、IP接收模块和地址解析协议ARP(Address Resolution Protocol)发送接收模块,其中,UDP接收模块负责接收应用层程 序发送的数据;IP发送模块用于与UDP接收模块进行交互;IP接收模块用于处理主要业 务逻辑,对多个被管设备的有效数据进行分析统计;ARP发送接收模块负责把数据传送 到顶层应用程序。该硬件协议栈存在的不足之处是,由于每一个模块需要处理其对应协 议,不同模块在相同时间内处理的数据量不一样,从而导致部分硬件资源的浪费。该论 文所公开实现硬件协议栈的方法主要步骤是:(1)应用层程序将需要发送的数据根据要 求发送给UDP模块进行处理;(2)UDP模块完成数据处理之后将数据送给IP发送模 块;(3)ARP发送接收模块接收到数据链路层的数据帧之后,根据TCP/IP协议的分用 原理,逐层解包,最终把数据传送到顶层应用程序。该方法存在不足之处是,由于UDP 接收模块中数据存储是顺序操作,无法并发执行数据存储操作,从而导致数据存储操作 耗时较多,处理数据的整体效率不高。
中山大学在其申请的专利文献“基于FPGA的UDP/IPv6硬件协议栈及实现方法”(申请号CN201310137881.7公告号CN 103248579A)中公开了一种基于FPGA的UDP/IPv6 硬件协议栈及实现方法。该发明的硬件协议栈包括外部接口模块、UDP发送数据寄存器 模块、UDP发送控制模块和配置寄存器模块,其中,外部接口模块,用于外部跟协议栈 的通信;UDP发送数据寄存器模块,用于存放待发送的UDP数据;UDP发送控制模块, 用于把UDP数据组装成IPv6报文;配置寄存器模块,用于存放协议栈的配置信息。该发 明的硬件协议栈存在的不足之处是,该硬件协议栈只适用于IPv6网络中,硬件实现复杂 度高,资源消耗大,难以应用在其他网络交换环境,导致硬件平台难以搭建。该专利所 公开实现硬件协议栈方法的主要步骤是:(1)当协议栈开始工作时,用户需要通过外部 接口把配置信息写入配置寄存器模块,然后用户向配置寄存器相应地址写入初始化命 令,当初始化完成时再写入自动配置命令,自动配置的结果从配置寄存器相应的地址读 出来;(2)当自动配置完成,通过外部接口模块向UDP发送数据寄存器模块写入数据, 并向配置寄存器模块写入相应的发送命令开始发送数据;(3)当有接收到数据时,外部 接口模块会产生中断信号,通知用户到UDP接收数据寄存器模块读取数据。该方法存在 的不足之处是,外部接口模块接收发送请求后,直接将数据发送给UDP发送数据寄存器 模块,但外部接口模块并没有检验数据请求的来源,使数据传输过程可能引入其他模块 的数据,导致数据传输的准确性降低。
发明内容
本发明目的在于针对上述已有技术的不足,提供一种基于FPGA的UDP/IP硬件协议栈及实现方法,本发明具有较高的性能和良好的安全性,随着数据转发务量的增大,依 然可以保持较高的转发速率。
实现本发明目的的思路是:首先捕获模块接收到入队分发模块发送的帧之后将该帧 发往拆帧模块,拆帧模块提取帧信息,将提取的MAC首部发送给组帧模块,IP包发送给UDP校验模块,UDP报文发送给数据缓存,专用通信控制协议首部发送给执行模块;然 后UDP校验模块对UDP报文进行校验,校验无误之后执行模块读取数据缓存中的UDP报 文,根据操作类型执行相应操作,生成对应操作类型的响应信息或上传信息。执行模块 生成的响应信息或者上传信息发送给数据缓存模块,IP首部生成模块以及UDP首部生成 模块,执行模块生成的专用通信控制协议首部发送给组帧模块;最后在IP首部以及UDP 首部生成之后,组帧模块读取数据缓存中的响应信息或者上传信息,给信息添加专用通 信控制协议首部、UDP首部、IP首部以及MAC首部组帧,组帧完成之后将该帧通过插入 模块发给入队分发模块,继而发往路由处理单元。
为了实现上述目的,本发明的装置包括捕获模块、拆帧模块、通信控制模块、用户
数据报协议UDP首部校验模块、执行模块、插入模块、入队分发模块;其中,
所述捕获模块,将待处理的的以太网帧类型的数据发送至通信控制模块;将帧数据 数据发送给通信控制模块;将不符合响应帧类型的数据发送给通信控制模块;将接收到的帧数据发往拆帧模块;
所述拆帧模块,按照用户数据协议从帧数据中提取帧类型信息;分别将帧类型信息 中的介质访问控制层MAC首部、IP数据包、用户数据报协议UDP报文发和专用通信控 制协议首部发送给组帧模块、用户数据报协议UDP校验模块、数据缓存模块和执行模块; 按照用户数据报协议提取数据帧的帧信息,得到介质访问控制层MAC首部、IP数据包、 用户数据报协议UDP报文、专用通信控制协议首部;拆帧模块将提取的数据分别发送到 组帧模块、用户数据报协议UDP校验模块、数据缓存模块和执行模块;直接提取数据帧 的介质访问控制层MAC首部和IP数据包,并将提取的介质访问控制层MAC首部发送给 组帧模块,将IP数据包发送给数据缓存模块;
所述通信控制模块,按照用户数据协议UDP协议解析接收到的数据,并对解析之后的数据依次进行配表操作和寄存器读写操作,得到响应帧类型的数据;按照用户数据协 议UDP协议,将不符合响应帧类型的数据组成上传数据帧;
所述用户数据报协议UDP首部校验模块,利用反码求和校验方法,对用户数据报协议UDP报文进行校验,得到包含生成操作和上传操作两种操作类型的报文数据;
所述执行模块,将响应信息数据和上传信息数据,同时发送到数据缓存模块、IP首部生成模块、用户数据报协议UDP首部生成模块;将用户数据报协议UDP首部发送到 组帧模块;
所述入队分发模块,将不符合响应帧类型的数据发往捕获模块,捕获模块再将该数 据发送给通信控制模块;将帧数据发送到捕获模块;
所述插入模块,将响应帧类型的数据发往入队分发模块;将上传数据帧发送到入队 分发模块,入队分发模块将上传数据帧发送到路由处理模块。
实现本发明目的的方法是,利用可编程门阵列可编程逻辑门阵列FPGA的可编程特性,将数据信息以用户数据报协议UDP报文的形式进行拆分处理,以实现在硬件的基础 上对用户数据报协议/网络互连协议UDP/IP协议栈的解析操作,该方法的具体步骤包括如下:
(1)捕获数据帧:
(1a)捕获模块将待处理的的以太网帧类型的数据发送至通信控制模块,通信控制模块按照用户数据协议UDP协议解析接收到的数据,并对解析之后的数据依次进行配 表操作和寄存器读写操作,得到响应帧类型的数据;
(1b)插入模块将响应帧类型的数据发往入队分发模块;
(1c)入队分发模块将不符合响应帧类型的数据发往捕获模块,捕获模块再将 该数据发送给通信控制模块;
(1d)通信控制模块按照用户数据协议UDP协议,将不符合响应帧类型的数据组 成上传数据帧;
(1e)插入模块将上传数据帧发送到入队分发模块,入队分发模块将上传数据帧发送到路由处理模块;
(2)拆分数据帧:
(2a)入队分发模块将帧数据发送到捕获模块,捕获模块将接收到的帧数据发往拆帧模块,拆帧模块按照用户数据协议从帧数据中提取帧类型信息;
(2b)拆帧模块分别将帧类型信息中的介质访问控制层MAC首部、IP数据包、用 户数据报协议UDP报文发和专用通信控制协议首部发送给组帧模块、用户数据报协议 UDP校验模块、数据缓存模块和执行模块;
(3)校验用户数据报协议UDP报文:
用户数据报协议UDP校验模块,利用反码求和校验方法,对用户数据报协议UDP 报文进行校验,得到包含生成操作和上传操作两种操作类型的报文数据;
(4)执行协议操作:
(4a)执行模块将响应信息数据和上传信息数据,同时发送到数据缓存模块、IP 首部生成模块、用户数据报协议UDP首部生成模块;
(4b)执行模块将用户数据报协议UDP首部发送到组帧模块。
本发明与现有技术相比具有以下优点:
第一,由于本发明装置中仅使用一个通信控制模块完成对用户数据协议UDP解析的功能,即该通信控制模块按照用户数据协议UDP协议解析接收到的数据,并对解析之 后的数据依次进行配表操作和寄存器读写操作,得到响应帧类型的数据;按照用户数据 协议UDP协议,将不符合响应帧类型的数据组成上传数据帧,克服了现有技术由于每一 个模块均需要处理其对应协议,由此使用多个模块分别处理多个协议来对用户数据协议 UDP进行解析,从而导致部分硬件资源的浪费的问题,使得本发明具有节省硬件资源的 优点。
第二,由于本发明装置中的拆帧模块具有在普通IPv4网络中传输数据的功能,即普通IPv4网络按照用户数据协议从帧数据中提取帧类型信息;分别将帧类型信息中的 介质访问控制层MAC首部、IP数据包、用户数据报协议UDP报文发和专用通信控制协 议首部发送给组帧模块、用户数据报协议UDP校验模块、数据缓存模块和执行模块;按 照用户数据报协议提取数据帧的帧信息,得到介质访问控制层MAC首部、IP数据包、 用户数据报协议UDP报文、专用通信控制协议首部;拆帧模块将提取的数据分别发送到 组帧模块、用户数据报协议UDP校验模块、数据缓存模块和执行模块;直接提取数据帧 的介质访问控制层MAC首部和IP数据包,并将提取的介质访问控制层MAC首部发送给 组帧模块,将IP数据包发送给数据缓存模块。因此。该拆帧模块克服了现有技术硬件协 议栈只适用于IPv6网络中,硬件实现复杂度高,资源消耗大,难以应用在其他网络交 换环境,导致硬件平台难以搭建的问题,使得本发明具有在不同网络环境中普遍适用的 优点。
第三,由于本发明的方法中的执行协议操作方法具有并发存储数据的功能,克服了 因每条传输链路延时不同,引入的时间误差,克服了由于UDP接收模块中数据存储是 顺序操作,无法并发执行数据存储操作,从而导致数据存储操作耗时较多,处理数据的 整体效率不高的问题,使本发明具可以并发执行数据操作,节省数据存储时间,提高数 据处理数据的优点,可以应用于更复杂的网络结构中。
第四,由于本发明的方法中的校验用户数据报协议UDP报文方法,具有对用户数据报协议报文进行校验的功能,克服了外部接口模块接收发送请求后,直接将数据发送 给UDP发送数据寄存器模块,但外部接口模块并没有检验数据请求的来源,使数据传 输过程可能引入其他模块的数据,导致数据传输的准确性降低的问题,使本发明具有提 高数据传输的准确性的优点。
附图说明
图1为本发明装置的方框图;
图2为本发明方法的流程图;
具体实施方式
以下参照附图并举例,对本发明进行进一步的详细说明。
参照图1,本发明的装置包括:捕获模块1、拆帧模块2、UDP校验模块3、执行模块 4、数据缓存模块5、IP首部生成模块6、UDP首部生成模块7、组帧模块8以及插入模块9; 其中,
所述捕获模块1与插入模块9,捕获模块1与插入模块9之间信息的传输是通过数据FIFO和对应的控制FIFO实现的;
所述拆帧模块2,提取捕获模块1接收的控制FIFO中的控制信息,根据控制信息来提 取数据FIFO所存储的以太网帧,将提取出的以太网帧信息发往对应模块。拆帧模块2提取帧信息,将提取的MAC首部发送给组帧模块8,IP包发送给UDP校验模块3,UDP报文 发送给数据缓存,专用通信协议首部发送给执行模块4;
所述组帧模块8,负责将执行模块4生成的响应信息或者上传信息以及MAC首部,IP首部,UDP报文首部,专用通信协议首部,数据域重组成以太网帧写入数据FIFO,同时 生成对应控制FIFO,通过插入模块9发给执行模块4;
所述UDP首部校验模块3,主要16位二进制反码求和方法检验接收到的专用协议以太网帧帧,防止UDP报文出错;
所述UDP首部生成模块7,主要负责为执行模块生成的响应信息或者上传信息添加UDP报文首部;
所述执行模块4,负责更新IP包头与UDP报文头中信息,同时负责对数据的操作,根据不同的操作类型对数据执行不同的操作,之后将数据传输给组帧模块8。
参考图2为本发明方法的配置表项操作实现流程图如下:
步骤1,捕获。
路由处理单元将承载了表项地址及参数信息的控制帧传输给分组交换单元,通信控 制模块通过捕获模块接收控制帧。
步骤2,拆帧。
1)等待启动信号;
2)读取控制FIFO的信息,读取完毕后判断当rx_data_fifo非空时,跳转至4),若非空,则跳转至等待数据FIFO的状态3);
3)等待数据FIFO,当rx_data_fifo非空时,跳转至下一个状态4);
4)当接收的数据为无效数据,即非通信控制模块需要处理的数据时,跳转至下一个状态5),如果为有效数据,则跳转至6);
5)当数据FIFO中数据帧全部读出时,跳转至14);
6)读取数据FIFO中的帧信息,跳转至7);
7)将读取出的数据FIFO存储的以太网帧中的MAC首部提取出,将数据送至缓存管理模块,判断该帧是否为上传信息帧,如果是,则跳转至8),否则为路由处理单元发送 的控制信息帧,跳转至11);
8)读取上传帧信息,当剩余字节数大于16字节时,跳转至9),若当前剩余字节数不大于16字节则跳转至11);
9)继续读取上传帧信息,读取同时判断剩余帧字节数,由于总线位宽128位,一个时钟周期内可以读出16字节数据,当前剩余字节数不大于16字节时,跳转至10),否则 继续保持该状态;
10)读取上传帧剩余字节,跳转至14);
11)从读取的控制信息帧中提取出IP包首部,UDP报文首部以及协议首部,并将该信息传输给UDP校验模块进行UDP首部的校验,同时进行判断,如果当前数据FIFO中剩 余字节数不大于16字节,则跳转至12),若当前数据FIFO中剩余字节数大于16字节,则 跳转至13);
12)若当前数据FIFO中剩余字节数大于16字节,则继续保持该状态,若当前数据FIFO中剩余字节数不大于16字节,则跳转至13);
13)读取帧剩余字节,跳转至下一个状态END;
14)操作结束。
步骤3,UDP校验。
首先生成一个12字节长的IP伪首部,其中IP源地址与IP目标地址为IP首部中的源地 址与目的地址,填充为0,协议字段为17,UDP长度即为UDP首部和UDP数据的字节长 度.
然后把检验和字段置为0,对伪IP首部以及UDP报文中每16bit进行二进制反码求和。
当收到一份UDP报文后,同样对伪IP首部以及UDP报文每个16bit进行二进制反码的 求和。如果在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1,即检验和错误。
步骤4,配表。
1)当非上传帧到来时,跳转2);
2)得到当前帧的帧长,跳转至3);
3)当UDP首部到来,跳转4);
4)判断UDP首部中端口号信息,若源端口号为12000,即路由处理端口号,则该 帧为路由处理单元发送的通信控制帧,跳转至6),否则则跳转至5);
5)丢弃该帧,跳转1);
6)若UDP校验出错,则跳转至5),校验无误则跳转至7);
7)准备写表项,跳转至8);
8)根据通信控制协议中起始表项地址字段确定所写表类型,0x0000_0400为组播表,0x0001_0000为单播表1,0x0002_0000为单播表2,0x0000_0003为sarp表,当写表 项为0条时,跳转至12),非以上情况则跳转至9);
9)拉高写使能信号,判断配置A表或B表;读取范围超过表项深度,跳转至5), 读取成功则跳转至11);
10)将该帧读取完毕,跳转至1);
11)所有表项配置完成,更新当前可用表;
12)写入失败;
步骤5,IP首部生成。
1)当ip_head_en信号有效时,进入2);
2)得到帧长信息进入3);
3)校验和为0的情况下填写IP首部其余字段值,进入4);
4)在校验和字段为0的情况下16位加和,进入5);
5)每16位进行加和,最后生成的32位再继续每16位加和,直到32位的前16位为0,进入6);
6)将校验和写入IP首部对应字段,输出IP首部,进入1)。
步骤6,UDP首部生成。
1)开始生成UDP首部,跳转至2);
2)若frm_len_en,pro_head_en,udp_data_en同时有效且UDP数据有效情况下, 跳转至3);否则跳转至8),若只有frm_len_en有效,跳转至9);
3)跳转至4);
4)当UDP数据全部加和结束,跳转至5);
5)将UDP数据和与伪IP头数据每16bit相加,跳转至4);
6)将加和结果每16bit再进行二进制加和,如果最高位没有产生进位,跳转至7);
7)跳转至1);
8)跳转至4);
9)跳转至10);
10)若pro_head_en与udp_data_en同时有效,且UDP数据有效,跳转至11),若UDP数据无效,跳转至12),若仅pro_head_en有效,则跳转至13);
11)当UDP数据全部加和结束,跳转至4);
12)跳转至5);
步骤7,组帧。
1)帧到达之后跳转到2);
2)跳转到3);
3)接收到执行模块生成帧的帧长信息之后,跳转到4),若通信控制模块得到的 帧出错,则跳转到1);
4)接收到通信控制协议首部与IP首部时UDP首部还未生成,跳转到5);若接收 到UDP首部,则跳转到6);
5)接收到UDP首部,跳转到6);
6)写入控制fifo信息,跳转到7);
7)写入数据fifo信息,跳转到8);
8)判断生成帧的类型,若为上传消息帧或配表响应帧,跳转到9);
9)写入数据fifo信息,待写入帧信息不大于16字节跳转到10),超过16字节跳转到11);
10)写入数据fifo信息,待写入帧信息不大于16字节跳转到11);
11)跳转到1);
步骤8,插入。
在组帧模块将响应信息、UDP首部、IP首部及MAC首部组成以太网帧,经由插入 模块发送给路由处理单元。
参考图2为本发明方法的配置寄存器操作实现流程图如下:
步骤1,捕获。
路由处理单元将承载了表项地址及参数信息的控制帧传输给分组交换单元,通信控 制模块通过捕获模块接收控制帧。
步骤2,拆帧。
1)等待启动信号;
2)读取控制FIFO的信息,读取完毕后判断当rx_data_fifo非空时,跳转至4),若非空,则跳转至等待数据FIFO的状态3);
3)等待数据FIFO,当rx_data_fifo非空时,跳转至下一个状态4);
4)当接收的数据为无效数据,即非通信控制模块需要处理的数据时,跳转至下一个状态5),如果为有效数据,则跳转至6);
5)当数据FIFO中数据帧全部读出时,跳转至14);
6)读取数据FIFO中的帧信息,跳转至7);
7)将读取出的数据FIFO存储的以太网帧中的MAC首部提取出,将数据送至缓存管理模块,判断该帧是否为上传信息帧,如果是,则跳转至8),否则为路由处理单元发送 的控制信息帧,跳转至11);
8)读取上传帧信息,当剩余字节数大于16字节时,跳转至9),若当前剩余字节数不大于16字节则跳转至11);
9)继续读取上传帧信息,读取同时判断剩余帧字节数,由于总线位宽128位,一个时钟周期内可以读出16字节数据,当前剩余字节数不大于16字节时,跳转至10),否则 继续保持该状态;
10)读取上传帧剩余字节,跳转至14);
11)从读取的控制信息帧中提取出IP包首部,UDP报文首部以及协议首部,并将该信息传输给UDP校验模块进行UDP首部的校验,同时进行判断,如果当前数据FIFO中剩 余字节数不大于16字节,则跳转至12),若当前数据FIFO中剩余字节数大于16字节,则 跳转至13);
12)若当前数据FIFO中剩余字节数大于16字节,则继续保持该状态,若当前数据FIFO中剩余字节数不大于16字节,则跳转至13);
13)读取帧剩余字节,跳转至下一个状态END;
14)操作结束。
步骤3,UDP校验。
首先生成一个12字节长的IP伪首部,其中IP源地址与IP目标地址为IP首部中的源地 址与目的地址,填充为0,协议字段为17,UDP长度即为UDP首部和UDP数据的字节长 度.
然后把检验和字段置为0,对伪IP首部以及UDP报文中每16bit进行二进制反码求和。
当收到一份UDP报文后,同样对伪IP首部以及UDP报文每个16bit进行二进制反码的 求和。如果在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1,即检验和错误。
步骤4,配寄存器。
1)当非上传帧到来时,跳转2);
2)得到当前帧的帧长,跳转至3);
3)当UDP首部到来,跳转4);
4)判断UDP首部中端口号信息,若源端口号为12000,即路由处理端口号,则该帧为路由处理单元发送的通信控制帧,跳转至6),否则则跳转至5);
5)丢弃该帧,跳转至1);
6)若UDP校验出错,则跳转至6),校验无误则跳转至7);
7)准备读取表项,跳转至8);
8)根据通信控制协议中起始表项地址字段确定所读表类型。由于以太网帧最长为1522字节,MAC内外首部32字节,FCS域共4字节,IP首部20字节,UDP首部8字节,自 定义协议首部4字节,表项起始地址4字节,偏移量2字节,总表项长度2字节,该操作包 含表项的数量位宽为2字节一共60字节,而每条表项位宽16字节,则(1522-78)/16=90.25。 当读取表项超过90条或者读取表范围超出对应表深度时,跳转至9);若读取表项长度为 0,跳转至9),非以上情况则跳转至10);
9)生成读响应;
10)拉高读使能信号,确定读取A表或B表;
11)读取范围超过表项深度,跳转至状态RD_TILL_EMP,读取成功则跳转至12);
12)读表项读取完毕,跳转至15);
13)读取失败,跳转至14);
14)将该帧读取完毕,跳转至16);
15)读操作完成,跳转至16);
16)跳转至1)。
步骤5,IP首部生成。
1)当ip_head_en信号有效时,进入2);
2)得到帧长信息进入3);
3)校验和为0的情况下填写IP首部其余字段值,进入4);
4)在校验和字段为0的情况下16位加和,进入5);
5)每16位进行加和,最后生成的32位再继续每16位加和,直到32位的前16位为0,进入6);
6)将校验和写入IP首部对应字段,输出IP首部,进入1)。
步骤6,UDP首部生成。
1)开始生成UDP首部,跳转至2);
2)若frm_len_en,pro_head_en,udp_data_en同时有效且UDP数据有效情况下, 跳转至3);否则跳转至8),若只有frm_len_en有效,跳转至9);
3)跳转至4);
4)当UDP数据全部加和结束,跳转至5);
5)将UDP数据和与伪IP头数据每16bit相加,跳转至4);
6)将加和结果每16bit再进行二进制加和,如果最高位没有产生进位,跳转至7);
7)跳转至1);
8)跳转至4);
9)跳转至10);
10)若pro_head_en与udp_data_en同时有效,且UDP数据有效,跳转至11),若UDP数据无效,跳转至12),若仅pro_head_en有效,则跳转至13);
11)当UDP数据全部加和结束,跳转至4);
12)跳转至5);
步骤7,组帧。
1)帧到达之后跳转到2);
2)跳转到3);
3)接收到执行模块生成帧的帧长信息之后,跳转到4),若通信控制模块得到的 帧出错,则跳转到1);
4)接收到通信控制协议首部与IP首部时UDP首部还未生成,跳转到5);若接收 到UDP首部,则跳转到6);
5)接收到UDP首部,跳转到6);
6)写入控制fifo信息,跳转到7);
7)写入数据fifo信息,跳转到8);
8)判断生成帧的类型,若为上传消息帧或配表响应帧,跳转到9);
9)写入数据fifo信息,待写入帧信息不大于16字节跳转到10),超过16字节跳转到11);
10)写入数据fifo信息,待写入帧信息不大于16字节跳转到11);
11)跳转到1);
步骤8,插入。
在组帧模块将响应信息、UDP首部、IP首部及MAC首部组成以太网帧,经由插入 模块发送给路由处理单元。
以上仅为本发明的优选实例,不构成对本发明的任何限制,显然根据本发明的构思, 本领域的技术人员均可做出不同的修改和置换,但这些均在本发明的保护之列。
Claims (5)
1.一种基于可编程逻辑门阵列FPGA的用户数据报协议/网络互连协议UDP/IP硬件协议栈,包括捕获模块、拆帧模块、通信控制模块、用户数据报协议UDP首部校验模块、执行模块、插入模块、入队分发模块;其中,
所述捕获模块,将待处理的的以太网帧类型的数据发送至通信控制模块;将帧数据数据发送给通信控制模块;将不符合响应帧类型的数据发送给通信控制模块;将接收到的帧数据发往拆帧模块;
所述拆帧模块,按照用户数据协议从帧数据中提取帧类型信息;分别将帧类型信息中的介质访问控制层MAC首部、IP数据包、用户数据报协议UDP报文发和专用通信控制协议首部发送给组帧模块、用户数据报协议UDP校验模块、数据缓存模块和执行模块;按照用户数据报协议提取数据帧的帧信息,得到介质访问控制层MAC首部、IP数据包、用户数据报协议UDP报文、专用通信控制协议首部;拆帧模块将提取的数据分别发送到组帧模块、用户数据报协议UDP校验模块、数据缓存模块和执行模块;直接提取数据帧的介质访问控制层MAC首部和IP数据包,并将提取的介质访问控制层MAC首部发送给组帧模块,将IP数据包发送给数据缓存模块;
所述通信控制模块,按照用户数据协议UDP协议解析接收到的数据,并对解析之后的数据依次进行配表操作和寄存器读写操作,得到响应帧类型的数据;按照用户数据协议UDP协议,将不符合响应帧类型的数据组成上传数据帧;
所述用户数据报协议UDP首部校验模块,利用反码求和校验方法,对用户数据报协议UDP报文进行校验,得到包含生成操作和上传操作两种操作类型的报文数据;
所述执行模块,将响应信息数据和上传信息数据,同时发送到数据缓存模块、IP首部生成模块、用户数据报协议UDP首部生成模块;将用户数据报协议UDP首部发送到组帧模块;
所述入队分发模块,将不符合响应帧类型的数据发往捕获模块,捕获模块再将该数据发送给通信控制模块;将帧数据发送到捕获模块;
所述插入模块,将响应帧类型的数据发往入队分发模块;将上传数据帧发送到入队分发模块,入队分发模块将上传数据帧发送到路由处理模块。
2.一种基于可编程逻辑门阵列FPGA的用户数据报协议/网络互连协议UDP/IP硬件协议栈的实现方法,其特征在于,利用可编程门阵列可编程逻辑门阵列FPGA的可编程特性,将数据信息以用户数据报协议UDP报文的形式进行拆分处理,以实现在硬件的基础上对用户数据报协议/网络互连协议UDP/IP协议栈的解析操作,该方法的具体步骤包括如下:
(1)捕获数据帧:
(1a)捕获模块将待处理的的以太网帧类型的数据发送至通信控制模块,通信控制模块按照用户数据协议UDP协议解析接收到的数据,并对解析之后的数据依次进行配表操作和寄存器读写操作,得到响应帧类型的数据;
(1b)插入模块将响应帧类型的数据发往入队分发模块;
(1c)入队分发模块将不符合响应帧类型的数据发往捕获模块,捕获模块再将该数据发送给通信控制模块;
(1d)通信控制模块按照用户数据协议UDP协议,将不符合响应帧类型的数据组成上传数据帧;
(1e)插入模块将上传数据帧发送到入队分发模块,入队分发模块将上传数据帧发送到路由处理模块;
(2)拆分数据帧:
(2a)入队分发模块将帧数据发送到捕获模块,捕获模块将接收到的帧数据发往拆帧模块,拆帧模块按照用户数据协议从帧数据中提取帧类型信息;
(2b)拆帧模块分别将帧类型信息中的介质访问控制层MAC首部、IP数据包、用户数据报协议UDP报文发和专用通信控制协议首部发送给组帧模块、用户数据报协议UDP校验模块、数据缓存模块和执行模块;
(3)校验用户数据报协议UDP报文:
(3a)用户数据报协议UDP校验模块,利用反码求和校验方法,对用户数据报协议UDP报文进行校验,校验完成得到包含生成操作和上传操作两种操作类型的报文数据;
(3b)用户数据报协议UDP校验模块,利用反码求和校验方法,对用户数据报协议UDP报文进行校验,校验失败丢弃包含生成操作和上传操作两种操作类型的报文数据,重新进行步骤(1)操作;
(4)执行协议操作:
(4a)执行模块将响应信息数据和上传信息数据,同时发送到数据缓存模块、IP首部生成模块、用户数据报协议UDP首部生成模块;
(4b)执行模块将用户数据报协议UDP首部发送到组帧模块。
3.根据权利要求2所述的基于可编程逻辑门阵列FPGA的用户数据报协议/网络互连协议UDP/IP硬件协议栈的实现方法,其特征在于,步骤(2a)中所述帧类型信息包括介质访问控制层MAC首部、IP数据包、用户数据报协议UDP报文和专用通信控制协议首部。
4.根据权利要求2所述的基于可编程逻辑门阵列FPGA的用户数据报协议/网络互连协议UDP/IP硬件协议栈的实现方法,其特征在于,步骤(2a)中所述按照用户数据协议从数据帧中提取帧类型信息的步骤如下:
第一步,硬件协议栈根据用户数据报协议解析数据帧,从网络互联协议中定义的标志位的位置确定帧类型的标志位;
第二步,如果帧类型为控制帧类,拆帧模块按照用户数据报协议提取数据帧的帧信息,得到介质访问控制层MAC首部、IP数据包、用户数据报协议UDP报文、专用通信控制协议首部;拆帧模块将提取的数据分别发送到组帧模块、用户数据报协议UDP校验模块、数据缓存模块和执行模块;
第三步,如果数据帧类型为上传帧类,拆帧模块直接提取数据帧的介质访问控制层MAC首部和IP数据包,并将提取的介质访问控制层MAC首部发送给组帧模块,将IP数据包发送给数据缓存模块。
5.根据权利要求2所述的基于可编程逻辑门阵列FPGA的用户数据报协议/网络互连协议UDP/IP硬件协议栈的实现方法,其特征在于,步骤(3a)、(3b)中所述的反码求和校验的方法步骤如下:
第一步,按照用户数据报协议生成一个12字节长的网络间互连协议IP伪首部,将网络间互连协议IP伪首部中伪网络间互连协议IP源地址与伪网络间互连协议IP目标地址定义为用户数据报协议报文中包含的网络间互连协议IP首部中的源地址与目的地址,将网络间互连协议IP伪首部中的协议字段定义为17,将用户数据报协议UDP的字节数定义为用户数据报协议UDP首部的字节数和用户数据报协议UDP数据部的字节数的和;
第二步,将网络间互连协议IP伪首部中前16个比特的数据与用户数据报协议UDP报文中前16个比特的数据进行二进制加和,生成一个32位的二进制数,再将将网络间互连协议IP伪首部中前16个比特的数据与生成的32位二进制数前16位进行二进制加和,如此循环计算,直到32位的前16位为0;
第三步,将网络间互连协议IP伪首部中后16个比特的数据与用户数据报协议UDP报文中后16个比特的数据进行二进制加和,生成一个32位的二进制数,再将将网络间互连协议IP伪首部中后16个比特的数据与生成的32位二进制数后16位进行二进制加和,如此循环计算,直到32位的前16位为0;
第四步,判断两次二进制反码求和的结果是否全为0,若是,则说明数据在硬件协议栈内的传输过程中没有发生差错,结束用户数据报协议数据的校验,得到包含生成操作和上传操作两种操作类型的报文数据,否则,丢弃反码求和校验失败的用户数据报协议数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810218086.3A CN108462642B (zh) | 2018-03-16 | 2018-03-16 | 基于fpga的udp/ip硬件协议栈及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810218086.3A CN108462642B (zh) | 2018-03-16 | 2018-03-16 | 基于fpga的udp/ip硬件协议栈及实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108462642A true CN108462642A (zh) | 2018-08-28 |
CN108462642B CN108462642B (zh) | 2020-06-30 |
Family
ID=63236792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810218086.3A Active CN108462642B (zh) | 2018-03-16 | 2018-03-16 | 基于fpga的udp/ip硬件协议栈及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108462642B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111224773A (zh) * | 2018-11-26 | 2020-06-02 | 山东量子科学技术研究院有限公司 | 一种量子密钥管理设备 |
CN111526120A (zh) * | 2020-03-23 | 2020-08-11 | 鹏城实验室 | 一种多级流水线电路生成tcp校验和的方法 |
CN111726361A (zh) * | 2020-06-19 | 2020-09-29 | 西安微电子技术研究所 | 一种以太网通信协议栈系统及实现方法 |
CN112312184A (zh) * | 2019-07-30 | 2021-02-02 | 苏州华兴源创科技股份有限公司 | 一种视频组帧方法及系统 |
CN112637075A (zh) * | 2020-12-12 | 2021-04-09 | 华中光电技术研究所(中国船舶重工集团公司第七一七研究所) | 一种基于fpga的udp/ip协议栈实现方法及fpga芯片 |
CN112799840A (zh) * | 2021-01-29 | 2021-05-14 | 北京百度网讯科技有限公司 | 用于传输数据的方法、装置、设备以及存储介质 |
CN112953860A (zh) * | 2021-01-26 | 2021-06-11 | 西安电子科技大学 | 兼容hinoc2.0和3.0协议的拆帧控制方法 |
CN117376442A (zh) * | 2023-12-07 | 2024-01-09 | 中国民航大学 | 基于硬件处理架构的远程数据集中器协议转换方法及设备 |
CN117560276A (zh) * | 2024-01-11 | 2024-02-13 | 北京奥普维尔科技有限公司 | 一种报文处理方法、装置及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100223390A1 (en) * | 2006-12-14 | 2010-09-02 | Oracle America, Inc. | Method and system for offloaded transport layer protocol switching |
CN105227543A (zh) * | 2015-08-26 | 2016-01-06 | 电子科技大学 | 参数可配置的基于fpga的以太网udp/ip处理器 |
US20160014004A1 (en) * | 2014-07-10 | 2016-01-14 | Ixia | Processing data units |
-
2018
- 2018-03-16 CN CN201810218086.3A patent/CN108462642B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100223390A1 (en) * | 2006-12-14 | 2010-09-02 | Oracle America, Inc. | Method and system for offloaded transport layer protocol switching |
US20160014004A1 (en) * | 2014-07-10 | 2016-01-14 | Ixia | Processing data units |
CN105227543A (zh) * | 2015-08-26 | 2016-01-06 | 电子科技大学 | 参数可配置的基于fpga的以太网udp/ip处理器 |
Non-Patent Citations (2)
Title |
---|
崔鹤,刘云清,盛家进: "基于FPGA的UDP/IP协议栈的研究与实现", 《长春理工大学学报》 * |
李修堂: "基于FPGA的以太网UDP/IP处理器的设计与验证", 《信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111224773B (zh) * | 2018-11-26 | 2022-07-26 | 山东量子科学技术研究院有限公司 | 一种量子密钥管理设备 |
CN111224773A (zh) * | 2018-11-26 | 2020-06-02 | 山东量子科学技术研究院有限公司 | 一种量子密钥管理设备 |
CN112312184A (zh) * | 2019-07-30 | 2021-02-02 | 苏州华兴源创科技股份有限公司 | 一种视频组帧方法及系统 |
CN111526120B (zh) * | 2020-03-23 | 2022-04-01 | 鹏城实验室 | 一种多级流水线电路生成tcp校验和的方法 |
CN111526120A (zh) * | 2020-03-23 | 2020-08-11 | 鹏城实验室 | 一种多级流水线电路生成tcp校验和的方法 |
CN111726361A (zh) * | 2020-06-19 | 2020-09-29 | 西安微电子技术研究所 | 一种以太网通信协议栈系统及实现方法 |
CN112637075A (zh) * | 2020-12-12 | 2021-04-09 | 华中光电技术研究所(中国船舶重工集团公司第七一七研究所) | 一种基于fpga的udp/ip协议栈实现方法及fpga芯片 |
CN112953860A (zh) * | 2021-01-26 | 2021-06-11 | 西安电子科技大学 | 兼容hinoc2.0和3.0协议的拆帧控制方法 |
CN112799840A (zh) * | 2021-01-29 | 2021-05-14 | 北京百度网讯科技有限公司 | 用于传输数据的方法、装置、设备以及存储介质 |
CN117376442A (zh) * | 2023-12-07 | 2024-01-09 | 中国民航大学 | 基于硬件处理架构的远程数据集中器协议转换方法及设备 |
CN117376442B (zh) * | 2023-12-07 | 2024-03-08 | 中国民航大学 | 基于硬件处理架构的远程数据集中器协议转换方法及设备 |
CN117560276A (zh) * | 2024-01-11 | 2024-02-13 | 北京奥普维尔科技有限公司 | 一种报文处理方法、装置及系统 |
CN117560276B (zh) * | 2024-01-11 | 2024-03-19 | 北京奥普维尔科技有限公司 | 一种报文处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108462642B (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108462642B (zh) | 基于fpga的udp/ip硬件协议栈及实现方法 | |
US9253062B2 (en) | Byte by byte received data integrity check | |
US6553031B1 (en) | Communication node apparatus with routing tables in cache memories | |
US7283528B1 (en) | On the fly header checksum processing using dedicated logic | |
CN101047714B (zh) | 一种处理网络数据的方法及系统 | |
EP1359727A2 (en) | Internet protocol system using hardware protocol and relating parallel data processing method | |
US20110069620A1 (en) | Misdirected Packet Detection Apparatus and Method | |
US8473632B2 (en) | Packet receiving apparatus and processing method for the same | |
US7269661B2 (en) | Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet | |
US12074729B2 (en) | Message encapsulation method and apparatus, and message decapsulation method and apparatus | |
US20120230208A1 (en) | Metadata Capture for Testing TCP Connections | |
EP2456128A1 (en) | Testing packet fragmentation | |
US6483840B1 (en) | High speed TCP/IP stack in silicon | |
US7733865B2 (en) | Communication apparatus and method | |
CN111585834B (zh) | 一种网络信息的存储方法和装置 | |
US8654643B2 (en) | Wide field indexing for packet tracking | |
KR101332279B1 (ko) | 데이터 패킷 전송 방법 및 디바이스 | |
EP2201740B1 (en) | High speed packet processing in a wireless network | |
US7505460B2 (en) | Address validating data structure used for validating addresses | |
CN112637075A (zh) | 一种基于fpga的udp/ip协议栈实现方法及fpga芯片 | |
CN114598675A (zh) | 基于arp实现主机阻断的控制方法、装置、设备及介质 | |
JP2023530347A (ja) | Bier oam検出方法、デバイス及びシステム | |
US20230124324A1 (en) | Generation Number for Handling Resets | |
US20230121096A1 (en) | Location Based Medium Access Control Address | |
US20050044261A1 (en) | Method of operating a network switch |
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 |