IPv6アプリケーションIAJ IPv6デプロイメント委員会 委員
目次多様化するインターネットIPv4枯渇対応やIPv6導入の留意点アプリケーション開発のIPv6対応まとめ
1.多様化するインターネット
事の発端2011年2月3日にIPv4アドレスの世界在庫が枯渇2011年4月15日にアジア太平洋の在庫が枯渇それに伴い日本で新規のIPv4アドレスの割振りも終了
ところで、IPアドレスとはIPv4アドレスはスマートフォンなども利用しますIPネットワーク(=インターネット)には必須端末を特定するのに使う。いわば「住所」数字の羅列はヒューマンフレンドリーではないので、ドメイン名が発明されたhttp://www.example.jpと入力されると、ネームサーバを検索して、203.0.113.1に変換して通信今はドメイン名さえ使わないで、「検索」ちゃんとコンピュータプログラムはIPアドレスを使っていますネットワークが広がるとどんどん消費されます198.51.100.1mail.example.net192.0.2.1Pc1.example.com203.0.113.1www.exmaple.jp192.0.2.250Pc2.exmaple.com
IPアドレスとアプリケーションの関係ネットワークを利用するアプリケーションには、IPアドレスを扱うコードが潜んでいます途中で分類が変わることもある。インターネットが普及、拡大すると(1)に近づく傾向
IPアドレスは「枯渇」しない?IPv4アドレスは枯渇しないので、大丈夫という話も耳にします2の32乗(約43億個)の有限資源石油と違って絶対量が減少することはない43億個利用してしまうと、新規の割り当てができなくなる“在庫”の枯渇
実際に枯渇しました日本のIPv4アドレスは事業者が持つアドレスのみ
アドレスが不足している事業者はアドレス移転を開始2011年2月3日に枯渇IANAARIN地域レジストリ(RIR)APNICRIPENCCLACNICAfriNIC2011年4月15日に枯渇JPNIC国別レジストリ(NIR)NIR事業者
IPv4アドレス枯渇危機の歴史2000-2011年’90年代’80年代’70年代インターネット黎明期IPv4仕様化IPv4枯渇2005年の予測IETFで3つの枯渇対策の検討、実現IPv6仕様化枯渇予測が急速に早まるIPv4枯渇2007-8年の予測(インターネットバブルによる需要増)ICANN/IANAの在庫枯渇IPv4枯渇2020年の予測(インターネットバブル崩壊)アジア太平洋地域、日本での在庫枯渇
アドレス枯渇問題の3つの対策根本的な解決は「IPv6導入」のみであり、導入が推進されています。IPv4アドレスの回収と再利用JPNICなどのレジストリは回収の努力は続けているがほぼ限界アドレス取引は現状禁止だが、そのためのポリシー議論中部分的な解とはなりうるが、今後の需要をすべてまかなえないのは明らかIPv4プライベートアドレス利用による節約(CGN:キャリアグレードNAT導入)キャリアグレードNAT(CGN)の配備が必要暫定的なつなぎの解としては有効技術的な問題ありセキュリティ、動作しないアプリケーション、スケーラビリティIPv6の導入、利用全体が対応しないと効果が薄いアドレス量は莫大であり、一度移行すれば長期的には最も有望
3大対策のインターネットへの影響対策にはメリットばかりではなくデメリットもあり、利用上の注意が必要です。IPv4アドレスを回収・再利用するハードコーディングは危険(アドレスの使用歴は不明)例えばブラックリストで遮断されていた過去例えば経路広告不具合で途絶されていた過去IPv4アドレスを節約する(プロバイダ単位にプライベートアドレスを導入)キャリアグレードNAT/CGN(ラージスケールNAT/LSNと言われていた)ユーザサイト(家庭、企業)でNATする時代から、ISPでNATする時代へNATトラバーサルは、ISPと家庭の2段階を考慮しないといけなくなる1つのアドレスを複数ユーザでシェアする部分やセッション数制限も足かせに技術的な問題動作しないアプリケーション、セキュリティ、スケーラビリティIPv6を導入する切り替えではなく、IPv4との並行運用となる長期的に、2つのプロトコルを扱う必要性がでる
アドレス枯渇はどういう意味をもつ?ネットワークにとって今までのインターネットが動作しなくなるわけではないインターネットの拡張ができなくなる世界人口もうすぐ70億 インターネット人口はわずか15億現在はPCネットワーク 将来はモノ・センサーネットワークスマートフォンにはIPアドレス付与が原則拡張不可というリスク管理問題としてなんらかの対策が必要アプリケーションやサーバにとってIPv6の必要性を加味しなければいけない
IPv6対応が必要な場合は、IPv4依存から脱却しなければいけないいつ検討や対応をすればいいのか?メインプレイヤーの交代の兆し(通信インフラ提供側からサービスサイト側がメインに)ネットワーク機器、端末、周辺機器多くがIPv6対応済み。アクセス回線、ISP、CATV、携帯電話2011年4月から本格的にIPv6対応したサービス提供開始データセンター一部の事業者による提供コンテンツプロバイダGoogle、Yahoo!、Facebookなど大手CPによる対応進展企業国外(特に中国やインド)拠点を持つ企業で検討が進む機材の調達要件への組み入れWebなど対外情報提供では一部先進的な企業のみ対応一般利用者端末OS、携帯電話、情報家電などの多くで対応が進み、知らないうちに利用進展電子政府・電子自治体内閣府、財務省(国税庁)、総務省、法務省、厚生労働省のウェブサイトはIPv6対応済。政府共通ネットワーク(霞が関WAN の後継システム)、政府共通プラットフォーム(いわゆる霞が関クラウド)については、2012年度内のIPv6対応を表明(2011年4月、調達仕様書の意見招請において公表)経済「IPv6関連銘柄」の登場モノ環境ヒトカネ
一例(NTTドコモのIPv4枯渇状況とIPv6対応)出典:総務省 IPv6利用高度化に関する研究会6/22資料
日本のIPv4->IPv6マイグレーション予想IPv6への移行の今後既存ユーザにおいても、IPv6が使えるようになってくる暫定解のCGNが縮退し、IPv6が主流に(時期不明)CGNのISPサービスが出現CGN2011年大手ISPを中心に枯渇対応サービスを提供開始IPv6のみのISPサービスが出現20092011201?20??IPv4のみECサイト、オンラインゲーム、コミュニティなど海外取り引き、グローバルな情報発信など企業間取引などスマートフォン、の取り込みなどIPv4・IPv6混在IPv6のみインターネット普及途上中国インドIPv4のみでは、すぐに需要が満たせなくなる中国・インドでは、IPv6のみのISPサービスが日本より早めに出現!?今後の需要増加
今後のインターネット予想IPv4・IPv6ネットワーク・CGNの混在ネットワークIPv4IPv4・IPv6CGN4G4P4G4G4G4P4P4P4G4PIPv6現在6G6GIPv6ネットIPv4ネットIPv4・IPv6混在ネットCGN6G6G6G6GIPv6グローバルIPv4プライベートIPv4グローバル
2.IPv4枯渇対応やIPv6導入の留意点
動作前提が変わる!インターネット環境が多様化していることが前提IPv4枯渇対策ネットワーク(多段NAT)IPv6ネットワークシングルスタック、デュアルスタックIPv4からIPv6への移行途中のネットワークdual stackアプリ現在トランスポートプロトコルTCP,UDP,Others)IPv4アプリIPv4アプリIPv4アプリIPv6アプリトランスポートプロトコルTCP,UDP,Others)トランスポートプロトコルTCP,UDP,Others)トランスポートプロトコルTCP,UDP,Others)IPv4プロトコルIPv4プロトコルIPv6プロトコルIPv4プロトコルIPv6プロトコルIPv4プロトコルIPv6プロトコル
多様な環境でのアプリケーションの課題現在IPv4環境で動作しているプログラムをハイブリッド環境で動作させるときに、単純なリコンパイルなどではすまないケースがいくつか判明している正常に動作しないケースCGNに起因するものIPv6通信/トランスレータに起因するもの動作はするがパフォーマンス的に問題になるかもしれないケースCGNやトランスレータのリソース不足などアプリケーションは「サクサク」動くことが重要視2つのプロトコルバージョンをうまく操るための工夫が必要
アプリケーションのタイプ別にみた必要な対応2011年からインターネット上に新しいユーザ環境が百万単位で登場。
この新環境は今までのインターネット=IPv4 onlyとはソフトの動作前提とは違うため、すべてのネットアプリでチェック及び試験が、さらに一部のアプリでは改修が必要となる出典:IPv4アドレス枯渇対応タスクフォース資料に備考追記
③既存アプリのIPv6対応IPv6化によるアプリの問題①IPv4枯渇によるNATの多段化②IPv4・IPv6混在環境三つの要因①による問題アプリが動かなくなる
コンテンツの表示が不完全になる
コンテンツの表示が遅くなる
送信元IPによる利用者特定が出来なくなるサーバ側③による問題ミドルウェアなどのIPv6対応版への更新が必要になる
IPv4依存コードの修正が必要になる
IPv6アドレスのデータ形式への対応が必要になる
OSにより挙動が異なる場合、アプリの移植性が低下する②による問題端末から繋がらなくなるインターネットイントラネット①による問題UPnP(NAT越え)によるP2Pが繋がらなくなる②による問題サーバに繋がらなくなる
環境によりレスポンスがまちまち②による問題(インターネット利用の場合)サーバに繋がらなくなる
環境によりレスポンスがまちまちクライアント側
CGN導入による課題CGNの導入により機能が制限される多数セッションを使うWEBコンテンツが見えない(地図など)
エンドユーザが特定できずセキュリティ上問題がある
アクセス解析が出来ない
P2P等、動作しないアプリがあるCGNの利用現在のインターネット複数拠点で同一グローバルアドレスを共有拠点にひとつ以上のグローバルアドレスインターネットサーバインターネットサーバインターネット1つのグローバルアドレスで複数の拠点(他社の拠点や一般家庭)を代表CGNNATNATNATNATNATNATグローバルアドレスプライベートアドレス
CGNに起因するものCGNの導入によって見直す必要があるポイントUPnPが通らないP2Pアプリが動かないマッチングサーバからアドレスを貰って直接通信するようなアプリはゲームアプリなどでは一般的セッション数の限界ポートあたり65000調査によると1クライアントPCあたり500ぐらいはセッションを張ることはよくある例: iTunesは1ユーザ辺り300セッション近く利用するポート数制限にひっかかるとセッションが張れなくなる例: Googleマップでは表示が不正になるISPユーザの単位がアプリ側で認識できないことによる管理等の問題広範囲のユーザがひとつのIPアドレスで代表される一部のメールの取り込みSMTP before POPができない一部のECサイト、広告バナーなどで問題
CGNの問題点アプリケーションの高速通信に対応できない可能性があるIPアドレスによるアクセス制限がしづらくなる多段NATに対応していない機器情報家電多段NATトラバーサルできないアプリこの他にもいろいろログや認証系
アプリケーションの高速通信高速通信のため、複数の通信を同時に行うiTUnes: 250前後ニコニコ動画: 100前後セッションIPアドレスとポート番号の組み合わせ(例) E-Mailは、25番ポートを使ってサーバ間の転送実施(注意) ポート番号は2^16(65536個)192.0.2.1:0-65535Well-known-port(0-1023) と Ephemeral-port(1024以降のOS任意のポートとダイナミックポート(49152-65535)スペック的に処理できるセッションが限られる(注意) よく見かける間違いポート番号の数とセッション数は異なる アプリが動かなくなる
 コンテンツの表示が不完全になる
 コンテンツの表示が遅くなる問題の実例(google map)処理できるセッションを意図的に減らす表示しきれない箇所が出てくるGoogleのIPv6推進の大きなきっかけにNTT-C 宮川さんの調査
アクセス制限が困難にサーバー側で門前払いしたいお客さんがいるIPアドレスをベースにしたアクセス制限が一般的例えば、2ちゃんねるのアクセス禁止一部のメールの取り込みSMTP before POPができないLSNが入った場合ひとつのIPアドレスを何百人、何千人が使う一人を特定しづらくなるマーケティングにも使えなくなる広範囲のユーザがひとつのIPアドレスで代表される地域別表示の一部のECサイト、広告バナーなどでも問題
IPアドレスによるアクセス許可の問題NATの多段化による問題送信元IPによる利用者特定が出来なくなる現在のインターネットCGNの利用拠点にひとつ以上のグローバルアドレス複数拠点で同一グローバルアドレスを共有webサーバwebサーバa=○d=○アクセス許可アクセス許可類似する問題アクセス制限
訪問者数の簡易カウント
POP before SMTP
アクセスログ管理
大量トラフィック遮断
地域識別情報(コンテンツ制御等に利用)の取得インターネットdCarrierGrade NAT拠点abcNATNATNATNATNATNATグローバルアドレス←自社の社員←自社の社員プライベートアドレス他社の拠点まで許可される自社の拠点を許可可能
情報家電が多段NATに未対応IPv4枯渇対策を想定していない頃に出たものIPカメラは多段NAT超えられないhttp://www.soumu.go.jp/main_content/000038767.pdf未知のことが多すぎるゲーム内の機能に制限が発生するという報告有佐藤良さん(コナミ) @2008年JANOG22
NATで解決できない本質的な問題情報をエンドノードに直接送信出来ないハードウェアメーカーからの情報プッシュオンラインゲームでサーバになれるか?VPNを張れる先が限られる正しいIP電話のあり方ホスティングサービス会社の問題は未解決エンドーツーエンドの通信が阻害されることが最大の問題
IPv6/トランスレータに起因するものIPv6やトランスレータの導入によって見直す必要があるポイントIPv4アドレスが直書きしてあるプログラムIPv4アドレスの埋め込み(サーバアドレスなど)Googleのキャッシュリンクのようにサーバアドレスの直書きURL設定GUI等でIPv4アドレス入力を想定IPv6アドレス指定がそもそも不可能プログラム内部処理でIPv4アドレスを想定(4バイト変数など)IPアドレスも文字列として扱われていると問題C言語などでのIPv4依存した型や関数の利用、ソケットの設定gethostbyname()ではIPv6は扱えないIPv4アドレス自体をデータとして扱うプログラムSIP、ネットワーク管理、ファイアーウォールなどアドレスレンジにより、動作を変えるプログラムフィルターやコンテンツ制御アドレスと日本国内の住所の対応表をサービスしている会社もあるアクセス解析IPアドレス:   ・        ・        ・決定19216801
IPv6化によるアプリケーションへの影響アプリケーションからIPv4依存コードの削除が必要
ミドルウェアのIPv6対応が必要プログラミング上、要注意である関数を例示しています。IPv4依存のプログラムコードの対応例開発言語:C/C++の例IPv4アドレスを前提とした変数宣言や判定、関数呼び出しや、Socket作成時にIPv4アドレスのみを前提で作成してしまうなど、アドレスファミリーに依存したプログラミングを行っている場合、IPv6ネットワークに移行するとアプリケーション例外が発生する可能性がある。以下のIPv4依存関数・構造体を使用していた場合、推奨関数・構造体を利用するように変更し、アドレスファミリーに依存しないプログラミングを行う。通信を行う場合にはまずDNSによりFQDNの名前解決を行った上で、取得できたIPアドレスにて接続を行うようプログラミングする。● IPv4依存関数・構造体inet_addr(), inet_aton(), inet_lnaof(), inet_makeaddr(), inet_netof(), inet_network(), inet_ntoa(), inet_ntop(), inet_pton(), addr_ntoa(), network(), getservbyport(), gethostbyname(), gethostbyname2(), gethostbyaddr(), getservbyname(), in_addr●推奨関数・構造体sockaddr_storage, getaddrinfo(), getnameinfo()
開発言語のIPv6対応状況③による問題IPv4依存コードの修正が必要になるIPv6対応のバージョンの開発言語にしただけでは、IPv6では動かない場合があるIPv4しか使えない関数やIPv6しか使えない関数がある事に注意
ミドルウェアなどのIPv6対応状況アプリのIPv6対応による問題ミドルウェアなどのIPv6対応版への更新が必要になる※ ×は未対応、△は機能制限あり、○はIPv6対応
IPv4とIPv6が非互換による問題IPv4・IPv6混在環境のインターネットwebサーバwebサーバ③IPv6のみのサーバ出現②IPv6のみの端末からの接続が出来ないIPv4・IPv6混在環境による問題サーバに繋がらなくなるインターネットIPv6インターネット非互換①IPv6のみの拠点や家庭の出現④IPv6のみのサーバへの接続が出来ないIPv4・IPv6混在環境による問題端末から繋がらなくなるIPv6-IPv4フォールバックでの問題IPv4・IPv6混在環境による問題環境により、レスポンスがまちまちIPv4・IPv6混在環境のインターネットwebサーバグローバルアドレスexample.comプライベートアドレス192.0.2.12001:db8::1DNSインターネットIPv6インターネットexample.com	A	192.0.2.1example.com	AAAA	2001:db8::1①まずは、IPv6で接続を試みる②IPv4へフォールバックNATIPv6インターネットへの接続が無い46アクセス網の問題は緩和策あり端末のOSやアプリのバージョンにより挙動が異なる最善の解はIPv6インターネットへの接続
GUIのIPアドレス入力画面アプリのIPv6対応による問題IPv6アドレスのデータ形式への対応が必要になるIPアドレス:決定...類似する事例設定ファイルでIPアドレスを指定192021IPv6アドレス指定がそもそも不可能IPv6アドレス:決定:::::::2001db80000801IPv6アドレスは「:」区切りの16進数表記で最大39文字「0」や「:」をRFC5957に従い正規化して省略する表記が一般的であり、文字列として扱う場合には注意が必要(例[2001:db8::80:1])
IPv6対応の検討対象となる環境の一例

IPv6 Application