パケットちゃんと届いてるのかよ調査

uIPがパケットを受信した直後(パケットのdrop判断をする前)にTCPパケットをlogprintでdumpするようにした。


logprintfはserial portに出力するのでQEMUを --serial file:serial.logと起動してみたがだめだった。
id:Yamami:20050516#p1のように、vl.cに直接fprintfを埋め込んだ方がはやそうな気がしてきた。

追記:
実験調査してみました。
コードは変えてないのですが前回と微妙に結果が違います。

Monaプロトコルスタックが受け取ったパケット

20480 to 260:len=  44 ACK SYN seqno=9bee975e ackno=000000b5
20480 to 260:len=  40 ACK     seqno=9bee975f ackno=000000b5
20480 to 260:len= 240 ACK     seqno=9bee975f ackno=000000de
20480 to 260:len=1486 ACK     seqno=9bee9827 ackno=000000de
20480 to 260:len=  43 ACK     seqno=9bee9dcd ackno=000000de
20480 to 260:len=1486 ACK     seqno=9bee9dd0 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9bee9827 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9bee9dcd ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beea373 ackno=000000de
20480 to 260:len= 766 ACK     seqno=9beea919 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9bee9dd0 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beea376 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beea91c ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beeaec2 ackno=000000de
20480 to 260:len=  42 ACK     seqno=9beea376 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beeb468 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beeba0e ackno=000000de
20480 to 260:len=1005 ACK     seqno=9beebfb4 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beec379 ackno=000000de
20480 to 260:len= 874 ACK     seqno=9beec91f ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beecc61 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beed207 ackno=000000de
20480 to 260:len= 411 ACK     seqno=9beed7ad ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beed920 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beedec6 ackno=000000de
20480 to 260:len= 158 ACK     seqno=9beee46c ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beee4e2 ackno=000000de
20480 to 260:len= 373 ACK     seqno=9beeea88 ackno=000000de
20480 to 260:len=1486 ACK     seqno=9beeebd5 ackno=000000de
20480 to 260:len= 187 ACK     seqno=9beef17b ackno=000000de

Etherealが受け取ったパケット

Ethereal形式のdump

相違点

Etherealが後半に受信した4パケットが受信されていない。

問題点・疑問点

  • 4パケット分がどこで消失したか?(QEMU内か?タイムアウト?)
  • やはり途中でちぐはぐな送受信が見え隠れするので、プロトコルスタックの後半部でパケットが捨てられていないか調べる必要がある。

今後はこの2つを調べます。