Olivier,
I've included a TCP modification in the latest patch set that I just sent
to the list.
It corrects three deficiencies:
1. If EAGAIN is returned, then return -1 from the send function so that the
call knows that this message was not sent successfully and will try again.
2. Allow the EAGAIN handling to be performed more than once per execution.
The EAGAIN condition is actually a normal condition on a Unix machine when
there is congestion, so rather than only doing the throttling one time, the
throttling is performed whenever congestion is encountered.
3. Calls where the first message encountered congestion were deleted, but
the statistics did not mark them as failed. Instead of deleting the call,
the patch lets it try again.
I have tested this with the t1 transport option, and it does not noticeably
increase the call rate that I can sustain, but it does reduce the number of
failed calls at higher loads.
Charles
"Olivier Jacques"
<[EMAIL PROTECTED]
com> To
"Bruno, Guerin (NonHP :
10/20/2006 09:58 AtosOrigin)" <[EMAIL PROTECTED]>,
AM Charles P Wright/Watson/[EMAIL
PROTECTED]
cc
[email protected]
Subject
Re: [Sipp-users] TCP Error Handling
Questions
Bruno,
thanks for the analysis.
Charles,
as Bruno pointed, we are not very comfortable with the way TCP congestion
is currently implemented. Well, there are several outstanding issues wrt
TCP:
- TCP reads are octet per octet (far from being to say the least!)
- There was a message from Ajay Gupta, back in May 25th. There are 2 fixes
for TCP that looks useful I will integrate that asap.
- Are you looking to work on something else?
Olivier.
On 10/20/06, Bruno, Guerin (NonHP : AtosOrigin) <[EMAIL PROTECTED]>
wrote:
Hello
Concerning TCP congestion, here are some answers:
1) If a message is truncated, the rest of the message (not sent) is sent
as soon as is possible,
i.e. just after a received on the socket and before any other send.
2) The purpose of ctrlEWGlobal is to trace than a problem occurs once
(independantly of
the socket descriptor).
The philosophy behind this is :
-if a problem occurs, a chance is let to solve it.
-if a second problem occurs (even on a different socket), it is because
the system does
not support such traffic, so it is not useful to treat the problem again.
In the implementation, if a first pb occurs, the value of ctrlEWGlobal is
set to true.
If traffic is in mono socket, 'ctrlEW' is set to true.
If traffic is in multi socket a flag, attached to the socket descriptor
(poll_flag_write) is set to true.
No more sent are done till 'ctrlEW' or the flag is set to false.
If a message is received on the socket, it is supposed that the pb is
solve. 'ctrlEW' or the flag is set to false.
SIPp re-starts to send message.
If a new problem occurs (even on a different socket in multi socket
traffic), nothing is done to stop the traffic.
'ctrlEWGlobal' prevents to enable the protection (no send) again.
SIPp continue to trying to send and receive message.
This implementation is probably not the best one.
3) 'ctrlEW' is used in mono socket traffic to trace if a problem (EAGAIN
or EWOULDBLOCK)
occurs during the last send. If a problem occurs 'ctrlEW' is set to
true, no more send are done.
If a message is received, it is supposed that network problems are
solve, so 'ctrlEW' is set to true.
SIPp will try to send message again.
Concerning "incorrect behavior when the TCP window closed and send
returned
EWOULDBLOCK or EAGAIN" problem, no investigation has been done yet.
Regards
Bruno GUERIN
-----Message d'origine-----
De : [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] la part de Charles P
Wright
Envoyé : mardi 17 octobre 2006 23:12
À : [email protected]
Objet : [Sipp-users] TCP Error Handling Questions
Hello,
I have a question regarding TCP support under congestion in the latest
SIPp
releases. Previously, there was discussion on the mailing list that
pointed out incorrect behavior when the TCP window closed and send
returned
EWOULDBLOCK or EAGAIN.
I looked at the send_message function, and have the following questions:
1. Why are partial messages treated specially? Why not use the same code
for messages that were not sent at all (an extreme case of being
truncated)?
2. What is the purpose of ctrlEWGlobal? It seems that it causes the code
to be executed only once, because I never see a false value assigned to
it.
3. What is the purpose of ctrlEW?
Thanks,
Charles
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job
easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache
Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job
easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache
Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users
--
HP OpenCall Software
http://www.hp.com/go/opencall/
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sipp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sipp-users