[sr-dev] git:master: modules/rr: if outbound request is outgoing, do nothing outbound

Peter Dunkley peter.dunkley at crocodile-rcs.com
Fri Apr 19 16:11:48 CEST 2013


I think I see the problem.

The SIP request comes into the edge proxy on port 5060 and leaves on 
port 5070.

When outbound is enabled Kamailio doesn't do double-record-routing. When 
I implemented outbound I thought that because the same information as is 
in the double-RR is embedded in the flow-token it wouldn't be needed.  
It looks like it still is needed in order for the devices surrounding 
the edge-proxy to be able to correctly route.

I think the fix is to re-instate double-RR for outbound and make sure 
that, when double-RR is used, the flow-token is added it goes into the 
record-route that contains the address/port/protocol that the SIP 
request arrived on (which I believe is the second to top one, the top 
one being the RR that indicates the address/port/protocol the SIP 
request leaves on).

This means record.c needs to be changed to add the double-RR correctly 
for outbound, and loose.c needs to be changed to correctly eat the two 
routes instead of just one.  The only flow-token that should be used in 
loose.c is the one in the LAST route that points to the edge-proxy.

Regards,

Peter

On 19/04/13 15:00, Juha Heinanen wrote:
> Peter Dunkley writes:
>
>> That fix looks OK.  I'd have done it slightly differently, moving the
>> "return 1" into the last "else if" and then having the "return 0" as the
>> catch-all at the end of the function instead of adding an "else" case.
> peter,
>
> feel free to improve to your liking.
>
> once i got that solved, i'm next havind trouble with record-route added
> by edge proxy (as i already mentioned in previous message).
>
> here is invite that comes to edge proxy:
>
> T 2013/04/19 16:50:00.043131 192.98.102.10:48018 -> 192.98.102.10:5060 [AP]
> INVITE sip:test at test.fi SIP/2.0.
> Via: SIP/2.0/TCP 192.98.102.10:48018;rport;branch=z9hG4bKPj19602c3d-c72f-4a4c-830d-400175af5366.
> Max-Forwards: 70.
> From: sip:jh at test.fi;tag=69f53ec5-b56e-4887-911d-5b389ae5ce8d.
> To: sip:test at test.fi.
> Contact: <sip:jh at 192.98.102.10:5068;transport=TCP;ob>.
> Call-ID: 4529a8ec-bee6-4205-942f-be567e41a52e.
> CSeq: 22685 INVITE.
> Route: <sip:192.98.102.10;transport=tcp;lr>.
> Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS.
> Supported: replaces, 100rel, timer, norefersub.
> Session-Expires: 1800.
> Min-SE: 90.
> User-Agent: PJSUA v2.1 Linux-3.2.0.4/x86_64/glibc-2.13.
> Content-Type: application/sdp.
> Content-Length:   476.
>
> it does not have Supported: outbound, but there is ;ob param in contact.
>
> edge proxy then adds to the request this kind of R-R header:
>
> Record-Route: <sip:/RhTFGTFRK1L8wLAYmYKE8TAYmYKu5I=@192.98.102.10:5070;transport=tcp;lr>
>
> is this correct, because based on it, the ua that sent the invite above,
> sends ack to incorrectly to 192.98.102.10:5070:
>
> T 2013/04/19 16:56:33.521310 192.98.102.10:41051 -> 192.98.102.10:5070 [AP]
> ACK sip:0x179a610 at 192.98.102.10:55798;transport=tcp SIP/2.0.
> Via: SIP/2.0/TCP 192.98.102.10:41051;rport;branch=z9hG4bKPj9b826086-ba81-4798-9887-8e72e094276d.
> Max-Forwards: 70.
> From: sip:jh at test.fi;tag=cb46683f-021e-4fac-b60d-e8e23accdfe7.
> To: sip:test at test.fi;tag=461b8ff42168dbf0.
> Call-ID: a7869ed1-82fd-4650-a987-f62dd8551b1d.
> CSeq: 32765 ACK.
> Route: <sip:/RhTFGTFRK1L8wLAYmYKE8TAYmYKu5I=@192.98.102.10:5070;transport=tcp;lr>.
> Route: <sip:/eWzbwNo9LE2pQLAYmYUE8TAYmYK2fY=@192.98.102.20;transport=tcp;lr>.
> Content-Length:  0.
>
> -- juha
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev




More information about the sr-dev mailing list