首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA 的千兆以太网协议分析技术

基于FPGA 的千兆以太网协议分析技术

0 引言
以太网是当前最基本、最流行的局域网组网技术,为了适应各种新开展的业务如流视频等,其速率也在不断提高。千兆以太网是建立在以太网标准基础之上的技术,具有高效、高速、高性能的特点,目前企业局域网甚至城域网的建设都会把千兆以太网技术作为首选的高速网络技术。而千兆以太网协议分析技术是随着计算机技术、现代通信技术、网络技术的迅速发展而发展起来的,能够应对信息网络的突发事件,迅速判断网络瘫痪和受攻击部位,起到应急反应支援的作用。同时,随着TCP/IP(Transmission Control Protocol/Internet Protocol) 的广泛应用和深入,TCP/IP 计算机网络的建设、维护和故障诊断面临着巨大的挑战,急切需要千兆以太网协议分析技术的应用。

1 工作原理
本文介绍的千兆以太网协议分析技术是基于FPGA(Field -Programmable Gate Array) 设计技术, 支持10M/100M/1 000M电口和光口测试,采用RJ45 和SFP 光口连接器形式;负责物理层及数据链路层的数据帧编辑、生成、捕获、过滤、触发、解码和分析处理工作,IP 层以上的协议帧有软件根据IEEE802.3 协议标准进行操作。图1、图2 所示分别为本方案的发送部分、接收与分析部分的原理框图。



千兆以太网协议测试FPGA 内部设计部分可以分为发送部分、接收分析部分和接口芯片寄存器管理部分。其中,发送部分完成发送、编辑和生成各种以太网数据流等功能,根据测试需要,发送部分可产生任意的MAC 地址、IP 地址、错误的校验与错误插入等非正常数据。其中,MAC 地址、IP 地址的设置种类很多,可以设置为静态、递增、递减、随机等;接收分析部分完成以太网数据流统计、捕获、解码分析、信号性能统计等功能;根据测试需要,接收部分可选择捕获和统计需要的MAC地址、IP 地址、错误的校验类型与错误插入类型等的数据帧,其中可设置的过滤条件和触发条件有MAC 地址、IP 地址、图形1、图形2、协议类型和错误类型等。接口芯片寄存器管理部分完成对接口芯片BCM5421 寄存器的读写操作与管理及串/ 并、并/ 串转换功能。
2 设计实现
本文介绍的千兆以太网协议分析技术是通过千兆以太网收发器BCM5421 和大规模FPGA 组合的硬件平台来实现的。由于千兆以太网支持电口和光口两种接口方式、以太网协议复杂、千兆速度很高、逻辑控制庞大,在FPGA 设计及PCB 布板设计实现中,具有很高的难度。具体设计实现的电路框图如图3 所示。


千兆以太网信号经过收发处理电路送入接口芯片,由接口芯片对信号进行信号有效性、碰撞、编/ 解码、点灯等操作,然后以8- bit 的串行数据流送入FPGA。在FPGA 内需要完成MAC 层发送部分各种以太网帧的编辑、生成、数据编辑、错误插入、并/ 串转换、发送模式的设置等,完成MAC 层接收部分各种以太网帧的监测、捕获、过滤、解码、查找错误和评估性能等,MAC 层接口芯片的寄存器管理、读写控制等;还有CPU 和硬件对SRAM、SDRAM的读写、存储操作等,具体实现过程如下所述。
2.1 千兆以太网协议分析接口电路设计
以太网测试模块采用两种接口方式:RJ45 电口和SFP 光电转换模块的光口。本技术实现方案采用的是接口收发器芯片BROADCOM公司的BCM5421S,完全支持IEEE802.3、自动协商、碰撞检测试、编/ 解码、串/ 并变换等功能,符合10BASE- T、100BASE- TX和1000BASET标准。同时,支持RGMII、GMII、MII、TBI、RTBI、SGMII和SerDesMAC接口方式。

2.2 千兆以太网协议分析FPGA 内部设计
由于千兆以太网协议分析整个工程太大、逻辑控制太复杂、传输速率很高,根据设计需要,采用的是Xilinx公司的Virtex4 系列的XC4VLX40- 11FFG668C,使用VHDL 语言进行编程,FPGA主要完成以下功能:
(1)完成10M、100M、1 000M三种速率的各种协议层的功能;
(2)帧错误和比特误码的插入和检测统计功能;
(3)数据流以太网编/ 解帧、捕获、过滤、各种性能指标的计数器及累加功能;
(4)与BCM5421S、微处理器和存储器(SRAM、SDRAM)之间数据传送/ 接收的逻辑控制功能;
(5)与微处理器之间的数据与地址接口控制。

