IPv6-DRET is a public implementation of the next generation Internet Protocol, IPv6, funded by the DGA/DRET (French Military Research Agency) and co-developped by INRIA Sophia-Antipolis and MASI laboratories.
The clickable map below presents the status and characteristics of the implementation. IPv6-DRET can operate IPv6 hosts as well as IPv6 routers. It comes with an implementation of the RIPng routing protocole within GateD, tested to operate over IPv6/IPv4 tunnels. View it without frame.
IPv6-DRET has been implemented inside the Linux operating system. The
current release is based on kernel 2.1.6. Regular upgrades will keep up
with the ever growing contribution to the Linux system.
Since routing issues are among the most important research interests
concerning IPv6, our network stack is intended to accomodate both host
and router IPv6 machines. Routing neighbor discovery daemons insure that
host and routers on a same link are communicating properly to exchange
parameters, set default routes, etc...
Besides implementing the router specification of the IPv6 protocol, a
great deal of effort was also put into the developpement of RIPng into
GateD.
As of today, the IPv6-DRET implementation makes it possible to start
studying issues such as the impact of IPv6 mechanisms on multimedia
applications transmission for example.
Current IPv6-DRET features Future functionalities and features
Applications currently available are network configuration (ifconfig,
route) and debugging tools (ping,traceroute). Their use is
described with more detail in the "How To".
Basically, ifconfig allows to configure IPv6 interface addresses for the
loopback, SIT and Ethernet devices. By configuring, we mean add, delete
addresses, set flags, etc... It can also be used to setup configured
tunnels to remote IPv4/IPv6 routers across the IPv4 internet.
section.
Route is used to configure IPv4 and IPv6 routes: add, delete
routes, set flags, lookup the routing table, etc...
Ping is a useful tool to check if the route between two hosts of the
Internet is up. Besides, it provides statistics such as the round-trip
time, time-to-live, ... Traceroute, as its name indicates,
traces the route between two hosts and reports the routers messages go
through to reach a given machine.
RIPng is a package for dynamic management of routing tables in an IPv6
networking environment. For instance, most of today's routes across the
6Bone are maintained manually. While this is possible with few nodes in the
network, the 6Bone will soon become unmanagable this way. Several
tunnels are now added daily!
RIPng is among the "simplest" routing protocols available and therefore
will be used in first place in the 6Bone. Companies or consortium such
as cisco or Merit already use RIPng message to maintain their IPv6
routing tables.
The protocol relies on a "Distance Vector" algorithm. Its simplicity
comes from the fact that it does not require any global knowledge of the
network. Only local messages are exchanged with neighboring routers.
It is currently implemented into GateD, a routing daemon maintained
by Merit consortium.
This HOW TO provides information concerning the general setup of the package
available by FTP on the WWW, and the configuration of IPv6-DRET hosts
and routers.
Unless you already use a DNS server handling the AAAA field,
you will need to setup an IPv6-capable DNS.
BIND 4.9.5-t6b is provided
for that purpose. It also contains the resolver library code and the
"nslookup" and "host" applications.
IPv6-DRET_0.0.1 is available here
A line-by-line style documentation of the code is partially available
here. The volume and quality of this documentation
will be incrementally improved.
IPv6-DRET
Status
Applications
Actually, the use of the above tools is not really required for
IPv6-DRET hosts when they are running the ndpd-host daemon and routers
are running the ndpd-router daemon.
RIPng/IPv6-DRET
How To?
Setting the package up
The installation procedure has been made as simple as possible. By default, it will not interfere with any of your current configuration and will compile in place. Copy the whole IPv6_DRET directory to the place that best suits you.
Enter the IPv6_DRET directory and type
> make all
This command compiles the whole package (about 30' on a PPro 200). You will be prompted for the Linux kernel configuration and GateD configuration. See below for further information. If you only want to compile parts of the package, more selective commands are available. You can get them with make help.
The kernel
The following steps are required to set the IPv6-DRET package up:
> make dep; make clean; make zImage
Install the kernel and reboot.
icmp6 58 ICMP6 # IPv6: ICMPv6
> mknod /dev/route c 36 0
The ndp daemons listen on this file to learn devices/routes update
from the kernel
DNS and resolver library
IPv6 configuration guidelines
After re-booting a machine, run:
> autoconf6
> ndpd-host / ndpd-router (depending on the IPv6 use of the machine)
> ifconfig ethX inet6 5fxx:___x/80
Addresses can be deleted with:
> ifconfig ethX inet6 del 5fxx:___x/80
Ndpd-host should then build host addresses based on advertised
prefixes.
No strict policy is enforced as of today as far as the configuration
of SIT interfaces is concerned. However, we recommend using them as
follow:
> ifconfig sit0 up
and then use sit0 as the generic route to IPv4 compatible addresses.
To configure a tunnel to a given IPv4/IPv6 host xxx.yyy.zzz.ttt:
> ifconfig ctX inet6 tunnel add ::xxx.yyy.zzz.ttt/96
will configure a tunnel to IPv6 destination ::xxx.yyy.zzz.ttt/96 with
an IPv6 link-local source address.
> route -A inet6 add 5fxx::/yy dev ctX
will route prefix 5fxx::/yy through the tunnel with
::xxx.yyy.zzz.ttt/96 as endpoint.
From then on, all packets coming from ::xxx.yyy.zzz.ttt/96 through
the tunnel will arrive on ctX.
The addition/deletion of routes follow the syntax:
> route -A inet6 add[del] xx::xx/XX [gw yy::yy dev WWW]
IPV6_HDRINCL, IPV6_RXINFO, IPV6_TXINFO, IPV6_UNICAST_HOPS,
IPV6_MULTICAST_HOPS, IPV6_MULTICAST_IF, IPV6_ADD_MEMBERSHIP,
IPV6_DROP_MEMBERSHIP, IPV6_CHECKSUM
In gated/src, execute
> mkdir obj/
> make autoconf
> make config all
run gated
You can add an /etc/gated.conf configuration file. Here is an example.
Code package
Documentation
Our testbed
ISI registry entry:
ipv6-site: G6-INRIA-SOPH
origin: AS1717
descr: INRIA-SOPHIA ANTIPOLIS
descr: Southern France, near Nice
descr: G6 node
country: FR
prefix: 5F06:B500:C133::/48
application: ping plvxv6-v6.ipv6.inria.fr
tunnel: IPv6 in IPv4 plvxv6.inria.fr -> 6bone-gw.ipv6.imag.fr G6 STATIC
contact: BB2-6BONE
remarks: Linux 2.1.23 (DRET code) on PPro200
remarks: Member of the G6 group
url: http://www.inria.fr/rodeo/IPv6/
notify: Benoit.Brodard@inria.fr
notify: Christophe.Diot@inria.fr
changed: Benoit.Brodard@inria.fr 19970902
source: 6BONE
Statistics
Cool Links
6Bone and IPv6 projects
RFC - Internet drafts
References
This work is funded by the DGA/DRET (French Military Research Agency) and was co-developped
by INRIA Sophia-Antipolis and MASI.
Copyright attached to the code.