Aller au contenu principal

10. Interface avec la couche supérieure (Interface with Upper Layer)

Ce chapitre définit les services d'interface entre SCTP et le protocole de couche supérieure (ULP). Il s'agit d'interfaces abstraites ; les implémentations réelles peuvent varier selon le système d'exploitation.

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

L'ULP utilise les primitives suivantes pour envoyer des commandes et des données à SCTP :

10.1.1. Initialize

Format : INITIALIZE([local port], [local eligible address list]) Objectif : Initialiser un point de terminaison SCTP. Résultat : Handle de point de terminaison local ou code d'erreur.

10.1.2. Associate

Format : ASSOCIATE(local SCTP instance name, destination transport addr, outbound stream count) Objectif : Demander l'établissement d'une nouvelle association avec un point de terminaison SCTP distant. Résultat : COMMUNICATION UP (succès) ou COMMUNICATION LOST (échec).

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]) Objectif : Transmettre un message utilisateur à SCTP pour transmission. Paramètres optionnels : context, stream id, life time, destination address, unordered flag, no-bundle flag, payload protocol-id.

10.1.4. Shutdown

Format : SHUTDOWN(association id) Objectif : Fermer gracieusement l'association. Résultat : SHUTDOWN COMPLETE ou COMMUNICATION LOST.

10.1.5. Abort

Format : ABORT(association id [,Upper Layer Abort Reason]) Objectif : Terminer immédiatement l'association. Résultat : COMMUNICATION LOST.

10.1.6. Set Primary

Format : SET PRIMARY(association id, destination transport address) Objectif : Définir l'adresse de destination principale.

10.1.7. Receive

Format : RECEIVE(association id, buffer address, buffer size) Objectif : Recevoir des données de SCTP. Valeurs de retour : byte count, stream id, stream sequence number, partial flag, delivery number, transport address.

10.1.8. Status

Format : STATUS(association id) Objectif : Interroger l'état actuel de l'association. Valeurs de retour : 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]) Objectif : Activer ou désactiver le heartbeat pour une adresse de destination spécifique.

10.1.10. Request Heartbeat

Format : REQUEST HEARTBEAT(association id, destination transport address) Objectif : Demander l'envoi d'un heartbeat à une adresse de destination spécifique.

10.1.11. Get SRTT Report

Format : GET SRTT REPORT(association id, destination transport address) Objectif : Obtenir le SRTT (temps d'aller-retour lissé) pour une adresse de destination spécifique.

10.1.12. Set Failure Threshold

Format : SET FAILURE THRESHOLD(association id, destination transport address, failure threshold) Objectif : Définir le seuil d'échec du chemin.

10.1.13. Set Protocol Parameters

Format : SET PROTOCOL PARAMETERS(association id, [,destination transport address,] protocol parameter list) Objectif : Définir les paramètres du protocole SCTP. Paramètres configurables : 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) Objectif : Détruire l'instance SCTP.

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

SCTP utilise les primitives suivantes pour signaler des événements à l'ULP :

10.2.1. COMMUNICATION UP

Format : COMMUNICATION UP(association id, destination transport address list, outbound stream count, inbound stream count) Conditions de déclenchement : Nouvelle association établie avec succès ou acceptée en tant que côté passif.

10.2.2. DATA ARRIVE

Format : DATA ARRIVE(association id, stream id, stream sequence number, flags, payload protocol identifier, user data) Conditions de déclenchement : Données utilisateur reçues du pair.

10.2.3. COMMUNICATION LOST

Format : COMMUNICATION LOST(association id, status) Conditions de déclenchement : Association échouée/abandonnée, échec du point de terminaison du pair détecté, chunk ABORT reçu, échec de SHUTDOWN. Status possibles : Association exceeded maximum retransmissions, Peer sent ABORT, Peer unexpectedly closed, Resources unavailable.

10.2.4. COMMUNICATION ERROR

Format : COMMUNICATION ERROR(association id, error info) Conditions de déclenchement : Erreur de communication récupérable détectée, chunk ERROR reçu, échec de chemin (mais association toujours active).

10.2.5. RESTART

Format : RESTART(association id, peer's new tag) Conditions de déclenchement : Redémarrage du point de terminaison du pair détecté.

10.2.6. SHUTDOWN COMPLETE

Format : SHUTDOWN COMPLETE(association id) Conditions de déclenchement : Processus d'arrêt gracieux terminé avec succès.

10.2.7. SEND FAILURE

Format : SEND FAILURE(association id, data retrieval id, cause code, context) Conditions de déclenchement : Échec de transmission des données, nombre maximum de retransmissions atteint, durée de vie du message expirée. Codes de cause : Message expired, Association aborted, Send failed.

10.2.8. NETWORK STATUS CHANGE

Format : NETWORK STATUS CHANGE(association id, destination transport address, new status) Conditions de déclenchement : État de l'adresse de transport de destination modifié, chemin devenu actif/inactif. Status possibles : Active, Inactive, Unconfirmed.


Résumé

L'interface ULP de SCTP fournit :

  1. Gestion complète des associations : Initialisation, établissement, fermeture, abandon
  2. Transmission de données flexible : Support multi-flux, ordonné/non ordonné, durée de vie
  3. Gestion des chemins : Heartbeat, détection d'échec, sélection du chemin principal
  4. Surveillance de l'état : Interrogation de l'état de l'association, notifications de changement d'état réseau
  5. Configuration des paramètres : Ajustement des paramètres de protocole à l'exécution

Meilleures pratiques :

  • Gérer correctement toutes les notifications SCTP vers ULP
  • Utiliser les ID de flux pour la séparation logique des données
  • Définir des durées de vie de message raisonnables
  • Surveiller les changements d'état réseau et réagir
  • Préférer l'arrêt gracieux à l'abandon forcé