80 likes | 179 Views
Advertising Multiple NextHop Routes in BGP. Joel Halpern Manav Bhatia Paul Jakma. 65 th IETF – Dallas, TX. Applications. Persistent route-oscillation conditions in BGP eBGP mesh scaling at IXes Suboptimal Routing in Route Reflector clients Interaction between ECMP capable BGP speakers.
E N D
Advertising Multiple NextHop Routes in BGP Joel Halpern Manav Bhatia Paul Jakma 65th IETF – Dallas, TX
Applications • Persistent route-oscillation conditions in BGP • eBGP mesh scaling at IXes • Suboptimal Routing in Route Reflector clients • Interaction between ECMP capable BGP speakers
Multiple Hop Capability +-------+-----------------------------------+-----------------------+ | Field | Meaning | Size of field | | | | (octets) | +-------+-----------------------------------+-----------------------+ | AFI | Address Family Identifier | 2 | +-------+-----------------------------------+-----------------------+ | SAFI | Subsequent Address Family | 1 | +-------+-----------------------------------+-----------------------+ | Flags | Multiple-Hop flags | 1 | +-------+-----------------------------------+-----------------------+ +-------+---+---+---+---+---+---+---+----+ | Bit: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +-------+---+---+---+---+---+---+---+----+ | flag: | R | R | R | R | R | R | R | AE | +-------+---+---+---+---+---+---+---+----+
MULTIPLE_HOP +------------------------------------------------+ | Address Family Identifier (2 octets) | +------------------------------------------------+ | Subsequent Address Family Identifier (1 octet) | +------------------------------------------------+ | Number of Next Hops (1 octet) | +------------------------------------------------+ | Length of the First Next Hop (1 octet) | +------------------------------------------------+ | Network Address of First Next Hop (variable) | +------------------------------------------------+ | Length of the Second Next Hop (1 octet) | +------------------------------------------------+ | Network Address of Second Next Hop (variable) | +------------------------------------------------+ | . . . | | . . . | +------------------------------------------------+ | Length of the Nth Next Hop (1 octet) | +------------------------------------------------+ | Network Address of Nth Next Hop (variable) | +------------------------------------------------+
How does this work? R1 10.0.0.0/8 AS_PATH: A B C NEXT_HOP: N2 10.0.0.0/8 AS_PATH: A B C MULTIPLE_HOP: N2 R3 RR 10.0.0.0/8 AS_PATH: X Y NEXT_HOP: N1 10.0.0.0/8 AS_PATH: X Y NEXT_HOP: N1 *> 10.0.0.0/8 N2 > 10.0.0.0/8 N1 R2
Removing one of the Routes R1 10.0.0.0/8 AS_PATH: A B C NEXT_HOP: N2 AS_PATH: A B C MULTIPLE_HOP: N2 WITHDRAWN: 10.0.0.0/8 R3 RR 10.0.0.0/8 AS_PATH: X Y NEXT_HOP: N1 *> 10.0.0.0/8 N2 > 10.0.0.0/8 N1 *> 10.0.0.0/8 N1 R2
Routes with same Next Hops R1 10.0.0.0/8 AS_PATH: A B C NEXT_HOP: N1 LOCAL_PREF: 100 10.0.0.0/8 AS_PATH: A B C MULTIPLE_HOP: N1 LOCAL_PREF: 100 R3 RR 10.0.0.0/8 AS_PATH: X Y NEXT_HOP: N1 LOCAL_PREF: 100 10.0.0.0/8 AS_PATH: X Y NEXT_HOP: N1 LOCAL_PREF: 100 • Network Next Hop Metric LocPref • Path • *>i 10.0.0.0/8 N1 100 X Y ? • * i 10.0.0.0/8 N1 100 A B C ? R2
Removing one of the routes R1 10.0.0.0/8 AS_PATH: A B C NEXT_HOP: N1 LOCAL_PREF: 100 R3 RR AS_PATH: X Y NEXT_HOP: N1 LOCAL_PREF: 100 WITHDRAWN: 10.0.0.0/8 10.0.0.0/8 AS_PATH: X Y NEXT_HOP: N1 LOCAL_PREF: 100 • Network Next Hop Metric LocPref • Path • *>i 10.0.0.0/8 N1 100 X Y ? • * i 10.0.0.0/8 N1 100 A B C ? • Network Next Hop Metric LocPref • Path • *> i 10.0.0.0/8 N1 100 A B C ? R2