BGP Essentials: AS-path prepending

Enterprise networks primarily use BGP with their Internet Service Providers if they want to be multi-homed (connected to more than one ISP). A very common requirement in a multi-homed design is the primary/backup setup where the lower speed (or sometimes lower quality) link should only be used when the primary link fails.

Competent ISPs help their customers reach this goal by using BGP local preference within their network and giving the customers the ability to indicate the desired value of BGP local preference through BGP communities: if the route received directly from the customer has low local preference, all other routes are preferred, resulting in the desired traffic flow that avoids the backup link if at all possible as shown in the next diagram:

Sometimes you are forced to deal with less than ideal ISPs (or the two ISPs you’re using are so far apart in the Internet topology that the BGP local preference solution doesn’t work). In these cases, the only means of influencing BGP route selection in the Internet is the extension of the AS path attribute (routes with shorter AS paths are preferred) with multiple copies of your own AS number: AS-path prepending. AS-path prepending is configured in Cisco IOS with route-map based per-neighbor outbound filter. The actual prepending is specified within the route-map with the set as-path prepend command, as illustrated in the following sample configuration:

router bgp 65001
neighbor 10.1.0.2 remote-as 65200
neighbor 10.1.0.2 description Backup ISP
neighbor 10.1.0.2 route-map prepend out
!
route-map prepend permit 10
set as-path prepend 65001 65001 65001

If you're looking for more in-depth BGP knowledge, try our Configuring BGP on Cisco Routers e-learning solution. If you just need to enhance your hands-on skill, the BGP Remote Lab Bundle is the perfect choice.

18 comments:

Guest said...

very nice! This is what I was looking for

AL IPBB said...

G'day,

May I know what is the signinficance of the "10" in route-map prepend permit 10? Thanks!

Cheers!

VzW Data Engineer said...

Perfectly what I was looking for!

roshko said...

AL IPBB:
This is the sequence for the route map rules.
You can have multiple route map entries with a single name.
route-map blah permit 10
match whatever
set anything
route-map blah permit 20
match otherthings
set otherstuff

and so on..
The lookup stops when a matching rule is found.

cheers

Anonymous said...

Brilliant and striaght to the point!

Khan said...

@Ivan, the config u have shown is to be applied on customers router or ISP router??? and i didnot completely understand about using local preference.. can u pls explain?

Ivan Pepelnjak said...

The config would be applied on the customer router.

UBADIRE said...

Please who knows what prepending on internet is all about? Please i need help on this.

jekader said...

Thanks, really useful howto!

PS - you should also include the part about prioritising upload using bgp neighbour weight

Ivan Pepelnjak said...

This might help you: http://www.youtube.com/watch?v=zFliAojRi2E

Mike said...

Doesn't this only influence inbound connections (towards the customer)? The route-map out is telling the remote peer that the particular will take longer.

Ivan Pepelnjak said...

You're right: AS path prepending influences only the inbound traffic flow (not connections). Influencing outbound traffic flow is usually very easy (use local preference or weight for pure primary/backup scenario).

jignesh said...

Hi

If we have two subnet & we want one subnet to take primary ISP & second to secondary ISP for incoming traffic. How to configure?

will set as-path will affect both the subnet incoming path?

Ivan Pepelnjak said...

Advertise to ISP-P: S1 with short path, S2 with long path
Advertise to ISP-B: S1 with long path, S2 with short path

neeraj said...

why we use AS 65501 three times in "set as-path prepend 65001 65001 65001"

neeraj said...

how to check if i set primary/secodary isp path at customer router.is any command to show on router? :)

Keane said...

Ivan always have good articles.


Why there is no "match local preference" for route-map used in BGP?

% "SET-LOCAL-PREFERENCE-103" used as BGP inbound route-map, local preference match not supported

Ivan Pepelnjak said...

Local preference is an intra-AS attribute, so it makes no sense to match on it on EBGP sessions (where it would never be used anyway).

Ivan Pepelnjak, CCIE#1354, is the chief technology advisor for NIL Data Communications. He has been designing and implementing large-scale data communications networks as well as teaching and writing books about advanced technologies since 1990. See his full profile, contact him or follow @ioshints on Twitter.