EBUG 第 4 回 会合「無線で行こう! LAN ら LAN」で行なった、XCAST6 のネットワークの概要について述べます。
以下にネットワークの物理的構成を示します。
新潟市内に設置された Niigata site には、ISP-A から 8 個の IPv4 アドレスが固定で割り当てられています。また、同 ISP からは IPv6 over IPv4 tunnel による接続サービスが提供されており、/48 の IPv6 アドレスが割り当てられています。
イベント会場である湯沢町に設置された Yuzawa site には、ISP-B から複数の IPv4 アドレスが固定で割り当てられています。
Niigata site のルータと Yuzawa site に設置した NetBSD 機との間で、IPv6 over IPv4 tunnel を設定し、会場の NetBSD 機からの IPv6 による接続性を確保しました。
各サイトから上流への接続は、共に、下り 1.5Mbps/ 上り 512Kbps の ADSL で、最も理想的な状態でも 512Kbps 以上の帯域を得ることはできません。
以下に IPv6 ネットワークについての論理的構成を示します。
Niigata site では、ISP-A から割り当てられた /48 の IPv6 アドレスのうち、/64 を使用しています。そこで、Yuzawa site 用に別の /64 ネットワークを割り当てました。従って、Yuzawa site は、Niigata site に集約されたアドレスの一部として IPv6 ネットワークに接続することになります。
Niigata site のルータには、YAMAHA 製 RTA54i を使用しました。以下に、今回の接続に使用した IPv6 関連の設定を示します。
WAN 側インターフェイスへの IPv6 アドレスの設定
ipv6 lan1 address xxx:xxx:xxx::201/64
ISP-A 向けの IPv6 over IPv4 トンネルの設定
tunnel select 1 tunnel endpoint address nnn.nnn.nnn.nnn aaa.aaa.aaa.aaa tunnel enable 1
Yuzawa site 向けの IPv6 over IPv4 トンネルの設定
tunnel select 2 tunnel endpoint address nnn.nnn.nnn.nnn yyy.yyy.yyy.yyy tunnel enable 2
経路設定
ipv6 route default gateway tunnel 1 ipv6 route xxx:xxx:xxx:1::/64 gateway tunnel 2
ルータ広告 (RA) の設定
ipv6 prefix 1 xxx:xxx:xxx::/64 l_flag=on a_flag=on ipv6 lan1 rtadv send 1
各アドレスは次の各項を示します。
ここでは、XCAST6 0.1.1 on NetBSD 1.6 の設定について述べます。
$work ディレクトリを $HOME/NetBSD と仮定していますが、 環境に応じて適宜置き換えてください。
配布物とパッチを取得します。
% cd $work/ % ncftpget ftp://ftp.iij.ad.jp/pub/NetBSD/NetBSD-release-1-6/tar_files/src/sys.tar.gz % foreach i (lib sbin usr.sbin) foreach? wget http://umn.dl.sourceforge.net/sourceforge/xcast6/xcast6-0.1.1-${i}.tar.gz foreach? end % ncftpget ftp://ftp.iij.ad.jp/pub/NetBSD/misc/hamajima/xcast6/xcast6-0.1.1-netbsd-sys-1.6.diff.gz
kernel を再構築し、インストールします。 なお、/usr/bin/patch (GNU patch ver 2.0) ではなく、 GNU patch ver 2.5 以降を使うことを推奨します (pkgsrc/devel/patch を使うと便利)。
% gzip -dc sys.tar.gz | tar xvf - % cd src/ % gzip -dc ../xcast6-0.1.1-netbsd-sys-1.6.diff.gz | gpatch -p1 % cd sys/arch/i386/conf/ % cp GENERIC EBUG % vi EBUG [...] % diff -u GENERIC EBUG --- GENERIC Sat Aug 3 17:29:18 2002 +++ EBUG Wed Oct 2 01:43:20 2002 @@ -1077,3 +1077,6 @@ pseudo-device wsmux # mouse & keyboard multiplexor pseudo-device wsfont +# XCAST6 +options XCAST6 +pseudo-device xcst 1 % config EBUG % cd ../compile/EBUG/ % make depend && make all && sudo make install
XCAST6 の userland を作成し、インストールします。
% cd $work/ % foreach i (in6.h xcast6.h) foreach? sudo cp -p ./src/sys/netinet6/$i /usr/include/netinet6/ foreach? end
% cd $work/ % gzip -dc xcast6-0.1.1-lib.tar.gz % cd xcast6-lib/libxcast/ % make % sudo make install % sudo cp -p libxcast.h /usr/include/
% cd $work/ % gzip -dc xcast6-0.1.1-sbin.tar.gz | tar xvf - % cd xcast6-sbin/sysctl/ % make cc -O2 -Werror -DINET6 -DIPSEC -c sysctl.c sysctl.c:59: vm/vm_param.h: No such file or directory *** Error code 1 Stop. make: stopped in /home/kura/NetBSD/xcast6-sbin/sysctl % cp sysctl.c sysctl.c.orig; vi sysctl.c [...] % diff -u sysctl.c{.orig,} --- sysctl.c.orig Wed Oct 2 02:15:50 2002 +++ sysctl.c Wed Oct 2 02:16:54 2002 @@ -56,7 +56,7 @@ #include <sys/mount.h> #include <sys/mbuf.h> #include <sys/resource.h> -#include <vm/vm_param.h> +#include <uvm/uvm_param.h> #include <machine/cpu.h> #include <ufs/ufs/dinode.h> % make && sudo make install
sysctl は上書きせずに別途インストールした方がいいかも知れません。
% cd $work/ % gzip -dc xcast6-0.1.1-usr.sbin.tar.gz | tar xvf - % cd xcast6-usr.sbin/ % make && sudo make install
上記でインストールしたもの以外に必要となる XCAST6 対応ツールに vic (Video Conferencing Tool)、 rat (Robust-Audio Tool)、 xcgroup (グループ管理ユーティリティ) があります。
配布物として取得していませんが、 XCAST6 の README に書いてある通りに作業すれば build できます (自分で build するには少なくとも tcl, tk, ruby が必要です)。
ftp://ftp.NetBSD.ORG/pub/NetBSD/misc/hamajima/xcast6/ およびそのミラーサイトから取得できる、 濱嶋@NBUGさんの配布されているバイナリを利用すると便利です。
前提事項:
IPv6/IPv4 トンネルを作成します。
% sudo ifconfig tun0 create % sudo ifconfig gif0 create % sudo ifconfig gif0 tunnel [IPv4 SRC addr] [IPv6 DST addr] % sudo ifconfig gif0 inet6 [IPv6 SRC addr] [IPv6 DST addr] % sudo route add -inet6 :: default -ifp gif0
reachability があるか ping6 や traceroute6 で確認してください。 以上でよければ、/etc/ifconfig.gif0 に
create inet6 [IPv6 SRC addr] [IPv6 DST addr] prefixlen 128 tunnel [IPv4 SRC addr] [IPv6 DST addr] !/sbin/route add -inet6 :: default -ifp gif0
と書いて、 OS 起動時にトンネルが自動的に作成されるようにしておくと便利です (FreeBSD では /etc/start_if.gif0 かもしれません)。
次に XCAST6 の設定を行います。 XCAST6 の README には
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
というスクリプトを /usr/local/etc/xcast6-setup.sh に書いて /etc/rc.local から実行するようにとあります。 すでに multi-user mode で OS が起動しているのなら、 ifconfig xcst0 して一番上の inet6 なアドレスを route add してください。 上記の設定がちゃんとされているか確認するために ping6x、traceroute6x をお近くの XCAST6 ready なホストに向けて試してみてください.
では、XCAST6 対応アプリケーションを起動します。
お近くに xcgroup server を用意してくださる方がいらっしゃる場合、
% sudo xcgroup -b http://ホスト/どこか/xcgroupsrv.cgi -g グループ名
として xcgroup server の情報をもらいます。
あとは
% vic -n xcast6 -t 128 ::1/11000 % rat -t 128 ::1/11111
でいいはずです。
などを試してみて、最適な値を探してください。% mixerctl -w inputs.mic.preamp=on % mixerctl -w inputs.dac=200 % mixerctl -w outputs.master=200 % mixerctl -w inputs.mic=100
配布:
文書: