软件定义网络(SDN) -  OpenFlow和OVSDB连接

本文基于SDN控制器和基于Openflow的交换机之间的OpenFlow和OVSDB连接,并提供有关连接生命周期的详细信息。 我们将使用开源SDN控制器, Opendaylight(ODL)碳释放 和Openflow虚拟交换机, OpenVswitch(OVS)版本2.6.0 来描述OVSDB和Openflow连接。

SDN控制器通过两种类型的连接管理底层Openflow交换机:

  • OVSDB
  • OPENFLOW

OVSDB和Openflow连接

OVSDB是OVS数据库管理协议,其定义OVS数据库的模式和控制器与交换机之间通信的规范。 SDN控制器使用此协议通过使用预期配置填充其数据库来控制OVS交换机。

通常,SDN控制器以被动模式运行,以分别从端口6640和6653上的OVS监听OVSDB和Openflow连接。

所以首先让我们启动ODL控制器,你可以从 这里 下载 将系统中的JAVA_HOME环境变量设置为最新的Java版本是一个先决条件。 运行ODL是如此简单,只需下面的步骤:

  1. 这里 下载ODL分发
  2. 解压缩ODL分发。
  3. 输入 下载包顶层目录下 'bin' 子目录。
  4. 运行以下命令让您的控制器:karaf

以下是执行上述步骤的图像:

由于我们需要管理OVSDB和Openflow连接的OVS交换机,因此需要将Openflow和OVSDB插件安装到ODL中。 这是要做的 这可以做到如下所示:

一旦安装了Openflow和OVSDB插件,ODL将分别开始在6653和6640端口监听Openflow和OVSDB连接。 这可以通过运行以下命令在控制器检查:

netstat -a | grep 6653
netstat -a | grep 6640

注意,在执行任何OVS命令之前,OVS开关应该已经在运行。 要在Ubuntu上运行OVS,请使用root权限运行以下命令:

sudo /etc/init.d/openvswitch-switch start

它可作为服务使用,因此您也可以检查其状态。

sudo /etc/init.d/openvswitch-switch status

一旦OVS正在运行,您也可以执行其CLI命令。 例如,

sudo ovs-vsctl show

以下是上述命令执行输出的图像:

在OVS侧,运行以下命令以启动与控制器的OVSDB连接:

ovs-vsctl set-manager tcp:<controller-IP>:6640

要确认连接建立,可以运行以下命令,显示输出中的 “is_connected” 标志设置为true。

sudo ovs-vsctl show

Open Bridge连接是在桥上进行的,因此您可以在OVS上创建网桥,也可以通过OVSDB连接将配置发送到OVS,也可以在OVS上创建网桥。 在OVS中的桥上,可以运行以下命令将网桥连接到ODL, ODL 建立在ODL和OVS之间建立Openflow连接。

ovs-vsctl set-controller <bridge name> tcp:<controller-IP>:6653

请查看下面的连接详情。

从OVS方面看,OVSDB和Openflow连接已经完成,并且可以通过运行以下命令在ODL侧验证相同的。

netstat -a | grep 6653
netstat -a | grep 6640

检查以下图像输出确认连接的命令ESTABLISHED状态:

由于OVSDB和Openflow连接 基于TCP,因此可以通过Wireshark软件轻松捕获ODL和OVS之间交换的消息。 检查下面的数据包捕获图像,显示在连接设置期间交换的消息。

在Wireshark数据包捕获日志中,您可以看到在连接设置期间在控制器和OVS之间交换的各种Openflow消息。

正如您在连接设置期间看到的,ODL发送了FEATURES_REQUEST Openflow消息,作为响应,ODL从OVS接收到FEATURES_REPLY。 在FEATURES_REPLY消息中,ODL获取OVS网桥的数据路径ID(即唯一标识符),它负责转发(基于由OFL配置的Openflow规则)连接到OVS端口的虚拟机之间的流量。

在OVS侧,可以运行以下命令来显示桥的详细信息。

sudo ovs-ofctl show br-int -OOpenFlow13

检查下面的图像输出命令:

在这里,您可以看到FEATURE_REPLY显示OVS上桥接器的数据路径ID(十六进制格式)。

即使ODL具有仪表板DLUX功能,它可以通过url http:// localhost:8181 / index.html 向ODL控制器提供GUI Web界面 ,ODL用户可以登录(默认用户名和密码为“admin”),并检查网络拓扑ODL正在运行的系统的浏览器。 检查下面的图像相同。

在上图中,您可以看到OVS交换机显示在由ODL控制器管理的网络拓扑中。 既然,我们只连接了一个交换机,这就是为什么只显示一个Openflow节点。 这里显示OVS开关,其数据路径ID为十进制格式。

要使用ODL删除Openflow连接,可以在OVS下运行以下命令:

ovs-vsctl del-controller <bridge name>

要使用ODL删除OVSDB连接,可以在OVS下运行以下命令:

ovs-vsctl del-manager

连接被删除后,当建立连接时,'is_conncted'标志为'true',将从OVS的'ovs-vsctl show'CLI命令的输出中消失。

检查以下图像,从OVS侧启动OpenFlow和OVSDB连接删除:

对于调试和故障排除,您可以检查ODL和OVS中维护的日志文件。

ODL记录路径

当您解压缩ODL分发(您已下载)并且运行' karaf' 二进制可执行文件时, 将创建包含 karaf.log 文件的 log” 子目录 ,其通用路径为: 〜/ distribution-karaf- <version -number> - <release name> / data / log。

检查以下图像的ODL端日志文件。

OVS记录路径

当OVS运行时,它将生成一个名为“ovsdb-server.log”的OVSDB日志文件和名为“ovs-vswitchd.log”的Openflow日志文件,路径为:

/var/log/openvswitch

检查OVSDB(ovsdb-server.log)和OVS的Openflow模块(ovs-vswitchd.log)的OVS端日志文件。

                                                   +===+
This article is co-authored by Tarun Thakur.

参考文献:

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