SDN:软件定义网络

  2020-6-28 


Software Defined Network

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的基本架构——应用层、控制层、转发层:

应用层:提供应用和服务(用户业务系统)

控制层:提供统一的管理和控制(下发流表到转发层,指导包转发行为)===网络的大脑

转发层(基础设施层):只提供基础的数据转发功能

2

使用南向接口协议(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)等


且听风吟