1 介紹
網(wǎng)絡(luò)功能(NFs),或中間件是以復(fù)雜方式檢測和更改數(shù)據(jù)包和流的系統(tǒng)。比如:入侵檢測系統(tǒng)(IDSs),負(fù)載均衡器,緩存代理等。NFs在確保安全性,提高性能和提供其他新網(wǎng)絡(luò)功能方面起著關(guān)鍵性的作用。
最近,我們發(fā)現(xiàn)利用運(yùn)行在通用計(jì)算資源上的基于軟件的NFs來替代專用網(wǎng)絡(luò)功能硬件越來越引起人們的興趣,即被稱為網(wǎng)絡(luò)功能虛擬化(NFV)的趨勢。同時(shí),SDN被用來通過適當(dāng)?shù)腘Fs引流,從而執(zhí)行決策和共同管理網(wǎng)絡(luò)和網(wǎng)絡(luò)負(fù)載。
結(jié)合NFV和SDN可以實(shí)現(xiàn)一類重要的管理應(yīng)用,這類應(yīng)用需要在多個(gè)網(wǎng)絡(luò)功能實(shí)例(如網(wǎng)絡(luò)負(fù)載均衡,彈性網(wǎng)絡(luò)伸縮)之間進(jìn)行動態(tài)分組包處理。在此類應(yīng)用場景下,“NFV+SDN”可以幫助實(shí)現(xiàn)以下三個(gè)重要目標(biāo):(1)、在NF性能和可用性方面滿足嚴(yán)格的服務(wù)等級協(xié)議(SLAs);(2)、精確地監(jiān)控和處理網(wǎng)絡(luò)流,比如,對所有包含惡意軟件的網(wǎng)絡(luò)流,IDS都應(yīng)該報(bào)警;(3)、最小化NF運(yùn)營成本。然而,目前同時(shí)實(shí)現(xiàn)三個(gè)目標(biāo)是不可能的,從根本上說需要比“NFV+SDN”能提供的更多的控制功能。
要知道為何?我們考慮這樣一個(gè)場景,一個(gè)IDS過載,為了在吞吐量上滿足SLAs,必須進(jìn)行網(wǎng)絡(luò)擴(kuò)展(圖1)。通過NFV,我們可以輕易地創(chuàng)建一個(gè)新的IDS實(shí)例,通過SDN,我們可以將一些正在進(jìn)行的流網(wǎng)絡(luò)路由到新創(chuàng)建的實(shí)例。然而,由于內(nèi)部NF狀態(tài)是不可見的,可能發(fā)現(xiàn)不了攻擊。為了解決這個(gè)問題,SDN控制應(yīng)用可以等待現(xiàn)有流的終止,且只重新路由新的流,但這樣就延遲了過載的緩解,并且增加了破壞SLA的可能性。由于一些NF內(nèi)部狀態(tài)的不可復(fù)制或共享性,NF精確度也可能被破壞。
?
圖1 需要擴(kuò)展和負(fù)載均衡來滿足吞吐量的SLAs和最小化運(yùn)營成本的場景
在這個(gè)例子中,為了避免NF精確度和性能之間的權(quán)衡,唯一的辦法就是允許一個(gè)控制應(yīng)用能快速并且安全地對一些流的內(nèi)部IDS狀態(tài)從原始實(shí)例轉(zhuǎn)移到新的實(shí)例,同時(shí)更新網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)。類似的需求也出現(xiàn)在其他依賴動態(tài)重分配和分組處理的應(yīng)用場景中,比如,快速升級NF和遠(yuǎn)程處理的動態(tài)調(diào)用。
在本文中,我們提出一種控制平面架構(gòu)OpenNF,它提供內(nèi)部NF狀態(tài)和網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)的高效、協(xié)作控制,使得NF實(shí)例之間的流能夠快速、安全和細(xì)粒度的重分配。采用OpenNF,運(yùn)營商能夠創(chuàng)建豐富的重分配處理控制應(yīng)用,這些應(yīng)用能最佳地滿足性能、可用性、安全性和成本目標(biāo),這樣就避免了麻煩的權(quán)衡決策。
設(shè)計(jì)OpenNF的三個(gè)主要挑戰(zhàn)如下:
C1: 解決競爭條件。這是重分配在線流時(shí)產(chǎn)生的最基本問題:當(dāng)一些內(nèi)部NF狀態(tài)被轉(zhuǎn)移時(shí),數(shù)據(jù)包可能在轉(zhuǎn)移開始后到達(dá)源實(shí)例,或者在狀態(tài)轉(zhuǎn)移完成之前到達(dá)目的源。除非特別小心,不然,基于這些可能丟失的或者亂序的數(shù)據(jù)包來更新NF狀態(tài),破壞了轉(zhuǎn)移安全性。同樣地,當(dāng)從NF實(shí)例間復(fù)制狀態(tài)時(shí),同時(shí)發(fā)生的更新可能導(dǎo)致狀態(tài)不一致,這些問題都可能降低NF的精確度。
為了說明競爭條件,我們引入兩個(gè)新的結(jié)構(gòu):(1)、一個(gè)從外部觀察的抽象事件,防止內(nèi)部NFs的本地狀態(tài)改變。(2)、一個(gè)用于更新網(wǎng)絡(luò)轉(zhuǎn)發(fā)狀態(tài)的兩階段方案。我們展示了如何將兩者結(jié)合起來以確保狀態(tài)更新不會丟失,或者在狀態(tài)轉(zhuǎn)移時(shí)重新排序和共享狀態(tài)保持一致。
C2:限制開銷。第二個(gè)問題是保證重分配是高效的。NF實(shí)例之間的狀態(tài)轉(zhuǎn)移和共享會消耗NF CPU和網(wǎng)絡(luò)資源。此外,為了避免丟失,重排和狀態(tài)不一致,需要數(shù)據(jù)包緩沖,這會引入延遲和內(nèi)存消耗。如果這些性能和資源消耗是無限制的,就無法滿足嚴(yán)格的SLAs和有限的運(yùn)營成本。
為了限制開銷,我們提出了一個(gè)靈活的北向接口,用于控制應(yīng)用明確地指定哪些狀態(tài)進(jìn)行轉(zhuǎn)移,復(fù)制和共享,以及哪些保證執(zhí)行(例如,無損耗)。
C3:以最小變化適應(yīng)各種NFs。最后一個(gè)問題是確保我們的架構(gòu)能適應(yīng)以大量非入侵方式的各種各樣的NFs。給NFs提供接口來創(chuàng)建/更新狀態(tài)是一種方法,但是這種方法限定了內(nèi)部NFs轉(zhuǎn)態(tài)的結(jié)構(gòu),可能也不適合需要一些數(shù)據(jù)包處理邏輯的狀態(tài)分配/訪問。相反,我們?yōu)镹Fs設(shè)計(jì)了一種新的南向接口,允許控制器請求NF狀態(tài)的進(jìn)出口,而不改變NFs內(nèi)部是如何管理狀態(tài)的。
我們使用Floodlight實(shí)現(xiàn)了我們的北向接口API,利用這個(gè)API,我們開發(fā)了幾個(gè)控制應(yīng)用。我們也增加了四個(gè)NFs—Bro, Squid, iptables, 和PRADS,用于支持南向接口API。
? ? ?
評論