10G网络处理器驱动软件的设计与实现
2008-09-08
作者:李希鹏1,2,刘乃安1,宋国栋2
摘 要:在对10G" title="10G">10G城域网技术研究的基础上,提出了10G网络处理器" title="网络处理器">网络处理器的驱动程序设计中的一些思路并对此展开一定的分析和研究。
关键词:10G以太网 网络处理器 驱动 应用程序接口 中断服务程序
网络技术的高速发展使下一代网络技术不断迎接新的挑战。网络处理核心从传统的基于GPP(General Purpose Processor)的设计到基于ASIC(Application Specific Integrated Circuit)的设计再到基于网络处理器NP(Network Processor)的设计,不断向着高性能和高灵活性的方向发展。随着城域网技术的发展,近年来许多厂家推出了10G的以太网设备。10G网络处理器是实现10G以太网交换技术的关键点,10G网络处理器的开发成为目前城域网建设中的一个重要环节。
本文介绍了10G的网络处理器及其驱动程序,并对驱动程序的开发方法进行了研究和探讨。
1 网络处理器和驱动程序
网络处理器是一种可编程器件,它特定地应用于通信领域的多种任务,例如数据包处理、协议分析、路由查找、数据的汇聚、防火墙、QoS等。网络处理器具有多协议支持、优化的体系结构、专用的硬件设计和高速的数据转发处理、高性能、高可靠性、丰富的流分类、拥塞管理、队列调度、灵活的软件开发和升级、灵活扩展和组合等特点。
网络处理器器件内部由若干个微码处理器和若干硬件协议处理器组成,多个微码处理器在网络处理器内部并行处理,通过预先编制的微码来控制处理数据包的操作。而对于一些复杂的标准操作(如内存操作、路由表" title="路由表">路由表查找算法、QoS的拥塞控制算法、流量调度算法等)则采用硬件协议处理器进一步提高处理性能,从而实现业务的高灵活性与高性能的有机结合。
目前的网络处理器系列有:面向网络接入终端的设备;支持企业、电信市场接入和边缘应用的设备(支持2.5Gbps数据传输率);支持网络核心应用的设备(支持10Gbps数据传输率)等。
网络处理器的驱动程序在系统中位于底层BSP(Board Support Packet)和上层软件之间,如图1所示。驱动程序是建立起上下层软件之间通信的一个桥梁,为上下层软件提供相应的接口,能够把上层的命令解释为底层软硬件可以识别的代码写入芯片的寄存器中,包括两个功能模块:底层驱动模块" title="驱动模块">驱动模块和业务驱动模块。底层驱动模块提供NP芯片初始化、配置、装载微码、建立维护NP查找结构、中断处理、NP内部表项维护、 NP实时检测等功能;业务驱动模块为上层应用提供数据包发送和接收、路由表操作、ARP表操作、VLAN操作、端口表操作、MAC表操作等功能。
2 驱动程序开发方法研究
网络处理器的芯片厂家需要提供相应的驱动开发软件包,开发包中主要包括封装了特定代码的库文件和说明文档,这些库文件在系统编译时进行链接。开发人员通过调用驱动开发包中的API(Application Programming Interface)来完成对芯片的一系列操作。
2.1 芯片的初始化
包括正确地初始化网络处理器芯片,使芯片能正常工作。网络处理器芯片作为PCI设备挂在CPU的PCI总线上,它通过PCI总线识别,系统为其分配相应的PCI地址和中断号。CPU通过网络处理器的PCI地址对NP内部的寄存器进行访问。
NP初始化步骤:
(1)调用识别函数识别NP:如果与厂商号相符,则说明NP已经被识别。
(2)配置NP的PCI设备:为 NP分配内存地址;为 NP配置中断号。
(3)注册PCI中断处理程序" title="中断处理程序">中断处理程序:安装芯片的中断处理程序;将NP的PCI中断处理程序与中断号关联。通常该中断处理程序内部会调用一个全局的函数指针,开发者可以对其赋值,使能NP的PCI中断。
(4)中断事件处理方式:通常网络处理器或交换芯片都定义有多种中断事件,这些中断事件由中断事件状态寄存器和中断屏蔽寄存器进行控制。NP会定义若干种中断事件,每种中断用一个二进制位表示,该二进制位的取值决定中断事件的中断状态(如:1表示有中断,0表示无中断)。中断屏蔽寄存器则决定是否对中断进行处理。
(5)NP的中断事件类型:
数据帧中断:当NP需要向CPU发数据包时,就产生此中断,以通知主控系统有相关的数据帧和该数据帧的指针需要处理;
查找中断:当NP的硬件表进行更新时,会产生此中断。例如,NP的MAC地址学习机制和地址老化机制更新MAC表后,会将更新结果通过消息的形式上报给主控系统;
统计中断:当NP的统计队列有消息时,产生此中断,通知主控系统某个统计计数器已经到达阈值。
(6)中断处理流程如图2所示。当主机接收到一个NP发生的PCI中断时,NP的PCI ISR被触发,PCI ISR确定哪一个NP发生中断,将该NP编号通过消息的方式传给驱动任务,驱动任务从中断消息中获得NP的ID号、中断屏蔽寄存器的值和中断事件寄存器的值,对中断屏蔽寄存器和中断事件寄存器的值进行位操作,对操作结果进行判断,进而确定是否调用该中断事件的中断处理程序。
(7)初始化芯片上的数据通道:复位芯片上的寄存器并赋给默认值;指定硬件搜索引擎个数;设定统计计数器的门限值;设置外部存储器值;启动通道进入接收中断状态。
(8)加载硬件表结构和微码:硬件表结构包括二层表、三层表、路由表、三层接口表、VLAN表等;表结构在微码中定义;微码中定义了数据包收发的方式和相应的操作方法。
2.2 数据包处理
在中断处理的基础上进行数据包的接收,如图3所示。CPU通过中断方式接收来自网络处理器的数据包。
(1)CPU接收来自网络处理器数据包中断后,会在驱动任务中调用响应的数据包的ISR,在该ISR中将数据包发给上层协议。
(2)按协议标准对数据包格式或内容进行修改和转换。
(3)通过驱动API提供的函数发送数据包。
2.3 硬件表操作
硬件表是NP中由微码定义的表查找结构,由NP完成MAC地址查找、VALN表添加、路由表搜索等各种表条目的添加和删除等操作。
(1)由微码定义和创建硬件表的种类、长度、编号等信息。
(2)由驱动在芯片初始化过程中加载硬件表结构并启动微码。
(3)驱动程序中要为上层协议提供硬件表添加、删除、修改、显示等接口。
随着10G以太网技术的发展,已经有越来越多的厂家推出了自己的NP产品。高速网络处理器已经成为当前以太网研究中的一个重点,同时需要对芯片的驱动程序深入开发。本文对10G网络处理器的驱动程序设计进行了分析和研究,提出了驱动软件开发中的一些思路。由于目前与10G以太网技术相关标准和技术的成熟和完善还需要一定的时间;各厂家使用不同的软硬件开发环境;存在不同的嵌入式操作系统;以及一些厂家使用专用的代码开发和调试工具等因素,使NP及其驱动程序的发展还需要进一步地提高。今后的主要工作包括:提高不同厂家的设备之间互通性和兼容性;加强NP软件代码的规范性和可移植性;完善NP驱动软件的开发方法。
10G网络处理器作为下一代网络的关键,以其多方面的优势,可以较好地满足未来高速网络技术发展的需求,具有非常广泛的发展空间。
参考文献
1 IEEE 802.3ae-2002. IEEE Standard for Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications-Media Access Control (MAC) Parameters. Physical Layer and Management Parameters for 10 Gb/s Operation
2 IEEE 802.3-2002 Edition. IEEE Standard for Information technology--Telecommunications and information exchange between systems--Local and metropolitan area networks--Specific requirements--Part 3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications
3 IEEE 802.3-2002 Edition. IEEE Standard for Information technology--Telecommunications and information exchange between systems--Local and metropolitan area networks--Specific requirements--Part 3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications. By EZchip Technologies Ltd., 2003.
4 陈一帅,赵永祥.网络处理器及应用.网络世界, 2000;7