[Sip] loop detection measurements (was Fwd: [Sipping] comments on loop detection anddraft-campen-sipping-stack-loop-detect-00)
Robert Sparks <rjsparks@nostrum.com> Wed, 05 July 2006 14:55 UTC
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1Fy8mR-0001WJ-G2; Wed, 05 Jul 2006 10:55:07 -0400
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1Fy8mQ-0001WE-A1 for sip@ietf.org; Wed, 05 Jul 2006 10:55:06 -0400
Received: from shaman.nostrum.com ([72.232.15.10] helo=nostrum.com) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1Fy8mM-0001fx-S4 for sip@ietf.org; Wed, 05 Jul 2006 10:55:05 -0400
Received: from [172.17.2.252] (dsl001-129-070.dfw1.dsl.speakeasy.net [72.1.129.70]) (authenticated bits=0) by nostrum.com (8.13.6/8.13.6) with ESMTP id k65Erj7A092754 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NO) for <sip@ietf.org>; Wed, 5 Jul 2006 09:53:46 -0500 (CDT) (envelope-from rjsparks@nostrum.com)
Mime-Version: 1.0 (Apple Message framework v752.2)
To: IETF SIP List <sip@ietf.org>
Message-Id: <EBB60F9C-CDED-44F5-8FD3-E2175D43167B@nostrum.com>
References: <446DCEAB.3080606@alcatel.fr>
From: Robert Sparks <rjsparks@nostrum.com>
Date: Wed, 05 Jul 2006 09:53:44 -0500
X-Mailer: Apple Mail (2.752.2)
Received-SPF: pass (nostrum.com: 72.1.129.70 is authenticated by a trusted mechanism)
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 9724479da43a8325ad975c1a9b841870
Subject: [Sip] loop detection measurements (was Fwd: [Sipping] comments on loop detection anddraft-campen-sipping-stack-loop-detect-00)
X-BeenThere: sip@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Session Initiation Protocol <sip.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:sip@ietf.org>
List-Help: <mailto:sip-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1930963806=="
Errors-To: sip-bounces@ietf.org
Copying forward an older thread from SIPPING in case those participating in the fork-loop-fix conversation here hadn't seen it. RjS Begin forwarded message: > From: Thomas Froment <Thomas.Froment@alcatel.fr> > Date: May 19, 2006 8:56:59 AM CDT > To: Jeroen van Bemmel <jbemmel@zonnet.nl> > Cc: sipping@ietf.org > Subject: Re: [Sipping] comments on loop detection anddraft-campen- > sipping-stack-loop-detect-00 > > Jeroen van Bemmel wrote: > >> Thomas, >> >> Very interesting to have some numbers here >> >> 260/305 ~ 15% less calls/sec with loop detection. That would be ~ >> 15% CPU, iff it is at 100% for the whole test - is it? (you say >> 13%, so perhaps you already compensated for this - I just want to >> understand how you came to this conclusion) > > You are right, when doing a test, CPU is not busy at 100%, it is > approximately between 85 and 90%. > It is to notice we perform this kind of tests on our implementation > for a long time (based on sipstone, http://www.sipstone.org/), > and I am really confident in injector system and in the results and > in general... > >> >> RFC3261 is wrong in many aspects of loop detection. > > Is it documented somewhere? did you find a bug describing these > problems? > >> Could you run the same test, but this time only including the >> request URI and the topmost Route header (if any) in the hash? > > The current version *already* includes the usage of request URI and > the topmost Route header (only!) ... I did not even try to > test the previous algorithm.... > >> ----- Original Message ----- From: "Thomas Froment" >> <Thomas.Froment@alcatel.fr> >> To: <sipping@ietf.org> >> Sent: Friday, May 19, 2006 12:43 PM >> Subject: [Sipping] comments on loop detection anddraft-campen- >> sipping-stack-loop-detect-00 >> >> >> Taking into account draft-ietf-sip-fork-loop-fix-01.txt which >> recommends >> the support of RFC3261 loop detection algorithm (instead >> of the Max-Forwards mechanism), I would like to make some comments: >> >> 1/ The loop detection mechanism described in RFC 3261 seems >> confusing in >> some points: >> >> - Section 16.6, §8 (when sending the request, adding the loop >> detection >> hash on branch parameter) says: >> >> " Loop detection is performed by verifying that, when a request >> returns to a proxy, >> those fields having an impact on the processing of the request >> have not changed. >> The value placed in this part of the branch parameter SHOULD >> reflect all of >> those fields (including any Route, Proxy-Require and Proxy- >> Authorization header fields). >> This is to ensure that if the >> request is routed back to the proxy and one of those fields >> changes, it is treated as a spiral and not a loop (see Section >> 16.3). (...)" >> >> First of all the "*fields having an impact on the processing of >> the request have not changed*" is confusing >> for some people, because you really need to have a deep knowledge >> of SIP protocol to be sure on this point. (And >> what about SIP extensions like Service Route?) >> >> Then "any Route" is, in my opinion confusing, is it really any >> Route or only top most Route? >> I imagine this is only the top most route, and it would match the >> statement " >> fields having an impact on the processing of the request", am I >> wrong? >> >> Third, the last paragraph is even more confusing: >> "A common way to create this value is to compute a >> cryptographic hash of the To tag, From tag, Call-ID header >> field, the Request-URI of the request received (before >> translation), the topmost Via header, and the sequence number >> from the CSeq header field, in addition to any Proxy-Require" >> >> - Here, no Route header is mentionned anymore (neither Proxy- >> Authorization), should be clarified... >> - the "topmost Via header": this assertion is FALSE, if you take >> the "branch parameter" of Via Header, to compute your hash, >> you will never detect any loop, since the generated branch will >> always be different ! >> >> I first tried to find a bug in database, and only found one >> problem related to loop detection: >> http://bugs.sipit.net/show_bug.cgi?id=648 >> "branch hash calculacation needs explicit comment for loop- >> detecting proxies" >> Which is not pointing out the problem... >> >> Correct wording of the second paragraph may look like: >> "A common way to create this value is to compute a >> cryptographic hash of the To tag, From tag, Call-ID header >> field, the Request-URI of the request received (before >> translation), the topmost Via header *without branch parameter*, >> the sequence number >> from the CSeq header field, in addition to *the top most Route* >> and any Proxy-Require or Proxy-Authorization header(s)*" >> >> >> 2/ Looking at "draft-campen-sipping-stack-loop-detect-00", we also >> decided to bench the *existing* RFC 3261 algorithm >> to be able to evaluate if an optimization is needed. >> It is to mentionned, this bench was performed on a really >> optimized SIP stack and the loop detection, as well, >> has been really carefully coded in order to minimize processing >> and memory usage >> (just to anticipate objections like "is your algorithm really well >> coded?): as an illustration, loop detection is not performed if >> a request is recognized as being a retransmission, and an >> optimized MD5 implementation is used as hash algorithm... >> >> Doing a simple proxying scenario, >> using in injector the following "CALL ATTEMPT PER SECOND" (CAPS) >> scenario: >> >> injector >> INVITE --------------> Proxy (under test) ---------------> server >> (UAS test) >> >> 100 TRYING <---------- Proxy (under test) >> 180 RINGING <---------- Proxy (under test) <-------------- server >> 200 OK <---------- Proxy (under test) <-------------- server >> >> ACK ------------------> Proxy (under test) -------------> server >> BYE ------------------> Proxy (under test) -------------> server >> >> on a basic configuration, >> WITHOUT loop detection, result is ~ 305 CAPS >> WITH loop detection, result is ~ 260 CAPS >> It means, ~13% of CPU is used for this fonction for a basic >> proxying scenario... >> >> We will try to provide the figures if we decide to implement draft- >> campen-sipping-stack-loop-detect-00 >> algorithm but, at first, it seems valuable to think of clarifying >> and/or optimizing current RFC 3261 algorithm... >> >> Thomas >> >> >> >> >> >> _______________________________________________ >> Sipping mailing list https://www1.ietf.org/mailman/listinfo/sipping >> This list is for NEW development of the application of SIP >> Use sip-implementors@cs.columbia.edu for questions on current sip >> Use sip@ietf.org for new developments of core SIP > > > > _______________________________________________ > Sipping mailing list https://www1.ietf.org/mailman/listinfo/sipping > This list is for NEW development of the application of SIP > Use sip-implementors@cs.columbia.edu for questions on current sip > Use sip@ietf.org for new developments of core SIP
_______________________________________________ Sip mailing list https://www1.ietf.org/mailman/listinfo/sip This list is for NEW development of the core SIP Protocol Use sip-implementors@cs.columbia.edu for questions on current sip Use sipping@ietf.org for new developments on the application of sip
- [Sip] loop detection measurements (was Fwd: [Sipp… Robert Sparks