On Nov 02, 2009 at 08:19, Klaus Darilion <klaus.mailinglists(a)pernau.at> wrote:
Andrei Pelinescu-Onciul schrieb:
On Oct 30, 2009 at 15:15, Klaus Darilion
<klaus.mailinglists(a)pernau.at>
wrote:
Andrei Pelinescu-Onciul schrieb:
On Oct 29, 2009 at 08:16, Klaus Darilion
<klaus.mailinglists(a)pernau.at>
wrote:
>Long time ago, ser always used the OS default interface for new TCP
>connections. In Openser this was changed to the first listening TCP
>address, and further could be specified by force_send_socket.
>
>I know there were some changes in ser/sr too, but do not know exactly
>what was changed.
In ser/sr the default ip for outgoing TCP connections can be forced
using:
tcp_source_ipv4="ip" and
tcp_source_ipv6="ip".
By default the OS chooses the src ip (e.g. according to the routing
table) and ser/sr tries to match with the list of IPs it is listening
on. The default behaviour along with either listening on all the IPs or
making sure your routing table uses the src ip you want, it's more error
proof (automatic multi-homing) and a little bit faster (avoids an extra
bind()).
I could add a config option to always use the msg send_socket, but what
would probably be best would be to force a src_ip only if a send_socket
was forced and if not use the OS one or tcp_source_ipv4 if set.
This is IMO a good
option - I guess this also would allow usage of
force_send_socket, e.g. force_send_socket("tcp:1.2.3.4").
btw: does this imply that the current documentation (copied from
Kamailio) is wrong as it does not work with outgoing TCP messages?
http://sip-router.org/wiki/cookbooks/core-cookbook/devel#force_send_socket
The via, rr a.s.o will use the information in the force_socket, however
the src_ip of the tcp connection is independent of it.
I can add the force_send_socket() sets src. for tcp new connection
feature quite easily, the question is whether or not to do it on sr_3.0.
IMO choosing the src-IP dynamically is an important feature. But
probably others have to decide if it can make it into 3.0.
One difference from k would be that in k (and
older ser) a connection
from IP1->X is equivalent to IP2->x (only the destination is used, if
for example you do force_send_socket(IP2); forward...(X) and a connection
from IP1 -> X already exists, this connection will be used and no new
connection will be created) while in sr the connections will be
different (both the source and the destinations are used => in the above
example a new IP2 -> X connection will be opened even if IP1 -> X
already exists which IMHO is the correct thing to do).
So, it is not implemented yet, but if you would implement it, then both
(source+dst) will be used as connection identifier?
Yes and it is already implemented (tcp_send takes both a from and a to),
but it's not activated.