时间:2024-07-28
朱 晴,吴 宁,顾薛平
(南京航空航天大学 电子信息工程学院,江苏 南京 210016)
随着互联网的迅猛发展,对网络管理的需求日益迫切,而流量监测和统计分析是整个网络管理的基础。为了实现对网络进行综合管理,有必要及时全面地收集、管理网络的流量信息,准确获取网络流量数据,对网络流量态势进行分析,对网络健康状况及未来的发展趋势作出准确判断。然而,随着网络带宽的增加和规模的扩大,大规模网络流量采集面临着数据规模庞大和数据到达速度过快的挑战。为了克服上述困难,通常采用硬件实现完成流量采集功能[1]。当前采用硬件实现的流量采集方法(如 Cisco的 NetFlow或者 InMon的 sFlow)都是基于对数据报文周期性地采样来进行流量采集,这种方法存在处理速度缓慢、统计结果不精确、实现代价大、单个流处理访存次数多等缺点。
随着FPGA的发展,其内部资源日益丰富,速度和性能大大提高,特别是内部嵌入了大量 IP核[2],这些使得在FPGA上进行高速网络流数据的采集和分析成为可能。流量管理系统主要包含网络数据采集系统、网络数据统计与分析和网络数据分流三部分,如图1所示。
图1 流量管理系统
本系统基于FPGA,获取RJ45端口的网络数据,然后对数据进行流量统计和分析,最后根据分析结果,将网络数据包进行分流再重新转发回网络中。
本文基于FPGA,重点研究了前端网络数据采集系统,该系统总体框图如图2所示,网络数据由RJ45端口接入系统,经Marvell 88E1111和千兆以太网核的解析,获取完整的数据包,暂存在指定地址的片内RAM中进行统计和分析。
图2 网络数据采集
网络数据采集系统主要通过Marvel 88E1111物理层芯片和Altera公司的千兆以太网IP硬核来实现,两者通过标准的SGMII接口连接。
在发送数据的过程中,88E1111物理层芯片将FPGA的千兆以太网IP硬核产生的高速串行数据流经RJ45以太网口,由5类双绞线传递出去。在接收数据的过程中,88E1111物理层芯片检测从5类双绞线传递进来的电信号,如果有有效电信号到来,将高速串行数据流传递给千兆以太网MAC核。
Altera公司的千兆以太网硬核默认支持的物理层器件有支持10/100 Mb/s的National DP83848C,支持10/100/1000 Mb/s的National DP83865以及支持双物理层和10/100/1000 Mb/s的Marvell 88E1111。
Marvell公司的物理层芯片88E1111是一款高性能的 芯 片 , 支 持 包 括 GMII、RGMII、SGMII、TBI、RTBI 等 接口的MAC层和物理层的连接方式,可以直接接入千兆以太网MAC或交换机端口,10/100/1000 Mb/s的物理传输层的媒介,光纤传输线连接方式以及双绞线的连接方式[3]。88E1111支持的最高速率为1.25 GHz,I/O电平标准为3.3 V LVTTL。系统选择Marvell 88E1111作为PHY器件。
以太网技术是一种广泛应用的网络技术,千兆以太网在兼容原有以太网技术的基础上进行了一系列改进,网络数据传输速率得到了大幅度提高。特别是IEEE802.3ab(1 000Based-T)千兆网标准的出台,将 5类非屏蔽双绞线应用在千兆网中,使得网络性能在原有布线基础上获得大幅度提高[4]。如今,千兆网已经发展成为主流的网络技术。
千兆网兼容了原来以太网标准所规定的全部技术规范,其中包括CSMA/CD协议、以太网帧、全双工、流量控制等。千兆网的标准化结构包括介质访问控制(MAC)、物理编解码(PCS)和物理介质接入(PMA)三个主要部分。
Altera提供可参数化的千兆以太网IP核解决方案,该方案可在 Altera的 CycloneII、CycloneIII、Stratix等系列FPGA上工作,可配置使其包含MAC、PCS和PMA模块中的一种或多种,选择相应的接口标准[5]。
构建千兆以太网系统必须先了解MAC、PCS和PMA三个模块的功能及其带来的影响。MAC模块主要用于全双工模式下的流量控制及MAC帧的发送和接收,其主要操作有MAC帧的封装与解包以及错误检测。MAC模块通过MII/GMII/RGMII接口与PHY器件或者PCS模块进行通信,同时为用户提供了基于Aalon-ST的8 bit/32 bit接口[6]。
PCS和PMA分别代表物理层的物理编码子层和物理介质接入层,这两个模块在配置过程中是可选的。PCS模块专门负责信道的编解码、纠错和扰码等,可以通过GMII或MII接口访问,同时提供了TBI接口与物理介质接入层进行通信。PMA模块主要功能是实现数据在物理线路上串并或并串转换,同时连接外部物理介质相关(PMD)的设备,可以驱动铜线或光纤网路进行工作,与PMD设备接口为1.25 Gb/s串行口或者SGMII接口。整个千兆以太网系统模块关系图如图3所示。
图3 千兆以太网模块
在 Altera提供的千兆以太网 IP核中,MAC、PCS和PMA这三个模块都是可选和可配置的。不同的选择和配置,千兆以太网IP核与系统和物理芯片的接口是不同的,如表 1所示,‘’表示选择了这个模块,‘-’表示该模块未被选中。
表1 千兆以太网模块配置及接口
FPGA千兆以太网硬核与物理芯片88E1111的接口采用标准的SGMII接口。SGMII为串行吉比特媒体独立接口,支持10/100/1 000 Mb/s的全双工BASE-T功能,支持8 bit/10 bit编码,速率为1.25 Gb/s。此外,SGMII是串行的,在连接千兆以太网硬核和物理芯片时,不需要提供额外的时钟,容易实现。
系统中SGMII接口如图4所示,RX和TX为1.25 Gb/s的差分输入和输出信号,MDC/MDIO为MAC控制接口对88E1111芯片的控制方式,以实现对其的管理。
图4 物理芯片和千兆以太网的SGMII接口
SGMII是1.25 Gb/s串行数据接口,根据表 1内容选定系统中千兆以太网IP核包含MAC、PCS和PMA三个模块。
Altera提供千兆以太网控制器IP核,通过配置界面可将IP核配置为所需模式并进行IP核参数设置,配置界面分为以下4个配置页面[6]。
(1)Core Configuration:核配置选项,配置以太网功能模块,是否包含PCS模块、FIFO模块,配置接口类型、端口数等。系统配置包含PCS和FIFO模块,同时配置PCS接口类型为LVDS I/O(SGMII要求)。
(2)MAC Options:MAC配置选项,配置 MAC模块功能,系统配置包含MDIO模块。
(3)FIFO Options:FIFO存储器选项,可设置FIFO存储器类型以及存储器数据长度。
(4)PCS/SGMII Options:物理介质接入层模块配置页面,配置物理层,系统配置包含SGMII桥接口。
网络数据采集系统是基于Altera强大的SoPC Builder开发工具来完成系统设计。SoPC Builder是一个软件工具,它属于一种基于IP或平台的设计方法。平台包括Altera的Nios处理器、Avalon总线以及片内外存储器。利用SoPC Builder,用户可以很方便地将各种IP模块通过Avalon总线连接起来,形成一个完整的系统[7]。SoPC Builder已包含一些常用的外设IP模块,用户也可自定义外设IP。
Avalon总线标准规定了Avalon-MM(Memory Mapped)和Avalon-ST(Strming)两种接口。千兆以太网接口逻辑采用Avalon总线作为与其他模块的互联总线[8]。
为更好地实现数据链路和控制链路的分离,提高系统的执行效率,千兆以太网模块通过Avalon-ST接口和用户程序进行网络数据通信,以提升数据流传递过程中的效率。同时,系统自定义网络数据接收模块将千兆以太网解析的数据从Avalon-ST接口读出,并存入指定地址处暂存,等待用户程序处理。自定义网络数据发送模块将处理好的数据从RAM中读出千兆以太网的Avalon-ST接口。
系统自定义千兆以太网控制模块,通过MAC核的Avalon-MM接口实现对MAC核、PCS和物理芯片的控制。系统详细结构图如图5所示。
图5 网络数据包采集系统框图
千兆以太网采用Avalon-MM从端口作为控制接口,接口提供了8 bit地址信号线,32 bit的读写控制信号,同时还提供了一些状态信号。系统通过该控制接口,对MAC、PCS和外部物理器件进行寄存器初始化,实现对MAC、PCS和外部PHY的控制。
自定义Control模块是一个Avalon-MM主端口模块,通过Avalon-MM总线接入MAC控制接口。在Control模块内部定义了一个状态机,如图6所示,依次实现对千兆以太网各模块的控制。
图6 自定义control模块状态转换
Control模块首先初始化外部PHY(Marvell 88E1111)的寄存器,启动外部物理器件;然后,初始化PCS寄存器,实现PCS模块的帧同步;最后,对MAC寄存器初始化,设置其工作模式并启动MAC开始工作。
初始化PHY的寄存器是通过MDC/MDIO端口实现的,MDC/MDIO是一个二线的控制端口,MDC是控制时钟,MDIO是串行的输入输出数据。自定义Control模块通过MAC的控制端口,对PHY寄存器初始化。初始化信号通过MAC模块的翻译,最终通过MDC/MDIO端口送入到PHY寄存器中。
初始化PCS和MAC的寄存器都是直接通过Avalon-MM从端口映射实现的。
千兆以太网解析模块通过Avalon-ST接口和用户程序进行通信。Avalon-ST接口本质上已经不同于Avalon-MM接口,它是一种非总线形式的连接,给设备之间提供了总线之外的点对点专用连接,以提升数据流传递过程中的效率。
Avalon-ST提供的点到点数据传输不能直接将网络数据流按网络数据包为单位传输到固定位置。将各网络数据以包为单位送到RAM指定地址存储,更方便用户对网络数据进行统计处理。
因此,系统自定义网络数据接收模块将千兆以太网解析的数据从Avalon-ST接口读出,并存入指定地址处暂存,等待用户程序处理。自定义网络数据发送模块将处理好的数据从RAM中读出,并送入千兆以太网的Avalon-ST接口。
为了测试千兆以太网的性能,本文采用Stratix IV FPGA与PC机通信的方式对千兆以太网的通信速率进行测试。PC机的硬件平台为Intel奔腾3.0 GHz CPU,2 GB内存,Broadcom netxtreme gigabitethernet网卡,TCP/IP最大传输单元大小为1 500。测试方法为PC机向StratixIV发送4 GB的测试数据,经千兆位解析后,重新发送返回至PC机。测试系统结构图如图7所示。
图7 测试系统结构图
自定义接收模块将接收的数据重新由发送模块发送回PC机。数据传输率最高达1 000 Mb/s。
本文以Altera StratixGX系列FPGA为平台,结合Marvell 88E1111网络芯片,实现了千兆网络数据采集系统。设计过程中采用SoPC技术,利用Altera提供的千兆以太网IP核,完成FPGA系统无缝连接千兆以太网,实现网络数据采集。测试表明,该系统能有效、高速地满足网络管理系统的要求。
[1]王宏,龚正虎.Hits和Holds:识别大象流的两种算法[J].软件学报,2010(6):1392-1402.
[2]李璇,敖光良.基于 FPGA的千兆以太网设计[J].网络安全技术与应用,2008(5):63-64.
[3]Marvell.88E1111 Data Sheet Integrated 10/100/1000 Ultra Gigabit Ethernet Transceiver[Z].2004-11
[4]IEEE802.3.Part3:Carrier sense multiple access with collision detection(CSMA/CD)acess method and physicallayer specification[S],2005.
[5]柳利军,熊良芳.基于FPGA的千兆以太网交换芯片的设计[J].微电子学与计算机,2006,23(3):80-82.
[6]Altera Corportion.Triple speed ethernet megacore function user guide[Z].2008.
[7]徐欣,于红旗.基于FPGA嵌入式系统设计[M].北京:机械工业出版社,2005.
[8]李兰英.Nios II嵌入式软核-SOPC设计原理及应用[M].北京:航天航空出版社,2006.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!