What is new in Neutron QoS? Miguel Lavalle Slawek Kaplonski miguel@mlavalle.com skaplons@redhat.com IRC: mlavalle@freenode IRC: slaweq@freenode
AGENDA ● Introduction to Neutron QoS ● Existing QoS features in Neutron ● New features added in Queens release ● Planned New features 2
Neutron QoS - basic concept
Neutron QoS - data model
Neutron QoS - usage Create QoS policy openstack network qos policy create Summit_Policy +-------------+--------------------------------------+ | Field | Value | +-------------+--------------------------------------+ | description | | | id | 8a495fea-e617-45f6-82e6-a61f7860c5cc | | is_default | False | | name | Summit_Policy | | project_id | 0783adde257d4a0280d3df1908b217c8 | | rules | [] | | shared | False | | tags | [] | +-------------+--------------------------------------+ 5
Neutron QoS - usage Create QoS rule in policy openstack network qos rule create --type bandwidth-limit \ --max-kbps 1024 \ --max-burst-kbit 512 \ Summit_Policy +----------------+--------------------------------------+ | Field | Value | +----------------+--------------------------------------+ | direction | egress | | id | f9bb1173-1bf0-4942-8932-a69b61ef5b52 | | max_burst_kbps | 512 | | max_kbps | 1024 | | name | None | | project_id | | +----------------+--------------------------------------+ 6
Neutron QoS - usage Attach QoS policy to port (or network) openstack port set --qos-policy Summit_Policy \ aa42976b-03d0-4fbb-90f8-fa7b88da8a2e openstack port show aa42976b-03d0-4fbb-90f8-fa7b88da8a2e +-----------------------+-------------------------------------------------+ | Field | Value | +-----------------------+-------------------------------------------------+ | created_at | 2018-05-07T14:51:49Z | | device_id | 80afc6fb-12a1-4bae-8cd4-6835aa819227 | | id | aa42976b-03d0-4fbb-90f8-fa7b88da8a2e | | mac_address | fa:16:3e:4e:e7:bc | | network_id | c8714b0a-f960-4db3-bbf6-f6dddb5a6843 | | project_id | 24f901074d52470da2c641e26c2753e1 | | qos_policy_id | 8a495fea-e617-45f6-82e6-a61f7860c5cc | | revision_number | 8 | | status | ACTIVE | | updated_at | 2018-05-09T20:36:11Z | +-----------------------+-------------------------------------------------+ 7
Neutron QoS - available rule types Open vSwitch SR-IOV Linux Bridge L3 agent Bandwidth limit Egress / Ingress Egress (1) Egress / Ingress Egress / Ingress (3) Minimum - Egress (2) - - Bandwidth DSCP Marking Egress - Egress - 1. Max burst parameter is skipped because it's not supported by ip tool 2. Best effort - scheduler is not aware about this minimum bandwidth requirement for ports 3. Limit for Floating IP 8
Neutron QoS - bandwidth limit rule Rule API openstack network qos rule create \ --type bandwidth-limit \ --max-kbps 512 \ --max-burst-kbit 128 \ --ingress \ Summit_Policy +----------------+--------------------------------------+ | Field | Value | +----------------+--------------------------------------+ | direction | ingress | | id | f5fc67f8-83a2-40be-ad12-d15fbe29381f | | max_burst_kbps | 128 | | max_kbps | 512 | | name | None | | project_id | | +----------------+--------------------------------------+ 9
Neutron QoS - bandwidth limit rule Backend implementation - Open vSwitch L2 agent - ingress traffic sudo ovs-vsctl list qos _uuid : a4857dc7-e64f-4370-9cf2-408566871bf1 external_ids : {id="tap9a566f82-0c"} other_config : {max-rate="512000"} queues : {0=671cc958-2328-4d77-9e36-91984582e5a5} type : linux-htb sudo ovs-vsctl list queue _uuid : 671cc958-2328-4d77-9e36-91984582e5a5 dscp : [] external_ids : {id="tap9a566f82-0c", queue_type="0"} other_config : {burst="128000", max-rate="512000"} sudo ovs-vsctl list port tap9a566f82-0c | grep qos qos : a4857dc7-e64f-4370-9cf2-408566871bf1 10
Neutron QoS - bandwidth limit rule Backend implementation - Open vSwitch L2 agent - egress traffic sudo ovs-vsctl list interface tap9a566f82-0c | grep ingress_ ingress_policing_burst: 256 ingress_policing_rate: 1024 11
Neutron QoS - bandwidth limit rule Backend implementation - Linux bridge L2 agent - ingress traffic tc qdisc show dev tap2e939f9e-9e qdisc tbf 8002: root refcnt 2 rate 512Kbit burst 16Kb lat 50.0ms 12
Neutron QoS - bandwidth limit rule Backend implementation - Linux bridge L2 agent - egress traffic tc filter show dev tap2e939f9e-9e parent ffff: filter protocol all pref 49 basic chain 0 filter protocol all pref 49 basic chain 0 handle 0x1 police 0x1 rate 1024Kbit burst 32Kb mtu 64Kb action drop overhead 0b ref 1 bind 1 13
Neutron QoS - bandwidth limit rule Backend implementation - SR-IOV L2 agent - egress traffic ip link show enp8s0f0 3: enp8s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 90:e2:ba:5e:a6:40 brd ff:ff:ff:ff:ff:ff vf 0 MAC 00:00:00:00:00:00, tx rate 1000 (Mbps), max_tx_rate 1000Mbps, spoof checking on, link-state auto vf 1 MAC 56:92:c6:c6:e5:db, tx rate 2000 (Mbps), max_tx_rate 2000Mbps, spoof checking on, link-state auto 14
Neutron QoS - DSCP marking rule Rule API openstack network qos rule create \ --type dscp-marking \ --dscp-mark 16 \ Summit_Policy +------------+--------------------------------------+ | Field | Value | +------------+--------------------------------------+ | dscp_mark | 16 | | id | e5256a9d-0ebd-4e45-acfe-bd2048d33d53 | | name | None | +------------+--------------------------------------+ 15
Neutron QoS - DSCP marking rule Backend implementation - Open vSwitch L2 agent sudo ovs-ofctl show br-int | grep tap9a566f82-0c 141(tap9a566f82-0c): addr:fe:16:3e:47:85:27 sudo ovs-ofctl dump-flows br-int | grep in_port=141 | grep tos cookie=0x66a4b613766ef2e1, duration=70.889s, table=0, n_packets=0, n_bytes=0, idle_age=405, priority=65535,reg2=0,in_port=141 actions=mod_nw_tos:64,load:0x37->NXM_NX_REG2[0..5],resubmit(,0) 16
Neutron QoS - DSCP marking rule Backend implementation - Linux bridge L2 agent iptables -t mangle -nL neutron-linuxbri-qos-o2e939f Chain neutron-linuxbri-qos-o2e939f (1 references) target prot opt source destination DSCP all -- 0.0.0.0/0 0.0.0.0/0 DSCP set 0x10 17
Neutron QoS - Minimum bandwidth Rule API openstack network qos rule create \ --type minimum-bandwidth \ --min-kbps 512 \ --egress \ Summit_Policy +------------+--------------------------------------+ | Field | Value | +------------+--------------------------------------+ | direction | egress | | id | 5e5969f2-66f8-4bed-9905-b31b33902189 | | min_kbps | 512 | | name | None | +------------+--------------------------------------+ 18
New rule types validation and reporting
Rules validation - old way Report of available rule types Example for deployment with openvswitch and sriovnicswitch mechanism drivers openstack network qos rule type list +-----------------+ | Type | +-----------------+ | bandwidth_limit | (- supported by both drivers) +-----------------+ 20
Rules validation - old way - problems ● There was no real validation - it was only information for user, ● Very limited range of rule types available in mixed deployments, ● Some attributes of rules have big impact of backend implementation (e.g. direction ) 21
Rules validation - new way Report of available rule types Example for deployment with openvswitch and sriovnicswitch mechanism drivers: openstack network qos rule type list +-------------------+ | Type | +-------------------+ | bandwidth_limit | (- supported by both drivers) | dscp_marking | ( - supported by openvswitch driver) | minimum_bandwidth | (- supported by sriovnicswitch driver) +-------------------+ 22
Recommend
More recommend