采用PCI总线的通用网络协议实验平台_王良跑的空间_百度空间

采用PCI总线的通用网络协议实验平台
摘要:介绍了数据库查询速度缓慢的常规解决方法及其主要缺点,提出利用Oracle分区功能解决问题,并结合油田开发数据库现状,详细描述了分区的具体实现方法。结合使用情况,总结实施效果,对大数据量表的维护和优化有一定的参考价值。



摘要:介绍了一种利用以太网专用芯片在Linux操作系统下构建基于PCI总线的通用网络协议实验平台。通过修改该平台的软件部分,可以在实验平台上运行私有网络协议,测试协议性能,从而避免了针对每一种私有网络协议搭建专门的实验平台,节约了成本,缩短了开发时间。

在网络技术快速发展的今天,根据用户特殊的需求,有时需要研发特殊的私有网络协议,以使网络的性能得到优化。研究新的网络协议,必须进行仿真以验证性能,但是网络结构复杂,性能指标多样,并且不同的协议需要的具体测试环境不同,因此很难用纯软件的方式(如NS2、OPNET)给出网络协议运行性能的有效描述。另一方面,如果针对每一种网络协议搭建专门的测试平台,则需要大量的人力、经费和时间。而采用中硬件相结合的方法搭建一种通用网络协议实验平台,既能很好地测试出整个设备的性能,又能大幅度节约开发成本,缩短开发时间,是一种切实可行的方法。

为此,本文提出一种通用网络协议实验平台的软硬件设计方案,并详细介绍该平台的中硬件设计方法。
\
1 系统设计的思想

近年来,Linux操作系统获得了突飞猛进的发展,它强大的功能、良好的界面、高效率以及全开放的特性使其具有很强的吸引力。基于以上考虑,在PC机中采用Linux操作系统。按Linux操作系统的设计标准,私有网络协议软件需要包含传输层代码、网络层代码以及与设备相关的驱动程序,并运行在系统“核心态”中。在本实验平台中,不需要用户关心驱动程序的设计,但允许将网络层和传输层代码运行在Linux“用户态”中。
\
    PCI接口卡是基于PCI总线的,它通过合理选择接口芯片屏蔽PCI总线协议的多余功能,并使用FPGA芯片把上层传输过来的数据包进行相应的处理(详见第2节),然后传递到物理层设备。

Winbond公司以太网控制芯片W89C840AF支持高达100Mbps的双向数据传输,该芯片不但具有良好的PCI总线接口设计,而且还有一整套的网络数据传输机制,技术成熟。所以在此选用W89C840AF,并借用该芯片的网络数据传输机制,通过对芯片合理配置,实现一条从驱动程序到物理层设备的透明数据传输通道,来满足设备要求。
\
    FPGA芯片只要能够提供足够多的I/O口和内部硬件资源即可。RAM是为了满足不同网络协议以及算法对存储器的需要而设置的,对于不同的私有网络协议,根据实际需要选用适当容量的RAM即可,没有很荷刻的要求。本系统中FPGA芯片选用ACEX1K50TC144,RAM芯片选用CY7C006AC_PLCC,主要考虑的是芯片的速率高、使用简单并且价格低廉。

PCI总线接口芯片(W89C840AF)把从PCI总线上传输过来的数据封装成“以太帧”的格式,传递给FPGA(RAM可以对传输的数据进行缓冲),FPGA去掉前8byte的“以太帧头”从而获得数据包。然后根据不同网络协议的数据包格式,在FPGA中灵活地设备相应的逻辑功能。如作者目前在研的卫星ATM网络实验系统,定义了一种私有的ATM协议,数据处理单元将完成以下任务:识别信元头,按优先级对信元进行排队、存储、打包并转发等。

在接收方,数据的处理与此相反,不再多述。
\
    2.4 W89C840AF与FPGA之间的接口设计

为了实现从处于“用户态”的应用程序到处于“核心态”的驱动程序间的双向数据传输通道,按照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发送数据,在特定端口上监听数据包的到达。

由于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芯片将接收到的数据包传递到系统内存后就会触发中断,中断处理函数响应中断并调用接收函数,将数据包和相应的参数向系统的上层传递



郑重声明:资讯 【采用PCI总线的通用网络协议实验平台_王良跑的空间_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——