[Bug 1721156] [NEW] networkd does not set bridge forward delay value correctly

Ryan Harper 1721156 at bugs.launchpad.net
Tue Oct 3 23:28:59 UTC 2017


Public bug reported:

1) # lsb_release -rd
Description:    Ubuntu Artful Aardvark (development branch)
Release:        17.10

2) # apt-cache policy systemd
systemd:
  Installed: 234-2ubuntu10
  Candidate: 234-2ubuntu10
  Version table:
 *** 234-2ubuntu10 500
        500 http://archive.ubuntu.com/ubuntu artful/main amd64 Packages
        100 /var/lib/dpkg/status
3) /sys/class/net/br0/bridge/foward_delay value should be 100 (equivalent to 1 second)

4) /sys/class/net/br0/bridge/foward_delay value is 200 (defaults to 2
seconds)

Configured a bridge in Artful with netplan with the following config:
% cat /etc/netplan/50-cloud-init.yaml
network:
    version: 2
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: '52:54:00:12:34:00'
            set-name: eth0
        eth1:
            match:
                macaddress: '52:54:00:12:34:02'
            set-name: eth1
        eth2:
            match:
                macaddress: '52:54:00:12:34:04'
            set-name: eth2
    bridges:
        br0:
            addresses:
            - 192.168.14.2/24
            interfaces:
            - eth1
            - eth2
            parameters:
                ageing-time: 250
                forward-delay: 1
                hello-time: 1
                max-age: 10
                path-cost:
                    eth1: 50
                    eth2: 75
                priority: 22

This generates some runtime network configs:
# cat 10-netplan-br0.netdev 
[NetDev]
Name=br0
Kind=bridge

[Bridge]
AgeingTimeSec=250
Priority=22
ForwardDelaySec=1
HelloTimeSec=1
MaxAgeSec=10
STP=true


Note that the value (ForwardDelaySec=1) matches the config yaml;  however the system value from sysfs is not in seconds, but some other factor:

# cat /sys/class/net/br0/bridge/forward_delay 
200

And brctl confirms the value in seconds matches the kernel setting
# brctl showstp br0
br0
 bridge id              0016.ea251c32d10e
 designated root        0016.ea251c32d10e
 root port                 0                    path cost                  0
 max age                  10.00                 bridge max age            10.00
 hello time                1.00                 bridge hello time          1.00
 forward delay             2.00                 bridge forward delay       2.00
 ageing time             250.00
 hello timer               0.22                 tcn timer                  0.00
 topology change timer     0.00                 gc timer                 118.63
 flags  

I *think* networkd has an update unit conversion bug, looking at the upstream
commit for bridge params support:

https://github.com/systemd/systemd/pull/1459

Notice the unit is in Seconds, ForwardDelaySec=288
which results in a 2.88 second setting.

I suspect that our setting of ForwardDelaySec=1 was *too* small
and there is no warning (or it got rounded out in a conversion)

Hrm, I set ForwardDelaySec=150  an I get a sysfs value of 3000, and a
brctl value of 30

ForwardDelaySec=
ForwardDelaySec specifies the number of seconds spent in each of the Listening and Learning states before the Forwarding state is entered.

That's the manpage entry for netdev devices in systemd.  Is it really
being doubled?

ProblemType: Bug
DistroRelease: Ubuntu 17.10
Package: systemd 234-2ubuntu10
ProcVersionSignature: Ubuntu 4.13.0-12.13-generic 4.13.3
Uname: Linux 4.13.0-12-generic x86_64
ApportVersion: 2.20.7-0ubuntu1
Architecture: amd64
Date: Tue Oct  3 23:06:01 2017
Lsusb: Error: command ['lsusb'] failed with exit code 1:
MachineType: QEMU Standard PC (i440FX + PIIX, 1996)
ProcEnviron:
 TERM=vt220
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=C.UTF-8
 SHELL=/bin/bash
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.13.0-12-generic root=UUID=05f7684f-c8ff-42d7-aaf4-c49045b1859a ro console=ttyS0
SourcePackage: systemd
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 04/01/2014
dmi.bios.vendor: SeaBIOS
dmi.bios.version: 1.10.2-1ubuntu1
dmi.chassis.type: 1
dmi.chassis.vendor: QEMU
dmi.chassis.version: pc-i440fx-artful
dmi.modalias: dmi:bvnSeaBIOS:bvr1.10.2-1ubuntu1:bd04/01/2014:svnQEMU:pnStandardPC(i440FX+PIIX,1996):pvrpc-i440fx-artful:cvnQEMU:ct1:cvrpc-i440fx-artful:
dmi.product.name: Standard PC (i440FX + PIIX, 1996)
dmi.product.version: pc-i440fx-artful
dmi.sys.vendor: QEMU

