[Serdev] TCP problems
Andrei Pelinescu-Onciul
andrei at iptel.org
Thu Jan 11 20:11:25 UTC 2007
On Jan 09, 2007 at 17:13, Katty Xiong <cyyxiong at yahoo.com> wrote:
>
> SIPp UAC ---------------SER--------------SIPp UAS
> 199.199.2.31 199.199.2.50 199.199.2.30
>
> I abstract more info from the packet trace. It would
> be great if someone already has a solution or
> workaround for this.
>
> Problem: when SIPp UAC generates high load (800 CPS),
> SIPp UAC works for a while and then SIPp at UAC
> reports the following error:
> Broken pipe on TCP connection, remote probably closed
> the socket.
>
> The problem is related with TCP zero window:
>
> In the beginning, SIPp at UAC creates a new TCP
> connection with SER to exchange SIP messages between
> them (connection pair: 199.199.2.31:51402 and
> 199.199.2.50.5060). But with high load (800CPS), TCP
> at both SIPp and SER publicizes zero window after some
> time, and then no SIP message can be sent through this
> connection.
Could you send me (privately) an email with the network dump (starting a few
packets before the windows become 0)?
Could you also send me the sipp command lines that you used? Do you use
only one tcp connection?
>
> When timeout, SER creates another connection with SIPp
> UAC (connection pair: 199.199.2.31:5060 and
> 199.199.2.50:59094). And SER uses this new connection
> to send SIP messages to SIPp UAC. SIPp UAC does not
> use the new connection to send any packets.
>
> After some time, the first connection is reset (TCP
> RST) by SER and the second connection is reset by
> SIPp. And then SIPp at UAC reports error.
>
> My question is: Is it possible to prevent SER from
> creating a new connection?
No, ser creates a new connection when it cannot find an already existing
one. In your case the problem is that the original connection timeouts
(default is 2 min of idle time). You can change the timeout by setting
tcp_connection_lifetime in ser.cfg, but the real problem in your case seems
to be why both windows become 0.
> How often does SER resets
> idle TCP connection? Is it tunable?
ser closes connection that have been idle for more then
tcp_connection_lifetime. You will get a reset if the receive queue was
not empty, but this should only happen in case of some unrecoverable
error on the connection (bad packet, forced error from the script
a.s.o).
Andrei
More information about the Serdev
mailing list