BGP_LocPrf_Top

So as can be seen, once again we’ve ditched the NBMA as this Topology of a shared Ethernet segment will better illustrate Local Preference explanation, behaviors, etc.

***For labbing example purposes I want to point out there is another link in the above Topology, R3-R4 is connected by the Fa0/1 link on the network 172.12.34.0 /24 to advertise the network, however I left it out of the Topology for clarity sake.***

However before we get labbing, we have some theory / fundamentals to go over:

  • Local Preference aka LOCAL_PREF aka LocPrf are different names it goes by
  • Local Preference is a well-known ‘discretionary’ attribute
  • Local Preference is NEVER advertised outside of its AS (to eBGP Speakers)
  • Local Preference is #2 on the Best Path 10 attribute list, outranked by Weight (Cisco Proprietary) at #1, both Local Pref and Weight are preferred by highest value
  • Local Preference passed only between local (iBGP) neighbors

Local Preference is like the exact opposite of MED, in the way that MED tells BGP Speakers outside the AS the Preferred Path into the AS, Local Preference tells the BGP Speakers inside the local as which exit Path to use.

So because of that, it runs between iBGP neighbors only, or is “locally significant only”  among Peers inside the AS – So its a new spin on the term “locally significant only” with BGP it can mean both the local router or the routers local to the local routers AS.

So to show what the configuration looks like for R3 and R4 with this hidden network:

R3(config-router)#neighbor 10.1.1.1 remote-as 12
R3(config-router)#neighbor 10.1.1.4 remote-as 34
R3(config-router)#network 172.12.34.0 mask 255.255.255.0

R4(config-router)#neighbor 10.1.1.3 remote-as 34
R4(config-router)#neighbor 10.1.1.2 remote-as 12
R4(config-router)#network 172.12.34.0 mask 255.255.255.0

So that being said, lets see how R1 and R2 are currently viewing the Path Selection in their AS 12:

R1#sh ip bgp
BGP table version is 2, local router ID is 10.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
              r RIB-failure, S Stale
Origin codes: i – IGP, e – EGP, ? – incomplete

   Network          Next Hop            Metric LocPrf Weight Path
* i172.12.34.0/24   10.1.1.4                 0          100                  0 34 i
*>                             10.1.1.3                 0                                   0 34 i
R1#
ASR#2
[Resuming connection 2 to r2 … ]

R2#sh ip bgp
BGP table version is 4, local router ID is 10.1.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
              r RIB-failure, S Stale
Origin codes: i – IGP, e – EGP, ? – incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 172.12.34.0/24   10.1.1.4                 0                                 0 34 i
* i                              10.1.1.3                 0          100                0 34 i
R2#

As can be seen, both router have a Preferred Path of the Next Hop to the network, which is the R1 – R3 and R2 – R4, as all other things should be equal. However it is also noted that we only see LocPrf values in one Path in each ip bgp table, does that mean the other is set to 0?

