5.6. Macchina a stati del peer
Questa sezione definisce un automa a stati finiti che tutte le implementazioni DEVONO osservare (MUST). Ogni nodo DEVE seguirlo per ogni peer. Azioni multiple separate da virgole; stati possono andare a capo.
È accoppiato a [RFC3539] (apertura, chiusura, failover, probe, riapertura). Per Diameter si usano DWR e DWA come watchdog.
I- è la connessione initiator, R- la responder. Senza prefisso, evento o azione è uguale su entrambe.
Stati stabili: Closed, I-Open, R-Open; altri transitori. I-Open e R-Open differiscono solo per il lato trasporto usato.
Il CER parte sempre sulla connessione initiator subito dopo il successo della richiesta. In elezione (election) una connessione si chiude. Resta la responder se Origin-Host locale è lessicograficamente maggiore; altrimenti l'initiator. I messaggi successivi usano la connessione sopravvissuta. Risultato speculare sui due peer.
Per TLS/TCP e DTLS/SCTP, handshake DOVREBBE iniziare in stato chiuso prima di scambi Diameter; CER/CEA solo dopo protezione. TLS DOVREBBE chiudersi passando a closed. Responder obsoleti senza TLS in closed falliscono il primo tentativo; l'initiator può usare TCP/SCTP e negoziare TLS in stato aperto (MAY).
L'automa vincola solo il comportamento visibile sul filo. Implementazioni equivalenti sono conformi.
Tabella di transizione (State transition table)
state event action next state
-----------------------------------------------------------------
Closed Start I-Snd-Conn-Req Wait-Conn-Ack
R-Conn-CER R-Accept, R-Open
Process-CER,
R-Snd-CEA
Wait-Conn-Ack I-Rcv-Conn-Ack I-Snd-CER Wait-I-CEA
I-Rcv-Conn-Nack Cleanup Closed
R-Conn-CER R-Accept, Wait-Conn-Ack/Elect
Process-CER,
Elect
Timeout Error Closed
Wait-I-CEA I-Rcv-CEA Process-CEA I-Open
R-Conn-CER R-Accept, Wait-Returns
Process-CER,
Elect
I-Peer-Disc I-Disc Closed
I-Rcv-Non-CEA Error Closed
Timeout Error Closed
Wait-Conn-Ack/ I-Rcv-Conn-Ack I-Snd-CER,Elect Wait-Returns
Elect I-Rcv-Conn-Nack R-Snd-CEA R-Open
R-Peer-Disc R-Disc Wait-Conn-Ack
R-Conn-CER R-Reject Wait-Conn-Ack/Elect
Timeout Error Closed
Wait-Returns Win-Election I-Disc,R-Snd-CEA R-Open
I-Peer-Disc I-Disc, R-Snd-CEA R-Open
I-Rcv-CEA R-Disc I-Open
R-Peer-Disc R-Disc Wait-I-CEA
R-Conn-CER R-Reject Wait-Returns
Timeout Error Closed
R-Open Send-Message R-Snd-Message R-Open
R-Rcv-Message Process R-Open
R-Rcv-DWR Process-DWR, R-Open
R-Snd-DWA
R-Rcv-DWA Process-DWA R-Open
R-Conn-CER R-Reject R-Open
Stop R-Snd-DPR Closing
R-Rcv-DPR R-Snd-DPA Closing
R-Peer-Disc R-Disc Closed
I-Open Send-Message I-Snd-Message I-Open
I-Rcv-Message Process I-Open
I-Rcv-DWR Process-DWR, I-Open
I-Snd-DWA
I-Rcv-DWA Process-DWA I-Open
R-Conn-CER R-Reject I-Open
Stop I-Snd-DPR Closing
I-Rcv-DPR I-Snd-DPA Closing
I-Peer-Disc I-Disc Closed
Closing I-Rcv-DPA I-Disc Closed
R-Rcv-DPA R-Disc Closed
Timeout Error Closed
I-Peer-Disc I-Disc Closed
R-Peer-Disc R-Disc Closed