[Users] RE: failure_route.... I could cry...

Klaus Darilion klaus.mailinglists at pernau.at
Wed Dec 14 18:15:17 CET 2005


Douglas Garstang wrote:
> Klaus,
> 
> Adding a second nic can't hurt. Asterisk can bind to multiple
> interfaces in a system. We don't have to have the info in OpenSER.

Which interface does asterisk use for sending SIP messages? What if you 
unplug this interface - does Asterisk resend the SIP message using the 
other NIC and the proper IP address in Contact headers?

klaus

> We're using OpenSER as a means by which we can 'copy' the
> registrations to all the Asterisk systems, as Asterisk has no way to
> do this. By nature of the fact that OpenSER is also doing the
> registration authentication, it's interfacing to MySQL and for now
> I'm saving the location info there as well.
> 
> IMO most other people's setup's look a little under-engineered. Most
> people seem to be happy with having a hot or even cold spare. We're a
> telco (CLEC) so downtown is a deal breaker.
> 
> Doug.
> 
> -----Original Message----- From: Klaus Darilion
> [mailto:klaus.mailinglists at pernau.at] Sent: Wednesday, December 14,
> 2005 9:41 AM To: Douglas Garstang Cc: users at openser.org Subject: Re:
> [Users] RE: failure_route.... I could cry...
> 
> 
> If you already have 2 asterisk boxes, I do not think that adding a 
> second NIC in each asterisk will increase availability. Does Asterisk
>  bind to both interfaces? Which interface will be used by asterisk
> for sending requests? Which src_IP will be used? What if this
> interface is broken?
> 
> Why do you need the location info in Asterisk and openser?
> 
> IMO your setup looks like a little bit over-engineered.
> 
> regards klaus
> 
> 
> Douglas Garstang wrote:
> 
>> Klaus,
>> 
>> Yes. It's necessary to replicate 4 times. We're implementing a
>> 'farm' of Asterisk hosts. Asterisk has a serious limitation where
>> there's no way to share contact info for phones between them.
>> OpenSER seemed like it may be able to address this issue, by
>> accepting registrations from the phones and then 'fanning' them out
>> to ALL the Asterisk boxes. In this way, each Asterisk box knows
>> where every phone is. Up to this point I had just been calling
>> forward() multiple times, once to each Asterisk system and it
>> seemed to work well. With the addition of extra ethernet ports in
>> each Asterisk box (for extra redundancy), it got more complicated
>> as I didn't want to register twice to the same Asterisk system.
>> While I don't think that would cause a problem, I was just trying
>> to make it as bullet-proof as I could.
>> 
>> Doug.
>> 
>> -----Original Message----- From: Klaus Darilion
>> [mailto:klaus.mailinglists at pernau.at] Sent: Wednesday, December 14,
>> 2005 9:06 AM To: Douglas Garstang Cc: users at openser.org Subject:
>> Re: [Users] RE: failure_route.... I could cry...
>> 
>> 
>> That's a difficult setup. I've never did this yet and do not know
>> if it is possible at all. you can use t_replicate but this works
>> only with 1 host. I think someone solved this using forward_tcp.
>> 
>> is it really necessary to replicate 4 times?
>> 
>> regards klaus
>> 
>> Douglas Garstang wrote:
>> 
>> 
>>> Oh dear... it's failing because as far as t_relay() is concerned,
>>> the packet has been delivered, and the transaction is complete,
>>> right? If that's the case, how can I also send the REGISTRATION
>>> packet to another destination? Can I use forward() with
>>> failure_route? Arrgh!.
>>> 
>>> 
>>> 
>>> 
>>>> -----Original Message----- From: 	Douglas Garstang Sent:
>>>> Tuesday, December 13, 2005 6:01 PM To:	'users at openser.org' 
>>>> Subject:	failure_route.... I could cry...
>>>> 
>>>> I am trying to have OpenSER forward registration requests to
>>>> multiple Asterisk boxes with failover. Each Asterisk box has
>>>> two ip addresses. My logic tries to relay to the first IP on
>>>> the first Asterisk box (192.168.10.100). If that fails, it
>>>> tries to relay to the second IP on the first Asterisk box
>>>> (192.168.10.17). It then goes on and repeats the process with
>>>> another Asterisk box who's IP's are 192.168.10.10.101 and
>>>> 192.168.10.8.
>>>> 
>>>> Actually the first IP address on each Asterisk system is fake
>>>> (100 and 101)... that's how I am testing that it will fail to
>>>> the second one.
>>>> 
>>>> The openser.cfg below  is causing this to be logged to
>>>> messages: Dec 13 17:50:08 bil-pdev-3 openser[22318]: route10:
>>>> Asterisk-1, NIC-1 Dec 13 17:50:08 bil-pdev-3 openser[22318]:
>>>> route20: Asterisk-2, NIC-1 Dec 13 17:50:08 bil-pdev-3
>>>> openser[22318]: ERROR: t_newtran: transaction already in
>>>> process 0xb6126560      < --- Why? Dec 13 17:50:08 bil-pdev-3
>>>> openser[22318]: route20: t_relay returned error
>>>> <--- Why? Dec 13 17:50:09 bil-pdev-3 openser[22328]: failure21:
>>>> Failed to register with Asterisk-2, NIC-1 Dec 13 17:50:09
>>>> bil-pdev-3 openser[22328]: route22: Asterisk-2, NIC-2 Dec 13
>>>> 17:50:09 bil-pdev-3 openser[22328]: route22: End of routine Dec
>>>> 13 17:50:10 bil-pdev-3 openser[22322]: User local found Dec 13
>>>> 17:50:10 bil-pdev-3 openser[22320]: User local found
>>>> 
>>>> Why am I getting the t_newtran and t_relay errors in there?
>>>> What am I doing wrong? I'm just calling
>>>> rewritehostport(next-ip), followed by append_branch() and
>>>> t_relay. In fact something really weird happens. When I have
>>>> the code there for route[20], failure_route[21] and route[22],
>>>> it causes the code for the first three routing blocks,
>>>> route[10], failure_route[11] and route[12] to act differently.
>>>> It seems to make route20 fail to connect eventhough it comes
>>>> AFTER it in the code.
>>>> 
>>>> I'd really appreciate some help! Am I doing something wrong
>>>> with rewritehostport and append_branch, because quite frankly
>>>> the docs are terrible.
>>>> 
>>>> 
>>>> if ( method == REGISTER ) { if ( !www_authorize("voip.com",
>>>> "subscriber") ) { www_challenge("voip.com", "0"); }; 
>>>> save("location"); route(10); route(20);
>>>> 
>>>> # # First Asterisk System. #
>>>> 
>>>> # Try first IP on this system (fake - will fail) route[10] { 
>>>> xlog ("L_INFO","route10: Asterisk-1, NIC-1"); 
>>>> t_on_failure("11"); rewritehostport("192.168.10.100:5060"); 
>>>> append_branch(); if ( !t_relay() ) { xlog ("L_INFO","route10:
>>>> t_relay returned error"); } }
>>>> 
>>>> failure_route[11] { xlog ("L_INFO","failure11: Failed to
>>>> register with Asterisk-1, NIC-1"); route(12); }
>>>> 
>>>> # Try second IP on this system (real - should work) route[12] {
>>>>  xlog ("L_INFO","route12: Asterisk-1, NIC-2"); 
>>>> t_on_failure("13"); rewritehostport("192.168.10.17:5060"); 
>>>> append_branch(); if ( !t_relay() ) { xlog ("L_INFO","route12:
>>>> t_relay returned error"); } xlog ("L_INFO","route12: End of
>>>> routine"); return; }
>>>> 
>>>> # # Second Asterisk System #
>>>> 
>>>> # Try first IP on this system (fake - will fail) route[20] { 
>>>> xlog ("L_INFO","route20: Asterisk-2, NIC-1"); 
>>>> t_on_failure("21"); rewritehostport("192.168.10.101:5060"); 
>>>> append_branch(); if ( !t_relay() ) { xlog ("L_INFO","route20:
>>>> t_relay returned error");> } }
>>>> 
>>>> failure_route[21] { xlog ("L_INFO","failure21: Failed to
>>>> register with Asterisk-2, NIC-1"); route(22); }
>>>> 
>>>> # Try second IP on this system (real - should work) route[22] {
>>>>  xlog ("L_INFO","route22: Asterisk-2, NIC-2"); 
>>>> t_on_failure("23"); rewritehostport("192.168.10.8:5060"); 
>>>> append_branch(); if ( !t_relay() ) { xlog ("L_INFO","route22:
>>>> t_relay returned error"); } xlog ("L_INFO","route22: End of
>>>> routine"); return; }
>>>> 
>>>> Doug
>>>> 
>>>> 
>>> 
>>> 
>>> _______________________________________________ Users mailing
>>> list Users at openser.org 
>>> http://openser.org/cgi-bin/mailman/listinfo/users
>>> 
>>> 
>> 
>> 
>> 
> 
> 





More information about the Users mailing list