5    Mobile IPv6

IPv6 (Internet Protocol Version 6) は,拡張可能なヘッダ構造,アドレスの自動構成,セキュリティ (IPsec),トンネリングなどの機能を通じて移動性 (mobility) をサポートするように設計されています。 Mobile IPv6 はこれらの機能の上に構築され,モバイル・ノードが,ノードの IP アドレスを変更することなしにリンク間を移動できるようにする動作を定義しています。 このようにして,モバイル・ノードが他のネットワークに移動しても,透過的にモバイル・ノードとの間でパケットのルーティングができます。

Mobile IPv6 の実装には,次のような制限があります。

この章の内容は次のとおりです。

問題解決については,10.4 節 を参照してください。

5.1    Mobile IPv6 の経緯

通信の分野では,移動性の強化がトレンドになっています。 携帯電話はすでに,ビジネスや個人の通信形態を変革しています。 コンピュータ,特にラップトップ・コンピュータやハンドヘルド・コンピュータも移動性を備えていますが,これらはまだ携帯電話のような連続的な接続性は備えていません。

今日では,WAP (Wireless Application Protocol) や GPRS (General Packet Radio Service) を使用する基本的なデータ・サービスがあります。 しかし,次のようなトレンドによって,声とデータをフルに利用できるモバイル通信の要求が生まれています。

5.2    Mobile IPv6 の環境

Mobile IPv6 環境では,ノードには次のような役割があります。

モバイル・ノード

取り付け位置をリンク間で変更することができ,変更後もホーム・アドレスから到達できる IPv6 ノード (ホストまたはルータ)。

コレスポンデント・ノード

モバイル・ノードと通信するピア IPv6 ノード。 コレスポンデント・ノード (ホストまたはルータ) は,モバイル・ノードでも静止ノードでもかまいません。 Mobile IPv6 の Tru64 UNIX 実装を使用すると,システムをコレスポンデント・ノードにすることができます。

ホーム・エージェント

モバイル・ノードが現在の気付アドレス (care-of address) を登録する,モバイル・ノードのホーム・リンク上にあるルータ。

これらのノードの相互関連を理解するには,次の用語に関する理解が必要です。

ホーム・アドレス

モバイル・ノードがホーム・リンク上またはホーム位置にある場合の,モバイル・ノードの IPv6 アドレス。 このアドレスのサブネット・プレフィックスはホーム・ネットワークのサブネット・プレフィックスになります。 モバイル・ノードは,常にホーム・アドレスで参照できます。 ホーム・アドレスは変わりません。

気付アドレス (care-of address)

モバイル・ノードが外部リンクまたはホーム以外の位置にある場合の IPv6 アドレス。 このアドレスのサブネット・プレフィックスは外部ネットワークのサブネット・プレフィックスになります。 モバイル・ノードには複数の気付アドレスが設定できますが,モバイル・ノードのホーム・エージェントに登録した気付アドレスは,1 次気付アドレスと呼ばれます。

バインディング

モバイル・ノードのホーム・アドレスと気付アドレスの対応付け。 この対応付には存続期間もあります。 各ノードは全バインディングのキャッシュを維持します。 バインディング・キャッシュの内容を表示する方法については,11.4 節 を参照してください。

5.3    Mobile IPv6 の動作

図 5-1 は,以下のシナリオを示します。

図 5-1:  Mobile IPv6 の通信

()

5.4    Mobile IPv6 の準備

ここでは,Mobile IPv6 を構成する前に必要な作業について説明します。

また,システムを PIv6 ホスト・ノードまたはルータとして構成する必要があります。 詳細は 3.7 節 を参照してください。

5.4.1    カーネルでの IPv6 サポートの確認

Mobile IPv6 サポートは,IPv6 サブセットの一部として含まれています。 次のコマンドを入力して,IPv6 サブセットがインストールされていることを確認します。

# sysconfig -q ipv6

ipv6: サブシステム属性が表示されない場合は,3.6.1 項 で述べた手順に従って IPV6 オプションの選択とインストールを行います。 サブセットのインストールについての詳細は, setld(8),『インストレーション・ガイド』,『システム管理ガイド』 を参照してください。

5.4.2    カーネルでの Mobile IPv6 サポートの確認

次のコマンドを入力して,Mobile IPv6 サポートがカーネルに構成されていることを確認します。

# sysconfig -q ipv6 mobileipv6_enabled

mobileipv6_enabled 属性が定義されていない場合,カーネルに Mobile IPv6 は構成されていません。 正しいカーネルを実行しているか確認してください。 正しいカーネルを実行している場合は,doconfig コマンドでカーネルを再構成します。 詳細は 3.6.1 項 を参照してください。

mobileipv6_enabled が定義されていても 1 が設定されていない場合は,次のコマンドで再構成します。

# sysconfig -r ipv6 mobileipv6_enabled=1
mobileipv6_enabled: reconfigured

これで,システムはコレスポンデント・ノードとして動作できるようになります。 コレスポンデント・ノードはルータとしてパケットを転送することもできます。 システムをルータとしても使用する場合は,5.5 節 を参照してください。

