[sr-dev] Server trying outgoing TCP (TLS) connection, gets blocked

Ivan Genov ivangg_q at yahoo.com
Mon Jun 22 23:40:32 CEST 2009


We are using openser-1.3.0-tls. I assume what we can do there is to decrease the tcp connect timeout or get into the code and short-circuit the server to not try outgoing tcp connections.

----- Original Message ----
From: Andrei Pelinescu-Onciul <andrei at iptel.org>
To: Ivan Genov <ivangg_q at yahoo.com>
Cc: sr-dev at lists.sip-router.org
Sent: Monday, June 22, 2009 2:13:50 PM
Subject: Re: [sr-dev] Server trying outgoing TCP (TLS) connection, gets blocked

On Jun 22, 2009 at 12:37, Ivan Genov <ivangg_q at yahoo.com> wrote:
> 
> Hi,
> 
[...]

> There are cases though, when we can see in the server logs that there are no logs for more than 3 minutes and we can see that two server processes have been trying outgoing connection to the old client's IP:port for more than 3 minutes and we can see how both processes report unsuccessfull tcp blocking connect to the client after the logs resume after?more than 3 minutes have elapsed. During such cases?the server simply doesn't respond to client's attempts to REGISTER and is in effect blocked.
> 
> We have no clue as to why the server is blocked for more than 3 minutes since the tcp connect timeout seems to be just 10 seconds.
> 
> What we think is best is if we can?configure the server to not try outgoing TCP connections to clients (when TCP conenction doesn't exist)? Is there a configration setting for that? If there is no configuration for that, what is the best place in code to make this change in the code? If this is not easy or not recommended,?can we set the server's timeout for outgoing TCP connection to something smaller, for example 1-2 seconds, or even 0 seconds? We feel in our setup?it will be better if?the server does not try to connect at all, becasue anyway the connection attempt?will fail.
> 
> 
> Any information will be appreciated.

It depends on what are you using: pre-sip-router kamailio, pre-sip-router ser
or the latest sip-router code.

If you are using sip-router or a recent ser (e.g 2.1), then the tcp code
does not block (you can make it block if you want though). However this
is not yet true for tls (the tls code is not yet async.).
For the same "versions" (ser 2.1 or sip-router) you can stop outgoing
connects by setting tcp_no_connect to yes. You can do this any time,
even even if sip-router is already started (in this case using
sercmd cfg.set_now_int tcp no_connect 1).

If you are using kamailio then you can wait for the next official
version (based on sip-router) or you could try upgrading to sip-router
now (but note that right now there is only a devel version which might
still have some problems).
However even for current kamailio the connect should never block more then
tcp_connect_timeout (in your case 10s). There is a small bug that could
make this timeout smaller, but never greater.
You could also try making tcp_connect_timeout 0 or 1 and see if you ever
get those 3 min. delays (they might be caused by something else).


Andrei



      



More information about the sr-dev mailing list