80 likes | 182 Views
This presentation discusses various issues in BGP routing, including persistent route oscillation conditions, eBGP mesh scaling at Internet Exchanges (IXes), and suboptimal routing in route reflector clients. It also explores the interaction between ECMP-capable BGP speakers and multiple-hop capability. Key metrics such as next-hop addresses, address family identifiers, and their impacts on routing decisions are analyzed to improve network performance and reliability. The aim is to equip network engineers with strategies for optimizing BGP operations.
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