R2#sh ip bgp 172.12.34.0
BGP routing table entry for 172.12.34.0/24, version 4
Paths: (2 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     1
  34
    10.1.1.4 from 10.1.1.4 (10.1.1.4)
      Origin IGP, metric 0, localpref 100, valid, external, best
  34
    10.1.1.3 from 10.1.1.1 (10.1.1.1)
      Origin IGP, metric 0, localpref 100, valid, internal
R2#

Offfff course not, because its default is 100 for Local Preference, but it sometimes does not show up in the “sh ip bgp” table so don’t let that trip you up.

So there are a couple of ways to manipulate the Local Preference, one method changes the Local Preference for all routes being advertised by an iBGP Speaker (All or Nothing approach) which I will configure here first, within BGP router configuration mode:

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#router bgp 12
R1(config-router)#?
Router configuration commands:
  address-family       Enter Address Family command mode
  aggregate-address    Configure BGP aggregate entries
  auto-summary         Enable automatic network number summarization
  bgp                  BGP specific commands
  default              Set a command to its defaults
  default-information  Control distribution of default information
  default-metric       Set metric of redistributed routes
  distance             Define an administrative distance
  distribute-list      Filter networks in routing updates
  exit                 Exit from routing protocol configuration mode
  help                 Description of the interactive help system
  maximum-paths        Forward packets over multiple paths
  neighbor             Specify a neighbor router
  network              Specify a network to announce via BGP
  no                   Negate a command or set its defaults
  redistribute         Redistribute information from another routing protocol
  synchronization      Perform IGP synchronization
  table-map            Map external entry attributes into routing table
  template             Enter template command mode
  timers               Adjust routing timers

R1(config-router)#bgp ?
  always-compare-med      Allow comparing MED from different neighbors
  bestpath                Change the default bestpath selection
  client-to-client        Configure client to client route reflection
  cluster-id              Configure Route-Reflector Cluster-id (peers may
                          reset)
  confederation           AS confederation parameters
  dampening               Enable route-flap dampening
  default                 Configure BGP defaults
  deterministic-med       Pick the best-MED path among paths advertised from
                          the neighboring AS
  dmzlink-bw              Use DMZ Link Bandwidth as weight for BGP multipaths
  enforce-first-as        Enforce the first AS for EBGP routes(default)
  fast-external-fallover  Immediately reset session if a link to a directly
                          connected external peer goes down
  graceful-restart        Graceful restart capability parameters
  inject-map              Routemap which specifies prefixes to inject
  log-neighbor-changes    Log neighbor up/down and reset reason
  maxas-limit             Allow AS-PATH attribute from any neighbor imposing a
                          limit on number of ASes
  nexthop                 Nexthop tracking commands
  redistribute-internal   Allow redistribution of iBGP into IGPs (dangerous)
  regexp                  Select regular expression engine
  router-id               Override configured router identifier (peers will
                          reset)
  scan-time               Configure background scanner interval
  soft-reconfig-backup    Use soft-reconfiguration inbound only when
                          route-refresh is not negotiated
  suppress-inactive       Suppress routes that are not in the routing table
  update-delay            Set the max initial delay for sending update
  upgrade-cli             upgrade cli

R1(config-router)#bgp default ?
  ipv4-unicast      Activate ipv4-unicast for a peer by default
  local-preference  local preference (higher=more preferred)
  route-target      Control behavior based on Route-Target attributes

R1(config-router)#bgp default local-preference ?
  <0-4294967295>  Configure default local preference value

R1(config-router)#bgp default local-preference 200
R1(config-router)#^Z
R1#
*Mar 31 09:37:31.523: %SYS-5-CONFIG_I: Configured from console by console
R1#clear ip bgp * soft out
R1#

So keep in mind the higher the Local Preference (Like Weight) the more Preferred the Path, lets see how R2 now views its Paths to 172.12.34.0/24 :

R2#sh ip bgp 172.12.34.0
BGP routing table entry for 172.12.34.0/24, version 5
Paths: (2 available, best #2, table Default-IP-Routing-Table)
  Advertised to update-groups:
     2
  34
    10.1.1.4 from 10.1.1.4 (10.1.1.4)
      Origin IGP, metric 0, localpref 100, valid, external
  34
    10.1.1.3 from 10.1.1.1 (10.1.1.1)
      Origin IGP, metric 0, localpref 200, valid, internal, best
R2#

So it has changed it’s tune about where the Path is, lets look at R1 to see if it will send traffic over to R2 as well destined for the 172.12.34.0 network:

R1#sh ip bgp 172.12.34.0
BGP routing table entry for 172.12.34.0/24, version 3
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     2
  34
    10.1.1.3 from 10.1.1.3 (10.1.1.3)
      Origin IGP, metric 0, localpref 200, valid, external, best

Now R1 does not even consider the Path back to 10.1.1.2, because that router is just going to send it right back, creating a routing loop of course. However, I did confirm they are still Peers despite not being in the ip bgp table for that route anymore:

R1#sh ip bgp summ
(Output redacted)

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.1.1.2        4    12     111     111        3    0    0 01:45:52        0
10.1.1.3        4    34      89      88        3    0    0 01:24:19        1

Now if this were a bigger network, or perhaps a ton of routes being advertised by R1, we probably wouldn’t want all of those routes / iBGP Speakers changing the Local Preference to 200