一种面向sdn的服务功能链构建方法

文档序号:9670864阅读:438来源:国知局
一种面向sdn的服务功能链构建方法
【技术领域】
[0001]本发明涉及SDN (Software Defined Network,软件定义网络)以及服务功能链领域,具体涉及一种服务功能块类的划分以及基于这种划分的服务功能块(ServiceFunct1n Block)描述方法。
【背景技术】
[0002]新型数据中心网络和网络云架构需要更为灵活的部署模式以支持各种各样的应用和相关的网络服务。这其中包括传统的网络服务比如防火墙、服务负载均衡器以及对网络数据进行操作的应用等等。而且,由于每个单独的租户是一个连接到数据中心的孤立的客户端组织,因此在多租户的背景下,这些服务在交付时必须满足所有租户的需求,同时,每个租户还有可能需要独特的能力,或者量身定制的服务特点。
[0003]过去也有服务功能链的概念,但传统网络的服务功能链和网络拓扑紧密耦合、部署复杂,在服务功能链变更、扩容时,都需要改动网络拓扑,重新进行网络设备的配置。而云计算环境广泛使用虚拟化技术,具有动态性、高流动性、规模易变化、多租户等特点,传统网络的服务功能链无法满足这些需求,SDN的出现让服务功能链又焕发了生机。因此,当前在谈及服务功能链时,默认指的是SDN服务功能链。目前对服务功能链的研究有很多,比较主流的有,基于源路由的实现,即在数据源,就决定好需要经过哪些服务节点,然后把这些服务节点的标识都封装在报文中,形成类似MPLS的叠加隧道封装。中间网络节点,根据报文的指定标识进行转发处理,该功能需要在路由中增加服务处理标识,服务节点在收到报文后,检查到有自己的服务标识后,进行服务处理。
[0004]现如今的网络服务部署模式是相对静态的,并且受限于插入和策略选择的拓扑架构。而且,在虚拟化的大环境下,他们还不适应灵活的策略环境。同时,传统的一些网络设备比如流量限制和负载均衡器的部署,都与网络拓扑紧密相关,而且需要根据报文路径来放置,这显然与虚拟网络所要求的与物理网络分离背道而驰。
[0005]在这样的前提下,产生了虚拟限速器和负载均衡器等新型中间件,这些中间件被部署在网络边缘,通常由标准服务器来实现。我们把这些虚拟防火墙/限速器/负载均衡器/网关等服务处理功能,称为Service Funct1n,即服务功能。而流量经过一系列的ServiceFunct1n 的处理,形成 Service Funct1n Chaining,即服务功能链。
[0006]从整体实现方式来看,目前对于服务功能链的研究可以分为增强网关、静态Service Chaining部署、动态Service Chaining部署三种实现方式。增强网关主要是考虑到所有的用户数据都需要汇聚到分组域网关,然后才能路由到Internet的特性,将数据流复杂处理功能及增值业务部署到网关上。华为提出的SBR (Service Based Routing,基于服务的路由)就属于此类。静态Service Chaining是将增值业务服务器及复杂流处理中间件部署在网关后面,采用串行方式进行处理。SFC via NSH就论述了一个使用网络服务头来构建一个完整的静态Service Chaining部署服务平台的方法。动态Service Chaining以一种Overlay的方式将Middle Box从路由拓扑中抽离出来,使得Middle Box的部署不再依赖拓扑而能够自由移动、插入或删除,同时采用虚拟化技术使得Middle Box根据流量弹性化地完成扩容缩容,而SDN技术结合策略控制根据不同维度不同粒度需求编排不同的Service Chaining 及 Service Chaining 路径。在这方面的研究有很多,《Formal Methodsfor Service Composit1n》中介绍了在生成服务功能链时的几个服务组合方法,指出了他们的弊端,并提出了自己的形式化方法。Cloud-based给出了一个在云虚拟平台上构建动态服务功能链的框架,为动态服务功能链提出了一个在流长度层面的性能优化方案,Steering则介绍了一个集中控制的控制器下发动态策略来控制用户以及流种类从而动态生成服务功能链的过程。目前为止设备制造商已经做出了服务功能链实例,比如前面提到的SBR以及爱立信公司介绍的一个基于SDN的,在0DL控制器下的一个动态服务功能链。
[0007]在当前网络中,诸如防火墙、过滤器、冲突检测系统、深度包检测、网络地址转换、内容缓存、负载均衡等网络应用,现在都是用一些中间件或者内部服务一一因为它们对端用户是透明的。中间件在大带宽的网络中是不可缺少的(固定的或者可以移动的),比如在企业网络中,还有最近出现在数据中心和云环境中。虽说这个话题近年来非常火热,但是对于中间件的摆放和管理迄今仍没有很好的解决方案。现有的研究中,从功能上来看,拥有流表的OpenFlow和利用LFB进行转发的ForCES都是服务功能链的实现方式之一。OpenFlow中,数据包通过对一条条流表的匹配最后执行相应动作,在ForCES中,数据包经过在组成特定功能的LFB拓扑,最终被决定是重定向、转发或是丢弃。流表和LFB都是服务功能的一种,其中OpenFlow流表应用的比较广泛,而ForCES的LFB则更加灵活。

