1、 本 科 毕 业 设 计 基于 FPGA 的数据缓存与转发系统设计 所在学院 专业班级 电子与信息工程 学生姓名 学号 指导教师 职称 完成日期 年 月 II 摘要 利用 EDA 工具进行设计、 仿真 和验证 ,能够 加速设计 的 过程,降低开发风险,缩短开发周期。 本设计采用的是 FPGA 芯片,它的 设计周期短、灵活,能够提高系统的可靠性和集成度。它能够以其优势来处理 IP 数据报中的数据,大大减轻了 CPU 的负担。另外,它可以应用于多种场合,降低功耗,为进一步研究 IP 数据报的缓存和转发的系统提供条件。在未来信息无所不在的时代,网络将依靠其灵活性、可扩展性,以及建网迅速、维护方便等优
2、势,让人们真正享受到简单、方便、快捷的连接。 本论文的主要工作如下: 首先,本文简单介绍了 FPGA 的结构、工作原理、优点、发展前景和设计流程。 其次,本文介绍了 IP 数据报和 TCP 协议、 UDP 协议、 ICMP 协议的基本概念、格式和工 作原理。 然后,根据安全逻辑需求,本文进行了基于 FPGA 的数据缓存和转发系统的设计。文中列出了功能实现框图,该框图包含 5 个功能模块,分别是 IP 数据报的缓存模块、判断模块、计数模块、限流模块、转发模块。缓存模块主要实现 IP 数据报的缓存,为下面的判断模块打下基础;判断模块主要是判断报文头部的版本号、头长度、协议类型( TCP,UDP,I
3、CMP)等功能;计数模块实现了 TCP、 UDP 和 ICMP 报文个数统计,以及这三种类型报文的总数;为了防止报文泛滥使得系统瘫痪,限流模块设定了接收正确报文的总数,如果超过设定值,报文将 被过滤掉;转发模块实现报文目的地址的提取,并根据该目的地址将数据报转发到相应的端口上。 最后,本论文采用 VerilogHDL 硬件描述语言编写了 5 个功能模块的源程序和测试程序,在 Modelsim 软件上进行了功能仿真。仿真结果表明,这 5 个模块已经实现了各自的基本功能。 关键词 : IP 数据报 ; FPGA; TCP 协议 ; UDP 协议; ICMP 协议 III Abstract Usin
4、g EDA tools can design, simulation and verification. It can speed up the design process, reduce development risk and shorten the development cycle. This design uses a FPGA chip, its design cycle is short and flexible. It Can improve system reliability and integration. It could take its advantage to
5、handle the data in IP datagrams, thus it can greatly reduce the CPUs burden. In addition, it can be used in many occasions, and reduce power consumption.It is for further study of the cache and the IP packet forwarding system providing conditions.Ubiquitous in the coming information age, the network
6、 will rely on its flexibility, scalability, and rapid network construction, easy maintenance, and other advantages, so that people really enjoy the simple, convenient, fast connection. The main work of this paper is as follows: First, this article simply introduces the FPGA structure, working princi
7、ple, advantages, prospects for development and design processes. Secondly, the article describes the IP datagram and the TCP protocol, UDP protocol, ICMP protocols basic concepts, basic format and work. Then, according to security logic requirements, this article has conducted FPGA-based data cache
8、and forwarding system design. The paper lists the function realization diagram,The diagram includes five functional modules, namely, IP packet buffer module, the judging module, the counting module, the current limit module, the relay module. Cache module mainly realizes the IP datagram buffer,For t
9、he following modules lay the foundation for judging; Determine the module is to determine the version number of the packet head, head length, protocol type (TCP, UDP, ICMP) and other functions; Counting module implements the TCP, UDP and ICMP packets the number of statistics, and that the total numb
10、er of three types of packets;Spread the message makes the system paralysis, in order to prevent it, Limiting module sets the total number of correct packets received.If you exceed the set value, the message will be filtered out;Relay module enables the extraction of the destination address of packet
11、s,And according to the destination address to forward the datagram to the appropriate port. Finally, this article uses VerilogHDL hardware description language to write five modules of the source program and the testing procedure, And carried out in the Modelsim functional simulation software.Simula
12、tion results show that the five modules have been achieved those basic functions of their own. keywords: IP datagram; FPGA; TCP protocol; UDP protocol; ICMP protocolIV 目录 第 1 章 绪论 . 1 1.1 研究背景和意义 . 1 1.2 TCP/IP 协议简介 . 1 1.3 国内外发展现状 . 2 1.4 设计的主要工作和意义 . 3 第 2 章 IP 数据报简介及 FPGA 设计方法 . 4 2.1 IP 数据报和 TCP
13、、 UDP、 ICMP 协议简介 . 4 2.1.1 IP 数据报概念及工作原理 .4 2.1.2 IP 数据报格式 .4 2.1.3 UDP协议的概念和格式 .6 2.1.4 TCP 协议的概念和格式 .7 2.1.5 ICMP 协议的概念和格式 .7 2.2 FPGA 简介 . 8 2.2.1 FPGA 概述 .8 2.2.2 FPGA 的工作原理 .8 2.2.3 FPGA 的前景 .8 2.2.4 FPGA 的设计流程 .9 2.3 硬件描述语言 Verilog 概述 . 9 2.3.1 Verilog 的产生与发展 .9 2.3.2 采用 Verilog 语言设计的优点 .9 第 3
14、 章 系统设计过程 . 10 3.1 总体设计思路 . 10 3.1.1 总体设计框架图 .10 3.1.2 总体设计流程图 .11 3.2 各模块子程序设计过程 . 12 3.2.1 IP 数据报的缓存模块设计 .12 3.2.2 IP 数据报的判断模块设计 .13 3.2.3 IP 数据报的计数模块设计 .16 3.2.4 IP 数据报的限流模块设计 .18 3.2.5 IP 数据报的转发模块设计 .20 V 第 4 章 系统仿真 . 22 4.1 ModelSim SE 6.5的下载安装与用法 . 22 4.1.1 ModelSim SE 6.5 下载 .22 4.1.2 安装 Mode
15、lSim SE 6.5 .22 4.1.3 ModelSim SE 6.5 破解 .22 4.1.4 ModelSim SE 6.5 的用法 .23 4.2 软件仿真 . 23 4.2.1 IP 数据报的缓存模块的仿真 .23 4.2.2 IP 数据报的判断模块的仿真 .23 4.2.3 IP 数据报的计数模块的仿真 .24 4.2.4 IP 数据报的限流模块的仿真 .25 4.2.5 IP 数据报的转发模块的仿真 .26 小结 . 27 致谢 . 错误 !未定义书签。 参考文献 . 28 1 第 1 章 绪论 1.1 研究背景和意义 21 世纪互联网络快速的发展,改变了社会运行的基本方式,促
16、进了高端科技的飞速发展,尤其是进入 3G 以后,随着一些制约因素的逐渐消除, IP 的功能将得到充分发挥,应用也会越来越广泛。互联网和 IP 技术将在 3G 时代充分融合,互相促进。将极大地改变人们的工作和生活方式。随着多媒体、现代网络以及通信技术的快速发展,以及它 们各自性能的不断改善 , IP 网络技术就不断被发展、壮大和进一步完善 ,它将以无法比拟的优势被 Internet、 Extranet和 Intranet 广泛应用 ,进一步为政府机关、科研单位、医疗机构、商业集团、及个人的生活提供了便利的条件 ,进一步成为工作、学习、生活中不可或缺的工具 1。 各个用户在组建各自的网络时,就必须
17、选择相应的网络协议,他们之间才能够相互进行“交流”。在这么多的网络协议中, TCP/IP 协议基本上已成为目前局域网以及广域网中的协议标准。在未来信息无所不在的时代,网络将利用它的可移动性、灵活性、可 扩展性以及建网速度快、维护比较方便等优势,让人们真正享受到简单、方便、快捷的连接。 网络的发展是由 点 到 点 的传输,到局域网 的 传输,再到现在的互联网 传输 。不同的主机之间 进行统一的传输是 TCP/IP 传输协议所 要 做的重要工作。现在互联网已经 基本 成熟 很多 , TCP/IP 协议也有了更多的扩展应用。下面 主要是其 相关的概念和知识。 1.2 TCP/IP 协议简介 TCP
18、/IP 协议是 美国政府 在 60 年代末 资助的 最早的 一个分组交换网络 的 研究项目,到现在 90 年代 ,它 已发展成为 网络 之间最常用的组 建 形式 12。 TCP/IP 协议是( Transmission Control Protocol)的简写,中文名称为传输控制协议又叫因特网互联协议,它是因特网最基本的协议、国际因特网的基础,它是发展至今最成功的通信协议。刚开始时, TCP/IP 协议是美国国防部高等研究计划局开发研究计划的一部分,他们原始的目的是为 DARPA提供通信,现在它已经被全球的开放式网络系统 Internet广泛应用,能够让全球数百万计算机互相联系。 TCP/IP
19、 协议定义了电子设备(比如计算机)和因特网的连接,及数据在它们之间传输的标准 12。 TCP/IP 协议的成功应用与 人们对 Internet 的广泛应用有着很大的关系,现在 TCP/IP 技术已成为互联网协议的标准,几乎所有的厂商都支持它。随着 Internet 网络的普及,很多大中型公司已经建立了自己的局域网。目前最为流行的网络工具大多是基于 TCP/IP 协议的,而其中最主要的两个协议就是 TCP 和 UDP 协议。 TCP/IP 协议已经成为当今计算机网络最成熟、应用最广泛的互联网协议。网上很多的计算机只要安装了 TCP/IP 协议,它们之间就能够相互通信。运行 TCP/IP 协议的网
20、络是一种采用包交换的网络。 TCP 和 IP 两个协议分别从属于传输层和网 络层,在 Internet 中起着不同的作用 22。 TCP/IP协议栈主要分为四个层:应用层( Application Layer) ,传输层( Transport Layer) ,网际层( Internet Layer,也称为 Internet 层)和网络接口层( Network Interface Layer) 。它主要侧重于互联网设备之间的数据传输 23。 每个层协议主要负责完成的功能如下: 2 ( 1)应用层向用户提供远程登录,简单邮件传输协议,文件传输协议及网络文件系统等一组常用应用程序。用户通过 TCP/
21、IP 访问使用 相关程序进行相应的服务,应用层就负责把这些相关程序转换成数据流,然后交给传输层处理。 ( 2)传输层的任务是向用户提供端到端的通信。传输层的协议负责系统的管理信息的流动,提供可靠或者不可靠的传输服务。 在发送端,传输层将应用层提供的数据流分段(或者分组,即将数据流划分成小段),并将这些数据段加上标识,包括由哪个应用程序发出,由哪个应用程序处理,使用什么传输层协议,校验和,报文长度,等等。这种标识称为传输层报文头,例如 TCP 报文头, UDP 报文头等。 在接收端,传输层去掉传输层报文头,利用报文头中的校验和来检验数 据在传输过程中是否出错,以一定的顺序将数据段重新组装成数据流
22、交给应用程序处理。 ( 3) 网络层负责处理相邻计算机间的通信。网际层有 IP 协议,网际控制报文协议 ICMP,地址分析协议 ARP,反向地址协议 RARP 等,其中最重要的是 IP 协议,它解决了计算机间的很多通信问题。网络层决定着交付 IP 数据包,是交给路由器还是传输给相应的本地端口。 在发送端,网际层将传输层提供的数据段封装到数据报中,并写入 IP 报头(包括源 IP地址,目标 IP 地址,使用什么协议,校验和等等)。选择适当路径、把 IP 数据报送往适当的 网络接口。 在接收端,网际层通过读取 IP 报头中的信息来决定如何处理数据包。如果是路由器收到数据包,它则通过校验和对其进行合
23、法性检查,并检查其信宿地址,决定是做本地处理还是转发该数据包;如果是目标主机收到该数据包,通过检验后,它会去掉 IP 报头交给传输层处理。 网际层还负责处理 ICMP 报文(网际控制报文协议)、进行路径选择、流量控制、拥塞控制等。 ( 4) 网络接口层负责把网际层提供的数据包封装成帧,帧头中包含源 MAC 地址,目标MAC 地址,使用何种链路封装协议(如 HDLC,PPP 等)等信息,然后,通过选定的网络 端口将帧发送出去。 在接收端,网络接口层把帧头中的信息解读出来,如果是发送给自己的,则拆开帧头,将 IP 数据包传输给网际层处理,如果不是发送给自己的,则将该帧丢弃掉。网络接口层还包含了一些
24、网络设备的驱动程序。最后,网络设备通过传输介质将帧转换成比特流把信息发送出去。 1.3 国内外发展现状 TCP/IP 协议是 70 年代中期美国国防部 DARPANET 开发的网络体系结构和协议标准 ,以它为基础而组建的 Internet 是目前国际上规模最大的计算机网间网。近几年来国内外对 IP/TCP协议的研究公司及研究所逐渐增多。 在现在信息无所不在的时代, IP/TCP 网络依靠其的灵活性、可移动性和极强的可扩容性,以及建网迅速、维护方便等优势,让人们真正享受到了简单、方便、快捷的连接。它能够以独特的优势广泛应用到 Internet、 Extranet、 Intranet 上来 ,为政
25、府机关、商业集团、科研3 院所、医疗机构及普通个人的生活提供了方便条件 ,成为工作、学习、生活中不可或缺的工具 。 1.4 设计的主要工作和意义 本设计对 IP 数据报在软件上编程、仿真进行了研究,本文主要设计了一个基于 FPGA 的 IP 数据报缓存和转发系统。设计中 ,首先对该系统进行了模块划分,并确定了各个子模块的功能;然后对各个子模块进行软件编程和 modelsim 软件仿真;将各个子模块的设计文件归并起来形成一个总的设计文件,同样对其进行软件仿真以确保各个子模块联系在一起后能正确的实现该系统的功能 . 本设计所做工作的意义在于:研究了 FPGA 的内部结构及其功能模块,并且,利用它的
26、 设计周期短,灵活。适合用于小批量系统,提高系统的可靠性和集成度;拥有 DSP 集成大量硬核、软核。可以应用于多种场合;可以降低功耗的优点,进一步研究 IP 数据报的缓存和转发的系统。 在未来信息无所不在的 时代,网络将依靠其的灵活性、可移动性和极强的可扩展性,以及建网迅速、维护方便等优势,让人们真正享受到简单、方便、快捷的连接。 4 第 2 章 IP数据报简介及 FPGA设计方法 2.1 IP 数据报和 TCP、 UDP、 ICMP 协议简介 TCP、 UDP 协议包含在 TCP/IP 协议栈中的传输层; IP、 ICMP 协议主要包含在 TCP/IP 协议栈中的网际层;而 IP 数据报主要
27、是 TCP/IP 协议上传输的包。 2.1.1 IP 数据报概念及工作原理 TCP/IP 协议定义了一个在因特网上传输的包,它就叫做 IP 数据报 (IP Datagram)。它主要是由报头和数据两个部分组成,数据报的总长度限制在 65535字节以内,其格式如图 (图 2.1)所示。头部的前一部分是固定长度的,共 20 字节,它是所有 IP 数据报都必须具备的。在头部的固定部分的后面是一些可选字段,它的长度是可变的。头部中的源地址和目的地址都是IP 数据报地址 7。 IP 的主要功能是指在互联网上将数据以数据报的形式从一台主机传到另一台主机,中间可能要穿越若干个物理网络。在不同的网络之间,通过
28、路由器来传递数据报。 对 IP 数据报而言,数据是指上层协议传送过来的数据报,不论其中 包含了多少层,这些数据对 IP 模块而言是看不到的。它只是产生 IP 报头将这些数据包起来,再忠实的传输到下一层去。至于下一层接收到的数据报, IP 模块则是把包裹在外面的 IP 报头剥除、处理,然后送到上一层去。 2.1.2 IP 数据报格式 IP 数据报格式如 图 2.1所示: 图 2.1 IP数据报格式 (一) IP 数据报头部的 固定部分: 因为 IP 数据报处理主要是在软件中进行的,所以它的格式和内容可以不受硬件的限制。其各个字段含义如下: ( 1)版本号:为 4 位,说明了一个 IP 数据包采用
29、的是因特网协议的哪个版本。如果值5 为 4,那么,版本号为 4,如果值为 6,那么版本号为 6,。目前广泛应用的版本号为 4 (即 IPv4)。IPv6 目前还处于起步阶段。 ( 2) 报头长度:为 4 位,其值标明 IP 数据报头的长度,长度单位是 32bit 字,即每个字为 4 字节。一般的 IP 数据报(没有任何选择项)字段的值为 5 ,因此选项最多占 40 字节( 10 个字)。报头长度限制为 60 字节的缺点是有时可能不够用。这样做的目的是希望用户尽量减少开销。目前,最常用的报头长度就是 20 字节 (即头部长度为 0101),这时不使用任何选项。 ( 3) 服务类型:为 8 位,用
30、于服务质量的控制。 TOS 的值表明 IP 数据报的服务质量的控制要求,它包括延迟、流通量、可靠性和优先级 4 个参数。路由器根据它的资源利用情况,对 TOS 值不同的 IP 数据报进行不同的转发。 4bit 的 TOS 分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。 4bit 中只能置其中 1bit 。如果所有 4bit 均为 0 ,那么就意味着是一般服务。但实际上一直没有被使用过, RFC 1340 Reynoldsand Postel 1992 描述了所有的标准应用如何设置这些服务类 型。 ( 4) 总长度:为 16 位,其值标明了 IP 数据报的总长度,包括报头与数据部分。利用
31、报头长度字段和总长度字段,就可以知道 IP 数据报中数据内容的起始位置和长度。在 IP 层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,即最大传送单元 MTU (Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度 (即头部加上数据部分 )一定不能超过下面的数据链路层的 MTU 值。 ( 5) 标识 (Identification):为 16 位。用于分段转发功能。路 由器将一个 IP 数据报分割成多段转发时,同一个 IP 数据报的各段的标识值必须相同。接受者可将标识值相同的段组装起来,恢复 IP 数据报。这个“标识”并
32、不是序号,因为 IP 是无连接的服务,数据报不存在按序接收的问题。 ( 6) 标志 (Flag):为 3 位,一位是 DF 位,一位是 MF 位,另一位保留以后使用。标志字 MF=1 表示是 IP 数据报的某一段, MF=0 表示不是分段的 IP 数据报,或者是 IP 数据报的最后一段。 DF=表示 IP 数据报不能分段转发。 ( 7) 段偏移:为 13 位。用于分段转发功能。假定一个 IP 数据报总长度为 6000 字节 ,将它分成三段发送时,那么第一段的段偏移应为 0,第二段的段偏移应为 2000 字节,第三段的段偏移应为 4000 字节。根据段偏移和标志,接收者就可以判定哪个是第一段,哪
33、个是第三段。 MF=1 而段偏移为 0 的是第一段, MF=0 但段偏移不为 0 的是第三段。接收者根据段偏移恢复 IP 数据报。 ( 8) 生存时间:为 8 位,其表明 IP 数据报在网络中的寿命。当主机发出一个 IP 数据报时,每经过一个路由器时,就把 TTL 减去 IP 数据报在路由器消耗掉的一段时间。若 IP 数据报在路由器消耗的时间小于 1 秒,它的值就减去 1 。当该字段的值为 0 时,数据报就被丢弃,并发送 ICMP 报文通知源主机。 ( 9) 协议:为 8 位,协议字段表明 IP 数据报携带的数据是使用何种协议,以便使目的主机的 IP 层知道应将数据部分上交给哪个处理过程。如 6 表示上层是 TCP , 17 表示上层是 UDP, 1 表示上层是 ICMP 等 。 ( 10) 头部检验和:为 16 位。这个字段只检验数据报的头部。为了计算一份数据报的 IP 校验和,首先,要把校验和这部分置为零 。然后,把报头中每个 16bite 转换成二进制反码再求和,其结果就存在校验和这部分字段中。例如:当接收到一串 IP 数据报后,同样对报