Jump to: navigation, search

Neutron/QoSforLinuxBridge

< Neutron
Revision as of 04:17, 1 November 2013 by Iwamoto (talk | contribs) (Overview)

Introduction

QoS API is under development for icehouse release. There is an implementation for openvswitch plugin only now.

This page is intended to describe QoS implementation plan for linuxbridge.

Blueprint

Linuxbridge QoS support

Overview

It is often necessary to control outgoing traffic from a tenant port to a physical NIC, so that a tenant cannot occupy the bandwidth of the NIC.

This BP will allow to set traffic control parameters to a port (or a network) of linuxbridge by QoS API. On the agent side, a linuxbrige agent uses tc(8) function to apply the traffic control parameters to the physcial interface for the port.

API

The 'type' attribute accepts 'ratelimit'.

The 'policy' attribute has three keys, 'tc_rate', 'tc_latency' and 'tc_burst', which correspond to the 'rate', 'latency' and 'burst' parameters of tc(8) command, respectively.

example:

'qos': {'type': 'ratelimit',
       'policy': {'tc_rate': '100mbit', 'tc_latency': '50ms', 'tc_burst': '3000k'}}

Implementation

The linuxbridge plugin was merged to the ML2 plugin.

This BP expects the ML2 plugin supports QoS extension and things to do is for the linuxbridge agent side only.

The strategy of implementation of the linuxbridge agent is simple:

  • When an interface for a port appears, get the QoS parameters of the port from the neutron-server (RPC) and do tc command to the interface.
  • When a notification of update QoS (RPC) is recieved, does the correspinding action (ex. set or clear traffic control for the port).

Discussion

Setting traffic control is per port basis for a linuxbridge port.

  • QoS for a network is considered the default value when a port of the network is not set QoS.
  • When a notification of network QoS update is recieved, the linuxbridge agent should get QoS policy of all ports on the network on the host. This is a little complicated part for the linuxbridge implementation.
  • linuxbridge agent need to set QoS parameters to an interface when the interface appears on the host, so the information get by the 'get_device_details' RPC should include QoS policy parameters. In addition if a port has no QoS setting but the network of the port has QoS setting, 'get_device_details' should include QoS for the network for the complicated part mentioned above.