NP架构-汇聚层路由器的完美选择
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:本文简述了NP的出现背景,通过对NP硬件架构和数据转发流程的简单描述,阐明NP模块“高性能”和“多业务”这两个关键特性。并以华为公司NE20E(20)系列产品为例说明NP的实际应用领域和应用前景。
关键词:NP 网络处理器微引擎汇聚层路由器NE20
1 汇聚层路由器的需要
按照经典IP网络结构划分,一个网络往往包括核心骨干层、边缘汇聚层和接入层,各个层面的设备都会有明显不同的技术要求。
图一:IP网络层次示意图
用户对核心层设备的要求是大容量、线速性能、高可靠性安全性和具有实效的QOS技术;汇聚层设备则需要高性能、多业务支持能力;接入层设备关键是提供丰富的接口类型和完善的协议转换机制以及用户区分技术。
对于汇聚层路由器来说,高性能应该是至少2个GE端口的线速转发能力(一个上行一个下行),而多业务是指能支持MPLS、NAT、QOS甚至是Ipv6等各种协议应用,尤其是要能快速支持新的网络协议和应用。
汇聚层路由器从诞生到现在经历了近20年时间,经历了几个重要的发展阶段:
∙单CPU内核,集中式转发;
∙分布式CPU,分布式转发;
∙CPU+ASIC,分布式转发;
∙NP+CPU+ASIC,分布式转发。
那么,路由器核心器件不断更新的动力是什么呢?
技术的发展最终动力来自业务的需求,路由器的发展无疑也是符合这一原则的。
这里的业务不仅是狭义的数据、语音、视频的应用,而是广义上的各种网络应用,例如QOS、VPN、ACL、NAT、IPv6等等。每一种新的网络技术或者协议其实都代表着一种新的业务,而每一种新的硬件架构的出现其实代表着整个网络业务在发生巨大变化。协议的更新与业务的关系和硬件架构的更新与业务的关系异曲同工。
业务类型的丰富导致了分布式转发架构的出现,业务流量的激增开辟了ASIC的广泛市场,而高速业务的类型不断增多、多业务的融合最终促使NP的应用。分布式CPU模式虽然分担了不同流向的数据包,但是性能无法保障;ASIC芯片保障了性能,但是它2-3年的更新周期无法适应日新月异的业务变化,所以需要一种面向数据分组处理的、具有体系结构特征和/或特定电路的、软件可编程器件,这就是NP,网络处理器。
在汇聚路由器发展的过程中,NP的出现无疑是最引人注目的,也是目前汇聚层路由器
硬件设计首选的核心芯片。它是目前三网融合、电信IP网、以太城域网等网络发展方向上的一个关键硬件技术,因为它具有汇聚层路由器最需要的一些关键特性。
2 NP的关键特性
图二:NP体系架构示意图
NP模块要高效工作,是需要一个整体系统地支撑,这个系统一般包括通用处理模块、微引擎、外存接口、高速外存接口、片内缓存、数据总线接口和PCI接口等部分。另外,一些NP还有专门的总线接口用于多个同样的NP的扩展,这些通过专门总线扩展的多个NP系统具有比单个NP强大得多的处理能力。
图三:微引擎内部结构示意图
高性能
NP模块通过先进的系统架构和微引擎设计两个层面来保障高性能。
系统架构方面主要有以下几个方面的关键特性:
(1)数据转发和控制管理相分离
以CPU为内核的路由设备,主CPU在控制数据转发的同时,往往还需要负责路由表的维护、整个系统的监控、对数据做深层处理等复杂操作,所以很容易超负荷直至死机。而NP架构下,数据转发由微引擎完成,其它功能则交给内置或外挂的通用处理器(如图一中的Xscale处理器),实现数据转发和控制管理完全分离,有效保障了数据转发的线速性。
(2)两种软件架构——串行与并行
多个微引擎之间可采用串行和并行两种软件架构。串行架构是纵向的使用方式,同一时刻微引擎分别在执行不同的任务,形成处理流水线;并行架构是一种横向的使用方式,即将任务划分成几部分,所有的微引擎执行相同的一部分任务,该部分完成以后再共同去完成另一部分任务。
串行处理中,由于共享资源都在同一个微引擎上,可以采用本地缓存等比较快的同步机制,线程之间同步和数据共享效率高;缺点是循环数限制严重,需要充分发挥线程利用率,不宜有过多I/O和线程切换,适合处理逻辑比较固定、需要共享数据的处理,如接收/发送/QOS等。而对于并行架构,报文可以有长的执行路径,处理和内部资源丰富;但是,多个微引擎之间,同步/顺序保证需要比较复杂的机制,没有快速的共享数据方式,适合特性有较多扩展可能、各流程处理相关性不大/相对独立的应用,如数据转发。
实际路由器设计时,往往综合使用这两种架构。即将多个微引擎分成几个组,每个组负责一种功能,比如接收发送、QOS处理、转发控制;每个组中的各个微引擎则采用并行的工作模式,协同工作,提高处理速度。
这一点和传统的CPU、ASIC模式都很不一样,这种模式在保障高性能的同时,极大提高整个系统设计的灵活性。针对不同业务特点,可以有不同的微引擎处理组合,对快速适应不同业务特性是一个巨大贡献。
(3)I/O优化
微引擎I/O操作主要是对内外部存储器的访问。所以NP模块I/O优化包括优化的内存管理和硬件多线程技术两个方面。
在一般的多处理器系统中,内存操作往往是系统开销的一大瓶颈。而NP通常要对分组进行存储和复制等处理,需要执行大量的存储器操作。NP为了优化这一操作往往引入经过优化的存储器接口和一些DMA单元,以提高存储器的操作效率;另外对DRAM和SRAM的读写可以采用优先访问机制以提高效率。NP模块数据转发流程一般来说,接受模块的微引擎从RBUF取得报文,复制到DRAM,同时读取报文头获得报文处理所需要的关键数据,作为包头描述符(packet descriptor metadata)写入SRAM,通过一个简单的地址映射,使包头信息与DRAM中的包数据关联。在后续的包文处理中,可以尽量减少对DRAM中的访问。
如,一个路由器的方案中,需要修改的包数据包括二层帧头、IP头的TTL/校验和等,如果每一次数据的修改都在DRAM中进行,无疑是非常低效的(因为DRAM读写时延要远远大于图一中所示的SRAM、Scratch 和图二中所示的Local Memory)。通常的做法是维持一个全局的数据结构,存放在Local Memory、Scratch 或者寄存器中,在发送之前一起写入DRAM包数据中。I/O带宽优化是一个综合的权衡。
为了进一步提高处理器的利用率, NP引入硬件多线程技术,并且线程间的切换开销为0;线程切换最常见的是当一个线程执行到读写缓存需要较大时延时,为了提高系统吞吐量而主动挂起当前线程。
NP模块在微引擎设计方面有以下的关键特性:
∙指令操作
微引擎提供微码编程,包括C语言子集和专用汇编指令两种编程语言。微码不需要OS的支撑,编译连接后的代码通过特定的指令写入各个微引擎的控制存储器,微引擎启动后直接运行控制存储器的代码。这种指令操作模式大大提高了效率,而且采用RISC 技术,结合多级流水线技术,大部分指令在一个时钟周期完成。
∙本地存储器
微引擎包含了本地存储器(图二中所示的Local Memory),可以被微引擎内部的全部硬件线程访问,在线程间共享数据。同时由于本地存储器访问延迟较小,使用本地存储器对访问数据可以明显提高系统性能。
这些技术的使用大大提高了NP的性能,从而带来整个设备的高性能。尤其是控制与转发分离、线速转发等特性,保证了在巨大突发数据流量、病毒泛滥、黑客攻击等恶劣条件下,NP数据转发能永不崩溃的特性,哪怕主CPU已经停止工作,NP依然能坚强地转发2-7层数据报文!为运营商、企业网用户争取了宝贵的网络恢复时间。
多业务
NP中所有微引擎的任务由预先根据需求编写好的任务模块组成,并且可以在运行过程中动态加载新的任务模块,具有极大的灵活性,可以满足大部分应用业务;另外,支持DifferServ(区分服务),基于L2-L4进行流分类、流标记、流量整形、队列管理(Tail Drop、RED、WRED)以及多种队列调度算法(FIFO、PQ、WFQ等)。