Technology
9 MIN
July 28, 2021

Das Serial Line Internet Protocol (SLIP)

In diesem Technikartikel schauen wir uns das Serial Line Internet Protocol (SLIP) im Kontext von Embedded Systemen an.

Dominik Prause

Einführung in das SLIP (Protokoll)

Das Serial Line Internet Protocol (SLIP) ist ein einfaches Netzwerkprotokoll zum Übertragen von Daten zwischen zwei Geräten. Die Geschichte des Protokolls reicht in die frühe Zeit der 1980er Jahre zurück. Die erste weitverbreitete Implementierung des SLIP kam von Rick Adams für das Berkeley Unix 4.2 Betriebssystem. SLIP ist kein offizieller Standard, sondern liegt in der RFC 1055 als Quasi-Standard vor. Im ISO/OSI Referenzmodell ist das Protokoll in der Sicherungsschicht (engl. Data Link Layer) angeordnet. Auf PCs ist das SLIP heutzutage zum Großteil durch das Point-to-Point Protocol (PPP) ersetzt. In Embedded Systems hat es jedoch auch heute noch seinen Nutzen. Im Folgenden erfahren Sie nach einer Beschreibung der Funktionsweise des SLIP, wie und wann SLIP in Embedded Systemen eingesetzt werden kann und wie eine Implementierung von SLIP aussehen könnte.

Wie funktioniert das SLIP

Generell gibt es drei Zeichen, die von dem Protokoll in den Datenstrom eingefügt werden.

  1. END (0xC0)
  2. ESC_END (0xDB 0xDC)
  3. ESC_ESC (0xDB 0xDD)
Das SLIP ESC Zeichen (0xDB) darf hierbei nicht mit dem ESC Zeichen aus dem ASCII Zeichensatz verwechselt werden. SLIP kapselt lediglich ein Paket aus Binärdaten (Bytes) und kennt keine Zeichensätze etc.

Das nachfolgende Bild zeigt die Funktionsweise des relativ einfachen Algorithmus.

  1. An das letzte Byte des Datagramms wird das 1-Byte END (0xC0) Zeichen angehängt. Um unerwünschte Zeichen im Empfangspuffer, die durch Leitungsstörungen entstehen können, vom eigentlichen Datagramm unterscheiden zu können, wird in den meisten Implementierungen auch ein END Zeichen vor dem Datagramm eingefügt. (Falls Leitungsstörungen zu Zeichen im Empfangspuffer geführt haben sollten, werden diese durch das zusätzliche END Zeichen als eigenständiges Datagramm verarbeitet und von einer höher liegenden Protokollschicht als ungültig erkannt)
  2. Falls nun in den Daten des Datagramms selbst ein Byte mit dem Wert 0xC0 vorkommt, wird dieses durch das 2-Byte Symbol ESC_END (0xDB, 0xDC) ersetzt (Byte Stuffing).
  3. Wenn ein Zeichen im Datagramm gleich dem SLIP ESC Zeichen ist, muss auch dieses durch ein Spezialzeichen ersetzt werden, so dass der SLIP Decoder im Empfänger ein Datenbyte mit dem Wert 0xDB von einem durch das SLIP eingefügte ESC Zeichen unterscheiden kann. Dies wird im Protokoll durch einfügen der 2-Byte Sequenz ESC_ESC (0xDB, 0xDD) erreicht.

Das nachfolgende Bild zeigt ein Beispiel für die Encodierung eines Datagramms. Beispielhaft wird davon ausgegangen, dass im Datagramm ein Byte mit dem Wert 0xC0 (SLIP END Zeichen) und eines mit dem Wert 0xDB (SLIP ESC Zeichen) vorhanden ist.

SLIP Frame encoding

Historisch wurde das SLIP hauptsächlich zur Übertragung von IP Paketen verwendet, weshalb die meisten Darstellungen in der Literatur von der Kapselung eines IP Pakets sprechen. Auch der Name "Serial Line Internet Protocol" zielt ja in diese Richtung. Ganz allgemein kann mit dem SLIP aber jedes byteorientierte Datenformat übertragen werden.

Vor- und Nachteile von SLIP

