tools/examples: Example Linux bridge VLAN config

Add a new directory linux-bridge-vlan with example files showing
how to configure systemd-networkd to support a bridge VLAN
configuration.

Signed-off-by: Leigh Brown <leigh@solinno.co.uk>
Acked-by: Anthony PERARD <anthony.perard@vates.tech>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
This commit is contained in:
Leigh Brown authored and Anthony PERARD committed 2026-10-12 17:31:39 +02:00
1 parent a1eb020cab
commit 995f509ff2
4 files changed
+99

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
Linux Xen Dom0 single bridge multiple VLAN configuration with systemd
=====================================================================
Introduction
------------
This directory contains example files to be placed in /etc/systemd/network
to enable a single bridge with multiple VLAN support.
The example is to support the scenario where the Xen host network interface
is connected to an Ethernet switch configured as a trunk port. Each domain
VIF can then be configured with one or more VLAN IDs, one of which will be
the PVID.
The example files create a bridge device called br0, with a physical interface
called enp0s0. You will need to update this with your system's device name.
Key points of the configuration are:
1. In br0.netdev, VLANFiltering=on is set. This is required to ensure the
VLAN tags are handled correctly. If it is not set then the packets
from the VIF interfaces will not have the correct VLAN tags set.
2. In br0.network, a system IPv4 address is configured that can be updated
according to your local network settings.
3. In enp0s0.network, Bridge=br0 sets the bridge device to connect to. There
is also a [BridgeVLAN] section for each VLAN allowed on the external
interface. Note, if you want to create an internal VLAN private to the
host, do not include its VLAN ID in this file.
Domain configuration
--------------------
Add the vlan= keyword to the vif definition in the domain. The simplest
and most common example is a domain that wishes to connect to a single VLAN:
vif = [ 'mac=xx:xx:xx:xx:xx:xx, bridge=br0, vlan=10' ]
If you wish to configure a domain to route between two VLANs, you have two
options. Option 1 is to create multiple interfaces on different VLANs:
vif = [ 'mac=xx:xx:xx:xx:xx:xx, bridge=br0, vlan=10',
'max=xx:xx:xx:xx:xx:xx, bridge=br0, vlan=20' ]
Alternatively, you can create single interface:
vif = [ 'mac=xx:xx:xx:xx:xx:xx, bridge=br0, vlan=10p/20' ]
In the domain, you would, for example, use enX0 for VLAN 10 and enX0.20 for
VLAN 20.
Hints and tips
--------------
You can run the following commands on dom0 or a driver domain:
1. To check if vlan_filtering is enabled:
# cat /sys/devices/virtual/net/<name>/bridge/vlan_filtering
2. To check the bridge port VLAN assignments:
# bridge vlan
3. To check the vlan setting in the xenstore (dom0 only):
# xenstore-ls -f | grep 'vlan ='
+7
View File
@@ -0,0 +1,7 @@
[NetDev]
Name=br0
Kind=bridge
MACAddress=xx:xx:xx:xx:xx:xx
[Bridge]
VLANFiltering=on
+8
View File
@@ -0,0 +1,8 @@
[Match]
Name=br0
[Network]
DNS=8.8.8.8
#Domains=example.com
Address=10.1.1.10/24
Gateway=10.1.1.1
@@ -0,0 +1,16 @@
[Match]
Name=enp0s0
[Network]
Bridge=br0
# If Jumbo frames are required
#[Link]
#MTUBytes=9000
[BridgeVLAN]
VLAN=10
[BridgeVLAN]
VLAN=20
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.