域间服务功能链接的制作方法

文档序号:11637148阅读:390来源:国知局
域间服务功能链接的制造方法与工艺

本公开涉及通信网络,更加具体地涉及域间服务功能链接(chaining)。



背景技术:

网络服务在许多网络中被广泛部署并且是重要的。服务提供一系列功能,例如安全性、广域网加速、防火墙、服务器负载平衡、深度数据包检测、入侵检测服务、以及网络地址转换(nat)。可以在网络基础设施中的不同的点(包括例如广域网、数据中心、校园等等)处采用网络服务。服务可以作为服务链的一部分被采用。

附图说明

图1示出可以实现本文描述的实施例的网络的示例;

图2描绘了可用于实现本文描述的实施例的网络设备的示例;

图3是示出根据一个实施例的用于域间服务功能链接的过程的概述的流程图;

图4是示出根据一个实施例的图1的网络中的域间服务功能链接的示例的图示;

图5是示出根据一个实施例的在另一网络拓扑中的域间服务功能链接的示例的图示。

在附图的几个视图中,相应的参考标号表示相应的部分。

具体实施方式

概述

在一个实施例中,方法通常包括:在位于第一管理域的边界处的网络设备处接收服务功能链中的数据包,该数据包包括服务功能路径标识符和服务索引;在网络设备处处理数据包,其中处理包括基于服务功能路径标识符和服务索引来修改数据包以将该数据包引导到第二管理域;以及从该网络设备转发数据包到第二管理域以用于在服务功能链中进行处理。服务功能链在第一管理域和第二管理域上延伸。

在另一实施例中,装置通常包括处理器,该处理器用于在第一管理域的边界处处理在服务功能链中接收到的数据包,该数据包包括服务功能路径标识符和服务索引,基于服务功能路径标识符和服务索引修改数据包,以及将数据包转发到第二管理域。该装置还包括用于存储用于基于服务功能路径标识符和服务索引来修改数据包的指令的存储器。服务功能链在第一管理域和第二管理域上延伸。

示例性实施例

以下说明被呈现以使得本领域普通技术人员能够做出和使用这些实施例。对具体实施例和应用的描述仅仅作为示例被提供,并且对于本领域技术人员来说各种修改将是显而易见的。在不脱离这些实施例的范围的情况下,本文描述的一般原理可以被用于其他应用。因此,实施例不限于所示出的那些实施例,而是符合与本文所描述的原理和特征相一致的最宽范围。出于清楚的目的,与和实施例相关的技术领域中已知的技术材料相关的细节没有被详细描述。

服务链是这样的数据结构,其定义了托管各种服务功能以及这些服务功能应该被用于所选流量的数据的顺序的服务节点的集合。服务链接涉及对流量的拦截和通过一系列服务节点(即,物理设备或虚拟设备)对流量进行指引,其中每个服务节点支持一个或多个服务功能。经过各种服务功能被从入口/分类器实例化至出口的路径被称为服务功能路径(sfp)。

网络服务报头(nsh)是可以被添加到用于服务链的帧/数据包的数据平面报头。该报头包含用于服务链接的信息,以及由网络节点和服务元件所添加和消耗的元数据。nsh可以跨一系列设备(物理设备和虚拟设备两者)使用。在一个示例中,可以如由p.quinn等于2014年7月3日发表的ietf草案“networkserviceheader”(draft-quinn-sfc-nsh-03.txt)中描述的实现nsh。

用于服务链接的常规技术通常被构建用于在单个控制平面实体的控制下的单个管理域(路由域、自治系统)。随着近期基于云的服务的增长,可能会将服务功能分布在各种管理域中,在这种情况下,存在使服务链跨越多个管理域的需求。例如,基于服务功能及其位置,数据包可能需要遍历两个或更多个管理域。

本文描述的实施例允许服务功能链跨越多个管理域,而不受针对服务功能位置或处理顺序的限制。在某些实施例中,报头重写可以被用作边界节点上的服务功能以将流量引导到不同的管理域。如下所述,服务功能路径可以以在向下一个域发送数据包之前发生边界节点重写的方式来被实例化。例如,在某些实施例中,sfp可以用服务索引(si)来被实例化,其中si指向具有与下一个域相关联的sfp/si细节的重写报头。服务路径标识符(id)和服务索引的组合可以用于以正确的顺序来应用正确的服务功能而无论服务功能的位置如何。实施例允许服务功能链以任何顺序跨越任意数量的管理域,而无需在域之间进行地址泄露。

现在参考附图,并且首先参考图1,其示出了可以实现本文所描述的实施例的网络。出于简化的目的,仅仅示出了少量节点。这些实施例在包括多个网络设备的数据通信网络的上下文中进行操作。网络可以包括经由任意数量的节点(例如,路由器、交换机、控制器、网关、或其他网络设备)进行通信的任意数量的网络设备,所述节点辅助在网络内的数据的传送。

