[Users] ACK Routing: Best practices?

Carsten Bock openser-list at qbiz.de
Tue Aug 1 18:43:07 CEST 2006


Hi everybody,

Short question: Are there any best practices regarding the routing of 
ACK Messages?
Currently we have the following logic implemented:

route {
    [...]
    
##################################################################################################################
    # Check for Re-Transmissions (not ACK/CANCEL)
    
###############################################################################################################
    if ((method != "CANCEL") && (method != "ACK")) {
        if (t_check_trans()) {
            log(1, "Re-Transmission detected, message dropped.\n");
            # Drop the message silently.
            return;
        }
    }
   
    
##################################################################################################################
    # Loose-Routing (RFC3261)
    
###############################################################################################################
    if (loose_route()) {
        route(10);
        return;
    }; # if (loose_route()) { 
   
    
##################################################################################################################
    # ACK/CANCEL Messages may be relayed
    
###############################################################################################################
    if ((method == "CANCEL") || (method == "ACK")) {
        if (uri != myself) {
            #  Und das Paket entsprechend weiterleiten
            if (!t_relay("udp:outbound_proxy:outbound_proxy_port")) {
                log(1, "Not possible to relay\n");
                # Fehler melden
                sl_reply_error();
                return;
            }
            return;
        }
    }
    [...]
    
##################################################################################################################
    # Rest of "normal" Routing logic with number manipulation / Routing 
to different Gateways / User Authorization/Authentication
    
###############################################################################################################
}

Is there any other method, to improve the routing of ACK/CANCEL 
Messages? I would like to avoid all the number manipulation, checking 
and choosing of a proper gateway....
I thought, this must (somehow) be possible since from a technical 
perspective the ACK and CANCEL Message can be associated with a 
corresponding INVITE Message (and the corresponding Transaction).
I've looked in the manual of the TM-Module and found the following example:
if ( is_method("CANCEL") ) {
if ( t_check_trans() )
t_relay();
exit;
}
(http://openser.org/docs/modules/1.1.x/tm.html#AEN460)

I guess, this example does not mean, that the URI gets rewritten 
properly and the CANCEL-/ACK-Message would get properly relayed to the 
destination, where it is supposed to end.
Is there any way to do it best? I've seen, that some clients do proper 
loose-routing for ACK-Messages, but not all clients, so this is not a 
solution.
Are there any other suggestions?

Thanks in advance,

Carsten



____________
Virus checked by G DATA AntiVirusKit






More information about the Users mailing list