** Affects: systemd (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug artful curtin uec-images

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1721156

Title:
  networkd does not set bridge forward delay value correctly

Status in systemd package in Ubuntu:
  New

Bug description:
  1) # lsb_release -rd
  Description:    Ubuntu Artful Aardvark (development branch)
  Release:        17.10

  2) # apt-cache policy systemd
  systemd:
    Installed: 234-2ubuntu10
    Candidate: 234-2ubuntu10
    Version table:
   *** 234-2ubuntu10 500
          500 http://archive.ubuntu.com/ubuntu artful/main amd64 Packages
          100 /var/lib/dpkg/status
  3) /sys/class/net/br0/bridge/foward_delay value should be 100 (equivalent to 1 second)

  4) /sys/class/net/br0/bridge/foward_delay value is 200 (defaults to 2
  seconds)

  Configured a bridge in Artful with netplan with the following config:
  % cat /etc/netplan/50-cloud-init.yaml
  network:
      version: 2
      ethernets:
          eth0:
              dhcp4: true
              match:
                  macaddress: '52:54:00:12:34:00'
              set-name: eth0
          eth1:
              match:
                  macaddress: '52:54:00:12:34:02'
              set-name: eth1
          eth2:
              match:
                  macaddress: '52:54:00:12:34:04'
              set-name: eth2
      bridges:
          br0:
              addresses:
              - 192.168.14.2/24
              interfaces:
              - eth1
              - eth2
              parameters:
                  ageing-time: 250
                  forward-delay: 1
                  hello-time: 1
                  max-age: 10
                  path-cost:
                      eth1: 50
                      eth2: 75
                  priority: 22

  This generates some runtime network configs:
  # cat 10-netplan-br0.netdev 
  [NetDev]
  Name=br0
  Kind=bridge

  [Bridge]
  AgeingTimeSec=250
  Priority=22
  ForwardDelaySec=1
  HelloTimeSec=1
  MaxAgeSec=10
  STP=true

  
  Note that the value (ForwardDelaySec=1) matches the config yaml;  however the system value from sysfs is not in seconds, but some other factor:

  # cat /sys/class/net/br0/bridge/forward_delay 
  200

  And brctl confirms the value in seconds matches the kernel setting
  # brctl showstp br0
  br0
   bridge id              0016.ea251c32d10e
   designated root        0016.ea251c32d10e
   root port                 0                    path cost                  0
   max age                  10.00                 bridge max age            10.00
   hello time                1.00                 bridge hello time          1.00
   forward delay             2.00                 bridge forward delay       2.00
   ageing time             250.00
   hello timer               0.22                 tcn timer                  0.00
   topology change timer     0.00                 gc timer                 118.63
   flags  

  I *think* networkd has an update unit conversion bug, looking at the upstream
  commit for bridge params support:

  https://github.com/systemd/systemd/pull/1459

  Notice the unit is in Seconds, ForwardDelaySec=288
  which results in a 2.88 second setting.

  I suspect that our setting of ForwardDelaySec=1 was *too* small
  and there is no warning (or it got rounded out in a conversion)

  Hrm, I set ForwardDelaySec=150  an I get a sysfs value of 3000, and a
  brctl value of 30

  ForwardDelaySec=
  ForwardDelaySec specifies the number of seconds spent in each of the Listening and Learning states before the Forwarding state is entered.

  That's the manpage entry for netdev devices in systemd.  Is it really
  being doubled?

  ProblemType: Bug
  DistroRelease: Ubuntu 17.10
  Package: systemd 234-2ubuntu10
  ProcVersionSignature: Ubuntu 4.13.0-12.13-generic 4.13.3
  Uname: Linux 4.13.0-12-generic x86_64
  ApportVersion: 2.20.7-0ubuntu1
  Architecture: amd64
  Date: Tue Oct  3 23:06:01 2017
  Lsusb: Error: command ['lsusb'] failed with exit code 1:
  MachineType: QEMU Standard PC (i440FX + PIIX, 1996)
  ProcEnviron:
   TERM=vt220
   PATH=(custom, no user)
   XDG_RUNTIME_DIR=<set>
   LANG=C.UTF-8
   SHELL=/bin/bash
  ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.13.0-12-generic root=UUID=05f7684f-c8ff-42d7-aaf4-c49045b1859a ro console=ttyS0
  SourcePackage: systemd
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 04/01/2014
  dmi.bios.vendor: SeaBIOS
  dmi.bios.version: 1.10.2-1ubuntu1
  dmi.chassis.type: 1
  dmi.chassis.vendor: QEMU
  dmi.chassis.version: pc-i440fx-artful
  dmi.modalias: dmi:bvnSeaBIOS:bvr1.10.2-1ubuntu1:bd04/01/2014:svnQEMU:pnStandardPC(i440FX+PIIX,1996):pvrpc-i440fx-artful:cvnQEMU:ct1:cvrpc-i440fx-artful:
  dmi.product.name: Standard PC (i440FX + PIIX, 1996)
  dmi.product.version: pc-i440fx-artful
  dmi.sys.vendor: QEMU

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1721156/+subscriptions



More information about the foundations-bugs mailing list