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

 あまり意識することはないかもしれませんが,みなさんがWebサイトを閲覧するときの通信はTCP/IPで行われています。TCPのポートで通信するアプリケーションを識別するのです。TCPポートは,IPアドレス一つあたり0から65535番まであります。この数はUDPも同じです。そしてキャリア・グレードNATでは,この「数に限りがあるポート」を複数ユーザーで共用します。

 では,ユーザーのパソコンにインストールしたアプリケーション(Webブラウザやメール・ソフトなど)が,どのくらいの数のポートを使うか,あるいはどのようにポートを使うセッションを確立するかは,アプリケーションごとにまちまちです。ここでは,Webブラウザを例に見ていくことにしましょう。

 WEBブラウザは,多量のポートを使用して同時にいくつものセッションを張ります。ヤフーのトップページを表示させることや,Googleマップで地図を描画するだけでも,各々60程度のセッションを用いてパソコンが通信を行います。つまり,ユーザーがある一つのWebサイトだけを見ている場合でも,Webブラウザは1度に複数のTCPセッションを張ります。そしてキャリア・グレードNATのグローバル・アドレス側のポートも,ブラウザが張ったセッションの数だけ消費されます(図1)。

図1●一つのWebサイトを閲覧するだけでもキャリア・グレードNATのポートを複数消費する
図1●一つのWebサイトを閲覧するだけでもキャリア・グレードNATのポートを複数消費する

 当然,ユーザーは複数のブラウザ・ウィンドウを開いて使うこともあります。その場合はそれだけ多くのセッションが同時に張られ,その数だけポートが使われます。

 みなさんの中には,「キャリア・グレードNATでは,WEBページの閲覧に問題が出る可能性がある」という話を聞いたことがある方がいるかもしれません。これは,ユーザー一人あたりが使えるポート数の上限値が,利用者が実際に使っている数より少なめに設定された場合に起こるのです。つまりプロバイダが,ユーザー一人あたりが使えるポートの数に余裕を持たせてキャリア・グレードNAT装置を設定すれば,この問題は回避できます。

アプリケーションや通信方法によって消費ポート数は異なる

 インターネットにつながるアプリケーションがすべて,Webブラウザと同じようにポートを使うわけではありません。

 例えば,一つのセッションでメッセージをやりとりするメールの送受信は,Webとはポートの使い方が異なります。

 P2P(peer to peer)で通信するアプリケーションの一部には,「フルコーンNAT」を使って通信するものがあります。フルコーンNATを使うと,一度開いたグローバル・アドレス側のポート番号一つを使って,一対多の通信が可能になります。フルコーンNATを使えるアプリケーションの場合,キャリア・グレードNATで消費するグローバル・アドレス側のポート数は少なくて済みます。

 ではキャリア・グレードNATにおいて,ユーザー一人あたりが同時に使えるポート数は,最低いくつあればいいのでしょうか?

 図2に示したグラフは,キャリア・グレードNATにおけるテスト・ユーザー1人の利用ポート数の経緯を追ったものです。WEBブラウザを使って,グーグルやヤフーでのWeb検索,ニコニコ動画とYouTubeでの動画視聴,さらにP2Pファイル交換ソフトという順番で,Webサイトへのアクセスやアプリケーションの利用を実施して,利用ポート数の増減を確認したものです。

図2●キャリア・グレードNAT環境でユーザーが利用するキャリア・グレードNATのポート数
図2●キャリア・グレードNAT環境でユーザーが利用するキャリア・グレードNATのポート数
Webサイトを利用して検索と動画視聴をしたあと,P2Pアプリケーションを利用した際の経緯を示した。

 黄色の線で表されている数は,利用ポートがその数の分だけ足されたこと示します。緑色の線で表されている数は,利用ポートがその数の分だけ引かれた(削除された)ことを示します。P2Pアプリケーションを使ったときには,消費するポートの数が一気に250個ほど増えました。これは,テストに使ったP2Pアプリケーションが大量の送信元ポートを変えて接続を試みる通信を行ったことによるものです。

 このグラフから,キャリア・グレードNATにおいて,ユーザー1人あたりに割り当てるポートの数は200~300といった数では足りないことがわかります。

 筆者は,キャリア・グレードNATにおいてユーザー1人あたりに割り当てるポート数は1万程度にするのが適切だろうと考えます。多くの家庭にあるブロードバンド・ルーターが持つNAT機能の同時セッション数は2048~4096です。そして企業向けブロードバンド・ルーターであれば,同時セッションは1万以上あります。こうした現状の数を維持することを考慮して,ユーザー一人あたりが使用する同時セッションの最大値を1万と設定しておけば,ポート数の上限を使い切ってアプリケーションが通信できなくなるケースはほとんどないでしょう。

 これを踏まえて,キャリア・グレードNATのグローバル・アドレス一つを何ユーザーで共有するかですが,筆者は4~5ユーザーが適当だと考えます。先ほど説明した通り,1ユーザーあたりのポート数を1万とします。かつTCP/UDPポートには,用途が決まっているものやポート・スキャンなど攻撃に使われるものがありますので,そこは除外して考えます。そうすると,4~5ユーザーに落ち着きます。


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