最近の変更サイトマップ

逸般の誤家庭で40GbEはじめますた その3(構築編)

機材が揃ったので、サーバ/クライアント直結40GBASE-SR4ネットワークを構築する。

ネットワーク概略図を示す。

クライアントとサーバを40GBASE-SR4で直結し、サーバで40GbEと1GbEをブリッジする。こうすることで、40GbE対応スイッチがなくとも、40GbEによる高速化の恩恵を受けつつ既存の1000BASE-Tネットワークとの相互運用が実現できる。サーバが落ちてると、当然ながらクライアントのネットワークが使えなくなってしまうが、うちでは常時稼働させてるので殆ど問題ない。いざって時はクライアントを従来通り1000BASE-Tで繋げばいいだけだし、そこは割り切る。

40GbEといっても、ネットワークカードは何の変哲もないPCI-Expressカードだ。ビデオカード等を取り付ける要領でマシンにNICを挿し、ドライバをインストールすれば普通のNICとして使える。

FreeBSD(サーバ)では/boot/loader.confに以下の1行を追加し再起動すると、mlxen0/mlxen1というネットワークデバイスが生えてくる。

mlx4en_load="YES"

40GbEと1GbEのブリッジは/etc/rc.confに以下の設定を追加する。このサーバではsshやSambaなどのサービスを提供しているので、igb0のIPアドレスをbridge0に付け替える。ブリッジにIPアドレスを振る場合は、必ずブリッジそのもの(ここではbridge0)に対して行う。ブリッジメンバ(ここではigb0)に振ると、一見動いているように見えてブロードキャストは到達するのにユニキャストは到達しない、といった非常に分かりにくい問題を誘発することになる。

cloned_interfaces="bridge0"
ifconfig_bridge0="ether XX:YY:ZZ:00:00:01 addm igb0 addm mlxen0 up"
ifconfig_bridge0_alias0="inet 192.168.0.1 netmask 255.255.255.0"
ifconfig_igb0="up"
ifconfig_mlxen0="up"

うまくブリッジが出来上がればifconfigが↓こんな感じになる。bhyve用のブリッジも兼用してるので余計なtapが刺さってるのは無視してくだしあ。

$ ifconfig bridge0
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        description: vm-public
        ether XX:YY:ZZ:00:00:01
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        nd6 options=9<PERFORMNUD,IFDISABLED>
        groups: bridge vm-switch viid-4c918@
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: tap1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 8 priority 128 path cost 2000000
        member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 7 priority 128 path cost 2000000
        member: mlxen0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 4 priority 128 path cost 500
        member: igb0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 1 priority 128 path cost 2000000

クライアントのネットワークが正しく使えることを確認する。インターネットに繋いだり、サーバにsshしたり…。設定に間違いがなければ、従来と全く同じように使えるはず。

最後にSambaでファイルコピーを行ったGIF動画を貼っておく。サーバのSSD(Intel DC S3500シリーズ)の速度がボトルネックとなり10Gb/秒にも満たないが、素敵な速さだ。

逸般の誤家庭で40GbEはじめますた その2(購入編)

家のネットワークを10GBEにするつもりが結局40Gbeにすることになったのが前回。機材は以下のものを購入した。

機材 型番 購入先
Mellanox ConnectX-3 Pro EN MCX314A-BCCT ヤフオク
10Gtek 40GBASE-SR4 QSFP+ Transceiver for MMF AMQ10-SR4-M1 10Gtek
10Gtek MPOメス-メス Type-B OM3 MMFコード 20m OM3-MPO-12MPO-20M 10Gtek

NICはヤフオクでたまたま安いのが出ていたので迷わずお買い上げ。40GBASE-SR4 QSFP+トランシーバとMPOパッチコードは10Gtekから購入。MPOコードはコネクタのオスメスやらコードの極性やらがややこしい。なので10Gtekに質問メール投げたら、すぐさま適切な回答と共に「見積もる?」と来たもんだ。どういうわけか直販サイトよりも安かったので、そのままお買い上げ。

今回の注文で中華の勢いとエネルギーを垣間見た気がする。こちらが日本人客だと判明すれば、わざわざ宛名にさん付けしてくるし(日本からそれなりに注文あるんだろうね)、小口注文でも親身に対応、特注品も1つから作ってくれてそれでいて安い。そりゃ日本は負けちゃうよねーっていう…。割と本気で危機感を覚えますた。

閑話休題。

購入の時系列としては、先にNICで落札から3日で到着。トランシーバとケーブルは中国からの発送にもかかわらず、輸送期間含め5日で到着。送料20ドルのFedEx扱いで、発送の翌日には国内に入り、その翌日には配達されて現代の物流マジパネェっす。

