Page Index Toggle Pages: 1 Send TopicPrint
Normal Topic UPnP (Read 7290 times)
neo
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 12
Joined: 25. Aug 2008
UPnP
09. Aug 2011 at 11:10
Print Post  
Hi,
da ich mir gerade PhonerLite etwas genauer ansehe, ist mir aufgefallen, dass es bei aktivierter UPnP Option den SIP-Keep Alive per STUN Nachrichten alle 30 Sekunden realisiert. Theoretisch könnte man sich dies auch noch mit UPnP einsparen, oder?

Grüße,
neo
  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11583
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: UPnP
Reply #1 - 09. Aug 2011 at 11:49
Print Post  
Es gibt Router-Implementierungen die ein ausgehendes NAT-Mapping bei Inaktivität schließen. Ein Nachricht vom LAN ins WAN wird trotzdem vom NAT behandelt. Also nur weil im LAN der Port 5060 verwendet wird und per UPnP auch der externe Port 5060 "freigeschaltet" ist, heißt das noch lange nicht, dass die ausgehende Nachricht den externen NAT-Port 5060 hat.
Wenn sich die IP-Adresse ändert, bekäme man das per STUN auch mit. Dieses STUN-Keepalive wird auch nur gesendet, wenn ansonsten keinerlei Aktivität auf diesem Socket stattfindet.
Ich denke nicht, dass diese Variante irgendwie stört. Ich sehe eher einen Vorteil darin.
  
Back to top
WWW  
IP Logged
 
neo
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 12
Joined: 25. Aug 2008
Re: UPnP
Reply #2 - 09. Aug 2011 at 13:16
Print Post  
Das mit der Inaktivität stimmt, macht meiner auch so. Aber das könnte man dann bestimmt auch mit wiederholten UPnP Anfragen offen halten. Das mit den internen/externen Ports trifft doch auch auf die RTP Port Mappings zu oder? Wo ist der Unterschied?
Das mit der IP ist tatsächlich ein Vorteil, wobei ich gerade gesehen habe, dass Phoner die auch per UPnP (GetExternalIPAddress) abfragt.
Hm, also ganz überzeugt bin ich noch nicht. Ich glaub immernoch, man könnte stattdessen UPnP benutzen. Dann würde man natürlich in der Implementierung nicht mehr zwei Fliegen mit einer Klappe schlagen und müsste um ein paar Bytes zum Internet zu sparen eine UPnP Alternative einbauen.
  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11583
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: UPnP
Reply #3 - 09. Aug 2011 at 17:00
Print Post  
Du musst unterscheiden, ob Phoner(Lite) auf einem RTP-Port ein STUN-Request wegschickt oder auf dem SIP-Signalisierungsport. Bei RTP dürfte eigentlich nie ein Keepalive nötig sein, weil da ja permanent Traffic drauf ist. Auf dem SIP-Socket dagegen nicht.
Nimm folgendes Beispiel: PhonerLite registriert sich bei einem Provider. Der interne Port ist 5060 und extern wird auch der Port 5060 per UPnP "freigeschaltet". Die Registrierungsnachricht geht wegen NAT aber extern über den Port 4711 raus. Der SIP-Server sieht diesen Port und natürlich den Port 5060 aus der SIP-Nachricht. Nun gibt es jedoch Gegenstellen, die senden später ein INVITE nicht an den Port 5060 (siehe Contact), sondern an den gemappten Port - hier 4711. Wenn diesen NAT-Mapping wegen Inaktivität gelöscht wird, kommt nichts mehr bei PhonerLite an. Glaub es mir, es gibt die seltsamsten Gegenstellen. Wenn das NAT-Mapping durch solche Keep-Alive Meldungen am Leben erhalten wird, gibt es die wenigsten Schwierigkeiten.

Hast du dir mal angeschaut, wie groß diese Nachricht ist? Wenn also aller 20 Sekunden eine solche Mininachricht rausgeht, "verstopft" die garantiert keine Leitung.
Schau dir mal RFC 5626 an - da wird genau das so vorgeschlagen.
  
Back to top
WWW  
IP Logged
 
neo
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 12
Joined: 25. Aug 2008
Re: UPnP
Reply #4 - 09. Aug 2011 at 17:19
Print Post  
Ok, überzeugt. In einer idealen Welt wärs sicher möglich, aber aus Kompatibilitätsgründen ist der STUN Keep Alive hier wohl besser. Ich kenne einen anderen Client, der den keep-alive per OPTIONS macht, allerdings ist natürlich STUN viel sparsamer. Auf den RFC bin ich auch schon indirekt über eine Newsgroup Nachricht gekommen, wobei dort was ähnliches gefragt wurde. Nämlich warum es überhaupt funktioniert, dass wenn man keep alive an einen Server mit irgendeinem Port (z.b. sipgate:10000) macht, dass dann trotzdem andere Adressen/Ports dieses offene UDP/NAT-Loch nutzen dürfen. Aber ich schätze, so funktioniert das eben. Bei TCP ists sicher schwieriger.
  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11583
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: UPnP
Reply #5 - 10. Aug 2011 at 11:33
Print Post  
Es gibt verschiedene Arten von NAT. Wenn du einen Router mit "symmetrischem NAT" hast, dann geht das nicht, dass man einen STUN-Request zu Server A schickt, und dann der gleiche externe Port für ein Request an Server B. Deshalb geht STUN erst mal prinzipiell nicht bei "symmetrischem NAT".
Das Keep-Alive geht aber nicht zu einem STUN-Server, sondern direkt zur SIP-Gegenstelle. Deshalb gibt es ja eine neuere STUN-RFC, welche ein magic cookie enthält, sodass man schnell SIP von STUN unterscheiden kann.
  
Back to top
WWW  
IP Logged
 
neo
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 12
Joined: 25. Aug 2008
Re: UPnP
Reply #6 - 10. Aug 2011 at 12:31
Print Post  
Stimmt, NAT Typen, ganz vergessen. Angenommen man hätte ein symmetrisches NAT und jemand würde versuchen, dich anzurufen, aber nicht per Festnetz oder mit SIP-Proxy sondern per direkter IP Verbindung. In dem Fall dürfte das ja garnicht gehen, wo wieder mein UPnP ins Spiel kommt Tongue D.h., könnte man in dem Fall auf die Proxybenutzung (wird in Phoner eigentlich Proxy benutzt?) verzichten, wenn der SIP Port mit UPnP aktiv ist (und der SIP Provider auch den richtigen Port beim Register benutzt..)?

Edit: Mir ist gerade aufgefallen, dass Phoner vorhin tatsächlich STUN an den SIP Port (wie beschrieben) gemacht hat, aber später (nach Neustart z.B.) nur noch "keep-alive" an den eigentlichen Stunserver durchgeführt hat, was natürlich sinnlos ist und tatsächlich auch gerade dazu geführt hat, dass mich jemand nicht anrufen konnte. Achja, und noch was: beim STUN an den SIP-Port kam keine Antwort zurück, evtl. unterstützt sipgate das nicht? Vielleicht hat Phoner dann einen Fallback auf den normalen Stunserver gemacht, aber kA ob das dann noch was nutzt.
  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11583
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: UPnP
Reply #7 - 10. Aug 2011 at 13:38
Print Post  
Hast du einen STUN-Server konfiguriert? Wenn ja, dann wird auch kein UPnP gemacht. du solltest also nur eins von beiden konfigurieren.
  
Back to top
WWW  
IP Logged
 
neo
YaBB Newbies
*
Offline


Phoner ist großartig!

Posts: 12
Joined: 25. Aug 2008
Re: UPnP
Reply #8 - 10. Aug 2011 at 19:13
Print Post  
Also irgendwas haut hier nich hin... sorry, dass ich den Thread irgendwie zweckentfremde vom ursprünglichen Thema, aber irgendwie passts schon rein.

Nach außen anrufen kann ich natürlich immer, aber einkommende Anrufe sind nur teilweise möglich, siehe unten. Also, folgendes passiert:

A) STUN an, UPnP aus -> öffentliche IP wird korrekt registriert, aber alle 30 sek erfolgen STUN-Anfragen an stun.sipgate.net:10000 und _nicht_ an den SIP-Server&Port; Ergebnis: Telefon nicht erreichbar nach kurzer Zeit (= klingelt nicht, Pakete kommen nicht an)

B) STUN an, UPnP an -> wie A

C) STUN aus, UPnP aus -> private IP wird im Register geschickt, aber Antwort: '<sip:xxxxx@192.168.20.101:5061>;expires=600;received="sip:83.221.70.xx:5061"', d.h. sipgate ist clever genug und rport/received funktioniert; UND: Phoner sendet kein Keep-Alive, da Sipgate auf dem Sip-Port seinerseits alle 15sek ein keep-alive sendet (kein STUN, nur UDP-Paket an 5061 mit 00000000 als Inhalt), das passierte bei A nicht -> Ergebnis: Telefon bleibt erreichbar!

D) STUN aus, UPnP an -> wie C

Ich habe keine Ahnung, wieso ich es nicht mehr hinkriege, dass STUN über den SIP-Port nach RFC 5626 gesendet wird. Es liegt natürlich daran, dass bei C/D der Kanal noch Aktivität hat durch die eingehenden Keep-Alives von Sipgate, aber gestern wars halt anders, da kamen von Sipgate keine Keep-Alives, soweit ich mich erinnere. Wie auch immer, es funktioniert.

OK, fassen wir mal zusammen.... Phoner registriert sich ohne eingetragenen STUN-Server mit der privaten IP, was nur mit Glück gutgehen kann. Wenn ich aber einen STUN-Server eintrage und damit im Contact alles korrekt wird mit öffentlicher IP, wird ab dann aber nicht STUN auf dem SIP-Port verwendet, sondern STUN mit dem STUN-Server, was schlecht ist, da dann das NAT-Mapping verloren gehen kann (wie in Fall A,B).

In meinem Fall ist die Lösung, auf STUN zu verzichten und die etwas unschöne Angabe der privaten IP im Contact-Feld zu akzeptieren, aber geht's denn nicht besser? Ich glaube, hier ist ein Bug drin. Wenn ein STUN-Server eingetragen wird, sollten dann nicht trotzdem nach der 1. Anfrage an den STUN-Server die Keep-Alives an den SIP-Port gehen? Falls der SIP-Server diese integrierte Form von STUN nicht kennt und dadurch keine Antwort sendet, schadet es ja nicht, da dadurch zumindest das NAT Mapping bestehen bleibt. Allerdings sollte man dann bei fehlender Antwort zusätzlich den angegebenen STUN-Server ab und zu befragen, um einen IP-Wechsel mitzubekommen. Macht das Sinn?
  
Back to top
 
IP Logged
 
Phoner Admin
YaBB Administrator
*****
Offline



Posts: 11583
Location: Germany
Joined: 12. Oct 2003
Gender: Male
Re: UPnP
Reply #9 - 11. Aug 2011 at 14:39
Print Post  
Wenn ein STUN-Server konfiguriert ist, dann wird auch dieser verwendet. Es sollte genügen diesen zu Kontaktieren, um NAT offen zu halten.
Wenn mit aktiviertem UPnP (und deaktiviertem STUN) bei dir trotzdem keine öffentliche IP-Adresse drin steht, dann erlaubt dein Router vielleicht kein UPnP. Du kannst mir da gerne mal den Inhalt des Debug-Fensters per Mail zusenden. Da sollte drin stehen, dass UPnP nicht klappt.
  
Back to top
WWW  
IP Logged
 
Page Index Toggle Pages: 1
Send TopicPrint