zoukankan      html  css  js  c++  java
  • SDN实验---Ryu的应用开发(四)北向接口RESTAPI

    一:推文

    软件定义网络基础---REST API概述

    软件定义网络基础---REST API的设计规范

    二:掌握Ryu基本RESTAPI使用方法

    (一)Ryu的RESTAPI

    (二) REST应用样例:app/ofctl_rest.py

    1.所提供的样例API接口

    # REST API
    #
    
    # Retrieve the switch stats
    #
    # get the list of all switches
    # GET /stats/switches
    #
    # get the desc stats of the switch
    # GET /stats/desc/<dpid>
    #
    # get flows desc stats of the switch
    # GET /stats/flowdesc/<dpid>
    #
    # get flows desc stats of the switch filtered by the fields
    # POST /stats/flowdesc/<dpid>
    #
    # get flows stats of the switch
    # GET /stats/flow/<dpid>
    #
    # get flows stats of the switch filtered by the fields
    # POST /stats/flow/<dpid>
    #
    # get aggregate flows stats of the switch
    # GET /stats/aggregateflow/<dpid>
    #
    # get aggregate flows stats of the switch filtered by the fields
    # POST /stats/aggregateflow/<dpid>
    #
    # get table stats of the switch
    # GET /stats/table/<dpid>
    #
    # get table features stats of the switch
    # GET /stats/tablefeatures/<dpid>
    #
    # get ports stats of the switch
    # GET /stats/port/<dpid>[/<port>]
    # Note: Specification of port number is optional
    #
    # get queues stats of the switch
    # GET /stats/queue/<dpid>[/<port>[/<queue_id>]]
    # Note: Specification of port number and queue id are optional
    #       If you want to omitting the port number and setting the queue id,
    #       please specify the keyword "ALL" to the port number
    #       e.g. GET /stats/queue/1/ALL/1
    #
    # get queues config stats of the switch
    # GET /stats/queueconfig/<dpid>[/<port>]
    # Note: Specification of port number is optional
    #
    # get queues desc stats of the switch
    # GET /stats/queuedesc/<dpid>[/<port>[/<queue_id>]]
    # Note: Specification of port number and queue id are optional
    #       If you want to omitting the port number and setting the queue id,
    #       please specify the keyword "ALL" to the port number
    #       e.g. GET /stats/queuedesc/1/ALL/1
    #
    # get meter features stats of the switch
    # GET /stats/meterfeatures/<dpid>
    #
    # get meter config stats of the switch
    # GET /stats/meterconfig/<dpid>[/<meter_id>]
    # Note: Specification of meter id is optional
    #
    # get meter desc stats of the switch
    # GET /stats/meterdesc/<dpid>[/<meter_id>]
    # Note: Specification of meter id is optional
    #
    # get meters stats of the switch
    # GET /stats/meter/<dpid>[/<meter_id>]
    # Note: Specification of meter id is optional
    #
    # get group features stats of the switch
    # GET /stats/groupfeatures/<dpid>
    #
    # get groups desc stats of the switch
    # GET /stats/groupdesc/<dpid>[/<group_id>]
    # Note: Specification of group id is optional (OpenFlow 1.5 or later)
    #
    # get groups stats of the switch
    # GET /stats/group/<dpid>[/<group_id>]
    # Note: Specification of group id is optional
    #
    # get ports description of the switch
    # GET /stats/portdesc/<dpid>[/<port_no>]
    # Note: Specification of port number is optional (OpenFlow 1.5 or later)
    
    # Update the switch stats
    #
    # add a flow entry
    # POST /stats/flowentry/add
    #
    # modify all matching flow entries
    # POST /stats/flowentry/modify
    #
    # modify flow entry strictly matching wildcards and priority
    # POST /stats/flowentry/modify_strict
    #
    # delete all matching flow entries
    # POST /stats/flowentry/delete
    #
    # delete flow entry strictly matching wildcards and priority
    # POST /stats/flowentry/delete_strict
    #
    # delete all flow entries of the switch
    # DELETE /stats/flowentry/clear/<dpid>
    #
    # add a meter entry
    # POST /stats/meterentry/add
    #
    # modify a meter entry
    # POST /stats/meterentry/modify
    #
    # delete a meter entry
    # POST /stats/meterentry/delete
    #
    # add a group entry
    # POST /stats/groupentry/add
    #
    # modify a group entry
    # POST /stats/groupentry/modify
    #
    # delete a group entry
    # POST /stats/groupentry/delete
    #
    # modify behavior of the physical port
    # POST /stats/portdesc/modify
    #
    # modify role of controller
    # POST /stats/role
    #
    #
    # send a experimeter message
    # POST /stats/experimenter/<dpid>

    (三)Ryu官方文档:https://ryu.readthedocs.io/en/latest/app/ofctl_rest.html

    三:实验开始 

    (一)开启Ryu控制器

    ryu-manager ofctl_rest.py simple_switch_13.py --observe-links --verbose  #除了使用RESTAPI之外,我们还要保证ryu控制器正常处理交换机逻辑

    (二)开启Mininet

    sudo mn --controller=remote --mac --topo=tree,2,2

     

    (三)使用Curl发送URL请求

    1.获取到所有交换机Get the list of all switches which connected to the controller.

    $ curl -X GET http://localhost:8080/stats/switches

    2.获取交换机的描述信息Get the desc stats of the switch which specified with Datapath ID in URI.

    $ curl -X GET http://localhost:8080/stats/desc/1

     

    3.其他类似

    (四)Postman实验(更美观)

    1.安装postman

    2.获取交换机信息

  • 相关阅读:
    【BZOJ3518】点组计数 欧拉函数
    【BZOJ3677】[Apio2014]连珠线 换根DP
    【BZOJ3678】wangxz与OJ Splay
    【BZOJ3935】Rbtree 树形DP
    【BZOJ3958】[WF2011]Mummy Madness 二分+扫描线+线段树
    (转)Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
    string.Format出现异常"输入的字符串格式有误"的解决方法
    c# winForm使用Aspose.Cells读取CSV文件中文乱码问题
    PowerDesigner15.1给自定义架构表字段添加MS_Description出错
    MongoDB 多条件组合查询
  • 原文地址:https://www.cnblogs.com/ssyfj/p/11766615.html
Copyright © 2011-2022 走看看