Hi, We are using bird als a routing daemon in a meshed ethernet fabric. Bird runs on the connected hosts as well as on the network equipment to archive full layer 3 connectivity. When we upgrade the installed packages on the Hosts, the upgrade process stops bird, does upgrades and starts bird again. These behavior lead to a loss of connectivity for one up to several minutes, which make the upgrade process very disruptive. Usually, i would expect an upgrade and a restart of the daemon after the upgrade, which would keep the time in which the host is offline rather short. Following questions arise: * is this behavior intended, or is it a unintended side effect? * did you consider this type of setups, when you implemented the upgrade process this disruptive? * Can you consider to fix it, easing the upgrade process in this type of setups? In our careful evaluation, we think, using the -R parameter of dh_installinit could ease our suffering, resulting in following patch: diff -ruN bird-1.6.2.old/debian/rules bird-1.6.2/debian/rules --- bird-1.6.2.old/debian/rules 2016-09-29 20:49:00.000000000 +0200 +++ bird-1.6.2/debian/rules 2016-10-11 10:27:00.717429976 +0200 @@ -69,8 +69,8 @@ dh_strip -O--dbgsym-migration='bird-dbg (<< 1.6.0-2~), bird-bgp-dbg (<< 1.6.0-2~)' override_dh_installinit: - dh_installinit --name=bird - dh_installinit --name=bird6 + dh_installinit --name=bird -R + dh_installinit --name=bird6 -R DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0" Regards, Alexander Morlang ------ SysEleven GmbH Ohlauer Straße 43 10999 Berlin T +49 30 233 2012 0 F +49 30 616 7555 0 http://www.syseleven.de http://www.facebook.com/SysEleven Aktueller System-Status immer unter: http://www.twitter.com/syseleven Firmensitz: Berlin Registergericht: AG Berlin Charlottenburg, HRB 108571 B Geschäftsführer: Marc Korthaus, Jens Ihlenfeld
❦ 11 octobre 2016 11:03 CEST, Alexander Morlang <amorlang@syseleven.de> :
In our careful evaluation, we think, using the -R parameter of dh_installinit could ease our suffering, resulting in following patch:
diff -ruN bird-1.6.2.old/debian/rules bird-1.6.2/debian/rules --- bird-1.6.2.old/debian/rules 2016-09-29 20:49:00.000000000 +0200 +++ bird-1.6.2/debian/rules 2016-10-11 10:27:00.717429976 +0200 @@ -69,8 +69,8 @@ dh_strip -O--dbgsym-migration='bird-dbg (<< 1.6.0-2~), bird-bgp-dbg (<< 1.6.0-2~)'
override_dh_installinit: - dh_installinit --name=bird - dh_installinit --name=bird6 + dh_installinit --name=bird -R + dh_installinit --name=bird6 -R
You should report the bug against Debian since this is where the packaging is done. Your patch is likely to be accepted since this is already what is done for systemd. -- Make it right before you make it faster. - The Elements of Programming Style (Kernighan & Plauger)
On Tue, Oct 11, 2016 at 11:03:08AM +0200, Alexander Morlang wrote:
Hi,
When we upgrade the installed packages on the Hosts, the upgrade process stops bird, does upgrades and starts bird again.
Usually, i would expect an upgrade and a restart of the daemon after the upgrade, which would keep the time in which the host is offline rather short.
Following questions arise:
* is this behavior intended, or is it a unintended side effect?
* did you consider this type of setups, when you implemented the upgrade process this disruptive?
* Can you consider to fix it, easing the upgrade process in this type of setups?
Hi This behavior is mostly defined by appropriate OS distribution package tools and package configuration, not by BIRD itself. Strictly speaking, we mainly release source packages, so binary distribution packages are out of our scope (although we also release an updated versions of OS distribution binary BIRD packages). I will discuss this issue with people responsible for BIRD Debian packages to see if there is a way to make BIRD upgrades less disruptive. I don't really see that there is any significant difference between stop/upgrade/start and upgrade/restart as the time for the upgrade BIRD itself is insignificant. But perhaps there is some issue in package system that stops BIRD before upgrade of multiple packages.
In our careful evaluation, we think, using the -R parameter of dh_installinit could ease our suffering, resulting in following patch:
I do not think that this option will help in a general case. The option is supposed to be used when BGP graceful restart extensions is enabled on both sides and BIRD is recovering from graceful restart. It does not help in other cases (e.g., BGP router w/o graceful restart, OSPF router) and should not be used when GR recovery is not active (e.g., initial start, regular restart). -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
Anno domini 2016 Ondrej Zajicek scripsit:
On Tue, Oct 11, 2016 at 11:03:08AM +0200, Alexander Morlang wrote:
Hi,
This behavior is mostly defined by appropriate OS distribution package tools and package configuration, not by BIRD itself. [...] I don't really see that there is any significant difference between stop/upgrade/start and upgrade/restart as the time for the upgrade BIRD itself is insignificant. But perhaps there is some issue in package system that stops BIRD before upgrade of multiple packages.
The difference is between "stop/upgrade( lots of stuff)/start" and "upgrade( lots of stuff)/stop/start" where "lots of stuff" can take a rather long time depending what packages are update parallel to BIRD.
In our careful evaluation, we think, using the -R parameter of dh_installinit could ease our suffering, resulting in following patch:
I do not think that this option will help in a general case. The option is supposed to be used when BGP graceful restart extensions is enabled on both sides and BIRD is recovering from graceful restart. It does not help in other cases (e.g., BGP router w/o graceful restart, OSPF router) and should not be used when GR recovery is not active (e.g., initial start, regular restart).
There seems to be a misunderstanding here :) The -R is an option to dh_installinit, which has a fundamental effect on how the debian script stop/start a deamon: -R, --restart-after-upgrade Do not stop the init script until after the package upgrade has been completed. This is different than the default behavior, which stops the script in the prerm, and starts it again in the postinst. This can be useful for daemons that should not have a possibly long downtime during upgrade. But you should make sure that the daemon will not get confused by the package being upgraded while it's running before using this option. This seems to be a very good idea, indeed :) Best Max -- Fortschritt bedeutet, einen Schritt so zu machen, daß man den nächsten auch noch machen kann.
participants (4)
-
Alexander Morlang -
Maximilian Wilhelm -
Ondrej Zajicek -
Vincent Bernat