多核處理器下的快速包處理軟件架構FastGate

陳首席,各位彎曲的老友們,你們好。關注彎曲多年,受益頗深。咱們來自ASTRI(香港應用科技研究院),是一羣熱愛系統設計的大宋子民,所在的項目組專一於多核處理器下的快速包處理的軟件研發,逐漸造成了一套高性能、高可擴展性的軟件架構FastGate,特在此跟你們分享和探討。 算法

FastGate主要的目標是幫助用戶縮短研發週期,保護已有的代碼,快速開發和靈活部署本身的業務。用戶無需關注多核處理器的硬件細節、無需關注性能和擴展性,只需專一於自身功能模塊的開發,而後經過和FastGate框架的無縫集成即可以快速造成本身獨有的產品,推出市場,同時又能夠根據業務須要,靈活的擴展。 網絡

FastGate框架的的設計和SDN & OpenFlow的思想很吻合。主要特色以下: session

(1)控制平面和數據平面分離。控制平面主要包括session、Flow和信令的管理,運行在User Space和Slow Path環境中數據平面由一精簡的指令集組成,運行在FastPath環境中,專門負責網絡報文的處理和轉發。Application、SlowPath和FastPath三者之間經過MCC(Multi-core Communication)通訊,MCC同時支持本地和遠程通訊。 數據結構

(2)經過在FastPath和SlowPath引入ENS Framework,網絡協議棧的功能得以以模塊的方式互聯,模塊能夠靜態或動態的插拔,經過配置平面組合成不一樣的網絡協議棧,以適應不一樣網絡設備對協議棧的需求。 架構

(3)Application能夠運行在本地,也能夠是遠程的信令模塊,並可單獨開發和部署。從而下降系統的耦合性,提升總體的可靠性和擴展性。用戶或第三方的Application能夠無縫的和FastGate框架進行集成。 框架

(4)FastPath運行在獨立、高效的多核執行環境中,對網絡報文的處理要求作到Simple and Stupid, 使其得以充分發揮多核並行處理的性能優點。爲此,FastPath中的功能模塊都採用高效的數據結構和算法,並針對多核並行處理進行優化。 數據結構和算法

(5)SlowPath由優化的Kernel協議棧和ENS Framework組成,主要負責IP協議棧的Session、Flow等的管理,並和FastPath進行數據同步。 性能

ENS(Extensible/Efficient Network Stack Framework)負責構建網絡協議棧。ENS中的各個功能模塊之間是相互獨立和透明的,模塊之間經過hook的方式互連。模塊能夠靜態或動態的添加和刪除,這使得協議棧的擴展很是靈活,而又無需擔憂性能問題。因爲ENS Framework應用在整個協議棧,使得用戶不管是在L二、L3,仍是L7均可以很容易的擴展自身的業務,從而使得整個系統兼具軟件的靈活性和硬件的高性能。 測試

以LTE EPC中SGW和PGW爲例,用戶的開發也分爲控制平面和數據平面。控制平面即符合3GPP規範的SGW和PGW的協議部分,開發完成後,能夠部署在FastGate所在的板卡,也能夠根據須要部署在獨立的板卡上。數據平面即SGW&PGW的報文處理部分,開發完成後做爲一個功能模塊插入到Fast Path的ENS Framework中,就造成了SGW&PGW的網絡協議棧。 優化

關於系統的性能,下面給出基於Cavium cn5850(12 Cores, 600Mhz)的IPv4 Unicast Forwarding (8 cores for fastpath)的性能測試數據:

Fib Number 28,892
Memory Occupied(MB): 3.44
Measured in PPS 4,627,408
Measured in Mbps 4,000 (limited by I/O throughput of ispan9210)
Measured in Latercy(μs) 5 ~ 10

目前FastGate已經在包括ATCA 和Micro-TCA多個平臺上應用,所涉及的項目包括Wi-Fi AC, ASN GW, Femto SeGW, LTE EPC PGW, LTE EPC SGW等。指望彎曲的朋友和專家能不吝賜教,批評指正。 

相關文章
相關標籤/搜索