One of the things that was requested at the start of the outbound work in
Kamailio was the ability to "force" outbound even when a UA does not
support it and to be able to use the outbound flow tokens for NAT
traversal instead of contact aliasing on "single server" configurations.
The use-case I have for outbound involves having the edge proxies and
registrars as separate devices. I don't have a need for "single server"
myself at the moment. I don't mind putting a bit of extra work in to
support it - but only if there is a genuine need for it and someone
available to test it.
My understanding of outbound NAT traversal is that in the forward
direction of the dialog the first edge proxy adds the flow token to the
first Record-Route (the RR it adds) to indicate where the request came
from, and the last edge proxy copies the flow token from the last Route
header (as added by the registrar supporting Path) into the last
Record-Route (the RR it adds). This means that the route-set for the
dialog now contains two flow tokens with covers all of the information
that would previously have been encoded in the Contact-URIs in the initial
request and the final response to that request.
To my mind this means we need to double-RR when there is just a single
proxy/registrar in use. It also means that, when there is a single
proxy/registrar and the Path extension would not normally be used, we
still need to do something to get the flow tokens (userinfo part of the
Path-URI) into the location table so that they can be used for NAT
traversal.
This means additional work will be needed for the edge proxy (in the RR
module) which is the part I am working on, and the registrar which is the
part others have been working on.
Regards,
Peter
what comes to single server, i.e., when edge proxy and
registrar are
co-located, it seems to me that nothings needs to be done. if you have
two such co-located entities, they do not need to be aware of each other
at all.
--
Peter Dunkley
Technical Director
Crocodile RCS Ltd