数据报文在传统网络中传递时,需要经过各种各样的业务节点,这样才能保证网络能够按照设计要求,提供给用户安全、快速、稳定的网络服务。
我们把网络流量按照业务逻辑所要求的既定的顺序,经过这些业务点(主要指安全设备如防火墙、负载均衡、第三方安全设备等)的形式称之为服务链(Service Chain)。服务链可以理解为一种业务形式。
传统网络的服务链在变更、扩容时,都需要改动网络拓扑,重新进行网络设备的配置。服务链和网络拓扑紧密耦合、部署复杂。
随着Overlay网络的发展,虚拟网络和物理网络得以分离,虚拟网络承载于物理网络之上,更加抽象;而SDN技术以及NFV(Network Functions Virtualization,网络功能虚拟化)的不断发展,也让数据中心的网络控制变得更加灵活,更具有扩展性。
在SDN Overlay数据中心环境中,借由SDN和NFV技术的优势,服务链得以长足发展。NFV技术提供安全业务点,SDN技术通过Overlay网络将数据报文引流至各个安全业务点。通过多跳服务链这样的形式,给数据中心网络提供必要的安全业务处理能力。
在SDN网络中,数据报文在各个节点之间都是通过Overlay封装后传输。如何在Overlay网络中标识服务链报文成为SDN服务链技术首先需要解决的问题。
目前Overlay技术应用最为广泛的协议为VXLAN协议。标识服务链报文的一种通用实现正是通过扩展VXLAN头来完成的。
图1 VXLAN头格式
如图1,VXLAN头的第2-4字节原本为保留字段,将其填充做为Service Path ID,记录服务链编号,用于唯一确定一条服务链。这种方式基于标准VXLAN协议实现,对硬件网络设备无依赖,仅需要更新支持VXLAN设备的软件即可。
当服务链接入点收到VXLAN报文后,将对VXLAN报文进行解封装,并根据VXLAN报文头中的Service Path ID字段在本地查找匹配的服务链。
NSH(Network Service Header,网络服务头)是专门为服务链设计的封装格式,并且在OpenDayLight的SFC项目中采用。其封装格式如下图所示:
图2 NSH封装格式
从图2可以看出,NSH对VXLAN报文进行了扩展,可以携带更多的业务信息,完成更复杂的业务处理;且扩展性更强,可以支持携带多个业务上下文信息;并且其带有Protocol Type字段,因此可以承载二层报文和三层报文,较为灵活。
NSH可以承载于VXLAN、GRE等多种Overlay封装中。但是,由于NSH对标准VXLAN封装做了进一步的扩展,这要求硬件网络设备的芯片升级支持。而新型芯片的推出和扩展并非易事,需要推动芯片相关的整个产业链的认同和需求,才有可能大规模生产。短期来看支持NSH的芯片尚无法大规模应用部署。
SDN服务链基于网络的核心控制部件SDN控制器来进行部署。SDN控制器根据租户需求来定义、创建服务链,并部署服务链上每个节点的业务逻辑。SDN控制器将需要进入服务链处理的用户报文特征下发到接入软件/硬件 VTEP设备,由VTEP设备根据相应报文特征将数据引入服务链。
SDN服务链一般具有如下角色:
流分类节点:原始数据报文的接入节点。按照定义的流分类规则匹配数据报文,对报文做服务链的Overlay封装,并将其转发到服务链中进行处理。
服务节点:服务节点做为资源被分配使用,它的物理位置可以是任意的、分散的,通过SDN控制器对服务链的定义和引流串联,完成预定义工作。服务节点可以是防火墙(Firewall)、负载均衡器(LoadBalance)、入侵检测(Intrusion Prevention System)等资源或资源池。
代理节点:对于不支持服务链封装的服务节点,需要通过代理节点剥离服务链封装,再转交给服务节点处理。
控制平面:负责管理服务链域内的设备以及创建服务链,并将服务节点的配置定义下发到相关节点上。在SDN网络中,一般通过SDN控制器来实现。
目前SDN服务链多采用扩展VXLAN头保留字段的方式来实现服务链功能。
如图3,为扩展VXLAN头实现方式下SDN服务链的转发流程:
:
图3 扩展VXLAN头方式的服务链转发流程
在图3中,仍旧有服务链的几种典型角色:
SDN控制器:做为网络资源池的唯一控制点,它控制了虚拟化网络,并且通过对虚拟网络进行抽象和编排,实现服务链特征定义。VTEP(流分类节点)和服务节点上的转发策略都由SDN控制器下发。
服务链流分类节点(VTEP1):原始报文通过VTEP1接入SDN网络,并由VTEP1进行流分类,以判断报文是否需要进入服务链。如果需要进入服务链,则为报文进行VXLAN封装和服务链ID填充,并根据转发策略转发到服务链首节点进行处理。
服务链首节点(SF1):服务链中对报文进行处理的首个服务节点。首节点对数据报文进行服务处理后,将数据报文继续做服务链封装并转发给服务链的下一个服务节点。
服务链尾节点(SF2):服务链中对报文进行处理的最后一个服务节点。尾节点对数据报文进行服务处理后,解除其服务链封装,并将报文做普通的VXLAN封装后,转发给目的VTEP。如果尾节点不具备用户报文寻址能力(即无法查找到用户报文需要转发到哪一台VTEP设备上),则需要将用户报文送到网关(VTEP3),由网关查找目的VTEP后再进行转发。
报文转发流程如下:
①⑥Native以太报文,IP(SRC)àIP(DST)
②VXLAN+服务链报文,外层IP头为IP(VTEP1)à IP(SF1)
③VXLAN+服务链报文,外层IP头为IP(SF1)à IP(SF2)
④VXLAN报文,外层IP头为IP(SF2)à IP(VTEP3)
⑤VXLAN报文,外层IP头为IP(VTEP3)à IP(VTEP4)
实际转发时,并非如此简单。首先,VM首包上送SDN控制器处理时,在控制器上解析Packet-in报文,根据报文目的地址确定是Overlay网络内的东西向流量还是通往传统网络的南北向流量。如果是南北向流量则将报文转发至网关,再由网关处理后续转发。如果是东西向流量,则需要从Packet-in报文中提取源IP等信息,并根据源IP确认源subnet、network、router等信息;同时根据报文目的IP确认目的subnet、network和router信息。
对于东西向流量,根据上一步提取确认的信息进行服务链匹配,如果能匹配控制器上已配置完成的某条服务链,则控制器会给流分类节点下发导流流表。如果未能匹配服务链,则下发东西向流量卸载流表项(即非服务链流量直接在VTEP之间转发)。
对于已查找到服务链的业务报文而言,控制器会确认服务链所在VTEP的VTEP IP,并向VTEP流分类节点和服务节点下发流表项,流表项的格式一般如下:
Ø Match:匹配port & vlan & 五元组的普通报文进入服务链或匹配tunnel & vni & 五元组的VXLAN报文进入服务链
Ø Action:vni & service chain id & order counter & tunnel,指向服务链首节点所在服务节点,其order counter = 1
当匹配到多条服务链时,按照最精确匹配的原则确认实际使用的服务链位置。匹配项的精度优先级从低到高依次为:routers、networks、subnets、ports
SDN服务链目前应用较为广泛的流分类节点主要有以下两类:
支持服务链特性的vSwitch:vSwitch收到虚拟机报文后,直接做流分类,在vSwitch上进行服务链Overlay封装。
硬件接入交换机:原始报文发送到硬件接入交换机后,由硬件交换机进行流分类,并进行服务链Overlay封装。
目前SDN服务链中,主要有三类设备可以作为服务节点,如下:
NFV设备做服务节点:支持VXLAN和服务链功能的NFV设备可以直接进行服务链Overlay报文的封装和解封装,担当服务节点提供安全业务处理能力。
硬件安全设备做服务节点:支持VXLAN和服务链功能的硬件安全设备也可以直接处理服务链Overlay报文,提供安全服务。
传统硬件安全设备做服务节点:不支持服务链等特性。通过外挂在服务链代理节点(能处理服务链Overlay报文的节点)做中转,实现服务链功能。
当使用支持Overlay服务链功能的设备做流分类节点和服务节点时,通过SDN控制器的集中控制和业务编排,可以较好地实现东西向和南北向服务链功能。服务链能够支持以虚拟端口、虚拟子网、虚拟网络、虚拟路由器以及IP地址等作为流量特征对用户报文进行流分类。服务链经过服务节点时先经过vFW再经过vLB。
灵活服务链模型可以直接在SDN控制器上部署。这种模型下,vFW和vLB单独作为资源池服务节点部署。其典型组网如下:
图4 灵活服务链模型
在OpenStack服务链模型下,网络管理员在OpenStack或基于OpenStack的云平台上配置安全服务,由SDN控制器配合实现安全服务功能。典型组网如下图:
图5 OpenStack服务链模型
传统的安全设备不支持VXLAN和服务链功能,SDN控制器可以通过服务链代理设备,将传统的甚至是各类厂商的安全设备引入服务链,从而共享SDN服务链技术,为用户提供多样化选择。
如图6所示,在服务链代理节点下挂了传统安全设备(Third Security1和Third Security 2),通过服务链代理节点封装和解封装Overlay服务链报文,使得在服务链功能正常实现的前提下,传统安全设备也能被用于服务链场景。
图6 第三方安全设备服务链代理模型
SDN服务链方案基于Overlay网络实现,能够做到控制平面与转发平面分离,物理网络与逻辑网络分离。同时,基于SDN控制器的配置,SDN网络可以动态地添加或者删除服务链上的服务节点,解耦了网络设备之间的关联,打破了物理拓扑的限制。基于租户的SDN部署模型,使得租户业务可以灵活编排和修改,而不会影响物理拓扑以及其他租户。同时,SDN服务链支持多种类型的流分类节点和服务节点,为用户提供了多样化选择。服务节点更是能够提供统一的资源池化管理,实现了安全能力的无缝扩容和多业务共享。