Jaideep Chandrashekar <jaideepc@cs.umn.edu> writes:
Hi. Apologies if this posting is off topic.
I'd observed some loops in the AS Paths as seen by the Route-Views routeserver. In one particular snapshot -- about 2% of the paths involved such loops.
Here are some examples.....(taken from route-views).
11608 2914 1239 12064 22773 12064 11836 1221 4637 1239 12064 22773 12064 11836 1224 38 7228 1239 12064 22773 12064 11836 1239 12064 22773 12064 1239 12064 22773 12064 11836 19092 3356 1299 766 288 766 3356 1299 766 288 766 4181 3356 1299 766 288 766 6079 3356 1299 766 288 766 8220 1 3356 701 668 5058 48 3356
RFC 1771 has the following to say:
----------------------------- 9.3 Route Selection Criteria
Generally speaking, additional rules for comparing routes among several alternatives are outside the scope of this document. There are two exceptions: - If the local AS appears in the AS path of the new route being considered, then that new route cannot be viewed as better than any other route. If such a route were ever used, a routing loop would result. ------------------------------
So it seems to me that these paths violate the BGP spec.
Can anybody comment about whether these paths are in fact valid. Are these used in specific settings by ISP's. Most of these loops are of length < 3, but there are also some that are really long (5-6).
Looking closely at the shorter paths, I get the feeling that these loops are intentional, perhaps to acheive some traffic engineering goal. Note that we tried to traceroute along some of these loops, and in almost all the cases, there was no forwarding loop (so probably not a flaky route).
What sort of situations would warrant these AS Path loops.
From my understanding of the BGP decision process - routes that contain the current AS in the path are automatically excluded from the path selection process. Is this correct ?
Any comments would be helpful.
In many (most?) these "loops" are intentional, and a result of playing prepending games... There's no restriction on what you can prepend to an AS path (and it can be handy to put stuff in there to keep other providers from picking up your routes as we'll see momentarily), but your peer generally wants to see the most recent as in the path as your AS. So if I (AS3066) wanted to send routes to Sprint that were not to be picked up by UUnet, I could do as follows: route-map to-as1239-nothanks-uu permit 10 set as-path prepend 3066 701 and apply it outbound in the advertisement to Sprint. Then what you would see in the route reflector would be: 1239 3066 701 3066 for routes that I originated internally. Hope this helps, ---Rob