具体实施方式
为解决或部分解决当前互联网的安全问题,节点级控制和网络级调度,以及端到端服务质量(QoS)保证是一个难题,本项技术主要以平滑演进、逐渐改良的方式,在不改变现有互联网协议架构的前提下,在以下几个层面发挥积极作用。
1.在现有互联网线路上,增加一个简单的深度包解析设备,通过分组L2-L7开销字节和内容的深度解析,可以过滤大量与所设置的L2-L7开销字段信息匹配或与内容中相关字段匹配的数据包,包括垃圾邮件、带病毒信息的数据包和入侵事件特征有关的数据包。在这一层面,本发明与现有技术不同之处在于:本发明在两个单向的DPIC快通道上都插入有各自的双向慢通道。
2.进行流量分类,性能参数测量,统计信息上报,本地资源管理,接入身份控制,内容过滤和检测,基于策略的优先级,业务流量阻塞和整形,动态规则建立和修改等。在这一层面,本发明与现有技术不同之处在于:对于WEB、VOIP、游戏、搜索引擎、实时多媒体、即时通信等双向应用,通过“对偶规则条目”,把两个相反方向的功能关联起来,建立了“规则表”的动态关联。
3.用户、网络运行维护方(或ISP)、DPI节点三者之间良性互动、互连和互通。DPI节点是由网络运行维护方(或ISP)增设的,并受网络运行维护方(或ISP)控制的,这种控制是为用户服务。用户可以根据服务级别设置DPI节点上对应的功能。在这一层面的功能属电信级需求,是其它现有技术没有的。
4.对于带内方式,慢通道(即控制和管理信息通道)在去和回两个方向上是同一双向路径,避免了“去”是直达,“回”是绕行的缺陷。节点设备的控制和管理不需要使用带外的方式,节约了成本。
5.本发明技术所实现的DPI节点设备通过对数据流中每一个包进行深度包解析,感知不同用户和各种应用,进而可以实现基于策略的节点级控制和网络级调度的功能,策略是可以设置的,这是本发明技术的特点之一。
6.为解决或部分解决业务的“端到端服务质量(QoS)保证”问题。可以做到,(1)特定分组在本节点上排队时给VIP用户以高优先级;(2)特定分组在本节点上排队时给相关实时业务以高优先级;(3)在分组离开本节点即将送往下一节点之前,根据业务类型或用户的重要程度,修改IP包头的TOS字段,使其具有高优先级或更低的优先级;(4)对于特定业务(路由交换机内置板卡型)可以通过路由选择,将其从优先级高和服务质量好的特定路由转发;(5)对于特定实时业务,为保证时延抖动的一致性,在离开DPI节点之前的输出队列上对时延抖动值进行修正,使得这类分组穿过本DPIC节点时的时延为一个近似恒定值。在这一层面的功能属电信级需求,也是其它现有技术没有的。
从以上几个方面,可以部分解决当前互联网的安全问题、节点级控制和网络级调度,以及端到端服务质量(QoS)保证难题,缓解目前互联网发展中所出现的问题。
本说明书定义下列术语:
Deep Packet Inspection and Control(DPIC,深度包解析和控制):一种实时的流量管理处理功能和能力,针对基于包的协议栈L2到L7特定字段和内容进行,一旦发现与所设定的规则条目(如,八位组串)匹配,即可按设定的规则进行相关的联动操作,比如过滤、分类、性能测量、修改、接入控制、流量阻塞和整形、转发等控制手段。
Deep Packet Inspection(DPI,深度包解析):一种实时的流量深度解析功能和能力,针对基于包的协议栈L3到L7特定字段和内容进行,一旦发现与所设定的规则条目(如,八位组串)匹配,即可按设定的规则进行相关的联动操作,比如过滤、分类、性能测量,修改、接入控制、流量阻塞和整形、转发等控制手段。DPI与DPIC的主要区别见上文所述。
DPIC节点:一种具有DPIC功能的网络节点设备,它可以是路由器,交换机,网桥,收发器,接入设备,电信级以太网,电信传输设备等。DPIC节点设备可以分为:单节点型和路由交换机内置型。单节点型包括单向DPIC型,双向非关联DPIC型,双向关联DPIC型和端到端路径关联型,路由交换机内置也有单向DPIC型,双向非关联DPIC型,双向关联DPIC型和端到端路径关联型。其应用主要定位在企业网网关处,接入网出口出,城域网的汇聚层,省网入口,或国家网入口等。
DPIC引擎:包含有扫描、分析、规则联动和规则表等功能的DPIC处理功能实体。
规则条目:一组规则(N-八位组字符串)中的一个,它被预先定义、预置或动态地生成,并用于在实时分组数据流的特定开销或内容八位组中与这组规则进行匹配比较,以决定是否匹配,它可以是某应用的标识,某用户的标识,也可以是与应用和业务相关联的某业务的标识,还可以是由某应用的策略,某用户的策略,也可以是与应用和业务相关联的某业务的策略而产生的标识。
DPIC分析:在扫描之后在实时分组数据流的特定开销或内容八位组与这规则执行比较功能一种功能实现,决定结果是什么。当所设定的规则条目为“与某用户,某应用或某业务的特征”对应特征八位组串时,“分析功能”会实时地感知出该“用户、应用或业务”。
规则联动:在分析单元之后按照相关的规则需求进行必要的联动的一种动作,它至少包括以下方面:
·流分类,测量,统计信息上报,管理
·资源管理,接入控制,内容过滤和检测
·基于策略的优先级,流量阻塞和整形
·动态规则表建立和修改
·如果与某规则条目匹配,则对这一数据包可产生相关的策略控制(如转发、修改某字段后再转发,加密、丢弃、计费等),包括发起QoS控制或资源控制等的请求。策略控制可以针对某一业务,某一应用,某一用户进行一项具体的操作,包括实现节点级控制和网络级调度功能等类似的策略处理功能。
其中DPIC的重要特征是实时感知终端用户和各类应用,流量管理和处理。
规则表:包括多个规则条目的规则库,这些规则事先定义好并按不同等级进行分类(可以包括L2-L7和内容),在同一层可以有不同的功能,以满足电信级互通要求。
协调单元:一种执行双向DPIC功能、并在两个方向的关联应用之间进行协同的协调功能单元,这个单元连接到两个方向的规则表、分析单元和规则联动单元,以处理端到端的去方向应用及其相关回方向应用的相关性。
快通道:定位在网络层或网络层之上,路由交换机与路由交换机之间,或路由交换机与DPIC节点之间高速分组传送和处理的双向通道,包括线卡内部,或网络处理器内部,或交换单元内部分组的线速处理和转发部分。在图4中,从其它网络节点到DPIC节点,从A1到C1,从A1到B1,从C1到B1,从A2到C2,从A2到B2,从C2到B2等数据平面信息的传送通道,都称为快通道。本发明技术中,快通道一般需要由微引擎完成转发功能。
慢通道:定位在网络层或网络层之上,路由交换机与路由交换机之间,或路由交换机与DPIC节点之间传送和处理控制平面和网管平面信息的双向通道,包括嵌入式系统部分。在图4中,从D1到C1,从C1到D1,从D2到C2,从C2到D2等控制平面和网管平面的传送通道,都称为快通道。本发明技术中,慢通道一般需要由StrongARM Core完成计算和处理功能。
网络处理器:定位在网络层或网络层之上,在路由交换机内部完成包头解析,分类,查找,调度等高速转发功能,或在DPIC节点内部,完成入队列,扫描,分析,规则联动,出队列,调度等功能的高速处理单元。在本发明技术中,虽然StrongARM Core和6个微引擎在物理上是合在一起的,但网络处理器更多的是指“微引擎”、SDRAM,SRAM和FLASH接口单元等协同工作的部分。
对偶规则条目:对于WEB,VOIP,游戏,搜索引擎,实时多媒体,即时通信等业务,其操作是双向的,尽管两个方向上操作的流量不对称,但去和回两个方向是密切关联的,是操作和被操作的关系,也互为因果关系。以WWW应用为例,如果某终端上发出一个上网“点击”操作请求,其经过图9所示的DPIC节点时为A1到B1,而WWW服务器回复这一请求的响应数据流是从A2到B2,对于这种双向应用的情况,如果把这一特定应用定义为DPIC的操作对象,则可以把两个方向上各自的“规则表”建立动态关联。比如,A2到B2方向的规则条目(即匹配关键字)可以根据A1到B1方向的要求,动态地添加到A2到B2方向的“规则表”中。反之,当需要删除A1到B1方向的某个规则条目时,其对应于A2到B2方向的规则条目也应动态删除。本发明技术把这种成对的规则条目称为“对偶规则条目”。对偶规则条目可以是某应用的标识,某用户的标识,也可以是与应用和业务相关联的某业务的标识,还可以是由某应用的策略,某用户的策略,也可以是与应用和业务相关联的某业务的策略而产生的标识。
DPIC体系结构和功能要素
当前IPv4/IPv6/NGN接入网和城域网一般采用分组技术建网。带宽出租时其管道对三层以上协议是不透明的,同时也缺乏对业务的控制能力。这些路由选择和分组交换技术可以知道每一个分组的源IP地址,目的IP地址和TCP端口号,但它们很难决定应用、用户、内容的行为,以及上层协议的其它方面。结果就导致业务提供商租用出去的是一个不透明的或黑色的廉价管道,里面的安全性、可信任性及服务质量保证都是未知的,这就可能会导致用户换租其它具有上层增值业务提供能力的内容提供商。一旦出现这种情况,对运营商来讲是很难接收的。解决这一问题的一个比较好的方法是想办法把黑管道变成白管道或透明一些的管道,这就需要通过对分组数据流的开销字节和内容与规则条目(如,八位组串)进行实时比较,判断其特征是否匹配来不断增加流量、应用和业务的可见性。
字段匹配是应用中的一项重要功能,比如路由器中的IP地址查找。在DPIC节点中,可以设置一个窗口来动态地察看包头和包内容,图1就是用于匹配规则的DPIA数据流窗口。如果把一个字符串用作规则条目,系统找到这个相匹配的一个或多个分组(流)是完全能办到的,匹配成功与否在DPIC分析单元中完成。通过一定的字串匹配算法,可以按每个时钟给出查询结果。
基本的DPIC功能和体系结构如图2所示。当分组从SDH/SONET或以太网(10/100Mbps,GE,10GE)线路成帧器输出后,进入网络层“入队列”缓存器管道,用扫描器对分组流进行扫描是第一步,窗口宽度按规则条目所定义的实际八位组宽度设定。第二步进入分析单元,其操作是针对实时分组数据流的特定开销(L2-L7)或内容八位组与这规则执行比较,看是否匹配,决定结果是什么。当所设定的规则条目为“与某用户,某应用或某业务的特征”对应特征八位组串时,“分析功能”会实时地感知出该“用户、应用或业务”。对于双向的DPIC,还要分析去方向和对应回方向的相关性,并报告协调单元。完成后进入“规则联动”,它是在分析单元之后按照相关的规则需求进行必要的联动的一种动作,它至少包括以下方面:
·流分类,测量,统计信息上报,管理
·资源管理,接入控制,内容过滤和检测
·基于策略的优先级,流量阻塞和整形
·动态规则表建立和修改
·如果与某规则条目匹配,则对这一数据包可产生相关的策略控制(如转发、修改某字段后再转发,加密、丢弃、计费等),包括发起QoS控制或资源控制等的请求。策略控制可以针对某一业务,某一应用,某一用户进行一项具体的操作,包括实现节点级控制和网络级调度功能等类似的策略处理功能。
其中DPIC的重要特征是实时感知终端用户和各类应用,流量管理和处理。而规则表就是由一组规则条目组成的规则库。这些规则事先定义好并按不同等级进行分类(可以包括L2-L7和内容),在同一层可以有不同的功能,以满足电信级互通要求。最后在DPIC引擎处理完后的数据包离开内容管道,流进输出队列并重新注入到网络中去。
图3是双向DPIC功能和体系结构。与图2所不同的主要是协调单元。DPIC节点设备可以分为:单节点型和路由交换机内置型。单节点型包括单向DPIC型,双向非关联DPIC型,双向关联DPIC型和端到端路径关联型,路由交换机内置也有单向DPIC型,双向非关联DPIC型,双向关联DPIC型和端到端路径关联型。这里的协调单元是指一种执行双向DPIC功能、并在两个方向的关联应用之间进行协同的协调功能单元,这个单元连接到两个方向的规则表、分析单元和规则联动单元,以处理端到端的去方向应用及其相关回方向应用的相关性。这里两个方向上DPIC和协调单元按图3需要完成四个层面的工作。
第一个层面,从单方向DPIC看,在现有互联网线路上(指企业网网关处,接入网出口出,城域网的汇聚层,省网入口,或国家网入口),增加一个简单的深度包解析设备,通过分组L2-L7开销字节和内容的深度解析,可以过滤大量与所设置的L2-L7开销字段信息匹配或与内容中相关字段匹配的数据包,包括垃圾邮件、带病毒信息的数据包和入侵事件特征有关的数据包。还可以通过设置,丢掉某些特征的包,阻止某些不法用户和违规用户接入互联网。这一层面的功能可以在单节点型和路由交换机内置型上实现。对应于单节点型包括单向DPIC型,双向非关联DPIC型设备。当然也可以在双向关联DPIC型和端到端路径关联型上实现。
在第二个层面,进行流量分类,性能参数测量,统计信息上报,本地资源管理,接入身份控制,内容过滤和检测,基于策略的优先级,业务流量阻塞和整形,动态规则建立和修改等。与第一层面一样,这一层面的功能也可以在单节点型和路由交换机内置型上实现。对应于单节点型包括单向DPIC型,双向非关联DPIC型设备。当然也可以在双向关联DPIC型和端到端路径关联型上实现。第一层面和第二层面属于基本功能,应该在任何类型的DPIC设备上都可以实现。
在第三个层面,用户、网络运行维护方(或ISP)、DPI节点三者之间良性互动、互连和互通机制。DPI节点是由网络运行维护方(或ISP)增设的,并受网络运行维护方(或ISP)控制的,DPI用户可以随时对DPI节点进行设置以达到其所需要的对终端用户和各类应用的感知和控制功能。这种感知和控制功能,是增殖业务形式体现,是为DPI节点用户服务的。用户可以根据服务级别设置DPIC节点上对应的功能。这一功能只有在单节点型和路由交换机内置型的双向关联DPIC型和端到端路径关联型设备上实现。
对于带内方式,控制和管理信息通道在去和回两个方向上是同一双向路径,避免了“去”是直达,“回”是绕行的缺陷。节点设备的控制和管理不需要使用带外的方式,节约了成本。
本发明技术所实现的DPI节点设备通过对数据流中每一个包进行深度包解析,感知不同用户和各种应用,进而可以实现基于策略的节点级控制和网络级调度的功能,策略是可以设置的,这是本发明技术的特点之一。
在第四个层面,为解决或部分解决业务的“端到端服务质量(QoS)保证”问题。可以做到,(1)特定分组在本节点上排队时给VIP用户以高优先级;(2)特定分组在本节点上排队时给相关实时业务以高优先级;(3)在分组离开本节点即将送往下一节点之前,根据业务类型或用户的重要程度,修改IP包头的TOS字段,使其具有高优先级或更低的优先级;(4)对于特定业务给出特定路由,(路由交换机内置板卡型)可以通过路由选择,将其从优先级高和服务质量好的特定路由转发;(5)对于特定实时业务,为保证时延抖动的一致性,在离开DPI节点之前的输出队列上对时延抖动值进行修正,使得这类分组穿过本DPIC节点时的时延为一个近似恒定值。(1),(2)和(3)可以在任何DPIC设备类型上。而(4)和(5)一般只能在双向关联DPIC型和端到端路径关联型设备上实现。
采用网络处理器(或转发引擎)实现单向DPIC型和双向非关联DPIC型设备
由于双向非关联DPIC型设备中包括两个单向DPIC型,所以本节将主要描述双向非关联DPIC型设备的实现方法。图4是实现双向各自独立DPIC时网络处理器的体系结构,从图中可以看出,网络处理器(或转发引擎)同时构建了两个方向的DPIC。用户、网络运行维护方(或ISP)、DPI节点三者之间良性互动是通过“去方向”(从左到右)提取双向慢通道的控制信息和“回方向”(从右到左)插入双向慢通道的控制信息实现的。当分组从SDH/SONET或以太网(10/100Mbps,GE,10GE)线路成帧器输出后,进入网络层“入队列”缓存器管道,依此通过扫描单元,分析单元和规则联动单元(该单元的功能主要指:如果与某规则条目匹配,则对这一数据包可产生相关的策略控制,如转发、修改某字段后再转发,加密、丢弃、计费等。包括发起QoS控制或资源控制等的请求。策略控制可以针对某一业务,某一应用,某一用户进行一项具体的操作,包括实现节点级控制和网络级调度功能等类似的策略处理功能),其它每个单元的作用前文已有描述,规则表库(指由一组规则条目组成的库)内置在嵌入式系统中。这四个基本功能单元之间的互动和配置,均通过控制总线完成。为使时延抖动最小,在分组离开本节点即将送往下一节点之前,根据业务类型或用户的重要程度,网络处理器可以修改IP包头的TOS字段,使其具有高优先级或更低的优先级。对于特定业务,可以与上下游连接的其它路由交换设备一起,修改相关路由表,为特定业务给出特定路由。对于特定实时业务,为保证时延抖动的一致性,在离开DPIC节点之前的输出队列上给予修正,使得这类分组穿过本DPIC节点时时延为一个近似恒定值(即,使得时延抖动为最小)。最后在DPIC引擎处理完后,数据包离开内容管道流进输出队列,并重新发送到网络下游中去。
就单向的DPIC而言,图4可以在其规则表库中增加一项本节点的IP地址(如202.114.209.71等)作为查找和匹配对象,即4个八位组,从A1点到C1点,一旦发现数据包的IP地址与此匹配,就在规则联动之后的C1点,进入慢通道(C1到D1)的处理(即控制信令和管理信息处理),再转发到本机的嵌入式系统D1上。当本地嵌入式系统D1有信令或管理功能需要发送信息时,同样可以先走慢通道发出信息从D1到C1,再从规则联动之后的连接点C1切入快通道,从C1到B1。同样地,本机的嵌入式系统D1也可以发送分组从慢通道经由C2点切入到另一个反方向DPI快通道(从C2到B2),或从快通道(A2到C2)再到慢通道(从C2到D1)接收本地控制信令或网络管理信息,如图4中垂直方向的虚线所示。对于本机与其左侧的其它类型网络节点设备(图4未画出)通信的情况,如果本机接收到来自左侧节点的路由Hello信息,其路径是从左到右的快通道(A1到C1),经由C1点切入慢通道(C1到D1),再由本机嵌入式系统接收。响应这一Hello信息时,可以从D1到C2,再从C2到B2作为反向回应。这些是本发明技术与其它现有单向DPI在体系结构设计上所不同的特征。
通过这一特征,很容易实现用户、网络运行维护方(或ISP)、DPI节点三者之间互动和互操作。由于图4中,两个方向的DPIC都是独立运行的,所以两个通道之间没有关联。对于Email(防垃圾邮件)这类应用,两个单向DPI是够用的。
F-Engine DPIC-1系统介绍
DPIC-1采用多线程并行处理的方法,达到线速深度包解析和控制的目的。它支持1路OC-12POS接口和8路自适应10/100M以太网接口,提供4Gbps的交换容量,报文转发率在2.5Mpps以上,每秒处理30万个包,支持40万用户。
DPIC-1整个系统由电源板,系统主板和显示板构成,其中电源板完成交直流电的转换,为系统提供3.3V,5V和12V的稳压直流电源。显示板提供设备运行指示,包括电源信号指示,POS(STM-4)接口信号指示,8个10/100M以太网接口信号指示,也可以换成两个全双工的GE以太网接口。
F-Engine DPIC-1的硬件体系结构
硬件体系结构如图5所示。主要由网络处理器(转发引擎),IXP1200由1个主频为232MHz的处理核心StrongARM,6个RISC(精减指令集)结构的可编程微引擎组成;每个微引擎又包含4个硬件线程;64位IX Bus(一种IXP1200特有的总线);32位的SRAM(静态随即存储器)接口单元,工作频率为核心频率的一半;64位的SDRAM(动态随即存储器)接口单元,工作频率为核心频率的一半;32位PCI总线接口单元,最高66MHz。
一个StrongARM与六个微引擎构成IXP1200的计算架构,包括:SRAM,SDRAM,IX Bus,PCI等。StrongARM与微引擎均为RISC处理器,个自独立并行工作。StrongARM负责协议控制和管理信息(慢通道)的计算和处理。微引擎负责高速分组发送、接收、以规则条目为单位的快速包查看、分析、规则联动等处理(快通道),通过对六个微引擎/24个硬件线程分配不同功能的微码程序,可以实现(千兆以太网线速的)可感知多用户和多应用并发的互联网实时深度包解析和控制。通过独立数据总线和控制总线,实现“实时目标数据”的并发移动:SDRAM/SRAM单元与微引擎或IX BUS单元之间的双向同时读写;SDRAM单元和PCI单元之间读写;IX BUS单元和微引擎之间读写。
多个IXP1200处理器可以通过IX BUS总线互联,从而有效增加处理系统处理能力和数据带宽;ATM、E1/T1、Ethernet MAC等数据接口可以通过IXBUS总线接入IXP1200;微引擎的微码程序存储空间具有可扩展性。
每个微引擎有4个编程计算器,支持4个硬件线程。每个线程可以执行相同或不同的微码程序,采用内部线程通信机制实现线程同步,提高系统效率。微码指令采用多级流水线机制,按每时钟周期执行运算。
每个微引擎独立使用256个32位寄存器。其中128个寄存器是传送寄存器集。每个微引擎将数据载入自己的传送寄存器集,对传送寄存器集进行操作,然后通过传送寄存器集写到数据目的地。数据载入传送寄存器集后,微引擎可在单指令周期完成访问。
SDRAM和SRAM支持多个读写队列进行优先级排队以优化带宽。允许StrongARM和6个微引擎/24个线程同时提交对内存单元的读写请求,内存单元根据特定优化指令对读写请求硬件优先级排队。
块数据移动:每个微引擎分配很大的寄存器集,单个指令就可以实现功能单元之间64个字节的数据块移动,和功能单元与IX BUS之间128个字节的数据块移动。块数据移动在充分利用微引擎计算资源的同时,还可以减小微码程序规模。
网络处理器(转发引擎)
这个网络处理器可以支持4Gbps的交换容量,它可以提供多种接口,可以支持POS接口,10/100M以太网接口以及千兆以太网接口。
网络处理器主要对到达网络层的数据包进行一系列处理和操作动作,其功能分为三部份:扫描,分析,规则联动。网络处理器由六个以上的引擎组成。在包处理的过程中,这些引擎将按照固定的顺序对包进行单独处理。由于采用了流水线作业,每个引擎在完成自己的任务后,就可以将该包发送到流水线上的下一个引擎,而可以开始处理新的数据包。每个引擎不需要等待线程完成对一个包的完整处理,就可以处理下一个新的数据包,从而大大提高了执行效率。
每个微引擎有128个GPR寄存器,对应两种访问模式:
相对地址(Reg),每个线程访问其中的32个
绝对地址(@Reg),每个线程访问全部128个传输寄存器,其中
32个用于SRAM读,(SRAM/FBI总线→引擎)
32个用于SRAM写,(引擎→SRAM/FBI总线)
32个用于SDRAM($$)读,(SDRAM→引擎)
32个用于SDRAM($$)写,(引擎→SDRAM)
也分绝对地址和相对地址,平均看每个线程对于每种寄存器有8个。
传输寄存器SRAM可用于对SRAM、R-FIFO、T-FIFO、CSR、Hash Unit和Scratchpad Memory的操作;SDRAM传输寄存器只能用于对SDRAM的操作。实际上,相对地址寄存器对应于每个线程的记录包,某些寄存器只充当临时变量的角色,没有特别的意义;绝对地址寄存器对应于每个任务进程的全局变量。
关于任务划分
针对微引擎设计来说,在微引擎上的任务划分为1个接收,1个接收调度,1个发送调度,一个用于线速扫描,一个用于线速分析,一个用于线速的规则联动(即针对应用、用户和业务的策略控制,QoS控制能力的触发等)。接收任务只包含接收模块,接收调度包含接收调度、读寄存器、线程到core、core到线程四个模块,发送调度包含发送调度模块和发送填充模块。IXP1200的资料中规定接受调度最好独占一个微引擎,因为接受调度不能允许其他线程阻塞其运行。
关于通信机制
线程到内核(core)的通信机制为:
中断+mailbox
其中中断就是写Ireg(Interrupt Reason Register),mailbox位于Scratchmemory或SRAM中。
内核(core)到线程的通信机制为:
signal+from core mailbox
其中signal就是写signal_done CSR寄存器。
关于内存分配
对应于内核(core)的Memory Map,微码可访问的SRAM空间为:0x1000,0000~0x107F,FFFF,目前配置为0x1000,0000~0x101F,FFFF;微码可访问的SDRAM空间为:0xC000,0000~0xC17F,FFFF;微码可访问的Scratch空间为:0xB004,4000~0xB004,4FFF。
用于系统启动引导的BootROM地址空间支持最大为8M字节的Flash或EEPROM。这个地址空间可以由StrongARM核与微引擎来进行访问。当复位后,StrongARM内核开始从这里取指令。StrongARM核必须从地址00000000h进行引导。BootROM地址空间通过配置可以支持16位或者32位的数据总线。这取决于复位时GPIO[3]管脚的状态(GPIO[3]置高时为16位总线,GPIO[3]置低时为32位总线)。BootROM地址空间与SSRAM接口共享4个外部片选信号(CE#[3:0]),这些信号的产生基于一个21位的内部长字地址。通过SRAM CSR对3个CE#进行配置。
FLASH地址空间的划分如下:
诊断程序: 0x0 0x1FFFF 128KB
实时操作系统 0x20000 0x5FFFFF 8M -128K
预留空间 0x600000 0x7DFFFF2M-128K
相关配置 0x7E0000 0x7E1FFF 16K
产品序列号,软件和FPGA版本号以及加密信息
0x7e2000 0x7e3fff 16k
电路板配置信息 0x7e4000 0x7fffff 96k
扫描单元
接收调度线程首先检测接收处理线程的状态,若端口空闲,则继续检查端口状态。若端口有包到来,接收调度就向接收状态机发送接收请求。硬件检测到接收请求,首先从指定端口提取包,放到指定的扫描单元中,然后发送一接收开始信号。接收线程接到信号后,检查内存中是否还有存储空间。若没有,则一直等到有空闲空间,才开始接收包。若有,则从指定的单元中读取数据存放在SDRAM中,同时根据规则寄存器中所放置的规则字符串值,对包头和包的内容进行扫描。如果该包是某一队列的第一个包,则向相关寄存器对应该队列位置1,以通知接收调度线程哪些队列有包。发送调度线程轮询相关寄存器,若该寄存器的值不为0,向发送线程分配发送任务,有包的队列被轮流处理。每个队列发送一个包,然后,处理下一个队列。发送线程接收到任务,检查输出端口已准备好,则就从队列中取出包发送到发送单元中。数据包存放在SDRAM中,而队列则位于SRAM中。
接收调度的调度原则是:当端口有包时,接收调度线程向系统发送一接收请求,指定由哪个接收线程接收。
接收调度算法遵循以下原则:
·所有的接收线程都被公平的分配任务;
·所有的端口只要有包,都被公平的处理,不会出现一个端口被不停的处理而使其他端口的包一直等待。
分析和规则联动
在接收调度发送出接受请求之后,入队列的包会从MAC器件端口进入网络处理器内部的接收单元。当它被填满之后,会向相应的线程发出信号让该线程开始运行。这个线程是接收线程中的一个。它接到信号以后先读取标识接收状态的寄存器,根据寄存器的值判断接收的数据是否出错,如果出错则丢弃该数据并进行出错处理;如果数据正确,则保存接收的状态,准备从接收单元中读取数据到寄存器。在实际读取包头数据之前,会先给该数据分配一个SRAM空间用来存储该包的各种信息,并根据分配的SRAM空间的地址分配一个SDRAM空间来存储实际的IP包的值。设置完存储包头的SDRAM地址之后,开始将包头读入寄存器并进行解析。根据预先设置的规则库(即一条或多条规则条目),分析包头和内容与目标字段匹配与否,可以采用精确匹配算法和近似匹配算法。
当IP包被接受到以后,要经过解析并提取出规则库中的第一个规则条目字符串的值。网络处理器要根据这个值在扫描窗口中从前到后一个八位组一个八位组地进行比较。不管精确匹配算法,还是近似匹配算法,首先要保证有较快的查找速度,同时也要保证查找的次数有一个上限。几个规则条目字符串的值的比较可以同时进行。一旦发现与某一规则条目字符串的值匹配,则需马上记录这一数据包,然后察看规则条目后续操作的规定动作和要求,进行相应的规则联动处理,如过滤掉,修改,提取到本机,转发到输出线路等。当所设定的规则条目为“与某用户,某应用或某业务的特征”对应特征八位组串时,“分析功能”会实时地感知出该“用户、应用或业务”。以此为基础,内置在规则联动单元中的策略控制可以针对某一业务,某一应用,某一用户进行一项具体的操作,包括实现节点级控制和网络级调度功能等类似的策略处理功能。
输出排队
IP包在经过扫描、分析和规则联动后,下一步是输出,而且IP包已经存储在SDRAM的PACKET BUFFER中。排队程序的功能是将IP包放到相应的输出队列中去排队,供发送调度程序调度输出。入队列排队的不是IP包的本身,而是IP包的一个信息结构,称为包描述结构。通过这个信息结构可以知道IP包的相关信息,如IP包存放的实际物理地址,包的长度和其它状态等等。在网络处理器的设计中,最多有128个队列用来存放包描述结构。这些队列被分配到16个输出端口,每个端口8个。在SRAM中分配了一个由队列描述符构成的数组。每个队列描述符由两个32位长字组成,第一个长字的高16位是指向队列中第一个包描述结构的指针,其低16位是指向队列中最后一个包描述结构的指针。包描述结构在队列中是以链表形式存放。第二个长字存放了一个计数器,计算在队列中包的个数。如果队列中没有包,那么,队列的头指针为零,包个数计数器为零。
包描述符是在SRAM中分配的一块空间,由两个32位的长字组成。它的分配是由一个叫做FreeList的栈结构POP(弹)出来的,每接受一个新包就要POP出来一个包描述符。当一个包被成功转发出去之后,它的包描述符就要被释放,也就是要被PUSH进入FreeList的栈结构。
包描述符内记录的IP包信息包括:指向下一个包描述符的指针,包的大小等等。
包描述符在输出队列中排队,供发送调度来安排输出。但包描述符不是实际的IP包,发送线程发送的却要是实际的包数据。因此必须把包描述符和存放实际包的包缓存区之间建立一种映射的关系。排队算法就是链表的插入问题。
发送
发送部分的主要工作是将存放于SDRAM中的包发送到各自的目的端口中。它要有两方面的工作:第一,决定合适的线程进行发送以及那个端口的包可以发送,即发送调度;第二,找到包的位置以及它的目的端口,然后将数据填充发送单元中,通知发送状态机将数据送出,即发送填充数据。
发送调度和发送数据是由不同的线程完成的。同时,快速和慢速的处理又有所不同。所以对发送部分来说,有四种不同类型的线程:快速发送调度线程、快速发送填充线程、慢速发送调度线程与慢速发送填充线程,彼此相互独立的,但是也存在一个同步关系。这两个调度线程给各自所管的发送填充线程分配任务,实际是一个接一个进行的,如快速调度线程分配了一个快速端口的发送任务,那么慢速调度线程随后也会分配一个发送任务,然后又是快速调度线程。它们依靠信号(signal)来维持这个同步机制,以保证对资源使用的同步。一个调度线程为它所管的3个发送填充线程按照先后顺序分配任务。当它已经分配好任务,而且上一个任务已经取走,就给对应线程的一个signal,通知接受任务。
SDRAM(动态存储器)
SDRAM单元可提供IXP1200与SDRAM的接口,最大可支持256M字节的SDRAM。虽然SDRAM的访问速度较慢,但存储空间大,价格便宜,因而可用来存储大容量的数据结构(如数据包和路由表等),并可在系统运行时存储操作系统的代码等。SDRAM运行频率是网络处理器内核频率的一半。总线周期由来自网络处理器PCI单元的请求产生。SDRAM通过命令来进行操作,命令放在SDRAM单元的命令队列中。SDRAM单元译码命令,读写数据,删除命令等。
SRAM(静态存储器)
SRAM单元可为几类设备提供通用总线接口。这些设备包括最大可达8M字节的SSRAM、复位后StrongARM Core执行代码所在的FLASH或E-PROM等、BOOTROM设备和其它内存(如CAM)、加密设备和MAC或PHY设备的控制状态接口。SRAM访问速度较快,但存储空间小,主要用来存储查找表和缓存描述符等需要快速访问的数据结构。网络处理器可访问SRAM,外部接口由32位数据总线,19位地址总线,和控制信号组成。其总线工作频率为网络处理器内核频率的一半。
SRAM提供的内存源比SDRAM接口的访问延迟低,速度快。SRAM主要提供查找表,以及通过网络处理器移动数据时之用。本项目中SRAM主要用来存放队列描述符和包描述符等。
FLASH(闪存)
FLASH提供32位数据线,时钟工作频率为内核频率的一半。
FLASH是复位后内核开始执行指令的地方,内置的程序被固化,掉电后程序仍在其中。网络处理器地址空间支持8M FLASH,这个地址空间可由内核访问。FLASH映射到内核物理地址0,为起始地址。在复位后,内核从这个地址空间取指令。
PCI、以太网口和串口
PCI、以太网口用于操作系统移植时下载操作系统,对本盘进行配置管理、故障管理、性能管理以及系统测试等,同时还负责业务流管理、特殊信令等服务,串口电路负责对本盘进行在线配置,用于调试和网管。
本地嵌入式系统
本地嵌入式系统的信令和网络管理功能可以由内嵌CPU-StrongARMCore完成。这样可以大大节省成本。图7是系统主程序流程图。
系统软件开发包括两个方面,一个是StrongArm Core上的系统软件、控制平面软件、管理平面软件和数据转发平面软件等,这些软件需要嵌入式操作系统Vxworks上开发和运行。另一个是微码程序,这部分软件针对6个微引擎设计和运营,主要完成包的扫描、分析、规则联动等快速处理功能。其中每个微引擎提供有2k字节的代码存储空间,每个微引擎包含4个硬件线程,每个线程都具有自己特定的寄存器组,线程切换的速度较快。图8是单向DPIC的微码软件流程图。
采用网络处理器实现双向关联DPIC型设备
双向关联DPIC型设备中包括两个单向DPIC型,协调单元和规则表的逻辑功能由本地嵌入式系统通过控制总线分别连接到扫描单元、分析单元和规则联动单元而实现。图9是实现双向关联DPIC时网络处理器的功能分解,从图中可以看出,用户、网络运行维护方(或ISP)、DPI节点三者之间良性互动是通过“去方向”(从A1到B 1)提取的双向慢通道(从C1到D1,以及从D1到C1)和“回方向”(从A2到B2)插入的双向慢通道(从C2到D1,以及从D1到C2)实现的。当分组从SDH/SONET或以太网(10/100Mbps,GE,10GE)线路成帧器输出后,进入网络层“入队列”缓存器管道,依此通过扫描单元,分析单元和规则联动单元,每个单元的作用前文已有描述,规则表库内置在嵌入式系统中。这四个基本功能单元之间的互动和配置,均通过控制总线完成。网络处理器一方面通过微引擎完成快通道处理功能,另一方面通过本地内嵌的StrongARM Core完成控制平面和管理平面的功能,StrongARM Core的任务还包括协调单元和规则表的逻辑功能,这样成本最低。最后在DPIC引擎处理完后的数据包离开内容管道,流进输出队列并重新注入到网络中去。
而对于WEB、VOIP、游戏、搜索引擎、实时多媒体、即时通信等业务,其操作是双向的,尽管两个方向上操作的流量不对称,但去和回两个方向是密切关联的,是操作和被操作的关系,也互为因果关系。以WWW应用为例,如果某终端上发出一个上网“点击”操作请求,其经过图9所示的DPIC节点时为A1到B1,而WWW服务器回复这一请求的响应数据流是从A2到B2,对于这种双向应用的情况,如果把这一特定应用定义为DPIC的操作对象,则可以把两个方向上各自的“规则表”建立动态关联。比如,A2到B2方向的规则条目(即匹配关键字)可以根据A1到B1方向的要求,动态地添加到A2到B2方向的“规则表”中。反之,当需要删除A1到B1方向的某个规则条目时,其对应于A2到B2方向的规则条目也应动态删除。
本发明技术把这种成对的规则条目称为“对偶规则条目”。“对偶规则条目”不只是用于过滤掉一些信息,还可以做一些细分业务的工作。比如,当发现有重要的VIP用户使用某一业务时,可以在其请求后的响应方向上给予高优先级和低时延的策略。
本例中,由于两个“规则表(即规则条目)”都在同一个嵌入式操作系统的范围内生成、添加、删除和修改,其维护和操作是比较简单的。
关于如何解决或部分解决“端到端服务质量(QoS)保证”问题。通过研究传统的通信量整形算法中由数据缓存引入的时延抖动问题,提出了一种基于抖动约束的通信量整形方法(Jitter-Constrained Shaping,JCS)。在整形过程中,时延是由数据缓冲的充满程度和令牌输出速率决定的。通过在线检测数据缓冲的充满程度和令牌的输出速率,计算出数据包的时延和时延抖动,然后根据时延抖动约束动态调整整形器的参数,使数据分组在整形过程中经历的时延抖动保持在约束范围之内。结果表明这一方法相对于前人的工作,最大时延从7.2ms降低到3.6ms,最小时延从0.85ms提高到2.27ms,时延方差从271.4降低到3.62,有效的降低了时延抖动。具体内容参见2007年7月武汉烽火网络有限责任公司郝俊瑞和余少华的另一专利“一种基于抖动约束的数据缓存整形方法”。
所以,通过双向关联DPIC体系结构(图9)、对偶规则条目和两个方向的动态规则表,可以做到,(1)分组在本节点上排队时给VIP用户以高优先级;(2)分组在本节点上排队时给相关实时业务以高优先级;(3)在分组离开本节点即将送往下一节点之前,根据业务类型或用户的重要程度,修改IP包头的TOS字段,使其具有高优先级或更低的优先级;(4)在路由交换节点上DPI功能,对于特定业务给出特定路由,或者在现有路由交换节点增加DPI功能;(5)对于特定实时业务,其分组穿过本DPI节点时时延为一个近似恒定值(使时延抖动为最小或无时延抖动)。在这一层面的功能属电信级需求,也是其它现有技术没有的。
如图10所示,双向关联DPIC功能也可以通过升级高速路由交换机线卡软件和所属网络处理器软件来完成。在从A1到B1的去方向,DPIC的功能主要在包头解析(Header Parsing)上进行扩展实现,如图10中“包头解析+DPIC”方块所示,也可以对A1到B1方向的“策略(Policing)”方块扩展而实现。策略单元内置在规则联动单元中,在分析单元之后。按照相关的策略和规则需求进行必要的联动的一种动作,这一快通道功能至少包括以下方面:
·流分类,测量,统计信息上报,管理
·资源管理,接入控制,内容过滤和检测
·基于策略的优先级,流量阻塞和整形
·动态规则表建立和修改
·如果与某规则条目匹配,则对这一数据包可产生相关的策略控制(如转发、修改某字段后再转发,加密、丢弃、计费等),包括发起QoS控制或资源控制等的请求。策略控制可以针对某一业务,某一应用,某一用户进行一项具体的操作,包括实现节点级控制和网络级调度功能等类似的策略处理功能。
其中DPIC的重要特征是实时感知终端用户和各类应用,流量管理和处理。通过修改微引擎中用于“线速的规则联动”线程微码来完成。
在从A2到B2的回方向,DPIC的功能主要在编辑(Editing)上进行扩展而实现,如图10中“编辑+DPIC”方块所示。这里特别需要注意,增加DPIC功能之前,应对网络处理器在两个方向上的实时和线速处理能力进行评估,看增加DPIC功能后对网络处理器开销有多大。如果所占处理开销过大,应作折衷处理。
另外,由于网络处理器、路由交换机等软硬件均属本领域技术人员所公知的成熟技术和现有技术,武汉烽火网络公司一年推广各类网络设备几万台套,为了简洁起见,本发明没有对软硬件细节及具体的实现方法加以描述。
虽然上面已经结合附图示出并详细描述了本发明的一些实施例,本领域的技术人员应当理解,在不偏离本发明的原则和精神的情况下,可以对这些实施例做出变化和修改,而仍然落在所附的权利要求及其等价物的范围内。