Hi,
We'd like to force the following SIP INVITE routing scenario: UA1->P1->P2->R->P2->P1->UA2.
Unfortunately the Route is not known apriori and must be built dynamically. P1 knows the Route from P1 to R, R knows the Route from R to P1/UA2.
The INVITE sent by UA1 is loosely routed to R based on the Route (Route: sip:P2;lr,sip:R;lr) that is added by P1 to UA1's INVITE. This works. The message arrives correctly to the registrar, Route header contains Route: sip:R;lr as it should.
What we'd like to do: 1) Lookup the contact (lookup("location");) 2) Rewrite the Route field to the value Route: sip:P2;lr,sip:P1;lr that is stored by R in an AVP. 3) Forward the Invite on this route to UA2
Can someone please give some hints on how this is typically done in OpenSER? Although we rewrite the Invite's Route header field (new value stored in an AVP) at the Registrar, loose_route() does not work. We tried several alternatives including re-writing the Route header, pushing hard-coded strings into the Route, etc. but none of these solutions does what we want.
What does work is if R self-forwards the Invite and only then adds a new Route header. Apparently loose_route() in R acts on the route header of the incoming INVITE - if present - and ignores route header changes done within the script.
Thanks in advance --Joachim
I think the Path module from ser experimental tree, recently updated by Andreas Granig, could do that. Probably you would have to port it to openser.
regards klaus
Joachim Fabini wrote:
Hi,
We'd like to force the following SIP INVITE routing scenario: UA1->P1->P2->R->P2->P1->UA2.
Unfortunately the Route is not known apriori and must be built dynamically. P1 knows the Route from P1 to R, R knows the Route from R to P1/UA2.
The INVITE sent by UA1 is loosely routed to R based on the Route (Route: sip:P2;lr,sip:R;lr) that is added by P1 to UA1's INVITE. This works. The message arrives correctly to the registrar, Route header contains Route: sip:R;lr as it should.
What we'd like to do:
- Lookup the contact (lookup("location");)
- Rewrite the Route field to the value Route: sip:P2;lr,sip:P1;lr that is stored by R in an AVP.
- Forward the Invite on this route to UA2
Can someone please give some hints on how this is typically done in OpenSER? Although we rewrite the Invite's Route header field (new value stored in an AVP) at the Registrar, loose_route() does not work. We tried several alternatives including re-writing the Route header, pushing hard-coded strings into the Route, etc. but none of these solutions does what we want.
What does work is if R self-forwards the Invite and only then adds a new Route header. Apparently loose_route() in R acts on the route header of the incoming INVITE - if present - and ignores route header changes done within the script.
Thanks in advance --Joachim
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Klaus Darilion wrote:
I think the Path module from ser experimental tree, recently updated by Andreas Granig, could do that. Probably you would have to port it to openser.
It's not yet in CVS, and it will not be merged into the path module but into registrar/usrloc. Still waiting for approval from Jan though.
Andy
Hi Klaus,
Seems like I missed to mention the most important thing: We do have the mechanisms to store and retrieve all routes in place. What I am looking for is just the mechanism (OpenSER calls, order of calls) where/how to add some route headers within the registrar so that it can route the message to the destination.
It's about plain SIP routing, nothing to do with path (although it's a path implementation).
regards --Joachim
-----Original Message----- From: Klaus Darilion [mailto:klaus.mailinglists@pernau.at] Sent: Donnerstag, 20. Oktober 2005 15:33 To: Joachim Fabini Cc: users@openser.org; 'Joachim Fabini' Subject: Re: [Users] Registrar-initiated Route changes on Invite?
I think the Path module from ser experimental tree, recently updated by Andreas Granig, could do that. Probably you would have to port it to openser.
regards klaus
Joachim Fabini wrote:
Hi,
We'd like to force the following SIP INVITE routing scenario: UA1->P1->P2->R->P2->P1->UA2.
Unfortunately the Route is not known apriori and must be built dynamically. P1 knows the Route from P1 to R, R knows the Route from R to P1/UA2.
The INVITE sent by UA1 is loosely routed to R based on the Route (Route: sip:P2;lr,sip:R;lr) that is added by P1 to UA1's INVITE. This works. The message arrives correctly to the registrar, Route header contains Route: sip:R;lr as it should.
What we'd like to do:
- Lookup the contact (lookup("location");)
- Rewrite the Route field to the value Route: sip:P2;lr,sip:P1;lr that is stored by R in an AVP.
- Forward the Invite on this route to UA2
Can someone please give some hints on how this is typically done in OpenSER? Although we rewrite the Invite's Route header field (new value stored in an AVP) at the Registrar, loose_route() does not work. We tried several alternatives including re-writing the Route header, pushing hard-coded strings into the Route, etc. but none of these solutions does what we want.
What does work is if R self-forwards the Invite and only then adds a new Route header. Apparently loose_route() in R acts on the route header of the incoming INVITE - if present - and ignores route header changes done within the script.
Thanks in advance --Joachim
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Hello Joachim,
the solution is rather simple. If you have a set of proxies where you want to send the message, you have to add the address of the first one in dst_uri (see avp_pushto() -> $duri: http://www.voice-system.ro/docs/avpops/ar01s06.html#avp_pushto) and the rest of them in Route headers.
Cheers, Daniel
On 10/20/05 18:12, Joachim Fabini wrote:
Hi Klaus,
Seems like I missed to mention the most important thing: We do have the mechanisms to store and retrieve all routes in place. What I am looking for is just the mechanism (OpenSER calls, order of calls) where/how to add some route headers within the registrar so that it can route the message to the destination.
It's about plain SIP routing, nothing to do with path (although it's a path implementation).
regards --Joachim
-----Original Message----- From: Klaus Darilion [mailto:klaus.mailinglists@pernau.at] Sent: Donnerstag, 20. Oktober 2005 15:33 To: Joachim Fabini Cc: users@openser.org; 'Joachim Fabini' Subject: Re: [Users] Registrar-initiated Route changes on Invite?
I think the Path module from ser experimental tree, recently updated by Andreas Granig, could do that. Probably you would have to port it to openser.
regards klaus
Joachim Fabini wrote:
Hi,
We'd like to force the following SIP INVITE routing scenario: UA1->P1->P2->R->P2->P1->UA2.
Unfortunately the Route is not known apriori and must be built dynamically. P1 knows the Route from P1 to R, R knows the Route from R to P1/UA2.
The INVITE sent by UA1 is loosely routed to R based on the Route (Route: sip:P2;lr,sip:R;lr) that is added by P1 to UA1's INVITE. This works. The message arrives correctly to the registrar, Route header contains Route: sip:R;lr as it should.
What we'd like to do:
- Lookup the contact (lookup("location");)
- Rewrite the Route field to the value Route: sip:P2;lr,sip:P1;lr that is stored by R in an AVP.
- Forward the Invite on this route to UA2
Can someone please give some hints on how this is typically done in OpenSER? Although we rewrite the Invite's Route header field (new value stored in an AVP) at the Registrar, loose_route() does not work. We tried several alternatives including re-writing the Route header, pushing hard-coded strings into the Route, etc. but none of these solutions does what we want.
What does work is if R self-forwards the Invite and only then adds a new Route header. Apparently loose_route() in R acts on the route header of the incoming INVITE - if present - and ignores route header changes done within the script.
Thanks in advance --Joachim
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Hi Daniel,
another question concerning this set of proxies I want to travers.
I insert the first one with avp_pushto($duri...) But how do I get openser to insert this new header without forwarding it to itself (using forward).
It works with the following config Avpushto("$duri","adress1"); Avpushto("$Route","adress2"); Forward("itself");
Regards Johannes
-----Ursprüngliche Nachricht----- Von: users-bounces@openser.org [mailto:users-bounces@openser.org] Im Auftrag von Daniel-Constantin Mierla Gesendet: Freitag, 21. Oktober 2005 10:47 An: Joachim Fabini Cc: 'Joachim Fabini'; users@openser.org Betreff: Re: [Users] Registrar-initiated Route changes on Invite?
Hello Joachim,
the solution is rather simple. If you have a set of proxies where you want to send the message, you have to add the address of the first one in dst_uri (see avp_pushto() -> $duri: http://www.voice-system.ro/docs/avpops/ar01s06.html#avp_pushto) and the rest of them in Route headers.
Cheers, Daniel
On 10/20/05 18:12, Joachim Fabini wrote:
Hi Klaus,
Seems like I missed to mention the most important thing: We do have the mechanisms to store and retrieve all routes in place. What I am looking for is just the mechanism (OpenSER calls, order of calls) where/how to add some route headers within the registrar so that it can route the message to the destination.
It's about plain SIP routing, nothing to do with path (although it's a path implementation).
regards --Joachim
-----Original Message----- From: Klaus Darilion [mailto:klaus.mailinglists@pernau.at] Sent: Donnerstag, 20. Oktober 2005 15:33 To: Joachim Fabini Cc: users@openser.org; 'Joachim Fabini' Subject: Re: [Users] Registrar-initiated Route changes on Invite?
I think the Path module from ser experimental tree, recently updated by Andreas Granig, could do that. Probably you would have to port it to openser.
regards klaus
Joachim Fabini wrote:
Hi,
We'd like to force the following SIP INVITE routing scenario: UA1->P1->P2->R->P2->P1->UA2.
Unfortunately the Route is not known apriori and must be built dynamically. P1 knows the Route from P1 to R, R knows the Route from R to P1/UA2.
The INVITE sent by UA1 is loosely routed to R based on the Route (Route: sip:P2;lr,sip:R;lr) that is added by P1 to UA1's INVITE. This works. The message arrives correctly to the registrar, Route header contains Route: sip:R;lr as it should.
What we'd like to do:
- Lookup the contact (lookup("location");)
- Rewrite the Route field to the value Route: sip:P2;lr,sip:P1;lr that is stored by R in an AVP.
- Forward the Invite on this route to UA2
Can someone please give some hints on how this is typically done in OpenSER? Although we rewrite the Invite's Route header field (new value stored in an AVP) at the Registrar, loose_route() does not work. We tried several alternatives including re-writing the Route header, pushing hard-coded strings into the Route, etc. but none of these solutions does what we want.
What does work is if R self-forwards the Invite and only then adds a new Route header. Apparently loose_route() in R acts on the route header of the incoming INVITE - if present - and ignores route header changes done within the script.
Thanks in advance --Joachim
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
_______________________________________________ Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Hello,
On 11/08/05 12:41, Johannes Lehninger wrote:
Hi Daniel,
another question concerning this set of proxies I want to travers.
I insert the first one with avp_pushto($duri...) But how do I get openser to insert this new header without forwarding it to itself (using forward).
dst_uri is not a header, is just a field inside openser meant to store the address of the next hop (outbound proxy). I am not sure I get your question. If you want to apply the changes to the SIP message (the new headers) and reprocess the message, then forwarding to itself is the only way. But I do not see any reason for what you want to achieve (if I got it right).
Cheers, Daniel
It works with the following config Avpushto("$duri","adress1"); Avpushto("$Route","adress2"); Forward("itself");
Regards Johannes
-----Ursprüngliche Nachricht----- Von: users-bounces@openser.org [mailto:users-bounces@openser.org] Im Auftrag von Daniel-Constantin Mierla Gesendet: Freitag, 21. Oktober 2005 10:47 An: Joachim Fabini Cc: 'Joachim Fabini'; users@openser.org Betreff: Re: [Users] Registrar-initiated Route changes on Invite?
Hello Joachim,
the solution is rather simple. If you have a set of proxies where you want to send the message, you have to add the address of the first one in dst_uri (see avp_pushto() -> $duri: http://www.voice-system.ro/docs/avpops/ar01s06.html#avp_pushto) and the rest of them in Route headers.
Cheers, Daniel
On 10/20/05 18:12, Joachim Fabini wrote:
Hi Klaus,
Seems like I missed to mention the most important thing: We do have the mechanisms to store and retrieve all routes in place. What I am looking for is just the mechanism (OpenSER calls, order of calls) where/how to add some route headers within the registrar so that it can route the message to the destination.
It's about plain SIP routing, nothing to do with path (although it's a path implementation).
regards --Joachim
-----Original Message----- From: Klaus Darilion [mailto:klaus.mailinglists@pernau.at] Sent: Donnerstag, 20. Oktober 2005 15:33 To: Joachim Fabini Cc: users@openser.org; 'Joachim Fabini' Subject: Re: [Users] Registrar-initiated Route changes on Invite?
I think the Path module from ser experimental tree, recently updated by Andreas Granig, could do that. Probably you would have to port it to openser.
regards klaus
Joachim Fabini wrote:
Hi,
We'd like to force the following SIP INVITE routing scenario: UA1->P1->P2->R->P2->P1->UA2.
Unfortunately the Route is not known apriori and must be built dynamically. P1 knows the Route from P1 to R, R knows the Route from R to P1/UA2.
The INVITE sent by UA1 is loosely routed to R based on the Route (Route: sip:P2;lr,sip:R;lr) that is added by P1 to UA1's INVITE. This works. The message arrives correctly to the registrar, Route header contains Route: sip:R;lr as it should.
What we'd like to do:
- Lookup the contact (lookup("location");)
- Rewrite the Route field to the value Route: sip:P2;lr,sip:P1;lr that is stored by R in an AVP.
- Forward the Invite on this route to UA2
Can someone please give some hints on how this is typically done in OpenSER? Although we rewrite the Invite's Route header field (new value stored in an AVP) at the Registrar, loose_route() does not work. We tried several alternatives including re-writing the Route header, pushing hard-coded strings into the Route, etc. but none of these solutions does what we want.
What does work is if R self-forwards the Invite and only then adds a new Route header. Apparently loose_route() in R acts on the route header of the incoming INVITE - if present - and ignores route header changes done within the script.
Thanks in advance --Joachim
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Hi Daniel,
Unfortunately your solution did not solve the problem. Any other idea?
Maybe a detailed description of the task can help: Assume an OpenSER registrar that is responsible for our domain. This registrar receives an Invite for a callee within our domain. Our registrar has stored a route that is associated with the callee's contact (the callee is obviously registered with our registrar).
Task: The Invite message is supposed to follow exactly this stored route to the contact/callee. How can we do this.
Our approach: the OpenSER Registrar must do the following: 1. Replace the destination/Request URI with the contact address (no other proxy on the path can do this) 2. Insert the Route header (stored in an AVP) into the received Invite. 3. Relay this Invite message (including our route header) to the callee via the route described by our route header (i.e. relay the Invite to the first entry in our route header).
It seems obvious and straight-forward how to do this - unfortunately our attempts do not show the expected result. (1) works and (2) works also, all we struggle with is (3).
t_relay() ignores the route header field that we added and forwards the Invite directly to the contact address. This nonregarding that the route header field that we pushed into the Invite in step (2) IS added correctly to the message (Ethereal traces show that OpenSER appends the route header correctly to the message. But it does not send the message according to the route header but forwards it directly to the contact)
Surprisingly: when the Registrar statlessly forwards the Invite message to itself (after step 2, i.e. with added route header) and then does t_relay, the route is taken correctly. Probably needless to mention that this forward to itself is not what we want...
So: Any idea how we can overcome this problem? Can you maybe detail on the routing logic that prevents OpenSER from sending the INVITE via the correct route?
Many thanks in advance, best regards --Joachim
obviously openser process route information when the message is received, not during sending. Thus, adding route headers will not change the routing of the message.
How do you insert the route headers? Via AVP? If yes, try to push the next hop into the destination URI (openser differs between destination URI and request URI. If duri is set, openser will forward to duri isnstead of ruri).
avp_pushto("$duri","i:11"); (i:11 stores the URI of the next proxy)
regards klaus
Joachim Fabini wrote:
Hi Daniel,
Unfortunately your solution did not solve the problem. Any other idea?
Maybe a detailed description of the task can help: Assume an OpenSER registrar that is responsible for our domain. This registrar receives an Invite for a callee within our domain. Our registrar has stored a route that is associated with the callee's contact (the callee is obviously registered with our registrar).
Task: The Invite message is supposed to follow exactly this stored route to the contact/callee. How can we do this.
Our approach: the OpenSER Registrar must do the following:
- Replace the destination/Request URI with the contact address (no other proxy on the path can do this)
- Insert the Route header (stored in an AVP) into the received Invite.
- Relay this Invite message (including our route header) to the callee via the route described by our route header (i.e. relay the Invite to the first entry in our route header).
It seems obvious and straight-forward how to do this - unfortunately our attempts do not show the expected result. (1) works and (2) works also, all we struggle with is (3).
t_relay() ignores the route header field that we added and forwards the Invite directly to the contact address. This nonregarding that the route header field that we pushed into the Invite in step (2) IS added correctly to the message (Ethereal traces show that OpenSER appends the route header correctly to the message. But it does not send the message according to the route header but forwards it directly to the contact)
Surprisingly: when the Registrar statlessly forwards the Invite message to itself (after step 2, i.e. with added route header) and then does t_relay, the route is taken correctly. Probably needless to mention that this forward to itself is not what we want...
So: Any idea how we can overcome this problem? Can you maybe detail on the routing logic that prevents OpenSER from sending the INVITE via the correct route?
Many thanks in advance, best regards --Joachim
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users