In PhonerLite ist das teilweise auch schon so implementiert. Jedoch erfolgt das nur, wenn NAT erkannt wurde. Hier mal ein Beispiel-Ablauf:
15:32:37,309: T: 91.121.81.212:5061 (TLS)
REGISTER sip:sip.antisip.com SIP/2.0
Via: SIP/2.0/TLS 79.219.223.41:64993;branch=z9hG4bK009ad048222ae011a1100013d495234c;rport;alias
From: "HeikoS" <sip:Phoner@sip.antisip.com>;tag=3849765438
To: "HeikoS" <sip:Phoner@sip.antisip.com>
Call-ID: 80033848-222A-E011-A10F-0013D495234C@79.219.223.41
CSeq: 1 REGISTER
Contact: 4C41-DF11-90B5-0013D495234C>"
Allow: INVITE, OPTIONS, ACK, BYE, CANCEL, INFO, NOTIFY, MESSAGE, UPDATE
Max-Forwards: 70
User-Agent: SIPPER for PhonerLite
Expires: 900
Content-Length: 0
15:32:37,314: Facility Confirm: 16 00 01 00 80 81 05 00 01 00 00 00 00 00 03 00 05 01 00 02 00 00
15:32:37,315: Facility Confirm (Supplementary Services)
15:32:37,316: Listen: success
-------------------------------------------
15:32:37,451: R: 91.121.81.212:5061 (TLS)
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS lias;received=79.219.223.41
From: "HeikoS" <sip:Phoner@sip.antisip.com>;tag=3849765438
To: "HeikoS" <sip:Phoner@sip.antisip.com>;tag=a9f4df6572361232c39b3b55ec89ff4b.8a26
Call-ID: 80033848-222A-E011-A10F-0013D495234C@79.219.223.41
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="sip.antisip.com", nonce="4d4428e86e33a2372efb3a4ea5fefcfbdfd5aba3", qop="auth"
Server: Kamailio (1.5.3-tls (i386/linux))
Content-Length: 0
-------------------------------------------
15:32:37,452: T: 91.121.81.212:5061 (TLS)
REGISTER sip:sip.antisip.com SIP/2.0
Via: SIP/2.0/TLS 79.219.223.41:64993;branch=z9hG4bK80306949222ae011a1100013d495234c;rport;alias
From: "HeikoS" <sip:Phoner@sip.antisip.com>;tag=3849765438
To: "HeikoS" <sip:Phoner@sip.antisip.com>
Call-ID: 80033848-222A-E011-A10F-0013D495234C@79.219.223.41
CSeq: 2 REGISTER
Contact: -4C41-DF11-90B5-0013D495234C>"
Authorization: Digest username="Phoner", realm="sip.antisip.com", nonce="4d4428e86e33a2372efb3a4ea5fefcfbdfd5aba3", uri="sip:sip.antisip.com", response="285e9189ce5c5ea8866a7ba3612991ec", algorithm=MD5, cnonce="234abcc436e2667097e7fe6eia53e8dd", qop=auth, nc=00000001
Allow: INVITE, OPTIONS, ACK, BYE, CANCEL, INFO, NOTIFY, MESSAGE, UPDATE
Max-Forwards: 70
User-Agent: SIPPER for PhonerLite
Expires: 900
Content-Length: 0
Man sieht, dass im zweiten REGISTER ein anderer Port im Contact steht - und zwar der, von welchen aus die Verbindung initiiert wird.