[SR-Users] Failover with SRV records

marius zbihlei marius.zbihlei at 1and1.ro
Mon Nov 29 14:14:25 CET 2010


On 11/29/2010 02:16 PM, Iñaki Baz Castillo wrote:
> 2010/11/29 marius zbihlei<marius.zbihlei at 1and1.ro>:
>    
>> Kamailio does not use ICMP replies to check if a host is reachable on a UDP
>> sendto(). This means that ICMP port unreachable errors are not handled by K
>> and so the same host is retried on TM retransmits.
>>      
> AFAIR using raw sockets checking ICMP notifications would be possible
> (not yet implemented, but possible as I remember from a thread with
> Andrei).
>    
Possible, but not easily implementable, as ICMP Host unreachable are 
sent asynchronously from the kernel. Also the current sendto() call does 
not guarantee delivery on all Unixes (Linux should be fine),  connected 
UDP sockets are to be used instead.
> IMHO this would be very useful because if a UDP port is unreachable
> and there is a ICMP notification about it, the proxy should generate
> an internal 503 (transport error) rather than a 408 (fr_timer
> timeout).
>
>    
Well, this means that we should disable dns_failover (or equivalents) 
completely and handle ICMP errors in failure_route blocks(just test if 
the transaction issued a 503). If I recall RFC 3263 , this would mean 
another server discovery (as the new request generates a new 
transaction) so again there is the possibility that the broken host is 
selected. If we use this dns fallback(IMHO this is a nice feature- I 
personally rely on this) how do we decide to generate a 503 ?

If the host is already a IP address, that it would be ok to send a 503, 
as no DNS failover is possible.

Ideas?

Marius



More information about the sr-users mailing list