Lots of fresh code! You have been warned!!! Do pls report trouble!
[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.  It
12 will greatly help in speeding up the tunnel *and* make
13 it less of a battery suckling.
14
15 Version 0.5.2 introduces a lot of new code, so don't
16 run your lifeline over it, okay?  It adds an initial
17 GUI with toggles (default route does not work yet, and
18 autostart after boot is a shamble too) but the IP and
19 UDP settings do work.  If you change a lot quickly in
20 a sequence, someone might get upset.  Also, this is a
21 first stab at the TCP bypassing system.
22
23 Version 0.5 introduces Neighbor Solicitation and
24 Neighbor Advertisement messages to try and pass through
25 NAT and firewall layers, as per draft v01.  This means
26 that peer-to-peer connectivity is usually possible; the
27 only ones excepted are those who are behind symmetric
28 NAT; such people should get a decent ISP/router anyway! 
29
30 Version 0.4 is the first with dynamic addresses on
31 the local end.  There is no longer a need to specify
32 the external IPv4 address and UDP port, which was
33 there for testing purposes of early versions anyway.
34 This release is a candidate implementation that is
35 basically v00-ish -- it sends RouterSol and gets
36 RouterAdv from the public server, and processes it
37 in the v01 way.  It will however not do the new v01
38 features of Neighbor Discovery for direct peer links.
39
40 Version 0.3.1 fixes a small problem, namely that the
41 6bed4 application could not go away because it was
42 too tightly coupled to the tunnel.  The application
43 and (background) VpnService are now split.  In other
44 words, it is now worth a try to access IPv6 websites.
45
46 Version 0.3 actually passes information between the
47 tunnel and its usage base, albeit from the assumptions
48 that the IPv4 address is fixed and (not wholy reliable
49 without port mapping and an explicit UDP port)that the
50 external UDP port is the same as the internal one.  You
51 need to create a Java source file for that, as described
52 in the header of the TunnelService.java file.  Don't be
53 afraid you might forget it though, your compiler will
54 remind you :)
55
56 Version 0.2 which already had better locations for the
57 various pieces of code that create the tunnel.  This makes
58 it work on the first run as well, rather than just on the
59 second run like v0.1 did.  Otherwise, it is the same as
60 0.1 and so not really functional.  But the basic user
61 interaction on the VPN is functional and reliable.
62
63 At best, it claims the VPN for tunneling, pulls in all
64 IPv6 traffic and drops it on the floor ;-) so the only
65 thing that can currently be checked is that the tunnel
66 disables IPv6 without harming IPv4.  If you have native
67 IPv6 you will notice that IPv6 stops working.
68
69 Future versions might be even more useful:
70
71  0.1 :- VPN claimed, IPv6 routed by IPv4 is not
72  0.2 :- VPN properly claimed, also on 1st start
73  0.3 :- Tunnel IPv6 from *fixed* IPv4 address
74  0.4 :- Use RtrSol/RtrAdv for autoconfig (v00)
75  0.5 :- Use NgbSol/NgbAdv for generic peering (v01)
76  0.6 :- Use TCP SYN/ACK for optimistic peering (v02)  
77  0.7 :- ??? Redirect native through 6bed4 (v02?)
78  1.0 :- Add artwork and a spiffy webpage
79
80 Cheers,
81  -Rick