[OpenSIPS-Users] Why does NAT keepalive only work for UDP?

Klaus Darilion klaus.mailinglists at pernau.at
Wed Nov 12 12:28:51 CET 2008

Iñaki Baz Castillo schrieb:
> 2008/11/12 Klaus Darilion <klaus.mailinglists at pernau.at>:
>>> So I understand that the server doesn't close the connection before
>>> registration expires, but how can the client know it? why would a client
>>> mantain the TCP connection open until "expires" time? why to expect it?
>> Because it is the only way the receive messages if the client is behind NAT.
> Yes, but where is specified (I mean before outbound draft) that the
> caller must mantain the TCP connection open?
> Yes, it makes sense but...

Where is specified that you should not jump on the street if a truck is 
coming? :-)

Yes, you are right this is not specified in core SIP RFCs - but it is 
the only way so the specification is not needed at all.

>> If you are behind NAT there is no way for the
>> server to make a TCP connection to the client. So, if the client is behind
>> NAT and tears down the TCP connection it is a damn stupid client.
> Sure, but anyway, why the server/proxy couldn't send periodical
> NOTIFY/OPTIONS to mantain NAT open (in case the clients doesn't it)?

Yes, it can, and it would be a workaround if client does not send CLRF 
or support  PING/PONG.

> Well, if we think in UDP, a client could also send periodical
> NOTIFY/OPTIONS to the server to mantain the "connection" open (but
> it's not very usual), why a client should care about it just in case
> of using TCP?

Smart clients send CRLF anyway, regardless of the protocol. You could 
also trigger short reREGISTERs intervals for TCP clients.


More information about the Users mailing list