トップ 最新 追記

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


06/03/2012 むう [長年日記]

tDiary 3510日目

[日記] 自宅 PC の手術

ここのところ奔走してた件について.

自宅 PC で VM を沢山起動できるようにとメモリを増やしたのだけれど,メモリを増やしてからしばらくして,負荷をかけると再起動するという状態になってしまった.

知り合いに話を聞いたり考えたりしてみた結果,電源容量が足りてないのではという結論に. そういえば利用中のものは Northwood 時代に買った安物ケースに付属の謎電源をニコイチしたもの だった. 後日調べたら 300W の電源だったのだけれど,元々電源容量が少なめな上,この電源は 8, 9 年前のものなので,経年劣化で容量が減っていたものと思われる.

で,まぁしょうがないので 超力 2 プラグイン 650W なる電源をそこら辺で買ってきて装着. 選択理由は,基本的に電源入れっぱなしなので 80PLUS 認証 GOLD 以上でというのと,ちょっと容量多めでということくらい. ただこの電源,買ってから気付いたのだけれど,ファンが背面に出ない. 自分が今使っているケースではケース内に排気せざるを得ないので,ちょっと失敗したかな? とも少し思っている (とはいえ最近の電源はそういうの多いみたいだけど). それ以外は特に文句ないのだけれど.

これで負荷を少しかけたくらいでは再起動しなくなったのだけれど,負荷をかけ続けると今度は Processor Thermal Trip で電源断が起こるようになってしまった. lm_sensors で CPU 温度を見てみると,アイドル時 75 ℃程度,高負荷時 100 ℃超 (100 ℃以上は計れないっぽい?) という異常状態.これはひどい.

CPU クーラーの装着状態が甘かったらしく,装着し直したら,アイドル時 60 ℃程度,高負荷時 99 ℃となり,一応,負荷をかけても電源断するようなことはなくなった. とはいえ,高負荷時 99 ℃はやっぱり異常なので,一応 CPU クーラーを交換しておくことにした (リテール付属クーラーだったので).

で,またそこら辺で 刀 4 なるクーラーを買ってきて装着. 選択理由にコレというようなものはないのだけれど,でかすぎずそれなりの冷却性能を持つもの,というくらい.

しかしこのクーラーの装着は困難を極めた. LGA775 なのでプッシュピン装着なのだけれど,ヒートシンクよりもピンの場所が内側になるので,力をうまく入れることができず全然装着できない. その上 CPU のすぐ横にチップセット用ヒートシンクがあったりメモリがあったりでものすごく邪魔. ただでさえ LGA775 のクーラーはカタくて装着が難しいと言われているのに,だいぶツラいものがあった. 最終的にはマザーを一旦ケースから外して最初から組み立て直すはめになったのだけれど,カタくてカタくて,マザーが折れるかと思った... ちなみに装着時にヒートシンクで親指の付け根をガリガリと削ってしまい流血.ヒートシンクが赤くなってしまった.

まぁそんなこんなでアイドル時 45 ℃程度,高負荷時 65 ℃程度に落ち着いたのでよしとする. しかし CPU クーラーの換装は二度とやりたくない. というか,自作してるくせにと言われそうだけれど,狭い作業スペースでちまちま配線とかをいじっているといらいらして発狂しそうになるので,できればもう二度とケースも開けたくないとさえ思う. せめて広い作業スペースを確保できれば...

ただメモリを増やしたかっただけなのに,思わぬ散財と労働を強いられた. やれやれだぜ.


06/09/2012 ふむ [長年日記]

tDiary 3516日目

[メモ][Linux] KVM の VNC にパスワードをかける

要は,

# qemu-kvm -vnc :1,password

password というサブオプションを付けて起動して,

(qemu) change vnc password
Password: ************

という操作を行えば良い.

...のだけれど,勘の良い諸兄にはお分かりの通り,単に password サブオプションを付けるだけでは (認証が通らないので) viewer で繋げずパスワードを変えられずのひどい状態になってしまう. これを回避するために 2 種類の方法を試した.

1 つ目の方法は,qemu-kvm を起動する端末をコンソールにしてしまうというもの. この場合,以下のように qemu-kvm を起動する. すると端末にプロンプトが出るので,ここでパスワードを設定する.

# qemu-kvm -vnc :1,password -monitor stdio
(qemu)

しかしこれに -daemonize を付けてしまうとやっぱりひどい目に遭う.

daemonize したいおしゃまなあなたは 2 つ目の以下の方法を使うことができる.

# qemu-kvm -vnc :1,password -monitor pty -daemonize
char device redirected to /dev/pts/5

# minicom -p /dev/pts/5
(qemu)

なお minicom から抜けたい時は C-a q を入力すれば良い. いつも何度でも繋ぎ直せる. たぶん胸のどこか奥で呼んでいる.


06/17/2012 うむ [長年日記]

tDiary 3524日目

[小ネタ][JS] ブラウザで tcpdump

Ethernet over WebSocket により L2 フレームを WebSocket に乗せることができたわけだけれど,では,WebSocket に乗せることができるということはどういうことか.

ブラウザから直接 Universal TUN/TAP を使うことはたぶんできないので,仲介屋でも立てておかない限り,ブラウザで直接トンネリングを実現することはできない. 仲介屋を作ってみるというのまあ面白いかも知れないけれど,とりあえず簡単にできるだろうということで,まずは tcpdump もどきの ethwsdump (画像) なるものを作ってみた (ただしサーバが認証かけてると動かない).

仕組みは至って単純.Ethernet over WebSocket というくらいで WebSocket 上に L2 フレームが流れてくるわけなので,WebSocket でサーバに繋いでやって,流れてくるデータを HTML 上に展開するだけ. 受信に関してはブラウザからいくらでも好きなようにできるので,プロトコルハンドラを実装してやれば解析でもなんでも出来るだろう.

ただし送信に関してはそう単純ではない. いや,処理は単純なのだけれど,肝心のデータソースがない,送れるものがないのだ. ぱっと思いつくのは,pcap ファイルをアップロードできるフォームを用意しておいてその中のデータを送るということくらいで,あまり嬉しくない...

まあ,とりあえずブラウザでできることはできるので,また何か思いついたら遊んでみるかも知れない.

思いついた

ブラウザで仮想スイッチを作れるね. ということはつまりフロー制御も入れられるはず. 制御用の WebSocket を 1 本開いておいて,その上に OpenFlow メッセージを流してやるということもきっとできるだろう.

嬉しいかどうかはさておき :-P


06/21/2012 ふむ [長年日記]

tDiary 3528日目

[小ネタ][JS] ブラウザで仮想スイッチ

ブラウザで tcpdump により Ethernet over WebSocket 上を流れる L2 フレームをブラウザからキャプチャすることができた.

しかし受信ができればもちろん送信もできるわけで,複数の WebSocket を開いて相互にフレームを交換してやれば仮想スイッチを作れるということに気付いてしまったのでささっと作ってみた.

それが ethwswitch (画像).スイッチと言っても学習は行わないので機能はバカハブだけれど.

実際に使ってみないと分かりにくいと思うけれど,ポートを 2 つ以上作って etherws サーバに接続すると,流れてくるフレームを相互に交換し始める. そうすると,対向の 2 つのサーバ同士が通信できる状態になる. ブラウザを介することによりネットワークが L2 的に繋がるのだ.

テストで実際に繋いだり切ったりしてみたのだけれど,何らかのコントローラを介しているわけでもないのに,ブラウザでボタンをポチポチしただけで ping が届いたり届かなくなったりするのは気色悪いことこの上ない.

もちろん性能はブラウザの処理能力に依存する. 手元で試した感じでは,まあ実用に耐えるようなものではないだろう :-P

追記

色々な方々に「学習は?」「スイッチじゃねーじゃん」などと手厳しいツッコミを頂いたのでスイッチにしておいた. どちらにせよどうせ現段階では話にならない性能しか出ないだろうということが分かりきっていたのでやらなかったのだけれど,そこまで言われてはやらざるを得まい ;-P

それにしても,これを実装する過程で知ったのだけれど,JavaScript では 32 ビット以上の数値にはビット演算ができないということを知って,ますます JavaScript との仲が悪くなった.

本当は MAC アドレスを数値で持たせるつもりだったのだけれど,48 ビットなので無理になってしまった. だからといってガチにツリーを作るとかはあまりに面倒なので文字列で持たせている. 元々遅いのに更に遅くなったことだろう...

本日のツッコミ(全2件) [ツッコミを入れる]

smbd [これがSDNであるか…]

atzm [んー末尾に 48 とか付くタイプのアレかも分からんね ]


06/29/2012 うむ [長年日記]

tDiary 3536日目

[Py][Linux][日記] etherws 0.7 をリリース

とても久しぶりに肉の日リリース. 久しぶりにとか言ってる時点で意味はあまりない.

今のところ思いついた機能は殆ど盛り込んだのでとりあえずは満足.

複数の TAP デバイスや WebSocket 接続を持てるようになって,簡単な仮想スイッチも内蔵したので,下手なことをすると余裕でループを起こすと思われるので注意. もちろん xSTP とか入れてないし.

VLAN ポートは入れようか入れまいか迷った挙げ句に入れるのを辞めた. そのままでも vconfig とか使えばできるしその方が絶対速いはずなので敢えて etherws 側に実装するモチベーションがなかった...

CPython でユーザランドに書いてる今の実装で本気ネットワークに適用できるとは思ってないし,OpenFlow とかそういうナウでヤングなものの実装は今のところ考えていない.

まあ個人で遊ぶ分には充分なんじゃないかなと. バグってたりまた何か思いついたら手を入れるかもだけど,とりあえずは落ち着けたということで. 次に何かやるときは多分 UI をごそっと変える. もはやサーバとクライアントを分ける意味があまりない.

良い子のみんな,HTTP や HTTPS が開いてるからって,越えちゃいけないネットワーク境界を勝手に越えたりしちゃダメだぜ! :-P