发送部分FPGA 设计包括几个模块:成帧器模块、成帧控制信息及帧数据模块、数据流模式发生器模块、FIFO 模块、地址译码及逻辑控制字电路模块、误码插入电路模块、地址发生器模块、SRAM控制器模块等。
CPU 总线分别对SRAM、FPGA 内的DPRAM编写数据流的帧数据及控制信息,通过SRAM控制器对SRAM进行读写操作,由于以太网协议的帧长度是以字节为单位的,故需要把SRAM的32 位数据转换为8 位,再进行处理。在FPGA 内设计一个32 位进8 位出的FIFO 来实现,然后在以太网数据流成帧器模块中根据数据流控制信息、数据流发送模式、错误及BIT 误码插入等控制信息把以字节为单位的数据流组成满足各种要求的以太网帧。在成帧的同时,需要对发送的数据帧进行8- bit 并行CRC 校验产生一个32- bit 的校验码,根据帧格式要求加在数据帧的尾部,进而通过8 比特输出到接口芯片,由接口芯片进行编码输出。具体实现框图如图4 的发送部分所示。其中,成帧器中包括前导码生成模块、MAC 地址生成模块、协议选择模块、IP 地址生产模块、数据域生成模块等,前导码长度可从4- 255 字节任意设置,MAC 地址、IP 地址可以设置五种生成模式:静态、递增、递减、随机及本端口(网关),数据域的设置包括固定字、用户编辑、伪随机图形、递减、递增和随机等。


数据流的控制信息都存储在FPGA 中生成的DPRAM中,主要是用来设置每个数据流的控制信息,包括:数据流数据在SRAM中的存放地址、数据流长度、前导码的长度、发送模式、MAC 地址的类型、IP 地址的类型、错误插入类型、帧间隔及下一个数据流控制信息在DPRAM的地址等。
接收部分的FPGA设计主要是用来处理BCM5421S接收的帧数据,对数据流进行解帧、流量控制、性能统计、帧解码、捕获、过滤和触发。其中,过滤和触发包括源、目的MAC 地址,源、目的IP 地址,协议类型、帧类型错误、图形1、2 等。接收的数据首先根据接口芯片监测的数据速率确定是1 000M、100M还是10M信号,将数据流锁存一个时钟周期后送入FIFO 中,在数据写入FIFO 时仍需记录每一个数据帧的长度,读取数据的时候一次读出整个数据帧。MAC 层接收部分FPGA 设计包括几个模块:解帧器模块、解帧控制信息模块、捕获、过滤、触发模块、地址译码及逻辑控制字电路模块、帧错误及误码监测电路模块、地址发生器模块、SDRAM控制器模块等。具体实现框图如图5 的接收部分所示。解帧器模块是成帧器的反过程,根据数据速率的要求选择不同的时钟计数器,首先识别前导码,然后以前导码结束为依准,运用计数器依次识别MAC 目的地址、MAC 源目的地址、帧协议类型、数据部分(根据识别后的帧协议类型的不同可以识别不同的帧结构,如IP、TCP、UDP、IGMP、ICMP 等帧的帧头部分)、CRC 校验码等帧结构中的组成部分,然后分别锁存在寄存器用于接收数据帧的解码使用。


在接收数据的接收帧设计的过程中,分别设计了不同的计数器用来对接收帧个数、接收字节数、不同协议帧个数、不同错误帧个数等性能指标进行计数,通过软件每0.5s 读取一次,进行累计或实时统计显示。
数据帧接收部分的捕获、过滤、触发模块可完成对源、目的MAC 地址,源、目的IP 地址,协议类型,帧类型错误,图形1、2 等指标的捕获、过滤和触发功能的测试。帧错误及监测电路模块可以监测发送部分所有能插入的帧错误类型,检测CRC 校验码的设计程序与发送相同,接收数据经过CRC 校验程序计算以后与发送来的帧CRC 校验码比较,可以判断接收的帧数据是否有FCS 错误。IP、TCP、UDP 头校验错误的监测与FCS 错误监测类似,不过程序计算校验和的方法是采用二进制反码远算,需要校验的首部按照16- bit 进行相加,如果有进位,就把进位也加上,然后计算和,再取反,就得到校验和了。地址译码及逻辑控制模块主要是通过软件对分配好的地址的寄存器进行读写即可。
3 结束语
本文介绍的千兆以太网协议分析技术采用超大规模FPGA 设计技术成功实现千兆以太网数据的发送、接收、协议分析、记录、统计等功能,设计了采集和存储快速处理电路,实现了速率为10M/100M/1 000M、接口为光口和电口的以太网网络测试功能,已经成功应用于某测试系统的千兆以太网测试模块的设计中,并通过了严格的测试。

作者:王安意 来源:电子质量(2011 第11 期)
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表