Switch Abstraction Interface
Abkürzung: SAI
SAI ist eine einheitliche Schnittstelle zwischen dem Betriebssystem eines Switches und dessen Vermittlungschip. Sie macht das Betriebssystem unabhängig vom Hersteller der Hardware.
Definition SAI
Jeder Switch enthält einen spezialisierten Baustein, der die eigentliche Weiterleitung übernimmt. Diese Chips unterscheiden sich zwischen den Herstellern erheblich, und jeder bringt seine eigene Programmierschnittstelle mit.
Früher bedeutete das: Ein Betriebssystem musste für jeden Chip angepasst werden. Ein Wechsel der Hardware zog eine umfangreiche Portierung nach sich.
SAI löst das über eine Zwischenschicht. Das Projekt legt eine einheitliche Schnittstelle in der Sprache C fest, die beschreibt, welche Objekte ein Switch kennt und wie sie angesprochen werden. Der Chiphersteller setzt diese Schnittstelle auf seinem Baustein um. Das Betriebssystem spricht nur noch SAI und muss den Chip darunter nicht kennen.
Entstanden ist SAI 2015 auf Betreiben von Microsoft und wird im Rahmen des Open Compute Project gepflegt.
Was beschrieben wird
Die Schnittstelle ist objektorientiert aufgebaut. Zu den beschriebenen Gegenständen gehören unter anderem:
- Schnittstellen und deren Eigenschaften
- Vermittlungstabellen auf Schicht 2 und 3
- VLANs
- Zugriffslisten
- Warteschlangen, Puffer und Priorisierung
- Zähler und Messwerte
- Verfahren zur Flusskontrolle
Jedes Objekt wird angelegt, verändert, abgefragt oder gelöscht. Das Betriebssystem beschreibt damit, was der Chip tun soll, nicht wie er es tut.
Der Nutzen
Für Betreiber. Die Wahl der Hardware wird von der Wahl der Software entkoppelt. Ein Betriebssystem, das SAI spricht, läuft auf Geräten verschiedener Hersteller.
Für Hersteller von Betriebssystemen. Statt für jeden Chip eine eigene Anbindung zu pflegen, genügt eine gegen SAI.
Für Chiphersteller. Wer SAI umsetzt, macht seinen Baustein für alle Betriebssysteme nutzbar, die darauf aufbauen.
Grenzen
Eine Abstraktionsschicht bildet nur ab, was alle Beteiligten können. Besonderheiten eines einzelnen Chips lassen sich über SAI nicht ansprechen, sofern dafür keine Erweiterung vorgesehen ist.
Die Umsetzungen der Hersteller unterscheiden sich zudem in Reife und Vollständigkeit. Dass ein Chip SAI unterstützt, sagt nichts darüber, wie viele der beschriebenen Objekte tatsächlich funktionieren. Das ist in der Praxis der Punkt, an dem Portierungen aufwendiger werden als erwartet.
Abgrenzung
SONiC ist ein Betriebssystem, das SAI nutzt. Es ist der bekannteste, aber nicht der einzige Nutzer.
OpenFlow beschreibt ebenfalls, wie eine Weiterleitungstabelle von außen gefüllt wird, geht dabei aber von einer zentralen Steuerung aus. SAI ist eine Schnittstelle innerhalb eines Geräts.
Die Entwicklungsumgebung eines Chipherstellers liegt unterhalb von SAI und bleibt üblicherweise unter Verschluss.
Quellen
- Open Compute Project: Switch Abstraction Interface Specification
- SAI-Projekt: Schnittstellenbeschreibung und unterstützte Objekttypen