IPv6移行促進のためのIPv4共存手法の研究

政策メディア研究科: 堀場 勝広

IPv4アドレス枯渇とSA46T

IPv4アドレス在庫枯渇が現実となり,通信事業者はIPv4の延命とIPv6へのシームレスな移行を平行して行っている. IPv4の延命としてはアドレス移転などを用いてIPv4アドレスの確保,LSN(Large Scale NAT)などIPv4アドレスの利用効率の向上, バックボーンネットワークをIPv6化しスタブネットワークのみ既存のIPv4を維持する方式など様々な手法がある. 本研究はこれらの移行方針の中でも,IPv6化されたバックボーン上に既存のIPv4ネットワークを運用する方式に着目する.

SA46TはIPv6化されたバックボーン上に,IPv4ネットワークをスタブとして展開する技術である. SA46Tの特徴としては,各スタブIPv4ネットワークをPlane IDと呼ばれる識別子によって認識し, 運用しているバックボーンのIPv6 Prefixと組み合わせる事で, 同じIPv4アドレスを用いたスタブネットワークも識別可能な所謂レイヤ3VPN機能を実現する. すなわち複数の同一IPv4プライベートアドレスを利用するユーザが同居可能なIP-VPN網が提供できる. SA46Tは大規模なMPLS等と異なり,アドレスの割当設計と一般的なIGP経路制御によってこれらの機能が実装される, いわば運用とプロトコルの組み合わせによってステートレスなパケットエンキャプスレーション技術である. SA46Tは一般的なアドレス(プロトコル)変換技術を自由に選択可能なため, 非常にシンプルかつ他の技術で発生する利用可能なプロトコル制限等の懸念が小さい.

SA46T-AT

IPv6が普及しない理由の一つに,IPv4にのみ対応した機器を持つユーザに対してIPv6への移行が何らインセンティブを生んでいない点, IPv4にのみ対応した機器の存在が挙げられて来た. 本研究はこれらの問題に対して,SA46Tの特徴を生かしてIPv6バックボーン上に平行して存在するプライベートIPv4アドレスを用いた スタブネットワークをIPv6アドレスによって個体認識しグローバルに到達可能にし,その上でプロトコル変換によってIPv4アドレスのみ に対応した機器とIPv6アドレスを持つ機器の通信を可能にする. すなわち,SA46TルータにIPv6からIPv4へのトランスレータを組み合わせる事で, グローバルIPv6アドレスを持つ機器が,プライベートIPv4アドレスのみを持つ機器に対する接続性を提供する. 本研究ではこの機能を,SA46T-AT(Address Translator)と呼ぶ.

図[fig1]にSA46TとSA46T-ATを用いたIPv6バックボーンにおけるIPv4ネットワークの存続と, IPv6を用いたインターネットからIPv4へアクセスする環境の概要を示す.

SA46TとSA46T-ATによるIPv4ネットワーク存続シナリオ [fig1]

SA46TルータはIPv4 User Segment(図中203.178.156.0/24)のPrefixとPlane-IDから生成したSA46T IPv6 Prefix(図中sa46t:prefix::203.178.156.0/120)を経路広告する. IPv4インターネットと接続されたSA46TルータはIPv4ネットワーク宛のパケットをSA46T IPv6 Prefix宛としてエンキャプスレーションし,IPv4 User Segmentへ転送する. IPv4 User SegmentのSA46Tルータはエンキャプスレーションされたパケットを取り出し,通常のIPv4パケットとしてIPv4 User Segmentに転送する.

SA46T-ATルータはSA46Tと同様のルールで生成したSA46T IPv6 Prefixを(図中nat64:prefix::203.178.156.0/120)を経路広告する. IPv6インターネットからSA46T IPv6 Prefixに通信先IPv4アドレスをSuffixとしたIPv6アドレス宛に送信されたパケットは, SA46T-ATルータまで通常のIPv6経路制御によって配送され,IPv6アドレスからIPv4アドレス部分を抜き出した上でプロトコル変換を行い, IPv4 User SegmentのIPv4ホストへパケットを転送する.

SA46T-ATはIPv4のみに対応した旧型のシステムとIPv6にのみ対応した新型のシステムを融合可能な通信基盤を提供できる. 例えば,後付けでIPv6対応困難なハードウェアチップ上に通信スタックが実装された旧型のセンサーと, (新たにIPv4アドレスを取得するのが困難になっていくため)IPv6のみに対応した新設のセンサーならびにセンサー情報収集アプリケーション を意識する事無く融合するためには,IPv6を起点とした通信をIPv4機器に対して通信可能なネットワーク基盤は利便性が高い.

