Re: Re: Via header issues while talking to OCS Access Edge Server
"M. Ranganathan" <[email protected]> Mon, 30 Jun 2008 09:34:01 -0400
| Newsgroups | gmane.comp.voip.nist-sip |
|---|---|
| Message-ID | <[email protected]> |
Hello SanNxP (interesting Nom de plum), Just a couple of quick additions to Jeroen's excellent tips: 1. Jain SIP uses symmetrical signaling (has been doing so for a couple of years at least). It is not using some ephemeral port for the socket. 2. CACHE_CLIENT_CONNECTIONS is relevant for TCP signaling. You can set that to true and your client will not drop the connection after transaction termination. Rather it will re-use that connection for the next interaction with the server. This is a performance optimization. Indeed your application should not ( ideally ) depend upon this setting. Thanks for sharing your experiences. Regards, NeoNxP Ranga On Sun, Jun 29, 2008 at 6:08 PM, SanNxP <[email protected]> wrote: > Jeroen van Bemmel <jbemmel <at> zonnet.nl> writes: > >> >> San, >> >> You've picked a challenging task, this vendor is not known for their >> interoperability capabilities or adherence to open standards... > > But I am hoping they would have documented their extensions well. I found this > one http://download.microsoft.com/download/1/6/F/16F4E321-AA6B-4FA3-8AD3- > E94C895A3C97/%5BMS-SIPRE%5D.PDF . > >> >> Having said that, the routing for the request in the reverse direction >> (NOTIFY) is governed by the Contact header (or Record-Route for >> proxies), not the Via header. > > Yes, I know. I'll try to explain. The "200 OK" response to the original > SUBSCRIBE used the Via header and it used the open connection on which AES > received the request. The Via header mentioned port 5061 but AES noted the > actual port as 1696 (some ephemeral port used by the Jain-SIP client side) and > decided that NATting was going on. Then when it needed to send the NOTIFY > request to my proxy it did use the Record-Route from my original SUBSCRIBE (or > the Route header in the NOTIFY itself) to forward the NOTIFY to my proxy. The > Route header happened to point to my proxy at port 5061 but it knows (wrongly) > from its connection pool/table mechanism that NATting was going on and hence > tried to use the existing connection on which it sent the "200 OK" response > back. Since that connection was closed and it could not open a new connection > to port 1696 it generated an error saying some thing like "No existing > connection found, load balancer or firewall problem?" > > I studied the above document from Microsoft (specifically sections 3.4 and > 3.4.5.1) to arrive at my analysis. Also when I analyzed the SIP messages > between Microsoft SIP elements they do use ephemeral ports in their Via > headers and that seems consistent with my analysis. I don't know if in this > case they are not following the standard properly, if the standard is vague in > this area or if they are following the standard too strictly. > > >> Using the ephemeral port in the Via won't >> help. In general, TLS connections pose a problem, because by default SIP >> does not reuse connections in the reverse direction. > > Does it mean then setting gov.nist.javax.sip.CACHE_CLIENT_CONNECTIONS to true > (as you suggest below) either won't help or is not correct? > > >> You'd normally have >> 2 connections, but not all elements support that (because they don't all >> have a server certificate). See SIP outbound and SIP connection-reuse >> drafts for solutions under construction (but likely not implemented in >> your environment yet) > > I don't really want connection re-use (except for responses to requests) > except to interoperate with OCS. I am sure there is a simpler mechanism (such > as setting ephemeral port in the Via header) that should work. > > >> >> You could try to prevent the closing of the connection by the Jain-SIP >> stack. The property gov.nist.javax.sip.CACHE_CLIENT_CONNECTIONS controls >> the closing of TCP/TLS connections after receiving a response, by >> default (true) they are not closed. What setting do you use? > > Thanks for the pointer. I looked up the documentation for this one and it is > kind of confusing, but I'll follow this up. > >> >> Regards, >> Jeroen >> > > > _______________________________________________ > nist-sip mailing list > [email protected] > http://www-x.antd.nist.gov/mailman/listinfo/nist-sip > -- M. Ranganathan