i'm trying to figure out what still needs to be done in order to
complete outbound support.
i would like to start by supporting the very basic example in rfc5626,
where there is only one co-located outbound proxy/registrar to which an
outbound capable ua sends this register request:
REGISTER
sip:example.com SIP/2.0
Via: SIP/2.0/TCP 192.0.2.2;branch=z9hG4bK-bad0ce-11-1036
Max-Forwards: 70
From: Bob <sip:bob@example.com>;tag=d879h76
To: Bob <sip:bob@example.com>
Call-ID: 8921348ju72je840.204
CSeq: 1 REGISTER
Supported: path, outbound
Contact: <sip:line1@192.0.2.2;transport=tcp>; reg-id=1;
;+sip.instance="<urn:uuid:00000000-0000-1000-8000-000A95A0E128>"
Content-Length: 0
in the request, outbound support is indicated by "outbound" and
"path"
in supported header and by "+sip.instance" and "reg-id" params of
contact
header. note that there is no Path header in the request.
when the outbound proxy/registrar receives this request, it checks if
+sip.instance and reg-id values are the same as in previous request for
the same AoR. if they are not, registrar saves the +sip.instance and
reg-id along with the rest of the contact header. if they are,
registrar replaces the old contact uri and flow info with the new one.
since outbound capable ua handles nat keepalive itself, there is no need
for the the outbound proxy/registrar to nat ping the ua, i.e., in case
of kamailio, outbound capable UAs should not be pinged even when they
are behind nat.
when someone sends request to sip:bob@example.com, the outbound
proxy/registrar looks and finds the flow over which sip:bob@example.com
was registered and forwards the request over that flow instead of
resolving the contact uri.
how much of the above is currently supported?
- is registrar capable of overwriting the old contact uri and flow info
with new one if +sip.instance and reg-id values of an AoR match old one?
- is nat pinging turned off for outbound capable UAs?
- is request to an outbound capable us send over its flow rather than
based on contact uri?
-- juha