本公开涉及计算机网络,更具体地,涉及计算机网络中的网络服务。
背景技术:
计算机网络是可以交换数据和共享资源的互连计算设备的集合。在基于分组的网络中,计算设备通过将数据划分成称为分组的小块来传送数据,这些小块被单独地通过网络从源设备路由到目的地设备。计算机网络内的某些设备,称为路由器,维护描述通过网络的路由的路由信息。通常可以将“路由”定义为网络上两个位置之间的路径。路由器包括维护路由信息的控制平面,以及根据路由信息转发接收到的分组的数据平面。
网络服务提供商向输入分组提供诸如安全性、隧道、虚拟专用网络、过滤、负载均衡、voip/多媒体处理和各种类型的应用代理(http、xml、wap等)的服务。服务提供商还提供旨在提高用户体验质量的内容特定服务,例如视频流和缓存。服务提供商网络的网络基础设施通常包括通过通信链路互连的接入节点、聚合节点和高速边缘路由器的庞大的集合。这些网络设备通常执行各种协议并交换信令消息来锚定和管理与签约用户设备相关联的签约用户会话和通信流。
可在网络架构中包括软件定义网络(sdn)控制器和/或网络功能虚拟化(nfv)编排器,以提供对服务提供商网络内的签约用户会话和通信流的集中控制。通常使用sdn架构来提供网络设备中控制平面和数据平面的至少一定程度的分离,以及将控制平面抽象为更加模块化和分层的架构。nfv架构提供虚拟化以消除对专用硬件的依赖,并将许多不同的网络设备类型整合到可能位于数据中心、网络节点和最终用户驻地的行业标准大容量服务器、交换机和存储器上。
技术实现要素:
一般来说,描述了在软件定义网络(sdn)/网络功能虚拟化(nfv)环境中自动发现被配置为将给定服务应用于分组的两个或更多个虚拟服务实例的技术。虚拟服务实例可被部署为虚拟机(vm)或以一个或多个物理设备,例如服务器,作为主机的其他虚拟实体,以从服务提供商提供单独的服务或服务链。虚拟服务实例的使用使得按需自动扩缩(即例示或拆除)服务。本公开的技术使得网关网络设备,例如路由器,能够自动发现给定服务的虚拟服务实例作为负载均衡实体。根据这些技术,网关网络设备自动更新给定服务的负载均衡组,以包括发现的虚拟服务实例,在所发现的虚拟服务实例上负载均衡用于服务的流量。以这种方式,所公开的技术在sdn/nfv环境中提供服务的自动扩缩和自动发现。
在一个实例中,本公开涉及一种方法,包括由sdn控制器建立与网关网络设备的边界网关协议(bgp)对等体会话;由所述sdn控制器建立两个或更多个专用隧道(uniquechannel),每个所述专用隧道从所述网关网络设备扩展到被配置为将给定服务应用于分组的一组两个或更多个虚拟服务实例中相应的一个;由sdn控制器计算给定服务的bgp路由,其中,每个bgp路由表示从网关网络设备扩展到相应一个虚拟服务实例的专用隧道中的一个;以及由sdn控制器经由bgp对等体会话向网关网络设备通告给定服务的bgp路由作为负载均衡实体。
在另一实例中,本公开涉及一种方法,包括由网关网络设备建立与sdn控制器的bgp对等体会话;由网关网络设备经由bgp对等体会话从sdn控制器接收作为负载均衡实体的给定服务的bgp路由的通告,其中,每个bgp路由表示一组两个或更多个专用隧道中的其中一个,每个所述专用隧道从所述网关网络设备扩展到被配置为将所述给定服务应用于分组的一组两个或更多个虚拟服务实例中相应的一个;由所述网关网络设备维护所述给定服务的负载均衡组,所述负载均衡组包括所述给定服务的每个bgp路由;以及由网关网络设备根据负载均衡算法从负载均衡组中选择其中一个bgp路由,在所选bgp路由上将分组转发到应用给定服务的相应的一个虚拟服务实例。
在进一步的实例中,本公开涉及sdn控制器,所述sdn控制器包括多个网络接口;和控制单元,所述控制单元包括处理器,所述处理器执行bgp,以便在其中一个网路接口上建立与网关网络设备的bgp对等体会话,并且建立两个或更多个专用隧道,每个专用隧道从所述网关网络设备扩展到被配置为将给定服务应用于分组的一组两个或更多个虚拟服务实例中相应的一个,所述处理器被配置为计算给定服务的bgp路由,并将给定服务的bgp路由输出到其中一个网络接口,以作为负载均衡实体经由bgp对等体会话通告到网关网络设备,其中每个bgp路由表示从网关网络设备扩展到相应的一个虚拟服务实例的专用隧道中的一个。
在另外的实例中,本公开涉及网关网络设备,所述网关网络设备包括多个网络接口;控制单元,所述控制单元包括处理器,该处理器执行bgp以在其中一个网路接口上建立与sdn控制器的bgp对等体会话,所述处理器被配置为经由与sdn控制器的bgp对等体会话在其中一个网络接口上接收作为负载均衡实体的给定服务的bgp路由的通告,并且维护给定服务的负载均衡组,所述负载均衡组包括给定服务的每个bgp路由,其中,每个bgp路由表示一组两个或更多个专用隧道中的一个,每个专用隧道从网关网络设备扩展到被配置为将给定服务应用到分组的一组两个或更多个虚拟服务实例中相应的一个;以及转发电路,利用与bgp路由关联的转发信息编程,所述转发电路被配置为根据负载均衡算法从所述负载均衡组中选择所述分组的其中一个bgp路由,其中,所述转发电路将所述分组输出到其中一个网络接口,以转发到应用给定服务的虚拟服务实例中相应的一个。
本公开的一个或多个实施例的细节在附图和下面的描述中阐述。其他特征、目的和优点将从说明书和附图以及权利要求书中变得显而易见。
附图说明
图1是示出根据本文描述的技术操作的实例网络系统的框图。
图2是示出根据本文描述的技术操作的实例服务提供商网络的一部分的框图。
图3是示出被配置为实现本文所描述的技术的实例sdn控制器的框图。
图4是示出被配置为实现本文描述的技术的实例路由器的框图。
图5是示出为一个或多个服务节点提供操作环境的实例服务器的框图。
图6是示出根据本文所描述的技术的诸如路由器或网关的网络设备和sdn控制器的示例性操作的流程图。
具体实施方式
图1是示出根据本文描述的技术操作的实例网络系统的框图。图1的实例网络系统包括服务提供商网络2,被操作为专用网络以向签约用户设备16提供基于分组的网络服务。也就是说,服务提供商网络2为签约用户设备16提供网络接入的认证和建立,使得签约用户设备16可以开始与公共网络12交换数据分组,所述公共网络12可以是内部的或外部的基于分组的网络,诸如因特网。
在图1的实例中,服务提供商网络2包括接入网络6,该接入网络6提供经由服务提供商核心网络7和网关网络设备8至公共网络12的连接。服务提供商核心网络7和公共网络12提供可用于由签约用户设备16请求和使用的基于分组的服务。作为实例,核心网络7和/或公共网络12可提供例如批量数据传送、因特网协议语音(voip)、因特网协议电视(iptv)、短消息服务(sms)、无线应用协议(wap)服务或客户特定的应用服务。公共网络12可包括例如局域网(lan)、广域网(wan)、因特网、虚拟lan(vlan)、企业lan,层3虚拟专用网(vpn)、由操作接入网6的服务提供商操作的因特网协议(ip)内联网、企业ip网络或其某种组合。在各种实施例中,公共网络12被连接到公共wan、因特网或其他网络。公共网络12执行一个或多个分组数据协议(pdp),诸如ip(ipv4和/或ipv6)或点对点协议(ppp),以实现基于分组的公共网络12服务的传输。
签约用户设备16经由接入网络6连接到网关8,以接收用于以签约用户设备16作为主机的应用的签约用户服务的连接。签约用户可表示例如企业、住宅签约用户或移动签约用户。签约用户设备16可以是例如个人计算机、膝上型计算机或与签约用户相关联的其他类型的计算设备。另外,签约用户设备16可包括经由无线接入网络(ran)4接入服务提供商网络2的数据服务的移动设备。实例移动签约用户设备16包括具有例如3g无线网卡的移动电话、膝上型或台式计算机、无线上网本、视频游戏设备、寻呼机、智能电话、个人数据助理(pda)等。每个签约用户设备16可运行各种软件应用,诸如文字处理和其他办公室支持软件、网页浏览软件、支持语音呼叫的软件、视频游戏、视频会议和电子邮件等。签约用户设备16经由包括有线和/或无线通信链路的接入链路5连接到接入网络6。如本文所使用的术语“通信链路”包括有线或无线的任何形式的传输介质,并且可包括诸如网络设备的中间节点。每个接入链路5可包括例如不对称dsl网络、wimax、t-1线路、综合业务数字网络(isdn)、有线以太网或蜂窝无线电链路的方面。
网络服务提供商操作或者在某些情况下租用接入网络6的元件以在签约用户设备16和网关8之间提供分组传输。接入网络6表示聚合来自一个或多个签约用户设备16的数据流量的网络,以传输到服务提供商的服务提供商核心网络7/从服务提供商的服务提供商核心网络7传输。接入网络6包括执行通信协议以传输控制数据和用户数据以促进签约用户设备16和网关8之间的通信的网络节点。接入网络6可包括宽带接入网络、无线lan、公共交换电话网(pstn)或其他类型的接入网络,并且可包括或以其它方式提供诸如ran4之类的蜂窝接入网络的连接。ran4的实例包括符合通用移动电信系统(umts)架构、被称为长期演进(lte)的umts的演进、由因特网工程任务组(ietf)标准化的移动ip以及由第三代合作伙伴计划(3gpp)、第三代合作伙伴计划2(3ggp/2)和全球微波互联接入(wimax)论坛提出的其他的标准的网络。
服务提供商核心网络7向附接到接入网络6的签约用户设备16提供基于分组的连接以接入公共网络12。核心网络7可表示由服务提供商拥有和操作以将多个网络互连的公共网络,所述多个网络可包括接入网络6。核心网络7可实现多协议标签交换(mpls)转发,并且在这种情况下,其可被称为mpls网络或mpls骨干网。在一些情况下,核心网络7表示多个互连的自治系统(诸如因特网),提供来自一个或多个服务提供商的服务。公共网络12可表示例如由诸如客户边缘交换机或路由器的客户边缘设备耦合到核心网络7的边缘网络。公共网络12可包括数据中心。
在包括有线/宽带接入网络作为接入网络6的服务提供商网络2的实例中,网关8可表示例如宽带网络网关(bng)、宽带远程接入服务器(bras)、mpls提供商边缘(pe)路由器、核心路由器或网关或电缆调制解调器终端系统(cmts)。在包括蜂窝接入网络作为接入网络6的服务提供商网络2的实例中,网关8可表示移动网关,例如网关通用分组无线服务(gprs)服务节点(ggsn)、接入网关(agw)或分组数据网络(pdn)网关(pgw)。在其他实例中,关于网关8描述的功能可在交换机、服务卡或其他网络元件或组件中实现。
管理服务提供商网络2的至少一部分的网络服务提供商通常向与接入服务提供商网络2的诸如签约用户设备16的设备相关联的签约用户提供服务。所提供的服务可包括例如传统的因特网接入、因特网语音协议(voip)、视频和多媒体服务和安全服务。如上文关于接入网络6所述,核心网络7可支持多种类型的接入网络基础设施,这些接入网络基础设施连接到服务提供商网络接入网关以提供对所提供服务的接入。在某些情况下,图1所示的网络系统可包括附接到具有不同架构的多个不同接入网络6的签约用户设备16。
通常,任何一个或多个签约用户设备16可通过向网关8发送会话请求来请求授权和数据服务。反过来,网关8通常访问认证、授权和计费(aaa)服务器11以认证请求接入网络的签约用户设备。一旦认证,任何签约用户设备16可向服务提供商核心网络7发送用户数据流量,以便接入和接收由公共网络12提供的服务,并且这些分组穿过网关8作为至少一个分组流的一部分。图1所示的流26表示来自任何一个或多个签约用户设备16并被引导至公共网络12的一个或多个上行分组流。术语“分组流”、“流量流”或简称为“流”是指源自特定的源设备并发送到特定的目标设备的一组分组。可通过5元组(5-tuple)来标识在上行(源自其中一个签约用户设备16)或下行(目的地是其中一个签约用户设备16)方向上的单个流分组,例如<源网络地址,目的地网络地址,源端口,目的地端口,协议>。该5元组通常标识接收到的分组对应的分组流。n元组是指从5元组中提取的任何n个项。例如,分组的2元组可指用于分组的<源网络地址,目的地网络地址>或<源网络地址,源端口>的组合。此外,签约用户设备16可在对服务提供商网络2进行认证时产生多个分组流,并建立用于接收数据服务的通信会话。
如本文所描述的,服务提供商网络2包括服务综合体9,服务综合体9具有为网络服务提供执行环境的一组服务节点10a-10n(统称为“服务节点10”)。也就是说,每个服务节点10应用一个或多个服务。作为实例,服务节点10可应用分组流的防火墙和安全服务、运营级网络地址转换(cg-nat)、媒体优化(语音/视频)、ipsec/vpn服务、深度分组检测(dpi)、http过滤、计数、计费、收费和负载均衡,或应用于网络流量的其他类型的服务。以这种方式,每个服务节点10表示一个服务实例。
尽管被示为服务综合体9的一部分,其可表示数据中心,但服务节点10可例如被核心网络7的一个或多个交换机或虚拟交换机耦合。在一个实例中,每个服务节点10可在虚拟计算环境中作为虚拟机(vm)或其他虚拟实体运行。此外,计算环境可包括可扩缩物理网络设备集群,诸如基于处理器的服务器。作为另一实例,服务节点10可包括通用计算设备和专用设备的组合。由服务节点10提供的虚拟服务实例可通过虚拟化存储器、处理器利用率,存储和网络策略的分配垂直扩缩以及通过添加额外的负载均衡的虚拟机水平扩缩。
如图1所示,网关8通过由服务节点10提供的所定义的服务集来引导单个的签约用户分组流26。也就是说,每个签约用户分组流可通过由服务节点10提供的特定的有序的服务组合来转发,每个有序集在这里被称为“服务链”,并且每个服务链提供由服务链的服务节点提供的各个网络服务(虚拟网络功能)的顺序和组合所表示的复合网络服务。在图1的实例中,一个或多个签约用户分组流26沿着第一服务链28a被引导,并且因此按照该顺序接收由服务节点10a、10b和10n应用的服务。类似地,一个或多个签约用户分组流26沿着第二服务链28b被引导,因此接收由服务节点10c、10b和10n应用的服务。
以这种方式,当分组根据由服务提供商配置的服务链在接入网络6和公共网络12之间流动时,服务节点10可处理签约用户流26。在所示实例中,服务链28a根据所列出的排序来识别有序的节点集10a、10b和10n。服务链28b识别有序的节点集10c、10b和10n。因此,根据服务链28a处理的分组流26流过穿过节点10a,10b、以及最终作为服务链28a的终端节点的节点10n的服务路径。特定服务节点可支持多个服务链。在该实例中,服务节点10b支持服务链28a,28b。一旦在服务链的终端节点(即,将服务应用于沿特定服务路径流动的分组的最后节点)上被处理,终端节点可将流量引导回网关8以便进一步处理和/或转发到公共网络12。例如,流量工程服务路径可与网关8一起启动和终止。
“服务链”定义一个或多个以特定顺序应用的服务,以提供组合服务以应用于绑定到服务链的分组流,“服务隧道”或“服务路径”是指由服务链处理的分组流采取的逻辑和/或物理路径以及根据服务链排序转发分组流的转发状态。每个服务链可以与相应的服务隧道相关联,并且与每个签约用户设备16相关联的分组流根据与相应签约用户相关联的服务配置沿服务隧道流动。表示服务链28a,28b的箭头示出了映射到服务链28a或28b的分组流采取的相应路径。例如,给定签约用户设备16可与特定服务配置相关联,反过来该特定服务配置又被映射到与服务链28a相关联的服务隧道。类似地,另一个签约用户设备16可与不同的服务配置相关联,反过来,该不同的服务配置又被映射到与服务链28b相关联的服务隧道。网关8在对用户进行认证和建立接入会话之后,沿着适当的服务隧道引导签约用户设备16的分组流,从而使服务综合体9对给定签约用户设备应用必要的有序服务。
服务节点10可使用内部配置的转发状态来实现服务链28a,28b,所述转发状态沿着服务链28a,28b引导分组流的分组,以根据所识别的服务节点10集进行处理。这样的转发状态可指定用于使用诸如因特网协议(ip)或通用路由封装(gre)隧道之类的网络隧道在服务节点10之间隧道化的隧道接口,或者可指定用于使用虚拟局域网(vlan)、多协议标签交换(mpls)技术等在服务节点10之间隧道化的隧道接口。在一些情况下,将服务节点10互连的实际或虚拟交换机、路由器或其他网络元件可被配置为根据服务链28a,28b将分组流引导到服务节点10。
在图1中,软件定义网络(sdn)控制器19提供高级别控制器,用于配置和管理服务提供商网络2的路由和交换基础设施(例如,网关8、核心网络7和服务节点10)。在某些情况下,sdn控制器19管理服务综合体9的操作环境内的虚拟机(vm)或其他虚拟实体的部署。例如,sdn控制器19可建立一个或多个服务节点10作为虚拟服务实例,该虚拟服务实例被配置为将给定服务应用于分组。在该实例中,服务提供商网络2可包括sdn/网络功能虚拟化(nfv)环境。
另外,sdn控制器19可与网关8交互以指定服务链28a,28b信息。例如,由sdn控制器19提供的服务链信息可指定:由服务节点10提供的服务的任何组合和排序;用于沿着服务路径隧穿或传输(例如,mpls或ip隧道)分组流的流量工程信息(例如标签或下一跳);速率限制;指定用于将分组流匹配到特定服务链28a,28b的标准的服务类型(tos)标记或分组分类器。sdn控制器的其他实例细节在2013年6月5日提交的pct国际专利申请pct/us13/44378中描述,其全部内容通过引用并入本文。
基于服务链28a,28b信息的规范,sdn控制器19还可建立专用隧道,用于在网关8和服务节点10之间传输分组流26的分组,并且用于在服务综合体内的服务节点10之间传输分组。例如,sdn控制器19可执行路径计算和发布路径建立消息和/或分发要在沿着每个服务路径的每一跳处使用的标签或其他报头信息。能够执行路径计算和向网络元件分发标签的sdn控制器的实例细节在2013年3月15日提交的美国专利申请13/842,453中描述,其全部内容通过引用并入本文。
如上所述,服务节点10可包括虚拟服务实例,该虚拟服务实例被部署为vm或以一个或多个物理设备(例如服务器)作为主机的其他虚拟实体,以提供单独的服务或服务链。使用虚拟服务实例使得能够按需自动扩缩服务。在一个实例中,sdn控制器19可基于由网关8接收的分组流26的分组针对给定服务的增加的需要为给定服务建立或实例化服务综合体9内的额外的虚拟服务实例。在另一实例中,sdn控制器19可基于由网关8接收的分组流26的分组针对给定服务的减少的需要为给定服务从服务综合体9中移除或拆除虚拟服务实例。
为了以高的规模和吞吐量实现服务链,网关8可用于将分组流26的分组锚定到服务节点10在正向和反向方向上提供的服务。另外,网关8可用于对服务链中的第一或前端服务执行分组流26的负载均衡。在某些情况下,每个服务的一个虚拟服务实例或vm可能不足以支持分组流26的服务需求。在这种情况下,给定服务的完整功能可跨越以一个或多个物理服务器为主机的多个虚拟机。因此,在网关8处可能需要跨虚拟服务实例的负载均衡。例如,在两个或更多个服务节点10(例如,服务节点10a和10c)提供相同服务的情况下,网关8可包括负载均衡组中的服务节点10a,10c,并且将已分配给跨隧道服务的分组负载均衡至服务节点10a,10c。
常规地,手动配置用于给定服务的负载均衡组以包括在某个时间点上操作的服务提供实体,例如服务节点10的真实或虚拟服务实例。可周期性地手动更新负载均衡组,以反映服务提供实体的变化。但是,在虚拟服务实例的情况下,手动配置给定服务的负载均衡组可能无法准确地跟踪给定服务的虚拟服务实例的按需扩缩(即实例化和/或拆除)。由于可在物理网络设备上动态添加、删除或迁移虚拟服务实例,并且由于预定的维护,服务可能会失灵(godown)和出现(comeup),所以网关8可能希望能够自动发现为给定服务建立的虚拟服务实例。
根据本公开的技术,网关8和sdn控制器19被配置为能够自动发现两个或更多个虚拟服务实例,例如两个或更多个服务节点10,所述两个或更多个虚拟服务实例被配置为将给定服务应用于分组流26的分组。根据这些技术,sdn控制器19和网关8建立边界网关协议(bgp)对等体会话18,sdn控制器19在边界网关协议对等体会话18上通告该服务的bgp路由。通告的bgp路由表示由sdn控制器19建立的专用隧道,每个隧道从网关8扩展到给定服务的服务节点10的虚拟服务实例中相应的一个。网关8发现通告的bgp路由的虚拟服务端点(作为真实服务),并自动更新给定服务的负载均衡组,以包括bgp路由。以这种方式,网关8和sdn控制器19支持sdn/nfv环境中的服务的自动扩缩和自动发现,并且网关8上的负载均衡器可随sdn/nfv环境中的动态服务一起调整。
一旦接收到分配给给定服务或作为前端服务的具有给定服务的服务链的分组流26的分组,网关8的负载均衡器从给定服务的负载均衡组中选择一个bgp路由。当网关8将分组引导到适当的服务或服务链中时,网关8可修改分组流26的分组。例如,网关8可向每个分组前缀报头和/或标签(例如,附加的ip报头和/或mpls标签)以形成其中分组被封装为有效载荷的“隧道分组”。网关8可基于特定签约用户和为特定签约用户分配特定类型的分组流的服务链来选择特定的报头。根据本公开的技术,网关8可基于从用于服务链的前端服务的负载均衡组中选择的一个bgp路由进一步选择特定的报头和/或标签。网关8然后基于用于所选择的bgp路由的报头和/或标签将封装的分组转发到虚拟服务端点,以将给定服务应用于分组。
在一些实例实现中,本文参考sdn控制器19描述的功能和操作可由设备或组件的组合来实现。例如,在一个实例实现中,本文参考sdn控制器19描述的功能和操作可由与管理用于路由和交换组件的底层网络状态的sdn控制器一起操作的编排(orchestration)引擎来实现,以便提供所请求的网络和网络服务。因此,图1的sdn控制器19可表示管理网络服务的编排引擎和底层sdn控制器,该底层sdn控制器通过配置物理交换机(例如,tor交换机、经典交换机或服务提供商核心的交换矩阵)、物理路由器、诸如防火墙的物理服务节点和负载均衡器等来实现来自编排引擎的高级请求。尽管图1中未示出,对于这里的术语sdn控制器的任何引用被理解为包括将编排引擎用作sdn控制器的一部分或与sdn控制器一起使用的实现。编排引擎的进一步实例细节在2014年12月的etsigsnfv-man001,networkfunctionsvirtualisation(nfv)managementandorchestration中描述,其全部内容通过引用并入本文。
图2是示出根据本文描述的技术操作的实例服务提供商网络的一部分的框图。图2所示的服务提供商网络包括sdn控制器32、路由器34、第一物理服务器-140和第二物理服务器-242。sdn控制器32可基本上类似于图1的sdn控制器19来操作。路由器34可基本上类似于图1中的网关网络设备8来操作。如下面更详细描述的那样,服务器-140作为虚拟机(vm)44,45的主机并且服务器-242作为vm46,47的主机,每个虚拟机被配置为虚拟服务实例。由服务器-140和服务器-242作为主机的vm可基本上类似于来自图1的服务节点10操作。
sdn控制器32操作为网络服务控制器,并且在至少一个物理网络设备(例如,服务器1-40和/或服务器-242)上建立给定服务的两个或更多个虚拟服务实例。图2示出的服务提供商网络提供“绿色”服务和“红色”服务。绿色服务和红色服务中的每一个可以是防火墙和安全服务、cg-nat服务、媒体优化服务、ipsec/vpn服务、dpi服务、http过滤服务或应用于网络流量的其他类型的服务中的任一个。
在图2所示的实例中,服务器-140执行虚拟路由器(vr)41,所述虚拟路由器(vr)41作为绿色服务的第一虚拟服务实例vm-s1144和第二虚拟服务实例vm-s1245的主机。在该实例中,vr41可配置有绿色服务特定路由目标(rt),例如65412:1。另外,服务器-242执行vr43,所述vr43作为绿色服务的第三虚拟服务实例vm-s2146和红色服务的第一虚拟服务实例vm-2247的主机。在该实例中,vr43可配置有绿色服务特定rt,例如65412:1,和红色服务特定rt,例如75412:1。
sdn控制器32还建立专用隧道,每个隧道从路由器34扩展到被配置为将给定服务应用于分组流的虚拟服务实例中相应的一个。图2示出了第一专用隧道,该隧道从路由器34扩展到由gre隧道50的隧道地址标识的绿色服务的第一虚拟服务实例vm-s1144,所述gre隧道50具有分配给vm-s1144的标签l101;并且图2示出了第二专用隧道,该隧道从路由器34扩展到由gre隧道50的隧道地址标识的绿色服务的第二虚拟服务实例vm-s1245,所述gre隧道50具有分配给vm-s1245的标签l102。在一个实例中,gre隧道50的隧道地址可以是gr-1/0/0.32270。图2示出了第三专用隧道,该隧道从路由器34扩展到由gre隧道52的隧道地址标识的绿色服务的第三虚拟服务实例vm-s2146,所述gre隧道52具有分配给vm-s2146的标签l103。在一个实例中,gre隧道52的隧道地址可以是gr-1/1/0.32271。另外,图2示出第四专用隧道,该隧道从路由器34扩展到由gre隧道53的隧道地址标识的红色服务的第一虚拟服务实例vm-s2247,所述gre隧道53具有分配给vm-s2247的标签l104。在一个实例中,gre隧道53的隧道地址可以是gr-1/2/0.32272。
sdn控制器32和路由器34建立一个bgp对等体会话33,sdn控制器32和路由器34通过该bgp对等体会话33交换诸如路由信息之类的bgp消息。sdn控制器32计算表示路由器34与绿色服务和红色服务的虚拟服务实例之间的专用隧道的bgp路由。sdn控制器32然后经由bgp对等体会话33向路由器34通告用于每个绿色服务和红色服务的bgp路由。例如,sdn控制器32可计算和通告绿色服务的ecmp下一跳路由集,所述绿色服务的ecmp下一跳路由集包括到达vm-s1144的第一成员路由、到达vm-s1245的第二成员路由以及到达vm-s2146的第三成员路由。作为另一实例,sdn控制器32可计算和通告红色服务的ecmp下一跳路由集,所述红色服务的ecmp下一跳路由包括到达vm-s2247的第一成员路由。
在路由器34内,适当地建立bgp和路由实例相关的配置以监听来自sdn控制器32的bgp路由。例如,路由器34包括虚拟路由和转发(vrf)路由识别器(rd)属性和vrf路由目标(rt)属性,这些属性可被配置为监听由sdn控制器32经由bgp对等体会话33通告的ecmp下一跳。每当sdn控制器32在物理网络设备上配置一个或多个虚拟服务实例(例如,vm)时,sdn控制器32经由bgp对等体会话33将到达虚拟服务实例的bgp路由传播到路由器34。以这种方式,sdn控制器32可为路由器34中的每个服务建立ecmp下一跳路由集,其中ecmp下一跳路由集的每个成员路由表示扩展到一个服务中的一个虚拟服务实例的一个专用隧道。
路由器34的负载均衡器出于负载均衡目的考虑由bgp路由表示的专用隧道的待为真实服务的各个虚拟服务端点。根据所公开的技术,路由器34为绿色服务和红色服务中的每一个保持负载均衡组,所述负载均衡组包括作为负载均衡实体的给定服务的bgp路由。在图2所示的实例中,路由器34包括用于绿色服务的vrf-green表36和包括绿色服务特定rt的vrf-green路由实例37。类似地,路由器34包括用于红色服务的vrf-red表38和包括红色服务特定rt的vrf-red路由实例39。在图2的实例中,路由器34在vrf-green表36中维护绿色服务的负载均衡组,并在vrf-red表38中维护红色服务的负载均衡组。
对于给定服务的负载均衡组中包括的每个bgp路由,用于服务的vrf表包括扩展到由相应一个bgp路由表示的虚拟服务实例的专用隧道的隧道标识符。例如,vrf绿表36可包括扩展到第一虚拟服务实例vm-s1144的第一专用隧道的第一隧道标识符,该第一隧道标识符包括具有分配给vm-s1144的标签l101的gre隧道50的隧道地址。vrf-绿色表36还可包括扩展到第二虚拟服务实例vm-s1245的第二专用隧道的第二隧道标识符,该第二隧道标识符包括具有分配给vm-s1245的标签l102的gre隧道50的隧道地址。vff-绿色36可进一步包括扩展到第三虚拟服务实例vm-s2146的第三专用隧道的第三隧道标识符,该第三隧道标识符包括具有分配给vm-s2146的标签l103的gre隧道52的隧道地址。作为另一实例,vrf-红表38可包括扩展到第一虚拟服务实例vm-s2247的第一专用隧道的第一隧道标识符,该第一隧道标识符包括具有分配给vm-s2247的标签l104的gre隧道53的隧道地址。
在一个实例中,vrf-绿色表36可包括以下绿色服务的ecmp下一跳路由集。
vrf-绿色(经由bgp学习的路由)=0.0.0.0/0ecmp{
(gr-1/0/0.32270,l101),
(gr-1/0/0.32270,l102),
(gr-1/1/0.32271,l103)}
另外,vrf-绿色路由实例37可被配置为导入vr41和vr43的绿色服务特定rt:导入rt=65412:1。
在另一实例中,vrf-红色表38可包括以下红色服务的ecmp下一跳路由集。
vrf-红色(经由bgp学习的路由)=0.0.0.0/0ecmp{
(gr-1/2/0.32272,l104)}
另外,vrf-红色路由实例39可被配置为导入vr43的红色服务特定rt:导入rt=75412:1。
一旦在路由器34中配置了vrf表和负载均衡组,则路由器34可跨扩展到给定服务的虚拟服务端点的专用隧道执行负载均衡。例如,响应于接收到源ip地址为41.1.1.1并且目的地ip地址为100.1.1.1的分组,路由器34可首先确定将哪个服务或服务链分配给该分组。在所分配的服务或所分配的服务链的前端服务是绿色服务的情况下,路由器34访问vrf-绿色36中的负载均衡组。路由器34的负载均衡器基于负载均衡算法执行负载均衡,以便从负载均衡组中选择其中一个bgp路由,在该bgp路由上转发到达绿色服务的虚拟服务实例vm-s1144、vm-s1245或vm-s2146之一的分组。
然后,路由器34可使用扩展到由所选择的一个bgp路由表示的虚拟服务实例的专用隧道的隧道标识符来封装所接收的分组。例如,在路由器34的负载均衡器选择表示扩展到第二虚拟服务实例vm-s1245的第二专用隧道的bgp路由的情况下,路由器34可使用vrf-绿色36中的第二隧道标识符封装接收到的分组,所述第二隧道标识符包括具有分配给vm-s1245的标签l102的gre隧道50的隧道地址,例如gr-1/0/0.32270,l102。然后,路由器34根据所选bgp路由的隧道标识符转发封装的分组到虚拟服务实例,以将绿色服务应用于分组。
响应于经由gre隧道50接收封装的分组,vr41处理并去除用于从封装分组到达服务器-140的隧道标识符的gre隧道地址,例如,gr-1/0/0.32270。vr41然后读取并去除分配给第二虚拟服务实例vm-s1245的标签,例如l102。基于该标签,vr41转发已解封装的原始分组(例如源ip地址为41.1.1.1并且目的地ip地址为100.1.1.1的原始分组)到vm-s1245的适当的tap接口上。然后,vm-s1245将所需的服务应用于原始分组。
下面描述所公开技术的一个或多个优点。这些技术不需要任何手动配置,因为sdn控制器32和路由器34动态地自动发现真实服务并支持自动扩缩。这些技术使用bgp从sdn控制器32学习真实服务。这些技术使得路由器34的负载均衡器能够正确地处理实际服务纵向扩缩(scalingupanddown)以及横向扩缩(scalinginandout)的自动扩缩事件。这些技术不需要对后端真实服务进行明确的健康监控。相反,bgpecmp下一跳更新可指示哪些真实服务被关闭或删除。这些技术解决了sdn/nfv环境中负载均衡的使用情况。无论同一物理服务器还是不同服务器作为虚拟服务实例的主机,这些技术都能够在sdn/nfv环境中动态添加更多容量。这些技术不使用域名系统(dns),因此不需要任何dns设置(setup)、dns服务器和dns配置(configuration)。相反,根据本公开的技术,服务的自动扩缩和自动发现是经由bgp完全自动的。
图3是示出被配置为实现本文所描述的技术的实例sdn控制器60的框图。sdn控制器60可操作为服务提供商网络的网络服务控制器。在一些实例中,sdn控制器60可基本上类似于图1的sdn控制器19和/或图2的sdn控制器32。
在图3示出的实例中,sdn控制器60包括配置单元62和控制单元64,所述控制单元64耦合到网络接口66以通过入站链路67和出站链路68与网络设备交换分组。在一些实例中,分析单元61、配置单元62和/或控制单元64可被实现为在一个或多个物理计算设备的一个或多个虚拟机上执行的一个或多个处理。也就是说,虽然通常被示出和描述为在单个sdn控制器60上执行,但是这些单元的方面可被委派给其他计算设备。
分析单元61、配置单元62和控制单元64中的每一个可包括执行软件指令的一个或多个处理器(未示出),诸如用于定义软件或计算机程序的软件指令,被存储到计算机可读存储介质(未示出)的软件指令,所述计算机可读存储介质诸如非暂时性计算机可读介质,包括存储设备(例如,磁盘驱动器或光驱动器)或存储器(诸如闪存或ram)或任何其他类型的易失性或非易失性存储器,其存储指令以使一个或多个处理器执行本文所描述的技术。可替代地或另外,分析单元61、配置单元62和控制单元64中的每一个可包括专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路(asic)、一个或多个特定应用专用处理器(assp)、一个或多个fpga或者一个或多个前述专用硬件实例的任意组合,用于执行本文所述的技术。图3所示的sdn控制器60的架构仅出于实例的目的示出,不应该限于这种架构。在其他实例中,sdn控制器60可以以各种方式配置。
分析单元61和配置单元62可包括sdn控制器60的管理层,而控制单元64可包括sdn控制器60的控制层。分析单元61可从服务提供商网络内的物理和/或虚拟网络元件(例如图1的服务提供商网络2内的网关8和服务节点10)捕捉信息,并分析用于管理由服务提供商提供的网络服务的信息。信息可包括统计、日志、事件和错误。
配置单元62存储服务提供商网络内的网络元件的配置信息。在一些实例中,配置信息包括虚拟网络配置。配置单元62可将预期虚拟网络配置的高级数据模型转换为较低级数据模型,以用于与网络元件交互。
sdn控制器60的控制单元64实现了负责维护不断变化的网络状态的服务提供商网络的集中控制平面。控制单元64与服务提供商网络内的网络元件交互,以在所有网络元件之间保持一致的网络状态。控制单元64为命令行界面守护进程75(“cli75”)提供操作环境,该命令行界面守护进程75提供了管理员或其他管理实体可使用基于文本的命令来修改sdn控制器60的配置的接口。控制单元64还提供用于多个协议70的操作环境,包括图3所示的边界网关协议(bgp)72和可扩展消息和存在协议(xmpp)74。
在一些实例中,控制单元64使用xmpp74,通过xmpp接口(未示出)与服务提供商网络内的网络元件(诸如图1的服务提供商网络2内的网络8或服务节点10)进行通信。可根据xmpp74将虚拟网络路由数据、统计信息收集、日志和配置信息作为可扩展标记语言(xml)文档发送以用于sdn控制器60与网络元件之间的通信。控制单元64还可使用xmpp74与sdn控制器60的分析单元61和配置单元62中的一个或两个进行通信。控制单元64执行bgp72以建立与服务提供商网络内的bgp扬声器和bgp侦听器的bgp对等体会话,以交换路由信息。例如,控制单元64可使用bgp72建立与网关网络设备的bgp对等体会话,例如与图1的网关8的bgp对等体会话18,或与图2的路由器34的bgp对等体会话33。
控制单元64包括自动扩缩单元76,被配置为使用xmpp74与诸如服务器的物理网络设备进行通信,以便响应于服务提供商网络中分组流的不同服务的波动需求来建立或移除虚拟网络服务实例。例如,自动扩缩单元74可建立给定服务的一组两个或更多个虚拟服务实例,作为在诸如服务器的至少一个物理网络设备上运行的两个或更多个虚拟机(vm)或其他虚拟实体。自动扩缩单元76还可被配置为使用bgp72来建立专用隧道,每个隧道从服务提供商网络中的网关网络设备扩展到给定服务的一组实例化虚拟服务实例中相应的一个。如上面关于图2所讨论的,每个专用隧道可具有隧道标识符,该隧道标识符包括从网关网络设备扩展到物理网络设备的gre隧道的隧道地址,以及分配给在物理网络设备上运行的给定服务的其中一个虚拟服务实例的标签。
根据所公开的技术,控制单元64还包括自动发现单元76,被配置为计算表示网关网络设备与给定服务的虚拟服务实例之间的专用隧道的bgp路由。自动发现单元76进一步被配置为经由与网关网络设备的bgp对等体会话向网关网络设备通告作为负载均衡实体的给定服务的bgp路由。例如,自动发现单元76可通告给定服务的ecmp下一跳路由集,所述ecmp下一跳路由集包括到达给定服务的两个或更多个虚拟服务实例的两个或更多个成员路由。如本文所述,通告与作为负载均衡实体的虚拟服务端点的bgp路由,使网关网络设备能够自动发现虚拟服务端点,并在bgp路由上执行负载均衡,以便将分组流转发给所述给定服务。
图4是示出被配置为实现本文所描述的技术的实例路由器80的框图。路由器80可包括具有sdn/nfv架构的网络(诸如来自图1的服务提供商网络2)中的任何路由器。例如,路由器80可包括网关、边缘路由器、核心路由器或图1所示的其他设备,这些设备将分组流引导到服务综合体以应用网络服务。
在图4的实例中,路由器80包括控制单元82,在控制单元82中,路由引擎86为路由器80提供控制平面功能。路由器80还包括多个分组转发引擎114a-114n(“pfe114”)和交换结构118,用于共同提供数据平面,以转发网络流量。pfe114经由接口卡112(“ifc112”)接收和发送数据分组。在其他实施例中,每个pfe114可包括更多或更少的ifc。尽管未示出,pfe114可各自包括中央处理单元(cpu)和存储器。在所示实例中,路由引擎86通过专用内部通信链路120连接到每个pfe114。例如,专用链路120可包括千兆比特以太网连接。交换结构118提供高速互连,用于在pfe114之间转发输入数据分组以通过网络传输。
控制单元82为路由引擎86提供操作环境,并且可仅以软件或硬件实现,或者可被实现为软件、硬件或固件的组合。例如,控制单元82可包括执行软件指令的一个或多个处理器。在这种情况下,路由引擎86可包括各种软件模块或守护进程(例如,一个或多个路由协议进程,用户界面等),并且控制单元82可包括计算机可读存储介质,诸如计算机存储器或硬盘,用于存储可执行指令。
路由引擎86为命令行界面守护进程90(“cli90”)提供操作环境,该命令行界面守护进程90(“cli90”)提供了管理员或其他管理实体可使用基于文本的命令修改路由器80的配置的接口。简单网络管理协议守护进程91(“snmp91”)包括snmp代理,其从管理实体接收snmp命令,以便设置和检索路由器80的配置和管理信息。使用cli90和snmp91,管理实体可例如启用/禁用和配置服务、安装路由、启用/禁用和配置速率限制器以及配置接口。
路由引擎86还为各种协议88的执行提供操作环境,所述各种协议88可包括具有由计算环境执行的指令的软件进程。路由引擎86执行路由协议守护进程(rpd)92,该守护进程使用诸如bgp96和内部网关协议(igp)98之类的一个或多个路由协议,以维护路由信息库(rib)104形式的路由信息,所述路由信息库(rib)104描述了网络的拓扑并且根据路由信息导出转发信息库(fib)106。通常,路由信息表示服务提供商网络的整体拓扑。rpd92与内核100进行交互(例如,通过应用程序编程接口(api)调用),以基于路由器80接收到的路由协议消息更新rib104。rib104可包括定义网络拓扑的信息,该信息包括一个或多个路由表和/或链路状态数据库。通常,路由信息定义通过网络到经由距离矢量路由协议(例如,bgp96)学习的网络内的目的地/前缀的路由(即,一系列下一跳),或者定义具有使用igp98的链路状态路由协议(例如,中间系统到中间系统(is-is)或开放最短路径优先(ospf))学习的互连链路的网络拓扑。
路由引擎86还执行一个或多个流量工程协议以建立隧道,用于通过与不同服务链相关联的有序组的服务节点转发签约用户分组。例如,rsvp-te99可执行具有流量工程扩展的资源预留协议来交换流量工程(te)信息,例如用于启用基于标签的分组转发的mpls标签。作为另一实例,路由引擎86可使用基于gre或ip的隧道协议来建立流量工程隧道。
如关于本公开的技术所描述的,路由引擎86执行bgp96以建立与服务提供商网络内的bgp扬声器和bgp侦听器的bgp对等体会话,以交换路由信息。例如,路由引擎86可使用bgp96建立与服务提供商网络中的其他路由器以及与服务提供商网络的sdn控制器的bgp对等体会话,例如,与来自图1的sdn控制器19的bgp对等体会话18或与来自图2的sdn控制器32的bgp对等体会话33。然后,路由引擎86可经由bgp对等体会话从sdn控制器接收给定服务的bgp路由通告。所通告的bgp路由表示由sdn控制器建立的专用隧道,每个隧道从路由器80扩展到给定服务的一组两个或更多个虚拟服务实例中相应的一个。以这种方式,路由器80能够自动发现被配置为将给定服务应用于分组的虚拟服务实例。
根据本公开中描述的技术,路由引擎86执行流量负载均衡器(tlb)守护进程94,其维护用于给定服务的负载均衡组,所述负载均衡组包括给定服务的每个bgp路由。以这种方式,bgp路由的每个虚拟服务端点将被视为真实服务,并用作负载均衡实体。可在fib106内的给定服务的虚拟路由和转发(vrf)表(未示出)中维护给定服务的负载均衡组。例如,tlb守护进程94与内核100交互(例如,通过api调用)以便在fib106中为给定服务的vrf表中安装bgp路由。在某些情况下,存储在vrf表中的bgp路由包括ecmp下一跳路由集,ecmp下一跳路由集包括到达给定服务的两个或更多个虚拟服务实例的两个或更多个成员路由。tlb守护进程94将每个bgp路由存储在vrf表中,所述vrf表具有由相应一个bgp路由表示的专用隧道的隧道标识符。用于特定专用隧道的隧道标识符包括从路由器80扩展到物理网络设备的gre隧道的隧道地址,以及分配给在物理网络设备上运行的给定服务的其中一个虚拟服务实例的标签。
路由引擎86将表示fib106的软件副本的数据传送到每个pfe114中,以控制数据平面内的流量的转发。这允许更新存储在每个pfe114中的存储器(例如,ram)中的软件fib,而不会降低路由器80的分组转发性能。在一些情况下,路由引擎86可为每个相应的pfe114导出单独且不同的软件fib。另外,一个或多个pfe114包括asic116,其中pfe114基于复制到每个相应的pfe114的软件fib(即,软件fib的硬件版本)与fib的硬件副本一起编程。
例如,内核100在主微处理器102上执行,并且可包括例如诸如linux或伯克利软件分布(berkeleysoftwaredistribution,bsd)的unix操作系统衍生工具。内核100处理来自bgp96、igp98和rsvp-te99的内核调用,以基于rib104中表示的网络拓扑生成fib106形式的转发信息,即执行路由解析和路径选择。通常,内核100以基数或其他查找树的形式生成fib106,以将分组信息(例如,具有目的地信息和/或标签栈的报头信息)映射到下一跳,并且最终映射到与相应的pfe114相关联的接口卡的接口端口。fib106可将例如具有特定下一跳的网络目的地与相应的ifc112相关联。如上所述,fib106还可包括一个或vrf表(未示出),每个vrf表存储至给定服务的虚拟服务实例的bgp路由。
在内核100上执行的主微处理器102编程pfe114,以安装包括vrf表的fib106的副本。微处理器102可包括一个或多个通用或专用处理器,诸如数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其它等效逻辑器件。因此,如本文所使用的术语“处理器”或“控制器”可指任何一个或多个上述结构或可操作以执行本文所述技术的任何其它结构。
在图4所示的实例中,asic116是微代码控制芯片组(即,转发电路),由在每个pfe114上执行的从(slave)微处理器可编程地配置。当转发分组时,每个asic116的控制逻辑遍历从路由引擎86接收到的转发信息(即,fib106),并且一旦达到分组的fib条目(例如,叶节点),微代码实现的控制逻辑自动选择转发下一跳,并根据下一跳中定义的操作来处理分组。以这种方式,pfe114的asic116通过在分组遍历路由器80的内部架构时通过相应的内部分组转发路径对每个分组执行一系列操作来处理分组。例如,可基于分组在出去之前被引导至此的相应的进入接口、pfe114入口、pfe114出口、出口接口或路由器80的其他组件中的任一个对每个分组执行操作,诸如pfe114的一个或多个服务物理接口卡(pic)124a-124n(统称为“服务pic124”)。每个pfe114包括转发结构,其在被执行时检查每个分组的内容(或另一个分组属性,例如,进入接口),并且例如在该基础上作出转发决定,应用过滤器和/或执行计费、管理、流量分析和负载均衡。根据本公开的技术,路由器80包括在pfe114的服务pic124上运行的流量负载均衡器(tlb)126a-126n(“tlb126”)。tlb126可包括有状态或无状态的流量负载均衡器。
通常,内核100可生成fib106,从而编程asic116以存储与每个服务链相关联的转发结构。例如,asic116可配置有转发信息,该转发信息指定诸如ip报头信息或mpls标签之类的流量工程信息,以及用于使可编程asic116根据转发信息来封装用户分组的操作。可类似地编程pfe114的服务pic124以存储与给定服务相关联的fib106内的vrf表的转发结构。例如,一个或多个服务pic124可被配置有用于给定服务的负载均衡组,该负载均衡组包括表示至给定服务的虚拟服务实例的专用隧道的bgp路由。
本公开的技术使得服务pic124中的tlb126能够应用负载均衡算法,以便从给定服务的负载均衡组中选择一个bgp路由在其上转发分配给给定服务的签约用户分组。一旦从负载均衡组中选择一个bgp路由,asic116可使用扩展到由所选择的一个bgp路由表示的虚拟服务实例的专用隧道的隧道标识符封装所接收的分组。以这种方式,asic116可处理签约用户分组以针对每个分组选择特定的服务路径,并根据所选择的服务或服务链封装签约用户分组。
作为所公开技术的具体实例,在路由器34的路由引擎86中执行的tlb守护进程94可为bgp路由的每个虚拟服务端点创建真实服务。tlb守护进程94可使用指向由bgpecmp下一跳路由集所表示的专用隧道的隧道标识符创建真实服务,并将隧道标识符与通配符虚拟服务器相关联。通配符虚拟服务器可监听服务pic124中的一个(例如服务pic124a)上的流量。在这种情况下,pfe114可基于配置的过滤器向服务pic124a发送流量。服务pic124a识别到达此通配符虚拟服务器的流量,并且服务pic124a上的tlb126a根据配置的负载均衡算法进行负载均衡。服务pic124a然后可建立会话以链接后续分组的前向和反向流。
当该ecmp下一跳路由集上的下一次更新经由bgp96从sdn控制器到达路由引擎86时,tlb守护进程94可检查vrf中下一跳的成员中的任何改变。如果增加了真实的服务,tlb守护进程94将真实的服务添加到vrf中的负载均衡组。如果缺少ecmp下一跳路由集成员,则tlb守护进程94会从vrf中的负载均衡组删除该条目。对于从ecmp下一跳路由集中删除的真实服务,tlb126a将其视为该真实服务(即作为虚拟服务实例的主机的vm或虚拟实体)上的删除或关闭事件。对于传输控制协议(tcp)客户端,可在已建立的至真实服务的专用隧道上发送tcp重置。对于用户数据报协议(udp)客户端,会话可能会以预定的超时关闭。
为了支持sdn环境中的负载均衡,服务pic124中的tlb126可能要求以与分组的目的地地址不同的地址路由数据分组。在这种情况下,服务pic124中的tlb126可在与数据分组一起的javascript文件管理器(jfm)cookie中提供真实服务地址(即,将分组路由到给定的真实服务实例的隧道标识符)。然后,pfe114可基于jfmcookie中的隧道标识符而不是目的地ip地址来路由分组。能够基于cookie来路由分组流的分组的网关网络设备的进一步的细节在2013年9月30日提交的美国专利申请号14/042,685和2014年3月28日提交的美国专利申请号14/228,706中描述,其各自的全部内容通过引用并入本文。
图5示出的路由器80的架构仅出于实例的目的示出。本公开不限于此结构。在其他实例中,路由器80可以以各种方式配置。在一个实例中,控制单元82的一些功能可分布在ifc112内。控制单元82可仅以软件或硬件实现,或者可被实现为软件、硬件或固件的组合。例如,控制单元82可以包括一个或多个处理器、可编程处理器、通用处理器、集成电路、专用集成电路(asic)、现场可编程门阵列(fpga)或能够实现本文描述的技术的任何类型的硬件单元。控制单元82可进一步包括执行存储在计算机可读存储介质上的软件指令的一个或多个处理器,所述计算机可读存储介质诸如随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、非易失性随机存取存储器(nvram)、闪存、硬盘、cd-rom、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读存储介质。在一些情况下,计算机可读存储介质可包括使可编程处理器执行本文所述技术的指令。
图5是示出为一个或多个服务节点144a-144m(统称为“服务节点144”)提供操作环境的实例服务器130的框图。在一些实例中,服务器130可包括数据中心内的服务器,例如来自图1的服务综合体9。
在该实例中,服务器130包括网络接口136,以在多个专用隧道134a-134n(统称为“隧道134”)上接收隧道分组132。每个专用隧道134对应于多个服务中不同的服务,其可以是在不同的服务链中的前端服务,该服务链包括要应用于分组流的不同有序组的一个或多个有状态(stateful)网络服务。每个隧道分组132封装签约用户分组,并且包括扩展到一个虚拟服务实例(例如,服务节点144a-144m(统称为“服务节点144”))的一个专用隧道134的隧道标识符,虚拟服务实例在服务器130上被配置为将给定服务应用于隧道分组132。如上所述,扩展到其中一个虚拟服务实例(例如,服务节点144a)的一个专用隧道134(例如专用隧道134a)的隧道标识符包括到达服务器130的gre隧道的隧道地址,所述gre隧道具有分配给服务节点144a的标签。
在图5的实例中,服务器130包括执行管理程序140的微处理器138,以便为服务节点144内的虚拟路由器142和一个或多个虚拟机146a-146m(统称为“虚拟机146”)提供执行环境。服务节点144的虚拟机146为专用隧道134提供虚拟服务端点。每个虚拟机146执行网络服务软件,诸如服务节点144a内的防火墙实例150和服务节点144m内的http过滤器实例152,以便将一个或多个网络服务应用于分组流。
一旦经由其中一个专用隧道134,例如,专用隧道134a,接收到隧道分组132,虚拟路由器142处理和去除每个隧道分组的隧道标识符,以确定哪个服务节点144发送相应的分组。例如,对于专用隧道分组,虚拟路由器142首先从隧道分组去除用于到达服务器130的gre隧道地址,然后读取并去除分配给专用隧道134a的服务实例端点的标签。基于该标签,虚拟路由器142将解封装的分组转发到其中一个服务节点144(例如,服务节点144a)的适当tap接口。在该实例中,服务节点144a的虚拟机146a接收解封装的分组,并将防火墙实例150的服务应用于解封装的分组。
图6是示出根据本文所描述的技术的网络设备(例如路由器或网关)和sdn控制器的实例操作的流程图。图6中所示的操作在本文将针对图2的sdn控制器32和路由器34进行描述。在其他实例中,图6所示的操作可由图1的sdn控制器19和网关8执行,或图3的sdn控制器60和图4的路由器80执行。
路由器34建立与sdn控制器32的bgp对等体会话33(202),sdn控制器62也建立与路由器34的bgp对等体会话33(204)。在一些实例中,sdn控制器32可启动与路由器34的bgp对等体。在其他实例中,路由器34可启动与sdn控制器32的bgp对等体。
sdn控制器32还可以建立被配置为将给定服务应用于分组的一组两个或更多个虚拟服务实例。在一些情况下,sdn控制器32可建立虚拟服务实例作为在诸如服务器的物理网络设备上运行的两个或更多个vm。例如,如图2所示,sdn控制器32可在服务器-140上建立用于绿色服务的第一虚拟服务实例vm-s1144和第二虚拟服务实例vm-s1245。在其他情况下,sdn控制器32可建立虚拟服务实例,作为在第一物理网络设备上运行的至少一个vm以及在第二物理网络设备上运行的至少一个vm。例如,如图2所示,sdn控制器32可在服务器-140上建立第一和第二虚拟服务实例作为vm-s1144和vm-s1245,并且在服务器-242上建立用于绿色服务的第三虚拟服务实例服务vm-s2146。
sdn控制器32建立专用隧道,每个专用隧道从路由器34扩展到被配置为将给定服务应用于分组的相应一个虚拟服务实例(206)。如图2所示,对于绿色服务,sdn控制器32建立从路由器34扩展到以服务器-140作为主机的vm-s1144的第一专用隧道,第一专用隧道由gre隧道50的隧道地址标识,所述gre隧道50具有分配给vm-s1144的第一虚拟服务实例的标签l101。sdn控制器32建立从路由器34扩展到以服务器-140作为主机的vm-s1245的第二专用隧道,第二专用隧道由gre隧道50的隧道地址标识,所述gre隧道50具有分配给vm-s1245的第二虚拟服务实例的标签l102。sdn控制器32还建立从路由器34扩展到以服务器-242作为主机的vm-s2146的第三专用隧道,第三专用隧道由gre隧道52的隧道地址标识,所述gre隧道52具有分配给vm-s2146的第三虚拟服务实例的标签l103。
然后,sdn控制器32计算表示专用隧道的bgp路由,每个专用隧道扩展到给定服务的一组虚拟服务实例中相应的一个(208)。sdn控制器32经由bgp对等体会话33将作为负载均衡实体的给定服务的bgp路由通告给的路由34(210)。在一些情况下,sdn控制器32计算并通告ecmp下一跳路由集,该ecmp下一跳路由集包括达到被配置为应用给定服务的两个或更多个虚拟服务实例的两个或更多个成员路由。例如,sdn控制器32可计算和通告用于绿色服务的ecmp下一跳路由集,所述用于绿色服务的ecmp下一跳路由集包括经由第一专用隧道到达第一虚拟服务实例vm-s1144的第一成员路由;到达第二虚拟服务实例vm-s1245的第二成员路由,以及到达第三虚拟服务实例的vm-s2146的第三成员路由。
路由器34在对等体会话33上接收来自sdn控制器32的作为负载均衡实体的给定服务的bgp路由通告(212)。路由器34维护给定服务的负载均衡组,该负载均衡组包括给定服务的每个bgp路由(214)。在一些情况下,路由器34从sdn控制器32接收ecmp下一跳路由集,所述ecmp下一跳路由集包括到达被配置为应用给定服务的两个或更多个虚拟服务实例的两个或更多个成员路由。例如,路由器34可基于ecmp下一跳路由集更新用于绿色服务的负载均衡组,以包括经由第一专用隧道到达第一虚拟服务实例vm-s1144的第一成员路由;到达第二虚拟服务实例vm-s1245的第二成员路由;以及到达第三虚拟服务实例vm-s2146的第三成员路由。
在一个实例中,路由器34在给定服务的vrf表中维护负载均衡组。在本实例中,对于负载均衡组中包含的每个bgp路由,vrf表都包括扩展到由相应一个bgp路由表示的虚拟服务实例的专用隧道的隧道标识符。如图2所示,路由器34可在vrf-绿色36中维护绿色服务的负载均衡组。例如,vrf-绿色36可包括扩展到第一虚拟服务实例vm-s1144的第一专用隧道的第一隧道标识符,所述第一隧道标识符包括具有分配给vm-s1144的标签l101的gre隧道50的隧道地址。vff-绿色36还可包括扩展到第二虚拟服务实例vm-s1245的第二专用隧道的第二隧道标识符,所述第二隧道标识符包括具有分配给vm-s1245的标签l102的gre隧道50的隧道地址。vff-绿色36可进一步包括扩展到第三虚拟服务实例vm-s2146的第三专用隧道的第三隧道标识符,所述第三隧道标识符包括具有分配给vm-s2146的标签l103的gre隧道52的隧道地址。
每当发生bgp路由的改变时,sdn控制器32可继续经由bgp对等体会话33向路由器34通告给定服务的bgp路由更新。作为一个实例,对于给定服务,bgp路由更新可包括在服务器-140、服务器-242或另一个服务器之一上建立的新的虚拟服务实例的通知。作为另一实例,对于给定服务,bgp路由更新可包括从服务器-140、服务器-242或另一个服务器之一移除虚拟服务实例的通知。
路由器34可从bgp对等体会话33上的sdn控制器32接收bgp路由更新通告。根据接收到的bgp路由更新,路由器34更新给定服务的负载均衡组。在一个实例中,对于bgp路由更新中的任何新的虚拟服务实例通知,路由器34可向负载均衡组添加bgp路由。在另一个实例中,对于bgp路由更新中的任何移除的虚拟服务实例通知,路由器34可从负载均衡组中删除bgp路由。
路由器34接收来自第一网络设备并发往第二网络设备的分组(216)。一旦接收到分组,路由器34在将分组转发到其目的地第二网络设备之前确定一个或多个服务或服务链以应用于分组。根据本公开的技术,路由器34在确定将给定服务应用于所接收的分组之后,根据负载均衡算法从负载均衡组选择一个bgp路由,在该bgp路由上将分组转发到其中一个虚拟服务实例,用于应用给定服务(218)。例如,在路由器34确定将绿色服务应用于接收到的分组情况下,路由器34从包含在vrf-绿色36中的负载均衡组中选择一个bgp路由,在该bgp路由上将分组转发到被配置为将绿色服务应用于分组的vm-s1144、vm-s1245或vm-s2146的服务实例的其中一个。
一旦从负载均衡组中选择一个bgp路由,路由器34可使用扩展到由选择的一个bgp路由表示的虚拟服务实例的专用隧道的隧道标识符来封装接收的分组。例如,在路由器34选择表示扩展到vm-s1245的第二虚拟服务实例的第二专用隧道的bgp路由的情况下,路由器34可使用包括gre隧道50的隧道地址的第二隧道标识符来封装接收到的分组,所述gre隧道50具有分配给vm-s1245的标签l102。然后,路由器34根据所选择的bgp路由的隧道标识将所封装的分组转发到虚拟服务实例,以将给定服务应用于分组(220)。
本文描述的技术可在硬件、软件、固件或其任何组合中实现。描述为模块、单元或组件的各种特征可一起实施在集成逻辑设备中,或者单独地实现为离散但可互操作的逻辑设备或其他硬件设备。在一些情况下,电子电路的各种特征可被实现为一个或多个集成电路设备,诸如集成电路芯片或芯片组。
如果在硬件中实现,则本公开可针对诸如处理器或集成电路设备的装置,诸如集成电路芯片或芯片组。可替代地或另外,如果以软件或固件实现,则这些技术可至少部分地由包括指令的计算机可读数据存储介质来实现,所述指令在被执行时使得处理器执行上述一种或多种方法。例如,计算机可读数据存储介质可存储这样的指令以供处理器执行。
计算机可读介质可形成计算机程序产品的一部分,其可包括包装材料。计算机可读介质可包括计算机数据存储介质,诸如随机存取存储器(ram)、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪存、磁性或光学数据存储介质等。在一些实例中,制品可包括一个或多个计算机可读存储介质。
在一些实例中,计算机可读存储介质可包括非暂时介质。术语“非暂时性”可表明存储介质没有体现在载波或传播信号中。在某些实例中,非暂时性存储介质可存储随时间可变化的数据(例如,在ram或高速缓存中)。
代码或指令可以是由包括一个或多个处理器的处理电路执行的软件和/或固件,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效的集成或离散逻辑电路。因此,如本文所使用的术语“处理器”可指适于实现本文所述技术的任何前述结构或任何其它结构。另外,在一些方面,本公开中描述的功能可在软件模块或硬件模块内提供。
除了上述之外或作为其替代,描述了以下实施例。以下任何实例中描述的特征可与本文所述的任何其它实例一起使用。
实例1、一种方法,包括:由软件定义网络(sdn)控制器建立与网关网络设备的边界网关协议(bgp)对等体会话;由所述sdn控制器建立两个或更多个专用隧道,每个专用隧道从所述网关网络设备扩展到被配置为将给定服务应用于分组的一组两个或更多个虚拟服务实例中相应的一个;由所述sdn控制器计算所述给定服务的bgp路由,其中,每个所述bgp路由表示从所述网关网络设备扩展到相应一个所述虚拟服务实例的所述专用隧道中的一个;以及由所述sdn控制器经由所述bgp对等体会话向所述网关网络设备通告作为负载均衡实体的所述给定服务的所述bgp路由。
实例2、根据实例1所述的方法,其中,计算所述给定服务的bgp路由包括计算等价多路径(ecmp)下一跳路由集,所述ecmp下一跳路由集具有到达被配置为应用所述给定服务的两个或更多个虚拟服务实例的两个或更多个成员路由。
实例3、根据实例1所述的方法,其中,从所述网关网络设备扩展到相应一个所述虚拟服务实例的专用隧道中的一个由通用路由封装(gre)隧道的隧道地址标识,所述gre隧道具有被分配给相应一个所述虚拟服务实例的标签。
实例4、根据实例1所述的方法,进一步包括由所述sdn控制器经由所述bgp对等体会话向所述网关网络设备通告所述给定服务的所述bgp路由更新,其中,所述bgp路由更新包括所述给定服务的新虚拟服务实例的通知,或所述给定服务的已删除虚拟服务实例的通知。
实例5、根据实例1所述的方法,进一步包括由所述sdn控制器建立两个或更多个虚拟服务实例,作为在物理网络设备上运行的两个或更多个虚拟机。
实例6、根据实例1所述的方法,进一步包括由所述sdn控制器建立所述两个或更多个虚拟服务实例,作为在第一物理网络设备上运行的至少一个第一虚拟机以及在第二物理网络设备上运行的至少一个第二虚拟机。
实例7、一种方法,包括:由网关网络设备建立与软件定义网络(sdn)控制器的边界网关协议(bgp)对等体会话;由网关网络设备经由所述bgp对等体会话从所述sdn控制器接收作为负载均衡实体的给定服务的bgp路由的通告,其中,每个bgp路由表示一组两个或更多个专用隧道中的一个,每个所述专用隧道从所述网关网络设备扩展到被配置为将所述给定服务应用于分组的一组两个或更多个虚拟服务实例中相应的一个;由所述网关网络设备维护所述给定服务的负载均衡组,所述负载均衡组包括所述给定服务的每个bgp路由;以及由所述网关网络设备,根据负载均衡算法,从所述负载均衡组选择其中一个所述bgp路由,在所选bgp路由上将所述分组转发到应用所述给定服务的虚拟服务实例中相应的一个。
实例8、根据实例7所述的方法,其中,所述给定服务的bgp路由包括等价多路径ecmp下一跳路由集,所述ecmp下一跳路由集具有到达被配置为应用所述给定服务的两个或更多个虚拟服务实例的两个或更多个成员路由。
实例9、根据实例7所述的方法,其中,维护所述给定服务的负载均衡组包括:在所述给定服务的虚拟路由和转发(vrf)表中维护所述负载均衡组,其中,对于每个所述bgp路由,所述vrf表包括扩展到由相应的一个所述bgp路由表示的相应的一个虚拟服务实例的专用隧道中的一个的隧道标识符。
实例10、根据实例9所述的方法,其中,扩展到所述虚拟服务实例的专用隧道中一个的所述隧道标识符包括通用路由封装(gre)隧道的隧道地址,所述gre隧道具有分配给相应的一个所述虚拟服务实例的标签。
实例11、根据实例9所述的方法,进一步包括:接收来自第一网络设备并发往第二网络设备的分组;一旦从所述负载均衡组中选择所述bgp路由中一个,用所述专用隧道中一个的隧道标识符封装所述分组,所述专用隧道中的一个扩展到由所述bgp路由中的所选的一个表示的相应的一个所述虚拟服务实例;以及基于隧道标识符将已封装分组转发到将所述给定服务应用于所述分组的所述虚拟服务实例中的一个。
实例12、根据实例7所述的方法,进一步包括:由所述网关网络设备经由所述bgp对等体会话从所述sdn控制器接收bgp路由更新的通告,所述bgp路由更新包括所述给定服务的新虚拟服务实例的通知和所述给定服务的已删除虚拟服务实例的通知中的至少一个。
实例13、根据实例12所述的方法,进一步包括:基于所述bgp路由更新来更新所述给定服务的负载均衡组,其中,更新所述负载均衡组包括对于任何新的虚拟服务实例将bgp路由添加到所述负载均衡组和对于任何已删除的虚拟服务实例从所述负载均衡组中删除bgp路由中的至少一个。
实例14、一种软件定义网络(sdn)控制器,包括:多个网络接口;和控制单元,所述控制单元包括处理器,执行边界网关协议(bgp),以在其中一个所述网络接口上建立与网关网络设备的bgp对等体会话,并且建立两个或更多个专用隧道,每个专用隧道从网关网络设备扩展到被配置为将给定服务应用于分组的一组两个或更多个虚拟服务实例中相应的一个,所述处理器被配置为计算所述给定服务的bgp路由,并将所述给定服务的bgp路由输出到其中一个所述网络接口,以作为负载均衡实体经由bgp对等体会话通告到所述网关网络设备,其中,每个所述bgp路由表示从所述网关网络设备扩展到相应一个所述虚拟服务实例的专用隧道中的一个。
实例15、根据实例14所述的sdn控制器,其中,了计算所述给定服务的所述bgp路由,所述处理器被配置为计算等价多路径ecmp下一跳路由集,所述ecmp下一跳路由集具有到达被配置为应用所述给定服务的两个或更多个虚拟服务实例的两个或更多个成员路由。
实例16、根据实例14所述的sdn控制器,其中,从所述网关网络设备扩展到相应一个所述虚拟服务实例的专用隧道中的一个由通用路由封装(gre)隧道的隧道地址来标识,所述gre隧道具有被分配给相应一个所述虚拟服务实例的标签。
实例17、根据实例14所述的sdn控制器,其中,所述处理器被配置为将所述给定服务的bgp路由更新输出到其中一个所述网络接口,以经由所述bgp对等体会话向所述网关网络设备通告,其中,所述bgp路由更新包括所述给定服务的新虚拟服务实例的通知或所述给定服务的已删除虚拟服务实例的通知。
实例18、根据实例14所述的sdn控制器,其中,所述处理器被配置为建立两个或更多个虚拟服务实例,作为在物理网络设备上运行的两个或更多个虚拟机。
实例19、根据实例14所述的sdn控制器,其中,所述处理器被配置为建立两个或更多个虚拟服务实例,作为在第一物理网络设备上运行的至少一个第一虚拟机以及在第二物理网络设备上运行的至少一个第二虚拟机。
实例20、一种网关网络设备,包括:多个网络接口;控制单元,所述控制单元包括处理器,所述处理器执行边界网关协议(bgp),以在其中一个所述网络接口上建立与软件定义网络(sdn)控制器的bgp对等体会话,所述处理器被配置为经由与所述sdn控制器的bgp对等体会话在其中一个所述网络接口上接收作为负载均衡实体的给定服务的bgp路由的通告,并且维护所述给定服务的负载均衡组,所述负载均衡组包括所述给定服务的每个bgp路由,其中,每个所述bgp路由表示一组两个或更多个专用隧道中的一个,每个所述专用隧道从所述网关网络设备扩展到被配置为将所述给定服务应用于分组的一组两个或更多个虚拟服务实例中相应的一个;以及转发电路,所述转发电路利用与所述bgp路由相关联的转发信息编程,所述转发电路被配置为根据负载均衡算法从所述负载均衡组中选择所述分组的其中一个所述bgp路由,其中,所述转发电路将所述分组输出到其中一个所述网络接口,以转发到应用所述给定服务的所述虚拟服务实例中相应的一个。
实例21、根据实例20所述的网关网络设备,其中,所述给定服务的所述bgp路由包括等价多路径ecmp下一跳路由集,所述ecmp下一跳路由集具有被配置为应用所述给定服务的两个或更多个虚拟服务实例的两个或更多个成员路由。
实例22、根据实例20所述的网关网络设备,其中,所述处理器被配置为基于所述给定服务的bgp路由维护所述给定服务的虚拟路由和转发(vrf)表,其中,对于每个所述bgp路由,所述vrf表包括扩展到由相应的一个所述bgp路由表示的相应的一个所述虚拟服务实例的专用隧道中相应的一个的隧道标识符。
实例23、根据实例22所述的网关网络设备,其中,扩展到相应一个所述虚拟服务实例的所述专用隧道中的一个的隧道标识符由通用路由封装(gre)隧道的隧道地址标识,所述gre隧道具有分配给两个或更多个虚拟服务实例中相应的一个的标签。
实例24、根据实例22所述的网关网络设备,其中,所述转发电路:接收来自第一网络设备并发往第二网络设备的分组;一旦从所述负载均衡组中选择所述bgp路由中的一个,用所述专用隧道中的一个的隧道标识符封装所述分组,所述专用隧道中的一个扩展到由所选的一个所述bgp路由表示的相应的一个所述虚拟服务实例;以及将已封装的分组输出到其中一个所述网络接口,以基于隧道标识符转发到将所述给定服务应用于所述分组的所述虚拟服务实例中相应的一个。
实例25、根据实例20所述的网关网络设备,其中,所述处理器被配置为经由与所述sdn控制器的bgp对等体会话在其中一个所述网络接口上接收bgp路由更新的通告,其中,所述bgp路由更新包括所述给定服务的新虚拟服务实例的通知和所述给定服务的已删除虚拟服务实例的通知中的至少一个。
实例26、根据实例25所述的网关网络设备,其中,所述处理器被配置为基于所述bgp路由更新来更新所述给定服务的负载均衡组,所述处理器被配置为对于任何新虚拟服务实例将bgp路由添加到所述负载均衡组和对于任何已删除的虚拟服务实例从所述负载均衡组中删除bgp路由中的至少一个。
此外,上述任何实例中阐述的任何具体特征可组合成所述技术的有益实例。也就是说,任何具体特征通常适用于本公开中描述的所有实例。已经描述了所公开技术的各种实例。这些和其它实例在所附权利要求的范围内。