在网络中分配服务功能链数据和服务功能实例数据的制作方法

文档序号:14072563阅读:260来源:国知局

本申请要求在2016年9月26日提交的美国临时专利申请第62/399,934号的权益,其全部内容通过引用结合于此。

本公开涉及计算机网络,更具体地,涉及将网络服务应用于穿过计算机网络的数据流量。



背景技术:

计算机网络由一组节点和将一个节点连接到另一节点的一组链路组成。例如,计算机网络可以由一组路由器组成,而该组链路可以是路由器之间的路径。当网络中的第一节点向网络中的第二节点发送数据流量时,消息可以通过许多链路和许多节点传递。消息在从第一节点穿过第二节点时通过的该组链路和节点被称为通过网络的路径。

网络运营商可部署一或多个计算装置来向穿过计算机网络的数据流量应用网络服务,诸如防火墙、运营商级网络地址转换(cg-nat)、用于视频的性能增强代理、传输控制协议(tcp)优化和报头富集、高速缓存和负载均衡。这些网络服务中的每者可被称为服务功能,并且由一或多个服务功能实例来实现。此外,网络运营商可配置服务功能链(本文也称为“服务功能链”),每个服务功能链标识待应用于被映射到相应服务功能链的包流的一组服务功能。换句话说,服务功能链定义一或多个待以特定顺序应用的服务功能,以向绑定到服务功能链以进行处理的包流提供用于应用的组合服务。以此方式,服务功能链为满足指定标准的包流将通过其传递的一系列服务功能。halpern,j.,ed.和c.pignataro,ed.在2015年10月的rfc7665中的“服务功能链接(sfc)架构”中描述了示例服务功能链架构,其可在www.rfc-editor.org/info/rfc7665获得,其全部内容通过引用结合于此。



技术实现要素:

总地来说,描述了利用层3(l3)路由协议来实例化网络内的服务链的技术。如本文所述,路由协议被扩展以实现描述一或多个可用服务功能的服务功能数据的分发,并且分发服务功能链数据,该服务功能链数据描述服务功能链的覆盖拓扑,每个服务功能链由通过服务功能数据描述的一或多个服务功能组成。例如,在提供服务功能的计算机网络中,网络中的每个服务功能实例应用服务功能,并且通过使用扩展层3路由协议向其他服务功能实例发布服务功能的计算装置承载。更具体地,承载服务功能实例的计算装置可输出包括计算装置的网络地址的层3路由协议路由通告(例如,bgp消息)和指定服务功能的服务功能类型和服务标识符的服务功能实例数据,其中,服务功能类型和服务标识符的组合标识网络中的服务功能实例。在一些情况下,层3路由协议路由通告可指定根据底层计算机网络的地址族变化的服务功能实例数据的地址族,并且以此方式,层3路由协议路由通告分发覆盖由多个计算装置组成的计算机网络的服务功能实例的覆盖网络的服务功能数据。

确定服务功能链的控制器或其他装置可以通过向网络中注入层3路由协议通告来分配服务功能链数据,其中,每个层3路由协议通告标识服务功能链并为服务功能链指定一组有序的一或多个服务功能。服务功能中的每者可被指定为一个或多个特定服务功能实例,或者可替代地被指定为服务功能,因为应用服务功能的任何服务功能实例可在服务功能链中使用。因此,如本文所述识别服务功能链的层3路由协议路由通告可发布服务功能实例的覆盖网络的局部覆盖网络拓扑,因为服务功能链的一组有序的一或多个服务索引指示待由绑定到服务功能链以进行处理的包流穿过的覆盖网络拓扑中的路径。

接收一或多个层3路由协议路由通告中的服务功能数据和服务功能链数据的计算装置使用服务功能数据和服务功能链数据,根据覆盖网络转发绑定到服务功能链的包流。尽管服务功能的常规部署模型通常紧密耦合到网络拓扑和物理资源,但是本公开的用于分配服务功能覆盖网络节点和拓扑数据的技术可实现将服务功能链从提供网络服务的计算机网络的底层网络拓扑解耦。这样的解耦通过减少,在一些情况下消除,支持新服务功能链所需的底层网络拓扑的变化,可简化配置或更改服务功能链。在一些情况下,该技术可通过使用不需要与主服务功能共同定位(例如,由相同的计算装置应用)的备用(或冗余)服务功能实现服务功能链接来提供进一步的优点。此外,该技术至少在一些情况下可克服底层网络转发不对称性,以实现用于正向和反向包流(例如,由防火墙进行双向流处理)的前向和后向服务功能链。

在一个示例中,一种方法包括:通过计算装置接收第一层3路由协议路由通告,该第一层3路由协议路由通告包括服务功能实例的服务功能实例数据,该服务功能实例数据指示服务功能实例的服务功能类型和服务标识符;通过计算装置接收第二层3路由协议路由通告,该第二层3路由协议路由通告包括服务功能链的服务功能链数据,该服务功能链数据指示服务路径标识符以及一个或多个服务功能项;以及至少基于确定一个或多个服务功能项中的服务功能项指示该服务功能实例,通过计算装置向服务功能实例发送被分类为该服务功能链的包。

在另一示例中,一种计算装置包括:一个或多个处理器,可操作地耦接至存储器;第一服务功能实例,被配置成由一个或多个处理器执行以应用服务功能;服务功能转发器,被被配置成由一个或多个处理器执行以:接收第一层3路由协议路由通告,该第一层3路由协议路由通告包括第二服务功能实例的服务功能实例数据,该服务功能实例数据指示服务功能实例的服务功能类型和服务标识符;接收第二层3路由协议路由通告,该第二层3路由协议路由通告包括服务功能链的服务功能链数据,该服务功能链数据指示服务路径标识符以及一个或多个服务功能项;以及至少基于确定一个或多个服务功能项中的服务功能项指示第二服务功能实例,向第二服务功能实例发送被分类为服务功能链的包。

在另一示例中,一种控制器,包括:一个或多个处理器,可操作地耦合至存储器,其中,一个或多个处理器被配置为输出第一层3路由协议路由通告,该第一层3路由协议路由通告包括服务功能链的服务功能链数据,该服务功能链数据指示服务路径标识符和一个或多个服务功能项。

在附图和下面的描述中阐述了本公开的一或多个实施例的细节。本发明的其他特征、目标和优点将从说明书和附图以及权利要求变得显而易见。

附图说明

图1示出根据本文所述的技术的示例网络系统。

图2为示出根据本公开中描述的技术提供一或多个服务功能实例的示例计算装置的框图。

图3为示出根据本文所述的技术的包括描述服务功能实例的服务功能实例数据的示例层3路由协议路由通告的框图。

图4为示出根据本文所述的技术的包括描述服务功能链的服务功能链数据的示例层3路由协议路由通告的框图。

图5示出根据本公开的技术的沿着服务功能链来引导内部包的示例隧道包。

图6为示出根据本公开的一或多种技术运行的计算装置的一个示例的进一步细节的框图。

图7为示出根据本公开的技术的用于服务功能实例的示例操作模式的流程图。

图8为示出根据本公开的技术的用于服务功能覆盖网络控制器的示例操作模式的流程图。

图9为示出根据本文所述的技术的示例服务功能链接架构参考模型的框图。

图10为示出根据本文所述的技术的示例服务功能覆盖网络的框图。

相同的附图字符代表整个说明书和附图中的相同元件。

具体实施方式

图1示出根据本文所述的技术的示例网络系统。图1的示例网络系统包括向用户装置16a-16n(统称为“用户装置16”)提供基于包的网络服务的服务提供商网络2。也就是说,服务提供商网络2为用户装置16提供网络接入的认证和建立,使得用户装置可开始与公共网络12交换数据包,公共网络12可为内部或外部基于包的网络,例如因特网。

在图1的示例中,服务提供商网络2包括经由服务提供商核心网络7和网关8提供至公共网络12的连通性的接入网6(“接入网6”)。服务提供商核心网络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)、x.25或点对点协议(ppp),以实现公共网络12的基于包的传输服务。

用户装置16经由接入网6连接至网关8,以接收至用户服务的用于由用户装置16承载的应用的连通性。用户可表示例如企业、住宅用户或移动用户。用户装置16可为与用户相关联的例如个人计算机、膝上型计算机或其他类型的计算装置。此外,用户装置16可包括经由无线电接入网(ran)4访问服务提供商网络2的数据服务的移动装置。示例移动用户装置包括移动电话、具有例如3g无线卡的膝上型或台式计算机、无线上网本、视频游戏装置、寻呼机、智能电话、个人数据助理(pda)等。每个用户装置16可运行诸如文字处理和其他办公室支持软件、网页浏览软件、支持语音呼叫的软件、视频游戏、视频会议和电子邮件等各种软件应用。用户装置16经由包括有线和/或无线通信链路的接入链路5连接至接入网6。如本文所使用的术语“通信链路”包括有线或无线的任何形式的传输介质,并且可以包括诸如网络装置的中间节点。每个接入链路5可包括例如不对称dsl网络、wimax、t-1线路、综合业务数字网络(isdn)、有线以太网或蜂窝无线电链路的方面。

网络服务提供商操作或者在一些情况下租用接入网6的元件以在用户装置16和网关8之间提供包传输。接入网6表示聚合来自一或多个用户的数据流量以便传输到/自服务提供商的服务供应商核心网络7的网络。接入网6包括执行通信协议以传输控制和用户数据以促进用户装置16和网关8之间的通信的网络节点。接入网6可包括宽带接入网、网络、无线lan、公共交换电话网络(pstn)或其他类型的接入网,并且可包括或以其他方式提供蜂窝接入网例如图1的无线电接入网(ran)4的连通性。示例包括符合通用移动电信系统(umts)架构、被称为长期演进(lte)的演进umts,由因特网工程任务组(ietf)标准化的移动ip以及由第三代合作伙伴计划(3gpp)、第三代合作伙伴计划2(3ggp/2)和全球微波接入互操作性(wimax)论坛提出的其他标准的网络。

服务提供商核心网络7(在下文中称为“核心网络7”)向附接至用于接入pdn12的接入网6的用户装置16提供基于包的连通性。核心网络7可表示由服务提供商拥有和操作以互连多个网络的网络,其可包括接入网6。核心网络7可实现多协议标签交换(mpls)转发,并且在此情况下可被称为mpls网络或mpls主干。在一些情况下,核心网络7表示提供来自一或多个服务提供商的服务的多个互连自主系统,例如因特网。公共网络12可表示例如通过诸如客户边缘交换机或路由器的客户边缘装置耦合至核心网络7的边缘网络。公共网络12可包括数据中心。

在包括有线/宽带接入网的网络2的示例中,网关8例如可表示宽带网络网关(bng)、宽带远程接入服务器(bras)、mpls提供商边缘(pe)路由器、核心路由器或网关或者电缆调制解调器终端系统(cmts)。在包括作为接入网6的蜂窝接入网的网络2的示例中,网关8可表示移动网关,例如网关通用包无线电服务(gprs)服务节点(ggsn)、接入网关(agw)或包数据网络(pdn)网关(pgw)。在其他示例中,关于网关8所述的功能可在交换机、服务卡或其他网络元件或组件中实现。

管理网络2的至少一部分的网络服务提供商通常向与接入服务提供商网络的例如用户装置16的装置相关联的用户提供服务。所提供的服务可包括例如传统的因特网接入、因特网协议语音(voip)、视频和多媒体服务以及安全服务。如上文关于接入网6所述,核心网络7可支持连接至服务提供商网络接入网关以提供对所提供服务的访问的多种类型的接入网基础设施。在一些情况下,网络系统可包括附接至具有变化架构的多个不同接入网6的用户装置16。

