Page MenuHomeVyOS Platform

T9518-test-instructions.md

Authored By
rherold
Tue, Oct 27, 12:42 PM
Size
3 KB
Referenced Files
None
Subscribers
None

T9518-test-instructions.md

# T9518: test the fix on a running router
This tests the change from the draft PR https://github.com/vyos/vyos-1x/pull/5595 (commit `fe0a3e5d2`) without building an image. It edits system files, use a lab router and not a production one. The edits stay until you revert them or upgrade the image.
The change: `protocols mpls interface <if>` also enables MPLS in VPP for that interface (VPP gets the default MPLS table first), and the `vpp` commit applies it again after a VPP restart.
## Tested on
- Lab image `2026.10.16-0024-rolling` (vyos-1x `999.0-15129-g61f35e0f4`, VPP `v25.10.0-60~vyos20261019233412.17c9bba8f`, FRR 10.7.1, kernel 6.18.55-vyos).
- Two routers on one L2 segment: the VPP router with `eth0` as VPP interface, a second router without VPP. LDP over `eth0` with `explicit-null`, loopbacks and static routes as in the task.
- The patch is built against vyos-1x `rolling` at commit `089c76705` (2026-10-23) and applies cleanly to the files of the image above.
- Not tested: other VPP versions, bonding or VLAN interfaces as MPLS interface, VRFs.
## 1. Apply
Run as a user with sudo (`vyos`), on the router with the VPP interface:
```
# backup of the four files
sudo tar czf ~/t9518-orig.tgz -C / \
usr/lib/python3/dist-packages/vyos/vpp/control_vpp.py \
usr/libexec/vyos/conf_mode/protocols_mpls.py \
usr/libexec/vyos/conf_mode/vpp.py \
usr/share/vyos/config-mode-dependencies/vyos-vpp.json
# the three Python files (copy T9518-vpp-mpls-enable.patch to the router first)
cd / && sudo patch -p1 --dry-run < ~/T9518-vpp-mpls-enable.patch
```
The dry run must list three `patching file` lines and no `FAILED`. If it fails, the image is too different: send the output of `show version` and do not continue.
```
cd / && sudo patch -p1 < ~/T9518-vpp-mpls-enable.patch
# the dependency entry: run `vpp` again when MPLS interfaces exist
sudo sed -i -E '0,/("pppoe_server": \["service_pppoe-server"\])(,?)/s//\1,\n "mpls": ["protocols_mpls"]\2/' \
/usr/share/vyos/config-mode-dependencies/vyos-vpp.json
python3 -c "import json;print(json.load(open('/usr/share/vyos/config-mode-dependencies/vyos-vpp.json'))['vpp']['mpls'])"
# expected output: ['protocols_mpls']
sudo systemctl restart vyos-configd
```
## 2. Test
As the normal user, in configure mode. Use the VPP interface of your setup (`eth1` in the task):
```
delete protocols mpls interface eth1
commit
set protocols mpls interface eth1
commit
```
Check:
```
vppctl show mpls interface
vppctl show interface feat eth1 | grep -a1 mpls-input
show mpls ldp neighbor
ping 10.255.0.2 source-address 10.255.0.1 count 5
```
Expected: `show mpls interface` lists `eth1` and its tap (`tap4096`), both `MPLS enabled`. `mpls-input` at `eth1` is no longer `mpls-not-enabled`. The ping works without the two manual `vppctl set interface mpls ... enable` commands.
Then check that it survives a VPP restart (the commit restarts VPP) and that removal works:
```
set vpp settings poll-sleep-usec 20
commit
vppctl show mpls interface
delete protocols mpls interface eth1
commit
vppctl show mpls interface
```
Expected: after the first commit both interfaces are listed again, after the second the output is empty. Set `poll-sleep-usec` back to your value afterwards.
## 3. Please report
- `show version`
- the output of the commands above (`vppctl show mpls interface` before and after, the ping result)
- if a commit fails: `sudo journalctl -u vyos-configd --since '-5min' --no-pager | tail -40`
Please do not post core files, they can contain customer data.
## 4. Revert
```
cd / && sudo tar xzf ~/t9518-orig.tgz
sudo systemctl restart vyos-configd
```
An image upgrade also replaces the files.

File Metadata

Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4552756
Default Alt Text
T9518-test-instructions.md (3 KB)

Event Timeline