网络处理器(Network Processor)是一种可编程的设备(比较典型就是一种芯片),它不仅仅指的是某一类的设备或者产品,更加广泛的代表了一种网络设计的技术理念。实物的网络处理器是一种专用于网络系统的微处理器,它使得网络系统能够具备高性能和灵活性。网络处理器的出现为网络系统构建了一个硬件平台,能够通过软件的升级以适合不断增长的功能需求,为网络技术的发展提供了开放的舞台,因而具有十分重要的意义。
高性能的路由器中是以交换结构(Switch fabric)替代共享总线结构。交换结构的路由器采用并行计算机中所采用的互连网络,可以并行地转发多个不同来源、不同目的地的IP数据分组,而且可以对数据分组进行分布式处理,因此大大提高了路由器的转发性能。这种系统内部的互连网络成为交换结构。交换结构的实现可以是榕树(Banyan)结构,也可以是交叉开关(Crossbar)结构。采用这种交换结构的路由器是一种基于多处理器并行系统的路由器,仍然是基于软件,通过多个CPU来提高性能。这种结构的路由器成本很高。目前只在高端路由器产品中采用。
尽管线卡中的处理器提高了转发的效率,但不断增加的速度远远超过了通用CPU满足该要求的能力,这样就要求尽可能多地将数据传入快速通路。于是,后来线卡上的通用CPU就让位给了高速、固定功能的ASIC。通过采用高速、专用ASIC,大大减少了CPU的负担,这样,大部分IP分组完全可以使用快速通路通过系统,只有控制分组和异常分组需经慢速通路转发至CPU。这样,构成了基于ASIC的路由器。基于ASIC的路由器用专用的集成电路实现了路由器中某些关键而且耗时的任务,比如路由表的查找,数据分组的分类和转发等。采用ASIC设计的路由器的特点是具有固定功能的高速操作,开发和制造周期比较长,开发的成本较高。在这种交换路由器中,高速交换功能是由专门的ASIC芯片处理的。ASIC能够提供跟上网络流量的处理速度,但是它的灵活性有限,其功能在设计的时候由设计师确定下来。随着对新的服务功能的快速部署需求的增长,固定功能的基于ASIC的设计将不能提供设计所需的灵活性,以及网络厂商所需的投入市场的灵活性。在网络迅速发展的时代,这意味着较早地被淘汰。例如,目前的高速防火墙和VPN接入设备采用ASIC的结构,其开发周期一般在6~12个月的时间,如果采用网络处理器来构造这种系统就可以通过软件更新的方式利用已有的硬件结构。下一代的计算机网络系统将需要既具有高速处理能力,又具有容易编程的能力,以便于在一致的软件系统结构下提供大量新功能。在这种情况下,网络处理器应运而生。
网络处理器是一种新型的CPU类型,专门用于满足网络路由和交换设备的需求,专门为满足网络环境的要求而设计。传统的CPU为数据处理而设计,适合于进行数学计算,并针对数据处理中访问存储器的局部性进行优化。它假定最近访问过的数据可能将在不久的未来被再次访问。在传统的CPU中,cache被用来提高数据的访问速度。但是,网络中处理的数据只流过处理器一次,以后就再也不回来了,不存在数据访问的局部性规律。所以,传统的处理器就不适合于网络处理的环境。
网络处理器采用不同的方法,它除了有一个一般的处理器(内核处理器)外还包含若干个专门处理数据分组的高速智能接口,即高速引擎。这种高速引擎实际上是一个专用的网络接口微处理器,具有自己的专用指令系统,能够对数据分组进行简单快速的处理。这样,网络处理器实际上是一个单片多处理器系统。在这种结构的网络交换机中,从网络中收集的数据直接放入存储器中进行排队。高速引擎对分组头进行扫描,并进行即时的决策,决定数据的转发方式。多个高速引擎使得网络处理器能够处理高速网络中同时到达的多个数据流。
网络处理器是可编程的,其中的高速引擎根据指令对数据进行扫描并管理数据流,使得程序员能够具有完全的灵活性。这种可编程性意味着基于网络处理器的设计可以缩短开发周期以便快速进入市场,可以更新软件以延长使用寿命,可以通过软件更新进行修改以跟踪的标准并提供未来网络系统的增值特征。使用网络处理器还意味着可以构建一个统一的、开放的通用网络系统硬件平台,允许第三方软件厂商开发更好的路由器软件,为路由器软件的开发和推广创造条件。
网络处理器中的内核处理器可以处理一些对时间要求较低的复杂的任务,如确定路由、多条线路之间的负载平衡,以及解决冲突问题。内核处理器的软件可以比较复杂,可以包含操作系统和各种协议软件。为了便于内核处理器软件的开发和应用,内核处理器通常采用市场上常见的通用CPU。
不同的网络处理器具有不同的速度、可编程性和功能。网络处理器的基本功能是以线速转发数据分组。数据转发功能包括分类与转发。网络处理器首先根据程序规则对输入的数据分组进行封装。其次,再根据用户可编程算法校正输入的数据。第三,对数据分组进行处理,根据有关协议规则转发数据分组。第四,为用户提供可编程的统计生成,以便跟踪快速通路流量的分类结果。网络处理器既可用于线卡的快速通路中,类似于固定功能ASIC,又具有良好的编程能力,类似于通用CPU的功能。采用网络处理器的路由器在速度和可编程方面都有较好的性能,故是当前路由器的发展方向。
在路由器中,网络处理器具有下列数据通信功能。首先,为用户提供可编程缓冲器管理,可以根据缓冲器管理算法做出转发/丢弃决定。其次,提供业务量整形功能,可以根据调度算法调度数据分组的传输。第三,能实现数据流修正。数据流修正包括数据流内的数据处理、报头与报尾的增加或删除,根据相关协议对数据进行封装、分段。所有数据流修正单元应该都是可以由用户编程的。
● 并行处理器: 采用多内核并行处理器结构。片内处理器按任务大致分为核心处理器和转发引擎。
● 专用硬件协处理器: 对要求高速处理的通用功能模块采用专用硬件实现以提高系统性能。
● 专用指令集: 转发引擎通常采用专用的精简指令集,并针对网络协议处理特点优化。
● 分级存储器组织: NP存储器一般包含多种不同性能的存储结构,对数据进行分类存储以适应不同的应用目的。
● 高速I/O接口: NP具有丰富的高速I/O接口,包括物理链路接口、交换接口、存储器接口、PCI总线接口等。通过内部高速总线连接在一起,提供很强的硬件并行处理能力。
● 可扩展性: 多个NP之间还可以互连,构成网络处理器簇,以支持更为大型高速的网络处理。 从网络处理器以上特点可以看出,与通用处理器相比,网络处理器在网络分组数据处理上具有明显的优势。
1、在LAN企业网中
入侵检测系统、数据加密、网络监控、Intranet防火墙等安全控制,防御内部和外部的恶意行为;
进行分组分类,识别关键业务流,提供优先传输服务,实现用户在网络服务上的各种管理策略,保证服务质量QoS;
提供虚拟专用网VPN;
流量工程
2、在广域边缘/接入网络
主要是支持多种新型业务和多种网络接入,并进行服务质量控制,其中包括:
分组分类、聚合和调度
实现基于业务等级协议(SLA)的服务质量管理,提供带宽和时延保证,支持动态带宽管理;
提供VPN
实现负载均衡
分解和装配各种类型的协议数据单元,执行协议转换,支持多种传输媒体接入。
3、在广域核心网络
在核心网中,网络处理器用在OC-48到OC-192甚至更高速率下实现对聚合流的分类识别和转发,支持服务质量控制和流量工程,支持多协议标号转换(MPLS)、区分服务(DiffServ)等协议。