SDN 下用ODL实现QoS保障(4)-OVS与ODL交互

博主转方向了,此系列不再更新

1.OVS与ODL之间的交互的两种协议

ODL连接OVS主要有两种协议:OpenFlow,OVSDB
Openflow方式下,ODL作为OVS的controller,来给OVS下发流表。OVSDB方式下,ODL作为OVS的manager,用来配置OVS,包括创建bridge和port等。在生产环境中,这两中协议一般配合使用。Ovsdb-server服务处理OVSDB协议,ovs-vswitchd服务处OpenFlow协议。
SDN 下用ODL实现QoS保障(4)-OVS与ODL交互_第1张图片
摘自 SDNLAB-基于OpenDaylight和OVSDB搭建VxLAN网络

2.OpenFlow协议

在 SDN 下用ODL实现QoS保障(2)-创建网络拓扑这篇文章里面,ODL连接OVS使用的就是OpenFlow1.3版本的协议。
SDN 下用ODL实现QoS保障(4)-OVS与ODL交互_第2张图片
因此,OVS 与 ODL已经通过OpenFlow协议连接在一起。
下面就是探索如何把OVS与ODL通过OVSDB协议连接起来。

3.OVSDB协议介绍

这个协议主要是用来配置OVS使用。举个例子,在实现QoS的时候,往往会用到给交换机端口下队列这种情况,在仅仅依靠OpenFlow协议无法实现上述功能,但OVSDB协议对此具有良好的支持,因此,OVSDB协议是OpenFlow1.3协议的良好补充。因此这两种协议经常在一起使用。

4.ODL与OVS通过OVSDB协议连接

ODL与OVS的连接共分为两种方式,主动连接与被动连接。
在介绍这两种连接方式之前,回想一下,在第一篇博客,我们在安装ODL组件的时候,可以看到我们可以看到,我们已经安装了用来支持OVSDB相关的组件了。
SDN 下用ODL实现QoS保障(4)-OVS与ODL交互_第3张图片
在安装OVS相关的组件之后,ODL系统在启动的时候会监听主机的6640端口,这就是用来支持OVSDB的端口。
SDN 下用ODL实现QoS保障(4)-OVS与ODL交互_第4张图片
如果你的主机的这个端口未开放的话,重新安装一下ODL组件就行。

4.1 主动连接

主动连接就是OVS主动连接到作为manager的ODL服务器。
连接方式很简单,在系统的命令行下输入 ovs-vsctl set-manager tcp:127.0.0.1:6640

因为在我的实验环境下,OVS 与 ODL处于同一个主机里面,所以直接填写了本地环回地址,否则这里面的IP地址部分应该填写ODL所在的主机的IP地址,切记!

这里写图片描述
此时,在ODL所在主机里面访问:
http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/ovsdb:1
应该出现类似于这样的页面:
SDN 下用ODL实现QoS保障(4)-OVS与ODL交互_第5张图片

4.2 被动连接

顾名思义,被动连接跟主动连接相反,是由ODL服务器主动连接到OVS服务器,这时OVS是被动等待连接的,那么就出现了一个问题,ODL服务器怎么知道OVS服务器在哪?
设置OVS为被动连接:sudo ovs-vsctl set-manager ptcp:6641
这时候端口为什么要设置成6641呢,不能设置成6640,因为我们的OVS与ODL搭建在了同一个主机里面了,主机端口6640被ODL占用了,否则正常情况下还是得设置成6640的。
接下来我们要告诉ODL关于OVS的相关信息,就是OVS的IP地址与端口信息,这样ODL就能连上OVS了。
在这里我们要借助一个工具-psotman,下载地址如下,我打算直接在Ubuntu里面使用,因此下载Linux版本。
SDN 下用ODL实现QoS保障(4)-OVS与ODL交互_第6张图片
安装包下回来,解压后直接用就行了。
SDN 下用ODL实现QoS保障(4)-OVS与ODL交互_第7张图片
SDN 下用ODL实现QoS保障(4)-OVS与ODL交互_第8张图片

发送以下请求使得ODL去连接OVS
URL=http://127.0.0.1:8181/restconf/config/network-topology:network-topology/topology/ovsdb:1/
Action=POST
Content =

{
“network-topology:node”:[
{
“node-id”: “ovsdb://127.0.0.1:6641”,
“connection-info”: {
“ovsdb:remote-port”: 6641,
“ovsdb:remote-ip”: “127.0.0.1”
}
}
]
}

### 要怎么发送上面这个请求呢?
>**设置请求方式以及URL**
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMTA5MjEwOTI4Mzkx)
**设置认证方式**
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMTA5MjEwODAwMTIw)
**设置Body**
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMTA5MjExMjI1NTIz)

请求发送完成后,在Ubuntu命令行输入 **ovs-vsctl show**,应该看到如下内容:
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMTA5MjEyMjI4MDc1)

>postman发送如下请求
URL=http://127.0.0.1:8181/restconf/operational/network-topology:network-topology/topology/ovsdb:1
Action=GET
应该看到如下结果:
![这里写图片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcxMTA5MjEzMTU5Mzcx)

### 4.3 总结
可以看到还是主动模式简单一点,接下来的实验在主动模式下开展。
### 4.4 一些补充
如果你要删除OVS的manager,在系统命令行下输入命令 **ovs-vsctl del-manager ** 

你可能感兴趣的:(SDN)