5.5    Mobile IPv6 の構成

ここでは,IPv6 ノードをコレスポンデント・ノードとして構成する方法,および IPv6 ルータとして動作するコレスポンデント・ノードとして構成する方法を説明します。

5.5.1    コレスポンデント・ノードの構成

カーネルに IPv6 サポートが組み込まれていることが確認できれば,システムはコレスポンデント・ノードとして機能し,ホーム・エージェントを通してモバイル・ノードと通信できるようになり,Binding Update をモバイル・ノードから受信した後は,モバイル・ノードと直接通信できるようになります。 これ以上の構成は不要です。

IPv6 インストール後の作業については,3.8 節 を参照してください。

5.5.2    コレスポンデント・ノードおよびルータの構成

コレスポンデント・ノードを IPv6 ルータとしても動作させる場合は,次の手順で操作します。

  1. システムを IPv6 ルータとして構成します。 詳細は 3.7.2 項 を参照してください。

  2. システムのブート時に,ip6rtrd デーモンが Mobile IPv6 環境で機能するようにします。 まず,次のコマンドを実行してデーモンのフラグを取得します。

    # rcmgr get IP6RTRD_FLAGS
    

    次に,-m オプションをフラグに追加します。 直前のコマンドでフラグが表示されなかった場合は,次のコマンドでフラグに -m オプションを追加します。

    # rcmgr set IP6RTRD_FLAGS "-m"
    

  3. /etc/ip6rtrd.conf ファイルを編集して,Router Advertisement の間隔を次のように変更します。

    #
    # Sample ip6rtrd configuration file
    #
    interface interface-name {
            MinRtrAdvInterval 0 /* Min = seconds */
            MinRtrAdvIntervalMsec 500 /* + milliseconds */
            MaxRtrAdvInterval 1 /* Max = seconds*/
            MaxRtrAdvIntervalMsec 500 /* + milliseconds */
            }
    

    これにより,IPv6 ルータは要求によらないマルチキャストの Router Advertisement を 0.5 〜 1.5 秒おきに送信し,モバイル・ノードの移動を早く検出できるようにします。 詳細は ip6rtrd.conf(4) を参照してください。

  4. 次のコマンドで IPv6 を再起動します。

    # /usr/sbin/rcinet restart inet6
    

IPv6 インストール後の作業については,3.8 節 を参照してください。

5.6    Mobile IPv6 環境のモニタリング

Mobile IP 環境をモニタリングするには,次のものを使用します。

5.6.1    tcpdump の使用

tcpdump ユーティリティは,IPv6 パケットの取り込み,解析,出力を行います。 Binding Update および Acknowledgement オプションは,IPv6 パケットの IPv6 Destination Option ヘッダに含まれています。 tcpdump を使用するには,カーネルに PACKETFILTER オプションを構成する必要があります。 詳細は packetfilter(8) を参照してください。

可能なパケットをすべて表示するには,インタフェースを Promiscuous および Copyall モードに構成してから,次のように tcpdump コマンドを実行します。

# pfconfig +p +c interface
# tcpdump -i interface -s 1500 [-x] [ipv6]

詳細は tcpdump(8) を参照してください。

5.6.2    netstat の使用

netstat -b コマンドを使用すると,現在の移動バインディングとその属性がモニタリングできます。 コマンドの出力例を次に示します。

# netstat -b
 
 

Mobile IPv6 Binding Cache
 
Home Address     Care-of Address    Flags     Refs  Sequence#   Lifetime
testhome         testcoa            A            1     1         43
  [1]               [2]             [3]          [4]        [5]        [6]

上記の例では,次のことがわかります。

  1. モバイル・ノードは,ホーム・アドレス testhome を持っています。 [例に戻る]

  2. 現在,気付アドレス testcoa に到達できます。 [例に戻る]

  3. Binding Update に対して肯定応答を行うように要求しました (A フラグ)。 [例に戻る]

  4. このバインディング・データ構造には,現在 1 つの参照があります。 [例に戻る]

  5. Binding Update でシーケンス番号に 1 を設定しています。 [例に戻る]

  6. このバインディングの存続期間は 43 秒残っています。 存続期間が満了すると,エントリはキャッシュから削除されます。 [例に戻る]

netstat -bs コマンドを使用すると,移動バインディングに関する統計情報がモニタリングできます。 コマンドの出力例を次に示します。

# netstat -bs
Mobile IPv6:
       1 entry in binding cache
       1 add
       0 deletes
       0 changes
       0 frees
       3 lookups

詳細は 11.4 節 および netstat(1) を参照してください。

5.6.3    IPv6 デーモンのログ・ファイル

ip6rtrd デーモンは,情報イベントと重要なイベントを /var/adm/syslog.dated/date/daemon.log ファイルに記録します。 詳細は 11.9 節 を参照してください。

ip6rtrd デーモンのデバッグ情報のロギングを有効にするには,次のコマンドを実行します。

# rcmgr set IP6RTRD_FLAGS "-d -l -m /usr/tmp/ip6rtrd.log"
# /usr/sbin/rcinet restart inet6