パケット消失調査

完全に作業ログとなっていて日記じゃない気がするけどこういう開発過程を全部見せるのがMona流ということでひとつ。

Ethereal, serial.log, QEMU.logを比べてどこでパケットが落ちているか調べる

HTTP GETした際にアプリケーション側にパケットが全て届かない現象が起きているのでその調査。
調査材料としては
Ethereal・・・NICレベルでのパケット確認が可能(一番信用できるデータ)
QEMU.log・・・QEMUが仮想NICから受け取ったパケット
serial.log・・・Mona内のプロトコルスタックが受け取ったパケット

結果は↓。
Ethereal == QEMU.log > serial.log

ほぼMona側の問題であることが確定した。

MonaからのパケットのIPヘッダのFlagmentsは0で良いか?

shadowさんから問題ないと教えてもらった。

残課題

  • MSSが1446になっているが、データサイズが安定していない
    • 調べる
  • MonaからのAckパケットに’GET / HTTP/1.0’というデータが存在する
    • 調べる
  • Mutexを利用してきちんと排他処理をする。

実験していて気になった点

QEMU内にパケットが到着してから、Mona側に受信されるまでに数秒間待たされるときがある。
原因が分からないがこれはかなり怪しい。