自分の家でのテストに遊べるハブを探そうシリーズ。
ヤフオクで仕事から帰って掘り出し物を探していましたが、どうにも合うものがなく。というか、基本的にリースアップ品が流れてくるので、
サイズがでかい!!!
とか
ファーム(ハブの中に入っているOSみたいなもの)が古い!!!
とか、なかなかあうのがありません。サイズはあきらめるしかないけどw。
色々情報を探していると、
FXC5008なるものが。
ALLギガだし、DynamicVLANが使えないのは痛いけども、
さて、例の件が盛り上がってまいりましたw。
「何にも決まってないけど、明日から構築フェーズだし機器だししとこうか」
「この歳であの量の機器だしつらいなw」
なんていいつつ機器を出し、ハード系の実装を確認してみると・・・。
「(,,゚Д゚)∩、FCコントローラ実装できないんだけどw」
「しかも、2機実装するようになってるよ、これww」
プロジェクト関係者全員唖然w。みんな笑うしかできなかったですねw。
毎日のように花火が打ち上げられ、もはや「明日はどんな花火が打ちあがるんだろうなw」と、一同悟りをひらきつつありますw。
そんななか、今回採用することになった、AFTというもののご紹介。
これは、ネットワークボード(以下、LANボードという)がぶっ壊れても平気なようにしましょうというもの。
普通の家庭のパソコンでは、別にLANボードが壊れても、買ってくればいいかですが、そうなっても動くようにするものです。
何枚かのLANボードを仮想的に1枚のLANボードに見せかけます。これなら、1枚壊れても安心ですね。
これを実現するのにIntelのアドバンスド・ネットワーキング・サービス(以下、ANSという)というものを導入します。
ネットワークを構成する上では、レイヤという概念があります(下図参照)。
+----------------------+
|7.アプリケーション層 |
+----------------------+
|6.プレゼンテーション層|
+----------------------+
|5.セッション層 |
+----------------------+
|4.トランスポート層 |
+----------------------+
|3.ネットワーク層 |
+----------------------+
|2.データリンク層 |
+----------------------+
|1.物理層 |
+----------------------+
このレイヤ2のとこまではカバーできます。要するに、この機能を使えば、下から二番目までは冗長化(要するに壊れても動く)できることになります。ちなみに、IPなんていうのは、レイヤ3になりますね。今回は、その辺のことはなかったことに。というか、構成上無理かな。少なくとも私には。一部、アプリケーション層で止まっては困るものがあるので、そちらは冗長化してますが、それは別の機会に。
このANSの機能で、止まったと判断する要素がレイヤ1でのものと、レイヤ2でのものがあります。要件とか構成次第ですが、今回はレイヤ2で判断させています。
レイヤ1での判断は、要するにリンクがきれたかきれてないかです。これは、ハブのOS部分が壊れたなんてときに対応が取れなくなるので、今回は却下(というか、私の場合は上位で上位でといきます)
どのように判断するのか。それは、次のようになります(レイヤ2レベルのデータのやりとりのお話です)。
※LANボード1(稼動系)とLANボード2(待機系)を組合わせて、仮想LANボードを構成したという前提です。
1.相手が稼動しているか確認するのに、確認用のデータ(以下、プローブという)を飛ばします(LAN1ボード→LAN2ボードへ、LAN2ボード→LAN1ボードへ)。
2.データが届けば相手が稼動していると判断します。
簡単ですね。
そのデータの内容ですが、以下のようになります。
※MACアドレスというのは、そのLANボードに付けれれた番号のようなもの。基本的に世界でどこを探しても、同じ番号が割り振られるということはありません。IPアドレスのような、個人で使っていいぞてきな番号もありません。
+-----------------------------------+-----------+
|あて先MACアドレス|送信元MACアドレス|タイプ |
|6オクテット |6オクテット |2オクテット|
+------------+----+-----------------+-----------+
|データ |
|50オクテット|
+------------+
あて先MACアドレスには、全員にデータを飛ばす番号か、構成メンバだけにデータを飛ばす番号がはいります。
送信元MACアドレスには、自分のMACアドレスが入ります。
タイプは0x886dが固定で入ります。これは、確認用のデータですよということですね。ちなみに、IPですよって場合は、0x0800が入ります。
データの部分は、色々入っているのですが(FCSもデータに入れちゃってますが)、その中に確認用のシーケンス番号というのと、チームIDというのが重要になってきます。
チームIDというのは、あて先MACアドレスに全員にデータを飛ばすデータが入っていた場合、関係ないLANボードもデータを受け取ってしまいます。ANSがはいっていないならいいのですが、入っていると誤解が生じます。これでは困るので、このチームのメンバの確認ですよというのを判別するデータになります。
シーケンス番号というのは、LAN1ボードからLAN2ボードにデータを送信したときに、1というデータが飛ばされたとしたら、LAN2ボードもLAN1ボードへ1というデータを飛ばします。同じ番号が返ってきたら「あー、あいつ生きてるな」ってことです。
待機しているほうが死ぬ分にはかまいませんが(当然、常時監視を行って、待機系が死んだら即交換ですが)、稼動系が死んだ場合に、その番号のデータが返ってこないと、「あいつ、逝っちまったか。俺が変わりに」となるわけですね。
シーケンス番号は、毎回確認のたびに番号が変わります。
実際のデータを取ってみると、こんな感じになります(テスト環境で、1秒毎に確認データを垂れ流してます、この辺の確認の間隔も調整しないといけません)。
このデータだと21:30:04までは、きっちり稼動していて、21:30:05から片系が死んでいるということになります。
この技術は、通常の家電量販店で売っているハブにも使える技術です。
LANボードが壊れても信長やりたいんだよおおおおおおおおおおおおおお、って情熱をお持ちの方は是非使って見てくださいね♪。
以上、簡単ですがAFTの御紹介でした。
※ 業務で使うには、もっと調整が必要ですし、別の技術の検討も必要です。当然、私の低い技術力でできることですし、間違った認識の部分があったりします。その辺は、ご了承ください。