论文部分内容阅读
网络处理器是一种可编程处理器,用于高效的处理网络中的数据流。网络处理器具有广泛的用途,基于网络处理器的路由器同使用通用处理器的路由器和使用专用集成电路的路由器相比,既具有快速的特点又具有灵活性的特点。 IXP系列网络处理器是Intel公司的产品。IXP1200网络处理器是IXP系列的第一代网络处理器产品。IXP1200芯片主要由一个Strongarm处理器、六个微引擎、SRAM单元、SDRAM单元、PCI总线接口单元、IX总线接口单元组成。每个微引擎各有四个硬件线程,并且线程之间以轮转方式实行非抢占式的硬件线程仲裁交换。利用各硬件线程之间的并行性,IXP1200芯片隐藏了存储器操作所带来的延迟。在微引擎中的包的接收和转发是通过利用IX总线接口单元的接收状态机和转发状态机来完成的。 VERA是美国普林斯顿大学计算机科学系网络工程研究所在研究如何利用IXP系列的网络处理器构建路由器的实践基础上提出的一种策略。VERA把路由器分为三个部分:路由器抽象、分布式操作系统、硬件抽象。路由器抽象主要是为了能实现路由器功能的扩充,硬件抽象的主要作用是给上层提供一个和设备无关的接口,分布式路由操作系统的作用是为了给把路由器抽象和硬件抽象联系在一起的转发功能提供一个执行环境。在VERA中,分层处理和透明动态代码装入的思想是很重要的。分层处理主要是为了能在底层实现线速处理而同时在高层又能以足够的周期来处理需要占用大量处理时间的数据流。透明动态代码装入是基于网络处理器的路由器的灵活性的集中体现,它能实现动态地更换网络处理器中执行的代码。 在本文中所描述的IXP1200多端口处理平台实现的是对以太网类型的包进行接收、处理和转发。本文只描述了一个使用IXP1200构建的16端口处理平台的实现过程。它利用网络处理器的多线程和并行性来实现高效的16端口接收和转发。在整个接收处理过程中对SOP包(帧的第一个MP包),中间的MP包,和EOP包(最后的MP包)有不同的处理。转发过程由转发调度线程和转发填充线程共同完成。转发调度线程主要是完成转发任务的分配,而转发填充线程主要是完成将在SDRAM中的数据复制到转发缓冲区中,由转发状态机将其发送到端口中发送出去。转发的MP包也分为SOP,中间的MP包,和EOP包三种情况而有不同的处理。