[Devel] tcp keepalive question

Bogdan-Andrei Iancu bogdan at voice-system.ro
Mon Dec 18 12:26:28 CET 2006


Hi Juha,

Juha Heinanen wrote:

>i did some tcp tests using nokia N80 phone and it turned out that if
>there was no other activity, it kept on sending 4 byte tcp messages
>every 20 minutes, which wireshark reported as "continuation" messages.
>they wre enough to keep linux iptables nat binding open.  i have been
>told that it is possible to configure the keepalive interval in N80
>using some special means.
>  
>
but if  understand correctly, this is something different that TCP KEEP 
ALIVE - actually the phone is sending a data over the TCP connection.

> > I think there was a discussion on sip-implementors discussing this topic
> > and the conclusion was, that this is different an every OS and often not
> > configurable (or least only per system, not per application/connection).
> > Thus it is to unreliable.
>
>my understanding is tcp keepalive options are supported in linux are
>they are configurable per tcp session.
>  
>
the Klaus's concern is that the keepalive mechanism is not 
available/accessible an all the OSs; but this be partially solved via 
defines.

> > If the client sends keep-alive (like eyebeam) there wont be a problem. IMO
> > a client should do this. Of course there should be also an option at the
> > server.
>
>yes, it is best if tcp keepalives are sent by the UA, like it is the
>case with N80.  however, because there may be sip UAs that do not sent
>any keepalives, it might be a good idea if also openser would support
>sending them.  this would be possible at least on linux, which i believe
>is the most popular host os for openser.
>  
>
right, but keepalives provided by TCP implementation and not pings at 
data level.

> > One workaround would be to set expire to small values forcing keep-alive
> > with REGISTER.
> > 
> > I wonder if the keep-alive from nathelper module can be used to send keep
> > alive (CRLF or OPTIONS). I have not tested it yet - maybe it already
> > works. IMO there is no reason why the UDP mechanisms should not work with
> > TCP/TLS too.
>
>i consider both of these too heavy and cumbersome when the same effect
>can be achieved automatically by tcp keepalives.
>  
>
that is true.
and to answer to Klaus's question - I made some experiments with pinging 
from nathelper - it works but there are some heavy drawbacks because of 
TCP nature - for example, if the client  closes the TCP connection and 
you was to generate a new ping, we will have to open a new TCP 
connection (that is the default behaviour of tcp_send() function) , 
which is quite impossible and may lead in longs delays -> timer process 
will be affected.

also I agree with Juha - if it is a simple solution, I will prefer that.

regards,
bogdan

>-- juha
>
>_______________________________________________
>Devel mailing list
>Devel at openser.org
>http://openser.org/cgi-bin/mailman/listinfo/devel
>
>  
>




More information about the Devel mailing list