There are two BGP configuration commands that can influence
the MED-based path selection, the bgp
deterministic-med and the bgp
always-compare-med commands.
1. Enabling
the bgp deterministic-med command ensures the comparison of the
MED variable when choosing routes advertised by different peers in the same
autonomous system. Enabling the bgp
always-compare-med command
ensures the comparison of the MED for paths from neighbors in different
autonomous systems.
2. The bgp
always-compare-med command is
useful when multiple service providers or enterprises agree on a uniform policy
for setting MED. Thus, for network X, if Internet Service Provider A (ISP A)
sets the MED to 10, and ISP B sets the MED to 20, both ISPs agree that ISP A
has the better performing path to X.
Consider an excellent example that explains the above two statements:
Assume, there is a particular route 10.0.0.0/8 being learned from three different sources:
entry1: AS(PATH) 500, med 150, external, rid
172.16.13.1
entry2: AS(PATH) 100, med 200, external, rid
1.1.1.1
entry3: AS(PATH) 500, med 100, internal, rid
172.16.8.4
The order in which the BGP routes were
received is entry3, entry2, and entry1. (Entry3 is the oldest entry in the BGP
table, and entry1 is the newest one.)*
Entry1 and entry2 are compared first.
Entry2 is chosen as the better of these two because it has a lower router ID.
The MED is not checked because the paths are from a different neighbor
autonomous system. Next, entry2 is compared to entry3. Entry2 is chosen as the
best path because it is external.
Entry1 is compared to entry2. These
entries are from different neighbor autonomous systems, but since the bgp
always-compare-med command is enabled, MED is used in the comparison.
Of these two entries, entry1 is better because it has a lower MED. Next, entry1
is compared to entry3. The MED is checked again because the entries are now
from the same autonomous system. Entry3 is chosen as the best path.
When the bgp deterministic-med command
is enabled, routes from the same autonomous system are grouped together, and
the best entries of each group are compared. The BGP table looks like this:
entry1: AS(PATH) 100, med 200, external, rid
1.1.1.1
entry2: AS(PATH) 500, med 100, internal, rid
172.16.8.4
entry3: AS(PATH) 500, med 150, external, rid
172.16.13.1
There is a group for AS 100 and a group
for AS 500. The best entries for each group are compared. Entry1 is the best of
its group because it is the only route from AS 100. Entry2 is the best for AS
500 because it has the lowest MED. Next, entry1 is compared to entry2. Since
the two entries are not from the same neighbor autonomous system, the MED is
not considered in the comparison. The external BGP route wins over the internal
BGP route, making entry1 the best route.
The comparisons in this example are the
same as in Example 3, except for the last comparison between entry2 and entry1.
The MED is taken into account for the last comparison because the bgp
always-compare-med command is enabled. Entry2 is selected as the best
path.
*[Note: When BGP
receives multiple routes to a particular destination, it lists them in the
reverse order that they were received, from the newest to the oldest. BGP then
compares the routes in pairs, starting with the newest entry and moving toward
the oldest entry (starting at top of the list and moving down). For example,
entry1 and entry2 are compared. The better of these two is then compared to
entry3, and so on.]