软件定义网络PART 4
南向接口协议
南向接口协议概述
什么是南向接口协议?
- 为控制平面的控制器和数据平面的交换机之间的信息交互而设计的协议。
南向接口协议的设计目标(主要作用)?
1.实现数据平面与控制平面的信息交互
- 向上收集数据平面信息;
- 向下下发控制策略,指导转发行为。
2.实现网络的配置与管理;
3.实现路径计算,包括链路属性(带宽与开销)、链路状态、和拓扑信息等;
南向接口协议有哪些?
OpenFlow协议
- ONF定义的一种南向接口标准,为控制器与交换机之间的通信提供了一种开放标准的方式
OF-Config协议
- OpenFlow管理与配置协议(OpenFlow Management and Configuration Protocol,OF-Config):一种OpenFlow交换机配置协议。可以理解为openflow协议的伴侣协议。
OVSDB协议
- 开源交换机数据库管理协议(Open vSwitch Database Management Protocol,OVSDB):负责管理开源的软件交换机(OpenvSwitch,OVS)的开放虚拟交换机数据库,实现对虚拟交换机的可编程访问和配置管理。
NETCONF 协议
- NETCONF协议采用Client/Server结构。通过NETCONF,SDN控制器对网络设备进行配置管理。
SDN Controller as Server
SDN Switch as client
XMPP
- 可扩展消息处理现场协议(eXtensible Messaging and Presence Protocol,XMPP):用于即时消息传递、状态、多方聊天、语音和视频呼叫、协作、轻量级中间件、内容联合和通用的XML数据路由的开放技术。
PCEP
- 路径计算单元协议(Path Computation Element Protocol,PCEP):为MPLS网络域间流量工程(Traffic Engineering,TE)等应用提出的,以支持集中化的路径计算。
百度MPLS戳这里:MPLS
MPLS
多协议标签交换(英语:Multi-Protocol Label Switching,缩写为MPLS):
是一种在开放的通信网上利用标签引导数据高速、高效传输的新技术。
多协议的含义:
是指MPLS不但可以支持多种网络层层面上的协议,还可以兼容第二层的多种数据链路层技术。
MPLS是利用标记(label)进行数据转发的。当分组进入网络时,要为其分配固定长度的短的标记,
并将标记与分组封装在一起,在整个转发过程中,交换节点仅根据标记进行转发。
I2RS
- 路由系统接口(Interface to the Routing System,I2RS):IETF主推的SDN南向接口协议;
- 核心思想:在传统网络设备的路由及转发系统上定义开放接口,使外部应用或控制实体可读取路由器中的信息,基于拓扑变化、流量统计等信息动态下发路由状态、策略到转发设备上,以支持网络的可编程能力。
OpFlex
- OpFlex是思科公司提出的南向接口协议;
- OpFlex是ACI内部的策略控制协议。
Open Flow 协议
Openflow消息类型
- Controller‐to‐Switch消息
- Asynchronous消息 [eɪˈsɪŋkrənəs]
- Symmetric消息
controller-to-switch 消息
- 由控制器发起,可能会要求交换机回复对应的消息。
asynchronous消息列表
- 交换机主动发起的,用于告知控制器新数据包的到达和交换机状态的改变
symmetric消息列表
- 任意一方发送,无需对方的许可或请求
Openflow消息格式
- Openflow协议数据包:Openflow Header和Openflow Message
Openflow Header格式:
Openflow Header的数据结构
/* Header on all OpenFlow packets. */
struct ofp_header {
uint8_t version; /* OpenFlow的协议版本号*/
uint8_t type; /*消息类型,是个常数*/
uint16_t length; /*数据包字节数*/
uint32_t xid; /*数据包的标识id*/
};
openflow包数据类型ofp_type是枚举类型,每个消息类型被定义为一个常数:
基于Openflow的SDN通信流程
左边的图通过hello信息连接建立的过程:
◆控制器开启TCP的6633端口等待
交换机的连接
◆交换机启动时,尝试连接到指
定控制器端口;
◆安全通道采用TLS( Transport
Layer Security)连接加密;
◆双方通过交换证书进行认证
后续的过程可以参考上方的信息
右边的图是抓包软件下的不同类型的数据包
两PC终端的信息交互过程:
①主机向网络发送数据包
②OF交换机流表无匹配项,通过
Packetln事件将数据包上报给控制器
③控制器下发流表(或PacketOut)
④数据包转发
⑤同②
⑥同③
⑦数据包转发
OF-Config概述
OF-Config协议
- OF-Config协议就是一种OpenFlow交换机管理配置协议(OpenFlow Management and Configuration Protocol)
- OpenFlow的伴侣协议( Considered a complementary protocol );
OF-Config协议与OpenFlow协议版本对应关系
协议设计需求(Requirements)
- 配置需求(Specification Requirements)
- 操作运维需求( Operational Requirements )
- 管理协议需求( Management Protocol Requirements)
配置需求(Specification Requirements)
1.控制器连接设置
- 控制器IP地址、控制器端口号和传输协议(TLS或TCP)。
2.多控制器(Multiple Controllers)
- 多控制器连接的参数配置
3.OpenFlow逻辑交换机
- 各种资源的配置,如端口或队列。
4.连接中断(Connection Interruption)
- 配置连接失效后进入的模式
两种模式:失败安全模式和失败独立模式
5.加密(Encryption)
- 身份认证方式
6.队列(Queues)
- 最小速率(min‐rate)、最大速率(max-rate)、自定义速率(experimenter)
7.端口(Ports)
- 禁止接收(no-receive)、禁止转发(no-forward)、禁止Packet-in消息(no–packetin)、管理状态(admin-state)
8.能力发现(Capability Discovery)
- 发现能力特性
9.Datapath ID
操作运维需求(Operational Requirements)
-
支持OF交换机被多个OpenFlow配置点配置
-
支持一个OpenFlow配置点管理多个OF交换
- 支持一个OpenFlow逻辑交换机被多个控制器控制
- 支持配置OpenFlow交换机的端口和队列;
- 支持OpenFlow逻辑交换机的能力发现;
- 支持配置隧道,如IPinGRE、VXLAN及NVGRE
管理协议需求(Management Protocol Requirements)
- 保障安全性,支持对交换机和配置点双向认证
- 支持配置请求和应答的可靠传输
- 支持由配置点或交换机进行连接设置
- 能够承载局部交换机配置以及大范围交换机配置
- 支持配置点在交换机配置参数及接收来自交换机的配置参数
- 支持在交换机创建、更改及删除配置信息,并支持报告配置结果
- 支持独立发送配置请求,并支持交换机到配置点的异步通知
- 支持记忆能力、可伸展性以及报告自身属性和能力
OF-CONFIG的数据模型
- OF-CONFIG采用XML来描述其数据结构
- 数据模型由类和类的属性构成
每个openflow交换机包括多个openflow逻辑交换机实例
OF-CONFIG的数据模型多种标识符
- OpenFlow Capable Switch
- OpenFlow Configuration Point
- OpenFlow Logical Switch
- Logical Switch Capabilities
- OpenFlow Controller
- OpenFlow Resource (Superclass)
- OpenFlow Port
- OpenFlow Port Feature
- OpenFlow Queue
- External Certificate
- Owned Certificate
- OpenFlow Flow Table
OpenFlow交换机数据模型为例:
OF-CONFIG传输协议
•通过NETCONF协议来传输其内容(RFC6241)
NETCONFIG协议
什么是NETCONF协议
•新一代网管协议;
•网络配置协议NETCONF(Network Configuration Protocol)提供一套管理网络设备的机制;
•2003年成立了NETCONF工作组,2011年更新版的RFC 6241发布。
NETCONF协议优点(与SNMP比较)
NETCONF协议其他特点
•区分配置数据和状态数据,提供不同的操作进行数据的增删改查。
- 配置数据(configuration data):对网络设备进行配置的数据;
- 状态数据(state data):反映设备状态的数据
- 存在多个配置数据库
NETCONF协议框架
NETCONF传输层
•为NETCONF连接提供可靠的序列号发送机制;
•提供了认证、数据完整性和安全性保障;
•SSH作为其承载协议;
NETCONF RPC层
•采用基于RPC的通讯机制;
•:请求
•:响应
NETCONF操作层
•对数据库信息的获取、配置、复制和删除等功能
NETCONF内容层
•描述了网络管理所涉及的配置数据:
•使用YANG语言进行建模,YANG具有以下特点:
- 层级树形结构
- 可以直接映射到XML
- 可读性好,易学习
- 可复用、可扩展
操作举例-<get-config`>
操作举例-<edit-config`>
操作举例-<copy-config`>
•创建或替换整个配置数据库
•如果目标存在, 则覆盖;否则,创建一个新的库
操作举例-<delete-config`>
• 配置数据库不能被删除
参考资料:中国大学 MOCC SDN网络课程