<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="text-align:left; direction:ltr;" bgcolor="#ffffff" text="#2e3436" link="#1b6acb" vlink="#2e3436">
<span style="font-family: monospace;">Hi Folks,</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">I'm trying to optimise our boot process and have started to look at</span><br style="font-family: monospace;">
<span style="font-family: monospace;">the time it takes for the network to come up (a single interface to be</span><br style="font-family: monospace;">
<span style="font-family: monospace;">routable) when using systemd-networkd:</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/# systemd-analyze critical-chain network-online.target --no-</span><br style="font-family: monospace;">
<span style="font-family: monospace;">pager</span><br style="font-family: monospace;">
<span style="font-family: monospace;">The time after the unit is active or started is printed after the "@"</span><br style="font-family: monospace;">
<span style="font-family: monospace;">character.</span><br style="font-family: monospace;">
<span style="font-family: monospace;">The time the unit takes to start is printed after the "+" character.</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">network-online.target @4.144s</span><br style="font-family: monospace;">
<span style="font-family: monospace;">└─systemd-networkd-wait-online.service @615ms +3.527s</span><br style="font-family: monospace;">
<span style="font-family: monospace;">  └─systemd-networkd.service @582ms +30ms</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    └─systemd-tmpfiles-setup.service @315ms +63ms</span><br style="font-family: monospace;">
<span style="font-family: monospace;">      └─local-fs.target @314ms</span><br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/#</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">So, here systemd-networkd-wait-online.service seems to run for 3.5s -</span><br style="font-family: monospace;">
<span style="font-family: monospace;">I had initially though this is due to the RTT for DHCP but in doing a</span><br style="font-family: monospace;">
<span style="font-family: monospace;">packet capture for DHCP this isn't the case:</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">me@DHCP-SERVER:~$ sudo tshark -i eth0 -f "(ether src 28:16:a8:fd:53:77</span><br style="font-family: monospace;">
<font color="#737373" style="font-family: monospace;">|| ether dst 28:16:a8:fd:53:77) && (port 67 || port 68)"</font><br style="font-family: monospace;">
<span style="font-family: monospace;">Running as user "root" and group "root". This could be dangerous.</span><br style="font-family: monospace;">
<span style="font-family: monospace;">Capturing on 'eth0'</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    1 0.000000000      0.0.0.0 → 255.255.255.255 DHCP 333 DHCP</span><br style="font-family: monospace;">
<span style="font-family: monospace;">Discover - Transaction ID 0x5c9e3cd0</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    2 0.000157300  192.168.3.3 → 192.168.3.16 DHCP 373 DHCP Offer    -</span><br style="font-family: monospace;">
<span style="font-family: monospace;">Transaction ID 0x5c9e3cd0</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    3 0.000695601      0.0.0.0 → 255.255.255.255 DHCP 345 DHCP Request</span><br style="font-family: monospace;">
<span style="font-family: monospace;"> - Transaction ID 0x5c9e3cd0</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    4 0.000771901  192.168.3.3 → 192.168.3.16 DHCP 373 DHCP ACK      -</span><br style="font-family: monospace;">
<span style="font-family: monospace;">Transaction ID 0x5c9e3cd0</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">So, that's 700us from discover to ack.</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">We have 3 network interfaces, only enP8p1s0f0np0 is of use to us:</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/# networkctl status -a --no-pager</span><br style="font-family: monospace;">
<span style="font-family: monospace;">● 1: lo</span><br style="font-family: monospace;">
<span style="font-family: monospace;">       Link File: /usr/lib/systemd/network/99-default.link</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    Network File: n/a</span><br style="font-family: monospace;">
<span style="font-family: monospace;">            Type: loopback</span><br style="font-family: monospace;">
<span style="font-family: monospace;">           State: carrier (unmanaged)</span><br style="font-family: monospace;">
<span style="font-family: monospace;">         Address: 127.0.0.1</span><br style="font-family: monospace;">
<span style="font-family: monospace;">                  ::1</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">● 2: enP8p1s0f0np0</span><br style="font-family: monospace;">
<span style="font-family: monospace;">       Link File: /usr/lib/systemd/network/99-default.link</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    Network File: /etc/systemd/network/wired.network</span><br style="font-family: monospace;">
<span style="font-family: monospace;">            Type: ether</span><br style="font-family: monospace;">
<span style="font-family: monospace;">           State: routable (configured)</span><br style="font-family: monospace;">
<span style="font-family: monospace;">            Path: platform-60400000.pcie-pci-0008:01:00.0</span><br style="font-family: monospace;">
<span style="font-family: monospace;">          Driver: bnxt_en</span><br style="font-family: monospace;">
<span style="font-family: monospace;">      HW Address: 28:16:a8:fd:53:77</span><br style="font-family: monospace;">
<span style="font-family: monospace;">         Address: 192.168.3.16</span><br style="font-family: monospace;">
<span style="font-family: monospace;">                  2001:db8:0:1:2a16:a8ff:fefd:5377</span><br style="font-family: monospace;">
<span style="font-family: monospace;">                  fe80::2a16:a8ff:fefd:5377</span><br style="font-family: monospace;">
<span style="font-family: monospace;">         Gateway: 192.168.3.1</span><br style="font-family: monospace;">
<span style="font-family: monospace;">                  fe80::7683:efff:fed4:935</span><br style="font-family: monospace;">
<span style="font-family: monospace;">             DNS: 10.50.10.50</span><br style="font-family: monospace;">
<span style="font-family: monospace;">                  10.50.50.50</span><br style="font-family: monospace;">
<span style="font-family: monospace;">             NTP: 10.222.184.12</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    Connected To: localhost on port Ethernet31/1</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">● 3: enP8p1s0f1np0</span><br style="font-family: monospace;">
<span style="font-family: monospace;">       Link File: /usr/lib/systemd/network/99-default.link</span><br style="font-family: monospace;">
<span style="font-family: monospace;">    Network File: n/a</span><br style="font-family: monospace;">
<span style="font-family: monospace;">            Type: ether</span><br style="font-family: monospace;">
<span style="font-family: monospace;">           State: off (unmanaged)</span><br style="font-family: monospace;">
<span style="font-family: monospace;">            Path: platform-60400000.pcie-pci-0008:01:00.1</span><br style="font-family: monospace;">
<span style="font-family: monospace;">          Driver: bnxt_en</span><br style="font-family: monospace;">
<span style="font-family: monospace;">      HW Address: 00:10:18:ad:05:01</span><br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/#</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">Networking configuration looks like this:</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/# cat /etc/systemd/network/wired.network</span><br style="font-family: monospace;">
<span style="font-family: monospace;">[Match]</span><br style="font-family: monospace;">
<span style="font-family: monospace;">Name=eth* en*</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">[Network]</span><br style="font-family: monospace;">
<span style="font-family: monospace;">DHCP=v4</span><br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/# cat /etc/systemd/network/</span><br style="font-family: monospace;">
<span style="font-family: monospace;">blacklist_interfaces.network  wired.network</span><br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/# cat /etc/systemd/network/blacklist_interfaces.network</span><br style="font-family: monospace;">
<span style="font-family: monospace;">[Match]</span><br style="font-family: monospace;">
<span style="font-family: monospace;">Name=enP8p1s0f1*</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">[Network]</span><br style="font-family: monospace;">
<span style="font-family: monospace;">DHCP=no</span><br style="font-family: monospace;">
<span style="font-family: monospace;">LinkLocalAddressing=no</span><br style="font-family: monospace;">
<span style="font-family: monospace;">IPv6AcceptRA=false</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">[Link]</span><br style="font-family: monospace;">
<span style="font-family: monospace;">RequiredForOnline=no</span><br style="font-family: monospace;">
<span style="font-family: monospace;">Unmanaged=yes</span><br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/#</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">Our version is:</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/# systemctl --version</span><br style="font-family: monospace;">
<span style="font-family: monospace;">systemd 239</span><br style="font-family: monospace;">
<span style="font-family: monospace;">+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP</span><br style="font-family: monospace;">
<span style="font-family: monospace;">+LIBCRYPTSETUP -GCRYPT -GNUTLS -ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS</span><br style="font-family: monospace;">
<span style="font-family: monospace;">+KMOD -IDN2 -IDN -PCRE2 default-hierarchy=unified</span><br style="font-family: monospace;">
<span style="font-family: monospace;">root@HOST:/#</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">I've had a look at</span><br style="font-family: monospace;">
<a href="https://github.com/systemd/systemd/blob/v239/src/network/wait-online/wait-online.c" class="evo-awrap" style="font-family: monospace;">https://github.com/systemd/systemd/blob/v239/src/network/wait-online/wait-online.c</a><br style="font-family: monospace;">
<span style="font-family: monospace;">and it really doesn't do much other than wait for the operational</span><br style="font-family: monospace;">
<span style="font-family: monospace;">state to be "routable".</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">Can anyone offer any suggestions for where I should look to try to</span><br style="font-family: monospace;">
<span style="font-family: monospace;">speed things up here?</span><br style="font-family: monospace;">
<br style="font-family: monospace;">
<span style="font-family: monospace;">Thanks!</span><br style="font-family: monospace;">
<span style="font-family: monospace;">Peter.</span>
</body>
</html>