陈首席,各位弯曲的老友们,你们好。关注弯曲多年,受益颇深。咱们来自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等。指望弯曲的朋友和专家能不吝赐教,批评指正。