[Kamailio-Users] Multiple SIP Proxy Environment / Socket Information

Brandon Armstead brandon at cryy.com
Sat May 2 00:19:52 CEST 2009


Daniel,

    I got this part working, in the case of the absence of $du (i.e. no
received parameter) I just exclude it and all works well!  Thanks guys!

* fixed reply to all.

On Thu, Apr 30, 2009 at 1:16 AM, Daniel-Constantin Mierla <miconda at gmail.com
> wrote:

> Hello,
>
> On 04/29/2009 08:35 PM, Brandon Armstead wrote:
>
>> Daniel,
>>
>>    You are correct it is not set for this usrloc.  Should I be able to
>> just not modify $du in this case?
>>
>
> I do not understand what you mean now?!?!
>
> Cheers,
> Daniel
>
>   Thanks!
>>
>> On Wed, Apr 29, 2009 at 7:39 AM, Daniel-Constantin Mierla <
>> miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>>    Hello,
>>
>>    $du is set by usrloc only if there is a received value in the
>>    location record. Can you check if you have it in db?
>>
>>    Cheers,
>>    Daniel
>>
>>
>>
>>    On 04/29/2009 11:45 AM, Brandon Armstead wrote:
>>
>>        Daniel,
>>
>>           Yes I'm doing an append_hf("X-Duri: $du\r\n"); inside of
>>        branch_route[] i.e.:
>>
>>        branch_route[2]
>>        {
>>           if(isbflagset(4)){
>>               # thats me!
>>           } else {
>>               # at this point X-Duri is null, so we are not saving it
>>        from the lookup?
>>               # we need to save this to pass onto Proxy B, however
>>        the value is NULL at this point, and at the point of Proxy B
>>        (when received).
>>               append_hf("X-Duri: $avp(s:duri)\r\n");
>>               if(isbflagset(6)){
>>                   $du = "sip:PROXY_B;transport=udp;";
>>               }
>>           }
>>
>>           xlog("L_INFO", "[$ci][branch_route][$T_branch_idx] ru=$ru
>>        fu=$fu tu=$tu si=$si flag=$bF du=$du");
>>        }
>>
>>        Then when X-Duri reaches Proxy B, if I see the INVITE comes
>>        from Proxy A, I take X-Duri and restore "$du" with the correct
>>        value.
>>
>>        However this is causing issues now as the value is <null>,
>>        I've tried saving $du into avp after looking up usrloc, I've
>>        tried simply calling $du in branch_route[], and I've tried
>>        saving $du in loose_route() into an avp, all to no avail.
>>
>>        What am I missing here as far as passing the value of $du from
>>        branch route to header, to pass along to Proxy B.
>>
>>        Thanks again!
>>
>>        On Wed, Apr 29, 2009 at 2:42 AM, Daniel-Constantin Mierla
>>        <miconda at gmail.com <mailto:miconda at gmail.com>
>>        <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>> wrote:
>>
>>
>>
>>           On 04/29/2009 11:32 AM, Brandon Armstead wrote:
>>
>>               Daniel,
>>
>>                  It looks like you helped me find part of the problem,
>>               apparently Proxy A was sharing same branch flag as the
>>        one I
>>               used to distinguish which proxy it was.  I corrected
>>        this and
>>               now branch flag for branch 1 is 00000060, and branch 2 is
>>               00000040, however now both branches are routed
>>        appropriately
>>               to the correct server, however the X-Duri (to restore to in
>>               the INVITE) is null.
>>
>>
>>           I may not followed all discussion branch - the X-Duri is a
>>        header
>>           you append to the message? If yes, it is not visible
>>        immediately
>>           in the script, but you can see it when the messages is ent
>>        to the
>>           network.
>>
>>                Do I need to save this value into an AVP after
>>               lookup("location")?
>>
>>
>>           What you need to do with it? Where is its values taken from?
>>
>>           Cheers,
>>           Daniel
>>
>>                Or should it be readily available in branch_route[],
>>        and for
>>               some reason my variable is null?
>>
>>               P.S. (recap)
>>               Proxy A NAT Branch Flag: 5
>>               Proxy B NAT Branch Flag: 5
>>
>>               (Problem existed as used Flag 5 to distinguish "itself" as
>>               proxy) -- changed this to 4 so now:
>>
>>               Proxy A NAT Branch Flag: 4
>>               Proxy B NAT Branch Flag: 6
>>
>>               Calls are routed to Proxy B
>>
>>               X-Duri: <null> (as it is null in Proxy A).  I'm
>>               append_hf(X-Duri: $du) inside of branch_route[].
>>
>>               Thanks!
>>
>>               On Wed, Apr 29, 2009 at 2:17 AM, Daniel-Constantin Mierla
>>               <miconda at gmail.com <mailto:miconda at gmail.com>
>>        <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>
>>               <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
>>        <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>> wrote:
>>
>>
>>
>>                  On 04/29/2009 11:11 AM, Brandon Armstead wrote:
>>
>>                      Daniel,
>>
>>                         No that would be the UAC (I have two clients
>>        behind the
>>                      same NAT).  The problem is it looks like the
>>        branch flag is
>>                      not being set for both for some reason (when
>>        comparing)
>>               even
>>                      though in the database it is the same?
>>
>>
>>                  So you have the brach flag for nat and branch flags
>>        for next
>>                  proxy, right? What is the value of branch flag? The
>>        value are
>>                  different indeed, but some flags  you are looking
>>        for might be
>>                  set. It is easier spot if you print the hexa format
>>        of the
>>               flags
>>                  rather than decimal one.
>>
>>                  Cheers,
>>                  Daniel
>>
>>                       Take a look at the flag= value from each of
>>        those logs
>>               (this
>>                      is one call) to a UAC with two registrations
>>        line1/line2.
>>
>>                      On Wed, Apr 29, 2009 at 2:02 AM,
>>        Daniel-Constantin Mierla
>>                      <miconda at gmail.com <mailto:miconda at gmail.com>
>>        <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>
>>               <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
>>        <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>
>>                      <mailto:miconda at gmail.com
>>        <mailto:miconda at gmail.com> <mailto:miconda at gmail.com
>>        <mailto:miconda at gmail.com>>
>>               <mailto:miconda at gmail.com <mailto:miconda at gmail.com>
>>        <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>>>> wrote:
>>
>>                         Hello,
>>
>>
>>                         On 04/29/2009 10:53 AM, Brandon Armstead wrote:
>>
>>                             Hey guys,
>>
>>                                Still facing a few challenges and
>>        seeing if
>>               any further
>>                             input, I'm specifically trying inaki's
>>        suggestions /
>>                      method,
>>                             but here are the current problems:
>>
>>                             sip:/etc/kamailio/m4cfgs# tail -f
>>               /var/log/openser.log
>>                      | grep
>>                             -v -E 'non-local|repeated' | grep
>>        branch_route
>>                             Apr 29 07:38:05 db06 /sbin/kamailio[21279]:
>>                             [77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>
>>                      <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>>
>>                             <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>
>>                      <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>>>
>>                             <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>
>>                      <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>>
>>                             <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>
>>                      <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>>>>][branch_route][1]
>>                             ru=sip:CALLEE at 99.XX.XX.XX:5079
>>                      fu=sip:CALLER at sip.example.com<sip%3ACALLER at sip.example.com>
>>        <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>>        <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>> >>
>>                      <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>>        <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >>>
>>                             <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>>        <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >>
>>                      <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>>        <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>> >>>>
>>                             <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>>        <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >>
>>                      <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>>        <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>> >>>
>>                             <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>>        <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>> >>
>>                      <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>>        <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>>        <mailto:sip%252525253ACALLER at sip.example.com<sip%25252525253ACALLER at sip.example.com>
>> >>>>>
>>
>>
>>
>>
>>                             tu=sip:CALLEE at sip.example.com<sip%3ACALLEE at sip.example.com>
>>        <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>>        <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>> >>
>>                      <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>>        <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >>>
>>                             <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>>        <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >>
>>                      <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>>        <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>> >>>>
>>                             <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>>        <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >>
>>                      <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>>        <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>> >>>
>>                             <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>>        <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>> >>
>>                      <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>>        <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>>        <mailto:sip%252525253ACALLEE at sip.example.com<sip%25252525253ACALLEE at sip.example.com>>>>>>
>> si=99.XX.XX.XX
>>
>>
>>
>>
>>                             flag=96 du=<null>
>>
>>
>>                             This call is not sent to Proxy B (this is a
>>               result of bflag
>>                             not being set) ???
>>
>>                         is the proxy B at 99.XX.XX.XX:5079? If not,
>>        then set
>>               $du to the
>>                         address of that proxy. It is null in the log
>>        above.
>>
>>                         Cheers,
>>                         Daniel
>>
>>                             My question is "Why", I look at the AOR /
>>        usrloc and
>>                      they both
>>                             have the "same exact flags set", this call is
>>               rather sent
>>                             directly to UAC endpoint.
>>
>>                             ---
>>
>>                             Apr 29 07:38:05 db06 /sbin/kamailio[21279]:
>>                             [77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>
>>                      <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>>
>>                             <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>
>>                      <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>>>
>>                             <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>
>>                      <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>>
>>                             <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>
>>                      <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>
>>               <mailto:77e4c600-147767fb at 172.16.1.35
>>        <mailto:77e4c600-147767fb at 172.16.1.35>>>>>][branch_route][2]
>>                             ru=sip:CALLEE at 99.XX.XX.XX:5062
>>                      fu=sip:CALLER at sip.example.com<sip%3ACALLER at sip.example.com>
>>        <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>>        <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>> >>
>>                      <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>>        <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >>>
>>                             <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>>        <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >>
>>                      <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>>        <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>> >>>>
>>                             <mailto:sip%3ACALLER at sip.example.com<sip%253ACALLER at sip.example.com>
>>        <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >>
>>                      <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>>        <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>> >>>
>>                             <mailto:sip%253ACALLER at sip.example.com<sip%25253ACALLER at sip.example.com>
>>        <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>>        <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>> >>
>>                      <mailto:sip%25253ACALLER at sip.example.com<sip%2525253ACALLER at sip.example.com>
>>        <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>> >
>>               <mailto:sip%2525253ACALLER at sip.example.com<sip%252525253ACALLER at sip.example.com>
>>        <mailto:sip%252525253ACALLER at sip.example.com<sip%25252525253ACALLER at sip.example.com>
>> >>>>>
>>
>>
>>
>>
>>                             tu=sip:CALLEE at sip.example.com<sip%3ACALLEE at sip.example.com>
>>        <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>>        <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>> >>
>>                      <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>>        <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >>>
>>                             <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>>        <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >>
>>                      <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>>        <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>> >>>>
>>                             <mailto:sip%3ACALLEE at sip.example.com<sip%253ACALLEE at sip.example.com>
>>        <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >>
>>                      <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>>        <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>> >>>
>>                             <mailto:sip%253ACALLEE at sip.example.com<sip%25253ACALLEE at sip.example.com>
>>        <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>>        <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>> >>
>>                      <mailto:sip%25253ACALLEE at sip.example.com<sip%2525253ACALLEE at sip.example.com>
>>        <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>> >
>>               <mailto:sip%2525253ACALLEE at sip.example.com<sip%252525253ACALLEE at sip.example.com>
>>        <mailto:sip%252525253ACALLEE at sip.example.com<sip%25252525253ACALLEE at sip.example.com>>>>>>
>> si=99.XX.XX.XX
>>
>>
>>
>>
>>                             flag=64 du=sip:PROXY_B;transport=udp;
>>
>>
>>                             This call is sent to Proxy B (however
>>        Proxy B) -
>>                      however the
>>                             X-Duri (is null) as it is not existant in
>>        Proxy
>>               A's branch
>>                             route? should I save this from right
>>        after the
>>                             lookup("location") result into an avp?
>>
>>
>>                             Again, thank you for all and any help,
>>        thanks!
>>
>>                             On Mon, Apr 27, 2009 at 5:42 PM, Brandon
>>        Armstead
>>                             <brandon at cryy.com
>>        <mailto:brandon at cryy.com> <mailto:brandon at cryy.com
>>        <mailto:brandon at cryy.com>>
>>               <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
>>        <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>
>>                      <mailto:brandon at cryy.com
>>        <mailto:brandon at cryy.com> <mailto:brandon at cryy.com
>>        <mailto:brandon at cryy.com>>
>>               <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
>>        <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>>
>>                             <mailto:brandon at cryy.com
>>        <mailto:brandon at cryy.com>
>>               <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>
>>        <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
>>               <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>
>>                      <mailto:brandon at cryy.com
>>        <mailto:brandon at cryy.com> <mailto:brandon at cryy.com
>>        <mailto:brandon at cryy.com>>
>>               <mailto:brandon at cryy.com <mailto:brandon at cryy.com>
>>        <mailto:brandon at cryy.com <mailto:brandon at cryy.com>>>>>> wrote:
>>
>>                                Klaus, Inaki, Daniel,
>>
>>                                    Thanks!  Sorry I did not see this
>>        email come
>>                      through, I'm
>>                                going to go ahead and give this method
>>        a go,
>>               and I'll
>>                             update with
>>                                the results, I have optimistic views.
>>
>>                                As for the reason I was rewriting $ru and
>>               setting $du to
>>                             null, is
>>                                because originally when I just changed
>>        $du to the
>>                      'destination
>>                                proxy' it did not seem to work at all
>>        (I do
>>               not even
>>                      recall
>>                             what
>>                                exactly what was happening) however I
>>        decided
>>               to just
>>                             change $ru,
>>                                and have the other proxy just "lookup"
>>        the usrloc
>>                      information
>>                                again.  Again, this method looks
>>        interesting and
>>                      I'll let
>>                             you guys
>>                                know how it goes, thanks for all the input
>>               and help!
>>
>>                                Sincerely,
>>                                Brandon.
>>
>>
>>                                On Fri, Apr 24, 2009 at 1:18 AM, Klaus
>>        Darilion
>>                                <klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>
>>                      <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>>
>>                             <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>
>>                      <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>>>
>>                                <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>
>>                      <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>>
>>                             <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>
>>                      <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>>>>> wrote:
>>
>>
>>
>>                                    Brandon Armstead schrieb:
>>
>>                                        Klaus,
>>
>>                                           So I took you and Inaki's
>>        input and
>>                      essentially
>>                                        constructed a setup like so
>>        after the
>>                             lookup("location") call:
>>
>>                                        if(isbflagset(1)){
>>                                           $du = null;
>>                                           $rd = "P1";
>>                                        } else if(isbflagset(2)){
>>                                           $du = null;
>>                                           $rd = "P2";
>>                                        } else if(isbflagset(3)){
>>                                           $du = null;
>>                                           $rd = "P3";
>>                                        } else if(isbflagset(4)){
>>                                           $du = null;
>>                                           $rd = "P4";
>>                                        }
>>
>>
>>                                    1. The above code has to be in the
>>               branch_route
>>                      block -
>>                                    otherwise multiple registrations
>>        of a single
>>                      user are not
>>                                    handled correctly.
>>
>>                                    2. you are rewriting the RURI. You
>>        should
>>               not do
>>                      that
>>                             as some
>>                                    clients wants to the in the RURI
>>        the Contact
>>                      provided
>>                             during
>>                                    REGISTER.
>>
>>                                    3. probably you use
>>        fix_nated_register() to
>>                      store the
>>                             public
>>                                    IP:port of the client too. After
>>        lookup, this
>>                             information is
>>                                    written to DURI. Thus, by setting
>>        $du you
>>               overwrite
>>                             this info.
>>                                    You should put it into a special
>>        header
>>               so that
>>                      you can
>>                                    restore it in the other proxy.
>>
>>                                    Here a snippet how it should work
>>               (untested, no
>>                             warranty): ( I
>>                                    use the term "originating" proxy
>>        for the
>>               proxy which
>>                             received
>>                                    the INVITE and the term "serving"
>>        proxy
>>               for the
>>                      proxy which
>>                                    handles the
>>        connection/registration of a
>>               certain SIP
>>                             client).
>>
>>                                    e.g:
>>                                    Alice -----INVITE----->
>>               P1------->P2----->Bob2
>>                                                           /  \
>>                                                          /    \
>>                                                         /      V
>>                                                        V
>>  P3---->Bob3
>>                                                     Bob1
>>
>>                                    Bob's client Bob1 is connected to P1.
>>                                    Bob's client Bob2 is connected to P2.
>>                                    Bob's client Bob3 is connected to P3.
>>
>>                                    So, P1 is the originating proxy.
>>        P2 is the
>>                      serving proxy of
>>                                    Bob2. ....
>>
>>                                    We do NAT traversal (note: we must
>>        not call
>>                                    fix_nated_contact() for messages sent
>>               between the
>>                             proxies!):
>>                                    the originating proxy for the
>>        call-leg to the
>>                      caller, the
>>                                    serving proxy for the call-leg to
>>        the callee.
>>                                    The RTP proxy will be managed by the
>>               originating
>>                      proxy
>>                             only.
>>
>>
>>
>>                                    route{
>>                                    if (loose_route()) {
>>                                     ... additional loose route
>>        processing...
>>                                     if
>>        (check_route_param("rtpproxy=yes")) {
>>                                       force_rtp_proxy();
>>                                       setbflag(7);
>>                                     }
>>
>>                                     # downstream: in-dialog request is in
>>               the same
>>                             direction as the
>>                                     # initial request
>>                                     if (
>>        (check_route_param("nat=caller") &&
>>                                    is_direction("downstream"))
>>                                       ||
>>        (check_route_param("nat=callee") &&
>>                                    is_direction("upstream"))) {
>>                                       fix_nated_contact();
>>                                     } else if
>>        (check_route_param("nat=both") {
>>                                       fix_nated_contact();
>>                                       setbflag(8);
>>                                     } else {
>>                                       setbflag(8);
>>                                     }
>>
>>                                     t_on_reply("1");
>>                                     t_relay();
>>                                     exit();
>>                                    }
>>                                    ...
>>
>>                                    # I am proxy 1
>>                                    if ((src_ip=ip.of.proxy.2) ||
>>                      (src_ip=ip.of.proxy.3)...) {
>>                                     # request comes from other proxy,
>>        that
>>               means I
>>                      am the
>>                                     # serving proxy
>>                                     # do not lookup(), RURI is
>>        already set and
>>                                     # DURI is provided in our X-DURI
>>        header
>>                                     $du = $header(X-DURI);
>>                                     # we do not care about an RTP
>>        proxy because
>>                      that's the
>>                             task
>>                                    of the
>>                                     # proxy which performed the
>>        lookup() (the
>>                      originating
>>                             proxy)
>>                                     # add some record-route cookie to
>>        mark
>>               that we
>>                      should
>>                             perform
>>                                     # SIP NAT traversal for the callee
>>                                     add_rr_param(";nat=callee");
>>                                     # activate reply_route to
>>               fix_nated_contact of
>>                      callee
>>                                     setbflag(8); # flag 8 = fix contact
>>                                     t_on_reply("1");
>>                                     record_route();
>>                                     t_relay();
>>                                     exit;
>>                                    }
>>
>>                                    ...
>>                                    # a new request - thus I am the
>>               originating proxy
>>
>>                                    if ($dU looks like phone number) {
>>                                      ... route to Gateway....
>>                                     exit;
>>                                    }
>>
>>                                    if (!lookup("location")) {
>>                                     sl_send_reply("404","not found");
>>                                     exit;
>>                                    }
>>                                    # activate branch route to have
>>        dedicated
>>                      routing per
>>                             branch
>>                                    t_on_branch("1");
>>
>>                                    # activate reply route to activate
>>        RTP proxy
>>                                    t_on_reply("1");
>>
>>                                    # NAT traversal
>>                                    fix_nated_contact();
>>
>>                                    record_route();
>>                                    t_relay();
>>                                    exit;
>>                                    }
>>
>>                                    branch_route[1]{
>>                                     if(isbflagset(1)){
>>                                      # oh, that's me
>>
>>                                      # add some record-route cookie
>>        to mark
>>               that we
>>                      should
>>                             perform
>>                                      # SIP NAT traversal for the
>>        callee and
>>               caller
>>                                      add_rr_param(";nat=both");
>>
>>                                      # add some record-route cookie
>>        to mark
>>               that we are
>>                                      # in charge for the RTP proxy
>>                                      add_rr_param(";rtpproxy=yes");
>>
>>                                      force_rtp_proxy();
>>                                      setbflag(7); # flag 7 = RTP proxy
>>                                     } else {
>>                                      # add some record-route cookie
>>        to mark
>>               that we
>>                      should
>>                             perform
>>                                      # SIP NAT traversal for the caller
>>                                      add_rr_param(";nat=caller");
>>
>>                                      # we have to route the request
>>        to the
>>               serving
>>                      proxy
>>                                      # write DURI in the header
>>                                      append_hf("X-DURI: $du");
>>                                      if(isbflagset(2)){
>>                                          $du =
>>        sip:ip.of.proxy.2;transport=udp;
>>                                      } else if(isbflagset(3)){
>>                                          $du =
>>        sip:ip.of.proxy.3;transport=udp;
>>                                      } else if(isbflagset(4)){
>>                                          $du =
>>        sip:ip.of.proxy.4;transport=udp;
>>                                      }
>>                                     }
>>                                    }
>>
>>                                    reply_route[1]{
>>                                     if (isbflagset(7) &&
>>               has_body("application/sdp")) {
>>                                       force_rtp_proxy()
>>                                     }
>>                                     if (isbflagset(8)) {
>>                                       fix_nated_contact()
>>                                     }
>>                                    }
>>
>>
>>
>>                                    Note: this code does not care
>>        about the
>>               received
>>                      socket
>>                             of the
>>                                    proxy. Thus it works if the proxy
>>        listens
>>               only
>>                      on one port.
>>
>>                                    regards
>>                                    klaus
>>
>>
>>                                        On each Proxy, I changed the code
>>               appropriately
>>                             excluding
>>                                        the Proxy from itself (so it
>>        does not
>>               forward to
>>                             itself).
>>                                         I'm noticing weird behavior
>>        however
>>               as it
>>                      seems as if
>>                                        what is happening is it
>>        created other
>>               issues
>>                      such as:
>>
>>                                        [INCOMING SERVER] -> P1 -> P2
>>        -> P1
>>               -> (loop?)
>>
>>                                        Also I setup this test amongst two
>>               development
>>                             servers (in
>>                                        which case it worked without
>>        issues).
>>                Once I
>>                             included in
>>                                        more development instances
>>        into the
>>               ring it
>>                      seemed
>>                             as if
>>                                        the flags were being set when
>>        they should
>>                      not be?
>>
>>                                        I.e. I placed a call FROM UA1
>>        (with
>>               bflag 5 SET)
>>                             From the
>>                                        above example configuration ^
>>        code.
>>                If you
>>                      notice
>>                             (flag
>>                                        5) is missing.  To UA2 (Flag 3),
>>               again this
>>                      looked
>>                             to be
>>                                        doing some strange things such as
>>               acting as
>>                      if another
>>                                        flag was set when it should
>>        not have
>>               been, thus
>>                             forwarding
>>                                        to the wrong proxy or the
>>        wrong proxy
>>               order.  Do
>>                             you guys
>>                                        have any further thoughts or
>>        input on
>>               this?
>>                       Thanks!
>>
>>                                        On Thu, Apr 23, 2009 at 12:31 AM,
>>               Klaus Darilion
>>                                        <klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>
>>                      <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>>
>>                             <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>
>>                      <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>>>>
>>                                              <mailto:
>> klaus.mailinglists at pernau.at
>>        <mailto:klaus.mailinglists at pernau.at>
>>               <mailto:klaus.mailinglists at pernau.at
>>        <mailto: <klaus.mailinglists at pernau.at>
>>
> ...
>
> [Message clipped]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20090501/6ac081cf/attachment.htm>


More information about the sr-users mailing list