1
浅谈网络数据平面设计
•控制面标准接口
在SDN/OpenFlow网络架构中,网络控制器与数据平面应用之间通过标准的OpenFlow protocol管理转发设备的端口、拓扑以及流表,OpenFlow将交换机、路由器等网络设备的配置管理与这些设备的具体底层实现解耦。从控制器的角度来看,不论网络数据面是基于ASIC,FPGA还是DPDK或者内核网络,其对管理员呈现的管理配置接口应该是一致的。这种统一性带来的好处之一是我们可以在同一数据中心中并存多种网络数据面实现,通过灰度发布的方式实现渐进式架构升级。因此,网络数据面性能优化方案的原则之一是保持对控制器的标准管理接口。
OpenFlow协议经过多个版本的演进,在确定协议范围内具有很强的可编程性。就像我们可以通过编排CPU指令实现各种各样的软件应用程序,在OpenFlow的网络编排中,我们可以将多个match-action原语有机地组织在一起,构建出一个完整的的网络功能。在这里,之所以将match-action类比CPU指令,是因为单条OpenFlow规则只描述了整个数据包处理流水线中的一个基本操作,在一个复杂的网络转发设备中,我们往往需要将多个子功能模块串联或并联在一起才能满足业务需求。如上图所示,在一个网络虚拟化的场景中,我们需要将隧道TEP、连接跟踪、流量整形三个功能串联在一起,通常数据面通过recirculation机制将三个功能分别实现在三个阶段,其中的每个阶段都需要控制器做