图1的示例中所示的网络包括位于两个管理域13(自治系统1(as1)、自治系统2(as2))中的多个网络设备10、12、14、16(例如,路由器)。每个自治系统as1、as2可以被分配有标识该as的唯一的号码(自治系统号码(asn))。网络可以包括任意数量的管理域(自治系统、路由域)13,各自由单独的技术管理实体控制并且共享公共路由政策。管理域13被用来将网络划分为应用本地路由策略的各个路由域。管理域13可以各自包括任意数量的网络18,并且每个网络可以包括任意数量的边缘设备10、12、14、16或中间(核心)节点(例如,路由器、交换器、接入层设备、聚合层设备、网关、或其他网络设备)。

在图1中示出的示例中,每个as13包括两个自治系统通过其进行通信的边界节点14(边界1、边界2)。边界节点14可以是路由器或其他合适的网络设备。可以在边界节点14之间插入任意数量的网络设备。

图1示出的网络18各自包括多个服务节点10、分类器/入口路由器12或出口路由器16、以及边界路由器14。如本文所使用的术语“路由器”可以指的是被配置用来执行路由功能的任何网络设备(例如,路由器、交换机/路由器)。在图1示出的示例中,as1包括与as2中的边界路由器(边界2)通信的分类器12和边界路由器(边界1)14。as2还包括出口路由器16。分类器(头-端节点)12位于服务链的起始处,并且出口节点16位于服务链的结束处。分类器12可以执行分类,施加网络服务报头,以及创建服务路径。在图1所示的示例中,由于节点12是服务链中的第一个节点(如下所述),所以节点12被称为分类器或入口节点,并且节点18作为服务链中的出口节点操作。应当理解,节点12、16可以作为不同服务链中的入口节点/分类器或出口节点而操作。

服务节点10各自托管或支持应用于通过相应的服务节点的流量的有效载荷的一个或多个服务功能15。在服务功能链接架构中,节点10基于该节点执行的功能可以被称为“服务功能转发器”。服务节点10是托管一个或多个服务功能并且具有用于可达性和服务递送的与其相关联的一个或多个网络定位器的物理或虚拟元件。在图1所示的示例中,as1在服务节点sn1和sn3处分别托管服务功能sf1和sf3。as2在服务节点sn2和sn4处分别托管服务功能sf2和sf4。服务功能15负责对接收到的数据包的特定处理,并且可以在网络层或其他osi(开放系统互连)层操作。服务功能15可以是虚拟实例或被嵌入物理网络元件中。例如,服务节点10可以是托管一个或多个服务功能的物理设备。服务节点10可以是能够托管任何服务功能的任何网络设备(例如,商用硬件)。多个服务功能可以被嵌入在同一网络元件中。服务功能15可以在与服务节点10通信中的另一节点处执行,如图1所示,或者在服务节点10处实现。边界节点19也可以具有附接到其的服务功能。

节点10、12、14、16中的一个或多个可以与控制器17(例如,odl(opendaylight)控制器、sdn(软件定义网络)控制器、或其他集中式服务器)进行通信。例如,每个管理域13可以包括与针对该域的分类器节点12、服务节点10、和边界节点14进行通信的控制器17。控制器17可以是物理设备或虚拟元件,并且可以位于一个网络设备处,或者例如遍及网络被分布在彼此进行通信的或与中央控制器进行通信的不同网络设备处。控制器17(或另一网络设备)可以包括定义一个或多个服务链的服务链接逻辑。如下所述,控制器17还可以被用于在重写模块19处用重写指令对边界路由器14进行编程。

服务节点10可以用于实现一个或多个服务功能链(服务链)。服务功能链定义了要被应用于选择作为分类的结果的数据包(帧)的服务功能的有序集合。服务功能路径是网络中服务功能链的实例化。

在某些实施例中,用于服务链接的数据平面被定义在网络服务报头(nsh)中。nsh是被添加到帧/数据包的数据平面报头,并且包含服务链接所需的信息,以及由网络节点(例如,服务节点10)和服务元件(例如,服务功能15)所添加和消耗的元数据。入口节点12可以例如为nsh施加服务功能路径标识符(sfpid)和服务索引(si),其将沿着服务路径并应用一组服务。服务节点10使用nsh中的服务索引来标识服务功能并且转发用于处理的数据包。应当理解,本文描述的服务报头、服务功能路径标识符、和服务索引仅仅是示例,并且在不脱离实施例的范围的情况下可以使用其他类型的报头或标识符。例如,服务功能路径标识符可以是被用于指示由参与的节点使用的用于路径选择的服务路径的任何类型的标识符。本文所使用的术语“服务索引”可以指的是提供在服务路径中的位置的任何类型的网络定位器。在某些实施例中,服务报头包括服务路径标识符和服务索引。

