Yamanashi Internet Original PF Engine Algorithm & Simulator

PF (Packet Filtering) 実装のアルゴリズム 解説
アルゴリズムは、FreeBSD (PF)もLinux (nftables)も同じです

「新しいスパム(Y)のIPアドレスが、すでにリスト(X)に登録されているもの(X(n))と一致しなければ、リストに登録し、本日のスパムカウント(Z)を1増やす」というロジックを示しています。

このアルゴリズムを元にPF(Packet Filtering)処理が加えられています。およそ、8ms~40msで処理されています。
PF処理はL3層で行われますから、L7層に影響がありません。

Algorithm Notation

if Y ∉ X then {
    X ← X ∪ {Y}
    Z ← Z + 1
}

1 ホワイトリスト(信頼できるIP)の除外ロジック

if Y ∉ W then (
    if Y ∉ X then {
        X ← X ∪ {Y}
        Z ← Z + 1
    }
)

2 レートリミット(単位時間あたりのアクセス制限)

「あるIP Yの過去1分間のアクセス回数 N(Y) が、許容しきい値 M(例: 5回 ※テスト用)を超えたら、スパムリスト X に登録する」というロジックです。

【アルゴリズム表記】

if N(Y) > M then {
    X ← X ∪ {Y}
    Z ← Z + 1
}

3 有効期限による古いスパムIPの自動削除(無罪放免釈放)

「現在の時刻 Tnow が、そのIPが登録された時刻 Treg(Y) に有効期間 ΔT を足した時間を過ぎていたら、リスト X から削除する」というロジックです。

【アルゴリズム表記】

if Tnow > Treg(Y) + ΔT then X ← X \ {Y}

インタラクティブ・シミュレーター

上記すべてのアルゴリズムが統合された、ブラウザ上で動くリアルタイムシミュレーターです。
実入力処理・検閲とマッチング処理・DB処理・PF出力処理なしのシミュレーションです。

1. パケット送信・操作


2. エンジン内部ステータス

本日のスパムカウント (Z): 0

現在の仮想時刻 (Tnow): 0 秒

スパムリスト (X) Blacklist

  • なし

ホワイトリスト (W) Whitelist

  • なし

1分間アクセス数カウンター (N)

  • データなし

3. 処理ログ (L3レイヤー・PF処理時間: 8ms〜40ms疑似表示)

システム起動完了。PFエンジン稼働中...