摘要:介绍了一种运用以太网专用芯片在Linux操作体系下构建依据PCI总线的通用网络协议试验渠道。通过修正该渠道的软件部分,能够在试验渠道上运转私有网络协议,测验协议功用,然后避免了针对每一种私有网络协议树立专门的试验渠道,节省了本钱,缩短了开发时刻。
关键词:PCI设备 Linux 通用网络试验设备
在网络技能快速开展的今日,依据用户特别的需求,有时需求研制特别的私有网络协议,以使网络的功用得到优化。研讨新的网络协议,有必要进行仿真以验证功用,可是网络结构杂乱,功用指标多样,而且不同的协议需求的具体测验环境不同,因而很难用纯软件的办法(如NS2、OPNET)给出网络协议运转功用的有用描绘。另一方面,假如针对每一种网络协议树立专门的测验渠道,则需求很多的人力、经费和时刻。而选用中硬件相结合的办法树立一种通用网络协议试验渠道,既能很好地测验出整个设备的功用,又能大幅度节省开发本钱,缩短开发时刻,是一种切实可行的办法。
为此,本文提出一种通用网络协议试验渠道的软硬件规划方案,并具体介绍该渠道的中硬件规划办法。
1 体系规划的思维
该网络试验渠道规划的意图是:针对不同的私有网络协议,开发者能够依据协议规范有针对性地修正网络层和传输层的程序代码,然后通过本体系测验其协议的功用。所以,该体系应该是一个与协议无关且可程控的数据传输通道。数据包通过体系传输后,更多的作业由传输层、网络层和上层应用程序完结。该体系的全体框架结构如图1所示。
为了确保试验渠道的通用性可操作性,选用PC机和与PCI总线接口的网络设备卡(以下简称PCI接口卡)组成该渠道。
近年来,Linux操作体系取得了日新月异的开展,它强壮的功用、杰出的界面、高效率以及全敞开的特性使其具有很强的吸引力。依据以上考虑,在PC机中选用Linux操作体系。按Linux操作体系的规划规范,私有网络协议软件需求包含传输层代码、网络层代码以及与设备相关的驱动程序,并运转在体系“中心态”中。在本试验渠道中,不需求用户关怀驱动程序的规划,但答应将网络层和传输层代码运转在Linux“用户态”中。
PCI接口卡是依据PCI总线的,它通过合理挑选接口芯片屏蔽PCI总线协议的剩余功用,并运用FPGA芯片把上层传输过来的数据包进行相应的处理(详见第2节),然后传递到物理层设备。
2 试验渠道的硬件规划
2.1 PCI接口卡结构
P%&&&&&%接口卡由PCI总线接口芯片、数据处理模块FPGA、数据缓存模块RAM和有线传输驱动模块LVDS(Low Voltage Differential Signaling Driver)等四部分组成,模块间的数据传输如图2所示。
2.2 芯片的挑选
Winbond公司以太网操控芯片W89C840AF支撑高达100Mbps的双向数据传输,该芯片不光具有杰出的PCI总线接口规划,而且还有一整套的网络数据传输机制,技能老练。所以在此选用W89C840AF,并借用该芯片的网络数据传输机制,通过对芯片合理装备,完结一条从驱动程序到物理层设备的通明数据传输通道,来满意设备要求。
FPGA芯片只需能够供给足够多的I/O口和内部硬件资源即可。RAM是为了满意不同网络协议以及算法对存储器的需求而设置的,关于不同的私有网络协议,依据实际需求选用恰当容量的RAM即可,没有很荷刻的要求。本体系中FPGA芯片选用ACEX1K50TC144,RAM芯片选用CY7C006AC_PLCC,首要考虑的是芯片的速率高、运用简略而且价格低廉。
有线传输信号驱动模块选用LVDS芯片对(ds90c401,ds90c402),该芯片对的长处是速率高(155Mbps串行数据传输)、传输间隔远、灵敏度高、功耗小。
2.3 PCI接口卡的功用
PCI总线接口芯片(W89C840AF)把从PCI总线上传输过来的数据封装成“以太帧”的格局,传递给FPGA(RAM能够对传输的数据进行缓冲),FPGA去掉前8byte的“以太帧头”然后取得数据包。然后依据不同网络协议的数据包格局,在FPGA中灵敏地设备相应的逻辑功用。如作者现在在研的卫星ATM网络试验体系,界说了一种私有的ATM协议,数据处理单元将完结以下使命:辨认信元头,按优先级对信元进行排队、存储、打包并转发等。
FPGA要完结以上功用,其内部模块需包含以下几个模块:“数据接口”、“操控接口”、“指令履行单元”、“试验网物理层拜访操控单元”和“信道模仿单元”,如图3所示。
FPGA把打包后的串行数据传向LVDS,信号通过LVDS驱动后传到接纳方。
在接纳方,数据的处理与此相反,不再多述。
2.4 W89C840AF与FPGA之间的接口规划
在PCI接口卡电路板中,芯片之间的接口规划有三部分:FPGA与W89C840AF之间的接口;FPGA与RAM之间的接口;FPGA与LVDS之间的接口。后边两个接口比较简略,所以下面首要介绍FPGA与W89C840AF之间的接口规划。
W89C840AF与FPGA之间的数据接口如图4所示。MTXCLK和MRXCLK分别是发送数据和接纳数据的参阅时钟,有必要设置为25MHz。MTXEN和MRXDV的数据帧传输的指示信号,TMXD[3:0]和MRXD[3:0]为4bit宽的数据传输接口。
W89C840AF芯片与FPGA之间除了传输数据外,还需求交流操控信息。因为W89C840AF芯片I/O接口有限,能够供温暖W89C840AF芯片的EECK、EEDI、EEDO三条操控线与FPGA交流操控信息。这儿构建一个相似I2C串行总线协议的操控总线,其结构和作业时序如图5所示。
3 试验渠道的软件规划
为了完结从处于“用户态”的应用程序到处于“中心态”的驱动程序间的双向数据传输通道,依照Linux操作体系的网络相关代码的区分规矩,试验网络结构中用户层以下的代码需求嵌入到Linux操作体系的中心代码树中,通过对内核的从头编译,运转在Linux操作体系的“中心态”,这样做比较杂乱。鉴于以上原因,在本规划中选用了以下处理办法:考虑到“用户态”内部一切软件模块的通讯比较简略,通过调用UDP/IP协议的socket,在基层运用UDP/IP数据包拆解/封装程序,构造出一个如图6所示的数据传输通道。在这儿,把“通明通道”界说为“过渡层”。
运用UDP/IP协议会涉及到Linux操作体系处理IP协议的相关内容,特别需求留意以下三个方面:(1)去掉体系中一切其它网络硬件设备,封闭一切Linux操作体系的网络服务,封闭Linux操作体系防火墙;(2)设备本设备的IP地址为192.168.0.1(试验专用IP地址),绑定试验网络设备为192.168.0.X子网网关,更改“/etc/network”文件设置为“能够转发IP包”;(3)调用一个IP Socket发送数据,在特定端口上监听数据包的抵达。
3.1 “过渡层”的规划
关于上层传递过来的数据,“过渡层”要完结的使命是:去掉数据包前面的以太网帧头、IP数据包头、UDP数据包头,然后复原出原始数据包,然后传递给驱动部分。反之,基层传递过来的数据包通过相反的数据处理后向上层传递。
3.2 驱动程序的规划
因为W89C840AF是以太网操控芯片,因而能够把PCI接口卡看作网络设备。关于网络设备,Linux操作体系中有一套规范的驱动程序规划办法,所以在这儿仅介绍驱动程序规划中的几个值得留意的事项。首要有:(1)PCI设备的勘探和注册函数;(2)W89C840AF芯片的装备;(3)网络设备根本功用函数组。
PCI设备勘探和注册函数能够树立网络设备目标,一起注册网络设备根本功用函数组,并参阅W89C840AF芯片数据传输数据的阐明赋予设备履行“DMA”才能。
关于W89C840AF芯片的装备,首要是C18/CNCR寄存器的装备。除了翻开“传输答应”、“接纳答应”、“全双工形式”和“100Mbps传输速率形式”等选项外,还要翻开“Accept Error Packet”、“Accept Runt Packet”、“Accept Broadcast Packet”、“Accept Multicast Packet”和“Accept All Physical Packet”等选项,然后屏蔽一切与以太网协议相关的功用。
网络设备根本功用函数组的中心是“发送”、“接纳”和“中止呼应”这三个根本函数。“发送函数”将发送的数据存入W89C840AF芯片的内存空间,然后写C04/CTSD寄存器,恳求芯片发送数据。W89C840AF芯片将接纳到的数据包传递到体系内存后就会触发中止,中止处理函数呼应中止并调用接纳函数,将数据包和相应的参数向体系的上层传递。