Session Announcement Protocol
# Session Announcement Protocol

Das Session Announcement Protocol (SAP) ist ein Netzwerkprotokoll aus dem Bereich der IP-Telefonie, welches Multicast-Multimediasitzungen und andere Multicast-Sitzungen unterstützt und die entsprechende Sitzungskonfiguration an in Frage kommende Teilnehmer weiterleitet. Es wurde von der IETF entwickelt und wird in der beschrieben.

## Funktionsprinzip

Der SAP-Ankündiger sendet dabei periodisch Ankündigungspakete an die allgemein bekannte („well known“) Multicast-Adresse (sap.mcast.net = 224.2.127.254) auf den entsprechenden Port (Standard: 9875). Der SAP-Client horcht auf diesem Port, um eventuelle Anfragen für Multicast-Sitzungen erkennen und annehmen zu können.

## Aufbau eines SAP-Paketes

| 0 | 3 | 4 | 5 | 6 | 7 | 8 | 16 | 31 |
| - | - | - | - | - | - | - | - | - |
| V=1 | A | R | T | E | C | Auth len | Msg ID hash | Msg ID hash |
| Originating source (32 Bit oder 128 Bit) |||||||||
| Optional Authentication Data |||||||||
| Optional timeout |||||||||
| Optional payload type |||||||||
| | | | | | | | 0 | |
| Payload |||||||||

* V – 3 Bit – Versionsnummer, muss auf 1 gesetzt sein
* A – 1 Bit – Address Type, kann 0 oder 1 sein
   * 0 – Feld Originating Source enthält IPv4-Adresse (32 Bit)
   * 1 – Feld Originating Source enthält IPv6-Adresse (128 Bit)
* R – 1 Bit – Reserved, wird von SAP-Ankündigern auf 0 gesetzt und von SAP-Clients ignoriert
* T – 1 Bit – Message Type, kann 0 oder 1 sein
   * 0 – Paket zur Ankündigung einer Sitzung
   * 1 – Paket zum Löschen einer Sitzung
* E – 1 Bit – Encryption Bit, kann 0 oder 1 sein
   * 0 – Der Payload ist nicht verschlüsselt, das Timeout-Feld darf fehlen
   * 1 – Der Payload ist verschlüsselt, das Timeout-Feld muss dem Header hinzugefügt werden
* C – 1 Bit – Compressed Bit, wenn 1 gesetzt, dann ist der Payload komprimiert
* Authentication Length – 8 Bit – Gibt die Anzahl an 32-Bit-Wörtern an, die dem Header folgen und Authentifizierungsdaten enthalten, an. Wenn 0, dann kein Authentifizierungs-Header vorhanden
* Message Identifier Hash – 16 Bit – Wird zusammen mit dem Feld Origination Source benutzt, um einen global eindeutigen Identifikator für diese Nachricht zu erhalten.
* Origination Source – 32 Bit oder 128 Bit – Die IP-Adresse des Urhebers der Nachricht. Wenn Feld A 0 gesetzt ist, dann steht hier eine IPv4-Adresse, wenn 1, dann eine IPv6-Adresse.
* Timestamp – 32 Bit – Falls der Payload verschlüsselt ist, enthält diese Feld einen Zeitstempel, der vorschreibt, wie lange die Nachricht gültig ist. Er ist im NTP-Format gespeichert und in Sekunden angegeben.
* Payload Type – Enthält den MIME-Type (sprich das Datenformat) des Payloads. Er ist als ASCII-String angegeben und wird von einem Null-Byte (ASCII NUL) abgeschlossen.
* Payload – Enthält die eigentlichen Daten (Nutzlast) und ist noch einmal in diverse Unterfelder geteilt.
