Service Function Chaining是目前正在研究和标准化的一种网络技术。自从数据中心网络向Overlay网络发展以后,网络边缘成为了虚拟网络与物理网络的分界点,其中网络边缘为Server或者ToR,以及可能为Gateway。
虚拟网络与物理网络的分离,让数据中心网络变得更加灵活,更具有可扩展性。而对虚拟网络的控制,也仅仅需要集中在网络边缘即可。
然而Overlay技术并没有解决所有问题,数据中心中还有很多Middleware,如防火墙/负载均衡器等,这些设备都是基于用户业务来处理的,如果通过隧道而穿越这些设备,显然是不行的。特别是在VM迁移时,防火墙里面的基于Flow的Status其实并没有迁移,难道也要进行防火墙的迁移吗?同时,传统的防火墙/负载均衡器的部署,都是与网络拓扑紧密相关,需要根据报文路径来放置防火墙/负载均衡器,这显然与虚拟网络所要求的:decoupling from the physical network, 即与物理网络分离,所背道而驰的。
于是产生了虚拟防火墙/负载均衡器等新型中间件,这些虚拟防火墙/负载均衡器,部署在网络的边缘,可以由标准服务器来实现。
这种部署模型,要求虚拟防火墙/负载均衡器可以在网络中任意部署,也就是与网络拓扑无关,即Topology Independent。从而,新问题是,如果将流量能够灵活的通过虚拟防火墙/负载均衡器进行处理?
我们把虚拟防火墙/负载均衡器/网关等业务处理功能,称为Service Function,而流量经过一系列的Service Function的处理,形成Service Function Chaining,即业务功能链。
在这样一个虚拟网络中,如何能够将流量灵活的调配到某个Service Function进行处理,形成Service Function Chaining,正是目前SFC所需要解决的问题。当然SFC不仅仅解决了上述的问题,还能带来很多好处,如提高可靠性/提高安全性/业务处理可见性/容易进行对称流量处理等。
SFC的框架,基本可以分为如下组件:
1. Service Overlay,即各个网络边缘节点需要通信的Overlay技术
2. Generic Service Control Plane (GSCP),就是形成Service Function Chain的控制器
3. Service Classification,即需要进行流识别,然后特定的流,进行特定的Service Function Chain处理
4. Dataplane Metadata,这是一大特点,Metadata允许各个边缘业务处理节点,能够互相交换信息,达到某种业务处理目的。这和ASIC处理里面的Metadata,具有类似功能。
目前实现SFC有一些技术方案,如基于源路由实现,即在数据源,就决定好需要经过哪些业务节点,然后把这些业务节点的标识都封装在报文中,形成类似MPLS的叠加隧道封装。中间网络节点,根据报文的指定标识进行转发处理。这类似于RSVP-TE的显示路由,只是需要在显示路由中,增加业务处理标识,业务节点在收到报文后,发现有自己的业务标识,这需要进行相应的业务处理,如防火墙/负载均衡等处理。这个技术,目前有一个很好听的名字,叫SPRING。但是SPRING有其他很多应用场景,SFC仅仅是其一方面。
还有一种SFC的技术方案,是对MP-BGP进行扩展,定义新的NLRI来改变传统的路由下一跳行为,待下次详细阐述。
Metadata的定义,目前在IETF提了一种类似伪线控制字的定义方式(draft-guichard-sfc-mpls-metadata),一看就知道是Stewart提的,只有他最熟悉了。
上述新技术都非常有趣,对数据中心的影响不言而喻。相信在2014年就能看到相关的产品,如本微博前面所说,Cisco的ACI在2014年可能会包含该技术。