Improve .rst format in port_qos to display tables

Change-Id: I22039e00ec7f778fb0f2f737357efa0b2bcf32d8
This commit is contained in:
Omer Anson 2016-09-28 14:00:15 +03:00
parent cf7369d5ce
commit 155b4f7c96
1 changed files with 46 additions and 53 deletions

View File

@ -22,57 +22,45 @@ patch we only support applying QoS policies to ports.
Proposed Change Proposed Change
=============== ===============
DragonFlow defines an object called qos to implement the port QoS. The DragonFlow defines an object called QoS to implement the port QoS. The
qos object has some attributes listed in the followed table: QoS object has some attributes listed in the followed table:
+--------------------+---------------------------------------------+ +--------------------+---------------------------------------------+
| attribute name | description | | Attribute Name | Description |
| | | +====================+=============================================+
+------------------------------------------------------------------+
| id | identify | | id | identify |
| | | +--------------------+---------------------------------------------+
+------------------------------------------------------------------+
| type | type of QoS | | type | type of QoS |
| | | +--------------------+---------------------------------------------+
+------------------------------------------------------------------+
| tenant_id | tenant ID of QoS object owner | | tenant_id | tenant ID of QoS object owner |
| | | +--------------------+---------------------------------------------+
+------------------------------------------------------------------+
| description | QoS description | | description | QoS description |
| | | +--------------------+---------------------------------------------+
+------------------------------------------------------------------+
| qos_policy | QoS policy object | | qos_policy | QoS policy object |
| | |
+--------------------+---------------------------------------------+ +--------------------+---------------------------------------------+
The qos_policy includes some attributes listed in the followed table: The qos_policy includes some attributes listed in the followed table:
+--------------------+---------------------------------------------+ +--------------------+---------------------------------------------+
| attribute name | description | | Attribute Name | Description |
| | | +====================+=============================================+
+------------------------------------------------------------------+
| tx_averateLimit | bandwidth limit of egress direction | | tx_averateLimit | bandwidth limit of egress direction |
| | | +--------------------+---------------------------------------------+
+------------------------------------------------------------------+
| tx_burstSize | burst size of egress direction | | tx_burstSize | burst size of egress direction |
| | | +--------------------+---------------------------------------------+
+------------------------------------------------------------------+
| rx_averateLimit | bandwidth limit of ingress direction | | rx_averateLimit | bandwidth limit of ingress direction |
| | | +--------------------+---------------------------------------------+
+------------------------------------------------------------------+
| rx_burstSize | burst size of ingress direction | | rx_burstSize | burst size of ingress direction |
| | | +--------------------+---------------------------------------------+
+------------------------------------------------------------------+
| dscp | Differentiated Services Code Point | | dscp | Differentiated Services Code Point |
| | |
+--------------------+---------------------------------------------+ +--------------------+---------------------------------------------+
The egress and ingress directions are from the VM point of view. The egress and ingress directions are from the VM's point of view.
The type of qos includes "all" and "dscp". Besides the basic attributes The type of QoS includes "all" and "dscp". Besides the basic attributes
id, type, etc, the qos may have all of the attributes in the qos_policy id, type, etc, the QoS may have all of the attributes in the qos_policy
when the type of qos is "all" and only have the dscp attribute in the when the type of QoS is "all" and only have the dscp attribute in the
qos_policy when the type of qos is "dscp". qos_policy when the type of QoS is "dscp".
QoS Notification Driver QoS Notification Driver
----------------------- -----------------------
@ -83,7 +71,7 @@ with the CRUD operations of QoS policies.
If you want to use ML2 as core plugin and use dragonflow as ML2 mech driver, If you want to use ML2 as core plugin and use dragonflow as ML2 mech driver,
you should edit neutron.conf file to configure you should edit neutron.conf file to configure
"notification_drivers = df_notification_driver" in [qos] section. "notification_drivers = df_notification_driver" in [QoS] section.
You can see the implement of qos_notification_driver in patch: You can see the implement of qos_notification_driver in patch:
https://review.openstack.org/#/c/331932/ https://review.openstack.org/#/c/331932/
@ -91,68 +79,73 @@ https://review.openstack.org/#/c/331932/
ML2 Mechanism Driver ML2 Mechanism Driver
-------------------- --------------------
When port updates related to a qos, the DragonFlow ML2 driver will save the When port updates related to a QoS, the DragonFlow ML2 driver will save the
relationship of port and qos in DF DB. When port detaches from a qos, it will relationship of port and QoS in DF DB. When port detaches from a QoS, it will
delete the relationship. delete the relationship.
QoS App QoS App
------- -------
The QoS app is a module of local controller which implements the logic of The QoS app is a module of local controller which implements the logic of
QoS. The app concerns about the qos updated and port updated northbound events QoS. The app concerns about the QoS updated and port updated northbound events
and also cares about the southbound port events which include port created and and also cares about the southbound port events which include port created and
port removed. port removed.
Port Created Port Created
------------ ------------
When the QoS app receives the port created event, it will get the qos attached When the QoS app receives the port created event, it will get the QoS attached
to the port from the DB store, then set the tx_burstSize and tx_averateLimit to the port from the DB store, then set the tx_burstSize and tx_averateLimit
of the qos to ingress_policing_bust and ingress_policing_rate of the of the QoS to ingress_policing_bust and ingress_policing_rate of the
corresponding interface on the OVS for limiting the bandwidth of egress traffic corresponding interface on the OVS for limiting the bandwidth of egress traffic
of the port. In addition, the QoS app creates a queue attached to the port and of the port. In addition, the QoS app creates a queue attached to the port and
sets the rx_averateLimit and dscp of qos to other_config and dscp of the queue sets the rx_averateLimit and dscp of QoS to other_config and dscp of the queue
on the OVS for limiting the bandwidth of ingress traffic of the port. on the OVS for limiting the bandwidth of ingress traffic of the port.
Port Removed Port Removed
------------ ------------
When the QoS app receives the port removed event, it will delete the When the QoS app receives the port removed event, it will delete the
corresponding qos configuration of the removed port on the local host, for corresponding QoS configuration of the removed port on the local host, for
example, delete the qos and queue attached to the removed port on the OVS. example, delete the QoS and queue attached to the removed port on the OVS.
Port Updated Port Updated
------------ ------------
The port updated event can show three scenarios: The port updated event can show three scenarios:
1. port applies a qos
2. port applies a new qos
3. port applies no qos
For scenario 1, the QoS app will set the corresponding configuration of the qos 1. port applies a QoS
2. port applies a new QoS
3. port applies no QoS
For scenario 1, the QoS app will set the corresponding configuration of the QoS
for the port, the configuration is similar with the description in for the port, the configuration is similar with the description in
"Port Created" section above. "Port Created" section above.
For scenario 2, the Qos app will update the configuration according to the new For scenario 2, the QoS app will update the configuration according to the new
qos object. QoS object.
For scenario 3, the Qos app will delete the configuration for the port. For scenario 3, the QoS app will delete the configuration for the port.
Qos Object Delete QoS Object Delete
----------------- -----------------
It is not permitted to delete the qos object attached to some ports. If no ports It is not permitted to delete the QoS object attached to some ports. If no ports
apply the qos, it can be deleted from the DragonFlow DB. apply the QoS, it can be deleted from the DragonFlow DB.
Qos Object Update QoS Object Update
----------------- -----------------
When updating the qos object, the new value of bandwidth will be propagated When updating the QoS object, the new value of bandwidth will be propagated
to all the ports which apply the qos object. to all the ports which apply the QoS object.
References References
========== ==========
http://specs.openstack.org/openstack/neutron-specs/specs/liberty/qos-api-extension.html http://specs.openstack.org/openstack/neutron-specs/specs/liberty/qos-api-extension.html
https://review.openstack.org/#/c/331932 https://review.openstack.org/#/c/331932