【发明内容】

[0008]为了克服现有技术的不足,本发明提供了一种面向SDN的服务功能链构建方法。本发明提出了一个新的概念SFB (Service Funct1n Block,服务功能块),并提出了使用分类服务功能块和调度服务功能块来构建服务功能链的方法以及对上述两个服务功能块的建模。服务功能块相对于OpenFlow流表具有更高的描述能力,而对比于ForCES的LFB也具有更好的概括性,大大简化了服务功能的种类。
[0009]技术方案如下所述。
[0010]—种面向SDN的服务功能链构建方法,具体内容为,在SDN网络结构中,针对网络业务请求实现在网络节点部署网络服务功能块实例,包括以下步骤:
1-1)控制器根据用户提出的网络业务需求创建服务功能链,服务功能链由若干个服务功能首尾相接组成;
1-2)服务功能是由服务功能块支撑实现的,服务功能块分为两大类,分别为分类服务功能块类和调度服务功能块类;
1-3)网络节点向控制器上报该网络节点资源状况,包括有哪些可选的次要功能元素、元数据和调度算法;
1-4)控制器根据网络节点的资源状况和服务功能链信息设计服务功能实例链,服务功能实例链是由服务功能块首尾相接组成;
1-5)对于支持服务功能块的网络节点,控制器将服务功能实例链的描述直接下发到相关的网络节点并要求预留资源,对于支持OpenFlow的网络节点,控制器将服务功能实例链的描述转化为流表再下发; 1-6)网络节点部署服务功能实例链。
[0011]步骤1-2)所述的服务功能是由服务功能块支撑实现的,服务功能块分为两大类,分别为分类服务功能块类和调度服务功能块类:
2-1)服务功能块类中包含了该类中的服务功能块共同拥有的主功能元素;
2-2 )服务功能块中除了主功能元素值之外,还有输入输出端口、输入输出数据包、输入输出元数据、次功能元素值等;
2-3)分类服务功能块类的主要任务是对数据包根据元数据进行分类;
2-4)调度服务功能块类的主要任务是对数据包进行调度处理,如果有多个数据流都需要从同一端口出去的时候,那么就编排这些流的发送顺序和节奏。
【附图说明】
[0012]图1是本发明一个实施例中Η学院的网络现实拓扑;
图2是本发明一个实施例中根据Η学院业务需求构建的服务功能链;
图3是本发明一个实施例中根据Η学院业务需求构建的服务功能实例链。
【具体实施方式】
[0013]以下通过附图和【具体实施方式】对本发明做进一步的说明。
[0014]图1中所示Η学院需要建立一种面向SDN的服务功能链,因此需要针对网络业务请求实现在网络节点部署网络服务功能块实例,具体步骤如下:
1-1)控制器根据用户提出的网络业务需求创建服务功能链,服务功能链由若干个服务功能首尾相接组成;
1-2)服务功能是由服务功能块支撑实现的,服务功能块分为两大类,分别为分类服务功能块类和调度服务功能块类;
1-3)网络节点向控制器上报该网络节点资源状况,包括有哪些可选的次要功能元素、元数据和调度算法;
1-4)控制器根据网络节点的资源状况和服务功能链信息设计服务功能实例链,服务功能实例链是由服务功能块首尾相接组成;
1-5)对于支持服务功能块的网络节点,控制器将服务功能实例链的描述直接下发到相关的网络节点并要求预留资源,对于支持OpenFlow的网络节点,控制器将服务功能实例链的描述转化为流表再下发;
1-6)网络节点部署服务功能实例链。
[0015]图2和图3即为需要的构建服务功能链和服务功能实例链,它们分别由服务功能和服务功能块组成,服务功能是由服务功能块支撑实现的。服务功能块分为两大类,分别为分类服务功能块类和调度服务功能块类:
2-1)服务功能块类中包含了该类中的服务功能块共同拥有的主功能元素;
2-2 )服务功能块中除了主功能元素值之外,还有输入输出端口、输入输出数据包、输入输出元数据、次功能元素值等;
2-3)分类服务功能块类的主要任务是对数据包根据元数据进行分类;
2-4)调度服务功能块类的主要任务是对数据包进行调度处理,如果有多个数据流都需要从同一端口出去的时候,那么就编排这些流的发送顺序和节奏。
实施例
[0016]下面以A大学Η学院部署负载均衡数据中心和配置网络流量监控业务为例,对转发策略转换方法过程进行说明。
[0017]如图1所示,本实施例网络拓扑由1台核心交换机,2台SDN交换机S1和S2,5台服务器,和若干主机/终端设备组成。全网分为六个网段,网段1:网络研究所(10.20.4.0/24);网段 2:研究生实验室(10.20.5.0/24);网段3:云实验室(10.20.6.0/24);网段4:云实验室服务器组(10.20.7.0/24)。网段4中的4台服务器是用来运行云实验室操作系统的。网段5:审计服务器(10.20.8.0/24),可以根据管理员需要选择性地备份数据包,进行事后审计。网段6:数据服务器(10.20.9.0/24),这台数据服务器负责整个学院的数据存储。云实验室服务器组网段通过一台SDN交换机与学院主干网络连接,可实现云实验室流量的均衡分配。网段1-3通过一台SDN交换机实现互联,所有六个网段通过学院核心交换机与学院主干网络连通。
[0018]第一步,控制器根据用户提出的网络业务需求创建服务功能链,服务功能链由若干个服务功能首尾相接组成。本实施例的业务需求是:提高云平台的服务质量。根据此业务需求,控制器将建立一条服务功能链。该服务功能链中包含三种服务功能:“认证”、“流量管理”和“负载均衡”。
[0019]服务功能链中包含的三种服务功能描述具体如下:
(一)“认证”服务功能用于管理和授权上网人员,只有通过授权物理端口进来的流量才能访问网络信息。Η学院网络对网段1,网段2,网段3实行用户认证,备份访问数据服务器(10.20.9.1)的流量并将之发往审计服务器(10.20.8.1)进行审计,该服务功能可以减少“非法”流量,同时方便管理用户权限;
(二)“流量管理”服务功能在网段1和网段2访问数据服务器(10.20.9.1)的流量超过一定范围时对它们进行管理,流量过高时禁止连接到数据服务器,以此来确保运行云平台运行的安全和效率;
(三)“负载均衡”服务功能根据云实验室服务器的延时情况,将云实验室终端连接到延时最小的服务器上。
[0020]根据业务需求建立的服务功能链结构如图2所示。
[0021]第二步,服务功能是由服务功能块支撑实现的,服务功能块分为两大类,分别为分类服务功能块类和调度服务功能块类。具体方法为:
1、服务功能块类中包含了该类中的服务功能块共同拥有的主功能元素;
描述服务功能块类的模板:
〈SFBClassDef SFBClassID=〃...〃>
〈! 一服务功能块类的编号一>
〈name〉...〈/name〉
〈!一服务功能块类的名称一>
〈synopsis〉...</synopsis)
〈!一服务功能块类的简介一> 〈components〉
〈component access=,,...,, componentID=,,...?>
〈!一主功能元素编号以及主功能元素的提供的操作权限:可读可写、只读、清除读操作等一>
<name>...</name>
〈!一主功能元素名称一>
〈synopsis〉...</synopsis)
〈!一对主功能元素的简介一>
<typeRef>...</typeRef>
〈!一主功能元素的格式一>
</component)
</components)
〈/SFBClassDef〉
2、服务功能块中除了主功能元素值之外,还有输入输出端口、输入输出数据包、输入输出元数据、次功能元素值等;
描述服务功能块的t旲板:
〈SFBInstanceDef InstanceID=〃…〃> <!—服务功能块的编号一>
<name> …</name>
〈! 一服务功能块的名称一〉
〈synopsis〉…</synopsis)
〈!一服务功能块的简介一>
〈vers1n〉...〈/vers1n〉
〈!一服务功能块的版本一>
〈ClassID〉…〈/ClassID〉
〈! 一服务功能块所属类的编号一〉
<inputPorts>
<inputPort>
〈name〉...〈/name〉
〈!一输入端口名称一>
<ID>…</ID>
〈!一输入端口 ID—>
〈synopsis〉...</synopsis)
<!—输入端口简介一>
〈expectat1n〉
<frameExpected>
<ref>...</ref>
<!—输入包的参考格式一>
</frameExpected>
<metadataExpected><ref>...</ref>
〈!一输入元数据的参考格式一>
</metadataExpected>
</expectat1n)
</inputPort>
</inputPorts>
<outputPorts>
<outputPort>
〈name〉...〈/name〉
〈!一输出端口名称一>
<ID>…</ID>
〈!一输出端口编号一>
〈synopsis〉...</synopsis)
〈!一输出端口简介一>
〈product〉
〈nextInstanceID>...〈/nextInstanceID>
〈丨—下个实例id-->
<nextPortID>...〈/nextPortID >
<!—下个物理端口 ID—>
<frameProduced>
<ref>...</ref>
<!一输出包的参考格式一>
</frameProduced>
<metadataProduced>
<ref>...</ref>
<!一输出兀数据的参考格式一>
</metadataProduced>
〈/product〉
<nextInstanceID>..</nextInstanceID>
〈!--下一个服务功能块的编号一>
</outputPort>
</outputPorts>
<componentValues>
〈componentValue componentID=//...〃>...</componentValue>
〈!一服务功能块元素的值一>
</componentValues>
〈/SFBInstanceDef〉
3、分类服务功能块类的主要任务是对数据包根据元数据进行分类,具体描述为:〈SFBClassDef SFBClassID="l">〈components〉
〈component access=〃read_write〃 componentID=〃l〃>
<name>adminS
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1