01.02 境無止境!SDN網絡的流表需求切勿貪多不爛

在以太網絡誕生的40多年裡,IT技術迅猛發展,我們都有幸見證了以太網是如何經歷了一次次的革命而實現每一次的技術創新。軟件定義網絡(SDN)則是網絡行業最具革命性的創新之一。SDN技術通過控制與轉發層面的分離將傳統的黑盒網絡設備打開,將更多的網絡信息提供給應用(用戶),從而提升了網絡的靈活性和可控性。


境無止境!SDN網絡的流表需求切勿貪多不爛

在SDN網絡的控制與轉發層面間最開放的南向接口就是ONF組織制定的OpenFlow協議,OpenFlow協議作為南向接口其主要目的是優化特定流在源與目的間的路徑,但是在落地過程中面臨的挑戰是現有的硬件平臺ASIC芯片能夠支持的流數目有限:大約在1K-10K條流的數量級。樂觀的人認為這是個短期的限制,ASIC很快就會大幅提升性能,比如Barefoot公司做出的嘗試;也有些人認為這個問題只能通過基於x86或者網絡處理器NP的方案來解決,可以在損失一定性能的情況下實現靈活的表規格;也有些人完全不贊成SDN設計,質疑是否有現實可行或經濟適用的方案出現。

目前ASIC的流表實現主要靠芯片內部的TCAM(三態內容尋址存儲器)來完成流匹配,這是一種成本高昂且功耗頗大的技術。因此希望通過TCAM來擴展流條目的成本是很高的(無可避免的導致售價攀升),那麼其實最現實可行的做法是充分挖掘硬件可利用資源並在軟件層面通過歸集實現流條目的優化。

我們都知道目前的SDN交換機大部分基於傳統的網絡交換芯片搭建,在這些芯片內部除了TCAM之外還有大量的SRAM資源用於存儲MAC表項,因此在交換機操作系統中可以利用交換芯片的特性模擬內存分配方案,使得交換設備在邏輯上除了可以使用支持OpenFlow的內存(TCAM)外還可以結合使用傳統的交換路由表(FIB)。通過釋放硬件的現有資源,我們可以將目前硬件交換機支持的流條目數提升到數十萬條,滿足高密度低延時環境下所需的高擴展性需求。

另外,在部署SDN網路時是否真的需要上百萬條流才能解決網絡的突出問題呢?在提升硬件資源的利用率基礎之上,通過提升流分發規則設計將邏輯流與物理流分離,軟件和硬件分離也是有效降低流表需求的途徑。通常典型的ToR交換機具有50個端口左右,每個端口最多有幾百條流。對於任何的數據中心或者企業應用這都是不夠用的,更不要說匯聚交換機。但是以主機託管數據中心為例,如果可以通過VLAN ID和MAC地址來歸類流量,那麼就有可能用不到一百條流來處理流量。真實場景中,大量的網絡應用只需要很少的流就可以分發業務,即使是匯聚層也不例外。

回想一下個人電腦時代,當時PC-XT只有256KB DRAM,因此程序員必須想辦法應付有限的存儲空間使得程序跑在有限的物理內存上。但是隨著技術的發展,新的操作系統可以處理物理存儲和邏輯存儲:內存管理通過分頁技術可以從物理內存中將沒有使用的頁置換到頁面文件中,同時將邏輯存儲的相關頁面傳遞至物理內存。通過這種方式基本上解決了系統的邏輯內存問題,極大得提升了PC的可編程性。與此同時,硬件廠家也逐漸通過技術的發展將DRAM從256KB擴展到現在的GB級別容量,在30年的時間內提升了近百萬倍。

有理由相信流處理技術也會走相同的途徑。如同分頁技術從物理存儲中開闢出邏輯內存,緩存也可以用來從物理流中分離出邏輯流。通過專注於現有平臺的資源利用,我們就可以真正釋放邏輯流的限制,解決實際部署中碰到的問題。軟件總是會領先於硬件的突破,只要專注於SDN軟件和應用的開發,軟件定義網絡作為基礎實施必將釋放出更大的能量。


分享到:


相關文章: