「A10 CGN 設計」の版間の差分

提供:hkatou_Lab
ナビゲーションに移動 検索に移動
編集の要約なし
14行目: 14行目:
例えばルーティング テーブルは物理筐体別に持っており、筺体 (device-context) ごとにルーティング テーブルを設定します。
例えばルーティング テーブルは物理筐体別に持っており、筺体 (device-context) ごとにルーティング テーブルを設定します。


* Cisco Catalyst のように物理筺体 2 台で 1 つのルーティングテーブルを構成する、といった動作は行いません
* Cisco Catalyst StackWise のように、物理筺体 2 台で 1 つのルーティングテーブルを構成する、といった動作は行いません


== Harmony Controller ==
== Harmony Controller ==
51行目: 51行目:
今後は Scaleout という機能で、台数が多い割には設定が簡素化できるようになるようです。
今後は Scaleout という機能で、台数が多い割には設定が簡素化できるようになるようです。


ISP の CGN ではまだ事例が少ないようです。
切替時の断時間に課題があるらしく、ISP の CGN ではまだ事例が少ないようです。


== LAG ==
== LAG ==
A10 は Sun Microsystems / Brocade と同様に、LAG は trunk と呼称するため注意が必要です。
A10 はかつての Sun Microsystems / Brocade と同様に、'''LAG は trunk と呼称する'''ため注意が必要です。


Cisco で言う dot1q tag はコンフィグ上で tagging と表記されます。
Cisco の言う trunk である dot1q tag は、A10 のコンフィグ上では tagging と表記されます。


=== LACP ===
=== マルチシャーシ LAG ===
2025 年現在、A10 はマルチシャーシ LAG は対応しません。
2025 年現在、A10 はマルチシャーシ LAG は対応しません。
A10 でルーティング冗長を取るのはコンフィグが複雑なため、対向側のスイッチでマルチシャーシ LAG を設定して冗長をとるのがおすすめです。
* A10 はシャーシごとにルーティング テーブルを保持するため、冗長切替時はクラスタ全台のルーティング テーブルを確認する必要が出てくる
* LAG であればリンクが片系に縮退することを確認すればよく、帯域幅に気をつければ問題ない


= サイジング =
= サイジング =
83行目: 88行目:
なお、A10 では TCP / UDP / ICMP ごとにポートが別々に存在します。
なお、A10 では TCP / UDP / ICMP ごとにポートが別々に存在します。


サイジングは後述の総務省の手順書 Vol.1  が詳しいため、要参照。
サイジングは後述の[https://www.soumu.go.jp/main_content/000240919.pdf 総務省の手順書 Vol.1] が詳しいため、要参照。


== NAT プールカウント ==
== NAT プールカウント ==
206行目: 211行目:


=== PS (Provider Shared) アドレス ===
=== PS (Provider Shared) アドレス ===
CGN では主に 100.64.0.0/10 のプロバイダ シェアード アドレスを使用します。
LAN 側の現状に合わせて、適切なサブネットに分割して使用します。


= ルーティング・L3SW 設計 =
= ルーティング・L3SW 設計 =
[[ファイル:CGN Traffic Isolation.png|なし|フレーム|CGN Traffic Isolation]]
[[ファイル:CGN Traffic Isolation.png|なし|フレーム|CGN Traffic Isolation]]


== PBR + スタティック ルーティング ==
== 上り PBR + 下りスタティック ルーティング ==
筆者が導入した方式です。
 
* 送信元 100.64.0.0/10 に該当するトラフィックを PBR で CGN に転送する
 
というポリシーで送信元アドレスを元にした、ポリシー ベース ルーティングを行います。
 
下りトラフィックは CGN のグローバル IP プールに対してスタティック ルートを設定します。


== VRF ==
== VRF ==

2026年1月20日 (火) 09:54時点における版

このページでは主に以下の設計について扱います。

  • ISP 向け A10 Thunder CGN 物理アプライアンスの設計
  • NAT44 の設計

統合管理

aVCS (Virtual Chassis Cluster)

A10 aVCS

複数の物理筐体のコンフィグを統合し、1 つの running-config で設定することができます。

設定自体は筐体個別に動作しているため、aVCS アクティブ機で各筐体の設定を吸い上げて管理しています。

例えばルーティング テーブルは物理筐体別に持っており、筺体 (device-context) ごとにルーティング テーブルを設定します。

  • Cisco Catalyst StackWise のように、物理筺体 2 台で 1 つのルーティングテーブルを構成する、といった動作は行いません

Harmony Controller

A10 ADC , SSLi , CFW , CGN を統合管理するソフトウェアです。

aVCS は同一拠点内の機器を統合管理しますが、Harmony Contoroller は複数拠点を管理するのが一般的と考えられます。

ここでは扱いません。

冗長化

複数の冗長化方式/プロトコルで物理筺体の冗長化を行えます。

ACOS 2.x で使用できた HA (High Availability) は、ACOS 4.x 以降で使用できなくなっているため、ここでは扱いません。

VRRP-a

FHRP の VRRP を A10 が拡張して作成した、独自プロトコル [1] です。

動作はかなり異なるため別物として認識して、メーカーのコンフィギュレーション ガイドをよく読んで設定する必要があります。

大まかには以下の動作を行います。

  • VIP を持つ Vlan では Hello を送信せず、Master / Slave を選出しない
  • セッション同期 Vlan 経由で、NAT などのセッション情報を筺体間で同期して、Active / Standby を選出する
  • 8 台まで冗長化が可能で、Active / Standby を複数持たせて入れ子とすることで、マルチ Active の N+1 構成を取ることが可能
    • 例) VRID1 : #1 Active / #2 Standby + VRID2 : #1 Standby / #2 Active

将来的に N+1 構成を取る場合、コンフィギュレーションはあらかじめ最大構成を考慮して設計すると、増設時に再設計せずにすみます。

Scaleout

VRRP-a は台数が増えるにしたがって、コンフィギュレーションが複雑化します。

今後は Scaleout という機能で、台数が多い割には設定が簡素化できるようになるようです。

切替時の断時間に課題があるらしく、ISP の CGN ではまだ事例が少ないようです。

LAG

A10 はかつての Sun Microsystems / Brocade と同様に、LAG は trunk と呼称するため注意が必要です。

Cisco の言う trunk である dot1q tag は、A10 のコンフィグ上では tagging と表記されます。

マルチシャーシ LAG

2025 年現在、A10 はマルチシャーシ LAG は対応しません。

A10 でルーティング冗長を取るのはコンフィグが複雑なため、対向側のスイッチでマルチシャーシ LAG を設定して冗長をとるのがおすすめです。

  • A10 はシャーシごとにルーティング テーブルを保持するため、冗長切替時はクラスタ全台のルーティング テーブルを確認する必要が出てくる
  • LAG であればリンクが片系に縮退することを確認すればよく、帯域幅に気をつければ問題ない

サイジング

WAN 回線や AS に割り当てられる グローバル IP アドレスから、CGN に使用できるグローバル IP アドレス プールを決めます。

NAT 対象としたいユーザ数を確認し、1 ユーザに割り当てるポート数を制限することで、サイジングを行います。

  • ポート数が多い = ユーザは多数のアプリケーションを使用できるが、グローバル IP の消費が多い
  • ポート数が少ない = ユーザは同時に少数のアプリケーションしか使用できないが、グローバル IP の消費を節約できる

サイジング例

1 グローバル IP アドレスあたりのポート数は、一般的に以下を使用します。

  • 65535 ポート - ウェルノウンポート 1-1023 番 = 1024-65535 = 約 64000 ポート

1 ユーザに 1000 ポートのクォータを割り当てた場合、

  • 64000 ポート / 1000 ポート(1ユーザ) = 64 ユーザ

1 つのグローバル アドレスで 64 ユーザを収容することが可能です。


なお、A10 では TCP / UDP / ICMP ごとにポートが別々に存在します。

サイジングは後述の総務省の手順書 Vol.1 が詳しいため、要参照。

NAT プールカウント

デフォルトではプールアドレスの数が少ないため、通常はもっと大きい値に変更します。

For example to adjust the resource allocations, use the following CLI:
ACOS(config)# cgnv6 resource-usage lsn-nat-addr-count 513
ACOS(config)#system resource-usage l4-session-count 4194302

ユーザ クオータ

