TCAM – Ternary Content Addressable Memory
Abkürzung: TCAM
TCAM ist ein Speicher, der nicht nach Adresse, sondern nach Inhalt durchsucht wird — und zwar alle Einträge gleichzeitig in einem einzigen Takt. Er ist der Grund, warum ein Switch Millionen Pakete pro Sekunde weiterleiten kann, und zugleich die Ursache der harten Tabellengrenzen, die jedes Datenblatt nennt.
CAM und TCAM
Bei normalem Speicher gibt man eine Adresse an und erhält den Inhalt. CAM (Content Addressable Memory) dreht das um: Man legt ein Suchmuster an, und der Speicher liefert die Position, an der es steht. Alle Zellen vergleichen parallel, die Antwort kommt in konstanter Zeit — unabhängig davon, ob die Tabelle hundert oder hunderttausend Einträge hat.
Für MAC-Adressen genügt das, denn dort wird exakt verglichen: Entweder die Adresse steht in der Tabelle oder nicht.
TCAM erweitert das um einen dritten Zustand je Bit. Neben 0 und 1 gibt es beliebig — ein Bit, das beim Vergleich ignoriert wird. Daher „ternär".
Damit lassen sich Muster speichern statt nur Werte:
10.0.0.0/8 → 00001010 ******** ******** ******** 10.1.0.0/16 → 00001010 00000001 ******** ********
Warum das für das Forwarding entscheidend ist
Beim Routing gewinnt der längste passende Prefix. Ein Router müsste dafür eigentlich alle Einträge durchsuchen und den spezifischsten auswählen — bei einer vollen Internet-Routingtabelle mit über einer Million Prefixe pro Paket.
TCAM erledigt das in einem Takt: Alle Einträge werden gleichzeitig verglichen, und bei mehreren Treffern gewinnt der mit der niedrigsten Position. Sortiert man die Tabelle nach Prefixlänge, fällt der Longest Prefix Match damit von selbst heraus.
Dasselbe Prinzip trägt die ACLs: Eine Regel mit Wildcards ist genau das Muster, das TCAM nativ vergleicht. Deshalb kostet eine Zugriffsliste im Datenpfad keine messbare Zeit — anders als eine Prüfung in Software, deren Dauer mit der Zahl der Regeln wächst.
Auch die Classifier für QoS und die Zuordnung von VLANs arbeiten darüber.
Der Preis: Chip-Fläche, Strombedarf, Größe
Jede TCAM-Zelle braucht deutlich mehr Transistoren als eine normale Speicherzelle, und beim Vergleich schalten alle Zellen gleichzeitig. Das macht TCAM teuer in der Chipfläche und stromhungrig — ein erheblicher Anteil des Verbrauchs eines Switch-ASIC geht darauf.
Daraus folgt die Konsequenz, die jeder Betreiber kennt: TCAM ist knapp und fest dimensioniert. Ein Gerät kann so viele Routen, ACL-Einträge und MAC-Adressen aufnehmen, wie der Hersteller vorgesehen hat — nicht mehr. Viele Plattformen bieten Templates, mit denen sich der vorhandene TCAM zwischen diesen Verwendungen aufteilen lässt: mehr Routen zulasten der ACLs oder umgekehrt.
Was bei Überlauf passiert
Das ist der Punkt, an dem TCAM aus dem Datenblatt in den Störungsbetrieb wandert. Läuft der Speicher über, reagieren Geräte unterschiedlich — und keine Variante ist angenehm:
Manche weichen ins Software-Forwarding aus. Die Pakete werden weiterhin zugestellt, aber von der CPU, mit einem Bruchteil des Durchsatzes und stark schwankender Latenz. Das Gerät meldet keinen Fehler, es wird nur plötzlich langsam.
Andere verwerfen die überzähligen Einträge, womit Routen oder ACL-Regeln stillschweigend wirkungslos werden — im Fall einer Filterregel ein Sicherheitsproblem, das niemand bemerkt.
Der bekannteste Fall war der 512K-Vorfall im August 2014: Die globale Routingtabelle überschritt 512.000 Prefixe, und eine verbreitete Plattformgeneration hatte ihren TCAM standardmäßig genau auf diesen Wert aufgeteilt. Die Folge waren weltweite Ausfälle bei Providern, die ihre Geräte nicht umkonfiguriert hatten. Beim Überschreiten der nächsten Schwelle 2021 war die Branche vorbereitet.
Was in der Praxis daraus folgt
Die Tabellengrenzen gehören in die Planung. Wer Full-Table-BGP fahren will, braucht ein Gerät, das die heutige Tabelle plus Wachstum aufnimmt — und die wächst stetig.
ACL-Einträge sind endlich. Lange, generierte Regelwerke stoßen an die Grenze, und das Zusammenfassen von Regeln ist dort keine Kosmetik, sondern notwendig.
Die Auslastung lässt sich abfragen. Jedes verwaltbare Gerät zeigt den TCAM-Verbrauch je Bereich. Dieser Wert gehört ins Monitoring, bevor er zum Problem wird.
Abgrenzung
CAM vergleicht exakt und genügt für die MAC-Adresstabelle; die Bezeichnung „CAM-Table" für diese Tabelle ist geblieben.
FIB und RIB sind die Tabellen selbst: Die RIB ist die vollständige Routingtabelle im Speicher des Control Plane, die FIB der daraus abgeleitete Auszug im Forwarding-Pfad — und genau die liegt im TCAM.
Hashing ist der alternative Weg für exakte Suchen; er braucht keinen Spezialspeicher, löst aber kein Prefix-Matching.
Quellen
- CIDR Report: Entwicklung der globalen Routingtabelle