PeterPawn
IPPF-Urgestein
- Mitglied seit
- 10 Mai 2006
- Beiträge
- 15,619
- Punkte für Reaktionen
- 1,947
- Punkte
- 113
Auch eine Signalisierung eines eingehenden Anrufs im SIP-Protokoll umfaßt ja eine Bestätigung seitens des "SIP-Clients". Wenn es bei 1&1 tatsächlich Probleme bei mehrfachen Registrierungen geben sollte, weil nur der erste registrierte Client eine entsprechende INVITE-Message erhält (und quittiert), ist das nicht automatisch mit der Existenz einer älteren Registrierung, die auf eine nicht mehr zugewiesene IP-Adresse verweist, zu vergleichen.
Wenn der Provider auf dieser IP-Adresse die Signalisierung versucht und es kommt dort keine Antwort (auch keine negative), dann dauert es eben bis zum SIP-Timeout, bis der nächste registrierte Client benachrichtigt wird (solange 1&1 da keinen "Parallelruf" - nicht wirklich, ist immer noch dieselbe Rufnummer - anbietet). Das merkt der Anrufer dann in der Regel daran, daß es bis zum "RINGING" etwas länger braucht - gibt es keine weitere Registrierung, kommt mit dieser Verzögerung durch das Timeout dann eben eine andere Signalisierung für den aufgetretenen Fehler.
Ein "UNREGISTER" halte ich also für überflüssig - auch das zuständige RFC 3261 kennt kein "UNREGISTER". Mit etwas gutem Willen kann man Punkt 6 des Registrierungsprozesses (Abschnitt 10.3, "contact=*,expires=0") noch als "UNREGISTER" verstehen. Es gibt aber Regeln, wann und wie das "refresh" für ein Binding erfolgen soll (Abschnitt 10.2.4).
Die FRITZ!Box sendet ja ihrerseits einen "Vorschlag", wie lange aus ihrer Sicht die Registrierung gültig sein soll (ttl-Parameter in der voip.cfg für die Rufnummer (uaX)) ... wenn ein Provider seinerseits eine kürzere Zeit festlegt, ist das auch noch in Ordnung, eine längere hingegen ist nach Punkt 7 des Ablaufs der Registrierung nach RFC nicht vorgesehen.
Wenn dem Registrar die angebotene Zeitspanne nicht groß genug ist, muß er mit "423" antworten und nicht seinerseits einfach einen höheren Wert in seiner Antwort senden bzw. die FRITZ!Box sollte diesen ignorieren, wenn er größer ist als der eigene Vorschlag (da wäre das Beachten der Vorgabe des Providers dann vielleicht wirklich ein Firmware-Fehler).
Keine Ahnung, wie groß die SIP-Timeouts (für ein INVITE) bei den verschiedenen Anbietern sein mögen ... wenn aber einer mehrfache Registrierungen für dieselbe Rufnummer auch mit unterschiedlichen "Call-ID"s zuläßt (das wären dann ja unterschiedliche Endgeräte und nicht nur unterschiedliche "Adressen", auf denen derselbe SIP-Client zu erreichen ist), dann wird er sicherlich auch kein 60 Sekunden-Timeout verwenden und damit ein "totes" Binding recht zeitnah auch als solches erkennen, wenn ein Anruf signalisiert werden soll und ein neueres Binding existiert.
Man muß sich also (meiner Ansicht und Erfahrung nach) nur um die rechtzeitige Registrierung mit der neuen IP-Adresse kümmern. Wenn der vorgelagerte Router eine DynDNS-Aktualisierung kennt, nimmt man eben die und leitet sie auf einen internen HTTP-Server um, der hinter diesem einzelnen Aufruf dann weitere (für den "richtigen" DynDNS-Service und ggf. für die FRITZ!Box) ausführt.
Die simpelste Form bleibt es aber weiterhin, das FRITZ!OS zu erweitern und in regelmäßigen Intervallen (die max. denkbare "Unerreichbarkeit" der Telefonnummer) einfach eine STUN-Abfrage zu machen und bei Wechsel der öffentlichen IP-Adresse (auch da muß man natürlich aufpassen, wenn es eine gesonderte Verbindung für die IP-Telefonie gibt, was wirklich gewechselt hat) ruft man dann einfach "voipd -U" und "voipd -R" auf (i.d.R. reicht auch letzteres).
EDIT: Wobei natürlich auch das Anpassen von "ttl" schon helfen sollte, solange man diese nicht unter 5 Minuten drückt.
Wenn der Provider auf dieser IP-Adresse die Signalisierung versucht und es kommt dort keine Antwort (auch keine negative), dann dauert es eben bis zum SIP-Timeout, bis der nächste registrierte Client benachrichtigt wird (solange 1&1 da keinen "Parallelruf" - nicht wirklich, ist immer noch dieselbe Rufnummer - anbietet). Das merkt der Anrufer dann in der Regel daran, daß es bis zum "RINGING" etwas länger braucht - gibt es keine weitere Registrierung, kommt mit dieser Verzögerung durch das Timeout dann eben eine andere Signalisierung für den aufgetretenen Fehler.
Ein "UNREGISTER" halte ich also für überflüssig - auch das zuständige RFC 3261 kennt kein "UNREGISTER". Mit etwas gutem Willen kann man Punkt 6 des Registrierungsprozesses (Abschnitt 10.3, "contact=*,expires=0") noch als "UNREGISTER" verstehen. Es gibt aber Regeln, wann und wie das "refresh" für ein Binding erfolgen soll (Abschnitt 10.2.4).
Die FRITZ!Box sendet ja ihrerseits einen "Vorschlag", wie lange aus ihrer Sicht die Registrierung gültig sein soll (ttl-Parameter in der voip.cfg für die Rufnummer (uaX)) ... wenn ein Provider seinerseits eine kürzere Zeit festlegt, ist das auch noch in Ordnung, eine längere hingegen ist nach Punkt 7 des Ablaufs der Registrierung nach RFC nicht vorgesehen.
Wenn dem Registrar die angebotene Zeitspanne nicht groß genug ist, muß er mit "423" antworten und nicht seinerseits einfach einen höheren Wert in seiner Antwort senden bzw. die FRITZ!Box sollte diesen ignorieren, wenn er größer ist als der eigene Vorschlag (da wäre das Beachten der Vorgabe des Providers dann vielleicht wirklich ein Firmware-Fehler).
Keine Ahnung, wie groß die SIP-Timeouts (für ein INVITE) bei den verschiedenen Anbietern sein mögen ... wenn aber einer mehrfache Registrierungen für dieselbe Rufnummer auch mit unterschiedlichen "Call-ID"s zuläßt (das wären dann ja unterschiedliche Endgeräte und nicht nur unterschiedliche "Adressen", auf denen derselbe SIP-Client zu erreichen ist), dann wird er sicherlich auch kein 60 Sekunden-Timeout verwenden und damit ein "totes" Binding recht zeitnah auch als solches erkennen, wenn ein Anruf signalisiert werden soll und ein neueres Binding existiert.
Man muß sich also (meiner Ansicht und Erfahrung nach) nur um die rechtzeitige Registrierung mit der neuen IP-Adresse kümmern. Wenn der vorgelagerte Router eine DynDNS-Aktualisierung kennt, nimmt man eben die und leitet sie auf einen internen HTTP-Server um, der hinter diesem einzelnen Aufruf dann weitere (für den "richtigen" DynDNS-Service und ggf. für die FRITZ!Box) ausführt.
Die simpelste Form bleibt es aber weiterhin, das FRITZ!OS zu erweitern und in regelmäßigen Intervallen (die max. denkbare "Unerreichbarkeit" der Telefonnummer) einfach eine STUN-Abfrage zu machen und bei Wechsel der öffentlichen IP-Adresse (auch da muß man natürlich aufpassen, wenn es eine gesonderte Verbindung für die IP-Telefonie gibt, was wirklich gewechselt hat) ruft man dann einfach "voipd -U" und "voipd -R" auf (i.d.R. reicht auch letzteres).
EDIT: Wobei natürlich auch das Anpassen von "ttl" schon helfen sollte, solange man diese nicht unter 5 Minuten drückt.
Zuletzt bearbeitet: