Passa al contenuto principale

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