[Users] Proxy/Registrar and NAT
Klaus Darilion
klaus.mailinglists at pernau.at
Mon May 7 11:42:38 CEST 2007
Bernie Hoeneisen wrote:
> Hi Klaus, Alex et al.
>
> I was thinking about the same problem.
>
> My setup has two redundant SIP Proxy/Registrar (OpenSER 1.1) Servers (P1
> and P2), no additonal edge proxies. It uses either MySQL cluster or
> Master-Master Replication to exchange the state of the location table.
>
> For NAT Processing of REGISTER I use the Nathelper module, which writes
> the original (inside NAT) address to the 'contact' column and the
> information, where the REGISTER request was received from (outside NAT
> socket) goes to 'received' column of the location table.
>
> e.g.:
> contact column: sip:behoe at 192.168.1.56:2051
> received column: sip:130.56.88.20:5432
>
> When an INVITE arrives at P1 (or P2), the 'contact' column will go to
> the R-URI and the 'received' value will be used as the next target of
> the INVITE request.
>
> INVITE requests that do not arrive at the proxy, where the UA has
> registered, have (depending on the NAT type) some likelihood to fail.
>
> Appart from that and as long as there is no path value saved in the
> location table, this work fine. If there is a path value, its content
> will go to the Route header field and the the request is sent to the
> topmost Route entry. Therefore it looses the information that was stored
> in the 'received' column....:-(
Hi Bernie!
Do you use the "received" features of path module? I think this should
solve your problems.
http://www.openser.org/docs/modules/1.2.x/path#AEN82 and
http://www.openser.org/docs/modules/1.2.x/path#AEN123
regards
klaus
> The preserve this information and to make sure that LL requests are
> routed via the proxy, the UA has registered to, I have some idea, that
> uses path. (Unfortunately not all of my UAs support 'outbound'...:-( ):
>
> When the REGISTER arrives at the Proxy P1, I would insert a Path header
> field with the address of P1 (i.e. the IP address and port of the proxy
> processing the request)
>
> Furthermore I would add a new header field parameter to the contact
> header field (let's call it "extsock" for the time being) containing the
> external NAT socket (i.e. the same information that also goes to
> 'received' column)
>
> e.g.
> Path: <sip:136.59.10.85:5060;lr>,
> Contact: <sip:behoe at 192.168.1.56:2051;extsock=sip:130.56.88.20:5432;lr>
>
> This will then be stored in the 'path' / 'contact' columns of the
> location table at save().
>
> When the INVITE arrives e.g. at P2, it does the location lookup: The
> Route header field will be populated with the content of the 'path'
> column and the R-URI will be rewritten with the 'contact' column. This
> means the request will be normally forwarded to P1 (topmost Route).
>
> The SIP INVITE looks e.g. as follows:
>
> INVITE sip:behoe at 192.168.1.56:2051;extsock=sip:130.56.88.20:5432 SIP/2.0
> Route:<sip:136.59.10.85:5060;lr>
> [...]
>
> After the request arrives at P1, it checks, whether there is an extsock
> parameter in the R-URI, and if yes, it uses its values as the next
> target of the request i.e. sip:130.56.88.20:5432
> (Maybe P1 could even remove the extsock parameter from the R-URI at this
> stage to make some Nokia E-Series' phones happier...)
>
> My questions:
> - Is this idea feasible? Does it work in any case? Any issues with forking?
> - Could it easily be configured to OpenSER, or is there a change in the
> source code necessairy?
> - How much does it break SIP standards? ;-)
>
> Looking forward to your feedback.
>
> Have a nice weekend!
>
> cheers,
> Bernie
>
>
>> On Wednesday 02 May 2007 08:33, Klaus Darilion wrote:
>>> Hi Alex!
>>>
>>> Without having done this: You can configure the SIP proxies as load
>>> balancers too which distribute the load over all the proxy/registrars
>>> (including itself).
>>
>> I thought of that, but then every REGISTER needs to be forwarded to
>> another
>> proxy to get the path info right. This result in a great amount of
>> traffic
>> between the proxies and extra processing power. I want the REGISTER
>> request
>> to be handled on the first host it arrives on. Then only some INVITE's
>> need
>> to create inter-proxy traffic.
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
More information about the Users
mailing list