On Nov 06, 2009 at 12:20, Juha Heinanen <jh(a)tutpro.com> wrote:
Andrei Pelinescu-Onciul writes:
Yes, it should do either that, or add an alias
parameter to its Via
(assuming that the port in Via _is_ 5074).
If it does add "alias" to the Via, make sure you have
tcp_accept_aliases=yes in the config.
twinkle does not add alias param to via so looks like its tcp
implementation is broken. this comes from source tcp port 34136 to port
5060 at sr:
+++ 6-11-2009 12:06:27.976341 INFO SIP ::send_sip_tcp
Send to: tcp:192.98.101.10:5060
REGISTER sip:test.fi SIP/2.0
Via: SIP/2.0/TCP 192.98.101.10:5074;rport;branch=z9hG4bKtabgdwsf
Max-Forwards: 70
To: "Juha Heinanen" <sip:jh@test.fi>
From: "Juha Heinanen" <sip:jh@test.fi>;tag=hqmmp
Call-ID: bmybrkvktynbuma@localhost
CSeq: 668 REGISTER
Contact: <sip:jh_test_fi@192.98.101.10:5074;transport=tcp>;expires=3600
or should
sr figure out that twinkle in fact is behind the tcp
connection it created when it registered itself no matter what the port in
contact uri is?
You can force that, using force_tcp_alias() (adds src_ip:port_in_via as
an alias for src_ip:src_port).
can force_tcp_alias() be called on any register over tcp or should it be
tested first that there is no alias in via and that port in register
contact uri does not match source port?
You can call it always, for all the requests. It just adds a new alias
for the via port if the alias doesn't already exists
(accept_tcp_aliases=yes and alias in via does the same thing).
So the easiest way is just to add force_tcp_alias() at the beginning of
the route block.
If you want to support non symmetric signalling tcp UACs that are not behind
NAT (they wouldn't work behind a NAT without static port forwarding
rules anyway), you can use force_tcp_alias() only if you detect the UAC
is behind the NAT.
I would look at the contact port only if you have really broken UACs
that use a different port in Via then the one in the contact.
In general, especially if you have NATed UACs,
it's better to always have
force_tcp_alias() in the config. It will cause problems only if you have
non-NATed broken UACs that don't expect/support symmetric signalling
over TCP (e.g. open a new connection for each new request and expect
only replies to that request on the connection).
ok.
OTOH if you don't force_tcp_alias() and the
UACs don't add alias to the
Via, it's a very slim chance that NATed UACs will work over tcp.
i'll test next what happens when i put twinkle behind nat.
Andrei