实验4:开源控制器实践——OpenDaylight

实验4:开源控制器实践——OpenDaylight

一、实验目的

  1. 能够独立完成OpenDaylight控制器的安装配置
  2. 能够使用Postman工具调用OpenDaylight API接口下发流表

二、实验环境

  1. 下载虚拟机软件Oracle VisualBox或VMware
  2. 在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet

三、实验要求

(一)基本要求

  1. 配置JAVA环境,下载并解压安装OpenDaylight,版本选择Carbon 或 Beryllium
  2. 下载并解压安装Postman
  3. 利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器
    实验4:开源控制器实践——OpenDaylight
  • 构造上述拓扑
    实验4:开源控制器实践——OpenDaylight
  • 连接OpenDayLight控制器
    实验4:开源控制器实践——OpenDaylight
  1. 通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。
  • 输入url
    http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/flow-node-inventory:table/0/flow/1
  • 得到的json
    实验4:开源控制器实践——OpenDaylight
{
    "flow": [
        {
            "id": "1",
            "match": {
                "in-port": "1",
                "ethernet-match": {
                    "ethernet-type": {
                        "type": "0x0800"
                    }
                },
                "ipv4-destination": "10.0.0.3/32"
            },
            "instructions": {
                "instruction": [
                    {
                        "order": "0",
                        "apply-actions": {
                            "action": [
                                {
                                    "order": "0",
                                    "drop-action": {}
                                }
                            ]
                        }
                    }
                ]
            },
            "flow-name": "flow1",
            "priority": "65535",
            "hard-timeout": "10",
            "cookie": "2",
            "table_id": "0"
        }
    ]
}
  • 实现h1和h3网络中断10s
    实验4:开源控制器实践——OpenDaylight

(二)进阶要求

  1. 查找资料,整理和记录ODL控制器主要的REST API文档,包括但不限于ODL提供的文档链接,获取拓扑的交换机、获取流表状态数量、获取特定交换机端口的状态、新增修改和删除流表等。
  • 获取拓扑交换机
    实验4:开源控制器实践——OpenDaylight

  • 流表的增删改查
    实验4:开源控制器实践——OpenDaylight

  • 获取交换机中某个流表信息
    http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/{id}/table/{id}
    实验4:开源控制器实践——OpenDaylight

  • 获取指定交换机信息
    http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/{id}
    实验4:开源控制器实践——OpenDaylight


个人总结

实验难度

总体适中,初期准备相对复杂
本次实验耗费时间相较于之前的实验而言相对较长,然而我真是在推进实验的时间占比并不是很大,大多数时间在JAVA安装及环境变量的设置、OpenDayLight的配置和等待启动(不得不说我这里ODL启动真的慢)、以及Ryu的安装。而实验进行上遇到的困难也基本都和ODL有关,Postman相对友好

实验四遇到的问题

  • 遭遇问题:下载的java的.tar.gz文件没法贴到/usr/local/java/目录下
  • 解决方法:运用sudo权限即可解决,我是直接通过sudo cp -r 文件名 路径把下好的.tar.gz文件复制到上述目录下的。
  • 遭遇问题:安装Ryu时,pip经常出现出现报错然后中断安装
  • 解决方法:其实这个不算大问题,pip换源即可解决,通过 pip install -i 国内源 换源之后,发现十分顺滑。
  • 遭遇问题:按照ppt里的sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13创建了拓扑,但是出现Unable to contact to the controller at 127.0.0.1:6633并且主机全ping不通
  • 解决方法:这个问题的主要就是ODL启动较慢,导致拓扑连不上ODL控制器。在咨询老师后,我清了下拓扑和ODL残余流,又等了好一会儿(2000 years later),终于正常连通拓扑了。

实验心得

本次实验主要涉及了OpenDayLight控制器的使用,以及对Postman应用有了初步的了解。同时对于我个人而言,对于Mininet的指令及其运用又有了更进一步的认识与掌握。然而,对于SDN的总体架构的认识仍还不够系统化、一体化,对于这次实验主要的ODL的使用也仍未熟练,这有待接下来进一步的学习和实际应用。

上一篇:[论文笔记]Delving into Transferable Adversarial Examples and Black-box Attacks(ICLR2017)


下一篇:实验4:开源控制器实践——OpenDaylight