スイッチ ACL の詳細

ネットワーク デバイス上の ACL (アクセス コントロール リスト) は、ハードウェアとソフトウェアの両方で実装できます。より一般的に言えば、ハードウェア ベースとソフトウェア ベースの ACL です。 そして、ソフトウェア ベースの ACL ですべてが明確になる必要がある場合、これらは RAM (つまり、コントロール プレーン上) に保存され、処理されるルールであり、それに伴うすべての制限がある場合、ハードウェア ベースの ACL がどのように実装され、機能するかを理解できるようになります。記事。 例として、Extreme Networks の ExtremeSwitching シリーズのスイッチを使用します。

スイッチ ACL の詳細

私たちはハードウェアベースの ACL に興味があるため、データ プレーンの内部実装、または使用される実際のチップセット (ASIC) が私たちにとって最も重要です。 すべての Extreme Networks スイッチ ラインは Broadcom ASIC 上に構築されているため、以下の情報のほとんどは、同じ ASIC 上に実装されている市場の他のスイッチにも当てはまります。

上の図からわかるように、「ContentAware Engine」は、「イングレス」と「エグレス」に分けて、チップセット内の ACL の操作を直接担当します。 アーキテクチャ的には同じですが、「出口」だけがスケーラビリティと機能が低くなります。 物理的には、両方の「ContentAware Engine」は TCAM メモリとそれに伴うロジックであり、各ユーザーまたはシステムの ACL ルールはこのメモリに書き込まれる単純なビットマスクです。 そのため、チップセットはパフォーマンスを低下させることなくトラフィックをパケットごとに処理します。

物理的には、同じ入力/出力 TCAM が、論理的には複数のセグメント (メモリ自体の量とプラットフォームに応じて異なります)、いわゆる「ACL スライス」に分割されます。 たとえば、ラップトップ上の物理的に同じ HDD に複数の論理ドライブ (C:>、D:>) を作成すると、同じことが起こります。 各 ACL スライスは、「ルール」(ルール/ビット マスク) が書き込まれる「文字列」の形式のメモリ セルで構成されます。

スイッチ ACL の詳細
TCAM の ACL スライスへの分割には、背後に特定のロジックがあります。 個々の ACL スライスには、相互に互換性のある「ルール」のみを記述することができます。 いずれかの「ルール」が前のルールと互換性がない場合、前のルールに「ルール」の空き行が何行残っているかに関係なく、そのルールは次の ACL スライスに書き込まれます。

では、ACL ルールの互換性または非互換性はどこから来るのでしょうか? 実際、「ルール」が記述される 232 つの TCAM 「ライン」は 1 ビットの長さを持ち、いくつかのフィールド (Fixed、Field2、Field3、Field232) に分割されます。 29 ビットまたは 1 バイトの TCAM メモリは、特定の MAC アドレスまたは IP アドレスのビットマスクを記録するには十分ですが、完全なイーサネット パケット ヘッダーよりもはるかに少ないです。 個々の ACL スライスで、ASIC は F3 ~ F128 に設定されたビットマスクに従って独立したルックアップを実行します。 一般に、この検索はイーサネット ヘッダーの最初の 128 バイトを使用して実行できます。 実際には、検索は 29 バイトにわたって実行できますが、書き込むことができるのは XNUMX バイトだけであるため、正しい検索のためには、パケットの先頭を基準にしてオフセットを設定する必要があります。 各 ACL スライスのオフセットは、最初のルールが書き込まれるときに設定されます。後続のルールを書き込むときに別のオフセットの必要性が判明した場合、そのようなルールは最初のルールと互換性がないと見なされ、ACL スライスに書き込まれます。次の ACL スライス。

以下の表は、ACL で指定された条件の互換性の順序を示しています。 個々の行には、相互に互換性があり、他の行とは互換性がない、生成されたビットマスクが含まれています。

スイッチ ACL の詳細
ASIC によって処理される個々のパケットは、各 ACL スライスで並列ルックアップを実行します。 チェックは ACL スライス内の最初の一致まで実行されますが、異なる ACL スライス内の同じパケットに対して複数の一致が許可されます。 個々の「ルール」には、条件 (ビットマスク) が一致した場合に実行する必要がある対応するアクションがあります。 複数の ACL スライスで一度に一致が発生した場合、「アクション競合解決」ブロックで、ACL スライスの優先順位に基づいて、どのアクションを実行するかが決定されます。 ACL に「action」(許可/拒否)と「action-modifier」(count/QoS/log/…)の両方が含まれている場合、複数の一致がある場合は、優先度の高い「action」のみが実行され、「action」は優先順位の高い「action」だけが実行されます。 -modifier」で全て完了となります。 以下の例は、両方のカウンタがインクリメントされ、優先度の高い「拒否」が実行されることを示しています。

スイッチ ACL の詳細
『ACLソリューションガイド』 Web サイト上のパブリック ドメインでの ACL の運用に関する詳細情報 エクストリームネットワークス.com。 疑問が生じたり残った場合は、いつでも当社のオフィススタッフに質問してください - [メール保護].

出所: habr.com

コメントを追加します