松本直人/ネットワークバリューコンポネンツ ニュービジネスチーム

 キャリア・グレードNATでは,膨大な数の既存インターネット・ユーザーを収容できるだけの規模が求められます。キャリア・グレードNATの配下に収容するのは,従来はグローバルIPアドレスを割り振っていたユーザーです。そのユーザーを多数収容するのですから,従来のルーターやファイアウォールとは比べ物にならないほど大量の,グローバル・アドレスとプライベート・アドレス,ポート番号の関連付けを表す「セッション」を処理できることが求められます。

 セッションを管理する際には,「NATテーブル」という情報を使います。NATテーブルは,セッションの情報を保持するデータで,キャリア・グレードNAT装置のメモリー上に置かれます。これは,パケットをNATでどのように変換するかを示す「道しるべ」と考えればいいでしょう。

32ビットOSでは管理できないメモリー量が必要

 では,NATテーブルはどのくらいのメモリーを必要とするのでしょうか。筆者が開発に携わったキャリア・グレードNAT用のソフトウエアの場合,1セッションを処理するのにだいたい130~140バイトのメモリーを消費すると試算しました(ネットワークバリューコンポネンツ調べ)。そして一つのグローバル・アドレスは,TCPとUDPそれぞれ6万5335個のポートを持ちます。仮に2048個のグローバル・アドレスを使ってNATの処理を実現しようとすると,TCPとUDPあわせて2億6800万セッション程度になります。

 この2億6800万セッションに,1セッションを処理するのに必要なメモリー量をかけると,だいたい36Gバイトのメモリーが必要になります(図1)。このメモリーを管理するには,64ビットOSが必要になります。一般的なブロードバンド・ルーターが採用している32ビットOSでは,4Gバイト以下のメモリー空間しか管理できません。このことからも,通常のNATとの差は歴然です。

図1●キャリア・グレードNATのセッション・テーブルは膨大な規模になる
図1●キャリア・グレードNATのセッション・テーブルは膨大な規模になる
この図はグローバル・アドレス2048個で使う場合。2億6800万程度のセッションを扱えるセッション・テーブルが必要になる。

 キャリア・グレードNAT(装置)の能力は,保持できるNATテーブルのサイズと,処理できるトラフィックによって決まります(図2)。もっとも,NATテーブルは常時同じ大きさである必要はありません。筆者が開発に携わったキャリア・グレードNATのソフトウエアの実装では,常に「使われているセッションの数」を扱えるだけのNATテーブルを保持するようになっています。使われなくなったセッションは,NATテーブルから廃棄される仕組みなのです。これはキャリア・グレードNATで,有限のグローバル・アドレスとポート番号を再利用するために必要な機能です。キャリア・グレードNATは,あらゆるコンピューティング資源を再利用するという考え方で構築されたシステムなのです。

図2●キャリア・グレードNAT装置の能力は,トラフィック処理能力とNATテーブルの規模で決まる
図2●キャリア・グレードNAT装置の能力は,トラフィック処理能力とNATテーブルの規模で決まる

 さて次回は,ユーザーがキャリア・グレードNAT環境に移行した際,アプリケーションの挙動にどのような変化があり,アプリケーションの設定をどう変えていくべきなのかを整理して解説します。これは,数多くのユーザーと通信事業者にとって関心が高いところでしょう。この項目について,筆者がキャリア・グレードNAT実証環境でテストした結果をご紹介します。


松本直人 (まつもと なおと)
ネットワークバリューコンポネンツ ニュービジネスチーム
1996年より特別第二種通信事業者のエンジニアとしてインターネット網整備に従事。その後システム・コンサルタント,ビジネス・コンサルタントを経て,2008年より株式会社ネットワークバリューコンポネンツにて新規ビジネス開発を担当。技術開発からビジネス構築までを一気通貫で担当する。システム延命技術の研究開発に取り組む「仮想化インフラ・オペレータズグループ(VIOPS)」発起人のひとりでもある。