From 770ac9ce719185954d84234db441caf8a84ef76e Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sat, 21 Feb 2026 15:22:14 +0100 Subject: [PATCH] Add a screenshot of Wireshark; do not say 'pop' but rather 'decrement' because the Segment List remains intact --- content/articles/2026-02-21-vpp-srv6.md | 18 ++++++++++++++---- static/assets/vpp-srv6/wireshark.png | 3 +++ 2 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 static/assets/vpp-srv6/wireshark.png diff --git a/content/articles/2026-02-21-vpp-srv6.md b/content/articles/2026-02-21-vpp-srv6.md index ab1a942..fcd5737 100644 --- a/content/articles/2026-02-21-vpp-srv6.md +++ b/content/articles/2026-02-21-vpp-srv6.md @@ -354,15 +354,25 @@ packet. is expected to go. 1. on vlan 21, because the first segment wants the packet to go to `vpp0-2`. and `vpp0-1` is acting as a transit router (just normally using IPv6 FIB lookup to pass it along) -1. on vlan 21 again, because when `vpp0-2` got it, it popped the SRH list, and sent it to the -second segment, which is onwards to `vpp0-1`. -1. on vlan 21 yet again, because when `vpp0-1` got it, it popped the SRH list, and sent it to the -third and final segment, which is onwards to `vpp0-3`. +1. on vlan 21 again, because when `vpp0-2` got it, it decremented the SRH _Segments Left_ from 2 +to 1, and sent it to the second segment, which is onwards to `vpp0-1`. +1. on vlan 21 yet again, because when `vpp0-1` got it, it decremented the SRH _Segments Left_ from +1 to 0, and sent it to the third and final segment, which is onwards to `vpp0-3`. 1. on vlan 22, because `vpp0-2` is a transit router, using its FIB to pass it along to `vpp0-3`, which decapsulates it with End.DX2 and sends it as an L2 packet on Gi10/0/3. 1. coming out of vlan 43 (between `vpp0-3:Gi10/0/3` and `host0-1`), where it is simply an IPv4 packet again. +Some folks find it easier to visualize packets by looking at Wireshark output. I grabbed one of the +packets from the wire, and here's what it looks like: + +{{< image width="100%" src="/assets/vpp-srv6/wireshark.png" alt="Wireshark SRv6 packet with SRH" >}} + +The screenshot shows the packet observed on step 4 above - it is coming from `vpp0-0`'s loopback address and +destined to the End localsid on `vpp0-1`, and I can see that the SRH has the list of 3 Segments in +reversed order with the `Address[0]` is the last one, a _LocalSID_ on `vpp0-3` that is an End.DX2. I +can also see that _Segments Left_ is set to 1. + VPP has a few relevant dataplane nodes: 1. ***sr-pl-rewrite-encaps-l2***: This node encapsulates ethernet at the ingress point by steering packets into an _SR Policy_ named by its _Binding Segment ID_ diff --git a/static/assets/vpp-srv6/wireshark.png b/static/assets/vpp-srv6/wireshark.png new file mode 100644 index 0000000..741d7c4 --- /dev/null +++ b/static/assets/vpp-srv6/wireshark.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f084d90d68fdf35793edf58990fa18bc2cb3fd1a8f53b7e34917bf01a27dbf17 +size 172558