|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-CADC7578-5E96-58B2-9208-F7E53CA5EA32" xml:lang="en"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
13 <p>SIP NAT Traversal Controller API is an ECOM plug-in API that provides the |
|
14 connection between the SIP stack and an external UNSAF protocol module. The |
|
15 Network Address Translator (NAT) devices are found between the SIP User Agent |
|
16 (SIP UA) and SIP proxy, and have the UA as an outbound proxy. This creates |
|
17 the problems to maintain SIP connectivity between the UA and the remaining |
|
18 of the SIP network that are described as follows: </p> |
|
19 <ul> |
|
20 <li id="GUID-54670533-2436-5214-A2D8-FFE336B1433F"><p>The SIP |
|
21 UA registers its contact to SIP registrar using the private IP address & |
|
22 UDP/TCP port pair within the contact URI. These addresses are not accessible |
|
23 from the proxy. The NAT maps the private addresses to some other addresses |
|
24 which can be public or private, in another address range. The proxy can access |
|
25 the UA when you send the SIP requests and responses to addresses that the |
|
26 NAT allocates for the UA. You must have the Contact header of the REGISTER |
|
27 request to contain addresses allocated by the NAT for the UA, instead of the |
|
28 private addresses of the UA. </p> </li> |
|
29 <li id="GUID-7EF2F69F-C01F-5F41-8348-323580473E23"><p>The NAT allocates IP |
|
30 addresses to the UA when the UA sends IP packets to a destination through |
|
31 the NAT. The NAT type determines if the address-port pairs are either applicable |
|
32 or dependent on the IP address and UDP or TCP port. The UA sends the IP packets |
|
33 to the UDP or TCP port. </p> <p>Depending on the NAT type, the addresses within |
|
34 the contact URI must be those that any device outside the NAT can see and |
|
35 use or those that only the specific destination (SIP proxy in this case) can |
|
36 see. To detect addresses the UA uses Unilateral Self-Address Fixing (UNSAF) |
|
37 protocols defined within IETF. These protocols include the Simple Traversal |
|
38 of UDP through NATs (STUN) or Traversal Using Relay NAT (TURN). </p><p>The |
|
39 allocation created by NAT is not permanent. It expires if the UDP flow or |
|
40 TCP connection between the end-points remains idle. To prevent expiration |
|
41 the UA send keepalive messages within the flow to refresh the mapping. Different |
|
42 types of keepalive messages are used like Carriage-Return/Line-Feed (CRLF) |
|
43 sequences, OPTIONS requests or STUN binding requests</p></li> |
|
44 </ul> |
|
45 <p>To enable all these processes the SIP stack contains an ECOM plug-in API, |
|
46 SIP NAT Traversal Controller API. The stack uses these plug-ins to access |
|
47 and use a separate UNSAF protocol implementation. This implementation supports |
|
48 protocols like STUN and TURN. These protocols enable the SIP stack to detect |
|
49 the server reflexive and relayed addresses for the UA The protocols also implements |
|
50 the keepalive messages for the flow toward the outbound proxy. </p> |
|
51 </conbody></concept> |