X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=nfvbench%2Fchaining.py;h=b9ed48bea80c50089f18c497babc82f66b6055fd;hb=713ee57033bde0ca01fa34c78add5a709c2cdd54;hp=a8d6295557646c466a574172ddb45097a9aac069;hpb=95f2491ed89ac99b0d8bd006b4a13cbeb1eb96ce;p=nfvbench.git diff --git a/nfvbench/chaining.py b/nfvbench/chaining.py index a8d6295..b9ed48b 100644 --- a/nfvbench/chaining.py +++ b/nfvbench/chaining.py @@ -370,6 +370,15 @@ class ChainNetwork(object): return self.network['provider:segmentation_id'] + def get_mpls_inner_label(self): + """ + Extract MPLS VPN Label for this network. + + :return: MPLS VPN Label for this network + """ + + return self.network['provider:segmentation_id'] + def delete(self): """Delete this network.""" if not self.reuse and self.network: @@ -456,8 +465,12 @@ class ChainVnf(object): else: tg_gateway1_ip = devices[LEFT].tg_gateway_ip_addrs tg_gateway2_ip = devices[RIGHT].tg_gateway_ip_addrs - tg_mac1 = remote_mac_pair[0] - tg_mac2 = remote_mac_pair[1] + if not config.loop_vm_arp: + tg_mac1 = remote_mac_pair[0] + tg_mac2 = remote_mac_pair[1] + else: + tg_mac1 = "" + tg_mac2 = "" g1cidr = devices[LEFT].get_gw_ip( self.chain.chain_id) + self.__get_network_mask( @@ -927,6 +940,20 @@ class Chain(object): port_index = -1 return self.networks[port_index].get_vxlan() + def get_mpls_inner_label(self, port_index): + """Get the MPLS VPN Label on a given port. + + port_index: left port is 0, right port is 1 + return: the mpls_label_id or None if there is no mpls + """ + # for port 1 we need to return the MPLS Label of the last network in the chain + # The networks array contains 2 networks for PVP [left, right] + # and 3 networks in the case of PVVP [left.middle,right] + if port_index: + # this will pick the last item in array + port_index = -1 + return self.networks[port_index].get_mpls_inner_label() + def get_dest_mac(self, port_index): """Get the dest MAC on a given port. @@ -1244,7 +1271,6 @@ class ChainManager(object): for chain in self.chains: instances.extend(chain.get_instances()) initial_instance_count = len(instances) - # Give additional 10 seconds per VM max_retries = (self.config.check_traffic_time_sec + (initial_instance_count - 1) * 10 + self.config.generic_poll_sec - 1) / self.config.generic_poll_sec retry = 0 @@ -1422,6 +1448,18 @@ class ChainManager(object): # no openstack raise ChainException('VxLAN is only supported with OpenStack and with admin user') + def get_chain_mpls_inner_labels(self, port_index): + """Get the list of per chain MPLS VPN Labels on a given port. + + port_index: left port is 0, right port is 1 + return: a MPLSs ID list indexed by the chain index or None if no mpls + """ + if self.chains and self.is_admin: + return [self.chains[chain_index].get_mpls_inner_label(port_index) + for chain_index in range(self.chain_count)] + # no openstack + raise ChainException('MPLS is only supported with OpenStack and with admin user') + def get_dest_macs(self, port_index): """Get the list of per chain dest MACs on a given port.