2019 SDN上机第4次作业
1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本)
-
在虚拟机上查看java版本
命令:java -version
![]()
-
其次配置java环境, 环境变量配置
命令: 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控制器
拷贝安装包
命令:tar -xf distribution-karaf-0.4.4-Beryllium-SR4.tar.gz
![]()
2. 启动并安装插件
- 启动
命令:进入ODL中bin的文件夹,运行./karaf(用一系列cd 或者一次cd和/操作以后,进入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控制器

-
创建拓扑
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 = -
查看拓扑
命令:sudo mn --custom /home/chanshanshan/sdn4.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
![]()
-
连接opendaylight控制器
4. 在控制器提供的WEB UI中下发流表使h2 20s内ping不通h3,20s后恢复
- 打开图形化界面一次打开:Yang UI>Opendaylight-inventory>config>nodes>table>flow
- 检查连通性:
![]()
- odl部署;
- 在mininet中进行h2 ping h3,点击send,由于设置了前20s不同,结果如图,icmp_seq会延迟20.
![]()
- 具体报文:
![]()
5. 借助Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表。
-
安装postman,并直接解压,进入postman界面。
-
查看刚刚下发的流表项的json格式,如下图
http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow- node- inventory:table/0/flow/1{
"flow": [
{
"id": "1",
"match": {
"in-port": "2",
"ethernet-match": {
"ethernet-type": {
"type": "0x0800"
}
},
"ipv4-destination": "10.0.0.3/32"
},
"instructions": {
"instruction": [
{
"order": "0",
"apply-actions": {
"action": [
{
"order": "0",
"drop-action": {}
}
]
}
}
]
},
"priority": "65535",
"hard-timeout": "20",
"table_id": "0"
}
]
} -
把preview里的url复制到地址栏,消息方式选择PUT,type设置为Basic Auth,填写账户和密码。
-
将preview的消息粘贴在文本框中,修改id和url里的flow为2,防止与之前的流表重合,点击send后下发成功,然后改为GET并send查看刚下发的流表,如下图
![]()
![]()











浙公网安备 33010602011771号