diff options
author | radhika <radhika@cumulusnetworks.com> | 2016-04-22 00:39:38 +0200 |
---|---|---|
committer | radhika <radhika@cumulusnetworks.com> | 2016-04-22 00:39:38 +0200 |
commit | 986aa00f94cdfcecbb806d13e9594017d0a02b82 (patch) | |
tree | 7bb78d09759d99a0677a7f0452158e13efc4f798 /lib | |
parent | quagga-reload broken for 'neighbor swpX interface peer-group FOO' (diff) | |
download | frr-986aa00f94cdfcecbb806d13e9594017d0a02b82.tar.xz frr-986aa00f94cdfcecbb806d13e9594017d0a02b82.zip |
Addition on hidden command "bfd multihop/singlehop" and "ptm-enable" per interface command
CM-10435
Issue: IBGP BFD sessions are created as multi-hop even though peer is single-hop away. This is causing an interop issue with ICOS.
Root Cause: By design all IBGP peers are registered with BFD as multi-hop.
Fix:
• Changed the default behavior of always treating IBGP BFD sessions as mult-hop. shared_network variable is used to determine whether the IBGP peer is single hop or multi-hop away. The logic for determining whether EBGP peer is single hop or multi-hop has not been changed.
• Since the default behavior has been changed, it will cause interop issues between 2.5 and 3.0 IBGP BFD sessions. A new hidden command “bfd multihop/singlehop” has been introduced to overcome the interop issues.
dell-s6000-10(config-router)# neighbor 30.0.2.6 bfd
<2-255> Detect Multiplier
<cr>
dell-s6000-10(config-router)# neighbor 30.0.2.6 bfd multihop
dell-s6000-10(config-router)# no neighbor 30.0.2.6 bfd multihop
dell-s6000-10(config-router)#
dell-s6000-10(config-router)# neighbor 30.0.2.6 bfd multihop
dell-s6000-10(config-router)# do show running-config
!
router bgp 100
neighbor igroup peer-group
neighbor igroup bfd 5 500 500
neighbor igroup bfd multihop
neighbor 30.0.2.2 remote-as 100
neighbor 30.0.2.2 peer-group igroup
neighbor 3101:abc:bcad::2 remote-as 100
neighbor 3101:abc:bcad::2 peer-group igroup
neighbor 30.0.2.6 remote-as 200
neighbor 30.0.2.6 bfd multihop
neighbor 3102:abc:bcad::6 remote-as 200
neighbor 3102:abc:bcad::6 bfd
neighbor 3102:abc:bcad::6 ebgp-multihop 255
!
CM-10260
Issue: “Unable to connect to socket” message keeps getting logged when ptmd process doesn’t exist.
Root Cause: BFD clients (bgpd, ospfd and ospf6d) during initialization try to register with BFD/PTM by default. This results in continuous logging If PTM does not exist since there is no max on number of retries.
Fix:
• Stop the retries to connect to PTM after max reconnect timer of 5 mins is reached.
• Added zebra debug event wrapper to message logging to prevent it from showing by default.
CM-4541
Issue: Addition of a new command "ptm-enable" or "no ptm-enable" per interface to enable/disable PTM link status checks for an interface.
Fix: Currently there is only one ptm-enable global command that enables/disables PTM status updates for all interfaces. This new command will give the handle to individually stop interface from reacting on the PTM status updates.
• by default interface uses the ptm-enable global configuration
• "no ptm-enable" on an interface will disable PTM status updates from taking affect for that interface. This can bring the interface up if it was brought down due to PTM status update.
• "ptm-enable" on an interface will cause the interface to fallback to the global ptm-enable configuration value and will bring the interface up or down based on the last stored PTM status update if global ptm is enabled.
Ticket: CM-10435, CM-10260 and CM-4541
Signed-off-by: Radhika Mahankali
Reviewed-by: Donald Sharp, Kanna Rajagopal
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bfd.c | 1 | ||||
-rw-r--r-- | lib/bfd.h | 21 |
2 files changed, 16 insertions, 6 deletions
@@ -45,6 +45,7 @@ bfd_info_create(void) assert(bfd_info); bfd_info->status = BFD_STATUS_UNKNOWN; + bfd_info->type = BFD_TYPE_NOT_CONFIGURED; bfd_info->last_update = 0; return bfd_info; } @@ -29,6 +29,7 @@ #define BFD_CMD_DETECT_MULT_RANGE "<2-255> " #define BFD_CMD_MIN_RX_RANGE "<50-60000> " #define BFD_CMD_MIN_TX_RANGE "<50-60000>" +#define BFD_CMD_TYPE "(multihop|singlehop)" #define BFD_DEF_MIN_RX 300 #define BFD_MIN_MIN_RX 50 @@ -42,19 +43,27 @@ #define BFD_FLAG_PARAM_CFG (1 << 0) /* parameters have been configured */ #define BFD_FLAG_BFD_REG (1 << 1) /* Peer registered with BFD */ +#define BFD_FLAG_BFD_TYPE_MULTIHOP (1 << 2) /* Peer registered with BFD as multihop */ #define BFD_STATUS_UNKNOWN (1 << 0) /* BFD session status never received */ #define BFD_STATUS_DOWN (1 << 1) /* BFD session status is down */ #define BFD_STATUS_UP (1 << 2) /* BFD session status is up */ +enum bfd_sess_type { + BFD_TYPE_NOT_CONFIGURED, + BFD_TYPE_SINGLEHOP, + BFD_TYPE_MULTIHOP +}; + struct bfd_info { - u_int16_t flags; - u_int8_t detect_mult; - u_int32_t desired_min_tx; - u_int32_t required_min_rx; - time_t last_update; - u_int8_t status; + u_int16_t flags; + u_int8_t detect_mult; + u_int32_t desired_min_tx; + u_int32_t required_min_rx; + time_t last_update; + u_int8_t status; + enum bfd_sess_type type; }; extern struct bfd_info * |