androidsocketsipv6wirelessandroid-wireless

Creating an IPv6 SocketServer on Android device on a cellular network


I'm trying to connect from a host (PC or other) to a mobile cellular Android device on the Verizon/AT&T cellular network. This device uses only the 3G network and has its Wi-Fi turned off. The Android device has a listening socket and I need the remote host to be the connection initiator. As far as I know, Verizon/AT&T uses NAT traversal for mobile phones and assigns local IP addresses to them on the cellular network. This prevents me from initiating a connection to the device from a remote host. Please correct me if I'm wrong about that.

With the usage of IPv6 assignments there shouldn't be any practical limitation (virtually unlimited) to the number of "real" IPs that can be assigned. Therefore my questions are: 1. Does the Verizon/AT&T cellular network support IPv6 and assigns IPv6 addresses to capable Android devices? 2. Is it a feasible solution to this problem? 3. Does Android 2.2+ have enough support for IPv6 to implement such solution?

I am aware of other methods that can be used, such as C2DM, but they have some drawbacks (such as unknown response time) that prevent me from using them.

Thanks.


Solution

    1. Verizon's LTE network supports IPv6 (see below). The phone is assigned a global-scope IPv6 address
    2. Although there is no NAT with IPv6 I was not able to connect to a socket listener running on my phone, or ping6 the phone so there seems to be some kind of inbound filtering
    3. The API has full support for IPv6 provided the underlying network interfaces supports it

    enter image description here