まめ畑

ゆるゆると書いていきます

プログラムとは

今日も開発のプログラムにわいた虫の駆除をやっています。
本当にどこからこんなに沸いてくるのやら・・・・・。
一番大きな虫はつぶしましたが、実際にWLAN上で実行させると
動作不安定に陥ります・・・・・。
以下はメモなど

理由は目に見えていて、
・WLAN上でのコリジョンによる再送制御のオーバーヘッドに起因するもの
・マルチノード構成時の遅延によるタイムアウトの発生
・接続確認に使用しているICMP-ECHO要求が届かない問題
・リミッティッドブロードキャストアドレスを使用しているがための、
自ノードの処理遅延
・各種パラメータの設定ミス
・MAC層における処理が遅い
・そもそもWLAN上での再送制御はオーバーヘッドが大きい
・距離によって通信速度をダイナミックに変化させる仕様が邪魔を
する
etc・・・

とまぁ上げれば霧がなく、設計に問題がありクラス間で冗長なコードが存在したり
再利用効率の悪いコードになってしまい動作が安定しません。
JavaVMやノードへの負荷も高いです。
若干の拡張性を初期段階に盛り込んだため、そこから発生するバグの発見が
見つかりにくいです・・・・・
センスのないコードですよ・・・・・。
送信部が2つのクラスにあるなんて・・・・・おばか丸出しです。

あと、接続確認機構にバグがあります・・・・
PINGを使用しているのですがこいつが曲者
・WLAN上でうまく動作しない←多分、遅延
・使用時にFWの設定でICMPのECHO要求を許可したりしないと使えない
こんなの運用上耐えうりません。
で、そもそもこれだとノード間の接続は確認出来ますが、MAODVのソフトが
動作しているかはわかりません。
つまり、ソフトが接続確認を行わないといけないのです。
つまり、設計の局所的な見直し・・・・・。
でも、構想はあるのですが時間と実験する環境がないです・・・
各機能がモジュール化しているので内容の書き換えはすぐなのですが・・・・
卒研の時は実験用の端末かPDAかってほしいな。。。
でも、PDAだとSmallDevice用のプログラムをしないとなぁ
となるとC#での開発かな。
でも、研究室はJavaモード・・・・
Javaも6.0公開されて、JavaベースのDBが付属したり、永続化もサポートされたり
して結構複雑になってきてますね。
でも、いまだにジェネリックアノテーションやデリゲートの使い方がよくわかりません。
使っていますが、正しい使い方なのでしょうか・・・。誰か教えて下さい。

AdHocは自立システムなのでパラメータの調整も自動で行わないと効率が
悪いです・・・でも、そんなアルゴリズム難しいです。

で、卒研のテーマですが、今はこんな感じのものを
・AdHocNetwork上におけるP2P-Proxy技術の導入
内容はここには書きませんが、出来るかどうか怪しいですがマスターまで
いくならむずかしめのものをつくろうかなと。
身の丈以上を目指します><
シュミレーションで終わって実装までいかないかもしれませんが(そっちの可能性
たかすぎる)頑張ります。
さて、先生に相談に行こう。