届いた機材たちはこんな感じ。ケーブルは検査証も入っててしっかりしてるねー。

本プロジェクト開始までは名前すら知らなかったMPOコードを初めて手にしたけど、思いの外取り回しが良くてビックリ。その辺のUTPケーブルより細くて軽く、STPケーブルよりしなやかでええじゃないか。といっても、最小曲げ半径は銅線より劣るはずなので、調子に乗ってはいかん。

次でいよいよ40GBASE-SR4ネットワークを構築していく。



逸般の誤家庭で40GbEはじめますた その1(構想編)

自宅ネットワークを40GBASE-SR4で40GbE化しますた。その顛末を全3回くらいでお届け。

かねてより宅内ネットワークを10GbE化したいと考えていたものの、以下の理由により二の足を踏んでいた。

  1. メインマシンがMacBook Proで10GbE対応NICの選択肢が極めて限られる
  2. 10GbE対応スイッチが高い
  3. 消費電力の問題
  4. Aquantiaな10GbEのFreeBSD用ドライバがない

MacBook Proで10GbEを使おうとすると、Thunderboltに頼らざるを得ない。となると対応製品はAKiTiO Thunder2 10G Network Adapter Sonnet Twin 10G Ethernet Thunderbolt 2 Adapterくらいしかなく、値段が高い上に潰しもきかない。Thunderbolt→PCI Expressエンクロージャと汎用NICを使う手もあるが、同じく高価だしイマイチ筋が悪い。

10GbE対応スイッチも安くなってきたとはいえ、10GBASE-T×2ポートの単機能スイッチングハブで2万円後半〜は個人的にはまだ高い。せめて5ポートで1.5万円くらいじゃないと話にならん。それに加えて、逸般の誤家庭 一般のご家庭で使おうとすると消費電力の高さと、それに伴う発熱の多さからのファン冷却による騒音も悩ましい。

そんなこんなで4〜5年ほど悶々としていた。

ひと月ほど前、某掲示板で10GBASE-SRが割とお手軽に導入できることを知る。光ファイバー方式は、機器的にもお値段的にも敷居が高いイメージがあったが、調べてみると思いのほか安い。NICはサーバ抜き取り品やリファービッシュ品が5000円程度で流通してるし、光ケーブルも1mで1000円、20mで2000円程と家電量販店で売ってるUTPケーブルと大差ない値段で買えることが分かった。現状、10GBASE-SRは10GBASE-Tより低消費電力というのも好都合だ。

スイッチがお高い問題は残ったままだけど、メインマシン-サーバ兼NAS間が速くなれば当面は事足りる。マシン間直結ならDAC (Direct Attach Cable)やAOC (Active Optical Cable)を使えば、SFP+トランシーバ分のお金が浮いて嬉しかったりする。しかし今回は15mほど引き回す必要があり、またDAC/AOCは汎用性に欠けるので不採用。メインマシン-サーバを10GBASE-SRで直結し、サーバで10Gと既存の1000BASE-Tネットワークブリッジを作れば、スイッチなしで既存ネットワーク構成を活かしつつ高速化の恩恵を受けられそうな予感。

MacBook Pro用の10GbE NICはどうしたかって?。実は、そもそもMacとはもうオサラバして、Windowsな自作デスクトップにメイン環境を移行済みなのである。というか、そうしたからこそ、宅内ネットワーク高速化に着手できたというのが実際のところ。Macを捨てたポエムは別途書く。多分。

大まかな構想が固まったところで、次は機材選定だ。必要なのは以下の3点である。

  • SFP+搭載の10GbE NIC
  • 10GBASE-SR用SFP+トランシーバ
  • LC-LCマルチモードファイバー

注意すべきはSFP+モジュールのベンダーロックイン。ロックが掛かってると純正品の組み合わせでしか使えず残念な事になる(まぁロックインに対応した互換トランシーバーも売ってるんだけどね)。今回は関係ないがスイッチ側で掛かってる事もあるので要注意。

ベンダーロックとOSの対応状況を鑑み、NICはMellanox ConnectX-3以降、SFP+トランシーバは10Gtekの互換品を使うことにした。ConnectXシリーズは中古品の流通量が多く、FreeBSD対応ドライバがあり、ベンダーロックもなく貧者のNICとして最強なのだ。10Gtekはあまり聞き慣れない会社だが、格安ネットワーク機器中華ベンダーとしてそれなりに実績があるようだ。実は別件で同社の10GBASE-T NICとDACを使った事があるが、特に問題なく使えたってのも採用理由の1つ。ケーブルも10Gtekに決定。

