劉正印,葛敬國(guó),李 佟,韓春靜,吳嘉磊
1(中國(guó)科學(xué)院大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,北京 100093)
2(中國(guó)科學(xué)院 信息工程研究所,北京 100093)
3(南京理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,南京 210094)
服務(wù)功能在部署時(shí),功能與專(zhuān)屬硬件緊密耦合,每個(gè)功能都嵌入在特定的硬件設(shè)備中,導(dǎo)致運(yùn)營(yíng)成本不斷提高,網(wǎng)絡(luò)靈活性變差,服務(wù)部署十分困難[1].為此,IETF提出一種服務(wù)功能鏈(Service Function Chain,SFC)架構(gòu)來(lái)解決服務(wù)功能在部署過(guò)程中拓?fù)洫?dú)立性和配置復(fù)雜性等問(wèn)題[2].NSH以一種報(bào)頭的格式被添加到網(wǎng)絡(luò)流量中,用于支持服務(wù)功能鏈架構(gòu)的實(shí)現(xiàn)[3].
當(dāng)前,利用軟件定義網(wǎng)絡(luò)[4](Software Defined Network,SDN)和網(wǎng)絡(luò)功能虛擬化(Network Function Virtualization,NFV)技術(shù)實(shí)現(xiàn)服務(wù)功能鏈已經(jīng)成為了研究熱點(diǎn).SDN和NFV技術(shù)高度互補(bǔ),彼此互利但并不相互依賴(lài).SDN被視為一種全新的網(wǎng)絡(luò)技術(shù),通過(guò)分離網(wǎng)絡(luò)設(shè)備的控制平面與數(shù)據(jù)平面,將網(wǎng)絡(luò)能力抽象為應(yīng)用程序接口提供給應(yīng)用層,從而構(gòu)建開(kāi)放可編程的網(wǎng)絡(luò)環(huán)境,在對(duì)底層各種網(wǎng)絡(luò)資源虛擬化的基礎(chǔ)上,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的集中控制和管理.NFV利用IT虛擬化技術(shù)定義網(wǎng)絡(luò)功能,通過(guò)通用硬件以及虛擬化技術(shù),來(lái)承載相關(guān)網(wǎng)絡(luò)功能,從而降低網(wǎng)絡(luò)成本并提升業(yè)務(wù)開(kāi)發(fā)部署能力,將硬件和軟件解耦,使網(wǎng)絡(luò)功能不再依賴(lài)于專(zhuān)用硬件.
到目前為止,SFC已經(jīng)在多個(gè)平臺(tái)上實(shí)現(xiàn),包括OpenDaylight(ODL)[5],ONOS[6]和 OpenStack Networking[7].其中,只有 ODL 平臺(tái)完全采用 IETF SFC架構(gòu),包括所有核心組件、NSH協(xié)議等.ODL平臺(tái)通過(guò)對(duì)OpenFlow協(xié)議的私有擴(kuò)展實(shí)現(xiàn)了NSH協(xié)議,然而,這種實(shí)現(xiàn)方式造成了OpenFlow的兼容性問(wèn)題.由于 ODL平臺(tái)中OpenVSwitch(OVS)交換機(jī)[8]通過(guò)OpenFlow協(xié)議與控制器通信,因此,OVS交換機(jī)需要修改自身代碼以實(shí)現(xiàn)NSH協(xié)議,實(shí)現(xiàn)過(guò)程復(fù)雜.OVS交換機(jī)首先對(duì)L2或L3層的數(shù)據(jù)包添加NSH,然后利用現(xiàn)有封裝協(xié)議,如MPLS、VXLAN/VXLANGPE在L3或L4層對(duì)數(shù)據(jù)包再次封裝.利用現(xiàn)有協(xié)議封裝、轉(zhuǎn)發(fā)NSH報(bào)文,增加了不必要的報(bào)文處理過(guò)程,導(dǎo)致網(wǎng)絡(luò)傳輸效率降低.
POF協(xié)議是對(duì)SDN南向接口協(xié)議OpenFlow的擴(kuò)展,其提供了SDN控制器直接指定規(guī)則匹配字段和指令操作字段的偏移量和長(zhǎng)度的能力,定義了字段修改、插入、刪除等指令集用于對(duì)報(bào)文進(jìn)行各種操作,從而實(shí)現(xiàn)了數(shù)據(jù)平面的深度可編程,更加有效地支持新協(xié)議的實(shí)現(xiàn).
本文根據(jù)IETF提出的有關(guān)服務(wù)功能鏈的標(biāo)準(zhǔn),提出了一種基于協(xié)議無(wú)感知轉(zhuǎn)發(fā)的服務(wù)功能鏈,該服務(wù)功能鏈主要是基于SDN和NFV技術(shù),基于Floodlight開(kāi)源控制器,利用POF協(xié)議數(shù)據(jù)平面深度可編程的能力,提供了對(duì)NSH協(xié)議的支持,從而構(gòu)建了服務(wù)功能鏈.實(shí)驗(yàn)結(jié)果表明,該架構(gòu)有效地實(shí)現(xiàn)了服務(wù)功能的部署.
本文其余小節(jié)組織如下:第1節(jié)介紹服務(wù)功能鏈的相關(guān)背景;第2節(jié)提出基于SDN和NFV技術(shù)的服務(wù)功能鏈的架構(gòu)設(shè)計(jì);第3節(jié)中,詳細(xì)介紹該服務(wù)功能鏈架構(gòu)的實(shí)現(xiàn)過(guò)程;第4節(jié),通過(guò)設(shè)計(jì)實(shí)驗(yàn)并驗(yàn)證了該架構(gòu)的可行性和系統(tǒng)性能.最后,對(duì)下一步工作進(jìn)行相關(guān)介紹.
SFC是指定義和實(shí)例化一組有序的服務(wù)功能,例如防火墻、深度報(bào)文檢測(cè)系統(tǒng)等,通過(guò)控制網(wǎng)絡(luò)流量的處理順序,高效靈活地為用戶(hù)提供所需的服務(wù)[2].
IETF對(duì)服務(wù)功能鏈進(jìn)行了標(biāo)準(zhǔn)化定義,對(duì)架構(gòu)框架、使用場(chǎng)景、路由轉(zhuǎn)發(fā)和報(bào)文格式等進(jìn)行了詳細(xì)闡述[2].圖 1展示了 IETF 提出的 SFC 架構(gòu),其包括 4個(gè)核心組件:分類(lèi)器(Classifier)、服務(wù)功能轉(zhuǎn)發(fā)器(SFF)、服務(wù)功能(SF)和 SFC 代理(SFC Proxy).當(dāng)數(shù)據(jù)包進(jìn)入到一個(gè)支持SFC報(bào)文的網(wǎng)絡(luò)區(qū)域即SFCEnabled Domain 中后,Classifier根據(jù)匹配策略匹配數(shù)據(jù)包,將其分配到不同的SFC中;SFF根據(jù)SFC報(bào)文中攜帶的信息將數(shù)據(jù)包轉(zhuǎn)發(fā)到一個(gè)或多個(gè)SF中,并且處理從SF返回的數(shù)據(jù)包;SF負(fù)責(zé)對(duì)收到的數(shù)據(jù)包做特定功能的處理,SF在具體實(shí)現(xiàn)的上可以是一個(gè)虛擬的元素,或者是嵌入在具體網(wǎng)絡(luò)設(shè)備上的某種功能,如防火墻,深度報(bào)文檢測(cè)系統(tǒng)等;對(duì)于不能識(shí)別SFC報(bào)文的設(shè)備,可以使用SFC代理.
圖1 SFC 邏輯組件
在服務(wù)功能鏈中,服務(wù)功能路徑(Service Function Path,SFP)是指數(shù)據(jù)包必須按照指定順序轉(zhuǎn)發(fā)的限制規(guī)范,而數(shù)據(jù)包在網(wǎng)絡(luò)中實(shí)際訪(fǎng)問(wèn)SFF和SF的順序稱(chēng)為呈現(xiàn)服務(wù)路徑(Rendered Service Path,RSP).從 SFP到RSP,是一個(gè)從抽象定義到具體實(shí)現(xiàn)的逐步細(xì)化的過(guò)程.
為引導(dǎo)網(wǎng)絡(luò)流量在服務(wù)功能鏈的各個(gè)邏輯組件中正確傳遞,解決SF之間信息交互,拓?fù)洫?dú)立性等問(wèn)題,IETF提出了用于創(chuàng)建動(dòng)態(tài)服務(wù)功能鏈的NSH協(xié)議.通常,數(shù)據(jù)包在網(wǎng)絡(luò)入口處被添加NSH,數(shù)據(jù)平面根據(jù)NSH報(bào)文完成服務(wù)流量的控制和轉(zhuǎn)發(fā).如圖2所示,一個(gè)NSH包含3部分:四個(gè)字節(jié)的基本報(bào)頭、四個(gè)字節(jié)的服務(wù)路徑信息和上下文信息(固定長(zhǎng)度和可變長(zhǎng)度兩種).其中,四個(gè)字節(jié)的基本報(bào)頭提供有關(guān)NSH報(bào)文本身的信息以及有效負(fù)載的信息;服務(wù)路徑信息主要是提供服務(wù)路徑中的路徑標(biāo)識(shí)和位置;上下文信息用來(lái)攜帶元數(shù)據(jù)(metadata).
圖2 NSH 報(bào)文
在IETF關(guān)于服務(wù)功能鏈的RFC文檔中提出了服務(wù)功能鏈架構(gòu)的實(shí)現(xiàn)原則,其中包括拓?fù)洫?dú)立性、平面分離、數(shù)據(jù)包分類(lèi)和共享元數(shù)據(jù)等[2].本文基于SDN和NFV技術(shù),將服務(wù)功能鏈的系統(tǒng)架構(gòu)分為控制平面和數(shù)據(jù)平面(圖3).控制平面通過(guò)北向接口獲取用戶(hù)對(duì)于服務(wù)功能鏈的描述,生成相應(yīng)的策略和流表信息,通過(guò)控制平面和數(shù)據(jù)平面間的南向接口傳遞到數(shù)據(jù)平面,數(shù)據(jù)平面根據(jù)控制平面下發(fā)的策略和流表,將各個(gè)邏輯組件實(shí)例化,并使數(shù)據(jù)包按照指定的順序經(jīng)過(guò)各個(gè)SF,實(shí)現(xiàn)用戶(hù)所需的服務(wù).
控制平面主要功能包括:(1)提供北向接口,接收用戶(hù)對(duì)于服務(wù)功能鏈的描述信息;(2)管理底層網(wǎng)絡(luò)基礎(chǔ)設(shè)施、鏈路狀態(tài)、拓?fù)浣Y(jié)構(gòu);(3)負(fù)責(zé)資源的統(tǒng)一分配,各個(gè)邏輯組件的創(chuàng)建和生命周期的管理;(4)管理SFC的相關(guān)信息,初始化各個(gè)監(jiān)聽(tīng)服務(wù),持久化相關(guān)信息;(5)構(gòu)建 SFP,生成相關(guān)策略和流表;(6)提供南向接口與數(shù)據(jù)平面進(jìn)行信息傳遞.控制平面通過(guò)北向接口,獲取到用戶(hù)對(duì)于服務(wù)功能鏈的描述,資源管理模塊根據(jù)描述分配相應(yīng)的計(jì)算和網(wǎng)絡(luò)資源,SFP路徑規(guī)劃模塊根據(jù)服務(wù)功能鏈的描述和資源管理模塊資源分配結(jié)果,利用Floodlight控制器中原有的對(duì)底層網(wǎng)絡(luò)拓?fù)涔芾淼哪K,初始化SFP,NSH流表生成模塊根據(jù)實(shí)例化的結(jié)果,生成相應(yīng)的流表,通過(guò)控制平面和數(shù)據(jù)平面之間的南向接口下發(fā)至數(shù)據(jù)平面,控制平面的數(shù)據(jù)庫(kù)模塊對(duì)SFC的相關(guān)信息做持久化工作.
圖3 SFC 架構(gòu)
當(dāng)數(shù)據(jù)包進(jìn)入數(shù)據(jù)平面的SFC-Enabled Domain時(shí),入口處Classifier根據(jù)控制平面下發(fā)的流表決定哪些包能夠進(jìn)入SFC-Enabled Domain,并根據(jù)下發(fā)的匹配規(guī)則為這些數(shù)據(jù)包添加不同的NSH,轉(zhuǎn)發(fā)至相應(yīng)的SFF中.SFF會(huì)根據(jù)NSH報(bào)文中服務(wù)路徑標(biāo)識(shí)(Service Path Identifier,SPI)和服務(wù)序號(hào)(Service Index,SI)確定下一跳地址,其中,SPI是 SFP 的唯一標(biāo)識(shí),SI表示SF在SFP中的位置.當(dāng)SF不能識(shí)別NSH時(shí),SFF會(huì)將數(shù)據(jù)包發(fā)送給相應(yīng)的SFC Proxy進(jìn)行處理.
根據(jù)系統(tǒng)的架構(gòu)設(shè)計(jì),將系統(tǒng)實(shí)現(xiàn)分為了控制平面和數(shù)據(jù)平面的實(shí)現(xiàn)兩個(gè)部分.控制平面采用Floodlight開(kāi)源控制器,Floodlight不僅是一款SDN控制器,它也包含一系列模塊化應(yīng)用,而這些應(yīng)用可以向上提供REST API,從而幫助應(yīng)用層的應(yīng)用更好地管控整個(gè)網(wǎng)絡(luò).POF交換機(jī)協(xié)議無(wú)感知轉(zhuǎn)發(fā)的特點(diǎn),有效的支持了NSH協(xié)議在數(shù)據(jù)平面的實(shí)現(xiàn),Classifier和SFF等網(wǎng)絡(luò)功能組件是基于POF交換機(jī)開(kāi)發(fā)完成的.由于控制器主要通過(guò)流表的形式對(duì)POF交換機(jī)進(jìn)行管理,因此,流表生成模塊的構(gòu)建在控制器中十分關(guān)鍵.
SFC控制平面主要是基于Floodlight控制器實(shí)現(xiàn)的,用戶(hù)可以通過(guò)控制器提供的北向接口使用SFC的功能,可以創(chuàng)建、更新或者刪除SFC,自定義非透明的metadata數(shù)據(jù)字段用來(lái)實(shí)現(xiàn)SF間的數(shù)據(jù)共享,Floodlight控制器還可以對(duì)底層網(wǎng)絡(luò)抽象,獲取網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu).
Floodlight控制器提供了一個(gè)模塊加載系統(tǒng),可以方便的利用IOFMessageListener和IFloodlightModule這兩個(gè)接口進(jìn)行功能擴(kuò)展[9].通過(guò)實(shí)現(xiàn)IFloodlightModule接口,我們?cè)黾恿薔SH流表生成模塊,將用戶(hù)對(duì)于服務(wù)功能鏈的路徑描述信息,通過(guò)流表的形式下發(fā)至數(shù)據(jù)平面,數(shù)據(jù)平面的POF交換機(jī)根據(jù)流表信息對(duì)報(bào)文添加不同的NSH,實(shí)現(xiàn)數(shù)據(jù)包在數(shù)據(jù)平面的傳遞.為了實(shí)現(xiàn)SFC邏輯組件的自動(dòng)化部署和管理,利用python語(yǔ)言編寫(xiě)了資源管理模塊.由于SFC的生成是根據(jù)用戶(hù)的需求來(lái)定義的,因此我們采用了JSON類(lèi)型的接口格式,通過(guò)JSON接口,控制平面可以接收來(lái)自用戶(hù)層面的SFC需求描述.另外,控制器中還定義了與多個(gè)與SFC相關(guān)的數(shù)據(jù)結(jié)構(gòu),例如NSH報(bào)文信息等.
服務(wù)功能鏈各個(gè)邏輯組件對(duì)數(shù)據(jù)包的處理模式可以歸結(jié)為match-action的處理過(guò)程,即通過(guò)匹配數(shù)據(jù)包中的某個(gè)字段,匹配成功后則用action進(jìn)行處理,如Classifier匹配到目的地址A的數(shù)據(jù)包,則封裝NSH并轉(zhuǎn)發(fā).因此,流表的設(shè)計(jì)主要是對(duì)match-action策略的設(shè)定.
由于服務(wù)功能鏈中不同的邏輯組件實(shí)現(xiàn)的功能不同,因此下發(fā)的流表也不一樣.Classifier需要提供對(duì)數(shù)據(jù)包的識(shí)別、封裝和轉(zhuǎn)發(fā)等功能.本文中Classifier支持對(duì)數(shù)據(jù)包中五元組(目的IP、源IP、目的端口號(hào)、源端口號(hào)和協(xié)議)的識(shí)別,由于POF交換機(jī)一次性執(zhí)行的指令數(shù)量的限制,無(wú)法一次性完成五元組的識(shí)別和匹配功能,需要利用多個(gè)流表對(duì)同一數(shù)據(jù)包進(jìn)行處理,每個(gè)流表處理后將結(jié)果暫存到POF交換機(jī)中的metadata 字段中,metadata 字段設(shè)計(jì)如圖 4 所示,當(dāng)POF交換機(jī)依次將數(shù)據(jù)包中的五元組寫(xiě)入交換機(jī)的metadata字段后,Classifier中負(fù)責(zé)處理NSH報(bào)文的流表利用metadata中的五元組,根據(jù)POF交換機(jī)中設(shè)定的匹配域,實(shí)現(xiàn)NSH報(bào)文的解析與傳遞.
圖4 交換機(jī)中的 metadata 字段
根據(jù)上述分析,控制平面共下發(fā)至Classifier中6個(gè)流表,其處理過(guò)程如圖5所示,由于POF交換機(jī)接收到的是MAC幀報(bào)文,包括攜帶VLAN和不攜帶VLAN字段的兩種格式,因此Classifier中的流表首先是對(duì)MAC幀的處理,從而確定IP報(bào)文開(kāi)始的位置,接著依次是IP報(bào)文和TCP/UDP報(bào)文的處理.五元組寫(xiě)入到POF交換機(jī)的metadata中后,將流表的匹配域與metadata中的五元組相對(duì)應(yīng),從而實(shí)現(xiàn)對(duì)數(shù)據(jù)包的匹配.匹配完成后,利用POF協(xié)議無(wú)感知轉(zhuǎn)發(fā)的特點(diǎn),只需要通過(guò)AddField、ModifyField和DelField等POF交換機(jī)指令便能完成對(duì)數(shù)據(jù)包添加NSH報(bào)文頭等操作,不需要對(duì)其他代碼進(jìn)行修改,添加完成后將帶有NSH報(bào)文轉(zhuǎn)發(fā)到不同的SFC中.
圖5 Classifier流表處理過(guò)程
在SFC中,SFF根據(jù)NSH報(bào)文中攜帶的信息將數(shù)據(jù)包轉(zhuǎn)發(fā)至一個(gè)或多個(gè)SF中,并且處理從SF返回的數(shù)據(jù)包.SFF報(bào)文處理流程如圖6所示,當(dāng)SFF收到報(bào)文后,首先根據(jù)NSH報(bào)文中的SPI和SI字段確定下一跳地址,轉(zhuǎn)發(fā)到相應(yīng)的SF或SFF中,如果SF不支持NSH報(bào)文,則需要先轉(zhuǎn)發(fā)到相應(yīng)的SFC Proxy中將NSH去掉,轉(zhuǎn)換成SF可以識(shí)別的報(bào)文,當(dāng)SF處理完畢后,SF Proxy需要重新對(duì)數(shù)據(jù)包封裝NSH再由SFF轉(zhuǎn)發(fā)到下一跳.由于Classifier不會(huì)對(duì)匹配策略之外的數(shù)據(jù)包封裝NSH報(bào)頭,因此在SFF還需要支持對(duì)常規(guī)報(bào)文的轉(zhuǎn)發(fā).
圖6 SFF 處理過(guò)程
為了對(duì)該系統(tǒng)的功能和性能進(jìn)一步分析和研究,本文設(shè)計(jì)并搭建了與實(shí)際網(wǎng)絡(luò)環(huán)境相近的網(wǎng)絡(luò)拓?fù)?本實(shí)驗(yàn)的實(shí)驗(yàn)環(huán)境使用的是ubuntu14.04的系統(tǒng),內(nèi)核版本是3.13,網(wǎng)絡(luò)拓?fù)淅胢ininet搭建而成(mininet是一個(gè)輕量級(jí)的SDN網(wǎng)絡(luò)研發(fā)、仿真以及測(cè)試平臺(tái)).控制器采用Java語(yǔ)言編寫(xiě)的Floodlight開(kāi)源控制器,安裝的JDK版本是1.8.
本文首先對(duì)服務(wù)功能鏈的功能效果進(jìn)行了實(shí)驗(yàn)驗(yàn)證,實(shí)驗(yàn)?zāi)M的是 Client請(qǐng)求 Web Server服務(wù)器的HTTP 服務(wù),其中,Classifier和 SFF 均基于 POF 交換機(jī)設(shè)計(jì)而成.本實(shí)驗(yàn)設(shè)計(jì)了兩條服務(wù)功能鏈,一條功能鏈SFC1經(jīng)過(guò)的服務(wù)功能路徑是SF1、SF2、SF3,另一條經(jīng)過(guò)的服務(wù)功能路徑SFC2是SF2、SF3.NSH包含3部分:基本頭信息、服務(wù)路徑信息和上下文信息.實(shí)驗(yàn)中兩條服務(wù)功能鏈的SPI分別設(shè)為為1和2,SI的初始值設(shè)為 255,Next protocol設(shè)為 4(4 表示NSH協(xié)議),上下文信息的初始化長(zhǎng)度為4個(gè)字節(jié)固定長(zhǎng)度,初始值為 0.在 NSH 報(bào)文轉(zhuǎn)發(fā)表中,利用 SPI、SI和 Next Protocol確定下一跳地址,下一跳地址可以是SF或者SFF,每次經(jīng)過(guò)一個(gè)SF后,SFF負(fù)責(zé)將SI減1.在節(jié)點(diǎn)通信過(guò)程中存在的ARP請(qǐng)求報(bào)文,Classifier不會(huì)對(duì)其進(jìn)行封裝.表1是控制器下發(fā)至SFF1中的NSH報(bào)文轉(zhuǎn)發(fā)表,其中*號(hào)代表通配符.
表1 SFF1 中的 NSH 報(bào)文轉(zhuǎn)發(fā)表
實(shí)驗(yàn)的網(wǎng)絡(luò)拓?fù)淙鐖D7所示,其中Client1主機(jī)的IP地址為10.0.0.1,Client2主機(jī)的IP地址為10.0.0.2,Server 服務(wù)器的地址為:10.0.0.3,控制器的地址為10.10.28.37.實(shí)驗(yàn)使源IP地址為10.0.0.1的數(shù)據(jù)包經(jīng)過(guò)SFC1,源IP地址為10.0.0.2的數(shù)據(jù)包經(jīng)過(guò)SFC2.由于mininet網(wǎng)絡(luò)中的網(wǎng)絡(luò)設(shè)備默認(rèn)只能添加一條鏈路,因此對(duì)linux主機(jī)添加了虛擬網(wǎng)卡對(duì),SFF和SF間分別關(guān)聯(lián)了虛擬網(wǎng)卡對(duì).當(dāng)數(shù)據(jù)包進(jìn)入SFC-Enabled Domain 后,Classifier根據(jù)流表,匹配數(shù)據(jù)包并添加NSH,分別將發(fā)自Client1和Client2的NSH中SPI字段設(shè)為1和2,添加完成后,將NSH報(bào)文從 S1-eth3端口轉(zhuǎn)發(fā)至 SFF1,SFF1 根據(jù)流表中的 Next protocol、SPI和SI確定下一跳地址,如果匹配到的SPI為1,則將匹配到的數(shù)據(jù)包從S2-eth2端口轉(zhuǎn)發(fā)之SF1,SF1處理完畢后,將數(shù)據(jù)包從F1-eth2端口轉(zhuǎn)發(fā)回SFF1,SFF1將數(shù)據(jù)包中的SI減1后從S2-eth4端口轉(zhuǎn)發(fā)到SFF2處,依次類(lèi)推,當(dāng)SF3將處理完的數(shù)據(jù)包返回給SFF3時(shí),SFF3去掉數(shù)據(jù)包的NSH報(bào)頭后,轉(zhuǎn)發(fā)至web Server服務(wù)器.當(dāng)SFF1匹配到到數(shù)據(jù)包中的SPI為2時(shí),直接從端口S2-eth4轉(zhuǎn)發(fā)至SFF2.在實(shí)驗(yàn)中,SF1起到了防火墻的功能,本文將防火墻規(guī)則設(shè)置為不允許目的IP地址為10.0.0.3的請(qǐng)求數(shù)據(jù)包通過(guò),因此SPI為1的數(shù)據(jù)包無(wú)法收到HTTP響應(yīng)報(bào)文.此外,Client的發(fā)起的HTTP請(qǐng)求報(bào)文采用NSH協(xié)議進(jìn)行轉(zhuǎn)發(fā),Web Server返回的數(shù)據(jù)由于不需要再經(jīng)過(guò) SF,直接按照常規(guī)的數(shù)據(jù)包進(jìn)行返回.
圖7 實(shí)驗(yàn)拓?fù)?/p>
實(shí)驗(yàn)結(jié)果如表2所示,表中第一條記錄是SFC1的HTTP請(qǐng)求結(jié)果,第二條記錄是SFC2的HTTP請(qǐng)求結(jié)果.
表2 Client請(qǐng)求結(jié)果
上述實(shí)驗(yàn)證明,基于協(xié)議無(wú)感知轉(zhuǎn)發(fā)的服務(wù)功能鏈實(shí)現(xiàn)了IETF提出的有關(guān)SFC的標(biāo)準(zhǔn),各個(gè)邏輯組件功能完備,并基于POF實(shí)現(xiàn)了NSH協(xié)議.
在性能測(cè)試時(shí),為了更加接近真實(shí)的網(wǎng)絡(luò)環(huán)境,實(shí)驗(yàn)利用了一臺(tái)物理服務(wù)器和IXIA網(wǎng)絡(luò)測(cè)量?jī)x對(duì)服務(wù)功能鏈的丟包率和時(shí)延進(jìn)行了測(cè)試.實(shí)驗(yàn)設(shè)計(jì)了對(duì)照實(shí)驗(yàn),由于Classifier和SFF是基于POF交換機(jī)設(shè)計(jì)實(shí)現(xiàn)的,因此,對(duì)比了服務(wù)功能鏈環(huán)境下和POF交換機(jī)環(huán)境下,常規(guī)TCP報(bào)文和NSH報(bào)文的在相同網(wǎng)絡(luò)環(huán)境下的丟包率和時(shí)延情況,實(shí)驗(yàn)中數(shù)據(jù)包的發(fā)送速率50 Mbit/s.圖8中左框內(nèi)是服務(wù)功能鏈性能測(cè)試的實(shí)驗(yàn)拓?fù)鋱D,右框內(nèi)是POF交換機(jī)性能測(cè)試的實(shí)驗(yàn)拓?fù)鋱D.在服務(wù)功能鏈性能測(cè)試的實(shí)驗(yàn)中,IXIA測(cè)試儀的Port0端口不停發(fā)送TCP數(shù)據(jù)包,Classifier對(duì)據(jù)包封裝NSH后轉(zhuǎn)發(fā)至SFF,SFF收到NSH報(bào)文后,修改NSH中的SPI字段,然后去掉數(shù)據(jù)包中的NSH,轉(zhuǎn)發(fā)至IXIA測(cè)量?jī)x的Port1端口.在對(duì)照試驗(yàn)中,TCP數(shù)據(jù)包直接通過(guò)POF交換機(jī)轉(zhuǎn)發(fā),不經(jīng)過(guò)Classifier和SFF.
圖8 丟包率和時(shí)延實(shí)驗(yàn)拓?fù)鋱D
兩組對(duì)照實(shí)驗(yàn)的報(bào)文丟包率均接近于0,數(shù)據(jù)包的接收時(shí)延如圖9所示,基本趨于一致.
接著,實(shí)驗(yàn)利用iPerf3網(wǎng)絡(luò)性能測(cè)量工具和mininet仿真工具對(duì)服務(wù)功能鏈的吞吐量進(jìn)行了測(cè)試,測(cè)試分為兩組,將服務(wù)功能鏈與POF交換機(jī)設(shè)置為對(duì)照實(shí)驗(yàn),利用iPerf3將數(shù)據(jù)包的發(fā)送速率設(shè)置成不同的值,采用UDP模式進(jìn)行了測(cè)試.圖10的上下兩框內(nèi)分別是服務(wù)功能鏈和POF交換機(jī)測(cè)試吞吐量時(shí)的邏輯拓?fù)鋱D.
圖9 時(shí)延數(shù)據(jù)
圖10 吞吐量實(shí)驗(yàn)拓?fù)鋱D
吞吐量的實(shí)驗(yàn)結(jié)果如圖11所示.從實(shí)驗(yàn)結(jié)果可知.在一定范圍內(nèi),服務(wù)功能鏈和POF交換機(jī)的吞吐量無(wú)明顯差異,隨著發(fā)送速率的提高,服務(wù)功能鏈網(wǎng)絡(luò)吞吐量會(huì)逐漸下降,維持在380 Mbit/s左右.
圖11 吞吐量實(shí)驗(yàn)拓?fù)鋱D
由于Classifier和SFF均是基于POF交換機(jī)設(shè)計(jì)實(shí)現(xiàn)的,根據(jù)丟包率、時(shí)延和吞吐量的測(cè)試結(jié)果可知:在一定的數(shù)據(jù)包發(fā)送速率下,利用POF交換機(jī)實(shí)現(xiàn)NSH報(bào)文協(xié)議后對(duì)交換機(jī)本身性能沒(méi)有明顯影響,說(shuō)明了POF協(xié)議能夠高效的提供對(duì)NSH協(xié)議的支持,避免了OpenFlow協(xié)議在擴(kuò)展過(guò)程中的兼容性和實(shí)現(xiàn)復(fù)雜性等問(wèn)題.說(shuō)明了基于協(xié)議無(wú)感知轉(zhuǎn)發(fā)的服務(wù)功能鏈在性能方面表現(xiàn)優(yōu)異.
本文根據(jù)IETF提出的關(guān)于服務(wù)功能鏈的標(biāo)準(zhǔn),利用POF協(xié)議無(wú)感知的特點(diǎn),提出基于SDN和NFV架構(gòu)的服務(wù)功能鏈,實(shí)現(xiàn)了NSH協(xié)議,避免對(duì)OpenFlow協(xié)議的私有擴(kuò)展和實(shí)現(xiàn)復(fù)雜性等問(wèn)題.利用Floodlight控制器和POF交換機(jī)實(shí)現(xiàn)了該服務(wù)功能鏈,并對(duì)其功能和性能分別進(jìn)行了驗(yàn)證,實(shí)驗(yàn)結(jié)果表明,基于協(xié)議無(wú)感知轉(zhuǎn)發(fā)的服務(wù)功能鏈功能完備,在性能方面表現(xiàn)優(yōu)異.由于本文側(cè)重SDN的實(shí)現(xiàn)模塊,對(duì)NFV模塊的研究不夠深入,也沒(méi)有考慮到包括故障處理在內(nèi)的其他因素,下一步工作將圍繞著云計(jì)算環(huán)境中協(xié)議無(wú)感知轉(zhuǎn)發(fā)的服務(wù)功能鏈的應(yīng)用進(jìn)行深入研究.