以下、本発明の実施形態について図面を参照して説明する。
図1は、2つのネットワークインタフェースを有する通信装置100の構成例を示したものである。ここでは、これら2つのネットワークインタフェースを第1のインタフェース106、第2のインタフェース108とする。
図1では、通信装置100は、2つのサブネット(ホームサブネット113とリモートサブネット114)のうち、第1のインタフェース106を介してホームサブネット113に接続している場合を示している。
ホームサブネット113は、通信装置100のホームネットインタフェース部102が接続する必要のあるネットワーク(例えば、宅内や職場のサブネット等)のことである。すなわち、ホームサブネット113は、ホームネットインタフェース部102に対し、予め定められたネットワークである。
リモートサブネット114は、ホームサブネット113以外のネットワークである。
ホームサブネット113とリモートサブネット114の物理レイヤ、データリンクレイヤなどの仕様は、同一であってもよいし、異なっていてもよい。
通信装置100は、アプリケーション101、第1及び第2のインタフェース106,108の他に、L2VPNインタフェース120,ホームネットインタフェース部102、ホームネットインタフェースコントローラ(以下、簡単にコントローラと呼ぶことがある)115を備える。
第1の及び第2のインタフェース106、108は、イーサネット(登録商標)などの有線ネットワークインタフェースや無線ネットワークインタフェースである。
ホームネットインタフェース部102は、アプリケーション101がホームサブネット113と通信する際に用いる仮想ネットワークインタフェースである。
ホームネットインタフェース部102は、アプリケーション101がホームネットインタフェース部102を介してホームサブネット113上の通信機器と通信を行う際に用いるIPアドレスを記憶するIPアドレス記憶部103、ホームネットインタフェース部102のリンク層アドレス(ここでは、「HNIF」)を記憶する第1のリンク層アドレス記憶部104、通信装置100が備える各インタフェース(ここでは、第1のインタフェース106,第2のインタフェース108、L2VPNインタフェース120)のうち、スレーブ化したインタフェースのリンク層アドレスを記憶する第2のリンク層アドレス記憶部105を有する。
なお、IPアドレス記憶部103に記憶されているIPアドレスは、予め静的に割り当てられたIPアドレスか、自動構成によって設定されたIPアドレスか、ホームネットインタフェース部102のリンク層アドレス「HNIF」に対応して、DHCPを用いるなどして取得したIPアドレスである。
ホームネットインタフェース部102は、ホームサブネット113に接続しているインタフェース(図1では、第1のインタフェース106)を通じて、ホームサブネット113上の通信機器とデータフレームのやり取りを行う。これにより、アプリケーション101はホームネットインタフェース部102を通じて、ホームサブネット113とフレームの送受信を行うことが可能になる。
ホームネットインタフェース部102がホームサブネット113上の通信機器との通信に使用するネットワークインタフェースを「スレーブインタフェース」と呼ぶ。ホームネットインタフェース部102が、通信装置100が持ついずれかのインタフェースを、ホームサブネット113との間での通信に利用できるように設定することを「スレーブ化」と呼ぶことにする。
図1において、現在、ホームネットインタフェース部102のスレーブインタフェースである第1のインタフェース106が、ホームネットインタフェース部102とホームサブネット113を介してリンク層フレームを配送する際には、データフレームのリンク層ヘッダのみを参照し、ネットワーク層のヘッダを参照する必要がない。そのため、スレーブ化された第1のインタフェース106にIPアドレスを設定する必要はない。
ホームネットインタフェース部102は、仮想ネットワークインタフェースであるため、ホームネットインタフェース部102の初期設定時に、ホームネットインタフェース部102が使用するリンク層アドレスを決定する必要がある。
ホームネットインタフェース部102のリンク層アドレスの決定方法としては複数考えられるが、ここではそのうちのいくつかを例にとり説明する。
1つ目の方法は、設定ファイルや設定ツールを用いて、アドレスを静的に決める方法である。予め定められたリンク層アドレスを記憶媒体に記録しておき、ホームネットインタフェース部102の機能を実現するためのソフトウェアの起動時にその記憶媒体から、ホームネットインタフェース部102で使用するリンク層アドレスを読み出し、ホームネットインタフェース102部の第1のリンク層アドレス記憶部104に記憶する。
2つ目の方法は、通信装置100が持つネットワークインタフェースのリンク層アドレスを利用する方法である。ホームネットインタフェース部102が最初にスレーブ化したネットワークインタフェースのリンク層アドレスを、ホームネットインタフェース部102に初期設定する。すなわち、当該リンク層アドレスを第2のリンク層アドレス記憶部104に記憶する。以後スレーブのネットワークインタフェースを変更してもホームネットインタフェース部102はそのリンク層アドレスをそのままホームネットインタフェース部102のリンク層アドレスとして使用する。なお、初期設定以後にリンク層アドレス記憶部104のリンク層アドレスを変更することも可能である。
次に、アプリケーション101とネットワークとの間でのデータフレーム送受信について図1及び図2を参照して説明する。
アプリケーション101からホームネットインタフェース部102に入力された送信フレームは、現在、ホームネットインタフェース部102のスレーブインタフェースに設定されている第1のインタフェース106に転送され、ホームサブネット113に送信される。
図2において、スレーブインタフェース(ここでは、第1のインタフェース106)が、ホームサブネット113からのフレームを受信すると(ステップS1)、第1のインタフェース106は、ホームサブネット113から受信したフレームを、ホームネットインタフェース部102に転送するか否かを、2つの条件に従って決定する。
ここで、スレーブインタフェースは、受信したフレームを全て、ホームネットインタフェース部102に転送する無差別モード(プロミスキャスモード)と、受信したフレームの宛先リンク層アドレスが、当該スレーブインタフェースのアドレス(つまりここでは、後述するように、ホームネットインタフェース部102のリンク層アドレス)、マルチキャストアドレス及びブロードキャストアドレスであるフレームのみをホームネットインタフェース部102に転送する、無差別モードでない通常の動作モードのいずれか一方に設定されているものとする。
第1のインタフェース106が無差別モード(プロミスキャスモード)に設定されている場合には(ステップS2)、受信したフレームは、全て、ホームネットインタフェース部102に転送する(ステップS4)。
第1のインタフェース部102が無差別モードに設定されていると、ホームネットインタフェース部102で受信する必要のない、ホームネットインタフェース部102宛でないユニキャストフレーム(マルチキャストやブロードキャスト宛でないフレーム)も受信してしまうことになり、必要の無いフレームを処理する負荷が通信装置100に掛かってしまうという欠点がある。
第1のインタフェース106が、上記無差別モードに設定されていない場合には(ステップS3)、ホームネットインタフェース部102宛でないユニキャストフレームは破棄し、ホームネットインタフェース部102宛てのユニキャストフレーム、マルチキャストアドレス及びブロードキャストアドレスのフレームは、ホームネットインタフェース部102に転送する(ステップS4)。
スレーブインタフェースのリンク層アドレスをホームネットインタフェース部102のリンク層アドレスに変更することにより、スレーブインタフェースを無差別モードに設定しなくても、当該スレーブインタフェースのアドレス(つまりここでは、ホームネットインタフェース部102のリンク層アドレス)、マルチキャストアドレス及びブロードキャストアドレスであるフレームを、ホームネットインタフェースに転送させ、それ以外のフレームを破棄させることができる。不要なフレームをスレーブインタフェースに破棄させることにより、スレーブインタフェースからホームネットインタフェース部102へのフレーム転送の負荷や、ホームネットインタフェース部102でのフレーム受信処理の負荷を軽減することが可能になる。
次に、スレーブインタフェースを変更する際の処理手順について説明する。
図3は、ホームネットインタフェース部102にスレーブ化されているインタフェースと各インタフェースのリンク層アドレスの関係を示すテーブルである。
図3(c)は、通信装置100のインタフェース106、108のいずれもスレーブインタフェースとして設定されていない場合を示している。この場合には、ホームネットインタフェース部102のリンク層アドレスは、当該ホームネットインタフェース部102に予め定められた(あるいは上述のように設定された)リンク層アドレス「HNIF」であり、このリンク層アドレス「HNIF」が第1のリンク層アドレス記憶部104に記憶されている。また、スレーブインタフェースが存在しないことから、第2のリンク層アドレス記憶部105には、何も記憶されていない。
第1のインタフェース106のリンク層アドレスは、当該第1のインタフェースに予め定められているリンク層アドレス「IF1」であり、このリンク層アドレス「IF1」がリンク層アドレス記憶部107に記憶されている。
第2のインタフェース108のリンク層アドレスは、当該第2のインタフェースに予め定められているリンク層アドレス「IF2」であり、このリンク層アドレス「IF2」がリンク層アドレス記憶部109に記憶されている。
図3(a)は、第1のインタフェース106がスレーブ化されている場合を示している。スレーブインタフェースである第1のインタフェース106のリンク層アドレス記憶部107は、ホームネットインタフェース部102のリンク層アドレス「HNIF」で上書きされている。第1のインタフェース106のスレーブ化される前の、もともとのリンク層アドレス「IF1」は、ホームネットインタフェース部102の第2のリンク層アドレス記憶部105に記憶される。
図3(b)は、第2のインタフェース108がスレーブ化されている場合を示している。図3(a)と同様に、スレーブインタフェースである第2のインタフェース108のリンク層アドレス記憶部109は、ホームネットインタフェース部102のリンク層アドレス「HNIF」で上書きされている。また、第2のインタフェース108のスレーブ化される前の、もともとのリンク層アドレス「IF2」は、ホームネットインタフェース部102の第2のリンク層アドレス記憶部105に記憶される。
スレーブインタフェースを切替える際の処理手順について説明する。ここでは、スレーブインタフェースを第1のインタフェース106から第2のインタフェース108に切替える場合を例にとり説明する。
まず、第1のインタフェース106のリンク層アドレス記憶部107に、第1のインタフェース106のスレーブ化前のアドレス「IF1」を書き込む。次に、スレーブ化される第2のインタフェース108のリンク層アドレス記憶部109に記憶されているアドレス「IF2」を、ホームネットインタフェース102の第2のリンク層アドレス記憶部105に記憶する。そして、ホームネットインタフェース102の第1のリンク層アドレス104に記憶されているアドレス「HNIF」をスレーブインタフェースである第2のインタフェース108のリンク層アドレス記憶部109に書き込む。
この結果、図3(a)に対応する状態から図3(b)に対応する状態へと移行した。
ホームネットインタフェース部102・スレーブインタフェース間では、全ての送受信フレームをそのまま転送する。ホームネットインタフェース部102とスレーブインタフェースのリンク層アドレスは同じアドレスになっているため、転送するフレームのアドレスの書換え等を行う必要はない。
スレーブインタフェースを変更する際に、変更前と変更後の各インタフェースのリンク層アドレスが変更されるため、その変更をスイッチに知らせ、スイッチのFDB(フォワーディングデータベース)を更新させる。FDBは、スイッチがどのポートにどの宛先アドレスのフレームを転送するかを示す情報を記憶する。
スイッチに対してFDBを更新させるための方法として、スレーブ化されたインタフェースが、無償ARP(gratuitous ARP)要求などの、送信元リンク層アドレスとしてホームネットインタフェース部102のアドレス「HNIF」を有するフレームをブロードキャストする方法がある。
インタフェースのリンク層アドレスと、スイッチ200のフォワーディングデータベース(FDB)との関係について、図4及び図5を参照して説明する。
図4は、通信装置100の第1のインタフェース106がスイッチ200の第1のポート201に接続されている様子を示している。また、第1のFDB211は、第1のポート201に対応するFDBであり、第1のポート201に転送すべきフレームの宛先アドレスを記憶する。
図5は、第1のインタフェース106が、ホームネットインタフェース部102にスレーブ化される際の、リンク層アドレス、及びスイッチ200の第1のFDB211の状態を示している。
まず、第1のインタフェース106が、図5(a)の状態から、ホームネットインタフェース部102にスレーブ化されると、第1のインタフェース106のリンク層アドレス「IF1」がホームネットインタフェース部102のリンク層アドレス「HNIF」に変更され、図5(b)に示す状態に移る。
しかし、スイッチ200の第1のポート201に対応する第1のFDB211は、変更前の第1のインタフェース106のリンク層アドレス「IF1」のままであるため、ホームネットインタフェース部102のリンク層アドレスを宛先とするデータフレームは、第1のポート201には転送されない。
そこで、第1のインタフェース106のリンク層アドレスの変化をスイッチ200の第1のポート201に知らせるため、第1のインタフェース106は、無償ARP(gratuitous ARP)等の、送信元リンク層アドレスが変更後の「HNIF」であるフレームを、スイッチ200の第1のポート201に送信する。これにより、第1のポート201に対応する第1のFDB211に、変更後のアドレス「HNIF」が登録され、図5(c)の状態へと移行する。
第1のポート201の第1のFDB211に、変更後のリンク層アドレスが登録されたことにより、スイッチ200は、ホームネットインタフェース部102宛のフレームを第1のポート201に転送するようになり、第1のインタフェース106はホームネットインタフェース部102宛のフレームを受信できるようになる。
このように、インタフェースのリンク層アドレスが変化する場合や、インタフェースが接続しているスイッチやポートが変わる場合などに、通信装置100が無償ARP等のフレームを能動的に送信することで、スイッチのフォワーディングデータベース(FDB)の更新を早めることが可能である。
但し、これはあくまでスイッチのフォワーディングデータベースを更新するための処理であり、通信相手ホストのARPテーブル等スイッチ以外の通信機器のデータベースを変更させるものではない。
本実施形態では、ホームネットインタフェース部102のリンク層アドレスは変更しないため、インタフェース切り替え時に、IPアドレスとリンク層アドレスの対応は変化せず、通信相手のホストのARPテーブルを変更させる必要性は生じないことは前述の通りである。
ホームネットインタフェースコントローラ(簡単に、コントローラと呼ぶ)115は、ホームネットインタフェース部102がスレーブ化するインタフェースを選択するために、通信装置100が持つ各ネットワークインタフェースの情報を取得する。通信装置100が持つ各ネットワークインタフェースのリストや、設定されているIPアドレスやリンク層アドレス、リンク状態(インタフェースの有効/無効、キャリアのON/OFF等)などの各インタフェースの情報は、ホームサブネット113に接続しているインタフェースの検出(後述)を行う場合に有用である。
また、各インタフェースの状態が変化した場合は、随時インタフェース状態の変化を検知する。例えば、通信装置100として、ノートパソコン(ノートPC)を使用している場合、本体にあるネットワークインタフェース部102に加えて、新たに、例えばPCMCIA(personal computer memory card international association)規格のPCカード型のネットワークインタフェースが挿入されてオペレーティング・システムに認識された場合、そのインタフェースがホームサブネットに接続されているか否かを検知する必要性が出てくるため、インタフェースの追加・削除やリンク状態の変化、IPアドレスやリンク層アドレスの変化を検知する。
インタフェースの情報が変化した際に、随時インタフェースの情報を取得するためには、例えば、定期的にインタフェースの状態を取得するためのAPI等を通じて問合せを行う方法や、インタフェースの状態変化をその都度検知するためのAPIを利用する方法などがある。
ホームネットインタフェースコントローラ115が、スレーブ化するインタフェースを選択する際には、通信装置100が備える各インタフェースの情報を保持するインタフェース状態テーブル116を用いる。インタフェース状態テーブル116を参照することで、ホームネットインタフェース部102がスレーブ化するインタフェースを選択する際の処理を効率化することが可能である。
各インタフェースの情報とは、接続しているサブネットがホームサブネットであるか否かや、インタフェースのIPアドレス、リンク層アドレス、各種パラメータ(リンクスピードやIPパケットのカプセル化方式等)のような、スレーブ化するインタフェースを選択する際に基準とする情報のことである。
ホームネットインタフェースコントローラ115は、各インタフェースの情報の変化を監視し、インタフェース状態テーブル116を随時検知・更新し、常に最新の情報を保持するようにする。
次に、ホームネットインタフェースコントローラ115がスレーブ化するインタフェースを選択するための処理手順について説明する。
ホームネットインタフェースコントローラ115がスレーブ化するインタフェースを選択するためには、各インタフェースがホームサブネット113に接続されているか否かを検知する必要がある。
例えば、図1ではホームサブネット113に接続している第1のインタフェース106がホームネットインタフェース部102にスレーブ化されているため、ホームネットインタフェース部102は、ホームサブネット113と通信を行うことが可能になっている。
第1のインタフェース108がリモートサブネット114に接続しているとする。このとき、もしホームネットインタフェース1部02が第2のインタフェース108をスレーブ化すると、第2のインタフェース108はリモートサブネット114に接続しているため、ホームネットインタフェース部102は、ホームサブネット113と通信をすることができなくなってしまう。
つまり、通信装置100が持つインタフェースのなかから、ホームサブネット113に接続しているインタフェースを検出する必要がある。
通信装置100が備える各インタフェースが、ホームサブネット113に接続されているかどうかを検知する方法を大きく2つに分類して示す。
第1の種別の方法は、ホームサブネット113内の特定のホストへの通信可能性(アクセシビリティ)を調べることである。但し、ここでは例としてホームサブネット113に接続されているルータにフレームを送信する場合を扱うが、ルータに限らずホームサブネットに接続されているホストであれば利用可能である。
第2の種別の方法は、各インタフェースが接続しているネットワークで使用されているIPアドレスに関する情報から、ホームサブネットであるか否かを検知する方法である。
第1の種別の方法について説明する。
まず、通信装置100が備えるネットワークインタフェース夫々から、ホームサブネット113に接続している特定のホストに対してICMP(internet control message protocol)/ICMPv6 echoフレームを送信することで検知する方法を説明する。
図6は、通信装置100のホームネットインタフェースコントローラ115の処理動作を示すフローチャートである。
ホームネットインタフェースコントローラ115は、通信装置100が備えるネットワークインタフェース夫々からホームサブネット113のルータへ向けてICMP echoリクエストまたはICMPv6 echoリクエストを、各インタフェースが接続しているネットワークに対して送信する(ステップS11)。
その後、各インタフェースで、当該インタフェースが接続するネットワークから、予め定められた時間内に、フレームを受信した場合(ステップS12,ステップS13)、当該フレームの宛先リンク層アドレスが、ホームサブネット113のルータのアドレスか否かを調べる(ステップS14)。
宛先リンク層アドレスが、ホームサブネット113のルータのアドレスであれば、ホームネットインタフェースコントローラ115は、そのフレームを受信したインタフェースは、ホームサブネット113に接続されていると検知する(ステップS15)。宛先リンク層アドレスが、ホームサブネット113のルータのアドレスでなければ(ステップS14)、再びフレーム受信ループステップS12に戻る。
予め定められた時間内に、ホームサブネット113のルータからのフレームの受信を確認できなかったインタフェースについては、当該インタフェースの接続先ネットワークはホームサブネット113ではなく、リモートサブネット114であると検知する(ステップS16)。
ICMP/ICMPv6 echoリクエストフレームのフォーマットを図7に示す。宛先リンク層アドレスは、ホームサブネット113のルータのリンク層アドレス、送信元リンク層アドレスは、ホームネットインタフェース部102のリンク層アドレス「HNIF」である。また、宛先IP/IPv6アドレスは、ホームサブネット113のルータのIP/IPv6アドレス、送信元IP/IPv6アドレスは、ホームネットインタフェース部102のIP/IPv6アドレスである。
もし、ICMP/ICMPv6 echoリクエストフレームの送信元リンク層アドレスを、そのフレームを送信する実際のインタフェースのアドレスに設定してしまうと、ホームサブネット113のルータが、ホームネットインタフェース部102のIP/IPv6アドレスに対して複数の異なるリンク層アドレスからフレームを受信してしまい、ルータのARP(address resolution protocol)テーブルを混乱させてしまう要因になりかねない。これを回避するために、当該フレームの送信元リンク層アドレスをホームネットインタフェース部102のリンク層アドレス「HNIF」に設定する。
ICMP/ICMPv6 echoリクエストフレームの送信元リンク層アドレスをホームネットインタフェース部102のリンク層アドレスに設定すると、ホームサブネット113のルータからの返信フレームの宛先リンク層アドレスもホームネットインタフェース部102のリンク層アドレスになる。その結果、ICMP/ICMPv6 echoリクエストフレームの送信元のインタフェースが当該フレームの返信フレームを受信した場合、自分宛のフレームでないと判断し、ルータからの当該返信フレームを破棄してしまう可能性がある。このため、図6の処理手順では、ホームネットインタフェースコントローラ115は、各インタフェースを無差別モード(プロミスキャスモード)に設定し、全てのフレームを受信するように設定する。
以上の方法は、ホームサブネット113のルータが通信装置100からのICMP/ICMPv6 echoリクエストフレームを受信した直後に、通信装置100宛のICMP echo replyを送信する場合を想定しているが、当該ルータがreplyを返す代わりに、ホームネットインタフェース部102のIPアドレスに対するリンク層アドレスを問い合わせるためのARP requestフレームを送信する可能性がある。この場合の通信装置100とルータとの間の処理シーケンスを図8及び図9に示す。
図8は、ホームサブネット113に接続しているインタフェースからICMP echoリクエストフレームを送信する場合を示している。
通信端末100の備える複数のインタフェースのうちの1つが、ホームサブネット113に接続している場合、当該インタフェースがICMP echoリクエストフレームを送信する(ステップS21)。当該フレームが、ホームサブネット113のルータが受信すると、ルータは、ARP requestフレームを送信する(ステップS22)。
当該ARP requestフレームの送信元リンク層アドレスは、当該ルータのリンク層アドレスである。このフレームを受信した通信装置100のコントローラ115は、当該フレームの送信元リンク層アドレスが、ホームサブネット113のルータのアドレスであることから、当該インタフェースは、ホームサブネット113に接続されていると検知する(ステップS23)。
なお、冗長ではあるが、ホームサブネット113のルータからのARP requestフレームを通信装置100が受信すると、そのフレームに対して、ホームネットインタフェース部102のリンク層アドレス「HNIF」を返答するARP replyフレームを送信し、ルータからのICMP echo replyフレームを受信することで検知する方法も考えられる(ステップS24〜ステップS25)。
ホームサブネット113のルータのIPアドレスがグローバルアドレスである場合は、当該ルータから送信されるフレームの送信元IPアレスが当該ルータのIPアドレスかどうかを調べることでも検知することができる。通信装置100のいずれかのインタフェースで受信したフレームの送信元IPアドレスが、ホームサブネット113のルータのIPアドレスと一致した場合、当該インタフェースはホームサブネット113に接続されていると検知する。
図9は、ホームサブネット113ではない別のネットワーク、すなわち、リモートサブネット114に接続されているインタフェースからICMP echoリクエストフレームを送信する場合を示している。
リモートサブネット114に接続されているインタフェースから、ICMP echoフレームを送信すると(ステップS31)、当該フレームの宛先リンク層アドレスは、ホームサブネット113上のルータのリンク層アドレスであるため、当該フレームは、ホームサブネット113上のルータへは到達できない。従って、当該インタフェースは、当該ルータからのフレームを受信できず、コントローラ115は、当該インタフェースはホームサブネット113に接続されていない、すなわち、リモートサブネット114に接続されていると検知する(ステップS32)。
ホームサブネット113上のルータのIPアドレスに対するリンク層アドレスを問い合わせるARP requestフレームを送信することにより、ホームサブネット113に接続されているか否かを検知する方法について、図10を参照して説明する。
図10は、通信装置100のホームネットインタフェースコントローラ115の処理動作を示すフローチャートである。
通信装置が備えるネットワークインタフェースからARP requestフレームを送信する(ステップS41)。これ以降の処理フローは、図6のICMP echoを使った検知方法のステップS12以降と同様である。
すなわち、インタフェースが所定時間内に受信したフレームのリンク層アドレスが、ホームサブネット113上のルータのアドレスであれば、コントローラ115は、当該インタフェースはホームサブネット113に接続されていると検知する(ステップS42〜ステップS45)。リンク層アドレスがホームサブネット113上のルーラのアドレスであるフレームを所定時間内に受信できなかったインタフェースは、リモートサブネット114に接続されていると検知する(ステップS42,ステップS43、ステップS46)。
ARP requestフレームのフォーマットを図11に示す。宛先リンク層アドレスはマルチキャストアドレス、送信元リンク層アドレスはホームネットインタフェース部のリンク層アドレス「HNIF」である。ARPヘッダの送信元リンク層アドレス及びIPアドレスは、「HNIF」及びホームネットインタフェース部102のIPアドレスである。また、ARPヘッダのターゲットIPアドレスは、ホームサブネット113上のルータのIPアドレスである。
ホームサブネット113がIPv6で運用されている場合も、上記同様に、ルータに対してICMPv6 echoを送信し、ルータからのICMPv6 echo replyフレームを受信することで検知が可能である。IPv4の場合と異なる点として、送信する検知フレームの宛先IPアドレスは、グローバルスコープのアドレスではなくリンクローカルアドレスを使用する方が検知の正確さが向上する。なぜなら、もしグローバルアドレスを使用した場合、プレフィックスが変更されるネットワークでは、ルータのグローバルアドレスが変化した場合に検知できなくなってしまうからである。検知手順は、IPv4の場合の図6と同様である。
また、ICMPv6 echoフレーム送信の際に、宛先IPアドレスをAll Router MulticastアドレスまたはAll Node Multicastアドレスに設定することによっても実施可能である。この場合、同一リンク内のルータ全てにechoフレームを送信することができ、ホームサブネット113のルータからのecho replyを受信することができる。この方法の特徴は、ホームサブネット113のルータのIPアドレスを予め知っておく必要がなく、当該ルータのリンク層アドレスさえ保持してあれば検知が可能である点である。検知手順は、IPv4の場合の図6と同様である。
ホームサブネット113に接続されている特定のホストへのアクセシビリティを基準にホームサブネットに接続しているか否かを検知するためには、通信装置100は予め、検知する対象のホストの情報を記憶しておく必要がある。ホストの情報とは、リンク層アドレスやIPアドレスで、検知フレームの生成の際と、受信フレームがルータからのフレームか否かを判断する際に必要になる。
オームサブネット113のルータに対して、RARP(reverse address resolution protocol) requestフレームを送信することにより、通信装置100がホームサブネットに接続されているか否かを検知することができる。この場合の通信装置100のホームネットインタフェースコントローラ115の処理動作を図12に示す。
通信装置100が備えるネットワークインタフェースのそれぞれから、ホームサブネット113のルータのリンク層アドレスから当該ルータのIPアドレスを問い合わせるためのRARP requestフレームを送信する(ステップS51)。
その後、各インタフェースで、当該インタフェースが接続するネットワークから、予め定められた時間内に、フレームを受信した場合(ステップS52、ステップS53)、当該フレームの宛先リンク層アドレスが、ホームサブネット113のルータのアドレスか否かを調べる(ステップS54)。
宛先リンク層アドレスが、ホームサブネット113のルータのアドレスであれば、コントローラ115は、そのフレームを受信したインタフェースは、ホームサブネット113に接続されていると検知する(ステップS55)。宛先リンク層アドレスが、ホームサブネット113のルータのアドレスでなければ(ステップS54)、再びフレーム受信ループステップS52に戻る。
予め定められた時間内に、ホームサブネット113のルータからのフレームの受信を確認できなかったインタフェースについては、当該インタフェースの接続先ネットワークはホームサブネット113ではなく、リモートサブネット114であると検知する(ステップS56)。
RARP requestフレームのフォーマットを図13に示す。宛先リンク層アドレスは、ホームサブネット113のルータのリンク層アドレス、送信元リンク層アドレスは、ホームネットインタフェース部102のリンク層アドレス「HNIF」である。また、RARPヘッダ内のターゲットアドレスは、ホームサブネット113のルータのリンク層アドレス、送信元アドレスは、ホームネットインタフェース部102のIPアドレスである。
この方法の特徴は、ホームサブネット113のルータについて予め保持するべき情報はリンク層アドレスのみでよく、IPアドレスを必要としない点である。IPアドレスが変化してしまうホストに対してもリンク層アドレスが変更されない限り検知可能である。但し、アクセシビリティを調べるためのターゲットとなるホストがRARP reqestに対して返答しない場合は、この方法を使うことはできない。
次に、第2の種別の方法について説明する。
第2の種別の方法は、各インタフェースが接続しているネットワークで使用されているIPアドレスに関する情報から、ホームサブネットであるか否かを検知する方法である。
IPv4ネットワークでは、DHCP(dynamic host configuration protocol)によってグローバルアドレスを取得できる場合、そのアドレス中のサブネットアドレス(ネットワークアドレス)を比較することで検知する方法を説明する。
図14は、通信装置100のコントローラ115の処理動作を示すフローチャートである。
コントローラ115は、通信装置100が備えるネットワークインタフェース夫々からDHCP discoverフレームを送信する(ステップS61)。
その後、各インタフェースで、当該インタフェースが接続するネットワークから、予め定められた時間内に、DHCPサーバからDHCP offerフレームを受信した場合(ステップS62、ステップS63)、当該フレームに含まれる取得可能なIPアドレスがグローバルアドレスであり(ステップS64)、しかも、当該アドレスに含まれるネットワークアドレスは、ホームサブネット113で使用されている当該ホームサブネット113に対応するネットワークアドレスであるとき(ステップS65)、当該インタフェースはホームサブネット113に接続されていると検知する(ステップS66)。
予め定められた時間内に受信された、DHCP offerフレームに含まれる取得可能なIPアドレスがグローバルアドレスでないとき(ステップS64)、あるいは、グローバルアドレスであっても当該アドレスのネットワークアドレスは、ホームサブネット113に対応するネットワークアドレスでないとき(ステップS65)、当該インタフェースはリモートサブネット114に接続されていると検知する(ステップS67)。
さらに、DHCP discoverフレームを送信した後、予め定められた時間内に、DHCP offerフレームを受信できなったときも、ステップS67へ進む。
なお、ホームサブネット113で使われているIPアドレスがプライベートアドレスである場合は、IPアドレスだけではホームサブネット113であるか否かを同定できないため、この方法によるサブネット検知は適用できない。
IPv6ネットワークでは、ICMPv6 ND(Neighbor Discovery)機能を利用することで検知が可能である。RA(Router Advertisement)でIPv6アドレスのプレフィックスが配布されている場合、そのプレフィックスがホームサブネット113のものかどうか比較することで検知可能である。
この場合の通信装置100のコントローラ115の処理動作を、図15に示す。
ホームサブネット113のルータからRAを受信するために、通信装置100が備えるネットワークインタフェース夫々からICMPv6 RS(Router Solicitation)フレームを送信する(ステップS71)。なお、上記RSフレームを送信することなく、ホームサブネット113のルータから定期的に送信されるRAフレームを受信する、という手法もある。
その後、各インタフェースで、当該インタフェースが接続するネットワークから、予め定められた時間内に、RAフレームを受信した場合(ステップS72,ステップS73)、当該フレーム中のプレフィックスが、ホームサブネット113のプレフィックスと同一であれば、コントローラ115は、そのフレームを受信したインタフェースは、ホームサブネット113に接続されていると検知する(ステップS75)。
受信したRAフレーム中のプレフィックスが、ホームサブネット113のプレフィックスとは異なるとき(ステップS74)、当該インタフェースはリモートサブネット114に接続されていると検知する(ステップS76)。
さらに、RSフレームを送信した後、予め定められた時間内に、RAフレームを受信できなったときも、ステップS76へ進む。
ICMPv6 RSフレームのフォーマットを図16に示す。リンク層ヘッダの宛先リンク層アドレスは、マルチキャストアドレス、送信元アドレスは、ホームネットインタフェース部102のリンク層アドレス「HNIF」である。また、IPv6ヘッダの送信元アドレスは、ホームネットインタフェース部102のIPv6アドレス、宛先アドレスは、ARM(All Router Multicast)、もしくはAll Node Multicastである。
IPv6グローバルアドレスをDHCPv6によって取得できる場合には、IPv4のDHCPの場合と同様に、取得したIPアドレスがホームサブネットのものかどうかを調べることで検知が可能である。
この場合、図14と同様に、コントローラ115は、通信装置100が備えるネットワークインタフェースそれぞれから、上記DHCP discoverフレームに対応する、DHCPv6リクエストフレームを送信する。その後、各インタフェースで、当該インタフェースが接続するネットワークから、予め定められた時間内に、DHCPv6サーバから、上記DHCP offerフレームに対応するDHCPv6リプライフレームを受信した場合、当該フレームに含まれる取得可能なIPv6アドレスがグローバルアドレスであり、しかも、当該アドレスに含まれるネットワークアドレスは、ホームサブネット113で使用されている当該ホームサブネット113に対応するネットワークアドレスであるとき、当該インタフェースはホームサブネット113に接続されていると検知する。
予め定められた時間内に受信された、DHCPv6リプライフレームに含まれる取得可能なIPv6アドレスがグローバルアドレスでないとき、あるいは、グローバルアドレスであっても当該アドレスのネットワークアドレスは、ホームサブネット113に対応するネットワークアドレスでないとき、当該インタフェースはリモートサブネット114に接続されていると検知する。さらに、DHCPv6リクエストフレームを送信した後、予め定められた時間内に、DHCPv6リプライフレームを受信できなったときも、当該インタフェースはリモートサブネット114に接続されていると検知する。
ここまでは、それぞれの方法を単独で適用する方法を述べてきたが、上記のような方法を組み合わせてホームサブネットに接続しているか否かを検知することも可能である。
ここでは一例として、ICMPv6 echoフレームと、ICMPv6 NDを使ってホームサブネットに接続しているか否かの検知を行う方法について、図17に示すフローチャートを参照して説明する。
コントローラ115は、通信装置100が備えるネットワークインタフェース夫々から、ICMPv6 RSフレームと、ICMPv6 echoリクエストフレームとを送信する(ステップS81、ステップS82)。
その後、各インタフェースで、当該インタフェースが接続するネットワークから、予め定められた時間内に、フレームを受信した場合(ステップS83、ステップS84)、当該フレームの送信元リンク層アドレスが、ホームサブネット113のルータのリンク層アドレスであるときには(ステップS85)、コントローラ115は、当該フレームを受信したインタフェースは、ホームサブネット113に接続されていると検知する(ステップS88)。
送信元リンク層アドレスが、ホームサブネット113のルータのものでない場合は、当該フレームは、ホームサブネット113のルータ以外のホストから送信されたICMPv6 RAフレームである可能性がある。当該フレームが、ICMPv6 RAフレームである場合には(ステップS86)、当該フレーム中のIPアドレスのプレフィックスがホームサブネット113のプレフィックスであるとき(ステップS87)、コントローラ115は、当該フレームを受信したインタフェースは、ホームサブネット113に接続されていると検知する(ステップS88)。
ICMPv6 RAフレームと、ICMPv6 echoリクエストフレームとを送信した後、予め定められた時間内に、ICMP echo replyフレームあるいはICMPv6 RAフレームを受信できなったときは、当該インタフェースはホームサブネット113に接続されていないことを検知する(ステップS89)。
以上のような方法で、通信装置100が備える各インタフェースが接続しているネットワークがホームサブネット113であるか否かを検知することができる。
ホームサブネット113に接続しているインタフェースの検出方法について、以下いくつかの例を挙げる。
第一の例は、図18に示すように、ホームサブネット113に接続しているインタフェースが見つかるまで、コントローラ115は、前述の図6〜図17を用いて説明した検知処理のいずれかを用いて、ホームサブネットに接続しているインタフェースを検知する方法である。
通信装置100が備える各ネットワークインタフェースについて、コントローラ115は、前述の図6〜図17を用いて説明した検知処理のいずれかを用いてホームサブネット113に接続されているインタフェースを検知する(ステップS91〜ステップS92)。ホームサブネット113に接続されているインタフェースが1つでも検知されたら(ステップS93)、処理を終了する。
図18に示す処理手順では、ホームサブネット113に接続しているインタフェースが1つでも検知されたら、その時点で処理を終了してしまうので、ホームサブネット113に接続しているインタフェースが複数ある場合は、そのうちの1つしか検出できないことになる。
例えば、通信装置100が、無線ネットワークインタフェースと有線ネットワークインタフェースインタフェースを具備していて、その両方が同じサブネットに接続されている場合には、そのどちらか一方しか検出できないことになる。
第二の例は、図19に示すように、単純に、無線端末100が備える全てのインタフェースについて、コントローラ115は、当該インタフェースが接続するネットワークがホームサブネット113であるか否かを前述の図6〜図17を用いて説明した検知処理のいずれかを用いて調べる方法である。
図19に示す処理手順は、図18に示す処理手順と違い、ホームサブネット113に接続しているインタフェースを検出しても処理を終了せずに、全てのインタフェースについて検知処理を行う。これにより、ホームサブネット113に接続されているインタフェースが複数であっても、その全て検出することができる。
但し、図19に示す処理手順を用いた場合、通信装置100の複数のインタフェースがホームサブネットに接続している場合、検知処理に不具合が生じる可能性がある。接続先のネットワークを検知するために送信するフレームの送信元アドレスには、いずれもホームネットインタフェース部102のアドレスを使用しているが、通信装置100からホームサブネット113へのリンクが複数ある場合、スイッチ200が、送信元リンク層アドレスが同じフレームを異なるポートで受信してしまうため、スイッチ200のFDBが混乱してしまう問題が発生しかねないためである。
第三の例として、第一及び第二の例の問題を回避することのできる方法を図20に示すフローチャートを参照して説明する。
通信装置100が備える各ネットワークインタフェースについて、順番に、コントローラ115は、前述の図6〜図17を用いて説明した検知処理のいずれかを用いてホームサブネット113に接続されているインタフェースを検知する(ステップS111〜ステップS113)。
検知処理を実行するインタフェースの順番は、ホームネットインタフェース部102にスレーブ化されているインタフェースがあれば、一番目に当該インタフェースに対し検知処理を実行する。それ以外のインタフェースについては、任意の順番で検知処理を実行する。
ホームサブネット113に接続しているインタフェースを検出した場合は(ステップS113)、当該インタフェースから、ホームサブネット113にブロードキャストアドレスまたはマルチキャストアドレスのフレーム(ここでは、同一リンク検知フレームと呼ぶ)を送信し(ステップS114)、まだ検知処理を実行していないインタフェースがこのフレームを受信するかどうかを調べる。検知処理を実行していないインタフェースが、同一リンク検知フレームを受信した場合には(ステップS115)、当該インタフェースはホームサブネット113に接続されているインタフェースと同一サブネットに接続されている、つまりホームサブネット113に接続されていると検知できる(ステップS116)。一方、まだ検知処理を実行していないインタフェースが、同一リンク検知フレームを予め定められた時間までに受信しなければ、当該インタフェースは、ホームサブネット113に接続していないと検知できる(ステップS117)。
ステップS114で送信する同一リンク検知フレームは、例えば、図7のICMP/ICMPv6 echoリクエストフレームであり、このフレームの宛先リンク層アドレスと宛先IPアドレスがブロードキャストまたはマルチキャストアドレスに設定されたフレームである。なお、上記同一リンク検知フレームは、図7のICMP echoフレームに限るものではなく、ネットワークにブロードキャストまたはマルチキャスト送信できる他のプロトコルのフレームでも可能である。
図20に示す手順によれば、通信装置100は、当該通信装置100が備える複数のネットワークインタフェースのうち、ホームサブネット113に接続されているインタフェース全てを検出することができる。
コントローラ115は、例えば、図20に示す手順により、ホームサブネット113に接続しているインタフェースを検出すると、そのインタフェースをスレーブ化するようにホームネットインタフェース部102に対して指示を出す。ホームサブネット113に接続しているインタフェースが検出されなかった場合には、ホームサブネット113へL2VPN接続を行う。
(L2VPN(Layer2バーチャルプライベートネットワーク)接続)
次に、コントローラ115が、例えば、図20に示す手順を行った後のコントローラ115の処理動作について、図21に示すフローチャートを参照して説明する。
例えば、図20に示す手順を行った後、ホームサブネット113に接続しているインタフェースがあった場合には(ステップS201)、コントローラ115は、ホームサブネット113に接続されている複数のインタフェースのうち、最も優先度の高いインタフェースを選択する(ステップS202)。これは、ホームサブネット113に接続しているインタフェースが複数あった場合に、どのインタフェースをスレーブ化させるかを選ぶための処理である。選択する基準となるポリシーは様々なものが考えられるが、例えば、無線LANでホームサブネット113に接続するインタフェースと、有線LANでホームサブネット113に接続するインタフェースが存在する場合、「無線より有線を優先する」といったポリシーが考えられる。また、各インタフェースのリンクスピードを参照したり、予め設定ファイル等で優先するインタフェースを指示しておき、それを参照して優先度を決める方法等も考えられる。
選択されたインタフェースが、ホームネットインタフェース部102にスレーブ化されていない場合は、ホームネットインタフェース部102に対して、当該インタフェースをスレーブ化するよう指示を出す(ステップS204)。選択されたインタフェースが既にスレーブ化されている場合は何もせず、処理を終了する。
ホームサブネット113に接続しているインタフェースが存在しない場合は(ステップS201)、L2VPNを用いた接続により、ホームサブネット113と同一サブネットでの遠隔アクセスを実現する必要がある。
ホームサブネットへL2VPN接続が可能である場合は(ステップS205)、L2VPN接続を行う(ステップS206)。L2VPN接続中は、ホームネットインタフェース部102からみれば、L2VPNインタフェース120がホームサブネット113に接続していることになる。
通信装置100がどのネットワークにも接続していない場合や、いずれかのリモートサブネットに接続していてもホームサブネットへのL2VPN接続ができない場合は、L2VPN接続を行わず終了する。
以下、通信装置100がサブネット間を移動する場合に、ホームサブネット113とL2VPN接続して通信を行う場合の処理動作について説明する。なお、ここで、リモートサブネット114とは、ホームサブネット113以外のネットワークを指し、ホームサブネット113へ接続するためのL2VPNサーバへアクセスすることが可能であることを想定している。
また、ホームネットインタフェース部102を備える通信装置100としては、図1に示すような、有線LANに接続するための第1のインタフェース106、無線LANに接続するための第2のインタフェース108、L2VPNインタフェース120といった3つのインタフェースを持つ通信装置100を例にとり説明する。
なお、L2VPNインタフェース120は、当該インタフェースに予め定められたリンク層アドレスを記憶するリンク層アドレス記憶部121を有する。
図22は、通信装置100のホームネットインタフェースコントローラ(簡単にコントローラとも呼ぶ)115の構成例を示したもので、コントローラ115とともに、ネットワークインタフェース部102と、L2VPN接続した場合に有効化されるL2VPNインタフェース120と、第1及び第2のインタフェース106,108を示している。
コントローラ115は、インタフェース状態テーブル116、IF状態変化検出部117、サブネット検出部118、制御部119を含む。
IF状態変化検出部117は、通信装置100へのインタフェースの追加・削除やリンク状態の変化、IPアドレスやリンク層アドレスなどの各インタフェースの状態の変化を検知し、通信装置100が持つ各インタフェースの情報を取得する。通信装置100が持つ各ネットワークインタフェースのリストや、設定されているIPアドレスやリンク層アドレス、リンク状態(インタフェースの有効/無効、キャリアのON/OFF等)などの各インタフェースの情報は、インタフェース状態テーブル116に記憶されている。また、各インタフェースの状態の変化を検知した場合には、その都度、インタフェース状態テーブル116を更新する。
サブネット検出部118は、前述の図6〜図17を用いて説明した検知処理のいずれかと、図18〜図10のうちのいずれからの手順を用いてホームサブネット113に接続されているインタフェースを検出する。検出結果は、インタフェース状態テーブル116に記憶する。
制御部119は、ホームネットインタフェース部102に対して、スレーブインタフェースを変更する指示や、L2VPNインタフェース120に対してL2VPN接続・切断の制御を行う。
L2VPNインタフェース120は、制御部119からの制御により、有効化/無効化され、L2VPN接続の接続・切断の処理や、L2VPNで送受信するデータの処理を行う。データの処理とは、フレームをカプセル化する処理や、カプセル化を解いてフレームを取り出す処理のことを指す。これらの処理の詳細は後述する。
図23は、図22に示したコントローラ115の処理動作を説明するためのフローチャートである。
IF状態変化検出部117は、通信装置100が備える各インタフェースの状態変化を検出し(ステップS201)、インタフェース状態テーブル116の更新を行う(ステップS202)。サブネット検出部118は、前述の図6〜図17を用いて説明した、ホームサブネット113に接続しているインタフェースの検知処理のいずれかと、図18〜図10のうちのいずれからの手順を用いてホームサブネット113に接続されているインタフェースを検出し(ステップS203)、検出結果をインタフェース状態テーブル116に記憶する(ステップS204)。
制御部119は、インタフェース状態テーブル116を参照して、ホームサブネット113に接続しているインタフェースがある場合には(ステップS205)、図21に示すような処理動作を行って、そのうちのいずれか1つを、ホームネットインタフェース部102のスレーブインタフェースとして選択し、ホームネットインタフェース102へ、当該選択されたインタフェースをスレーブインタフェースとするための指示を出す。この指示を受けて、ホームネットインタフェース102は、選択されたインタフェースをスレーブ化する(ステップS206)。
制御部119は、ホームサブネット113に接続しているインタフェースが存在しない場合には、L2VPN接続を行う(ステップS207)。
以上の処理が終了すると、コントローラ115は、再びステップS201へ戻り、上記ステップS201〜ステップS207の処理を行うことで、ホームネットインタフェース部102は、第1及び第2のインタフェース106,108、L2VPNインタフェース120のうちのいずれかのインタフェースをスレーブインタフェースとして用い、常にホームサブネット113に接続していることになる。
[動作例1]
通信装置100が、ホームサブネット113に接続している状態から、ホームサブネット113以外のネットワーク(リモートサブネット114)に接続する場合の通信装置100の動作について説明する。
図24、図25、及び図26はそれぞれ、通信装置100がホームサブネット113に接続している場合、通信装置100がホームサブネット・リモートサブネット間を移動中の場合、通信装置100がリモートサブネット114に接続した場合を示す図である。
図24に示すように、通信装置100がホームサブネット113に接続されている初期状態では、通信装置100のホームネットインタフェース部102は、ホームサブネット113に接続している第1のインタフェース105をスレーブ化している。ホームネットインタフェース部102のIPアドレスはDHCP等にて動的に割り当てられているか、固定的に割り当てられているか、または自動構成によって設定されているものとする。
IF状態変化検出部117は、常時または定期的に、通信装置100の各インタフェースの状態を監視していて(図23のステップS201)、インタフェースの状態の変化を検出したか、予め設定された一定時間、インタフェースの状態の変化が無かった場合は、ステップS203のサブネット検出部118の処理に移る。
ステップS203で、スレーブインタフェースが変更されない場合、再びステップS201に戻る。このように、サブネット検出部118は、インタフェースの状態に変化がない場合でも定期的に処理を行い、各インタフェースの接続されているネットワークが変化していないかどうか監視を行う。
ここで、通信装置100の第1のインタフェース106が、一旦ホームサブネット113との接続を切断すると、図25に示す状態に移行する。
図25に示す状態では、ホームサブネット113へのアクセシビリティが無くなっているため、図23のステップS203のサブネット検出部118の処理が行われると、ホームサブネット113に接続しているインタフェースを検出できないため、図23のステップS207のL2VPN接続の処理に移る。図25に示す状態では、通信装置100は、どのネットワークにも接続されていないため、ステップS207では、L2VPN接続を行わず処理を終了し、再びステップS201に戻る。
この間、ホームネットインタフェース部102とスレーブインタフェースである第1のインタフェース106の状態は変化しない。すなわち、第1のインタフェース106のリンク層アドレス記憶部107には、ホームネットワークインタフェース部102のリンク層アドレス「HNIF」が記憶され、ホームネットワークインタフェース部102の第2のリンク層アドレス記憶部105には、第1のインタフェース106のリンク層アドレスが記憶されており、第1のインタフェース106は、スレーブインタフェースのままである。また、アプリケーション101から見ると、パケットの送信はできるものの受信ができないという状態である。
この後、通信装置100が、ホームサブネット113以外のネットワークであるリモートサブネット114に接続すると、図26に示す状態に移行する。図26では、通信装置100は、第1のインタフェースを通じて、リモートサブネット114に接続している。
IF状態変化検出部117は、このようなインタフェースの状態変化を検出する(図23のステップS201)。そして、ステップS203では、第1のインタフェース106はホームサブネット113に接続されていないため、サブネット検出部118は、ホームサブネット113に接続されているインタフェースを検出できない。そこで、ステップS207へ進み、L2VPN接続処理を行う。
この場合、制御部119は、L2VPNインタフェース120を制御し、ホームサブネット113へのL2VPN接続を行う。L2VPNインタフェース120は、実際にリモートサブネット114に接続している第1のインタフェース106を通じて、ホームサブネット113のルータ301との間で通信を行い、L2VPN接続のための予め定められた処理手順を実行する。
L2VPN接続が成功すると、無線端末100のL2VPNインタフェース120と、ホームサブネット113のルータ301のL2VPNインタフェース304とが有効となり、通信装置100のL2VPNインタフェース120と、ホームサブネット113のルータ301のL2VPNインタフェース304との間のL2VPNトンネル501が有効となる。
この時、ルータ301では、ホームサブネット113に接続されている第1のインタフェース302とL2VPNインタフェース304とをブリッジ305で接続する。
これにより、L2VPNインタフェース120は、L2VPNトンネル501を介してホームサブネット113上の通信機器とデータの送受信を行うことができる。
通信装置100でL2VPNインタフェース120が有効化されると、IF状態変化検出部117は、L2VPNインタフェース120が新たに有効化されたことを検知し(図23のステップS201)、インタフェース状態テーブル116に、L2VPNインタフェース120に関する情報を記憶する(ステップS202)。そして、ステップS203へ進む。
ステップS203において、L2VPNインタフェース120は、第1のネットワーク106を介してホームサブネット113とフレームの送受信が可能なため、サブネット検出部118は、L2VPNインタフェース120は、ホームサブネット113に接続されていると検知する。従って、ステップS205からステップS206へ進む。
ステップS206では、制御部119は、ホームネットインタフェース部102に対し、L2VPNインタフェース120をスレーブ化すべく指示を出す。
この指示を受けて、ホームネットワークインタフェース部102は、L2VPNインタフェース120のリンク層アドレス記憶部121に記憶されている、当該L2VPNインタフェース本来のリンク層アドレスを第2のリンク層アドレス記憶部105に記憶し、ホームネットインタフェース部102のリンク層アドレス「HNIF」をL2VPNインタフェース120のリンク層アドレス記憶部121に書き込む。この結果、L2VPNインタフェース120は、ホームネットインタフェース部102のスレーブインタフェースとして設定され、ホームネットインタフェース部102が、ホームサブネット113と再び接続されたことになり、アプリケーション101は、ホームネットインタフェース部102を用いてホームサブネット113上の通信機器との通信が行える。
次に、図24に示すように、通信装置100が第1のインタフェースをスレーブインタフェースとして用いてホームサブネット113に接続しているときの、通信装置100におけるフレーム送受信の手順について、図27を参照して説明する。
通信装置100で動作しているアプリケーション101が、送信すべきデータ「データ1」をホームネットインタフェース部102へ渡す(ステップS301)。
ホームネットインタフェース部102は、アプリケーション101から渡されたデータ「データ1」に、宛先リンク層アドレスD1として、ホームサブネット113上の通信機器のリンク層アドレスを付加し、送信元リンク層アドレスS1として、ホームネットインタフェース部102のリンク層アドレス「HNIF」を付加して、ホームサブネット113上の通信機器へ送信するフレームを生成し、生成されたフレームを、スレーブインタフェースである第1のインタフェース106に渡す(ステップS302)。
第1のインタフェース106は、渡されたフレームの送信元リンク層アドレスS1が、リンク層アドレス記憶部107に記憶されているリンク層アドレス「HNIF」と同一であることから、(このフレームの送信元リンク層アドレスS1を書き換えることなく)そのまま、接続しているホームサブネット113へ送出する(ステップS303)。
これにより、ホームネットインタフェース部102から出力されたフレームが、ホームサブネット113に送信されたことになる。
一方、ホームサブネット113上の通信機器から送信されたフレームを通信装置100が受信する場合には、まず、スレーブインタフェースである第1のインタフェース106が当該フレームを受信する(ステップS311)。第1のインタフェース106のリンク層アドレス記憶部107に記憶されているリンク層アドレスが「HNIF」であることから、第1のインタフェース106は、受信したフレームに付加されている宛先リンク層アドレスD2が、「HNIF」、マルチキャストアドレス、ブロードキャストアドレスのうちのいずれかであれば、当該フレームをホームネットインタフェース部102へ出力する(ステップS312)。ホームネットインタフェース部102は、渡されたフレーム中のデータ「データ2」をアプリケーション101へ渡す(ステップS313)。
これにより、ホームサブネット113上の通信機器からホームネットインタフェース部102宛に送信されたフレームが、ホームネットインタフェース部102に送信されたことになる。
次に、図26に示すように、第1のインタフェース106を介して、リモートサブネット114に接続している通信装置100が、L2VPNインタフェース120をスレーブインタフェースとして用いてホームサブネット113に接続しているときの、通信装置100におけるフレーム送受信の手順について、図28を参照して説明する。
通信装置100で動作しているアプリケーション101が、送信すべきデータ「データ1」をホームネットインタフェース部102へ渡す(ステップS321)。
ホームネットインタフェース部102は、アプリケーション101から渡されたデータ「データ1」に、宛先リンク層アドレスD1として、ホームサブネット113上の通信機器のリンク層アドレスを付加し、送信元リンク層アドレスS1として、ホームネットインタフェース部102のリンク層アドレス「HNIF」を付加して、ホームサブネット113上の通信機器へ送信するフレームを生成し、生成されたフレームを、スレーブインタフェースであるL2VPNインタフェース120に渡す(ステップS322)。
L2VPNインタフェース120は、渡されたフレームの送信元リンク層アドレスS1が、L2VPNインタフェース120のリンク層アドレス記憶部121に記憶されているリンク層アドレス「HNIF」と同一であることから、当該フレームの送信元リンク層アドレスS1を書き換えることなく、当該フレームにL2VPNプロトコルヘッダを付加するなどのL2VPNの所定の処理を施し、L2VPNデータを生成する。生成された当該L2VPNデータは、第1のインタフェース106へ出力される(ステップS323)。
第1のインタフェース106は、渡されたL2VPNデータにIPヘッダを付加し、IPパケットを生成し、当該IPパケットに宛先リンク層アドレスD2を付加し、さらに、送信元リンク層アドレスS2として、リンク層アドレス記憶部107に記憶されているリンク層アドレス「IF1」を付加して、接続しているリモートサブネット114へ送出する(ステップS324)。
なお、宛先リンク層アドレスD2は、リモートサブネット114上のルータ401の当該リモートサブネット114に接続するインタフェース402のリンク層アドレスである。
また、第1のインタフェース106で生成されるIPパケットの送信元IPアドレスは、第1のインタフェース106のIPアドレスであり、宛先IPアドレスは、ホームサブネット113上のルータ301の第2のインタフェース303のIPアドレスである。
リモートサブネット114のルータ401は、通信装置100の第1のインタフェース106から送信されたフレームを受信すると、当該フレームのIPパケット部分を取り出して、インターネット500へ送出する(ステップS325)。
ホームサブネット113上のルータ301は、図26に示すように、第2のインタフェース303でインターネット500に接続されている。ルータ301は、第2のインタフェース303を通じて当該IPパケットを受信し、当該IPパケットからL2VPNデータを取り出す。当該L2VPNデータは、L2VPNインタフェース304に渡される(ステップS326)。
L2VPNインタフェース304は、当該L2VPNデータから、フレームを取り出し、当該フレームをブリッジ305に渡す。なお、このフレームの送信元リンク層アドレスS1は、前述したように、「HNIF」である。
ブリッジ305は、当該フレームを第1のインタフェース302から、ホームサブネット113へ送出する(ステップS327)。
これにより、通信装置100のホームネットインタフェース部102から出力されたフレームが、ホームサブネット113上の通信機器に送信されたことになる。
次に、ホームサブネット113上の通信機器から送信されたフレームを通信装置100が受信する場合について、図28を参照して説明する。
ホームサブネット上の通信機器から送信されたフレームには、宛先リンク層アドレスD3として、「HNIF」、マルチキャストアドレス、ブロードキャストアドレスのうちのいずれかが付加されているものとする(ステップS331)。このフレームは、ルータ301の第1のインタフェース302で受信され、そのままブリッジ305へ出力される。ブリッジ305は、当該フレームをL2VPNインタフェース304へ渡し、L2VPNインタフェース304は、当該フレームにL2VPNプロトコルヘッダを付加するなどの、L2VPNの所定の処理を施す。生成された当該L2VPNデータは、第2のインタフェース303にてIPヘッダが付加され、当該インタフェースからインターネット500へ送出される(ステップS332)。
なお、当該IPパケットの送信元IPアドレスは、第2のインタフェース303のIPアドレスであり、宛先IPアドレスは、通信装置100の第1のインタフェース106のIPアドレスである。
当該IPパケットは、リモートサブネット114のルータ401により受信される(ステップS333)。ルータ401は、当該IPパケットに、宛先リンク層アドレスD4として、第1のインタフェースのリンク層アドレス「IF1」を付加し、さらに、送信元リンク層アドレスS4として、リモートサブネット114上のルータ401の当該リモートサブネット114に接続するインタフェース402のリンク層アドレスを付加して、リモートサブネット114へ送出する(ステップS334)。
ルータ401で、宛先及び送信元リンク層アドレスが付加されて、リモートサブネット114へ送出されたフレームは、第1のインタフェース106で受信される。第1のインタフェース106は、当該フレーム中のL2VPNデータをL2VPNインタフェース120へ出力する(ステップS335)。
L2VPNインタフェース120は、当該L2VPNデータからフレームを取り出す。当該フレームに付加されている宛先リンク層アドレスが、「HNIF」、マルチキャストアドレス、ブロードキャストアドレスのうちのいずれかである場合には、当該フレームをホームネットインタフェース部102へ出力する(ステップS336)。なお、L2VPNインタフェース120が無差別モードに設定されている場合は、宛先リンク層アドレスに係わらず全てのフレームをホームネットインタフェース部102へ出力する。
ホームネットインタフェース部102は、入力されたフレームからアプリケーション101へ渡すべきデータ「データ2」を取り出して、それをアプリケーション101へ出力する(ステップS337)。
これにより、ホームサブネット113から、通信装置100のホームネットインタフェース部102宛に送信されたフレームが、ホームネットインタフェース部102に受信されたことになる。
[動作例2]
上記[動作例2]とは逆に、通信装置100が、リモートサブネット114に接続している状態から、ホームサブネット113に接続する場合の通信装置100の動作について説明する。
図26に示すように、通信装置100が、第1のインタフェース106を通じて、リモートサブネット114に接続されている初期状態では、ホームネットインタフェース部102は、L2VPNインタフェース120をスレーブインタフェースとして用いて、ホームサブネット113上の通信機器と通信を行っている。
L2VPNインタフェース120のリンク層アドレスは、ホームネットインタフェース部102のリンク層アドレス「HNIF」である。すなわち、第1のインタフェース106をスレーブ化してホームサブネット113に接続されているときと同じリンク層アドレスであるから、当該L2VPNインタフェース120及びホームネットインタフェース部102のIPアドレスは、第1のインタフェース106をスレーブ化してホームサブネット113に接続されているときと同じIPアドレスである。
リモートサブネット114に接続している間は、[動作例1]で述べたように、ホームサブネット113に接続されていた場合と同様、定期的にIF状態変化検出部117やサブネット検出部118による監視が行われる。
この状態から、通信装置100の第1のインタフェース106が一旦リモートサブネット114との接続を切断した場合、図25に示す状態に移行する。
通信装置100は、L2VPNトンネル501を介したホームサブネット113との通信ができなくなるため、この間、ホームサブネット113へのアクセシビリティが失われる。この間の動作は、[動作例1]で述べた、ホームサブネット113との接続を切断さいた場合の動作と同様である。
この後、通信装置100が、ホームサブネット113に接続すると、図24に示す状態に移行する。図24では、通信装置100が、第1のインタフェース106を介してホームサブネット113に接続している。
IF状態変化検出部117で、このようなインタフェースの状態変化を検出する(図23のステップS201)。そして、ステップS203では、サブネット検出部118は、第1のインタフェース106はホームサブネット113に接続されていると検知し、ステップS206へ進む。
ステップS206では、制御部119は、ホームネットインタフェース部102に対し、第1のインタフェース106をスレーブ化するための指示を出す。
ホームネットインタフェース部102は、この指示を受けて、第1のインタフェース106のリンク層アドレス記憶部107に記憶されている、第1のインタフェース106のリンク層アドレス「IF1」をホームネットワークインタフェース部102の第2のリンク層アドレス記憶部105に記憶し、第1のインタフェース106のリンク層アドレス記憶部107に、ホームネットワークインタフェース部102のリンク層アドレス「HNIF」を書き込み、第1のインタフェース106をスレーブインタフェースとする。
これにより、ホームネットインタフェース部102が、ホームサブネット113と再び接続されたことになり、アプリケーション101はホームネットインタフェース部102を用いてホームサブネット113との通信が可能になる。
[動作例3]
次に、通信装置100が複数のネットワークに接続する場合の通信装置100の動作を説明する。
通信装置100が備える複数のインタフェースのうちの1つが、既にホームサブネット113に接続しているときに、当該複数のインタフェースのうちの他の1つが、さらにホームサブネット113に接続した場合の通信装置100の動作について説明する。
図29は、通信装置100が、第2のインタフェース108を通じて無線LANで、ホームサブネット113に接続している状態を示している。通信装置100のホームネットインタフェース部102は、第2のインタフェース108をスレーブインタフェースに設定して、ホームサブネット113と無線接続して通信を行っている。
ホームネットインタフェース部102のIPアドレスは、DHCPで割り当てられているか、固定的に割り当てられているか、または自動構成によって設定されているものとする。
この後、通信装置100の第1のインタフェース108が、第1のインタフェース106を通じて有線LANで、ホームサブネット113に接続すると、図30に示す状態に移行する。
IF状態変化検出部117が、このようなインタフェースの状態の変化を検出し(図23のステップS201)、ステップS203において、サブネット検出部118の処理が行われる。この場合のサブネット検出部118の処理動作を、図20を参照して説明する。
図20のステップS113では、ホームネットインタフェース部102の現在のスレーブインタフェースである第2のインタフェース108が、ホームサブネット113に接続されていると検知されるので、ステップS114へ進み、この第2のインタフェース108から同一リンク検知フレームを送信する。
図30に示す状態では、第1のインタフェース106がホームサブネット113に接続しているため、第1のインタフェース106は、当該同一リンク検知フレームを受信するので(ステップS115)、サブネット検出部118は、第1のインタフェース106は、ホームサブネット113に接続していると検知する(ステップS116)。
そこで、次に、制御部119は、ホームサブネット113に接続されている第1及び第2のインタフェース106,108のうちのいずれか一方を選択する。
図30に示すような状況は、例えば有線LANと無線LANが同じ場所で運用されていて、通信装置100の有線インタフェースと無線インタフェースの両方がそれぞれ有線LANと無線LANに接続するような場合に起こり得る。
ここでは、制御部119は、無線より有線を優先するポリシーに基づき、有線LANで接続されている第1のインタフェース106をスレーブインタフェースとして選択する(図23のステップS206、図21のステップS202)。制御部119は、ホームネットインタフェース部102に、第1のインタフェース106をスレーブ化するための指示を出力する(図23のステップS206,図21のステップS204)。
この指示を受けて、ホームネットインタフェース部102は、まず、第2のリンク層アドレス記憶部105に記憶されている、現在のスレーブインタフェースである第2のインタフェース108のリンク層アドレスを、第2のインタフェース108のリンク層アドレス記憶部109に書き込み、第2のインタフェース108のスレーブ化を解く。次に、新たなスレーブインタフェースである第1のインタフェース106のリンク層アドレス記憶部107に記憶されている、第1のインタフェース106のリンク層アドレス「IF1」をホームネットワークインタフェース部102の第2のリンク層アドレス記憶部105に記憶し、第1のインタフェース106のリンク層アドレス記憶部107に、ホームネットワークインタフェース部102のリンク層アドレス「HNIF」を書き込み、第1のインタフェース106をスレーブインタフェースとする。
これにより、ホームネットインタフェース部102が、第1のインタフェース106を介してホームサブネット113と接続されたことになり、アプリケーション101はホームネットインタフェース部102を用いてホームサブネット113との通信が可能になる。
[動作例4]
リモートサブネット114に接続されている通信装置100のホームネットインタフェース部102が、L2VPNインタフェース120をスレーブインタフェースとして用いてホームサブネット113に接続しているときに、当該通信装置100の備える他のインタフェースが、さらにホームサブネット113に接続した場合の通信装置100の動作について説明する。
図31に示すように、通信装置100が、第1のインタフェース106を通じて、リモートサブネット114に接続されている初期状態では、ホームネットインタフェース部102は、L2VPNインタフェース120をスレーブインタフェースとして用いて、ホームサブネット113上の通信機器と通信を行っている。この状態は、図26と同様である。
ホームネットインタフェース部102のIPアドレスは、DHCPで割り当てられているか、固定的に割り当てられているか、または自動構成によって設定されているものとする。
この後、通信装置100の第2のインタフェース108が、ホームサブネット113に接続する。
IF状態変化検出部117は、このようなインタフェースの状態変化を検知し(図23のステップS201)、ステップS203において、サブネット検出部118の処理が行われる。この場合のサブネット検出部118は、前述の[動作例3]と同様、図20に示す処理動作を行い、L2VPNインタフェース120の他に、第2のインタフェース108もホームサブネット113に接続していると検知する。
このような状況は、例えば有線LANと無線LANが同じ場所で運用されていて、有線LANと無線LANが別のセグメントで運用されている場合に、通信装置100の有線インタフェースと無線インタフェースの両方がそれぞれ有線LANと無線LANに接続するような場合に起こり得る。
次に、制御部119は、ホームサブネット113に接続されているL2VPNインタフェース120及び第2のインタフェース108のうちのいずれか一方を選択する。ここでは、L2VPNインタフェースよりも直接ホームサブネット113に接続している第2のインタフェース108を優先するというポリシーが適用されていると仮定する。すると、制御部119は、第2のインタフェース108を新たなスレーブインタフェースとして選択し、ホームネットインタフェース部102へ第2のインタフェース108をスレーブ化するよう指示する(図23のステップS206)。
この指示を受けて、ホームネットインタフェース部102は、まず、第2のリンク層アドレス記憶部105に記憶されている、現在のスレーブインタフェースであるL2VPNインタフェース120のリンク層アドレスを、L2VPNインタフェース120のリンク層アドレス記憶部121に書き込み、スレーブ化を解く。次に、新たなスレーブインタフェースである第2のインタフェース108のリンク層アドレス記憶部109に記憶されている、第2のインタフェース106のリンク層アドレス「IF2」をホームネットワークインタフェース部102の第2のリンク層アドレス記憶部105に記憶し、第2のインタフェース108のリンク層アドレス記憶部109に、ホームネットワークインタフェース部102のリンク層アドレス「HNIF」を書き込み、第2のインタフェース108をスレーブインタフェースとする。
以上の動作を行った結果を図32に示す。ホームサブネット113に接続されている第2のインタフェース108をホームネットインタフェース部102がスレーブ化している。ホームサブネットインタフェース部102は、第2のインタフェース108から、直接ホームサブネット113に接続するため、ルータ301と通信装置1000間のL2VPN接続が切断されている。但し、スレーブインタフェースを切替えてからすぐにL2VPNを切断しなければならないというわけではなく、例えば一定時間L2VPNの切断を保留するようなポリシーも考えられる。
[動作例5]
図32に示すように、通信装置100の備える第1のインタフェース106,第2のインタフェースがリモートサブネット114とホームサブネット113とにそれぞれ接続している状態から、ホームサブネット113への接続が切断された場合の通信装置100の動作について説明する。
図32に示すように、通信装置100の第2のインタフェース108は、ホームサブネット113に接続し、ホームネットインタフェース部102のスレーブインタフェースに設定されている。ホームネットインタフェース部102のIPアドレスは、DHCPで割り当てられているか、固定的に割り当てられているか、または自動構成によって設定されているものとする。
この後、第2のインタフェース108とホームサブネット113との接続が切断されると、IF状態変化検出部117は、このようなインタフェースの状態変化を検出し(図23のステップS201)、ステップS203において、サブネット検出部118の処理が行われる。
この場合、ホームサブネット113に接続しているインタフェースが存在しないため(ステップS205)、ステップS207へ進み、L2VPN接続のための処理が行われる。
制御部119は、L2VPNインタフェース120を制御し、ホームサブネット113へのL2VPN接続を行う。L2VPNインタフェース120は、実際にリモートサブネット114に接続している第1のインタフェース106を通じて、ホームサブネット113のルータ301との間で通信を行い、L2VPN接続のための予め定められた処理手順を実行する。
L2VPN接続が成功すると、図31に示すように、無線端末100のL2VPNインタフェース120と、ホームサブネット113のルータ301のL2VPNインタフェース304とが有効となり、通信装置100のL2VPNインタフェース120と、ホームサブネット113のルータ301のL2VPNインタフェース304との間のL2VPNトンネル501が有効となる。
IF状態変化検出部117は、L2VPNインタフェース120が新たに有効化されたことを検知し(図23のステップS201)、インタフェース状態テーブル116に、L2VPNインタフェース120に関する情報を記憶する(ステップS202)。そして、ステップS203へ進む。
ステップS203において、L2VPNインタフェース120は、第1のネットワーク106を介してホームサブネット113とフレームの送受信が可能なため、サブネット検出部118は、L2VPNインタフェース120は、ホームサブネット113に接続されていると検知する。従って、ステップS205からステップS206へ進む。
ステップS206では、制御部119は、ホームネットインタフェース部102に対し、L2VPNインタフェース120をスレーブ化すべく指示を出す。
この指示を受けて、ホームネットワークインタフェース部102は、まず、第2のリンク層アドレス記憶部105に記憶されている、現在のスレーブインタフェースである第2のインタフェース108のリンク層アドレスを、第2のインタフェース108のリンク層アドレス記憶部109に書き込み、スレーブ化を解く。次に、L2VPNインタフェース120のリンク層アドレス記憶部121に記憶されている、当該L2VPNインタフェース本来のリンク層アドレスを第2のリンク層アドレス記憶部105に記憶し、ホームネットインタフェース部102のリンク層アドレス「HNIF」をL2VPNインタフェース120のリンク層アドレス記憶部121に書き込む。この結果、L2VPNインタフェース120は、ホームネットインタフェース部102のスレーブインタフェースとして設定され、ホームネットインタフェース部102が、ホームサブネット113と再び接続されたことになり、アプリケーション101は、ホームネットインタフェース部102を用いてホームサブネット113上の通信機器との通信が行える。
以上説明したように、上記実施形態によれば、ホームネットインタフェース部102がホームサブネット113上の通信機器と通信を行う際に用いるスレーブインタフェースが切り替わっても(図1の第1のインタフェース106、第2のインタフェース108、L2VPNインタフェース120のうちのどれがスレーブインタフェースに設定されようと)、スレーブインタフェースのリンク層アドレスは、常に、ホームネットインタフェース部102のリンク層アドレス「HNIF」である。
スレーブインタフェースのIPアドレスがDHCP等で動的に割り当てられる場合、スレーブインタフェースであるインタフェースのリンク層アドレスは、常に同じリンク層アドレス「HNIF」であるから、このリンク層アドレス「HNIF」に対応して、IPアドレスを取得するようにDHCP等が適切に設定されていれば、ホームネットインタフェース部102が、どのインタフェースをスレーブインタフェースとして用いていようと、同じIPアドレスである確率が非常に高くなる。
すなわち、通信装置100は、どこにいようと(どのインタフェースをスレーブインタフェースとして用いようとも)、常に同じリンク層アドレス「HNIF」とIPアドレスを用いて、ホームサブネット113上の通信機器と通信を行うことができる。
通信装置100が、どのインタフェースをスレーブインタフェースとして用いようとも、ホームサブネット113上の通信機器と通信を行う際に用いるリンク層アドレスとIPアドレスの組合せが不変であると、ホームサブネット113上の通信機器のARPテーブル上の書き換えを行う必要が無くなり、より安定した通信の継続が可能となる。
また、通信装置100では、スレーブインタフェースの切替が起こった場合に、フレーム中の送信元・宛先リンク層アドレスの書き換えが不要となり、フレーム処理の負荷を軽減することができる。
通信装置100がどのネットワーク(サブネット)に接続していても、L2VPN接続が可能な限り、アプリケーション101は、ホームサブネット113内にいる場合と同様の環境で継続的にホームサブネット113へアクセスすることが可能になる。