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

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

实验目的

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

实验要求

(一)基本要求

  • 配置JAVA环境,下载并解压安装OpenDaylight,版本选择Carbon 或 Beryllium
  • 下载并解压安装Postman
  • 利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器

通过sudo mn --topo=single,3 --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13搭建拓扑后,执行pingall,并在之前运行好的ODL中查看拓扑,如下图所示:
实验4:开源控制器实践——OpenDaylight

Postman下发流表

通过Postman请求Restful API,进行流表下发,URL和json文件如下所示:

URL:

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

json文件

{
    "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 ping h3,再通过send按钮下发流表,可以看到json文件中的配置生效:

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

进阶要求

  • api文档

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

  • 获取流表状态数量,新增修改和删除流表

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

  • 获取特定交换机端口的状态

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

  • 获取指定交换机信息

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

个人总结

遇到的问题和解决方案

  • 问题一

运行了sudo mn --topo single,3 --mac --switch ovsk --controller remote,ip=127.0.0.1,port=6633,protocols=Openflow13后,h1无法ping通h3

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

解决方法:参考链接,执行命令./pox/pox.py forwarding.hub后即可ping通h1和h3主机

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

  • 问题二

Postman无法send request,如图所示报错:

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

解决方法:没有打开ODL,要打开ODL才能请求成功。搜到的通常解决方法是Setting-Proxy-去掉勾选的Use the system proxy,但由于当时都没开ODL所以效果不明显。

  • 问题三

send之后ping命令丝毫没有受到影响,一直在进行成功的ping命令

解决方法:之后重启了虚拟机,再来一次,这个问题就自己消失了

  • 问题四

重新尝试进行实验时,pox报错:
实验4:开源控制器实践——OpenDaylight

解决方法:停止ODL后重新尝试即可

  • 问题五
    • 如果点击send后,出现的执行结果出现error的,而且error的提示信息里有protocol的,可以考虑检查一下URL是不是不对

个人感想

这次作业做了比较久,一些没有见过的报错,以及一些预料之外的问题,让整个实验的时间都被延长了。在开始实验之前,环境的配置也花了一定的时间,实验后期虚拟机频繁出现未响应的现象,但好像还没有什么解决方法。在实验过程中,对Postman通过json文件下发流表的过程获得了更全面的了解。(除了耐心的各种尝试之外,还是需要注重经验的积累,不然容易花很多时间在处理报错和debug上)

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


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