diff --git a/ansible/group_vars/vm_host/main.yml b/ansible/group_vars/vm_host/main.yml index feff1bee253..edbd360ef4c 100644 --- a/ansible/group_vars/vm_host/main.yml +++ b/ansible/group_vars/vm_host/main.yml @@ -7,3 +7,6 @@ skip_image_downloading: false vm_console_base: 7000 memory: 2097152 max_fp_num: 4 + +ptf_bp_ip: 10.10.246.254/24 +ptf_bp_ipv6: fc0a::ff/64 diff --git a/ansible/roles/eos/templates/t0-leaf.j2 b/ansible/roles/eos/templates/t0-leaf.j2 index 1614085b662..51982e57863 100644 --- a/ansible/roles/eos/templates/t0-leaf.j2 +++ b/ansible/roles/eos/templates/t0-leaf.j2 @@ -32,55 +32,6 @@ ip route vrf MGMT 0.0.0.0/0 {{ vm_mgmt_gw }} ip route vrf MGMT 0.0.0.0/0 {{ mgmt_gw }} {% endif %} ! -route-map DEFAULT_ROUTES permit -! -{# #} -{# NOTE: Using large enough values (e.g., podset_number = 200, #} -{# us to overflow the 192.168.0.0/16 private address space here. #} -{# This should be fine for internal use, but may pose an issue if used otherwise #} -{# #} -{% for podset in range(0, props.podset_number) %} -{% for tor in range(0, props.tor_number) %} -{% for subnet in range(0, props.tor_subnet_number) %} -{# Skip tor 0 podset 0 #} -{% if podset != 0 or tor != 0 %} -{% set suffix = ( (podset * props.tor_number * props.max_tor_subnet_number * props.tor_subnet_size) + - (tor * props.max_tor_subnet_number * props.tor_subnet_size) + - (subnet * props.tor_subnet_size) ) %} -{% set octet2 = (168 + (suffix // (256 ** 2))) %} -{% set octet1 = (192 + (octet2 // 256)) %} -{% set octet2 = (octet2 % 256) %} -{% set octet3 = ((suffix // 256) % 256) %} -{% set octet4 = (suffix % 256) %} -{% set prefixlen_v4 = (32 - ((props.tor_subnet_size | log(2))) | int) %} -ip route {{ octet1 }}.{{ octet2 }}.{{ octet3 }}.{{ octet4 }}/{{ prefixlen_v4 }} {{ props.nhipv4 }} -ipv6 route {{ '20%02x' % octet1 }}:{{ '%02X%02X' % (octet2, octet3) }}:0:{{ '%02X' % octet4 }}::/64 {{ props.nhipv6 }} -{% endif %} -{% endfor %} -{% endfor %} -{% endfor %} -! -{% for podset in range(0, props.podset_number) %} -{% for tor in range(0, props.tor_number) %} -{# Skip tor 0 podset 0 #} -{% if podset != 0 or tor != 0 %} -{% set suffix = ( (podset * props.tor_number * props.max_tor_subnet_number * props.tor_subnet_size) + - (tor * props.max_tor_subnet_number * props.tor_subnet_size) ) %} -{% set octet2 = (168 + (suffix // (256 ** 2))) %} -{% set octet1 = (192 + (octet2 // 256)) %} -{% set octet2 = (octet2 % 256) %} -{% set octet3 = ((suffix // 256) % 256) %} -{% set octet4 = (suffix % 256) %} -{% set prefixlen_v4 = (32 - (((props.max_tor_subnet_number * props.tor_subnet_size) | log(2)) | int) ) %} -{% set prefixlen_v6 = (64 - (((props.max_tor_subnet_number * props.tor_subnet_size) | log(2)) | int) ) %} -ip prefix-list test_ipv4_{{ podset}}_{{ tor }} seq 10 permit {{ octet1 }}.{{ octet2 }}.{{ octet3 }}.{{ octet4 }}/{{ prefixlen_v4 }} ge {{ prefixlen_v4 }} -ipv6 prefix-list test_ipv6_{{ podset}}_{{ tor }} - seq 10 permit {{ '20%02x' % octet1 }}:{{ '%02X%02X' % (octet2, octet3) }}:0:{{ '%02X' % octet4 }}::/{{ prefixlen_v6 }} ge {{ prefixlen_v6 }} -exit -{% endif %} -{% endfor %} -{% endfor %} -! interface Management 1 description TO LAB MGMT SWITCH vrf forwarding MGMT @@ -126,31 +77,6 @@ interface {{ bp_ifname }} {% endif %} no shutdown ! -{% for podset in range(0, props.podset_number) %} -{% if range(0, 1000)|random() >= props.failure_rate %} -{% for tor in range(0, props.tor_number) %} -{% set leafasn = props.leaf_asn_start + podset %} -{% set torasn = props.tor_asn_start + tor %} -route-map PREPENDAS permit {{ 2 * (podset * props.tor_number + tor + 1) }} - match ip address prefix-list test_ipv4_{{ podset }}_{{ tor }} -{% if podset == 0 %} - set as-path prepend {{ torasn }} -{% else %} - set as-path prepend {{ props.spine_asn }} {{ leafasn }} {{ torasn }} -{% endif %} -! -route-map PREPENDAS permit {{ 2 * (podset * props.tor_number + tor + 1) + 1 }} - match ipv6 address prefix-list test_ipv6_{{ podset }}_{{ tor }} -{% if podset == 0 %} - set as-path prepend {{ torasn }} -{% else %} - set as-path prepend {{ props.spine_asn }} {{ leafasn }} {{ torasn }} -{% endif %} -! -{% endfor %} -{% endif %} -{% endfor %} -! router bgp {{ host['bgp']['asn'] }} router-id {{ host['interfaces']['Loopback0']['ipv4'] | ipaddr('address') }} ! @@ -158,7 +84,6 @@ router bgp {{ host['bgp']['asn'] }} {% for remote_ip in remote_ips %} neighbor {{ remote_ip }} remote-as {{ asn }} neighbor {{ remote_ip }} description {{ asn }} - neighbor {{ remote_ip }} default-originate route-map DEFAULT_ROUTES {% if remote_ip | ipv6 %} address-family ipv6 neighbor {{ remote_ip }} activate @@ -166,6 +91,13 @@ router bgp {{ host['bgp']['asn'] }} {% endif %} {% endfor %} {% endfor %} + neighbor {{ props.nhipv4 }} remote-as {{ host['bgp']['asn'] }} + neighbor {{ props.nhipv4 }} description exabgp_v4 + neighbor {{ props.nhipv6 }} remote-as {{ host['bgp']['asn'] }} + neighbor {{ props.nhipv6 }} description exabgp_v6 + address-family ipv6 + neighbor {{ props.nhipv6 }} activate + exit ! {% for name, iface in host['interfaces'].items() if name.startswith('Loopback') %} {% if iface['ipv4'] is defined %} @@ -175,7 +107,6 @@ router bgp {{ host['bgp']['asn'] }} network {{ iface['ipv6'] }} {% endif %} {% endfor %} - redistribute static route-map PREPENDAS ! management api http-commands no protocol https @@ -183,4 +114,3 @@ management api http-commands no shutdown ! end -s diff --git a/ansible/roles/vm_set/library/vm_topology.py b/ansible/roles/vm_set/library/vm_topology.py index 830f48d0bba..6e39410081c 100644 --- a/ansible/roles/vm_set/library/vm_topology.py +++ b/ansible/roles/vm_set/library/vm_topology.py @@ -52,6 +52,8 @@ - vm_base: which VM consider the first VM in the current vm set - ptf_mgmt_ip_addr: ip address with prefixlen for the injected docker container - ptf_mgmt_ip_gw: default gateway for the injected docker container + - ptf_bp_ip_addr: ipv6 address with prefixlen for the injected docker container + - ptf_bp_ipv6_addr: ipv6 address with prefixlen for the injected docker container - mgmt_bridge: a bridge which is used as mgmt bridge on the host - dut_fp_ports: dut ports - dut_mgmt_port: dut mgmt port @@ -74,6 +76,8 @@ vm_base: "{{ VM_base }}" ptf_mgmt_ip_addr: "{{ ptf_ip }}" ptf_mgmt_ip_gw: "{{ mgmt_gw }}" + ptf_bp_ip_addr: "{{ ptf_ip }}" + ptf_bp_ipv6_addr: "{{ ptf_ip }}" mgmt_bridge: "{{ mgmt_bridge }}" dut_mgmt_port: "{{ dut_mgmt_port }}" dut_fp_ports: "{{ dut_fp_ports }}" @@ -85,21 +89,21 @@ DEFAULT_MTU = 0 NUM_FP_VLANS_PER_FP = 4 VM_SET_NAME_MAX_LEN = 8 # used in interface names. So restricted -MGMT_BR_NAME = 'mgmt' +MGMT_PORT_NAME = 'mgmt' +BP_PORT_NAME = 'backplane' CMD_DEBUG_FNAME = "/tmp/vmtopology.cmds.%s.txt" EXCEPTION_DEBUG_FNAME = "/tmp/vmtopology.exception.%s.txt" OVS_FP_BRIDGE_REGEX = 'br-%s-\d+' OVS_FP_BRIDGE_TEMPLATE = 'br-%s-%d' OVS_FP_TAP_TEMPLATE = '%s-t%d' -OVS_BRIDGE_BACK_TEMPLATE = 'br-%s-back' +OVS_BP_TAP_TEMPLATE = '%s-back' INJECTED_INTERFACES_TEMPLATE = 'inje-%s-%d' PTF_NAME_TEMPLATE = 'ptf_%s' PTF_MGMT_IF_TEMPLATE = 'ptf-%s-m' +PTF_BP_IF_TEMPLATE = 'ptf-%s-b' ROOT_BACK_BR_TEMPLATE = 'br-b-%s' PTF_FP_IFACE_TEMPLATE = 'eth%d' -BACK_ROOT_END_IF_TEMPLATE = 'veth-bb-%s' -BACK_VM_END_IF_TEMPLATE = 'veth-bv-%s' RETRIES = 3 cmd_debug_fname = None @@ -145,6 +149,8 @@ def init(self, vm_set_name, topo, vm_base, dut_fp_ports, ptf_exists=True): else: self.pid = None + self.bp_bridge = ROOT_BACK_BR_TEMPLATE % self.vm_set_name + self.update() return @@ -154,7 +160,7 @@ def update(self): i = 0 while i < 3: try: - self.host_br_to_ifs, self.host_if_to_br = VMTopology.brctl('brctl show') + self.host_br_to_ifs, self.host_if_to_br = VMTopology.brctl_show() self.host_ifaces = VMTopology.ifconfig('ifconfig -a') if self.pid is not None: self.cntr_ifaces = VMTopology.ifconfig('nsenter -t %s -n ifconfig -a' % self.pid) @@ -181,13 +187,11 @@ def create_bridges(self): for vm in self.vm_names: for fp_num in xrange(self.max_fp_num): fp_br_name = OVS_FP_BRIDGE_TEMPLATE % (vm, fp_num) - self.create_bridge(fp_br_name, self.fp_mtu) - bport_br_name = OVS_BRIDGE_BACK_TEMPLATE = 'br-%s-back' % vm - self.create_bridge(bport_br_name, self.fp_mtu) + self.create_ovs_bridge(fp_br_name, self.fp_mtu) return - def create_bridge(self, bridge_name, mtu): + def create_ovs_bridge(self, bridge_name, mtu): if bridge_name not in self.host_ifaces: VMTopology.cmd('ovs-vsctl add-br %s' % bridge_name) @@ -202,13 +206,11 @@ def destroy_bridges(self): for vm in self.vm_names: for ifname in self.host_ifaces: if re.compile(OVS_FP_BRIDGE_REGEX % vm).match(ifname): - self.destroy_bridge(ifname) - bport_br_name = OVS_BRIDGE_BACK_TEMPLATE = 'br-%s-back' % vm - self.destroy_bridge(bport_br_name) + self.destroy_ovs_bridge(ifname) return - def destroy_bridge(self, bridge_name): + def destroy_ovs_bridge(self, bridge_name): if bridge_name in self.host_ifaces: VMTopology.cmd('ifconfig %s down' % bridge_name) VMTopology.cmd('ovs-vsctl del-br %s' % bridge_name) @@ -232,8 +234,15 @@ def add_veth_ports_to_docker(self): return def add_mgmt_port_to_docker(self, mgmt_bridge, mgmt_ip, mgmt_gw): - self.add_br_if_to_docker(mgmt_bridge, PTF_MGMT_IF_TEMPLATE % self.vm_set_name, MGMT_BR_NAME) - self.add_ip_to_docker_if(MGMT_BR_NAME, mgmt_ip, mgmt_gw) + self.add_br_if_to_docker(mgmt_bridge, PTF_MGMT_IF_TEMPLATE % self.vm_set_name, MGMT_PORT_NAME) + self.add_ip_to_docker_if(MGMT_PORT_NAME, mgmt_ip, mgmt_gw=mgmt_gw) + + return + + def add_bp_port_to_docker(self, mgmt_ip, mgmt_ipv6): + self.add_br_if_to_docker(self.bp_bridge, PTF_BP_IF_TEMPLATE % self.vm_set_name, BP_PORT_NAME) + self.add_ip_to_docker_if(BP_PORT_NAME, mgmt_ip, mgmt_ipv6) + VMTopology.iface_disable_txoff(BP_PORT_NAME, self.pid) return @@ -256,12 +265,15 @@ def add_br_if_to_docker(self, bridge, ext_if, int_if): return - def add_ip_to_docker_if(self, int_if, mgmt_ip_addr, mgmt_gw): + def add_ip_to_docker_if(self, int_if, mgmt_ip_addr, mgmt_ipv6_addr=None, mgmt_gw=None): self.update() if int_if in self.cntr_ifaces: VMTopology.cmd("nsenter -t %s -n ip addr flush dev %s" % (self.pid, int_if)) VMTopology.cmd("nsenter -t %s -n ip addr add %s dev %s" % (self.pid, mgmt_ip_addr, int_if)) - VMTopology.cmd("nsenter -t %s -n ip route add default via %s dev %s" % (self.pid, mgmt_gw, int_if)) + if mgmt_ipv6_addr: + VMTopology.cmd("nsenter -t %s -n ip -6 addr add %s dev %s" % (self.pid, mgmt_ipv6_addr, int_if)) + if mgmt_gw: + VMTopology.cmd("nsenter -t %s -n ip route add default via %s dev %s" % (self.pid, mgmt_gw, int_if)) return @@ -363,53 +375,30 @@ def unbind_fp_ports(self): return def bind_vm_backplane(self): - root_back_bridge = ROOT_BACK_BR_TEMPLATE % self.vm_set_name - if root_back_bridge not in self.host_ifaces: - VMTopology.cmd('ovs-vsctl add-br %s' % root_back_bridge) + if self.bp_bridge not in self.host_ifaces: + VMTopology.cmd('brctl addbr %s' % self.bp_bridge) + + VMTopology.iface_up(self.bp_bridge) - VMTopology.iface_up(root_back_bridge) + self.update() for attr in self.VMs.itervalues(): vm_name = self.vm_names[self.vm_base_index + attr['vm_offset']] - br_name = OVS_BRIDGE_BACK_TEMPLATE % vm_name + bp_port_name = OVS_BP_TAP_TEMPLATE % vm_name - back_int_name = BACK_ROOT_END_IF_TEMPLATE % vm_name - vm_int_name = BACK_VM_END_IF_TEMPLATE % vm_name + if bp_port_name not in self.host_br_to_ifs[self.bp_bridge]: + VMTopology.cmd("brctl addif %s %s" % (self.bp_bridge, bp_port_name)) - if back_int_name not in self.host_ifaces: - VMTopology.cmd("ip link add %s type veth peer name %s" % (back_int_name, vm_int_name)) - - if vm_int_name not in VMTopology.get_ovs_br_ports(br_name): - VMTopology.cmd("ovs-vsctl add-port %s %s" % (br_name, vm_int_name)) - - if back_int_name not in VMTopology.get_ovs_br_ports(root_back_bridge): - VMTopology.cmd("ovs-vsctl add-port %s %s" % (root_back_bridge, back_int_name)) - - VMTopology.iface_up(vm_int_name) - VMTopology.iface_up(back_int_name) + VMTopology.iface_up(bp_port_name) return def unbind_vm_backplane(self): - root_back_bridge = ROOT_BACK_BR_TEMPLATE % self.vm_set_name - - if root_back_bridge in self.host_ifaces: - VMTopology.iface_down(root_back_bridge) - VMTopology.cmd('ovs-vsctl del-br %s' % root_back_bridge) - - for attr in self.VMs.itervalues(): - vm_name = self.vm_names[self.vm_base_index + attr['vm_offset']] - br_name = OVS_BRIDGE_BACK_TEMPLATE % vm_name - - back_int_name = BACK_ROOT_END_IF_TEMPLATE % vm_name - vm_int_name = BACK_VM_END_IF_TEMPLATE % vm_name - self.unbind_ovs_port(br_name, vm_int_name) - - if back_int_name in self.host_ifaces: - VMTopology.iface_down(back_int_name) - VMTopology.cmd("ip link delete dev %s" % back_int_name) + if self.bp_bridge in self.host_ifaces: + VMTopology.iface_down(self.bp_bridge) + VMTopology.cmd('brctl delbr %s' % self.bp_bridge) return @@ -498,6 +487,13 @@ def iface_updown(iface_name, state, pid): else: return VMTopology.cmd('nsenter -t %s -n ip link set %s %s' % (pid, iface_name, state)) + @staticmethod + def iface_disable_txoff(iface_name, pid=None): + if pid is None: + return VMTopology.cmd('ethtool -K %s tx off' % (iface_name)) + else: + return VMTopology.cmd('nsenter -t %s -n ethtool -K %s tx off' % (pid, iface_name)) + @staticmethod def cmd(cmdline): with open(cmd_debug_fname, 'a') as fp: @@ -571,8 +567,8 @@ def get_pid(ptf_name): return ctn.attrs['State']['Pid'] @staticmethod - def brctl(cmdline): - out = VMTopology.cmd(cmdline) + def brctl_show(): + out = VMTopology.cmd("brctl show") br_to_ifs = {} if_to_br = {} @@ -658,6 +654,8 @@ def main(): vm_base=dict(required=False, type='str'), ptf_mgmt_ip_addr=dict(required=False, type='str'), ptf_mgmt_ip_gw=dict(required=False, type='str'), + ptf_bp_ip_addr=dict(required=False, type='str'), + ptf_bp_ipv6_addr=dict(required=False, type='str'), mgmt_bridge=dict(required=False, type='str'), dut_fp_ports=dict(required=False, type='list'), dut_mgmt_port=dict(required=False, type='str'), @@ -693,6 +691,8 @@ def main(): 'topo', 'ptf_mgmt_ip_addr', 'ptf_mgmt_ip_gw', + 'ptf_bp_ip_addr', + 'ptf_bp_ipv6_addr', 'mgmt_bridge', 'dut_fp_ports'], cmd) @@ -719,12 +719,16 @@ def main(): net.add_mgmt_port_to_docker(mgmt_bridge, ptf_mgmt_ip_addr, ptf_mgmt_ip_gw) + ptf_bp_ip_addr = module.params['ptf_bp_ip_addr'] + ptf_bp_ipv6_addr = module.params['ptf_bp_ipv6_addr'] + if vms_exists: net.add_veth_ports_to_docker() if module.params['dut_mgmt_port']: net.bind_mgmt_port(mgmt_bridge, module.params['dut_mgmt_port']) net.bind_fp_ports() net.bind_vm_backplane() + net.add_bp_port_to_docker(ptf_bp_ip_addr, ptf_bp_ipv6_addr) if hostif_exists: net.inject_host_ports() @@ -763,6 +767,8 @@ def main(): 'topo', 'ptf_mgmt_ip_addr', 'ptf_mgmt_ip_gw', + 'ptf_bp_ip_addr', + 'ptf_bp_ipv6_addr', 'mgmt_bridge', 'dut_fp_ports'], cmd) @@ -789,6 +795,9 @@ def main(): net.add_mgmt_port_to_docker(mgmt_bridge, ptf_mgmt_ip_addr, ptf_mgmt_ip_gw) + ptf_bp_ip_addr = module.params['ptf_bp_ip_addr'] + ptf_bp_ipv6_addr = module.params['ptf_bp_ipv6_addr'] + if vms_exists: net.unbind_fp_ports() net.add_veth_ports_to_docker() diff --git a/ansible/roles/vm_set/tasks/add_topo.yml b/ansible/roles/vm_set/tasks/add_topo.yml index 227c6c479ef..11c47a0296f 100644 --- a/ansible/roles/vm_set/tasks/add_topo.yml +++ b/ansible/roles/vm_set/tasks/add_topo.yml @@ -23,7 +23,7 @@ image: "{{ docker_registry_host }}/{{ ptf_imagename }}:{{ ptf_imagetag }}" pull: yes state: started - restart: yes + restart: no network_mode: none detach: True capabilities: @@ -55,6 +55,8 @@ vm_base: "{{ VM_base }}" ptf_mgmt_ip_addr: "{{ ptf_ip }}" ptf_mgmt_ip_gw: "{{ mgmt_gw }}" + ptf_bp_ip_addr: "{{ ptf_bp_ip }}" + ptf_bp_ipv6_addr: "{{ ptf_bp_ipv6 }}" mgmt_bridge: "{{ mgmt_bridge }}" dut_fp_ports: "{{ dut_fp_ports }}" dut_mgmt_port: "{{ dut_mgmt_port }}" diff --git a/ansible/roles/vm_set/tasks/start.yml b/ansible/roles/vm_set/tasks/start.yml index 80b4db423b7..d0584ade0f4 100644 --- a/ansible/roles/vm_set/tasks/start.yml +++ b/ansible/roles/vm_set/tasks/start.yml @@ -62,8 +62,7 @@ disk_image: "{{ home_path }}/{{ root_path }}/disks/{{ vm_name }}_hdd.vmdk" cdrom_image: "{{ home_path }}/{{ root_path }}/images/{{ cd_image_filename }}" mgmt_tap: "{{ vm_name }}-m" - port1_bridge: "br-{{ vm_name }}-back" - port1_tap: "{{ vm_name }}-back" + backplane_tap: "{{ vm_name }}-back" with_items: "{{ VM_hosts }}" - name: Kickstart VMs @@ -77,6 +76,5 @@ disk_image: "{{ root_path }}/disks/{{ vm_name }}_hdd.vmdk" cdrom_image: "{{ root_path }}/images/{{ cd_image_filename }}" mgmt_tap: "{{ vm_name }}-m" - port1_bridge: "br-{{ vm_name }}-back" - port1_tap: "{{ vm_name }}-back" + backplane_tap: "{{ vm_name }}-back" with_items: "{{ VM_hosts }}" diff --git a/ansible/roles/vm_set/tasks/start_sonic_vm.yml b/ansible/roles/vm_set/tasks/start_sonic_vm.yml index 40d95e622eb..a44adbdefb8 100644 --- a/ansible/roles/vm_set/tasks/start_sonic_vm.yml +++ b/ansible/roles/vm_set/tasks/start_sonic_vm.yml @@ -26,7 +26,7 @@ port_alias: hwsku={{ hostvars[dut_name].hwsku }} delegate_to: localhost -- name: Define vm {{ dut_name }} +- name: Define SONiC vm {{ dut_name }} virt: name={{ dut_name }} command=define xml="{{ lookup('template', 'templates/sonic.xml.j2') }}" @@ -34,12 +34,13 @@ when: dut_name not in vm_list_defined.list_vms become: yes -- name: Start vm {{ dut_name }} +- name: Start SONiC vm {{ dut_name }} virt: name={{ dut_name }} state=running uri=qemu:///system when: dut_name not in vm_list_running.list_vms become: yes + register: sonic_vm_start - name: Wait until vm {{ dut_name }} is loaded sonic_kickstart: telnet_port={{ serial_port }} diff --git a/ansible/roles/vm_set/templates/arista.xml.j2 b/ansible/roles/vm_set/templates/arista.xml.j2 index 5fd1d357d53..ab2e8f623d3 100644 --- a/ansible/roles/vm_set/templates/arista.xml.j2 +++ b/ansible/roles/vm_set/templates/arista.xml.j2 @@ -45,11 +45,9 @@ {% endfor %} - + - - - + diff --git a/ansible/roles/vm_set/vars/main.yml b/ansible/roles/vm_set/vars/main.yml index 70e2ee8bcd3..b94aaff812b 100644 --- a/ansible/roles/vm_set/vars/main.yml +++ b/ansible/roles/vm_set/vars/main.yml @@ -1,7 +1,5 @@ tor_memory: 1572864 spine_memory: 2097152 -port1_bridge: br-port1-{{ id }} - fp_mtu_size: 9216 diff --git a/ansible/vars/topo_t0.yml b/ansible/vars/topo_t0.yml index 217423e8796..6ac1e9562ff 100644 --- a/ansible/vars/topo_t0.yml +++ b/ansible/vars/topo_t0.yml @@ -56,17 +56,8 @@ configuration_properties: dut_asn: 65100 dut_type: ToRRouter swrole: leaf - podset_number: 200 - tor_number: 16 - tor_subnet_number: 2 - max_tor_subnet_number: 16 - tor_subnet_size: 128 - spine_asn: 65534 - leaf_asn_start: 64600 - tor_asn_start: 65100 - failure_rate: 0 - nhipv4: 10.10.246.100 - nhipv6: FC0A::C9 + nhipv4: 10.10.246.254 + nhipv6: FC0A::FF configuration: ARISTA01T1: @@ -89,7 +80,7 @@ configuration: ipv6: fc00::72/126 bp_interface: ipv4: 10.10.246.29/24 - ipv6: fc0a::3a/64 + ipv6: fc0a::1d/64 ARISTA02T1: properties: @@ -111,7 +102,7 @@ configuration: ipv6: fc00::76/126 bp_interface: ipv4: 10.10.246.30/24 - ipv6: fc0a::3d/64 + ipv6: fc0a::1e/64 ARISTA03T1: properties: @@ -133,7 +124,7 @@ configuration: ipv6: fc00::7a/126 bp_interface: ipv4: 10.10.246.31/24 - ipv6: fc0a::3e/64 + ipv6: fc0a::1f/64 ARISTA04T1: properties: @@ -155,4 +146,4 @@ configuration: ipv6: fc00::7e/126 bp_interface: ipv4: 10.10.246.32/24 - ipv6: fc0a::41/64 + ipv6: fc0a::20/64