On Tue, 30 Sep 2014 11:01:01 +0900 Yusuke Iwase <[email protected]> wrote:
> > Signed-off-by: IWASE Yusuke <[email protected]> > --- > doc/source/app.rst | 1 + > doc/source/app/ofctl_rest.rst | 1392 > +++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 1393 insertions(+) > create mode 100644 doc/source/app/ofctl_rest.rst Great, thanks a lot! > diff --git a/doc/source/app.rst b/doc/source/app.rst > index c20b0bf..077c890 100644 > --- a/doc/source/app.rst > +++ b/doc/source/app.rst > @@ -10,3 +10,4 @@ Others provide some functionalities to other Ryu > applications. > :maxdepth: 1 > > app/ofctl.rst > + app/ofctl_rest.rst > diff --git a/doc/source/app/ofctl_rest.rst b/doc/source/app/ofctl_rest.rst > new file mode 100644 > index 0000000..dc18f40 > --- /dev/null > +++ b/doc/source/app/ofctl_rest.rst > @@ -0,0 +1,1392 @@ > +****************** > +ryu.app.ofctl_rest > +****************** > + > +ryu.app.ofctl_rest provides REST APIs for retrieving the switch stats > +and Updating the switch stats. > +This application helps you debug your application and get various statistics. > + > +This application supports OpenFlow version 1.0, 1.2 and 1.3. > + > + > +Retrieve the switch stats > +========================= > + > +Get all switches > +---------------- > + > + Get the list of all switches which connected to the controller. > + > + Usage: > + > + ======= ================ > + Method GET > + URI /stats/switches > + ======= ================ > + > + Response message body: > + > + ========== =================== ======== > + Attribute Description Example > + ========== =================== ======== > + dpid Datapath ID 1 > + ========== =================== ======== > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/switches > + > + :: > + > + [ > + 1, > + 2, > + 3 > + ] > + > + .. NOTE:: > + > + The result of the REST command is formatted for easy viewing. > + > + > +Get the desc stats > +------------------ > + > + Get the desc stats of the switch which specified with Datapath ID in URI. > + > + Usage: > + > + ======= =================== > + Method GET > + URI /stats/desc/<dpid> > + ======= =================== > + > + Response message body: > + > + =========== ======================================= ================ > + Attribute Description Example > + =========== ======================================= ================ > + dpid Datapath ID "1" > + mfr_desc Manufacturer description "Nicira, Inc.", > + hw_desc Hardware description "Open vSwitch", > + sw_desc Software description "2.3.90", > + serial_num Serial number "None", > + dp_desc Human readable description of datapath "None" > + =========== ======================================= ================ > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/desc/1 > + > + :: > + > + { > + "1": { > + "mfr_desc": "Nicira, Inc.", > + "hw_desc": "Open vSwitch", > + "sw_desc": "2.3.90", > + "serial_num": "None", > + "dp_desc": "None" > + } > + } > + > + > +.. _get-all-flows-stats: > + > +Get all flows stats > +------------------- > + > + Get all flows stats of the switch which specified with Datapath ID in > URI. > + > + Usage: > + > + ======= =================== > + Method GET > + URI /stats/flow/<dpid> > + ======= =================== > + > + Response message body: > + > + ============== ========================================= > =============== > + Attribute Description Example > + ============== ========================================= > =============== > + dpid Datapath ID "1" > + length Length of this entry 88 > + table_id Table ID 0 > + duration_sec Time flow has been alive in seconds 2 > + duration_nsec Time flow has been alive in nanoseconds 6.76e+08 > + priority Priority of the entry 11111 > + idle_timeout Number of seconds idle before expiration 0 > + hard_timeout Number of seconds before expiration 0 > + flags Bitmap of OFPFF_* flags 1 > + cookie Opaque controller-issued identifier 1 > + packet_count Number of packets in flow 0 > + byte_count Number of bytes in flow 0 > + match Fields to match {"in_port": > 1} > + actions Instruction set ["OUTPUT:2"] > + ============== ========================================= > =============== > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/flow/1 > + > + :: > + > + { > + "1": [ > + { > + "length": 88, > + "table_id": 0, > + "duration_sec": 2, > + "duration_nsec": 6.76e+08, > + "priority": 11111, > + "idle_timeout": 0, > + "hard_timeout": 0, > + "flags": 1, > + "cookie": 1, > + "packet_count": 0, > + "byte_count": 0, > + "match": { > + "in_port": 1 > + }, > + "actions": [ > + "OUTPUT:2" > + ] > + } > + ] > + } > + > + > +.. _get-flows-stats-filtered: > + > +Get flows stats filtered by fields > +---------------------------------- > + > + Get flows stats of the switch filtered by the OFPFlowStats fields. > + This is POST method version of :ref:`get-all-flows-stats`. > + > + Usage: > + > + ======= =================== > + Method POST > + URI /stats/flow/<dpid> > + ======= =================== > + > + Request message body: > + > + ============ > ================================================================== > =============== =============== > + Attribute Description > Example Default > + ============ > ================================================================== > =============== =============== > + table_id Table ID (int) > 0 OFPTT_ALL > + out_port Require matching entries to include this as an output > port (int) 2 OFPP_ANY > + out_group Require matching entries to include this as an output > group (int) 1 OFPG_ANY > + cookie Require matching entries to contain this cookie value > (int) 1 0 > + cookie_mask Mask used to restrict the cookie bits that must match > (int) 1 0 > + match Fields to match (dict) > {"in_port": 1} {} #wildcarded > + ============ > ================================================================== > =============== =============== > + > + Response message body: > + The same as :ref:`get-all-flows-stats` > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "table_id": 0, \ > + "out_port": 2, \ > + "cookie": 1, \ > + "cookie_mask": 1, \ > + "match":{ \ > + "in_port":1 \ > + } \ > + }' \ > + http://localhost:8080/stats/flow/1 > + > + :: > + > + { > + "1": [ > + { > + "table_id": 0, > + "duration_sec": 2, > + "duration_nsec": 6.76e+08, > + "priority": 11111, > + "idle_timeout": 0, > + "hard_timeout": 0, > + "cookie": 1, > + "packet_count": 0, > + "byte_count": 0, > + "match": { > + "in_port": 1 > + }, > + "actions": [ > + "OUTPUT:2" > + ] > + } > + ] > + } > + > + > +Get ports stats > +--------------- > + > + Get ports stats of the switch which specified with Datapath ID in URI. > + > + Usage: > + > + ======= =================== > + Method GET > + URI /stats/port/<dpid> > + ======= =================== > + > + Response message body: > + > + ============== ======================================== ========= > + Attribute Description Example > + ============== ======================================== ========= > + dpid Datapath ID "1" > + port_no Port number 1 > + rx_packets Number of received packets 9 > + tx_packets Number of transmitted packets 6 > + rx_bytes Number of received bytes 738 > + tx_bytes Number of transmitted bytes 252 > + rx_dropped Number of packets dropped by RX 0 > + tx_dropped Number of packets dropped by TX 0 > + rx_errors Number of receive errors 0 > + tx_errors Number of transmit errors 0 > + rx_frame_err Number of frame alignment errors 0 > + rx_over_err Number of packets with RX overrun 0 > + rx_crc_err Number of CRC errors 0 > + collisions Number of collisions 0 > + duration_sec Time port has been alive in seconds 12 > + duration_nsec Time port has been alive in nanoseconds 9.76e+08 > + ============== ======================================== ========= > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/port/1 > + > + :: > + > + { > + "1": [ > + { > + "port_no": 1, > + "rx_packets": 9, > + "tx_packets": 6, > + "rx_bytes": 738, > + "tx_bytes": 252, > + "rx_dropped": 0, > + "tx_dropped": 0, > + "rx_errors": 0, > + "tx_errors": 0, > + "rx_frame_err": 0, > + "rx_over_err": 0, > + "rx_crc_err": 0, > + "collisions": 0, > + "duration_sec": 12, > + "duration_nsec": 9.76e+08 > + }, > + { > + : > + : > + } > + ] > + } > + > + > +.. _get-ports-description: > + > +Get ports description > +--------------------- > + > + Get ports description of the switch which specified with Datapath ID in > URI. > + > + Usage: > + > + ======= ======================= > + Method GET > + URI /stats/portdesc/<dpid> > + ======= ======================= > + > + Response message body: > + > + ============== ====================================== > ==================== > + Attribute Description Example > + ============== ====================================== > ==================== > + dpid Datapath ID "1" > + port_no Port number 1 > + hw_addr Ethernet hardware address > "0a:b6:d0:0c:e1:d7" > + name Name of port "s1-eth1" > + config Bitmap of OFPPC_* flags 0 > + state Bitmap of OFPPS_* flags 0 > + curr Current features 2112 > + advertised Features being advertised by the port 0 > + supported Features supported by the port 0 > + peer Features advertised by peer 0 > + curr_speed Current port bitrate in kbps 1e+07 > + max_speed Max port bitrate in kbps 0 > + ============== ====================================== > ==================== > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/portdesc/1 > + > + :: > + > + { > + "1": [ > + { > + "port_no": 1, > + "hw_addr": "0a:b6:d0:0c:e1:d7", > + "name": "s1-eth1", > + "config": 0, > + "state": 0, > + "curr": 2112, > + "advertised": 0, > + "supported": 0, > + "peer": 0, > + "curr_speed": 1e+07, > + "max_speed": 0 > + }, > + { > + : > + : > + } > + ] > + } > + > + > +Get groups stats > +---------------- > + > + Get groups stats of the switch which specified with Datapath ID in URI. > + > + Usage: > + > + ======= ==================== > + Method GET > + URI /stats/group/<dpid> > + ======= ==================== > + > + Response message body: > + > + ================ > ============================================================== ========= > + Attribute Description > Example > + ================ > ============================================================== ========= > + dpid Datapath ID > "1" > + length Length of this entry > 56 > + group_id Group ID > 1 > + ref_count Number of flows or groups that directly forward to > this group 1 > + packet_count Number of packets processed by group > 0 > + byte_count Number of bytes processed by group > 0 > + duration_sec Time group has been alive in seconds > 161 > + duration_nsec Time group has been alive in nanoseconds > 3.03e+08 > + bucket_stats struct ofp_bucket_counter > + -- packet_count Number of packets processed by bucket > 0 > + -- byte_count Number of bytes processed by bucket > 0 > + ================ > ============================================================== ========= > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/group/1 > + > + :: > + > + { > + "1": [ > + { > + "length": 56, > + "group_id": 1, > + "ref_count": 1, > + "packet_count": 0, > + "byte_count": 0, > + "duration_sec": 161, > + "duration_nsec": 3.03e+08, > + "bucket_stats": [ > + { > + "packet_count": 0, > + "byte_count": 0 > + } > + ] > + } > + ] > + } > + > + > +.. _get-group-description-stats: > + > +Get group description stats > +--------------------------- > + > + Get group description stats of the switch which specified with Datapath > ID in URI. > + > + Usage: > + > + ======= ======================== > + Method GET > + URI /stats/groupdesc/<dpid> > + ======= ======================== > + > + Response message body: > + > + =============== > ======================================================= ============= > + Attribute Description > Example > + =============== > ======================================================= ============= > + dpid Datapath ID > "1" > + type One of OFPGT_* > "ALL" > + group_id Group ID > 1 > + buckets struct ofp_bucket > + -- weight Relative weight of bucket > 0 > + (Only defined for select groups) > + -- watch_port Port whose state affects whether this bucket is live > 4294967295 > + (Only required for fast failover groups) > + -- watch_group Group whose state affects whether this bucket is > live 4294967295 > + (Only required for fast failover groups) > + -- actions 0 or more actions associated with the bucket > ["OUTPUT:1"] > + =============== > ======================================================= ============= > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/groupdesc/1 > + > + :: > + > + { > + "1": [ > + { > + "type": "ALL", > + "group_id": 1, > + "buckets": [ > + { > + "weight": 0, > + "watch_port": 4294967295, > + "watch_group": 4294967295, > + "actions": [ > + "OUTPUT:1" > + ] > + } > + ] > + } > + ] > + } > + > + > +Get group features stats > +------------------------ > + > + Get group features stats of the switch which specified with Datapath ID > in URI. > + > + Usage: > + > + ======= ============================ > + Method GET > + URI /stats/groupfeatures/<dpid> > + ======= ============================ > + > + Response message body: > + > + ============== =========================================== > =============================================== > + Attribute Description Example > + ============== =========================================== > =============================================== > + dpid Datapath ID "1" > + types Bitmap of (1 << OFPGT_*) values supported [] > + capabilities Bitmap of OFPGFC_* capability supported > ["SELECT_WEIGHT","SELECT_LIVENESS","CHAINING"] > + max_groups Maximum number of groups for each type [{"ALL": > 4294967040},...] > + actions Bitmaps of (1 << OFPAT_*) values supported [{"ALL": > ["OUTPUT",...]},...] > + ============== =========================================== > =============================================== > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/groupfeatures/1 > + > + :: > + > + { > + "1": [ > + { > + "types": [], > + "capabilities": [ > + "SELECT_WEIGHT", > + "SELECT_LIVENESS", > + "CHAINING" > + ], > + "max_groups": [ > + { > + "ALL": 4294967040 > + }, > + { > + "SELECT": 4294967040 > + }, > + { > + "INDIRECT": 4294967040 > + }, > + { > + "FF": 4294967040 > + } > + ], > + "actions": [ > + { > + "ALL": [ > + "OUTPUT", > + "COPY_TTL_OUT", > + "COPY_TTL_IN", > + "SET_MPLS_TTL", > + "DEC_MPLS_TTL", > + "PUSH_VLAN", > + "POP_VLAN", > + "PUSH_MPLS", > + "POP_MPLS", > + "SET_QUEUE", > + "GROUP", > + "SET_NW_TTL", > + "DEC_NW_TTL", > + "SET_FIELD" > + ] > + }, > + { > + "SELECT": [] > + }, > + { > + "INDIRECT": [] > + }, > + { > + "FF": [] > + } > + ] > + } > + ] > + } > + > + > +Get meters stats > +---------------- > + > + Get meters stats of the switch which specified with Datapath ID in URI. > + > + Usage: > + > + ======= ======================= > + Method GET > + URI /stats/meter/<dpid> > + ======= ======================= > + > + Response message body: > + > + ===================== ========================================= > ======== > + Attribute Description > Example > + ===================== ========================================= > ======== > + dpid Datapath ID "1" > + meter_id Meter ID 1 > + len Length in bytes of this stats 56 > + flow_count Number of flows bound to meter 0 > + packet_in_count Number of packets in input 0 > + byte_in_count Number of bytes in input 0 > + duration_sec Time meter has been alive in seconds 37 > + duration_nsec Time meter has been alive in nanoseconds > 988000 > + band_stats struct ofp_meter_band_stats > + -- packet_band_count Number of packets in band 0 > + -- byte_band_count Number of bytes in band 0 > + ===================== ========================================= > ======== > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/meter/1 > + > + :: > + > + { > + "1": [ > + { > + "meter_id": 1, > + "len": 56, > + "flow_count": 0, > + "packet_in_count": 0, > + "byte_in_count": 0, > + "duration_sec": 37, > + "duration_nsec": 988000, > + "band_stats": [ > + { > + "packet_band_count": 0, > + "byte_band_count": 0 > + } > + ] > + } > + ] > + } > + > + > +.. _get-meter-config-stats: > + > +Get meter config stats > +------------------------ > + > + Get meter config stats of the switch which specified with Datapath ID in > URI. > + > + Usage: > + > + ======= ============================ > + Method GET > + URI /stats/meterconfig/<dpid> > + ======= ============================ > + > + Response message body: > + > + ============== ============================================ ========= > + Attribute Description Example > + ============== ============================================ ========= > + dpid Datapath ID "1" > + flags All OFPMC_* that apply "KBPS" > + meter_id Meter ID 1 > + bands struct ofp_meter_band_header > + -- type One of OFPMBT_* "DROP" > + -- rate Rate for this band 1000 > + -- burst_size Size of bursts 0 > + ============== ============================================ ========= > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/meterconfig/1 > + > + :: > + > + { > + "1": [ > + { > + "flags": [ > + "KBPS" > + ], > + "meter_id": 1, > + "bands": [ > + { > + "type": "DROP", > + "rate": 1000, > + "burst_size": 0 > + } > + ] > + } > + ] > + } > + > + > +Get meter features stats > +------------------------ > + > + Get meter features stats of the switch which specified with Datapath ID > in URI. > + > + Usage: > + > + ======= ============================ > + Method GET > + URI /stats/meterfeatures/<dpid> > + ======= ============================ > + > + Response message body: > + > + =========== ============================================ ========= > + Attribute Description Example > + =========== ============================================ ========= > + dpid Datapath ID "1" > + max_meter Maximum number of meters 256 > + band_types Bitmaps of (1 << OFPMBT_*) values supported ['DROP'] > + max_bands Maximum bands per meters 16 > + max_color Maximum color value 8 > + =========== ============================================ ========= > + > + Example of use:: > + > + $ curl -X GET http://localhost:8080/stats/meterfeatures/1 > + > + :: > + > + { > + "1": [ > + { > + "max_meter": 256, > + "band_types": [ > + 'DROP' > + ], > + "max_bands": 16, > + "max_color": 8 > + } > + ] > + } > + > + > +Update the switch stats > +======================= > + > +Add a flow entry > +---------------- > + > + Add a flow entry to the switch. > + > + Usage: > + > + ======= ===================== > + Method POST > + URI /stats/flowentry/add > + ======= ===================== > + > + Request message body: > + > + ============= ===================================================== > ============================== =============== > + Attribute Description > Example Default > + ============= ===================================================== > ============================== =============== > + dpid Datapath ID (int) > 1 (Mandatory) > + cookie Opaque controller-issued identifier (int) > 1 0 > + cookie_mask Mask used to restrict the cookie bits (int) > 1 0 > + table_id Table ID to put the flow in (int) > 0 0 > + idle_timeout Idle time before discarding (seconds) (int) > 30 0 > + hard_timeout Max time before discarding (seconds) (int) > 30 0 > + priority Priority level of flow entry (int) > 11111 0 > + buffer_id Buffered packet to apply to, or OFP_NO_BUFFER (int) > 1 OFP_NO_BUFFER > + flags Bitmap of OFPFF_* flags (int) > 1 0 > + match Fields to match (dict) > {"in_port":1} {} #wildcarded > + actions Instruction set (list of dict) > [{"type":"OUTPUT", "port":2}] [] #DROP > + ============= ===================================================== > ============================== =============== > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "cookie": 1, \ > + "cookie_mask": 1, \ > + "table_id": 0, \ > + "idle_timeout": 30, \ > + "hard_timeout": 30, \ > + "priority": 11111, \ > + "flags": 1, \ > + "match":{ \ > + "in_port":1 \ > + }, \ > + "actions":[ \ > + { \ > + "type":"OUTPUT", \ > + "port": 2 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/flowentry/add > + > + :: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "priority": 22222, \ > + "match":{ \ > + "in_port":1 \ > + }, \ > + "actions":[ \ > + { \ > + "type":"GOTO_TABLE", \ > + "table_id": 1 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/flowentry/add > + > + :: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "priority": 33333, \ > + "match":{ \ > + "in_port":1 \ > + }, \ > + "actions":[ \ > + { \ > + "type":"WRITE_METADATA", \ > + "metadata": 1, \ > + "metadata_mask": 1 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/flowentry/add > + > + :: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "priority": 44444, \ > + "match":{ \ > + "in_port":1 \ > + }, \ > + "actions":[ \ > + { \ > + "type":"METER", \ > + "meter_id": 1 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/flowentry/add > + > + .. NOTE:: > + > + To confirm flow entry registration, please see > :ref:`get-all-flows-stats` or :ref:`get-flows-stats-filtered`. > + > + > +Modify all matching flow entries > +-------------------------------- > + > + Modify all matching flow entries of the switch. > + > + Usage: > + > + ======= ======================== > + Method POST > + URI /stats/flowentry/modify > + ======= ======================== > + > + Request message body: > + > + ============= ===================================================== > ============================== =============== > + Attribute Description > Example Default > + ============= ===================================================== > ============================== =============== > + dpid Datapath ID (int) > 1 (Mandatory) > + cookie Opaque controller-issued identifier (int) > 1 0 > + cookie_mask Mask used to restrict the cookie bits (int) > 1 0 > + table_id Table ID to put the flow in (int) > 0 0 > + idle_timeout Idle time before discarding (seconds) (int) > 30 0 > + hard_timeout Max time before discarding (seconds) (int) > 30 0 > + priority Priority level of flow entry (int) > 11111 0 > + buffer_id Buffered packet to apply to, or OFP_NO_BUFFER (int) > 1 OFP_NO_BUFFER > + flags Bitmap of OFPFF_* flags (int) > 1 0 > + match Fields to match (dict) > {"in_port":1} {} #wildcarded > + actions Instruction set (list of dict) > [{"type":"OUTPUT", "port":2}] [] #DROP > + ============= ===================================================== > ============================== =============== > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "cookie": 1, \ > + "cookie_mask": 1, \ > + "table_id": 0, \ > + "idle_timeout": 30, \ > + "hard_timeout": 30, \ > + "priority": 11111, \ > + "flags": 1, \ > + "match":{ \ > + "in_port":1 \ > + }, \ > + "actions":[ \ > + { \ > + "type":"OUTPUT", \ > + "port": 2 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/flowentry/modify > + > + > +Modify flow entry strictly > +-------------------------- > + > + Modify flow entry strictly matching wildcards and priority > + > + Usage: > + > + ======= =============================== > + Method POST > + URI /stats/flowentry/modify_strict > + ======= =============================== > + > + Request message body: > + > + ============= ===================================================== > ============================== =============== > + Attribute Description > Example Default > + ============= ===================================================== > ============================== =============== > + dpid Datapath ID (int) > 1 (Mandatory) > + cookie Opaque controller-issued identifier (int) > 1 0 > + cookie_mask Mask used to restrict the cookie bits (int) > 1 0 > + table_id Table ID to put the flow in (int) > 0 0 > + idle_timeout Idle time before discarding (seconds) (int) > 30 0 > + hard_timeout Max time before discarding (seconds) (int) > 30 0 > + priority Priority level of flow entry (int) > 11111 0 > + buffer_id Buffered packet to apply to, or OFP_NO_BUFFER (int) > 1 OFP_NO_BUFFER > + flags Bitmap of OFPFF_* flags (int) > 1 0 > + match Fields to match (dict) > {"in_port":1} {} #wildcarded > + actions Instruction set (list of dict) > [{"type":"OUTPUT", "port":2}] [] #DROP > + ============= ===================================================== > ============================== =============== > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "cookie": 1, \ > + "cookie_mask": 1, \ > + "table_id": 0, \ > + "idle_timeout": 30, \ > + "hard_timeout": 30, \ > + "priority": 11111, \ > + "flags": 1, \ > + "match":{ \ > + "in_port":1 \ > + }, \ > + "actions":[ \ > + { \ > + "type":"OUTPUT", \ > + "port": 2 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/flowentry/modify_strict > + > + > +Delete all matching flow entries > +-------------------------------- > + > + Delete all matching flow entries of the switch. > + > + Usage: > + > + ======= ======================== > + Method POST > + URI /stats/flowentry/delete > + ======= ======================== > + > + Request message body: > + > + ============= ===================================================== > ============================== =============== > + Attribute Description > Example Default > + ============= ===================================================== > ============================== =============== > + dpid Datapath ID (int) > 1 (Mandatory) > + cookie Opaque controller-issued identifier (int) > 1 0 > + cookie_mask Mask used to restrict the cookie bits (int) > 1 0 > + table_id Table ID to put the flow in (int) > 0 0 > + idle_timeout Idle time before discarding (seconds) (int) > 30 0 > + hard_timeout Max time before discarding (seconds) (int) > 30 0 > + priority Priority level of flow entry (int) > 11111 0 > + buffer_id Buffered packet to apply to, or OFP_NO_BUFFER (int) > 1 OFP_NO_BUFFER > + out_port Output port (int) > 1 OFPP_ANY > + out_group Output group (int) > 1 OFPG_ANY > + flags Bitmap of OFPFF_* flags (int) > 1 0 > + match Fields to match (dict) > {"in_port":1} {} #wildcarded > + actions Instruction set (list of dict) > [{"type":"OUTPUT", "port":2}] [] #DROP > + ============= ===================================================== > ============================== =============== > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "cookie": 1, \ > + "cookie_mask": 1, \ > + "table_id": 0, \ > + "idle_timeout": 30, \ > + "hard_timeout": 30, \ > + "priority": 11111, \ > + "flags": 1, \ > + "match":{ \ > + "in_port":1 \ > + }, \ > + "actions":[ \ > + { \ > + "type":"OUTPUT", \ > + "port": 2 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/flowentry/delete > + > + > +Delete flow entry strictly > +-------------------------- > + > + Delete flow entry strictly matching wildcards and priority. > + > + Usage: > + > + ======= =============================== > + Method POST > + URI /stats/flowentry/delete_strict > + ======= =============================== > + > + Request message body: > + > + ============= ===================================================== > ============================== =============== > + Attribute Description > Example Default > + ============= ===================================================== > ============================== =============== > + dpid Datapath ID (int) > 1 (Mandatory) > + cookie Opaque controller-issued identifier (int) > 1 0 > + cookie_mask Mask used to restrict the cookie bits (int) > 1 0 > + table_id Table ID to put the flow in (int) > 0 0 > + idle_timeout Idle time before discarding (seconds) (int) > 30 0 > + hard_timeout Max time before discarding (seconds) (int) > 30 0 > + priority Priority level of flow entry (int) > 11111 0 > + buffer_id Buffered packet to apply to, or OFP_NO_BUFFER (int) > 1 OFP_NO_BUFFER > + out_port Output port (int) > 1 OFPP_ANY > + out_group Output group (int) > 1 OFPG_ANY > + flags Bitmap of OFPFF_* flags (int) > 1 0 > + match Fields to match (dict) > {"in_port":1} {} #wildcarded > + actions Instruction set (list of dict) > [{"type":"OUTPUT", "port":2}] [] #DROP > + ============= ===================================================== > ============================== =============== > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "cookie": 1, \ > + "cookie_mask": 1, \ > + "table_id": 0, \ > + "idle_timeout": 30, \ > + "hard_timeout": 30, \ > + "priority": 11111, \ > + "flags": 1, \ > + "match":{ \ > + "in_port":1 \ > + }, \ > + "actions":[ \ > + { \ > + "type":"OUTPUT", \ > + "port": 2 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/flowentry/delete_strict > + > + > +Delete all flow entries > +----------------------- > + > + Delete all flow entries of the switch which specified with Datapath ID > in URI. > + > + Usage: > + > + ======= ============================== > + Method DELETE > + URI /stats/flowentry/clear/<dpid> > + ======= ============================== > + > + Example of use:: > + > + $ curl -X DELETE http://localhost:8080/stats/flowentry/clear/1 > + > + > +Add a group entry > +----------------- > + > + Add a group entry to the switch. > + > + Usage: > + > + ======= ====================== > + Method POST > + URI /stats/groupentry/add > + ======= ====================== > + > + Request message body: > + > + =============== > ============================================================ > ================================ ============ > + Attribute Description > Example Default > + =============== > ============================================================ > ================================ ============ > + dpid Datapath ID (int) > 1 (Mandatory) > + type One of OFPGT_* (string) > "ALL" "ALL" > + group_id Group ID (int) > 1 0 > + buckets struct ofp_bucket > + -- weight Relative weight of bucket > 0 0 > + (Only defined for select groups) > + -- watch_port Port whose state affects whether this bucket is live > 4294967295 OFPP_ANY > + (Only required for fast failover groups) > + -- watch_group Group whose state affects whether this bucket is > live 4294967295 OFPG_ANY > + (Only required for fast failover groups) > + -- actions 0 or more actions associated with the bucket (list > of dict) [{"type": "OUTPUT", "port": 1}] [] #DROP > + =============== > ============================================================ > ================================ ============ > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "type": "ALL", \ > + "group_id": 1, \ > + "buckets": [ \ > + { \ > + "actions": [ \ > + { \ > + "type": "OUTPUT", \ > + "port": 1 \ > + } \ > + ] \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/groupentry/add > + > + .. NOTE:: > + > + To confirm group entry registration, please see > :ref:`get-group-description-stats`. > + > + > +Modify a group entry > +-------------------- > + > + Modify a group entry to the switch. > + > + Usage: > + > + ======= ========================= > + Method POST > + URI /stats/groupentry/modify > + ======= ========================= > + > + Request message body: > + > + =============== > ============================================================ > ================================ ============ > + Attribute Description > Example Default > + =============== > ============================================================ > ================================ ============ > + dpid Datapath ID (int) > 1 (Mandatory) > + type One of OFPGT_* (string) > "ALL" "ALL" > + group_id Group ID (int) > 1 0 > + buckets struct ofp_bucket > + -- weight Relative weight of bucket > 0 0 > + (Only defined for select groups) > + -- watch_port Port whose state affects whether this bucket is live > 4294967295 OFPP_ANY > + (Only required for fast failover groups) > + -- watch_group Group whose state affects whether this bucket is > live 4294967295 OFPG_ANY > + (Only required for fast failover groups) > + -- actions 0 or more actions associated with the bucket (list > of dict) [{"type": "OUTPUT", "port": 1}] [] #DROP > + =============== > ============================================================ > ================================ ============ > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "type": "ALL", \ > + "group_id": 1, \ > + "buckets": [ \ > + { \ > + "actions": [ \ > + { \ > + "type": "OUTPUT", \ > + "port": 1 \ > + } \ > + ] \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/groupentry/modify > + > + > +Delete a group entry > +-------------------- > + > + Delete a group entry to the switch. > + > + Usage: > + > + ======= ========================= > + Method POST > + URI /stats/groupentry/delete > + ======= ========================= > + > + Request message body: > + > + =========== ======================== ======== ============ > + Attribute Description Example Default > + =========== ======================== ======== ============ > + dpid Datapath ID (int) 1 (Mandatory) > + group_id Group ID (int) 1 0 > + =========== ======================== ======== ============ > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "group_id": 1 \ > + }' \ > + http://localhost:8080/stats/groupentry/delete > + > + > +Modify the behavior of the port > +------------------------------- > + > + Modify the behavior of the physical port. > + > + Usage: > + > + ======= ======================= > + Method POST > + URI /stats/portdesc/modify > + ======= ======================= > + > + Request message body: > + > + =========== ============================================ ======== > ============ > + Attribute Description Example > Default > + =========== ============================================ ======== > ============ > + dpid Datapath ID (int) 1 > (Mandatory) > + port_no Port number (int) 1 0 > + config Bitmap of OFPPC_* flags (int) 1 0 > + mask Bitmap of OFPPC_* flags to be changed (int) 1 0 > + =========== ============================================ ======== > ============ > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "port_no": 1, \ > + "config": 1, \ > + "mask": 1 \ > + }' \ > + http://localhost:8080/stats/portdesc/modify > + > + .. NOTE:: > + > + To confirm port description, please see :ref:`get-ports-description`. > + > + > +Add a meter entry > +----------------- > + > + Add a meter entry to the switch. > + > + Usage: > + > + ======= ====================== > + Method POST > + URI /stats/meterentry/add > + ======= ====================== > + > + Request message body: > + > + ============== =============================== ========= ============ > + Attribute Description Example Default > + ============== =============================== ========= ============ > + dpid Datapath ID (int) 1 (Mandatory) > + flags Bitmap of OFPMF_* flags (list) ["KBPS"] [] #Empty > + meter_id Meter ID (int) 1 0 > + bands struct ofp_meter_band_header > + -- type One of OFPMBT_* (string) "DROP" None > + -- rate Rate for this band (int) 1000 None > + -- burst_size Size of bursts (int) 100 None > + ============== =============================== ========= ============ > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "flags": "KBPS", \ > + "meter_id": 1, \ > + "bands": [ \ > + { \ > + "type": "DROP", \ > + "rate": 1000 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/meterentry/add > + > + .. NOTE:: > + > + To confirm meter entry registration, please see > :ref:`get-meter-config-stats`. > + > + > +Modify a meter entry > +-------------------- > + > + Modify a meter entry to the switch. > + > + Usage: > + > + ======= ========================= > + Method POST > + URI /stats/meterentry/modify > + ======= ========================= > + > + Request message body: > + > + ============== =============================== ========= ============ > + Attribute Description Example Default > + ============== =============================== ========= ============ > + dpid Datapath ID (int) 1 (Mandatory) > + flags Bitmap of OFPMF_* flags (list) ["KBPS"] [] #Empty > + meter_id Meter ID (int) 1 0 > + bands struct ofp_meter_band_header > + -- type One of OFPMBT_* (string) "DROP" None > + -- rate Rate for this band (int) 1000 None > + -- burst_size Size of bursts (int) 100 None > + ============== =============================== ========= ============ > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "meter_id": 1, \ > + "flags": "KBPS", \ > + "bands": [ \ > + { \ > + "type": "DROP", \ > + "rate": 1000 \ > + } \ > + ] \ > + }' \ > + http://localhost:8080/stats/meterentry/modify > + > + > +Delete a meter entry > +-------------------- > + > + Delete a meter entry to the switch. > + > + Usage: > + > + ======= ========================= > + Method POST > + URI /stats/meterentry/delete > + ======= ========================= > + > + Request message body: > + > + =========== ================== ========= ============ > + Attribute Description Example Default > + =========== ================== ========= ============ > + dpid Datapath ID (int) 1 (Mandatory) > + meter_id Meter ID (int) 1 0 > + =========== ================== ========= ============ > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "meter_id": 1 \ > + }' \ > + http://localhost:8080/stats/meterentry/delete > + > + > +Support for experimenter multipart > +================================== > + > +Send a experimenter message > +--------------------------- > + > + Send a experimenter message to the switch which specified with Datapath > ID in URI. > + > + > + Usage: > + > + ======= =========================== > + Method POST > + URI /stats/experimenter/<dpid> > + ======= =========================== > + > + Request message body: > + > + ============= ============================================ ======== > ============ > + Attribute Description Example > Default > + ============= ============================================ ======== > ============ > + dpid Datapath ID (int) 1 > (Mandatory) > + experimenter Experimenter ID (int) 1 0 > + exp_type Experimenter defined (int) 1 0 > + data_type Data format type ("ascii" or "base64") "ascii" > "ascii" > + data Data to send (string) "data" > "" #Empty > + ============= ============================================ ======== > ============ > + > + Example of use:: > + > + $ curl -X POST -d '{ \ > + "dpid": 1, \ > + "experimenter": 1, \ > + "exp_type": 1, \ > + "data_type": "ascii", \ > + "data": "data" \ > + }' \ > + http://localhost:8080/stats/experimenter/1 > -- > 1.9.1 > > > ------------------------------------------------------------------------------ > Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer > Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports > Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper > Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer > http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk > _______________________________________________ > Ryu-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/ryu-devel ------------------------------------------------------------------------------ Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
