Service Function Chaining是目前正在研究和標準化的一種網絡技術。自從數據中心網絡向Overlay網絡發展以后,網絡邊緣成為了虛擬網絡與物理網絡的分界點,其中網絡邊緣為Server或者ToR,以及可能為Gateway。
虛擬網絡與物理網絡的分離,讓數據中心網絡變得更加靈活,更具有可擴展性。而對虛擬網絡的控制,也僅僅需要集中在網絡邊緣即可。
然而Overlay技術并沒有解決所有問題,數據中心中還有很多Middleware,如防火墻/負載均衡器等,這些設備都是基于用戶業務來處理的,如果通過隧道而穿越這些設備,顯然是不行的。特別是在VM遷移時,防火墻里面的基于Flow的Status其實并沒有遷移,難道也要進行防火墻的遷移嗎?同時,傳統的防火墻/負載均衡器的部署,都是與網絡拓撲緊密相關,需要根據報文路徑來放置防火墻/負載均衡器,這顯然與虛擬網絡所要求的:decoupling from the physical network, 即與物理網絡分離,所背道而馳的。
于是產生了虛擬防火墻/負載均衡器等新型中間件,這些虛擬防火墻/負載均衡器,部署在網絡的邊緣,可以由標準服務器來實現。如下圖所示(PE為支持VPN的網關節點):
這種部署模型,要求虛擬防火墻/負載均衡器可以在網絡中任意部署,也就是與網絡拓撲無關,即Topology Independent。從而,新問題是,如果將流量能夠靈活的通過虛擬防火墻/負載均衡器進行處理?
我們把虛擬防火墻/負載均衡器/網關等業務處理功能,稱為Service Function,而流量經過一系列的Service Function的處理,形成Service Function Chaining,即業務功能鏈。如下圖紅色/紫色所示,代表兩條Service Chain。
在這樣一個虛擬網絡中,如何能夠將流量靈活的調配到某個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年可能會包含該技術。