SDN:软件定义网络
SDN,即Software Defined Network,核心思想是将控制平面(Control Plane)和数据平面(Data Plane)分离;将传统交换机、路由器的分布式算法(如OSPF等)用控制器(Controller)的集中式算法实现,加强全局视角的控制能力,提高效率。
网络结构的扁平化的核心思想是功能上手,那么SDN就是做得最彻底的功能上收
基础设备不需要专有设备,不依赖任何网络,只要有控制和转发功能即可
园区网络扁平化除了取消汇聚层之外还有哪些? - summer课堂的回答 - 知乎 https://www.zhihu.com/question/67268856/answer/251271775
What
Software Defined Network(软件定义网络)
导论文章:图解SDN:软件定义网络导论篇 (包括网络架构发展和常用网络拓扑)
在网络中有三大模块:管理平面负责配置和管理指令,然后给控制平面生成相应的控制表(ARP表,FIB表,MPLS标签表,ACL访问控制表等等),然后再交由转发平面根据控制表进行处理与转发。但在传统网络中是分布式控制的,且这三大模块是耦合的,这导致①管理部署难:网络厂商杂、设备类型多、设备数量多、命令不一致;②性能瓶颈:独立计算、接力棒交互、分布式架构;而SDN就是为了;③流量控制棘手:带宽静态分配(无法编程),流量可视化难;④无法按需,不可编程。而SDN就是为了解决以上问题诞生的思想。
SDN是一种网络设计理念,核心思想是
①能够弹性响应上层应用变化的网络可编程=>随心应变、随应用而动
②引入一个集中统一的控制与管理层=>控制与管理、动态响应
③解耦网络设备的管理平面、控制平面、数据平面(将管理平面、控制平面从基础设施中抽取出来)
这样一来,底层网络设备通过解耦实现了简单化;网络的管理通过集中控制器实现了全局化;网络的运维通过SDN南向接口与协议实现了自动化;网络的应用通过SDN北向接口与协议实现了更加弹性的人性化
结构
ONF定义的SDN的基本架构——应用层、控制层、转发层:
应用层:提供应用和服务(用户业务系统)
控制层:提供统一的管理和控制(下发流表到转发层,指导包转发行为)===网络的大脑
转发层(基础设施层):只提供基础的数据转发功能
使用南向接口协议(OpenFlow)实现控制层面对转发平面的控制,使用北向API(REST API)实现业务应用与SDN控制器的交互。南向接口协议OpenFlow已经标准化,所有底层硬件设备厂商都满足该协议,这样就便于编程不依赖于底层设备;北向API使用REST API是主流
ONF定义
ONF定义的SDN体系架构(四大平面,两大接口):控制平面、应用平面、数据平面(转发层/基础设施层)、管理平面,以及北向接口、南向接口。
南向接口协议主要采用OpenFlow,北向API主要采用REST API
OpenFlow是P4语言建模的PISA协议无关交换机架构架构的起源,这个PISA架构也称为OpenFlow2.0
openflow1.0和后面的版本不兼容,同时都在支持
openflow协议需要芯片支持,所以需要openflow交换机;openflow交换机分为物理的和虚拟的(软件的,比如OVS,同时OVS提供OVSDB协议实现控制器对虚拟交换机vS的可编程访问和配置管理)
OF-Config协议是openflow协议的伴侣协议,用于openflow交换机的管理和配置
数据平面
数据平面:解析数据包头、转发数据包到某些端口(网络IO可基于DPDK框架)
数据面也叫转发面,在SDN白盒设计中,相当于一台通用的网络设备,只有数据转发和处理功能,而所有SDN白盒的控制层面(如ARP表、FIB表)功能全部集中到控制面去了
所有转发表都被抽象为流表,转发过程抽象为匹配-动作过程
流表(1.0版本):
动作就是将数据包转发给不同的端口,不同的端口对应不同的进程,处理不同的功能,比如有的端口是按照传统方式转发,有的是按照表转发,有的是转发给交换机等等(具体看协议对不同端口的定义)。总得来说,流表记载了不同数据包的转发行为。
数据包处理流程:
Openflow协议
openflow协议有三种消息类型:
Controller-to-Switch消息(控制器发起)
Asynchronous消息(交换机发起)
Symmetric消息(可由任一方发起)
Openflow消息体由openflow Head和openflow message组成
然后再发送packet_out(属于Controller-to-Switch),packet_in(属于Asynchronous)消息,通过packet_out中的LLDP包进行网络拓扑探测,通过flow_mod信息下发流表操作(增删改等)
然后一次客户端的请求通信流程demo如下:
OF-Config协议
用于OF交换机的配置,是Openflow的伴侣协议,也属于南向协议
由openflow配置点统一对OF交换机进行配置
有控制器连接设置(控制器IP端口传输协议)、多控制器参数配置、OF逻辑交换机资源配置、连接中断配置、加密设置(证书配置)、队列配置(速率)、端口设置(包括如基于VxLAN的逻辑端口)、能力发现配置
还要支持配置隧道等运维需求
OF-Config数据模型由XML语言定义
NetConf协议
这个协议不是SDN必须的,但是一个很常用的网络设备的管理和配置协议,常用于自动化运维
也属于南向协议,基于C/S模型,使用RPC通信模式,采用XML编码的<rpc>
和<rpc-reply>
元素提供
独立于传输层协议的请求和回应消息框架。
配置数据有running、candidate、startup三个数据库,<running/>
库用于保存当前已经生效的配置;<candidate/>
用于保存可以提交为生效的数据;以及<startup/>
用于保存启动时的配置数据。
也是写XML,通过配置RPC操作
详细参考见:网络运维自动化入门二:NETCONF
控制平面:SDN控制器
内置应用层的overlay网络指的是如果本网络是另一个overlay网络的underlay网络,那么物理网络和虚拟网络都是有各自的SDN三平面的,下层网络的控制器提供给上层overlay调用
南向网络控制
以下功能都是使用openflow协议实现,SDN控制器和SDN交换机通过前面所述的OF三种消息类型进行交互
链路发现:获得SDN全网信息,实现网络地址学习、VLAN、路由转发;SDN交换机直连链路(指控制器与SDN交换机直连)的发现由LLDP协议实现,对于非直连链路通过广播的方式实现
拓扑管理:监控和采集SDN交换机的信息,反馈工作状态和链路连接状态
策略制定
表项下发:主动下发/被动下发
P.S 使用OF协议作为南向接口协议的SDN交换机也叫OF交换机
北向业务支撑
目前尚未统一标准(因为受实际业务影响很大),REST API是比较主流的一种
开源SDN控制器有如Mul、Trema、NOX、POX、Ryu、Beacon、Floodlight、ONOS、OpenDayLight(ODL)等