1.4OF-CONFIG南向接口协议学习

发布时间 2023-06-08 09:03:16作者: ChuenSan

OF-CONFIG南向接口协议学习

任务目的

1、了解OF-CONFIG协议的基本原理。
2、掌握使用OF_CONFIG协议配置交换机的方法。

任务环境
设备名称 软件环境(镜像) 硬件环境
交换机 Ubuntu 14.04桌面版 Open vSwitch ofconfig CPU:1核 内存:2G 磁盘:20G

注:系统默认的账户为:
管理员权限用户名:root,密码:root@openlab;
普通用户用户名:openlab,密码:user@openlab。
可查看当前实验环境右侧“钥匙”img 按钮获取对应的密码。

任务内容

1、学习OF-CONFIG协议的基本原理,了解其可以实现的功能。
2、使用OF-CONFIG协议添加、删除交换机端口,修改交换机端口状态。

实验原理

在ONF组织制定的SDN标准体系中,除了OpenFlow之外,还有一个名为OF-CONFIG(OpenFlow Configuration and Management Protocol)的协议同样引起了业界广泛的关注。在OpenFlow协议中,控制器向OF交换机发送流表以控制数据流的转发行为,但是它并没有规定如何去管理和配置这些OF交换机,而OF-CONFIG就是为解决这一问题而提出的。OF-CONFIG与OpenFlow之间存在着密切的关系,因此随着OpenFlow标准的演进,OF-CONFIG的版本也在不断跟进,目前已更新至OpenFlow v1.2版本。OF-CONFIG协议的演进主要体现在配置能力的提升上,例如除了OF-CONFIG v1.0所能提供的3项基本功能外,v1.1版本还能支持对OpenFlow逻辑交换机与控制器之间的安全通信证书的配置,支持OpenFlow逻辑交换机的发现,支持多种数据隧道类型(包括IPinGRE、VxLAN、NVGRE等)。OF-CONFIG v1.1.1在v1.1版本的基础上增加了对OpenFlow v1.3.1协议的支持,而OF-CONFIG v1.2版本则主要增加了对NDM(Negotiable Datapath Model,可协商数据平面模型)的支持。
随着功能的提升,OF-CONFIG协议的数据模型也有相应的调整,例如增加了逻辑交换机能力、认证等新的数据模型。另外,在一些细节的配置项目上,之后的OF-CONFIG版本也都有不同程度的改进和完善。
作为OpenFlow协议的“伴侣”协议,OF-CONFIG的作用是提供一个开放接口用于远程管理和配置OF交换机。它并不会影响到流表的内容和数据转发行为,对实时性也没有太高的要求。具体地说,诸如构建流表和确定数据流走向等事项将由OpenFlow规范进行规定,而诸如如何在OF交换机上配置控制器IP地址、如何配置交换机端口上的队列等操作则由OF-CONFIG协议完成。OF-CONFIG提供配置OF交换机的能力,这里所指的OF交换机可以是一个物理交换机,也可以是一个虚拟的网络转发设备。
OpenFlow交换机上所有参与数据转发的软硬件(例如端口、队列等)都可被视为网络资源,而OF-CONFIG的作用就是对这些资源进行管理。OF-CONFIG与OpenFlow的关系如下图所示。
image-20230524182923662
OpenFlow配置点是指通过发送OF-CONFIG消息来配置OF交换机的一个节点,它既可以是控制器上的一个软件进程,也可以是传统的网管设备,它通过OF-CONFIG协议对OF交换机进行管理,因此该协议也是一种南向接口协议。OF-CONFIG定义的各组件之间的逻辑关系如图1所示。需要说明的是,OpenFlow配置点与控制器之间的交互不在OF-CONFIG协议的规定范围。OpenFlow协议的不断演进,对OF-CONFIG的设计也提出了越来越多的需求。为了应对这种情况,OF-CONFIG定义了利用业界相对非常成熟的NETCONF协议来实现OF-CONFIG协议的传输。
OF-CONFIG最主要的设计目标是协助OpenFlow协议,支持用户远程对OF交换机进行配置和管理。除此之外,OF-CONFIG还根据自身的需要制定了多种场景下的操作运维需求以及对交换机管理协议的需求,本小节将从上述几个方面分析OF-CONFIG v1.1.1的功能。
1、 实现对OpenFlow v1.3.1协议设备进行配置的设计需求

  • 连接设置
    OF交换机与控制器连接之前,有3个参数需要提前设置,包括控制器IP地址、控制器端口号以及传输协议。
  • 多控制器
    OF-CONFIG协议提供交换机同时与多控制器连接的参数配置。
  • OpenFlow逻辑交换机
    OpenFlow v1.3.1协议规定了与OpenFlow逻辑交换机有关的各种OpenFlow资源。OF-CONFIG协议必须支持对这些OpenFlow资源的配置,如对OpenFlow逻辑交换机进行端口和队列等资源的配置。
  • 连接中断
    当交换机与控制器失去连接时,有Fail Secure Mode(失败安全模式)和Fail Standalone Mode(失败独立模式)两种模式可选择,OF-CONFIG协议可预先为OF交换机配置连接失效后进入的模式。
  • 加密
    为安全考虑,OF交换机与控制器第一次建立连接时,双方均进行身份认证,OF-CONFIG协议提供用户配置,两者以TLS建立连接的身份认证方式。
  • 队列
    OF-CONFIG协议提供对OF交换机队列最小速率(Minrate)、最大速率(Maxrate)以及自定义速率(Experimenter)3个参数的配置。
  • 端口
    虽然OpenFlow协议本身对交换机端口参数可以进行部分配置,但不够全面系统。而端口属性配置是网络配置中必不可少的一项,OF-CONFIG协议提供以下4种属性的配置,包括禁止接收、禁止转发、禁止Packet-in消息以及管理状态等,同时也可对端口速率、双工、铜介质、光纤介质、自动协商、暂停以及非对称暂停等参数进行配置。同时,在数据中心网络等网络虚拟化环境中,OF-CONFIG协议还支持逻辑端口的配置,目前版本的OF-CONFIG协议可以支持IPinGRE、VxLAN以及NVGRE,之后的OF-CONFIG版本可能会支持其他类型的隧道。
  • 能力发现
    OpenFlow v1.3.1协议规范了多种虚拟交换机能力特性,如多种Action类型。虽然配置这些能力超出了OF-CONFIG协议的范围,但是它支持发现这些能力。表1对上述配置项进行了总结。
    1 OF-CONFIG v1.1.1支持的OpenFlow v1.3.1协议支持的配置需求
