本文最后更新于 1146 天前,其中的信息可能已经有所发展或是发生改变。
解耦
将控制平面与数据平面分离,解决物理层面控制平面与数据平面紧耦合导致的问题,两者只要遵循统一的开放接口即可通信
解耦后:
- 控制平面负责上层的控制决策
- 数据平面负责数据的交换转发
解耦带来的问题和挑战
- 控制平面的服务能力成为网络性能的瓶颈
- 解决方法:使用多个分布式的控制器
- 多控制器如何交互路由信息,保持分布式节点状态的一致性
- 控制平面的响应延迟,导致数据平面可用性的问题
抽象
转发抽象
将数据平面抽象成通用的转发模型,转发行为与硬件无关
分布状态抽象
控制层将设备的分布状态抽象成全局的网络视图,主要靠网络操作系统(NOS)来实现
功能:
- 实现下发控制命令
- 收集设备和链路状态,为上层应用提供全局网络视图
配置抽象
网络行为的表达通过编程语言实现,基于简化抽象模型,将抽象配置映射为物理配置
可编程
数据平面与控制平面解耦后,提供了开放的可编程接口
- 在SDN之前,我们通过配置命令行、网管协议接口、或编写简单的脚本来实现网络的配置
- 在SDN之后,我们利用控制器提供的API,使用Python、Java、C++来实现对网络的配置
可编程接口
北向接口
REST API、JAVA API等
南向接口
OpenFlow、OF-Config、NETCONF、OVSDB等
东西向接口
主要负责多控制器或控制器与外部组件之间的通信
研究阶段,无统一标准
数据平面
Intel主导的高性能网络数据处理框架DPDK
斯坦福大学主导的数据平面可编程语言P4