相关申请案交叉申请本申请要求2015年2月17日递交的发明名称为“使用源路由的业务链接(servicechainingusingsourcerouting)”的第14/623,842号美国非临时专利申请案的在先申请优先权,该在先申请的内容以引用的方式并入本文本中。关于由联邦政府赞助研究或开发的声明不适用参考缩微胶片附录不适用
背景技术:
::当在网络内传送数据流量时,客户要求之一可能是在物理网络基础设施中和/或虚拟网络基础设施中执行策略的能力。在物理网络基础设施中,物理设施、设备和电缆可用于形成用来实施和/或执行策略的物理拓扑。在虚拟网络基础设施中,物理拓扑对于执行策略来说也许不可行。例如,在数据中心中,中间盒设施可为虚拟的并可位于数据中心内的任何位置。网络功能虚拟化(networkfunctionvirtualization,nfv)中的业务链和/或转发图可在虚拟环境中用来提供策略执行。还可采用分段路由来实施业务链。然后,采用分段路由要求沿着路线的每个网络节点(例如,业务节点)都能够进行分段路由并且限于具有分段路由能力的网络节点,以正确地处理和/或路由数据包。因此,需要使用具有各种路由能力的网络节点来实施业务链。技术实现要素:在一项实施例中,本发明包括一种业务链接方法,所述方法包括:接收包括目的地址的源路由数据包,其中所述源路由数据包标识沿着业务链路径的多个下一跳;使用所述多个下一跳确认所述源路由数据包的下一跳;确定所述下一跳是否能够进行源路由;设置所述源路由数据包的目的地址根据所述确定的结果来设置所述源路由数据包的目的地址,其中,当所述下一跳能够进行源路由时,将所述目的地址设置为所述下一跳,当所述下一跳不能进行源路由时,将所述目的地址设置为下一个能够进行源路由的下游网络节点;以及将所述源路由数据包转发给所述下一跳。在另一项实施例中,本发明包括一种装置,所述装置包括:接收器,用于接收源路由数据包,其中所述源路由数据包包括目的地址和沿着业务链路径的多个下一跳;以及耦合到存储器和所述接收器的处理器,其中所述存储器包括计算机可执行指令,所述计算机可执行指令存储在非瞬时性计算机可读介质中,使得在由所述处理器执行时使所述处理器执行以下操作:从所述多个下一跳中确认所述源路由数据包的下一跳;确定所述下一跳是否能够进行源路由;设置所述源路由数据包的目的地址根据所述确定的结果来设置所述源路由数据包的目的地址,其中,当所述下一跳能够进行源路由时,将所述目的地址设置为所述下一跳,当所述下一跳不能进行源路由时,将所述目的地址设置为下一个能够进行源路由的下游网络节点;以及将所述源路由数据包转发给所述下一跳。在又一项实施例中,本发明包括一种源路由方法,所述方法包括:接收包括目的地址、源地址和净荷的数据包;确定沿着所述源地址与所述目的地址之间的业务链路径的多个下一跳;生成包括所述目的地址、所述源地址、所述多个下一跳和所述净荷的源路由数据包;将所述源路由数据包的所述目的地址设置为沿着所述业务链路径的所述多个下一跳中的第一下一跳;以及根据所述目的地址转发所述源路由数据包。在又一项实施例中,本发明包括一种装置,所述装置包括:接收器,用于接收包括目的地址、源地址和净荷的数据包;耦合到存储器和所述接收器的处理器,其中所述存储器包括计算机可执行指令,所述计算机可执行指令存储在非瞬时性计算机可读介质中,使得在由所述处理器执行时使所述处理器执行以下操作:确定沿着所述源地址与所述目的地址之间的业务链路径的多个下一跳,生成包括所述目的地址、所述源地址、所述多个下一跳和所述净荷的源路由数据包,将所述源路由数据包的所述目的地址设置为沿着所述业务链路径的所述多个下一跳中的第一下一跳,以及根据所述目的地址转发所述源路由数据包。结合附图和权利要求书可以从以下的详细描述中更清楚地理解这些和其它特征。附图说明为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。图1为网络的一实施例的示意图。图2为网络元件的一实施例的示意图。图3为源路由数据包的一实施例的示意图。图4为使用源路由数据包实施业务链接的网络的一实施例的示意图。图5为业务链接方法的一实施例的流程图。图6为业务链接方法的另一实施例的流程图。具体实施方式首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。本文公开了在网络内使用源路由提供业务链能力的各种实施例,该网络包括能够进行源路由的网络节点以及具有各种路由能力的其它网络节点。各种实施例允许不能进行源路由的网络节点(例如,防火墙和入侵防御系统(intrusionpreventionsystems,ips))在使用源路由时出现在业务链路径中。因此,可以采用各种网络节点,包括能够进行源路由的网络节点和不能进行源路由的网络节点,使用源路由实施业务链。在一实施例中,网络节点用于接收源路由数据包,确定源路由数据包的沿着业务链路径的下一跳是否能进行源路由,以及相应地转发源路由数据包。图1为本发明一实施例在其中操作的网络100的一实施例的示意图。网络100包括支持通过网络100传输数据流量(例如,数据包)的多个网络节点102至120。网络节点102至120用于通过网络100实施业务链。在一实施例中,网络节点102配置为源网络节点,网络节点104配置为目的网络节点,网络节点106配置为入口网络节点,网络节点108配置为出口网络节点,网络节点110至116配置为交换机或路由器,网络节点118配置为防火墙,网络节点120配置为ips。网络节点102至120能够进行源路由和/或不能进行源路由。能够进行源路由的网络节点用于处理源路由数据包(例如,图3中描述的源路由数据包300)。不能进行源路由的网络节点不用于处理源路由数据包。在图1中,网络节点104至116能够进行源路由,网络节点102、118和120不能进行源路由。网络节点102至120经由多个链路和/或隧道相互耦合。本文所讨论的链路可为物理链路,例如,用来传输数据的电链路、光链路和/或逻辑链路(例如,虚拟链路)。隧道包括但不限于:互联网协议(internetprotocol,ip)安全(ipsecurity,ipsec)隧道或通用路由封装协议(genericroutingencapsulation,gre)隧道。网络100用于通过经由网络100内的一个或多个其它网络节点提供从源网络节点(例如,网络节点102)到目的网络节点(例如,网络节点104)的业务链路径来实施业务链。业务链路径用于在数据流量经过网络100时对数据流量提供和/或执行一个或多个应用或策略。业务链,或业务功能链,由一组业务功能组成,这些业务功能按应用到所选数据包或帧的顺序排列。策略包括但不限于服务质量(qualityofservice,qos)参数、带宽参数和安全策略。策略的一个示例是:数据包去往web应用,但是在到达web应用之前必须经过防火墙。业务链路径可包括多个能够进行源路由的网络节点以及一个或多个不能进行源路由的网络节点。当业务链包括一个不能进行源路由的网络节点时,该不能进行源路由的网络节点耦合到一个或多个能够进行源路由的相邻网络节点。例如,网络节点118耦合到网络节点114,网络节点120耦合到网络节点110。虽然结合网络节点102至120的特定配置公开了图1所示的实施例,但是注意的是,网络100可包括任何合适数量的网络节点102至120。网络100还可包括本领域普通技术人员在查看本发明后会认识到的网络节点102至120的任何配置。图2为用于通过图1所示的网络100的至少一部分传输和处理数据流量的网络元件200的一实施例的示意图。例如,网络元件200可在图1所述的网络节点102至120中实施和/或集成。本发明中描述的至少一些特征/方法可在网络元件200中实施。例如,本发明的特征/方法可在硬件、固件和/或安装以运行于该硬件上的软件中实施。网络元件200可以是通过网络、系统和/或域传输数据的任何设备(例如,调制解调器、交换机、路由器、网桥、服务器、客户端等)。此外,术语网络“元件”、“节点”、“部件”、“模块”和/或类似术语可互换用来概括性地描述网络设备,没有特定或特殊的意义,除非本发明内另有特殊说明和/或要求。在一项实施例中,网络元件200可以是用于使用源路由实施业务链接和通过网络传送数据包的装置。网络元件200包括耦合到收发器(tx/rx)220的一个或多个下游端口210,tx/rx220可以是发射器、接收器或其组合。tx/rx220经由下游端口210传输和/或接收来自其它网络节点的帧。类似地,网元200包括耦合到多个上游端口240的另一tx/rx220,其中该tx/rx220经由上游端口240传输和/或接收来自其它节点的帧。下游端口210和/或上游端口240可包括电和/或光发射和/或接收部件。处理器230耦合到tx/rx220并用于处理帧和/或确定向哪些网络节点发送(例如,传输)包。在一实施例中,处理器230可包括一个或多个多核处理器和/或存储器模块250,其可用作数据存储器、缓冲器等。处理器230可实施为通用处理器或可为一个或多个专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)和/或数字信号处理器(digitalsignalprocessor,dsp)的一部分。尽管示为单个处理器,但处理器230不限于此并可包括多个处理器。处理器230用于使用源路由实施业务链接和通过网络传送数据包。图2示出了存储器模块250耦合至处理器230并且可以是用于存储各种类型的数据的非瞬时性介质。存储器模块250包括存储器设备,包括辅助存储器、只读存储器(read-onlymemory,rom)和随机存取存储器(random-accessmemory,ram)。辅助存储器通常包括一个或多个磁盘驱动器、光驱、固态驱动器(solid-statedrives,ssd)和/或磁带驱动器,并且用于数据的非易失性存储,而且如果ram的容量不足以保存所有工作数据,辅助存储器则用作溢流数据存储设备。辅助存储器可用于在加载到ram中的程序被选择执行时存储这类程序。rom用于存储指令,可能还存储在程序执行期间读取的数据。rom是非易失性存储器设备,通常具有相对于辅助存储器的大存储容量来说较小的内存容量。ram用于存储易失性数据,可能还存储指令。访问rom和ram通常都快于访问辅助存储器。存储器模块250可用于存储用于执行本文所描述的各种示例实施例的指令。在一项示例实施例中,存储器模块250包括在处理器230上实施的源路由模块260。在一项示例实施例中,可实施源路由模块260以通过网络传送数据包、采用源路由,和/或使用源路由实施业务链接。例如,源路由模块260用于使用源路由实施业务链以通过网络转发数据包,该网络包括能够进行源路由的网络节点和/或不能进行源路由的网络节点。在一实施例中,这可根据业务链接方法500和/或业务链接方法600来完成。源路由模块260可在发射器(tx)、接收器(rx)或这两者中实施。应理解,通过将可执行指令编程和/或加载至网络元件200上,处理器230、缓存和长期存储器中的至少一个被改变,从而将网络元件200的一部分转换成特定机器或装置,例如本发明宣扬的拥有新颖功能的多核转发架构。加载可执行软件至计算机所实现的功能可以通过现有技术中公知的设计规则转换成硬件实施,这在电力工程和软件工程领域是很基础的。决定使用软件还是硬件来实施一个概念通常取决于对设计稳定性及待生产的单元数量的考虑,而不是从软件领域转换至硬件领域中所涉及的任何问题。通常,仍然频繁改变的设计可优先在软件中实施,因为重新编写硬件实施方式比重新编写软件设计更为昂贵。通常,稳定及大规模生产的设计更适于在软件中(例如,在asic中)实施,因为对于大型生产运行,硬件实施比软件实施更为便宜。设计通常可以以软件形式进行开发和测试,之后通过现有技术中公知的设计规则转变成asic中等同的硬件实施,该asic硬线软件指令。由新asic控制的机器是一种特定机器或装置,同样地,已编程和/或加载有可执行指令的计算机可视为一种特定机器或装置。本发明的任何处理都可通过使处理器(例如,通用多核处理器)执行计算机程序来实施。在这种情况下,可以使用任何类型的非瞬时性计算机可读介质向计算机或网络设备提供计算机程序产品。计算机程序产品可存储在计算机或网络设备中的非瞬时性计算机可读介质中。非瞬时性计算机可读介质包括任何类型的有形存储介质。非瞬时性计算机可读介质的示例包括磁性存储介质(例如,软盘、磁盘、硬盘驱动器等)、光磁存储介质(例如,磁光盘)、只读光盘(compactdiscread-onlymemory,cd-rom)、可录光碟(compactdiscrecordable,cd-r)、带读写式光驱(compactdiscrewritable,cd-r/w)、数字多功能光盘(digitalversatiledisc,dvd)、蓝光(注册商标)光盘(blu-raydisc,bd),以及半导体存储器(例如,掩模型rom、可编程rom(programmablerom,prom)、可擦除prom、快闪rom,以及ram)。还可使用任何类型的瞬时性计算机可读介质向计算机或网络设备提供计算机程序产品。瞬时性计算机可读介质的示例包括电信号、光信号和电磁波。瞬时性计算机可读介质可以经由有线通信线路(例如,电线或光纤)或无线通信线路向计算机提供程序。图3为源路由数据包300的一实施例的示意图。在一实施例中,源路由数据包300用于通过网络转发数据内容。例如,源路由数据包300由图1所述的多个网络节点102至120通过网络100来传送。源路由数据包300通常包括头部分302、路由部分304和净荷部分306。头部分302包括用于通过网络路由数据包的目的地址字段308和源地址字段310。在一实施例中,头部分302是ip头并支持ip地址(例如,第四版互联网协议(ipversion4,ipv4)地址和/或第六版互联网协议(ipversion6,ipv6)地址)。路由部分304包括多个条目和/或确认数据包的多个下一跳312(例如,下一跳网络节点)以沿着一个路径(例如,业务链路径和/或源路由路径)遍历。下一跳312可使用ip地址、媒体接入控制(mediaaccesscontrol,mac)或本领域普通技术人员在查看本发明后会认识到的任何其它合适的标识符来确认。多个下一跳312可包括能够进行源路由的网络节点以及不能进行源路由的网络节点。在一实施例中,路由部分304和/或每个下一跳312包括一个或多个标志位以指示下一跳312是否能够进行源路由。例如,当每个下一跳312包括一个标志位时,该标志位设置为第一值(例如,值1)来指示下一跳312能够进行源路由,设置为第二值(例如,值0)来指示下一跳312不能进行源路由。或者,源路由数据包300包括一个或多个附加字段和/或标志来指示下一跳312是否能够进行源路由。净荷部分306包括净荷或数据内容。图4为使用源路由数据包实施业务链接的网络400的一实施例的示意图。网络400包括多个网络节点402至420。网络400和网络节点402至420配置为分别类似于图1所述的网络100和网络节点102至120。网络400用于使用业务链和源路由从网络节点402向网络节点404传送数据流量(例如,数据包)。网络节点402用于向网络节点406发送数据包450。数据包450包括目的地址(例如,b)、源地址(例如,a)和净荷。网络节点406用于接收数据包450并生成源路由数据包452。源路由数据包452配置为类似于图3所述的源路由数据包300。源路由数据包452包括下一跳列表,下一跳列表指示通过网络400的沿着一个业务链的路径。例如,下一跳(例如,s1、fw、t2、ips和b)列表指示包括网络节点414、418、408、420和404的业务链路径。源路由数据包452的目的地址设置为下一跳列表中的第一个条目(例如,s1),例如,目的地址设置为网络节点414。源路由数据包452的源地址和净荷与数据包450的源地址和净荷大致相同。网络节点406用于根据目的地址向网络节点414转发数据包452。网络节点414用于接收源路由数据包452并生成源路由数据包454。网络节点414用于确定源路由数据包452已到达源路由数据包452所指示的目的地址,并处理源路由数据包452以生成源路由数据包454。网络节点414用于使用源路由数据包452中的下一跳列表来确定网络节点418是下一跳。网络节点414还用于确定网络节点418不是能够进行源路由的网络节点。例如,网络节点414可检查标志位和/或使用网络拓扑信息来确定网络节点418不是能够进行源路由的网络节点。网络拓扑信息包括描述多个网络节点的能力(例如,能够进行源路由)的表。网络节点414用于将源路由数据包452的目的地址设置为下一跳列表中的下一个能够进行源路由的网络节点(例如,t2)。因此,网络节点414将目的地址设置为网络节点408,而不是网络节点418,并因此生成源路由数据包454。网络节点414用于向网络节点418转发源路由数据包454。网络节点418用于接收源路由数据包454并生成源路由数据包456。网络节点418用于对源路由数据包454执行一个或多个策略,并因此生成源路由数据包456。源路由数据包456的目的地址被保留(例如,被保存)并且与源路由数据包454的目的地址大致相同。网络节点418用于根据目的地址向网络节点408转发源路由数据包456。网络节点414用于接收源路由数据包456并确定源路由数据包456还未到达源路由数据包456所指示的目的地址。网络节点414用于根据目的地址向网络节点408转发源路由数据包456。例如,网络节点414使用将源路由数据包456路由到下一跳的网络拓扑信息来向目的地址转发源路由数据包456。网络节点408用于接收源路由数据包456并生成源路由数据包458。网络节点408用于确定源路由数据包456已到达源路由数据包456所指示的目的地址,并处理源路由数据包456以生成源路由数据包458。网络节点408用于使用源路由数据包456中的下一跳列表来确定网络节点420是下一跳。网络节点408还用于确定网络节点420不是能够进行源路由的网络节点。网络节点408用于将源路由数据包456的目的地址设置为下一跳列表中的下一个能够进行源路由的网络节点(例如,b)。因此,网络节点408将目的地址设置为网络节点404,而不是网络节点420,并因此生成源路由数据包458。网络节点408用于向网络节点420转发源路由数据包458。网络节点420用于接收源路由数据包458并生成源路由数据包460。网络节点420用于对源路由数据包458执行一个或多个策略,并因此生成源路由数据包460。源路由数据包460的目的地址被保留(例如,被保存)并且与源路由数据包458的目的地址大致相同。网络节点420用于根据目的地址向网络节点404转发源路由数据包460。网络节点408用于接收源路由数据包460并确定源路由数据包460还未到达源路由数据包460所指示的目的地址。网络节点408用于根据目的地址向网络节点416转发源路由数据包460。网络节点416用于接收源路由数据包460并确定源路由数据包460还未到达源路由数据包460所指示的目的地址。网络节点416用于根据目的地址向网络节点412转发源路由数据包460。网络节点412用于接收源路由数据包460并确定目的地址引用网络节点412的下一跳。网络节点412用于移除源路由数据包460的一个或多个字段和/或部分,并因此生成数据包462。例如,网络节点412从源路由数据包460中移除下一跳列表和/或路由部分。数据包462的目的地址、源地址和净荷与源路由数据包460中的大致相同。网络节点412用于向网络节点404转发数据包462。网络节点404用于接收数据包462并且还处理数据包462。图5为用于网络节点的业务链接方法500的一实施例的流程图并且可与图2所述的源路由模块260类似。在一实施例中,网络节点(例如,图4所述的网络节点406)用于接收数据包、生成针对业务链路径的源路由数据包,并向沿着业务链路径的一个下一跳网络节点转发源路由数据包。在步骤502处,网络节点接收包括目的地址、源地址和净荷的数据包。在步骤504处,网络节点确定沿着业务链路径到目的地址的下一跳的列表。业务链路径可包括多个能够进行源路由的网络节点以及一个或多个不能进行源路由的网络节点。网络节点使用网络操作器信息、网络拓扑信息、数据库、路由表和/或本领域普通技术人员将认识到的任何其它合适的机制来生成沿着业务链路径到目的地址的下一跳(例如,下一跳网络节点)的列表。在步骤506处,网络节点生成包括目的地址、源地址、下一跳列表和净荷的源路由数据包。例如,源路由数据包配置为类似于图3所述的源路由数据包300。在步骤508处,网络节点将源路由数据包中的目的地址设置为下一跳列表中的第一个条目。在步骤510处,网络节点向源路由数据包的目的地址所指示的下一跳网络节点转发源路由数据包。图6为用于网络节点的业务链接方法600的另一实施例的流程图并且可与图2所述的源路由模块260类似。在一实施例中,网络节点(例如,图4所述的网络节点414)用于接收源路由数据包、确定源路由数据包的沿着业务链路径的下一跳是否能够进行源路由,并相应地转发源路由数据包。在步骤602处,网络节点接收源路由数据包,该源路由数据包确认沿着业务链路径的下一跳(例如,下一跳网络节点)的列表。业务链路径可包括多个能够进行源路由的网络节点以及一个或多个不能进行源路由的网络节点。在一实施例中,源路由数据包与图3所述的源路由数据包300类似。在步骤604处,网络节点确定源路由数据包是否已到达目的地址。例如,网络节点检查源路由数据包的目的地址,以确定网络节点是否被确认为源路由数据包的目的地。当源路由数据包已到达目的地址时,网络节点前进到步骤608;否则,网络节点前进到步骤606。在步骤606处,网络节点向目的地址转发源路由数据包。例如,网络节点使用查找表、路由表、网络拓扑信息和/或本领域普通技术人员在查看本发明后会认识到的任何其它合适的路由协议来向另一网络节点并朝目的地址转发源路由数据包。返回步骤604,当源路由数据包已到达目的地址时,网络节点前进到步骤608。在步骤608处,网络节点从源路由数据包中的下一跳列表中确定下一跳。在步骤610处,网络节点可确定下一跳列表中的下一跳是否能够进行源路由。例如,网络节点检查源路由数据包中的一个或多个标志位,以确定下一跳是否能够进行源路由。在一替代性实施例中,网络节点使用控制器和/或网络操作器提供的信息来确定下一跳是否能够进行源路由。当下一跳列表中的下一跳能够进行源路由时,网络节点前进到步骤612;否则,网络节点前进到步骤616。在步骤612处,网络节点将源路由数据包的目的地址设置为下一跳列表所指示的下一跳。在步骤614处,网络节点向源路由数据包中的目的地址所指示的下一跳转发源路由数据包。返回步骤610,当下一跳列表中的下一跳不能进行源路由时,网络节点前进到步骤616。在步骤616中,网络节点将源路由数据包的目的地址设置为下一跳列表中的下一个能够进行源路由的下一跳,并可前进到步骤614。虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其它特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其它变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。当前第1页12当前第1页12