A simple flow control scheme.

"M. Rangnathan" <[email protected]> Sun, 25 Feb 2007 16:53:16 -0500
Newsgroups gmane.comp.voip.nist-sip
Message-ID <[email protected]>
Hi folks,

Noting that TCP outperforms UDP by a factor of 2 for 
test.load.concurrency, I added a mechansm to limit the size of  the 
client tranasaction table. Basically, if the mechanism is enabled ( 
using the gov.nist.javax.sip.MAX_CLIENT_TRANSACTIONS property -- see 
SipStackImpl javadoc ), the caller blocks until the value falls below a 
threshold when you go to create a new client transaction. The danger is 
of course that if the caller blocks, that could lead to deadlock if the 
caller is not re-entrant. Thus this feature is "off" by default.

I am still not able to match TCP performance or even imporove the 
performance using UDP no matter what I do with flow control  but perhaps 
somebody can look at that code ( see SIPTransactionStack.java ) and 
comment about better means of doing flow control for UDP.  In any case, 
this is a safety mechanism for servers to limit what the application can 
do ( i.e. if an application overwhelms the poor SIP Stack in a SLEE 
environment). If you are writing server applications of this kind (i.e. 
containers and whatnot where you expect third party code to run), it 
could be of interest to you.

Regards,

Ranga

-- 
M. Ranganathan 

Advanced Networking Technologies Division,
National Institute of Standards and Technology (NIST),
100 Bureau Drive, Stop 8920, Gaithersburg, MD 20899. 
tel:301 975 3664 , fax:301 590 0932 http://w3.antd.nist.gov/
Advanced Networking Technologies For the People!