SA46T-ATルータの設計と実装

SA46T-ATルータはIPv6側のネットワークインターフェースからのパケット入力をトリガーにIPv6とIPv4のプロトコル変換テーブルを作成する. 設計上で留意した点として,変換テーブルのエントリーをIPアドレスによる1対1変換を採用した. 一般的と同様,NAT技術ではレイヤ4の情報まで含めた変換テーブルを構築する場合も検討したが, 最終的には動作するアプリケーションにできる限り制限を与えない方法として,低レイヤでの変換を採用した. 図[fig2]にSA46T-ATルータの動作概要を示す.

SA46T-ATの設計仕様 [fig2]

IPv6からIPv4向きの処理

  1. 変換テーブルにIPv6ホストのエントリがあるか調べる.

  2. 無ければ,作成して,写像するIPv4アドレスを動的に割り当てる.

  3. 変換テーブルを発信IPv6アドレスをキーにして検索し,写像するIPv4アドレスを求める.宛先はSA46TアドレスのIPv4部を用いる.

IPv4からIPv6向きの処理

  1. 変換テーブルを宛先IPv4アドレスをキーにして検索し,該当するIPv6ホストのアドレスを求める.発信アドレスはSA46Tアドレスの変換ルールで求める.

その他処理

  1. タイマー起動でエントリを消去(注:上記に記載していないが,パケット変換の際にはタイマーをリセット)する.

  2. IPv6ホストに写像するIPv4アドレスのProxy ARP: 異なるサブネットのアドレス空間をプールにすれば不要.Proxy ARP面倒だから異サブネットアドレスをプールするように条件を設ける.

設定

  1. 広告する経路(2001:0DB8:0:46:0:64:10.0.0.0/120),なお,ここからplane IDがわかる.

  2. 写像するIPv4アドレスプール.

  3. エントリ消去タイマー時間(デフォルトは180秒)

SA46T-ATの実装

図[fig:implementation]にSA46T-ATのLinuxにおける実装概要図を示す. SA46T-ATの実装はLinux上でデーモンとして動作し,パケットの送受信はtun/tapを用いる. SA46T-ATデーモンは起動されると同時にtun/tapを用いて仮想インターフェースを作成し,仮想インターフェースに着信したパケットに対してヘッダ変換処理を行う. ユーザはSA46T-ATデーモンの起動後に仮想インターフェースに対してSA46T PrefixとIPv4写像アドレスプールのスタティックルートを設定する必要がある. IPv6パケットをIPv4パケットに変換する場合,SA46T-ATはIPv6パケットのソースアドレスをキーにして自身が持つセッションテーブルを検索する. セッションが存在した場合はそこに記録されたIPv4写像アドレスを変換後のパケットのソースアドレスとする. また,IPv6パケットの宛先アドレスの末尾32ビットを変換後のパケットの宛先アドレスとする. IPv6パケットのソースアドレスに対応するセッションが存在しない場合は,設定されたIPv4写像アドレスのプールから新たなIPv4写像アドレスを割当て, セッションを作成した後にIPv4パケットを生成する.セッションは180秒間通信がない場合にのみ消去される.

IPv4パケットをIPv6パケットに変換する場合,SA46T-ATはIPv4パケットの宛先アドレスをIPv4写像アドレスとしてセッションテーブルを検索する. セッションが存在した場合は記録されたIPv6アドレスをIPv6パケットの宛先アドレスとする. また,IPv4パケットのソースアドレスから生成したSA46T Global IPv6 AddressをIPv6パケットのソースアドレスとする.

なお,IPv4パケットをIPv6パケットに変換する場合はネットワーク層のヘッダ長が大きくなるため,変換先のリンクのMTUを超える場合が考えられる. SA46T-ATは,変換後のパケット長が設定されたMTUを超える場合,パケットをフラグメントした上で送信する. 相互の変換に共通の動作として,TCPまたはUDPパケットの変換を行う場合はトランスポート層のチェックサムの再計算を行う. これは,ネットワーク層のヘッダがトランスポート層のチェックサムの計算元に含まれているためである. また,ICMPとICMPv6の間に相互互換性がないため,ICMPを変換する場合はICMP codeなどを個別に変換する.

SA46T-ATの実装概要ダイヤグラム [fig:implementation]

評価

他技術との比較

SA46T-ATと他の技術との比較について,表[tab:compare]に示す. 動作レイヤについては,SA46T-ATはネットワーク層のみで動作するが, NAT64及びTRTについてはトランスポート層の変換についても定義されている. 特に,TRTはTCPの再送制御等についてもトランスレータが行うため,通信効率は高くなるが, 変換の際の負担が大きくなるという特徴がある. また,IPv6空間からIPv4空間へのアクセスが可能である点,IPv4空間からIPv6空間へのアクセスが不可能である点は共通である. なお,この場合のアクセスはセッションが存在しない時点での通信の可否を指す. IPv4空間の多重化については,SA46T-ATではプロトコルスペックで定義されている. NAT64及びTRTは仕組み上可能ではあるものの,プロトコルスペックでは定義されていない. SIITはアドレッシングの際にホスト部の末尾32ビット以外を予約するため,多重化は不可能である. 想定用途としては,SA46T-ATのみがIPv4のみのエッジネットワークに設置することを想定し, 他の技術はIPv6バックボーンとIPv4バックボーンの境界に設置することを想定している.

[htbp] SA46T-ATと他のプロトコル変換技術の比較 0.63[0.63]

|p20mm|p25mm||l|l|p15mm|p25mm|

& 動作レイヤ & v4 ⇒ v6 & v6 ⇒ v4 & IPv4空間の多重化 & 想定用途
SA46T-AT & ネットワーク層 & 不可 & 可 & 可 & IPv4 only host側
NAT64 & ネットワーク層,トランスポート層 & 不可 & 可 & 可 & IPv6 Internet側
TRT(Transport Relay Transition) & トランスポート層 & 不可 & 可 & 可 & IPv6 Internet側
SIIT & ネットワーク層 & 不可 & 可 & 不可 & IPv6 Internet側

[tab:compare]

パフォーマンスの計測

SA46T-ATを設置した場合,トランスレーション対象へのIPv6のトラフィックはすべてSA46T-ATを経由するため, 最大スループットは重要なメトリックである. 実際にどの程度のトラフィックを変換することが可能か検証し,パフォーマンスの傾向を明らかにするため, 以下の対象についてIperfを用いてスループットの計測を行った.

  1. 直接接続(Direct)

  2. Linuxカーネルが提供するIPv6ルーティングエンジン(IPv6 routing)

  3. NAT64実装の一つであるTAYGA(TAYGA)

  4. 本研究で実装したSA46T-AT(SA46T-AT)

スループットを計測する環境を構築するために,実装したSA46T-ATを動作させるためのサーバを1台, Iperfのサーバ及びクライアントとして動作させるためのサーバを2台,計3台のサーバを用いた. この3台のサーバのスペックを以下に示す.

この条件において,Direct,IPv6routing,TAYGA,SA46T-ATのそれぞれについて, TCP及びUDPでパケットサイズを1500byteと250byteとした場合の計16通りを3回ずつ10秒間計測し, 各場合において3回の計測の平均値を計測結果とした. 本計測のBPSでの結果を図 [fig:bps] に,PPSでの結果を図 [fig:pps] に示す.

BPSでの計測結果[fig:bps]

PPSでの計測結果[fig:pps]

パケットサイズが1500byteの場合,BPSではSA46T-AT,TAYGA(以下トランスレータ)とDirect, IPv6 routing(以下非トランスレータ)の間に目立ったパフォーマンスの差は現れなかった. パケットサイズが1500byteでTCPの場合にトランスレータのPPSが大きくなるという現象が発生した. この現象の原因については判明していないが,TCP特有の現象でありBPSに変化がないことから,何らかの原因によりパケットの再送がおきていると推測できる. パケットサイズが250byteの場合は,BPS及びPPSの計測結果から,トランスレータのパフォーマンスが低下する傾向があることが判明した. 以上から,トランスレータは時間あたりのパケット処理可能数が非トランスレータと比べて少ないが, NAT64とSA46T-ATの間に目立ったパフォーマンスの差はほぼ存在しないと言える.

まとめ

本研究ではSA46Tのアドレス設計ならびに経路広告を利用するアイディアに,IPv6からの通信をトリガーとしたIPv6-IPv4プロトコル変換機能を組み合わせた SA46T-ATを提案しLinux上に実装した.SA46T-ATによって,プライベートIPv4ノードに対してIPv6からの接続性が提供できる. SA46T-ATは本報告書著者の松平によってIETFにInternet-Draftとして提案されている. また,Linux上に実装しInterop2012において併設されたOpen Router Competitionに出展した.

謝辞

本研究活動は富士通株式会社とWIDEプロジェクトの共同研究の一環である. 本研究に発表の場を提供していただいた,Open Router Competition開催に尽力された方々に感謝する.