28d7f27bba3ea886bb7bdc6cc6c7041deb3cbcce
[android6bed4] / README
1 README for Android-6bed4
2 ========================
3
4 This is an implementation of the 6bed4 tunnel on Android.
5
6 I am shocked; the file descriptors created by the VPN
7 are non-blocking, making it impossible to wait for its
8 I/O.  Furthermore, I found no way to use the select()
9 call as I would have (and actually did) in C.  As a
10 result, the tunnel must poll for traffic :'-(  So if I
11 missed a Java trick here, *please* let me know.
12
13 Version 0.5 introduces Neighbor Solicitation and
14 Neighbor Advertisement messages to try and pass through
15 NAT and firewall layers, as per draft v01.  This means
16 that peer-to-peer connectivity is usually possible; the
17 only ones excepted are those who are behind symmetric
18 NAT; such people should get a decent ISP/router anyway!
19
20 Version 0.4 is the first with dynamic addresses on
21 the local end.  There is no longer a need to specify
22 the external IPv4 address and UDP port, which was
23 there for testing purposes of early versions anyway.
24 This release is a candidate implementation that is
25 basically v00-ish -- it sends RouterSol and gets
26 RouterAdv from the public server, and processes it
27 in the v01 way.  It will however not do the new v01
28 features of Neighbor Discovery for direct peer links.
29
30 Version 0.3.1 fixes a small problem, namely that the
31 6bed4 application could not go away because it was
32 too tightly coupled to the tunnel.  The application
33 and (background) VpnService are now split.  In other
34 words, it is now worth a try to access IPv6 websites.
35
36 Version 0.3 actually passes information between the
37 tunnel and its usage base, albeit from the assumptions
38 that the IPv4 address is fixed and (not wholy reliable
39 without port mapping and an explicit UDP port)that the
40 external UDP port is the same as the internal one.  You
41 need to create a Java source file for that, as described
42 in the header of the TunnelService.java file.  Don't be
43 afraid you might forget it though, your compiler will
44 remind you :)
45
46 Version 0.2 which already had better locations for the
47 various pieces of code that create the tunnel.  This makes
48 it work on the first run as well, rather than just on the
49 second run like v0.1 did.  Otherwise, it is the same as
50 0.1 and so not really functional.  But the basic user
51 interaction on the VPN is functional and reliable.
52
53 At best, it claims the VPN for tunneling, pulls in all
54 IPv6 traffic and drops it on the floor ;-) so the only
55 thing that can currently be checked is that the tunnel
56 disables IPv6 without harming IPv4.  If you have native
57 IPv6 you will notice that IPv6 stops working.
58
59 Future versions might be even more useful:
60
61  0.1 :- VPN claimed, IPv6 routed by IPv4 is not
62  0.2 :- VPN properly claimed, also on 1st start
63  0.3 :- Tunnel IPv6 from *fixed* IPv4 address
64  0.4 :- Use RtrSol/RtrAdv for autoconfig (v00)
65  0.5 :- Use NgbSol/NgbAdv for generic peering (v01)
66  0.6 :- Use TCP SYN/ACK for optimistic peering (v02)  
67  0.7 :- ??? Redirect native through 6bed4 (v02?)
68  1.0 :- Add artwork and a spiffy webpage
69
70 Cheers,
71  -Rick