diff --git a/doc/source/specs/port_qos.rst b/doc/source/specs/port_qos.rst index d26f8869a..f72bdaea1 100644 --- a/doc/source/specs/port_qos.rst +++ b/doc/source/specs/port_qos.rst @@ -22,57 +22,45 @@ patch we only support applying QoS policies to ports. Proposed Change =============== -DragonFlow defines an object called qos to implement the port QoS. The -qos object has some attributes listed in the followed table: +DragonFlow defines an object called QoS to implement the port QoS. The +QoS object has some attributes listed in the followed table: +--------------------+---------------------------------------------+ -| attribute name | description | -| | | -+------------------------------------------------------------------+ +| Attribute Name | Description | ++====================+=============================================+ | id | identify | -| | | -+------------------------------------------------------------------+ ++--------------------+---------------------------------------------+ | type | type of QoS | -| | | -+------------------------------------------------------------------+ ++--------------------+---------------------------------------------+ | tenant_id | tenant ID of QoS object owner | -| | | -+------------------------------------------------------------------+ ++--------------------+---------------------------------------------+ | description | QoS description | -| | | -+------------------------------------------------------------------+ ++--------------------+---------------------------------------------+ | qos_policy | QoS policy object | -| | | +--------------------+---------------------------------------------+ 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_burstSize | burst size of egress direction | -| | | -+------------------------------------------------------------------+ ++--------------------+---------------------------------------------+ | rx_averateLimit | bandwidth limit of ingress direction | -| | | -+------------------------------------------------------------------+ ++--------------------+---------------------------------------------+ | rx_burstSize | burst size of ingress direction | -| | | -+------------------------------------------------------------------+ ++--------------------+---------------------------------------------+ | 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 -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 -qos_policy when the type of qos is "dscp". +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 +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 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, 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: https://review.openstack.org/#/c/331932/ @@ -91,68 +79,73 @@ https://review.openstack.org/#/c/331932/ ML2 Mechanism Driver -------------------- -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 +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 delete the relationship. QoS App ------- 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 port removed. 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 -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 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. Port Removed ------------ 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 -example, delete the qos and queue attached to the removed port on the OVS. +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. Port Updated ------------ 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 "Port Created" section above. -For scenario 2, the Qos app will update the configuration according to the new -qos object. +For scenario 2, the QoS app will update the configuration according to the new +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 -apply the qos, it can be deleted from the DragonFlow DB. +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. -Qos Object Update +QoS Object Update ----------------- -When updating the qos object, the new value of bandwidth will be propagated -to all the ports which apply the qos object. +When updating the QoS object, the new value of bandwidth will be propagated +to all the ports which apply the QoS object. References ========== + http://specs.openstack.org/openstack/neutron-specs/specs/liberty/qos-api-extension.html + https://review.openstack.org/#/c/331932