今天主要讓大家了解下下ODL 中SFC的實(shí)現(xiàn),以下如有描述不準(zhǔn)確的地方請(qǐng)指正。
1 基本概念本架構(gòu)參考ODL SFC項(xiàng)目,其已經(jīng)合并到OPNFV的Brahmaputra平臺(tái)
1.1 Service FunctionsSF提供特定的網(wǎng)絡(luò)服務(wù),例如Firewall,NAT,QoS,DPI等。在OPNFV中,SF指提供虛擬網(wǎng)絡(luò)功能的設(shè)備。
1.2 Service Function ForwardersSFF是Service Chaining的核心組件,在OPNFV中,他是一個(gè)OVS bridge,在每個(gè)compute節(jié)點(diǎn)上都有一個(gè)br-int橋作為SFF。SFF的職責(zé)是引導(dǎo)Traffic到SF或是下一個(gè)compute節(jié)點(diǎn),可以通過(guò)SDN控制器例如ODL對(duì)SFF進(jìn)行編程。
1.3 Service Chains在ODL的SFC項(xiàng)目中,Service Chains由如下組件構(gòu)成:
SFC:Service Chain Function由多個(gè)有順序的SF組成SFP:Service ChainPath一個(gè)SFC的實(shí)例。RSP:Rendered Service Path是實(shí)際Service Chain的實(shí)現(xiàn)。通過(guò)SFP和SFC來(lái)創(chuàng)建一個(gè)Service Chain。如果SFP沒(méi)有提供SF的實(shí)例,那么根據(jù)SFs算法選擇一個(gè),當(dāng)創(chuàng)建完RSP后,ODL將OpenFlow流表下發(fā)到SF上。1.4 ClassifiersClassifier是進(jìn)入Service Chain的第一個(gè)點(diǎn),Classifier映射Traffic進(jìn)入Service Chain,并將Traffic封裝到VXLAN-GPE-NSH tunnel中。可以通過(guò)Matching來(lái)實(shí)現(xiàn)Classifier,例如簡(jiǎn)單的如ACL,復(fù)雜的如PCRF,DPI等。
2 Service Chaining EncapsulationSFC的實(shí)現(xiàn)依賴于VXLAN-GPE-NSH協(xié)議的支持,下邊我們分別講解下NSH和VXLAN-GPE
2.1 為什么需要NSH如果沒(méi)有NSH,Service Chain會(huì)遇到如下問(wèn)題:
1.當(dāng)前的Chian的實(shí)現(xiàn),都是基于VLAN或是Routing的靜態(tài)配置的。
2.在Service chain形成之后,數(shù)據(jù)業(yè)務(wù)的路徑和網(wǎng)絡(luò)的拓?fù)涠疾荒軇?dòng)態(tài)的修改
3.不能動(dòng)態(tài)的插入新的業(yè)務(wù)到Chian中
4.不能提供端到端的可視化,OAM,trouble shooting和性能管理
5.SF之間彼此獨(dú)立,不能共享Path和Metadata信息
通過(guò)NSH,Traffic可以很容易的穿過(guò)Service Chain。如果沒(méi)有NSH封裝,那么在Traffic經(jīng)過(guò)的每個(gè)SF上都需要對(duì)流量進(jìn)行分類識(shí)別,不僅影響性能,而且不利于擴(kuò)展。在NSH header中值得關(guān)注兩個(gè)字段:
1)NSP(NSH Path):業(yè)務(wù)Path ID,可以給每個(gè)業(yè)務(wù)分配一個(gè)NSP,SF根據(jù)NSP對(duì)Traffic進(jìn)行處理。2)NSI(NSH Index):NSI指報(bào)文在Service Chain中的跳數(shù),初始值為255,每經(jīng)過(guò)一個(gè)SF,減一,如果NSI減到0,則丟棄此包,避免產(chǎn)生環(huán)路,類似IP報(bào)文中的TTL。2.2 VXLAN-GPE在ODL SFC中NSH被封裝在VXLAN-GPE(VXLAN Generic Protocol Extension)報(bào)文中,VXLAN-GPE-NSH報(bào)文封裝格式如下:
VXLAN-GPE特點(diǎn):
1.支持對(duì)多種協(xié)議的封裝,包括IPv4,IPv6,NSH,Ethernet,標(biāo)準(zhǔn)VxLAN僅支持Ethernet報(bào)文
2.協(xié)議類型字段(P-bit)
3.In-Band OAM flag(O-bit)
4.新增Version字段
5.低8bit用于協(xié)議類型,高8bit預(yù)留
6.為VXLAN-GPE分配新的UDP端口
其頭部如下所示:
VXLAN-GPE HeaderVxLAN-GPE與VxLAN的區(qū)別:
1.VXLAN-GPE可以轉(zhuǎn)發(fā)VXLAN的包,因?yàn)閂XLAN承載的是Ethernet報(bào)文,其VxLAN-GPE的UDP端口號(hào)與VxLAN相同
2.VXLAN不能轉(zhuǎn)發(fā)VXLAN-GPE的包
3.在VxLAN與VxLAN-GPE共存的環(huán)境中,VxLAN-GPE需要使用新的UDP端口
4.VxLAN-GPE通過(guò)NSH攜帶Metadata信息,而VxLAN不支持NSH
在OPNFV SFC項(xiàng)目中,需要VNF Manager對(duì)SF的VM進(jìn)行生命周期的管理,這里選擇Openstack的Tacker對(duì)VNF進(jìn)行管理。Tacker接收ODL SFC的配置,管理SF VMs,并且轉(zhuǎn)發(fā)此配置到ODL SFC中,時(shí)序圖如下:
3.1 TackerTacker是Openstack的官方項(xiàng)目,提供 ETSI MANO架構(gòu)中的 VNF Manager和NFVO功能。Tacker架構(gòu)如下:
VNFM功能:
1.VNF基本生命周期管理,包括創(chuàng)建,刪除,更新
2.VNF的健康檢查,提供ping,http等各種方法監(jiān)控VM,業(yè)務(wù)是否正常
3.提供VNF的auto scaling功能
4.實(shí)現(xiàn)VNF初始化配置
NFVO功能:
1.通過(guò)模板(TOSCA&HEAT)提供VNF端到端的部署
2.支持SFC,Tacker負(fù)責(zé)提供SFC Driver,ODL SFC或是Neutron負(fù)責(zé)功能實(shí)現(xiàn)。
3.VIM資源的調(diào)度,檢查和分配。
4.可以管理多個(gè)VIM和Sites。
5.支持物理NF(Network Function)和虛擬NF
此圖為ODL實(shí)現(xiàn)SFC功能的架構(gòu),除了控制器方案,還可以通過(guò)Neutron來(lái)實(shí)現(xiàn)SFC。
下圖為OPNFV Brahmaputra平臺(tái)的SFC的網(wǎng)絡(luò)拓?fù)洌?/p> 5 OVS NSH patch workaround
ODL使用NSH-VXLAN-GPE封裝實(shí)現(xiàn)SFC,VXLAN在SF VM中終結(jié),這點(diǎn)是很重要的,這樣SF可以看到NSH Header,處理NSI和NSH Metadata。而在Openstack中,VXLAN終結(jié)在OVS Bridge上,不是在VM里。當(dāng)前OVS的版本(2.5)還不支持NSH頭,但是社區(qū)通過(guò)一個(gè)私有分支提供了NSH初始版本。當(dāng)前VXLAN的封裝/解封裝通過(guò)VTEP實(shí)現(xiàn)的,而OVS希望通過(guò)FLOW實(shí)現(xiàn)。
下圖為報(bào)文發(fā)送到SF的流程:
1.通過(guò)GBP(Group Based Policy)將Client報(bào)文redirect到Ingress Classifier
2.Classifier對(duì)報(bào)文進(jìn)行識(shí)別分類,分配NS,進(jìn)行VXLAN-NSH封裝,然后發(fā)送的SFF
3.SFF解封裝VXLAN報(bào)文,如果需要發(fā)送到SF,則通過(guò)VTEP發(fā)送到Linux Kernel
4.VTEP對(duì)報(bào)文進(jìn)行第二次的VXLAN-NSH的封裝.
5.封裝完成之后,查詢Linux Kernel Route表,從TAP口發(fā)送回SFF。
6.在SFF中,報(bào)文根據(jù)VXLAN匹配要去的SF,然后將報(bào)文上送給SF
7.從TAP口將VXLAN-NSH報(bào)文上送給SF。
下圖為從SF發(fā)送到SFF的流程:
1.SF將封裝好的VXLAN-NSH報(bào)文發(fā)給SFF
2.SFF根據(jù)入端口和VXLAN匹配此報(bào)文,交給Linux Kernel處理
3.報(bào)文查詢路由通過(guò)VTEP口返回SFF
4.VTEP解封裝VXLAN-NSH
5.SFF繼續(xù)下一步處理,將報(bào)文交給下一個(gè)SF,或是從Egress Classfier出去。