6. ECMP-Überlegungen
Dieser Abschnitt behandelt die Equal-Cost-Multipath-Funktionalität (ECMP) für die Clos-Topologie und erörtert einige besondere Anforderungen.
6.1. Grundlegendes ECMP
ECMP ist der grundlegende Lastverteilungsmechanismus einer Clos-Topologie. Effektiv nutzt jedes Gerät in einer tieferen Ebene alle direkt angeschlossenen Geräte der höheren Ebene, um Verkehr zum selben IP-Präfix zu verteilen. Die Anzahl der ECMP-Pfade zwischen zwei Tier-3-Geräten in einer Clos-Topologie entspricht der Anzahl der Geräte in der Mittelstufe (Tier 1). Abbildung 5 zeigt beispielsweise eine Topologie, in der Tier-3-Gerät A vier Pfade zu den Servern X und Y hat, über Tier-2-Geräte B und C und dann Tier-1-Geräte 1, 2, 3 bzw. 4.
Tier 1
+-----+
| DEV |
+->| 1 |--+
| +-----+ |
Tier 2 | | Tier 2
+-----+ | +-----+ | +-----+
+----------->| DEV |--+->| DEV |--+--| |-------------+
| +----| B |--+ | 2 | +--| |-----+ |
| | +-----+ +-----+ +-----+ | |
| | | |
| | +-----+ +-----+ +-----+ | |
| +-----+--->| DEV |--+ | DEV | +--| |-----+-----+ |
| | | +--| C |--+->| 3 |--+--| |---+ | | |
| | | | +-----+ | +-----+ | +-----+ | | | |
| | | | | | | | | |
+-----+ +-----+ | +-----+ | +-----+ +-----+
| DEV | | | Tier 3+->| DEV |--+ Tier 3 | | | |
| A | | | | 4 | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | |
O O O O <- Servers -> X Y O O
Figure 5: ECMP Fan-Out Tree from A to X and Y
Die ECMP-Anforderung impliziert, dass die BGP-Implementierung Multipath-Fan-out bis zur maximalen Anzahl direkt angeschlossener Geräte an jedem Punkt der Topologie stromauf- oder stromabwärts unterstützen muss. Üblicherweise übersteigt diese Zahl nicht die Hälfte der Ports eines Geräts in der Topologie. Beispielsweise wäre ein ECMP-Fan-out von 32 nötig, um ein Clos-Netz mit 64-Port-Geräten zu bauen. Border Router können breiteren Fan-out benötigen, um sich mit vielen Tier-1-Geräten zu verbinden, wenn Routenzusammenfassung auf Border-Router-Ebene wie in Abschnitt 5.2.5 beschrieben umgesetzt wird. Unterstützt die Hardware keinen breiteren ECMP, kann logische Link-Gruppierung (Link-Aggregation auf Layer 2) genutzt werden, um « hierarchisches » ECMP (Layer-3-ECMP gekoppelt mit Layer-2-ECMP) zur Kompensation von Fan-out-Grenzen bereitzustellen. Dieser Ansatz erhöht jedoch das Risiko der Flusspolarisation, da in der zweiten ECMP-Stufe weniger Entropie verfügbar ist.
Die meisten BGP-Implementierungen erklären Pfade aus ECMP-Sicht als gleichwertig, wenn sie bis einschließlich Schritt (e) in Abschnitt 9.1.2.2 von [RFC4271] übereinstimmen. Im vorgeschlagenen Netzdesign gibt es kein zugrunde liegendes IGP; alle IGP-Kosten werden daher als null oder sonst gleich auf allen Pfaden angenommen, und Richtlinien können angewendet werden, um BGP-Attribute zu vereinheitlichen, die je nach Herstellervorgaben variieren, z. B. MULTI_EXIT_DISC (MED) und Herkunftscode. Aus historischen Gründen ist es zudem sinnvoll, 0 nicht als vereinheitlichten MED-Wert zu verwenden; nützliche BGP-Informationen dazu finden sich in [RFC4277]. Routing-Schleifen sind aufgrund des BGP-Best-Path-Verfahrens (kürzere AS_PATH-Länge bevorzugt) unwahrscheinlich, und längere Pfade über Tier-1-Geräte (die kein eigenes ASN im Pfad erlauben) sind nicht möglich.
6.2. BGP-ECMP über mehrere ASNs
Für Anwendungs-Lastausgleich ist es wünschenswert, dasselbe Präfix von mehreren Tier-3-Geräten annonciert wird. Aus Sicht anderer Geräte hätte ein solches Präfix BGP-Pfade mit unterschiedlichen AS_PATH-Werten bei gleicher AS_PATH-Länge. Daher müssen BGP-Implementierungen Lastverteilung über die genannten Pfade unterstützen. Diese Funktion heißt mitunter « multipath relax » oder « multipath multiple-AS » und ermöglicht effektiv ECMP über verschiedene Nachbar-ASNs, wenn alle anderen Attribute wie im vorherigen Abschnitt beschrieben gleich sind.
6.3. Gewichtetes ECMP
Es kann wünschenswert sein, dass Netzgeräte « gewichtetes » ECMP implementieren, um mehr Verkehr über bestimmte Pfade im ECMP-Fan-out zu senden. Das kann helfen, Ausfälle zu kompensieren und mehr Verkehr über Pfade mit höherer Kapazität zu leiten. Präfixe, die gewichtetes ECMP erfordern, sollten über einen entfernten BGP-Speaker (zentraler Agent) in einer Multi-Hop-Session injiziert werden, wie in Abschnitt 8.1 weiter ausgeführt. Wenn Implementierungen dies unterstützen, kann die Gewichtsverteilung für mehrere BGP-Pfade mit der in [LINK] beschriebenen Technik signalisiert werden.
6.4. Konsistentes Hashing
Oft ist es wünschenswert, dass die für ECMP genutzte Hashfunktion konsistent ist (siehe [CONS-HASH]), um die Auswirkungen auf Fluss-zu-Next-Hop-Affinität zu minimieren, wenn ein Next Hop zu einer ECMP-Gruppe hinzugefügt oder entfernt wird. Das kann genutzt werden, wenn das Netzgerät als Load Balancer fungiert und Flüsse zu mehreren Zielen abbildet: Verlust oder Hinzufügen eines Ziels beeinträchtigt dann etablierte Flüsse weniger. Eine konkrete Empfehlung zur Implementierung konsistenten Hashings bietet [RFC2992], weitere Implementierungen sind möglich. Diese Funktionalität lässt sich natürlich mit gewichtetem ECMP kombinieren; die Auswirkung von Next-Hop-Änderungen ist proportional zum Gewicht des jeweiligen Next Hops. Der Nachteil konsistenten Hashings ist höhere Belastung der Hardware-Ressourcen, da typischerweise mehr Ressourcen (z. B. TCAM, Ternary Content-Addressable Memory) für eine konsistente Hashfunktion nötig sind.