Tuesday, February 19, 2008

Equal-cost multi-path routing (ECMP)

Equal-cost multi-path routing (ECMP) is a routing strategy where next-hop packet forwarding to a single destination can occur over multiple "best paths" which tie for top place in routing metric calculations. Multi-path routing can be used in conjunction with most routing protocols, since it is a per-hop decision that is limited to a single router. It potentially offers substantial increases in bandwidth by load-balancing traffic over multiple paths; however, there can be significant problems in its deployment in practice. RFC 2991 discusses multi path routing in general.

Load balancing by per-packet multi path routing is generally deprecated due to the impact of rapidly changing latency, packet reordering and MTU differences within a network flow, which can disrupt the operation of many Internet protocols, most notably TCP and path MTU discovery. RFC 2992 analyses one particular multi path routing strategy involving the assignment of flows to bins by hashing flow-related data in the packet header, which is designed to avoid these problems by sending all packets from any particular network flow down a single deterministic path, while balancing multiple flows over multiple paths in general.

In many situations, ECMP may not offer any real advantage over best-path routing: for example, if the multiple best next-hop paths to a destination re-converge downstream into a single path (a common scenario), it will merely add complexity to the traffic paths to that destination without improving available bandwidth. ECMP may also interact negatively with other routing algorithms where the physical topology of the system differs from the logical topology, for example in systems that employ VLAN’s at layer 2, or virtual circuit-based architectures such as ATM or MPLS. Equal-cost multi-path (ECMP) is a routing technique for routing packets along multiple paths of equal cost. The forwarding engine identifies paths by next-hop. When forwarding a packet the router must decide which next-hop (path) to use. This document gives an analysis of one method for making that decision. The analysis includes the performance of the algorithm and the disruption caused by changes to the set of next-hops.