Signed-off-by: Shinpei Muraoka <[email protected]>
---
doc/source/app/ofctl_rest.rst | 567 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 559 insertions(+), 8 deletions(-)
diff --git a/doc/source/app/ofctl_rest.rst b/doc/source/app/ofctl_rest.rst
index 706061c..2d79007 100644
--- a/doc/source/app/ofctl_rest.rst
+++ b/doc/source/app/ofctl_rest.rst
@@ -6,7 +6,7 @@ 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.
+This application supports OpenFlow version 1.0, 1.2, 1.3 and 1.4.
.. contents::
:depth: 3
@@ -108,7 +108,7 @@ Get all flows stats
URI /stats/flow/<dpid>
======= ===================
- Response message body:
+ Response message body(OpenFlow1.3 or earlier):
==============
============================================================ ===============
Attribute Description
Example
@@ -129,10 +129,34 @@ Get all flows stats
actions Instruction set
["OUTPUT:2"]
==============
============================================================ ===============
+ Response message body(OpenFlow1.4 or later):
+
+ ==============
============================================================
========================================
+ 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 beyond
duration_sec 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
+ importance Eviction precedence
0
+ match Fields to match
{"eth_type": 2054}
+ instructions struct ofp_instruction_header
[{"type":GOTO_TABLE", "table_id":1}]
+ ==============
============================================================
========================================
+
Example of use::
$ curl -X GET http://localhost:8080/stats/flow/1
+ Response (OpenFlow1.3 or earlier):
+
::
{
@@ -159,6 +183,44 @@ Get all flows stats
]
}
+ Response (OpenFlow1.4 or later):
+
+ ::
+
+ {
+ "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": {
+ "eth_type": 2054
+ },
+ "importance": 0,
+ "instructions": [
+ {
+ "type": "APPLY_ACTIONS",
+ "actions": [
+ {
+ "port": 2,
+ "max_len": 0,
+ "type": "OUTPUT"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+
.. _get-flows-stats-filtered:
@@ -203,17 +265,21 @@ Get flows stats filtered by fields
}
}' http://localhost:8080/stats/flow/1
+ Response (OpenFlow1.3 or earlier):
+
::
{
"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,
@@ -227,6 +293,45 @@ Get flows stats filtered by fields
]
}
+ Response (OpenFlow1.4 or later):
+
+ ::
+
+ {
+ "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": {
+ "eth_type": 2054
+ },
+ "importance": 0,
+ "instructions": [
+ {
+ "type": "APPLY_ACTIONS",
+ "actions": [
+ {
+ "port": 2,
+ "max_len": 0,
+ "type": "OUTPUT"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+
+
.. _get-aggregate-flow-stats:
@@ -642,7 +747,7 @@ Get ports stats
Specification of port number is optional.
- Response message body:
+ Response message body(OpenFlow1.3 or earlier):
==============
============================================================ =========
Attribute Description
Example
@@ -665,10 +770,33 @@ Get ports stats
duration_nsec Time port has been alive in nanoseconds beyond
duration_sec 9.76e+08
==============
============================================================ =========
+
+ Response message body(OpenFlow1.4 or later):
+
+ ==============
============================================================
=================================================================================
+ 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
+ duration_sec Time port has been alive in seconds
12
+ duration_nsec Time port has been alive in nanoseconds beyond
duration_sec 9.76e+08
+ properties struct ofp_port_desc_prop_header
[{"rx_frame_err": 0, "rx_over_err": 0, "rx_crc_err": 0, "collisions":
0,...},...]
+ ==============
============================================================
=================================================================================
+
Example of use::
$ curl -X GET http://localhost:8080/stats/port/1
+ Response (OpenFlow1.3 or earlier):
+
::
{
@@ -697,6 +825,62 @@ Get ports stats
]
}
+ Response (OpenFlow1.4 or later):
+
+ ::
+
+ {
+ "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,
+ "duration_nsec": 12,
+ "duration_sec": 9.76e+08,
+ "properties": [
+ {
+ "rx_frame_err": 0,
+ "rx_over_err": 0,
+ "rx_crc_err": 0,
+ "collisions": 0,
+ "type": "ETHERNET"
+ },
+ {
+ "bias_current": 300,
+ "flags": 3,
+ "rx_freq_lmda": 1500,
+ "rx_grid_span": 500,
+ "rx_offset": 700,
+ "rx_pwr": 2000,
+ "temperature": 273,
+ "tx_freq_lmda": 1500,
+ "tx_grid_span": 500,
+ "tx_offset": 700,
+ "tx_pwr": 2000,
+ "type": "OPTICAL"
+ },
+ {
+ "data": [],
+ "exp_type": 0,
+ "experimenter": 101,
+ "type": "EXPERIMENTER"
+ },
+ {
+ :
+
+ :
+ }
+ ]
+ }
+ ]
+ }
+
.. _get-ports-description:
@@ -712,7 +896,7 @@ Get ports description
URI /stats/portdesc/<dpid>
======= =======================
- Response message body:
+ Response message body(OpenFlow1.3 or earlier):
============== ======================================
====================
Attribute Description Example
@@ -731,10 +915,27 @@ Get ports description
max_speed Max port bitrate in kbps 0
============== ======================================
====================
+ Response message body(OpenFlow1.4 or later):
+
+ ============== ======================================
======================================
+ 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
+ length Length of this entry 168
+ properties struct ofp_port_desc_prop_header [{"length": 32,
"curr": 10248,...}...]
+ ============== ======================================
======================================
+
Example of use::
$ curl -X GET http://localhost:8080/stats/portdesc/1
+ Response (OpenFlow1.3 or earlier):
+
::
{
@@ -759,6 +960,60 @@ Get ports description
]
}
+ Response (OpenFlow1.4 or later):
+
+ ::
+
+ {
+ "1": [
+ {
+ "port_no": 1,
+ "hw_addr": "0a:b6:d0:0c:e1:d7",
+ "name": "s1-eth1",
+ "config": 0,
+ "state": 0,
+ "length": 168,
+ "properties": [
+ {
+ "length": 32,
+ "curr": 10248,
+ "advertised": 10240,
+ "supported": 10248,
+ "peer": 10248,
+ "curr_speed": 5000,
+ "max_speed": 5000,
+ "type": "ETHERNET"
+ },
+ {
+ "length": 40,
+ "rx_grid_freq_lmda": 1500,
+ "tx_grid_freq_lmda": 1500,
+ "rx_max_freq_lmda": 2000,
+ "tx_max_freq_lmda": 2000,
+ "rx_min_freq_lmda": 1000,
+ "tx_min_freq_lmda": 1000,
+ "tx_pwr_max": 2000,
+ "tx_pwr_min": 1000,
+ "supported": 1,
+ "type": "OPTICAL"
+ },
+ {
+ "data": [],
+ "exp_type": 0,
+ "experimenter": 101,
+ "length": 12,
+ "type": "EXPERIMENTER"
+ },
+ {
+ :
+
+ :
+ }
+ ]
+ }
+ ]
+ }
+
Get queues stats
----------------
@@ -782,7 +1037,7 @@ Get queues stats
e.g. GET http://localhost:8080/stats/queue/1/ALL/1
- Response message body:
+ Response message body(OpenFlow1.3 or earlier):
==============
============================================================= ===========
Attribute Description
Example
@@ -797,10 +1052,29 @@ Get queues stats
duration_nsec Time queue has been alive in nanoseconds beyond
duration_sec 3912967296
==============
============================================================= ===========
+ Response message body(OpenFlow1.4 or later):
+
+ ==============
=============================================================
======================================
+ Attribute Description
Example
+ ==============
=============================================================
======================================
+ dpid Datapath ID
"1"
+ port_no Port number
1
+ queue_id Queue ID
0
+ tx_bytes Number of transmitted bytes
0
+ tx_packets Number of transmitted packets
0
+ tx_errors Number of packets dropped due to overrun
0
+ duration_sec Time queue has been alive in seconds
4294963425
+ duration_nsec Time queue has been alive in nanoseconds beyond
duration_sec 3912967296
+ length Length of this entry
104
+ properties struct ofp_queue_stats_prop_header
[{"type": 65535,"length": 12,...},...]
+ ==============
=============================================================
======================================
+
Example of use::
$ curl -X GET http://localhost:8080/stats/queue/1
+ Response (OpenFlow1.3 or earlier):
+
::
{
@@ -826,6 +1100,55 @@ Get queues stats
]
}
+ Response (OpenFlow1.4 or later):
+
+ ::
+
+ {
+ "1": [
+ {
+ "port_no": 1,
+ "queue_id": 0,
+ "tx_bytes": 0,
+ "tx_packets": 0,
+ "tx_errors": 0,
+ "duration_sec": 4294963425,
+ "duration_nsec": 3912967296,
+ "length": 104,
+ "properties": [
+ {
+ "OFPQueueStatsPropExperimenter": {
+ "type": 65535,
+ "length": 16,
+ "data": [
+ 1
+ ],
+ "exp_type": 1,
+ "experimenter": 101
+ }
+ },
+ {
+ :
+
+ :
+ }
+ ]
+ },
+ {
+ "port_no": 2,
+ "queue_id": 1,
+ "tx_bytes": 0,
+ "tx_packets": 0,
+ "tx_errors": 0,
+ "duration_sec": 4294963425,
+ "duration_nsec": 3912967296,
+ "length": 48,
+ "properties": []
+ }
+ ]
+ }
+
+.. _get-queues-config:
Get queues config
-----------------
@@ -839,6 +1162,11 @@ Get queues config
URI /stats/queueconfig/<dpid>/<port>
======= ================================
+ .. CAUTION::
+
+ This message is deprecated in Openflow1.4.
+ If OpenFlow 1.4 or later is in use, please refer to
:ref:`get-queues-description` instead.
+
Response message body:
================
======================================================
========================================
@@ -899,6 +1227,79 @@ Get queues config
]
}
+.. _get-queues-description:
+
+Get queues description
+----------------------
+
+ Get queues description of the switch which specified with Datapath ID,
Port and Queue_id in URI.
+
+ Usage:
+
+ ======= =========================================
+ Method GET
+ URI /stats/queuedesc/<dpid>/<port>/<queue_id>
+ ======= =========================================
+
+ .. CAUTION::
+
+ This message is available in OpenFlow1.4 or later.
+ If Openflow1.3 or earlier is in use, please refer to
:ref:`get-queues-config` instead.
+
+
+ Response message body:
+
+ ================
======================================================
========================================
+ Attribute Description
Example
+ ================
======================================================
========================================
+ dpid Datapath ID
"1"
+ len Length in bytes of this queue desc
88
+ port_no Port which was queried
1
+ queue_id Queue ID
1
+ properties struct ofp_queue_desc_prop_header
[{"length": 8, ...},...]
+ ================
======================================================
========================================
+
+ Example of use::
+
+ $ curl -X GET http://localhost:8080/stats/queuedesc/1/1/1
+
+ ::
+
+
+ {
+ "1": [
+ {
+ "len": 88,
+ "port_no": 1,
+ "queue_id": 1,
+ "properties": [
+ {
+ "length": 8,
+ "rate": 300,
+ "type": "MIN_RATE"
+ },
+ {
+ "length": 8,
+ "rate": 900,
+ "type": "MAX_RATE"
+ },
+ {
+ "length": 16,
+ "exp_type": 0,
+ "experimenter": 101,
+ "data": [1],
+ "type": "EXPERIMENTER"
+ },
+ {
+ :
+
+ :
+ }
+ ]
+ }
+ ]
+ }
+
Get groups stats
----------------
@@ -976,7 +1377,7 @@ Get group description stats
URI /stats/groupdesc/<dpid>
======= ========================
- Response message body:
+ Response message body(Openflow1.3 or earlier):
===============
======================================================= =============
Attribute Description
Example
@@ -994,10 +1395,33 @@ Get group description stats
-- actions 0 or more actions associated with the bucket
["OUTPUT:1"]
===============
======================================================= =============
+ Response message body(Openflow1.4 or later):
+
+ ===============
=======================================================
====================================
+ Attribute Description
Example
+ ===============
=======================================================
====================================
+ dpid Datapath ID
"1"
+ type One of OFPGT_*
"ALL"
+ group_id Group ID
1
+ length Length of this entry
40
+ 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)
+ -- len Length the bucket in bytes, including this header and
32
+ any adding to make it 64-bit aligned.
+ -- actions 0 or more actions associated with the bucket
[{"OUTPUT:1", "max_len": 65535,...}]
+ ===============
=======================================================
====================================
+
Example of use::
$ curl -X GET http://localhost:8080/stats/groupdesc/1
+ Response (Openflow1.3 or earlier):
+
::
{
@@ -1019,6 +1443,35 @@ Get group description stats
]
}
+ Response (Openflow1.4 or later):
+
+ ::
+
+ {
+ "1": [
+ {
+ "type": "ALL",
+ "group_id": 1,
+ "length": 40,
+ "buckets": [
+ {
+ "weight": 1,
+ "watch_port": 1,
+ "watch_group": 1,
+ "len": 32,
+ "actions": [
+ {
+ "type": "OUTPUT",
+ "max_len": 65535,
+ "port": 2
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+
Get group features stats
------------------------
@@ -1292,7 +1745,7 @@ Add a flow entry
URI /stats/flowentry/add
======= =====================
- Request message body:
+ Request message body(Openflow1.3 or earlier):
============= =====================================================
============================== ===============
Attribute Description
Example Default
@@ -1310,12 +1763,31 @@ Add a flow entry
actions Instruction set (list of dict)
[{"type":"OUTPUT", "port":2}] [] #DROP
============= =====================================================
============================== ===============
+ Request message body(Openflow1.4 or later):
+
+ ============= =====================================================
=============================== ===============
+ 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
+ instructions Instruction set (list of dict)
[{"type":"METER", "meter_id":2}] [] #DROP
+ ============= =====================================================
================================ ===============
+
.. NOTE::
For description of match and actions, please see
:ref:`description-of-match-and-actions`.
+ Example of use(Openflow1.3 or earlier):
- Example of use::
+ ::
$ curl -X POST -d '{
"dpid": 1,
@@ -1386,6 +1858,85 @@ Add a flow entry
]
}' http://localhost:8080/stats/flowentry/add
+ Example of use(Openflow1.4 or later):
+
+ ::
+
+ $ 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
+ },
+ "instructions": [
+ {
+ "type": "APPLY_ACTIONS",
+ "actions": [
+ {
+ "max_len": 65535,
+ "port": 2,
+ "type": "OUTPUT"
+ }
+ ]
+ }
+ ]
+ }' http://localhost:8080/stats/flowentry/add
+
+ ::
+
+ $ curl -X POST -d '{
+ "dpid": 1,
+ "priority": 22222,
+ "match":{
+ "in_port":1
+ },
+ "instructions": [
+ {
+ "type":"GOTO_TABLE",
+ "table_id": 1
+ }
+ ]
+ }' http://localhost:8080/stats/flowentry/add
+
+ ::
+
+ $ curl -X POST -d '{
+ "dpid": 1,
+ "priority": 33333,
+ "match":{
+ "in_port":1
+ },
+ "instructions": [
+ {
+ "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
+ },
+ "instructions": [
+ {
+ "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`.
--
1.9.1
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel