diff --git a/ansible/group_vars/leaf_topo_1/topo.yml b/ansible/group_vars/leaf_topo_1/topo.yml new file mode 100644 index 00000000000..e99f950cc52 --- /dev/null +++ b/ansible/group_vars/leaf_topo_1/topo.yml @@ -0,0 +1,7 @@ +podset_number : 200 +tor_number : 16 +tor_subnet_number : 2 +leaf_asn_start : 62001 +tor_asn_start : 65501 +failure_rate : 0 +local_tor_subnet_number : 5 diff --git a/ansible/inventory b/ansible/inventory index dffee2291ba..57a50a925ae 100644 --- a/ansible/inventory +++ b/ansible/inventory @@ -5,5 +5,8 @@ switch2 ansible_host=10.0.0.101 sonic_version=v2 sonic_hwsku=ACS-MSN2700 [sonic:children] sonic_latest +[leaf_topo_1] +switch1 + [ptf] ptf-1 ansible_host=10.0.0.200 ansible_ssh_user=root ansible_ssh_pass=password diff --git a/ansible/roles/eos/templates/tor.j2 b/ansible/roles/eos/templates/tor.j2 index 38e42d78eed..0fb3fe2bf5e 100644 --- a/ansible/roles/eos/templates/tor.j2 +++ b/ansible/roles/eos/templates/tor.j2 @@ -18,7 +18,7 @@ ipv6 unicast-routing ! ip route 0.0.0.0/0 {{ minigraph_mgmt_interface["gwaddr"] }} ! -{% for subnet in range(0, tor_subnet_number) %} +{% for subnet in range(0, local_tor_subnet_number) %} ip route 172.16.{{ tornum }}.{{ subnet }}/32 {{ nhipv4 }} ipv6 route 20AC:10{{ '%02X' % tornum }}:0:{{ '%02X' % subnet }}::/64 {{ nhipv6 }} {% endfor %} @@ -72,7 +72,7 @@ router bgp {{ minigraph_bgp_asn }} network {{ lo['addr'] }}/{{ lo['prefixlen'] }} {% endfor %} -{% for subnet in range(0, tor_subnet_number) %} +{% for subnet in range(0, local_tor_subnet_number) %} network 172.16.{{ tornum }}.{{ subnet }}/32 network 20AC:10{{ '%02X' % tornum }}:0:{{ '%02X' % subnet }}::/64 {% endfor %} diff --git a/ansible/roles/sonicv2/files/ssw/ACS-MSN2700/alias_reverse_map.json b/ansible/roles/sonicv2/files/ssw/ACS-MSN2700/alias_reverse_map.json new file mode 100644 index 00000000000..dd1324ae436 --- /dev/null +++ b/ansible/roles/sonicv2/files/ssw/ACS-MSN2700/alias_reverse_map.json @@ -0,0 +1,34 @@ +{ + "Ethernet8": "Ethernet8", + "Ethernet0": "Ethernet0", + "Ethernet4": "Ethernet4", + "Ethernet108": "Ethernet108", + "Ethernet100": "Ethernet100", + "Ethernet104": "Ethernet104", + "Ethernet96": "Ethernet96", + "Ethernet124": "Ethernet124", + "Ethernet120": "Ethernet120", + "Ethernet92": "Ethernet92", + "Ethernet28": "Ethernet28", + "Ethernet52": "Ethernet52", + "Ethernet56": "Ethernet56", + "Ethernet76": "Ethernet76", + "Ethernet72": "Ethernet72", + "Ethernet32": "Ethernet32", + "Ethernet16": "Ethernet16", + "Ethernet36": "Ethernet36", + "Ethernet12": "Ethernet12", + "Ethernet88": "Ethernet88", + "Ethernet24": "Ethernet24", + "Ethernet116": "Ethernet116", + "Ethernet80": "Ethernet80", + "Ethernet112": "Ethernet112", + "Ethernet84": "Ethernet84", + "Ethernet48": "Ethernet48", + "Ethernet44": "Ethernet44", + "Ethernet40": "Ethernet40", + "Ethernet64": "Ethernet64", + "Ethernet60": "Ethernet60", + "Ethernet20": "Ethernet20", + "Ethernet68": "Ethernet68" +} \ No newline at end of file diff --git a/ansible/roles/sonicv2/files/ssw/ACS-S6000/alias_reverse_map.json b/ansible/roles/sonicv2/files/ssw/ACS-S6000/alias_reverse_map.json new file mode 100644 index 00000000000..eefbe4ecfb8 --- /dev/null +++ b/ansible/roles/sonicv2/files/ssw/ACS-S6000/alias_reverse_map.json @@ -0,0 +1,34 @@ +{ + "fortyGigE0/8" : "Ethernet8", + "fortyGigE0/0" : "Ethernet0", + "fortyGigE0/4" : "Ethernet4", + "fortyGigE0/108" : "Ethernet108", + "fortyGigE0/100" : "Ethernet100", + "fortyGigE0/104" : "Ethernet104", + "fortyGigE0/96" : "Ethernet96", + "fortyGigE0/124" : "Ethernet124", + "fortyGigE0/120" : "Ethernet120", + "fortyGigE0/92" : "Ethernet92", + "fortyGigE0/28" : "Ethernet28", + "fortyGigE0/52" : "Ethernet52", + "fortyGigE0/56" : "Ethernet56", + "fortyGigE0/76" : "Ethernet76", + "fortyGigE0/72" : "Ethernet72", + "fortyGigE0/32" : "Ethernet32", + "fortyGigE0/16" : "Ethernet16", + "fortyGigE0/36" : "Ethernet36", + "fortyGigE0/12" : "Ethernet12", + "fortyGigE0/88" : "Ethernet88", + "fortyGigE0/24" : "Ethernet24", + "fortyGigE0/116" : "Ethernet116", + "fortyGigE0/80" : "Ethernet80", + "fortyGigE0/112" : "Ethernet112", + "fortyGigE0/84" : "Ethernet84", + "fortyGigE0/48" : "Ethernet48", + "fortyGigE0/44" : "Ethernet44", + "fortyGigE0/40" : "Ethernet40", + "fortyGigE0/64" : "Ethernet64", + "fortyGigE0/60" : "Ethernet60", + "fortyGigE0/20" : "Ethernet20", + "fortyGigE0/68" : "Ethernet68" +} diff --git a/ansible/roles/sonicv2/files/ssw/Arista-7050-QX32/alias_reverse_map.json b/ansible/roles/sonicv2/files/ssw/Arista-7050-QX32/alias_reverse_map.json new file mode 100644 index 00000000000..7509589b6d7 --- /dev/null +++ b/ansible/roles/sonicv2/files/ssw/Arista-7050-QX32/alias_reverse_map.json @@ -0,0 +1,34 @@ +{ + "Ethernet3/1" : "Ethernet8", + "Ethernet1/1" : "Ethernet0", + "Ethernet2/1" : "Ethernet4", + "Ethernet28" : "Ethernet108", + "Ethernet26" : "Ethernet100", + "Ethernet27" : "Ethernet104", + "Ethernet25" : "Ethernet96", + "Ethernet32" : "Ethernet124", + "Ethernet31" : "Ethernet120", + "Ethernet24/1" : "Ethernet92", + "Ethernet8/1" : "Ethernet28", + "Ethernet14/1" : "Ethernet52", + "Ethernet15/1" : "Ethernet56", + "Ethernet20/1" : "Ethernet76", + "Ethernet19/1" : "Ethernet72", + "Ethernet9/1" : "Ethernet32", + "Ethernet5/1" : "Ethernet16", + "Ethernet10/1" : "Ethernet36", + "Ethernet4/1" : "Ethernet12", + "Ethernet23/1" : "Ethernet88", + "Ethernet7/1" : "Ethernet24", + "Ethernet30" : "Ethernet116", + "Ethernet21/1" : "Ethernet80", + "Ethernet29" : "Ethernet112", + "Ethernet22/1" : "Ethernet84", + "Ethernet13/1" : "Ethernet48", + "Ethernet12/1" : "Ethernet44", + "Ethernet11/1" : "Ethernet40", + "Ethernet17/1" : "Ethernet64", + "Ethernet16/1" : "Ethernet60", + "Ethernet6/1" : "Ethernet20", + "Ethernet18/1" : "Ethernet68" +} diff --git a/ansible/roles/test/tasks/fib.yml b/ansible/roles/test/tasks/fib.yml new file mode 100644 index 00000000000..62c4a247f64 --- /dev/null +++ b/ansible/roles/test/tasks/fib.yml @@ -0,0 +1,17 @@ +# Gather minigraph facts +- name: Gathering minigraph facts about the device + minigraph_facts: host={{ inventory_hostname }} + become: no + connection: local + +- name: Print neighbors in minigraph + debug: msg="{{ minigraph_neighbors }}" + +- name: Read port reverse alias mapping + set_fact: + alias_reverse_map: "{{ lookup('file', 'roles/sonicv2/files/ssw/{{ sonic_hwsku }}/alias_reverse_map.json') | from_json }}" + +- debug: msg="{{ alias_reverse_map }}" + +- template: src=fib.j2 dest=/tmp/fib.txt + connection: local diff --git a/ansible/roles/test/tasks/sonic.yml b/ansible/roles/test/tasks/sonic.yml index f35ca2befcb..3e2f496c797 100644 --- a/ansible/roles/test/tasks/sonic.yml +++ b/ansible/roles/test/tasks/sonic.yml @@ -54,4 +54,6 @@ include: arpall.yml tags: arp - +- name: Fib test + include: fib.yml + tags: fib diff --git a/ansible/roles/test/templates/fib.j2 b/ansible/roles/test/templates/fib.j2 new file mode 100644 index 00000000000..43b39b214ab --- /dev/null +++ b/ansible/roles/test/templates/fib.j2 @@ -0,0 +1,21 @@ +{# routes to spines #} +{% for podset in range(0, podset_number) %} +{% for tor in range(0, tor_number) %} +{% for subnet in range(0, tor_subnet_number) %} +192.168.{{ podset }}.{{ tor * 16 + subnet }}/32 {% for ifname, v in minigraph_neighbors.iteritems() %}{% if "T2" in v.name %}{{ alias_reverse_map[ifname] }},{% endif %}{% endfor %} + +20C0:A8{{ '%02X' % podset }}:0:{{ '%02X' % (tor * 16 + subnet)}}::/64 {% for ifname, v in minigraph_neighbors.iteritems() %}{% if "T2" in v.name %}{{ alias_reverse_map[ifname] }},{% endif %}{% endfor %} + +{% endfor %} +{% endfor %} +{% endfor %} + +{# routes to tor #} +{% for ifname, v in minigraph_neighbors.iteritems() %} +{% if "T0" in v.name %} +{% for subnet in range(0, local_tor_subnet_number) %} +172.16.{{ v.name|replace("ARISTA", "")|replace("T0", "") }}.{{ subnet }}/32 {{ alias_reverse_map[ifname] }} +20AC:10{{ '%02X' % v.name|replace("ARISTA", "")|replace("T0", "")|int }}:0:{{ '%02X' % subnet }}::/64 {{ alias_reverse_map[ifname] }} +{% endfor %} +{% endif %} +{% endfor %} diff --git a/ansible/veos b/ansible/veos index 81fe8561589..beb4aa833c0 100644 --- a/ansible/veos +++ b/ansible/veos @@ -88,12 +88,6 @@ spine_4 [spine:vars] swrole=spine -podset_number=200 -tor_number=16 -tor_subnet_number=2 -leaf_asn_start=62001 -tor_asn_start=65501 -failure_rate=0 [tor_1] 10.255.0.222 hostname=ARISTA01T0 filename=01-ARISTA01T0.xml tornum=1 @@ -175,12 +169,14 @@ tor_4 [tor:vars] swrole=tor -tor_subnet_number=5 [eos:children] spine tor +[leaf_topo_1:children] +eos + [eos:vars] nhipv4=10.10.246.100 nhipv6=FC0A::C9