今年になって,多くのルーター・ベンダーが“IPv6対応”のルーター製品を発表しました。ルーターをIPv6対応にすること,つまりIPv4対応ルーターがIPv6プロトコルをサポートすることは,ネットワークをIPv4からIPv6へ移行させていく初期過程において,ルーターが具備すべき必要条件となっているようです。

 では,ルーターが備えるIPv6機能とは,具体的にどのようなものがあるのでしょうか。IPv6の機能と一口に言っても,それが意味する範囲はかなり広いため,大きく4つのジャンルに分けて見ていきます。

1.IPv6パケットを処理するための機能
2.IPv6ネットワークを適切に運用・管理するための支援機能
3.IPv4からIPv6へ移行するための支援機能
4.その他の機能

 まず今回は,IPv6ルーターの基本機能となる「1.IPパケットを処理するための機能」に関して説明します。

 IPv6ルーターも,その基本的な動作はIPv4のときと同じです。具体的には次のような流れとなります。

 IPv6ルーターのあるインタフェースにIPv6パケットが来ると,受領して良いパケットかどうかチェックし(フィルタリング),受領して良いパケットであれば,あらかじめ作成しておいた経路テーブルに従って(経路制御),転送先のインタフェースを決定し,さらに転送して良ければ(フィルタリング),転送する(パケット転送)という動作を行います。

 これを繰り返すことであて先のホストまでIPv6パケットが届けられるわけです。パケット転送の際には,例えばDSLからEthernetやその逆などへの伝送方法に応じたプロトコルの変換(フレーム変換)が行われます。

 この一連のプロセスの中で実行している機能を整理します。

(1)フィルタリング
 IPv6パケットの中の各種制御情報をフィルタリング・ルールに照らし,パケットを破棄するかどうかを決めます。フィルタリング・ルールの対象となる情報としては,IPv6ヘッダーの中にある送信元アドレスや宛先アドレス,NextHeaderの情報,TCP/UDPヘッダー内の送信元/あて先ポート番号等があります。

(2)経路制御
 経路制御に使用されるルーティング・プロトコルとしては,既存のIPv4で使われているものをIPv6対応に拡張したものが使われています。代表的なものに,RIPng,OSPFv3,BGP4+があります。また,マルチキャスト用のルーティング・プロトコルであるPIMもIPv6対応のものがあります。これらのプロトコルや,人手による静的(Static)な設定よって経路テーブルを作成します。

(3)パケット転送
 ヘッダー内のあて先IPアドレスを経路テーブルに照らして転送先インタフェースを決定し,そのインタフェースにパケットを転送します。

(4)フレーム変換
 ルーターはさまざまなリンク層プロトコルを使ってIPv6パケットを受け取ったり,送信したりします。例えば,LANポートからWANポートへ中継するときは,イーサネット・フレームからIPv6パケットを取り出し,それをPPPフレームに格納して送り出します。このようにルーターは,各種リンク層プロトコルの違いを吸収し,規定されたフレーム・フォーマットでIPv6パケットを乗せ変える機能を備えています。SOHOルーターではもっとも重要な機能の一つです。

 さて,ここまで紹介してきた各種の機能を実現するには,ルーターがIPv6の基本仕様に沿って振る舞うように実装されていなければなりません。数あるIPv6仕様のうち,これらの機能を規定したもっとも重要なものは,IPv6パケットの先頭部に挿入されるヘッダーの構造と,IPv6で使われる各種アドレスに関する規定です。それらは以下の示す仕様書で規定されています。IPv4との違いに注目しながら見ていきましょう。

●IPv6ヘッダー(RFC2460)
 IPv6基本ヘッダーと拡張ヘッダーに関する規定です。IPv6では,ヘッダーを単純な基本ヘッダーと付加的な拡張ヘッダーの組み合わせとすることで,処理の高速化と柔軟性と拡張性の強化が図られました。ヘッダー長は,基本ヘッダーのみの場合は固定長(40バイト)で,拡張ヘッダーを付加する場合は8バイトの整数倍になるように設計されています。伝送品質の向上により必要性が薄くなったヘッダー・チェックサムは廃止され,フラグメンテーション(パケットの細分化)処理も送信元ノードに移管されています。

 また,IPv4における「TTL」と「Protocol」のフィールドについては,IPv6ではそれぞれ「Hop Limit」,「Next Header」に置き換わっています。

 QoS(サービス品質)関連では,Traffic Classとフローラベルが基本ヘッダー内に定義されています。Traffic Classは,QoS技術の一つであるDiffserveで使用されます。ここで,パケットの優先度を指定したりパケットの種類を識別します。

 フローラベルは,一連のパケット(フロー)にラベルを付けるためのものです。これは,上位サービス(ストリーム等)に適したパケット転送を実行することを想定して考案されたものですが,まだ使用方法を議論している段階にあり,具体的な利用例を念頭に置いた実装にはしばらく時間がかかりそうです。

●IPv6アドレス(RFC2373)
 IPv6アドレスには,「ユニキャスト・アドレス」,「マルチキャスト・アドレス」,「エニーキャスト・アドレス」の3種類のアドレスが定義されています。さらにユニキャスト・アドレスでは,階層的なアドレス割り当てによる経路の集約を考慮し設計された「集約可能なグローバルユニキャスト・アドレス」(いわゆるグローバル・アドレス),プライベート・アドレスに相当する「サイトローカル・アドレス」,同一リンク内でのみ一意であり主に近隣探索で使用される「リンクローカル・アドレス」の3種類のアドレスが定義されています。

 「エニーキャスト・アドレス」はIPv4には見られなかった新しいタイプのアドレスです。複数のインタフェース(たいていは異なるマシン)に同じ値のエニーキャスト・アドレスを設定することができ,それらを一つのグループと見なすことができます。エニーキャスト・アドレスあてのパケットは,割り当てられているインタフェースのうち,経路上、送信元に一番近いものへ届けられます。例えば,いくつかのDNSサーバーに同じエニーキャスト・アドレスを設定しておけば,個々のマシンはエニーキャスト・アドレスを使うことで最寄りのDNSサーバーにアクセスできるようになるわけです。このようにエニーキャスト・アドレスは負荷分散の効果等が期待できますが,まだ具体的な使用方法は検討中です。

なお,IPv4では頻繁に使われていたブロードキャスト・アドレスという概念は,IPv6ではなくなりました。替わりに、IPv6ではマルチキャスト・アドレスの一種(FF02::1 同一リンク内の全ノードのアドレス)として処理されます。無駄なトッラフィックを極力抑えるための工夫です。

 次回は,運用支援機能,移行支援機能,その他の機能を紹介します。