XCAST6/NetBSD README (0.1.0, pre-alpha version)
* Installation
1. Install NetBSD-1.5.2 to your machine.
See http://www.netbsd.org/Documentation/ for detailed setup instruction.
Don't forget to install the kernel sources, since it's required
to build a XCAST6-enabled kernel.
2. Build XCAST6-enabled kernel.
2-1. Apply the XCAST6 kernel patch for the kernel sources.
For example:
cd /usr/src/sys
gzip -dc /path/to/xcast6-0.1.0-netbsd-sys-1.5.2.diff.gz | patch -p2
2-2. Configure the kernel.
See http://www.netbsd.org/Documentation/kernel/#how_to_build_a_kernel
for details.
A sample configuration file is
/usr/src/sys/arch/i386/conf/GENERIC_XCAST6.
Don't forget to include these 2 lines in the configuration file:
options XCAST6
pseudo-device xcst 1
2-3. Install the kernel and boot the machine with it.
3. Install xcast6.h and in6.h to /usr/include/netinet6.
For example:
cp /usr/src/sys/netinet6/{xcast6.h,in6.h} /usr/include/netinet6
4. Build and install the libxcast library.
For example:
tar zxvf /path/to/xcast6-0.1.0-lib.tar.gz
cd xcast6-lib/libxcast
make
su root -c 'make install'
5. Copy the libxcast.h header file to /usr/include.
For example:
cp /path/to/xcast6-lib/libxcast/libxcast.h /usr/include
6. Build and install ping6x and traceroute6x.
For example:
tar zxvf /path/to/xcast6-0.1.0-usr.sbin.tar.gz
cd xcast6-usr.sbin
make
su root -c 'make install'
7. Build and install the modified sysctl command.
For example:
tar zxvf /path/to/xcast6-0.1.0-sbin.tar.gz
cd xcast6-sbin
make
su root -c 'make install'
* Setup
1. Configure your machine as a normal IPv6 host or a normal IPv6 router
if the host should act as a router.
See http://www.netbsd.org/Documentation/network/ipv6/#configuration_files
and set up /etc/rc.conf.
2. Run the following shell script.
--------- from here --------
#! /bin/sh
xcstif=xcst0
xcast6rt=ff05::10
ifconfig $xcstif up
linklocal=`ifconfig $xcstif | grep inet6 | grep 'inet6 fe80' | head -1 |
awk '{print $2}'`
route add -host -inet6 $xcast6rt $linklocal
-------- end here --------
You can put these commands in a file like /usr/local/etc/xcast6-setup.sh
and let it run from /etc/rc.local.
If you are going to use XCAST6 on site-local addresses, you must run
the following command:
/sbin/sysctl -w net.inet6.route6.xcast6_allowsitelocal=1
/etc/sysctl.conf can be used also.
* Test Programs
- /usr/sbin/ping6x, /usr/sbin/traceroute6x
Command syntax:
/usr/sbin/ping6x host0,host1,host2,...,hostN [N-th]
or
/usr/sbin/traceroute6x host0,host1,host2,...,hostN [N-th]
The destinations are specified as host0,host1,host2,...,hostN.
Only the <N-th> host replies by ICMPv6, while other hosts never reply
for packets sent by ping6x or traceroute6x. You can use these command
to diagnose the reachability to the <N-th> host in the destinations
and to list up the route to the <N-th> host.
* Application Programs
- vic
1. Download and extract vic-2.8ucl-1.1.3.tar.gz.
You can download it from:
http://www-mice.cs.ucl.ac.uk/multimedia/software/vic/
2. Apply the XCAST6 patch for vic.
For example:
cd vic-2.8ucl-1.1.3
gzip -dc /path/to/xcast6-0.1.0-vic-2.8ucl-1.1.3.diff.gz | patch -p1
3. Configure & make & install.
For example:
cd common.new; sh configure --enable-ipv6; make; cd ..
cd tcl-8.0/unix; sh configure; make; cd ../..
cd tk-8.0/unix; sh configure; make; cd ../..
cd vic
env LIBS='-Wl,-rpath,/usr/X11R6/lib' sh configure --enable-ipv6
make; su root -c 'make install'
Note:
You must use "common.new" directory instead of "common" directory
for XCAST6-patched vic. "common" directory is not needed for XCAST6.
4. Run vic.
For example:
vic -n xcast6 host1,host2,host3/11000
You can specify the destinations with ',' (comma) separated
IPv6 addresses and hostnames instead of the group multicast address.
Note for MDO6 users:
As you can see, command-line options are changed from vic/MDO6.
You should explicitly specify the network type "xcast6" with -n
option.
- rat
1. Download and extract rat-4.2.20.tar.gz.
You can download it from:
http://www-mice.cs.ucl.ac.uk/multimedia/software/rat/
2. Apply the XCAST6 patch for rat.
For example:
cd rat-4.2.20
gzip -dc /path/to/xcast6-0.1.0-rat-4.2.20.diff.gz | patch -p1
3. Configure & make & install.
For example:
cd common; sh configure --enable-ipv6; make; cd ..
cd tcl-8.0/unix; sh configure; make; cd ../..
cd tk-8.0/unix; sh configure; make; cd ../..
cd rat
env LIBS='-Wl,-rpath,/usr/X11R6/lib' sh configure --enable-ipv6
make; su root -c 'make install'
4. Run rat.
For example:
rat host1,host2,host3/11111
You can specify the destinations with ',' (comma) separated
IPv6 addresses and hostnames instead of the group multicast address.
Notes:
- NetBSD audio support is not perfect yet. Volume setting
might not work.
You can use the "mixerctl" program to set play / record volumes
as follows:
mixerctl -w inputs.mic.preamp=on # mic. preamp
mixerctl -w inputs.dac=200 # play (PCM) volume
mixerctl -w outputs.master=200 # master play volume
mixerctl -w inputs.mic=100 # record volume
- xcgroup
xcgroup is not an XCAST6-enabled software but a support software
that provides control plane of XCAST6 datagram delivery system.
See README.XCAST6 in xcast6-0.1.0-xcgroup.tar.gz for installation and
usage.
* Advanced Features
- X2U
You can use the X2U feature described in
draft-ooms-xcast-basic-spec-02.txt by setting 1 to the sysctl variable
net.inet6.route6.xcast6_x2ulevel:
sysctl -w net.inet6.route6.xcast6_x2ulevel=1
Premature X2U is not supported in this release.
See draft-ooms-xcast-basic-spec-02.txt for more details.
- libxcast_raw (raw socket version of libxcast, not fully working)
That's for the operating systems that don't support XCAST6 natively.
This feature needs X2U tunneling on the way of the delivery path;
you need at least one XCAST6/NetBSD host on the way.
You can build libxcast_raw by defining a LIBXCAST_RAW preprocessor macro.
You need root privileges to use the library. Windows XP users can
build it with Microsoft Visual C++ 6.0 and the IPv6 Technical Preview
package by using libxcast_raw.dsw for the workspace file (and
libxcast_raw.dsp for the project file). We know several functions of
libxcast_raw run on Windows XP. libxcast_raw for *BSD may work, but
is not tested.
- Caveats
- XcastEnableMember() and XcastDisableMember() is not correctly
implemented. Do not use now or fix them by yourself :-)