BGP Address-Families
The BGP, as you surely know, has a multi-protocol capability - in a
single session, it is capable of carrying information about diverse
routed protocols (IPv4 Unicast, IPv4 Multicast, IPv6 Unicast, IPv6
Multicast, VPNv4, CLNP), in BGP's parlance called "address families".
With BGP being a true multiprotocol routing protocol, however, you need
some means to tell BGP which address families should be exchanged with a
particular neighbor. We are accustomed to the fact that if we define an
IPv4 neighbor, we are planning to exchange IPv4 routes with that
neighbor - but why should that actually be a rule? Why should we make
hasty assumptions about the address family just because the address of
the neighbor is from a particular family itself?
This is the point behind diverse address-family commands.
Defining a neighbor under a particular address family means that we
want to exchange routes from the particular address family with that
neighbor. Not having a neighbor listed under a particular address family
means that we are not planning to exchange information from that
address family with that neighbor.
Now, the address-family ipv4
declares neighbors with whom we want to exchange normal IPv4 unicast
routes. This may be surprising because to exchange IPv4 routes with a
neighbor, it is sufficient to simply define that neighbor by its
address. The fact is that for backward compatibility with older BGP
versions that have not been multiprotocol-capable, the BGP implicitly
assigns all defined neighbors to an invisible address-family ipv4 section. In other words, as soon as you define a neighbor, it is automatically being added to an invisible address-family ipv4 section so that you don't have to do it manually.
You can change it, however. First of all, if you enter the BGP configuration and issue the command bgp upgrade-cli
you will find out that the BGP configuration has been fully converted
to the address family style of configuration. Outside any address-family
stanzas, only the basic neighbor settings are configured like their
addresses, AS numbers, update sources. However, all remaining
per-address-family commands will be automatically moved into
address-family stanzas. The behavior or operations of BGP do not change
with this new style of configuration, only the configuration format is
changed.
Furthermore, if you enter the no bgp default ipv4-unicast command in the BGP configuration, you will prevent BGP from automatically assigning each newly defined neighbor into address-family ipv4
section. You will then be required to add every defined neighbor to
each intended address family automatically - it won't be done
automatically for you anymore.
So to wrap it up - the address-family ipv4
is in fact an omnipresent section in the BGP configuration but for
backward compatibility purposes, it is not visible by default. However,
the configuration can be converted to a strict per-address-family
configuration, and in fact, I would recommend that for all new
deployments.
Comments
Post a Comment