アーカイブ

Archive for 2014年8月

なれる?NE が面白いという話

第六回ウディコン作品の「なれる?NE」というゲーム・・・ゲーム?にはまったので勝手に宣伝。
ne5
ざっくりいうと、端末とスイッチとルータだけが置けるネットワークシミュレータです。
ノード設置にコストがあったり、実績があったりと若干のゲーム要素はあります。
設置したら勝手にパケットが送られ始めるので、あとはぼーっと眺めるもよし、ノード数の上限100ノード全接続に挑戦するもよし。

実際のIPネットワーク感覚で作るといろいろはまる点はあるのですが、要点は押えてあっておもちゃとしては充分です。

実際のネットワークと違うところとしては、
・ルータのルーティングテーブルは自分では書けない。OSPFのような何かが自動または手動で機能する。
・ルーティングテーブル構築はほぼOSPFのそれだが、shortestにならない場合がある。
・ルータが複数のスイッチを直下に持てない。直下に持てるスイッチは1つまで。
・【スイッチを通った時もTTLが減る。】生存時間オーバーが出まくると思ったらこれでした。
 逆にいうと、L2スイッチでループを作ってブロードキャストしても無限ループしません。
・【同一リンク上に複数のパケットが存在しうる。】なのでルータの有難味があまりない。

ゲームとしてあそぶ上でのコツ
・L2のカスケードは2段までにしておく。3段になるとMACテーブルがあふれる。
 特に、更新したときに探索がパケット上限に引っかかって走らなくなりやすい。ブロードキャストの嵐で輻輳している、と考えるとちょっとリアルでもある。
・Nノード、L2ノードを設置したら確実にゲートウェイを設定、上流のルータを更新する。
・パケット上限にひっかかってルータやスイッチの近隣探索が一部のパスで走らないことがある。その場合は手動でNノード側から投げてやると良い。

ここからver1.1.0に関する追記
・パケット上限で近隣探索が失敗しづらくなり、盛大にルーティングテーブルが壊れることがなくなった感じです。
・パケットとノード数の上限を大幅に引き上げるスイッチが追加され、さらに大規模なネットワークを作れるようになったようです。ただし、負荷が指数的にかかるためスイッチオンは計画的に。
・L3とL3の間の距離制限がなくなり、ノード間の距離を任意に広げられるようになりました。これを悪用すると開始直後に画面両端にL3をおいて荒稼ぎが可能に。
ここまでver1.1.0に関する追記

FAQ的な何か
Q. 特定のNノード宛が経路不明で落ちる
A. 宛先になってるNノードとその上流L2ノードのゲートウェイが正しいか確認。
 正しかったらゲートウェイから更新をかける。赤パケットが出ないようなら、パケット上限を超えているので出るまで頑張る。Nノード側から更新をかける。この時最低でもゲートウェイのIPテーブルにNノードが追加されていることを確認すること。新しく始めたデータで試したらL3ノードのテーブルに下流Nノードは載らない模様。では前のセーブデータで載っていたのはなんだったんだ・・・
 注意点として、ver1.0.0ではバグでL3ノードのIPテーブル上限が20になっているため、ゲートウェイの登録数が20/100になっていたら諦めるしかない。見た目だけだった。実際の登録数は増えてるのでたぶん内部的には増えてる。

Q. 特定のNノード宛が生存超過で落ちる
A. よっぽどのことがない限り、生存超過で落ちるのはどこか二つのL3ノードの間を往復している状態になっている。
 だいたいの場合、L3ノードからのルーティング構築用パケットがパケット数上限で末端まで届かなかった場合なので、該当Nノードの上流ゲートウェイから更新をかけてやると治る。

Q. 壊れにくい構造は?
A. ver1.0.0では最上流の部分を複数L3ノードからなるリング状にし、そこにぶら下げる形でL3、L2ノードを配置すると壊れにくい。最上流のゲートウェイは循環するように設定する。
 最上流はメッシュにしたくなるが、近隣探索の赤パケットの量が増えてパケット上限に引っかかりルーティングが壊れることが多い。
 同様の理由でL2ノードはカスケードしない。ブロードキャストドメインの拡張はそれだけ赤パケットが増えてテーブル崩壊につながる。

A. ver1.1.0でパケット上限拡張、フラッディングの遅延実行が実装されてかなり安定しました。自由度が上がったのでやりたい放題できますが、あまりhop数が増えるような構成だと末端ノードのアップグレードコストがかさんで辛いです。

Q. なんかL2・L3ノードの接続数が上限に達していないのにつながらなくなった
A. ver1.0.0現在、L2/L3ノードは自分自身とのリンクを設定できるため、うっかり手動接続で2回クリックするとリンク上限から2本減らされます。自身をクリックすることで解除可能です。

8/5 0:04 新規データで試したところ一部の記載が怪しかったので削除。
8/10 ver 1.1.0あわせで追記

広告
カテゴリー:その他

iPXEで起動するtargetを切り替えたりNFS起動したり

2014年8月2日 1件のコメント

前回はgrub4dosを挟んでいたわけですが、そんな二度手間をしなくてもiPXEだけでほぼ実現できました。
(ほぼ: grubと違ってローカルディスクにあるシステムを直接起動できないっぽい。
 通常はそのままiPXEを抜ければローカルディスクから起動するので困らないのだが、
 直接USB起動できないマシンをUSBメモリから起動するために使っているのでそれができないと困る場合がある。)

ということで設定例はこちら。PXEから起動するため、undionly.kpxeに。
また、Fedora19のiPXEはバージョンが古く、shellや一部のコマンドが使えなかったりしたので最新のソースからmakeしなおしました。

dhcp.conf

Host netboottest{
hardware ethernet (macaddr);
if exists user-class and option user-class = "iPXE" {
filename "tftp://192.168.1.137/ipxeconf/menu.ipxe";
}else{
next-server 192.168.1.137;
filename "/undionly.kpxe";
}
}

ipxeconf/menu.ipxe

#!ipxe

:menu
menu Select disk image to boot
item --gap -- ----- Local -----
item lbl_localdisk Boot from internal disk
item --gap -- ----- iSCSI -----
item lbl_fedora20 Fedora20
item --gap -- ----- NFS -----
item lbl_nfs_fedora19 Fedora19
item --gap -- ----- Other -----
item lbl_shell iPXE shell
item lbl_reboot Restart
item lbl_poweroff Shutdown
choose --default lbl_localdisk --timeout 3000 disk && goto ${disk}

:lbl_shell
shell
goto menu

:lbl_fedora20
sanboot iscsi:192.168.1.133:::1:iqn.2012-11.net.msmrrenda:eevee.boottest
exit

:lbl_nfs_fedora19
kernel tftp://192.168.1.137/msmr/vmlinuz-3.13.7-100.fc19.x86_64 ro root=nfs4:192.168.1.133:/netboot/msmr ip=dhcp selinux=0 enforcing=0
initrd tftp://192.168.1.137/msmr/initramfs-3.13.7-100.fc19.x86_64-nfs.img
boot
exit

:lbl_reboot
reboot
exit

:lbl_poweroff
poweroff
exit

:lbl_localdisk
exit

カテゴリー:GNU/Linux