基于PM3388和FPGA的网络接口设计
本文根据十接口千兆以太网线路接口卡设计的功能需求和性能需求,按照数据处理流程划分功能模块,以PM3388作为链路层处理芯片和两片高性能FPGA作为链路层处理芯片完成了系统设计,并给出了具体实现方案。对两片FPGA控制功能的实现做了重点阐述,对实现难点做了深入的分析。
本文引用地址://m.amcfsurvey.com/article/79444.htm1 前言
随着网络规模的持续膨胀和新型网络应用需求的不断增长,目前基于IPv4技术的因特网在可扩展性、IP地址空间、安全、服务质量控制、移动性、运营管理和盈利模式等诸多方面面临着挑战,尤其是地址空间匮乏、可扩展性差等缺陷严重制约了因特网的发展,需要探索新的技术来解决这些问题。IPv6通过采用128位的地址空间替代IPv4的32位地址空间来扩充因特网的地址容量,使得IP地址在可以预见的时期内不再成为限制网络规模的一个因素,同时在安全性、服务质量及移动性等方面有了较大的改进,使其成为构建下一代互联网络的最佳选择。
以太网是当前最基本、最流行的局域网组网技术,为了适应各种新开展的业务如流视频等,其速率也在不断提高。千兆以太网是建立在以太网标准基础之上的技术,具有高效、高速、高性能的特点,目前的企业局域网甚至城域网建设都会把千兆以太网技术作为首选的高速网络技术。为了使支持多协议的高性能路由器既能连接到骨干、核心路由器,又能连接到本地主机,需要为路由器设计能够与千兆以太网连接的接口。当前国内各公司推出的路由器和交换机等产品都提供千兆以太网线路接口卡,但端口密度都不高,大多数是单端口或双端口,少数能够提供四端口或八端口。为了适应T比特路上数据传输的需求,本文设计完成高密度的十接口千兆以太网线路接口卡。
2 网络接口功能分析
千兆以太网原先是作为一种交换技术设计的,采用光纤作为上行链路,用于楼宇之间的连接,之后在服务器的连接和骨干网中,千兆以太网获得了广泛应用。目前,千兆以太网已经发展成为主流网络技术,大型企业和中小型企业在建设企业局域网时都把千兆以太网技术作为首选的高速网络技术。千兆以太网技术甚至正在取代ATM技术,逐渐应用到了城域网建设中。
基于千兆以太网的发展现状和良好的应用前景,当前国内外研制各种核心路由器和高性能交换机的公司不再满足于能够提供低密度(单接口、双接口等)千兆以太网线路接口卡模块,纷纷推出或开始研制高密度(四接口、八接口等)的线路接口卡模块,高密度千兆以太网线路接口卡的研究正在成为一个热点。但各公司出于技术保密的考虑,公开的高密度千兆线路接口卡的文献资料很少。经分析,十接口千兆以太网线路接口卡的设计主要存在以下三个难点:
1).多种数据包的分类处理:本文研究的十接口千兆线路接口卡兼容IPv4、IPv6双协议栈,需要实现三种二层协议封装格式的拆封与封装处理、两种三层协议的查表处理和一种MPLS协议的处理,在高速环境下实现多种协议的正确处理是一个难点;
2).帧重组合路加速功能的实现:需要实现以太网帧的重组、十接口数据合路调度与加速三种功能,这是千兆线路接口卡满足线速处理功能的关键;
3). 十接口数据合路调度功能的实现:需要研究一种具有良好扩展性和时延性能的调度算法,实现高速环境下十接口数据合路调度的功能。
从功能角度来看, 以太网线路接口主要完成输入处理、输出处理和系统维护管理等三种功能。如图1所示。输入处理:从千兆以太网上接收编码数据流,解码恢复成为以太网帧,再经过地址过滤、完整性校验、差错控制、IP地址查表、MAC帧拆封、内部数据格式封装等处理后送给转发处理子系统或板级处理机处理(协议包)。输出处理:从端口调度模块或板级处理机模块接收数据包或协议包,经过MAC帧封装,经过数据编码等处理后从正确的接口发送到千兆以太网上。系统维护管理:主要是接受板级处理机的控制命令,对输入分类表项、ARP表项和邻居发现表项进行维护,定时或按照板级处理机的命令将线路接口卡的性能统计信息向板级处理机报告。
![](http://m.amcfsurvey.com/editerupload/200804/85eedcd70b0ccbc6164fb8bbede3217d.jpg)
图1 千兆以太网线路接口卡功能示意图
3 硬件设计与实现
经过对十接口千兆以太网线路接口卡功能和性能需求进行认真分析,按照功能清晰、接口简单、实现容易的原则,设计了其实现方案,并按照设计方案对千兆以太网线路接口卡进行了子模块划分,共分为光电转换子模块、MAC层处理子模块、输入处理子模块、输出处理子模块、输入IP地址表子模块、输出IP地址表子模块和协议报文缓存子模块等七个子模块。千兆线路接口卡各子模块和外部接口关系如图2所示。
![](http://m.amcfsurvey.com/editerupload/200804/674e01e9f01795752b681fbaa4b61c1f.jpg)
图 2 十接口千兆以太网线路接口卡模块结构图
其中MAC层处理子模块是千兆线路接口卡设计的核心,选用PMC-Sierra公司的PM3388芯片为MAC层处理芯片, PM3388芯片是目前市场上唯一支持十接口的千兆以太网控制器,其功能特性如下:
十路千兆以太网控制器(同时完成PHY层和MAC层功能);
通过内部十个SERDES接口直接与光电转换模块相连。每个SERDES接口兼容IEEE 802.3-2000 PMA(PhysICal Medium Attachment)物理层规范;
从网络上接收8B/10B格式码流,完成数据及时钟恢复;
每个接口提供多播地址过滤及8个单播地址过滤;
提供标准的IEEE 802.3 以太网帧格式完整性检验,并具有过滤功能;
内部提供224K字节接收FIFO和64K发送FIFO,可在十路接口上灵活配置;
提供SATURN标准的PL4(POS-PHY Level 4)标准16位LVDS总线接口,速率可达700Mbps;
提供标准IEEE 1149.1 JTAG测试端口;
提供微处理器接口;
提供线路侧环回和系统侧环回的系统级调试功能;
提供丰富的配置及统计寄存器。
PM3388工作流程包括接收处理和发送处理两部分。1.接收通路:PM3388从光电转换子模块接收串行差分电信号,经过串/并转换、8B/10B解码后,进行以太网帧完整性检验和地址过滤,
如果该以太网帧无误,则写入为该接口分配的PL4模块中的FIFO,否则丢弃。为了充分利用带宽,PL4接口把MAC帧划分为数据片(以64字节或MAC帧尾之前数据为一片)调度输出,并采用带内控制字的形式指示帧头、数据、帧尾、线路接口号、填充字节数、空闲控制字等信息。接收通道还通过两位的信号指示接收设备的缓存状态(空、满、半满)。2.发送通路:发送通道的PL4接口与接收通道的工作模式相同,数据从PL4接口进入PM3388后,经过8B/10B编码,并/串变换等处理步骤,以串行差分信号的形式输出到光电转换子模块。
为了保证PL4接口达到十路1Gbps的速率,PM3388的参考时钟引脚接160MHz时钟晶振,输入输出接口的采样时钟通过将该时钟倍频获得320MHz时钟,输入输出数据分别在时钟双沿采样,可以获得640Mbps的数据数率,总带宽达10.24Gbps,可以满足0丢包率性能对带宽的要求。
此外,输入处理FPGA是千兆以太网线路接口卡模块设计的重点之一,主要的功能是将各种标准的MAC帧数据格式转换为网络层统一的数据格式,为网络层处理屏蔽掉底层物理接口。
输入处理FPGA采用Altera公司Stratix GX系列的EP1SGX25F芯片,该芯片具有25660个逻辑单元,16个高速收发器通道,39个源同步IO和总数为1944576比特的RAM,可以满足实现输出处理功能对资源的要求。
输入处理子模块主要完成输入处理和配置统计两大功能:第一、接收MAC层处理子模块发送过来的数据片,完成MAC帧重组和十路数据合路处理,再根据MAC帧封装的三层协议类型实现数据包的分类处理,按照不同的处理要求把数据包分别送B接口、F接口或者同时送两个接口。送往B口的数据包经过MAC帧格式拆封和B口格式封装后输出到转发模块,送往F口的数据经过数据宽度和时钟频率的变换后输出到协议FIFO。第二、线路接口卡上电初始化时,输入FPGA通过板级处理机获取本线路接口卡所在的机架号和端口号等信息,并把这些信息插入到送往转发处理模块的数据包的B口格式字中。输入处理FPGA还要实现大量的统计功能,统计项包括每个接口接收到的总帧数、错误帧数、丢弃帧数、IPv4单组播包数、IPv6单组播包数、MPLS单播包数、送往B口包数和送往协议FIFO包数等,并根据命令把统计信息送往板级处理机。
4 系统调试
FPGA的调试包括输入FPGA和输出FPGA两部分,主要检查FPGA的焊接、时钟和程序下载等是否正确,调试方法是用VHDL编写一个计数器的程序,用JTAG下载到FPGA中,利用SignalTap软件和指示灯测试FPGA是否工作正常。实现系统输入输出处理功能的大规模VHDL程序的调试放在整个线路接口卡的调试中进行。
PM3388芯片是千兆线路接口卡完成MAC层控制功能的芯片,其调试是整个千兆线路接口卡调试的重点。PM3388芯片的调试需要板级处理机软件、板级处理机、输入输出FPGA和网络测试仪配合,调试内容依次为寄存器配置、PL4系统侧环回、SERDES系统侧环回、SERDES线路侧环回、PL4线路侧环回。
PM3388芯片寄存器配置的调试过程为:首先往一个可读写寄存器(选择地址为0x6的寄存器)中写入一个数,再读出来比较是否正确,如果不正确,通过SignalTap软件分别抓输出FPGA与PM3388芯片的微处理机接口的读写控制信号,确定错误是发生在写操作还是读操作上,排除错误。单个寄存器的配置调试通过后,再进行多个寄存器的连续配置,调试方法是配置PM3388进入不同工作模式,通过检查状态寄存器的值判断是否配置成功,如果不成功,检查相邻寄存器的配置是否发生了干扰,通过SIGNALTAP软件查看逻辑和时序问题,再加以解决。
而PL4系统侧环回主要是为了验证输出FPGA与PM3388的输入PL4接口、输入FPGA与PM3388的输出PL4接口是否正常,调试方法是使用板级处理机向输出处理FPGA发送协议包,输出处理FPGA再把该数据包发送到PM3388的PL4接口的接收侧,接收侧把该数据包环回到PL4接口的发送侧,从发送侧发送到输入处理FPGA,最后该数据包被板级处理机读回来进行比较。调试中发生的错误可以通过PM3388内部的统计寄存器和SIGNALTAP软件进行定位,再采取相应的措施排除错误;
5 总结
本文的创新点在于采用合理的设计方案和调试方案,完成了十接口千兆线路接口卡的设计与实现,研制的千兆线路接口卡完全满足了T比特路由器项目对十接口千兆线路接口卡设计的功能与性能要求。采用FPGA设计并实现了十接口千兆以太网线路接口卡设计与实现中的帧重组与加速功能,能够提供更高的带宽,具有更好的加速性能。
评论