IPv6 Everywhere with 6bed4
The 6bed4 tunnel and peer-to-peer toolkit enables IPv6 everywhere. It connects programs and hosts over UDP/IPv4. It tries hard to setup connections as direct peer-to-peer connections, but may fall back to a server failing this.
The intention of 6bed4 is to assure protocol designers of the availability of IPv6 on all nodes that run their protocol. For instance, a designer of a peer-to-peer search application should be able to connect to peers over IPv6, thereby bypassing many problems resulting from NAT. One might say that IPv6 is used to encapsulate all problems with NAT traversal.
This code is WORK IN PROGRESS, while we are finalising our 6bed4 Internet Draft.
6bed4peer program runs an interface over which IPv6 routing is
available, and for which up to 16383 local extensions can be allocated
and made available over a tunnel interface.
6bed4node program is an extended
6bed4peer in that it does not
provide a network interface but a network service that offers IPv6
addresses over a standard network interface, though this requires a few
extra programs like
radvd and possibly a DHCPv6 server. In this case,
programs can use native IPv6 network stacks. A typical use case for the
6bed4node is on a network router, such as one of the OpenWRT routers.
6bed4router program runs as a fallback router. Even when it could
be considered a server program, it is faithful to the idea of peer-to-peer
communication in the sense that multiple of these routers can collaborate
6bed4peer programs. A user can choose which router to use,
depends on the prefix
used. We have arranged for public 6bed4 service at 220.127.116.11 port 25790.
TODO: 6bed4node remains to be done.
TODO: A socket-replacing library would be useful.
For use with Java, we have TODO: Android6bed4 and Socket6bed4.