2019 SDN上机第4次作业

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后恢复

mininet查看链路连接情况:

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查看刚下发的流表,如下图

原文地址:https://www.cnblogs.com/zys99/p/11920361.html