mones2/22.ネットワークサーバ/16.Monaのどこでパケットが消失しているか?


Top / mones2 / 22.ネットワークサーバ / 16.Monaのどこでパケットが消失しているか?

これは何か

QEMUにはパケットが届いているが、Monaのuip.cのときには既に届いていない。
ではどこで消えるか?
まずは、ドライバレベルでパケットが届いているか調べます。

NicServer.cppに値を埋め込んだところでとまっている。

調査

 previously on Mona OS
	
最近Season4見ているもので・・・(調子に乗りました)
	
前回の調査で Monaの内部でパケットが消失していることが確定した。
	
そこで今回はMonaのデバイスドライバがreadしたパケットと、uIP(プロトコルスタック)が受け取ったパケットを比べる。
比較
	
NICSERVERがデバイスドライバ、UIPがプロトコルスタックです。
	
パケットの順序はMona内の時系列順です。
	
** OK
NICSERVER:80 to 1025 ACK SYN seqno=90fc24fe ackno=0000019b
UIP      :80 to 1025 ACK SYN seqno=90fc24fe ackno=0000019b
NICSERVER:80 to 1025 ACK     seqno=90fc24ff ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc24ff ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc24ff ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc24ff ackno=000001c5
	
** NG
NICSERVER:80 to 1025 ACK     seqno=90fc2a85 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc24ff ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc24ff ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc2a85 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc2a85 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc2aa5 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc2aa5 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc302b ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc304b ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc302b ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc2aa5 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc304b ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc302b ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc2aa5 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc302b ackno=000001c5
	
* OK
NICSERVER:80 to 1025 ACK     seqno=90fc304b ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc304b ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc35d1 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc35d1 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc35f1 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc35f1 ackno=000001c5
	
* NG
NICSERVER:80 to 1025 ACK     seqno=90fc3b77 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc35d1 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc35d1 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc35f1 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc35f1 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc3b77 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc3b77 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc3b97 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc3b97 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc411d ackno=000001c5
	
* OK
NICSERVER:80 to 1025 ACK     seqno=90fc3b77 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc3b77 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc3b97 ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc3b97 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc411d ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc411d ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc413d ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc413d ackno=000001c5
	
NICSERVER:80 to 1025 ACK     seqno=90fc46c3 ackno=000001c5
NICSERVER:80 to 1025 ACK     seqno=90fc411d ackno=000001c5
UIP      :80 to 1025 ACK     seqno=90fc411d ackno=000001c5
	
	
問題
	
OKと書いているところはパケットのフローが正常だと思われるところです。
	
逆にNGと書いている部分は、seqnoを手がかりに追ってみていくとかなり怪しいです。
	
例えば1番目のNGの部分でseqnoが90fc2a85, 90fc24ffのものがありますが、NICSERVERとUIPでパケットをうけとっている順番が逆です。
なぜ逆に?
	
NICドライバは
	
    this->frameList.add(frame);
	
のように到着フレームを登録していて。
	
uIPは
	
            Ether::Frame* frame = this->frameList.removeAt(0);
	
と取り出している。
	
一見問題なさそうだが・・・。
	
以下のことを試して見た方がよさそう。
	
    * 排他をきちんとしてみる
    * 自前のコレクションクラスをSTLに置き換え
	

コメント

コメントはありません。 コメント/mones2/22.ネットワークサーバ/16.Monaのどこでパケットが消失しているか??

お名前:

MENU

now: 5

リンク


最新の20件
2018-10-07 2018-09-20 2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 1626, today: 1, yesterday: 0

添付ファイル: filehoge.png 396件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:01 (3885d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.033 sec.