用于网络设备内的分组处理的基于变量的转发路径结构的制作方法
【专利摘要】一般性地,本公开内容描述了用于以网络设备、使用内部处理路径来应用订户特定分组处理的技术,该内部处理路径包括服务对象,这些服务对象被共同应用到与多个订户相关联的多个分组流。在一个示例中,网络设备控制平面创建订户记录,这些订户记录针对各自的订户包括一个或多个变量值,该一个或多个变量值指定服务对象以及用于分组处理模板的标识符。该网络设备的转发平面接收订户分组并且将订户分组映射到相关联的订户记录,并且然后通过执行由该订户记录所指定的分组处理模板来处理该分组。当该转发平面在执行所指定的分组处理模板的同时到达一个变量时,该转发平面从该订户记录读取相关联的变量值,以识别并且然后应用由该变量所指定的订户特定服务对象。
【专利说明】用于网络设备内的分组处理的基于变量的转发路径结构
【技术领域】
[0001]本发明涉及基于分组的计算机网络,并且更特别地,涉及在计算机网络内转发分组。
【背景技术】
[0002]网络服务提供商向订户提供服务,订户使用接入网络来接入服务提供商核心网络。所提供的服务可以包括,例如,传统的因特网接入、通过互联网协议的语音电话(VoIP)、视频和多媒体服务、以及安全服务。服务提供商网络可以支持多种类型的接入网络基础设施,这些接入网络基础设施连接到服务提供商接入网关以提供对所提供的服务的接入。
[0003]因为接入网关直接从订户的上游被定位在服务提供商网络的边缘附近,并且操作以提供操作终结点(即,终止)订户连接(例如,基于数字订户线路或电缆的连接)进入服务提供商网络,所以接入网关通常提供用于识别订户流量和提供订户特定服务的机制。当流量穿越服务提供商核心网络边界时,接入网关基于每个订户来应用订户策略以管理这样的订户流量。
[0004]网络设备,诸如接入网关,通常包括控制单元,控制单元为网络设备提供控制平面功能。在一些情况下,网络设备还可以包括多个转发组件,诸如分组转发引擎(PFE)以及交换结构,分组转发引擎和交换结构共同提供转发平面用于转发网络流量。
[0005]由控制单元所提供的控制平面功能包括采用路由表形式的存储网络拓扑结构,执行路由协议来与对等路由设备通信以维持并更新路由表,并且提供管理接口以允许用户接入和对网络设备的配置。控制单元维持路由信息,路由信息表示网络的整体拓扑结构并且定义去往网络内的目的地前缀的路由。
[0006]控制单元导出转发信息库(FIB),转发信息库包括多个根据路由信息和控制信息由控制单元所生成和/或所分配的服务对象,并且将服务对象安装到转发组件。构成服务对象的数据和指令针对由网络设备所接收的每个传入分组定义了内部处理和转发路径。例如,为了生成路由表查找服务对象,控制单元选择由网络拓扑结构所定义的路由,并且将分组关键字信息(例如,目的地信息和来自分组头部的其他选择信息)映射到一个或多个特定的下一跳网络设备并且最终映射到网络设备的接口卡的一个或多个特定的输出接口。典型地,控制单元将服务对象安装到转发组件中的每个转发组件中,以更新FIB并控制流量处理和转发平面内的转发。分叉控制和转发平面功能允许转发组件中的每个转发组件中的FIB被更新,而不降低网络设备的分组转发性能。
【发明内容】
[0007]一般性地,本公开内容描述了用于以网络设备、使用内部处理路径来应用订户特定分组处理的技术,该内部处理路径包括服务对象,这些服务对象被共同应用到与多个订户相关联的多个分组流。在一个示例中,网络设备的控制平面管理订户,来为订户中的每个订户识别订户特定服务和服务属性。该控制平面进一步识别如下的服务和服务属性:这些服务和服务属性对多个订户是共同的,并且可以使用该网络设备转发平面的内部处理路径的共同服务对象来应用这些服务和服务属性。
[0008]该控制平面指引该转发平面为共享服务的各自订户集合来对该内部处理路径创建并安装分组处理模板。分组处理模板包括多个服务对象,该多个服务对象应用转发、过滤、速率限制、排队、计数、和/或可以被共同应用到各自订户集合的其他服务。另外,每个分组处理模板指定了一个或多个变量,用于该一个或多个变量的值可以稍后“在飞行中”被确定,也就是说,在转发平面中使用该模板来处理分组的同时。该控制平面在该内部处理路径内创建并安装订户记录,这些订户记录为各自的订户指定一个或多个变量值,以及用于分组处理模板的标识符。变量值可以识别,例如,被安装到该内部处理路径的特定服务对象或者确定该服务对象功能的方面的属性值。
[0009]转发平面接收订户分组并且将订户分组映射到针对该订户的关联订户记录,并且然后在该内部处理路径内使用由该订户记录所指定的分组处理模板来处理该分组。当转发平面在执行所指定的分组处理模板的同时到达一个变量时,转发平面从该订户记录读取相关联的变量值,以识别并且然后应用订户特定服务操作或用于该变量的属性值。订户记录变量值可以以这种方式基于订户的身份而不是基于分组关键字来改变分组处理模板的执行路径,这可以在多个订户之间超载。
[0010]这些技术可以提供一个或多个优点。例如,这些技术允许控制平面使用简单的数据结构:订户记录,针对订户分组来创建并修改转发平面中的内部处理路径。换句话说,已经创建并安装了用于订户集合的分组处理模板,控制平面可以通过创建对应的订户记录来将任意数量附加订户的流量映射到该分组处理模板,这些对应的订户记录识别该分组处理模板并且包括订户特定变量值。作为结果,转发平面可以将共同的内部处理路径应用到多个订户流,同时仍然如所需要的来提供订户特定的处理。这通过减少设置时间和为了支持每个订户所要求的处理路径资源的数量两者,可以在订户数量和服务维度数量两者上增加该网络设备的可扩展性。
[0011]在一个示例中,一种方法包括:将分组处理模板安装到网络设备的转发平面,该分组处理模板指定共同服务和变量,该共同服务在用该分组处理模板进行分组处理期间应用到多个分组流,该变量确定与该分组处理模板相关联的执行路径。该方法还包括为该多个分组流的第一分组流生成第一订户记录,第一订户记录为该变量指定第一变量值。该方法进一步包括用该网络设备接收与第一分组流相关联的第一分组。该方法进一步包括通过使用由第一订户记录所指定的第一变量值来为第一分组选择与第一分组处理模板相关联的执行路径,以用该分组处理模板来处理第一分组。
[0012]在另一个示例中,网络设备包括:接口卡、包括一个或多个处理器的控制单元、以及与该接口卡相关联的转发组件。转发组件包括关键字引擎、分组处理模板和变量,该分组处理模板指定共同的服务以在用该分组处理模板进行分组处理期间应用至多个分组流,该变量确定与该分组处理模板相关联的执行路径。转发组件还包括第一订户记录,第一订户记录为该变量指定第一变量值,其中第一订户记录与该多个分组流的第一分组流相关联,其中该接口卡接收与第一分组流相关联的第一分组,并且其中该关键字引擎通过使用由第一订户记录所指定的第一变量值来执行该分组处理模板,来为第一分组选择与该分组处理模板相关联的执行路径。[0013]在另一个示例中,非瞬态计算机可读介质包含指令。这些指令促使一个或多个可编程处理器将分组处理模板和变量安装到网络设备的转发平面,该分组处理模板指定共同服务以在用该分组处理模板进行分组处理期间应用到多个分组流,该变量确定与该分组处理模板相关联的执行路径。这些指令还促使该一个或多个可编程处理器为该多个分组流的第一分组流生成第一订户记录,第一订户记录为该变量指定第一变量值。这些指令还促使该一个或多个可编程处理器用该网络设备接收与第一分组流相关联的第一分组。这些指令还促使该一个或多个可编程处理器通过使用由第一订户记录所指定的第一变量值来为第一分组选择与该分组处理模板相关联的执行路径,以用该分组处理模板来处理第一分组。
[0014]本发明的一个或多个实施例的细节阐述于附图和下文的描述中。根据描述和附图并且根据权利要求书,本发明的其他特征、目的、以及优点将是明显的。
【专利附图】
【附图说明】
[0015]图1是图示了示例网络系统的框图,在该示例网络系统中服务节点使用基于变量的转发架构以将服务应用到接入网络与核心网络之间的网络数据流量。
[0016]图2是图示了示例服务节点的框图,该示例服务节点根据所描述的技术用模板逻辑接口来处理多个订户分组流。
[0017]图3是一个框图,该框图以进一步的细节图示了图2的控制单元和服务节点的分组转发引擎的示例实例。
[0018]图4是一个框图,该框图图示了符合本公开内容中所描述的技术的示例模板路径和订户记录。
[0019]图5是一个流程图,该流程图图示了图2的服务节点使用基于变量的处理路径来处理分组的操作的示例模式。
【具体实施方式】
[0020]图1是图不了不例网络系统2的框图,在不例网络系统2中,服务节点12使用基于变量的转发架构以将服务应用到接入网络6与核心网络4之间的网络数据流量。服务节点12是接入网络6的上游(B卩,核心侧),并且提供对于接收和终止订户特定连接所必需的组件,从而产生基于分组的通信。
[0021]订户设备10A-10N(“订户设备10”)经由接入网络6附接到SP网络2来获得由SP网络2提供给订户的服务。订户设备10每个可以包括,例如,移动电话、智能电话、台式/膝上型计算机、游戏控制台、视频会议套件、工作站、无线设备、网络就绪电器、文件服务器、打印服务器、数字订户线路(DSL)路由器、电缆调制解调器、或者用以接入SP网络2的服务的其他设备。订户可以代表,例如,企业、住宅订户、或移动订户。订户设备10经由接入链路5连接到接入网络6,接入链路5每个包括有线和/或无线通信链路。如本文所使用的,术语“通信链路”包括任何形式的传送介质,有线或无线的,并且能够包括诸如网络设备的中间节点。接入链路5中的每一个可以包括,例如,非对称DSL网络、WiMAX、T-l线路、综合业务数字网(ISDN),或有线以太网的各方面。
[0022]接入网络6为了向SP网络2的核心网络4/从SP网络2的核心网络4的传送,从一个或多个订户聚合数据流量。接入网络6包括如下的网络节点(图1中未示出):这些网络节点执行通信协议来传送控制和用户数据以促进订户设备10与核心网络4之间的通信。接入网络6可以包括,例如,数字订户线路接入复用器(DSLAM)、交换机、边缘路由器、宽带远程接入服务器(BRAS)、网关通用分组无线电服务(GPRS)支持节点(GGSN)和其他GPRS支持节点(GSN)、具有UMTS陆地无线电接入网络(UTRAN)的通用移动电话系统(UMTS)、和/或3GPP长期演进(LTE)移动接入网络,3GPP长期演进移动接入网络采用,例如,服务网关(SGff),分组数据网络网关(PDN)、以及eNodeB、移动IP网络、IP网络、或者为订户10到核心网络4提供接入的另一种类型的网络。接入网6的元件可以支持各种协议,诸如互联网协议(I P )、帧中继、异步传送模式(A TM )、以太网、点对点协议(P P P )、通过以太网的点对点协议(PPPoE)、GPRS隧道协议(GTP)、以及虚拟局域网(VLAN)相关的协议,等等。订户设备10每个可以具有专用订户接口,例如,ATM虚电路(VC)或以太网虚拟局域网(VLAN),来接入网络6。
[0023]核心网络4可以表示公共网络,公共网络由服务提供商拥有并操作来相互连接多个网络,诸如接入网络6。核心网络4可以实施多协议标签交换(MPLS)转发,并且在这些实例中可以被称为MPLS网络。在一些实例中,核心网络4表示多个互连的自治系统,诸如从一个或多个服务提供商提供服务的因特网。
[0024]在一些实例中,传送链路将服务节点12耦合到接入网络6和核心网络4。服务节点12可以被考虑为位于接入网络“后面”。接入网络6与核心网络4之间所交换的所有网络流量穿过服务节点12。服务节点12可以构成回程网络的一部分,回程网络可以包括陆基传输线路,经常由服务提供商租用,以在接入网络6与核心网络4之间传送数据和控制流量。回程网络通常还包括交换机、聚合设备、以及路由器。服务节点12可以包括网络边缘或核心路由器,核心路由器向接入网络6/从接入网络6路由网络分组,或者服务节点12可以包括在接入网络6与核心网络4之间传送分组的中间网络设备。在一些实施例中,服务节点12包括由加州桑尼维尔(Sunnyvale)的瞻博(Juniper)网络公司所制造的MX系列路由器。SP网络2的各种实施例可以包括附加的服务节点。
[0025]服务节点12还可以表示接入网关,管理订户附件会话并且向核心网络4/从核心网络4路由订户数据流量的层三网络边缘设备。在这些实例中,服务节点12认证或接收针对订户设备10的认证,授权这些设备接入核心网络4,并且可以向这些设备提供网络配置信息。当订户设备10中的一个尝试附接到核心网络4时,服务节点12可以使用AAA协议(诸如远程认证拨入用户服务(RADIUS)或Diameter协议)通过对接至服务器来认证该设备,以认证该订户设备或其用户。这些实例中的服务节点12可以包括,例如,GGSN、诸如BRAS的边缘路由器、CMTS、或另外的网络设备。
[0026]在一些实施例中,服务节点12包括交换设备,该交换设备基于例如MAC层地址来转发层二(L2)流量。L2流量可以包括由MAC层地址可寻址的以太网帧,根据本文中所描述的技术,MAC层地址可以被用来识别订户或订户类别。
[0027]监管SP网络2的网络服务提供商,基于每个订户向接入服务提供商网络的订户设备10提供服务。所提供的服务可以包括,例如,传统的互联网接入、通过互联网的语音电话协议(VoIP)、视频和多媒体服务、以及安全服务。网络服务提供商可以根据一个或多个服务级别协定(SLA)来配置SP网络2以向订户提供服务,服务级别协定在多个维度中定义网络性能级别,包括所提供的服务的类型以及对应的服务参数(例如,上游/下游带宽、可靠性(例如,正常工作时间)、安全性,服务质量、速率限制、以及其他)。以这种方式,SLA或其他服务协定可以支配SP网络2与订户设备16之间的通信。
[0028]订户设备10中的任何一个可以开始与核心网络4交换数据分组,并且这些分组作为至少一个分组流的成员穿过服务节点12。术语“分组流”指代起源自特定源设备并且被发送给特定目的地设备的分组集合(作为该源设备与该目的地设备之间的应用通信会话的一部分)。在上游(来源于订户设备10)或下游(去往订户设备10)方向中,可以通过五元组:〈源网络地址,目的地网络地址,源端口,目的端口,协议〉来识别分组的流。这个五元组一般识别所接收的分组所对应的分组流,并且,依赖于流方向,订户可以与该流的源网络地址或目的地网络地址相关联。在一些实例中,接入网络6可以关于针对多个不同订户的分组流和/或关于针对同一订户的多个分组流,使五元组或其子集超载。例如,订户设备IOA可以建立去往服务节点12的多个流量承载,服务节点12每个具有与正承载的服务(例如,VoIP或成批数据传送)对应的独特QoS参数。分组流因此也可以根据其他特性来表征或识另O,包括VLAN标签、PPPoE会话、以及网络层的GTP隧道标识符或封装分组的数据链路层协议头部/标签。服务节点12可以使用深度分组检测(DPI)来识别应用。
[0029]服务节点12通过应用可配置的分组处理操作,基于针对订户分组流的分组流要求,来区别地处理订户数据流量分组,这些分组处理操作包括分组转发、过滤、速率限制、标记、计费、基于策略的路由和重定向、广告插入、合法拦截、服务的类别、以及流量整形(例如,对与订户设备10所交换的订户流量)。也就是说,服务节点12针对订户和/或相关联的订户流来接收用于可配置参数的值,并且内部地调度分组以及根据可配置参数以其他方式处理分组。
[0030]在一些情况下,分组处理操作可以共同被应用至多个分组流,该多个分组流每个根据相同的参数需要相同的操作。这些流可能每个要求附加的分组处理操作,这些附加的分组处理操作与由相同的操作将向其应用的其他流所需要的那些分组处理操作有区别。换句话说,多个流的集合可以共同具有由服务节点12所应用的一些分组处理操作,而由服务节点12所应用的其他分组处理操作在该集合内的流之间不同。在这种情况下,“独特的”指代将不被共同应用至多个分组流的该集合中所有流的那些操作。多个分组流的该集合的子集因此可以仍然共同具有“独特的”操作,尽管这些操作对该集合中的每个流不是共同的。
[0031]根据本公开内容的技术,服务节点12识别如下的多个分组流的集合:共同的分组处理操作可以被应用至多个分组流的该集合。服务节点12另外地针对多个分组流的该组来确定用于这些分组流的独特分组处理操作,并且将这些独特操作中的每个独特操作与一个变量值相关联。服务节点12在针对各自分组流的订户记录中,进一步将这些变量值与如下的分组流相关联:对应的独特操作将被应用至这些分组流。针对多个分组流的该集合的这些订户记录中的每个订户记录,还指定了共同的逻辑接口(IFL)。
[0032]服务节点12的共同IFL定义了针对该组的共同分组处理操作以及分组处理模板中的一个或多个变量。分组处理模板的这些变量表示用于订户记录中的变量值的占位符。对接至分组处理模板的服务节点12的逻辑接口在下文中被称为模板IFL。为了将附加的分组流映射到先前针对该组所定义的模板IFL,服务节点12针对该附加的分组流生成指定了变量值以及模板IFL的新订户记录。
[0033]一旦接收到与多个分组流的该组中的一个分组流相关联的分组,服务节点12就将该分组映射到其相关联的分组流,识别针对该相关联的分组流的订户记录,并且使用针对分组流的该组的模板IFL来处理该分组。为了将独特操作应用到该分组(即,因为对该组的所有分组流是共同的而对模板IFL不共同的那些操作),服务节点12在所识别的订户记录中查找这些变量值。这些变量值中的每个变量值指定了服务节点12应用到该分组的针对应用的独特操作。
[0034]作为结果,服务节点12可以使用单个模板IFL针对然而需要独特操作的多个分组流来处理分组。服务节点12的每个IFL可能需要在服务节点12内被固有限制的管理、硬件和软件资源。通过使得使用模板IFL的IFL过载但仍然提供订户特定和/或流特定的分组处理操作,这些技术增加了可以由服务节点12唯一处理的分组流和/或订户的数量。此夕卜,因为服务节点12可以通过针对新流简单地生成适当的订户记录来将新流映射到先前所定义的模板IFL,所以这些技术为每个新流消除了创建新IFL的需求,并且因此为新流减少了服务节点12所需要的平均设置时间(setup time)。
[0035]图2是图示了示例服务节点12的框图,示例服务节点12根据所描述的技术用模板逻辑接口来处理多个订户分组流。服务节点12可以包括路由器,诸如供应商边缘或顾客边缘路由器,或者另一种类型的网络设备,诸如交换机。
[0036]在这个示例中,服务节点12包括为该设备提供控制平面功能的控制单元18。控制单元18可以分布在多个实体(诸如一个或多个路由单元和可插入到机箱(chasis)中的一个或多个服务卡)之中。在这些实例中,服务节点12可以因此具有多个控制平面。服务节点12还包括采用示例分组转发引擎20A-20N (“PFE20”)和交换结构26的形式的多个转发组件,它们一起提供用于转发和以其他方式处理订户流量的转发平面。PFE20经由接口卡22A-22N (“IFC22”)接收并且发送数据分组,接口卡22A-22N每个与PFE20中各自的一个PFE相关联。PFE20中的每个PFE20以及IFC22中其相关联的一个IFC可以位于用于服务节点12的分离线路卡上(未示出)。示例线路卡包括灵活可编程集成电路(PIC)集中器(PFC)、密集端口集中器(DPC)、以及模块化端口集中器(MPC)。IFC22中的每个IFC包括用于层二(L2)技术的各种组合的接口,包括以太网、千兆以太网(GigE)、以及同步光纤联网(SONET)接口。在各个方面中,PFE30中的每个PFE可以包括更多或更少的IFC。交换结构26向PFE20中的所选择的一个PFE提供用于转发传入数据分组的高速互连,用于通过网络的输出。
[0037]控制单元18通过内部通信链路28连接到PFE20中的每个PFE20。内部通信链路28可以包括例如IOOMbps或IGbps的以太网连接。由控制单元18所执行的守护进程14A-14N(“守护14”)是运行网络管理软件的用户级别进程,除了其他功能之外,还执行路由协议来与对等路由设备通信,执行从管理员所接收的配置命令,维护并更新一个或多个路由表,管理订户流处理,并且创建一个或多个转发表用于安装到PFE20。守护进程14中的一个守护进程可以包括用于AAA协议的客户端,诸如RADIUS客户端。
[0038]控制单元18可以包括一个或多个处理器(图1中未示出),该一个或多个处理器执行软件指令,诸如被用来定义软件或计算机程序的那些软件指令,这些软件指令被存储至计算机可读存储介质(再次地,图1中未示出),诸如包括存储设备(例如,磁盘驱动器,或光学驱动器)的非瞬态计算机可读介质和/或如下的存储器:诸如随机存取存储器(RAM)(包括各种形式的动态RAM (DRAM),例如,DDR2SDRAM,或静态RAM (SRAM));闪速存储器;另一种形式的固定或可移动存储介质,该另一种形式的固定或可移动存储介质能够被用来携带或存储所期望的程序代码并以指令或数据结构的形式将数据编程,并且能够由处理器访问;或者存储指令以促使一个或多个处理器来执行本文所描述的技术的任何其他类型的易失性或非易失性存储器。可替换地,或额外地,控制单元18可以包括专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用特殊处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)、或者专用硬件的前述示例中的一个或更多示例的任意组合,用于执行本文所描述的技术。
[0039]PFE20通过当分组穿过服务节点12的内部架构时在各自的内部分组处理路径上对每个分组执行一系列的操作来处理分组。例如,可以由下列各项中的任一项来对每个分组执行操作:之前分组所指向的服务节点12的对应入口接口、入口 PFE20、锚PFE20、出口PFE20、出口接口或其他组件,诸如一个或多个服务卡。PFE20每个包括服务对象,当被执行时,这些服务对象检查每个分组的内容(或其他分组性质,例如,传入接口)并且在此基础上做出转发决定,应用过滤器,和/或执行例如计费、管理、流量分析、服务决定的类别、合法拦截、以及负载均衡。在一个示例中,PFE20中的每个PFE将服务对象布置作为下一跳数据,下一跳数据能够沿着用于服务节点的内部分组处理路径被链接在一起作为一系列的“跳”。分组处理的结果确定如下的方式:分组以该方式从IFC22中一个IFC上它的输入接口到IFC22中一个IFC上它的输出接口被PEE20转发或者以其他方式处理。一个特定的分组可以由多个PFE20来处理。
[0040]PFE接口 16呈现为如下的接口:守护进程14通过该接口可以分配PFE20的服务对象来将服务应用到订户分组流。根据所描述的技术,PFE接口 16呈现为如下的接口:守护进程14通过该接口将所分配的服务对象布置到如下的分组处理模板IFL中,该分组处理模板IFL基于各自的变量值为正被处理的分组流指定影响操作的多个变量。守护进程14经由PFE接口 16指引PFE20安装各自的分组处理模板IFL24A-24N (“模板24”)的集合,PFE20用该集合来处理订户分组流。PFE20中的每个PFE可以包括零个或更多模板IFL。例如,PFE20A的模板24A可以包括零个或更多模板IFL。PFE接口 16可以包括一个或多个用户级别或内核级别的库、程序、工具包、应用编程接口(API),并且可以经由内部通信链路28使用套接字将控制和数据消息传达给PFE20。
[0041]例如,守护进程14中的一个守护进程可以执行命令行接口(CLI),该命令行接口从用户接收命令以将合法拦截功能应用到针对订户的特定分组流。作为另一个示例,守护进程14中的一个守护进程可以接收订户简档,该订户简档指示了针对该订户的分组流应当接收特定类别的服务。作为响应,守护进程14调用PFE接口 16以将该服务应用到该分组流。PFE接口 16分配PFE20中的该服务,并且然后指引PFE20生成或修改针对该分组流的IFL来包括列表服务中的该服务,以应用到该分组流中的分组。
[0042]在一些情况下,将被新近应用到分组流的该服务也被PFE20应用到另一个分组流,并且该服务能够因此共同应用到两个分组流。根据本公开内容中所描述的技术,当部分地被服务对象(诸如过滤器、分类器、服务等级队列、计数器、策略器、合法拦截组件、流量流模板、路由表、或移动隧道端点标识符处理器)实施时,守护进程14经由PFE接口 16指引FFE20生成针对两个分组流的新模板以包括该服务。在一些实例中,多个分组流还需要在这些流中独特的服务。在这些实例中,守护进程14指引PFE20针对各自的分组流生成该新模板以包括用于独特服务的变量占位符。PFE20将该新模板安装到模板24。
[0043]在所图示的示例中,守护进程14A使用模板IFL生成消息27来指引PFE20将新模板安装到模板24A。模板IFL生成消息27包括用于应用到新模板IFL的变量列表。在一些实例中,模板IFL生成消息27将所包括的变量列表附加到已有的IFL以将该已有的IFL转换成为模板IFL。
[0044]另外,守护进程14把去往订户的分组流映射到该模板IFL并且生成用于分组流的各自订户记录。订户记录是如下的唯一属性的集合:对于每个订户分组流,需要这些唯一属性以用特定的模板IFL来唯一识别并且提供流量处理以及对该流的计费。订户记录指定模板24的模板IFL,用该模板IFL来处理属于与该订户记录对应的该分组流的分组。订户记录另外为被PFE20应用到模板24的所指定的模板IFL的变量列表指定变量值。守护进程14经由PFE接口 16将新近生成或修改的订户记录安装到PFE20的订户记录25A-25N (“订户记录25”)的集合。订户记录25中的每个订户记录可以包括零个或更多订户记录。在所图示的示例中,守护进程14A用订户记录创建消息29将订户记录下载到PFE20A的订户记录25A,以基于该订户记录的变量值来改变模板25A中所指定的模板的执行。订户记录创建消息29包括用于对应分组流的变量值列表,并且为该分组流指定模板25A中的一个模板来用其处理分组。订户记录创建消息29可以进一步包括关联的关键字结构,PFE20A可以用该关联的关键字结构以将具有匹配分组属性的分组映射到订户记录25A中正被创建的订户记录。所匹配的分组性质可以包括例如分组元数据,诸如特定分组的入口接口或出口接口(如由PFE所确定的)以及由分组和分组头部所携带的信息,诸如分组头部字段、目的地路由前缀、VLAN标签、层四(L4)或传输层协议目的地端口、隧道头部元数据(例如,TEID)、以及分组有效载荷。
[0045]当服务节点12接收到分组时,该服务节点的PFE20将这些分组映射到PFE的订户记录25中的一个订户记录。PFE20然后可以根据为模板24指定变量值的用于这些分组的订户记录25,使用模板24来处理这些分组。以这种方式,订户记录25可以针对被映射到模板24中单个模板的多个流,用如下的变量值列表来影响分组的处理路径:该变量值列表可能需要比针对每个分组流创建单独IFL所需要的资源少得多的资源。作为结果,这些技术可以减少支持任意给定分组流的资源的平均数量,并且增加由服务节点12可支持的流的数量。
[0046]图3是一个框图,该框图以进一步的细节图示了图2的PFE20的控制单元12和分组转发引擎20A(“PFE20A”)的示例实例。在这个示例中,控制单元12提供了控制平面78A,控制平面78A操作用于在用户空间40中执行的各种用户级别守护进程14的执行的环境。守护进程14在这个示例中包括命令行接口守护进程32 (“CLI32”)、路由协议守护进程34(“RPD34”)、以及简单网络管理协议守护进程36(“SNMP36”)。在这个方面,控制平面78A可以提供路由平面、服务平面、以及用于服务节点12的管理平面功能。控制单元12的各种实例可以包括图2中未示出的附加守护进程14,附加守护进程14执行其他的控制、管理、或服务平面功能和/或驱动并且以其他方式管理用于服务节点12的转发平面功能。控制单元12在一些实例中可以表示服务卡的控制单元,或者提供路由平面功能的路由单元和服务卡的控制单元的组合。
[0047]守护进程14通过内核43操作并且与内核43交互,内核43为用户级别进程提供运行时间操作环境。内核43可以包括例如UNIX操作系统衍生品,诸如Linux或伯克利软件分发(BSD)。内核43提供库和驱动器,守护进程14可以通过这些库和驱动器与底层系统交互。内核43的PFE接口 16包括内核级别库,守护进程14和其他的用户级别进程或用户级别库可以通过该内核级别库来与PFE20A的编程接口 64交互。PFE接口 16可以包括,例如,用于通过专用网络链路与PFE20A通信的套接字库。
[0048]控制单元12的硬件环境50包括微处理器52,微处理器52执行从储存器(图3中未示出)加载到主存储器(图3中也未示出)中的程序指令,以便执行控制单元12的软件栈(包括核心43和用户空间40两者)。微处理器52可以包括一个或多个通用或专用处理器,诸如数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或者任何其他的等效逻辑设备。因此,术语“处理器”或“控制器”,如本文所使用的,可以指代前述结构或可操作为执行本文所描述的技术的任何其他结构中的任何一个或多个结构。
[0049]RPD34执行一个或多个内部和/或外部的路由协议来与其他网络设备交换路由信息,并且将所接收的路由信息存储在路由信息库45 (“RIB45”)中。RIB45可以包括定义网络拓扑结构的信息,该信息包括一个或多个路由表和/或链路状态数据库。RPD34解析由RIB45中的路由信息所定义的拓扑结构,来选择或确定一个或多个通过网络的活动路由,并且然后将这些路由安装到转发信息库42(“FIB42”)。通常,RPD34生成采用基数(radix)或其他查找树形式的FIB42,以将分组信息(例如,具有目的地信息和/或标签栈的头部信息)映射到下一跳,并且最终映射到与各自的PFE20相关联的接口卡的接口端口。
[0050]命令行接口守护进程32 (“CLI32”)提供了外壳程序(shell),通过该外壳程序监管者或其他管理实体可以使用基于文本的命令来修改服务节点12的配置。简单网络管理协议守护进程36 (“SNMP36”)包括SNMP代理,SNMP代理从管理实体接收SNMP命令来设置并取回用于服务节点12的配置和管理信息。例如,使用CLI32和SNMP36,管理实体可以例如启用/禁用并且配置服务、管理用于分组流的分类和服务类别、安装路由、启用/禁用并且配置速率限制器、配置用于移动网络的流量承载器、以及配置接口。RPD34、CLI32和SNMP36在这个示例中经由PFE接口 16来配置转发平面78B,以通过将服务对象安装到PFE20来实施所配置的服务、添加/修改/删除路由、添加订户记录、添加散列键、以及修改分组处理路径。
[0051]PFE接口 16允许守护进程14驱动PFE20A的分组处理路径72的安装和配置。特别地,PFE接口 16包括应用编程接口(API),通过该应用编程接口,守护进程14可以请求对处理路径72的服务组件(例如,计数器或策略器)的分配并且接收用于所请求的服务组件的标识符、将服务组件布置到模板处理路径75 (“模板路径75”)和标准处理路径73 (“路径73”)中、安装订户记录、以及将分组流映射到订户记录和逻辑接口用于处理。
[0052]PFE20A与服务节点12的其他PFE20组合地实施转发平面78B (也称为“数据平面”)功能,以从分组在其上被接收的入口接口到分组向其发送的出口接口操作分组处理。转发平面78B使用服务对象和由控制平面78A安装到转发平面78B的查找数据,来确定通过服务节点12的数据分组转发、应用服务、对分组流进行速率限制、过滤分组、以及以其他方式处理分组。尽管图3仅详细图示了 PFE20A,但是服务节点12的PFE20中的每个PFE包括执行基本类似功能的类似模块。
[0053]PFE20A包括基于ASIC的分组处理器(“ASIC68”),该基于ASIC的分组处理器将分组映射到订户记录并且根据本文所描述的技术来执行处理路径72。ASIC68包括具有关键字引擎70的一个或多个可编程专用集成电路,关键字引擎70执行微代码(或“微指令”)来控制并应用ASIC68的固定硬件组件以处理分组“关键字”。分组关键字包括分组字段和其他参数,这些其他参数确定沿着内部处理路径(诸如模板路径75和路径73)的用于该分组的分组处理的流程。关键字引擎70包括关键字缓冲器63以存储针对关键字引擎当前正处理的对应分组的分组字段数据。关键字缓冲器63还可以提供受限的可写入存储器,该内部处理路径的元件可以对该受限的可写入存储器进行写入,以传递由未来元件可访问的消息。ASIC68的一些实例可以包括多个关键字引擎,每个关键字引擎都具有相关联的关键字缓冲器和记录缓冲器。
[0054]ASIC68的内部处理路径72 (“处理路径72”)包括可编程的、可执行的微代码和固定硬件组件,该可编程的、可执行的微代码和固定硬件组件确定分组处理动作以及由关键字引擎70所执行的其他操作。处理路径72可以包括采用例如可执行的指令、可编程的逻辑、以及专用逻辑的服务对象,这些可执行的指令、可编程的逻辑、以及专用逻辑除了其他功能之外还执行查找、对分组流进行速率限制、对分组计数、实施服务的类别、执行合法拦截、对分组分类、应用过滤器、对分组进行路由、以及操控分组关键字。PFE20A可以将处理路径72的可执行指令存储在计算机可读存储介质(诸如静态随机存取存储器(SRAM))中。尽管被图示在ASIC68内,但是处理路径72的可执行指令可以被存储在PFE20A板载ASIC68外部的存储器中。PFE20A还将附加的被图示的数据结构(诸如查找关键字表80、订户记录76、记录缓冲器65、以及关键字缓冲器63)存储在计算机可读存储介质(诸如内部或外部SRAM)中。
[0055]在一些方面中,处理路径72的一个或多个服务对象包括下一跳数据结构以发起处理。例如,在关键字引擎70的每个处理步骤的结束处,结果是可以指定附加处理或处理终止的下一跳。另外,下一跳可以指定将被关键字引擎70执行的一个或多个功能和/或将被应用的一个或多个硬件元件(例如,策略器)。下一跳因此形成能够被用来发起服务、链接下一跳以允许多个服务在单个分组上被执行、并且终止内部处理路径的主要数据结构。关键字引擎70可以与如下的结果(或“查找”)缓冲器相关联:该结果(或“查找”)缓冲器存储用于执行下一跳的结果。例如,关键字引擎70可以执行由下一跳所指定的查找,并且将该查找的结果存储到相关联的结果缓冲器。结果缓冲器的内容在下一跳链中可能影响下一跳的动作。
[0056]逻辑接口 71 (“IFL71”)是包括一个或多个逻辑接口的表格或其他数据结构,该一个或多个逻辑接口每个确定被共同应用至一组订户的服务。归因于存储器限制、PFE微处理器62能够以其在处理路径72中建立路径的速率、控制单元12与PFE20A之间的带宽、以及控制单元12能够以其分配服务对象并确定处理路径72中的路径的速率,IFL71的数量在PFE20A的各种实施方式中可能受限制。IFL71中的每个IFL是通向模板路径75或路径73中的处理路径的接口。路径73表示用于在关键字缓冲器63上由关键字引擎70执行的一个或多个处理路径。根据本公开内容的技术,模板路径75包括一个或多个处理路径,用于在关键字缓冲器63上由关键字引擎70执行,该一个或多个处理路径每个包括一个或多个变量,该一个或多个变量解析为记录缓冲器65中的变量值以确定用于执行的下一个服务对象。映射到模板路径75和路径73的各自IFL71备选地在本文中分别称为模板IFL和标准IFL。
[0057]订户记录76可以表示图2的订户记录25A的示例实施例。订户记录76中的每个订户记录包含由PFE20A所需要以处理订户分组流中的分组的信息。也就是说,订户记录76描述了 PFE20A对订户的处理。订户记录76中的每个订户记录指定IFL71中的一个IFL,用该IFL来处理被映射到该订户记录的分组。指定模板IFL的订户记录还包括一个或多个变量值,该一个或多个变量值为模板路径75中如下的一个模板路径中对应的变量指定服务对象:对于该模板路径,模板IFL是一个接口。订户记录76可以使用索引表格来存储变量值,该索引表格将表格条目索引映射到特定值。例如,用于订户记录的表格的第一条目中的变量值可以是该订户记录的用于索引O的值。备选地,订户记录可以将变量和对应值存储为相关联的数据对,相关联的数据对每个将变量名称映射到对应的值。如下文所详细描述的,订户记录76中的每个订户记录还可以包括查找关键字。
[0058]PFE微处理器62管理ASIC68,并且执行编程接口 64来为控制单元12提供接口 /提供通向控制单元12的接口。PFE微处理器62可以执行微内核来为接口提供操作环境。编程接口 64从控制单元12接收消息,指引分组转发引擎20A来配置逻辑接口 72、模板路径75、以及处理路径72的路径73。
[0059]经由PFE接口 16的守护进程14可以指引编程接口 64在应用到分组的处理路径72中为特定流分配服务对象(例如,计数器)。编程接口 64返回对该服务对象的参考,守护进程14然后可以使用订户记录72将该参考绑定到该流并且在一些情况下绑定到相关联的订户。守护进程14为该参考生成服务描述符,并且将该服务描述符添加到用于该流的订户记录,作为变量值以将该服务对象所提供的该服务与该订户记录相关联。另外,守护进程14针对由该订户记录所指定的模板IFL将变量占位符插入到模板路径75中的一个模板路径中。该变量占位符指引转发平面78B在分组处理期间,将该变量与用于该订户记录中的该变量的服务描述符相关。以这种方式,守护进程14使用该服务描述符在该订户记录中指定该服务对象的位置,以确保转发平面78B将该服务对象应用到被映射到该订户记录的分组。通过为不同的订户流分配不同的服务对象并且将用于服务对象的各自服务描述符添加到用于订户流的各自订户记录,控制平面78A (通过转发平面78B执行模板路径75中的单个模板路径)区分了针对多个不同订户流的分组处理。在一些实例中,PFE接口 16例如使用核心库或用户库,代表守护进程14来管理服务对象分配以及IFL和订户记录生成的方面。
[0060]在一些情况下,守护进程14将用于静态服务对象的服务描述符添加到模板路径75,从而转发平面78B的关键字引擎70总是对使用这些模板处理的分组执行静态服务对象。换句话说,该静态服务对象应用如下的服务:该服务在被映射到该模板的所有订户流之间是共同的。在一些情况下,守护进程14可以将变量占位符插入到模板路径75中,其指定用于该变量的默认服务描述符。在针对分组流的分组处理期间,当用于该变量的对应变量值没有在用于该分组流的订户记录72中的一个订户记录中被指定时,转发平面78B的关键字引擎70应用由默认服务描述符所指定的服务对象。
[0061]由编程接口 64提供给守护进程14的对服务对象的参考可以包括,例如,全局资源索引、由PFE20A本地管理的索引、对服务对象的组(bank)的索引与特定服务对象在该组内的偏移的组合、指向例如下一跳的存储器指针、或者数据值。例如,服务描述符可以包括指针、索引、或者解析为记录缓冲器65中的变量值的变量名称。在一些实例中,服务描述符可以另外地或备选地包括用于服务对象的索引或全局标识符。
[0062]服务节点12将传入的订户流量映射到订户记录76中的一个订户记录,来识别用其处理该流量的IFL71的逻辑接口。服务节点12可以终止订户用来通过该服务节点以访问网络的多个不同类型的订户连接。例如,服务节点12可以终止互联网协议(IPv4或IPv6)网络连接、单标签或双标签的VLAN附件、用于移动订户的GPRS和/或LTE网络隧道、PPPoE连接、和/或移动IP隧道。订户连接与上游分组流和下游分组流相关联,并且特定订户(例如,校园或企业网络,或移动电话)设备可以与多个订户连接相关联。这些终止模型中的每个终止模型需要不同的查找关键字,用该不同的查找关键字来为订户连接识别订户分组。查找关键字表格80包括指定分组参数的一个或多个查找关键字,根据终止模型,用于这些分组参数的值唯一地将该分组识别为属于针对连接到服务节点12的订户的特定分组流。例如,查找关键字表格80可以包括指定了网关GPRS支持节点(GGSN)订户Gn接口查找关键字的条目,GGSN订户Gn接口查找关键字为GPRS网络所运载的订户连接指定了用于Gn接口GTP隧道的TEID。
[0063]在所图示的实施例中,ASIC68的散列引擎74根据在查找关键字表格80中为该订户连接类型所定义的终止模型查找关键字,来执行散列函数以从分组参数生成散列值。由散列引擎74所执行的散列函数可以是SHA-1、MD5、或者从一个或多个参数值生成散列值的另一种单向函数。在这个实施例中,订户记录76中的每个订户记录存储具有分组参数值的订户记录查找关键字,这些分组参数值与如下的终止模型查找关键字表格80中的查找关键字相对应,该终止模型查找关键字表格80用于针对该订户记录的订户连接类型。散列引擎74使用该散列值来确定对被存储在存储器中的订户记录76中的一个订户记录的订户记录索引。如果在订户记录76中由该订户记录索引所参考的该订户记录的查找关键字与该分组的查找关键字相匹配,则散列引擎74将关键字所指向的(keyed-to)订户记录加载(或者指引关键字引擎70来加载)到与关键字引擎70相关联的记录缓冲器65。记录缓冲器65针对正被关键字引擎70处理的分组来存储该订户记录(包括变量值中的每个变量值)。以这种方式,关键字引擎70可以沿着正被执行的模板路径来运送变量值。关键字所指向的订户记录也指定IFL71中的一个IFL,关键字引擎70然后执行该IFL来处理关键字缓冲器63。散列引擎74的操作是用于将订户分组与订户记录相关联的步骤的一个示例。PFE20A组件可以执行其他方法来将订户分组与各自的订户记录相关联,包括分组查找关键字与各自的订户记录76查找关键字的简单匹配。
[0064]当执行用于模板IFL的模板路径75中的一个模板路径时,关键字引擎70将该模板路径的变量解析为由订户记录76中的一个订户记录的变量值所指定的服务对象。如果该订户记录没有为该变量指定变量值,则关键字引擎70可以替代地执行用于该变量的默认服务描述符,或者如果在该模板路径中没有为该变量指定这样的默认服务描述符,则为该变量执行空指令(即,无操作),并且继续执行该模板路径的剩余服务对象。
[0065]在所图示的实施例中,关键字引擎70将这些变量解析为由记录缓冲器65暂时存储的订户记录中的值。例如,模板路径的变量可以指定索引O。为了解析该变量,关键字引擎70读取记录缓冲器65所存储的订户记录的索引O所指定的服务描述符。为了使用相同的模板路径针对另一个分组流来处理分组,散列引擎74对订户记录76中用于该分组流的订户记录向记录缓冲器65提供关键字,并且将订户记录76中用于该分组流的订户记录加载到记录缓冲器65。关键字引擎70将该模板路径的变量解析为指定了用于该分组流的独特服务的服务描述符,并且应用由服务描述符所指向的服务对象。以这种方式,转发平面78B可以使用单个模板处理路径和用于该分组流中的每个分组流的不同订户记录,来处理多个不同的分组流。
[0066]图4是一个框图,该框图图示了符合本公开内容中所描述的技术的示例模板路径75A-75C和订户记录76A-76D。示例模板路径75A和订户记录76A详细地被图示。
[0067]订户记录76为内部分组处理路径(诸如模板路径中的一个模板路径)指定IFL。例如,订户记录76A包括IFL78,为模板路径75A指定IFL的数据值。订户记录76每个可以另外包括变量标识符-变量值关联对(“变量对”)的集合,其为使用变量标识符所识别的模板路径变量指定变量值。订户记录76A包括变量对80A-80N。在一些实例中,订户记录76可以包括对附加订户记录的参考,以增加可用于分组流的变量对的数量。
[0068]模板路径75A包括多个服务对象84A-84N (“服务对象”),一旦转发平面执行该模板路径,多个服务对象84A-84N每个都实施用于应用到分组的服务。根据本文所描述的技术,服务对象84中的一些服务对象表示一组服务对象,通过将变量86A-86N (“变量86”)中的一个变量解析为订户记录76中的一个订户记录中的变量值,该组服务对象是可选择的。变量86中的每个变量由对应的变量标识符识别。例如,服务对象84B1-84B4 (“服务对象84B”)是一组服务对象。服务对象84B可以每个都表示,例如,一组计数器中的不同计数器、服务等级队列的集合中的不同队列、不同的过滤器或策略器、或者用于为不同分组流处理移动性隧道的不同下一跳。用于变量标识符SOA1所识别的变量86A的在订户记录76A中的变量值,可以参考一组服务对象中的任何一个服务对象。通过将该变量解析为订户记录76A中用于变量86A的变量值,即解析为用于变量标识符SOA1的变量值80A2,转发平面确定该组服务对象中的该服务对象,以应用到属于与订户记录76A对应的分组流的分组。服务对象84中的一些服务对象,例如,服务对象84A、84C、以及84D共同被应用到经由订户记录76中的一个订户记录被映射到模板路径75A的每个分组流。
[0069]变量86中的每个变量可以是变量指令或指令组,当被执行时,该变量指令或指令组解析为用于该变量的值。用于变量的值本身可以表示采用服务描述符形式的指令或指令组,该服务描述符是指向服务对象的存储器指针。例如,在订户记录76A中,用于变量86A的变量标识符SOA1的值80A2可以指定服务对象84B2。订户记录76B-76D可以另外指定模板路径75A,并且可以包括用于变量标识符SOA1的不同值,以便在服务对象SAB1-SAB4的该组中指定独特的服务对象。作为结果,为分组执行模板路径75A的转发平面,基于该分组所属的分组流来使用订户记录76,以改变模板路径75A内的处理路径。
[0070]图5是一个流程图,该流程图图示了图2的服务节点12使用基于变量的处理路径来处理分组的操作的示例模式。在用于分组流的配置阶段期间(该配置阶段可以发生在服务节点12的操作期间以将服务应用到分组),守护进程14经由PFE接口 16将分组转发模板安装到PFE20A的模板24A (200)。分组转发模板可以指定用于由PFE20A应用的服务对象,并且进一步指定变量。另外,守护进程14生成用于该分组流的订户记录并且将其安装到PFE20A的订户记录25A (202)。订户记录指定分组转发模板,并且还可以指定用于该分组转发模板变量的变量值。
[0071]一旦在接口卡22中的一个接口卡上接收到订户分组(204),PFE20A将该订户分组与被安装到订户记录25A的订户记录相关联(206)。PFE20A从该订户记录确定所指定的逻辑接口(IFL),所指定的逻辑接口在这个示例中是用于该分组转发模板的模板IFL (208)。PFE20A使用针对该分组转发模板的对应变量的该订户记录的变量值,使用该分组转发模板来处理该分组(210)。
[0072]本公开内容中所描述的技术可以至少部分地被实施在硬件、软件、固件或它们的任意组合中。例如,所描述的技术的各个方面可以被实施在一个或多个处理器内,包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或者任何其他的等效集成或分立逻辑电路、以及这些组件的任意组合。术语“处理器”或“处理电路”可以一般性地指代,单独的或者与其他逻辑电路组合的上述逻辑电路中的任何一种,或者任何其他的等效电路。包括硬件的控制单元也可以执行本公开内容的技术中的一种或多种技术。
[0073]这样的硬件、软件和固件可以被实施在同一设备内或单独的设备内,以支持本公开内容中所描述的各种操作和功能。另外,所描述的单元、模块或组件中的任何一项可以一起被实施或者分离地被实施为分立但可互操作的逻辑设备。作为模块或单元的对不同特征的描绘旨在强调不同的功能方面,并且不必然暗示这些模块或单元必须由分离的硬件或软件组件来实现。相反地,与一个或多个模块或单元相关联的功能可以由分离的硬件或软件组件来执行,或者被集成在共同的或分离的硬件或软件组件内。
[0074]本公开内容中所描述的技术还可以在计算机可读介质中被体现或编码,诸如包含指令的非瞬态计算机可读介质或计算机可读存储介质。计算机可读介质中所嵌入或编码的指令,例如,当这些指令被执行时,可以促使可编程处理器或其他处理器执行该方法。计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PR0M)、可擦除可编程只读存储器(EPR0M)、电可擦除可编程只读存储器(EEPROM),闪速存储器、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质、或其他计算机可读存储介质。应当理解,术语“计算机可读存储介质”指代物理存储介质,而不是信号或载波,尽管术语“计算机可读介质”除了物理存储介质之外,还可以包括诸如信号的瞬态介质。
[0075]已经描述了本发明的各种实施例。这些和其他的实施例在以下权利要求的范围之内。
【权利要求】
1.一种方法,包括: 将分组处理模板安装到网络设备的转发平面,所述分组处理模板指定共同服务和变量,所述共同服务在用所述分组处理模板进行分组处理期间应用到多个分组流,所述变量确定与所述分组处理模板相关联的执行路径; 针对所述多个分组流中的第一分组流生成第一订户记录,所述第一订户记录为所述变量指定第一变量值; 利用所述网络设备接收与所述第一分组流相关联的第一分组;以及通过使用由所述第一订户记录所指定的所述第一变量值来为所述第一分组选择与所述分组处理模板相关联的执行路径,以利用所述分组处理模板处理所述第一分组。
2.根据权利要求1所述的方法,其中所述第一变量值指定与所述共同服务不同的第一服务,所述方法进一步包括: 确定所述第一订户记录的所述第一变量值;以及 响应于确定所述第一变量值,将所述第一服务应用到所述第一分组。
3.根据权利要求2所述的方法,进一步包括: 针对所述多个分组流中与所述第一分组流不同的第二分组流,生成第二订户记录,所述第二订户记录为所述变量指定第二变量值,所述第二变量值指定第二服务; 利用所述网络设备接收与所述第二分组流相关联的第二分组; 确定所述第二订户记录的所述第二变量值;以及` 响应于确定所述第二变量值,将所述第二服务应用到所述第二分组,并且不将所述第一服务应用到所述第二分组。
4.根据权利要求1所述的方法,进一步包括: 在所述转发平面中分配服务对象;以及 将用于所述服务对象的服务描述符添加到所述第一订户记录作为所述第一变量值, 其中利用所述分组处理模板来处理所述第一分组包括: 确定用于所述第一订户记录的所述第一变量值以识别所述服务描述符; 将所述服务描述符解析为所述服务对象;以及 执行所述服务对象以将第一服务应用到所述第一分组。
5.根据权利要求4所述的方法,其中利用所述分组处理模板来处理所述第一分组包括:将所述共同服务应用到所述第一分组。
6.根据权利要求4所述的方法,其中所述服务对象选自包括过滤器、分类器、服务等级队列、计数器、策略器、合法拦截组件、业务流模板、路由表、或移动隧道端点标识符处理器的组。
7.根据权利要求1所述的方法,进一步包括: 在所述分组处理模板中为所述变量设置默认服务; 针对与所述第一分组流不同的第二分组流,生成第二订户记录; 接收与所述第二分组流相关联的第二分组; 仅当所述第二订户记录为所述变量指定了指定第二服务的第二变量值时,将所述第二服务应用到所述第二分组;以及 仅当所述第二订户记录没有为所述变量指定第二变量值时,将所述默认服务应用到所述第二分组。
8.根据权利要求1所述的方法,进一步包括: 针对与所述第一分组流不同的第二分组流,生成第二订户记录; 接收与所述第二分组流相关联的第二分组; 仅当所述第二订户记录为所述变量指定了指定第二服务的第二变量值时,将所述第二服务应用到所述第二分组;以及 当所述第二订户记录没有为所述变量指定第二变量值时,针对所述变量不将操作应用到所述第二分组。
9.根据权利要求1所述的方法,其中所述第一订户记录指定所述分组处理模板。
10.根据权利要求1所述的方法,进一步包括: 将所述分组处理模板与逻辑接口相关联,所述逻辑接口为被映射到所述逻辑接口的一个或多个分组流确定共同的服务集合;以及在所述第一订户记录中指定所述逻辑接口。
11.根据权利要求10所述的方法,进一步包括: 针对与所述第一分组流不同的第二分组流,生成第二订户记录;以及 在第二订户 记录中指定所述逻辑接口。
12.根据权利要求1所述的方法,进一步包括: 将唯一地识别所述第一订户记录的订户记录查找关键字添加到所述第一订户记录;将散列函数应用到所述第一分组以生成散列索引,其中所述散列索引引用所述第一订户记录;以及 将所述订户记录查找关键字匹配到所述第一分组,以将所述第一订户记录与所述第一分组相关联。
13.根据权利要求12所述的方法,进一步包括: 将指定一个或多个分组参数的订户终止模型查找关键字添加到所述转发平面,其中用于所述分组参数的值唯一地识别用于订户终止模型的分组流;以及 将所述散列函数应用到用于所述分组参数的所述第一分组的值,其中所述网络设备在符合所述订户终止模型的订户连接中接收所述第一分组。
14.根据权利要求1所述的方法,进一步包括: 将第一订户记录数据存储到所述转发平面的记录缓冲器;以及 使用所述第一订户记录数据,用所述分组处理模板来处理所述第一分组。
15.根据权利要求1所述的方法,进一步包括: 利用所述网络设备的控制平面,来识别由所述分组处理模板所指定的所述共同服务以便应用到多个分组流; 利用所述控制平面来生成所述分组处理模板,以包括用于所述共同服务的共同服务对象; 利用所述控制平面来将所述分组处理模板安装到所述转发平面。
16.根据权利要求1所述的方法,进一步包括: 利用所述控制平面来生成所述第一订户记录; 将所述第一订户记录从所述控制平面发送给所述转发平面。
17.一种网络设备,包括: 接口卡; 包括一个或多个处理器的控制单元;以及 与所述接口卡相关联的转发组件,所述转发组件包括: 关键字引擎; 分组处理模板,其指定共同服务和变量,所述共同服务在用所述分组处理模板进行分组处理期间应用到多个分组流,所述变量确定与所述分组处理模板相关联的执行路径;以及 第一订户记录,其为所述变量指定第一变量值,其中所述第 一订户记录与所述多个分组流中的第一分组流相关联, 其中所述接口卡接收与所述第一分组流相关联的第一分组,以及其中所述关键字引擎通过使用由所述第一订户记录所指定的所述第一变量值来为所述第一分组选择与所述分组处理模板相关联的执行路径,以执行所述分组处理模板。
18.根据权利要求17所述的网络设备, 其中所述第一变量值指定与所述共同服务不同的第一服务, 其中所述关键字引擎确定所述第一订户记录的所述第一变量值,并且响应于确定所述第一变量值,将所述第一服务应用到所述第一分组。
19.根据权利要求18所述的网络设备, 其中所述转发组件进一步包括第二订户记录,所述第二订户记录为所述变量指定第二变量值,所述第二变量值指定第二`服务,其中所述第二订户记录与所述多个分组流中的第二分组流相关联, 其中所述接口卡接收与所述第二分组流相关联的第二分组, 其中所述关键字引擎确定所述第二订户记录的所述第二变量值,并且响应于确定所述第二变量值,将所述第二服务应用到所述第二分组。
20.根据权利要求17所述的网络设备,进一步包括: 由所述处理器所执行的守护进程,其为所述网络设备管理订户服务;以及 由所述处理器所执行的转发组件接口, 其中所述守护进程调用所述转发组件接口,以在所述转发组件中分配服务对象,其中所述守护进程通过将用于所述服务对象的服务描述符添加到所述第一订户记录作为所述第一变量值,来生成所述第一订户记录, 其中所述守护进程调用所述转发组件接口,以将所述订户记录发送给所述转发组件,其中所述关键字引擎为了执行所述分组处理模板,确定用于所述第一订户记录的所述第一变量值以识别所述服务描述符,将所述服务描述符解析为所述服务对象,并且执行所述服务对象以将第一服务应用到所述第一分组。
21.根据权利要求20所述的网络设备,其中所述服务对象选自包括过滤器、分类器、月艮务等级队列、计数器、策略器、合法拦截组件、业务流模板、路由表、或移动隧道端点标识符处理器的组。
22.根据权利要求17所述的网络设备,其中所述第一订户记录指定所述分组处理模板。
23.根据权利要求17所述的网络设备,进一步包括: 所述转发组件的逻辑接口,其为被映射到所述逻辑接口的一个或多个分组流确定共同的服务集合,并且与所述分组处理模板相关联, 其中所述第一订户记录指定所述逻辑接口。
24.根据权利要求23所述的网络设备, 其中所述转发组件进一步包括第二订户记录,所述第二订户记录为所述变量指定了指定第二服务的第二变量值,并且 其中所述第二订户记录指定所述逻辑接口。
25.根据权利要求17所述的网络设备,进一步包括: 所述第一订户记录的订户记录查找关键字,其唯一地识别所述第一订户记录;以及散列引擎,其将散列函数应用到所述第一分组以生成索引,其中所述散列索引引用所述第一订户记录,并且其中所述散列引擎将所述订户记录查找关键字匹配到所述第一分组,以将所述第一订户记录与所述第一分组相关联。
26.根据权利要求25所述的网络设备,进一步包括: 用于订户连接的订户接口,其符合订户终止模型;以及 查找关键字表,其包括指定一个或多个分组参数的订户终止模型查找关键字,其中用于所述分组参数的值唯一地识别用于所述订户终止模型的分组流, 其中所述接口卡在所述订户连接中接收所述第一分组,以及 其中所述散列引擎针对所述分组参数将所述散列函数应用到所述第一分组的值。
27.根据权利要求17所述的网络设备,进一步包括: 所述转发组件的记录缓冲器,其当所述关键字引擎处理所述第一分组时存储第一订户记录数据, 其中所述关键字引擎使用所述第一订户记录数据,用所述分组处理模板来处理所述第一分组。
28.根据权利要求17所述的网络设备,进一步包括: 由所述处理器所执行的守护进程,其为所述网络设备管理订户服务, 由所述处理器所执行的转发组件接口, 其中所述守护进程识别由所述分组处理模板所指定的所述共同服务以便应用到多个分组流,生成所述分组处理模板以包括用于所述共同服务的所述转发组件的共同服务对象,以及调用所述转发组件接口来将所述分组处理模板安装到所述转发组件。
29.根据权利要求17所述的网络设备,进一步包括: 由所述处理器所执行的守护进程,其为所述网络设备管理订户服务, 由所述处理器所执行的转发组件接口, 其中所述守护进程生成所述第一订户记录,并且调用所述转发组件接口以将所述第一订户记录发送给所述转发组件。
30.一种非瞬态计算机可读介质,包括指令,所述指令用于促使一个或多个可编程处理器以: 将分组处理模板安装到网络设备的转发平面,所述分组处理模板指定共同服务和变量,所述共同服务在用所述分组处理模板进行分组处理期间应用到多个分组流,所述变量确定与所述分组处理模板相关联的执行路径; 针对所述多个分组流中的第一分组流生成第一订户记录,所述第一订户记录为所述变量指定第一变量值; 利用所述网络设备接收与所述第一分组流相关联的第一分组;以及通过使用由所述第一订户记录所指定的所述第一变量值来为所述第一分组选择与所述分组处理模板相关联的执行路径,以用所述分组处理模板处理所述第一分组。
31.根据权利要求30所述的非瞬态计算机可读介质,其中所述第一变量值指定与所述共同服务不同的第一服务,并且其中所述指令进一步促使所述处理器: 确定所述第一订户记录的所述第一变量值;以及 响应于确定所述 第一变量值,将所述第一服务应用到所述第一分组。
32.根据权利要求31所述的非瞬态计算机可读介质, 针对所述多个分组流中与所述第一分组流不同的第二分组流,生成第二订户记录,所述第二订户记录为所述变量指定第二变量值,所述第二变量值指定第二服务; 利用所述网络设备接收与所述第二分组流相关联的第二分组; 确定所述第二订户记录的所述第二变量值;以及 响应于确定所述第二变量值,将所述第二服务应用到所述第二分组,并且不将所述第一服务应用到所述第二分组。
【文档编号】H04L12/851GK103765839SQ201280041386
【公开日】2014年4月30日 申请日期:2012年6月29日 优先权日:2011年6月29日
【发明者】A·斯齐斯泽克, A·梅塔, K·梅塔, G·克里施纳, J·格兰希, M·阿塔瓦拉 申请人:瞻博网络公司