1 引言
城域网存在的主要问题是带宽和QoS的问题,随着局域网和广域网技术的长足发展,城域网已成为整个通信网络中的瓶颈。基于TDM的传统SDH城域网已不能很好满足日益增长的业务需求,近年来,提出了主要面向城域网的弹性分组环技术,并由IEEE 802.17工作组完成了标准化工作,于2004年6月24日发布了802.17-2004标准[1]。弹性分组环是一种基于双环拓扑的技术,能够在两条单向环路上沿相反方向传输数据。它结合了以太网的经济性、灵活性和SDH的高带宽效率及可靠性,利用空间重用、统计复用和环路保护来提高带宽利用率和保证用户的网络质量。
网络处理器是经过专门设计和高度优化来完成各种网络功能的专用指令处理器,又是软件可编程的芯片,表现出高效的并行处理能力和适应性。其中,IXP1200是Intel公司推出的网络处理器产品,它以优异的性能被广泛应用于通信网络领域。文献[2]探讨了基于IXP1200的路由器技术,文献[3]则详细介绍了IXP1200中的微引擎设计方法。可见,由于硬件的高效性和软件的可扩展性,利用IXP1200网络处理器来实现弹性分组环的接入是一种可行而有效的方案。
2 网络处理器介绍
网络处理器一般由一个核心处理器和若干个智能协处理器组成,并发同步完成数据包的处理。同时还集成了一些专用硬件处理单元,如CRC校验、Hash单元等,在处理线速上已经达到并超过10Gbps。它兼顾了GPP的灵活性和ASIC的执行效率,为从第2层到第7层的多种应用提供了良好的支持。
IXP1200网络处理器是Intel公司推出的第一代成熟网络处理器[4],它集成了1个StrongARM核以及6个独立的32位RISC微引擎,再加上硬件的多线程支持,可以实现高速的数据处理。其中,StrongARM核最高的工作频率为232MHz,用于管理和控制任务,如地址学习、路由表的维护以及网络管理等。微引擎则工作于数据层面,用于实现数据分组的分类、处理和转发等功能。每个微引擎支持4个线程,单个时钟周期即可完成算术逻辑运算和移位操作,实现零开销的上下文切换,这些性能使得6个微引擎在1秒钟内能够转发高达300万个第3层数据分组。
IXP1200还提供了丰富的外部接口单元,其中SRAM单元和SDRAM单元提供了连接存储芯片的接口,最大数据吞吐率分别达到464Mbps和928Mbps;PCI单元为外部主处理器和MAC设备等提供了32位PCI 2.2总线,最大数据吞吐率达到264Mbps;FBI单元为外部MAC设备提供了高速的IX总线,用于实现各种网络的接入功能,最大数据吞吐率达到6.6Gbps。
3 弹性分组环的接入实现方案
弹性分组环具有双环拓扑结构,包括两条沿相反方向传输数据的单向环,分别称之为环路0和环路1。图1显示了弹性分组环的站点结构。
按照802.17-2004标准,弹性分组环包括四个层面,由下至上分别为:物理层与物理层适配子层、MAC数据通路子层、MAC控制子层和MAC客户子层[1]。其中,弹性分组环的接入在MAC客户子层完成。设计的弹性分组环接入平台功能主要包括:
(1)对来自以太网的业务数据,若目的地址为以太网则直接转发出去;若目的地址为弹性分组环网,则对以太网包进行深度处理,完成RPR帧格式封装,对各种不同的业务数据进行优先级分类,并转发到弹性分组环接口等。
(2)对来自弹性分组环的业务数据进行判别,丢弃重新接入环路的业务数据,对转发到以太网的业务数据进行处理,转换为以太网帧转发出去。
(3)完成地址学习、地址映射、路由表维护、业务调度和流量管理等。
图1 弹性分组环站点结构图
图2 基于IXP1200的弹性分组环接入平台硬件结构
3.1 硬件设计
利用IXP1200网络处理器设计的弹性分组环接入平台硬件结构如图2所示。
接入平台主要设计了以下几个单元:
(1)网络处理器单元:包括1块IXP1200网络处理器,作为整个接入平台的核心处理部分,主要完成数据帧格式的转换、CRC校验、数据转发、地址学习、路由表建立和维护、业务调度以及流量管理等功能。
(2)以太网接口单元:包括1块以太网MAC层芯片IXF440和1块以太网收发器LXT9763,并通过变压器连接到4路以太网接口。
(3)弹性分组环接口单元:通过FPGA完成IX总线到弹性分组环POS接口的转换,提供两路POS接口,分别接入弹性分组环网的环路0和环路1。
(4)调试接口单元:包括1个RJ45网口和1个RS232串口。IXP1200的PCI单元通过82559ER芯片完成PCI到以太网接口的转换,并通过变压器连接到网口;UART单元通过变压器连接到串口。网口和串口用于接入平台的调试,在调试完成后可以当作普通通信口使用。
(5)存储器单元:包括128M字节的SDRAM 、8M字节的SRAM和8M字节的FLASH。其中SDRAM主要用于存储应用代码、大型数据结构和路由表;SRAM主要用于存储路由表索引和暂存数据;而FLASH主要用于存储系统引导代码。
3.2 软件设计
接入平台的软件设计主要包括IXP1200内部StrongARM核及微引擎的软件设计和基于FPGA实现的IX Bus/POS接口转换设计两部分。
3.2.1 StrongARM核和微引擎的软件开发
IXP1200网络处理器是一块软件可编程的芯片,内部的StrongARM核和微引擎都有独立的软件系统,分别完成控制层面和数据层面的功能。其软件体系结构如图3所示。
StrongARM核的软件结构包括操作系统、板极支持包、驱动和网络应用等模块。操作系统采用VxWorks,它是专门为实时嵌入式系统设计开发的操作系统软件,为用户提供了高效的实时任务调度、中断管理和丰富的系统资源、网络协议等。板极支持包用于完成硬件初始化。驱动模块包括微引擎、IX总线以及其它I/O接口的驱动程序。通信模块通过共享内存和消息队列等方式完成StrongARM核和微引擎之间的通信。网络应用模块则完成路由表管理、异常数据包处理、公平控制和拓扑保护等。StrongARM核的软件开发主要用与VxWorks配套的集成开发软件Tornado完成[5]。
微引擎的开发则采用Intel专门设计的开发平台Developer Workbench,既可以进行硬件调试,也可以进行软件仿真[6]。IXP1200中,6个微引擎共同完成数据层面的功能。其中微引擎0和微引擎1分别接受来自以太网和弹性分组环的数据,完成数据的分类和初步处理;微引擎2和微引擎3分别对来自以太网和弹性分组环的数据进行深度处理,完成CRC校验和帧格式转换;微引擎4进行队列调度和流量管理;微引擎5读取调度线程分配的任务将数据包发送出去。
图3 IXP1200的软件体系结构
图4 IX Bus/POS接口转换实现的结构框图
3.2.2 IX Bus/POS接口转换实现
IXP1200对外部网络设备提供了IX总线接口,通过接口转换设计,能够使其应用到有线通信、无线基站通信和以太网通信等多个领域。由于这些电路最终都通过IX总线和IXP1200连接,因此不会对系统的软件结构产生影响。灵活的接口转换设计可以大大扩展IXP1200的应用范围。基于FPGA芯片的设计实现了IX总线到POS接口的转换,其中POS接口采用了POS-PHY Level 2协议。设计的结构框图如图4所示。
在接口转换中,依据其功能将其划分成为接收模块和发送模块。定义从POS接口到IX总线的数据传输路径为接收路径,而从IX总线到POS接口的数据传输路径为发送路径。
接收路径又分为数据通道和控制通道。数据通道主要负责数据的发送和复用等操作,接收来自POS接口的数据,进行奇偶校验和数位转换并存入接收数据缓存器RDFIFO,再发送到IX总线。控制通道主要由接收状态机来完成数据收发的时序控制。另外还要根据包头、包尾等包指示信息、包长计算结果和奇偶校验结果生成标签存入接收标签缓存器RTFIFO中,在数据向IX总线发送时,根据包长确定接收数据缓存器的读出字节数,并同时恢复出相应的包指示和错误指示信息。
发送路径类似于接收路径,分为数据通道和控制通道。数据通道中,将IX总线的数据送入发送数据缓存器TDFIFO,然后根据目的端口向相应的POS接口发送,并产生POS接口的奇偶校验信号。而控制通道在由发送状态机完成数据收发的时序控制之外,同样生成标签信息送入发送标签缓存器TTFIFO,控制数据的转发,并且恢复相关的指示信息。
设计具有以下特点:
(1)64位IX 总线分为两组32位总线:一组为发送路径,一组为接收路径。两组路径有独立的端口选择和驱动时钟,可以完全独立地工作。
(2)每个端口有2个256×32bit的数据FIFO:一个用于存储发送数据,一个用于存储接收数据。由于定义的数据单元大小为64Bytes,所以每个数据FIFO可以容纳16个数据单元。
(3)每个端口有2个16×11bit的标签FIFO:一个用于存储发送标签,一个用于存储接收标签。每个标签对应一个数据单元。
(4)具有易扩展性,目前支持2个端口,根据应用的变化,稍微修改程序即可增加支持的端口数。
(5)支持POS-PHY Level 2协议,采用单物理层包级传输模式,根据应用可以扩展到多物理层支持和其它传输模式。
4 结论
提出了一种基于IXP1200网络处理器的弹性分组环接入方案,便捷地实现了以太网和弹性分组环之间的数据帧格式转换和接口转换功能。
本文的创新点为在弹性分组环的接入平台中使用了IXP1200网络处理器,并通过软硬件设计实现了其接入功能。IXP1200网络处理器的硬件高效性保证了高速的数据处理能力,而软件可编程性可以大大缩减从研发到进入市场的时间周期,并提供良好的扩展性能。本设计中,支持4路以太网接口和2路POS接口,通过StrongARM和微引擎的软件开发,以及IX总线接口转换程序的设计,可以实现更多路数据以及更多类型网络的接入。
参考文献
[1] IEEE 802.17 Resilient Packet Ring Working Group. http://www.ieee802.org/17/
[2] 刘建华,王勇. 基于网络处理器的可编程路由器技术研究. 微计算机信息, 2005,21(10-2):p51~53
[3] 管文建,薛质. 网络处理器中微引擎设计. 微计算机信息, 2005,21(11-3):p137~139
[4] IXP1200 Datasheet. http://www.intel.com
[5]王学龙. 嵌入式VxWorks系统开发与应用. 北京: 人民邮电出版社, 2003
[6]石晶林,程胜,孙江明. 网络处理器原理、设计与应用. 北京: 清华大学出版社, 2003