一般情况下,任何一或多个用户装置16可通过向网关8发送会话请求来请求授权和数据服务。继而,网关8通常访问认证、授权和计费(aaa)服务器11以认证请求网络接入的用户装置。一旦认证,任何用户装置16可向服务提供商核心网络7发送用户数据流量,以便访问和接收由公共网络12提供的服务,并且这些包作为至少一个包流的一部分穿过网关8。图1中所示的流26a表示来自任何一或多个用户装置16并被引导至pdn12的一或多个上游包流。流26b表示流过pdn12并被引导至任何一或多个用户装置16的一或多个下游包流。

术语“包流”、“业务流”或简称“流”指源自特定源装置并发送至特定目的地装置的一组包。在上游(由用户装置16之一提供)或下游(目的地为用户装置16之一)方向的单个包流可由5元组标识:例如,<源网络地址、目的网络地址、源端口、目的地端口、协议>。该5元组通常标识接收到的包所对应的包流。n元组是指从5元组中提取的任何n个项。例如,包的2元组可指的是包的<源网络地址、目的地网络地址>或<源网络地址、源端口>的组合。此外,用户装置可在对服务提供商网络2进行认证并建立用于接收数据服务的通信会话时发起多个包流。本公开中描述的技术可应用于任何两个计算装置之间的包流,并且不限于应用于图1所示的流26。

如本文所述,服务提供商网络包括具有为网络服务提供执行环境的服务功能实例10a-10n的服务复合体9。也就是说,每个服务功能实例10应用一或多个服务功能。服务功能应用于所接收到的包流的包,并且可以在协议栈(例如,网络层、应用层)的各个层进行操作。

作为示例,通过服务功能实例10应用的服务功能可包括防火墙和安全服务、运营商级网络地址转换(cg-nat)、媒体优化(语音/视频)、wan优化、nat44、nat64、http报头富集功能、tcp优化器、ipsec/vpn服务、深度包检测(dpi)、包流的http过滤、统计、计费、记账以及负载均衡或应用于网络业务的其他类型的服务。服务功能可被交替地称为虚拟化网络功能(vnf),尽管服务功能不需要是虚拟的。每个服务功能实例10以此方式表示服务功能实例的实例。每个服务功能实例表示可被实现为计算装置(例如,真实服务器)的虚拟元件和/或嵌入在物理网元(例如,防火墙或nat装置)中的组件。多个服务功能实例10可在单个计算装置或物理网元计算装置中执行。承载一或多个服务功能实例10的计算装置可指的是实际服务器或物理网元。

尽管被示为可表示数据中心的服务复合体9的一部分,但服务功能实例10可例如位于核心网内,并且可通过由核心网络7的一或多个交换机或虚拟交换机互连。在一些情况下,服务功能实例10可位于多个不同的数据中心中。一或多个服务功能实例10可位于附接至服务提供商核心7的企业/客户站点内。在一些示例中,每个服务功能实例10可由虚拟计算环境中的虚拟机执行。此外,计算环境可包括通用计算装置的可扩展集群,诸如基于x86处理器的服务器。作为另一示例,服务功能实例10可通过通用计算装置和专用装置的组合来执行。如虚拟化的,由服务功能实例10提供的各个网络服务可以像在现代数据中心一样通过分配虚拟化内存、处理器利用率、存储和网络策略进行扩展以及通过添加额外的负载均衡虚拟机进行水平扩展。

在图1的示例中,网关8通过由服务功能实例10提供的定义服务功能集来引导各个包流26。也就是说,每个包流可通过服务功能的特定有序组合转发,每个有序组合提供整体“网络服务”或“组合服务”,并且在本文中被称为“服务功能链”,或者更简单地,“服务链”。对于服务功能中的给定服务功能,服务功能链可包括提供服务功能的特定服务功能实例10,或者可指示服务功能可由提供服务功能的任何服务功能实例10应用。以此方式,包流26可由服务功能实例10根据由服务提供商配置的服务功能链处理为在接入网6和公共网络12之间的包流。特定服务功能实例10可支持多个服务功能链。示例服务链28在图1中示出并且依次包括服务功能实例10a和服务功能实例10c。

而“服务功能链”定义一或多个以特定顺序应用的服务,以向被绑定至到服务功能链的包流提供用于应用的组合服务,“服务隧道”或“服务路径”是指由服务功能链处理的包流连同根据服务功能链排序转发包流的转发状态占用的逻辑和/或物理路径。每个服务功能链可与相应的服务隧道相关联。

网关8或一个或多个服务功能节点10可将包流26分类为服务功能链。分类粒度可根据装置性能、客户需求、服务提供商网络策略和所提供的服务而有所不同。初始分类确定了处理包流的服务功能链。在服务功能链中可能发生后续分类,以改变所应用的服务功能的顺序。

服务功能实例10可使用内部配置的转发状态来实现每个服务功能链,该转发状态根据所识别的服务功能实例10集合沿服务功能链引导包流的包。此转发状态可使用诸如因特网协议(ip)的网络隧道或通用路由封装(gre)隧道,或者通过使用虚拟局域网(vlan)、多协议标签交换(mpls)技术等来指定用于在服务功能实例10之间隧道化的隧道接口。用于服务功能链接的隧道封装可被称为服务功能链封装,这使得能够在服务提供商网络2的数据位置创建服务功能链。在一些情况下,互连连接服务功能实例10的实际或虚拟交换机、路由器或其他网络元件可被配置成根据服务功能链将包流引导至服务功能实例10。

服务功能链封装实现在物理底层网络上提供服务功能覆盖网络的服务功能实例10之间的转发,该物理底层网络由诸如实际服务器的计算装置的现有层3网络拓扑组成,该计算装置由用于在计算装置之间交换包数据的路由和交换设备互连。服务功能覆盖网络可使得网络服务提供商能够在服务功能实例10之间创建路径且以网络拓扑独立的方式(例如,不需要改变底层网络拓扑)定位服务提供商网络2中的服务功能。

在图1中,控制器19可管理在服务复合体(complex)9的操作环境内的服务功能实例的部署。例如,控制器19可编排服务功能并将该服务功能部署至服务功能实例10a。在一些示例中,控制器19可编排虚拟机、容器或其他操作环境来承载所编排的服务功能。控制器19可响应于来自应用或网络服务提供商运营商的请求来编排服务功能。

根据本公开中描述的技术,实现服务功能实例10的计算装置利用层3路由协议来分发描述服务功能实例10的服务功能数据。更具体地,承载(hosted)至少一个服务功能实例10的计算装置可输出服务功能实例路由20。一般情况下,服务功能实例路由(sfir)描述特定服务功能的特定服务功能实例以及通过底层网络将包转发至服务功能实例的方式。例如,服务功能实例路由20可包括用于计算装置的网络地址和服务功能实例数据,服务功能实例数据为由计算装置承载的一或多个服务功能实例10指定用于服务功能的服务功能类型和服务标识符,其中,服务功能类型和服务标识符的组合标识服务提供商网络2中的服务功能实例10。在一些情况下,服务功能实例路由20可指定根据底层计算机网络的地址族变化的服务功能实例数据的地址族,并且以此方式,服务功能实例路由20为覆盖由计算装置组成的计算机网络的服务功能实例10的覆盖网络分发服务功能数据。

在所示示例中,承载服务功能实例10的计算装置发送和接收描述服务功能实例10的服务功能实例路由20。用于服务功能实例10a的服务功能实例路由20(例如)可包括由服务功能实例10a应用的服务功能的服务功能类型和由服务功能实例10a应用的服务功能的服务标识符。服务功能类型和服务标识符的组合可从服务功能覆盖网络中的服务功能实例10中唯一地识别服务功能实例10a。服务功能实例路由20可包括用于多个服务功能实例10的服务功能数据。

服务功能实例路由20可表示或者被包含在诸如边界网关协议(bgp)消息例如bgpupdate消息的层3路由协议路由通告中。bgpupdate消息可符合具有多协议扩展(mp-bgp)的bgp。描述服务功能实例10的服务功能数据可表示bgpupdate消息的网络层可达性信息(nlri)。服务功能实例路由20可包括描述相应服务功能实例10的多个这样的nlri,其中,例如单个计算装置承载多个服务功能实例10。由所述的服务功能实例10应用的服务功能的服务标识符可为nrli的路由区分符,其允许承载服务功能实例10的计算装置为相同服务功能发布多个路由。bgp和mp-bgp在2007年1月的网络工作组互联网工程任务组的注释请求4760中的“用于bgp-4的多协议扩展”以及2006年1月的网络工作组互联网工程任务组的注释请求4271中的“边界网关协议4(bgp-4)”中描述。路由区分符在2006年2月的网络工作组互联网工程任务组的注释请求4364中的“bgp/mplsip虚拟专用网(vpn)”中描述。上述每个文献通过引用整体并入本文。

在一些情况下,服务功能实例路由20可由承载所述的服务功能实例10的计算装置发起。然而,服务功能实例路由20可由控制器19或其他另一装置发起。服务功能实例路由20包括用于承载所述的服务功能实例10的计算装置的诸如ipv4或ipv6地址的网络地址。在一些示例中,服务功能实例路由20可进一步包括描述待由计算装置接收的包的隧道封装以便到达服务功能实例10的封装数据。

控制器19可利用(leverage)层3路由协议来分发服务功能链数据,服务功能链数据描述服务功能链的覆盖拓扑,每个服务功能链由服务功能链数据描述的一或多个服务功能实例10组成。例如,控制器19可向服务提供商网络2输出包括一组有序的一或多个服务功能实例10的服务功能链路由21,以定义用于处理至少一个包流26的服务链。控制器19可通过向服务功能实例10、路由反射器或服务提供商网络2的另一路由装置中的任一者发送服务功能链路由21来将服务功能链路由21注入到服务提供商网络21中以用于由网络中的路由装置通告。控制器19可为层3路由协议扬声器(speaker)并直接发布服务功能链路由21。控制器19可输出多个服务功能链路由,服务功能链路由21只是一个示例。一般来说,控制器19根据服务功能链发起一个服务功能链路由,并且每个服务功能链路由可包括用于所述的服务功能链的服务路径标识符、一系列服务功能类型和/或服务功能实例,并且对于每个此服务功能类型和/或服务功能实例,该链由在所述的服务功能链中表示它的服务索引组成。

控制器19可经由层3协议接收服务功能实例路由20。控制器19可使用包含在服务功能实例路由20中的服务功能实例数据来生成服务功能链和用于该服务功能链的服务功能链路由21。例如,控制器19可接收来自运营商(操作者,operator)的创建服务功能链的请求,该服务功能链具有应用于包流的一系列服务功能(每个服务功能具有不同的服务功能类型)。如服务功能实例路由20所示,控制器19可识别与服务功能的服务功能类型相匹配的服务功能实例。

例如,由控制器19提供的服务功能链数据可指定由服务功能实例10提供的服务功能、用于沿着服务路径隧道化或传输(例如,mpls或ip隧道)包流的流量工程信息(例如,标签或下一跳)、速率限制、服务类型(tos)标记或指定将包流与特定服务功能链相匹配的标准的包分类器的任何组合和排序。控制器的另外示例细节在2013年6月5日提交的pct国际专利申请pct/us13/44378中描述,其全部内容通过引用结合于此。

在图1的示例中,服务功能链路由21包括用于服务功能链28的服务功能链数据,其中,服务功能链28包括服务功能实例10a和10c。服务功能链路由21可通过指示提供服务功能的一或多个服务功能实例10来标识每个服务功能。例如,服务功能链路由21可通过指示服务功能和将服务功能覆盖网络中的服务功能唯一标识为由服务功能实例10a提供的服务标识符的组合来标识由服务功能实例10a所提供的服务功能。对于服务功能链的任何服务功能,服务功能链路由21可标识服务功能类型,并指示提供服务功能的任意服务功能实例10可将该服务功能应用于正使用服务功能链处理的包。以此方式,服务功能链路由21可促进提供服务功能的服务功能实例10之间的负载均衡和冗余。服务功能链路由21可包括用于服务功能链中的每个服务功能的对应服务索引。服务功能链路由21可进一步包括标识服务功能链的服务路径标识符。服务路径标识符(spi)标识特定的服务功能链。

