Zusammenfassung

  • RFC 3680 modelliert den Registrierungszustand einer Adresse unabhängig von der Menge ihrer Kontakte. Auch ohne registrierte Kontakte hat die Adresse den definierten Zustand init.
  • Viele Benachrichtigungen enthalten nur geänderte Kontakte. Der Abonnent muss Versionen der Reihe nach anwenden und bei einer Lücke eine vollständige Aktualisierung anfordern. Das beweist weder Anwesenheit noch ein aktives Gerät oder einen erfolgreichen Anruf.

Eine leere Kontaktliste war nicht gleichbedeutend mit einem fehlenden Zustand. Nach RFC 3680 blieb eine Address-of-Record (AoR) ohne gebundene Kontakte im Zustand init. Diese Zustandsmaschine gehörte zur Adresse. Jeder Kontakt hatte eine eigene Maschine, die mit der Registrierung entstand und beim Entfernen des Kontakts gelöscht wurde.

RFC 3680 erschien im März 2004 und definierte das SIP-Ereignispaket reg. Ein autorisierter Abonnent sendete SUBSCRIBE und erhielt Registrierungsinformationen als application/reginfo+xml. Die erste Benachrichtigung konnte den vollständigen Zustand enthalten. Spätere Meldungen umfassten typischerweise nur Änderungen. Jedes Dokument kennzeichnete full oder partial und trug eine Versionsnummer: innerhalb eines Abonnements begann sie bei null und stieg je Dokument um eins.

Teilbenachrichtigungen sparen Übertragung, überlassen dem Abonnenten aber die fortlaufende Rekonstruktion. Da unveränderte Kontakte nicht erneut aufgeführt werden, muss der Client eine Tabelle pflegen und Meldungen sequenziell zusammenführen. Die unmittelbar nächste Version wird verarbeitet; eine ältere wird verworfen. Überspringt die Nummer eine Version, empfiehlt RFC 3680 eine Aktualisierung, die eine vollständige Zustandsmeldung auslöst. Ohne diese Wiederherstellung kann die lokale Tabelle schlüssig aussehen und dennoch eine Änderung unterschlagen.

Die AoR-Zustandsmaschine erklärt den letzten Kontakt: Mit der ersten Registrierung wechselt die Adresse von init zu active. Solange mindestens ein Kontakt gebunden bleibt, ist sie aktiv. Läuft der letzte Kontakt ab oder wird er entfernt, folgt terminated und unmittelbar danach init; dieser letzte Übergang darf nicht per NOTIFY gemeldet werden. Das Ende des einzelnen Kontakts kann dagegen als Kontaktänderung erscheinen. Die Bindung endet, die Adresse behält einen deutbaren Zustand.

Active ist ein Registrierungsfakt, keine Aussage über eine Person. Der Zustand beweist weder, dass jemand erreichbar sein möchte, noch dass ein Endgerät gerade eingeschaltet ist oder ein INVITE zugestellt wird. RFC 3856 definiert SIP Presence als eigenes Ereignispaket. Registrierung kann Rohinformation für zusammengesetzte Präsenz liefern, ist aber nicht mit ihr identisch. Eine Spezifikation belegt auch nicht, dass eine konkrete Implementierung sie befolgt.

RFC 3680 machte Registrierungsänderungen für autorisierte Beobachter sichtbar, ohne den leeren Fall undefiniert zu lassen, und bot nach verlorenen Deltas einen Weg zur Neusynchronisierung. Die betriebliche Frage lautet daher nicht nur: „Gibt es einen Kontakt?“ Sondern auch: „Bis zu welcher Abonnementversion reicht diese Sicht, fehlt eine Aktualisierung und was kann Registrierungsinformation tatsächlich belegen?“

Quellen