A10 CGN 設計
このページでは主に以下の設計について扱います。
- ISP 向け A10 Thunder CGN 物理アプライアンスの設計
- NAT44 の設計
統合管理
aVCS (Virtual Chassis Cluster)

複数の物理筐体のコンフィグを統合し、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] があるため、クオータで制限をかけてグローバル IP プールを過剰消費されないようにします。
ポート数
A10 は UDP / TCP / ICMP ごとにポート数をクオータで制限できます。
- quota : 1 ユーザが使用できる最大ポート数を設定可能
- リザーブオプションがない場合、このポート数が必ず消費される (=reserve と同一の効果) [3]
- reserve : リザーブで必ず確保されるポート数を定義可能
- リザーブオプションがある場合、必ず消費されるポートがリザーブの値に減少する [4]
- reserve 設定時の quota 側の値は、他ユーザと共有しベストエフォートで使用可能
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] ため、無効化でも良い。
DNS
A10 CGN ではデフォルトで DNS も ALG が動作しており、DNS クエリのリプライを受信すると、即座に NAT エントリが削除されます。
また、リプライが受信されない場合でも、fast aging により 3 秒で削除されます。 [7]
これは以下の理由に基づきます。
- DNS キャッシュサーバのクエリ数は一般的に多く、NAT セッションを過剰に消費してしまい、CGN の性能に影響がある [8]
- DNS キャッシュサーバのクエリは、外部が初発となるクエリを受ける必要がない
- NAT 対象なので、プライベートアドレスが DNS キャッシュサーバに割り当てられている
ポート割当手法
動的割り当て
PBA
静的割り当て
セッションタイムアウト
A10 CGN の NAT セッション タイムアウトは、基本的にデフォルトで 300 秒となっている。
- タイムアウト値が短い = NAT セッションが残りづらい
- メリット : セッション数に余裕が出る
- デメリット : アプリケーションやサービスによって、セッション断とされてユーザ体験が低下する可能性がある
- タイムアウト値が長い = NAT セッションがしばらく残る
- メリット : アプリケーションやサービスのセッション断が起きにくくなる
- デメリット : セッション数に余裕がなくなる
TCP
TCP は FIN で TCP セッションがクローズされるため、CGN でも FIN を認識して NAT セッションのエントリを削除 [9] する。
UDP
タイムアウト値を経過すると、NAT セッションのエントリを削除する。
ICMP
ICMP リプライを受信すると、NAT セッションのエントリを削除する。
例外的にデフォルトは fast として 2 秒となっている。
DNS
DNS は非常にクエリ数が多く、セッションを保持する必要性が薄いため、A10 では DNS クエリ レスポンスが受信されると、早急に削除 [10] される。
IP アドレッシング
CGN では主に 100.64.0.0/10 のプロバイダ シェアード アドレスを使用します。
LAN 側の現状に合わせて、適切なサブネットに分割して使用します。
このページではプライベート アドレスの一部に含むものとして扱っています。
ルーティング・L3SW 設計

上り 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™機能
A10ネットワークス Thunderシリーズ ハンズオントレーニング
総務省
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)
NTT コミュニケーションズ
PBR と VRF , サイジングについての検証の情報あり。機種がかなり古い点には注意が必要。
IPv4アドレス共有技術設計⽅法とネット ワークデザイン上の注意
平成24年度 IPv4アドレスの枯渇に伴う情報セキュリティ等の課題へ の対応に関する実証実験の請負 結果報告 (IPv4アドレス共有技術導入に係る諸課題とその対策)
RFC
RFC6056 - Recommendations for Transport-Protocol Port Randomization 日本語訳
RFC6302 - Logging Recommendations for Internet-Facing Servers 日本語訳
RFC6598 - IANA-Reserved IPv4 Prefix for Shared Address Space 日本語訳
引用
- ↑ 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.
- ↑ 帯域制御の運用基準に関するガイドライン (改定) 平成 19 年頃には、全体の約1%のユーザが P2P ファイル交換ソフト3の利用に よりバックボーン帯域の約 50%を消費しているという調査結果(資料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.
- ↑ 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.
- ↑ IPv4 アドレスの枯渇時に生じる諸課題に 適切に対処するための手順書 (Vol.1) (5)EIM/EIF(Full Cone)設計 今回検証した機器では、0-1023 の well known port については EIM/EIF が disable にされていたが、well known port では主にサーバ-クライアント型の通信のた め、問題ないと考えられる。
- ↑ IPv4 アドレスの枯渇時に生じる諸課題に 適切に対処するための手順書 (Vol.1) (7)ALG 設計 - アプリケーション側の対応によって解決可能なもの(FTP passive mode, IPsec NAT traversal, TURN など) - セキュリティ上脆弱性の発見されたプロトコル(PPTP) については必ずしも有効化の必要はないと思われる。
- ↑ HOW TO CONFIGURE LARGE SCALE NAT (LSN) ON A10 THUNDER/VTHUNDER CGN DEVICES CGN TIMEOUTS Note: DNS defaults to a timeout of fast (3 seconds in this case).
- ↑ IPv4 アドレスの枯渇時に生じる諸課題に 適切に対処するための手順書 (Vol.2) 2.4.3 NAT タイムアウトに関する設定 UDP は TCP と異なり、FIN や RST などのセッションの終了を通知する仕組みがないため、必ず一定時間 NAT テーブルを保持しなければならない。 特に、DNS トラフィックは通信ごとに発生するため、DNS パケットのタイムアウト値が長いと CGN の性能に影響を与えてしまうことが検証で実証されている。 それに対する対策として、DNS 通信については、ポート番号(UDP/53)に基づいてタイムアウト値小さくすることで性能への影響を抑えられることが実証された。 また、DNS パケットについてのみ応答を見て NAT テーブルをクリアする CGN 機器も存在し、タイムアウト値を小さくする対策と同様に CGN の性能への影響を少なくできることが確認された。
- ↑ 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.
- ↑ 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).