Asynchronous Serial Line CISCO_HDLC and SPPP driver for FreeBSD and kame

written by Fujiwara, Kazunori

注意: 現在のFreeBSDではうごかない可能性があります。2000年10月ごろのものではうごくはずです。

動機

 IPv6生線で接続する場合、Ether, FDDI, ATM, 専用線の方法があるが、 安く遠距離接続をしようとすると、64Kbps, 128Kbpsのデジタル専用線を使う こととなる。ところで、従来のkame or FreeBSDでデジタル専用線接続をしよ うとすると、RISCom/N2 cardとV.35つきCSU(TA)が必要になるが、この二つは とても高価であわせて20万円以上する。ところが、最近、安価な同期非同期変 換機能つきINS64 TAに専用線接続機能が付加されている。
 そこで、if_spppsubr.cの同期PPPの下位ドライバとして、HDLC frameを非同期PPP形式にて非同期シリアルポート経由でINS64 TAに送るドライバを書いた。slipのコードとほぼ同じ構造で、encodingを非同期PPPとした。受信時には復元したHDLC frameをif_spppsubr.cのsppp_inputに与える。

動作環境

FreeBSD 2.2.8ではテストしていません。

FreeBSD 3.4R, 4.0R, 4.0-stable, 5.0-current, 3.4R+kame

FreeBSDの対応している非同期シリアルポート

同期非同期変換機能つきの専用線対応TA (例 NTT-TE東京のMN128,MN128V3)

配布

 FreeBSD 2/3用 slsppp-20000517.tar.gz


 FreeBSD 4/5用 slsppp-20001017.tar.gz


使い方の概略

 if_slsppp.ko moduleとslspppattachをインストールする。 kernelをつくるときには pseudo-device sl を削除し、pseudo-device spppを追加する。

rc.confのnetwork_interfaces変数に slsppp0 を追加し、
ifconfig_slsppp0=""
とし、次に /etc/start_if.slsppp0 を作成する。
#!/bin/sh
kldload if_slsppp
slspppattach -C -s 115200 -h -l /dev/cuaa0
sleep 3
ifconfig slsppp0 inet xx.xx.xx.xx yy.yy.yy.yy netmask zz.zz.zz.zz

 この例では、/dev/cuaa0(=sio0)に115200bpsで接続したTAを接続し、 CISCO_HDLC modeでRTS/CTSフロー制御、DCD無視。 こちらのアドレスがxx.xx.xx.xxで相手側のアドレスがyy.yy.yy.yy、 netmaskがzz.zz.zz.zzである。 また、シリアルポートに、電源onで専用線モードに入るよう に指定したMN128を接続しておく。 通信速度のデフォルトは115200bpsである。 MN128の設定について AT*B2&Wして専用線をつないだあと電源off→on 通信速度は64K専用線のとき115200bps, 128Kのとき230400bpsにする。 普通のPCのシリアルポートは115200bpsまでなので、16650をつんだ 特殊なカードを入手するか、最近のマルチI/Oチップは230400, 460800bpsにも 対応しているらしいので情報を調べるとよい。
<URL:http://configure.sh/FreeBSD/> <URL:http://www.devdrv.co.jp/shsmod/index.htm>参照


64K専用線を115200bpsで接続する場合
AT&Q5\Q3%B12$S12*B2S135=13&W
64K専用線を230400bpsで接続する場合。(RTTが小さくなる)
AT&Q5\Q3%B12$S12*B2S135=15&W

問題点

同期非同期変換のため、遅延が大きい。
128Kbps時の遅延 PING 70msec (同期カードを使う場合、30ms程度)