Added QoS L2 scenario
Change-Id: Iff462b03c86d06309c6b3ffb5f16b9ff4a20e141
This commit is contained in:
parent
c7d80d4927
commit
039e436a94
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
110
shaker/scenarios/openstack/qos/l2_qos.hot
Normal file
110
shaker/scenarios/openstack/qos/l2_qos.hot
Normal 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 %}
|
36
shaker/scenarios/openstack/qos/perf_l2.yaml
Normal file
36
shaker/scenarios/openstack/qos/perf_l2.yaml
Normal 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)"
|
Loading…
x
Reference in New Issue
Block a user