Creating Device configuration snippets [CREATED] dut: initial,vlan,gateway [CREATED] x1: initial,vlan,gateway [CREATED] h1: initial,routing [CREATED] h2: initial,routing [CREATED] h3: initial,routing [CREATED] th: initial,routing Config Deploying device configurations [INFO] Executing initial configuration for node x1 [INFO] Executing initial configuration for node h1 [INFO] Executing initial configuration for node h2 [INFO] Executing initial configuration for node h3 [INFO] Executing initial configuration for node th (namespace clab- ml-17-th) [INFO] Executing routing configuration for node th (namespace clab- ml-17-th) [INFO] Executing routing configuration for node h1 [INFO] Executing routing configuration for node h2 [INFO] Executing routing configuration for node h3 [INFO] Executing vlan configuration for node x1 [INFO] Executing gateway configuration for node x1 [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] TASK [Normalize config on bridge-like devices] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut TASK [Figure out whether to deploy the module normalize on current device] ***** ok: [dut] TASK [Find configuration template for normalize] ******************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for normalize] *************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] TASK [Deploy normalize configuration] ****************************************** skipping: [dut] TASK [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut TASK [Figure out whether to deploy the module initial on current device] ******* ok: [dut] TASK [Find configuration template for initial] ********************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for initial] ***************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "initial configuration for dut\n=========================================\n\nupdates:\n- path: /system/mtu\n value:\n default-port-mtu: 1514\n default-l2-mtu: 1514\n default-ip-mtu: 1500\n _annotate_default-ip-mtu: \"Custom system wide setting, overrides default 1500\"\n\n- path: /interface[name=system0]/subinterface[index=0]\n value:\n description: \"No description\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"10.0.0.1/32\"\n\n- path: /interface[name=ethernet-1/1]\n value:\n description: \"dut ~ x1,th\"\n subinterface:\n index: 0\n description: \"dut ~ x1,th\"\n\n- path: /interface[name=ethernet-1/1]/subinterface[index=0]\n value:\n description: \"dut ~ x1,th\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"172.16.44.1/24\"\n primary: [null]\n ipv6:\n admin-state: enable\n address:\n - ip-prefix: \"2001:db8:cafe:44::1/64\"\n type: \"global-unicast\"\n neighbor-discovery:\n learn-unsolicited: link-local\n router-advertisement:\n router-role:\n admin-state: enable # no ipv6 nd suppress-ra\n min-advertisement-interval: 4 # Leaving this at platform default 200..600 takes too long at startup\n _annotate_min-advertisement-interval: \"Reduced from platform default 200s\"\n max-advertisement-interval: 5\n\n\n\n- path: /network-instance[name=default]\n value:\n type: default\n interface:\n - name: system0.0\n\n- path: /network-instance[name=default]\n value:\n type: default\n interface:\n - name: ethernet-1/1.0\n\n\n" } TASK [Deploy initial configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/srlinux.yml for dut TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [dut] TASK [Update SRL initial node configuration (template=/work/netlab_cicd/node_files/dut/initial)] *** changed: [dut] TASK [debug] ******************************************************************* skipping: [dut] PLAY [Deploy module-specific configurations] *********************************** TASK [Set variables that cannot be set with VARS] ****************************** ok: [dut] TASK [Deploy individual configuration modules] ********************************* included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut => (item=vlan) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut => (item=gateway) included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-module.yml for dut => (item=routing) TASK [Figure out whether to deploy the module vlan on current device] ********** ok: [dut] TASK [Find configuration template for vlan] ************************************ ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for vlan] ******************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "vlan configuration for dut\n=========================================\n\nupdates:\n- path: /interface[name=ethernet-1/2]\n value:\n subinterface:\n - index: 1000\n type: bridged\n description: \"[Access VLAN edge] dut -> h1\"\n\n \n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n description: \"[Access VLAN edge] dut -> h1\"\n interface:\n - name: ethernet-1/2.1000\n\n\n- path: /interface[name=ethernet-1/3]\n value:\n subinterface:\n - index: 1000\n type: bridged\n description: \"[Access VLAN edge] dut -> h3\"\n\n \n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n description: \"[Access VLAN edge] dut -> h3\"\n interface:\n - name: ethernet-1/3.1000\n\n\n- path: /interface[name=ethernet-1/4]\n value:\n subinterface:\n - index: 1000\n type: bridged\n description: \"[Access VLAN edge] dut -> x1\"\n\n \n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n description: \"[Access VLAN edge] dut -> x1\"\n interface:\n - name: ethernet-1/4.1000\n\n\n- path: /interface[name=irb0]\n value:\n subinterface:\n - index: 1000\n\n- path: /interface[name=irb0]/subinterface[index=1000]\n value:\n description: \"VLAN edge (1000) ~ h1,h3,h2,x1\"\n admin-state: enable\n ipv4:\n admin-state: enable\n address:\n - ip-prefix: \"172.16.33.1/24\"\n primary: [null]\n ipv6:\n admin-state: enable\n address:\n - ip-prefix: \"2001:db8:cafe:33::1/64\"\n type: \"global-unicast\"\n neighbor-discovery:\n learn-unsolicited: link-local\n router-advertisement:\n router-role:\n admin-state: enable # no ipv6 nd suppress-ra\n min-advertisement-interval: 4 # Leaving this at platform default 200..600 takes too long at startup\n _annotate_min-advertisement-interval: \"Reduced from platform default 200s\"\n max-advertisement-interval: 5\n\n \n- path: /network-instance[name=vlan1000]\n value:\n type: mac-vrf\n description: \"VLAN edge (1000) ~ h1,h3,h2,x1\"\n interface:\n - name: irb0.1000\n\n- path: /network-instance[name=default]\n value:\n type: default\n interface:\n - name: irb0.1000\n\n \n" } TASK [Deploy vlan configuration] *********************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/srlinux.yml for dut TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [dut] TASK [Update SRL vlan node configuration (template=/work/netlab_cicd/node_files/dut/vlan)] *** changed: [dut] TASK [debug] ******************************************************************* skipping: [dut] TASK [Figure out whether to deploy the module gateway on current device] ******* ok: [dut] TASK [Find configuration template for gateway] ********************************* ok: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for gateway] ***************** ok: [dut] TASK [Print deployed configuration when running in verbose mode] *************** ok: [dut] => { "msg": "gateway configuration for dut\n=========================================\nupdates:\n- path: /interface[name=irb0]/subinterface[index=1000]\n value:\n anycast-gw:\n anycast-gw-mac: 02:00:ca:fe:c0:01\n\n ipv4:\n address:\n - ip-prefix: \"172.16.33.42/24\"\n anycast-gw: True\n ipv6:\n address:\n - ip-prefix: \"2001:db8:cafe:33::2a/64\"\n anycast-gw: True\n" } TASK [Deploy gateway configuration] ******************************************** included: /home/pipi/net101/tools/netsim/ansible/tasks/deploy-config/srlinux.yml for dut TASK [Generate JSON-RPC YAML configuration] ************************************ ok: [dut] TASK [Update SRL gateway node configuration (template=/work/netlab_cicd/node_files/dut/gateway)] *** changed: [dut] TASK [debug] ******************************************************************* skipping: [dut] TASK [Figure out whether to deploy the module routing on current device] ******* ok: [dut] TASK [Find configuration template for routing] ********************************* skipping: [dut] TASK [fail] ******************************************************************** skipping: [dut] TASK [Find configuration deployment deploy_script for routing] ***************** skipping: [dut] TASK [Print deployed configuration when running in verbose mode] *************** skipping: [dut] TASK [Deploy routing configuration] ******************************************** skipping: [dut] PLAY [Deploy custom deployment templates] ************************************** skipping: no hosts matched PLAY RECAP ********************************************************************* dut : ok=32 changed=3 unreachable=0 failed=0 skipped=14 rescued=0 ignored=0 Results of configuration script deployments ================================================================================ x1 Script: initial,vlan,gateway h1 Script: initial,routing h2 Script: initial,routing h3 Script: initial,routing th Script: initial,routing This lab tests the anycast gateway functionality. It checks whether the anycast IP is active, whether it has the correct MAC address, and whether the first device in the forwarding path intercepts the packets with the shared MAC address.