Dear Rajeev,

Soft-switches play the role of B2BUA ( comply with UAC/UAS requirement
)when they are on the edge of the network and some times they also play
the role of proxy where they are just letting calls pass through them (
not directly connected to the end users )  

1) User A ------- softswitch A ( B2BUA ) ------ softswitchB ( proxy )
------- softswitch C ( B2BUA ) ------------ user C

2) UserA------softswitch A ( B2BUA )-------- softswitch B ( B2BUA )
---------- User B


Below recommendations compliance should help avoid getting into the loop

8.2.2.2 Merged Requests

   If the request has no tag in the To header field, the UAS core MUST
   check the request against ongoing transactions.  If the From tag,
   Call-ID, and CSeq exactly match those associated with an ongoing
   transaction, but the request does not match that transaction (based
   on the matching rules in Section 17.2.3), the UAS core SHOULD
   generate a 482 (Loop Detected) response and pass it to the server
   transaction.

      The same request has arrived at the UAS more than once, following
      different paths, most likely due to forking.  The UAS processes
      the first such request received and responds with a 482 (Loop
      Detected) to the rest of them.

Recommendations in section 16.3 ( Max-Forwards Check and Optional Loop
Detection Check ) 

   3. Max-Forwards check

      The Max-Forwards header field (Section 20.22) is used to limit the
      number of elements a SIP request can traverse.

      If the request does not contain a Max-Forwards header field, this
      check is passed.

      If the request contains a Max-Forwards header field with a field
      value greater than zero, the check is passed.

      If the request contains a Max-Forwards header field with a field
      value of zero (0), the element MUST NOT forward the request.  If
      the request was for OPTIONS, the element MAY act as the final
      recipient and respond per Section 11.  Otherwise, the element MUST
      return a 483 (Too many hops) response.

   4. Optional Loop Detection check

      An element MAY check for forwarding loops before forwarding a
      request.  If the request contains a Via header field with a sent-
      by value that equals a value placed into previous requests by the
      proxy, the request has been forwarded by this element before.  The
      request has either looped or is legitimately spiraling through the
      element.  To determine if the request has looped, the element MAY
      perform the branch parameter calculation described in Step 8 of
      Section 16.6 on this message and compare it to the parameter
      received in that Via header field.  If the parameters match, the
      request has looped.  If they differ, the request is spiraling, and
      processing continues.  If a loop is detected, the element MAY
      return a 482 (Loop Detected) response.

 20.22 Max-Forwards

   The Max-Forwards header field must be used with any SIP method to
   limit the number of proxies or gateways that can forward the request
   to the next downstream server.  This can also be useful when the
   client is attempting to trace a request chain that appears to be
   failing or looping in mid-chain.

   The Max-Forwards value is an integer in the range 0-255 indicating
   the remaining number of times this request message is allowed to be
   forwarded.  This count is decremented by each server that forwards
   the request.  The recommended initial value is 70.

   This header field should be inserted by elements that can not
   otherwise guarantee loop detection.  For example, a B2BUA should
   insert a Max-Forwards header field.

Now to answer your question what can be done on the Soft-Switches will
depend upon what is configurable on soft-switches. Is the loop detection
something which can be activate/de-activated or you can choose to
include lower values of max-forwards ( so that looping breaks much
earlier than when it will with default value of 70 ). I am not sure. I
think the focus should be not doing a manual intervention when the loop
is detected, but rather to prevent the loop in the first place and there
are recommendations specified to do that.

Regards,

Indresh K Singh

>>-----Original Message-----
>>From: [email protected] 
>>[mailto:[email protected]] On 
>>Behalf Of ext Rajeev Verghese
>>Sent: Wednesday, February 24, 2010 12:24 AM
>>To: [email protected]
>>Subject: [Sip-implementors] Loop Avoidance between SIP trunks
>>
>>
>>Hi,
>> 
>>  I have a scenario where I have 4 Softswitches ( 1, 2, 3, 4) 
>>which are interconnected via SIP-T, each of these switches 
>>has routes to various external destinations.
>>The calls between switches 1, 2, 3, 4 could overflow between 
>>each other via the SIP Trunks, my issue is that i have no 
>>control over the calls if they keep looping between the switches.
>> 
>>Is there a parameter in the SIP trunk configuration where i 
>>can define a MAX forward or something to avoid this call 
>>looping state, hope the query is clear. Looking forward to 
>>any suggestions.
>> 
>>Thank you,
>>Rajeev
>>                                        
>>_________________________________________________________________
>>Hotmail: Trusted email with Microsoft's powerful SPAM protection.
>>https://signup.live.com/signup.aspx?id=60969
>>_______________________________________________
>>Sip-implementors mailing list
>>[email protected]
>>https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>>

_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to