❦ 2 décembre 2016 17:11 +0100, Ondrej Zajicek <santiago@crfreenet.org> :
There are three different cases:
1) regular (administartive) shutdown/restart 2) planned graceful restart (e.g. software version update) 3) unplanned graceful restart (e.g. software crash and respawn)
Regular shutdown command does (1), so it is expected to see regular BGP session shutdown. Case (3) should work without much problems. But there is no explicit support for case (2), you have to use kill -9 as we are missing some command that explicitly activates graceful restart.
The second problem I run into is when using BFD. If I kill -9 bird, BFD will quickly detects the problem and shutdown the BGP session. It will not be considered a graceful restart either.
We should have better handling of C-bit in BFD (for example, we have the same behavior regardless of neighbor's C-bit value). But still there is a fundamental limitation of having BFD in control plane or even in the same process.
There is one potential solution - for case (2), we could explicitly shutdown BFD sessions when graceful restart is requested. As graceful restart is just an avisory mechanism, BGP should survive shutdown of BFD session, then regular BGP graceful restart should work.
It seems easy enough to do. I may have a look at this point since it's my main interest. I don't expect things to crash and can live with not having a graceful restart in this case. Would it be better to enable graceful signal with a signal or through the socket? -- The human race has one really effective weapon, and that is laughter. -- Mark Twain