Zum Hauptinhalt springen

5.6. Peer-Zustandsautomat

Dieser Abschnitt enthält einen endlichen Automaten, den alle Diameter-Implementierungen beachten MÜSSEN (MUST). Jeder Knoten MUSS ihn pro Peer einhalten. Mehrere Aktionen sind durch Kommas getrennt und können umbrechen; Zustände ebenso.

Er ist eng mit [RFC3539] gekoppelt (Öffnen, Schließen, Failover, Sonden, Wiederöffnen). Für Diameter werden DWR und DWA als Watchdog genutzt.

I- markiert die initiierende Verbindung, R- die responderseitige. Ohne Präfix gilt das Ereignis oder die Aktion auf beiden gleich.

Stabile Zustände: Closed, I-Open, R-Open; alle anderen sind transient. I-Open und R-Open unterscheiden sich nur durch genutzte Transportseite.

Das CER wird immer direkt nach erfolgreichem Verbindungsaufbau auf der initiierenden Seite gesendet. Bei Wahl (election) schließt eine Verbindung. Bleibt die Responder-Verbindung, wenn das lokale Origin-Host lexikographisch größer ist; sonst die Initiator-Verbindung. Weitere Nachrichten laufen über die verbleibende Verbindung. Das Ergebnis ist auf den Peers spiegelbildlich.

Für TLS/TCP und DTLS/SCTP SOLL der Handshake im geschlossenen Zustand vor Diameter-Nachrichten beginnen; CER/CEA erst nach geschütztem Aufbau. TLS SOLL beim Übergang nach closed getrennt werden. Alte Responder ohne TLS im closed-Zustand führen zu fehlgeschlagenem ersten TLS-Versuch; der Initiator darf dann TCP/SCTP nutzen und TLS im offenen Zustand nachziehen (MAY).

Der Automat beschränkt nur das am Draht sichtbare Verhalten. Äquivalente Implementierungen sind konform.

Zustandstabelle (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