项目 说明
控制器连接 支持在交换机上配置控制器参数,包括IP地址、端口号及连接使用的传输协议等
多控制器 支持多个控制器的参数配置
逻辑交换机 支持对逻辑交换机(即OF交换机的实例)的资源(如队列、端口等)设置,且支持带外设置
连接中断 支持故障安全,故障脱机等两种应对模式的设置
加密传输 支持控制器和交换机之间TLS隧道参数的设置
队列 支持队列参数的配置,包括最小速率、最大速率、自定义参数等
端口 支持交换机端口的参数和特征的配置,即使OpenFlow v1.2中并没有要求额外的配置方式
能力发现 发现虚拟交换机的能力特性

2、 实际操作运维的设计需求
除了上述为支持OpenFlow协议而制定的设计需求外,为便于交换机的操作运维,OF-CONFIG v1.1.1协议必须支持以下几种场景:

  • 支持OF交换机被多个OpenFlow配置点配置;
  • 支持一个OpenFlow配置点管理多个OF交换机;
  • 支持一个OpenFlow逻辑交换机被多个控制器控制;
  • 支持配置OpenFlow逻辑交换机的端口和队列;
  • 支持OpenFlow逻辑交换机的能力发现;
  • 支持配置隧道如IPinGRE、VxLAN以及NVGRE。
    3、 交换机管理协议需求
    OF-CONFIG v1.1.1协议定义了OF交换机与OpenFlow配置点间的通信标准,主要包括交换机的管理协议部分以及数据模型的设计。其中数据模型部分将在下一节具体介绍,交换机的管理协议部分则有以下设计需求:
  • 保障安全性,支持完整、私有以及认证,支持对交换机和配置点双向认证;
  • 支持配置请求和应答的可靠传输;
  • 支持由配置点或者交换机进行连接设置;
  • 能够承载局部交换机配置以及大范围交换机配置;
  • 支持配置点在交换机配置参数以及接收来自交换机的配置参数;
  • 支持在交换机创建、更改以及删除配置信息,并支持报告配置成功的结果以及配置失败的错误码;
  • 支持独立发送配置请求,并支持交换机到配置点的异步通知;
  • 支持记忆能力、可伸展性以及报告其自身属性和能力。
实验步骤

一、实验环境检查

登录主机,打开Terminal终端窗口,使用命令ifconfig查看主机IP地址,如下图所示。

image-20230524182932069

二、启动服务

步骤1 切换root用户登录主机,执行以下命令启动必要的服务ofconfig、netopeer-server。

# ofc-server
# netopeer-server –d

执行以下命令查看服务是否启动成功。

# ps -ef|grep ofc
# ps -ef|grep neto

image-20230524182937202
注:如果启动不成功,再次执行启动命令直至启动成功。

步骤2 执行以下命令启动netopeer-cli,并连接netopeer-server。

# netopeer-cli**
>connect --port 830 --login openlab 10.0.0.10

注:830是netopeer-server的默认监听端口,openlab是系统用户名,10.0.0.10是服务所在主机IP地址。

image-20230524182941272

三、配置交换机端口

步骤1 创建端口eth1。

创建端口的脚本在镜像中已经给出:/root/create_port_eth1.xml,执行命令创建端口。

> edit-config --config=/root/create_port_eth1.xml running

image-20230524182946613

步骤2 重新打开另一个Terminal窗口,执行命令ifconfig查看当前主机eth1是否添加成功,默认为启动状态。

image-20230524182950122

步骤3 修改eth1端口状态为down。

切换到第一个命令行执行窗口,修改eth1端口状态为down的脚本已经在镜像中给出:/root/port_openflow_set_down.xml,执行命令修改端口状态。

> edit-config --config=/root/port_openflow_set_down.xml running

img

步骤4 分别用命令ifconfig和ifconfig -a查看eth1状态,如下图所示。

image-20230524183112406
image-20230524183117150
以上截图说明eth1网卡存在,但是状态是down。

步骤5 修改eth1端口状态为up。

修改eth1端口状态为up的脚本已经在镜像中给出:/root/port_openflow_set_up.xml,直接执行命令:

> edit-config –config=/root/port_openflow_set_up.xml running

image-20230524182958478

步骤6 执行命令ifconfig查看eth1状态,如下图所示。

image-20230524183002065

步骤7 删除端口eth1。

删除端口的脚本在镜像中已经给出:/root/remove_port_eth1.xml,执行以下命令删除端口。

> edit-config --config=/root/remove_port_eth1.xml running

image-20230524183007260

步骤8 执行命令ifconfig -a查看eth1是否已被删除,如下图所示。

image-20230524183011422
由上图可知,成功删除eth1端口。