1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本)
(1)配置java环境
在终端输入命令:
sudo sudo gedit ~/.bashrc
(2)对bashrc文件进行修改,在文件底部添加以下语句
export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
(3)解压安装OpenDayLight控制器
版本为:0.4.4-Beryllium-SR4
2. 启动并安装插件
(1)进入ODL的文件夹,在终端输入以下命令:
./karaf
(2)安装feature,输入以下面命令:
feature:install odl-restconf odl-l2switch-switch-ui odl-openflowplugin-all odl-mdsal-apidocs odl-dlux-core odl-dlux-node odl-dlux-yangui
(3)打开控制器UI
打开浏览器访问http://127.0.0.1:8181/index.html,登入进入ODL图形化界面
3. 用Python脚本搭建如下拓扑,连接OpenDayLight控制器
from mininet.topo import Topo
class MyTopo(Topo):
def __init__(self):
# initilaize topology
Topo.__init__(self)
# add hosts and switches
h1 = self.addHost('h1')
h2 = self.addHost('h2')
h3 = self.addHost('h3')
s1 = self.addSwitch('s1')
# add links
self.addLink(h1, s1, 1, 1)
self.addLink(h2, s1, 1, 2)
self.addLink(h3, s1, 1, 3)
topos = {'mytopo': (lambda: MyTopo())}
命令行运行
sudo mn --custom ./a.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
4. 在控制器提供的WEB UI中下发流表使h2 20s内ping不通h3,20s后恢复
ODL下发流表项设置:
依次点击Yang UI>Opendaylight-inventory>config>nodes>table>flow:
在mininet中进行h2 ping h3,点击send,由于设置了前20s不同,结果如图,icmp_seq会延迟20.
5. 借助Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表。
把preview里的url复制到地址栏,消息方式选择PUT,type设置为Basic Auth,填写账户和密码。
将preview的消息粘贴在文本框中,修改id和url里的flow为2,防止与之前的流表重合,点击send后下发成功,然后改为GET并send查看刚下发的流表,如下图