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不通