光回線への道

三田でADSL試験サービスを使ってきた私ですが、引っ越して武蔵境、 そして与野に。 ずっとフレッツADSLでしたが、与野では公団がDION光化さればんざい、 けどやっぱりVDSLは光とは呼べないよなー、 と思って枕をよだれで濡らす日々が続いてきました… がそれも昨日までの私。 武蔵境に出戻りついに光回線を自宅に引くことに成功しました。 今日からはおしゃれな気分できれいに歩こう!

 →旧版 〜2005年11月(V110M、MCX WMCE54AG)

事前調査なしで工事には1人でやってきました。 作業ツールと手順がこなれてきたんでしょうか。 家のPF管に通線通して問題ないことを確認したら電柱で作業開始。
家から一番近くの電柱になぜか光クロージャ(末端)があります。 駅から10分と離れていないんですが 半径100mにあるクロージャはここだけだったりします。 このあたりはケーブルテレビを引き込んである家が多く 需要がなさそうなのはわかるんですが、なぜここに? さては私が引っ越してくるから引いておいたね?(違
作業は中に8分岐スプリッタらしきものを設置してました。 融着装置使っていたように見えなかったのでメカニカル接続でしょうか。 8/32占有!と思ってましたが、 すぐに工事されて小規模マンションまで青い線が引かれました。 マンションまで100m以上あり、 すぐ近くに別の光クロージャがあるんですが、光スプリッタの価格って高い?

あとは家まで引っ張って、分界箱でメッセンジャメンバがもぎ取られ、 通線をたぐって配管を通して、 現地組み立てFAコネクタ(SC)を取り付けて、 ONUに接続しておしまい。 屋内配線シングルモードファイバ(0.25mm心線)は黒色で、 クリーム色と違い引込み線共用の対候性のあるやつです。 信号レベルは…子守りしていて聞くの忘れました。(笑
ONUが置いてあるクローゼットから各部屋へのPF管にはCAT6を3本通しています。 何気ない写真ですが、 ワイド21では3連の1穴あきパネルや3穴あきパネルがないので、 自分で穴をあけますた。面倒ですた。
現在のメインマシンはSumicom S625Fです。 ルータとしても使用しているため常時電源ONです。
食事室にあるテレビにはXbox360と4th Mediaチューナがぶらさがっています。

ハイパーファミリーの要、GE-PON ONU<M>Aは三菱電機製、 下り1490nm、上り1310nmの1Gのデマンド時分割多重ですが、 LAN側は「公称」100BASE-TXです。 旧型は中身の入ったお弁当箱でしたが、 新型は食べ終わったお弁当箱ぐらいの重さしかありません。 電源もONUの表記は11V0.9Aと変わってませんが、実測で4.22Wと半減しています。
802.3ahチップは旧PassaveのPAS6201、 あとはメモリがICSIのIC42S32400-7(16MB)、 フラッシュがSpancionのS29AL016D70(2MB)、 転送バッファとしてCypress CY7C1370D(512kx36bit)、 そしてイーサネットPHYにVITESSEのVSC8201XRX…やっぱり1000BASE-T対応です。
新型になっても1000BASE-Tということは調達仕様がそうなんですね。 現状ではギガビットハブにつないでも100Mでしかリンクアップしませんし、 無理矢理リンクアップさせても局側かISPで制限されるのか100M以上出ませんがねー。 ひかり電話ルータがギガ対応していない以上、 NTTとしてはギガを謳うわけにはいかないんでしょうけど。

ひかり電話ルータは沖電気製のRT-200KIです。 複数電話番号にしたのでV110Mから置き換えました。 FT-STC-Va/gを刺して無線LAN親機として使っていますが、 ルータとしては使っていませんし、IPv6ブリッジも無効です。
プロセッサは私が大好きな Intel IXP425BD(533MHz) … V110M(400MHz)より速くなってますね。 フラッシュがIntelのTE28F128(16MB)、 メモリがHynixのHY57V561620CT-Hが2つで64MB(倍増)、 CardbusにTIのPCI1510、 イーサネット兼ハブにMarvellの88E6063-RCJ、 アナログインターフェースにSILLICON LABORATORIESのSi3210、Si3201が2つづつ、 音声帯域は3.4kHzまでです。 V110MはSi3216で7kHz可能だったのは元がV110でIP電話用だからでしょうね。
RT200KI起動時にPPPoEでguest@tk000155にログインし、 PPPoEのIPCPで一時的にIPアドレス(172.16.254.XXX)が割り振られます。 その後PPPoE上でhttp://add-con.mcas/ に以下の内容をPOSTします。

CompanyCode=&ServiceCode=&ControlCode=&TerminalID=008087XXXXXX
TerminalIDはMACアドレスです。すると以下の内容が戻ってきます。
ResultCode=0000
ip_addr=172.20.83.XXX
netmask=30
gateway=172.20.83.XXX
dest_nw_addr=220.210.59.0/22&220.210.63.0/24&220.210.32.0/24&220.210.33.0/22
sipsv_addr=220.157.32.1
sipsv_port=5060
regsv_addr=220.157.32.1
regsv_port=5060
sip_domain=220.157.32.1
username=
password=
ip_tel_num=0422XXXXXX
ip_tel_num1=0422YYYYYY
area_code=0422
url_update=http://www.cpeinfo.jp/
url_update_cas=http://220.216.147.36:50080/verup/notify.cgi
dscp=32
rtpport1=5004
rtpport2=5035
この後、PPPoEは切断され、RT200KIのWANポートに直接IPv4アドレスが振られ、 220.157.32.1:5060に対して sip:0422XXXXXX@220.157.32.1 として SIP Registerが行われます。 なお複数電話番号でもRegisterは代表番号へ1回しか行われません。 このときのIPv4ルータはPPPoE ACとは違うCiscoルータです。 以後のSIP/RTPはすべて直接IPv4で行われます。 RTPのDSCP値は32なのでPowerConnect 2724では DSCPモードに設定すれば優先されます。 しかしフレッツ回線上のIPv4をこんなださい方法で使うとは… IPv6でやったほうが美しいと思うんだけどなあ。
RT200KIには SIPサーバ(PBX) としての機能もあり、 sip:3@192.168.1.1、 のように [内線番号]@[RT200KIのLAN側アドレス]のSIP-URIになります。 X-LiteからはUsernameに3(内線番号)、 Authorization User、Passwordをセットして、 Domain/RealmとSIP Proxyには192.168.1.1をセットします。 その後、メニューのAdvanced System SettingsのSIP Settingsの Reregister Proxyに3600を指定すると、パソコンからひかり電話を使えます。 ただこのSIPクライアント、 起動時にCounterPathへ何かつなぎにいくのがキモチワルイですね。
Windows Messenger5.1からはうまく接続できません。 どうもREGISTER時のContact URIにユーザ名が入らないのと、 Expiresフィールドがないのが問題みたいです。 このあたりRT-200KIのバージョンアップで対応してくれるとウレシイんですが。 To:ヘッダに変な着番を通知するのはなくなったみたいですね。 あとひかりモデムとかも欲しいのう。

沖電気製のStreaming Player (Pure Mate 100)、 中はSetaBox STB301です。 CPUはGeode SC1100UFH-233、 メモリはICSI IC42S16800-7Tが4つで64MB、 ビデオはPhilipsのPNX1302EH(200MHz)、 VRAMはIC42S16400-6Tが2つで16MB、 ネットワークはRTL8100Bです。 ATAコネクタにはシリコンディスク(32MB)が載ってます。 まんまAT互換機でつまらないですね。Linux2.4.22が載っているそうですが。
Flets.net契約をしていると150秒おきにRouter advertisementが来ますが、 30秒おきにPIMv2 SM helloメッセージ、 120秒おきにMLDv2 query (reportも) が PPPoE ACと同じCiscoのルータからやってきます。 StreamingPlayerは起動時にRouter Solを流してIPv6アドレスを割り付け、 2001:c90:6e00:1206::1をDNSサーバとして、 http[s]://www.4media-tv.flets.netにてメニュー表示を行っています。 フォーカス移動などはJavaScriptで制御していますが、 リモコンを押した時の反応もにぶく、 リモートデスクトップ技術を用いているXbox360経由のMCEと大差ありません。 ビデオオンデマンドの場合は直接UDPで配信を受けます。 レートは公称4.2Mbps、フレーム含んだ帯域実測で約4.7Mbps、 まあまあだけど色分解能が低いです。16bit/pelなんでしょうか? テレビ放送の場合はMLDv2 reportを流して マルチキャスト受信をincludeし、終わるとexcludeします。 受信アドレスはff38::100で共通ですが、 送信アドレスはチャンネル別になっています。 レートはビデオオンデマンドとほぼ同じなのですが、 なぜかブロックノイズ多くて結構つらいです。

今までMCEのクライアントとしてMCX(WMCE54AG)を海外から購入して使ってきましたが、 Xbox360の発売にあわせてリプレースしました。 ハイデフだそうですけど、ふつうのNTSCのブラウン管モニタですし、 ゲームは1本も買ってません。
Xbox360をクライアントとして使うためのソフトは、 MCE上にダウンロードしてインストールできます。 このソフトは今までのMCXもサポートしますので、 MCX用ソフトで必要だったアクティベートは不要になってます。 対応する機器の認識は、Xbox360に表示された8桁のキー(乱数で都度生成)を、 ホストの登録時に指定すると、 ホストがネットワークからそのキーを持つXbox360を探して登録、 みたいになります。 なお、ホスト1台に複数のXbox360/MCXクライアントを 登録でき、マルチチューナなら同時にテレビ視聴できます。
テレビ視聴の転送スピードは800Kbyte/secほど必要みたいです。 無線経由やネットワーク混雑などで帯域が足りなくなると 自動的に音声優先の紙芝居転送になります。


せっかくだから、俺はこのXbox360と会社のMCEをフレッツ・ドットネットでつなぐぜ、 ということでRT57iあたりなら4over6トンネルあるし ひかり電話もv4アドレス振れば使えるしでいうことなさそうですが、 残念ながらXbox360は同一セグメント内(レイヤ2転送)じゃないとだめなので、 自宅側はWin2003上のopenvpnクライアント+portproxyでIPv6に変換し、 それを会社側のLinux上の6tunnel経由でIPv4にしてopenvpnサーバで受けます。
LinuxはWoodyでIPv6とtapとbridgeを有効にしたカーネルに入れ替えます。 再起動すると、

# ifconfig -a
eth0      ...
          inet6 addr: 2001:c90:1:2:3:4:5:6/64 Scope:Global
          inet6 addr: fe80::207:aaaa:bbbb:cccc/10 Scope:Link
...
といった具合にONUに直接刺しているポートにipv6グローバルアドレスが振られます。 Flets.NETのアドレスは2001:c90で始まるものです。
# apt-get install bridge-utils
# ifdown eth1
# vi /etc/network/interfaces
...
#comment#auto eth1
#comment#iface eth1 inet static
auto br0
iface br0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        bridge_ports eth1
...
# ifup br0
まずeth1をbr0経由に組み込みます。 dhcpやdnsサーバは起動時にインターフェースを列挙するので、 /etc/default/dhcpの修正や再起動をおこなってください。
次にopenvpnをインストールし、設定ファイルを作成してopenvpnサーバを起動します。 なお/etc/openvpnに書いた設定ファイルは起動時に自動実行されます。
# lynx http://www.backports.org/debian/dists/woody/openvpn/
# dpkg -i openvpn_1.99+hogehoge_i386.deb                    インストール
# cd /etc/openvpn
# openvpn --genkey --secret ipv6.key                        暗号化キー作成
# vi ipv6.conf
cd /etc/openvpn
secret ipv6.key
proto tcp-server
port 5556
dev tap
ping 10                                                     keepaliveは動作せず?
ping-restart 180
up "bash -c 'brctl addif br0 $1;ifconfig $1 up' -"          UP時にbr0につなげる
down-pre
down "bash -c 'brctl delif br0 $1' -"                       DOWN時にbr0から削除
# /etc/init.d/openvpn start
最後にipv6:5555への接続をローカルのipv4:5556に振りなおします。
# apt-get install 6tunnel                                   インストール
# /usr/bin/6tunnel -64 5555 localhost 5556 >/dev/null 2>&1  同一ポートはエラー?
起動時に6tunnelが実行されるように/etc/init.dのどっかに つっこんでおいてください。

次にクライアント側。openvpn Windows版をインストールして、 portproxyでローカルの5555に接続されたら ipv6経由でサーバの5555につなぐように設定します。

C:\>netsh
netsh>interface ipv6 install
netsh>interface portproxy add v4tov6 listenport=5555 connectaddress=2001:c90:1:2:3:4:5:6
あとは以下のファイルipv6.ovpnをconfigurationディレクトリ内に作成し、 サーバで作成したipv6.keyも置きます。
secret ipv6.key
remote 127.0.0.1
port 5555
proto tcp-client
dev tap
ping 10
ping-restart 60
ファイルを選んでStart openvpn on this fileで起動して 接続できることを確認したら、 サービスのOpenvpnを自動起動に設定すると起動時に接続されます。 あとは、ネットワークのプロパティからtapデバイスと Xbox360を接続しているネットワークを選んで、 ブリッジするだけです。 この後、Xbox360の電源を落とし、Xbox360を再登録すると、 問題なくXbox360からMCEが使えます。
ipv6のフィルタは当面侵入されないでしょうからのんびり設定してください。 ip6tables -A INPUT -s fe80::/10 -j ACCEPTは開けておかないと ルータ通知が受け取れません。 NTT側CISCOルータのアドレス(route --inet6で表示、 Windowsならnetsh interface ipv6 show routes)だけ許可してもいいです。 XP SP2ではipv6 firewallや匿名アドレスが標準で有効、 2003はnetsh interface ipv6のset interface firewall= や set privacy、 SP1ではIPv6フィルタリングも提供されます。
サーバ側はLinuxなしでもMCE上にopenvpnを載せてもいいし、 ならSoftetherが簡単だとか、 でもopenvpnはUDP-ipv6パッチ適用すればUDPでも通信可能だとかありますが、 まあこれでプロバイダ料金なしに東京の放送を北海道で楽しめたりするかもしれない、 ということですね。 回線スピードが10Mbit/sぐらいあればXbox360側はADSLでもイケルかもしれません。