Message ID | 20240508213824.55824-6-leigh@solinno.co.uk (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add bridge VLAN support | expand |
On Wed, May 8, 2024 at 6:08 PM Leigh Brown <leigh@solinno.co.uk> wrote:> > Add a new directory linux-bridge-vlan with examples files showing > how to configure systemd-networkd to support a bridge VLAN > configuration. > > Signed-off-by: Leigh Brown <leigh@solinno.co.uk> > --- > tools/examples/linux-bridge-vlan/README | 68 +++++++++++++++++++ > tools/examples/linux-bridge-vlan/br0.netdev | 7 ++ > tools/examples/linux-bridge-vlan/br0.network | 8 +++ > .../examples/linux-bridge-vlan/enp0s0.network | 16 +++++ > 4 files changed, 99 insertions(+) > create mode 100644 tools/examples/linux-bridge-vlan/README > create mode 100644 tools/examples/linux-bridge-vlan/br0.netdev > create mode 100644 tools/examples/linux-bridge-vlan/br0.network > create mode 100644 tools/examples/linux-bridge-vlan/enp0s0.network I think putting these in docs/misc/linux-bridge-vlan/ might be a better location. > diff --git a/tools/examples/linux-bridge-vlan/README b/tools/examples/linux-bridge-vlan/README > new file mode 100644 > index 0000000000..83b9fa3fd6 > --- /dev/null > +++ b/tools/examples/linux-bridge-vlan/README > @@ -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 you want to give access > + to the switch. Note, if you want to create an internal VLAN private to For "for each VLAN you want to give access to the switch" do you mean: "for each VLAN you want connected with the external network" or "for each VLAN you want accessible on the external network" ? The "access to the switch" part I find unclear. > + 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' ] Hard tab here makes the diff look off, but the file would be aligned. I think this is good content. I'm not familiar with the systemd networking stuff to give an R-b. But it's only examples, so I think it should be okay. I'm not a maintainer, but it would be an Acked-by, if I were. Regards, Jason
Hi Jason, On 2024-05-15 01:58, Jason Andryuk wrote: > On Wed, May 8, 2024 at 6:08 PM Leigh Brown <leigh@solinno.co.uk> > wrote:> >> Add a new directory linux-bridge-vlan with examples files showing >> how to configure systemd-networkd to support a bridge VLAN >> configuration. >> >> Signed-off-by: Leigh Brown <leigh@solinno.co.uk> >> --- >> tools/examples/linux-bridge-vlan/README | 68 >> +++++++++++++++++++ >> tools/examples/linux-bridge-vlan/br0.netdev | 7 ++ >> tools/examples/linux-bridge-vlan/br0.network | 8 +++ >> .../examples/linux-bridge-vlan/enp0s0.network | 16 +++++ >> 4 files changed, 99 insertions(+) >> create mode 100644 tools/examples/linux-bridge-vlan/README >> create mode 100644 tools/examples/linux-bridge-vlan/br0.netdev >> create mode 100644 tools/examples/linux-bridge-vlan/br0.network >> create mode 100644 tools/examples/linux-bridge-vlan/enp0s0.network > > I think putting these in docs/misc/linux-bridge-vlan/ might be a > better location. No problem, will move. >> diff --git a/tools/examples/linux-bridge-vlan/README >> b/tools/examples/linux-bridge-vlan/README >> new file mode 100644 >> index 0000000000..83b9fa3fd6 >> --- /dev/null >> +++ b/tools/examples/linux-bridge-vlan/README >> @@ -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 you want to give >> access >> + to the switch. Note, if you want to create an internal VLAN >> private to > > For > "for each VLAN you want to give access to the switch" > do you mean: > "for each VLAN you want connected with the external network" > or > "for each VLAN you want accessible on the external network" > ? > The "access to the switch" part I find unclear. > On re-reading it is not as clear as I'd hope - I will adjust. >> + 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' ] > > Hard tab here makes the diff look off, but the file would be aligned. Will fix up so all the indents are spaced, to be consistent. > I think this is good content. I'm not familiar with the systemd > networking stuff to give an R-b. But it's only examples, so I think > it should be okay. I'm not a maintainer, but it would be an Acked-by, > if I were. > > Regards, > Jason Regards, Leigh.
diff --git a/tools/examples/linux-bridge-vlan/README b/tools/examples/linux-bridge-vlan/README new file mode 100644 index 0000000000..83b9fa3fd6 --- /dev/null +++ b/tools/examples/linux-bridge-vlan/README @@ -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 you want to give access + to the switch. 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 =' + diff --git a/tools/examples/linux-bridge-vlan/br0.netdev b/tools/examples/linux-bridge-vlan/br0.netdev new file mode 100644 index 0000000000..ae1fe487c3 --- /dev/null +++ b/tools/examples/linux-bridge-vlan/br0.netdev @@ -0,0 +1,7 @@ +[NetDev] +Name=br0 +Kind=bridge +MACAddress=xx:xx:xx:xx:xx:xx + +[Bridge] +VLANFiltering=on diff --git a/tools/examples/linux-bridge-vlan/br0.network b/tools/examples/linux-bridge-vlan/br0.network new file mode 100644 index 0000000000..b56203b66a --- /dev/null +++ b/tools/examples/linux-bridge-vlan/br0.network @@ -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 diff --git a/tools/examples/linux-bridge-vlan/enp0s0.network b/tools/examples/linux-bridge-vlan/enp0s0.network new file mode 100644 index 0000000000..6ee3154dfc --- /dev/null +++ b/tools/examples/linux-bridge-vlan/enp0s0.network @@ -0,0 +1,16 @@ +[Match] +Name=enp0s0 + +[Network] +Bridge=br0 + +# If Jumbo frames are required +#[Link] +#MTUBytes=9000 + +[BridgeVLAN] +VLAN=10 + +[BridgeVLAN] +VLAN=20 +
Add a new directory linux-bridge-vlan with examples files showing how to configure systemd-networkd to support a bridge VLAN configuration. Signed-off-by: Leigh Brown <leigh@solinno.co.uk> --- tools/examples/linux-bridge-vlan/README | 68 +++++++++++++++++++ tools/examples/linux-bridge-vlan/br0.netdev | 7 ++ tools/examples/linux-bridge-vlan/br0.network | 8 +++ .../examples/linux-bridge-vlan/enp0s0.network | 16 +++++ 4 files changed, 99 insertions(+) create mode 100644 tools/examples/linux-bridge-vlan/README create mode 100644 tools/examples/linux-bridge-vlan/br0.netdev create mode 100644 tools/examples/linux-bridge-vlan/br0.network create mode 100644 tools/examples/linux-bridge-vlan/enp0s0.network