A10 では送信元ポートの数によりユーザ クオータ数が消費されます。

ISP では 1% のユーザが非常に多くのポートや 50% の帯域幅を消費しようとする傾向 [2] があるため、

ポート数

  • quota : 1 ユーザが使用できる最大ポート数を設定可能
    • リザーブオプションがない場合、このポート数が必ず消費される (=reserve と同一の効果) [3]
  • reserve : リザーブで必ず確保されるポート数を定義可能
    • リザーブオプションがある場合、必ず消費されるポートがリザーブの値に減少する [4]
For example:
ACOS(config)#cgnv6 lsn-lid 1
ACOS(config-lsn-lid)#user-quota tcp 1000 reserve 100

セッション数

A10 のセッション数は宛先ポート番号が異なる場合に、別のセッションが生成されます。

送信元ポートが 1 つ (=クォータ 1 つ) で多数の宛先ポートを使用するアプリケーションがある場合、クオータの消費は少ないが、セッション数が多いユーザとなる場合があります。

  • 例) P2P アプリケーション

筐体のセッション数の不足が懸念される場合は、ユーザごとのセッション数を制限し、過剰にセッション数を消費させないようにします。

Use the following CLI to set a total session limit:
ACOS(config)#cgnv6 lsn-lid 1
ACOS(config-lsn-lid)#user-quota session 5000

NAT 機能

フルコーン NAT

EIM と EIF の両方が満たされる場合、フルコーン NAT となる。

ウェルノウン ポートである 1-1023 番ポートについては、サーバ・クライアント型通信のため、無効にするのが一般的。[5]

EIM (Endpoint Independent Mapping)

EIF (Endpoint Independent Filtering)

ヘアピン NAT

CGN 配下のユーザ間で、NAT されたグローバル IP 間の P2P 型通信が発生したときに、CGN で折り返して通信ができる機能。

無効だとオンライン対戦ゲームなどができないため、有効にする。

ALG (Application Layer Gateway)

IP のレイヤ 7 ペイロードに IP アドレスが埋め込まれているアプリケーションに対しても、NAT する機能。

CPU で実行されるため、あまりに多いパケット数だと CPU リソースを浪費してしまう。

FTP や IPsec などではアプリケーション側で回避できる [6] ため、無効化でも良い。

ポート割当手法

動的割り当て

PBA

静的割り当て

セッションタイムアウト

A10 CGN の NAT セッション タイムアウトは、基本的にデフォルトで 300 秒となっている。

  • タイムアウト値が短い = NAT セッションが残りづらい
    • メリット : セッション数に余裕が出る
    • デメリット : アプリケーションやサービスによって、セッション断とされてユーザ体験が低下する可能性がある
  • タイムアウト値が長い = NAT セッションがしばらく残る
    • メリット : アプリケーションやサービスのセッション断が起きにくくなる
    • デメリット : セッション数に余裕がなくなる

TCP

TCP は FIN で TCP セッションがクローズされるため、CGN でも FIN を認識して NAT セッションのエントリを削除 [7] する。

UDP

タイムアウト値を経過すると、NAT セッションのエントリを削除する。

ICMP

ICMP リプライを受信すると、NAT セッションのエントリを削除する。

例外的にデフォルトは fast として 2 秒となっている。

DNS

DNS は非常にクエリ数が多く、セッションを保持する必要性が薄いため、A10 では DNS クエリ レスポンスが受信されると、早急に削除 [8] される。

IP アドレッシング

PS (Provider Shared) アドレス

CGN では主に 100.64.0.0/10 のプロバイダ シェアード アドレスを使用します。

LAN 側の現状に合わせて、適切なサブネットに分割して使用します。

ルーティング・L3SW 設計

CGN Traffic Isolation

上り PBR + 下りスタティック ルーティング

筆者が導入した方式です。

  • 送信元 100.64.0.0/10 に該当するトラフィックを PBR で CGN に転送する

というポリシーで送信元アドレスを元にした、ポリシー ベース ルーティングを行います。

下りトラフィックは CGN のグローバル IP プールに対してスタティック ルートを設定します。

VRF

NAT セッションログ設計

Abuse 対応

移行設計

ユーザ IP の変更

検証ツール

