[sr-dev] More about locally generated 408

Iñaki Baz Castillo ibc at aliax.net
Tue Apr 6 16:01:06 CEST 2010


Hi, I would like to insist in the 408 problem when it's locally
generated due to fr_timer timeout in SIP UDP. Let's suppose this very
simple example:

- Call from UAC to proxy.
- Proxy routes it to a gateway (no failover to other gateways).

3 cases:

a) Gateway replies 408, so TM selects 408 (OK).

b) Provisional responses are received but fr_inv_timer expires, so TM
generates a local 408. The client receives 408 (OK).

c) No reponse at all from gateway so fr_timer expires and TM generates
a local 408. The client receives 408 (WRONG).


Obviously in case "c" it doesn't make sense to send a 408 to the
client as the fact is that the gateway is unreachable, so a 500 should
be replied to the client.

So what is the problem? In case "c" there should be a "transport
error". According to RFC 3261 if an UDP transaction gets a ICMP "port
unreachable" it should generate a local 503. And if it receives no UDP
reply at all (neither an ICMP notification) then it should generate a
local 408.

Problems with this:
- SR doesn't rely on received ICMP (it neither receives them AFAIK).
- If the gateway is down there will be not a ICMP message (neither if
the gateway TCP/IP stack doesn't generate such ICMP notifications).

So with the current TM design an UDP transport error just can cause a
local 408, and never a 503. This is the main problem.

Unfortunatelly such 408 is painful as the examples above show. This is
the reason I propose TM to generate a local 503 if no response at all
is received for a UDP requests (when fr_timer expires).

More or less the same info in this report:
  http://sip-router.org/tracker/index.php?do=details&task_id=55

Regards.


-- 
Iñaki Baz Castillo
<ibc at aliax.net>



More information about the sr-dev mailing list