服务功能链路由21可表示层3路由协议路由通告,例如bgp消息,例如bgpupdate消息。bgpupdate消息可符合具有多协议扩展(mp-bgp)的bgp。描述服务功能链的服务功能数据可表示bgpupdate消息的网络层可达性信息(nlri)、一或多个bgp路径属性或nlri与一或多个bgp路径属性的组合。

服务功能实例10接收服务功能实例路由20和服务功能链路由21。通过使用包含在服务功能实例路由20和服务功能链路由21中的服务功能实例数据和服务功能链数据,每个服务功能实例10可确定由服务功能实例10接收的包的转发操作。

服务功能实例10a可作为服务功能覆盖网络的入口服务功能实例来操作以将分类服务功能应用于包流。在此情况下,服务功能实例10a可被称为“分类器”,其是位于服务功能覆盖网络的每个入口点的专用服务功能。在此情况下,作为分类器来操作的服务功能实例10a将给定包流的包分配给特定服务功能链。为了对使用服务功能链进行处理的包流进行分类,服务功能实例10a可将策略应用于包流包的包报头字段以确定服务链。例如,策略可专用于用户装置16的用户、专用于网络或专用于使用包流传输的应用服务。策略可指定服务路径标识符,服务路径标识符标识用于处理与策略匹配的包的服务功能链。在一些情况下,作为分类器操作的服务功能实例10a选择包流的服务功能链、设置服务功能链的服务路径标识符、设置所选服务功能链中第一跳的服务索引,并且对于包流的包,前置指示服务路径标识符和服务索引的网络服务报头。分类器和承载第一服务功能的节点。

在图1的示例中,服务功能实例10a可将一个或多个包流26分类到服务功能链28。尽管服务功能实例10a为服务功能链28中的第一服务功能实例,但是服务功能实例10a可将一些包流26分类到不具有作为第一服务功能实例的服务功能实例10a的服务功能链。此外,不同于服务功能实例10中的一者的计算装置可将包流分类到服务功能链,并将包流引导到服务功能链中的第一服务功能实例10。

为了应用由服务功能链所指示的服务功能,服务功能实例10通过服务功能实例10的有序组合来转发包以用于应用对应的服务功能。将服务功能应用于包的服务功能实例10基于发布服务功能链的服务功能链路由21并基于用于服务功能实例并由服务功能实例10接收的一或多个服务功能实例路由20来确定发布服务功能链中的下一服务功能实例10。

例如,服务功能实例10a可通过基于服务功能链路由21确定在服务功能链28中应用下一服务功能的下一服务功能实例10来确定转发被分类到服务功能链28的包。服务功能链路由21可使用从一或服务功能实例路由20组合标识服务功能实例10c的服务标识符和服务功能类型指示服务功能实例10c为服务链28中的下一服务功能实例。服务功能实例10a可另外确定服务功能链路由21中所包含的服务路径标识符和服务功能实例10c所应用的下一服务功能的服务索引,如服务功能链路由21所指示。

服务功能实例10a将包转发至服务功能实例10c。服务功能实例10a可转发具有服务路径标识符的包。服务功能实例10a可转发具有服务索引的包。例如,服务功能实例10a可前置包的网络服务报头(nsh),nsh包括服务路径标识符和服务索引中的至少一个。因为nsh的前置可使得底层网络中的计算装置难以定位通常用于等成本多路径的原始包中的字段,所以承载服务功能实例10a的计算装置还可包括熵标签,其通常被编码在隧道封装报头中的多协议标签交换(mpls)熵标签或用户数据报协议(udp)源端口号中。在一些示例中,nsh可包括与服务路径标识符组合唯一地标识服务功能覆盖网络中的服务功能链的另一服务功能链标识符。

具有nsh报头的包可基于服务功能实例路由20中所包含的用于服务功能实例10c的封装数据进一步被封装在隧道封装报头中。隧道封装报头可包括用于承载服务功能实例10c的计算装置的在底层网络中的ip地址。如果不止一个服务功能实例10可被用作服务功能链中的服务功能的下一服务功能实例,则底层网络中的任播地址或底层网络拓扑的直接知识可用于选择应用所指示的服务功能的下一服务功能实例10。

服务功能实例10c接收包并将其相应的服务功能应用于包以进一步实现服务功能链28。服务功能实例10c可使用包中所包含的nsh来确定服务链中的下一服务功能实例10,并且在一些情况下确定下一服务索引。在此情况下,服务功能实例10c为服务链28中的终端服务功能实例。因此,服务功能实例10c可将包输出到底层网络中的包的ip下一跳。

以此方式,在服务功能实例路由20和服务功能链路由21中接收服务功能数据和服务功能链数据的服务功能实例10使用该服务功能数据和服务功能链数据根据覆盖网络来转发被绑定至服务功能链的包流。尽管用于服务功能的传统部署模型往往紧密耦合至网络拓扑和物理资源,但是本公开的用于在服务功能实例路由20和服务功能链路由21中分发服务功能覆盖网络节点和拓扑数据的技术可实现服务功能链接从服务提供商网络2的底层网络拓扑中解耦。此些去耦通过减少,在一些情况下,消除支持新服务功能链所需的底层网络拓扑的变化,可简化配置或更改服务功能链。例如,为了向服务链28添加服务功能以创建更改的服务链,控制器19可撤销服务功能链路由21并输出包括描述更改的服务链的服务功能链数据的新服务功能链路由。

图2为示出根据本公开中描述的技术提供一或多个服务功能实例的示例计算装置的框图。计算装置200可表示真实或虚拟服务器,并且在该示例中包括耦接计算装置200硬件环境的硬件组件的系统总线242。系统总线242耦接存储器244、网络接口卡(nic)240、存储盘246和微处理器210。网络接口卡240包括被配置成使用底层物理网络的链路来交换包的一或多个接口。微处理器210可包括一或多个处理器,每个处理器包括执行符合指令集架构的指令的独立执行单元。执行单元可被实现为单独的集成电路(ic),或者可被组合在一或多个多核处理器(或“许多核”处理器)中,每个多核处理器使用单个ic(即,芯片多处理器)来实现。

盘246表示计算机可读存储介质,其包括以任何方法或技术实现的用于存储诸如处理器可读指令、数据结构、程序模块或其他数据的信息的易失性和/或非易失性、可移动和/或不可移动的介质。计算机可读存储介质包括但不限于随机存取存储器(ram)、只读存储器(rom)、eeprom、闪存、cd-rom、数字通用盘(dvd)或其他光存储、磁盒、磁带、磁盘存储或其他磁存储装置,或可用于存储所需信息并可被微处理器210访问的任何其他介质。

主存储器244包括一或多个计算机可读存储介质,其可包括随机存取存储器(ram),诸如各种形式的动态ram(dram),例如ddr2/ddr3sdram,或静态ram(sram)、闪存,或任何其他形式的固定或可移动存储介质,其可以用于以指令或数据结构的形式携带或存储所需的程序代码和程序数据,并且可由计算机访问。主存储器144提供由可寻址存储器位置组成的物理地址空间。

存储器244、nic240、存储盘246和微处理器210为执行管理程序214的软件堆栈和一或多个虚拟机216a-110m(统称为“虚拟机216”)提供操作环境。虽然关于虚拟机示出和描述,服务功能实例203可由诸如容器(例如,docker容器)的其他操作环境来执行。操作系统内核(未在图2中示出)可在内核空间中执行,并且可包括例如linux、berkeleysoftwaredistribution(bsd)、另一unix变体内核或可从微软公司获得的windows服务器操作系统内核。

计算装置200执行管理程序214以管理虚拟机216。示例管理程序包括用于linux内核的基于内核的虚拟机(kvm)、xen、vmware提供的xen、esxi、微软提供的windowshyper-v以及其他开源和专有管理程序。

虚拟机216承载相应的服务功能实例203a-203m(统称为“服务功能实例203”)。每个服务功能实例203可表示图1的服务功能实例10的示例实例。在一些示例中,虚拟机216可承载(host)一或多个服务功能实例203。下文针对服务功能实例203a描述服务功能实例203。服务功能实例203包括用于应用于包流的服务功能220a。计算装置200的一些示例仅承载一个服务功能实例203。

服务功能220a表示可应用上面关于服务功能实例10所述的上述服务功能中的任何一个软件。服务功能实例203a可由诸如控制器19的控制器编排,该控制器由虚拟机216a执行以应用服务功能220a。服务功能实例配置数据226包括描述服务功能实例203a的数据。例如,服务功能实例配置数据226可指定服务功能220a的服务功能类型和服务功能实例203a的服务标识符。服务功能实例配置数据226可进一步描述虚拟机抽头或虚拟机216a的其他标识符,其使虚拟路由器221能够将所接收到的包引导至虚拟机216a,以便使用服务功能实例203a进行处理。

在示例计算装置200中的管理程序214提供路由协议模块228的操作环境,路由协议模块228可表示在网络堆栈的不同层执行各种协议的处理。在图2的示例中,网络协议包括作为层3路由协议的边界网关协议(bgp)219。bgp219可包括多协议bgp(mp-bgp)。路由协议模块228可执行图2中未示出的其他协议,诸如mpls标签分发协议和/或其他mpls协议。路由协议模块228负责维护路由信息224以反映计算装置200经由nic240所连接的网络的当前拓扑。具体地,bgp219更新路由信息224,以基于由计算装置200接收到的路由协议消息准确地反映网络的拓扑和其他实体。

根据本公开所述的技术,路由协议模块228使用bgp发送和接收分发用于描述服务功能覆盖网络节点和拓扑的服务功能实例数据和服务功能链数据的服务功能路由。路由协议模块228可接收一或多个服务功能实例(sfi)路由230和一或多个服务功能链路由232,并将服务功能路由存储到路由信息224。服务功能实例路由230和服务功能链路由232可表示图1的服务功能实例路由20和服务功能链路由21的实例。

路由协议模块228可生成并输出服务功能实例路由230以发布计算装置200的服务功能实例203。也就是说,路由协议模块228可发起此些服务功能实例路由230。例如,针对服务功能实例203a,路由协议模块228可从服务功能实例配置数据226获得服务功能220a的服务功能类型和服务功能实例203a的服务标识符。路由协议模块228可从服务功能类型和服务标识符生成服务功能实例路由,并经由网络接口卡240输出服务功能实例路由。

管理程序214的虚拟路由器221可管理为计算装置200配置的一或多个虚拟网络,诸如用于服务功能实例203的覆盖网络。虚拟路由器的附加描述在2014年3月26日提交的美国专利申请第14/226,509号中找到,其全部内容通过引用结合于此。例如,通过网络接口卡240从底层物理网络接收的包可包括外部报头,以允许物理网络将有效载荷或“内部包”隧道传送至执行虚拟路由器221的计算装置200的nic240的物理网络地址。外部报头不仅可包括计算装置的nic240的物理网络地址,而且包括网络服务报头。虚拟路由器221的方面可在用户空间而不是管理程序214中执行。例如,包括服务功能转发器222的方面的虚拟路由器221的方面可由虚拟机216执行。

服务功能转发器222提供服务功能数据平面,并根据根据本文所述的技术的服务功能链确定包的转发。在一些示例中,计算装置200可包括用于每个服务功能实例203的服务功能转发器222的单独实例。在一些示例中,服务功能转发器222可以由被设计为支持虚拟网络的专用硬件来部分执行。服务功能转发器222可由用户空间中的应用而不是管理程序214中的应用来执行。

服务功能转发器222可被概念化为服务功能实例203可到达的底层网络中的门户。应注意,尽管服务功能转发器222和路由协议模块228被示出和描述为单独的模块,但是路由协议模块228的导入和导出和处理路由的操作可被认为是例如服务功能转发器222的控制平面操作。此外,如本文所使用,术语“服务功能转发器”可指的是作为整体的计算装置200,因为这样的操作涉及服务功能路由导入/导出/选择、在服务覆盖网络中的包转发等等,但是不包括服务功能实例203的操作。

