==============================
== What I have learnt today ==
==============================

Some interesting BGP information

After watching Petr’s video on deploying BGP in the data center, after some googling, I have summarized some interesting configuration and use case about BGP.

  1. BGP fast fallover That is, kill the BGP session immediately when the link is down. Suitable for peering over point to point links.

  2. Multipath relax It is about traffic load-balancing. This feature is required for ECMP (equal cost multipath).

  3. Allowas-in This feature accepts different eBGP updates with the same AS.

  4. bgp enforce first as. To accept, or not to accept (the first AS number). This is an interesting one. The configuration answers the question, “Should you accept eBGP updates from your neighbor when his ASN is not the first one in the AS_PATH?”. Lindsay Hill’s blog post has an interesting insights. The juniper’s default is here I might come back to this later.

The last two points, 3 and 4, somehow violates the basic rules of BGP loop prevention. Yet they are there with valid use cases. As time goes on, what we have learned might or might not be valid. For BGP, there are new use cases, such as Multi-protocol BGP (M-BGP), EVPN (Ethernet VPN), the rise of IXP, deployment in the Data Centers, etc. that might need to mindfully relax some of the constrains originally conceived.

Probably the same is happening in C++, so there might be features come and go. From this perspective, BGP and C++ have some thing in common.

For BGP, you can upgrade your gears, deployment and configurations easily. The old routers will be doorstoppers. Most of the entities are physical brick and mortar. The upgrade task is relatively easy to manage.

For C++ code, however, it is more involving. Changing from one C++ standard to another might have some unexpected results, as C++ is a quirky language. Probably that is why some of the production code bases are based on very old C++ standards.