diff options
author | Dino Simeon Madarang <dino.simeonx.madarang@intel.com> | 2015-10-19 14:55:06 +0100 |
---|---|---|
committer | Maryam Tahhan <maryam.tahhan@intel.com> | 2016-02-03 10:17:04 +0000 |
commit | f463c563912abb806fe0d2fe85a4cf6825f416cc (patch) | |
tree | 0c588b1390b3333ecf262b4e39460ca2fc9d1d21 /src/ovs/ofctl.py | |
parent | 9685088224d2fe542026a6ecbc31a212e3dca3e9 (diff) |
Add OVS tunnel encapsulation performance test
Measure OVS DPDK and native VXLAN/GRE/GENEVE encapsulation performance.
This patch creates a new deployment scenario, Overlay_P2P.
The DUT is configured as a TEP (Tunnel Endpoint)
which performs encapsulation of frames and sends traffic to
the 2nd traffic generator port. The traffic generator in this
case receives an encapsulated frame. No decapsulation is performed
in this testcase.
Introduce a vsperf param, --run-integration, to filter tests to
integration tests. When running integration tests, variables defined
in the directory conf/integration/*conf as well as the conf/*.conf
are available.
This test case requires DPDK 2.1.0 and OVS master - 6bb4a18 or newer.
Change-Id: Ide2f418909d647119388df9b30d0d0a3656b4e53
JIRA: VSPERF-180
Signed-off-by: Dino Simeon Madarang <dino.simeonx.madarang@intel.com>
Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Reviewed-by: Al Morton <acmorton@att.com>
Diffstat (limited to 'src/ovs/ofctl.py')
-rw-r--r-- | src/ovs/ofctl.py | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/src/ovs/ofctl.py b/src/ovs/ofctl.py index 9d16ef76..43151d3a 100644 --- a/src/ovs/ofctl.py +++ b/src/ovs/ofctl.py @@ -1,4 +1,4 @@ -# Copyright 2015 Intel Corporation. +# Copyright 2015-2016 Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,6 +31,8 @@ _OVS_VSCTL_BIN = os.path.join(settings.getValue('OVS_DIR'), 'utilities', 'ovs-vsctl') _OVS_OFCTL_BIN = os.path.join(settings.getValue('OVS_DIR'), 'utilities', 'ovs-ofctl') +_OVS_APPCTL_BIN = os.path.join(settings.getValue('OVS_DIR'), 'utilities', + 'ovs-appctl') _OVS_BRIDGE_NAME = settings.getValue('VSWITCH_BRIDGE_NAME') @@ -63,6 +65,22 @@ class OFBase(object): return tasks.run_task( cmd, self.logger, 'Running ovs-vsctl...', check_error) + + def run_appctl(self, args, check_error=False): + """Run ``ovs-appctl`` with supplied arguments. + + :param args: Arguments to pass to ``ovs-appctl`` + :param check_error: Throw exception on error + + :return: None + """ + cmd = ['sudo', _OVS_APPCTL_BIN, + '--timeout', + str(self.timeout)] + args + return tasks.run_task( + cmd, self.logger, 'Running ovs-appctl...', check_error) + + # datapath management def add_br(self, br_name=_OVS_BRIDGE_NAME, params=None): @@ -90,6 +108,32 @@ class OFBase(object): self.logger.debug('delete bridge') self.run_vsctl(['del-br', br_name]) + # Route and ARP functions + + def add_route(self, network, destination): + """Add route to tunneling routing table. + + :param network: Network + :param destination: Gateway + + :return: None + """ + self.logger.debug('add ovs/route') + self.run_appctl(['ovs/route/add', network, destination]) + + + def set_tunnel_arp(self, ip_addr, mac_addr, br_name=_OVS_BRIDGE_NAME): + """Add OVS arp entry for tunneling + + :param ip: IP of bridge + :param mac_addr: MAC address of the bridge + :param br_name: Name of the bridge + + :return: None + """ + self.logger.debug('tnl/arp/set') + self.run_appctl(['tnl/arp/set', br_name, ip_addr, mac_addr]) + class OFBridge(OFBase): """Control a bridge instance using ``ovs-vsctl`` and ``ovs-ofctl``. @@ -330,10 +374,10 @@ def flow_key(flow): field_params.append('%(field)s=%(value)s' % {'field': key, 'value': default}) - field_params = ','.join(field_params) + field_params_str = ','.join(field_params) _flow_key_param = { - 'fields': field_params, + 'fields': field_params_str, } # no actions == delete key |