Hi all,
finally I figured out how to change the sdp - part of the message by using force_rtpproxy.
All works fine, I can make calls in both directions, but i still got two problems:
1. If someone from outside(VoIP - Provider) calls my UA, i have a ~10 sec. delay before i hear audio. - i checked my dumpfile, and saw that the delay is between the last 180 Ringing and the 200 OK. (- However RTP - Packets are sent before the 200 OK, after a 183-Message. Dont understand why but I dont think it matters that much.)
2. If the call is terminated from outside(VoIP - Provider) the BYE message is not handled correctly by SER. - the previous messages from the Voip provider have all a via HF with the private IP of my UA. The BYE message doesnt have such a Via. All other Via and RR fields are present. - also the BYE uri is somewaht strange. Instead of sip:123456@privateIPofUA it contains sip:123456@publicIPofSER.
Thanks in advance for any help Smile
Best regards Sebastian.
-----Ursprüngliche Nachricht----- Von: "Greger V. Teigre" greger@teigre.com Gesendet: 10.08.06 15:41:31 An: Sebastian Gabris Sebastian.Gabris@web.de CC: serusers@lists.iptel.org Betreff: Re: [Serusers] Multihomed SER & NAT
fix_nated_contact() is meant for changing the IP address of the Contact
header when SER has a public address and the UA has a private (i.e. behind NAT). This means that it will rewrite Contact to contain the source ip address:port found in the UDP/TCP header. This is probably correct, because I assume the UA cannot be reached from the outside anyway. If you record-route, subsequent requests should go through your ser.
If you have problems with responses not being returned, have a look at Via headers as they control how answers to i.e an INVITE are routed back to the UA. You may want to have a look at the rr module double record route parameter to make sure that SER creates one record-route for the internal and one for the external interface. g-)
Sebastian Gabris wrote: After reading a bit more mails, I came to two possible problems:
- fix_nated_contact() needs a registrar to work properly
I dont use a registrar, since i register at the VoIP - Provider. or 2. fix_nated_contact() is not ment to be used on this scenario Any ideas on this? Sebastian
Hi everybody, need some help on nattraversal. i use a multihomed SER, one private IP & one public IP. MyUA(privateIP) <-> (privateIP)SER(publicIP) <-> UA-(VoIP - Provider, pubicIP) If i try to make a call from private net to public net, SER doesnt change the contact address. He changes the sdp - connection field but he, puts in the wrong IP - address. Instead o writing down his public IP, SER writes his private IP. Then SER forwards the call on his public interface to the provider, which will get wrong Contact & SDP information. After reviewing my logs i saw that SER does the nat_uac_test, but the fix_nat_contact & fix_sdp dont work dont do what they should do :) Here are the important bits of my config: fork=yes log_stderror=no mhomed=1 listen=10.x.x.x listen=193.x.x.x loadmodule "/usr/lib/ser/modules/nathelper.so" modparam("usrloc", "db_mode", 0) modparam("registrar", "nat_flag", 6) modparam("nathelper", "natping_interval", 30) # Ping interval 30 s modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind NAT if (nat_uac_test("3")) { if (method == "REGISTER" || ! search("^Record-Route:")) { log(2,"LOG: Someone trying to register from private IP, rewriting\n"); fix_nated_contact(); # Rewrite contact with source IP of signalling if (method == "INVITE") { fix_nated_sdp("1"); # Add direction=active to SDP }; force_rport(); # Add rport parameter to topmost Via setflag(6); # Mark as NATed }; }; ... and so on. ______________________________________________________________ Verschicken Sie romantische, coole und witzige Bilder per SMS! Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193 _______________________________________________ Serusers mailing list Serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! http://smartsurfer.web.de/?mc=100071&distributionid=000000000071 _______________________________________________ Serusers mailing list Serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
______________________________________________________________ Verschicken Sie romantische, coole und witzige Bilder per SMS! Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193
finally I figured out how to change the sdp - part of the message by using force_rtpproxy.
All works fine, I can make calls in both directions, but i still got two problems:
- If someone from outside(VoIP - Provider) calls my UA, i have a ~10 sec. delay before i hear audio.
- i checked my dumpfile, and saw that the delay is between the last 180 Ringing and the 200 OK.
(- However RTP - Packets are sent before the 200 OK, after a 183-Message. Dont understand why but I dont think it matters that much.)
183 is early media probably sent by your UA. The call is not established two-way until 200 OK. You don't say in which end you don't hear audio...
- If the call is terminated from outside(VoIP - Provider) the BYE message is not handled correctly by SER.
- the previous messages from the Voip provider have all a via HF with the private IP of my UA. The BYE message doesnt have such a Via. All other Via and RR fields are present.
- also the BYE uri is somewaht strange. Instead of sip:123456@privateIPofUA it contains sip:123456@publicIPofSER.
Look in the initial INVITE Record-Route set. BYE is a new request and is created with Route headers copied from the Record-Route set established as part of the establishment of the dialog. You don't provide enough info about what is happening to the BYE, just your observations. Send a SIP trace. g-)
Thanks in advance for any help Smile
Best regards Sebastian.
-----Ursprüngliche Nachricht----- Von: "Greger V. Teigre" greger@teigre.com Gesendet: 10.08.06 15:41:31 An: Sebastian Gabris Sebastian.Gabris@web.de CC: serusers@lists.iptel.org Betreff: Re: [Serusers] Multihomed SER & NAT
fix_nated_contact() is meant for changing the IP address of the Contact
header when SER has a public address and the UA has a private (i.e. behind NAT). This means that it will rewrite Contact to contain the source ip address:port found in the UDP/TCP header. This is probably correct, because I assume the UA cannot be reached from the outside anyway. If you record-route, subsequent requests should go through your ser.
If you have problems with responses not being returned, have a look at Via headers as they control how answers to i.e an INVITE are routed back to the UA. You may want to have a look at the rr module double record route parameter to make sure that SER creates one record-route for the internal and one for the external interface. g-)
Sebastian Gabris wrote: After reading a bit more mails, I came to two possible problems:
- fix_nated_contact() needs a registrar to work properly
I dont use a registrar, since i register at the VoIP - Provider. or 2. fix_nated_contact() is not ment to be used on this scenario Any ideas on this? Sebastian
Hi everybody, need some help on nattraversal. i use a multihomed SER, one private IP & one public IP. MyUA(privateIP) <-> (privateIP)SER(publicIP) <-> UA-(VoIP - Provider, pubicIP) If i try to make a call from private net to public net, SER doesnt change the contact address. He changes the sdp - connection field but he, puts in the wrong IP - address. Instead o writing down his public IP, SER writes his private IP. Then SER forwards the call on his public interface to the provider, which will get wrong Contact & SDP information. After reviewing my logs i saw that SER does the nat_uac_test, but the fix_nat_contact & fix_sdp dont work dont do what they should do :) Here are the important bits of my config: fork=yes log_stderror=no mhomed=1 listen=10.x.x.x listen=193.x.x.x loadmodule "/usr/lib/ser/modules/nathelper.so" modparam("usrloc", "db_mode", 0) modparam("registrar", "nat_flag", 6) modparam("nathelper", "natping_interval", 30) # Ping interval 30 s modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind NAT if (nat_uac_test("3")) { if (method == "REGISTER" || ! search("^Record-Route:")) { log(2,"LOG: Someone trying to register from private IP, rewriting\n"); fix_nated_contact(); # Rewrite contact with source IP of signalling if (method == "INVITE") { fix_nated_sdp("1"); # Add direction=active to SDP }; force_rport(); # Add rport parameter to topmost Via setflag(6); # Mark as NATed }; }; ... and so on. ______________________________________________________________ Verschicken Sie romantische, coole und witzige Bilder per SMS! Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193 _______________________________________________ Serusers mailing list Serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! http://smartsurfer.web.de/?mc=100071&distributionid=000000000071 _______________________________________________ Serusers mailing list Serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Verschicken Sie romantische, coole und witzige Bilder per SMS! Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193
Serusers mailing list Serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers