hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
06/21/2012 ふむ [長年日記]
■ [小ネタ][JS] ブラウザで仮想スイッチ
ブラウザで tcpdump により Ethernet over WebSocket 上を流れる L2 フレームをブラウザからキャプチャすることができた.
しかし受信ができればもちろん送信もできるわけで,複数の WebSocket を開いて相互にフレームを交換してやれば仮想スイッチを作れるということに気付いてしまったのでささっと作ってみた.
それが ethwswitch (画像).スイッチと言っても学習は行わないので機能はバカハブだけれど.
実際に使ってみないと分かりにくいと思うけれど,ポートを 2 つ以上作って etherws サーバに接続すると,流れてくるフレームを相互に交換し始める. そうすると,対向の 2 つのサーバ同士が通信できる状態になる. ブラウザを介することによりネットワークが L2 的に繋がるのだ.
テストで実際に繋いだり切ったりしてみたのだけれど,何らかのコントローラを介しているわけでもないのに,ブラウザでボタンをポチポチしただけで ping が届いたり届かなくなったりするのは気色悪いことこの上ない.
もちろん性能はブラウザの処理能力に依存する. 手元で試した感じでは,まあ実用に耐えるようなものではないだろう :-P
追記
色々な方々に「学習は?」「スイッチじゃねーじゃん」などと手厳しいツッコミを頂いたのでスイッチにしておいた. どちらにせよどうせ現段階では話にならない性能しか出ないだろうということが分かりきっていたのでやらなかったのだけれど,そこまで言われてはやらざるを得まい ;-P
それにしても,これを実装する過程で知ったのだけれど,JavaScript では 32 ビット以上の数値にはビット演算ができないということを知って,ますます JavaScript との仲が悪くなった.
本当は MAC アドレスを数値で持たせるつもりだったのだけれど,48 ビットなので無理になってしまった. だからといってガチにツリーを作るとかはあまりに面倒なので文字列で持たせている. 元々遅いのに更に遅くなったことだろう...
これがSDNであるか…
んー末尾に 48 とか付くタイプのアレかも分からんね