1.配置JAVA环境
(1)在终端输入如下命令:
sudo gedit ~/.bashrc
(2)将最后四行复制到终端:
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
2.启动OpenDayLight并安装插件
(1)进入ODL的文件夹,在终端输入如下命令:
./karaf
(2)安装feature,输入如下面命令:
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)打开控制器UI
打开浏览器访问http://127.0.0.1:8181/index.html,登入进入ODL图形化界面
3. 用Python脚本搭建如下拓扑,连接OpenDayLight控制器
(1)Python代码,文件命名为mytopo.py:
from mininet.topo import Topo class MyTopo(Topo): def __init__(self): Topo.__init__(self) h1 = self.addHost('h1') h2 = self.addHost('h2') h3 = self.addHost('h3') s1 = self.addSwitch('s1') self.addLink(h1, s1, 1, 1) self.addLink(h2, s1, 1, 2) self.addLink(h3, s1, 1, 3) topos = {'mytopo': (lambda: MyTopo())}
(2)打开ODL
(3)创建拓扑并进行pingall
通过命令执行文件
sudo mn --custom mytopo.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13
4. 在控制器提供的WEB UI中下发流表使h2 20s内ping不通h3,20s后恢复
(1)在控制器的Web中依次打开 Yang UI-->Opendaylight-inventory-->config-->nodes-->table-->flow
(2)首先使用links查询链路连接情况
可以看出h1连接s1的port1,h2连接s1的port2, h3连接s1的port3
故可以让下发策略使port2进来的目的IP为h3的数据包都drop掉,这样就可以ping不通
(3)参数设置
(4)参数设置完成后,按下图所示设置,再点击send,令h2在20秒内无法ping通h3
如图
5. 借助Postman通过OpenDayLight的北向接口下发流表,再利用OpenDayLight北向接口查看已下发的流表。
(1)打开postman,将ODL的preview里的url复制到地址栏,消息方式选PUT;IP为控制器所在的PC的IP;type选择Basic Auth ;用户名和密码是ODL的登录账号和密码都是admin
(2)Body中将消息格式设置成json,上传方式设置为raw,将ODL的preview中的消息粘贴在文本框内,点击send后下发成功
(3)发送成功后改为GET并send查看刚刚下发的流表项
来源:https://www.cnblogs.com/tinygod/p/11895463.html