当服务功能转发器222接收到服务功能链路由时,服务功能转发器222可基于路由目标确定是否导入服务功能链路由。如果服务功能转发器222导入路由,则服务功能转发器222可通过确定计算装置200的路由区分符是否针对服务功能链的任何服务索引/跳指定来确定其是否在所述服务功能链上。如果是,则服务功能转发器222可创建已经由服务功能实例203中的一者处理的传入包的转发状态和发出包的转发状态。

服务功能转发器222可创建使得服务路径标识符/服务索引和特定服务功能实例之间关联的本地转发状态,如由用于服务功能实例路由和服务类型组合的路由区分符标识。服务功能转发器222也可为需要转发至服务功能链中的下一跳的从本地服务功能实例203回收的包创建下一跳转发状态。可能存在下一跳的选择。服务功能转发器222可为所有潜在的下一跳安装转发状态,或者可进行选择,并且仅将转发状态设置(install,安装)到潜在的下一跳的子集。所设置的转发状态能随时间而改变,从而对底层网络的变化和特定服务功能实例203的可用性做出反应。应注意,在一些情况下,服务功能转发器222可仅为其所包含的服务功能链创建和存储转发状态。即,服务功能转发器222可能不会为所有已经发布的服务功能链维护状态。

该转发状态的选择包括从服务功能链路由确定放置在出站包的网络服务报头中的服务索引。该选择可以以从本地服务功能实例203返回的信息为条件。服务功能转发器222也可安装转发状态以支持循环、跳转和分支。

网络接口卡240接收包流的包。包流可被分类为包括服务功能实例203a的服务功能链。由网络接口卡240接收的包可包括隧道封装报头,该隧道封装报头标识用于由服务功能转发器222处理的包。服务功能转发器222可去除隧道封装报头。由服务功能转发器222处理并从以前的服务功能实例(由计算装置200或其他计算装置执行)接收的包可包括具有服务路径标识符和服务索引的网络服务报头。

服务功能转发器222可基于网络服务报头来确定服务功能实例203a将服务功能220a应用于包。例如,服务功能转发器222可确定具有匹配服务路径标识符的服务功能链路由232并从网络服务报头提供服务索引的线索以确定服务功能实例203a由服务索引指示。服务功能实例203a可使用服务功能类型和标识服务功能实例203a的服务标识符的组合在匹配服务功能链路由232中被服务索引指示。在一些情况下,服务功能实例可仅由服务功能类型指示,服务功能类型对应于服务功能220中的至少一者。例如,当服务标识符指示支持服务功能类型的任何服务功能实例可应用服务功能时,服务功能实例可仅由服务功能类型指示。在每服务功能实例203存在服务功能转发器222的实例的计算装置200的示例实例中(例如,仅一个服务功能转发器222和一个服务功能实例203),服务功能转发器222可将应用服务功能的其对应的服务功能实例203引导至对接收到的包,而不必首先确定应用服务功能的特定服务功能实例203。

服务功能转发器222可部分基于网络服务报头来引导服务功能实例203a处理包。服务功能实例203a通过应用服务功能220a来处理包。除了通过应用服务功能220a作为处理包的一部分之外,服务功能实例203a可确定包的新的网络服务报头。也就是说,服务功能实例203a可沿着待处理包的服务链(或另一服务链)选择下一服务功能实例。服务功能203a可在多个服务功能实例之间(在一些情况下,其为不同的服务功能类型)进行选择。新网络服务报头中的服务索引和服务路径标识符可指示服务链中的下一服务功能、链中的先前的服务功能(称为“循环”)或者链更靠下的服务功能(称为“跳转”)。新网络服务报头中的服务索引和服务路径标识符可另选指示在不同服务功能链上的服务功能(称为“分支”)。

服务功能转发器222随后选择提供由下一网络服务报头中的服务路径标识符和服务索引表示的服务功能的服务功能实例,并且服务功能转发器222将该包转发至支持所选服务功能实例的服务功能转发器。

从服务功能实例203a接收到的新网络服务报头中的服务索引可使服务功能转发器22保留下一跳服务功能类型以及每个服务功能类型的服务功能实例的选择。也就是说,服务索引指示用于服务路径标识符的服务功能链路由232中的一组一或多个条目,其中,每个条目对应于发布特定服务功能实例的服务功能实例路由230的服务功能类型和服务标识符(例如,路由区分符)。服务功能转发器222选择这些服务功能实例中的一者、识别支持所选择的服务功能实例的服务功能转发器并将该包发送至下一跳服务功能转发器。

在典型情况下,服务功能转发器222基于支持由新的网络服务报头中的服务索引和服务路径标识符所标识的该组所有服务功能转发器来选择下一跳服务功能转发器222(该组所有服务功能转发器已在各个服务功能实例路由230中发布),从而在底层网络中找到“最近”的一或多个服务功能转发器222,以及使用负载均衡算法在最近的下一跳服务功能转发器之间进行选择。

服务功能实例203a可通过连同包和新的网络服务头回传附加信息来影响该选择过程。该信息可影响在服务功能转发器222的本地策略,以使其有利于下一跳服务功能转发器(可能选择在底层中不是最近的服务功能转发器)或影响负载均衡算法。

此选择适用于典型情况,也适用于循环、跳转和分支的情况。例如,特定服务覆盖网络中的服务功能转发器222(通过特定导入rt、rt-z标识)可转发nsh封装的包,nsh具有spi-x的服务路径标识符和服务索引si-y。服务功能转发器222可执行以下操作:

1.识别携带rt-z且具有spi-x的已安装服务功能链路由230。(如果没有识别出此路由230,则包可能会被丢弃。)

2.从所识别的服务功能链路由的服务功能链属性中,识别服务索引值为si-y的服务功能项。(如果不存在此服务功能项,数据包可能会被丢弃。)下面参考图4更详细地描述服务功能项。

3.通过处理在所识别的服务功能项中指示的一或多个服务功能类型来识别服务功能实例路由230的匹配集合。如果服务功能实例路由携带rt-z,则其匹配,其服务功能类型与在所识别的服务功能项中指示的服务功能类型匹配,并且服务标识符(例如,路由区分符)值匹配在所识别的服务功能项中指示的一或多个服务标识符中的一者。如果服务功能类型的服务标识符为零,则服务功能实例路由匹配,如果它携带rt-z,则其服务功能类型与该服务功能类型匹配。也就是说,由rt-z定义的服务功能覆盖网络中的任何服务功能实例路由和正确的服务功能类型匹配。

每个匹配的服务功能实例路由标识单个服务功能实例,并且可包含指定如何向该服务功能实例发送数据包的隧道封装属性。对于包,服务功能转发器222从该组的一或多个匹配的服务功能实例路由中选择特定的服务功能实例。可根据服务功能转发器222的本地策略来选择。例如,可指定策略以确定在底层网络中“最近”并且在它们之间负载均衡的一组匹配服务功能实例。可设想其他策略。服务功能转发器222随后将包转发至承载所选服务功能实例的服务功能转发器,例如,基于所选服务功能实例的服务功能实例路由的隧道封装属性。

如上所述,服务功能实例203或服务功能转发器222可使得包在服务功能链上“循环回”到先前的服务功能,从而可重新执行一系列服务功能。这可以通过用更早(例如更高)的值替换网络服务报头中的服务索引来实现,而不是将其设置为链中的下一个(例如更低)的值。

服务功能实例203或服务功能转发器222可替代地使包“跳转”到服务功能链上的服务功能,该服务功能链不是服务功能链中的即时下一服务功能。这可通过用更下一链中的值替换网络服务报头中的服务索引,而不是通过将该值修改(例如,减小)到该链中的下一(例如,更低)值来实现。

将包从一个服务功能链移到另一服务功能链的更复杂选项被称为“分支”。该机制允许服务功能实例203或服务功能转发器222基于本地策略和本地服务功能的输出来选择包的下游处理。分支可通过改变网络服务报头中的指示新的链路的服务路径标识符并且设置指示包应进入新链路中的点的服务索引来实现。(应注意,网络服务报头并不包括用于指示特定包是否在循环之前的标记。因此,可使用网络服务头元数据来防止无限循环。)

在一些示例中,专用目的的“改变顺序”服务功能类型值在服务功能链路由中指示服务功能转发器222可根据由本地服务功能实例203中的一者返回的本地策略和信息对包进行循环、跳转或分支。在一些情况下,循环、跳转或分支指令在服务标识符(例如,路由区分符)内进行编码,该服务标识符与用于包的当前服务功能链的服务功能链路由的服务功能项中的改变顺序服务功能类型相关联。例如,服务标识符可编码服务路径标识符的3字节以及服务索引的2字节以指定循环、跳转或分支信息。如果所编码的服务索引不是由所编码的服务路径标识符指示的服务功能链路由的一部分,则当该服务索引解析所指示的服务功能链路由时,这可指示可由服务功能转发器222检测到的错误。服务功能转发器222可避免设置服务功能链路由以及利用指示该服务功能链路由可被丢弃的服务路径标识符接收到的包的转发状态。

如果在该编码中的服务路径标识符是未知的,则服务功能转发器222可避免设置该服务功能链路由的任何转发状态,而是可保持等待接收使用所编码的服务路径标识符的另一服务功能链路由的服务功能链路由。

如果服务路径标识符与如网络服务报头中所指示的链的当前服务路径标识符匹配,则该指令为循环或跳转。在此情况下,如果服务索引在当前服务索引之前(例如,更大),则它是循环。如果服务路径标识符匹配并且该服务索引在下一服务索引后面(例如,更小),则它是跳转。

如果服务路径标识符指示另一链,则此为分支,并且该服务索引指示进入另一链的点。改变顺序服务功能类型可出现在用于服务索引的服务功能项的一组服务标识符/服务功能类型元组中,并且可以以上述方式来选择。在一些情况下,诸如变化顺序服务功能类型的专用服务功能类型可能不会在服务功能实例路由中发布。

对循环和跳转的支持要求服务功能转发器222具有建立至提供对适当服务功能的服务功能实例的访问的另一服务功能转发器的转发状态。这意味着服务功能转发器222应该已接收到相关的服务功能实例路由230并创建该转发状态。这可能是本地配置和实施方案的问题。例如,实施方案可被配置成安装指定循环/跳转的转发状态。

对分支的支持要求服务功能转发器222具有建立至提供对其他服务功能链上的适当服务功能的服务功能实例的访问的另一服务功能转发器的转发状态。这意味着服务功能转发器222应该已接收到相关的服务功能实例路由230和服务功能链路由232并创建该转发状态。这可能是本地配置和实施方案的问题。例如,实施方案可被配置成安装用于指定分支的转发状态(由服务路径标识符和服务索引标识)。

图3为示出根据本文所述的技术的包括描述服务功能实例的服务功能实例数据的示例层3路由协议路由通告的框图。bgpupdate消息300符合mp-bgp并且包括用于服务功能链接网络层可达性信息(nlri)310中通告服务功能实例数据的服务功能实例的mp-reach-nlri302。bgpupdate消息300可表示图1所示的服务功能实例路由20和图2所示的服务功能实例路由230的示例实例。出于说明的目的,使用字形而不是包字段示出了bgpupdate消息300。

bgpupdate消息300的mp-reach-nlri302包括地址族标识符(afi)304和随后的afi(safi)306,其将服务功能链接nrli310标识为携带服务功能实例数据或服务功能链数据。afi304和safi306的值可由私人方或由互联网号码分配机构(iana)分配。

