一直以來,網絡中存在著一系列用于改善網絡服務的性能和體驗的應用,例如Web安全,訪問控制、負載均衡、應用加速、WAN優化、入侵檢測等。它們在網絡的安全、管理等方面發揮了巨大的作用,是傳統網絡中保障應用交付質量的關鍵。隨著SDN技術的提出與成熟,在新型網絡架構下,這些應用勢必也需要進行相應的改造與完善。
在傳統網絡中,類似防火墻、負載均衡、入侵檢測等網絡應用都是由專用的硬件設備實現的,在網絡運行過程匯總,根據實際需要逐臺進行配置以滿足數據傳輸要求。而在SDN網絡中,上述應用將以軟件程序的方式存在,他們可以與控制器一起部署在通用服務器上,通過調用控制器的北向接口獲得其提供的流量模式、應用數據等信息并對其進行辨識和判斷,進而驅動控制器下發指令調整網絡配置。例如,當基于SDN的入侵監測應用在控制器監測的數據流中識別到惡意流量時,它就可以自動驅動控制器設置相應的流表項將這些數據包導向網絡中數的安全隔離設備,避免其對網絡的破壞。
雖然這些SDN應用是利用軟件實現的,但他們的角色與傳統的硬件設備相同,相比而言,基于SDN傳統網絡應用進行改造的主要優勢包括以下幾點:
通過軟件實現的防火墻、負載均衡,降低系統的CAPEX/OPEX
實現網絡中各類網元的虛擬化和集中化控制
支持網絡系統的快速部署,在故障出現時能夠快速發現并解決問題
提供更高的智能,支持自動化運作,實現應用可感知的網絡。
通過上述介紹和分析可知,基于具備集中化管控能力的SDN控制器提供的網絡資源調配能力,SDN應用實際是將傳統的基于設備的應用改造為一個真正面向全網范圍的應用。
隨著SDN的應用與推廣,傳統網絡應用交付技術向SDN網絡的遷移已經勢在必行,很多傳統領域的領導廠商已經開始考慮這些問題。總體而言,面向SDN的網絡應用交付技術的改造需要從以下四個方面進行。
(1)改寫傳統的硬件應用為軟件實現。和所有的網絡設備一樣,傳統的網絡應用考慮到數據處理性能的問題,普遍采用基于專用集成電路的硬件實現,而隨著通用處理器性能的提升,采用軟件實現相關應用的功能已經能夠滿足數據處理的需求,同時在應用的實現和部署時具有更好的靈活性和開放性。
(2)支持網絡應用的虛擬化實現和部署。網絡應用的虛擬化主要體現在支持多個租戶共享同一網絡應用設施,同時各租戶間彼此隔離,具有相對獨立的應用空間。虛擬化是實現資源池化的主要手段,只有實現了池化的網絡應用,才能支持面向用戶的按需調配。在網絡應用虛擬化實現中,多線程等技術可被應用。
(3)基于控制器北向接口改造應用。為了將網絡應用納入SDN架構中,從控制器獲得網絡信息并驅動控制器調整網絡配置,網絡應用必須要將相關的功能接口與控制器的北向接口對接,這其中既可以利用REST API等類型的接口,使網絡應用仍舊相對獨立,也可以利用Java等類型的接口,將網絡應用功能整合進控制器中。
(4)開放編程接口支持創新業務開發。在網絡應用經過面向SDN網絡的改造后,秉承SDN的開放性,網絡應用還需要在擴展和封裝控制器北向接口的基礎上,提供功能完備、方便易用的編程接口對更上層的業務開放,推動網絡業務的創新。
就當前的業界進展來看,傳統網絡應用的主流廠商的技術產品普遍做到了前兩個方面,例如利用虛擬機部署負載均衡軟件、在Hypervisor中繼承安全防護功能等,而這也是前文提到的NFV(網絡功能虛擬化)期望達到的目標。但是,受到當前SDN架構中缺少統一的北向接口定義的限制,網絡應用廠商之能夠根據某幾款特定的控制器接口進行應用改造,從而增加了開發工作量,并導致了更高的風險。
將傳統網絡中四至七層的應用部署在SDN網絡上能夠獲得很多優勢,例如基于控制器對網絡全局視圖的把握,能夠開展更合理的負載均衡,制定更全面的安全策略,從而提升網絡應用的效能。但是,基于SDN實現傳統網絡應用也存在巨大的挑戰,例如當前現有的網絡應用過于豐富,有大量的廠商參與其中,其方案各有特色并且相對封閉,使得對網絡應用的整合化與集中化存在非常大的困難。另外更關鍵的一點是,如果應用依賴于控制器對應用要處理的數據包進行采樣和識別,就意味這控制器可能會不僅僅監控數據包的二、三層狀態,還必須對其四至七層信息進行解析,這將會大大增加控制器的工作量,進而影響網絡應用乃至SDN全網的性能。