全16件 (16件中 1-16件目)
1
SkypeのA2A通信は、転送帯域に大きなばらつきがあるというのが、前回まで、上下、3桁というのは凄いが、Skype付属のファイル転送機能はかなりの帯域で転送している。A2Aとは別の仕組みでデータ転送しているのかもしれない。。で、もう少し性能向上策を考えてみる。 現在は、A2AのStreamを使用してパケットの転送を行っているが、これにDataGram通信を併用してみる。Datagram通信は送達保障はないが、どうせ転送できない分は破棄せざるをえないので、とりあえず送るだけ送ってみる。Datagram通信は通信サイズが1400Byteに制限されているので、小さいパケットをDatagaramで大きいパケットはStreamで送信してみる。当然パケットの順序は多少入れ替わる可能性があるが、もともとIP通信はパケットの到着順序を保障するものでないので。。あとは、論よりRUN(笑)
2007.07.30
コメント(0)
SkyGateForFTP/SkyGateforCVS Ver. 1-0-0-105をリリースしました。BugFixです。接続、切断を繰り返したときにクライアントからサーバにFTP接続、CVS(PSERVER)接続できなくなる障害を修正しました。ダウンロードは下記からお願いします。http://www4.ocn.ne.jp/~dragonoo/
2007.07.30
コメント(0)
昨日試験環境でなく、実際外部のネットからアクセスしてみた。ばらつきが、大きすぎ!結果は、0.8KByte/Secから60KByte/Secまで3桁のばらつきがあった。(性能値はバイナリデータベースで、A2Aの転送量としては上記の倍になります)実際に試験していた時間は4時間ぐらいなのでこの間に上記ぐらいのばらつきがあった、skypeの接続状態は動的に結構変化しているようだ。カメラの映像を併用したときに極端に大域が変化したようにみえたが、同じ接続内で映像、音声、A2Aの大域をシェアしているのだろうか。。その場合、当然A2Aの優先度は下げられるのでしょうね。MIN値が極端に低いので、A2Aのアプリケーションの考え方としては通信を使ったリアルタイムなものは難しいですね。バックグラウンドでゆっくりデータの同期をとるか、対戦型のボードゲームのようにお互いの指してのみをやりとるするものぐらいですかね。ちょっとがっかり。(運がよければ結構さくさくは動くけど。。)
2007.07.30
コメント(0)
処理間隔と一度に転送するパケット数を調整してみた。小さなパケットを一度に送れる数を増やすのが効果があるようだ、複数パケットのくくり方を、数とTotal容量のOR条件で行うようにして、小さなパケットの応答(ACK)パケットを落とさないようにした。転送速度は、初期は役10倍転送可能なファイル容量はFTPで数10M、Windowsのブラウズ機能でのCOPY&PASTは数100MまでOKになった。今の試験環境は、同一LAN内での試験なので、SKYPEの接続は直接なので条件がよい。実際のネットワーク帯域を明日、外からアクセスして確認してみる。。
2007.07.28
コメント(0)
パケット転送の複数化をやってみた。FTPで検証してみると、多少は転送速度は速くなったが、TCPをブリッジしたSkyGateForFTPの方が断然早い。また、1M程度のファイル転送はできるが2.5Mぐらいから怪しくなってくる。パケットのロストが発生して規定の再送回数を超えてしまうようである。パケットの入り口で取りきれていないのでしょう。Windowsのブラウジング機能そのものは、複数化前より安定しているがファイルのコピー&ペーストは数100Kまではできるがメガファイルは失敗した。もう少しチューニングしてみる。。
2007.07.27
コメント(0)
EatherOverSkypeにブロードキャストパケットを通した。これで、UDP系のプロトコルはブロードキャストから始まるものが多いので、コンピュータのブラウズなどできるかもしれない。。送信元のアドレスは、自PCからのものに限定している。結果からいうと、仮想PCの(設定)IPアドレスでコンピュータの検索を実行すると接う続先のコンピュータが現れた。まだスニファソフトでパケットレベルでの検証をおこなっていないが、一定の目処にはなる。これで、おおよそSkypeのA2Aを使用した仮想LANの実現に向けて見通しが立ってきた。後は、性能について考慮する必要がある。試験実装は、Eatherの1パケットずつA2AのStreamに流している。処理速度(頻度)より、20フレーム/Sec しか流せないので複数フレームを一度に転送する仕組みに変えてみる。
2007.07.26
コメント(0)
昨日書いた。めんどくせーのやってみた。結構はまってしまったが、何とかFTPが動くとこまでできた。スニファソフトで見ていると、時々再送が発生しているがなんとか動いている。大きなファイルの転送を行うとTIMEOVERが発生してとまるが、小さなファイルの連続転送は問題なさそう。PASV・アクティブ両モードで動かしてみたがOKであった。ひとまず、本日ここまで。
2007.07.25
コメント(0)
前回書いたFTPが途中で止まる原因が判明した。実際にはLISTコマンドの一つ前のPASVコマンドの応答パケットがとまっていた。このパケットは、TCPのペイロードの書き換えをおこなっているがここでTCPのサイズが変わるので、このパケットだけでなく以降のサーバ→クライアントパケットのSEQ番号、クライアント→サーバパケットのACK番号の辻褄を合わせなくてはならない。。めんどくせ~~!世の中のハッカー屋さんはこんな面倒なことしてんのかいな。。乗りかけた船なので、とりあえずパケットの調整をやってみる。1)まず、TCPパケットの調整値を覚えるキャッシュを作る。2)検索キーは、ポート番号の組にする。3)サーバ→クライアント方向のパケットの場合、 1.ポート番号の組でキャッシュを検索する。 2.該当があれば、SEQ番号を調整値分加算する。(調整値は符号付) 3.TCPチェックサムを再計算する。 3.TCPのペイロードのIPアドレスの書き換えが必要なパケットか判定する。 5.IPアドレスの書き換えを行った場合、TCPペイロードのサイズの変更分を調整値としてキャッシュに登録する。(既に該当組がある場合は調整値を加算) 6.TCPチェックサムを再計算する。 7.FINパケットの場合、キャッシュを破棄する。4)クライアント→サーバ方向のパケットの場合、 1.ポート番号の組でキャッシュを検索する。 2.該当があれば、ACT番号を調整値分減算する。(調整値は符号付) 3.TCPチェックサムを再計算する。4)その他 1.キャッシュは10個ぐらい。 2.エージング時間は、5分ぐらい。(最後にキャッシュにアクセスしてからの経過時間)ん~。こんな感じですか。やっぱり、めんどくせ~~~!
2007.07.24
コメント(0)
EatherOverSkypeの実装実験中であるが、先日FTPの実行ができたと書いたが、スニファソフトでよく見てみるとデータポートの接続が、Skype経由でなく直接リンクされていた。よく考えてみると、データポートの接続指示の書き換えを忘れていた。(笑)SkyGateForFTPでは、ポート番号の書き換えをおこなったが今回はポート番号は同じで、IPアドレスの書き換えが必要になる。実際にやってみると、結構面倒なコーディングになった。TCPのペイロードの書き換えを行うと、TCPのチェックサムはもちろんであるが、TCPペイロードのlengthが変わるのでIPヘッダのtotalengthまで書き換える必要がある。FTPクライアントをFFFTPでやると、ディレクトリの一覧の要求のところで止まった。原因調査はこれから。。。
2007.07.23
コメント(0)
これまでの考察に基づいて試験実装をやってみた。ベースは、SkyGateForCVSでデータ転送部分をEatherのRead/Writeに入れ替えた。Eatherパケットのキャプチャと書き込みはWinPcapを使用した。ARPについては考察時の案4で、ARPパケットをSkypeに乗せてIPアドレスの書き換えで実装した。結果はそこそこ良好。自分で折り返す案の捨てがたいが当面はこのままで行く。パケットのキャプチャ条件はPROMISCUSモードでキャプチャして自分のパケットを選択している。パケットは、仮想PCのIPアドレスに一致したものをだけを拾っているのでUDPなどのブロードキャストアドレスは除外している。このレベルで、FTPの接続からファイル転送を軽くおこなってみた。1M程度のファイルなら問題なく転送できた。ためしに300Mをやってみたがこれはだめであった。(原因はこれから。。)もう少し、バグ取りをしてから。。性能向上の算段を考えてみたい。。今後の方針案)1)ブロードキャストアドレスのパケット通してみる。(UDPパケット)2)Skypeに乗せるときEATHER複数パケットを1回の送信で。。3)マルチセッションの検討(EATHERパケットなので到着順を保障する必要はないので。。)4)複数接続5)パケットのフィルタ6)セキュリティ上の考慮気が変わらなければこんな感じで進めてみたい。
2007.07.21
コメント(0)
SkyGateForFTP/SkyGateForCVS バージョンUPしました。UIを少し追加しました。 下記より、ダウンロードできます。http://www4.ocn.ne.jp/~dragonoo
2007.07.17
コメント(0)
前回はskypeP2P上に仮想LANについて考えてみた。そこでは、自分のマシン上に仮想LAN上のマシンのIPをマッピングすることを考えてみたが、行き先がローカルアドレスのIPパケットがLAN上に出てゆくためには、ARPによるアドレス解決が必要となる。前回はこの点を保留したが、今回はMACアドレスの解決について考えてみる。案1) UIにて、適当なMACアドレスを設定する。 この方法だと、自分のLAN上の範囲でMACアドレスが重複しなければいいので適当な値で設定しても実用上まず、衝突することはない。 とはいうものの、ベンダーIDぐらいは調査して、空きとなっている部分を使用すればまず衝突はない。実験用に作るレベルであれば考え方として、最もお手軽な方法である。案2) 自分のマシン(NIC)のMACアドレスを使用する。 つまり、外のマシンからは同じNICに複数のIPアドレスを割り付けられているように見える。 これは、昔からUNIXでは設定可能となっているので、特に問題はないと思われる。(WindowsでもDHCPを使用しないで固定IPアドレスなら複数の割付が可能。やってみたことはないが。。)案3) 接続先のマシン(NIX)のMACアドレスを使用する。 当然、A2Aで接続後は情報の交換が可能なのでお互いのMACアドレスの情報を交換することは可能なのでこれも、ありかなと思う。案4) そもそも、MACアドレスの管理を自分でしない。 すなわち、ARPパケットも相手マシンまで送ってしまう。(IPアドレスの書き換えは行う。) 案1)~案3)は自分でARPパケットを終端してしまうことが前提であるが、も終端せずに伝送路にのせてしまう。最初に考えたバカHUBのようであるが、IPアドレス部の書き換えを行うので自分のマシンからは、仮想マシンのIP-MACの組が見えて、相手のマシンからは相手のマシンのLAN上の仮想マシンとしてみえるハズである。 欠点は時間がかかること。通常のタイムアウトに引っかかるかどうかはやってみないとわからないですね。現実問題としては、案4)を試してだめなら案3)かな。。たぶんプログラミング量も、案1>案2、案3>案4と思われる。-------OrangeMakerホームページhttp://www4.ocn.ne.jp/~dragonoo/
2007.07.10
コメント(0)
SkyGateForFTP/SkyGateForCVS バージョンUPしました。変更点は、以前より懸案としていた2重起動を抑止しました。 下記より、ダウンロードできます。http://www4.ocn.ne.jp/~dragonoo/
2007.07.06
コメント(0)
今は、FTPサーバに札幌ワークスさんのBJD(BlackJumboDog)を使っている。改めて、マニュアルを見てみると多種の機能がある。結構すごいソフトだと改めて感心してしまいます。FTP以外にHTTP、SMTP、POP、DHCP、TELNETなど多種のサーバプロトコルに対応しているようで、これだけでイントラネットが簡単に構築できそう。で、思いついたのはSkyGateForXXXでこれらのプロトコルを順に通してみようかな、単純にTCPパケットを通す実験だけなら簡単にできるので。。うまく行きそうなら、SkyGateForXXXでマルチユーザに対応したサーバ版を作るモチベーションになるかもしれない。全部のプロトコルの詳細を知っているわけでないが、FTPのデータポートのアクティブ、パッシブみたいな動的なポートの制御があると厄介だが、とりあえず試してみる価値はありそうかな。
2007.07.05
コメント(0)
前回はバカHUB状態まで。。。今回はもう少し真面目に(笑)SkypeP2P上に仮想LANを考えてみる。1.SkypeIDとローカルIPアドレスをマッピングする。 ローカルIPアドレスは実行しているPCが所属するローカルアドレスなので、実行しているPCのLAN上にSkype上の接続先のマシンが仮想的に存在しているように見えるようにすることについて考えてみる。 手元のマシンをA,接続先のマシンをBとして、マシンA->マシンBへのIPパケットの転送を考えてみる。マシンAとマシンBは異なるアドレス体系に所属し マシンAのマップ: SkypeID:A-IPアドレス:X(Realアドレス) SkypeID:B-IPアドレス:Y(仮想アドレス) マシンBのマップ: SkypeID:A-IPアドレス:S(仮想アドレス) SkypeID:B-IPアドレス:T(Realアドレス) まずマシンAのアプリケーションからマシンB(仮想アドレス)に向けてのIPパケットがマシンAのNICから飛ばなければならない。IPアドレスYがグローバルアドレスの場合はルータに向けて無条件にとぶがこれは論外としてIPアドレスYがNICから出力されるためには、ARPによるアドレス解決が必要。最低限マップ上に存在するIPアドレスに向けてARP-REQUESTパケットを受信(キャプチャ)した場合REPLYを返す機構が必要になる。(チェックポイント1) 次に、マップ上に存在するIPパケットを受信(キャプチャ)した場合、マップの紐付けに従ってマシンBのSkypeIDに向けてIPパケットを送信する。このときIPヘッダのソースはX,ディストネーションがYとなっている。 マシンBは、IPパケットを受信する。受信したIPパケットをマシンBが所属するネットワークのアドレスに整合させる。つまり、IPヘッダのソースをマシンAのSkypeIDに紐づくIPアドレス(S)に書き換える、IPヘッダのディストネーションアドレスをマシンBが所属するネットワーク上のREALなIPアドレス(T)に書き換える。(checksum等は再計算))このIPパケットを送信する。マシンBのアプリケーションはこのパケットがアドレスSからきたパケットとして認識する。2.マッピングUIを考える。 ローカルアドレスの設定は、固定アドレスの設定とDHCPによる割り当てが考えられる。 両方をサポートできることが望ましいが、DHCPによるアドレス割付は独立した問題なので後回しでもよい。 マップ対象は、コンタクトリストのIDを対象としてアドレス割付をおこなう対象をこの中から選択する。 さらに、MACアドレスの設定が必要で少なくともネットワーク内での重複は避けないといけない。 MACアドレスの扱いに(設定、チェック方法等)ついては別途考える。(調査要)3.処理概要について A.Eatherパケット受信処理 if(ARP-REQUEST?){ if(MAPに存在するアドレス?){ REPLYパケットを作成する。 パケットを送信する。 } } if(IPパケット?){ if(マップ内のIPからのパケット?){ A2A送信QUEに入れる。 } } B.A2A-STREAM受信処理 受信したSTREAMより送信元を特定する。 IPヘッダのソースアドレスをMAP上のIPアドレスに書き換える。 IPヘッダのディスティネーションアドレスを自マシンIPアドレスに書き換える。 checksumを再計算する。 IPパケットを送信する。(NICに送出する.)・・・・・・・ まだまだ、考えることがありそうだけど今日はここまで。。結構疲れた。。-------OrangeMakerホームページhttp://www4.ocn.ne.jp/~dragonoo/
2007.07.03
コメント(0)
SkyGateForFTP/SkyGateforCvsのバージョンUPをHPにリリースしました。こちらからどうぞhttp://www4.ocn.ne.jp/~dragonoo/変更点は少しUIをいじってみました。機能の変更はなし。
2007.07.01
コメント(0)
全16件 (16件中 1-16件目)
1

![]()
![]()