如在以下示例中所描述的,数据包沿着服务功能路径从分类器12经过必需的服务功能15。管理域as1的拥有者可以例如希望包括{sf1,sf2,sf3,sf4}的服务,但是在本地域as1内只可获得所期望的服务功能的子集。因此,服务链的构建需要跨越管理域as1和as2两者。控制器17可以使用一个或多个本地服务功能和一个或多个远程服务功能来建立域间服务链。例如,在图1所示的网络中服务链可以被定义为sfp=(sf1,sf2,sf3,sf4}。由于服务功能的本质及其位置,数据包可能需要在两个管理域13之间来回移动。

在某些实施例中,边界路由器14可以接收服务链中的数据包,基于数据包中标识的服务功能路径和服务索引来修改报头(例如,nsh),以及将经修改的数据包转发到服务链中的另一管理域以提供域间服务功能链接。如下面详细描述的,实施例可以将边界节点14处的报头重写19用作服务功能以修改数据包。sfp可以例如在边界节点14上用服务索引来实例化,该服务索引指向用下一个域和相关联的sfp/服务索引细节来重写报头。当需要时边界节点14可以根据sfp重写报头,以及将数据包转发到下一个域用于处理。sfpid和服务索引可以用来以正确的顺序应用正确的服务功能而不考虑服务功能的位置,从而提供域间服务功能链接。

应当理解,图1所示的网络仅仅是示例,并且在不脱离实施例的范围的情况下,本文描述的实施例可以被实现在在包括不同网络拓扑或网络设备的网络或者使用不同的网络协议的网络中。例如,可以具有任意数量或类型的管理域13、网络18、服务节点10、或控制器17。这些实施例可以通过vxlan(虚拟可扩展lan)、传输控制协议(tcp)、udp(用户数据报协议)、或任何其他合适的运输操作。

图2示出了可以用于实现本文描述的实施例的网络设备20(例如,图1中的边界路由器14)的示例。在一个实施例中,网络设备20是可以在硬件、软件、或其任何组合中实现的可编程机器。网络设备20包括一个或多个处理器22、存储器24、网络接口26、和重写模块19。

存储器24可以是存储供处理器22执行和使用的各种应用、操作系统、模块、和数据的易失性存储器或非易失性存储器。例如,重写模块19的组件(例如,代码、逻辑、软件、固件等等)可以被存储在存储器24中。

逻辑可以被编码在一个或多个有形介质中用于由处理器22执行。例如,处理器22可以执行存储在诸如存储器24的计算机可读介质中的代码。计算机可读介质可以是例如电子介质(例如,ram(随机存取存储器)、rom(只读存储器)、eprom(可擦除可编程只读存储器))、磁介质、光学介质(例如,cd,dvd)、电磁介质、半导体技术、或任何其他合适的介质。在某些实施例中,逻辑可以被编码在非暂态计算机可读介质中。

网络接口26可以包括用于接收数据或向其他设备发送数据的任意数量的接口(线路卡、端口)。如图1所示,边界路由器19各自包括用于在服务链上发送数据包的接口。网络接口26可以包括,例如用于连接到计算机或网络的以太网接口。

应当理解,图2中示出的和上文描述的网络设备20仅仅是示例,并且可以使用网络设备的不同配置。例如,网络设备20还可以包括可操作来促进本文描述的功能的硬件、软件、算法、处理器、设备、组件或元件的任何适合的组合。

图3是示出根据一个实施例的用于域间服务功能链接的过程的概述的流程图。在步骤30处,位于第一管理域(例如,as1)中的网络设备(例如,图1中的边界路由器14)接收在至少两个不同管理域上延伸的服务功能链中的数据包。该数据包包括服务功能路径标识符和服务索引。边界路由器14基于服务功能路径标识符和服务索引来修改数据包(步骤32)。边界路由器14可以例如根据服务功能路径重写数据包报头(例如,nsh)。然后,边界路由器14将数据包转发到在经修改的数据包中指定的第二管理域(例如,as2),用于在第二管理域的服务功能链中处理数据包(步骤34)。

应当理解,图3所示的和以上描述的流程图仅仅是示例,并且步骤可以在不脱离实施例的范围的情况下被添加、组合、或修改。

