Skip to content

Use Sonic VPP image#301

Draft
l0wl3vel wants to merge 16 commits into
masterfrom
feat/sonic-vpp
Draft

Use Sonic VPP image#301
l0wl3vel wants to merge 16 commits into
masterfrom
feat/sonic-vpp

Conversation

@l0wl3vel

@l0wl3vel l0wl3vel commented May 20, 2026

Copy link
Copy Markdown

Description

Use Sonic VPP image to emulate switch behaviour more accurately

What works

  • SONiC image building (locally)
  • Static breakout configuration (Dynamic breakouts are not supported)
  • SONiC config_db.json generation and loading

Outstanding issues

mini-lab

sonic-vpp related

In summary:

  • sonic-vpp is missing multicast punting for ICMPv6 (IPv6 Router Advertisements) and DHCP. Proper fixes requires (imo. uncontroversial) SONiC sairedis code change, as they merged this in march: vpp: support ARP passthrough sonic-net/sonic-sairedis#1792, which has the same purpose, but for IPv4

  • mini-lab sonic containerlab image changes to the launch.py shoud be merged anyway regardless of sonic-vpp. sonic-vs just about worked with the previous hacks in launch.py, while sonic-vpp needs the startup sequence and included configuration rendering around switch hardware configuration to stay intact to even boot vpp. Cherry pick mini-lab sonic containerlab changes from #301 #310

closes: #300

Used AI-Tools ✨

  • Claude Opus used as research buddy/stand-in in for missing SONiC documentation

l0wl3vel added 6 commits July 7, 2026 12:36
To enable fixed IPs for the Gateway API, mini-lab
needs a docker network that is not the docker
default bridge. Create a dedicated
`mini_lab_internal` network (172.42.0.0/16) and
relocate everything off the old default network
bridge (172.17.0.1 / 172.18.0.0). This shifts the
control-plane ingress DNS from 172.17.0.1.nip.io
to 172.42.0.1.nip.io. No Gateway API migration yet

Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Add a metal-api server cert (api./v2. nip.io SANs)
for the Gateway to terminate TLS with, add it to
roll_certs.sh, and update the grpc cert host to
the Gateway LoadBalancer IP.

Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Add the Gateway API plumbing without wiring any
application to it yet:

Deploy cloud-provider-kind to provide LoadBalancer
IPs.

Add a `gateway` role deploying the Envoy Gateway
controller, a GatewayClass, an EnvoyProxy pinned
to the fixed LB IP 172.42.0.42, and the
metal-control-plane Gateway.

Register the role in the control-plane playbook
and expose metal_control_plane_gateway_dns

Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Migrate zitadel, nsq, metal-api and
metal-apiserver off ingress-nginx to Gateway API.
Enable http/tcp routes, point their external URLs
at the Gateway LoadBalancer (172.42.0.42 /
gateway_dns).

Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
l0wl3vel added 9 commits July 10, 2026 18:26
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
includes
sonic-net/sonic-platform-vpp#212
and sonic-net/sonic-platform-vpp#220
for troubleshooting reasons

Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Removed hacks, that just about worked in sonic-vs but broke in sonic-vpp
- sonic-vpp requires first time init to generate
  VPP config files from hwsku lanemap and port
  config. If skipped the syncd container, in which
  vpp runs, will crash immediately
- /etc/sonic/sonic-environment is generated on first boot from
  /usr/share/sonic/device/x86_64-kvm_x86_64-r0/default_sku,
  so writing it serves no purpose as we reenabled firstboot
- switch to telnetlib3, due to telnetlib being deprecated

Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
found that this line is missing in our current templates.
Connects frr to the sonic dataplane, which is required for configuring the
software switch

Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
…the host eth0 interface

Signed-off-by: Benjamin Ritter <benjamin.ritter@x-cellent.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Use sonic-vpp target for OSS SONiC images

1 participant