MACアドレスハッシュ衝突

こんにちは、同僚。



一般的な知恵によると、生きて学びます。

最近、タイトルで説明されている現象に遭遇する機会がありました。これについては、以下で説明します。







自宅では、どんなに些細なことでも、インターネットにアクセスできます。 有線、無制限、多分高速です。 私は「ロール」ではないので、関税プランで何が起こっているのかを追跡していません。このプランでは、長い間接続していました(それでも、月額料金が適度です)。 アクセス方法はpptp vpnです(プロバイダーに敬意を表して、これは私の怠lazな状況にあります。単純なアピールで、ユーザーとホワイトIPの長期実装vlanスキームに切り替えるだけで十分です)。 人々のセグメントでは、少数、1、2人です。 かつては「ロック」する必要がありましたが、速度は明らかに限界に達していましたが、結局のところ、地元のリソースからも同様でした。 診断のための簡単なジェスチャーをスキップして、私はすぐに要点を説明します。 インターフェースで起動されたスニファーは、誰かの着信トラフィックが100mbitリンクに高速で流れていることを示しました。 それが判明したように-Vlanの隣人。 それは私の作品ではなかったので、面白くなりました。正直に言って、私は戦闘ソフトウェアを発見しませんでした。 Snifferは、パケット内のDST MACが隣接していることを示しましたが、それらは私のインターフェースにも届きました。

「スイッチがいっぱいになり、FDBがいっぱいになる」と考えられていました。 しかし、そうではありませんでした。 プロバイダーの管理者(非常に経験豊富で有能な友人)との会話により、状況が明らかになりました。 それはまったく同じことでした-MACアドレスのハッシュ関数の衝突。



私はこの現象の本質を理解しようとしました。 ご存じのように、スイッチがストアアンドフォワードモードで動作している場合、スイッチはSRC MACを学習し、今後MACデータのトラフィックは必要なポートのみを介して転送されます。 転送データベースをオーバーフローさせる攻撃はよく知られています。 多くの場合、このような場合、「スイッチがダムハブに変わります」というフレーズを聞くことができます。 実際、これは完全に正確ではありません。 デバイスがすでに学習したMACアドレスはテーブルに保存されます。理論的には、管理者がライフタイムを十分に長く設定した場合、長期間保存されます。 このようなMACアドレスへのトラフィックは、すべてのポートを通過するわけではありません。 新しいMACアドレスはルックアップテーブルに登録されず、トレーニングは行われません。MACデータについては、フラッディングが発生します。

しかし、結局のところ、学習は別の理由で起こることはありません。



よく知られているリソースnag.ruを引用しましょう。つまり、かなり古くても興味深い記事です。



nag.ru/articles/reviews/15587/raz-tablitsa-dva-tablitsa.html



" 次に、Adress Resolve LookUpなどのテーブルは、ポピー自体ではなく、ハッシュ(ビットマップ)を格納します。ハッシュは、ポピー(全体)からのみ、またはポピー+ VLAN IDからのみ作成できます。ポピーアドレスのみを想定して、48ビットのハッシュがなくても、たとえば40ビットのMACアドレスと8ビットのVLAN IDがある場合、スイッチにVLANサポートを追加できます。



状況はより明確になっています。 いくつかの異なるMAC(またはMAC + vlan)ハッシュ(ビットマップ)が一致(衝突)する場合...? そして実際に何になるのでしょうか? FDBに2つのレコードが表示される場合、1つだけになります。 正直なところ、書き換えがあるか古い行が保存されるかはわかりませんが、いずれにしてもブロードキャスト効果はありません。 1つのMAC(不運な)のトラフィックは、別の無関係なポートを通過します。



Googleの実装により、forum.nag.ruで多くのトピックが得られ、FDBがいっぱいではない場合に一部のMACが学習に失敗したと訴えています。



forum.nag.ru/forum/index.php?showtopic=52882



forum.nag.ru/forum/index.php?showtopic=58022



forum.nag.ru/forum/index.php?showtopic=58532



「弱いハッシュ関数」と「衝突」という用語は同じ場所で聞こえました。 しかし、まだ何が起きているのか、結果として学習と洪水が起こるのはなぜですか?



答えは、シスコのドキュメント、すなわち



www.cisco.com/en/US/prod/collat​​eral/switches/ps5718/ps708/white_paper_c11-663636.html#wp9000182



画像



物理アドレスの保存と後続の検索に使用されるメモリはページ分割されます。 MACが折りたたまれるハッシュ関数は、このページの数とアドレス、つまりこのテーブルのインデックスを格納するページ内の行を決定します。 理想的なハッシュ関数は、入力引数に一意の値を提供します。 しかし、理想に近い関数は、出力に高いビット数を持ち、テーブルが非常に大きくなり、関数は非常に複雑になり、(おそらく?)比較的遅くなります。 つまり、合理的な妥協が必要です。 Tsiskaの主張:



" PFC4およびDFC4で使用されるハッシュ関数は99%の効率です。つまり、システムは少なくともMACアドレステーブルの99%を取り込むことができます(衝突がない場合、システムはMACアドレステーブルの100%を取り込むことができます)



さらに:



衝突が発生し、MACアドレスを学習できない場合、システムはハードウェアでフラッディングします(図1のステップ3を参照)。 レイヤー2の操作はすべてハードウェアベースであるため、この場合はCPUへの影響はありません。



のようです。 「ハードウェアの洪水」。



このようなことは、LANでの私の事例を(技術的な詳細の意味で)自分に説明しました。



nag.ruで説明されている方法に従って、アクセスレベルデバイスをテストしました(s2960、at8326、at8550)-問題はありませんでした。テーブルは100%詰まりました。



誰かがこのトピックについてもっと知っているなら、コメントを共有してください。



UPD:記憶のために、トピックforum.dlink.ru/viewtopic.php?f=2&t=123334&sid=21a5f96978673427f2ac8b84fb91d045のディスカッションへのリンク



All Articles