一、SDN 的核心思想(解耦)
指的是,将数据平面和控制平面分离,主要是为了解决数据平面和控制平面耦合导致的问题。
控制平面:
负责上层的控制决策。
数据平面:
负责数据的转发。
二者遵循开放接口进行通信。
传统网络中的数据平面:
二层交换机,基于 MAC 地址表进行转发。
路由器,基于路由表进行转发。
各种转发表由设备的控制平面基于不同的策略生成的。
解耦的优势:
SDN 将网络设备的控制平面集中到了控制 Controller,网络设备仅保留转发功能。
可以通过软件实现,灵活的控制面功能,满足用户的个性化需求。
硬件只需要负责转发,只需要简单通用即可。
存在的挑战:
- 控制平面的服务能力称为网络性能的瓶颈。
解决办法:部署多个分布式的控制器。 - 多个控制器如何交互路由信息,保持分布式节点状态的一致。
- 控制平面响应延迟,导致数据平面可用性问题,可能出现延迟。
二、SDN 的核心思想(抽象)
-
转发抽象
就是将数据平面的抽象成通用的转发模型,比如,OpenFlow 的交换机模型。转发行为与硬件无关,各种转发表项,如 MAC 地址表,路由表,MPLS 标签,ACL 控制访问等抽象为统一的流表。
OpenFlow 的交换机模型
- 分布式状态抽象
控制层将设备的分布状态,抽象为全局的网络视图,从而实现逻辑的控制。
抽象功能:
可通过网络操作系统(NOS)来实现,主要有两方面的功能:
实现下发控制命令;
收集设备和链路状态,为上层应用提供全局网路视图,
- 配置抽象
网络行为的表达可通过编程语言实现,基于简化抽象模型,将抽象配置映射为物理配置。
传统配置方式:
命令行配置;
网络管理协议接口,编写简单的脚本。
SDN 配置方式:
利用控制器提供的配置API(Python,C++,java等编程工具)。
基于控制层提供的全局网络视图,而不是单个设备的编程。
overylay 网络同样体现出抽象的思想,应用程序不需要考虑底层网络实现。
三、SDN 的核心思想(可编程)
SDN 提供了开放的可编程接口,
传统网络管理接口:
命令行,网管协议,SHELL脚本,Python脚本。
属于一种初级的网络编程方式。
网络可编程探索:
主动网络:开放网络节点的编程接口;用户数据上根据用户需求执行相应的计算。
4D 架构:将网络划分为四个平面,数据平面,发现平面,扩展平面,决策平面。
SDN 的可编程接口:
北向接口:RESET API;JAVA API;
南向接口:OpenFlow,OF-Config,NETCONF,OVSDB。
东西向接口:负责多控制器或与外部组件之间的通信,还在研究阶段,没有统一标准。
SDN数据平面可编程:
INTEL,高性能的网络数据处理框架。
斯坦福大学,数据平面可编程语言 P4。