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

一、实验目的

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

二、实验环境

Ubuntu 20.04 Desktop amd64

三、实验要求

(一)基本要求

1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;

2.通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。

(二)进阶要求

1.获取当前所有拓扑结构及其信息

Request URL:
http://localhost:8181/restconf/operational/network-topology:network-topology


2.获取当前所有拓扑结构中的所有交换机的信息

Request URL:
http://localhost:8181/restconf/operational/opendaylight-inventory:nodes


3.获取当前拓扑结构中的指定交换机节点的信息

Request URL:
http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/交换机ID


4.获取指定交换机端口的状态

Request URL:
http://localhost:8181/restconf/operational/opendaylight-inventory:nodes/node/交换机ID/node-connector/交换机ID:端口号


5.对流表的增删改查

Request URL:
http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/交换机ID/flow-node-inventory:table/流表ID/flow/flowID

四、个人总结

遇到的问题及解决方案

  • 启动ODL以后,利用浏览器打开ODL图形界面后,发现拓扑界面中看不见拓扑结构。
    解决方法:在mininet的CLI中进行pingall后,图形界面中的拓扑结构才会显示出来。

  • 在使用Postman时,利用PUT方法对流表进行配置下发时,出现401 Unauthorized状态码:

    解决方法:发现是未在Authorization中选择Basic Auth并填写用户名与密码,导致无法进行身份认证,补齐用户名和密码后得到正确的返回状态码200,流表配置成功下发。

收获与心得体会

  • 本次实验整体难度中等,基本要求部分很容易完成。我的时间主要花费在进阶要求部分的查找ODL的REST API文档。由于 http://localhost:8181/apidoc/explorer/index.html 中没有写清楚有些API的作用,我在确定每个API的作用上花费了很多时间,甚至去查了ODL官方的例子文档,才堪堪完成了进阶要求。
  • 在查找资料的过程中,我发现一些API的调用虽然写法不同,但获得的JSON结果是一样的,例如:
http://127.0.0.1:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/opendaylight-inventory:node-connector/openflow:1:2


http://localhost:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/node-connector/openflow:1:2

它们返回的都是指定交换机端口的状态,但在写法上却略有不同,这也提醒了我这些API的调用是很灵活的。

  • 通过本次实验,我学习到了OpenDayLight控制器与Postman的使用方法,并通过其下发流表配置,直观体验到其对主机的通信产生的影响,体会到了ODL的API提供的功能相当灵活强大,同时也对SDN的应用价值有了更深刻的认识,期待后续实验对其进行更深入的学习~
posted @ 2022-10-03 11:51  GodotX  阅读(177)  评论(0)    收藏  举报