From: Patrick Williams <patrick@stwcx.xyz>
To: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
Cc: Jeremy Kerr <jk@codeconstruct.com.au>,
OpenBMC Maillist <openbmc@lists.ozlabs.org>,
Lei Yu <yulei.sh@bytedance.com>,
Johnathan Mantey <johnathanx.mantey@intel.com>
Subject: Re: Checking for network online
Date: Wed, 23 Feb 2022 12:55:59 -0600 [thread overview]
Message-ID: <YhaDP7L8z9NhRwyk@heinlein> (raw)
In-Reply-To: <112c8819-24bc-2a24-45a3-9c919088f43a@linux.intel.com>
[-- Attachment #1: Type: text/plain, Size: 6143 bytes --]
On Thu, Feb 24, 2022 at 01:44:18AM +0800, Jiaqing Zhao wrote:
> On 2022-02-23 21:48, Patrick Williams wrote:
> > On Wed, Feb 23, 2022 at 10:09:19AM +0800, Jiaqing Zhao wrote:
> >> I think a solution is to set RequiredForOnline=no (https://www.freedesktop.org/software/systemd/man/systemd.network.html#RequiredForOnline=) in all network interface config. This option skips the interface when running systemd-networkd-wait-online.service. Canonical netplan (used in ubuntu server) also uses this option to skip the online check for given interface (https://github.com/canonical/netplan/blob/main/src/networkd.c#L636-L639).
> >>
> >> I'll submit a patch to phosphor-networkd later.
> >
> > I really don't think this is appropriate for all systems. Services have
> > dependencies on network-online.target for a reason. If the side-effect of
> > having the BMC network cable unplugged is that the host doesn't boot, that might
> > be entirely reasonable behavior in some environments.
> >
> > We use rsyslog as the mechanism to offload our BMC logging data to an
> > aggregation point. When you have a very large scale deployment, it is actually
> > better for the system to not come online than for us to lose out on that data,
> > since we have spare capacity to take its place.
>
> My understanding is that in OpenBMC, the propose to use rsyslog is to format the Redfish and IPMI SEL logs from system journal. The "r" of rsyslogd is not used in most cases.
I might have left some ambiguity in 'we' in this context. I meant 'the
deployments I am working on'. I believe at least one other company leverages
this as well.
> I think the "network not available" can be handled same as "server misconfigured" in rsyslogd, as in both cases it fails to connect to the server, and may exit or print some error messages? (not tried yet)
That is probably true, but it means that I can't offload any data about the
system in the meantime. Like I said, I'd rather leave the system out of my
deployment if it is degraded.
>
> Jonathan mentions that the 120s wait blocks multi-user.target in his initial email. Considering that there is no BMC serial port in most production hardware, when BMC has no network connection, the only way to interact with BMC is to use IPMI in host.
Your assertion "no BMC serial port in most production hardware" might be true
globally speaking. It isn't necessarily true for any particular deployment.
With the 120s wait time, is rsyslog actually running after that? Or is it
failed? I guess since it has a Wants and not a Requires on network-online,
it'll still start up after the 120s timeout of systemd-networkd-wait-online.
My understanding of systemd-networkd's defaults here is that it waits for DHCP
in order for network-online.target to pass. You can have the IPv6-LL address
configured still, which can allow remote access, even if the IPv6-DHCP address
is not assigned.
> However, IPMI services are started in multi-user.target, if BMC infinitely waits network online, there would be no way to debug the issue.
Sure, but the BMC doesn't wait forever, does it? It just waits 120s.
I'm not suggesting this isn't the right solution for your systems, or even that
it might not be the right solution for most systems, but I don't think it is the
right solution for _all_ systems so we need to ensure it can be opt-out.
>
> > Note that the Canonical netplan only applies this option if the configuration
> > indicates that the interface is optional, which is entirely appropriate. The
> > way you wrote it could have been interpreted that they set this on *every*
> > interface, which is what it seems like you're proposing to do to
> > phosphor-networkd
> >
> > If this is desired behavior for someone, can't you supply a wildcard .network
> > file that adds this option, rather than modifying phosphor-networkd to manually
> > add it to each network interface that it is managing?
>
> Maybe we can add a similar DBus property like how netplan does? Reading/writing systemd-networkd config files is feasible in phosphor-networkd. Default value can be assigned via build option.
I'm not sure if it belongs as a DBus property or not. I'd have to see what
you're proposing and think about it. I think this is a system design constraint
and not really configurable by users (hence why exposing a DBus property might
not make sense) but maybe I'm wrong on this.
> > I believe some designs use a USB network device to connect two internal pieces
> > of the system and those interfaces are not necessarily managed by
> > phosphor-networkd (interfaces that, for example connect BMC-to-BMC or
> > BMC-to-Host). While it is obviously up to the system designer to work through
> > this bug, by applying this configuration as you proposed you are causing
> > unusual default behavior in that networkd is going to start waiting for these
> > internal connections to come online instead of the external interface.
>
> I think this is a extremely rare case, internal interfaces should be configurable. For example, host OS can change the IP of its BMC-Host virtual interface, BMC should also be able to change its, and for BMC-to-BMC interfaces, it is impossible to assign a fixed LAN IP without conflicts in manufacturing.
I don't follow your concern here. We can (and do) easily assign a static IP
address for the BMC-to-BMC interfaces based on position information fed into the
BMC via GPIO signals.
> The easiest way to configure it is to utilize the phosphor-networkd.
>
> Even it is not managed by phosphor-networkd, keeping default RequiredForOnline=yes will cause the 120s wait on BMC boot. Developers can simply search it and find out the solution. I remember it will show a timer with message on BMC serial console, that's how I found I should set the "optional" on my ubuntu server.
Agreed. Someone _can_ find it and debug it. It is to me not an obvious or easy
thing to work out though because automated "network down" test cases are not
often done in my experience.
--
Patrick Williams
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2022-02-23 18:56 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-17 22:54 Checking for network online Johnathan Mantey
2022-02-18 0:11 ` Jeremy Kerr
2022-02-18 2:29 ` Lei Yu
2022-02-18 16:11 ` Johnathan Mantey
2022-02-23 2:09 ` Jiaqing Zhao
2022-02-23 13:48 ` Patrick Williams
2022-02-23 17:44 ` Jiaqing Zhao
2022-02-23 18:36 ` Bills, Jason M
2022-02-23 18:58 ` Patrick Williams
2022-02-23 18:55 ` Patrick Williams [this message]
2022-02-23 20:04 ` Johnathan Mantey
2022-02-24 20:09 ` Patrick Williams
2022-03-02 6:15 ` Jiaqing Zhao
2022-03-01 19:56 ` Milton Miller II
2022-02-18 19:04 ` Doman, Jonathan
2022-02-18 19:39 ` Johnathan Mantey
2022-02-23 13:58 ` Patrick Williams
2022-03-02 6:24 ` Ratan Gupta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YhaDP7L8z9NhRwyk@heinlein \
--to=patrick@stwcx.xyz \
--cc=jiaqing.zhao@linux.intel.com \
--cc=jk@codeconstruct.com.au \
--cc=johnathanx.mantey@intel.com \
--cc=openbmc@lists.ozlabs.org \
--cc=yulei.sh@bytedance.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.