2019 SDN上机第4次作业

1.解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本)

通过如下语句打开编辑bashrc

sudo gedit ~/.bashrc

在最后加入如下代码

export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

接着解压安装OpenDayLight控制器

2.启动并安装插件

通过进入解压的压缩包,执行./bin/karaf

通过以下语句安装插件

feature:install odl-restconf
feature:install odl-l2switch-switch-ui
feature:install odl-openflowplugin-all
feature:install odl-mdsal-apidocs
feature:install odl-dlux-core
feature:install odl-dlux-node
feature:install odl-dlux-yangui

3. 用Python脚本搭建如下拓扑,连接OpenDayLight控制器

创建SDN.py文件,代码如下

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController,CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
class Mytopo(Topo):
    def __init__(self):
        Topo.__init__(self)
		s=[]
        for i in range(1):
            sw = self.addSwitch('s{}'.format(i+1))
            s.append(sw)
        count=1 
        for i in range(3):
            host = self.addHost('h{}'.format(count))
            self.addLink(s[0],host)
            count += 1
topos = {'mytopo': (lambda:Mytopo())}

创建拓扑,结果如下所示

pingall,后点击reload,得到如图所示的结果

4. 在控制器提供的WEB UI中下发流表使h2 20s内ping不通h3,20s后恢复

从Yang UI进入到最终的flow选项
分别设置nod、table、flow的值,如图所示

使h2在20s内ping不通h3首先要知道h1和h3分别连接ovs的哪个端口,在mininet中用links查询链路连接情况

h2 连接s1的port2
h3 连接s1的port3

设置相关的值,如下图所示

在mininet中进行h2 ping h3,点击send,由于设置了前20s不同,结果如图,icmp_seq会延迟20.

5. 借助Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表。

安装postman,并直接解压,进入postman界面。
通过preview查看刚刚下发的流表项的json格式,如下图

把preview里的url复制到地址栏,消息方式选择PUT,type设置为Basic Auth,填写账户和密码。

将preview的消息粘贴在文本框中,修改id和url里的flow为2,防止与之前的流表重合,点击send后下发成功,然后改为GET并send查看刚下发的流表,如下图

posted @ 2019-11-20 21:49  Yaobink  阅读(112)  评论(0编辑  收藏  举报