04-28-2013 02:35 PM - edited 03-01-2019 04:54 PM
Introduction:
BGP Fast-external-fallover command terminates external BGP sessions of any directly adjacent peer if the link used to reach the peer goes down; without waiting for the hold-down timer to expire.
Although this feature improves the BGP conversion time, it may lead to great instability in your BGP table due to a flapping interface. By default this feature is enabled in Cisco IOS.
In the following topology R1 & R2 configured with an EBGP session between them as follows:
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int fa1/0
R1(config-if)#ip add 10.1.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#router bgp 65001
R1(config-router)#neighbor 10.1.1.2 remote-as 65002
R1(config-router)#exit
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#int fa1/0
R2(config-if)#ip add 10.1.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#router bgp 65002
R2(config-router)#neighbor 10.1.1.1 remote-as 65001
R2(config-router)#exit
On Both routers you can see BGP neighborship is up
R1#sh ip bgp summary | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.2 4 65002 4 4 1 0 0 00:00:38 0
R2#sh ip bgp sum | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.1 4 65001 7 7 1 0 0 00:02:47 0
When you shut down the interface connected between R1 & R2; you can see R1 immediately resets the peering session without waiting for the hold-down time to expire as shown in the debug output below:
R1#debug ip bgp 10.1.1.2
BGP debugging is on for neighbor 10.1.1.2 for address family: IPv4 Unicast
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int fa1/0
R1(config-if)#sh
R1(config-if)#
*Apr 27 20:03:13.455: BGP: 10.1.1.2 resetting - interface FastEthernet1/0 down
*Apr 27 20:03:13.455: BGP: ses global 10.1.1.2 (0x6808A92C:1) Reset (Interface flap).
*Apr 27 20:03:13.471: BGP: nbr_topo global 10.1.1.2 IPv4 Unicast:base (0x6808A92C:1) NSF delete stale NSF not active
*Apr 27 20:03:13.471: BGP: nbr_topo global 10.1.1.2 IPv4 Unicast:base (0x6808A92C:1) NSF no stale paths state is NSF not active
*Apr 27 20:03:13.475: BGP: nbr_topo global 10.1.1.2 IPv4 Unicast:base (0x6808A92C:1) Resetting ALL counters.
*Apr 27 20:03:13.475: BGP: 10.1.1.2 closing
*Apr 27 20:03:13.479: BGP: nbr_topo global 10.1.1.2 IPv4 Unicast:base (0x6808A92C:1) Resetting ALL counters.
*Apr 27 20:03:13.479: BGP: 10.1.1.2 went from Established to Idle
*Apr 27 20:03:13.479: %BGP-5-ADJCHANGE: neighbor 10.1.1.2 Down Interface flap
*Apr 27 20:03:13.483: %BGP_SESSION-5-ADJCHANGE: neighbor 10.1.1.2 IPv4 Unicast topology base removed from session Interface flap
R1#sh ip bgp summary | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.2 4 65002 0 0 1 0 0 00:00:43 Idle
From the above output you can see neighbors go down immediately
I have no shut the interface and again we have bgp neighborship. Now let’s disable “bgp fast-external-fallover” command, shutdown the interface and see what will happen?
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config-if)#router bgp 65001
R1(config-router)#no bgp fast-external-fallover
R1(config)#int fa1/0
R1(config-if)#sh
R1(config-if)#^Z
R1#
*Apr 27 20:55:29.603: %SYS-5-CONFIG_I: Configured from console by console
*Apr 27 20:55:30.487: %LINK-5-CHANGED: Interface FastEthernet1/0, changed state to administratively down
R1#sh ip bgp summary | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.2 4 65002 7 7 1 0 0 00:03:11 0
R1#sh ip bgp summary | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.2 4 65002 7 7 1 0 0 00:03:35 0
*Apr 27 20:57:22.215: BGP: topo global:IPv4 Unicast:base Scanning routing tables
*Apr 27 20:57:22.219: BGP: topo global:IPv4 Multicast:base Scanning routing tables
R1#sh ip bgp summary | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.2 4 65002 7 9 1 0 0 00:05:09 0
R1#sh ip bgp summary | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.2 4 65002 7 9 1 0 0 00:05:17 0
R1#sh ip bgp summary | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.2 4 65002 7 10 1 0 0 00:05:33 0
R1#sh ip bgp summary | beg Nei
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.1.2 4 65002 0 0 1 0 0 00:00:00 Idle
R1#
*Apr 27 20:58:12.347: BGP: 10.1.1.2 connection timed out 180172ms (last update) 180000ms (hold time)
*Apr 27 20:58:12.347: BGP: 10.1.1.2 went from Established to Closing
*Apr 27 20:58:12.351: %BGP-5-ADJCHANGE: neighbor 10.1.1.2 Down BGP Notification sent
*Apr 27 20:58:12.351: %BGP-3-NOTIFICATION: sent to neighbor 10.1.1.2 4/0 (hold time expired) 0 bytes
*Apr 27 20:58:12.351: BGP: ses global 10.1.1.2 (0x6816B4EC:1) Send NOTIFICATION 4/0 (hold time expired) 0 bytes
*Apr 27 20:58:12.359: BGP: 10.1.1.2 local error close after sending NOTIFICATION
R1#u all
All possible debugging has been turned off
R1#
R1#sh ip bgp nei 10.1.1.2 | in hold
Last read 00:00:06, last write 00:00:07, hold time is 180, keepalive interval is 60 seconds
minRTT: 64 ms, maxRTT: 300 ms, ACK hold: 200 ms
From the above output you can see that after shutting the interface connected between R1 & R2 down the session remains up until the hold-down timer expires.
BGP fast external fallover can also be configured on a per-interface basis using the "ip bgp fast-external-fallover" interface configuration command.
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int fa0/0
R1(config-if)#ip bgp
R1(config-if)#ip bgp fa
R1(config-if)#ip bgp fast-external-fallover ?
deny dis-allow fast fallover
permit allow fast fallover
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: