Ciao a tutti...
Sto cercando di capire un po' come funziona il voip a livello tecnico, ovvero partendo dal basso... Ho gia' letto un sacco di roba su SIP ed RTP, ma ho ancora qualche lacuna... Per esempio, come fanno gli stream RTP (su UDP) a passare il nat? Perchè se non ho capito male il proxy SIP si occupa solo di mettere in comunicazione 2 host, ma la comunicazione RTP avviene tra gli host (che quasi sicuramente sono entrambi nattati).
Un altro dubbio che ho è come, senza aprire la porta 5060 nel mio cisco 877 il server proxy possa contattarmi per mandarmi il messaggio SIP per comunicarmi ad esempio che mi sta squillando il telefono. Capisco che il telefono quando si registra apre una conunicazione col proxy, ma la traslazione NAT prima o poi si deve chiudere...
Insomma, ho da partire dal basso, perchè ho collegato il telefono, ho fatto QoS, tutto bellissimo e funziona a meraviglio, ma ci sono un sacco di cose che mi sfuggono!
Grazie mille per qualunque aiuto!!!
Dove reperire informazioni sul funzionamento di SIP e RTP
Moderatore: Federico.Lagni
- IsaCab
- Network Emperor
- Messaggi: 349
- Iscritto il: ven 18 gen , 2008 3:45 pm
- Contatta:
Ciao,
Ci sono delle tecniche per ovviare a questo. Qui trovi qualche indicazione su cui approfondire :
http://www.isaserver.it/articoli/20070422-GM10.asp
Ciao Giulio
Usando UDP per il trasporto su rete IP. Il problema è che trasporta all'interno gli IP provati dell'end-point che instaura la connessione con la conseguenza che la ricustruzione del flusso RTP di ritorno verrà fatto appunto su un IP privato causando la perdita dei pacchetti. Risultato : Si parla e non si sente o viceversa o ne uno ne l'altro.Per esempio, come fanno gli stream RTP (su UDP) a passare il nat?
Ci sono delle tecniche per ovviare a questo. Qui trovi qualche indicazione su cui approfondire :
http://www.isaserver.it/articoli/20070422-GM10.asp
Non proprio. Il SIP usa l'SDP (Session Description Protocol) per la il signaling e l'RTP e RTP per il flusso audio.Perchè se non ho capito male il proxy SIP si occupa solo di mettere in comunicazione 2 host
La registrazione (per farla breve) serve solo ad indicare al server SIP dove inoltrare la chiamata. Sempbre molto in breve traduce un numero telefonico (interno) in IP. Una sorta di DNS per il VOIP. Ripeto in breve!!Capisco che il telefono quando si registra apre una conunicazione col proxy
Ciao Giulio
-------
Giulio Martino [ http://www.voipexperts.it ]
Avaya IP Office PA
Microsoft MCP [IsaServer]
Cisco SMB[AM,EN] - SBCS [AM,EN]
Technical Writer e Supporter di ISAServer.it
Articoli - <http://www.isaserver.it/articoli/>
Forum - <http://www.isaserver.it/forum/>
Blog - <http://blogs.dotnethell.it/isacab/>
Giulio Martino [ http://www.voipexperts.it ]
Avaya IP Office PA
Microsoft MCP [IsaServer]
Cisco SMB[AM,EN] - SBCS [AM,EN]
Technical Writer e Supporter di ISAServer.it
Articoli - <http://www.isaserver.it/articoli/>
Forum - <http://www.isaserver.it/forum/>
Blog - <http://blogs.dotnethell.it/isacab/>
-
- Cisco enlightened user
- Messaggi: 154
- Iscritto il: mer 20 giu , 2007 11:20 am
Innanzi tutto, grazie per l'interessamento!!!IsaCab ha scritto:Ciao,
Io attualmente sto parlando del Voip 'domestico' (per esempio quello che fornisce exsorsa)...IsaCab ha scritto: Usando UDP per il trasporto su rete IP. Il problema è che trasporta all'interno gli IP provati dell'end-point che instaura la connessione con la conseguenza che la ricustruzione del flusso RTP di ritorno verrà fatto appunto su un IP privato causando la perdita dei pacchetti. Risultato : Si parla e non si sente o viceversa o ne uno ne l'altro.
Ci sono delle tecniche per ovviare a questo. Qui trovi qualche indicazione su cui approfondire :
http://www.isaserver.it/articoli/20070422-GM10.asp
Nel telefono ho solo configurato il server proxy sip sulla porta remota 5060, e nel router nulla, e tutto funziona a meraviglia. Se non ho capito male il telefono manda un messaggio SIP sulla porta udp per registrarsi al proxy, poi sta in attesa. Quinidi l'unica porta aperta all'esterno è quella aperta dal nat, originata dalle mia richiesta di registrazione. Ieri sera ho notato che quella nat rimane sempre aperta (presumo per via di keep alive), in modo che il proxy possa contattarmi in caso di chiamata. Per semplicita' sto escludendo il firewall (che nel mio caso rimane aperto graze all'ip inspect udp che ho messo nelle regole del firewall). Ammettendo che mi arriva una chiamata, mi arriva un messaggio sip sempre sulla mia porta nattata, con insieme il messaggio SDP, che specifica il tipo di comunicazione (RTP) ed altre cosette (probabilmente sto saltando qualche passaggio intermedio). A questo punto dovrei ricevere un flusso RTP... Ma come fa a passare il firewall, passare il NAT e raggiungere il mio telefono un stream che non ho iniziato io?
Cio' non mi spiega come fa il mio telefono a ricevere lo stream RTP...IsaCab ha scritto: Non proprio. Il SIP usa l'SDP (Session Description Protocol) per la il signaling e l'RTP e RTP per il flusso audio.
Appunto, nel momento in cui mi registro il server proxy si tiene traccia dell'ip e della porta che ha utilizzato il mio router per nattarmi, ed utilizza questo canale per mandarmi ulteriori segnali SIP... Se no non so come spiegarmi che i messaggi sip raggiungono il mio telefono!IsaCab ha scritto: La registrazione (per farla breve) serve solo ad indicare al server SIP dove inoltrare la chiamata. Sempbre molto in breve traduce un numero telefonico (interno) in IP. Una sorta di DNS per il VOIP. Ripeto in breve!!
Sono abbastanza confuso... Sto cercando un po' di libri da leggermi... Per caso hai qualche consiglio??
Grazie mille!!!
- IsaCab
- Network Emperor
- Messaggi: 349
- Iscritto il: ven 18 gen , 2008 3:45 pm
- Contatta:
Ciao,
è chiaro che non è la stessa cosa. Ti ho fatto questo esempio solo per indicarti che una volta stabilita la connessione (che parte dal tuo client verso internet e quindi soggetta solo alle regole di firewall e non di NAT statico) su quella connessione viaggiano i dati.
Pensandoci e ripensadoci prova a pensare al funzionamento del protocollo FTP in modalità Passiva.
Ciao Giulio
Figurati è un piacere ..Innanzi tutto, grazie per l'interessamento!!!
Ok perfetto. Molto probabilmente avrai inserito nella configurazione del telefono anche uno STUN server, oltre che il SIP server.Nel telefono ho solo configurato il server proxy sip sulla porta remota 5060, e nel router nulla, e tutto funziona a meraviglia.
OkSe non ho capito male il telefono manda un messaggio SIP sulla porta udp per registrarsi al proxy, poi sta in attesa
Più che parlare di porte aperte sarebbe più giusto parlare di connessioni attive. Non cambia molto dal browser che va su internet o dal client della posta elettronica.......Quinidi l'unica porta aperta all'esterno è quella aperta dal nat, originata dalle mia richiesta di registrazione
Semplice, lo fa grazie alla registrazione che instaura una connessione con il server. La connessione tra client e server e bidirezionale.Ma come fa a passare il firewall, passare il NAT e raggiungere il mio telefono un stream che non ho iniziato io?
Come fa la posta elettronica ad arrivare sul tuo PC ? Prima che qualcuno si scateninon so come spiegarmi che i messaggi sip raggiungono il mio telefono

Pensandoci e ripensadoci prova a pensare al funzionamento del protocollo FTP in modalità Passiva.
Ciao Giulio
-------
Giulio Martino [ http://www.voipexperts.it ]
Avaya IP Office PA
Microsoft MCP [IsaServer]
Cisco SMB[AM,EN] - SBCS [AM,EN]
Technical Writer e Supporter di ISAServer.it
Articoli - <http://www.isaserver.it/articoli/>
Forum - <http://www.isaserver.it/forum/>
Blog - <http://blogs.dotnethell.it/isacab/>
Giulio Martino [ http://www.voipexperts.it ]
Avaya IP Office PA
Microsoft MCP [IsaServer]
Cisco SMB[AM,EN] - SBCS [AM,EN]
Technical Writer e Supporter di ISAServer.it
Articoli - <http://www.isaserver.it/articoli/>
Forum - <http://www.isaserver.it/forum/>
Blog - <http://blogs.dotnethell.it/isacab/>
-
- Cisco enlightened user
- Messaggi: 154
- Iscritto il: mer 20 giu , 2007 11:20 am
Assolutamente nessuno STUN server, che tra l'altro devo ancora capire come funzionaIsaCab ha scritto: Ok perfetto. Molto probabilmente avrai inserito nella configurazione del telefono anche uno STUN server, oltre che il SIP server.

Premetto che sono abbastanza fresco su una lettura dei protocolli TCP e UDP a basso livello

Invece cambia molto. Da quello che ne so sia il web che la posta elettronica (a parte il fatto che utilizzano il TCP e non l'UDP, i pacchetti UDP non prevedono three way handshaking, sono dei pacchetti 'usa e getta') son protocolli che hanno origine dalla macchina client, ed il server DEVE avere la porta 80 o 110 o 25 raggiungibile. Insomma, comunque la comunicazione sulle porte inizia da me che navigo, solo così il NAT sa fare la corrispondenza tra porte esterne ed il mio ip/porta interno. Invece le porte rdt si aprono solo quando effettivamente c'e' il traffico voce... E se il traffico RTP/UDP non inizia da me??? Come avviene da una chiamata che ricevo?IsaCab ha scritto: Più che parlare di porte aperte sarebbe più giusto parlare di connessioni attive. Non cambia molto dal browser che va su internet o dal client della posta elettronica.......
Sono d'accordo che è bidirezionale, ma quando mi registro, mi rimane il nat aperto della 5060, ma no del traffico RTP.IsaCab ha scritto: Semplice, lo fa grazie alla registrazione che instaura una connessione con il server. La connessione tra client e server e bidirezionale.
Per es il tel manda una richiesta di registrazione da una porta >1024 - per esempio 1200 sulla 5060 del proxy server, il router che è in mezzo, sente che io cerco di uscire fuori, sostituisce l'ip del mittente con quello dell'interfaccia pubblica, sostituisce la porta con una sua, e si tiene in memoria la 'mappatura', in modo che quando il pacchetto ritorna il nat riconosca che io avevo mandato un pacchetto a quell'ip su quella porta e me lo riconsegna a me. Se io non inizio la comunicazione, il nat non puo' fare nulla se non scartare i pacchetti!
Quindi a questo punto ho aperto il 'tunnel' per comunicare tra una mia porta privata dell'ip phone sulla 5060 del server SIP (canale che presumo rimanga aperto grazie a dei keep alive, perchè i nat da quello che ne so hanno politiche che se un canale non serve piu' o non è utilizzato, venga distrutto), il quale puo' comunicarmi che sto per ricevere del traffico RTP. Ma a questo punto che succede??? Se ricevessi e basta il traffico RTP il nat butetrebbe via tutto, perchè non posso ricevere traffico RTP sulla mia porta con la quale ho instaurato la comunicazione SIP (se non sbaglio il traffico RTP viaggia su porte comprese tra 16000qualcosa a 32000qualcosa).
L'FTP in modalita' passiva se non ricordo male è il client che inizia 2 volte la comunicazione, anzichè aspettare la risposta dal server... Quindi se fosse così devo spedire traffico RTP prima di poterlo nuovamente ricevere...IsaCab ha scritto: Pensandoci e ripensadoci prova a pensare al funzionamento del protocollo FTP in modalità Passiva.
Una cosa che non ricordo è se il NAT apre e lascia aperte le porte anche per le porte UDP, che in teoria non essendo pacchetti che normalmente hanno un ritorno, non dovrebbero lasciare varchi aperti nel NAT...
Ps. Quello che ho scritto è quello che mi ricordo dagli studi fatti... Ma potrei anche sbagliarmi, la mia memoria non è un granchè!

Grazie per la pazienza!
- IsaCab
- Network Emperor
- Messaggi: 349
- Iscritto il: ven 18 gen , 2008 3:45 pm
- Contatta:
Ciao ,
o il SIP Server fa anche da NAT o viene utilizzata qualche altra tecnica.
In caso di chiamata inizializzata da te, teoricamente è l'utente remoto ad alzare la cornetta e ad instaurare la connessione RTP. Qui sarebbe carino capire cosa succede analizzando il flusso del traffico SDP. Secondo me, ma mi riprometto di fare dei test (tempo permettendo) viene inviato un messaggio SDP al chiamante che inizializza la sessione RTP.
Se hai modo di analizzare il traffico sarebbe molto interessante.
Ciao Giulio
Se riesci a parlare e a sentire o sei fortunatoAssolutamente nessuno STUN server, che tra l'altro devo ancora capire come funziona

Perfetto. La comunicazione (non nel senso telefonico, ma di connessione9 inizia da te nel momento in cui il tuo telefono si registra sul sip server.Insomma, comunque la comunicazione sulle porte inizia da me che navigo,
Il punto è proprio qui. Il traffico RDP inizia sempre da te, diversamente dovresti aprire le porte sul router.Invece le porte rdt si aprono solo quando effettivamente c'e' il traffico voce... E se il traffico RTP/UDP non inizia da me??? Come avviene da una chiamata che ricevo?
E' tutto SDP fino a che non alzi la cornetta. Appena la alzi instauri una connessione RTP.Come avviene da una chiamata che ricevo?
In caso di chiamata inizializzata da te, teoricamente è l'utente remoto ad alzare la cornetta e ad instaurare la connessione RTP. Qui sarebbe carino capire cosa succede analizzando il flusso del traffico SDP. Secondo me, ma mi riprometto di fare dei test (tempo permettendo) viene inviato un messaggio SDP al chiamante che inizializza la sessione RTP.
Se hai modo di analizzare il traffico sarebbe molto interessante.
Ciao Giulio
-------
Giulio Martino [ http://www.voipexperts.it ]
Avaya IP Office PA
Microsoft MCP [IsaServer]
Cisco SMB[AM,EN] - SBCS [AM,EN]
Technical Writer e Supporter di ISAServer.it
Articoli - <http://www.isaserver.it/articoli/>
Forum - <http://www.isaserver.it/forum/>
Blog - <http://blogs.dotnethell.it/isacab/>
Giulio Martino [ http://www.voipexperts.it ]
Avaya IP Office PA
Microsoft MCP [IsaServer]
Cisco SMB[AM,EN] - SBCS [AM,EN]
Technical Writer e Supporter di ISAServer.it
Articoli - <http://www.isaserver.it/articoli/>
Forum - <http://www.isaserver.it/forum/>
Blog - <http://blogs.dotnethell.it/isacab/>
-
- Cisco enlightened user
- Messaggi: 154
- Iscritto il: mer 20 giu , 2007 11:20 am
Ciao!!IsaCab ha scritto: Se riesci a parlare e a sentire o sei fortunatoo il SIP Server fa anche da NAT o viene utilizzata qualche altra tecnica.
Ti giuro che non so come fa a funzionare!!!
Dovrei mettere un hub ed un portatile e far girare un po ethreal...
Oppure fare un debug dei pacchetti dal cisco...
Ok, ma inizia una sessione udp sulla 5060... Che permette messaggi SIP e SDP, ma non rtp... Ammesso che un messaggio SDP non dica al mio telefono di mandare il segnale RTP su una determinata porta, porta che il nat apre ed attraverso la quale il server puo' 'parlarmi', ma non dovrebbe essere una comunicazione full duplex? Cavolo, che casino!IsaCab ha scritto: Perfetto. La comunicazione (non nel senso telefonico, ma di connessione inizia da te nel momento in cui il tuo telefono si registra sul sip server.

Ok, iniziera' pure da me, ma nel caso di comunicazione tra 2 telefoni SIP nattati, come le comunicazioni che ti fanno fare gratuite fatte dallo stesso provider VOIP (e ti giuro che pure questo funziona), chi cavolo inizia la connessione? Chi inizia per primo? Non credo che sia possibile fare una connessione RTP diretta, in quanto io non posso iniziare perchè non so che porte ha l'altro aperte, idem l'altro. Insomma, no traffico RTP!!! Ma se non ho capito male l'SDP non è nient'altro che del testo nel messaggio SIP, no? Il SIP si occupa degli stati della sessione, mentre l'SDP si preoccupa di stabilire porte, protocolli, porte, etc... Giusto?IsaCab ha scritto: Il punto è proprio qui. Il traffico RDP inizia sempre da te, diversamente dovresti aprire le porte sul router.
Nel mio sao è possibile che via SDP si utilizzi un server tipo un proxy RTP, che mette in comunicazione i 2 dispositivi nattati?
Oppure i router (2 cisco 877w) fanno della magia nera con i pacchetti

Se utilizzasse un proxy RTP, le chiamate tra utenti dello stesso provider dovrebbero essere estremamente lenti, in quanto i pacchetti avrebbero una latenza doppia (il tempo delle due connessioni a raggiungere il proxy).
Eppure la voce tra i 2 dispositivi non è affatto peggio delle chiamate ferso i numeri normali...
Mi sa che solo ethreal sa dirmi che succede

Ed è proprio nell'RTP il divertenteIsaCab ha scritto: E' tutto SDP fino a che non alzi la cornetta. Appena la alzi instauri una connessione RTP.

Infatti, appena ho un po di tempo mi metto giu', perchè a me piace capire come funzionano le cose, e sto discorso mi interessa moltoIsaCab ha scritto: In caso di chiamata inizializzata da te, teoricamente è l'utente remoto ad alzare la cornetta e ad instaurare la connessione RTP. Qui sarebbe carino capire cosa succede analizzando il flusso del traffico SDP. Secondo me, ma mi riprometto di fare dei test (tempo permettendo) viene inviato un messaggio SDP al chiamante che inizializza la sessione RTP.
Se hai modo di analizzare il traffico sarebbe molto interessante.

Metto un hubbino tra telefono e cisco e lancio ethreal...
Leggere i log del debug dei pacchetti ip del cisco mi fa letteralmente impazzire... Molto meglio la presentazione di ethreal...
- IsaCab
- Network Emperor
- Messaggi: 349
- Iscritto il: ven 18 gen , 2008 3:45 pm
- Contatta:
Ciao,
Attendiamo tue news allora ...... (a chi fa prima
)
Ciao Giulio
Il SIP è : SDP + RTPChe permette messaggi SIP e SDP, ma non rtp
E' compito del server SIPOk, iniziera' pure da me, ma nel caso di comunicazione tra 2 telefoni SIP nattati, come le comunicazioni che ti fanno fare gratuite fatte dallo stesso provider VOIP (e ti giuro che pure questo funziona), chi cavolo inizia la connessione? Chi inizia per primo?
Il SIP usa l'SDP per la parte di sessione e l'RTP per il flusso audioIl SIP si occupa degli stati della sessione, mentre l'SDP si preoccupa di stabilire porte, protocolli, porte, etc... Giusto?
Non solo nel tuo caso. E' il uno dei compiti del server SIP o Proxy SIPNel mio sao è possibile che via SDP si utilizzi un server tipo un proxy RTP, che mette in comunicazione i 2 dispositivi nattati?
Il processo completo lo puoi capire solo leggendo la comunicazione SDP. Anche perchè l'RTP ha poco da leggere. Vedi RFC relativo.Ed è proprio nell'RTP il divertente
Approccio che sposo in pieno. E' molto utile capire fino in fondo come funzionano le cose, oltre che interessante.Infatti, appena ho un po di tempo mi metto giu', perchè a me piace capire come funzionano le cose, e sto discorso mi interessa molto
Metto un hubbino tra telefono e cisco e lancio ethreal...
Attendiamo tue news allora ...... (a chi fa prima

Ciao Giulio
-------
Giulio Martino [ http://www.voipexperts.it ]
Avaya IP Office PA
Microsoft MCP [IsaServer]
Cisco SMB[AM,EN] - SBCS [AM,EN]
Technical Writer e Supporter di ISAServer.it
Articoli - <http://www.isaserver.it/articoli/>
Forum - <http://www.isaserver.it/forum/>
Blog - <http://blogs.dotnethell.it/isacab/>
Giulio Martino [ http://www.voipexperts.it ]
Avaya IP Office PA
Microsoft MCP [IsaServer]
Cisco SMB[AM,EN] - SBCS [AM,EN]
Technical Writer e Supporter di ISAServer.it
Articoli - <http://www.isaserver.it/articoli/>
Forum - <http://www.isaserver.it/forum/>
Blog - <http://blogs.dotnethell.it/isacab/>
-
- Cisco enlightened user
- Messaggi: 154
- Iscritto il: mer 20 giu , 2007 11:20 am
http://it.wikipedia.org/wiki/Session_In ... n_Protocol
Qua dice che SIP e SDP sono 2 cose separate per nome, ma in realta' il pacchetto è lo stesso... Quindi i messaggi SDP, sono effettivamente messaggi SIP, ed i messaggi SIP non c'entrano nulla con l'RTP... Infatti facendo la class-map per beccare i messaggi SIP, matcha proprio solo i pacchetti di comunicazione (ma nulla di RTP).
Cmq queste sono le porte nattate appena acceso il telefono:
udp x.x.x.x:1025 192.168.1.11:1025 193.204.114.232:123 193.204.114.232:123
udp x.x.x.x:1032 192.168.1.11:5060 87.253.102.109:5060 87.253.102.109:5060
dove x.x.x.x è il mio ip pubblico, 192.168.1.11 è l'ip locale del telefono, 193.204.114.232 è l'ip del server NTP (configurato nel telefono), e dove 87.253.102.109 è il mio server proxy SIP
Invece una volta instaurata una connessione, si aggiunge questa:
udp x.x.x.x:10002 192.168.1.11:10002 87.253.102.101:30578 87.253.102.101:30578
E l'87.253.102.101 non so chi diavolo sia! Probabilmente è il famoso server RTP che mi permette di passare il nat, passato dai messaggi SDP!
La mia ricerca per sta sera finisce qua, ho ancora un papiro da studiare su come usare il mio 877W come server DNS
Gia' che mi è costato caro, gli faccio fare piu' cose possibili!!!
Finchè non ho la cpu al 100%, non smetto di aggiungerci roba 
Ho notato che il telefono voip ha una porta ethernet chiamata PC; sarebbe troppo bello se fosse un hubbettino
Appena ho un po' di tempo, riprendo gli esperimenti!
IsaCab, grazie mille per il supporto!
Qua dice che SIP e SDP sono 2 cose separate per nome, ma in realta' il pacchetto è lo stesso... Quindi i messaggi SDP, sono effettivamente messaggi SIP, ed i messaggi SIP non c'entrano nulla con l'RTP... Infatti facendo la class-map per beccare i messaggi SIP, matcha proprio solo i pacchetti di comunicazione (ma nulla di RTP).
Cmq queste sono le porte nattate appena acceso il telefono:
udp x.x.x.x:1025 192.168.1.11:1025 193.204.114.232:123 193.204.114.232:123
udp x.x.x.x:1032 192.168.1.11:5060 87.253.102.109:5060 87.253.102.109:5060
dove x.x.x.x è il mio ip pubblico, 192.168.1.11 è l'ip locale del telefono, 193.204.114.232 è l'ip del server NTP (configurato nel telefono), e dove 87.253.102.109 è il mio server proxy SIP
Invece una volta instaurata una connessione, si aggiunge questa:
udp x.x.x.x:10002 192.168.1.11:10002 87.253.102.101:30578 87.253.102.101:30578
E l'87.253.102.101 non so chi diavolo sia! Probabilmente è il famoso server RTP che mi permette di passare il nat, passato dai messaggi SDP!
La mia ricerca per sta sera finisce qua, ho ancora un papiro da studiare su come usare il mio 877W come server DNS

Gia' che mi è costato caro, gli faccio fare piu' cose possibili!!!


Ho notato che il telefono voip ha una porta ethernet chiamata PC; sarebbe troppo bello se fosse un hubbettino

Appena ho un po' di tempo, riprendo gli esperimenti!
IsaCab, grazie mille per il supporto!