[Devel] [ openser-Patches-1647045 ] record-route uri parameter for stateless sip loadbalancing

SourceForge.net noreply at sourceforge.net
Fri Feb 2 10:13:39 CET 2007


Patches item #1647045, was opened at 2007-01-29 14:46
Message generated for change (Comment added) made by bogdan_iancu
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=1647045&group_id=139143

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Marcus Hunger (marcushunger)
Assigned to: Nobody/Anonymous (nobody)
Summary: record-route uri parameter for stateless sip loadbalancing

Initial Comment:
Following andreas granigs proposal  (http://www.openser.org/pipermail/users/2006-March/003289.html) for creating a loadbalanced/redundant sip-proxy-environment, it seems to me, that it is not possible to create a scenario with loadbalancers being stateless and clients being behind a nat. Establishing an INVITE-dialog went well until the callee's 200 OK had to be ACKed. At this point of the session, messages are not routed anymore using path's information but only relying on record-routing and record-routes lack information about natted clients. So the only out of the box solution I am aware of is keeping the loadbalancer stateful.

In order to circumvent this problem and enable the lb to be stateless, I introduced a record-route uri-parameter which stores the ip-address of the client's nat-gateway. These parameters are created by the outgoing lb, are kept when the loose-routing sets are created by the uac and the information there is then used to route the sip message to the client correctly by the lb.

I created a patch for openser 1.1.1 which implements the described functionality. It introduces a function for openser.cfg called add_rr_received_param, which adds ";nat_recv=sip:[dst_ip:dst_port]" to current record-route header field. Also it includes a function which translates that nat_recv-parameter to "received", when it accures in a route header field so the packet can then be routed according to the included information. The function hooks via register_rrcb.

----------------------------------------------------------------------

>Comment By: Bogdan (bogdan_iancu)
Date: 2007-02-02 11:13

Message:
Logged In: YES 
user_id=1275325
Originator: NO

Hi Marcus,

there is a reply route in stateless mode also. You just have to define :
 onreply_route{
 }

and this will a default route for all replies.

regards,
bogdan

----------------------------------------------------------------------

Comment By: Marcus Hunger (marcushunger)
Date: 2007-01-29 15:24

Message:
Logged In: YES 
user_id=1704473
Originator: YES

As far as I understand sip, ACKs for 200 OK are routed to the contact
header field of the 200 OK. Fixing this contact should have to be done in a
reply-route, which does not exists on a stateless router, does it? That's
why I differentiate between stateless and stateful. Anyway, I remember
problems changing contacts/uri with some UACs, so I'd like to keep these.

----------------------------------------------------------------------

Comment By: Klaus Darilion (klaus_darilion)
Date: 2007-01-29 15:03

Message:
Logged In: YES 
user_id=1318360
Originator: NO

Hi!

I do not understand correctly the problem. IMO it is unrelated if the
forwarding is stateless or statefull. What is the problem when the load
balancer does record_routing and fix_nated_contact? Or do you want to avoid
fix_nated_contact?

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=1647045&group_id=139143



More information about the Devel mailing list