SLIP ist eine einfache Methode, um eine serielle Bytefolge in Rahmen (Frames) zu verpacken. Es erlaubt somit Empfangsseitig eine rudimentäre Synchronisation auf diese Rahmen und eignet sich daher speziell zur Übertragung von Paket-/Framebasierten Daten aus den höheren Schichten des ISO/OSI Modells.

Vorteile des SLIP sind

  • Einfaches Protokoll
  • Geringer Protokolloverhead
  • Auch auf kleinsten Mikrocontrollern implementierbar

Natürlich hat das Protokoll auch einige Nachteile bzw. bietet einige Features nicht, die üblicherweise bei Protokollen der Sicherungsschicht zu finden sind.

Zu den Nachteilen des SLIP zählen

  • Keine Möglichkeit zur Übertragung der IP Adresse. Bei der Übertragung von IP Paketen müssen beide Geräte/Computer die IP Adresse des Kommunikationspartners kennen.
  • Keine Möglichkeit zur Kennzeichnung des Datagramm Typs. Somit ist kein Multiplexing der seriellen Verbindung möglich. Die Verbindung kann nur von einem höherliegenden Protokoll verwendet werden.
  • Keine Fehlererkennung oder Fehlerkorrektur auf Byteebene. D.h. die höheren Schichten müssen ggf. Mittel zur Fehlererkennung bzw. Fehlerkorrektur wie CRC oder FEC bieten.
  • Keine Komprimierung der Nutzdaten.

Die aufgeführten Nachteile gelten natürlich nicht allgemein, sondern nur für bestimmte Anwendungsfälle. Sonst hätte SLIP auch keine so weite Verbreitung gefunden.

Der nächste Abschnitt beschreibt einige der typischen Anwendungen des SLIP.

Wo wird das SLIP eingesetzt

Üblicherweise wird das SLIP zur Übertragung von IP Paketen über eine serielle Verbindung verwendet. Eine typische Anwendung fand das Protokoll bei der Verbindung von Rechnern über ein Dial-up Modem mit dem Internet bzw. bei der direkten Verbindung zwischen zwei Rechnern. Heutzutage wird hierfür jedoch hauptsächlich das leistungsfähigere und robustere Point-to-Point Protocol (PPP) eingesetzt.

SLIP zur Verbindung von PCs zu einem Internet Service Provider (ISP)

Im Embedded System Bereich ist das SLIP hingegen auch heute noch für diverse Anwendungen eine gute Wahl.

Das SLIP in Embedded Systemen

Während das SLIP im PC Bereich weitgehend durch das PPP ersetzt wurde, kommt es in Embedded Systemen durchaus noch zum Einsatz.

Ein gängiger Anwendungsfall ist die Kommunikation zwischen einer MCU (Microcontroller Unit) und einem Network Co-Processor (NCP). Hier zwei Beispielprojekte auf Github:

Einen weiteren Anwendungsfall sieht man bei der bekannten MCU Serie ESP32/8266. Das ROM Bootloader Protokoll setzt hier auch auf SLIP. Die Commands und Responses werden hierbei in SLIP Frames verpackt und über die UART Schnittstelle übertragen. D.h. beim Flashen der Chips über das esptool oder von einem anderen Microcontroller aus wird das SLIP verwendet.

Generell kann das SLIP auch für die on-board Kommunikation von Embedded Systemen sinnvoll sein, z.B. zwischen einem Messcontroller und einer Main-MCU.

Zusammenfassung

Das SLIP ist ein sehr einfaches Protokoll, das in den Anfängen des Internetzeitalters recht verbreitet war. Heutzutage ist es in der PC Welt weitgehend durch das PPP abgelöst. In der Embedded Systems Welt wird es jedoch nach wie vor verwendet. Durch seine Einfachheit muss aber genau abgewogen werden, ob es sinnvoll ist, auf das SLIP zu setzen. Werden zu große Störungen bei der Übertragung erwartet gibt es bessere Protokolle für die Sicherungsschicht. Bei Verwendung des SLIP sollte auf jeden Fall über geeignete Fehlererkennungs- bzw. Fehlerkorrekturfähigkeiten in den höher liegenden Protokollstackschichten geachtet werden.

Referenzen

Folgende Referenzen wurden für des Artikels "Das Serial Line Internet Protocol (SLIP)" verwendet.