文章目录
1 SDN的核心思想
- 解耦(Decoupling)
- 抽象(Abstraction)
- 可编程(Programable)
2 解耦
解耦是指将控制平面和数据平面进行分离,主要为了解决传统网络中控制平面和数据平面在物理上紧耦合导致的问题
2.1 传统网络与SDN网络比较
-
在传统网络中数据平面和控制平面没有分离。在同一个网络设备中,设备的转发行为基于控制协议生成的转发表。比如:二层交换机基于MAC地址表进行转发。路由器基于路由表结合性转发。而各种转发表是由设备的控制平面,基于不同的策略生成的
-
SDN网络将网络设备的控制平面,集中上收到Controller中。
网络设备中只保留转发平面,这样就可以通过软件实现灵活的控制面功能,满足用户多元化的需求。
硬件只需要专注转发,因此可以做到简单通用
2.2 解耦带来的问题与挑战
- 网络规模的扩大,单一控制器成为网络性能的瓶颈
- 保持分布式网络节点状态的一致性,是一个重要的挑战
- 响应延迟,导致数据平面的可用性问题
3 抽象
类比计算机模型
3.1 转发抽象
隐藏了底层的硬件实现,转发行为与硬件无关
3.2 分布状态抽象
屏蔽分布式控制的实现细节,为上层应用提供全局网络视图;
3.3 配置抽象
网络行为的表达通过网络编程语言实现,将抽象配置映射为物理配置
4 可编程
4.1 传统网络
- 传统网络的管理接口: CLI、SNMP等,是初级的网络编程方式
- 网络管理者需要基于整个网络的,而不是基于某一设备的可编程
- 网络可编程相关研究:主动网络(Active Networking)、4D架构
4.2 SDN中可编程接口
- 北向接口:REST(Representational State Transfer) API,RESTCONF协议
- 南向接口:OpenFlow、OF-Config、NETCONF、OVSDB、XMPP、PCEP、I2RS、OPFlex等协议;