10. Interfaccia con il livello superiore (Interface with Upper Layer)
Questo capitolo definisce i servizi di interfaccia tra SCTP e il protocollo del livello superiore (ULP). Si tratta di interfacce astratte; le implementazioni effettive possono variare in base al sistema operativo.
10.1. Da ULP a SCTP (ULP-to-SCTP)
L'ULP utilizza le seguenti primitive per inviare comandi e dati a SCTP:
10.1.1. Initialize
Formato: INITIALIZE([local port], [local eligible address list])
Scopo: Inizializzare un endpoint SCTP.
Risultato: Handle dell'endpoint locale o codice di errore.
10.1.2. Associate
Formato: ASSOCIATE(local SCTP instance name, destination transport addr, outbound stream count)
Scopo: Richiedere l'istituzione di una nuova associazione con un endpoint SCTP remoto.
Risultato: COMMUNICATION UP (successo) o COMMUNICATION LOST (fallimento).
10.1.3. Send
Formato: SEND(association id, buffer address, byte count [,context] [,stream id] [,life time] [,destination transport address] [,unordered flag] [,no-bundle flag] [,payload protocol-id])
Scopo: Passare un messaggio utente a SCTP per la trasmissione.
Parametri opzionali: context, stream id, life time, destination address, unordered flag, no-bundle flag, payload protocol-id.
10.1.4. Shutdown
Formato: SHUTDOWN(association id)
Scopo: Chiudere l'associazione in modo graceful.
Risultato: SHUTDOWN COMPLETE o COMMUNICATION LOST.
10.1.5. Abort
Formato: ABORT(association id [,Upper Layer Abort Reason])
Scopo: Terminare immediatamente l'associazione.
Risultato: COMMUNICATION LOST.
10.1.6. Set Primary
Formato: SET PRIMARY(association id, destination transport address)
Scopo: Impostare l'indirizzo di destinazione primario.
10.1.7. Receive
Formato: RECEIVE(association id, buffer address, buffer size)
Scopo: Ricevere dati da SCTP.
Valori di ritorno: byte count, stream id, stream sequence number, partial flag, delivery number, transport address.
10.1.8. Status
Formato: STATUS(association id)
Scopo: Interrogare lo stato corrente dell'associazione.
Valori di ritorno: 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
Formato: CHANGE HEARTBEAT(association id, destination transport address, new state [,interval])
Scopo: Abilitare o disabilitare l'heartbeat per un indirizzo di destinazione specifico.
10.1.10. Request Heartbeat
Formato: REQUEST HEARTBEAT(association id, destination transport address)
Scopo: Richiedere l'invio di un heartbeat a un indirizzo di destinazione specifico.
10.1.11. Get SRTT Report
Formato: GET SRTT REPORT(association id, destination transport address)
Scopo: Ottenere l'SRTT (tempo di andata e ritorno smoothed) per un indirizzo di destinazione specifico.
10.1.12. Set Failure Threshold
Formato: SET FAILURE THRESHOLD(association id, destination transport address, failure threshold)
Scopo: Impostare la soglia di guasto del percorso.
10.1.13. Set Protocol Parameters
Formato: SET PROTOCOL PARAMETERS(association id, [,destination transport address,] protocol parameter list)
Scopo: Impostare i parametri del protocollo SCTP.
Parametri configurabili: 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
Formato: DESTROY(local SCTP instance name)
Scopo: Distruggere l'istanza SCTP.
10.2. Da SCTP a ULP (SCTP-to-ULP)
SCTP utilizza le seguenti primitive per segnalare eventi all'ULP:
10.2.1. COMMUNICATION UP
Formato: COMMUNICATION UP(association id, destination transport address list, outbound stream count, inbound stream count)
Condizioni di attivazione: Nuova associazione stabilita con successo o accettata come lato passivo.
10.2.2. DATA ARRIVE
Formato: DATA ARRIVE(association id, stream id, stream sequence number, flags, payload protocol identifier, user data)
Condizioni di attivazione: Dati utente ricevuti dal peer.
10.2.3. COMMUNICATION LOST
Formato: COMMUNICATION LOST(association id, status)
Condizioni di attivazione: Associazione fallita/interrotta, guasto dell'endpoint peer rilevato, chunk ABORT ricevuto, SHUTDOWN fallito.
Status possibili: Association exceeded maximum retransmissions, Peer sent ABORT, Peer unexpectedly closed, Resources unavailable.
10.2.4. COMMUNICATION ERROR
Formato: COMMUNICATION ERROR(association id, error info)
Condizioni di attivazione: Errore di comunicazione recuperabile rilevato, chunk ERROR ricevuto, guasto del percorso (ma associazione ancora attiva).
10.2.5. RESTART
Formato: RESTART(association id, peer's new tag)
Condizioni di attivazione: Riavvio dell'endpoint peer rilevato.
10.2.6. SHUTDOWN COMPLETE
Formato: SHUTDOWN COMPLETE(association id)
Condizioni di attivazione: Processo di arresto graceful completato con successo.
10.2.7. SEND FAILURE
Formato: SEND FAILURE(association id, data retrieval id, cause code, context)
Condizioni di attivazione: Trasmissione dati fallita, numero massimo di ritrasmissioni raggiunto, durata di vita del messaggio scaduta.
Codici di causa: Message expired, Association aborted, Send failed.
10.2.8. NETWORK STATUS CHANGE
Formato: NETWORK STATUS CHANGE(association id, destination transport address, new status)
Condizioni di attivazione: Stato dell'indirizzo di trasporto di destinazione modificato, percorso diventato attivo/inattivo.
Status possibili: Active, Inactive, Unconfirmed.
Riepilogo
L'interfaccia ULP di SCTP fornisce:
- Gestione completa delle associazioni: Inizializzazione, stabilimento, chiusura, interruzione
- Trasmissione dati flessibile: Supporto multi-stream, ordinato/non ordinato, durata di vita
- Gestione dei percorsi: Heartbeat, rilevamento guasti, selezione percorso primario
- Monitoraggio dello stato: Interrogazione dello stato dell'associazione, notifiche di cambio stato della rete
- Configurazione dei parametri: Regolazione runtime dei parametri del protocollo
Best practice:
- Gestire correttamente tutte le notifiche da SCTP a ULP
- Utilizzare gli ID stream per la separazione logica dei dati
- Impostare durate di vita dei messaggi ragionevoli
- Monitorare i cambiamenti di stato della rete e rispondere
- Preferire lo shutdown graceful all'interruzione forzata