一、实验目的
- 能够独立完成OpenDaylight控制器的安装配置;
- 能够使用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的应用价值有了更深刻的认识,期待后续实验对其进行更深入的学习~