L4 をイジメられるソフトウェアが必要。筆者が使用したことがあるのは、以下です。

  • IXIA
  • Cisco Trex
  • Nping

落とし穴

ユーザログイン情報が show run に保存されない

リファレンス

太字のドキュメントを最初に読んでおけば、全体像が把握でき、大体の疑問は解決できる or とっかかりを得られると思われる。

A10

運用の簡素化と 柔軟なパフォーマンス確保を同時に実現する AXのaVCS™機能

LARGE SCALE NETWORK ADDRESS TRANSLATION HOW TO CONFIGURE LARGE SCALE NAT (LSN) ON A10 THUNDER/VTHUNDER CGN DEVICES

A10 ネットワークス 総合カタログ

A10ネットワークス Thunderシリーズ ハンズオントレーニング

テクログ|A10ネットワークスのスケールアウト技術

総務省

IPv4 アドレスの枯渇時に生じる諸課題に 適切に対処するための手順書 (Vol.1)

  • ACOS 2.x の頃のコンフィギュレーションは、現在の ACOS 4.x 以降など新しい OS Ver だと変更が必要な点に注意
    • ip nat -> cgnv6
    • ha -> vrrp-a
    • system resource-usage -> cgnv6 resource-usage

IPv4 アドレスの枯渇時に生じる諸課題に 適切に対処するための手順書 (Vol.2)

RFC

RFC1918 プライベート網のアドレス割当

RFC6056 - Recommendations for Transport-Protocol Port Randomization 日本語訳

RFC6302 - Logging Recommendations for Internet-Facing Servers 日本語訳

RFC6598 - IANA-Reserved IPv4 Prefix for Shared Address Space 日本語訳

引用

  1. ↑ HOW TO CONFIGURE LARGE SCALE NAT (LSN) ON A10 THUNDER/VTHUNDER CGN DEVICES VRRP-A CONFIGURATION Virtual Router Redundancy Protocol-A10 (VRRP-A) is an A10 Networks proprietary technology that enhances a High Availability (HA) implementation and is used to implement multiple system redundancy.
  2. ↑ 帯域制御の運用基準に関するガイドライン (改定) 平成 19 年頃には、全体の約1%のユーザが P2P ファイル交換ソフト3の利用に よりバックボーン帯域の約 50%を消費しているという調査結果(資料3)が出 される
  3. ↑ HOW TO CONFIGURE LARGE SCALE NAT (LSN) ON A10 THUNDER/VTHUNDER CGN DEVICES USER QUOTAS When an Internal user initiates a session, the entire quota value is allocated to that user.
  4. ↑ HOW TO CONFIGURE LARGE SCALE NAT (LSN) ON A10 THUNDER/VTHUNDER CGN DEVICES USER QUOTAS To alleviate this issue, the operator may choose to reserve a subset of the total quota to a protocol, guaranteeing that subset and freeing the remainder of the ports to be used by another client.
  5. ↑ IPv4 アドレスの枯渇時に生じる諸課題に 適切に対処するための手順書 (Vol.1) (5)EIM/EIF(Full Cone)設計 今回検証した機器では、0-1023 の well known port については EIM/EIF が disable にされていたが、well known port では主にサーバ-クライアント型の通信のた め、問題ないと考えられる。
  6. ↑ IPv4 アドレスの枯渇時に生じる諸課題に 適切に対処するための手順書 (Vol.1) (7)ALG 設計 - アプリケーション側の対応によって解決可能なもの(FTP passive mode, IPsec NAT traversal, TURN など) - セキュリティ上脆弱性の発見されたプロトコル(PPTP) については必ずしも有効化の必要はないと思われる。
  7. ↑ HOW TO CONFIGURE LARGE SCALE NAT (LSN) ON A10 THUNDER/VTHUNDER CGN DEVICES NAT SESSION TIMEOUT For a TCP session, the data session is removed when the Thunder CGN device observes that FIN or RST messages are exchanged by the two endpoints of the session.
  8. ↑ HOW TO CONFIGURE LARGE SCALE NAT (LSN) ON A10 THUNDER/VTHUNDER CGN DEVICES NAT SESSION TIMEOUT Note: DNS defaults to a timeout of fast (3 seconds in this case).