一、OF-CONFIG协议
1.1 OF-CONFIG设计需求
1.1.1 实现对OF v1.3.1协议设备进行配置的设计需求
1.1.2 实现操作运维的设计需求
1.1.3交换机管理协议需求
1.2 OF-CONFIG协议的数据模型
1.3 OF-CONFIG的传输协议
二、NETCONF协议
2.1 NETCONF协议相对SNMP协议的优点
2.2 NETCONF协议的特点
2.3 NETCONF协议框架
2.3.1 传输层
2.3.2 消息层
2.3.3 操作层
2.3.4 内容层
一、OF-CONFIG协议
OF-CONFIG是一种OpenFlow交换机配置协议,是OpenFlow的伴侣协议,作用是提供一个开放的接口用于远程管理和配置OF交换机。
1.1 OF-CONFIG设计需求
1.1.1 实现对OF v1.3.1协议设备进行配置的设计需求
(1)连接设置
OF交换机与控制器之间,有3个参数需要提前设置,包括控制器IP地址、控制器端口号以及传输协议。
(2)多控制器
OF-CONFIG协议提供交换机同时与多控制器连接的参数配置。
(3)OF逻辑交换机
OF v1.3.1协议规定与OF逻辑交换机有关的各种OF资源。OF-CONFIG协议必须支持对这些OF资源的配置,如对OF逻辑交换机进行端口和队列等资源的配置。
(4)连接中断
当交换机与控制器失去连接时,有Fail Secure Mode(失败安全模式)和Fail Standalone Mode(失败独立模式)两种模式可选择,OF-CONFIG 协议可预先为OF交换机配置连接失效后进入的模式。
(5)加密
为安全考虑,OF交换机与控制器第一次建立连接时,双方均进行身份认证, OF-CONFIG协议提供用户配置,两者以TLS建立连接的身份认证方式进行认证。
(6)队列
OF-CONFIG 协议提供对 OF 交换机队列最小速率(Minrate)、最大速率(Maxrate)以及自定义速率(Experimenter)3个参数的配置。
(7)端口
虽然 OpenFlow 协议本身对交换机端口参数可以进行部分配置,但不够全面系统。而端口属性配置是网络配置中必不可少的一项,OF-CONFIG协议提供以下4种属性的配置,包括禁止接收、禁止转发、禁止Packet-in消息以及管理状态等,同时也可对端口速率、双工、铜介质、光纤介质、自动协商、暂停以及非对称暂停等参数进行配置。同时,在数据中心网络等网络虚拟化环境中,OF-CONFIG协议还支持逻辑端口的配置,目前版本的OF-CONFIG 协议可以支持IPinGRE、VxLAN以及NVGRE,之后的OF-CONFIG版本可能会支持其他类型的隧道。
(8)能力发现
OpenFlow v1.3.1协议规范了多种虚拟交换机的能力特性,如多种Action类型。虽然配置这些能力超出了 OF-CONFIG 协议的范围,但是它支持发现这些能力。
1.1.2 实现操作运维的设计需求
(1)支持OF交换机被多个OF配置点配置;
(2)支持一个OF配置点管理多个OF交换机;
(3)支持一个OF逻辑交换机被多个控制器控制;
(4)支持配置OF逻辑交换机的端口和队列;
(5)支持OF逻辑交换机的能力发现;
(6)支持隧道如IPinGRE、NVGRE以及VxLAN。
1.1.3交换机管理协议需求
(1)保障安全性,支持完整、私有以及认证,支持对交换机配置点双向认证;
(2)支持配置请求和应答的可靠传输;
(3)支持由配置点或者交换机进行连接设置;
(4)能够承载局部交换机配置以及大范围交换机配置;
(5)支持配置点在交换机端配置参数以及接收来自交换机的配置参数;
(6)支持在交换机端创建、更改以及删除配置信息,并支持报告配置成功的结果以及配置失败的错误码;
(7)支持独立发送配置请求,并支持交换机到配置点的异步通知;
(8)支持记忆能力、可伸缩性以及报告其自身属性和能力。
1.2 OF-CONFIG协议的数据模型
OF-CONFIG协议的数据模型由XML(可扩展标记语言)定义。根据 OF-CONFIG在应用中与 OF交换机的关系,其数据模型如下图所示。OF-CONFIG协议的数据模型主要由类和类属性构成,其核心是由OpenFlow配置点对OF交换机的资源进行配置。

1.3 OF-CONFIG的传输协议
通过NETCONF协议来传输其内容(RFC6241)
二、NETCONF协议
通过NETCONF协议,用户可以增加、修改、删除网络设备的配置,获取网络设备的配置和状态信息。
2.1 NETCONF协议相对SNMP协议的优点
(1)NETCONF提供保护锁定机制,防止多用户操作产生冲突。
(2)NETCONF可以针对整个系统的配置数据可直接进行操作,且定义了过滤功能。
(3)具有更好的可扩展性,协议模型分层定义,各层之间相互独立,协议采用XML编码。
(4)利用现有的安全协议(SSH、TLS等)提供安全保证,并不与具体的安全协议绑定,更灵活。
2.2 NETCONF协议的特点
区分配置数据和状态数据,提供不同的操作进行数据的增删改查。
配置数据指对网络设备进行配置的数据,如创建VLAN的数据;
状态设备指反映设备状态的数据。如端口状态、端口的up/down等。NETCONF由3个标准概念配置数据库:Candidate(可选)、Running(必备)和Startup(可选)。
2.3 NETCONF协议框架
采用C/S架构,C/S之间使用NETCONF协议进行通信。协议在逻辑上可分为四层:自下往上依次为安全传输层(SSH、TLS、BEEP/TLS、SOAP/HTTP/TLS)、消息层(<rpc>、<rpc-reply>、<notification>)、操作层(<edit-config>、<get-config>)和内容层(Configuration data、Notification)
2.3.1 传输层
(1)安全传输层为NETCONF连接提供可靠的序列号发送机制;
(2)提供了认证、数据库完整性和安全性保障;
(3)安全传输层是承载在SSH/TLS等协议之上的。当一个连接建立后,C与S之间会通过hello消息进行一次NETCONF消息交互。
2.3.2 消息层
消息层采用基于RPC的通信机制。RPC使用<rpc>、<rpc-reply>元素。
2.3.3 操作层
操作层提供对数据库信息的获取、配置、复制和删除等功能。
| 基本操作 | 说明 |
| <get-config> | 从<runnming/>、<candidate/>和<startup>配置数据库中获取配置数据 |
| <get> | 从<runnming/>配置数据库中获取配置数据和设备的状态数据 |
| <edit-config> | 修改、创建、删除配置数据 |
| <copy-config> | 源配置数据库替换为目标配置数据库。如果目标配置数据库没有创建,则直接创建配置数据库,否则用源配置数据库直接覆盖目标配置数据库 |
| <delete-config> | 删除一个配置数据库,但不能删除<runnming/>配置数据库 |
| <lock> | 锁定设备的<runnming/>数据库,独占配置数据库的修改权。这种锁定防止产生冲突 |
| <unlock> | 取消用户自己之前执行的<lock>操作 |
| <close-session> | 取消用户自己之前执行的<lock>操作 |
| <kill-session> | 强制关闭另一个NETCONF会话,只有管理员用户才有权限 |
2.3.4 内容层
(1)内容层提供了网络管理所设计的配置数据,使用YANG语言进行建模。配置数据主要涉及到<runnming/>、<candidate/>和<startup>。
(2)YANG采用层级树形结构;通过YANG建立的模型,可以直接映射到XML;具有可读性号,易学习以及可复用、可扩展的特点


















