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