Creating Device configuration snippets [CREATED] h1: initial,routing [CREATED] h2: initial,routing [CREATED] h3: initial,routing [CREATED] h4: initial,routing [CREATED] dut: initial,vlan,ospf,bgp,vrf,vxlan,evpn [CREATED] s2: normalize,initial,vlan,ospf,bgp,vrf,vxlan,evpn Checking Are lab devices ready to be configured? [INFO] Checking lab devices with an Ansible playbook [WARNING]: Could not match supplied host pattern, ignoring: netlab_ready_ssh [WARNING]: Found variable using reserved name: hosts PLAY [Wait for SSH servers] **************************************************** skipping: no hosts matched PLAY [Wait for device-specific conditions] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] TASK [Find device readiness script] ******************************************** ok: [dut] TASK [Wait for device to become ready] ***************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/readiness-check/junos.yml for dut TASK [set_fact] **************************************************************** ok: [dut] TASK [Wait for first interface (et-0/0/0)] ************************************* ok: [dut] PLAY RECAP ********************************************************************* dut : ok=5 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Config Deploying device configurations [INFO] Executing initial configuration for node h1 (namespace clab- ml-17-h1) [INFO] Executing initial configuration for node h2 (namespace clab- ml-17-h2) [INFO] Executing initial configuration for node h3 (namespace clab- ml-17-h3) [INFO] Executing initial configuration for node h4 (namespace clab- ml-17-h4) [INFO] Executing routing configuration for node h1 (namespace clab- ml-17-h1) [INFO] Executing routing configuration for node h2 (namespace clab- ml-17-h2) [INFO] Executing routing configuration for node h4 (namespace clab- ml-17-h4) [INFO] Executing routing configuration for node h3 (namespace clab- ml-17-h3) [INFO] Starting Ansible playbook to deploy the rest of the configurations [WARNING]: Found variable using reserved name: hosts PLAY [Deploy initial device configuration] ************************************* TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] ok: [s2] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [dut] ok: [s2] TASK [Find configuration template for normalize] ******************************* ok: [dut] ok: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [dut] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] ok: [s2] => { "msg": "normalize configuration for s2\n=========================================\n!\ninterface Ethernet1\n shutdown\n mac-address caf0.0006.0001\n!\ninterface Ethernet2\n shutdown\n!\ninterface Ethernet3\n shutdown\n" } TASK [Deploy normalize configuration] ****************************************** skipping: [dut] included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [eos_config: deploying normalize from /work/netlab_cicd/node_files/s2/normalize] *** [WARNING]: To ensure idempotency and correct diff the input configuration lines should be similar to how they appear if present in the running configuration on device including the indentation changed: [s2] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 TASK [Figure out whether to deploy the module initial on current device] ******* ok: [dut] ok: [s2] TASK [Find configuration template for initial] ********************************* ok: [dut] ok: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [dut] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "initial configuration for dut\n=========================================\nsystem {\n host-name dut;\n static-host-mapping {\n h1 inet 172.31.1.1;\n h2 inet 172.31.1.2;\n h3 inet 172.31.1.3;\n h4 inet 172.31.1.4;\n s2 inet 10.0.0.6;\n }\n}\n\n\n\n\npolicy-options {\n community tg_65000_1 members target:65000:1;\n}\n\n\n\npolicy-options {\n policy-statement vrf-tenant-rt-export {\n term 1 {\n then {\n community add tg_65000_1;\n accept;\n }\n }\n }\n\n\n policy-statement vrf-tenant-rt-import {\n term 1 {\n from community [ tg_65000_1 ];\n then accept;\n }\n term default {\n then reject;\n }\n }\n}\n\nrouting-instances {\n\n tenant {\n instance-type vrf;\n route-distinguisher 65000:1;\n\n vrf-import vrf-tenant-rt-import;\n vrf-export vrf-tenant-rt-export;\n\n routing-options {\n auto-export;\n }\n\n interface irb.1000;\n interface irb.1001;\n\n }\n\n}\ninterfaces {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\ninterfaces {\n et-0/0/0 {\n mtu 1614;\n }\n\n lo0.0 {\n \n family inet {\n address 10.0.0.5/32;\n }\n \n }\n et-0/0/0.0 {\n description \"dut -> s2\";\n \n family inet {\n address 10.1.0.1/30;\n }\n \n }\n et-0/0/1.0 {\n description \"[Access VLAN red] dut -> h1\";\n \n \n }\n et-0/0/2.0 {\n description \"[Access VLAN blue] dut -> h3\";\n \n \n }\n irb.1000 {\n description \"VLAN red (1000) -> [h1,h2,s2]\";\n \n \n }\n irb.1001 {\n description \"VLAN blue (1001) -> [h3,h4,s2]\";\n \n \n }\n}\nprotocols {\n lldp {\n interface re0:mgmt-0 {\n disable;\n }\n interface all;\n }\n}\n" } ok: [s2] => { "msg": "initial configuration for s2\n=========================================\nhostname s2\n!\nlogging monitor debugging\naaa authorization exec default local\n!\nlldp run\nip routing\nno ipv6 unicast-routing\n!\nvrf instance tenant\n rd 65000:1\n!\n!\nip host dut 10.0.0.5 10.1.0.1\nip host h1 172.31.1.1\nip host h2 172.31.1.2\nip host h3 172.31.1.3\nip host h4 172.31.1.4\n!\ninterface Management1\n no lldp transmit\n no lldp receive\n!\ninterface Loopback0\n ip address 10.0.0.6/32\n!\ninterface Ethernet1\n no switchport\n mtu 1600\n description s2 -> dut\n ip address 10.1.0.2/30\n mac-address caf0.0006.0001\n!\n no shutdown\n!\ninterface Ethernet2\n no switchport\n description [Access VLAN red] s2 -> h2\n!\n no shutdown\n!\ninterface Ethernet3\n no switchport\n description [Access VLAN blue] s2 -> h4\n!\n no shutdown\n!\ninterface Vlan1000\n vrf tenant\n description VLAN red (1000) -> [h1,dut,h2]\n!\ninterface Vlan1001\n vrf tenant\n description VLAN blue (1001) -> [h3,dut,h4]\n!\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [junos_config: deploying initial from /work/netlab_cicd/node_files/dut/initial] *** [WARNING]: mgd: statement has no contents; ignored changed: [dut] TASK [eos_config: deploying initial from /work/netlab_cicd/node_files/s2/initial] *** changed: [s2] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] ok: [s2] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 => (item=vlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 => (item=routing) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 => (item=ospf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 => (item=bgp) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 => (item=vrf) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 => (item=vxlan) included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-module.yml for dut, s2 => (item=evpn) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [dut] ok: [s2] TASK [Find configuration template for vlan] ************************************ ok: [dut] ok: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [dut] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vlan configuration for dut\n=========================================\nvlans {\n red {\n vlan-id 1000;\n\n\n }\n blue {\n vlan-id 1001;\n\n\n }\n}\n\ninterfaces {\n\n\n et-0/0/1.0 {\n family ethernet-switching {\n\n vlan {\n members red;\n }\n\n }\n }\n\n\n\n et-0/0/2.0 {\n family ethernet-switching {\n\n vlan {\n members blue;\n }\n\n }\n }\n\n\n}\n" } ok: [s2] => { "msg": "vlan configuration for s2\n=========================================\nvlan 1000\n name red\n!\nvlan 1001\n name blue\n!\n\n!\ninterface Ethernet2\n switchport\n switchport access vlan 1000\n!\ninterface Ethernet3\n switchport\n switchport access vlan 1001\n!\ninterface Vlan1000\n!\ninterface Vlan1001\n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [junos_config: deploying vlan from /work/netlab_cicd/node_files/dut/vlan] *** changed: [dut] TASK [eos_config: deploying vlan from /work/netlab_cicd/node_files/s2/vlan] **** changed: [s2] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [dut] ok: [s2] TASK [Find configuration template for routing] ********************************* skipping: [dut] skipping: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [dut] skipping: [s2] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] skipping: [s2] TASK [Deploy routing configuration] ******************************************** skipping: [dut] skipping: [s2] TASK [Figure out whether to deploy the module ospf on current device] ********** ok: [dut] ok: [s2] TASK [Find configuration template for ospf] ************************************ ok: [dut] ok: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for ospf] ******************** ok: [dut] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "ospf configuration for dut\n=========================================\nrouting-options {\n router-id 10.0.0.5\n}\nprotocols {\n delete: ospf;\n}\n\nprotocols {\n ospf {\n area 0.0.0.0 {\n interface lo0.0 {\n }\n }\n area 0.0.0.0 {\n interface et-0/0/0.0 {\n interface-type p2p;\n }\n }\n }\n}\n\n" } ok: [s2] => { "msg": "ospf configuration for s2\n=========================================\n!\n! OSPFv2 configuration\n!\nrouter ospf 1\n router-id 10.0.0.6\n interface unnumbered hello mask tx 0.0.0.0\n timers spf delay initial 100 200 500\n timers lsa rx min interval 100\n timers lsa tx delay initial 100 200 500\n\n\n!\ninterface Loopback0\n! \n ip ospf area 0.0.0.0\n!\ninterface Ethernet1\n! s2 -> dut\n ip ospf area 0.0.0.0\n ip ospf network point-to-point\n!\n\n" } TASK [Deploy ospf configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [junos_config: deploying ospf from /work/netlab_cicd/node_files/dut/ospf] *** [WARNING]: statement not found changed: [dut] TASK [eos_config: deploying ospf from /work/netlab_cicd/node_files/s2/ospf] **** changed: [s2] TASK [Figure out whether to deploy the module bgp on current device] *********** ok: [dut] ok: [s2] TASK [Find configuration template for bgp] ************************************* ok: [dut] ok: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for bgp] ********************* ok: [dut] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "bgp configuration for dut\n=========================================\n\nrouting-options {\n autonomous-system 65000;\n router-id 10.0.0.5\n}\n\n\npolicy-options community x-route-permit-mark members large:65535:0:65536;\n\npolicy-options {\n delete: policy-statement bgp-advertise;\n delete: policy-statement bgp-redistribute;\n delete: policy-statement next-hop-ebgp-ipv4;\n delete: policy-statement next-hop-all-ipv4;\n delete: policy-statement next-hop-ebgp-ipv6;\n delete: policy-statement next-hop-all-ipv6;\n delete: route-filter-list bgp-announce;\n}\n\npolicy-options {\n\n route-filter-list bgp-announce {\n }\n\n policy-statement next-hop-ebgp-ipv4 {\n term next-hop-self-ipv4 {\n from {\n family inet;\n route-type external;\n }\n then {\n next-hop self;\n }\n }\n }\n\n policy-statement next-hop-all-ipv4 {\n term next-hop-self-ipv4 {\n from {\n family inet;\n }\n then {\n next-hop self;\n }\n }\n }\n\n policy-statement next-hop-ebgp-ipv6 {\n term next-hop-self-ipv6 {\n from {\n family inet6;\n route-type external;\n }\n then {\n next-hop self;\n }\n }\n }\n\n policy-statement next-hop-all-ipv6 {\n term next-hop-self-ipv6 {\n from {\n family inet6;\n }\n then {\n next-hop self;\n }\n }\n }\n\n\n policy-statement bgp-advertise {\n term advertise {\n from {\n protocol direct;\n interface [ \n lo0.0 ];\n }\n then {\n community add x-route-permit-mark;\n next policy;\n }\n }\n\n term originate {\n from {\n protocol static;\n route-filter-list bgp-announce;\n }\n then {\n community add x-route-permit-mark;\n next policy;\n }\n }\n\n }\n\n policy-statement bgp-redistribute {\n term redis_bgp {\n from protocol bgp;\n then {\n community add x-route-permit-mark;\n next policy;\n }\n }\n }\n\n policy-statement bgp-final {\n term final-option {\n from community x-route-permit-mark;\n then {\n community delete x-route-permit-mark;\n accept;\n }\n }\n term default-reject {\n then reject;\n }\n }\n\n policy-statement bgp-initial {\n term initial-cleanup {\n from community x-route-permit-mark;\n then {\n community delete x-route-permit-mark;\n next policy;\n }\n }\n }\n\n}\nprotocols {\n delete: bgp;\n}\nprotocols {\n bgp {\n group ibgp-peers-ipv4 {\n type internal;\n export [ \n next-hop-ebgp-ipv4 bgp-advertise bgp-redistribute bgp-final\n ];\n advertise-inactive;\n neighbor 10.0.0.6 {\n\n local-address 10.0.0.5;\n description s2;\n family inet {\n unicast;\n }\n }\n }\n group ebgp-peers {\n export [ \n bgp-advertise bgp-redistribute bgp-final\n ];\n advertise-inactive;\n }\n }\n}\n" } ok: [s2] => { "msg": "bgp configuration for s2\n=========================================\n!\nroute-map next-hop-self-ipv4 permit 10\n match route-type external\n set ip next-hop peer-address\n!\nroute-map next-hop-self-ipv4 permit 20\n!\n!\nrouter bgp 65000\n bgp advertise-inactive\n bgp log-neighbor-changes\n no bgp default ipv4-unicast\n no bgp default ipv6-unicast\n router-id 10.0.0.6\n!\n neighbor 10.0.0.5 remote-as 65000\n neighbor 10.0.0.5 description dut\n neighbor 10.0.0.5 update-source Loopback0\n neighbor 10.0.0.5 send-community standard extended large \n!\n!\n address-family ipv4\n\n!\n!\n! Originate networks from connected subnets\n!\n network 10.0.0.6/32\n!\n!\n neighbor 10.0.0.5 activate\n neighbor 10.0.0.5 route-map next-hop-self-ipv4 out\n!\n" } TASK [Deploy bgp configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [junos_config: deploying bgp from /work/netlab_cicd/node_files/dut/bgp] *** changed: [dut] TASK [eos_config: deploying bgp from /work/netlab_cicd/node_files/s2/bgp] ****** changed: [s2] TASK [Figure out whether to deploy the module vrf on current device] *********** ok: [dut] ok: [s2] TASK [Find configuration template for vrf] ************************************* ok: [dut] ok: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for vrf] ********************* ok: [dut] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vrf configuration for dut\n=========================================\n\n\npolicy-options {\n community x-route-permit-mark members large:65535:0:65536;\n\n policy-statement vrf-tenant-bgp-export {\n term redis_bgp {\n from {\n protocol bgp;\n }\n then {\n community add x-route-permit-mark;\n next policy;\n }\n }\n term redis_direct {\n from {\n protocol direct;\n }\n then {\n community add x-route-permit-mark;\n next policy;\n }\n }\n term redis_ospf {\n from {\n protocol ospf;\n }\n then {\n community add x-route-permit-mark;\n next policy;\n }\n }\n term redis_ospf3 {\n from {\n protocol ospf3;\n }\n then {\n community add x-route-permit-mark;\n next policy;\n }\n }\n }\n\n}\n\n\nrouting-instances {\n\n tenant {\n routing-options {\n autonomous-system 65000;\n router-id 10.0.0.5\n }\n\n protocols {\n bgp {\n\n group ebgp-peers {\n export [ vrf-tenant-bgp-export bgp-final ];\n advertise-inactive;\n }\n }\n }\n }\n\n}\n" } ok: [s2] => { "msg": "vrf configuration for s2\n=========================================\n!\nmpls ip\n!\nrouter bgp 65000\n!\n vrf tenant\n router-id 10.0.0.6\n rd 65000:1\n" } TASK [Deploy vrf configuration] ************************************************ included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [junos_config: deploying vrf from /work/netlab_cicd/node_files/dut/vrf] *** changed: [dut] TASK [eos_config: deploying vrf from /work/netlab_cicd/node_files/s2/vrf] ****** changed: [s2] TASK [Figure out whether to deploy the module vxlan on current device] ********* ok: [dut] ok: [s2] TASK [Find configuration template for vxlan] *********************************** ok: [dut] ok: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for vxlan] ******************* ok: [dut] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vxlan configuration for dut\n=========================================\nforwarding-options {\n tunnel-termination;\n}\npolicy-options {\n policy-statement ecmp {\n then {\n load-balance per-flow;\n }\n }\n}\nrouting-options {\n forwarding-table {\n export ecmp;\n }\n}\n\n" } ok: [s2] => { "msg": "vxlan configuration for s2\n=========================================\ninterface vxlan 1\n vxlan source-interface Loopback0\n vxlan vlan 1000 vni 6000\n vxlan vlan 1001 vni 6001\n" } TASK [Deploy vxlan configuration] ********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [junos_config: deploying vxlan from /work/netlab_cicd/node_files/dut/vxlan] *** changed: [dut] TASK [eos_config: deploying vxlan from /work/netlab_cicd/node_files/s2/vxlan] *** changed: [s2] TASK [Figure out whether to deploy the module evpn on current device] ********** ok: [dut] ok: [s2] TASK [Find configuration template for evpn] ************************************ ok: [dut] ok: [s2] TASK [fail] ******************************************************************** skipping: [dut] skipping: [s2] TASK [Find configuration deployment deploy_script for evpn] ******************** ok: [dut] ok: [s2] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "evpn configuration for dut\n=========================================\n\nprotocols {\n bgp {\n group ibgp-peers-ipv4 {\n neighbor 10.0.0.6 {\n delete: shutdown;\n family evpn {\n signaling;\n }\n }\n }\n group ebgp-peers {\n }\n }\n}\n\npolicy-options {\n}\n\nvlans {\n}\n\nrouting-instances {\n}\n\nrouting-instances {\n vlan_aware_tenant {\n instance-type mac-vrf;\n service-type vlan-aware;\n vtep-source-interface lo0.0;\n route-distinguisher 65000:2;\n vrf-target import target:65000:1;\n vrf-target export target:65000:1;\n interface et-0/0/1.0;\n vlans {\n red {\n vlan-id 1000;\n vxlan {\n vni 6000;\n }\n }\n }\n interface et-0/0/2.0;\n vlans {\n blue {\n vlan-id 1001;\n vxlan {\n vni 6001;\n }\n }\n }\n protocols {\n evpn {\n encapsulation vxlan;\n default-gateway no-gateway-community;\n extended-vni-list all;\n }\n }\n }\n}\n\nrouting-instances {\n\n\n}\n\npolicy-options {\n}\n\ninterfaces {\n}\n\n" } ok: [s2] => { "msg": "evpn configuration for s2\n=========================================\n!\nrouter bgp 65000\n address-family evpn\n!\n neighbor 10.0.0.5 activate\n!\n vlan-aware-bundle tenant\n rd 65000:1\n route-target import 65000:1\n route-target export 65000:1\n redistribute learned\n vlan 1000,1001\n" } TASK [Deploy evpn configuration] *********************************************** included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/junos.yml for dut included: /home/pipi/netlab_gh/netsim/ansible/tasks/deploy-config/eos.yml for s2 TASK [junos_config: deploying evpn from /work/netlab_cicd/node_files/dut/evpn] *** changed: [dut] TASK [eos_config: deploying evpn from /work/netlab_cicd/node_files/s2/evpn] **** changed: [s2] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=57 changed=7 unreachable=0 failed=0 skipped=15 rescued=0 ignored=0 s2 : ok=60 changed=8 unreachable=0 failed=0 skipped=13 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ h1 Script: initial,routing h2 Script: initial,routing h3 Script: initial,routing h4 Script: initial,routing The device under test is an EVPN PE-device bridging two VLANs over VXLAN using VLAN-aware Bundle service. The other EVPN PE-device is an Arista EOS device. Both VLANs are using the same IP prefix to identify potential inter-VLAN leaking. * h1 and h2 should be able to ping each other * h3 and h4 should be able to ping each other * h1 should not be able to reach h3 or h4 Please note it might take a while for the lab to work due to STP learning phase