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

1.基础要求
a)Mininet拓扑生成并连接控制器的结果

b)Mininet中ping测试截图并体现个人信息

2.进阶要求
整理和记录ODL控制器主要的REST API文档

  • ODL提供的文档链接(Rest API文档)127.0.0.1:8181/apidoc/explorer/index.html
  • 获取拓扑的交换机
    链接:127.0.0.1:8181/apidoc/explorer/index.html#!/network-topology(2013-07-12)/GET_network_topology_get_1
  • 流表的信息统计
    链接:127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-inventory(2013-08-19)/GET_flow_statistics_get_282
  • 流表的增删改查
    链接:127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-inventory(2013-08-19)/GET_flow_get_215
  • 组表的查看
    链接:127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-inventory(2013-08-19)/GET_group_get_141
  • 获取交换机中某个流表的信息
    链接:127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-inventory(2013-08-19)/GET_table_get_211
  • 获取特定交换机端口的状态
    链接:127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-port-statistics(2013-12-14)/get_node_connector_statistics_post_0

  • 获取指定交换机的信息
    链接:127.0.0.1:8181/apidoc/explorer/index.html#!/opendaylight-inventory(2013-08-19)/GET_node_get_5

    3.个人总结
    a)实验感想
    本次实验难度不大,问题主要是出在对于接口调试工具postman使用操作上的不熟悉。通过进一步地学习,掌握了怎样使用Postman工具调用ODL API接口下发流表从而实现拓扑内主机h1和h3网络中断10s。在进阶部分,通过查找资料,学习了ODL控制器主要的REST API文档,包括获取流表状态数量、获取拓扑的交换机、获取特定交换机端口的状态、新增修改和删除流表等等。
    b)实验过程中问题及解决办法
  • 要记得先在Mininet CLI中运行h1 ping h3,再在Postman处选择动作PUT
  • 流规则优先级设大一些
  • 先在Mininet上pingall才会在ODL 的用户界面看到主机
  • 要根据实际控制器部署地址修改ip,如果在本地才是127.0.0.1
    c)关键步骤记录
  • 启动ODL

  • 启动完成后打开浏览器访问http://127.0.0.1:8181/index.html 进入ODL图形化界面,用户名和密码均为admin
  • 打开Postman接口调试工具
  • 清楚旧的流规则(标识为openflow:1的交换机)
    DELETE
    URL:
    http://127.0.0.1:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/
  • 通过Postman工具调用OpenDaylight提供的API下发流表
    PUT
    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"
} ] }
  • 使用Postman模拟http请求下发硬超时流规则,实现拓扑内主机h1和h3网络中断10s(参考资料:https://www.sdnlab.com/22563.html)
    idle timeout:软超时,如果值为非0,那么在对应的时间内如果没有数据包匹配,时间到该流规则将被删除;值为0不设软超时机制。
    hard timeout:硬超时,如果值为非0,那么在对应的时间内不论是否有数据包匹配,时间到流规则都会被删除;值为0不设硬超时机制。
posted @ 2022-10-01 09:36  DKedie  阅读(159)  评论(1编辑  收藏  举报