Bump In Host a Host-based IPv4 to IPv6 Translation Zhang Feng zhangfengyj@chinamobile.com China Mobile
CMCC IPv6 Status Dual stack network, covering 8 main cities, as part of CNGI (China Next Generation Internet) networks (around 100 routers) Finished dual stack upgrade of GPRS network in some cities (4 cities including Shanghai) R & D on integration of mobile communication and IPv6 Mobile terminal Access network Mobile Core Network Mobile data service Network Management System
Problem IPv6 only? Shortage of IPv4 addresses Significant management complexity and costs out of operating dual stack networks Before 3GPP R8, IPv4 PDP context cannot be activated once IPv6 PDP is active How to support legacy IPv4 apps in client-side? Long tail of IPv4 applications Runtime in mobile handset such as J2ME or Android 3.2-(before Honeycomb) or ios only support IPv6 over WiFi, not support IPv6 over cellular yet Source code may not available Strong incentive to support IPv6 only is motivated after networks start actually providing IPv6 connectivity IPv6 IPv4 Many applications are IPv4-only, Apple App store already has more than 500k applications, Android market 250k
Current Solution NAT64/DNS64 allow IPv6-only hosts to communicate with IPv4 servers Draft yet, but from IETF viewpoint, it is a done deal Bump-in-the-Stack (BIS)[RFC2767] and Bump-in-the- API (BIA) [RFC3338] allows the hosts to communicate with other IPv6 hosts using existing IPv4 applications really a form of NAT46 built into the IP stack and/or API Only work in a dual stack network
Pending Issues
Our Solution: Bump-in-the-Host (BIH) a successor and combination of the Bump-in-the-Stack (BIS) and Bump-in-the- API (BIA) technologies supporting IPv6-only network connections by synthesizing IPv4 addresses from AAAA records obsolete both BIS and BIA realize a host-based IPv4 to IPv6 protocol translation mechanism that allows a class of IPv4-only applications that work through NATs to communicate with IPv6-only peers use DNS for IP address resolution and that do not embed IP address literals in protocol payloads
Use cases Case 1: There is a host with BIH module directly communicate with a IPv6 servers in dual-stack or IPv6 network Case 2: There is a host integrated with BIH module communicate with a IPv4 servers going through NAT64/DNS64. In this case, NAT64 serves translation functionalities between IPv4 and IPv6.
2 kinds of BIH Implementation - BIS-based and BIA-based BIA: Arch of a dual stack host using protocol translation at socket layer BIS: Arch of a dual-stack host using protocol translation at the network layer Diagram From BIH IETF Draft
BIA based - Socket Layer Intercept The function mapper translates an IPv4 socket API function into an IPv6 socket API function When detecting IPv4 socket API function calls from IPv4 applications, the function mapper MUST intercept the function calls and invoke IPv6 socket API functions
BIS based - Network Layer Translation The protocol translator translates IPv4 into IPv6 and vice versa using the IP conversion mechanism defined in SIIT [RFC6145] To avoid unnecessary fragmentation, the host's IPv4 module should be configured with a small enough MTU (IPv6 link MTU -20 bytes)
BIH Component - Extension Name Resolver The Extension Name Resolver (ENR) returns an answer in response to the IPv4 application's name resolution request BIA-based: intercept gethostbyname(), instead calls getaddrinfo() BIS-based: intercepts the A query and creates an additional AAAA query with similar content
BIH Component - Address Mapper The address mapper maintains a local IPv4 address pool - consists of the private IPv4 addresses as per [RFC1918] The address mapper would take respective behavior and maintain IPv4-IPv6 mapping table corresponding to ENR processing
Current Status IETF Draft http://tools.ietf.org/html/draft-ietf-behave-v4v6-bih-06 WG last call Sep. 14 th, close to RFC publication has implemented on Ubuntu and Android Successfully tested in CNGI by running ultra-high definition media streaming service, performance is good enough
BIHv1.0.0 Release We open-source BIS-based BIH implementation with GPL license in this month http://code.google.com/p/bump-in-the-host/ Including both a kernel module, a dns proxy stub and enough docs /net/ipv6/bih? Contact info: bih.cmcc at gmail.com