实验4:开源控制器实践——OpenDaylight
一、实验目的
- 能够独立完成OpenDaylight控制器的安装配置;
- 能够使用Postman工具调用OpenDaylight API接口下发流表。
二、实验环境
- 下载虚拟机软件Oracle VisualBox或VMware;
- 在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;
三、实验要求
(一)基本要求
- 配置JAVA环境,下载并解压安装OpenDaylight,版本选择Carbon 或 Beryllium;
- 下载并解压安装Postman;
- 利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;
-
在终端上使用命令行创建拓扑
-
在终端上启动ODL
-
使用pingall命令进行连通性测试同时通过浏览器进入ODL图形化界面查看拓扑
- 通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。
-
通过Postman进行相应流表配置,先让h1 ping h3,ping通后,将配置好的流表send下发至交换机,实现网络中断10s的效果
(二)进阶要求
- 查找资料,整理和记录ODL控制器主要的REST API文档,包括但不限于ODL提供的文档链接,获取拓扑的交换机、获取流表状态数量、获取特定交换机端口的状态、新增修改和删除流表等。
-
获取拓扑的交换机
url:http://127.0.0.1:8181/apidoc/explorer/index.html#!/network-topology(2013-10-21)/GET_network_topology_get_183
-
流表的增删改查
url:http://127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-inventory(2013-08-19)/GET_flow_get_198
-
获取特定交换机端口的状态
url:http://127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-port-statistics(2013-12-14)/get_node_connector_statistics_post_0
-
获取当前交换机上所有流表的统计信息
url:http://127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-flow-table-statistics(2013-12-15)/get_flow_tables_statistics_post_0
四、实验心得
- 在本次实验中,我学习了OpenDayLight控制器的使用,并通过其下发指定流表,对主机之间的通信产生预想中的影响。这也使得我对控制器通过下发流表控制交换机进行主机间信息的控制流程有了更为清晰的认识。同时也对Postman的使用方法有了新的理解。除此之外,还学习了如何查阅API文档,熟悉了接口中传递请求和响应的各种格式和参数,也体会到了ODL的API提供的强大方便的功能,如对流表进行增删改查等,获取特定端口的状态等。我认为本次实验属于中等难度偏高,具体操作细节在实验指南书上基本都有涉及到,除了一开始的相关软件安装以及环境配置较为麻烦外,其他的部分一步一步按部就班就能顺利完成实验。
- 在实验过程中遇到的问题及解决
- 在进行jdk的安装时没法在文件目录下直接找到/usr目录。之后通过查阅资料,发现可以先通过cd /命令进入linux文件根目录,再通过cd usr/local命令进入对应目录,进行后续操作。而又因为只能在终端上对usr目录及其子目录进行操作,因此无法将宿主机中的压缩包直接拖至指定的usr/local/java目录中。后来我先将压缩包拖至可见的Downloads文件夹中,接着利用mv命令将压缩包移至usr/local/java目录中。这里要注意键入命令时要使用sudo管理员权限。
- 在进行ODL的安装和启动的过程中,第一次启动时需要安装相关插件。在使用feature:install odl-restconf odl-l2switch-switch-ui odl-openflowplugin-all odl-mdsal-apidocs odl-dlux-core odl-dlux-node odl-dlux-yangui命令进行插件安装时,终端一直提示我command not found。我一开始以为是我把这个长命令里的某个符号打错了,来来回回检查半天都没发现错误。之后才发现这个指令应该是在启动ODL后直接键入的。
- 在启动ODL控制器后,通过浏览器访问ODL图形界面时,发现拓扑中看不到主机。再次阅读实验指南书后,发现需要先将终端上建立的拓ping通后,才能在ODL图形界面中观察到包含主机在内的拓扑结构。
- 在通过Postman调用OpenDayLight的API,同时对流表进行配置下发时,发现对h1和h3之间的通信无影响(不产生中断效果)。检查Postman中的请求状态,发现请求状态码为401,表示用户没有访问权限,需要进行身份认证。于是我重新检查步骤时发现忘记将请求的Authorization设置为Basic Auth的类型并填入Username和Password进行用户权限的获取和身份的认证。补全认证后再次进行下发流表操作,请求返回状态码200,表示请求已正常发出,下发流表在h1于h3通信中成功起到中断10s的效果。