Ethdelayに機能追加:パケット入れ替え
先日ブログで書きましたが、Ethdelay・EthdelayProにジッター機能を追加しました。しかし、パケットの入れ替えには対応していなかったのですが、
「残念ながらEthdelayではパケットの順序の逆転は対応していないので、大きな遅延の後に小さな遅延となっても逆転はせずに、大きな遅延パケットの後にすぐに小さな遅延パケットが流れる感じになりますが、それでも完全に固定の遅延よりは現実に近いシミュレーションができることになります。」
今日は少し時間が空いたので、対応してみました。
メンバーから「こうすれば速度に影響を出さずに実現できるのでは?」というアドバイスを先日もらっていたので、その方式で組み込んだところ、まあ、多少データ構造関連で頭の体操をしたくらいで実現できました。従来は片方向連結木構造だったのを、双方向連結木構造に変更してすんなり実現できました。
これでかなり幅広いシミュレーションができるようになります!後はメンバーがユーザインターフェースを作ってくれればリリース可能と言うことで、来週くらいにはリリースしたいところです。
実際にパケットが入れ替わっているのを感じるのは意外と難しく、pingなんかですと送信間隔が1秒くらいなので、まず入れ替わりません。TCPのやりとりをキャプチャで確認したり、UDPの測定用プログラムでパケット番号を見たりしないとなかなか実感できません。
とりあえずデバッグ用に、データをどこに挿入したかを表示するようにして、プログラム的にきちんと入れ替え処理を通っていることの確認と、UDPでの測定プログラムで確認したりしました。
Ethdelayもだいぶ機能が増えてきました。お客さんからいただいた要望を実現していくのはエンジニアとしてとても楽しいものです。