服务功能链接nlri310包括描述服务功能实例的服务功能实例数据。类型312a的值指示服务功能链接nlri310是用于服务功能实例路由还是用于服务功能链路由。这里,示例值1指示服务功能链接nlri310用于服务功能实例路由。长度312b指示服务功能链接nlri310的长度(例如,以八位字节为单位)。路由区分符(rd)312c可指定服务功能实例的服务标识符,其至少与由服务功能类型312d指示的值组合来唯一地标识服务功能覆盖网络中的服务功能实例。rd312c可为类型1路由标识符,如在rfc4364中所述。因此,rd312c可包括作为发起bgpupdate消息300的计算装置的环回地址的第一部分和由始发计算装置生成的第二部分。因此,rd312c可用于区分网络中的服务功能链接nlri。可将具有相同服务功能类型的两个服务功能实例与具有不同路由区分符的各个服务功能实例路由相关联,其中,服务功能实例与路由区分符的关联可通过配置来确定。如果两个服务功能实例路由来自不同的管理域,则在一些示例中它们必须具有不同的路由区分符。例如,用于不同服务覆盖网络的来自不同虚拟专用网(vpn)的服务功能实例路由必须具有不同的路由区分符,其必须与任何非vpn服务功能实例路由不同。

服务功能类型312d指示由服务功能链接nrli310描述的服务功能实例的服务功能类型。bgpupdate消息300的一些实例可包括用于由计算装置承载的多个服务功能实例的多个服务功能链接nrli310。在一些示例中,路由处理可仅使用rd312c和服务功能类型312d的组合来执行服务功能链接nlri310的路由密钥处理。在一些示例中,可使用服务功能链接nlri310中所包含的数据的任何组合。

封装属性314为包括隧道封装数据的路径属性。隧道封装数据可包括用于承载由服务功能链接nrli310描述的服务功能实例的计算装置的ip地址。隧道封装数据可进一步包括可由接收bgpupdate消息300的计算装置使用的其他数据,其用于生成用于转发至承载服务功能实例的计算装置的封装包。封装属性的示例细节在2016年5月31日的互联网工程任务组的域间路由工作组的“bgp隧道封装属性”中介绍,该文献可从https://tools.ietf.org/html/draft-ietf-idr-tunnel-encaps-02获得,其全部内容通过引用结合于此。

承载服务功能实例的每个计算装置可为计算装置承载的每个服务功能实例发起服务功能实例路由。单个bgpupdate消息300可包括表示相应服务功能实例的相应服务功能实例路由的服务功能链接nlri310的多个实例。因此,bgpupdate消息300可包括多个“服务功能实例路由”,每个服务功能实例路由具有包括服务功能链接nlri310的实例并且也包括封装属性314的服务功能实例数据。

图4为示出根据本文所述的技术的包括描述服务功能链的服务功能链数据的示例层3路由协议路由通告的框图。bgpupdate消息400符合mp-bgp,并包括在服务功能链接网络层可达性信息(nlri)410中通告服务功能链数据的mp-reach-nlri402。bgpupdate消息400可表示图1所示的服务功能链路由21和图2所示的服务功能链路由232的示例实例。出于说明的目的,使用字形而不是包字段示出了bgpupdate消息400。

bgpupdate消息400的mp-reach-nlri402包括地址族标识符(afi)404和随后的afi(safi)406,其将服务功能链接nrli410标识为携带服务功能实例数据或服务功能链数据。afi404和safi406的值可由私人方或由互联网号码分配机构(iana)分配,并且可与分配给afi304和/或safi306的那些值相同。

服务功能链接nlri410包括描述服务功能覆盖网络中的服务功能链的服务功能链数据。类型412a的值指示服务功能链接nlri410是用于服务功能实例路由还是用于服务功能链路由。这里,示例值2指示服务功能链接nlri410用于服务功能链路由。长度412b指示服务功能链接nlri410的长度(例如,以八位字节为单位)。路由区分符(rd)412c的值与由服务路径标识符412d所指示的值组合来唯一地标识服务功能覆盖网络中的服务功能链。rd412c可为类型1路由区分符。因此,rd412c可包括作为发起bgpupdate消息400的计算装置的环回地址的第一部分和由始发计算装置生成的第二部分。因此,rd412c可用于区分网络中的服务功能链接nrli410。服务功能链和路由区分符的关联可通过配置来确定。如果两个服务功能实例路由来自不同的管理域,则在一些示例中它们必须具有不同的路由区分符。例如,用于不同服务覆盖网络的来自不同虚拟专用网(vpn)的服务功能链路由必须具有不同的路由区分符,其必须与任何非vpn服务功能链路由不同。

服务路径标识符412d指示由服务功能链接nrli410描述的服务功能链的标识符。在一些示例中,服务路径标识符412d可为24位值。在一些示例中,路由处理可仅使用rd412c和服务路径标识符412d的组合来执行服务功能链接nlri410的路由密钥处理。在一些示例中,可使用服务功能链接nlri410中所包含的数据的任何组合。

相关器412e指示服务功能链接nlri410的相关值。生成服务功能链路径的控制器可在相关器412e中设置共同的相关值,以使用于前向包流和反向包流的前向服务功能链路由和反向服务功能链路由相关,或以其他方式使服务功能链路由与另一服务功能链路由相关联。为指示另一服务功能链路由,相关器412e可包括用于其他服务功能链路由的服务路径标识符以及其他服务功能链路由通过其发布的路由区分符的值。

在一些示例中,相关器412e被包含在服务功能链属性420中。服务功能链路由可包括相关器412e的多个实例,其将服务功能链路由与多个其他服务功能链路由相关联。在一些情况下,相关器412e可指示相关性或关联的类型,诸如两个单向服务功能链的关联以创建双向服务功能链。在一些情况下,相关器412e可表示一或多个关联类型长度值(tlv),每个关联类型长度值(tlv)包括用于其他服务功能链路由的服务路径标识符以及其他服务功能链路由通过其发布的路由区分符的值。

服务功能实例可使用前向服务功能链路由处理前向包流,并使用反向服务功能链路由处理反向包流。基于前向服务功能链路由和反向服务功能链路由的公共相关值,服务功能实例可确保被负载均衡至在前向方向的前向服务功能链路由中指示的特定服务功能实例的包流也被负载均衡至相反方向的相同服务功能实例。控制器可以以此方式使用相关器412e将前向包流和对应的反向包流引导至相同的服务功能实例。该技术可使得服务功能实例能够执行有状态的处理,例如在前向包流和对应的反向包流上,该技术可用于某些服务功能,诸如防火墙。

该技术可用于创建双向服务功能链以使包流能够穿过同一组sf,但是以相反的顺序。然而,数据平面中的服务功能链上的包可不包含方向指示符,因此每个方向可使用不同的服务路径标识符。如果关联类型指示“双向服务功能链”,则在服务功能链路由中发布的服务功能链在一对双向服务功能链的一个方向,而在该对中的另一服务功能链在具有由该关联指示的服务标识符(例如,路由区分符)的服务功能链路由中发布。在该关联的关联服务路径标识符字段中携带的服务路径标识符提供交叉检查并且应将在服务功能链路由中发布的服务路径标识符与该关联中指示的服务标识符进行匹配。

由于服务功能链路由彼此参考,一个服务功能链路由通告将在另一个服务功能链路由通告之前接收。因此,关联的处理将要求第一服务功能链路由不被简单拒绝,因为它携带的相关联的服务功能链路由服务标识符是未知的。然而,由第一服务功能链路由定义的服务功能链是有效的,并且即使在没有其伙伴通告的情况下也可以用作单向服务功能链。

此外,在服务功能链路由-a与服务功能链路由-b相关联但服务功能链路由-b与服务功能链路由-c相关联使得不能形成一对双向服务功能链的错误情况下,各个服务功能链仍然有效并且应该可用作单向服务功能链。实施方案应记录这种情况,因为它可表示控制器错误。

双向服务功能链的使用可由控制器编程到分类器中。另选地,分类器可查看双向包流上的传入包,从所接收到的nsh中提取服务路径标识符,并查找服务功能链路由以找到在发送包时使用的反向服务功能链。

在该示例中,bgpupdate消息400包括服务功能链属性420,其用于列出由服务功能链接nlri410所标识的服务功能链中的一或多个服务功能。服务功能链属性420可为可选的和可传递的bgp路径属性。在一些示例实施方案中,服务功能列表可被包含在服务功能链接nlri410或bgpupdate消息400的另一属性中。服务功能链属性420可为bgp路径属性并且可应用于多个服务功能链接nlri410。在该示例中,服务功能项422a-422n中的每者指示使用路由区分符和服务功能类型的组合的一或多个服务功能实例,其中,路由区分符为服务标识符的示例。服务索引指示服务功能链顺序中的服务功能的位置或顺序。例如,服务功能项422a由rd422a-1指示,服务功能类型字段422a-2指示服务功能类型和服务索引422a-3。

每个服务索引422a-3-422n-3可被映射至由支持指定的服务功能的一或多个服务功能实例(sfi)实现的一或多个服务功能。因此,服务索引可表示一或多个服务功能类型的sfi的选择。通过部署用于单个sf的多个sfi,服务网络运营商可提供负载均衡和冗余。

对于服务功能项422a,例如,用于rd422a-1的一或多个指定的路由区分符值可指示支持由服务功能字段422a-2所指示的服务功能类型的任何服务功能实例可被选择用来处理被分类到由服务功能链接nlri410所描述的服务功能链。例如,如果rd=0,在服务功能链(或分类器)中的先前服务功能实例可选择任何服务功能实例来应用由服务功能字段422a-2指示的服务功能。

多个服务功能项422可具有公共服务索引。在此情况下,服务功能链(或分类器)中的先前服务功能实例可选择由多个服务功能项422指示的服务功能实例中的任一者来应用服务功能。在服务功能链属性420的该示例中,列表中用于服务功能项422的服务索引的值连续下降或相同。服务索引可为8位值,并且在一些示例中具有值[0-225]。在一些示例中,服务索引不一定是连续的(例如,服务功能项422可具有各自的服务索引255、250、250、220等),以便允许容易地修改服务功能链属性420以在服务索引之间的空隙中插入新的服务功能项目422。

在一些示例中,服务功能项422中的每者表示包含关于服务功能链路由的服务功能链中的单跳或索引的所有信息的类型长度值(tlv)。该tlv被称为“跳跃tlv”并且具有包括服务索引值和一或多个服务功能类型tlv的值。每个服务功能类型tlv指示服务功能类型并包括用于服务功能的一或多个实例中的每者的服务功能实例参考,其被允许在用于服务功能类型的服务功能链的该服务索引。每个服务功能实例可使用服务功能实例通过其发布的路由区分符来指示。专用路由区分符值(例如,零)可指示可使用服务功能类型的任何服务功能实例。在此示例中,服务索引可在给定的服务功能链路由中最多允许一次。

服务功能类型用于识别服务功能覆盖网络中的服务功能实例路由,这继而将允许查找实现服务功能的服务功能实例的路由。在一些情况下,一些服务功能类型值为专用服务功能类型值并具有特殊含义,诸如上述的“改变顺序”类型。

术语“服务功能链路由”可指的是包括服务功能链接nlri410和服务功能链属性420的服务功能链数据。服务功能实例和其他bgp说话者可与bgp对等体交换bgp性能通告以指示处理包括服务功能链接nlri的bgpupdate消息的能力(例如,处理具有服务功能链数据地址族的afi/safi值的nlri)。bgp性能通告可使用具有用于服务功能链数据地址族的afi和safi的mp-bgp的性能代码。

多个服务功能链路由可包括相同的服务功能实例(如由服务功能实例路由所述)。当两个服务功能链路由具有相同的服务路径标识符,但是服务功能链路由的路由区分符不同时,可以存在三种情况:

(1)两个或多个控制器为相同服务功能链发起服务功能链路由。在此服务功能链的情况下,服务功能链路由的内容是相同的,并且其复制确保收到并提供控制器冗余。

(2)存在所发布的服务功能链的内容的转换并且该通告可从一或多个控制器发起。在此情况下,服务功能链路由的内容将不同。

(3)重复使用服务路径标识符可能是由配置错误引起。

在所有情况下,接收服务功能转发器无法知道哪个服务功能链路由要处理,并且服务功能链路由可以按任何顺序接收。在任何时间点,当两个服务功能链路由具有相同的服务路径标识符但不同的路由区分符时,服务功能转发器可选择服务功能链路由,诸如通过选择具有数字最小路由区分符的路由标识符。

