BGP Implicit and Explicit Withdraw are important BGP messages. Understanding these two mechanisms not only help for understanding BGP convergence but also helps for BGP path diversity.
While I was explaining BGP Add-Path in my Instructor Led CCDE course, I used the term ‘BGP Implicit Withdraw’
Then someone asked what is ‘ BGP Explicit Withdraw’ ?
Let me define the two terms first and then let me give you two use cases , one for BGP Implicit Withdraw and another one for BGP Explicit Withdraw.
BGP Implicit withdraw is replacing the BGP path after receiving the new information such as new path attribute for the same prefix from the same BGP peer.
BGP Explicit withdraw means sending an actual withdraw message for a given prefix and signaling actual BGP path loss.
Have a look at the above picture, no need to read the text which is on the picture. I used the picture in the Unique RD per VRF per PE post, but here makes sense the use the same picture.
Let’s assume there is no MPLS in the network.
From the customer site, PE 1 and PE 2 receive the Prefix ‘ p ‘ and advertise to the RR.
We have two BGP path for the prefix on RR, PE1 and PE2.
BGP Explicit Withdraw message is sent by PE 1 or PE 2 if their path goes down towards the customer site.
BGP Implicit Withdraw is sent if any path attribute is changed by PE 1 and PE2, such as Local Pref.
Let’s have a look at another usage of Implicit Withdraw.
Let’s say PE 1 is installed first, RR sent PE1 as best path to PE3 , after some time PE2 is installed with shorter IGP cost for example. (Let’s not use Local Pref in this case)
RR, over a single IBGP session with PE3 , cannot sends both of the paths as per Original BGP RFC.
RR chooses the PE2 as the new best path, due to shorter IGP distance and sends it to PE3 , while sending BGP Implicit Withdraw for PE1 path.
When BGP Add-Path is used, RR doesn’t send Implicit Withdraw anymore and over a single IBGP session, both of the paths can be sent to PE3.
After receiving both of the paths, PE3 can have Multipath , BGP PIC and use for another reason (Optimal Routing , Oscillation Avoidance etc.)
If anything is not clear, let me know in the comment section down below.