在服务应用后用网络设备维持负载均衡的制作方法

文档序号:7772160阅读:194来源:国知局
在服务应用后用网络设备维持负载均衡的制作方法
【专利摘要】一般地,描述了用于在服务应用后维持负载均衡的技术。包括入口转发组件和出口转发组件以及服务卡的网络设备可以实施该技术。入口转发组件接收分组,并且响应于服务将被应用到该分组的确定,更新该分组以包括识别该入口转发组件的入口识别符,其后将更新的分组传输到服务卡。服务卡将该服务应用到更新的分组以生成经服务的分组,并且将经服务的分组传输到由该入口识别符所识别的入口转发组件,以便于跨多个转发组件维持分组流的负载均衡。入口转发组件确定向其转发经服务的分组的下一跳,并且出口转发组件将经服务的分组转发到所确定的下一跳。
【专利说明】在服务应用后用网络设备维持负载均衡
【技术领域】
[0001]本公开内容涉及计算机网络,并且更特别地涉及计算机网络内的负载均衡。
【背景技术】
[0002]计算机网络是能够交换数据并共享资源的互相连接的计算设备的合集。在基于分组的网络中,计算设备通过将数据分成称为分组的小块而通信数据,分组个别地跨网络从源设备到目的地设备而被路由。目的地设备从分组提取数据,并且将数据汇集成它的最初形式。将数据分成分组使得源设备能够仅重发在传输期间可能丢失的那些个别的分组。
[0003]网络路由器维持路由信息,路由信息描述了通过网络的可用路由。当接收分组时,路由器检查分组内的信息,并根据路由信息转发分组。为了维持网络的准确表征,路由器根据一个或多个路由协议交换路由信息,诸如内部网关协议(IGP )或边界网关协议(BGP )。
[0004]在一些实例中,路由器可以实施被指代为加权的等价多路径(WECMP)的负载均衡形式,以跨多个路径通过网络将分组流分派给相同的目的地设备。就是说,计算机网络可以为入口路由器和出口路由器之间的多个路径做准备。入口路由器可以为特定分组流选择这些路径之一,并且为另一个分组流选择另一个路径,这两个路径在成本或其它指标方面可以是相等的。在选择这些路径中,入口路由器可以尝试跨路径分发这些分组流,以便于避免将分组流过度分配到任何一个路径。该形式的负载均衡可以被加权,因为入口路由器可以将权重分配给每条路径,并根据所分配的权重分派分组流。
[0005]路由器还可以实施服务,诸如安全服务、网络地址转换(NAT)服务、隧道服务、防火墙服务等。典型地,通过将分组流重定向到一个或多个包括在路由器内的服务卡,以在将流中的分组转发到它们的计划目的地之前将服务应用到分组流的分组,入口路由器应用该些服务。然而,这些服务的应用可能扰乱根据WECMP的分组转发,从而路由器不根据所定义的权重执行适当的负载均衡来分发流的分组。

【发明内容】

[0006]—般地,描述了一种技术,该技术用于在对分组流的一个或多个服务的应用之后,使得网络设备能够执行分组流的负载均衡。不是更新服务卡以执行路径选择,或者以其它方式散列至少一部分的分组以伪随机地识别能够执行路径选择的转发组件,而是接收分组的、网络设备的入口转发组件可以标记、加标签或以其它方式更新这个分组以指定识别该入口转发组件的入口识别符。作为结果,网络设备的服务卡可以在将一个或多个服务应用到所接收的分组后,将经服务的分组传输回到由入口识别符所识别的转发组件。这个入口转发组件可以配置为,当确定了经服务的分组沿其转发的多个路径(经常具有相等的成本)中的一个路径时,适当地应用加权等价多路径算法(WECMP )。
[0007]通过潜在地避免服务卡的更新以执行这个路径选择,该技术可以增进成本的节约。另外,通过使得服务卡能够放弃分组的散列以伪随机地识别将充当用于分组的入口转发组件、但不配置为根据WECMP算法执行路径选择的转发组件,该技术可以促进根据WECMP的负载均衡。尽管关于WECMP来描述,该技术可以一般地关于任何负载均衡算法来执行,诸如在执行链路聚合和其它形式的多路径或多链路负载均衡中所利用的那些算法。
[0008]在一个方面,一种方法包括:用包括在网络设备内的多个转发组件中的第一转发组件来接收分组,其中多个转发组件中的该第一转发组件充当用于所接收的分组所对应的分组流的入口转发组件。该方法进一步包括:用该入口转发组件确定服务将被应用到该分组;用入口转发组件更新该分组,来包括识别该入口转发组件的入口识别符,作为对确定服务将被应用到该分组的响应;以及用该入口转发组件将更新的分组传输到应用服务的服务卡。该方法还包括:用服务卡将该服务应用到更新的分组以生成经服务的分组;并且用服务卡将经服务的分组传输到由该入口识别符所识别的入口转发组件,以便于跨多个转发组件维持分组流的负载均衡。另外地,该方法包括:用该入口转发组件确定向其转发经服务的分组的多个下一跳中的下一跳;并且用多个转发组件中的第二转发组件将经服务的分组转发到所确定下一跳,其中多个转发组件中的该第二转发组件充当用于经服务的分组所对应的分组流的出口转发组件。
[0009]在另一个方面,一种网络设备包括多个转发组件,其中多个转发组件中的第一转发组件接收分组,并且充当用于所接收的分组所对应的分组流的入口转发组件,确定服务将被应用到该分组,响应于服务将被应用到该分组的确定,更新该分组以包括识别该入口转发组件的入口识别符,并且将更新的分组传输到应用该服务的服务卡。该网络设备进一步包括服务卡,该服务卡将该服务应用到更新的分组以生成经服务的分组,并且将经服务的分组传输到由该入口识别符所识别的入口转发组件,以便于跨多个转发组件维持分组流的负载均衡。该入口转发组件确定向其转发经服务的分组的多个下一跳中的下一跳。多个转发组件中的第二转发组件充当用于服务分组所对应的分组流的出口转发组件,并且将经服务的分组转发到所确定下一跳。
[0010]在另一个方面,一种服务卡配置为被插入到网络设备并耦合到网络设备的多个转发组件,该服务卡包括:控制单元,从充当用于该分组所对应的分组流的入口转发组件的、多个转发组件中的第一转发组件接收分组,其中该分组包括内部服务分组报头,该内部服务分组报头包括指定入口识别符的字段,该入口识别符识别该入口转发组件。该控制单元执行服务引擎,该服务引擎将服务应用到更新的分组以生成经服务的分组。该控制单元进一步将经服务的分组传输到由该入口识别符所识别的入口转发组件,以便于跨多个转发组件维持分组流的负载均衡。
[0011]该技术的一个或多个实施例的细节在下面随附的附图和描述中来阐述。该技术的其它特征、目的和优点通过该描述和附图,以及通过权利要求书将是明显的。
【专利附图】