在一些示例中,服务功能实例路由和服务功能链路由可包括路由目标属性,其将路由的导入仅限制在被配置成将指定的路由目标导入到一或多个虚拟路由和转发实例(vrf)中的那些服务功能实例。在此示例中,运行服务功能覆盖网络的网络服务提供商可通过在服务功能实例中配置具有导出和导入路由目标的vrf,使用层3虚拟专用网(l3vpn)或以太网vpn实例在公共底层网络上配置多个服务功能覆盖网络来实现l3vpn或evpn实例。一组一或多个rt被分配给特定的服务功能覆盖网络实例。所有服务功能实例路由和服务功能链路由通告都使用所分配的导出路由目标进行标记,并因此这些路由将仅由承载服务功能实例并且具有一或多个匹配的导入路由目标的计算装置导入。这允许在l3vpn或evpn实例内构建多个服务功能覆盖网络并实例化服务功能链。导入不止一个路由目标的服务功能转发器可存在于多个服务功能覆盖网络中,并且可以为每个覆盖网络保持单独的转发状态(例如,使用单独的vrf)。

下面描述根据本公开中所述的技术的一些示例的示例服务功能实例路由和服务功能链路由和根据服务功能链路由转发包流。

假设以下服务功能实例路由:

·rd1,rd2,rd3,rd4;sf1

·rd1,rd2,rd3,rd4;sf2

·rd1,rd2,rd3,rd4;sf3

·rd1,rd2,rd3,rd4;sf4

在上述示例中,服务功能类型sf1由四个不同的服务功能实例支持,每个不同的服务功能实例通过不同的服务标识符(这里为rd1、rd2、rd3和rd4)来区分。rd1和sf1可由用于由rd1和sf1的组合标识的服务功能实例的服务功能实例路由的bgpupdate消息300的字段312c,312d指示。

还假设以下服务功能链路由:

·sfc1:[rd=0,sf1,si=255],[rd=0,sf3,si=250]

·sfc2:[rd=0,sf1,si=255],[rd=2,sf3,si=250]

服务功能链sfc1由sf1、sf3(si表示服务索引)组成。符号[rd,sf,si]可表示服务链中的任何服务功能项422的示例中的路由区分符(rd)、服务功能(sf)和服务索引(si)。分类器可在支持sf1并且是等距离的且最靠近分类器(其本身可为在服务功能覆盖网络周边的服务功能实例)的服务功能实例中对所接收到的用于sfc1的包流进行负载均衡。sf1服务功能实例可在支持sf3并且是等距离的且最接近sf3服务功能实例的服务功能实例中对经接收用于sfc1的流进行负载均衡。sf3服务功能实例可将其接收到的用于sfc1的任何包流中的每个包发送到在该包的内部ip包报头中的目的地ip地址的下一跳。

服务功能链sfc2由sf1、sf3组成。分类器可在支持sf1并且是等距离的且最接近分类器的服务功能实例中对经接收用于sfc2的包流进行负载均衡。sf1服务功能实例可将经接收用于sfc2的所有包流发送至由[rd2,sf3]组合标识的服务功能实例。(rd2为rd=2的简写符号)[rd2,sf3]服务功能实例可将其接收用于sfc2的任何包流中的每个包发送到在该包的内部ip包报头中的目的地ip地址的下一跳。

还假设服务功能链路由:

·sfc3:[rd=1,sf1,si=255],[rd=4,sf1,si=255],[rd=2,sf3,si=250],[rd=3,sf3,si=250],[rd=0,sf4,si=200]

服务功能链由sf1、sf3和sf4组成。由于公共服务索引255,分类器将向由[rd1,sf1]和[rd4,sf1]标识的服务功能实例中的最接近底层网络中的任一者发送所有接收到的用于sfc3的包流。如果服务功能实例为等距的,则分类器可在sf1服务功能实例之间负载均衡其接收到的用于sfc3的包流。sf1服务功能转发器将向由[rd2,sf3]或[rd3,sf3]标识的服务功能实例中的任一者发送所接收到的用于sfc3的所有包流,无论哪个最靠近底层网络。如果服务功能实例为等距的,则sf1服务功能实例可在sf3服务功能实例之间对其接收到的sfc3包流进行负载均衡。由于在本示例中,rd=0用于指示可使用所支持的sf4服务功能实例,所以sf3服务功能实例可在为等距的且最接近sf3服务功能实例的那些sf4服务功能实例之间对所接收到的包流进行负载均衡。sf4服务功能实例可将其接收到的用于sfc2的任何包流中的每个包发送到在该包的内部ip包报头中的目的地ip地址的下一跳。

在一些情况下,控制器可输出具有相关器值x的sfc3和也具有相关器值x的sfc4,其中,sfc3和sfc4为另一者的反向服务功能链:

·sfc4:[rd=2,sf3,si=255],[rd=3,sf3,si=255]因为sfc3和sfc4具有共同的相关器值,所以接收sfc3包流的目的地节点可将其回复的sfc4流发送至由[rd2,sf3]和[rd3,sf3]标识的服务功能实例中的任一者,无论哪个最接近底层网络。如果服务功能实例为等距的,则目的地节点可在两者之间进行负载均衡。请注意,内部ip包报头中的源ip地址和目的地ip地址在sfc4流中相反。sf3服务功能实例可将sfc4流发送至在该包的内部ip包报头中的目的地ip地址的下一跳。

如上所述,通过指定具有相同服务索引的多个服务功能来在服务功能链中的任何点指定并行服务功能实例。例如,对于n个服务器负载均衡器,服务功能链路由可包括n个服务功能元组,每个服务功能元组具有相同服务索引值,每个服务器负载均衡器具有一个服务索引值。服务功能链中的在前服务功能实例或节点然后可对与底层网络中的节点等距的那些服务器负载均衡器之间的流进行负载均衡。

双向服务功能链可由两个服务功能链路由表示。每个路由可具有一组相同的元组,但顺序相反。对于单向和双向服务功能链路由,服务功能元组通过减少(或在一些示例中增加)或相等的服务索引值进行排序。服务索引值可能只相对于特定服务功能链有意义。服务索引值可能从服务功能链的开始到结束单调减少(或在一些示例中增加)。

图5示出根据本公开的技术的沿着服务功能链来引导内部包的示例隧道包。在图5的示例中,具有报头508和有效载荷510的原始内部包509通过网络服务报头504前置并使用外部(或封装)报头502将其封装为有效载荷506以形成隧道包500。

外部报头502可包括在封装属性314中发布或者以其他方式包含在服务功能实例路由中的隧道封装数据。外部报头502使底层网络能够将隧道包500转发至承载在网络服务报头504中标识的服务功能实例的计算装置。

网络服务报头504可包括标识服务功能链的服务路径标识符。在一些示例中,网络服务报头504可包括服务路径标识符和组合标识服务功能链的另一服务功能链标识符。网络服务报头504可进一步包括标识待应用的服务功能链中的下一服务功能的服务索引。

接收隧道包500的计算装置可基于由计算装置存储的描述由网络服务报头504标识的服务功能链的服务功能实例路由来确定由计算装置承载的服务功能实例以处理内部包509。

在一些情况下,网络服务报头504可包括mpls栈的一或多个多协议标签交换(mpls)标签或隧道协议(例如,通用路由封装)的其他隧道标识符。此网络服务报头504可被认为是“逻辑”网络服务报头。一或多个mpls标签或其他隧道标识符可包括使用比特的任何组合的服务路径标识符和服务索引。例如,附接至或以其他方式封装内部包509的第一mpls标签的标签值可包括服务路径标识符和附接至内部包509的第二mpls标签的标签值可包括服务索引。作为另一示例,附接至内部包509的mpls标签的标签值可包括服务路径标识符和服务索引两者。

图6为示出根据本公开的一或多个技术运行的计算装置的一个示例的进一步细节的框图。图6可示出服务器或其他计算装置600的特定示例,该服务器或其他计算装置600包括用于执行控制器19、服务功能实例10或本文所述的任何其他计算装置中的一或多者的一或多个处理器602。计算装置600的示例可在其他实例中使用。尽管为了示例的目的而在图6中示出为独立的计算装置600,但是计算装置可为包括一或多个处理器或用于执行软件指令的其他合适的计算环境的任何组件或系统,并且例如不必包括图6中所示的一或多个元件(例如,通信单元606;并且在一些示例中,诸如存储装置608的组件可不与其他组件位于同一位置或在相同的机架中)。

如图6的具体示例所示,计算装置600包括一或多个处理器602、一或多个输入装置604、一或多个通信单元606、一或多个输出装置612、一或多个存储装置608和用户界面(ui)装置610和通信单元606。在一个示例中,计算装置600进一步包括可由计算装置600执行的一或多个应用622、编排模块630、路由协议模块632、操作系统616。计算装置600另外包括路由信息634。组件602、604、606、608、610和612中的每一者被耦合(物理地、通信地和/或可操作地)以用于组件间通信。在一些示例中,通信信道614可包括系统总线、网络连接、进程间通信数据结构或用于传送数据的任何其他方法。作为一个示例,组件602、604、606、608、610和612可通过一或多个通信信道614耦合。

在一个示例中,处理器602被配置成实现用于在计算装置600内执行的功能和/或处理指令。例如,处理器602可能够处理存储在存储装置608中的指令。处理器602的示例可以包括微处理器、控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或等效的分立或集成逻辑电路中的任一或多者。

一或多个存储装置608可被配置成在运行期间在计算装置600内存储信息。在一些示例中,存储装置608被描述为计算机可读存储介质。在一些示例中,存储装置608为临时存储器,这意味着存储装置608的主要目的不是长期存储。在一些示例中,存储装置608被描述为易失性存储器,这意味着当计算机被关闭时存储装置608不保留所存储的内容。易失性存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)和本领域已知的其他形式的易失性存储器。在一些示例中,存储装置608被用于存储供处理器602执行的程序指令。在一个示例中,存储装置608由在计算装置600上运行的软件或应用程序使用,以在程序执行期间临时存储信息。

在一些示例中,存储装置608还包括一或多种计算机可读存储介质。存储装置608可被配置成存储比易失性存储器存储量更大量的信息。存储装置608可另外被配置成用于信息的长期存储。在一些示例中,存储装置608包括非易失性存储元件。此些非易失性存储元件的示例包括磁硬盘、光盘、软盘、闪存或电可编程存储器(eprom)或电可擦除可编程(eeprom)存储器的形式。

在一些示例中,计算装置600还包括一或多个通信单元606。在一个示例中,计算装置600利用通信单元606经由一或多个网络(诸如一或多个有线/无线/移动网络)与外部装置通信。通信单元606可包括网络接口卡,诸如以太网卡、光收发器、射频收发器或可以发送和接收信息的任何其他类型的装置。此些网络接口的其他示例可包括3g和wifi射频接口。在一些示例中,计算装置600使用通信单元606与外部装置通信。

在一个示例中,计算装置600还包括一或多个用户界面装置610。在一些示例中,用户界面装置610被配置成通过触觉、音频或视频反馈从用户接收输入。用户界面装置610的示例包括存在敏感显示器、鼠标、键盘、语音响应系统、摄像机、麦克风或用于检测来自用户的命令的任何其他类型的装置。在一些示例中,存在敏感显示器包括触敏屏幕。

一或多个输出装置612也可被包含在计算装置600中。在一些示例中,输出装置612被配置成使用触觉、音频或视频刺激向用户提供输出。在一个示例中,输出装置612包括存在敏感显示器、声卡、视频图形适配器卡或用于将信号转换为人或机器可理解的适当形式的任何其他类型的装置。输出装置612的附加示例包括扬声器、阴极射线管(crt)监视器、液晶显示器(lcd)或可以向用户生成可理解输出的任何其他类型的装置。