なお、ConnectXはConnextX-3以降推奨。Windows 10用のドライバはConnectX-3以降の製品向けにしか提供されていないので。OSのインボックスドライバやWin8.1用ドライバでConnectX-2も使えるらしいから、価格重視なら人柱ってみるのもアリ。

詳しく調べていくうちに、ConnectX-3には40GbE対応の製品があることが判明。10G対応品よりは高いけど、十分に手が届く範囲だった。光トランシーバーとケーブルも同様な感じ。となれば欲が出てくるのが人の常。サーバ直結なら最早10GbEに拘ることもなくね…?ってなもんで、40GbEへと舵を切ったのである…。

方針はそのままにEthernet規格が40GBASE-SR4となり、必要な機材は次のようになる。

  • QSFP搭載の40GbE NIC
  • 40GBASE-SR4用QSFPトランシーバ
  • MPO-12マルチモードファイバ(OM3以上)

それぞれ10GbEで選定した機材の40GbE対応版を買えばよい。続きは購入編にて。

iTunesでファイルのリンクが切れた曲をリストアップする方法

マシン移行などでiTunesライブラリを移動した際、ファイル行方不明となり曲とのリンクが切れることがある。曲名の先頭にビックリマークが付く忌まわしきアレだ。

アルバム単位でごっそりリンク切れしてくれれば分かりやすいが、数万曲あるうちの数曲とかだと実に厄介だ。リンク切れ曲を一挙にリストアップする方法を探してたら、海外フォーラムで実に巧妙な方法が紹介されていた。困っている人のために画像付きでリストアップ方法を解説する。

1 「ファイルがある曲」プレイリストを作り全曲追加

iTunesで「ファイル」>「新規」>「プレイリスト」で新規プレイリストを作る。名前は「ファイルがある曲」とでもしておく。

ライブラリの全曲を選択(iTunesの左の柱>ライブラリ>曲を選びCtrl+A (Command+A)が簡単)し、任意の曲の上で「右クリック」>「プレイリストに追加」>「ファイルがある曲」を選ぶ。

プレイリストへ曲を追加する際、iTunesは曲ファイルの存在チェックを行っているそうだ。したがって曲数に応じた時間がかかり、今回は全曲追加してるので結構待たされる。進捗状況表示はないが、終わればiTunesが操作できるようになるので、それまで辛抱強く待つ。

リンク切れファイルがあれば、ライブラリの曲数とプレイリストの曲数に差違が生じる。

2 「ファイルがない曲」スマートプレイリストを作る

全曲入りプレイリストが出来たら、次は「ファイルがない曲」抽出用のスマートプレイリストを作る。

「ファイル」>「新規」>「スマートプレイリスト」を選び、以下の条件で「ファイルがない曲」リストを作る。


  • 次のルールに一致 → チェック
    • 対象メディア → ミュージック
  • 「プレイリストが」「ファイルがある曲」「ではない」
  • 上限 → チェックしない
  • チェックマークのある項目だけ選択する → チェックしない
  • ライブアップデート → チェック

3 リンク切れの曲を確認

「ファイルがない曲」スマートプレイリストに、リンク切れ曲が列挙されていることを確認する。

通常のプレイリストと違い、スマートプレイリストでは曲ファイルの存在チェックが行われない。実際に曲を再生するときにリンクの生存確認が行われるので、上図ではビックリマークの有無が混在している。

あとは地道に曲ファイルを選択していくだけ(´・ω・`)

FreeBSDでmake.confのWITHOUT_MODULEが使えなくなっていた

FreeBSD 11.2-RELEASE-p7でwww/apache24をビルドしようとしたら、下記のエラーが出て処理が止まってしまった。

===>>> Port directory: /usr/ports/www/apache24

        ===>>> This port is marked IGNORE
        ===>>> : Error from apache.mk. WITH(OUT)_MODULES has been removed, use www_apache24_(UN)SET


        ===>>> If you are sure you can build it, remove the
               IGNORE line in the Makefile and try again.

Apacheだけではなく、他のportsでも出るものがあるようだ。

原因はというと、/etc/make.conf内のWITHOUT_MODULE, WITH_MODULEの記述。どうやら、これらオプションは/etc/src.confの方に書くようになったらしい。make.confからsrc.confに移動したら無事makeが通るようになった。

このオプションはカーネル構築に効くもののようなので、いっそ消してしまってもさほど問題ないかもしれない。

start.txt · 最終更新: 2016-05-07 17:46 by Decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0