Changes between Version 13 and Version 14 of IPv6

Mar 2, 2017 3:42:17 AM (2 years ago)



  • IPv6

    v13 v14  
    20 == IPv6 Support in pjlib == 
     20=== IPv6 Support in pjlib === 
    2222The work for adding IPv6 support in pjlib is documented by ticket #415. 
    61 == IPv6 Support in pjsip == 
     61=== IPv6 Support in pjsip === 
    6363The work for adding IPv6 support in pjlib is documented by ticket #421. 
    74 == IPv6 Support in pjlib-util (DNS SRV and AAAA resolution) == 
     74=== IPv6 Support in pjlib-util (DNS SRV and AAAA resolution) === 
    7676The work for adding IPv6 support in pjlib-util is documented by ticket #419 and continued in ticket #1927. 
    7878DNS AAAA resolution will be performed for each DNS SRV record when flag {{{PJ_DNS_SRV_RESOLVE_AAAA}}} or {{{PJ_DNS_SRV_RESOLVE_AAAA_ONLY}}} is set in {{{option}}} param when invoking {{{pj_dns_srv_resolve()}}}. Also flag {{{PJ_DNS_SRV_FALLBACK_AAAA}}} will allow resolver to fallback to DNS AAAA resolution when the SRV resolution fails. 
    80 == IPv6 Support in pjmedia (SDP, media transport) == 
     80=== IPv6 Support in pjmedia (SDP, media transport) === 
    8282The work for adding IPv6 support in pjmedia is documented by ticket #420. 
    8686 - the {{{rem_addr}}} and {{{rem_rtcp}}} fields in {{{pjmedia_stream_info}}} also have been changed to use {{{pj_sockaddr}}} union. 
    88 == IPv6 Support in pjnath (ICE) == 
     88=== IPv6 Support in pjnath (ICE) === 
    9090The work for adding IPv6 support in pjnath is documented by ticket #422. 
    182182    ... 
    183183 }}} 
     185== NAT64 == 
     187In its doc, Apple suggests/requires that applications are capable of  [ supporting IPv6 DNS64/NAT64 Networks]. A common misconception in the SIP world is that by using NAT64, IPv4 and IPv6 interoperability can be automatically achieved (i.e. SIP registration, calls, and media flow will work seamlessly and smoothly between any two endpoints regardless of their address families (IPv4/IPv6)). As the doc says: {{{This (DNS64/NAT64) is an IPv6-only network that continues to provide access to IPv4 content through translation}}}, so a client behind a NAT64 network can reach an IPv4 endpoint, but not necessarily the other way around. 
     189In more detail, an IPv6-only SIP client behind a NAT64 can communicate with IPv6 (or dual stack) server or clients just fine, but will experience problems with IPv4-only server or clients, because there are IPv6 address literals in the SIP/SDP fields (Via, Contact, SDP), which the IPv4 instance cannot understand. 
     191According to [ RFC 6157, IPv6 Transition in the Session Initiation Protocol (SIP)]: 
     192* Section 3.1: {{{In order to support both IPv4-only and IPv6-only user agents, it is RECOMMENDED that domains deploy dual-stack outbound proxy servers or, alternatively, deploy both IPv4-only and IPv6-only outbound proxies.}}} 
     193* Section 4: {{{An IPv6 node SHOULD also be able to send and receive media using IPv4 addresses, but if it cannot, it SHOULD support Session Traversal Utilities for NAT (STUN) relay usage [8].}}} 
     194* Section 4.2: {{{When following the ICE procedures, in addition to local addresses, user agents may need to obtain addresses from relays; for example, an IPv6 user agent would obtain an IPv4 address from a relay. }}} 
     195* Section 4.2:{{{ Implementations are encouraged to use ICE; however, the normative strength of the text above is left at a SHOULD since in some managed networks (such as a closed enterprise network) it is possible for the administrator to have control over the IP version utilized in all nodes and thus deploy an IPv6-only network, for example.  The use of ICE can be avoided for signaling messages that stay within such managed networks. }}} (our note:⇒ which means when network is not standardized to one IP version, the use of ICE is a "must"). 
     197Therefore, to support IPv6-IPv4 interoperability in NAT64 environment: 
     198 1. Application needs to replace all IPv6 occurrences with IPv4. 
     200 In order to do this, we need to be able to synthesize IPv4 from IPv6 address. Apple uses the API getaddrindo() for this purpose, however this is only specific to Apple and as such, can only be considered as a workaround for now since other platforms may not support it. 
     201 2. Our RECOMMENDATION is that when the client is put with an IPv6-only connectivity, the SIP server must also support IPv6 connectivity. 
     203 However, if the user is unable to install IPv6 server (maybe because it’s not his/her server), then user needs to enable ICE and use “dual stack” TURN (which is supported since PJSIP 2.6).