计算装置600可包括操作系统616。在一些示例中,操作系统616控制计算装置600的组件的运行。例如,在一个示例中,操作系统616促进一或多个应用2822与处理器602、通信单元606、存储装置608、输入装置604、用户界面装置610和输出装置612的通信。

编排模块630可编排服务功能覆盖网络中的服务功能实例并生成服务功能链。网络服务提供商运营商可使用用户界面装置610和/或输入装置604配置服务功能链。

路由协议模块632可表示在网络堆栈的不同层执行各种协议的处理。在图6的示例中,网络协议包括作为层3路由协议的边界网关协议(bgp)619。bgp219可包括多协议bgp(mp-bgp)。路由协议模块632可执行图6中未示出的其他协议,诸如mpls标签分发协议和/或其他mpls协议。路由协议模块632负责维护路由信息634以反映计算装置600经由通信单元606中的一者所连接的网络的当前拓扑。具体地,bgp619更新路由信息634,以基于由计算装置600接收到的路由协议消息准确地反映网络的拓扑和其他实体。

根据本公开所述的技术,路由协议模块632使用bgp发送接收分发用于描述服务功能覆盖网络节点和拓扑的服务功能实例数据和服务功能链数据的服务功能路由。路由协议模块632可接收一或多个服务功能实例路由640,并且可接收一或多个服务功能链路由642并将服务功能路由存储至路由信息634。服务功能实例路由640和服务功能链路由642可表示图1的服务功能实例路由20和服务功能链路由21的实例。

通过使用由计算装置600接收或生成的服务功能实例路由640,路由协议模块632可生成并输出服务功能链路由642以发布被配置用于至少部分地由计算装置600控制的服务功能覆盖网络的服务功能链。也就是说,路由协议模块632可发起此些服务功能链路由642并将该路由注入到服务功能覆盖网络中。

图7为示出根据本公开的技术的用于服务功能实例的示例操作模式的流程图。操作700针对图2的计算装置200来描述,但是可由任何计算或网络装置执行。

计算装置200接收包括服务路径标识符和一或多个服务功能项的服务功能链路由,服务路径标识符和一或多个服务功能项的组合定义服务功能链(702)。计算装置200也接收指定服务功能类型和组合标识服务功能实例的服务标识符的服务功能实例路由(704)。

计算装置200可接收包。在一些情况下,包已经被分类为服务功能链。在一些情况下,由计算装置200承载的服务功能实例将包分类为服务功能链。计算装置200确定包被分类为服务功能链(706)。例如,计算装置200可确定网络服务报头的服务路径标识符与服务功能链路由中的服务路径标识符匹配。由于包被分类为服务功能链,计算装置200可使用定义服务功能链的服务功能链路由来确定处理包的下一服务功能实例。计算装置200可确定服务功能链路由中的服务功能项指定服务功能类型和服务标识符,服务功能类型和服务标识符的结合根据所接收到的服务功能实例路由识别下一服务功能实例(708)。因此,计算装置200响应地将该包发送至承载下一服务功能实例的计算装置(710)。

图8为示出根据本公开的技术的用于服务功能覆盖网络控制器的示例操作模式的流程图。操作800针对图1的控制器19进行描述,但是可由本文所述的任何控制器来执行。

控制器19可执行层3路由协议,并经由层3路由协议接收服务功能实例路由,每个服务功能实例路由包括服务功能和标识不同服务功能实例的服务标识符(802)。控制器19可部分基于服务功能实例路由来生成服务功能链路由,以实现在服务提供商网络2中配置的服务链(804)。例如,服务功能链路由可包括服务路径标识符和定义服务功能链的一或多个服务功能项,其中,每个服务功能项标识服务功能实例以按顺序沿服务功能链应用服务功能。控制器19可经由层3路由协议输出用于通告的服务功能链路由(806)。在一些示例中,控制器19经由用户界面或从网络控制器而不是服务功能实例路由中接收服务功能实例数据。

图9为示出根据本文所述的技术的示例服务功能链接架构参考模型的框图。在该示例中,服务功能覆盖网络901在互连的计算装置的物理下层网络上操作,每个互连的计算装置为一或多个服务功能转发器904a-904d提供操作环境。服务功能转发器904中的每个可表示服务功能转发器222或本文所述的任何服务功能转发器的示例实例。隧道910在底层网络上连接服务功能转发器对904。

服务功能覆盖网络901包括服务功能实例906a-906d和分类器902,其也可表示服务功能实例。服务功能实例906中的每个和分类器902被承载或者以本地方式承载到服务功能转发器904中的一者。例如,服务功能实例906a、906b对服务功能转发器904b为本地(local)的,以及服务功能实例906d对服务功能转发器904d为本地的。服务功能实例906中的每者具有不同的服务功能类型908。服务功能实例906a、906b、906c均具有服务功能类型908a,而服务功能实例906d具有不同的服务功能类型908b。

服务功能覆盖网络901的示例可具有任何数量的服务功能转发器904、服务功能实例906,并且可被布置在由隧道910的隧道接口的配置所确定的各种覆盖拓扑中。

包912进入分类器902,分类器902将每个包分类为一或多个服务功能实例906的服务功能链。服务功能转发器904交换服务功能链路由和服务功能实例路由,如本文其他地方所述。服务功能转发器904经由隧道910选择下一服务功能实例906,并且经由隧道910将每个分类包沿其服务功能链转发至对于下一服务功能实例906为本地的下一跳服务功能转发器904。一旦服务功能链中的最后一个服务功能实例906d处理包,最后一个服务功能转发器904d就可将经过处理的包914从服务功能覆盖网络901出口到其各自的目的地。

图10为示出根据本文所述的技术的示例服务功能覆盖网络的框图。服务功能覆盖网络1001可为参考服务功能覆盖网络901的示例实例。在该示例中,服务功能覆盖网络1001包括服务功能转发器1004、服务功能实例1006、分类器902,并且由控制器19管理。为了便于说明,没有显示隧道。每个服务功能实例1006具有在图10中示出的相应服务功能类型1008值。例如,服务功能类型1008a值为41,并由服务功能实例1006a、1006c共享。

服务功能转发器1004a-1004d中的每个具有图10所示的对应网络地址。尽管针对ipv4地址进行了说明和描述,但也可以考虑其他类型的网络地址,例如ipv6。例如,服务功能转发器1004a具有ip地址192.0.2.1。服务功能转发器1004a提供对服务功能实例1006a、1006b的访问。服务功能转发器1004b提供对服务功能实例1006c、1006d的访问。服务功能转发器1004c提供对服务功能实例1006e、1006f的访问。服务功能转发器1004d提供对服务功能实例1006g、1006h的访问。控制器19具有ip地址198.51.100.1。

服务功能转发器1004中的每者向提供对其的访问的服务功能实例1006通告路由。以下是服务功能实例1006的示例服务功能实例路由:

·rd=192.0.2.1,1,sft=41[1006a]

·rd=192.0.2.1,2,sft=42[1006b]

·rd=192.0.2.2,1,sft=41[1006c]

·rd=192.0.2.2,2,sft=43[1006d]

·rd=192.0.2.3,7,sft=42[1006e]

·rd=192.0.2.3,8,sft=44[1006f]

·rd=192.0.2.4,5,sft=43[1006g]

·rd=192.0.2.4,6,sft=44[1006h]

路由区分符(rd)为服务区分符的示例,并包括通告主机的ip地址和另一个值,以及sft为正在发布的服务功能实例的服务功能类型。用于在服务功能转发器1004之间通信的寻址取自服务功能实例路由的隧道封装属性,而不是路由的rd。

以下是显式服务功能链的示例(没有下一跳的选择)。考虑以下服务功能链路由:

·sfc1:rd=198.51.100.1,101,spi=15,[si=255,sft=41,rd=192.0.2.1,1],[si=250,sft=43,rd=192.0.2.2,2]

用于sfc1的服务功能链由位于服务功能转发器1004a的类型41的服务功能组成和后面位于服务功能转发器1004b的类型43的服务功能组成。该链是完全显性的,并且所提供的每个服务功能转发器在沿该链的转发包中没有选择。服务功能转发器1004a将从分类器902接收链上的包,并从服务路径标识符(spi)(值=15)中识别链。初始服务索引将为255,并且服务功能转发器1004a将包传递给服务功能类型1008a的值为41的服务功能实例1006a。

当服务功能实例1006a将包返回服务功能转发器1004a时,下一跳的服务索引将减少到250。服务功能转发器1004a在服务功能转发器的选择上没有灵活性以支持下一跳服务功能实例,并将包转发给功能转发器1004b,后者将在把该包转发至它们的目的地之前,将其发送给服务功能类型1008c的值为43的服务功能实例1006d。

以下为提供服务功能实例的选择的示例服务功能链。考虑以下服务功能链路由:

·sfc2:rd=198.51.100.1,102,spi=16,[si=255,sft=41,rd=192.0.2.1,],[si=250,sft=43,{rd=192.0.2.2,2,rd=192.0.2.4,5}]

在该示例中,链也包括位于服务功能转发器1004a的类型41的服务功能,其后是类型43的服务功能,但是在此情况下,si=250包含在位于服务功能转发器1004b的服务功能实例1006d和位于服务功能转发器1004d的服务功能实例1008c之间的选择。服务功能转发器1004a将从分类器902接收链上的包,并从服务路径标识符(值=16)中识别链。初始服务索引将为255,并因此服务功能转发器1004a将包传递给服务功能类型1008a的值为41的服务功能实例1006a。

当服务功能实例1006a将包返回服务功能转发器1004a时,下一跳的服务索引将减少到250。服务功能转发器1004a现在可以选择下一跳服务功能转发器来执行链中的下一跳。服务功能转发器1004a可以将包转发至服务功能转发器1004b或服务功能转发器1004d以执行类型43的服务功能。服务功能转发器1004a可使用本地负载均衡算法来进行此选择。所选的服务功能转发器1004在将包转发至它们的目的地之前,将向支持具有值43的服务功能类型的服务功能实例发送该包。

以下为可以进行开放选择的服务功能实例的示例服务功能链。考虑以下服务功能链路由:

·sfc3:rd=198.51.100.1,103,spi=17,[si=255,sft=41,rd=192.0.2.1,1],[si=250,sft=44,rd=0]

在该示例中,该链还包括位于服务功能转发器1004a的类型41的服务功能,其后为具有值=44的服务功能类型和rd=0的服务索引250。rd等于零的值为特殊值,其指示提供对类型44的服务功能实例的访问的任何服务功能转发器可由服务功能转发器1004a选择。

服务功能转发器1004a将从分类器接收链上的包,并从服务路径标识符(值=17)中识别链。初始服务索引将为255,并且服务功能转发器1004a将包传递给服务功能实例1006a。当服务功能实例1006a将包返回服务功能转发器1004a时,下一跳的服务索引将减少到250。服务功能转发器1004a现在可以自由选择下一跳服务功能转发器来执行链中的下一跳,选择在支持类型44的服务功能的所有服务功能转发器之间进行。服务功能转发器1004a基于其所接收到的服务功能实例路由,得知分别受服务功能转发器1004c和服务功能转发器1004d支持的服务功能实例1006f和1006h支持服务功能类型44。服务功能转发器1004a可使用其本地负载均衡算法来进行此选择。所选的服务功能转发器1004在将包转发至它们的目的地之前,将向支持具有值44的服务功能类型的服务功能实例发送该包。

以下为可以选择服务功能类型的示例服务功能链。考虑以下服务功能链路由:

·sfc4:rd=198.51.100.1,104,spi=18,[si=255,sft=41,rd=192.0.2.1,1],[si=250,{sft=43,rd=192.0.2.2,2,sft=44,rd=192.0.2.3,8}]

该示例提供了在服务功能链中的第二跳中的服务功能类型的选择。也就是说,值为250的服务索引指示在服务功能转发器1008b的值=43的服务功能类型和位于服务功能转发器1008c的值=44的服务功能类型之间的选择。

