2019 SDN上机第4次作业

只谈情不闲聊 提交于 2019-12-05 15:43:07

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

OpenDayLight是java实现的,因此需要先配置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

先执行第一条命令,然后把后面的语句保存到bashrc文档
OpenDaylight官网
https://www.opendaylight.org/
OpenDaylight Beryllium版本下载地址,本次实验请安装下面这个版本↓↓↓↓↓

2.启动并安装插件

安装命令

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控制器

建立如下拓扑

python拓扑代码:

from mininet.topo import Topo
class Mytopo(Topo):
    def __init__(self):
        Topo.__init__(self)
        sw=self.addSwitch('s1')
        count=1
        for i in range(3):
                host = self.addHost('h{}'.format(count))
                self.addLink(host,sw,1,count)
                count = count + 1
topos = {'mytopo': (lambda:Mytopo())}

执行命令

sudo mn --custom /home/mowei/1.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13


拓扑:

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

ODL具体设置:

get要改成put,node/openflow:1,table/0,flow/不超过1024,flow id为1,in-port为2,type为0x0800(2048),目的地址为10.0.0.3/32

查看

node/openflow:1 交换机编号
table/0 流表编号
flow/不超过1024,不冲突即可 流表项编号
GET为查询流表,下发流表要修改为PUT

配置match

id=:流表项id,任意值,不冲突即可
in-port:流表项匹配的进入端口,这里需填h1对应的port号
ethernet-type:以太网类型0x0800表示以太网帧是ip协议
layer-3-match:ipv4-match 三层匹配为ipv4匹配
ipv4-source:数据包源ip匹配项(这里由于port2进入的数据包只可能是h2发送的所以可以不填)
ipv4-destination:数据包目的ip匹配项


配置instructions

instruction list这是流表项匹配到数据报后要执行的指令
order=:0 指令id0
instruction=:apply-actions-case 执行动作
新增action list=:
action drop-action-case 丢包动作

超时效果图:

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

(1)通过preview查看刚刚下发的流表项的json格式,可以调用北向接口传送json数据来对ODL下发指令(如果刚刚下发的流表项内容找不到了可以通过node id, table id, flow id, GET回来,然后把GET按钮切换成PUT按钮查看preview)


(2)安装Postman下发并查看流表

下载解压Postman压缩包
cd Postman/ ./Postman
用以上命令打开postman,将preview里的url复制到地址栏,消息方式选PUT,IP为控制器所在的PC的IP,type选择Basic Auth ,用户名和密码是ODL的登录账号和密码都是admin

(3)修改put为get,点击send后查看body,ody中将消息格式设置成json,上传方式设置为raw,将preview中的消息粘贴在文本框内,可以看到参数都是在ODL里面设置的为了避免和之前ODL下发过的重合,在这把流表项id改为2或者删除之前发的流表项,修改消息内id的同时url后的flow id也要改为2,否则会收到error,点击send后下发成功,

发送成功后改为GET并send查看刚刚下发的流表项:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!