summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorahothan <ahothan@cisco.com>2018-12-05 16:12:29 -0800
committerahothan <ahothan@cisco.com>2018-12-05 16:12:29 -0800
commit8eaf1fcc4b2b3678d62ddb081f0d912fdc92bc20 (patch)
treed5553c4f8fbb475d6ffc49022fb246d67d4fd8f4
parentf5d7345437161218d487e3771a96df29928f6c4f (diff)
NFVBENCH-117 Streamline VxLAN vni config and use auto-indexing
Change-Id: Ie57d4c38ee22a4032991c282af526e0b28ce7a83 Signed-off-by: ahothan <ahothan@cisco.com>
-rwxr-xr-xnfvbench/cfg.default.yaml9
-rw-r--r--nfvbench/chaining.py63
-rw-r--r--nfvbench/compute.py2
-rw-r--r--test/test_chains.py3
4 files changed, 13 insertions, 64 deletions
diff --git a/nfvbench/cfg.default.yaml b/nfvbench/cfg.default.yaml
index c90709f..fa3d807 100755
--- a/nfvbench/cfg.default.yaml
+++ b/nfvbench/cfg.default.yaml
@@ -157,13 +157,6 @@ traffic_generator:
# Leave empty if there is no VLAN tagging required, or specify the VLAN id to use
# for all VxLAN tunneled traffic
vtep_vlan:
- # VxLAN only: VNI range for VXLAN encapsulation [start_vni, end_vni] [5000, 6000]
- # VNI can have a value from range 5000-16777216
- # For PVP, VNIs are allocated consecutively - 2 per each chain
- # Chain 1: 5000, 5001; Chain 2: 5002, 5003; Chain X: 5000+x, 5000+x+1
- # For PVVP scenario VNIs allocated consecutively - 3 per each chain
- # Chain 1: 5000, 5001, 5002; Chain 2: 5003, 5004, 5005; Chain X: 5000+x, 5000+x+1, 5000+x+1
- vnis:
# VxLAN only: local/source vteps IP addresses for port 0 and 1 ['10.1.1.230', '10.1.1.231']
src_vteps:
# VxLAN only: remote IP address of the remote VTEPs that terminate all tunnels originating from local VTEPs
@@ -262,7 +255,7 @@ generic_poll_sec: 2
# name of the loop VM
loop_vm_name: 'nfvbench-loop-vm'
-# Default names, subnets and CIDRs for PVP/PVVP networks
+# Default names, subnets and CIDRs for PVP/PVVP networks (openstack only)
#
# If a network with given name already exists it will be reused.
# - PVP only uses left and right
diff --git a/nfvbench/chaining.py b/nfvbench/chaining.py
index fe79d88..ce1b5ce 100644
--- a/nfvbench/chaining.py
+++ b/nfvbench/chaining.py
@@ -287,10 +287,10 @@ class ChainNetwork(object):
}
if network_config.network_type:
body['network']['provider:network_type'] = network_config.network_type
- if self.segmentation_id:
- body['network']['provider:segmentation_id'] = self.segmentation_id
- if self.physical_network:
- body['network']['provider:physical_network'] = self.physical_network
+ if self.segmentation_id:
+ body['network']['provider:segmentation_id'] = self.segmentation_id
+ if self.physical_network:
+ body['network']['provider:physical_network'] = self.physical_network
self.network = self.manager.neutron_client.create_network(body)['network']
body = {
@@ -304,7 +304,7 @@ class ChainNetwork(object):
subnet = self.manager.neutron_client.create_subnet(body)['subnet']
# add subnet id to the network dict since it has just been added
self.network['subnets'] = [subnet['id']]
- LOG.info('Created network: %s.', self.name)
+ LOG.info('Created network: %s', self.name)
def get_uuid(self):
"""
@@ -895,11 +895,7 @@ class ChainManager(object):
self.vlans = [self._check_list('vlans[0]', config.vlans[0], re_vlan),
self._check_list('vlans[1]', config.vlans[1], re_vlan)]
if config.vxlan:
- # make sure there are 2 entries
- if len(config.vnis) != 2:
- raise ChainException('The config vnis property must be a list with 2 VNIs')
- self.vnis = [self._check_list('vnis[0]', config.vnis[0], re_vlan),
- self._check_list('vnis[1]', config.vnis[1], re_vlan)]
+ raise ChainException('VxLAN is only supported with OpenStack')
def _get_dest_macs_from_config(self):
re_mac = "[0-9a-fA-F]{2}([-:])[0-9a-fA-F]{2}(\\1[0-9a-fA-F]{2}){4}$"
@@ -996,39 +992,6 @@ class ChainManager(object):
if initial_instance_count:
LOG.info('All instances are active')
- def _get_vxlan_net_cfg(self, chain_id):
- int_nets = self.config.internal_networks
- net_left = int_nets.left
- net_right = int_nets.right
- vnis = self.generator_config.vnis
- chain_id += 1
- seg_id_left = vnis[0]
- if self.config.service_chain == ChainType.PVP:
- if chain_id > 1:
- seg_id_left = ((chain_id - 1) * 2) + seg_id_left
- seg_id_right = seg_id_left + 1
- if (seg_id_left and seg_id_right) > vnis[1]:
- raise Exception('Segmentation ID is more than allowed '
- 'value: {}'.format(vnis[1]))
- net_left['segmentation_id'] = seg_id_left
- net_right['segmentation_id'] = seg_id_right
- net_cfg = [net_left, net_right]
- else:
- # PVVP
- net_middle = int_nets.middle
- if chain_id > 1:
- seg_id_left = ((chain_id - 1) * 3) + seg_id_left
- seg_id_middle = seg_id_left + 1
- seg_id_right = seg_id_left + 2
- if (seg_id_left and seg_id_right and seg_id_middle) > vnis[1]:
- raise Exception('Segmentation ID is more than allowed '
- 'value: {}'.format(vnis[1]))
- net_left['segmentation_id'] = seg_id_left
- net_middle['segmentation_id'] = seg_id_middle
- net_right['segmentation_id'] = seg_id_right
- net_cfg = [net_left, net_middle, net_right]
- return net_cfg
-
def get_networks(self, chain_id=None):
"""Get the networks for given EXT, PVP or PVVP chain.
@@ -1052,15 +1015,11 @@ class ChainManager(object):
else:
lookup_only = False
int_nets = self.config.internal_networks
- network_type = set([int_nets[net].get('network_type') for net in int_nets])
- if self.config.vxlan and 'vxlan' in network_type:
- net_cfg = self._get_vxlan_net_cfg(chain_id)
+ # VLAN and VxLAN
+ if self.config.service_chain == ChainType.PVP:
+ net_cfg = [int_nets.left, int_nets.right]
else:
- # VLAN
- if self.config.service_chain == ChainType.PVP:
- net_cfg = [int_nets.left, int_nets.right]
- else:
- net_cfg = [int_nets.left, int_nets.middle, int_nets.right]
+ net_cfg = [int_nets.left, int_nets.middle, int_nets.right]
networks = []
try:
for cfg in net_cfg:
@@ -1163,7 +1122,7 @@ class ChainManager(object):
return [self.chains[chain_index].get_vxlan(port_index)
for chain_index in range(self.chain_count)]
# no openstack
- return self.vnis[port_index]
+ raise ChainException('VxLAN is only supported with OpenStack')
def get_dest_macs(self, port_index):
"""Get the list of per chain dest MACs on a given port.
diff --git a/nfvbench/compute.py b/nfvbench/compute.py
index 97fd166..556ade4 100644
--- a/nfvbench/compute.py
+++ b/nfvbench/compute.py
@@ -107,7 +107,7 @@ class Compute(object):
security_groups = None
# Also attach the created security group for the test
- LOG.info('Creating instance %s with AZ %s', vmname, avail_zone)
+ LOG.info('Creating instance %s with AZ: "%s"', vmname, avail_zone)
instance = self.novaclient.servers.create(name=vmname,
image=image,
flavor=flavor,
diff --git a/test/test_chains.py b/test/test_chains.py
index de18e92..17c5b94 100644
--- a/test/test_chains.py
+++ b/test/test_chains.py
@@ -76,7 +76,6 @@ def test_chain_runner_ext_no_openstack():
config = _get_chain_config(sc=ChainType.EXT)
specs = Specs()
config.vlans = [100, 200]
- config.vnis = [5000, 6000]
config['traffic_generator']['mac_addrs_left'] = ['00:00:00:00:00:00']
config['traffic_generator']['mac_addrs_right'] = ['00:00:00:00:01:00']
@@ -173,7 +172,6 @@ def _check_nfvbench_openstack(sc=ChainType.PVP, l2_loopback=False):
if l2_loopback:
config.l2_loopback = True
config.vlans = [[100], [200]]
- config.vnis = [[5000], [6000]]
factory = BasicFactory()
config_plugin = factory.get_config_plugin_class()(config)
config = config_plugin.get_config()
@@ -388,7 +386,6 @@ def test_fixed_rate_no_openstack():
config = _get_chain_config(ChainType.EXT, 1, True, rate='100%')
specs = Specs()
config.vlans = [100, 200]
- config.vnis = [5000, 6000]
config['traffic_generator']['mac_addrs_left'] = ['00:00:00:00:00:00']
config['traffic_generator']['mac_addrs_right'] = ['00:00:00:00:01:00']
config.no_arp = True