服务功能转发器1004a将从分类器902接收链上的包,并从服务路径标识符(值=18)中识别链。初始服务索引将为255,并且服务功能转发器1004a将包传递给支持服务功能类型1008a的值为41的服务功能实例1006a。当服务功能实例1006a将包返回服务功能转发器1004a时,下一跳的服务索引将减少到250。服务功能转发器1004a现在可以自由选择下一跳服务功能转发器以在链中执行在支持具有值=43的服务功能类型的服务功能实例1006d的服务功能转发器1004b和支持具有值=44的服务功能类型的服务功能实例1006f的服务功能转发器1004c之间执行。的服务功能转发器1004b之间进行选择的下一跳。这些可为根据特定条件执行的不同服务功能,或者可为通过不同类型标识符(例如来自不同供应商的防火墙)标识的类似功能。服务功能转发器1004a可使用本地策略和负载均衡算法进行该选择,并且在一些情况下,可使用从本地服务功能实例1006a传回的附加信息来帮助通知其选择。所选的服务功能转发器1004在将包转发至它们的目的地之前,将向支持所选的服务功能类型的服务功能实例发送该包。

以下是相关双向服务功能链的示例。考虑以下服务功能链路由:

·sfc5:rd=198.51.100.1,105,spi=19,assoc-type=1,assoc-rd=198.51.100.1,106,assoc-spi=20,[si=255,sft=41,rd=192.0.2.1,1],[si=250,sft=43,rd=192.0.2.2,2]

·sfc6:rd=198.51.100.1,106,spi=20,assoc-type=1,assoc-rd=198.51.100.1,105,assoc-spi=19,[si=254,sft=43,rd=192.0.2.2,2],[si=249,sft=41,rd=192.0.2.1,1]

这些示例展示了形成如上所述的双向服务功能链的两个服务功能链的相关性。两个服务功能链路由sfc5和sfc6由控制器19发布。sfc5和sfc6具有不同的服务路径标识符(值19和20),因此它们被称为单独的服务功能链,但它们都具有指示双向服务功能链的相关器字段。例如,它们可能均具有关联类型设置为指示双向sfc的1的关联tlv。关联tlv可以被包含在服务路径属性中。每个也可包括包含其他服务功能链路由rd的值的关联服务功能链路由-rd字段(assoc-rd)以及将两个服务功能链关联为双向对的相关联的服务路径标识符(assoc-spi)字段。从本示例中的服务功能链路由可以看出,链是对称的:sfc5中的跳数以sfc6中的相反顺序显示。

以下是相关双向和不对称服务功能链的示例。考虑以下服务功能链路由:

·sfc7:rd=198.51.100.1,107,spi=21,assoc-type=1,assoc-rd=198.51.100.1,108,assoc-spi=22,[si=255,sft=41,rd=192.0.2.1,1],[si=250,sft=43,rd=192.0.2.2,2]

·sfc8:rd=198.51.100.1,108,spi=22,assoc-type=1,assoc-rd=198.51.100.1,107,assoc-spi=21,[si=254,sft=44,rd=192.0.2.4,6],[si=249,sft=41,rd=192.0.2.1,1]

也可以形成不对称的双向服务功能链。此示例显示了一对服务功能链sfc7和sfc8,其具有与上一示例中的sfc7和sfc8相似的不同服务路径标识符(值21和22)。然而,与该示例不同,服务功能链在每个方向上是不同的。两个链均包括值为41的服务功能类型的跳转,但sfc7包括在服务功能转发器1004b得到支持的值为43的服务功能类型的跳转,而sfc8包括在服务功能转发器1004d得到支持的值为44的服务功能类型的跳转。

以下为使用服务功能链进行循环的示例。考虑以下服务功能链路由:

·sfc9:rd=198.51.100.1,109,spi=23,[si=255,sft=41,rd=192.0.2.1,1],[si=250,sft=44,rd=192.0.2.4,5],[si=245,sft=1,rd={spi=23,si=255,rsv=0}],[si=245,sft=42,rd=192.0.2.3,7]

例如,上面针对图2描述了循环和跳转。该示例性服务功能链路由包含在路由区分符内编码的显式循环指令,其被呈现为值=245的服务索引的服务功能链跳转的选择。

本文所述的技术可在硬件、软件固件或其任何组合中实现。被描述为模块、单元或组件的各种特征可一起在集成逻辑装置中实现或者作为分立装置单独实现但为可互操作的逻辑装置或其他硬件装置。在一些情况下,电子电路的各种特征可被实施为一或多个集成电路装置,例如集成电路芯片或芯片组。

如果在硬件中实施,则本公开可针对诸如处理器或集成电路装置(例如集成电路芯片或芯片组)的装置。另选地或除此以外,如果在软件或固件中实现,则所述技术可至少部分地由包括指令的计算机可读数据存储介质实现,该指令在被执行时使处理器执行上述方法中的一或多者-。例如,计算机可读数据存储介质可存储由处理器执行的此些指令。

计算机可读介质可创建计算机程序产品的一部分,计算机程序产品可包括封装材料。计算机可读介质可包括诸如随机存取存储器(ram)、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)等计算机数据存储介质、闪存、磁性或光学数据存储介质等。在一些示例中,制品可包括一或多个计算机可读存储介质。

在一些示例中,计算机可读存储介质可包括非暂态介质。术语“非瞬态”可指示未被包含在载波或传播信号中的存储介质。在某些示例中,非暂时性存储介质可(例如,在ram或高速缓存中)存储可以随时间改变的数据。

代码或指令可为由包括一或多个处理器,例如一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)的处理电路或其他等效的集成或分离逻辑电路执行的软件和/或固件。因此,如本文所使用的术语“处理器”可指的是任何前述结构或适于实现本文所描述的技术的任何其它结构。此外,在一些方面,在本公开中描述的功能可被设置在软件模块或硬件模块内。

除了上述之外或作为上述的替代,描述了以下实例。在任何以下实例中描述的特征可与本文所述的任何其他实例一起使用。

实例1。一种方法包括:通过计算装置接收第一层3路由协议路由通告,该第一层3路由协议路由通告包括服务功能实例的服务功能实例数据,该服务功能实例数据指示服务功能实例的服务功能类型和服务标识符;通过计算装置接收第二层3路由协议路由通告,该第二层3路由协议路由通告包括服务功能链的服务功能链数据,该服务功能链数据指示服务路径标识符和一个或多个服务功能项;以及至少基于确定一个或多个服务功能项中的服务功能项指示该服务功能实例,通过所述计算装置向所述服务功能实例发送被分类到该服务功能链的包。

实例2。根据实例1所述的方法,其中,确定一个或多个服务功能项中的服务功能项指示服务功能实例包括:由计算装置确定该一个或多个服务功能项中的服务功能项指示服务功能类型和服务标识符。

实例3。根据实例1所述的方法,其中,一个或多个服务功能项中的服务功能项指示服务功能类型和服务标识符,并且其中,服务标识符指示多个服务功能实例中的应用由服务功能类型指示的服务功能的任意服务功能实例为合适的服务功能实例。

实例4。根据实例1所述的方法,其中,一个或多个服务功能项中的每个服务功能项包括以服务功能链的顺序指示该服务功能项的位置的服务索引,该方法进一步包括:由计算装置接收封装有包括服务路径标识符和服务索引的网络服务报头的包,其中,确定一个或多个服务功能项中的服务功能项指示服务功能实例包括:通过该计算装置,将网络服务报头的服务路径标识符与服务功能链数据的服务路径标识符进行匹配,以及将该网络服务报头的服务索引与该服务功能项的服务索引进行匹配。

实例5。根据实例1所述的方法,其中,服务功能实例包括第一服务功能实例,其中,服务功能实例数据包括第一服务功能实例数据,该方法进一步包括:通过计算装置输出第三层3路由协议路由通告,该第三层3路由协议路由通告包括由计算装置承载以应用服务功能的第二服务功能实例的第二服务功能实例数据,该第二服务功能实例数据指示第二服务功能实例的服务功能类型和服务标识符。

实例6。根据实例5所述的方法,其中,一个或多个服务功能项的第二服务功能项指示由计算装置承载的第二服务功能实例,该方法进一步包括:通过计算装置将服务功能应用于该包。

实例7。根据实例1所述的方法,其中,第一层3路由协议路由通告包括边界网关协议update消息,该边界网关协议update消息包括指示服务功能类型和服务标识符的服务功能链接网络层可达性信息。

实例8。根据实例7所述的方法,其中,服务标识符包括路由区分符。

实例9。根据实例7所述的方法,其中,边界网关协议update消息包括包含承载服务功能实例的计算装置的网络地址的封装属性,该方法进一步包括:通过计算装置基于该封装属性封装具有隧道封装报头的包以生成隧道包,该隧道封装报头包括计算装置的网络地址;并通过计算装置向承载服务功能实例的计算装置发送该隧道包。

实例10。根据实例1所述的方法,其中,第二层3路由协议路由通告包括边界网关协议update消息,该边界网关协议update消息包括包含服务功能链数据的服务功能链接网络层可达性信息。

实例11。根据实例10所述的方法,其中,边界网关协议update消息包括包含一个或多个服务功能项的服务功能链bgp路径属性。

实例12。根据实例1所述的方法,其中,服务功能链数据包含指示服务功能链以及另一服务功能链将分别处理包流和该包流的反向包流的相关器。

实例13。根据实例1所述的方法,其中,发送包括:通过计算装置封装具有包括服务索引和服务路径标识符的网络服务报头的包;以及发送具有网络服务报头的包。

实例14。根据实例1所述的方法,其中,第一层3路由协议路由通告和第二层3路由协议路由通告各自与路由目标相关联,该方法进一步包括:响应于确定计算装置被配置为导入路由目标,通过该计算装置导入服务功能实例数据和服务功能链数据。

实例15。根据实例1所述的方法,其中,该包包括第一包,该方法进一步包括:通过计算装置接收封装有包含服务链的服务路径标识符和服务索引的网络服务报头的第二包;通过封装具有指示新服务功能链的服务路径标识符的新网络服务报头的包,通过计算装置将第二包分流到新服务功能链。

实例16。根据实例1所述的方法,其中,该包包括第一包,

其中,服务功能实例包括第一服务功能实例,该方法进一步包括:通过计算装置接收封装有包括服务功能链的服务路径标识符和服务索引的网络服务报头的第二包;通过选择不同于在服务功能链中的服务索引之后的下一服务索引的该包的新服务索引,通过计算装置将第二包循环或跳转至第二服务功能实例。

实例17。计算装置包括:一个或多个处理器,可操作耦接至存储器;第一服务功能实例,被配置成由一个或多个处理器执行以应用服务功能;服务功能转发器,被配置成由一个或多个处理器执行,以:接收第一层3路由协议路由通告,该第一层3路由协议路由通告包括第二服务功能实例的服务功能实例数据,该服务功能实例数据指示服务功能实例的服务功能类型和服务标识符;接收第二层3路由协议路由通告,该第二层3路由协议路由通告包括服务功能链的服务功能链数据,该服务功能链数据指示服务路径标识符以及一个或多个服务功能项;以及至少基于确定一或多个服务功能项中的服务功能项指示第二服务功能实例,向第二服务功能实例发送被分类为服务功能链的包。

实例18。一种控制器,包括:一或多个处理器,可操作地耦合至存储器,其中,一个或多个处理器被配置为输出第一层3路由协议路由通告,该第一层3路由协议路由通告包括服务功能链的服务功能链数据,该服务功能链数据指示服务路径标识符以及一个或多个服务功能项。

实例19。根据实例18所述的控制器,其中,一个或多个处理器被配置成:接收一个或多个层3路由协议路由通告,该一个或多个层3路由协议路由通告包括相应服务功能实例的相应服务功能实例数据;以及来自一个或多个层3路由协议路由通告的相应服务功能实例数据生成一个或多个服务功能项。

此外,在上述任何示例中阐述的任何特定特征可被组合成所述技术的有益实例。也就是说,任何特定特征一般可应用于本发明的所有实例。已经描述了本发明的各种实例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1