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