見出し画像

TWRMONのすごい改善案を眠っている間に思いつく

今朝は4時半かワールドカップ「アルゼンチン対ポーランド」を観ながら開発開始です。
今週取り組んでいるRMONプローブ(TWRMON)のバグ修正ですが昨日の夜気にしながら寝たら眠っている間によいアイデアが浮かびました。
15年前に作ったものはキャプチャーしたパケットの処理でテーブルのMIB情報の元データを作ってタイマーのよる周期的な処理で有効なMIB情報を作る方法にしていました。テーブルのデータが増えてくると、どんどん遅くなっていきます。負荷も高くなっていました。ソースコードを見直すと、どうもパケットの処理で有効なMIB情報を作ることができそうです。
もう一つ昨日見つけた TimeFilterの問題を解決するアイデアも浮かびました。本来のTimeFilterの仕様ではありませんがTimeFilterの値を最初に登録した時点の値で固定にする方法です。この方法にすれば取得に時間がかかってもインデックスが変わる問題はおこりません。
久しぶりのC言語なので結構苦戦しましたが、アドレスマップだけ修正してみました。その結果、思っているような仕様になりました。
IPアドレスに対してMACアドレスが変わる(IPアドレスの重複かもしれない)状況がちゃんと検知できるようになりました。

赤い矢印のアドレスは通常のLANポートとパケットキャプチャー用のLANポートを同じセグメントに接続しているLinuxのものです。たぶんLinuxの設定を変えれば回避できそうですが、調べるのが面倒なので、このままにしておきます。
アドレスマップはうまくいったので、他のテーブルも同じ改善をしようと思います。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。