OpenFlow協議的目的是優化特定流在源與目的間的路徑,但是目前我們面臨的挑戰是現有的ASIC能夠支持的流數目有限:大約在1000到4000條流。有些人認為這是個短期的限制,ASIC很快就會大幅提升性能;也有些人宣稱這個問題只能通過基于x86或者網絡處理器NP的方案來解決,在損失一定性能的情況下實現靈活的表規格;也有些人完全不贊成OpenFlow設計,質疑是否有現實可行或經濟適用的方案出現。
那么我們是否真的需要幾十萬或者上百萬條流才能解決網絡的突出問題?目前ASIC的流表實現主要靠芯片內部的TCAM(三態內容尋址存儲器)來完成流匹配,這是一種成本高昂且功耗頗大的技術。因此希望通過TCAM來擴展流條目到5000或者1000條的成本是很高的(無可避免的導致售價攀升),等待使用芯片能夠支持百萬條流也就成為美好的期望。
我們認為問題的解決之道在于:通過提升流分發規則設計將邏輯流與物理流分離,軟件和硬件分離。通常典型的ToR交換機具有50個端口左右,每個端口最多有幾百條流。對于任何的數據中心或者企業應用這都是不夠用的,更不要說匯聚交換機。但是以主機托管數據中心為例,如果可以通過VLAN ID和MAC地址來歸類流量,那么就有可能用不到一百條流來處理流量。實際上,大量的網絡應用只需要很少的流就可以分發業務,即使是匯聚層也不例外。
回憶一下個人電腦時代,當時PC-XT只有256KB DRAM,因此程序員必須想辦法應付有限的存儲空間使得程序跑在有限的物理內存上。但是隨著技術的發展,新的操作系統可以處理物理存儲和邏輯存儲:內存管理通過分頁技術可以從物理內存中將沒有使用的頁置換到頁面文件中,同時將邏輯存儲的相關頁面傳遞至物理內存。通過這種方式基本上解決了系統的邏輯內存問題,極大得提升了PC的可編程性。與此同時,硬件廠家也逐漸通過技術的發展將DRAM從256KB擴展到現在的GB級別容量,在30年的時間內提升了近百萬倍。
有理由相信流處理技術也會走相同的途徑。如同分頁技術從物理存儲中開辟出邏輯內存,緩存也可以用來從物理流中分離出邏輯流。在研究新型硬件芯片的同時,比如斯坦福大學的Nick Mckeown教授正在領導研究人員設計可處理50萬條流的新技術(芯片面積僅增加15%),我們必須專注于SDN[注]軟件和應用的開發,真正釋放邏輯流的限制。
從歷史的經驗來看,沒有必要等待那些需要耗費若干年時間才能推出的新型芯片,通過創新設計流表分發就可以現在介入SDN軟件開發。SDN硬件會不斷發展,但軟件總是會領先于硬件的突破,是時候加入SDN大潮了!