Added QoS L2 scenario

Change-Id: Iff462b03c86d06309c6b3ffb5f16b9ff4a20e141
This commit is contained in:
Ilya Shakhat 2016-05-27 17:08:20 +03:00
parent c7d80d4927
commit 039e436a94
6 changed files with 173 additions and 3 deletions

View File

@ -337,6 +337,18 @@ external network to the other network.
To use this scenario specify parameter ``--scenario openstack/perf_l3_north_south``.
Scenario source is available at: https://github.com/openstack/shaker/blob/master/shaker/scenarios/openstack/perf_l3_north_south.yaml
.. _scenario_openstack_l2_qos_performance:
OpenStack L2 QoS Performance
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In this scenario Shaker launches 1 pair of instances in the same tenant
network. Each instance is hosted on a separate compute node. The traffic goes
within the tenant network (L2 domain). Neutron QoS feature is used to limit
traffic throughput to 10 Mbit/s.
To use this scenario specify parameter ``--scenario openstack/qos/perf_l2``.
Scenario source is available at: https://github.com/openstack/shaker/blob/master/shaker/scenarios/openstack/qos/perf_l2.yaml
.. _scenario_openstack_l2_udp:
OpenStack L2 UDP
@ -499,3 +511,13 @@ instance so they are routable from the external network.
Template source is available at: https://github.com/openstack/shaker/blob/master/shaker/scenarios/openstack/l3_north_south.hot
.. _template_openstack_qos_l2_qos:
openstack/qos/l2_qos
^^^^^^^^^^^^^^^^^^^^
This Heat template creates a new Neutron network, a router to the external
network and plugs instances into this new network. All instances are located in
the same L2 domain.
Template source is available at: https://github.com/openstack/shaker/blob/master/shaker/scenarios/openstack/qos/l2_qos.hot

View File

@ -89,7 +89,8 @@ optional arguments:
"openstack/full_l2", "openstack/full_l3_east_west",
"openstack/full_l3_north_south", "openstack/perf_l2",
"openstack/perf_l3_east_west",
"openstack/perf_l3_north_south", "openstack/udp_l2",
"openstack/perf_l3_north_south",
"openstack/qos/perf_l2", "openstack/udp_l2",
"openstack/udp_l3_east_west",
"openstack/udp_l3_north_south", "spot/ping",
"spot/tcp", "spot/udp". Defaults to

View File

@ -144,7 +144,8 @@ optional arguments:
"openstack/full_l2", "openstack/full_l3_east_west",
"openstack/full_l3_north_south", "openstack/perf_l2",
"openstack/perf_l3_east_west",
"openstack/perf_l3_north_south", "openstack/udp_l2",
"openstack/perf_l3_north_south",
"openstack/qos/perf_l2", "openstack/udp_l2",
"openstack/udp_l3_east_west",
"openstack/udp_l3_north_south", "spot/ping",
"spot/tcp", "spot/udp". Defaults to

View File

@ -167,7 +167,7 @@
# "openstack/external/perf_l3_north_south_with_fip", "openstack/full_l2",
# "openstack/full_l3_east_west", "openstack/full_l3_north_south",
# "openstack/perf_l2", "openstack/perf_l3_east_west",
# "openstack/perf_l3_north_south", "openstack/udp_l2",
# "openstack/perf_l3_north_south", "openstack/qos/perf_l2", "openstack/udp_l2",
# "openstack/udp_l3_east_west", "openstack/udp_l3_north_south", "spot/ping",
# "spot/tcp", "spot/udp". Defaults to env[SHAKER_SCENARIO]. (string value)
#scenario = <None>

View File

@ -0,0 +1,110 @@
heat_template_version: 2013-05-23
description:
This Heat template creates a new Neutron network, a router to the external
network and plugs instances into this new network. All instances are located
in the same L2 domain.
parameters:
image:
type: string
description: Name of image to use for servers
flavor:
type: string
description: Flavor to use for servers
external_net:
type: string
description: ID or name of external network
server_endpoint:
type: string
description: Server endpoint address
resources:
qos_policy:
type: OS::Neutron::QoSPolicy
bandwidth_limit_rule:
type: OS::Neutron::QoSBandwidthLimitRule
properties:
policy: { get_resource: qos_policy }
max_kbps: 10000
max_burst_kbps: 10000
private_net:
type: OS::Neutron::Net
properties:
name: {{ unique }}_net
qos_policy: { get_resource: qos_policy }
private_subnet:
type: OS::Neutron::Subnet
properties:
network_id: { get_resource: private_net }
cidr: 10.0.0.0/16
dns_nameservers: [ 8.8.8.8, 8.8.4.4 ]
router:
type: OS::Neutron::Router
properties:
external_gateway_info:
network: { get_param: external_net }
router_interface:
type: OS::Neutron::RouterInterface
properties:
router_id: { get_resource: router }
subnet_id: { get_resource: private_subnet }
server_security_group:
type: OS::Neutron::SecurityGroup
properties:
rules: [
{remote_ip_prefix: 0.0.0.0/0,
protocol: tcp,
port_range_min: 1,
port_range_max: 65535},
{remote_ip_prefix: 0.0.0.0/0,
protocol: udp,
port_range_min: 1,
port_range_max: 65535},
{remote_ip_prefix: 0.0.0.0/0,
protocol: icmp}]
{% for agent in agents.values() %}
{{ agent.id }}:
type: OS::Nova::Server
properties:
name: {{ agent.id }}
image: { get_param: image }
flavor: { get_param: flavor }
availability_zone: "{{ agent.availability_zone }}"
networks:
- port: { get_resource: {{ agent.id }}_port }
user_data_format: RAW
user_data:
str_replace:
template: |
#!/bin/sh
screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
params:
"$SERVER_ENDPOINT": { get_param: server_endpoint }
"$AGENT_ID": {{ agent.id }}
{{ agent.id }}_port:
type: OS::Neutron::Port
properties:
network_id: { get_resource: private_net }
fixed_ips:
- subnet_id: { get_resource: private_subnet }
security_groups: [{ get_resource: server_security_group }]
{% endfor %}
outputs:
{% for agent in agents.values() %}
{{ agent.id }}_instance_name:
value: { get_attr: [ {{ agent.id }}, instance_name ] }
{{ agent.id }}_ip:
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [private_net, name] }, 0 ] }
{% endfor %}

View File

@ -0,0 +1,36 @@
title: OpenStack L2 QoS Performance
description:
In this scenario Shaker launches 1 pair of instances in the same tenant
network. Each instance is hosted on a separate compute node. The traffic goes
within the tenant network (L2 domain). Neutron QoS feature is used to limit
traffic throughput to 10 Mbit/s.
deployment:
template: l2_qos.hot
# accommodation: [pair, single_room, compute_nodes: 2]
accommodation: [pair, double_room]
execution:
tests:
-
title: Ping
class: flent
method: ping
time: 10
sla:
- "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
-
title: TCP
class: iperf3
sla:
- "[type == 'agent'] >> (stats.bandwidth.avg < 11)"
- "[type == 'agent'] >> (stats.retransmits.max < 10)"
-
title: UDP
class: iperf3
udp: on
bandwidth: 0
datagram_size: 32
sla:
- "[type == 'agent'] >> (stats.packets.avg < 40000)"