【附图说明】
[0012]图1是图示了示例网络系统的框图,该示例网络系统根据被公开内容中所描述的技术来执行服务应用后负载均衡。
[0013]图2是更详细地图示了图1的路由器之一的框图。
[0014]图3是图示了根据本公开内容所描述的技术通过图1的路由器之一的分组的逻辑流的框图。
[0015]图4是图示了示例服务cookie的图,该示例服务cookie根据本公开内容所描述的技术而使用以指定入口识别符。
[0016]图5是图示了在执行本公开内容中所描述的服务应用后负载均衡技术中网络设备的示例操作的流程图。
[0017]图6是图示了示例网络系统的框图,该示例网络系统执行在两个或更多链路的聚合束的环境中、在本公开内容中所描述的服务应用后负载均衡技术。
【具体实施方式】
[0018]图1是图示了示例网络系统2的框图,示例网络系统2执行了根据本公开内容中所描述的技术的服务后应用负载均衡。网络系统2包括网络6,网络6包括路由器10A-10E(“路由器10”),路由器10A-10E将从源设备12A-12N (“源设备12”)接收的网络分组朝向目的地设备14进行路由。网络6可以包括公共网络,诸如因特网,专用网络,诸如由企业或服务提供商所拥有并操作的那些网络,或者公共网络和专用网络两者的组合。作为结果,网络6可以在本文中替换地被指代为服务提供商(SP)网络。网络6可以包括一个或多个广域网(WAN)、局域网(LAN)、虚拟局域网(VLAN)、虚拟专用网(VPN)和/或其它类型的网络。
[0019]在一些实例中,网络6可以是互联网协议网络,在互联网协议网络中,路由器10使用IP转发用于传送网络分组。在其它实例中,网络6可以是标签交换网络,在标签交换网络中,诸如路由器10的网络设备,经常被指代为标签交换路由器或LSR,使用多协议标签交换(MPLS)信令协议来建立标签交换路径(LSP),标签交换路径用于传送从源设备12所接收的网络分组。网络6的MPLS数据运输机制可以视为位于开放系统互连(OSI)模型的层2和层3之间,并且经常被称为层2.5协议。对由数字所跟随的层的引用可以指代OSI模型的特定层。关于OSI模型的更多信息能够在由Hubert Zimmermann发表在日期为1980年4月的 IEEE Transactions on Communications 第 4 期第 28 卷中的、标题为“OSI ReferenceModel-the ISO Model of Architecture for Open Systems Interconnection,,的 IEEE出版物中找到,其通过引用如同在本文中完全阐述地合并于此。关于MPLS的进一步信息和MPLS的各种特征,以及关于MPLS的通用架构信息能够在通过引用并入本文的、日期为2001年I月、由互联网工程任务组(IETF)的网络工作组所准备的、标题为“MultiprotocolLabel Switching Architecture”的请求注解(RFC)3031中找到。在一些实例中,网络6可以提供通用MPLS(GMPLS)。虽然本文在一些实例中关于MPLS进行描述,但是本公开内容的技术还可应用到GMPLS。
[0020]因此,虽然图1中示出为单个网络6,但是网络6可以包括任意数量的互相连接的公共或专用网络,其中各种网络互相连接以形成各种虚拟网络。另外,网络6可以包括用于转发网络业务量的多种其它网络设备,诸如另外的路由器、交换机或网桥。网络系统2的特定配置仅是一种示例,并且路由器10可以位于单个网络中或者多个网络内。虽然关于路由器进行了描述,但是本技术的方面可应用到其它网络设备,诸如网桥、交换机、网关、网络缓存以及网络加速设备。
[0021]在图1的示例中,网络系统2包括多个源设备12和耦合到中间网络6的目的地设备14。源设备12和目的地设备14的每一个可以是个人计算机、膝上型计算机、移动电话、网络电话、电视机顶盒、集成到交通工具中的网络设备、视频游戏系统、销售点设备、个人数字助理、中间网络设备、网络电器、超级计算机、大型计算机(mainframe computer)或者能够与网络6对接并且通过网络6通信的另一种类型的设备。
[0022]源设备12和目的地设备14经由接入链路5连接到网络6,接入链路5可以包括有线和/或无线通信链路。如本文所使用的,术语“通信链路”包括任何形式的有线或无线传送介质,并且能够包括诸如网络设备的中间节点。每个接入链路5可以包括,例如,不对称DSL网络、WiMAX、T-l线路、综合业务数字网(ISDN)或者有线以太网的各方面。
[0023]网络6的多个物理和虚拟通信链路将路由器10互相连接,以促进路由器之间的控制和数据通信。网络6的物理链路可以包括,例如,以太网PHY、同步光网络(SONET)/同步数字体系(SDH)、Lambda、或者包括分组传送能力的其它的层2数据链路。网络6的逻辑链路可以包括,例如,以太网虚拟LAN、MPLS LSP或者MPLS-TE LSP0 [0024]路由器10采用一个或多个内部网关协议(IGP)来确定用于网络6内部中的通信链路的链路状态/度量。例如,路由器IOA可以使用开放式最短路径优先(OSPF)或中间系统-中间系统(IS-1S)协议,来与路由器10B-10E交换路由信息。路由器IOA将该路由信息存储到路由信息库,路由器使用该路由信息库来计算去往网络6内所通告的目的地地址的最优路由。
[0025]在一些实例中,路由器10支持业务量工程以改进通过网络6的路径的利用。一般而言,业务量工程指代如下的操作:将业务量流远离由内部网关协议用于网络6所计算的最短路径,并且朝向潜在地较少拥堵的、或者以其它方式更期望的(从操作的观点)跨网络的物理路径移动。例如,路由器10可以使用具有业务量工程扩展的资源预留协议(RSVP-TE)或者另一个标签分发协议(例如,标签分发协议(LDP)),建立一个或多个连接各个路由器10对的LSP隧道,来将网络业务量远离网络故障、拥塞和瓶颈而路由。包括去往LSP隧道的接口的路由器将一个度量与LSP相关联。LSP度量可以采取下层IP路径的度量,LSP通过该下层IP路径而操作,LSP度量或者可以由网络6的管理员配置为不同的值,来影响路由器10的路由决定。路由器10执行内部网关协议,以经由路由协议消息来通信、并且交换为LSP隧道所建立的度量、并且将这些度量存储在各自的路由信息库中,该路由信息库用于计算去往网络6内所通告的目的地地址的最优路由。例如,路由器10可以使用OSPF转发邻接(FA)来通告LSP隧道为网络6的IGP链路。因此,如本文所使用的,术语“链路”或“通信链路”还可以指代通过层2通信链路的LSP操作。
[0026]RSVP-TE建立的LSP使用路由器10上的路径状态来预留资源,以确保这样的资源可用于促进针对使用LSP转发的网络业务量的服务等级(CoS)。例如,路由器IOA可以朝向路由器IOD发布RSVP路径消息以建立LSP,并且使用路由器IOA和路由器IOB两者上的路径状态来为LSP预留一定量的带宽。路由器10AU0B必须为映射到LSP的网络业务量维持所预留的带宽量,直到该LSP被抢占或拆卸。RSVP-TE在2001年12月的、互联网工程任务组的网络工作组的请求注解3209中Awduche等人的“RSVP-TE !Extensions to RSVP forLSP Tunnels”中更完全地进行了描述,其如同文本完全阐述地通过引用而被并入。
[0027]在一些示例中,路由器10可以使用对IGP的扩展,另外地分发关于网络负载的详细信息。例如,路由器10可以用使用新的类型长度值(TLV)的业务量工程扩展来执行IS-1S0作为另一个示例,路由器10可以用使用不透明链路状态通告(LSA)的业务量工程扩展来执行0SPF,以在链路状态通告中除了链路状态和度量之外还分发链路属性。在一些示例中,路由器10可以通告针对网络6的链路的当前可用带宽,其考虑了在其它方面未考虑的流量。就是说,路由器10监控并通告表达为速率(例如MB/s)的用于一个链路的当前可用带宽,其考虑了既未经由RSVP-TE而预留、当前又未用来通过该链路传送互联网协议(IP)分组或LDP分组的带宽,其中LDP分组是具有由LDP所分发的附带标签的分组。用于一个链路当前可用的带宽因此是既未预留也未被用来使用未预留的资源来传送业务量。关于该详细信息、新的TLV、对不透明LSA的扩展以及路由器可以如何分发该信息的更多信息,在2012年6月28日提交的、标题为“PATH WEIGHTED EQUAL-COST MULTIPATH”的未决美国专利申请序列N0.13/536, 487中可以得到,其内容以它的整体通过引用合并于此。
[0028]一个或多个路由器10还可以实施一个或多个服务,经常包括一个或多个服务卡来执行该服务。作为一些示例,这些服务可以包括:深度包检测服务、网络地址转换(NAT)服务、防火墙服务、隧道服务、反恶意软件服务、防病毒服务、以及加密服务。这些服务中的一些的应用可以影响由最初接收分组的分组转发组件所执行的路径选择(或者,换句话说,转发决定)。为了举例说明,NAT服务一般包括用不同的源地址和/或源端口来替代分组的互连网协议(IP)分组报头中指定的源地址和/或源端口。当执行WECMP时,当尝试将分组所对应的分组流分发到两个路径(通常,成本相等)时,路由器可以利用包括源端口和源地址两者的所谓五元组(five-tuple)。因此,关于对应于流的分组而执行一个或多个服务的路由器,其中这些流还跨两个或更多路径和/或两个或更多链路(诸如聚合链路的示例中)主动地进行负载均衡,该路由器在执行路径选择或转发决定前,典型地必须首先将分组转发到服务卡。但是,服务卡典型地不配置为执行路径选择或做出转发决定。服务卡功能的该缺乏可能另外地影响路径选择,并且影响跨多个路径和/或链路的分组流的负载均衡。
[0029]为了举例说明,假定路由器IOB将一个或多个服务应用到对应于分组流22的分组,路由器IOA可以从源设备12A-12N之一接收分组流22。路由器IOA可以实施负载均衡算法,诸如ECMP和/或WECMP,以具体地经由链路15A、15B之一将这个分组发送到路由器10B,以便于跨将路由器IOB耦合到路由器IOA的链路15A、15B维持均衡的负载。
[0030]路由器IOB可以接收这个分组,将这个分组归类为属于将对其执行服务和负载均衡两者的流。然后,路由器IOB可以确定该分组首先被发送到包括在路由器IOB中的服务卡,因为已经给定一个或多个服务可以影响转发决定,路由器IOB被配置为首先应用服务。然后,路由器IOB的服务卡可以接收这个分组并应用该服务。然而,如上面所指出的,服务卡可能不被配置为或者以其它方式具有该能力(例如,必需的硬件和/或软件)。然后,服务卡可以将散列函数应用到这个经服务的分组(诸如,上面所指出的、除了目的地地址、目的地端口和协议,还包括源地址、源端口两者的五元组)的至少一部分,来以伪随机方式识别能够执行路径选择的转发组件。但是,因为这将这个分组散列伪随机地分配到转发组件之一,当经由链路15A、15B发送这些分组到路由器IOB时,服务卡不能以由路由器IOA先前确保的方式来保证负载跨转发组件保持均衡。
[0031]就是说,ECMP决定可能已经由外部路由器执行,在这个示例中即路由器10A,路由器IOA经由多个链路15A、15B连接到路由器10B。路由器IOA可能已经使用了一些算法来在链路15A、15B之间分发负载,诸如WECMP。如果链路落在路由器的不同转发组件上,则来自不同入口转发组件的业务量可以转到服务卡。如果将由服务卡服务的业务量的量很高,则服务卡可能需要在可用的转发组件之间分发负载。为了分发这个负载,服务卡可以在分组内容(诸如五元组)上执行散列,以在转发组件之间分发这些分组。然而,管理员可能已经规定了路由器IOA来在该些链路之间执行负载均衡,依次地,管理员在路由器IOB的转发组件上分发负载。当服务卡散列分组以将它们伪随机地分发回到转发组件时,服务卡可能无意地修改经由路由器IOA所提供的负载均衡,导致了不遵循由路由器IOA所提供的负载均衡的负载不均衡。以该方式,这些服务的应用可能扰乱根据WECMP的分组转发,使得路由器IOA没有执行维持适当的负载均衡。
[0032]根据本公开内容中所描述的技术,在将一个或多个服务应用到分组流后,路由器IOB (或者路由器10C-10E的其它任何一个,或者任何其它类型的网络设备)可以维持分组流的负载均衡。不是更新服务卡以执行路径选择,或者以其它方式散列分组的至少一部分来伪随机地识别能够执行路径选择的转发组件,而是接收分组的路由器IOB的入口转发组件可以标记、加标签或者以其它方式更新这个分组,来指定识别该入口转发组件的入口识别符。作为结果,路由器IOB的服务卡可以在将一个或多个服务应用到所接收的分组后,将经服务的分组传输回到由入口识别符所识别的转发组件,以便于当在路由器IOA中配置WECMP时,以与管理员所意图的方式一致的方式,跨转发组件均衡负载。通过潜在地避免服务卡的更新,来执行这个路径选择,该技术可以增进成本节约。另外地,通过使得服务卡能够放弃分组的散列来伪随机地识别充当用于分组的入口转发组件的转发组件,该技术可以以与如由路由器IOA所执行的WECMP—致的方式,来促进跨入口转发组件的业务量的负载均衡。尽管关于WECMP进行了描述,该技术可以一般地关于任何负载均衡算法来执行,诸如在执行链路聚合中所利用的那些算法,以及其它形式的多路径或多链路负载均衡。
[0033]在操作中,路由器IOB可以用多个转发组件中的第一转发组件来接收分组。这个第一转发组件可以充当指代为用于分组流的“入口转发组件”,即所接收的分组所对应的、图1的示例中的分组流22。为了充当入口转发组件,这个转发组件可以执行慢路径处理,来配置过滤器和其它硬件逻辑,使得对应于这个流22的分组可以更快地被处理。这个入口转发组件可以安装用于流22的过滤器,该过滤器指示了一个或多个服务将被应用到对应于这个流的分组。
[0034]路由器IOA可以使用负载均衡算法,诸如确保适当负载均衡的WEMCP,将这个流22分配到链路15A。适当的负载均衡可以包括,以对应于分配给每一个这些链路15A、15B的所配置的权重的方式将流分配到链路,诸如链路15A、15B。例如,40的权重可以分配给链路15A,并且60的权重可以分配给链路15B,其中40的权重指示了流的负载均衡子集内的所有流的百分之四十将分配给链路15A,而流的这个负载均衡子集中的所有流的百分之六十将分配给链路15B。然后,路由器IOA可以维持负载均衡统计,来确定去往链路15A、15B的流的实际分发是否对应于(通常在某个定义的阈值或百分比内)所分配给路径的权重。以该方式,路由器IOA有效地跨将路由器IOA耦合到路由器IOB的链路15A、15B对流进行负载均衡。
[0035]在任何情况下,路由器IOB的入口转发组件可以确定一个服务将被应用到分组。入口转发组件可以使用包括在分组的IP报头中的五元组,在转发信息库(FIB)中执行查找,来确定一个或多个服务将被应用到分组。FIB可以表示路由信息库(RIB)的子集,其中路由器IOB的控制平面可以分解RIB以生成FIB。这个FIB典型地包括指定了所谓“下一跳”的、关联于五元组(或它的一部分)的条目,对应的分组将被转发到该“下一跳”。FIB还可以包括内部下一跳,内部下一跳识别了服务卡和/或其它类型的卡,或者识别了转发组件将把对应的分组向其转发的、路由器IOB内的组件。FIB还可以用一系列的下一跳来配置,一系列的下一跳指定了第一内部组件(诸如服务卡),第一内部组件由指定了诸如路由器IOD的另一个网络设备的下一跳所跟随。
[0036]在识别或者以其它方式确定一个服务将被应用到分组后,路由器IOB的入口转发组件然后可以更新该分组来包括入口识别符,入口识别符响应于服务将被应用到该分组的确定,识别入口转发组件。这个入口识别符还可以指代为入口转发组件识别符。入口转发组件可以设定这个识别符直接识别入口转发组件,或者可以指定这个识别符,使得这个识别符可以结合表格或其它数据结构而被使用,来分解所分配给入口转发组件的虚拟识别符。经常地,虚拟识别符被分配并用来在各种分组转发组件之间切换,其中这个虚拟识别符识别插槽(s IOt)或其它稱合机构,入口转发组件插入到该插槽或其它稱合机构中。
[0037]—旦用入口识别符更新分组,入口转发组件将更新的分组传输到应用了该服务的服务卡。然后,服务卡将该服务应用到更新的分组,以生成经服务的分组,并且将经服务的分组传输到由入口识别符所识别的入口转发组件。因此,不是在该分组的五元组上执行散列,来伪随机地将这个分组分配到任何给定的一个转发组件,而是为了执行路径选择的目的,服务卡利用入口识别符来将该分组发送回到入口转发组件,以便于跨多个转发组件维持分组流的负载均衡。
[0038]因此,入口转发组件确定向其转发经服务的分组的多个下一跳中的下一跳。然后,入口转发组件将这个分组传输到与路由器IOD对接的第二转发组件。这个第二转发组件充当用于这个分组的出口转发组件,并且可以移除任何内部分组报头,执行一个或多个关于分组的格式的操作,更新分组报头等。然后,出口转发组件可以将经服务的分组转发到所确定的下一跳,即图1的示例中的路由器10D。
[0039]以该方式,该技术可以通过潜在地避免服务卡的更新,来执行该路径选择,增进成本的节约。该技术与服务卡的更新的散列操作以及在服务卡的更新方面相比,还可以增进减小的实施方式复杂性。另外,通过使得服务卡能够放弃分组的散列来伪随机地识别充当用于该分组的入口转发组件的转发组件,该技术可以跨如根据WECMP由上游外部路由器所决定的转发组件来维持负载均衡。再次,尽管关于WECMP进行了描述,但是该技术可以一般地关于任何负载均衡算法来执行,诸如在执行链路聚合中所利用的那些算法,以及多路径或多链路负载均衡的其它形式。
[0040]图2是更详细地图示了图1的路由器IOB的框图。在图2的示例中,路由器IOB包括转发平面30、路由平面32和服务平面34。转发平面30可以由专用的转发集成电路提供,专用的转发集成电路通常关联于网络路由器的高端路由和转发组件。标题为 MULT1-CHASSIS ROUTER WITH MULTIPLEXED OPTICAL INTERCONNECTS 的美国专利申请2008/0044181描述了一种多机架(mult1-chassis)路由器,其中多级交换结构,诸如3级Clos交换结构,被用作高端转发平面,来中继该多机架路由器的多个路由节点之间的分组。美国专利申请2008/0044181的全部内容通过弓I用并入本文。
[0041]路由器IOB可以以利用共享的转发平面30的方式集成路由平面32和服务平面34。转发平面30可以表示丰富的和动态的共享转发平面,可选地通过多机架路由器而分发。此外,如上面所指出的,转发平面30可以由通常关联于网络路由器的高端路由和转发组件的专用转发集成电路来提供。因此,路由平面32和转发平面30操作为高端路由器,并且服务平面36已经紧密地集成在路由器IOB内(例如,通过服务卡36的方式),以便于以共享、协作的方式使用路由组件的转发平面30。路由器IOB的一个示例实施例的进一步细节能够在2008年5月 20 日提交的、标题为“STREAMLINED PACKET FORWARDING USING DYNAMICFILTERS FOR ROUTING AND SECURITY IN A SHARED FORWARDING PLANE”的美国临时专利申请61/054,692中找到,其通过引用并入本文。
[0042]路由平面32提供了路由引擎38,路由引擎38主要负责维持路由信息库(RIB)40,来反映网络和其它网络实体的当前拓扑,其中路由器IOB连接到该其它网络实体。例如,路由引擎38为路由协议42的执行提供了操作环境,路由协议42与对等路由器通信,并且周期地更新RIB40,来准确地反映网络和其它网络实体的拓扑。示例协议包括路由和标签交换协议,诸如边界网关协议(BGP)、中间系统到中间系统(ISIS)路由协议、资源预留协议(RSVP )、指代为“ RSVP-TE ”的RSVP的业务量工程(TE )版本、内部网关协议(IGP )、链路状态协议和标签分发协议(LDP )。
[0043]路由引擎38可以经由协议42接收这个路由信息,并且更新或以其它方式维持RIB40,来反映网络6的当前拓扑。该拓扑可以为通过网络的多个不同的路径作准备,来到达任何给定的目的地设备。在图1的示例中,两个路径被示出从源设备12到目的地设备14,它们标示为路径16A、16B。在一些实例中,路由引擎38可以选择两个路径之一来到达目的地设备14。
[0044]管理员45可以经由用户接口(UI)模块46与路由引擎38对接,用户接口(UI)模块46可以表示一个模块,通过该模块用户或供应系统可以与路由引擎38对接。例如,n模块46可以包括命令行接口(CLI)或图形用户接口(⑶I),命令行接口可以接受命令和/或脚本形式的输入。管理员45可以与UI模块46对接,以配置各种组件路由器10B,包括路由引擎38。一旦被配置,路由引擎38然后可以分解RIB40来生成转发信息。然后,路由引擎38可以与转发平面30对接,以将这个转发信息安装到转发信息库(FIB) 48中。
[0045]转发组件50A维持FIB48,FIB48将网络目的地与特定的下一跳以及路由器IOB的输出接口卡的对应接口端口相关联。路由引擎38可以生成基数树形式的FIB48,基数树具有表示网络内目的地的叶节点。美国专利7,184,437提供了关于利用基数树用于路由决定(route resolution)的路由器的示例性实施例的细节,其内容以它的整体通过引用并入本文。
[0046]当转发分组时,转发组件50A基于该分组的报头内的信息,穿过基数树到叶节点,以最终选择向其转发该分组的下一跳和输出接口。基于该选择,转发组件可以将分组直接输出到输出接口,或者在高端路由器的多级交换结构的情形中,转发组件可以将该分组转发到用于切换到适当输出接口的随后级。
[0047]服务平面34表示一种逻辑或物理平面,该逻辑或物理平面以服务卡36的形式提供一个或多个服务。服务卡36可以表示物理卡,该物理卡配置为插入到路由器10B中,并且经由底板、交换结构或其它通信介质耦合到转发平面30和路由平面32。典型地,服务卡36可以包括直接耦合到交换结构的卡。管理员45可以与n模块46对接来与路由引擎38对接,以指定哪个分组流将经历一个或多个服务卡36的服务处理。在指定这些流后,路由引擎38可以更新RIB40,来反映这些流将经历服务处理,从而当分解FIB48时,转发信息可以指示各种流将经历服务处理。经常地,这个转发信息可以通过为这些流指定将这些流的分组定向到服务卡36之一的下一跳(其中,这个下一跳可以指代为“内部下一跳”),来指定这些流需要服务处理。在路由器IOB外部的另外的下一跳可以被指定,其中在这个示例中,外部的下一跳可以指定该分组将被转发到路径16A、16B的哪一个。内部的下一跳可以链接到外部的下一跳,其中在这个示例中,路由器IOB可以为任何给定的流维持两个下一跳(并且可能更多)。
[0048]服务卡36每个可以表示能够应用一个或多个服务的卡。服务卡36可以包括控制单元50,控制单元50可以表示执行软件指令的一个或多个通用处理器(未示出在图1中),软件指令诸如存储到非暂时性计算机可读介质(再次,未示出在图1中)的、用来定义软件或计算机程序的那些,非暂时性计算机可读介质诸如存储设备(例如,磁盘驱动器或光驱)、或存储器(诸如闪存、随机访问存储器或RAM)或任何其它类型的易失性或非易失性存储器,它们存储指令以促使一个或多个处理器来执行本文所描述的技术。可替换地,控制单元50可表示专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用特殊处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)、或者一个或多个专用硬件的前述示例的任何组合,用于执行本文所描述的技术。在一些实例中,控制单元50可以指代为处理器。
[0049]控制单元50可以实施服务引擎52,服务引擎52可以表示将一个或多个服务应用到分组、分组的流和/或分组的会话的模块或单元(其中会话指代从源到目的地的流与从相同目的地到相同源的流的组合)。服务引擎52可以执行任何类型的服务,包括上面列出的那些。为了例证的目的,假定服务引擎52实施了修改、编辑或更新分组中的信息的服务,该服务一般地使用在执行路径选择或以其它方式作出转发决定中。修改、编辑或更新该信息的示例服务可以包括NAT服务和隧道服务。
[0050]在图2的示例中,转发组件50A接收分组52,并且充当入口转发组件,调用流控制单元54。流控制单元54表示选择性地将分组定向到服务平面34用于处理的模块。流控制单元54可以访问FIB48以确定分组52是否将被发送到内部下一跳,例如服务平面34的服务卡36之一,或者经由另一个转发组件发送到外部下一跳,该另一个转发组件充当用于分组52所对应的流的出口转发组件,即出口转发组件50B。尽管被指代为入口转发组件50A和出口转发组件50B,但是转发组件50A、50B的每一个在底层硬件和/或逻辑方面可以是彼此相同或相似的。就是说,转发组件50A、50B的入口和出口名称仅标示了转发组件50A用于分组52所对应的分组流充当入口转发组件,并且转发组件50B用于分组52所对应的分组流充当出口转发组件。此外,转发平面30可以包括多于两个转发组件,其中为了例证容易性的目的,这些另外的转发组件未示出在图2的示例中。
[0051]无论如何,流控制单元54可以确定分组52将被传输到服务卡36。响应于确定分组52将被传输到服务卡36,使得服务卡36能够将服务应用到分组52,入口转发组件50A的流控制单元54可以附加一个内部服务分组报头(其还可以被指代为“服务cookie”)。流控制单元54可以指定这个内部服务分组报头以包括一个字段,该字段存储识别转发组件50A的入口识别符。流控制单元54可以将这个内部服务分组报头附加到分组52,以生成更新的分组56。然后,流控制单元54可以将分组52重定向到服务平面34的服务卡36。服务卡36可以接收这个分组,移除该内部服务分组报头,从该内部服务分组报头解析入口识别符。然后,服务卡36的控制单元50可以调用服务引擎52,服务引擎52将服务应用到更新的分组56,生成经服务的分组58。服务分组58被假定与分组52不同在于:当作出转发决定或执行路径选择时所使用的服务分组58的至少一个方面,不同于分组52 (诸如,经服务的分组58的五元组的至少一个方面不同于分组52的五元组)。在这个方面,服务卡36将服务应用到更新的分组56,以生成经服务的分组58,使得经服务的分组58的五元组不同于更新的分组52的五元组。
[0052]然后,服务卡36可以使用先前从内部服务分组报头所解析的入口识别符,将经服务的分组58传输回到流控制单元54,以便于跨路由器IOB的转发组件来维持分组流的负载均衡。就是说,服务卡36可以主动地识别充当所谓的入口转发组件的、和/或维持用于分组52所对应的流的单个接触点的、最初接收分组52的转发组件50A、50B之一(并且为了例证容易性的目的,任何其它的转发组件未示出在图2的示例中)。作为结果,服务卡36将经服务的分组58传输到由入口识别符所识别的入口转发组件50A,而不用将散列函数应用到经服务的分组58的至少一部分来识别入口转发组件50A,和/或不用确定向其转发经服务的分组58的下一跳。此外,服务卡36将经服务的分组58传输到入口转发组件50A,使得入口转发组件50A接收该分组,如同该分组已经由入口转发组件50A经由与耦合到另一个网络设备的入口转发组件50A关联的接口(未示出在图2的示例中)而接收,而不是经由将服务卡36耦合到入口转发组件50A的交换结构。通过选择入口转发组件50A,服务卡36跨由上游路由器根据WECMP所决定的链路/ (接收路由器的)转发组件,来维持分组流的负载均衡。
[0053]流控制单元54接收这个经服务的分组58,并且使用服务分组58的五元组访问FIB48,以便于检索为服务分组58所对应的该流指定下一跳的条目。换句话说,流控制单元54基于经服务的分组58的五元组,来确定向其转发经服务的分组58的下一跳。假定流控制单元54识别下一跳,该下一跳牵涉经由与出口转发组件50B关联的接口转发经服务的分组58,则流控制单元54将这个分组58转发到出口转发组件50B,依次地,出口转发组件50B将分组58转发到下一跳。
[0054]图3是图示了根据本公开内容中所描述的技术,通过图1的路由器IOB的分组的逻辑流的框图。如图2的示例中所示出的,该技术将关于路由器IOB的入口转发组件50A、出口转发组件50B和服务卡36来描述。
[0055]在图3的示例中,入口转发组件50A包括具有网络接口 72的接口卡(IFC) 70和分组转发引擎(PFE)74。PFE74包括流控制单元54 (在图3的示例中示出为“FCU54”)。出口转发组件50B还包括具有接口 78和PFE80的IFC76。PFE80还包括可以类似于FCU54的FCU82。
[0056]如在图3的示例中进一步示出的,入站分组(inbound packet)52经由网络接口 72从源设备12之一接收。PFE74的TOU54在入站分组82上执行路由查找,并且确定该分组必须通过交换结构84发送到服务卡36。就是说,F⑶54在FIB48(示出在图2的示例中,但未示出在图3的示例中)中执行查找以确定内部下一跳数据,内部下一跳数据将服务卡36识别为分组必须向其发送的出口接口。在已经由服务卡36服务后,为了将分组重新交换回到入口转发组件50A,F⑶54附加服务cookie,服务cookie包括指定入口识别符88的字段,入口识别符88识别入口转发组件50A。然后,PFE74将分组52的这个更新版本(其可以指代为更新的分组56)放置在缓存器86内,以定向为穿过交换结构52A去往服务卡36。[0057]服务卡36的控制单元50从交换结构84接收更新的分组56,并且移除该服务cookie,从更新的分组56提取入口识别符88 (在图3的示例中示出为“ING ID88”)。控制单元50将分组56存储到缓存器90并调用服务引擎36,服务引擎36将服务应用到更新的分组56以生成经服务的分组58。控制单元50将经服务的分组58放置在分组缓存器92中。然后,控制单元50可以使用入口识别符88来发送经服务的分组58,使得PFE74接收经服务的分组58如同该分组从在PFE74终止的外部网络设备被接收。在一些示例中,入口转发组件50A可以包括隧道分组接口卡(PIC),入口转发组件50A可以使用隧道分组接口卡来接收已经由服务卡36服务的经服务的分组(从PFE74的视角其将表现为出站分组),以将该分组回送到PFE74,其中该隧道分组具有一个有效载荷,有效载荷封装了发往接口 76的完全形成的分组。关于使用该隧道PIC以使得否则将被视为出站分组的入口处理成为可能的更多信息,能够在2009年11月13日提交的、标题为“MULY1-ROUTER SYSTEM HAVING SHAREDNETWORK INTERFACES”的美国专利申请序列N0.12/618,536中找到,其全部内容以它们的整体通过引用合并于此。
[0058]无论如何,如上面所指出的,PFE74可以从隧道PIC接收该分组58作为入站分组,即在PFE的面向网络的入站侧的分组,如同该分组由路由器从外部隧道接收。PFE74移除功能可以从该分组移除隧道cookie,并且F⑶54在这个“入站”分组58上执行路由查找,并且确定该分组必须通过交换结构84发送到网络接口 76所关联的出口转发组件50B的PFE80。就是说,由F⑶54访问的转发信息将分组58内的键控信息(诸如分组58的五元组)映射到下一跳数据,下一跳数据将网络接口 76识别为分组58将被发送到的出口接口。作为结果,PFE74将分组58放置在缓存器86内,以被定向为穿过交换结构84去往PFE80。PFE80从交换结构84接收分组58作为出站分组,并且将这个出站分组58放置在缓存器96内,用于经由外出接口 76输出。然后,IFC76经由接口 78将分组58输出到它的计划目的地。
[0059]图4是图示了示例性服务cookielOO的框图,示例性服务cookielOO根据本公开内容所描述的技术被使用来指定入口识别符。在图4的示例中,服务cookielOO包括多个字段,包括服务类型字段(示出为“SVC TYPE”)、IP字段(示出为“I”)、未使用的字段(示出为“S”)、控制字段(示出为“C”)、序列字段(示出为“N”)、长度字段(示出为“LEN”)、版本字段(示出为“VER”)、匹配字段、散列存在字段(示出为“H”)、出口信息字段(示出为“E”)、应用识别符存在字段(示出为“A”)、未使用的字段(示出为“S”)、协议字段(示出为“PR0T0”)、转发类别字段(示出为“FC”)、丢弃优先级字段(示出为“DP”)、发送到路由引擎(RE)字段(示出为“R”)、方向字段(示出为“DIR”)、新的JFM cookie字段(示出为“W”)、IIF字段、月艮务识别符字段、IF字段、MID字段、出口令牌字段、以及入口识别符字段102。各种字段的每一个指定了由服务卡36所使用的信息,以应用适当的服务。
[0060]入口识别符字段102可以包括类型长度值(TLV)字段,类型长度值字段包括子字段来指定值子字段(value sub-field)中所指定的信息的类型和长度。可替换地,入口识别符字段102可以是用来指定入口识别符的集合或定义的长度。上述服务cookielOO是从31 (在左边)到右边的O的一列数字,该列数字反映了用来指定每个字段的比特数量。这些比特记号为了示例的目的而提供,并且服务cookielOO可以包括更多或更少的比特,而服务cookielOO中所指定的每个字段可以包括比图4的示例中所示出的更多或更少的比特。
[0061]图5是图示了在执行本公开内容中所描述的服务应用后负载均衡技术中的网络设备的示例操作的流程图,网络设备诸如图1-3的示例中所示出的路由器10B。尽管关于特定的设备,即图5的示例中的路由器IOB来描述,但是该技术可以被实施、执行或配置为,当转发或以其它方式交换分组或其它类型的数据单元时,由能够执行负载均衡和服务两者的任何类型的网络设备来执行。
[0062]初始地,转发组件50A (示出在图2和3的示例中)接收分组52 (110),并且充当入口转发组件,调用流控制单元54。流控制单元54可以访问FIB48以确定分组52是否将被发送到内部下一跳,例如,服务平面34的服务卡36之一,或者经由另一个转发组件发送到内部下一跳,该另一个转发组件充当用于分组52所对应的流的出口转发组件,即出口转发组件50B。在这个意义上,流控制单元54可以确定服务是否将被应用到分组52 (112)。换句话说,流控制单元54可以确定分组52将被传输到服务卡36。
[0063]响应于确定服务将被应用到分组52 (“是”114),入口转发组件50A的流控制单元54可以生成包括入口识别符的内部服务分组报头(其还可指代为“服务cookie”,并且关于图4的示例中更详细地描述),并且将这个服务cookie附加到分组52 (116、118)。然后,流控制单元54可以经由交换结构84 (示出在图3的示例中)将更新的分组56重定向或以其它方式传输到服务平面34的服务卡36 (120)。服务卡36可以接收这个分组,移除内部服务分组报头,解析来自内部服务分组报头的入口识别符。然后,服务卡36的控制单元50可以调用服务引擎52,服务引擎52将该服务应用到更新的分组56,生成经服务的分组58(122)。服务分组58被假定不同于分组52在于,当作出转发决定或执行路径选择时所使用的服务分组58的至少一个方面不同于分组52(诸如经服务的分组58的五元组的至少一个方面不同于分组52的五元组)。在这个方面,服务卡36将服务应用到更新的分组56,以生成经服务的分组58,使得经服务的分组58的五元组不同于更新的分组52的五元组。
[0064]然后,服务卡36可以使用先前从内部服务分组报头所解析的入口识别符,经由交换结构84将经服务的分组58传输回到流控制单元54,以便于再一次地跨转发组件(124)维持负载均衡。就是说,服务卡36可以主动地识别充当用于分组52所对应的流的所谓入口转发组件的、最初接收分组52的、转发组件50A、50B之一(以及为了例证容易性的目的未在图2的示例中示出的任何其它转发组件)。作为结果,服务卡36将经服务的分组58传输到由入口识别符所识别的入口转发组件50A,而不用将散列函数应用到经服务的分组58的至少一部分以识别入口转发组件50A,和/或不用确定向其转发经服务的分组58的下一跳。此外,服务卡36将经服务的分组58传输到入口转发组件50A,使得入口转发组件50A接收该分组,如同该分组已经经由与耦合到另一个网络设备的入口转发组件50A关联的接口(未示出在图2的示例中)由入口转发组件50A接收,而不是经由将服务卡36耦合到入口转发组件50A的交换结构。
[0065]流控制单元54接收这个经服务的分组58,并且使用服务分组58的五元组来访问FIB48,以便于检索一个条目,该条目指定针对服务分组58所对应的流的下一跳。换句话说,流控制单元54基于经服务的分组58的五元组来确定向其转发经服务的分组58的下一跳(126)。如果流控制单元54最初确定服务将不被应用到分组52 (“否”114),流控制单元54然后以相同、如果不是相同则基本相似的方式,确定针对分组52的下一跳。无论如何,流控制单元54使用FIB48来确定多个下一跳中的下一跳。假定流控制单元54识别了牵涉经由与出口转发组件50B关联的接口转发经服务的分组58的下一跳,则流控制单元54将这个分组58转发到出口转发组件50B,出口转发组件50B依次地将分组58转发到下一跳(128、130)。
[0066]图6是图示了示例网络系统140的框图,示例网络系统140在两个或更多链路的聚合束(aggregated bundle)的背景中执行本公开内容中所描述的服务应用后负载均衡技术。在图6的示例中,网络系统140包括公用网络142、服务提供商网络144和多个订户网络146A-146N(“订户网络146”)。尽管被示出为包括公用网络142、服务提供商网络144和订户网络146,但是网络系统140仅是在其中本公开内容的技术可以实施的网络系统的类型的一个示例。尽管未在图1的示例中示出,但是网络系统140可以包括另外的服务提供商网络、订户网络和其它类型的网络,诸如接入网络、专用网络或通常被采用以将一个或多个服务(诸如数据服务、因特网协议电视(IPTV)服务、通过互联网协议的语音(VoIP)服务、视频电话服务或其它任何类型的设备)传递到订户网络的任何其它类型的网络。
[0067]公用网络142表示一般地由任何具有网络连接的能够联网的设备公开可访问的网络。公用网络142可以表示通常指代为因特网的网络,因特网指代公共的层三(L3)分组交换网络(其中对本公开内容中的由数字所跟随的层的引用,指代了在开放系统互连(OSI)模型中的对应层)。虽然未示出在图1的示例中,公用网络142—般包括互联网络设备的合集,通过示例的方式提名一些,诸如数据服务器、应用服务器、打印服务器、膝上型计算机、台式计算机、工作站、蜂窝电话(包括所谓的“智能电话”)、路由器、交换机和集线器。典型地,尽管公开地可用,但是公用网络142仅由具有主动网络连接的能够联网的设备可访问,其中这样的网络连接通常由服务提供商网络提供,诸如以典型地指代为“数据服务”形式的服务提供商网络144。
[0068]服务提供商网络144表示由服务提供商(其通常是私有实体)所拥有并操作的一个或多个网络,该一个或多个网络提供用于由订户网络,诸如订户网络146,消费的一个或多个服务。服务提供商网络144典型地是提供公用网络142和订户网络146之间的L3连接的L3分组交换网络。经常地,由服务提供商网络144所提供的该L3连接作为数据服务或因特网服务而被销售,并且订户可以订购该数据服务。近来,通过不同类型的网络的方式从服务提供商的L3分组交换网络所提供的服务,诸如电话服务或电视服务,分别通过经由以VoIP、视频点播(VoD)和IPTV的形式的、服务提供商的L3分组交换网络来提供。作为结果,服务提供商网络144可以提供指代为“三网合一分组”的服务,其包括通过L3分组交换网络的数据、声音和电视服务的每一个。因此,服务提供商网络144可以表示一种L3分组交换网络,该L3分组交换网络提供了数据、声音、电视和用于由订户购买的、以及随后由订户网络146消费的任何其它类型的服务。
[0069]订户网络146每一个表示由服务提供商网络144所提供的这些服务的一个或多个订户所拥有并操作的网络。虽然为了例证容易性的目的未示出在图1的示例中,但是订户网络146可以每一个包括一个或多个能够联网的设备,诸如能够联网的打印机、月艮务器、膝上型计算机、台式计算机、蜂窝电话(包括智能电话)、平板或片板计算机(slatecomputer)、笔记本、个人媒体播放器、游戏控制器、能够联网的高解析度光盘播放器(诸如蓝光盘播放器)、数字视频光盘播放器、支持因特网(Internet-ready)的电视和电子阅读设备。
[0070]拥有并操作订户网络146的订户可以从拥有并操作服务提供商网络144的服务提供商订购一个或多个服务,其中这样的订户协议一般指示了服务的级别、服务的质量或服务的类别,服务提供商一般同意该服务的级别、服务的质量或服务的类别来提供一个或多个服务。例如,拥有并操作订户网络146中对应的一个订户网络的订户之一,可以订购特定带宽的数据服务,诸如每秒10兆比特(Mbp),每秒10兆比特(Mbp)通常处于低于如下速率的服务类别中,对该速率服务提供商同意提供较少延迟容忍的服务,诸如IPTV或VoIP。在一些实例中,服务提供商可以同意将所有的服务提供给在给定的服务类别订购的订户。不论在个别的服务的基础上或者在订户的基础上,服务提供商一般根据协定的服务类别同意将服务提供给它的订户中的任何一个给定的订户。
[0071]为了根据协定的一个或多个服务类别提供这些服务,将对应于这些服务的业务量转发的、服务提供商网络144的网络设备实施调度算法来调度该订户业务量,用于以传递该业务量来满足关联于该订户的一个或多个服务类别的方式,传递下游(意为从公用网络142到订户网络146)到订户网络146。这些调度算法可以包括加权公平排队(WFQ)算法,然而,WFQ算法一般难以实施,因为它需要大量的计算以正确地实施WFQ。因此,调度算法可以包括近似WFQ算法,诸如加权循环(WRR)调度算法和差额循环(DRR)调度算法。可替换地,调度算法可以包括2004年4月I日提交的、标题为“Fair Bandwidth Allocation Basedon Configurable Service Classes”的美国专利N0.7,606,154中阐述的调度算法,其如同本文阐述了它的整体地通过引用合并于此。这些调度算法寻求以公平地将带宽分派给每个数据流的方式来调度流量,从而服务类别的协定可以被满足同时还满足任何延迟要求,其也可以形成服务类别的一部分。
[0072]如图6的示例中进一步示出的,服务提供商网络144包括示出为“路由器148”的示例性网络设备和示出为“接入设备150”的另一个网络设备。路由器148表示从订户网络146上游地、或者到订户网络146下游地路由或者以其他方式转发业务量的任何网络设备。典型地,路由器148表示L3分组一交换设备,该L3分组一交换设备在L3操作,来接收描述了服务提供商网络144的当前拓扑的路由信息。然后,路由器148处理这个路由信息,通过服务提供商网络144的拓扑表现选择路径,来到达所有可用的目的地,以生成转发信息。换句话说,路由器148将这些路径减少到所谓的“下一跳”,“下一跳”识别了去往特定目的地的、它的接口业务量中的哪一个将被转发,其中转发信息包括下一跳的这个列表。然后,路由器148在路由器148的转发平面中安装这个转发信息,于是转发平面以在上面更详细地描述过的方式根据该转发信息转发所接收的流量。
[0073]接入设备150表示促进了订户网络146去往服务提供商网络144的接入的网络设备。接入设备150的示例包括数字用户线路接入复用器(DSLAM)和电缆调制解调器终端系统(CMTS)。典型地,接入设备150将来自订户网络146去往公用网络142的上游业务量聚合,并且将来自公用网络142去往单个订户网络146的聚合下游业务量解聚合(或解复用)聚合的下游业务量。在一些实例中,接入设备150可以复制一些类型的下游业务量(例如,广播和多播业务量)并且将这个复制的流量传递到订户设备146。
[0074]经常地,服务提供商采用指代为“聚合束”的技术来互相连接路由器,并且经由两个或更多链路接入节点。示例聚合束包括聚合以太网束,如IEEE802.3ad中的多链路分段聚合所定义的,聚合以太网束可以使用链路聚合控制协议(LACP)来配置和维持,多链路分段聚合的内容通过引用并入本文。逻辑上,这些聚合束表现为去往路由器和/或接入节点的单个连接。聚合束提供了许多益处。第一,聚合束可以在路由器和接入节点之间提供连接的冗余。为了举例说明,如果聚合束的一个链路失效,通过聚合束互相连接的路由器和接入节点可以将先前通过聚合束的该失效连接被发送的流量重定向到聚合束的活动链路之一,因此在路由器和接入节点之间提供连接的冗余。第二,考虑到聚合束的多个链路可以被采用来传递业务量而不是单个链路,聚合束的使用可以提供增大的网络容量(其经常以带宽为单位来测量)。第三,聚合束可以增进带宽可扩展性,作为一个示例,因为服务提供商可以用两个链路建立聚合束,并且然后响应于增加的订户带宽需求,逐步地增加聚合束中链路的数量。以该方式,通过仅提供充足的带宽来满足当前订户带宽需求而非预期的将来订户带宽需求,服务提供商可以减缓资本支出。多机架链路聚合的进一步示例性细节在通过引用合并于此的、标题为 “AVTIVE-ACTIVE MULT1-HOMING WITH MULT1-CHASSIS PSEUDOffIRELINK AGGREGATION”的美国专利申请13162157中举例说明。
[0075]尽管聚合束可以为改进冗余、带宽和可扩展性作准备,但是在调度流量来满足服务提供商已经同意提供给它的订户的服务类别,同时还利用由这种聚合束所提供的增加的带宽中,路由器和/或接入节点可能经历困难。为了举例说明,考虑聚合束的一个部署,该部署将订户的带宽的(经常,相等的)一部分分派给聚合束的每个链路,其中服务提供商在它的服务类别方面已经同意将该订户的带宽提供给订户。例如,如果订户已经购买了 12Mbp的服务,服务提供商可以配置它的路由器来通过聚合束的三个链路中的每一个提供这个12Mpb的1/3。但是,聚合束的这个部署是不充分的,因为订户业务量流(其中,流通常由包括源地址、源端口、目的地地址、目的地端口和协议的所谓五元组识别)跨聚合束的链路可能不是均匀分布的,导致了服务类别的不正确应用,诸如整形(过滤)、监管、缓存、优先排列等。此外,一些流可以比其它流消耗更多的带宽,从而路由器可以整形一些流,使它们不超过每个链路的带宽上限(即上述示例中的4Mbp),尽管通过另外两个链路的流没有消耗为这些链路上的对应订户所分派的整个4Mbp。
[0076]另一个聚合束部署将链路定义为在链路(或OSI模型的层二)级是活动的和备用的,使得通过聚合束的所有活动业务量流使用一半的聚合束的链路。这个部署比在先前所讨论的部署中可以增进更准确的整形,同时还提供链路冗余。但是,这个活动的/备用的部署将带宽限制到单个链路,损失了使用聚合束的可扩展性方面和改进的带宽的方面。
[0077]除了在利用由聚合束所提供的益处,同时还确保准确或者至少合理的服务类别调度中的这些困难之外,在许多聚合束部署中,考虑到服务应用的聚合束的实施方式可能遭受上面关于在等价多路径的环境中的路由器IOB所描述的许多问题。就是说,接入节点150可以跨聚合束152 (其还可以指代为“链路聚合组”或“LAG”)的链路执行负载均衡。服务的应用可以以服务应用后或之后需要作出转发决定的方式影响分组。但是,路由器148的服务卡(其可以与类似于图2的示例中所示出的服务卡36)可以不被装备或配置为处理分组转发决定。典型地,这些服务卡以上面所描述的方式将散列应用到分组五元组,来将这些分组伪随机地重定向回到转发组件之一。
[0078]但是,这些散列函数仅是伪随机的,并且作为结果,服务卡可以以实际上不导致跨转发组件的负载均匀分布的方式,将分组传输回到转发组件。此外,这些服务卡可能不确保根据链路聚合协议在两个或更多个转发组件之间均衡的负载被维持。替代地,这些服务卡可以将这些分组发送到甚至不包括在链路的聚合组中的转发组件,进一步扭曲了跨这些特定转发组件的均衡负载上的任何尝试。
[0079]因此,路由器148可以实施在本公开内容中所期望的技术,来在服务应用之后执行负载均衡。路由器148可以用多个转发组件中的第一转发组件来接收分组,该第一转发组件充当用于所接收的分组所对应的分组流的入口转发组件。这个入口转发组件可以以上面所描述的方式确定服务将被应用到分组。在识别或以其它方式确定服务将被应用到分组后,响应于服务将被应用到该分组的确定,路由器148的入口转发组件然后可以更新该分组,以包括识别该入口转发组件的入口识别符。
[0080]一旦该分组用入口识别符更新了,入口转发组件将更新的分组传输到应用该服务的服务卡。然后,服务卡将该服务应用到更新的分组,以生成经服务的分组,并且将经服务的分组传输到由入口识别符所识别的入口转发组件,以便于将负载维持在当该分组被接收时的负载水平,并且从而潜在地避免了将分组传输到可能已经过载的转发组件。因此,不是在该分组的五元组上执行散列来伪随机地将这个分组分配到转发组件中的任何给定的一个,而是服务卡利用入口识别符来将分组发送回到入口转发组件,用于执行路径选择的目的。
[0081]然后,入口转发组件确定向其转发经服务的分组的多个下一跳中的下一跳。然后,入口转发组件将这个分组传输到与所选择的下一跳对接的转发组件中的第二转发组件(例如,传输到服务提供网络144中的邻近设备,其未示出在图6的示例中)。转发组件中的第二转发组件充当用于这个分组的出口转发组件,并且可以移除任何内部分组报头,执行关于分组格式的一个或多个操作,更新分组报头等。然后,出口转发组件可以将经服务的分组转发到所确定的下一跳。
[0082]以该方式,该技术可以通过潜在地避免服务卡的更新,以执行这个路径选择、增进成本的节约。相比于服务卡的散列操作以及在服务卡的更新方面两者,该技术还可以增进减少的实施方式复杂性。另外,通过使得服务卡能够放弃分组的散列来伪随机地识别将充当用于分组的入口转发组件的、但是不被配置为根据负载均衡算法执行路径选择的转发组件,该技术促进了负载均衡。
[0083]本公开内容的技术可以实施在许多种设备或装置中,包括网络设备、集成电路(IC)或一组IC (即芯片组)。任何组件、模块或单元已经描述为被提供以强调功能的方面,并且不必然需要由不同的硬件单元实现。文中所描述的技术还可以实施在硬件或硬件和软件的任意组合和/或固件中。描述为模块、单元或组件的任何特征可以一起实施在集成逻辑设备中,或者分离地实施为离散但可互操作的逻辑设备。在一些情形中,各种特征可以实施为集成电路设备,诸如集成电路芯片或芯片组。
[0084]如果实施在软件中,该技术可以至少部分地由包括指令的计算机可读存储介质实现,当该指令在处理器中执行时,执行上面所描述的一个或多个方法。计算机可读存储介质可以是物理结构,并且可以形成可以包括封装材料的计算机程序产品的一部分。在这个意义上,计算机可读存储介质可以是非暂时性的。计算机可读存储介质可以包括随机访问存储器(RAM),诸如同步动态随机访问存储器(SDRAM)、只读存贮器(ROM)、非易失性随机访问存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、FLASH存储器、磁性或光学数据存储介质等。
[0085]代码或指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理机、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其它等效集成或离散的逻辑电路。因此,如本文所使用的,术语“处理器”可以指代任何前述结构或适合于本文所描述的技术的实施方式的任何其它结构。另外,在一些方面中,本文所描述的功能可以被提供在配置用于编码和解码,或并入组合的视频编解码器中的专用软件模块或硬件模块内。同样,该技术能够完全实施在一个或多个电路或逻辑元件中。
[0086] 本发明的各种实施方式已经被描述。这些和其它实施方式在下述权利要求书的范围内。
【权利要求】
1.一种方法,包括: 用包括在网络设备内的多个转发组件中的第一转发组件接收一个分组,其中所述多个转发组件的所述第一转发组件充当用于所接收的分组所对应的分组流的入口转发组件;用所述入口转发组件来确定一个服务将被应用到所述分组; 响应于一个服务将被应用到所述分组的确定,用所述入口转发组件更新所述分组,以包括识别所述入口转发组件的入口识别符; 用所述入口转发组件将更新的分组传输到应用所述服务的服务卡; 用所述服务卡将所述服务应用到所述更新的分组,以生成经服务的分组; 用所述服务卡将所述经服务的分组传输到由所述入口识别符所识别的所述入口转发组件,以便于跨所述多个转发组件维持分组流的负载均衡; 用所述入口转发组件来确定向其转发所述经服务的分组的多个下一跳中的下一跳;以及 用所述多个转发组件中的第二转发组件来将所述经服务的分组转发到所确定的下一跳,其中所述多个转发组件中的所述第二转发组件充当用于所述经服务的分组所对应的分组流的出口转发组件。
2.根据权利要求1所述的方法, 其中所述所接收的分组所对应的所述分组流,由包括源地址、源端口、目的地地址、目的地端口和协议的第一五元组识别, 其中所述经服务的分组所对应的所述分组流,由包括源地址、源端口、目的地地址、目的地端口和协议的第二五元组识别`, 其中将所述服务应用到所述更新的分组包括,用所述服务卡将所述服务应用到所述更新的分组以生成所述经服务的分组,使得所述第二五元组不同于所述第一五元组,以及其中确定所述多个下一跳中的所述下一跳包括,基于所述第二五元组来确定向其转发所述经服务的分组的所述多个下一跳中的所述下一跳,以便于跨所述多个下一跳分发分组流。
3.根据权利要求1和2的任意组合所述的方法,其中将所述经服务的分组传输到所述入口转发组件包括,用所述服务卡将所述经服务的分组传输到由所述入口识别符所识别的所述入口转发组件,而不用将散列函数应用到所述经服务的分组的至少一部分以识别所述入口转发组件。
4.根据权利要求1和2的任意组合所述的方法,其中将所述经服务的分组传输到所述入口转发组件包括,用所述服务卡将所述经服务的分组传输到由所述入口识别符所识别的所述入口转发组件,而不用所述服务卡来确定向其转发所述经服务的分组的所述多个下一跳中的所述下一跳。
5.根据权利要求1和2的任意组合所述的方法,其中将所述经服务的分组传输到所述入口转发组件包括,用所述服务卡将所述经服务的分组传输到所述入口转发组件,使得所述入口转发组件接收所述分组,如同所述分组已经由所述入口转发组件,经由与耦合到另一个网络设备的所述入口转发组件关联的接口而接收,而不是经由将所述服务卡耦合到所述入口转发组件的交换结构。
6.根据权利要求1-5的任意组合所述的方法,其中所述入口转发组件和所述多个转发组件的另外一个转发组件从相邻的网络设备接收已经由所述相邻的网络设备根据等价多路径(ECMP)算法或加权的ECMP (WECMP)算法发送的、包括所述分组所对应的所述分组流的分组流,所述ECMP或WECMP跨两个或更多将所述网络设备耦合到所述相邻的网络设备的链路对分组流进行负载均衡。
7.根据权利要求1-5的任意组合所述的方法,其中所述入口转发组件和所述多个转发组件的另外一个转发组件从相邻的网络设备接收已经由所述相邻的网络设备根据链路聚合算法发送的、包括所述分组所对应的所述分组流的分组流,所述链路聚合算法聚合两个或更多链路以形成单个虚拟链路,并且跨两个或更多将所述网络设备耦合到所述相邻的网络设备的链路对分组流进行负载均衡。
8.根据权利要求1-7的任意组合所述的方法, 其中更新所述分组以包括所述入口识别符包括,将内部服务分组报头附加到包括指定所述入口识别符的字段的所述分组,以及 其中所述方法进一步包括,在将所述经服务的分组转发到所述所确定的下一跳之前,移除所述内部服务分组报头。
9.一种网络设备,包括: 多个转发组件,其中所述多个转发组件中的第一转发组件接收一个分组,并且充当用于所接收的分组所对应的分组流的入口转发组件,确定一个服务将被应用到所述分组,响应于所述服务将被应用到所述分组的确定,更新所述分组以包括识别所述入口转发组件的入口识别符,并且将更新的分组传输到应用所述服务的服务卡;以及 服务卡,所述服务卡将所述服务应用到所述更新的分组以生成经服务的分组,并且将所述经服务的分组传输到由所述入口识别符所识别的所述入口转发组件,以便于跨所述多个转发组件来维持分组流的负载均衡, 其中所述入口转发组件确定向其转发所述经服务的分组的多个下一跳中的下一跳,以及 其中所述多个转发组件中的第二转发组件充当用于所述服务分组所对应的分组流的出口转发组件,并且将所述经服务的分组转发到所述所确定的下一跳。
10.根据权利要求9所述的网络设备,进一步包括用于执行由权利要求2-8的任意组合所记载的方法的每一个步骤的装置。
11.一种服务卡,所述服务卡配置为被插入到由权利要求9所记载的所述网络设备中,并且耦合到所述网络设备的多个转发组件,所述服务卡包括: 控制单元,所述控制单元从充当用于所述分组所对应的分组流的入口转发组件的所述多个转发组件中的第一转发组件接收一个分组,其中所述分组包括内部服务分组报头,所述内部服务分组报头包括指定入口识别符的字段,所述入口识别符识别所述入口转发组件,以及 其中所述控制单元执行服务引擎,所述服务引擎将服务应用到更新的分组以生成经服务的分组, 其中所述控制单元进一步将所述经服务的分组传输到由所述入口识别符所识别的所述入口转发组件,以便于跨所述多个转发组件来维持分组流的负载均衡。
12.根据权利要求11所述的服务卡,其中所述所接收的分组所对应的所述分组流,由包括源地址、源端口、目的地地址、目的地端口和协议的第一五元组识别, 其中所述经服务的分组所对应的所述分组流,由包括源地址、源端口、目的地地址、目的地端口和协议的第二五元组识别,以及 其中当将所述服务应用到所述更新的分组时,所述服务引擎将所述服务应用到所述更新的分组以生成所述经服务的分组,使得所述第二五元组不同于所述第一五元组。
13.根据权利要求11和12的任意组合所述的服务卡,其中所述控制单元将所述经服务的分组传输到由所述入口识别符所识别的所述入口转发组件,而不用将散列函数应用到所述分组的至少一部分以识别所述入口转发组件。
14.根据权利要求11-13的任意组合所述的服务卡,其中所述控制单元将所述经服务的分组传输到由所述入口识别符所识别的所述入口转发组件,而不用所述服务卡来确定向其转发所述经服务的分组的多个下一跳中的下一跳。
15.根据权利要求11-14的任意组合所述的服务卡,其中所述控制单元将所述服务分组传输到所述入口转发组件,使得所述入口转发组件接收分组,如同所述分组已经由所述入口转发组件,经由耦合到另一个网络设备的所述入口转发组件关联的接口而接收,而不是经由将所述服务卡耦合到所述入`口转发组件的交换结构。
【文档编号】H04L12/803GK103746931SQ201310452253
【公开日】2014年4月23日 申请日期:2013年9月27日 优先权日:2012年9月28日
【发明者】J·格兰希, G·克里施纳, A·萨斯雅纳拉雅纳, A·巴拉萨布拉玛尼安, B·万达洛瑞 申请人:瞻博网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1