一、作业要求

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

2、启动并安装插件

3、用Python脚本搭建给定的拓扑,并连接OpenDayLight控制器

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

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

二、具体操作步骤与截图说明

1.解压并三个文件,在此不做截图

2、配置Java环境

在终端输入sudo gedit ~/.bashrc命令



对bashrc文件进行修改,在文件底部添加以下语句(Java_HOME的路径为安装的jdk所在的位置):

3、启动安装插件

进入OpenDayLigh的文件夹,运行./karaf (注意不能用sudo运行):

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

4、用Python脚本搭建给定的拓扑,并连接OpenDayLight控制器

sdn2.py代码如下:

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())}

打开OpenDayLigh,在终端输入如下命令:

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



pingall测试连通性

5、火狐浏览器访问http://127.0.0.1:8181/index.html,进入ODL图形化界面





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



分别设置nod、table、flow的值,如下图所示(其中node/openflow:1 交换机编号;table/0 流表编号;flow/不超过1024,不冲突即可流表项编号;GET为查询流表,下发流表要修改为PUT;点击加号添加流表项):



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



从链路连接情况可以看出,h2连接s1的2号端口,h3连接s1的3号端口

在Opendaylight下设置相关值,如下图所示:

id:流表项id,为任意值,不冲突即可

in-port:流表项匹配的进入端口,这里需填h2对应的port号

ethernet-type:以太网类型0x0800



layer-3-match:ipv4-match 三层匹配为ipv4匹配

ipv4-source:数据包源ip匹配项(这里由于port1进入的数据包只可能是h2发送的所以可以不填)ipv4-destination:数据包目的ip匹配项。



新增instruction list这是流表项匹配到数据报后要执行的指令

instruction:apply-actions-case 执行动作

action drop-action-case 丢包动作(转发动作为output-action 并要在output-node-connector填写转发端口)



priority 流表项优先级,要大于odl下发的默认流表,这里设置成最大65535

hard-timeout 硬超时,流表项下发后生效时长

table_id 流表id 默认为0

在mininet中h2 ping h3



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

http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/5

{
"flow": [
{
"id": "5",
"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": {}
}
]
}
}
]
},
"hard-timeout": "20",
"table_id": "0"
}
]
}

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

http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/1



将报文复制到Body内,Send

2019SDN上机第4次作业的更多相关文章

  1. 2019SDN上机第2次作业

    1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名.交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 创建拓扑: 拓扑支持OpenFlo ...

  2. 2019 SDN上机第7次作业

    2019 SDN上机第7 次作业 basic补充`/* -- P4_16 -- */ include <core.p4> include <v1model.p4> const ...

  3. 2019 SDN上机第6次作业

    2019 SDN上机第6次作业 1.实验拓扑 (1)实验拓扑 (2)使用Python脚本完成拓扑搭建 from mininet.topo import Topo from mininet.net im ...

  4. 2019 SDN上机第5次作业

    2019 SDN上机第5次作业 1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 答:官方教程实现了一 ...

  5. 2019 SDN上机第四次作业

    2019 SDN上机第4次作业 1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本) 修改环境变量 2. 启动并安装插件 3. 用Python脚本搭建如下拓扑,连接O ...

  6. 2019 SDN上机第三次作业

    2019 SDN上机第三次作业 实验一 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网络连通性 ...

  7. SDN上机第五次作业

    2019 SDN上机第五次作业 1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 1.1描述官方教程实现了一个什么样的交换机功能? 答:官方教程实 ...

  8. 2019 SDN上机第六次作业

    1.实验拓扑 (1)实验拓扑 (2)使用python脚本完成拓扑搭建 from mininet.topo import Topo class Mytopo(Topo): def __init__(se ...

  9. 2019 SDN上机第五次作业

    1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 实现将接收到的数据包发送到所有端口 控制器设定交换机 ...

随机推荐

  1. day35-python之协程

    1.协程 # import time # import queue # # def consumer(name): # # print("--->ready to eat baozi. ...

  2. [AIR] NativeExtension在IOS下的开发实例 --- Flex库项目的创建(二)

    来源:http://bbs.9ria.com/thread-102038-1-1.html 上一章,我已经介绍了如果创建IOS库文件,并定义了两个方法ShowIconBadageNumber和Init ...

  3. with读、写文件

    1.with写文件 save_file = "1.txt" str_data = "123a\nbc" with open(save_file, 'a', en ...

  4. Json序列化 总结

    案例总结:https://www.cnblogs.com/jsll/p/11855349.html public string Json_GetDepartment_Position(...)//st ...

  5. p2.BTC-数据结构

    hash pointers:哈希指针,除了保存值的地址,还要存这整个区块的内容的hash值.这样就既能访问到值,还能确定访问的值有没有被篡改. 一 Blockchain Block chain is ...

  6. c# 日期和时间System.DateTime

  7. eclipse debug问题

    出现上面的问题 可能是电脑了 工具栏的run >skip all Breakpoint : 解决办法 再点一次: Eclipse debug不跳转 解决办法

  8. linux下补丁制作和使用方法

    两个文件的情况: 制作补丁: $ diff test1.c test2.c > test.patch 给test1.c打补丁: $ patch test1.c < test.patch 还 ...

  9. 关于Istio 1.1,你所不知道的细节

    本文整理自Istio社区成员Star在 Cloud Native Days China 2019 北京站的现场分享 第1则 主角 Istio Istio作为service mesh领域的明星项目,从2 ...

  10. .net框架-数组

    .net框架所有数组均隐藏继承自System.Array. 数组有维数(Rank),长度(Length),元素类型(Element Type)基本属性. 数组基类System.Array: Array ...