Equal-cost multi-path routing
lastmod 2018-09-13created 2018-09-131 edits
ECMP, short for Equal-cost multi-path routing, is a routing technique that selects multiple paths while routing packets to a single destination. Because ECMP can confine next-hop selection to a single router, it can be used in combination with most routing protocols. By distributing traffic across multiple paths, ECMP can potentially increase bandwidth. In practice, however, many problems can arise. RFC 2991 describes multipath routing in general.
Load balancing through per-packet multipath routing is generally not well regarded because of rapidly changing latency, packet reordering, and MTU variation, and in particular it disrupts the operation of Internet protocols such as TCP and path MTU discovery. RFC 2992 introduces a multipath routing technique that assigns flows by hashing flow-related data in the packet header, solving the problems above while maintaining load balancing across flows.
In fact, in many situations ECMP may not deliver good performance. For example, when a data flow transmitted over multiple paths converges onto a single path at some point, ECMP only increases the complexity of the traffic paths without increasing bandwidth. Also, when a system's physical topology and logical topology differ (for example, systems with VLANs applied at the L2 layer, or with a virtual circuit-based architecture such as ATM and MPLS), ECMP may not work properly with other routing protocols.