实验 7:OpenDaylight 实验——Python 中的 REST API 调用

一、实验目的

对 Python 调用 OpenDaylight 的 REST API 方法有初步了解

二、实验任务

本实验需要用另一种方法完成上一个实验相同的功能,即通过 Python 程序调用 OpenDaylight 的北向接口下发关于硬超时的流表,实现拓扑内主机在一定时间内的网络通断。

三、实验步骤

1. 实验环境

安装了 Ubuntu 16.04.5 Desktop amd64 的虚拟机

2. 实验过程

(1)生成拓扑

$ sudo mn --topo=single,3 --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13

生成拓扑之后发现 ping 失败

解决办法:要在 OpenDaylight 启动之后再生成拓扑

(2)编写 Python 代码和 JSON 格式的请求内容

$ nano odlnorth.py
$ nano hardtimeout.json

(3)运行 Python 代码,完成流表下发

运行 odlnorth.pu报错

解决办法:没有安装 requests库,执行以下安装

$ sudo apt-get install python-pip //如果 pip 没装的话需要运行
$ sudo pip install requests

安装 pip 中报错

解决办法:查询了一些资料之后发现可能是之前的 apt 命令没有执行完成就被关掉了。开启 root 权限,执行以下两条命令强制解锁
(我没有用 root 权限也试过,结果仍让报错)

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

执行完后再次执行安装 pip 命令

成功了,但是安装的速度非常非常慢,基本不动。于是我又去查询资料看看能不能安装的快点。
解决办法:可以通过更新 apt-get 的源来解决这个问题。具体的步骤可以参考以下这篇博客。
https://blog.csdn.net/gxz987/article/details/98185262


可以发现更新完之后的速度非常快。

解决了前面的问题之后,启动 OpenDaylight,建立拓扑,运行 odlnorth.py。

实验结果与预期一致。

四、总结

这次实验整体上并不难,有实验六的基础做起来很快。唯一让我比较困扰的就是中间 pip 安装出现的两次问题,好在都顺利解决了。

posted @ 2020-10-14 23:33  做梦好啊  阅读(31)  评论(0编辑  收藏