From 4f81d377a03cf6ebd64a73c9974e821f48ecae8f Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sun, 4 May 2025 17:11:37 +0200 Subject: [PATCH] Article #2, Containerlab is up and running --- content/articles/2025-05-04-containerlab-2.md | 363 +++++ static/assets/containerlab/learn-vpp.png | 3 + .../assets/containerlab/vpp-containerlab.cast | 1270 +++++++++++++++++ 3 files changed, 1636 insertions(+) create mode 100644 content/articles/2025-05-04-containerlab-2.md create mode 100644 static/assets/containerlab/learn-vpp.png create mode 100644 static/assets/containerlab/vpp-containerlab.cast diff --git a/content/articles/2025-05-04-containerlab-2.md b/content/articles/2025-05-04-containerlab-2.md new file mode 100644 index 0000000..5dfb843 --- /dev/null +++ b/content/articles/2025-05-04-containerlab-2.md @@ -0,0 +1,363 @@ +--- +date: "2025-05-04T15:07:23Z" +title: 'VPP in Containerlab - Part 2' +params: + asciinema: true +--- + +{{< image float="right" src="/assets/containerlab/containerlab.svg" alt="Containerlab Logo" width="12em" >}} + +# Introduction + +From time to time the subject of containerized VPP instances comes up. At IPng, I run the routers in +AS8298 on bare metal (Supermicro and Dell hardware), as it allows me to maximize performance. +However, VPP is quite friendly in virtualization. Notably, it runs really well on virtual machines +like Qemu/KVM or VMWare. I can pass through PCI devices directly to the host, and use CPU pinning to +allow the guest virtual machine access to the underlying physical hardware. In such a mode, VPP +performance almost the same as on bare metal. But did you know that VPP can also run in Docker? + +The other day I joined the [[ZANOG'25](https://nog.net.za/event1/zanog25/)] in Durban, South Africa. +One of the presenters was Nardus le Roux of Nokia, and he showed off a project called +[[Containerlab](https://containerlab.dev/)], which provides a CLI for orchestrating and managing +container-based networking labs. It starts the containers, builds a virtual wiring between them to +create lab topologies of users choice and manages labs lifecycle. + +Quite regularly I am asked 'when will you add VPP to Containerlab?', but at ZANOG I made a promise +to actually add them. In the previous [[article]({{< ref 2025-05-03-containerlab-1.md >}})], I took +a good look at VPP as a dockerized container. In this article, I'll explore how to make such a +container run in Containerlab! + +## Completing the Docker container + +Just having VPP running by itself in a container is not super useful (although it _is_ cool!). I +decide first to add a few bits and bobs that will come in handy in the `Dockerfile`: + +``` +FROM debian:bookworm +ARG DEBIAN_FRONTEND=noninteractive +ARG VPP_INSTALL_SKIP_SYSCTL=true +ARG REPO=release +EXPOSE 22/tcp +RUN apt-get update && apt-get -y install curl procps tcpdump iproute2 iptables \ + iputils-ping net-tools git python3 python3-pip vim-tiny openssh-server bird2 \ + mtr-tiny traceroute && apt-get clean + +# Install VPP +RUN mkdir -p /var/log/vpp /root/.ssh/ +RUN curl -s https://packagecloud.io/install/repositories/fdio/${REPO}/script.deb.sh | bash +RUN apt-get update && apt-get -y install vpp vpp-plugin-core && apt-get clean + +# Build vppcfg +RUN pip install --break-system-packages build netaddr yamale argparse pyyaml ipaddress +RUN git clone https://github.com/pimvanpelt/vppcfg.git && cd vppcfg && python3 -m build && \ + pip install --break-system-packages dist/vppcfg-*-py3-none-any.whl + +# Config files +COPY files/etc/vpp/* /etc/vpp/ +COPY files/etc/bird/* /etc/bird/ +COPY files/init-container.sh /sbin/ +RUN chmod 755 /sbin/init-container.sh +CMD ["/sbin/init-container.sh"] +``` + +A few notable additions: +* ***vppcfg*** is the utility I wrote and described in a previous [[article]({{< ref + 2022-04-02-vppcfg-2 >}})]. It's purpose is to take YAML file that describes the configuration of + the dataplane (like which interfaces, sub-interfaces, MTU, IP addresses and so on), and apply + this safely to a running dataplane. You can check it out in the + [[vppcfg](https://git.ipng.ch/ipng/vppcfg)] git repository. +* ***openssh-server*** will come in handy to log in to the container, in addition to the already + available `docker exec`. +* ***bird2*** which will be my controlplane of choice. In a future date, I might also add FRR, + which may be a good alterantive for some. VPP works well with both. You can check out Bird on + the nic.cz [[website](https://bird.network.cz/?get_doc&f=bird.html&v=20)]. + +I'll add a couple of default config files for Bird and VPP, and replace the CMD with a generic +`init-container.sh` in which I can do any late binding stuff. + +### Initializing the Container + +#### VPP Containerlab: NetNS + +VPP's Linux Control Plane plugin wants to run in its own network namespace. So the first order of +business of `/sbin/init-container.sh` is to create it: + +``` +NETNS=${NETNS:="dataplane"} + +echo "Creating dataplane namespace" +/usr/bin/mkdir -p /etc/netns/$NETNS +/usr/bin/touch /etc/netns/$NETNS/resolv.conf +/usr/sbin/ip netns add $NETNS +``` + +#### VPP Containerlab: SSH + +Then, I'll set the root password and start aan SSH daemon which allows for password-less logins: + +``` +echo "Starting SSH, with credentials root:vpp" +sed -i -e 's,^#PermitRootLogin prohibit-password,PermitRootLogin yes,' /etc/ssh/sshd_config +sed -i -e 's,^root:.*,root:$y$j9T$kG8pyZEVmwLXEtXekQCRK.$9iJxq/bEx5buni1hrC8VmvkDHRy7ZMsw9wYvwrzexID:20211::::::,' /etc/shadow +/etc/init.d/ssh start +``` + +#### VPP Containerlab: Bird2 + +I can already predict that Bird2 won't be the only option for a controlplane. Therefore, I'll make +it configurable: + +``` +BIRD_ENABLED=${BIRD_ENABLED:="true"} + +if [ "$BIRD_ENABLED" == "true" ]; then + echo "Starting Bird in $NETNS" + mkdir -p /run/bird /var/log/bird + chown bird:bird /var/log/bird + ROUTERID=$(ip -br a show eth0 | awk '{ print $3 }' | cut -f1 -d/) + sed -i -e "s,.*router id .*,router id $ROUTERID; # Set by container-init.sh," /etc/bird/bird.conf + /usr/bin/nsenter --net=/var/run/netns/$NETNS /usr/sbin/bird -u bird -g bird +fi +``` + +I remember that Bird won't start if it cannot determine its _router id_. When I start it in the +`dataplane` namespace, it will immediately exit. But luckily, it logs its complaint and it's easily +addressed. I decide to take the management IPv4 address, from `eth0` and write that into the +`bird.conf` file, which does some basic initialization which I've described in a previous +[[article]({{< ref 2021-09-02-vpp-5 >}})], so I'll skip that here. However, I do include an empty +file called `/etc/bird/bird-local.conf` for users to further configure Bird2. + +#### VPP Containerlab: Binding veth pairs + +When Containerlab starts the VPP container, it'll offer it a set of `veth` ports that connect this +container to any other node in the lab. This is done by the `links` list in the topology file +[[ref](https://containerlab.dev/manual/network/)]. It's my goal to take all of the interfaces +that are of type `veth`, and generate a little snippet to grab them and bind them into VPP, as +follows: + +``` +CLAB_VPP_FILE=${CLAB_VPP_FILE:=/etc/vpp/clab.vpp} + +echo "Generating $CLAB_VPP_FILE" +: > $CLAB_VPP_FILE +MTU=9216 +for IFNAME in $(ip -br link show type veth | cut -f1 -d@ | grep -v '^eth0$' | sort); do + MAC=$(ip -br link show dev $IFNAME | awk '{ print $3 }') + echo " * $IFNAME hw-addr $MAC mtu $MTU" + ip link set $IFNAME up mtu $MTU + cat << EOF >> $CLAB_VPP_FILE +create host-interface name $IFNAME hw-addr $MAC +set interface name host-$IFNAME $IFNAME +set interface mtu $MTU $IFNAME +set interface state $IFNAME up + +EOF +done +``` + +#### VPP Containerlab: VPPcfg + +I'm almost ready, but I have one more detail. The user will be able to offer a +[[vppcfg](https://git.ipng.ch/ipng/vppcfg)] YAML file to configure the interfaces and so on. If such +a file exists, I'll apply it to the dataplane upon startup: + +``` +VPPCFG_VPP_FILE=${VPPCFG_VPP_FILE:=/etc/vpp/vppcfg.vpp} + +echo "Generating $VPPCFG_VPP_FILE" +: > $VPPCFG_VPP_FILE +if [ -r /etc/vpp/vppcfg.yaml ]; then + vppcfg plan --novpp -c /etc/vpp/vppcfg.yaml -o $VPPCFG_VPP_FILE +fi +``` + +Once VPP starts, it'll execute `/etc/vpp/bootstrap.vpp`, which in turn executes these newly +generated `/etc/vpp/clab.vpp` to grab the `veth` interfaces, and then `/etc/vpp/vppcfg.vpp` to +further configure the dataplane. Easy peasy! + +### Adding VPP to Containerlab + +Roman points out a previous integration for the 6WIND VSR in +[[PR#2540](https://github.com/srl-labs/containerlab/pull/2540)]. This serves as a useful guide to +get me started. I fork the repo, create a branch so that Roman can also add a few commits, and +together we start hacking in [[PR#2571](https://github.com/srl-labs/containerlab/pull/2571)]. + +First, I add the documentation skeleton in `docs/manual/kinds/fdio_vpp.md`, which links in from a +few other places, and will be where the end-user facing documentation will live. + +Next, I'll create a Go module in `nodes/fdio_vpp/fdio_vpp.go` which doesn't do much other than +creating the `struct`, and its required `Register` and `Init` functions. The `Init` function ensures +the right capabilities are set in Docker, and the right devices are bound for the container. + +I notice that Containerlab rewrites the Dockerfile `CMD` string and prepends an `if-wait.sh` script +to it. This is because when Containerlab starts the container, it'll still be busy adding these +`link` interfaces to it, and if a container starts too quickly, it may not see all the interfaces. +So, containerlab informs the container using an environment variable called `CLAB_INTFS`, so this +script simply sleeps for a while until that exact amount of interfaces are present. Ok, cool beans. + +Roman helps me a bit with Go templating. You see, I think it'll be slick to have the CLI prompt for +the VPP containers to reflect their hostname, because normally, VPP will assign `vpp# `. When +running many VPP containers in the lab, it could get confusing. So, I add the template in +`nodes/fdio_vpp/vpp_startup_config.go.tpl` and it only has one variable: `cli-prompt {{ .ShortName +}}# `, et voila! + +Roman also shows me a trick in the function `PostDeploy()`, which will write the user's SSH pubkeys +to `/root/.ssh/authorized_keys`. This allows users to log in without having to use password +authentication. + +Collectively, we decide to punt on the `SaveConfig` function until we're a bit further along. I have +an idea how this would work, basically along the lines of calling `vppcfg dump` and bind-mounting +that file into the lab directory somewhere. This way, upon restarting, the YAML file can be re-read +and the dataplane initialized. + +After the main module is finished, all I have to do is add it to `clab/register.go` and that's just +about it. In about 170 lines of code, 50 lines of Go template, and 170 lines of Markdown, this +contribution is about ready to ship! + +### Containerlab: Demo + +After I finish writing the documentation, I decide to include a demo with a quickstart to help folks +along. A simple lab showing two VPP instances and two Alpine Linux clients can be found on +[[git.ipng.ch/ipng/vpp-containerlab](https://git.ipng.ch/ipng/vpp-containerlab)]. Simply check out the +repo and start the lab, like so: + +``` +$ git clone https://git.ipng.ch/ipng/vpp-containerlab.git +$ cd vpp-containerlab +$ containerlab deploy --topo vpp.clab.yml +``` + +#### Containerlab: configs + +The file `vpp.clab.yml` contains an example topology existing of two VPP instances connected each to +one Alpine linux container, in the following topology: + +{{< image src="/assets/containerlab/learn-vpp.png" alt="Containerlab Topo" width="100%" >}} + +Two relevant files for VPP are included in this +[[repository](https://git.ipng.ch/ipng/vpp-containerlab)]: +1. `config/vpp*/vppcfg.yaml` configures the dataplane interfaces, including a loopback address. +1. `config/vpp*/bird-local.conf` configures the controlplane to enable BFD and OSPF. + +To illustrate these files, let me take a closer look at node `vpp1`. It's VPP dataplane +configuration looks like this: +``` +pim@summer:~/src/vpp-containerlab$ cat config/vpp1/vppcfg.yaml +interfaces: + eth1: + description: 'To client1' + mtu: 1500 + lcp: eth1 + addresses: [ 10.82.98.65/28, 2001:db8:8298:101::1/64 ] + eth2: + description: 'To vpp2' + mtu: 9000 + lcp: eth2 + addresses: [ 10.82.98.16/31, 2001:db8:8298:1::1/64 ] +loopbacks: + loop0: + description: 'vpp1' + lcp: loop0 + addresses: [ 10.82.98.0/32, 2001:db8:8298::/128 ] +``` + +Then, I enable BFD, OSPF and OSPFv3 on `eth2' and 'loop0` on both of the VPP routers: +``` +pim@summer:~/src/vpp-containerlab$ cat config/vpp1/bird-local.conf +protocol bfd bfd1 { + interface "eth2" { interval 100 ms; multiplier 30; }; +} + +protocol ospf v2 ospf4 { + ipv4 { import all; export all; }; + area 0 { + interface "loop0" { stub yes; }; + interface "eth2" { type pointopoint; cost 10; bfd on; }; + }; +} + +protocol ospf v3 ospf6 { + ipv6 { import all; export all; }; + area 0 { + interface "loop0" { stub yes; }; + interface "eth2" { type pointopoint; cost 10; bfd on; }; + }; +} +``` + +#### Containerlab: playtime! + +Once the lab comes up, I can SSH to the VPP containers (`vpp1` and `vpp2`) for which Roman's code +saw to it that my SSH keys are installed. Otherwise, I could still log in as user `root` using +password `vpp`. VPP runs its own network namespace called `dataplane`, which is very similar to SR +Linux default `network-instance`. I can join that namespace to take a closer look: + +``` +pim@summer:~/src/vpp-containerlab$ ssh root@vpp1 +root@vpp1:~# nsenter --net=/var/run/netns/dataplane +root@vpp1:~# ip -br a +lo DOWN +loop0 UP 10.82.98.0/32 2001:db8:8298::/128 fe80::dcad:ff:fe00:0/64 +eth1 UNKNOWN 10.82.98.65/28 2001:db8:8298:101::1/64 fe80::a8c1:abff:fe77:acb9/64 +eth2 UNKNOWN 10.82.98.16/31 2001:db8:8298:1::1/64 fe80::a8c1:abff:fef0:7125/64 + +root@vpp1:~# ping 10.82.98.1 +PING 10.82.98.1 (10.82.98.1) 56(84) bytes of data. +64 bytes from 10.82.98.1: icmp_seq=1 ttl=64 time=9.53 ms +64 bytes from 10.82.98.1: icmp_seq=2 ttl=64 time=15.9 ms +^C +--- 10.82.98.1 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1002ms +rtt min/avg/max/mdev = 9.530/12.735/15.941/3.205 ms +``` + +From `vpp1`, I can tell that Bird2's OSPF adjacency has formed, because I can ping the `loop0` +address of `vpp2` router on 10.82.98.1. Nice! The two client nodes are running a minimalistic Alpine +Linux container, which doesn't ship with SSH by default. But of course I can still enter the +containers using `docker exec`, like so: + +``` +pim@summer:~/src/vpp-containerlab$ docker exec -it client1 sh +/ # ip addr show dev eth1 +531235: eth1@if531234: mtu 9500 qdisc noqueue state UP + link/ether 00:c1:ab:00:00:01 brd ff:ff:ff:ff:ff:ff + inet 10.82.98.66/28 scope global eth1 + valid_lft forever preferred_lft forever + inet6 2001:db8:8298:101::2/64 scope global + valid_lft forever preferred_lft forever + inet6 fe80::2c1:abff:fe00:1/64 scope link + valid_lft forever preferred_lft forever +/ # traceroute 10.82.98.82 +traceroute to 10.82.98.82 (10.82.98.82), 30 hops max, 46 byte packets + 1 10.82.98.65 (10.82.98.65) 5.906 ms 7.086 ms 7.868 ms + 2 10.82.98.17 (10.82.98.17) 24.007 ms 23.349 ms 15.933 ms + 3 10.82.98.82 (10.82.98.82) 39.978 ms 31.127 ms 31.854 ms + +/ # traceroute 2001:db8:8298:102::2 +traceroute to 2001:db8:8298:102::2 (2001:db8:8298:102::2), 30 hops max, 72 byte packets + 1 2001:db8:8298:101::1 (2001:db8:8298:101::1) 0.701 ms 7.144 ms 7.900 ms + 2 2001:db8:8298:1::2 (2001:db8:8298:1::2) 23.909 ms 22.943 ms 23.893 ms + 3 2001:db8:8298:102::2 (2001:db8:8298:102::2) 31.964 ms 30.814 ms 32.000 ms +``` + +From the vantage point of `client1`, the first hop represents the `vpp1` node, which forwards to +`vpp2`, which finally forwards to `client2`, which shows that both VPP routers are passing traffic. +Dope! + +## Results + +After all of this deep-diving, all that's left is for me to demonstrate the Containerlab by means of +this little screencast [[asciinema](/assets/containerlab/vpp-containerlab.cast)]. I hope you enjoy +it as much as I enjoyed creating it: + +{{< asciinema src="/assets/containerlab/vpp-containerlab.cast" >}} + +## Acknowledgements + +I wanted to give a shout-out Roman Dodin for his help getting the Containerlab parts squared away +when I got a little bit stuck. He took the time to explain the internals and idiom of Containerlab +project, which really saved me a tonne of time. He also pair-programmed the +[[PR#2471](https://github.com/srl-labs/containerlab/pull/2571)] with me over the span of two +evenings. + +Collaborative open source rocks! diff --git a/static/assets/containerlab/learn-vpp.png b/static/assets/containerlab/learn-vpp.png new file mode 100644 index 0000000..d174f25 --- /dev/null +++ b/static/assets/containerlab/learn-vpp.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d4eb04d2b8d97ed558ac8e4b2eade97298e4fcc7f03875eb831b07057c77031 +size 47779 diff --git a/static/assets/containerlab/vpp-containerlab.cast b/static/assets/containerlab/vpp-containerlab.cast new file mode 100644 index 0000000..8a3f891 --- /dev/null +++ b/static/assets/containerlab/vpp-containerlab.cast @@ -0,0 +1,1270 @@ +{"version":2,"width":100,"height":35,"timestamp":1746365499,"theme":{},"env":{"SHELL":"/bin/bash","TERM":"xterm-256color"}} +[0.000089,"o","Linux summer 6.1.0-34-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.135-1 (2025-04-25) x86_64\r\n -*%%= \r\n =%@@@@@: \r\n :%@@@@@@@* \r\n :*@@@@@@@@@@ .=+- \r\n :=*#%@@@@@@@@@@@@@+ .+@@@@# \r\n .+@@@@@@@@@@@@@@@@@@@@##@@@@@@@= \r\n +@@@@@@@@@@@%*+@@@@@@@@@@@@@@@@@* \r\n =@@@@@@@@@#=: *@@@@%#*+*@@@@@@@# \r\n -%@@@@@@@*- ::. :*@@@@@@@@@ \r\n =%@@@@@@@+ *@@@@@@@@@@@* \r\n :*@@@@@@@@+ %@@@@@@@@@@@@@@+. \r\n -*@@@@@@@@@+ "] +[0.001822,"o"," +%@@@@@@@@@@@@@@@*. \r\n .-+%@@@@@@@@@#- =@@@@@@@@@@@@@@@+ \r\n :=*%@@@@@@@@%*=: @@@@@@@@@@@@@@@@# \r\n :+#@@@@@@@#*+-: :*%@@@@@@%%@@@@@@@@@@@@@@@@@# \r\n .=#@@%#*+=-. :##%%@@@@@@@@@@@@@@@@@@@@@@@@@# \r\n .-=-: ..:-=+*#%@@@@@@@@@@@@@@- \r\n ..::--==++***##%%%%@@@@@@@@@@@@@@@@%%%##***+==-::. .-=*#@@@@@@@@* \r\n .:=+*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+-: :=+#@@@% \r\n ..:--=+**#%@@@@@@@@@@@@@@@@@@@@@@%#*##%@@@@@@@@@@@@@@@#+-. .-+-\r\n .:=+*#%@@@@@@@@@@@@@@@@#+=:..-=+#%@@@@@@@@@@@@#+-. \r\n .:=+#%@@@@@@@@@@@@@@@#+-. :-+#@@@@@@@@@@@%= \r\n https://ipng.ch/ :-+#@@@@@@@@@@@@@@@#+-. .-+*%@%*-. \r\n IPng Networks GmbH :=*%@@@@@@@@@@@@@%*- "] +[0.001843,"o"," \r\n :=*%@@@@@@@#+-. \r\n :=+-.\r\nsummer.net.ipng.ch: Restricted access. Authorized users only.\r\nAll connections are monitored and recorded. Contact \u003cnoc@ipng.ch\u003e for details.\r\n\r\nLast login: Sun May 4 15:31:28 2025 from 2001:678:d78:50b::32\r\r\n"] +[0.005068,"o","\u001b[?2004h\u001b]0;pim@summer: ~\u0007\u001b[01;32mpim@summer\u001b[00m:\u001b[01;34m~\u001b[00m$ "] +[1.505068,"o","t"] +[1.546086,"o","m"] +[1.726086,"o","u"] +[1.795108,"o","x"] +[1.893433,"o"," "] +[2.022021,"o","a"] +[3.522021,"o","\r\n\u001b[?2004l\r"] +[3.5236300000000003,"o","\u001b[?1049h\u001b[22;0;0t\u001b[?1h\u001b=\u001b[H\u001b[2J\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?1005l\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[?1006l\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?2004l\u001b[1;1H\u001b[1;35r\u001b[\u003ec\u001b[\u003eq\u001b[1;32H\u001b[?2004h"] +[3.523886,"o","\u001b[?25l\u001b[32m\u001b[1m\u001b[Hpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ \u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[97m\u001b[44m\r\n0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;32H\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[?1006l\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?2004l\u001b[1;1H\u001b[1;35r\u001b[?25l\u001b[32m\u001b[1m\u001b[1;1Hpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ \u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[97m\u001b[44m\r\n0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;32H\u001b[?2004h"] +[3.5456700000000003,"o","\u001b[?7727h"] +[3.7256700000000005,"o","l"] +[3.772994,"o","s"] +[3.8610840000000004,"o"," "] +[3.8813740000000005,"o","-"] +[3.901647000000001,"o","l"] +[3.943502000000001,"o","a"] +[4.123502000000001,"o","\r\n\u001b[?2004l"] +[4.124472000000002,"o","total 8\r\ndrwxr-xr-x 2 pim pim 4096 May 4 15:31 \u001b[34m\u001b[1m.\r\n\u001b(B\u001b[mdrwx------ 41 pim pim 4096 May 4 15:31 \u001b[34m\u001b[1m..\r\n\u001b(B\u001b[m\u001b[?2004h\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ "] +[5.624472000000002,"o","v"] +[5.717493000000001,"o","i"] +[5.738905000000002,"o","m"] +[5.833342000000001,"o"," "] +[7.333342000000001,"o","v"] +[7.426865,"o","p"] +[7.564246,"o","p"] +[7.7442459999999995,"o","."] +[7.833378000000001,"o","c"] +[7.922685,"o","l"] +[7.991278,"o","a"] +[8.103252999999999,"o","b"] +[8.283252999999998,"o","."] +[8.463252999999998,"o","y"] +[8.643252999999998,"o","m"] +[8.713676999999999,"o","l"] +[8.839768999999999,"o","\r\n\u001b[?2004l"] +[8.844800999999999,"o","\u001b[?25l\u001b[H\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[?12l\u001b[?25h\u001b[6d\u001b[?2004h\u001b[1;34r\u001b[1;1H\u001b[2;34r\u001b[33S\u001b[1;1H\u001b[K\u001b[34d\"vpp.clab.yml\" [New]\u001b[1;35r\u001b[34;21H\u001b[?25l\u001b[2;1H▽\r \r\n \u001b[H"] +[8.845047,"o","\r\n\u001b[94m~ \u001b[3;1H~ \u001b[4;1H~ \u001b[5;1H~ \u001b[6;1H~ \u001b[7;1H~ \u001b[8;1H~ \u001b[9;1H~ \u001b[10;1H~ \u001b[11;1H~ "] +[8.845168,"o"," \u001b[12;1H~ \u001b[13;1H~ \u001b[14;1H~ \u001b[15;1H~ \u001b[16;1H~ \u001b[17;1H~ \u001b[18;1H~ \u001b[19;1H~ \u001b[20;1H~ \u001b(B\u001b[m\u001b[21;1H\u001b[94m~ "] +[8.845208999999999,"o"," \u001b[22;1H~ \u001b[23;1H~ \u001b[24;1H~ \u001b[25;1H~ \u001b[26;1H~ \u001b[27;1H~ \u001b[28;1H~ \u001b[29;1H~ \u001b[30;1H~ "] +[8.845349999999998,"o"," \u001b[31;1H~ \u001b[32;1H~ \u001b[33;1H~ \u001b[34;83H\u001b[39m0,0-1\u001b[9CAll\u001b[H\u001b[?12l\u001b[?25h"] +[9.345349999999998,"o","\u001b[?25l\u001b[97m\u001b[44m\u001b[35d0:vim* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H\u001b[34d\u001b[1m-- INSERT --\u001b(B\u001b[m\u001b[70X\u001b[70C0,1\u001b[11X\u001b[11CAll\u001b[K\u001b[H"] +[9.525349999999998,"o","n\u001b[34;83H1,2\u001b[1;2H"] +[9.592705999999998,"o","a\u001b[34;85H3\u001b[1;3H"] +[9.704133999999998,"o","m\u001b[34;85H4\u001b[1;4H"] +[9.746395999999997,"o","e\u001b[34;85H5\u001b[1;5H"] +[9.926395999999997,"o",":\u001b[34;85H6\u001b[1;6H"] +[9.967022999999998,"o","\u001b[34;85H7\u001b[1;7H"] +[10.121455999999997,"o","l\u001b[34;85H8\u001b[1;8H"] +[10.234312999999997,"o","e\u001b[34;85H9\u001b[1;9H"] +[10.301162999999997,"o","a\u001b[34;85H10\u001b[1;10H"] +[10.481162999999997,"o","r\u001b[34;86H1\u001b[1;11H"] +[10.593155999999997,"o","n\u001b[34;86H2\u001b[1;12H"] +[10.773155999999997,"o","-\u001b[34;86H3\u001b[1;13H"] +[10.948237999999996,"o","v\u001b[34;86H4\u001b[1;14H"] +[11.030902999999997,"o","p\u001b[34;86H5\u001b[1;15H"] +[11.190009999999997,"o","p\u001b[34;86H6\u001b[1;16H"] +[11.690009999999997,"o","\r\n\u001b[K\u001b[34;83H2,1 \u001b[2;1H"] +[11.870009999999997,"o","p\u001b[34;85H2\u001b[2;2H"] +[11.996056,"o","r\u001b[34;85H3\u001b[2;3H"] +[12.061976999999999,"o","e\u001b[34;85H4\u001b[2;4H"] +[12.222541,"o","f\u001b[34;85H5\u001b[2;5H"] +[12.312852,"o","i\u001b[34;85H6\u001b[2;6H"] +[12.422895999999998,"o","x\u001b[34;85H7\u001b[2;7H"] +[12.582131999999998,"o",":\u001b[34;85H8\u001b[2;8H"] +[12.623770999999998,"o","\u001b[34;85H9\u001b[2;9H"] +[12.761436,"o","\"\u001b[34;85H10\u001b[2;10H"] +[12.903070999999997,"o","\"\u001b[34;86H1\u001b[2;11H"] +[13.083070999999997,"o","\r\n\u001b[K\u001b[34;83H3,1 \u001b[3;1H"] +[13.263070999999997,"o","\r\n\u001b[K\u001b[34;83H4\u001b[4;1H"] +[13.443070999999996,"o","t\u001b[34;85H2\u001b[4;2H"] +[13.583302999999997,"o","o\u001b[34;85H3\u001b[4;3H"] +[13.738134999999996,"o","p\u001b[34;85H4\u001b[4;4H"] +[13.898545999999996,"o","o\u001b[34;85H5\u001b[4;5H"] +[14.074738999999997,"o","l\u001b[34;85H6\u001b[4;6H"] +[14.207963999999997,"o","o\u001b[34;85H7\u001b[4;7H"] +[14.302963999999996,"o","g\u001b[34;85H8\u001b[4;8H"] +[14.419243999999996,"o","y\u001b[34;85H9\u001b[4;9H"] +[14.599243999999995,"o",":\u001b[34;85H10\u001b[4;10H"] +[14.775167999999997,"o","\r\n\u001b[K\u001b[34;83H5,1 \u001b[5;1H"] +[14.955167999999997,"o","\r\n\u001b[K\u001b[34;83H6\u001b[6;1H"] +[15.135167999999997,"o","\u001b[94m~ \u001b[34;83H\u001b[39m5\u001b[5;1H"] +[15.242209999999996,"o","\u001b[34;85H2\u001b[5;2H"] +[15.399650999999999,"o","\u001b[34;85H3\u001b[5;3H"] +[15.558023999999996,"o","k\u001b[34;85H4\u001b[5;4H"] +[15.719598999999999,"o","i\u001b[34;85H5\u001b[5;5H"] +[15.788814999999996,"o","n\u001b[34;85H6\u001b[5;6H"] +[15.941364999999998,"o","d\u001b[34;85H7\u001b[5;7H"] +[15.985725999999996,"o","s\u001b[34;85H8\u001b[5;8H"] +[16.165725999999996,"o",":\u001b[34;85H9\u001b[5;9H"] +[16.185800999999998,"o","\u001b[34;85H10\u001b[5;10H"] +[16.685800999999998,"o","\u001b[34;85H9 \u001b[5;9H"] +[16.865800999999998,"o","\r\n\u001b[K\u001b[34;83H6,1\u001b[6;1H"] +[17.019657,"o","\u001b[34;85H2\u001b[6;2H"] +[17.175770999999997,"o","\u001b[34;85H3\u001b[6;3H"] +[17.337161,"o","\u001b[34;85H4\u001b[6;4H"] +[17.486437,"o","\u001b[34;85H5\u001b[6;5H"] +[17.666437,"o","f\u001b[34;85H6\u001b[6;6H"] +[17.73464,"o","d\u001b[34;85H7\u001b[6;7H"] +[17.844171,"o","i\u001b[34;85H8\u001b[6;8H"] +[17.888832999999998,"o","o\u001b[34;85H9\u001b[6;9H"] +[18.068832999999998,"o","_\u001b[34;85H10\u001b[6;10H"] +[18.248832999999998,"o","v\u001b[34;86H1\u001b[6;11H"] +[18.316890999999995,"o","p\u001b[34;86H2\u001b[6;12H"] +[18.470216999999998,"o","p\u001b[34;86H3\u001b[6;13H"] +[18.650216999999998,"o",":\u001b[34;86H4\u001b[6;14H"] +[18.830216999999998,"o","\r\n\u001b[K\u001b[34;83H7,1 \u001b[7;1H"] +[19.010216999999997,"o","\u001b[34;85H2\u001b[7;2H"] +[19.146108999999996,"o","\u001b[34;85H3\u001b[7;3H"] +[19.326108999999995,"o","\u001b[34;85H4\u001b[7;4H"] +[19.480778999999995,"o","\u001b[34;85H5\u001b[7;5H"] +[19.660778999999994,"o","\u001b[34;85H6\u001b[7;6H"] +[19.796327999999992,"o","\u001b[34;85H7\u001b[7;7H"] +[20.296327999999992,"o","i\u001b[34;85H8\u001b[7;8H"] +[20.362619999999993,"o","m\u001b[34;85H9\u001b[7;9H"] +[20.40903199999999,"o","a\u001b[34;85H10\u001b[7;10H"] +[20.50004199999999,"o","g\u001b[34;86H1\u001b[7;11H"] +[20.56497099999999,"o","e\u001b[34;86H2\u001b[7;12H"] +[20.72685499999999,"o",":\u001b[34;86H3\u001b[7;13H"] +[20.79354499999999,"o","\u001b[34;86H4\u001b[7;14H"] +[20.97354499999999,"o","g\u001b[34;86H5\u001b[7;15H"] +[21.06540899999999,"o","i\u001b[34;86H6\u001b[7;16H"] +[21.160834999999988,"o","t\u001b[34;86H7\u001b[7;17H"] +[21.22383899999999,"o",".\u001b[34;86H8\u001b[7;18H"] +[21.35384999999999,"o","i\u001b[34;86H9\u001b[7;19H"] +[21.44088999999999,"o","p\u001b[34;85H20\u001b[7;20H"] +[21.59225999999999,"o","n\u001b[34;86H1\u001b[7;21H"] +[21.63510199999999,"o","g\u001b[34;86H2\u001b[7;22H"] +[21.74433899999999,"o",".\u001b[34;86H3\u001b[7;23H"] +[21.830172999999988,"o","c\u001b[34;86H4\u001b[7;24H"] +[21.89422699999999,"o","h\u001b[34;86H5\u001b[7;25H"] +[22.07422699999999,"o","/\u001b[34;86H6\u001b[7;26H"] +[22.25422699999999,"o","i\u001b[34;86H7\u001b[7;27H"] +[22.319283999999993,"o","p\u001b[34;86H8\u001b[7;28H"] +[22.47594299999999,"o","n\u001b[34;86H9\u001b[7;29H"] +[22.546949999999992,"o","g\u001b[34;85H30\u001b[7;30H"] +[22.72694999999999,"o","v\u001b[34;86H1\u001b[7;31H"] +[22.816435999999992,"o","p\u001b[34;86H2\u001b[7;32H"] +[22.946865999999993,"o","p\u001b[34;86H3\u001b[7;33H"] +[23.126865999999993,"o","\b\u001b[K\u001b[34;86H2\u001b[7;32H"] +[23.26018099999999,"o","\b\u001b[K\u001b[34;86H1\u001b[7;31H"] +[23.415077999999994,"o","\b\u001b[K\u001b[34;86H0\u001b[7;30H"] +[23.595077999999994,"o","/\u001b[34;86H1\u001b[7;31H"] +[23.708575999999994,"o","v\u001b[34;86H2\u001b[7;32H"] +[23.781363999999996,"o","p\u001b[34;86H3\u001b[7;33H"] +[23.961363999999996,"o","p\u001b[34;86H4\u001b[7;34H"] +[24.141363999999996,"o","-\u001b[34;86H5\u001b[7;35H"] +[24.270099999999992,"o","c\u001b[34;86H6\u001b[7;36H"] +[24.35904999999999,"o","o\u001b[34;86H7\u001b[7;37H"] +[24.40267099999999,"o","n\u001b[34;86H8\u001b[7;38H"] +[24.49864399999999,"o","t\u001b[34;86H9\u001b[7;39H"] +[24.588987999999993,"o","a\u001b[34;85H40\u001b[7;40H"] +[24.679388999999993,"o","i\u001b[34;86H1\u001b[7;41H"] +[24.700155999999993,"o","n\u001b[34;86H2\u001b[7;42H"] +[24.880155999999992,"o","e\u001b[34;86H3\u001b[7;43H"] +[24.949112999999997,"o","r\u001b[34;86H4\u001b[7;44H"] +[25.08990099999999,"o","l\u001b[34;86H5\u001b[7;45H"] +[25.15838399999999,"o","a\u001b[34;86H6\u001b[7;46H"] +[25.250385999999992,"o","b\u001b[34;86H7\u001b[7;47H"] +[25.43038599999999,"o",":\u001b[34;86H8\u001b[7;48H"] +[25.61038599999999,"o","l\u001b[34;86H9\u001b[7;49H"] +[25.79038599999999,"o","a\u001b[34;85H50\u001b[7;50H"] +[25.97038599999999,"o","t\u001b[34;86H1\u001b[7;51H"] +[26.05309899999999,"o","e\u001b[34;86H2\u001b[7;52H"] +[26.139793999999988,"o","s\u001b[34;86H3\u001b[7;53H"] +[26.247356999999994,"o","t\u001b[34;86H4\u001b[7;54H"] +[26.42436699999999,"o","\r\n\u001b[K\u001b[34;83H8,1 \u001b[8;1H"] +[26.60436699999999,"o","\u001b[34;85H2\u001b[8;2H"] +[26.78436699999999,"o","\u001b[34;85H3\u001b[8;3H"] +[26.949598999999992,"o","\u001b[34;85H4\u001b[8;4H"] +[27.129598999999992,"o","\u001b[34;85H5\u001b[8;5H"] +[27.289485999999997,"o","l\u001b[34;85H6\u001b[8;6H"] +[27.372028999999998,"o","i\u001b[34;85H7\u001b[8;7H"] +[27.506974999999997,"o","n\u001b[34;85H8\u001b[8;8H"] +[27.643511999999994,"o","u\u001b[34;85H9\u001b[8;9H"] +[27.68834199999999,"o","x\u001b[34;85H10\u001b[8;10H"] +[27.86834199999999,"o",":\u001b[34;86H1\u001b[8;11H"] +[28.36834199999999,"o","\r\n\u001b[K\u001b[34;83H9,1 \u001b[9;1H"] +[28.54834199999999,"o","\u001b[34;85H2\u001b[9;2H"] +[28.708336999999993,"o","\u001b[34;85H3\u001b[9;3H"] +[28.888336999999993,"o","\u001b[34;85H4\u001b[9;4H"] +[29.015435999999994,"o","\u001b[34;85H5\u001b[9;5H"] +[29.195435999999994,"o","\u001b[34;85H6\u001b[9;6H"] +[29.33471399999999,"o","\u001b[34;85H7\u001b[9;7H"] +[29.51471399999999,"o","i\u001b[34;85H8\u001b[9;8H"] +[29.599755999999985,"o","m\u001b[34;85H9\u001b[9;9H"] +[29.66802899999999,"o","a\u001b[34;85H10\u001b[9;10H"] +[29.75663699999999,"o","g\u001b[34;86H1\u001b[9;11H"] +[29.828904999999985,"o","e\u001b[34;86H2\u001b[9;12H"] +[30.008904999999984,"o",":\u001b[34;86H3\u001b[9;13H"] +[30.104330999999988,"o","\u001b[34;86H4\u001b[9;14H"] +[30.284330999999987,"o","a\u001b[34;86H5\u001b[9;15H"] +[30.422691999999984,"o","l\u001b[34;86H6\u001b[9;16H"] +[30.602691999999983,"o","p\u001b[34;86H7\u001b[9;17H"] +[30.782691999999983,"o","i\u001b[34;86H8\u001b[9;18H"] +[30.84902599999998,"o","n\u001b[34;86H9\u001b[9;19H"] +[30.897771999999982,"o","e\u001b[34;85H20\u001b[9;20H"] +[31.397771999999982,"o",":\u001b[34;86H1\u001b[9;21H"] +[31.57777199999998,"o","l\u001b[34;86H2\u001b[9;22H"] +[31.66712099999998,"o","a\u001b[34;86H3\u001b[9;23H"] +[31.780895999999977,"o","t\u001b[34;86H4\u001b[9;24H"] +[31.899543999999977,"o","e\u001b[34;86H5\u001b[9;25H"] +[32.01224399999998,"o","s\u001b[34;86H6\u001b[9;26H"] +[32.07848199999998,"o","t\u001b[34;86H7\u001b[9;27H"] +[32.57848199999998,"o","\r\n\u001b[K\u001b[34;83H10,1\u001b[10;1H"] +[32.75848199999998,"o","\r\n\u001b[K\u001b[34;84H1\u001b[11;1H"] +[32.93848199999998,"o","\u001b[34;86H2\u001b[11;2H"] +[33.07418199999998,"o","\u001b[34;86H3\u001b[11;3H"] +[33.25418199999998,"o","n\u001b[34;86H4\u001b[11;4H"] +[33.29900199999997,"o","o\u001b[34;86H5\u001b[11;5H"] +[33.40806799999998,"o","d\u001b[34;86H6\u001b[11;6H"] +[33.428534999999975,"o","e\u001b[34;86H7\u001b[11;7H"] +[33.60531399999998,"o","s\u001b[34;86H8\u001b[11;8H"] +[33.74118799999998,"o",":\u001b[34;86H9\u001b[11;9H"] +[33.897656999999974,"o","\r\n\u001b[K\u001b[34;84H2,1\u001b[12;1H"] +[34.077656999999974,"o","\u001b[34;86H2\u001b[12;2H"] +[34.19278499999997,"o","\u001b[34;86H3\u001b[12;3H"] +[34.37278499999997,"o","\u001b[34;86H4\u001b[12;4H"] +[34.506122999999974,"o","\u001b[34;86H5\u001b[12;5H"] +[34.686122999999974,"o","v\u001b[34;86H6\u001b[12;6H"] +[34.81371799999997,"o","p\u001b[34;86H7\u001b[12;7H"] +[34.92849499999997,"o","p\u001b[34;86H8\u001b[12;8H"] +[35.02235499999997,"o","1\u001b[34;86H9\u001b[12;9H"] +[35.20235499999997,"o",":\u001b[34;86H10\u001b[12;10H"] +[35.70235499999997,"o","\r\n\u001b[K\u001b[34;84H3,1 \u001b[13;1H"] +[35.88235499999997,"o","\u001b[34;86H2\u001b[13;2H"] +[36.03704799999997,"o","\u001b[34;86H3\u001b[13;3H"] +[36.21704799999997,"o","\u001b[34;86H4\u001b[13;4H"] +[36.350942999999965,"o","\u001b[34;86H5\u001b[13;5H"] +[36.530942999999965,"o","\u001b[34;86H6\u001b[13;6H"] +[36.642107999999965,"o","\u001b[34;86H7\u001b[13;7H"] +[36.822107999999965,"o","k\u001b[34;86H8\u001b[13;8H"] +[36.98044099999996,"o","i\u001b[34;86H9\u001b[13;9H"] +[37.04159299999996,"o","n\u001b[34;86H10\u001b[13;10H"] +[37.086887999999966,"o","d\u001b[34;87H1\u001b[13;11H"] +[37.266887999999966,"o",":\u001b[34;87H2\u001b[13;12H"] +[37.33126899999997,"o","\u001b[34;87H3\u001b[13;13H"] +[37.51126899999997,"o","f\u001b[34;87H4\u001b[13;14H"] +[37.60050999999997,"o","d\u001b[34;87H5\u001b[13;15H"] +[37.64746799999997,"o","i\u001b[34;87H6\u001b[13;16H"] +[37.69083199999997,"o","o\u001b[34;87H7\u001b[13;17H"] +[37.87083199999997,"o","_\u001b[34;87H8\u001b[13;18H"] +[38.05083199999997,"o","v\u001b[34;87H9\u001b[13;19H"] +[38.09316299999997,"o","p\u001b[34;86H20\u001b[13;20H"] +[38.22355799999997,"o","p\u001b[34;87H1\u001b[13;21H"] +[38.40355799999997,"o","\u001b[34;1H\u001b[K\u001b[13;20H"] +[38.580538999999966,"o","\u001b[?25l"] +[38.58088399999997,"o","\u001b[34;83H12,9 \u001b[9CAll\u001b[12;9H\u001b[?12l\u001b[?25h"] +[39.08088399999997,"o","\u001b[34;84H3\u001b[13;9H"] +[39.15196999999997,"o","\r\n vpp1:\u001b[K\r\n kind: fdio_vpp\u001b[K\u001b[34;84H4,5\u001b[14;5H"] +[39.33196999999997,"o","\u001b[34;86H9\u001b[14;9H"] +[39.51196999999997,"o","\u001b[34;86H8\u001b[14;8H"] +[39.63085399999997,"o","2\b"] +[39.81085399999997,"o","\u001b[34;84H5\u001b[15;8H"] +[39.99085399999997,"o","\r\n\u001b[K\u001b[34d\u001b[1m-- INSERT --\u001b[70C\u001b(B\u001b[m16,1\u001b[10X\u001b[10CTop\u001b[K\u001b[16;1H"] +[40.17085399999997,"o","\u001b[34;86H2\u001b[10CAll\u001b[16;2H"] +[40.35085399999997,"o","\u001b[34;86H3\u001b[16;3H"] +[40.49981799999997,"o","\u001b[34;86H4\u001b[16;4H"] +[40.61397999999997,"o","\u001b[34;86H5\u001b[16;5H"] +[40.79397999999997,"o","c\u001b[34;86H6\u001b[16;6H"] +[40.91905399999997,"o","l\u001b[34;86H7\u001b[16;7H"] +[40.964797999999966,"o","i\u001b[34;86H8\u001b[16;8H"] +[41.053887999999965,"o","e\u001b[34;86H9\u001b[16;9H"] +[41.14037899999997,"o","n\u001b[34;86H10\u001b[16;10H"] +[41.20533199999997,"o","t\u001b[34;87H1\u001b[16;11H"] +[41.36109899999997,"o","1\u001b[34;87H2\u001b[16;12H"] +[41.54109899999997,"o",":\u001b[34;87H3\u001b[16;13H"] +[42.04109899999997,"o","\r\n\u001b[K\u001b[34;84H7,1 \u001b[17;1H"] +[42.183286999999964,"o","\u001b[34;86H2\u001b[17;2H"] +[42.29459899999997,"o","\u001b[34;86H3\u001b[17;3H"] +[42.45989799999997,"o","\u001b[34;86H4\u001b[17;4H"] +[42.597860999999966,"o","\u001b[34;86H5\u001b[17;5H"] +[42.76177899999997,"o","\u001b[34;86H6\u001b[17;6H"] +[42.94177899999997,"o","\u001b[34;86H7\u001b[17;7H"] +[43.12177899999997,"o","k\u001b[34;86H8\u001b[17;8H"] +[43.30177899999997,"o","i\u001b[34;86H9\u001b[17;9H"] +[43.34837699999997,"o","n\u001b[34;86H10\u001b[17;10H"] +[43.39497699999997,"o","d\u001b[34;87H1\u001b[17;11H"] +[43.57497699999997,"o",":\u001b[34;87H2\u001b[17;12H"] +[43.64153099999997,"o","\u001b[34;87H3\u001b[17;13H"] +[43.82153099999997,"o","l\u001b[34;87H4\u001b[17;14H"] +[43.88912999999997,"o","i\u001b[34;87H5\u001b[17;15H"] +[44.008137999999974,"o","n\u001b[34;87H6\u001b[17;16H"] +[44.14644799999997,"o","u\u001b[34;87H7\u001b[17;17H"] +[44.23550699999997,"o","x\u001b[34;87H8\u001b[17;18H"] +[44.73550699999997,"o","\u001b[34;1H\u001b[K\u001b[17;17H"] +[44.91550699999997,"o","\u001b[?25l\u001b[34;83H16,12\u001b[9CAll\u001b[16;12H\u001b[?12l\u001b[?25h"] +[45.41550699999997,"o","\u001b[34;84H7\u001b[17;12H"] +[45.48194699999997,"o","\r\n client1:\u001b[K\r\n kind: linux\u001b[K\u001b[34;84H8,5 \u001b[18;5H"] +[45.66194699999997,"o","\u001b[34;86H12\u001b[18;12H"] +[45.81242199999997,"o","\u001b[34;84H9,7 \u001b[19;7H"] +[45.99242199999997,"o","\u001b[34;84H8\u001b[18;7H"] +[46.17242199999997,"o","\u001b[34;86H12\u001b[18;12H"] +[46.35242199999997,"o","\u001b[34;87H1\u001b[18;11H"] +[46.48228199999996,"o","2\b"] +[46.66228199999996,"o","\u001b[34;84H9\u001b[19;11H"] +[46.84228199999996,"o","\r\n\u001b[K\u001b[34d\u001b[1m-- INSERT --\u001b[70C\u001b(B\u001b[m20,1\u001b[10X\u001b[10CTop\u001b[K\u001b[20;1H"] +[47.02228199999996,"o","\r\n\u001b[K\u001b[34;84H1\u001b[12CAll\u001b[21;1H"] +[47.20228199999996,"o","\u001b[34;86H2\u001b[21;2H"] +[47.38228199999996,"o","\u001b[34;86H3\u001b[21;3H"] +[47.56228199999996,"o","l\u001b[34;86H4\u001b[21;4H"] +[47.62925999999995,"o","i\u001b[34;86H5\u001b[21;5H"] +[47.696734999999954,"o","n\u001b[34;86H6\u001b[21;6H"] +[47.806910999999964,"o","k\u001b[34;86H7\u001b[21;7H"] +[47.96382099999996,"o","s\u001b[34;86H8\u001b[21;8H"] +[48.14382099999996,"o",":\u001b[34;86H9\u001b[21;9H"] +[48.32382099999996,"o","\r\n\u001b[K\u001b[34;84H2,1\u001b[22;1H"] +[49.82382099999996,"o","\u001b[34;86H2\u001b[22;2H"] +[50.00298599999996,"o","\u001b[34;86H3\u001b[22;3H"] +[50.18298599999996,"o","\u001b[34;86H4\u001b[22;4H"] +[50.292389999999955,"o","\u001b[34;86H5\u001b[22;5H"] +[50.42480599999996,"o","-\u001b[34;86H6\u001b[22;6H"] +[50.55304099999995,"o","\u001b[34;86H7\u001b[22;7H"] +[50.73304099999995,"o","e\u001b[34;86H8\u001b[22;8H"] +[50.83978499999994,"o","n\u001b[34;86H9\u001b[22;9H"] +[50.992605999999945,"o","d\u001b[34;86H10\u001b[22;10H"] +[51.05742299999995,"o","p\u001b[34;87H1\u001b[22;11H"] +[51.100156999999946,"o","o\u001b[34;87H2\u001b[22;12H"] +[51.280156999999946,"o","i\u001b[34;87H3\u001b[22;13H"] +[51.32469299999994,"o","n\u001b[34;87H4\u001b[22;14H"] +[51.39381799999994,"o","t\u001b[34;87H5\u001b[22;15H"] +[51.43581699999994,"o","s\u001b[34;87H6\u001b[22;16H"] +[51.61581699999994,"o",":\u001b[34;87H7\u001b[22;17H"] +[51.63421399999995,"o","\u001b[34;87H8\u001b[22;18H"] +[51.81421399999995,"o","[\u001b[34;87H9\u001b[22;19H"] +[53.31421399999995,"o","\"\u001b[34;86H20\u001b[22;20H"] +[53.49421399999995,"o","v\u001b[34;87H1\u001b[22;21H"] +[53.57372899999995,"o","p\u001b[34;87H2\u001b[22;22H"] +[53.705985999999946,"o","p\u001b[34;87H3\u001b[22;23H"] +[53.79664499999995,"o","1\u001b[34;87H4\u001b[22;24H"] +[53.97664499999995,"o",":\u001b[34;87H5\u001b[22;25H"] +[54.152171999999936,"o","e\u001b[34;87H6\u001b[22;26H"] +[54.241936999999936,"o","t\u001b[34;87H7\u001b[22;27H"] +[54.356486999999944,"o","h\u001b[34;87H8\u001b[22;28H"] +[54.536486999999944,"o","2\u001b[34;87H9\u001b[22;29H"] +[54.716486999999944,"o","\"\u001b[34;86H30\u001b[22;30H"] +[54.896486999999944,"o",",\u001b[34;87H1\u001b[22;31H"] +[54.95693999999994,"o","\u001b[34;87H2\u001b[22;32H"] +[55.09606699999994,"o","\"\u001b[34;87H3\u001b[22;33H"] +[55.27606699999994,"o","v\u001b[34;87H4\u001b[22;34H"] +[55.364139999999935,"o","p\u001b[34;87H5\u001b[22;35H"] +[55.47491399999994,"o","p\u001b[34;87H6\u001b[22;36H"] +[55.56186799999993,"o","2\u001b[34;87H7\u001b[22;37H"] +[55.74186799999993,"o",":\u001b[34;87H8\u001b[22;38H"] +[55.92186799999993,"o","e\u001b[34;87H9\u001b[22;39H"] +[55.99449599999993,"o","t\u001b[34;86H40\u001b[22;40H"] +[56.05949399999993,"o","h\u001b[34;87H1\u001b[22;41H"] +[56.23949399999993,"o","2\u001b[34;87H2\u001b[22;42H"] +[56.41949399999993,"o","\"\u001b[34;87H3\u001b[22;43H"] +[56.91949399999993,"o","\u001b[18G\u001b[106m[\u001b[24C]\u001b[34;87H\u001b[49m4\u001b[22;44H"] +[57.41949399999993,"o","\u001b[34;1H\u001b[K\u001b[22;43H"] +[57.59949399999993,"o","\u001b[?25l"] +[57.59989599999992,"o","\u001b[34;83H22,43\u001b[9CAll\u001b[22;43H\u001b[?12l\u001b[?25h"] +[57.77989599999992,"o","\u001b[18G[\u001b[24C]\r\n - endpoints: [\"vpp1:eth2\", \"vpp2:eth2\"]\u001b[K\u001b[34;84H3,5 \u001b[23;5H"] +[57.95828899999992,"o","\u001b[34;86H7\u001b[23;7H"] +[58.09902199999992,"o","\u001b[34;86H16\u001b[23;16H"] +[58.25060199999993,"o",": \u001b[106m[\u001b[24C]\u001b[34;87H\u001b[49m8\u001b[23;18H"] +[58.43060199999993,"o","[\u001b[24C]\u001b[34;86H20\u001b[23;20H"] +[58.61060199999993,"o","\u001b[34;87H4\u001b[23;24H"] +[58.77348099999993,"o","\u001b[34;87H5\u001b[23;25H"] +[58.95348099999993,"o","\u001b[34;87H9\u001b[23;29H"] +[59.13348099999993,"o","\u001b[34;87H8\u001b[23;28H"] +[59.31348099999993,"o","1\b"] +[59.49348099999993,"o","\u001b[34;87H9\u001b[23;29H"] +[59.64724299999993,"o","\u001b[34;86H32\u001b[23;32H"] +[59.806677999999934,"o","\u001b[34;87H3\u001b[23;33H"] +[59.986677999999934,"o",":eth2\"]\u001b[K\u001b[34;1H\u001b[1m-- INSERT --\u001b[70C\u001b(B\u001b[m23,33\u001b[9X\u001b[9CAll\u001b[K\u001b[23;33H"] +[60.16667799999993,"o","c:eth2\"]\u001b[34;87H4\u001b[23;34H"] +[60.212465999999935,"o","l:eth2\"]\u001b[34;87H5\u001b[23;35H"] +[60.25774899999993,"o","i:eth2\"]\u001b[34;87H6\u001b[23;36H"] +[60.36448599999993,"o","e:eth2\"]\u001b[34;87H7\u001b[23;37H"] +[60.42931999999993,"o","n:eth2\"]\u001b[34;87H8\u001b[23;38H"] +[60.60931999999993,"o","t:eth2\"]\u001b[34;87H9\u001b[23;39H"] +[60.78931999999993,"o","1:eth2\"]\u001b[34;86H40\u001b[23;40H"] +[60.96931999999993,"o","\u001b[34;1H\u001b[K\u001b[23;39H"] +[61.14931999999993,"o","\u001b[?25l"] +[61.14952799999993,"o","\u001b[34;83H23,40\u001b[9CAll\u001b[23;40H\u001b[?12l\u001b[?25h"] +[61.262954999999934,"o","\u001b[34;87H1\u001b[23;41H"] +[61.442954999999934,"o","\u001b[34;87H5\u001b[23;45H"] +[61.62295499999993,"o","\u001b[34;87H4\u001b[23;44H"] +[61.784528999999935,"o","1\b"] +[61.964528999999935,"o","\r\n - endpoints: [\"vpp1:eth1\", \"client1:eth1\"]\u001b[K\u001b[34;84H4,5 \u001b[24;5H"] +[62.12546699999992,"o","\u001b[34;86H7\u001b[24;7H"] +[62.23575399999992,"o","\u001b[34;86H16\u001b[24;16H"] +[62.413342999999934,"o",": \u001b[106m[\u001b[27C]\u001b[34;87H\u001b[49m8\u001b[24;18H"] +[62.55049999999992,"o","[\u001b[27C]\u001b[34;86H20\u001b[24;20H"] +[62.67946799999992,"o","\u001b[34;87H4\u001b[24;24H"] +[62.85946799999992,"o","\u001b[34;87H3\u001b[24;23H"] +[62.96520299999993,"o","2\b"] +[63.14520299999993,"o","\u001b[34;87H4\u001b[24;24H"] +[63.28271399999992,"o","\u001b[34;87H5\u001b[24;25H"] +[63.41502499999992,"o","\u001b[34;87H9\u001b[24;29H"] +[63.57063699999993,"o","\u001b[34;86H32\u001b[24;32H"] +[63.747318999999926,"o","\u001b[34;87H3\u001b[24;33H"] +[63.927318999999926,"o","\u001b[34;86H40\u001b[24;40H"] +[64.10731899999993,"o","\u001b[34;86H39\u001b[24;39H"] +[64.23907399999995,"o","2\b"] +[64.41907399999995,"o","\u001b[34;1H:\u001b[81C\u001b[K\u001b[2G"] +[64.59907399999996,"o","w"] +[64.75287899999996,"o","\r\"vpp.clab.yml\"\u001b[?25l"] +[64.76758199999996,"o"," [New] 24L, 435B written\u001b[44C24,39\u001b[9X\u001b[9CAll\u001b[K\u001b[24;39H\u001b[?12l\u001b[?25h"] +[66.26758199999996,"o","\u001b[34;1H:\u001b[K"] +[66.44758199999997,"o","w"] +[66.51074699999997,"o","q"] +[66.69074699999997,"o","\r\u001b[?25l\u001b[?2004l\"vpp.clab.yml\""] +[66.69140099999997,"o"," 24L, 435B written"] +[66.69222199999997,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[6;1H\u001b[?12l\u001b[?25h\u001b[?25l\u001b[32m\u001b[1m\u001b[Hpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ ls -la\u001b[K\r\ntotal 8\u001b[K\r\ndrwxr-xr-x 2 pim pim 4096 May 4 15:31 \u001b[34m\u001b[1m.\u001b(B\u001b[m\u001b[K\r\ndrwx------ 41 pim pim 4096 May 4 15:31 \u001b[34m\u001b[1m..\u001b(B\u001b[m\u001b[K\u001b[32m\u001b[1m\r\npim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ vim vpp.clab.yml\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[?12l\u001b[?25h\u001b[6d"] +[66.69255599999997,"o","\u001b[?2004h\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ "] +[67.19255599999997,"o","\u001b[?25l\u001b[97m\u001b[44m\u001b[35;1H0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[6;32Hc"] +[67.27950999999996,"o","o"] +[67.32567699999997,"o","n"] +[67.43840599999996,"o","t"] +[67.50638899999997,"o","a"] +[67.60329099999997,"o","i"] +[67.62459599999997,"o","n"] +[67.71062999999997,"o","e"] +[67.77537099999996,"o","r"] +[67.88731699999997,"o","l"] +[68.00211199999997,"o","a"] +[68.18211199999998,"o","b "] +[68.36211199999998,"o","d"] +[68.51748799999999,"o","e"] +[68.58454599999999,"o","p"] +[68.63130999999998,"o","l"] +[68.81130999999999,"o","o"] +[68.99131,"o","y"] +[69.138053,"o"," "] +[69.255285,"o","-"] +[69.427687,"o","-"] +[69.515345,"o","t"] +[69.652716,"o","o"] +[69.716435,"o","p"] +[70.216435,"o","o"] +[70.39643500000001,"o"," "] +[70.57643500000002,"o","v"] +[70.64059900000002,"o","p"] +[70.77391500000002,"o","p"] +[70.95391500000002,"o","."] +[71.02274300000002,"o","c"] +[71.13546200000003,"o","l"] +[71.22947200000003,"o","ab.yml "] +[71.40947200000004,"o","\r\n\u001b[?2004l"] +[71.41885500000004,"o","15:33:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Containerlab started \u001b[2mversion=\u001b(B\u001b[m0.0.0\r\n"] +[71.42049800000004,"o","15:33:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Parsing \u0026 checking topology \u001b[2mfile=\u001b(B\u001b[mvpp.clab.yml\r\n"] +[71.42098100000004,"o","15:33:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Creating docker network \u001b[2mname=\u001b(B\u001b[mclab \u001b[2mIPv4 subnet=\u001b(B\u001b[m172.20.20.0/24 \u001b[2mIPv6 subnet=\u001b(B\u001b[m3fff:172:20:20::/64 \u001b[2mMTU=\u001b(B\u001b[m1500\r\n"] +[71.58270300000004,"o","15:33:27 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Creating lab directory \u001b[2mpath=\u001b(B\u001b[m/home/pim/vpp-containerlab/clab-learn-vpp\r\n\u001b[?25l\u001b[97m\u001b[44m\u001b[35d0:containerlab* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[12;1H"] +[71.61863100000004,"o","15:33:27 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Creating container \u001b[2mname=\u001b(B\u001b[mclient2\r\n15:33:27 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Creating container \u001b[2mname=\u001b(B\u001b[mvpp1\r\n15:33:27 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Creating container \u001b[2mname=\u001b(B\u001b[mvpp2\r\n15:33:27 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Creating container \u001b[2mname=\u001b(B\u001b[mclient1\r\n"] +[72.11863100000004,"o","15:33:28 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Created link: vpp2:eth1 ▪┄┄▪ client2:eth1\r\n15:33:28 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Created link: vpp1:eth2 ▪┄┄▪ vpp2:eth2\r\n"] +[72.21468800000004,"o","15:33:28 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Created link: vpp1:eth1 ▪┄┄▪ client1:eth1\r\n"] +[72.27005100000004,"o","15:33:28 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Adding host entries \u001b[2mpath=\u001b(B\u001b[m/etc/hosts\r\n"] +[72.27384300000004,"o","15:33:28 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Adding SSH config for nodes \u001b[2mpath=\u001b(B\u001b[m/etc/ssh/ssh_config.d/clab-learn-vpp.conf\r\n"] +[72.27686000000004,"o","🎉 A newer containerlab version (0.67.0) is available!\r\nRelease notes: https://containerlab.dev/rn/0.67/\r\nRun 'sudo clab version upgrade' or see https://containerlab.dev/install/ for installation options.\r\n"] +[72.27702200000003,"o","\u001b[1m╭─────────┬──────────────────────────────────────────┬─────────┬───────────────────╮\r\n│ Name │ Kind/Image │ State │ IPv4/6 Address │\r\n├─────────┼──────────────────────────────────────────┼─────────┼───────────────────┤\r\n\u001b(B\u001b[m│ client1 │ linux │ running │ 172.20.20.2 │\r\n│ │ alpine:latest │ │ 3fff:172:20:20::2 │\r\n"] +[72.27738500000004,"o","├─────────┼──────────────────────────────────────────┼─────────┼───────────────────┤\r\n│ client2 │ linux │ running │ 172.20.20.5 │\r\n│ │ alpine:latest │ │ 3fff:172:20:20::5 │\r\n├─────────┼──────────────────────────────────────────┼─────────┼───────────────────┤\r\n│ vpp1 │ fdio_vpp │ running │ 172.20.20.3 │\r\n│ │ git.ipng.ch/ipng/vpp-containerlab:latest │ │ 3fff:172:20:20::3 │\u001b[1;34r\u001b[34;1H\n\u001b[K├─────────┼───────────────────────────"] +[72.27754300000004,"o","───────────────┼─────────┼───────────────────┤\r\n\u001b[K│ vpp2 │ fdio_vpp │ running │ 172.20.20.4 │\r\n\u001b[K│ │ git.ipng.ch/ipng/vpp-containerlab:latest │ │ 3fff:172:20:20::4 │\r\n\u001b[K╰─────────┴──────────────────────────────────────────┴─────────┴───────────────────╯\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[72.27789500000004,"o","\u001b[?2004h\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ "] +[73.77789500000004,"o","\u001b[?25l\u001b[97m\u001b[44m\r\n0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;32Hs"] +[73.95789500000005,"o","s"] +[74.11961000000005,"o","h"] +[74.21601600000005,"o"," "] +[74.28762600000006,"o","v"] +[74.40713700000006,"o","p"] +[74.53052900000006,"o","p"] +[74.60196700000006,"o","1"] +[74.78196700000007,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[74.84464400000006,"o","\u001b[1;34r\u001b[34;1H\n\u001b[AWarning: Permanently added 'vpp1' (ED25519) to the list of known hosts.\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?25l\u001b[97m\u001b[44m\r\n0:ssh* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;1H"] +[74.97613400000007,"o","\u001b[1;34r\u001b[1;1H\u001b[8S\u001b[26dLinux vpp1 6.1.0-34-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.135-1 (2025-04-25) x86_64\r\n\u001b[K\r\nThe programs included with the Debian GNU/Linux system are free software;\u001b[K\r\nthe exact distribution terms for each program are described in the\u001b[K\r\nindividual files in /usr/share/doc/*/copyright.\u001b[K\r\n\u001b[K\r\nDebian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\u001b[K\r\npermitted by applicable law.\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[74.97851700000007,"o","root@vpp1:~# \u001b[?2004h"] +[76.47851700000007,"o","p"] +[76.54857400000007,"o","s"] +[76.65741800000006,"o"," "] +[76.72551600000007,"o","a"] +[76.83685100000007,"o","u"] +[76.92609200000007,"o","x"] +[77.09027900000007,"o","w"] +[77.17871800000007,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[77.18080500000006,"o","\u001b[1;34r\u001b[34;1H\n\u001b[AUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[77.18114100000007,"o","\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[32droot 1 3.4 0.2 17654172 161712 pts/0 Ss+ 13:33 0:00 /usr/bin/vpp -c /etc/vpp/startup.conf\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[3S\u001b[31droot 36 0.0 0.0 15440 3384 ? Ss 13:33 0:00 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups\u001b[K\r\nbird 45 0.0 0.0 7752 2036 ? Ss 13:33 0:00 /usr/sbin/bird -u bird -g bird\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[3S\u001b[31droot 61 0.3 0.0 18112 11356 ? Ss 13:33 0:00 sshd: root@pts/1\r\nroot 67 0.0 0.0 4192 3444 pts/1 Ss 13:33 0:00 -bash\u001b[K\r\nroot 70 0.0 0.0 8104 4036 pts/1 R+ 13:33 0:00 ps auxw\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[77.18125200000007,"o","\u001b[?2004hroot@vpp1:~# "] +[78.68125200000007,"o","v"] +[78.77025400000008,"o","p"] +[78.90958200000007,"o","p"] +[79.00589900000007,"o","c"] +[79.18589900000008,"o","t"] +[79.28077800000008,"o","l"] +[79.46077800000009,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[79.46194800000009,"o","\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[32d _______ _ _ _____ ___ \r\n __/ __/ _ \\ (_)__ | | / / _ \\/ _ \\\u001b[K\r\n _/ _// // / / / \u001b[K\u001b[1;35r\u001b[34;18H\u001b[1;34r\u001b[1;1H\u001b[3S\u001b[31;18H_ \\ | |/ / ___/ ___/\r\n /_/ /____(_)_/\\___/ |___/_/ /_/ \u001b[K\r\n\u001b[K\r\nvpp1# \u001b[K\u001b[1;35r\u001b[34;7H"] +[79.6419480000001,"o","s"] +[79.7649240000001,"o","h"] +[79.7861870000001,"o","o"] +[79.83260800000009,"o","w"] +[79.9312410000001,"o"," "] +[79.9523880000001,"o","i"] +[79.9962300000001,"o","n"] +[80.0877390000001,"o","t"] +[80.2304710000001,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[80.2307740000001,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A Name Idx State MTU (L3/IP4/IP6/MPLS) Counter Count \u001b[34;1H\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[34;1H\n\u001b[Aeth1 1 up 9216/0/0/0 rx packets 2\u001b[34;1H rx bytes 1\u001b[K\u001b[1;35r\u001b[34;99H\u001b[1;34r\u001b[1;1H\u001b[5S\u001b[29;99H40\u001b[30;1H drops 2\u001b[31;1H ip6 2\u001b[32;1Heth2 2 up 9216/0/0/0 \u001b[K\r\nlocal0 0 down 0/0/0/0 \u001b[K\r\nvpp1# \u001b[K\u001b[1;35r\u001b[34;7H"] +[81.7307740000001,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;7Hquit\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004hroot@vpp1:~# "] +[83.2307740000001,"o","\u001b[1;34r\u001b[1;1H\u001b[18S\u001b[16;14H\u001b[7mcat \u003c\u003c EOF \u003e /etc/vpp/vppcfg.yaml\r\ninterfaces:\u001b(B\u001b[m\u001b[K\r\n\u001b[7m eth1:\u001b(B\u001b[m\u001b[K\r\n\u001b[7m description: 'To client1'\u001b(B\u001b[m\u001b[K\r\n\u001b[7m mtu: 1500\u001b(B\u001b[m\u001b[K\r\n\u001b[7m lcp: eth1\u001b(B\u001b[m\u001b[K\r\n\u001b[7m addresses: [ 10.82.98.65/28, 2001:db8:8298:101::1/64 ]\u001b(B\u001b[m\u001b[K\r\n\u001b[7m eth2:\u001b(B\u001b[m\u001b[K\r\n\u001b[7m description: 'To vpp2'\u001b(B\u001b[m\u001b[K\r\n\u001b[7m mtu: 9000\u001b(B\u001b[m\u001b[K\r\n\u001b[7m lcp: eth2\u001b(B\u001b[m\u001b[K\r\n\u001b[7m addresses: [ 10.82.98.16/31, 2001:db8:8298:1::1/64 ]\u001b(B\u001b[m\u001b[K\r\n\u001b[7mloopbacks:\u001b(B\u001b[m\u001b[K\r\n\u001b[7m loop0:\u001b(B\u001b[m\u001b[K\r\n\u001b[7m description: 'vpp1'\u001b(B\u001b[m\u001b[K\r\n\u001b[7m lcp: loop0\u001b(B\u001b[m\u001b[K\r\n\u001b[7m addresses: [ 10.82.98.0/32, 2001:db8:8298::/128 ]\u001b(B\u001b[m\u001b[K\r\n\u001b[7mEOF\u001b(B\u001b[m\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[83.33582000000011,"o","\u001b[16droot@vpp1:~# cat \u003c\u003c EOF \u003e /etc/vpp/vppcfg.yaml\r\ninterfaces:\r\n eth1:\r\n description: 'To client1'\r\n mtu: 1500\r\n lcp: eth1\r\n addresses: [ 10.82.98.65/28, 2001:db8:8298:101::1/64 ]\r\n eth2:\r\n description: 'To vpp2'\r\n mtu: 9000\r\n lcp: eth2\r\n addresses: [ 10.82.98.16/31, 2001:db8:8298:1::1/64 ]\r\nloopbacks:\r\n loop0:\r\n description: 'vpp1'\r\n lcp: loop0\r\n addresses: [ 10.82.98.0/32, 2001:db8:8298::/128 ]\r\nEOF\r\n\u001b[?2004l"] +[83.3362410000001,"o","root@vpp1:~# \u001b[?2004h"] +[84.8362410000001,"o","v"] +[84.94361600000009,"o","p"] +[85.0735330000001,"o","p"] +[85.2535330000001,"o","c"] +[85.43353300000011,"o","f"] +[85.61014300000012,"o","g"] +[85.79014300000013,"o"," "] +[85.87402300000012,"o","p"] +[85.9360900000001,"o","l"] +[86.04953100000013,"o","a"] +[86.13876000000012,"o","n"] +[86.20892600000012,"o"," "] +[86.33868000000011,"o","-"] +[86.4272540000001,"o","c"] +[86.5130110000001,"o"," "] +[86.62433900000012,"o","/"] +[86.68523800000013,"o","e"] +[86.75145500000012,"o","t"] +[86.91944300000013,"o","c"] +[86.96228900000013,"o","/"] +[87.09534500000011,"o","v"] +[87.18178000000013,"o","p"] +[87.33311100000013,"o","p"] +[87.4039290000001,"o","/"] +[87.53709500000012,"o","v"] +[87.61940600000013,"o","p"] +[87.70792000000013,"o","p"] +[87.81566800000012,"o","c"] +[87.85501700000013,"o","fg.\u0007"] +[88.35501700000013,"o","y"] +[88.52863000000012,"o","aml "] +[88.70863000000013,"o","-"] +[88.83188700000012,"o","o"] +[88.95637900000013,"o"," "] +[89.13637900000013,"o","/"] +[89.31637900000014,"o","e"] +[89.37704300000014,"o","t"] +[89.55704300000015,"o","c"] +[89.59868700000014,"o","/"] +[89.73040400000015,"o","v"] +[89.84453200000014,"o","p"] +[89.95248300000016,"o","p"] +[90.02066700000016,"o","/"] +[90.15230400000014,"o","v"] +[90.21766000000015,"o","p"] +[90.35011200000015,"o","p"] +[90.41619100000015,"o","c"] +[90.47918100000014,"o","fg.\u0007"] +[90.97918100000014,"o","v"] +[91.04667400000015,"o","p"] +[91.17230300000016,"o","p"] +[91.35230300000016,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[91.41650400000016,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] root.main: Loading configfile /etc/vpp/vppcfg.yaml\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[91.42272000000015,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] vppcfg.config.valid_config: Configuration validated successfully\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] root.main: Configuration is valid\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[91.60272000000016,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] vppcfg.vppapi.connect: VPP version is 25.02-release\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[91.60786100000017,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] vppcfg.reconciler.write: Wrote 22 lines to /etc/vpp/vppcfg.vpp\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] root.main: Planning succeeded\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[91.65287800000017,"o","root@vpp1:~# \u001b[?2004h"] +[92.15287800000017,"o","c"] +[92.23970200000018,"o","a"] +[92.41970200000019,"o","t"] +[92.50668700000018,"o"," "] +[92.5944070000002,"o","/"] +[92.6610370000002,"o","e"] +[92.70606000000019,"o","t"] +[92.85767600000018,"o","c"] +[92.94434600000018,"o","/"] +[93.07772900000019,"o","v"] +[93.1462610000002,"o","p"] +[93.2747390000002,"o","p"] +[93.31202900000018,"o","/"] +[93.43970500000019,"o","v"] +[93.5268100000002,"o","p"] +[93.64002700000019,"o","p"] +[93.7061910000002,"o","c"] +[93.79313900000018,"o","fg.\u0007"] +[93.97313900000019,"o","v"] +[94.0408250000002,"o","p"] +[94.1722080000002,"o","p"] +[94.2609580000002,"o"," "] +[94.44095800000021,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[94.4415150000002,"o","\u001b[1;34r\u001b[1;1H\u001b[22S\u001b[11Bcomment { vppcfg create: 4 CLI statement(s) follow }\r\ncreate loopback interface instance 0\u001b[K\r\nlcp create loop0 host-if loop0\u001b[K\r\nlcp create eth1 host-if eth1\u001b[K\r\nlcp create eth2 host-if eth2\u001b[K\r\ncomment { vppcfg sync: 16 CLI statement(s) follow }\u001b[K\r\nset interface state eth1 down\u001b[K\r\nset interface mtu 1500 eth1\u001b[K\r\nset interface state eth1 up\u001b[K\r\nset interface state eth2 down\u001b[K\r\nset interface mtu 9000 eth2\u001b[K\r\nset interface state eth2 up\u001b[K\r\nset interface mtu packet 1500 loop0\u001b[K\r\nset interface mtu packet 1500 eth1\u001b[K\r\nset interface mtu packet 9000 eth2\u001b[K\r\nset interface ip address loop0 10.82.98.0/32\u001b[K\r\nset interface ip address loop0 2001:db8:8298::/128\u001b[K\r\nset interface ip address eth1 10.82.98.65/28\u001b[K\r\nset interface ip address eth1 2001:db8:8298:101::1/64\u001b[K\r\nset interface ip address eth2 10.82.98.16/31\u001b[K\r\nset interface ip address eth2 2001:db8:8298:1::1/64\u001b[K\r\nset interface state loop0 up\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1Hroot@vpp1:~# \u001b[?2004h"] +[94.9415150000002,"o","v"] +[95.0091010000002,"o","p"] +[95.15818600000021,"o","p"] +[95.2918830000002,"o","c"] +[95.4718830000002,"o","t"] +[95.55488700000022,"o","l"] +[95.6382220000002,"o"," "] +[95.7032190000002,"o","e"] +[95.88321900000021,"o","x"] +[96.05763600000022,"o","e"] +[96.16859500000022,"o","c"] +[96.34677600000022,"o"," "] +[96.41902600000022,"o","/"] +[96.4588810000002,"o","e"] +[96.52257100000021,"o","t"] +[96.69652600000022,"o","c"] +[96.78245400000021,"o","/"] +[96.89120600000022,"o","v"] +[96.97734000000021,"o","p"] +[97.15118100000022,"o","p"] +[97.19374300000023,"o","/"] +[97.32560800000023,"o","v"] +[97.38726800000022,"o","p"] +[97.51898700000022,"o","p"] +[97.60523100000022,"o","c"] +[97.66994000000021,"o","fg.\u0007"] +[99.16994000000021,"o","v"] +[99.25953500000018,"o","p"] +[99.37470900000021,"o","p"] +[99.87470900000021,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[99.90558400000022,"o","root@vpp1:~# \u001b[?2004h"] +[101.40558400000022,"o","v"] +[101.49467900000023,"o","p"] +[101.60470200000022,"o","p"] +[101.68895000000022,"o","c"] +[101.86895000000023,"o","tl"] +[101.95787600000024,"o"," "] +[102.06596300000025,"o","s"] +[102.15456600000023,"o","h"] +[102.17670600000024,"o","o"] +[102.26486000000024,"o","w"] +[102.32879300000023,"o"," "] +[102.39354700000023,"o","i"] +[102.44012200000024,"o","n"] +[102.53196000000024,"o","t"] +[102.65898300000025,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[102.65997400000025,"o","\u001b[1;34r\u001b[1;1H\u001b[24S\u001b[9B Name Idx State MTU (L3/IP4/IP6/MPLS) Counter Count \u001b[11;1Heth1 1 up 1500/0/0/0 rx packets 5\u001b[12;1H rx bytes 390\u001b[13;1H tx packets 10\u001b[14;1H tx bytes 1032\u001b[15;1H drops 5\u001b[16;1H ip6 5\u001b[17;1Heth2 2 up 9000/0/0/0 tx packets 12\u001b[18;1H tx bytes 1116\u001b[19;1Hlocal0 0 "] +[102.66008300000023,"o"," down 0/0/0/0 drops 1\u001b[20;1Hloop0 3 up 1500/0/0/0 tx packets 22\u001b[21;1H tx bytes 1908\u001b[22;1H drops 11\u001b[23;1H ip6 10\u001b[24;1H tx-error 1\u001b[25;1Htap4096 4 up 1500/0/0/0 rx packets 9\u001b[26;1H rx bytes 782\u001b[27;1H ip6 9\u001b[28;1Htap4097 5 up 1500/0/0/0 rx packets 9"] +[102.66038600000023,"o","\u001b[29;1H rx bytes 902\u001b[30;1H ip6 9\u001b[31;1Htap4098 6 up 9000/0/0/0 rx packets 9\u001b[32;1H rx bytes 902\u001b[33;1H ip6 9\u001b[34;1H\u001b[K\u001b[1;35r\u001b[34;1H"] +[102.66054000000024,"o","\u001b[?2004hroot@vpp1:~# "] +[104.16054000000024,"o","n"] +[104.24582600000024,"o","s"] +[104.38246000000022,"o","e"] +[104.46926900000024,"o","n"] +[104.55829600000023,"o","t"] +[104.69129300000024,"o","e"] +[104.78617900000025,"o","r"] +[104.96617900000025,"o"," "] +[105.00958200000026,"o","-"] +[105.16432000000027,"o","-"] +[105.27917600000028,"o","n"] +[105.39609200000025,"o","e"] +[105.45692000000027,"o","t"] +[105.52268100000028,"o","="] +[105.70268100000028,"o","/"] +[105.79599500000027,"o","v"] +[105.90645700000029,"o","a"] +[105.98949700000027,"o","r"] +[106.05672300000028,"o","/"] +[106.19270900000028,"o","r"] +[106.32483800000027,"o","un"] +[106.47502100000027,"o","/"] +[106.65502100000027,"o","n"] +[106.72393400000028,"o","e"] +[106.80895000000028,"o","t"] +[106.85039700000029,"o","n"] +[106.97950400000029,"o","s/"] +[107.1595040000003,"o","d"] +[107.2227590000003,"o","a"] +[107.3675920000003,"o","t"] +[107.4323000000003,"o","a"] +[107.5209390000003,"o","p"] +[107.6102650000003,"o","l"] +[107.67600100000028,"o","ane "] +[107.85600100000029,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[107.8587330000003,"o","root@vpp1:~# \u001b[?2004h"] +[108.0387330000003,"o","i"] +[108.0851590000003,"o","p"] +[108.15312700000031,"o"," "] +[108.25582500000031,"o","-"] +[108.3930870000003,"o","b"] +[108.43597300000032,"o","r"] +[108.5433600000003,"o"," "] +[108.62708700000032,"o","a"] +[108.74061200000033,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[108.7417480000003,"o","\u001b[1;34r\u001b[34;1H\n\u001b[Alo DOWN \r\nloop0 UP 10.82.98.0/32 \u001b[K\u001b[1;35r\u001b[34;47H\u001b[1;34r\u001b[1;1H\u001b[3S\u001b[31;47H2001:db8:8298::/128 fe80::dcad:ff:fe00:0/64 \r\neth1 UP 10.82.98.65/28 2001:db8:8298:101::1/64 fe80::a8c1:abff:fe09:2452/64 \u001b[33;1Heth2 UP 10.82.98.16/31 2001:db8:8298:1::1/64 fe80::a8c1:abff:fe4c:f710/64 \u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004hroot@vpp1:~# "] +[110.2417480000003,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l\u001b[1;34r\u001b[34;1H\n\u001b[Alogout\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[110.2420290000003,"o","\u001b[?2004hroot@vpp1:~# "] +[111.7420290000003,"o","\u001b[1;34r\u001b[1;1H\u001b[21S\u001b[13;14H\u001b[7mcat \u003c\u003c EOF \u003e /etc/bird/bird-local.conf\r\nprotocol bfd bfd1 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"eth2\" { interval 100 ms; multiplier 30; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m}\u001b(B\u001b[m\u001b[K\r\n\u001b[K\r\n\u001b[7mprotocol ospf v2 ospf4 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m ipv4 { import all; export all; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m area 0 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"loop0\" { stub yes; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"eth2\" { type pointopoint; cost 10; bfd on; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m}\u001b(B\u001b[m\u001b[K\r\n\u001b[K\r\n\u001b[7mprotocol ospf v3 ospf6 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m ipv6 { import all; export all; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m area 0 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"loop0\" { stub yes; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"eth2\" { type pointopoint; cost 10; bfd on; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m}\u001b(B\u001b[m\u001b[K\r\n\u001b[7mEOF\u001b(B\u001b[m\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[111.9159750000003,"o","\u001b[13droot@vpp1:~# cat \u003c\u003c EOF \u003e /etc/bird/bird-local.conf\r\nprotocol bfd bfd1 {\r\n interface \"eth2\" { interval 100 ms; multiplier 30; };\r\n}\u001b[18;1Hprotocol ospf v2 ospf4 {\r\n ipv4 { import all; export all; };\r\n area 0 {\r\n interface \"loop0\" { stub yes; };\r\n interface \"eth2\" { type pointopoint; cost 10; bfd on; };\r\n };\r\n}\u001b[26;1Hprotocol ospf v3 ospf6 {\r\n ipv6 { import all; export all; };\r\n area 0 {\r\n interface \"loop0\" { stub yes; };\r\n interface \"eth2\" { type pointopoint; cost 10; bfd on; };\r\n };\r\n}\r\nEOF\r\n\u001b[?2004l"] +[111.9167190000003,"o","root@vpp1:~# \u001b[?2004h"] +[113.4167190000003,"o","b"] +[113.5056270000003,"o","i"] +[113.52954300000029,"o","r"] +[113.7095430000003,"o","d"] +[113.8895430000003,"o"," "] +[113.95885800000029,"o","-"] +[114.05626900000028,"o","p"] +[114.23626900000029,"o"," "] +[114.3314020000003,"o","-"] +[114.4766740000003,"o","c"] +[114.52527900000031,"o"," "] +[114.6242320000003,"o","/"] +[114.72014900000029,"o","e"] +[114.7416570000003,"o","t"] +[114.92165700000031,"o","c"] +[114.98834200000032,"o","/"] +[115.16834200000032,"o","b"] +[115.18852400000033,"o","i"] +[115.27427000000033,"o","r"] +[115.29540400000032,"o","d/"] +[115.47540400000032,"o","b"] +[115.52160200000033,"o","i"] +[115.59106600000034,"o","r"] +[115.63645400000031,"o","d\u0007"] +[115.81645400000032,"o","."] +[115.96244900000032,"o","conf "] +[116.14244900000033,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[116.14413400000034,"o","root@vpp1:~# \u001b[?2004h"] +[116.64413400000034,"o","b"] +[116.70919100000033,"o","i"] +[116.75228700000032,"o","r"] +[116.91576200000033,"o","d"] +[117.07905300000034,"o","c"] +[117.17119500000034,"o"," "] +[117.29055500000034,"o","c"] +[117.40815200000033,"o","o"] +[117.47600700000034,"o","n"] +[117.54318500000032,"o","f"] +[117.68192600000033,"o","i"] +[117.74897700000032,"o","g"] +[117.88380500000032,"o","u"] +[117.95197800000032,"o","r"] +[117.99789100000034,"o","e"] +[118.17789100000034,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[118.17889500000034,"o","\u001b[1;34r\u001b[34;1H\n\u001b[ABIRD 2.0.12 ready.\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[118.21060200000032,"o","\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[32dReading configuration from /etc/bird/bird.conf\r\nReconfigured\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004hroot@vpp1:~# "] +[118.39060200000033,"o","b"] +[118.4370470000003,"o","i"] +[118.47896700000031,"o","r"] +[118.65896700000032,"o","d"] +[118.79877600000033,"o","c"] +[118.86524400000032,"o"," "] +[118.98404300000031,"o","s"] +[119.03366100000032,"o","h"] +[119.05433400000034,"o","o"] +[119.21247800000033,"o","w"] +[119.35052700000033,"o"," "] +[119.43656700000032,"o","p"] +[119.55370600000033,"o","r"] +[119.67290100000032,"o","o"] +[119.73875700000032,"o","t"] +[119.81048900000032,"o","o"] +[119.90474000000033,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[119.90540200000034,"o","\u001b[1;34r\u001b[34;1H\n\u001b[ABIRD 2.0.12 ready.\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[3S\u001b[31dName Proto Table State Since Info\r\ndevice1 Device --- up 2025-05-04 13:33:28 \u001b[K\r\ndirect1 Direct --- up 2025-05-04 13:33:28 \u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[5S\u001b[29dkernel4 Kernel master4 up 2025-05-04 13:33:28 \r\nkernel6 Kernel master6 up 2025-05-04 13:33:28 \u001b[K\r\nbfd1 BFD --- up 2025-05-04 13:34:51 \u001b[K\r\nospf4 OSPF master4 up 2025-05-04 13:34:51 Alone\u001b[K\r\nospf6 OSPF master6 up 2025-05-04 13:34:51 Alone\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[119.90552400000031,"o","root@vpp1:~# \u001b[?2004h"] +[121.40552400000031,"o","birdc show proto"] +[121.58552400000032,"o","\u001b[5D\u001b[K"] +[121.76552400000033,"o","b"] +[121.83083300000034,"o","f"] +[121.88890400000032,"o","d"] +[122.03453200000034,"o"," "] +[122.11804500000032,"o","s"] +[122.24720800000033,"o","e"] +[122.40180400000033,"o","s"] +[122.51040900000034,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[122.51092700000034,"o","\u001b[1;34r\u001b[1;1H\u001b[3S\u001b[31dBIRD 2.0.12 ready.\r\nbfd1:\u001b[K\r\nIP address Interface State Since Interval Timeout\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004hroot@vpp1:~# "] +[124.01092700000034,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l\u001b[1;34r\u001b[34;1H\n\u001b[Alogout\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[124.01123300000033,"o","\u001b[1;34r\u001b[34;1H\n\u001b[AConnection to vpp1 closed.\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[124.01159600000035,"o","\u001b[?2004h\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ "] +[125.51159600000035,"o","\u001b[?25l\u001b[97m\u001b[44m\r\n0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;32Hc"] +[125.60972900000034,"o","l"] +[125.68141200000035,"o","e"] +[125.79223400000033,"o","a"] +[125.88392600000036,"o","r"] +[126.38392600000036,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[126.38447900000035,"o","\u001b[1;34r\u001b[1;1H\u001b[2;34r\u001b[33S\u001b[1;1H\u001b[K\u001b[1;35r\u001b[1;1H\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ \u001b[?2004h"] +[126.56447900000036,"o","s"] +[126.72368400000035,"o","s"] +[126.76990000000036,"o","h"] +[126.84113600000036,"o"," "] +[126.90901000000035,"o","v"] +[126.99997100000034,"o","p"] +[127.13889500000035,"o","p"] +[127.25494500000035,"o","2"] +[127.43494500000035,"o","\r\n\u001b[?2004l"] +[127.49859700000037,"o","Warning: Permanently added 'vpp2' (ED25519) to the list of known hosts.\r\n"] +[127.62938900000036,"o","Linux vpp2 6.1.0-34-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.135-1 (2025-04-25) x86_64\u001b[5;1HThe programs included with the Debian GNU/Linux system are free software;\r\nthe exact distribution terms for each program are described in the\r\nindividual files in /usr/share/doc/*/copyright.\u001b[9;1HDebian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\r\npermitted by applicable law.\r\n"] +[127.63169300000037,"o","root@vpp2:~# \u001b[?2004h"] +[129.13169300000038,"o","\u001b[?25l\u001b[97m\u001b[44m\u001b[35;1H0:ssh* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[11;14H"] +[129.13195000000036,"o","\u001b[7mcat \u003c\u003c EOF \u003e /etc/vpp/vppcfg.yaml\r\ninterfaces:\r\n eth1:\r\n description: 'To client2'\r\n mtu: 1500\r\n lcp: eth1\r\n addresses: [ 10.82.98.81/28, 2001:db8:8298:102::1/64 ]\r\n eth2:\r\n description: 'To vpp1'\r\n mtu: 9000\r\n lcp: eth2\r\n addresses: [ 10.82.98.17/31, 2001:db8:8298:1::2/64 ]\r\nloopbacks:\r\n loop0:\r\n description: 'vpp2'\r\n lcp: loop0\r\n addresses: [ 10.82.98.1/32, 2001:db8:8298::1/128 ]\r\nEOF\r\n\u001b(B\u001b[m"] +[129.24791900000037,"o","\u001b[11droot@vpp2:~# cat \u003c\u003c EOF \u003e /etc/vpp/vppcfg.yaml\r\ninterfaces:\r\n eth1:\r\n description: 'To client2'\r\n mtu: 1500\r\n lcp: eth1\r\n addresses: [ 10.82.98.81/28, 2001:db8:8298:102::1/64 ]\r\n eth2:\r\n description: 'To vpp1'\r\n mtu: 9000\r\n lcp: eth2\r\n addresses: [ 10.82.98.17/31, 2001:db8:8298:1::2/64 ]\r\nloopbacks:\r\n loop0:\r\n description: 'vpp2'\r\n lcp: loop0\r\n addresses: [ 10.82.98.1/32, 2001:db8:8298::1/128 ]\r\nEOF\r\n\u001b[?2004l"] +[129.24877100000037,"o","root@vpp2:~# \u001b[?2004h"] +[129.37587500000038,"o","\r\n\u001b[?2004l\u001b[?2004hroot@vpp2:~# "] +[129.87587500000038,"o","v"] +[129.96783300000038,"o","p"] +[130.0777790000004,"o","p"] +[130.1424370000004,"o","c"] +[130.3224370000004,"o","f"] +[130.4993110000004,"o","g"] +[130.6158170000004,"o"," "] +[130.6594190000004,"o","p"] +[130.7326710000004,"o","l"] +[130.82318700000042,"o","a"] +[130.9793220000004,"o","n"] +[131.0224690000004,"o"," "] +[131.2024690000004,"o","-"] +[131.2913460000004,"o","c"] +[131.3809620000004,"o"," "] +[131.5073240000004,"o","/"] +[131.5503680000004,"o","e"] +[131.5905850000004,"o","t"] +[131.7705850000004,"o","c"] +[131.8126600000004,"o","/"] +[131.9428590000004,"o","v"] +[132.0052940000004,"o","p"] +[132.1538200000004,"o","p"] +[132.1728440000004,"o","/"] +[132.3011600000004,"o","v"] +[132.4096950000004,"o","p"] +[132.5098780000004,"o","p"] +[132.5996480000004,"o","c"] +[132.6422650000004,"o","fg.\u0007"] +[132.8222650000004,"o","."] +[133.00226500000042,"o","\b \b"] +[133.15368000000043,"o","y"] +[133.25994400000042,"o","aml "] +[133.43994400000042,"o","-"] +[133.53170600000044,"o","o"] +[133.62141200000042,"o"," "] +[133.73288000000042,"o","/"] +[133.77895800000044,"o","e"] +[133.84646100000043,"o","t"] +[134.00158900000042,"o","c"] +[134.06496900000042,"o","/"] +[134.17405900000043,"o","v"] +[134.26329300000043,"o","p"] +[134.39461300000042,"o","p"] +[134.43827700000043,"o","/"] +[134.56049500000043,"o","v"] +[134.64364700000044,"o","p"] +[134.75139500000043,"o","p"] +[134.93139500000044,"o","c"] +[134.97757200000044,"o","fg.\u0007"] +[135.15757200000044,"o","v"] +[135.17863500000044,"o","p"] +[135.35863500000045,"o","p"] +[135.53863500000045,"o","\r\n\u001b[?2004l"] +[135.60303300000047,"o","[INFO ] root.main: Loading configfile /etc/vpp/vppcfg.yaml\r\n"] +[135.60902600000045,"o","[INFO ] vppcfg.config.valid_config: Configuration validated successfully\r\n[INFO ] root.main: Configuration is valid\r\n"] +[135.78902600000046,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] vppcfg.vppapi.connect: VPP version is 25.02-release\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[135.79417100000046,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] vppcfg.reconciler.write: Wrote 22 lines to /etc/vpp/vppcfg.vpp\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[34;1H\n\u001b[A[INFO ] root.main: Planning succeeded\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[135.83912500000048,"o","root@vpp2:~# \u001b[?2004h"] +[136.33912500000048,"o","v"] +[136.4058720000005,"o","p"] +[136.5610690000005,"o","p"] +[136.6038780000005,"o","c"] +[136.7838780000005,"o","t"] +[136.8526530000005,"o","l"] +[136.95944000000048,"o"," "] +[137.1100330000005,"o","e"] +[137.2857910000005,"o","x"] +[137.4519530000005,"o","e"] +[137.54070700000048,"o","c"] +[137.7207070000005,"o"," "] +[137.8277810000005,"o","/"] +[137.9582660000005,"o","t"] +[138.1354490000005,"o","c"] +[138.3154490000005,"o","\b \b"] +[138.46765400000052,"o","\b \b"] +[138.50850700000052,"o","e"] +[138.5509630000005,"o","t"] +[138.6992300000005,"o","c"] +[138.81234500000053,"o","/"] +[138.92338000000052,"o","v"] +[139.03290800000053,"o","p"] +[139.17246800000052,"o","p"] +[139.23362300000053,"o","/"] +[139.2760040000005,"o","v"] +[139.42883800000052,"o","p"] +[139.5137110000005,"o","p"] +[139.60159400000052,"o","c"] +[139.66406100000052,"o","fg.\u0007"] +[139.84406100000052,"o","v"] +[139.8850570000005,"o","p"] +[140.01601500000052,"o","p"] +[140.19601500000053,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[140.22457100000054,"o","root@vpp2:~# \u001b[?2004h"] +[141.72457100000054,"o","n"] +[141.79286000000056,"o","s"] +[141.95432600000055,"o","e"] +[142.07551600000053,"o","n"] +[142.14816700000054,"o","t"] +[142.31176000000056,"o","e"] +[142.40271600000054,"o","r"] +[142.58271600000054,"o"," "] +[142.64797700000054,"o","-"] +[142.79535800000053,"o","-"] +[142.91078200000052,"o","n"] +[143.03109900000052,"o","e"] +[143.12618300000054,"o","t"] +[143.14836300000053,"o","="] +[143.32836300000054,"o","/"] +[143.42547700000054,"o","v"] +[143.52655600000054,"o","a"] +[143.61876000000052,"o","r"] +[143.68773800000054,"o","/"] +[143.78677800000054,"o","r"] +[143.87730400000052,"o","u"] +[143.92146700000052,"o","n"] +[144.08429000000052,"o","/"] +[144.25104700000054,"o","n"] +[144.29625400000052,"o","e"] +[144.34187200000054,"o","t"] +[144.48534700000053,"o","ns/"] +[144.66534700000054,"o","d"] +[144.71000400000054,"o","a"] +[144.87614600000052,"o","taplane "] +[145.05614600000052,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[145.05946800000052,"o","root@vpp2:~# \u001b[?2004h"] +[145.23946800000053,"o","i"] +[145.28390800000054,"o","p"] +[145.32995300000053,"o"," "] +[145.43172500000054,"o","-"] +[145.59859100000054,"o","b"] +[145.66822700000054,"o","r"] +[145.76401200000055,"o"," "] +[145.85609200000053,"o","a"] +[145.98121900000052,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[145.98256100000054,"o","\u001b[1;34r\u001b[1;1H\u001b[4S\u001b[30dlo DOWN \r\nloop0 UP 10.82.98.1/32 2001:db8:8298::1/128 fe80::dcad:ff:fe00:0/64 \u001b[K\r\neth1 UP 10.82.98.81/28 2001:db8:8298:102::1/64 fe80::a8c1:abff:fe3e:5b8/64 \u001b[K\r\neth2 UP 10.82.98.17/31 2001:db8:8298:1::2/64 fe80::a8c1:abff:feb5:98dc/64 \u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004hroot@vpp2:~# "] +[146.16256100000055,"o","p"] +[146.23227000000054,"o","i"] +[146.41227000000055,"o","n"] +[146.48373300000057,"o","g"] +[146.57855200000057,"o"," "] +[148.07855200000057,"o","\u001b[7m10.82.98.17\u001b(B\u001b[m"] +[148.57855200000057,"o","\b \b"] +[148.69813700000057,"o","6"] +[148.87813700000058,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[148.91518900000057,"o","\u001b[1;34r\u001b[34;1H\n\u001b[APING 10.82.98.16 (10.82.98.16) 56(84) bytes of data.\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[148.93984800000058,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.16: icmp_seq=1 ttl=64 time=24.8 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[149.43984800000058,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.16: icmp_seq=2 ttl=64 time=15.0 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[149.93984800000058,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.16: icmp_seq=3 ttl=64 time=5.95 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[150.43984800000058,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.16: icmp_seq=4 ttl=64 time=12.0 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[150.6198480000006,"o","^C\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[33d--- 10.82.98.16 ping statistics ---\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[32d4 packets transmitted, 4 received, 0% packet loss, time 3005ms\r\nrtt min/avg/max/mdev = 5.951/14.415/24.776/6.807 ms\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[150.63371700000062,"o","root@vpp2:~# \u001b[?2004h"] +[152.13371700000062,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l\u001b[1;34r\u001b[34;1H\n\u001b[Alogout\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004hroot@vpp2:~# "] +[153.63371700000062,"o","\u001b[1;34r\u001b[1;1H\u001b[21S\u001b[13;14H\u001b[7mcat \u003c\u003c EOF \u003e /etc/bird/bird-local.conf\r\nprotocol bfd bfd1 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"eth2\" { interval 100 ms; multiplier 30; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m}\u001b(B\u001b[m\u001b[K\r\n\u001b[K\r\n\u001b[7mprotocol ospf v2 ospf4 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m ipv4 { import all; export all; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m area 0 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"loop0\" { stub yes; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"eth2\" { type pointopoint; cost 10; bfd on; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m}\u001b(B\u001b[m\u001b[K\r\n\u001b[K\r\n\u001b[7mprotocol ospf v3 ospf6 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m ipv6 { import all; export all; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m area 0 {\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"loop0\" { stub yes; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m interface \"eth2\" { type pointopoint; cost 10; bfd on; };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m };\u001b(B\u001b[m\u001b[K\r\n\u001b[7m}\u001b(B\u001b[m\u001b[K\r\n\u001b[7mEOF\u001b(B\u001b[m\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[153.81371700000062,"o","\u001b[13droot@vpp2:~# cat \u003c\u003c EOF \u003e /etc/bird/bird-local.conf\r\nprotocol bfd bfd1 {\r\n interface \"eth2\" { interval 100 ms; multiplier 30; };\r\n}\u001b[18;1Hprotocol ospf v2 ospf4 {\r\n ipv4 { import all; export all; };\r\n area 0 {\r\n interface \"loop0\" { stub yes; };\r\n interface \"eth2\" { type pointopoint; cost 10; bfd on; };\r\n };\r\n}\u001b[26;1Hprotocol ospf v3 ospf6 {\r\n ipv6 { import all; export all; };\r\n area 0 {\r\n interface \"loop0\" { stub yes; };\r\n interface \"eth2\" { type pointopoint; cost 10; bfd on; };\r\n };\r\n}\r\nEOF\r\n\u001b[?2004l"] +[153.81475900000063,"o","root@vpp2:~# \u001b[?2004h"] +[153.99475900000064,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004lroot@vpp2:~# \u001b[?2004h"] +[154.49475900000064,"o","n"] +[154.67475900000065,"o","\b \b"] +[154.85475900000066,"o","b"] +[154.92277200000066,"o","i"] +[154.99074000000064,"o","r"] +[155.17074000000065,"o","d"] +[156.67074000000065,"o","c"] +[156.79285400000066,"o"," "] +[156.91500600000063,"o","c"] +[156.96391800000066,"o","o"] +[157.0076400000006,"o","n"] +[157.07616100000064,"o","f"] +[157.19785100000064,"o","i"] +[157.23794500000065,"o","g"] +[157.32644800000065,"o","u"] +[157.41745300000065,"o","r"] +[157.46006900000066,"o","e"] +[157.64006900000066,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[157.64094000000063,"o","\u001b[1;34r\u001b[34;1H\n\u001b[ABIRD 2.0.12 ready.\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[32dReading configuration from /etc/bird/bird.conf\r\nReconfigured\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[157.64103700000067,"o","root@vpp2:~# \u001b[?2004h"] +[159.14103700000067,"o","b"] +[159.20491200000066,"o","i"] +[159.26589300000063,"o","r"] +[159.43816500000065,"o","d"] +[159.58769000000063,"o","c"] +[159.72772900000064,"o"," "] +[159.90772900000064,"o","s"] +[160.02035700000067,"o","h"] +[160.06325400000065,"o","o"] +[160.14870900000068,"o","w"] +[160.32870900000069,"o"," "] +[160.4606630000007,"o","b"] +[160.52662200000066,"o","f"] +[160.57106100000067,"o","d"] +[160.68057700000065,"o"," "] +[160.76417000000066,"o","s"] +[160.9416360000007,"o","e"] +[161.0970540000007,"o","s"] +[161.25249800000068,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[161.2530800000007,"o","\u001b[1;34r\u001b[34;1H\n\u001b[ABIRD 2.0.12 ready.\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[4S\u001b[30dbfd1:\r\nIP address Interface State Since Interval Timeout\u001b[K\r\nfe80::a8c1:abff:fe4c:f710 eth2 Up 2025-05-04 13:36:01 0.100 3.000\u001b[K\r\n10.82.98.16 eth2 Up 2025-05-04 13:36:01 0.100 3.000\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1Hroot@vpp2:~# \u001b[?2004h"] +[162.7530800000007,"o","birdc show bfd ses"] +[162.9330800000007,"o","\u001b[3D\u001b[K"] +[163.1130800000007,"o","\u001b[4D\u001b[K"] +[163.2930800000007,"o","o"] +[163.37506000000076,"o","s"] +[163.48536500000074,"o","p"] +[163.55380000000076,"o","f"] +[163.61787400000077,"o"," "] +[163.70655100000073,"o","n"] +[163.77157600000072,"o","e"] +[163.87682400000074,"o","i"] +[164.01553800000073,"o"," "] +[164.14882700000072,"o","o"] +[164.16896000000077,"o","s"] +[164.29872800000072,"o","p"] +[164.36502200000075,"o","f"] +[164.54502200000076,"o","4"] +[164.63035800000074,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[164.63095800000076,"o","\u001b[1;34r\u001b[34;1H\n\u001b[ABIRD 2.0.12 ready.\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[3S\u001b[31dospf4:\r\nRouter ID \u001b[4X\u001b[4CPri\u001b[5X\u001b[5C State \u001b[1X\u001b[CDTime\u001b[3X\u001b[3CInterface Router IP\u001b[K\r\n172.20.20.3 \u001b[4X\u001b[4C 1\u001b[5X\u001b[5CFull/PtP \u001b[6X\u001b[6C39.085\u001b[2X\u001b[2Ceth2 10.82.98.16\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[164.63113400000077,"o","\u001b[?2004hroot@vpp2:~# "] +[164.81113400000078,"o","birdc show ospf nei ospf4"] +[164.99113400000078,"o","\b \b"] +[165.0941740000008,"o","6"] +[165.24512500000077,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[165.24607200000077,"o","\u001b[1;34r\u001b[34;1H\n\u001b[ABIRD 2.0.12 ready.\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[3S\u001b[31dospf6:\r\nRouter ID \u001b[4X\u001b[4CPri\u001b[5X\u001b[5C State \u001b[1X\u001b[CDTime\u001b[3X\u001b[3CInterface Router IP\u001b[K\r\n172.20.20.3 \u001b[4X\u001b[4C 1\u001b[5X\u001b[5CFull/PtP \u001b[6X\u001b[6C37.523\u001b[2X\u001b[2Ceth2 fe80::a8c1:abff:fe4c:f710\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004hroot@vpp2:~# "] +[165.74607200000077,"o","birdc show ospf nei ospf6"] +[165.92607200000077,"o","\u001b[5D\u001b[K"] +[166.10607200000078,"o","\u001b[4D\u001b[K"] +[166.2860720000008,"o","\u001b[5D\u001b[K"] +[166.4660720000008,"o","r"] +[166.55128300000075,"o","o"] +[166.61566400000078,"o","u"] +[166.70196900000076,"o","t"] +[166.74505100000079,"o","e"] +[167.24505100000079,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[167.24564300000077,"o","\u001b[1;34r\u001b[34;1H\n\u001b[ABIRD 2.0.12 ready.\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[167.24585000000076,"o","\u001b[1;34r\u001b[1;1H\u001b[31S\u001b[2BTable master4:\r\n10.82.98.1/32 unicast [direct1 2025-05-04 13:35:25] * (240)\u001b[K\u001b[5;8H\u001b[1K\u001b[Cdev loop0\u001b[K\r\n unicast [ospf4 2025-05-04 13:35:57] I (150/0) [172.20.20.4]\u001b[K\u001b[7;8H\u001b[1K\u001b[Cdev loop0\u001b[K\r\n10.82.98.0/32 unicast [ospf4 2025-05-04 13:36:06] * I (150/10) [172.20.20.3]\u001b[K\u001b[9;8H\u001b[1K\u001b[Cvia 10.82.98.16 on eth2\u001b[K\r\n10.82.98.64/28 unicast [ospf4 2025-05-04 13:36:06] * E2 (150/10/10000) [172.20.20.3]\u001b[K\u001b[11;8H\u001b[1K\u001b[Cvia 10.82.98.16 on eth2\u001b[K\r\n10.82.98.80/28 unicast [direct1 2025-05-04 13:35:25] * (240)\u001b[K\u001b[13;8H\u001b[1K\u001b[Cdev eth1\u001b[K\r\n10.82.98.16/31 unicast [direct1 2025-05-04 13:35:25] * (240)\u001b[K\u001b[15;8H\u001b[1K\u001b[Cdev eth2\u001b[K\r\n unicast [ospf4 2025-05-04 13:35:57] I (150/10) [172.20.20.4]\u001b[K\u001b[17;8H\u001b[1K\u001b[Cdev eth2\u001b[K\r\n\u001b[K\r\nTable master6:\u001b[K\r\n2001:db8:8298:102::/64 unicast [direct1 2025-05-04 13:35:27] * (240)\u001b[K\u001b[21;8H\u001b[1K\u001b[Cdev eth1\u001b[K\r\n2001:db8:8298:1::/64 unicast [direct1 2025-05-04 13:35:27] * (240)\u001b[K\u001b[23;8H\u001b[1K\u001b[Cdev eth2\u001b["] +[167.24593500000077,"o","K\r\n unicast [ospf6 2025-05-04 13:35:57] I (150/10) [172.20.20.4]\u001b[K\u001b[25;8H\u001b[1K\u001b[Cdev eth2\u001b[K\r\n2001:db8:8298::1/128 unicast [direct1 2025-05-04 13:35:27] * (240)\u001b[K\u001b[27;8H\u001b[1K\u001b[Cdev loop0\u001b[K\r\n unicast [ospf6 2025-05-04 13:35:57] I (150/0) [172.20.20.4]\u001b[K\u001b[29;8H\u001b[1K\u001b[Cdev loop0\u001b[K\r\n2001:db8:8298:101::/64 unicast [ospf6 2025-05-04 13:36:06] * E2 (150/10/10000) [172.20.20.3]\u001b[K\u001b[31;8H\u001b[1K\u001b[Cvia fe80::a8c1:abff:fe4c:f710 on eth2\u001b[K\r\n2001:db8:8298::/128 unicast [ospf6 2025-05-04 13:36:06] * I (150/10) [172.20.20.3]\u001b[K\u001b[33;8H\u001b[1K\u001b[Cvia fe80::a8c1:abff:fe4c:f710 on eth2\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1Hroot@vpp2:~# \u001b[?2004h"] +[168.74593500000077,"o","!"] +[168.92593500000078,"o","n"] +[169.01746200000082,"o","s"] +[169.19746200000083,"o","e"] +[169.37746200000083,"o","n"] +[169.55746200000084,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l\u001b[1;34r\u001b[34;1H\n\u001b[Ansenter --net=/var/run/netns/dataplane \r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[169.56079300000084,"o","root@vpp2:~# \u001b[?2004h"] +[169.74079300000085,"o","i"] +[169.80830100000082,"o","p"] +[169.87782000000084,"o"," "] +[170.05782000000085,"o","-"] +[170.22282800000085,"o","b"] +[170.31299200000086,"o","r"] +[170.38319200000086,"o"," "] +[170.47208300000085,"o","a"] +[170.65208300000086,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[170.65319000000085,"o","\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[32dlo DOWN \r\nloop0 UP 10.82.98.1/32 2001:db8:8298::1/128 fe80::dcad:ff:fe00:0/64 \u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[32deth1 UP 10.82.98.81/28 2001:db8:8298:102::1/64 fe80::a8c1:abff:fe3e:5b8/64 \r\neth2 UP 10.82.98.17/31 2001:db8:8298:1::2/64 fe80::a8c1:abff:feb5:98dc/64 \u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1Hroot@vpp2:~# \u001b[?2004h"] +[170.83319000000085,"o","p"] +[170.90507600000086,"o","i"] +[171.08507600000087,"o","n"] +[171.18067500000086,"o","g"] +[171.25325100000083,"o"," "] +[172.75325100000083,"o","\u001b[7m10.82.98.1\u001b(B\u001b[m"] +[172.93325100000084,"o","\b \b"] +[173.11325100000084,"o","0"] +[173.29325100000085,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[173.29384900000088,"o","\u001b[1;34r\u001b[34;1H\n\u001b[APING 10.82.98.0 (10.82.98.0) 56(84) bytes of data.\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[173.30122200000085,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.0: icmp_seq=1 ttl=64 time=7.28 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[173.80122200000085,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.0: icmp_seq=2 ttl=64 time=6.08 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[173.98122200000086,"o","^C\u001b[1;34r\u001b[1;1H\u001b[4S\u001b[31d--- 10.82.98.0 ping statistics ---\u001b[K\r\n2 packets transmitted, 2 received, 0% packet loss, time 1001ms\u001b[K\r\nrtt min/avg/max/mdev = 6.080/6.678/7.276/0.598 ms\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1Hroot@vpp2:~# \u001b[?2004h"] +[174.16122200000086,"o","p"] +[174.23169900000084,"o","i"] +[174.41169900000085,"o","n"] +[174.5005660000009,"o","g"] +[174.66585400000088,"o","6"] +[174.7081940000009,"o"," "] +[176.2081940000009,"o","\u001b[7m2001:db8:8298::1\u001b(B\u001b[m"] +[176.7081940000009,"o","\b \b"] +[176.8881940000009,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[176.88922200000093,"o","\u001b[1;34r\u001b[34;1H\n\u001b[APING 2001:db8:8298::(2001:db8:8298::) 56 data bytes\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[177.38922200000093,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 2001:db8:8298::: icmp_seq=2 ttl=64 time=20.0 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[177.88922200000093,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 2001:db8:8298::: icmp_seq=3 ttl=64 time=11.0 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[178.38922200000093,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 2001:db8:8298::: icmp_seq=4 ttl=64 time=9.98 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[178.88922200000093,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 2001:db8:8298::: icmp_seq=5 ttl=64 time=8.94 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[179.06922200000093,"o","^C\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[33d--- 2001:db8:8298:: ping statistics ---\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[34;1H\n\u001b[A5 packets transmitted, 4 received, 20% packet loss, time 4019ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[34;1H\n\u001b[Artt min/avg/max/mdev = 8.944/12.484/19.993/4.397 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[179.06953500000094,"o","\u001b[?2004hroot@vpp2:~# "] +[180.56953500000094,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l\u001b[1;34r\u001b[34;1H\n\u001b[Alogout\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004hroot@vpp2:~# "] +[182.06953500000094,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l\u001b[1;34r\u001b[34;1H\n\u001b[Alogout\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[182.06992200000093,"o","\u001b[1;34r\u001b[34;1H\n\u001b[AConnection to vpp2 closed.\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[182.07048300000093,"o","\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ \u001b[?2004h"] +[182.25048300000094,"o","\u001b[?25l\u001b[97m\u001b[44m\r\n0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;32H"] +[182.75048300000094,"o","d"] +[182.84346900000094,"o","o"] +[182.93591400000093,"o","c"] +[183.02916500000094,"o","k"] +[183.07480300000094,"o","e"] +[183.14364300000096,"o","r"] +[183.24033900000097,"o"," "] +[183.38328100000092,"o","e"] +[183.54066600000095,"o","x"] +[183.69854100000094,"o","e"] +[183.78871300000094,"o","c"] +[183.83144800000093,"o"," "] +[183.92475000000093,"o","-"] +[184.09403500000093,"o","l"] +[184.20876500000094,"o","t"] +[184.30588700000095,"o"," "] +[184.46047600000094,"o","c"] +[184.50769100000093,"o","l"] +[184.57548200000093,"o","i"] +[184.64751700000096,"o","e"] +[184.71814100000097,"o","n"] +[184.80981100000093,"o","t"] +[184.92184300000093,"o","1"] +[185.05046500000094,"o"," "] +[185.23046500000095,"o","s"] +[185.32460000000094,"o","h"] +[185.50460000000095,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[185.55626000000092,"o","\u001b[1;34r\u001b[1;1H\u001b[2S\u001b[32dunknown shorthand flag: 'l' in -lt\r\nSee 'docker exec --help'.\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[185.55683700000094,"o","\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ \u001b[?2004h"] +[187.05683700000094,"o","docker exec -lt client1 sh\u001b[26D"] +[187.23683700000095,"o","\u001b[7C"] +[187.41683700000095,"o","\u001b[5C"] +[187.59683700000096,"o","\u001b[C"] +[187.77683700000097,"o","i\b"] +[187.918735000001,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[187.99128400000097,"o","/ # "] +[187.99233200000094,"o","\r/ # \u001b[1;34r\u001b[34;5H\u001b[K\u001b[1;35r\u001b[34;5H"] +[189.49233200000094,"o","\u001b[?25l\u001b[97m\u001b[44m\r\n0:docker* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;5H"] +[189.67233200000095,"o","ip link set address 00:c1:ab:00:00:01 dev\u001b[1;34r\u001b[34;1H\n\u001b[33;46H eth1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[189.68835800000096,"o","/ # "] +[191.18835800000096,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;5Hip addr add 10.82.98.66/28 dev eth1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[191.18905300000097,"o","/ # "] +[192.68905300000097,"o","ip route add 10.82.98.0/24 via\u001b[1;34r\u001b[34;1H\n\u001b[33;35H 10.82.98.65\r\n\u001b[K\u001b[1;35r\u001b[34;1H/ # "] +[194.18905300000097,"o","ip addr add 2001:db8:8298:101::2/64 dev e\u001b[1;34r\u001b[34;1H\n\u001b[33;46Hth1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[194.18970500000097,"o","/ # "] +[195.68970500000097,"o","ip route add 2001:db8:8298::/48 \u001b[1;34r\u001b[34;1H\n\u001b[33;37Hvia 2001:db8:8298:101::1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[195.69013600000096,"o","/ # "] +[197.19013600000096,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[197.19267600000097,"o","\u001b[?2004h\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ "] +[197.37267600000098,"o","\u001b[?25l\u001b[97m\u001b[44m\r\n0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;32H"] +[197.463242000001,"o","docker exec -it client1 sh\u001b[26D"] +[197.643242000001,"o","\u001b[26C"] +[197.82324200000102,"o","\b\b"] +[198.00324200000102,"o","\b"] +[198.18324200000103,"o","\b"] +[198.35129500000102,"o","2\b"] +[198.53129500000102,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[198.59275900000102,"o","/ # "] +[198.59375100000102,"o","\r/ # \u001b[1;34r\u001b[34;5H\u001b[K\u001b[1;35r\u001b[34;5H"] +[200.09375100000102,"o","\u001b[?25l\u001b[97m\u001b[44m\r\n0:docker* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;5Hip link set address 00:c1:ab:\u001b[1;34r\u001b[34;1H\n\u001b[33;34H00:00:02 dev eth1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[200.11562900000104,"o","/ # "] +[201.61562900000104,"o","ip addr add 10.82.98.82/28 dev e\u001b[1;34r\u001b[34;1H\n\u001b[33;37Hth1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[201.61618300000106,"o","/ # "] +[203.11618300000106,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;5Hip route add 10.82.98.0/24 via 10.82.98.81\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[203.11659500000104,"o","/ # "] +[204.61659500000104,"o","ip addr add 2001:db8:82\u001b[1;34r\u001b[34;1H\n\u001b[33;28H98:102::2/64 dev eth1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[204.61712000000108,"o","/ # "] +[206.11712000000108,"o","ip route add 2001:db8:8298::/48 via 2\u001b[1;34r\u001b[34;1H\n\u001b[33;42H001:db8:8298:102::1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[206.11751000000112,"o","/ # "] +[207.61751000000112,"o","p"] +[207.68612900000113,"o","i"] +[207.86612900000114,"o","n"] +[207.93835500000114,"o","g"] +[208.03378800000115,"o"," "] +[209.53378800000115,"o","10.82.98.66"] +[210.03378800000115,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[210.03408000000115,"o","\u001b[1;34r\u001b[34;1H\n\u001b[APING 10.82.98.66 (10.82.98.66): 56 data bytes\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[210.53408000000115,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.66: seq=1 ttl=62 time=24.000 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[211.03408000000115,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.66: seq=2 ttl=62 time=31.872 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[211.53408000000115,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.66: seq=3 ttl=62 time=31.883 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[212.03408000000115,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 10.82.98.66: seq=4 ttl=62 time=23.779 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[212.09482100000116,"o","\u001b[1;34r\u001b[1;1H\u001b[4S\u001b[30d^C\r\n--- 10.82.98.66 ping statistics ---\u001b[K\r\n5 packets transmitted, 4 packets received, 20% packet loss\u001b[K\r\nround-trip min/avg/max = 23.779/27.883/31.883 ms\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[212.09505200000115,"o","/ # "] +[212.27505200000115,"o","t"] +[212.31921600000112,"o","r"] +[212.43599300000113,"o","a"] +[212.55684600000114,"o","c"] +[212.6776280000011,"o","e"] +[212.7734920000011,"o","r"] +[212.84199900000112,"o","o"] +[212.90815600000116,"o","u"] +[212.9835060000011,"o","t"] +[213.03467300000113,"o","e"] +[213.10471700000113,"o"," "] +[214.60471700000113,"o","10.82.98.66"] +[214.78471700000114,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[214.78505300000114,"o","\u001b[1;34r\u001b[34;1H\n\u001b[Atraceroute to 10.82.98.66 (10.82.98.66), 30 hops max, 46 byte packets\r\n 1\u001b[K\u001b[1;35r\u001b[34;3H"] +[214.78622000000115,"o"," 10.82.98.81 (10.82.98.81) 0.260 ms"] +[214.79403700000114,"o"," 7.106 ms"] +[214.80143000000112,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;50H 7.932 ms\r\n 2\u001b[K\u001b[1;35r\u001b[34;3H"] +[214.8304090000011,"o"," 10.82.98.16 (10.82.98.16) 27.916 ms"] +[214.84574000000111,"o"," 15.133 ms"] +[214.8700340000011,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;52H 23.991 ms\r\n 3\u001b[K\u001b[1;35r\u001b[34;3H"] +[214.89433000000116,"o"," 10.82.98.66 (10.82.98.66) 23.931 ms"] +[214.91742100000113,"o"," 23.043 ms"] +[214.94974000000116,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;52H 31.918 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H/ # "] +[216.44974000000116,"o","p"] +[216.49733300000116,"o","i"] +[216.67733300000117,"o","n"] +[216.78907800000115,"o","g"] +[216.96907800000116,"o","6"] +[217.06080100000116,"o"," "] +[218.56080100000116,"o","2001:db8:8298:101::2"] +[218.74080100000117,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[218.7411730000012,"o","\u001b[1;34r\u001b[34;1H\n\u001b[APING 2001:db8:8298:101::2 (2001:db8:8298:101::2): 56 data bytes\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[219.2411730000012,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 2001:db8:8298:101::2: seq=1 ttl=62 time=38.568 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[219.7411730000012,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 2001:db8:8298:101::2: seq=2 ttl=62 time=30.431 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[220.2411730000012,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A64 bytes from 2001:db8:8298:101::2: seq=3 ttl=62 time=30.418 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[220.4211730000012,"o","^C\u001b[1;34r\u001b[1;1H\u001b[4S\u001b[31d--- 2001:db8:8298:101::2 ping statistics ---\u001b[K\r\n4 packets transmitted, 3 packets received, 25% packet loss\u001b[K\r\nround-trip min/avg/max = 30.418/33.139/38.568 ms\u001b[K\r\n\u001b[K\u001b[1;35r\u001b[34;1H/ # "] +[221.9211730000012,"o","t"] +[221.98571300000123,"o","r"] +[222.1227650000012,"o","a"] +[222.23317000000122,"o","c"] +[222.3476910000012,"o","e"] +[222.43392500000124,"o","r"] +[222.5204220000012,"o","o"] +[222.5620020000012,"o","u"] +[222.65058700000122,"o","t"] +[222.6921150000012,"o","e"] +[222.8721150000012,"o","6"] +[222.91417900000118,"o"," "] +[224.41417900000118,"o","2001:db8:8298:101::2"] +[224.91417900000118,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[224.91436500000117,"o","\u001b[1;34r\u001b[34;1H\n\u001b[Atraceroute to 2001:db8:8298:101::2 (2001:db8:8298:101::2), 30 hops max, 72 byte packets\r\n 1\u001b[K\u001b[1;35r\u001b[34;3H"] +[224.9214040000012,"o"," 2001:db8:8298:102::1 (2001:db8:8298:102::1) 6.279 ms"] +[224.92870100000118,"o"," 7.146 ms"] +[224.93673900000118,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;68H 7.909 ms\r\n 2\u001b[K\u001b[1;35r\u001b[34;3H"] +[224.96557900000118,"o"," 2001:db8:8298:1::1 (2001:db8:8298:1::1) 27.905 ms"] +[224.9810150000012,"o"," 15.174 ms"] +[224.99712900000122,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;66H 15.923 ms\r\n 3\u001b[K\u001b[1;35r\u001b[34;3H"] +[225.02988200000118,"o"," 2001:db8:8298:101::2 (2001:db8:8298:101::2) 32.039 ms"] +[225.06113400000118,"o"," 30.981 ms"] +[225.0848310000012,"o","\u001b[1;34r\u001b[34;1H\n\u001b[33;70H 23.997 ms\r\n\u001b[K\u001b[1;35r\u001b[34;1H/ # "] +[226.5848310000012,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[226.5867000000012,"o","\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ \u001b[?2004h"] +[228.0867000000012,"o","\u001b[?25l\u001b[97m\u001b[44m\r\n0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;32H"] +[228.08684400000124,"o","c"] +[228.20499800000124,"o","o"] +[228.27277400000122,"o","n"] +[228.45277400000123,"o","t"] +[228.5216840000012,"o","a"] +[228.61847500000118,"o","i"] +[228.63826500000118,"o","n"] +[228.7067520000012,"o","e"] +[228.7775310000012,"o","r"] +[228.87149600000123,"o","l"] +[228.9632770000012,"o","a"] +[229.0325580000012,"o","b"] +[229.2125580000012,"o"," "] +[229.3925580000012,"o","i"] +[229.43919400000118,"o","n"] +[229.55982400000119,"o","s"] +[229.6511820000012,"o","p"] +[229.69792800000118,"o","e"] +[229.7928880000012,"o","c"] +[229.9728880000012,"o","t"] +[230.1528880000012,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[230.1612480000012,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:22 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Parsing \u0026 checking topology \u001b[2mfile=\u001b(B\u001b[mvpp.clab.yml\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[230.16612400000122,"o","\u001b[1m╭─────────┬──────────────────────────────────────────┬─────────┬───────────────────╮\u001b(B\u001b[m\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1m│ Name │ Kind/Image │ State │ IPv4/6 Address │\u001b(B\u001b[m\r\n\u001b[K\u001b[1m├─────────┼──────────────────────────────────────────┼─────────┼───────────────────┤\u001b(B\u001b[m\r\n\u001b[K│ client1 │ linux │ running │ 172.20.20.2 │\r\n\u001b[K│ │ alpine:latest │ │ 3fff:172:20:20::2 │\r\n\u001b[K├─────────┼──────────────────────────────────────────┼──"] +[230.1662490000012,"o","───────┼───────────────────┤\r\n\u001b[K\u001b[1;35r\u001b[34;1H│ client2 │ linux │ running │ 172.20.20.5 │\u001b[1;34r\u001b[34;1H\n\u001b[K│ │ alpine:latest │ │ 3fff:172:20:20::5 │\r\n\u001b[K├─────────┼──────────────────────────────────────────┼─────────┼───────────────────┤\r\n\u001b[K│ vpp1 │ fdio_vpp │ running │ 172.20.20.3 │\r\n\u001b[K│ │ git.ipng.ch/ipng/vpp-containerlab:latest │ │ 3fff:172:20:20::3 │\r\n\u001b[K├─────────┼──────────────────────────────────────────┼─────────┼───────────────────┤\r\n\u001b[K"] +[230.16636500000118,"o","│ vpp2 │ fdio_vpp │ running │ 172.20.20.4 │\r\n\u001b[K│ │ git.ipng.ch/ipng/vpp-containerlab:latest │ │ 3fff:172:20:20::4 │\r\n\u001b[K╰─────────┴──────────────────────────────────────────┴─────────┴───────────────────╯\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[230.1665850000012,"o","\u001b[?2004h\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ "] +[231.6665850000012,"o","containerlab inspect"] +[231.8465850000012,"o","\u001b[7D\u001b[K"] +[232.0265850000012,"o","d"] +[232.19226100000122,"o","e"] +[232.3106750000012,"o","s"] +[232.47146000000123,"o","t"] +[232.5152840000012,"o","r"] +[232.6296990000012,"o","o"] +[232.69891800000124,"o","y"] +[232.87891800000125,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l"] +[232.88879600000126,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:25 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Parsing \u0026 checking topology \u001b[2mfile=\u001b(B\u001b[mvpp.clab.yml\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[232.92038800000125,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:25 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Parsing \u0026 checking topology \u001b[2mfile=\u001b(B\u001b[mvpp.clab.yml\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[232.9260010000013,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:25 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Destroying lab \u001b[2mname=\u001b(B\u001b[mlearn-vpp\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[233.1060010000013,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Removed container \u001b[2mname=\u001b(B\u001b[mclient1\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?25l\u001b[97m\u001b[44m\r\n0:containerlab* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;1H"] +[233.16135600000126,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Removed container \u001b[2mname=\u001b(B\u001b[mclient2\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[233.34135600000127,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Removed container \u001b[2mname=\u001b(B\u001b[mvpp1\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[233.43021600000128,"o","\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Removed container \u001b[2mname=\u001b(B\u001b[mvpp2\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Removing host entries \u001b[2mpath=\u001b(B\u001b[m/etc/hosts\r\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[1;34r\u001b[34;1H\n\u001b[A15:38:26 \u001b[38;5;86m\u001b[1mINFO\u001b(B\u001b[m Removing SSH config \u001b[2mpath=\u001b(B\u001b[m/etc/ssh/ssh_config.d/clab-learn-vpp.conf\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[233.6102160000013,"o","\u001b[?2004h\u001b[32m\u001b[1mpim@summer\u001b(B\u001b[m:\u001b[34m\u001b[1m~/vpp-containerlab\u001b(B\u001b[m$ "] +[233.7902160000013,"o","\u001b[?25l\u001b[97m\u001b[44m\r\n0:bash* \u001b[93msummer\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[34;32H"] +[235.2902160000013,"o","\u001b[1;34r\u001b[34;1H\n\u001b[K\u001b[1;35r\u001b[34;1H\u001b[?2004l\u001b[1;34r\u001b[34;1H\n\u001b[Alogout\r\n\u001b[K\u001b[1;35r\u001b[34;1H"] +[235.29151300000132,"o","\u001b[1;35r\u001b(B\u001b[m\u001b[?1l\u001b\u003e\u001b[H\u001b[2J\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?1005l\u001b[?7727l\u001b[?1004l\u001b[?1049l\u001b[23;0;0t[exited]\r\n"] +[235.29166400000128,"o","\u001b[?2004h\u001b]0;pim@summer: ~\u0007\u001b[01;32mpim@summer\u001b[00m:\u001b[01;34m~\u001b[00m$ "]