Zum Hauptinhalt springen

10. Schnittstelle zur oberen Schicht (Interface with Upper Layer)

Dieses Kapitel definiert die Schnittstellendienste zwischen SCTP und dem Upper Layer Protocol (ULP). Dies sind abstrakte Schnittstellen; tatsächliche Implementierungen können je nach Betriebssystem variieren.

10.1. ULP zu SCTP (ULP-to-SCTP)

ULP verwendet die folgenden Primitive, um Befehle und Daten an SCTP zu senden:

10.1.1. Initialize

Format: INITIALIZE([local port], [local eligible address list]) Zweck: SCTP-Endpunkt initialisieren. Ergebnis: Lokales Endpunkt-Handle oder Fehlercode.

10.1.2. Associate

Format: ASSOCIATE(local SCTP instance name, destination transport addr, outbound stream count) Zweck: Aufbau einer neuen Assoziation mit einem entfernten SCTP-Endpunkt anfordern. Ergebnis: COMMUNICATION UP (Erfolg) oder COMMUNICATION LOST (Fehler).

10.1.3. Send

Format: SEND(association id, buffer address, byte count [,context] [,stream id] [,life time] [,destination transport address] [,unordered flag] [,no-bundle flag] [,payload protocol-id]) Zweck: Benutzernachricht an SCTP zur Übertragung übergeben. Optionale Parameter: context, stream id, life time, destination address, unordered flag, no-bundle flag, payload protocol-id.

10.1.4. Shutdown

Format: SHUTDOWN(association id) Zweck: Assoziation graceful schließen. Ergebnis: SHUTDOWN COMPLETE oder COMMUNICATION LOST.

10.1.5. Abort

Format: ABORT(association id [,Upper Layer Abort Reason]) Zweck: Assoziation sofort beenden. Ergebnis: COMMUNICATION LOST.

10.1.6. Set Primary

Format: SET PRIMARY(association id, destination transport address) Zweck: Primäre Zieladresse festlegen.

10.1.7. Receive

Format: RECEIVE(association id, buffer address, buffer size) Zweck: Daten von SCTP empfangen. Rückgabewerte: byte count, stream id, stream sequence number, partial flag, delivery number, transport address.

10.1.8. Status

Format: STATUS(association id) Zweck: Aktuellen Assoziationsstatus abfragen. Rückgabewerte: association connection state, destination transport address list, reachability states, receiver window size, congestion window sizes, outbound/inbound streams, primary path.

10.1.9. Change Heartbeat

Format: CHANGE HEARTBEAT(association id, destination transport address, new state [,interval]) Zweck: Heartbeat für bestimmte Zieladresse aktivieren oder deaktivieren.

10.1.10. Request Heartbeat

Format: REQUEST HEARTBEAT(association id, destination transport address) Zweck: Heartbeat an bestimmte Zieladresse senden anfordern.

10.1.11. Get SRTT Report

Format: GET SRTT REPORT(association id, destination transport address) Zweck: SRTT (geglättete Rundlaufzeit) für bestimmte Zieladresse abrufen.

10.1.12. Set Failure Threshold

Format: SET FAILURE THRESHOLD(association id, destination transport address, failure threshold) Zweck: Pfad-Fehlerschwelle festlegen.

10.1.13. Set Protocol Parameters

Format: SET PROTOCOL PARAMETERS(association id, [,destination transport address,] protocol parameter list) Zweck: SCTP-Protokollparameter festlegen. Konfigurierbare Parameter: RTO.Initial, RTO.Min, RTO.Max, RTO.Alpha, RTO.Beta, Max.Burst, Association.Max.Retrans, Path.Max.Retrans, Valid.Cookie.Life, SACK.Delay.

10.1.14. Destroy SCTP Instance

Format: DESTROY(local SCTP instance name) Zweck: SCTP-Instanz zerstören.

10.2. SCTP zu ULP (SCTP-to-ULP)

SCTP verwendet die folgenden Primitive, um Ereignisse an ULP zu melden:

10.2.1. COMMUNICATION UP

Format: COMMUNICATION UP(association id, destination transport address list, outbound stream count, inbound stream count) Auslösebedingungen: Neue Assoziation erfolgreich aufgebaut oder als passive Seite akzeptiert.

10.2.2. DATA ARRIVE

Format: DATA ARRIVE(association id, stream id, stream sequence number, flags, payload protocol identifier, user data) Auslösebedingungen: Benutzerdaten vom Peer empfangen.

10.2.3. COMMUNICATION LOST

Format: COMMUNICATION LOST(association id, status) Auslösebedingungen: Assoziation fehlgeschlagen/abgebrochen, Peer-Endpunkt-Fehler erkannt, ABORT-Chunk empfangen, SHUTDOWN fehlgeschlagen. Mögliche Status: Association exceeded maximum retransmissions, Peer sent ABORT, Peer unexpectedly closed, Resources unavailable.

10.2.4. COMMUNICATION ERROR

Format: COMMUNICATION ERROR(association id, error info) Auslösebedingungen: Behebbarer Kommunikationsfehler erkannt, ERROR-Chunk empfangen, Pfadfehler (aber Assoziation noch aktiv).

10.2.5. RESTART

Format: RESTART(association id, peer's new tag) Auslösebedingungen: Neustart des Peer-Endpunkts erkannt.

10.2.6. SHUTDOWN COMPLETE

Format: SHUTDOWN COMPLETE(association id) Auslösebedingungen: Graceful-Shutdown-Prozess erfolgreich abgeschlossen.

10.2.7. SEND FAILURE

Format: SEND FAILURE(association id, data retrieval id, cause code, context) Auslösebedingungen: Datenübertragung fehlgeschlagen, maximale Neuübertragungen erreicht, Nachrichtenlebensdauer abgelaufen. Ursachencodes: Message expired, Association aborted, Send failed.

10.2.8. NETWORK STATUS CHANGE

Format: NETWORK STATUS CHANGE(association id, destination transport address, new status) Auslösebedingungen: Ziel-Transportadressstatus geändert, Pfad aktiv/inaktiv geworden. Mögliche Status: Active, Inactive, Unconfirmed.


Zusammenfassung

Die ULP-Schnittstelle von SCTP bietet:

  1. Vollständige Assoziationsverwaltung: Initialisierung, Aufbau, Schließen, Abbruch
  2. Flexible Datenübertragung: Unterstützung für Multi-Stream, geordnet/ungeordnet, Lebensdauer
  3. Pfadverwaltung: Heartbeat, Fehlererkennung, Auswahl des primären Pfads
  4. Statusüberwachung: Assoziationsstatus-Abfrage, Netzwerkstatus-Änderungsbenachrichtigungen
  5. Parameterkonfiguration: Laufzeitanpassung von Protokollparametern

Best Practices:

  • Alle SCTP-zu-ULP-Benachrichtigungen ordnungsgemäß behandeln
  • Stream-IDs für logische Datentrennung verwenden
  • Angemessene Nachrichtenlebensdauern festlegen
  • Netzwerkstatusänderungen überwachen und reagieren
  • Graceful Shutdown gegenüber erzwungenem Abbruch bevorzugen