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 sipp-users@lists.sourceforge.net 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 À : sipp-users@lists.sourceforge.net 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 Sipp-users@lists.sourceforge.net 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 Sipp-users@lists.sourceforge.net 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 Sipp-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sipp-users