From 5bd734317c05008a66eefaa14fc98a6d533cf9ef Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Tue, 31 Jul 2018 18:40:38 +0200 Subject: [PATCH] BGP: Long-lived graceful restart The patch implements long-lived graceful restart for BGP, namely draft-uttaro-idr-bgp-persistence-03. --- doc/bird.sgml | 42 +++++++++-- nest/protocol.h | 1 + nest/route.h | 3 + nest/rt-table.c | 59 +++++++++++++++ proto/bgp/attrs.c | 55 +++++++++++++- proto/bgp/bgp.c | 172 +++++++++++++++++++++++++++++++++++++++----- proto/bgp/bgp.h | 34 ++++++++- proto/bgp/config.Y | 13 +++- proto/bgp/packets.c | 75 ++++++++++++++++++- proto/pipe/pipe.c | 6 ++ 10 files changed, 432 insertions(+), 28 deletions(-) diff --git a/doc/bird.sgml b/doc/bird.sgml index b4d9ea4e..44fef1c5 100644 --- a/doc/bird.sgml +++ b/doc/bird.sgml @@ -2220,13 +2220,16 @@ using the following configuration parameters: immediately shut down. Note that this option cannot be used with multihop BGP. Default: enabled for direct BGP, disabled otherwise. - + BGP could use BFD protocol as an advisory mechanism for neighbor liveness and failure detection. If enabled, BIRD setups a BFD session for the BGP neighbor and tracks its liveness by it. This has an advantage of an order of magnitude lower detection times in case of - failure. Note that BFD protocol also has to be configured, see - section for details. Default: disabled. + failure. When a neighbor failure is detected, the BGP session is + restarted. Optionally, it can be configured (by + section for details. Default: disabled.