运行在网络处理器上的嵌入式Linux系统
摘要:网络处理器已经可能的未来的多核处理器会将越来越多的应用在从家庭,企业到核心网络设备中,LinuxOS正在替代传统的RTOS运行在这些处理器的控制平面,定义和处理好数据平面和控制平面的接口,丰富的开源和商业应用软件和电信级别的高可能性要求是目前需要解决的重要问题。
关键字:网络处理器,嵌入式Linux,多核处理器
引言:
在最近的24个月中,由于供应商组织面临经济状况不景气,加上IntelIXP和IBMPowerNP,Raza,Cavium,Xilinx等公司的网络处理器(多核处理器)的出现,使得Linux在基于这些处理器设备的控制和管理层面上有了更多的用武之地。
控制层面包括逻辑和物理接口,它们本身并不传输网络数据,而是启动,监视和控制芯片的传输数据活动。在现有的网络处理器设计当中,像Linux这样的嵌入式操作系统通常运行在控制层面的处理器上,代表包引擎进行控制操作和事务性处理,实际的网际协议包(IP包)由专门的芯片进行处理。控制层面的处理器和数据/转发层面的包处理引擎之间的连接,可以通过连接协处理器的本地总线方式,或者直接使用标准的PCI总线,也可以采用以太网或者特殊应用的网络结构那样的连接方式。
在本地总线或者PCI总线的情况下,主控处理器将可将转发/数据层面的处理器视为专用外设,它具有简单内存映射接口。在采用网络方式来连接各层面的情况下,主控处理器必须使用分离的设备驱动设计。首先,结构接口需要一个通用的驱动(以太,异步传输等),通过它发送专门的命令包来控制包处理器。嵌入式Linux具有丰富的网络功能(以太网和ATM在开源社区都很容易获得),与非开源操作系统相比具有显著的优点:无须定制,有现成的内核。这些对于开发专门的网络系统,即使是以太网驱动都是重要的附加投资。
现成的网络处理器一直努力地将高性能网络紧密地与主控处理器捆绑,并与本地连接集成到一起。第一代设计在控制节点和数据层仍然遇到了带宽限制的难题-数据包在进出控制层时遇到瓶颈,在网络处理器内部的并行包引擎也有同样的问题。此外,实践证明在功能强大的网络处理器和复杂的包引擎集上编程非常困难。网络处理器开发商在他们的芯片开发计划上标明了解决这些问题和推出新一代的库和工具箱的时间表。
运行Linux的网络处理器应用
主要的设备制造商将Linux和网络处理器一起发布,同时不断增加应用的数量,特别是网络基础件和客户端设备。
Linux在网络处理器平台上的一个重要应用领域是小型办公,家庭办公(SOHO)设计,比如接入点,家庭网关和数字媒体服务。这些消费电子领域的设备通常要求高性能和低成本。
许多这样的设计包括先前遗留下来的实时操作系统平台。人们对嵌入式Linux能否满足这些实时性能有些疑问。很多控制层面的应用,更多地关注吞吐量,而并没有硬实时的需求(抛开先前的实时操作选择)。较新的,基于网络处理器的设计很少对控制处理器有及时响应的需求,网络处理器包含专门的芯片来完成要求及时响应的操作。当控制层面必须满足严格临界时间要求时,比如在消费电子应用中所使用的路由和桥接到特定的同步接口的技术,在Linux中有多种途径来达到实时响应的要求,其中包括现在Linux2。6内核里所使用的MontaVista软件公司的可抢占技术。
在较大型系统,比如更复杂的基于IP的系统,包括办公中心和涉及IP技术的基础设备应用系统,高速接入和交换,网络处理器都采用了有两层或者更多层控制来进行刀片式设计,并在其上来进行硬件和软件的管理。大约60%的这种系统要求在数据和控制层面有高级别的冗余。在这种系统中,基于网络处理器的刀片和基于Linux的控制器被当成低层的,几乎是‘原子’性的接口,这些接口从属于故障恢复(fail-over),它们堆叠在一起来获得高可用性和容错管理。
这些较高层次的管理层面处理器越来越多地在运行Linux,比如开放源码开发实验室公司(OSDL,Beaverton,Ore。)、MontaVista软件公司、英特公司(SantaClara,Calif。)等定义和实现的电信级Linux。这些管理层面的CPU管理可用的资源(比如启动刀片和给他们分配负载)、响应硬件和软件异常,提供应用桥接到专门的系统(常常运行Linux)-比如帐单系统和客户数据库。
网络处理器开发的技术挑战和对策
对于多核微处理器来说,网络处理器面临着多种开发和调试的挑战。这些挑战包括以下三个层次:
·开发和部署运行在网络处理器上的代码和包处理算法;
·定义网络处理器和控制处理器之间的接口;
·开发控制层面的应用
对于运行嵌入式Linux的控制层面处理
网络处理器,嵌入式Linux,多核处理器 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)