以下示例根据一个实施例描述了图1的网络中的域间服务功能链接的实现方式。服务路径被定义为sfp={sf1,sf2,sf3,sf4}。由于服务功能的本质及其位置,数据包需要在两个管理域(as1、as2)之间来回移动。当sfp被实例化时,边界节点14被命令基于服务索引重写域id和服务路径id。例如,托管sf1的服务节点sn1被命令在将数据包处理为sfp的一部分之后在服务链上发送该数据包到边界1。边界1可以如下被编程:

边界1:

when{sfp-id=100}{

when{service_index=2}{

rewritenshheader;

setsfp-id=200;

setservice_index=3;

forwardtoborder2;

}

when{service_index=6){

setservice_index=7;

forwardtosn3;

}

when{service_index=8}{

rewritenshheader;

setsfp-id=200;

setservice_index=9;

forwardtoborder2;

}

边界2可以如下被编程:

when{sfp-id=200}{

when{service_index=3}{

setservice_index=4;

fowardtosn2;

}

when{service_index=5}{

rewritenshheader;

setsfp-id=100;

setservice_index=6;

forwardtoborder1;

}

when{service_index=9}{

setservice_index=10;

forwardtosn4;

}

图4示出了基于上述服务链和编程的数据包的处理。一旦在分类器12处接收到数据包,该分类器就对数据包进行分类并且将sfpid标识为100以待应用(图4中的步骤1)。分类器12将数据包转发到服务节点sn1。服务节点sn1接收具有sfpid=100和服务索引(si)=1的数据包(步骤2)。在由服务功能sf1处理后,服务节点sn1将si增加(incrsi++)到2并且将数据包转发到边界1。边界1用sfpid=200重写nsh,将si增加到3,并且将数据包转发到边界2(步骤3)。一旦接收到数据包,边界2就将si增加到4,并且将数据包转发到服务节点sn2(步骤4)。服务节点sn2接收具有sfpid=200和服务索引=4的数据包(步骤5)。在由服务功能sf2处理后,服务节点sn2将si增加到5,并且将数据包转发到边界2。然后,边界2用sfpid=100重写nsh报头,将si增加到6并且将数据包转发到边界1(步骤6)。一旦接收到数据包,边界1就将si增加到7,并且将数据包转发到服务节点sn3(步骤7)。服务节点sn3接收具有sfpid=100和服务索引=7的数据包(步骤8)。在由服务功能sf3处理后,服务节点sn3将si增加到8,并且将数据包转发到边界1。边界1用sfpid=200重写nsh报头,将si增加到9并且将数据包转发到边界2(步骤9)。之后,边界2然后将si增加到10,并且将数据包转发到服务节点sn4(步骤10)。服务节点sn4接收具有sfpid=200和服务索引=10的数据包(步骤11)。在由服务功能sf4处理之后,服务节点sn4解封装该数据包(例如,移除nsh),并且将数据包转发到出口节点16。

如上文所述,本文描述的实施例可以在包括两个以上管理域的网络中实现。图5示出了涉及三个自治系统(as1、as2、as3)的示例。在该示例中,每个as包括一个服务节点和一个服务功能。

一旦接收到数据包,分类器12就将数据包分类,并且将sfpid标识为100以待应用(图5中的步骤1)。分类器12将数据包转发到sn1。服务节点sn1接收具有sfpid=100和服务索引(si)=1的数据包(步骤2)。在由服务功能sf1处理后,服务节点sn1将si增加到2并且将数据包转发到边界1。边界1用sfpid=200重写nsh,将si增加到3并且将数据包转发到边界2(步骤3)。一旦接收到数据包,边界2就将si增加到4,并且将数据包发送到sn2(步骤4)。服务节点sn2接收具有sfpid=200和服务index=4的数据包(步骤5)。在由服务功能sf2处理后,服务节点sn2将si增加到5,并且将数据包发送到边界3。然后,边界3用sfpid=300重写nsh报头,将si增加到6并且将数据包转发到边界4(步骤6)。一旦接收到数据包,边界4就将si增加到7并且将数据包转发到服务节点sn3(步骤7)。服务节点sn3接收具有sfpid=300和服务索引=7的数据包(步骤8)。在由服务功能sf3处理之后,服务节点对数据包进行解封装(例如,移除nsh),并且将数据包转发到出口节点16。

如从上述内容可以看出,本文描述的实施例提供了许多优点。一个或多个实施例允许服务链在任意数量的管理域上延伸,并且以任何顺序传递到这些管理域中的任何部分而无需在域之间进行地址泄露,因而在域之间保留了隐私。此外,由于数据包在离开第一域时被修改,所以无需对第二域的入口节点进行分类。

尽管已经根据示出的实施例描述了方法和装置,但本领域普通技术人员将很容易认识到,在不脱离本发明的范围的情况下可以对实施例做出改变。因此,意在以上描述中所包含的和在附图中示出的所有内容应被理解为是说明性的而不是限制性的。

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