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

1)JDK的安装与环境配置

​ 嗯,装这个东西还得先装JDK:

在线真人手把手教你安装jdk

​ 输入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

2.启动并安装OpenDayLight

  • 终端下执行./.../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控制器

  • Python代码

    #!/usr/bin/python
    #Creating Inernet Topo from mininet.topo import Topo
    from mininet.net import Mininet
    from mininet.node import RemoteController,CPULimitedHost
    from mininet.link import TCLink
    from mininet.util import dumpNodeConnections class MyTopo(Topo):
    def __init__(self):
    #Initialize Topology
    Topo.__init__(self) sw1 = self.addSwitch('s{}'.format(1))
    #add Hosts
    count = 1
    for i in range(0, 3):
    host = self.addHost('h{}'.format(count))
    count+=1
    self.addLink(host,sw1) topos = {'mytopo':(lambda:MyTopo())}
  • 运行结果+Pingall

  • 拓扑图

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

  • 查看拓扑端口连接:



    h1 连接 s1 端口 1、h2 连接 s1 端口 2、h3 连接 s1 端口 3

  • ODL:

  • ODL具体设置:

    • get要改成put,node/openflow:1,table/0,flow/不超过1024,flow id为1,in-port为2,type为0x0800,目的地之为10.0.0.3/32
    • instruction list中order为0,action list中order为0
    • hard-timeout为20





  • 效果:

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

  • 查看preview

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": "1",
"ethernet-match": {
"ethernet-type": {
"type": "0x0800"
}
},
"ipv4-destination": "10.0.0.3/32"
},
"instructions": {
"instruction": [
{
"apply-actions": {
"action": [
{
"drop-action": {},
"order": "0"
}
]
}
}
]
},
"flow-name": "1",
"priority": "65535",
"hard-timeout": "10",
"cookie": "0x02",
"table_id": "0"
}
]
}

打开postman,但是卡在进入界面,还会让我虚拟机疯狂死机,崩溃中上网查资料后,用rm -rf $HOME/.config/Postman后再./Postman,进入页面

将preview里的url复制到地址栏,消息方式选PUT

IP为控制器所在的PC的IP

type选择Basic Auth 用户名和密码是ODL的登录账号和密码都是admin

  • Body中将消息格式设置成json,上传方式设置为raw

    将preview中的消息粘贴在文本框内,更改id为10,点击send后下发成功

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

{
"flow": [
{
"id":"10" ,
"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"
}
]
}

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

  1. 2019 SDN上机第7次作业

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

  2. 2019 SDN上机第6次作业

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

  3. 2019 SDN上机第5次作业

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

  4. 2019 SDN上机第四次作业

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

  5. 2019 SDN上机第三次作业

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

  6. SDN上机第五次作业

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

  7. 2019 SDN上机第六次作业

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

  8. 2019 SDN上机第五次作业

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

  9. 2019 SDN上机第4次作业

    1. 解压安装OpenDayLight控制器(本次实验统一使用Beryllium版本) 配置java环境 安装OpenDayLight控制器 2. 启动并安装插件 cd distribution-ka ...

  10. 2019 SDN上机第3次作业

    1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网络连通性 创建拓扑 配置主机h1和h2的I ...

随机推荐

  1. 买条Vineyard Vines裙子为啥子那么难?因为能遮胖?因为英国王子穿过?

    为了这件vineyard vines, 我周六冒雨,去斯坦福shopping center说卖完了,我冒雨赶回家,上网买到了,今天早上发email说没货了,自动取消我的订单.我下午又打了40分钟电话给 ...

  2. Jboss未授权访问部署木马 利用exp

    查看系统名称 java -jar jboss_exploit_fat.jar -i http://www.any.com:8080/invoker/JMXInvokerServlet get jbos ...

  3. docker-compose deploy replicaSet in standalone MongoDB cluster and with auth

    经过两天的折腾,终于实现了自己想要的效果,就是通过docker-compose 部署最新的mongodb replicaSet, 主要是为了测试 4.2 最新的多文档事务,下面将整个步骤分享一下: d ...

  4. TimeUtil 工具类

    /** * TODO * * @auther xh * @date 6/11/19 3:32 PM */ public class TimeUtil { public static final Str ...

  5. 如何在调用Marketing Cloud contact创建API时增加对扩展字段的支持

    需求:扩展字段"微信ID"是我创建出来的extension field,我想用Marketing Cloud提供的contact creation API,在创建contact时也 ...

  6. 利用python3 爬取 网易云 上 周杰伦所有专辑,歌曲,评论,并完成可视化分析已经歌曲情绪化分析

    这篇文章适合于python爱好者,里面可能很多语句是冗长的,甚至可能有一些尚未发现的BUG,这个伴随着我们继续学习来慢慢消解吧.接下来 我把里面会用到的东西在这里做一个简单总结吧:本文用到了两门解释性 ...

  7. HTML5常用的语义化标签

    快速查询 article | aside | nav | section | header | footer 架构预览 nav 定义导航链接的部分 在页脚显示一个站点的导航链接,如首页.服务信息页面. ...

  8. $(selector).each() 和$each() 的区别

    今天在做项目的时候, 后台数据需要循环遍历出来, 想到each,    结果,竟然不记得语法了 现在来回顾一下,而搜索了一下,竟然发现有两种each  一种就是$(selector).each()  ...

  9. u-boot从nand 启动时的问题解决记录

    u-boot从nand 启动时的问题解决记录 问题描述: 使用u-boot-1.1.6版本u-boot移植到JZ2440开发板上,当前已经能够从Nor启动,但是不能从Nand正常启动(u-boot大小 ...

  10. java.util.NoSuchElementException

    问题引入 Java商店作业不同函数里需要获取用户输入,用Scanner的时候,出现了异常java.util.NoSuchElementException 作业中代码模式如下,func1和func2中都 ...