(57)【特許請求の範囲】
【請求項１】
通信トンネルを用いてデータリンク層パケットをカプセル化することにより仮想的に構築されるＬＡＮである仮想ＬＡＮを提供する仮想ＬＡＮシステムにおいて、
前記仮想ＬＡＮに参加するノード装置は、前記データリンク層パケットをカプセル化するための通信トンネルを仮想ＬＡＮにおける仮想的なリンクとしてエミュレートするための仮想インターフェースを備え、前記仮想インターフェースは、前記仮想ＬＡＮの他のノード装置に対して設定された通信トンネルを終端する複数のサブインターフェースと、前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って、自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、前記複数のサブインターフェースのうちのどのサブインターフェースから送信あるいは転送すべきかが登録されているパケット転送テーブルとを備え、
前記仮想ＬＡＮに参加するノード装置から前記仮想ＬＡＮに参加する他のノード装置宛てに送信された前記データリンク層パケットが、それらの送受信ノード装置間に直接前記通信トンネルが設定されている場合には該通信トンネルを通じて届けられ、それらの送受信ノード装置間に直接前記通信トンネルが設定されていない場合には前記仮想ＬＡＮに参加している１以上の別のノード装置を経由して届けられるように構成されていることを特徴とする仮想ＬＡＮシステム。
【請求項２】
前記仮想ＬＡＮに参加するノード装置は、前記仮想ＬＡＮに参加している他のノード装置が前記仮想ＬＡＮから離脱したことを検出した場合、前記離脱後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御部を備えることを特徴とする請求項１記載の仮想ＬＡＮシステム。
【請求項３】
前記仮想ＬＡＮに参加するノード装置は、前記仮想ＬＡＮへの新たなノード装置の参加を検出した場合、前記参加後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御部を備えることを特徴とする請求項１記載の仮想ＬＡＮシステム。
【請求項４】
前記仮想ＬＡＮに参加するノード装置には前記仮想ＬＡＮ内で一意のノードＩＤが割り当てられ、前記仮想ＬＡＮに参加するノード装置の前記パケット転送テーブルには、前記仮想ＬＡＮに参加するノード装置のＭＡＣアドレス、宛先ノードＩＤ、ソースノードＩＤに対応して出側サブインターフェースＩＤが登録され、前記データリンク層パケットは、前記データリンク層パケットのソースノードおよび宛先ノードのノードＩＤがカプセル化時にエンコードされ、前記仮想インターフェースは、前記カプセル化されたソースノードおよび宛先ノードのノードＩＤに基づいて前記データリンク層パケットを転送することを特徴とする請求項１、２または３記載の仮想ＬＡＮシステム。
【請求項５】
通信トンネルを用いてデータリンク層パケットをカプセル化することにより仮想的に構築されるＬＡＮである仮想ＬＡＮを提供する仮想ＬＡＮシステムにおいて、
前記仮想ＬＡＮに参加するノード装置の仮想インターフェースが、前記仮想ＬＡＮの他のノード装置に対して設定された通信トンネルを終端する複数のサブインターフェースであって、前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って、自ノード装置が送信する前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、いずれのサブインターフェースから送信あるいは転送すべきかが登録されたサブインターフェースを備え、
前記仮想ＬＡＮに参加するノード装置から前記仮想ＬＡＮに参加する他のノード装置宛てに送信された前記データリンク層パケットが、それらの送受信ノード装置間への直接前記通信トンネルの設定の有無により、該通信トンネルを通じて届けられ、前記仮想ＬＡＮに参加している１以上の別のノード装置を経由して届けられるように構成されていることを特徴とする仮想ＬＡＮシステム。
【請求項６】
前記仮想インターフェースが、前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って、自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、前記複数のサブインターフェースのうちのどのサブインターフェースから送信あるいは転送すべきかが登録されているパケット転送テーブルとを備えることを特徴とする請求項５記載の仮想ＬＡＮシステム。
【請求項７】
データリンク層パケットをカプセル化するための通信トンネルを仮想ＬＡＮにおける仮想的なリンクとしてエミュレートするための仮想インターフェースを備え、前記仮想インターフェースは、前記仮想ＬＡＮの他のノード装置に対して設定された通信トンネルを終端する複数のサブインターフェースと、前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って、自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、前記複数のサブインターフェースのうちのどのサブインターフェースから送信あるいは転送すべきかが登録されているパケット転送テーブルとを備え、
自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを前記パケット転送テーブルを参照して決定したサブインターフェースから送信あるいは転送するものであることを特徴とするノード装置。
【請求項８】
前記仮想ＬＡＮに参加している他のノード装置が前記仮想ＬＡＮから離脱したことを検出した場合、前記離脱後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御部を備えることを特徴とする請求項７記載のノード装置。
【請求項９】
前記仮想ＬＡＮへの新たなノード装置の参加を検出した場合、前記参加後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御部を備えることを特徴とする請求項７記載のノード装置。
【請求項１０】
前記パケット転送テーブルには、前記仮想ＬＡＮに参加するノード装置のＭＡＣアドレス、宛先ノードＩＤ、ソースノードＩＤに対応して出側サブインターフェースＩＤが登録され、前記データリンク層パケットは、前記データリンク層パケットのソースノードおよび宛先ノードのノードＩＤがカプセル化時にエンコードされ、前記仮想インターフェースは、前記カプセル化されたソースノードおよび宛先ノードのノードＩＤに基づいて前記データリンク層パケットを転送することを特徴とする請求項７、８または９記載のノード装置。
【請求項１１】
前記仮想ＬＡＮに新規に参加しようとする際に、前記仮想ＬＡＮ内に既に参加している他のどのノードに対して、前記通信トンネルを開設すべきかという情報を得る機能を有するブートストラップ部を備えることを特徴とする請求項７ないし１０の何れか１項に記載のノード装置。
【請求項１２】
データリンク層パケットをカプセル化するための通信トンネルを仮想ＬＡＮにおける仮想的なリンクとしてエミュレートするための仮想インターフェースを備え、
前記仮想インターフェースは、前記仮想ＬＡＮの他のノード装置に対して設定された通信トンネルを終端する複数のサブインターフェースであって、前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って、自ノード装置が送信する前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、いずれのサブインターフェースから送信あるいは転送すべきかが登録されたサブインターフェースを備えることを特徴とするノード装置。
【請求項１３】
前記仮想インターフェースが、自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、前記複数のサブインターフェースのうちの何れのサブインターフェースから送信あるいは転送すべきかが登録されているパケット転送テーブルとを備え、
自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを前記パケット転送テーブルを参照して決定したサブインターフェースから送信あるいは転送するものであることを特徴とする請求項１２記載のノード装置。
【請求項１４】
通信ノードを構成するコンピュータを、
データリンク層パケットをカプセル化するための通信トンネルを仮想ＬＡＮにおける仮想的なリンクとしてエミュレートするための仮想インターフェースであって、前記仮想ＬＡＮの他のノード装置に対して設定された通信トンネルを終端する複数のサブインターフェースを有し、自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを前記複数のサブインターフェースのうちのどのサブインターフェースから送信あるいは転送すべきかが登録されているパケット転送テーブルを参照して決定したサブインターフェースから送信あるいは転送する仮想インターフェース、として機能させるためのプログラム。
【請求項１５】
前記コンピュータをさらに、前記仮想ＬＡＮに参加している他のノード装置が前記仮想ＬＡＮから離脱したことを検出した場合、前記離脱後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御手段、として機能させることをことを特徴とする請求項１４記載のプログラム。
【請求項１６】
前記コンピュータをさらに、前記仮想ＬＡＮへの新たなノード装置の参加を検出した場合、前記参加後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御手段、として機能させることを特徴とする請求項１４記載のプログラム。
【請求項１７】
通信ノードを構成するコンピュータ上で実行され、
データリンク層パケットをカプセル化するための通信トンネルを仮想ＬＡＮにおける仮想的なリンクとしてエミュレートするための仮想インターフェースであって、前記仮想ＬＡＮの他のノード装置に対して設定された通信トンネルを終端する複数のサブインターフェースを有する前記仮想インターフェースを、
前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って自ノード装置が送信する前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、前記複数のサブインターフェースのうちの何れかのサブインターフェースを決定して送信あるいは転送する仮想インターフェース、として機能させるためのプログラム。
【請求項１８】
前記仮想インターフェースを、
前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを前記複数のサブインターフェースのうちのどのサブインターフェースから送信あるいは転送すべきかが登録されているパケット転送テーブルを参照して、前記データリンク層パケットを送信あるいは転送するサブインターフェースを、前記複数のサブインターフェースから決定する、仮想インターフェースとして機能させることを特徴とする請求項１７記載のプログラム。
【発明の詳細な説明】
【技術分野】  本発明は、仮想ＬＡＮシステムに関し、特に、物理的なネットワーク上に通信トンネルを用いて仮想的に構築される仮想ＬＡＮにおいて、仮想ハブを必要とせずに参加ノード間でピアツーピア型に通信トンネルを設定することにより仮想的ＬＡＮを提供することを可能にする仮想ＬＡＮシステムおよびノード装置に関する。
【背景技術】  従来この種の仮想ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）システムは、特許第３３４３０６４号公報（２６ページ、図１６）に記載されているように、擬似ネットワークアダプタおよびトンネルサーバにより仮想的なＬＡＮ環境を提供するシステムとして用いられている。この種の仮想的なＬＡＮに参加するノードは、仮想アダプタ（仮想インターフェース、仮想ＮＩＣとも呼ばれる）を備え、この仮想アダプタがトンネルサーバ（仮想ハブ、仮想ブリッジとも呼ばれる）との間でデータリンク層ネットパケット（イーサネット（登録商標）パケットなど）をカプセル化して送受信することにより、物理ネットワーク上で仮想的なＬＡＮ環境をエミュレートする。
図１を用いて、従来の仮想ＬＡＮシステムをより具体的に説明する。従来の仮想ＬＡＮシステムは、ノードＡ１１〜Ａ１３と仮想ハブＢ１とバックボーンネットワークＣ１とにより構成される。
ノードＡ１１は、アプリケーションＡ１１１とＴＣＰ／ＩＰ処理部Ａ１１２と物理インターフェースＡ１１３と仮想インターフェースＡ１１４とを含む。ここで、アプリケーションＡ１１１はノードＡ１１の備えるＴＣＰ／ＩＰ通信機能を用いてデータの送受信を行なうアプリケーションであり、例としてブラウザやメーラーなどが挙げられる。ＴＣＰ／ＩＰ処理部Ａ１１２は、ＴＣＰ／ＩＰ通信に必要なトランスポート層およびネットワーク層の処理を行なう機能を備え、一般的にはカーネルの標準機能として提供されるものである。物理インターフェースＡ１１３は、ノードＡ１１の備える物理リンクに対応して提供されるものであり、ＴＣＰ／ＩＰ処理部Ａ１１２が送受信するＩＰパケットをデータリンク層メディアによって運ぶ機能を備える。
仮想インターフェースＡ１１４は、実際に対応する物理リンクは存在しないが、ＴＣＰ／ＩＰ処理部Ａ１１２には物理インターフェースＡ１１３と同様に見えるものようにエミュレートされるものである。仮想インターフェースＡ１１４は、内部にカプセリング部Ａ１１４１を含む。仮想インターフェースＡ１１４を通して送受信されるパケットは、カプセリング部Ａ１４１によってカプセリング処理が行われ、仮想インターフェースＡ１１４の外部では、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）  ｏｖｅｒ  ＩＰやＥｔｈｅｒｎｅｔ  ｏｖｅｒ  ＵＤＰやＥｔｈｅｒｎｅｔ  ｏｖｅｒ  ＩＰｓｅｃなどのパケット形式で通信トンネルＣｔ１１の上で運ばれる。すなわち、通信トンネルＣｔ１１は仮想ＬＡＮにおけるノードＡ１１と仮想ハブＢ１とを接続する仮想的なリンク（仮想リンク）となる。通信トンネルＣｔ１１は、仮想ハブＢ１との間で設定されるものである。また、仮想インターフェースＡ１１４を通して送受信されるこれらのパケットは、物理インターフェースＡ１１３に対応する物理リンクを利用してバックボーンネットワークＣ１内を流れる。
仮想ハブＢ１は、トンネル終端部Ｂ１１およびブリッジ部Ｂ１２とを含む。トンネル終端部Ｂ１１は、ノードＡ１１〜Ａ１３のそれぞれに対応する通信トンネルＣｔ１１〜Ｃｔ１３を終端し、受信したパケットに対して非カプセル化処理を行った後、ブリッジ部Ｂ１２へ渡す。ブリッジ部Ｂ１２は、渡されたパケットの宛先ＭＡＣアドレスを基にブリッジ処理を行い、対応する通信トンネル上へ転送するように該パケットをトンネル終端部Ｂ１１へ戻す。すなわち、仮想ハブＢ１は、イーサネットにおけるハブと同等の機能を仮想ＬＡＮ上で提供するものである。
従来技術の問題点は、仮想ＬＡＮを提供するためには、仮想ハブが必要であるという点である。
仮想ＬＡＮを提供するためには、該仮想ＬＡＮに参加するノードが利用するための仮想ハブを用意しなければならない。すなわち、数ノードから構成されるような小規模な仮想ＬＡＮを提供する場合であっても最低１つの仮想ハブが必要であり、仮想ハブを設置・管理するための運用コストを考えると、スモールスタートしにくいという問題がある。
また、仮想ＬＡＮ内の通信は、必ず仮想ハブを経由するため、仮想ハブにかかるトラフィック負荷や処理負荷は仮想ＬＡＮ内の通信量に応じて大きくなり、スケーラビリティの問題がある。
さらに、仮想ハブの障害時や、仮想ハブがバックボーンネットワークに収容されているリンクの障害時は、仮想ＬＡＮ自体が利用不可能になる。すなわち、仮想ハブが単一障害点となるため、システムの信頼性の面で問題である。
本発明の目的は、仮想ハブを必要としない仮想ＬＡＮシステムおよびそのシステム用のノード装置を提供することである。
【発明の開示】
本発明の第１の仮想ＬＡＮシステムは、通信トンネルを用いてデータリンク層パケットをカプセル化することにより仮想的に構築されるＬＡＮである仮想ＬＡＮを提供する仮想ＬＡＮシステムにおいて、前記仮想ＬＡＮに参加するノード装置は、前記データリンク層パケットをカプセル化するための通信トンネルを仮想ＬＡＮにおける仮想的なリンクとしてエミュレートするための仮想インターフェースを備え、前記仮想インターフェースは、前記仮想ＬＡＮの他のノード装置に対して設定された通信トンネルを終端する複数のサブインターフェースと、前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って、自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、前記複数のサブインターフェースのうちのどのサブインターフェースから送信あるいは転送すべきかが登録されているパケット転送テーブルとを備え、前記仮想ＬＡＮに参加するノード装置から前記仮想ＬＡＮに参加する他のノード装置宛てに送信された前記データリンク層パケットが、それらの送受信ノード装置間に直接前記通信トンネルが設定されている場合には該通信トンネルを通じて届けられ、それらの送受信ノード装置間に直接前記通信トンネルが設定されていない場合には前記仮想ＬＡＮに参加している１以上の別のノード装置を経由して届けられるように構成されていることを特徴とする。
本発明の第２の仮想ＬＡＮシステムは、第１の仮想ＬＡＮシステムにおいて、前記仮想ＬＡＮに参加するノード装置は、前記仮想ＬＡＮに参加している他のノード装置が前記仮想ＬＡＮから離脱したことを検出した場合、前記離脱後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御部を備えることを特徴とする。
本発明の第３の仮想ＬＡＮシステムは、第１の仮想ＬＡＮシステムにおいて、前記仮想ＬＡＮに参加するノード装置は、前記仮想ＬＡＮへの新たなノード装置の参加を検出した場合、前記参加後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御部を備えることを特徴とする。
本発明の第４の仮想ＬＡＮシステムは、第１、第２または第３の仮想ＬＡＮシステムにおいて、前記仮想ＬＡＮに参加するノード装置には前記仮想ＬＡＮ内で一意のノードＩＤが割り当てられ、前記仮想ＬＡＮに参加するノード装置の前記パケット転送テーブルには、前記仮想ＬＡＮに参加するノード装置のＭＡＣアドレス、宛先ノードＩＤ、ソースノードＩＤに対応して出側サブインターフェースＩＤが登録され、前記データリンク層パケットは、前記データリンク層パケットのソースノードおよび宛先ノードのノードＩＤがカプセル化時にエンコードされ、前記仮想インターフェースは、前記カプセル化されたソースノードおよび宛先ノードのノードＩＤに基づいて前記データリンク層パケットを転送することを特徴とする。
本発明の第１のノード装置は、データリンク層パケットをカプセル化するための通信トンネルを仮想ＬＡＮにおける仮想的なリンクとしてエミュレートするための仮想インターフェースを備え、前記仮想インターフェースは、前記仮想ＬＡＮの他のノード装置に対して設定された通信トンネルを終端する複数のサブインターフェースと、前記仮想ＬＡＮに参加するノード装置どうしを前記通信トンネルで接続した仮想ＬＡＮトポロジに従って、自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを、前記複数のサブインターフェースのうちのどのサブインターフェースから送信あるいは転送すべきかが登録されているパケット転送テーブルとを備え、自ノード装置が送信しようとする前記データリンク層パケットおよび前記仮想ＬＡＮの他のノード装置から受信した前記データリンク層パケットを前記パケット転送テーブルを参照して決定したサブインターフェースから送信あるいは転送するものであることを特徴とする。
本発明の第２のノード装置は、第１のノード装置において、前記仮想ＬＡＮに参加している他のノード装置が前記仮想ＬＡＮから離脱したことを検出した場合、前記離脱後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御部を備えることを特徴とする。
本発明の第３のノード装置は、第１のノード装置において、前記仮想ＬＡＮへの新たなノード装置の参加を検出した場合、前記参加後の仮想ＬＡＮトポロジを再計算し、再計算した仮想ＬＡＮトポロジに合致するように前記通信トンネルの開設および削除を行うと共に前記パケット転送テーブルの設定変更を行う仮想ＬＡＮ制御部を備えることを特徴とする。
本発明の第４のノード装置は、第１、第２または第３のノード装置において、前記パケット転送テーブルには、前記仮想ＬＡＮに参加するノード装置のＭＡＣアドレス、宛先ノードＩＤ、ソースノードＩＤに対応して出側サブインターフェースＩＤが登録され、前記データリンク層パケットは、前記データリンク層パケットのソースノードおよび宛先ノードのノードＩＤがカプセル化時にエンコードされ、前記仮想インターフェースは、前記カプセル化されたソースノードおよび宛先ノードのノードＩＤに基づいて前記データリンク層パケットを転送することを特徴とする。
本発明の第５のノード装置は、第１、第２、第３または第４のノード装置において、前記仮想ＬＡＮに新規に参加しようとする際に、前記仮想ＬＡＮ内に既に参加している他のどのノードに対して、前記通信トンネルを開設すべきかという情報を得る機能を有するブートストラップ部を備えることを特徴とする。
【図面の簡単な説明】  図１は、従来の仮想ＬＡＮシステムの構成を示すブロック図である。
図２は、本発明の実施の形態の構成を示すブロック図である。
図３は、本発明の実施の形態におけるパケット転送テーブルの例を示す図である。
図４は、本発明の実施の形態において構成される仮想ＬＡＮトポロジを説明するための図である。
図５は、本発明の実施の形態の動作を示す流れ図である。
図６は、本発明の実施の形態におけるトポロジ構築・再構成の例を示す図である。
図７は、本発明の実施の形態におけるパケット転送テーブルの別の例を示す図である。
図８は、本発明の実施の形態におけるパケット形式の例を示す図である。
図９は、本発明の実施例における仮想ＬＡＮ参加のために必要な情報の取得動作を説明するための図である。
図１０は、本発明の実施例における仮想ＬＡＮ参加後のパケット転送テーブルを示す図である。
図１１は、本発明の実施例におけるトポロジ再構成後のパケット転送テーブルを示す図である。
【発明を実施するための最良の形態】  次に、本発明の実施の形態について図面を参照して詳細に説明する。
図２を参照すると、本発明の実施の形態は、ノードＡ２１〜Ａ２３とバックボーンネットワークＣ２とから構成される。各ノード間には、通信トンネルＣｔ２１〜Ｃｔ２３によって仮想リンクがつくられ、仮想ＬＡＮ内通信に対応するイーサネットパケットがカプセル化されて運ばれる。図２では、３つのノード間にフルメッシュ状に通信トンネルが生成されているように描かれているが、実際には仮想ＬＡＮに参加するノード間でフルメッシュに通信トンネルが生成される必要はなく、仮想ＬＡＮに参加するノード間でパケット転送用の任意のトポロジを通信トンネルにより構成し、該トポロジ上でパケットの転送を行う。
ノードＡ２１〜Ａ２３は、仮想ＬＡＮに参加するノードであり、パーソナルコンピュータや携帯情報端末などの通信機能を有するコンピュータで構成される。以下ではノードＡ２１の構成・動作についてだけ詳細に説明するが、ノードＡ２２、Ａ２３についてもノードＡ２１と同様の構成をもつ。ノードＡ２１は、アプリケーションＡ２１１と、ＴＣＰ／ＩＰ処理部Ａ２１２と、物理インターフェースＡ２１３と、仮想インターフェースＡ２１４と、仮想ＬＡＮ制御部Ａ２１５とを含む。
アプリケーションＡ２１１、ＴＣＰ／ＩＰ処理部Ａ２１２、物理インターフェースＡ２１３は、図１の説明におけるアプリケーションＡ１１１、ＴＣＰ／ＩＰ処理部Ａ１１２、物理インターフェースＡ１１３と同じため、説明は省く。
仮想インターフェースＡ２１４は、仮想ＬＡＮ内の通信を行うための仮想的なインターフェースとして、ＴＣＰ／ＩＰ処理部Ａ２１２に対してエミュレートされるものである。仮想インターフェースＡ２１４は、その内部構成として、パケット転送テーブルＡ２１４１と、制御メッセージ送受信部Ａ２１４２と、サブインターフェースＡ２１４３とを含む。
パケット転送テーブルＡ２１４１は、仮想インターフェースＡ２１４において、自ノードから送信するパケットおよび、他ノードから受信しなおかつ宛先ＭＡＣアドレスが自ノードのＭＡＣアドレスではないパケットに対し、宛先ＭＡＣアドレスに応じて該パケットをどのサブインターフェースから転送すべきかを示すテーブルである。パケット転送テーブルＡ２１４１の例を図３に示す。
図３を参照すると、パケット転送テーブル１０１は、パケットの宛先ＭＡＣアドレスごとに対応するサブインターフェースのＩＤが登録されている。パケット転送テーブル１０１によると、宛先ＭＡＣアドレスが００：１１：２２：３３：４４：５５および００：２２：３３：４４：５５：６６であるパケットはサブインターフェースｔｕｎ０から送出され、００：３３：４４：５５：６６：７７であるパケットはサブインターフェースｔｕｎ１から送出されることを示している。また、宛先ＭＡＣアドレスに「ｂｒｏａｄｃａｓｔ」と書かれたエントリは、ブロードキャストパケット（宛先ＭＡＣアドレスがｆｆ：ｆｆ：ｆｆ：ｆｆ：ｆｆ：ｆｆであるパケットや、どこに転送すべきか不明な宛先ＭＡＣアドレスをもつパケットがこれに対応する）に対応するエントリである。図３に示すパケット転送テーブル１０１の例では、ブロードキャストの場合はソースＭＡＣアドレスに応じて送出するサブインターフェースが異なり（そうした理由は後述する）、ソースＭＡＣアドレスが００：１１：２２：３３：４４：５５および００：２２：３３：４４：５５：６６である場合は転送されずに自ノードで該パケットを終端し、ソースＭＡＣアドレスが００：９９：ａａ：ｂｂ：ｃｃ：ｄｄである場合はサブインターフェースｔｕｎ０およびｔｕｎ１から送出されることを示している。
制御メッセージ送受信部Ａ２１４２は、仮想ＬＡＮ内の各参加ノードに関する情報を交換するための制御メッセージを送受信する機能を有する。制御メッセージ送受信部Ａ２１４２は、仮想ＬＡＮ内の他のノードから受信した制御メッセージに含まれる制御情報を、仮想ＬＡＮ制御部Ａ２１５内の仮想ＬＡＮ状態管理部Ａ２１５１へ渡す。本制御情報は、仮想ＬＡＮ内のノードの参加・離脱情報、各参加ノードのＩＤ・ＭＡＣアドレス、各ノード間の遅延・帯域情報などを含む。また、仮想ＬＡＮ状態管理部Ａ２１５１から渡された制御情報を他のノードへ制御メッセージとして送信を行う機能も備える。
サブインターフェースＡ２１４３は、仮想ＬＡＮ内の他のノードに対して設定された通信トンネルを終端し、仮想インターフェースＡ２１４内のサブインターフェースとして実現される。サブインターフェースＡ２１４３が複数ある場合でも、ＴＣＰ／ＩＰ処理部Ａ２１２に対しては１つの仮想インターフェースとして見える。サブインターフェースＡ２１４３は、仮想インターフェースＡ２１４から送信されるパケットに対してカプセリング処理を行うことにより、サブインターフェースＡ２１４３と仮想ＬＡＮ内の他のノードに対して設定された通信トンネル上で該パケットの伝送を行う。また、仮想インターフェースＡ２１４で受信したパケットに対しては、サブインターフェースＡ２１４３でカプセル化ヘッダを外し、仮想インターフェースＡ２１４はカプセル化ヘッダの内側にエンコードされたＭＡＣヘッダに基づいて、自ノードで受信するかまたはパケット転送処理を行う。サブインターフェースＡ２１４３の外部では、例えば、Ｅｔｈｅｒｎｅｔ  ｏｖｅｒ  ＩＰやＥｔｈｅｒｎｅｔ  ｏｖｅｒ  ＵＤＰなどのパケット形式で通信トンネルＣｔ２１〜Ｃｔ２３の上で運ばれる。Ｅｔｈｅｒｎｅｔ  ｏｖｅｒ  ＵＤＰのパケット形式を図８のパケット形式４０１に示す。
仮想ＬＡＮ制御部Ａ２１５は、ノードＡ２１が参加する仮想ＬＡＮにおけるパケット転送用トポロジの制御機能を有する。仮想ＬＡＮ制御部Ａ２１５は、その内部構成として、仮想ＬＡＮ状態管理部Ａ２１５１と、トンネル制御部Ａ２１５２と、トポロジ計算部Ａ２１５３と、ブートストラップ部Ａ２１５４とを含む。
仮想ＬＡＮ状態管理部Ａ２１５１は、ノードＡ２１が参加する仮想ＬＡＮにおける状態を管理する機能を有する。仮想ＬＡＮにおける状態とは、仮想ＬＡＮに参加しているノード数、自ノードから直接通信トンネルにより接続されているノードの情報（ノードＩＤ、ＭＡＣアドレス、物理ＩＰアドレスなど）、各ノード間のリソース情報（遅延・帯域など）などを含む。仮想ＬＡＮ状態管理部Ａ２１５１は、これらの情報に基づいて、パケット転送テーブルＡ２１４１の内容を書き換える機能を有するとともに、トンネル制御部Ａ２１５２を介して他のノードに対する通信トンネルを開設・削除することで仮想ＬＡＮのトポロジを変更する機能を有する。トポロジ変更の際は、トポロジ計算部Ａ２１５３を介して計算されたトポロジに基づき通信トンネルの開設・削除を行う。
トンネル制御部Ａ２１５２は、仮想ＬＡＮ状態管理部Ａ２１５１からの指示に基づき、仮想インターフェースＡ２１４に対して通信トンネルの開設・削除の制御を行う。
トポロジ計算部Ａ２１５３は、仮想ＬＡＮ内におけるブロードキャストパケットおよびユニキャストパケットを転送するための通信トンネルによるトポロジを計算する。トポロジ計算においては、仮想ＬＡＮ状態管理部Ａ２１５１において保持されている仮想ＬＡＮ内の各ノードの情報や各ノード間のリソース情報を利用する。トポロジの例としては、リング型トポロジ、格子状グラフ型トポロジ、ｄｅ  Ｂｒｕｉｊｎグラフ型トポロジ、スパニングツリー型トポロジなどが挙げられる。これらのトポロジを図４の２０１〜２０４に示す。ここで、スパニングツリーとは、閉路がつくられないようにノード間にリンクが張られているトポロジを指す。
ブートストラップ部Ａ２１５４は、ノードＡ２１が仮想ＬＡＮへの参加時に必要な初期動作を行う。初期動作の例として、仮想ＬＡＮに参加しているいずれかのノードへ接続を行い、仮想ＬＡＮ参加に必要な情報を得る方法などが挙げられる。この場合、仮想ＬＡＮに参加しているいずれかのノードのＩＰアドレスなどの情報がブートストラップ部Ａ２１５４において予め設定されていることが必要となる。仮想ＬＡＮ参加に必要な情報とは、仮想ＬＡＮに新規に参加した際に新規参加ノードがもつノードＩＤおよび新規参加ノードが通信トンネルを開設すべき相手ノードのベースＩＰアドレス（実際の物理ネットワーク上で割り当てられているＩＰアドレス）などである。他にも、仮想ＬＡＮに対応するＦＱＤＮ（Ｆｕｌｌ−Ｑｕａｌｉｆｉｅｄ  Ｄｏｍａｉｎ  Ｎａｍｅ）を用いてＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）サーバから仮想ＬＡＮ参加に必要な情報を取得する方法などが考えられる。
次に、図５を参照して、本実施の形態において、ノードＡ２１が仮想ＬＡＮに参加する動作および、参加した後の動作について詳細に説明する。
まずはじめに、ノードＡ２１内のブートストラップ部Ａ２１５４は、仮想ＬＡＮに参加しているいずれかのノードへ接続し、自ノードが仮想ＬＡＮ上に構築されたトポロジに参加するために必要な情報を取得する（図５のステップＳ１０１）。例えば、図４に示す格子状グラフ型トポロジを仮想ＬＡＮに参加しているノード間で構成する場合、現在のノード数によって、ノードＡ２１がどのＩＤをもつノードとして参加し、他のどのノードと通信トンネルを設定すべきかが異なる。
図６を用いて、８ノードで構成される格子状グラフ型トポロジにノードＡ２１が新規に参加する場合の動作を説明する。ここで、格子状グラフ型トポロジでは各ノードにＩＤが割り当てられており、一番左下のノードのＩＤを０−０として、このノードからの（上方向の位置）−（右方向の位置）というように各ノードのＩＤが決定される（状態３０１参照）。ノード０−０から、０−１→１−０→１−１→０−２→１−２→２−０→２−１の順でノードが追加され、次に参加するノードは２−２のＩＤをもつものとする。ノード０−０〜２−１の全てのノードは仮想ＬＡＮの現在の参加ノード数を保持しており、次に仮想ＬＡＮに参加するノードのＩＤおよび該ノードが通信トンネルを設定すべき隣接ノードのベースＩＰアドレスを仮想ＬＡＮ内の制御メッセージ交換により保持しているものとする。
ノードＡ２１はブートストラップＡ２１５４を介して、ノード０−０〜２−１の任意のノードに対して、仮想ＬＡＮに参加するための要求を行うと、要求されたノードは、ノードＡ２１に割り当てられるノードＩＤと、どのノードに対してトンネルを設定すべきかを回答する。この場合、ノードＩＤは２−２であり、ノード１−２およびノード２−１に対応するベースＩＰアドレスに対して通信トンネルを開設するべきであると回答する。
ステップＳ１０１においてブートストラップＡ２１５４が仮想ＬＡＮに参加するために通信トンネルを開設すべきノードの情報を取得すると、該情報は仮想ＬＡＮ状態管理部Ａ２１５１へ渡される。そして、仮想ＬＡＮ状態管理部Ａ２１５１は、トンネル制御部Ａ２１５２を経由して仮想インターフェースＡ２１４へ取得した通信トンネルを開設すべきノードに対して通信トンネルの開設を指示し、通信トンネルが開設される（ステップＳ１０２）。ステップＳ１０２の後、図６における状態３０２に示す状態となる。
ステップＳ１０２の後、仮想ＬＡＮ状態管理部Ａ２１５１は、仮想ＬＡＮに参加し、パケット転送を行うために必要な情報を制御メッセージ送受信部Ａ２１４２を用いて取得する（ステップＳ１０３）。ここで、パケット転送を行うために必要な情報とは、仮想ＬＡＮ内の各ノードのＭＡＣアドレス（仮想インターフェースに割り当てられたＭＡＣアドレスを指す）とノードＩＤの対応関係である。本対応関係を用いて、仮想ＬＡＮ状態管理部Ａ２１５１は、パケットの宛先ＭＡＣアドレスに対して該パケットをどのサブインターフェースへ送信すべきかを示すパケット転送テーブルＡ２１４１を作成する（ステップＳ１０４）。
パケット転送テーブルＡ２１４１の作成は、用いるトポロジの種類に応じて規則的に行われる。例えば図６に示す格子状グラフ型トポロジの場合、どの通信トンネルへ転送すれば最短ホップ数で宛先ノードへ到達できるかが宛先ノードＩＤに基づき一意に決定できるため、規則的なルーティングテーブル作成が可能となる。ノードＩＤが２−２であるノードにおいては、０−２、１−２のＩＤをもつノードに対応する宛先ＭＡＣアドレスに対しては１−２側の通信トンネルにパケットを転送し、その他のＩＤをもつノードに対応する宛先ＭＡＣアドレスに対しては、２−１側の通信トンネルにパケットを転送するというようにパケット転送テーブルが作成される（ここでどちらの通信トンネルへ転送しても同じホップ数となる場合、２−１側の通信トンネルの方を優先するものとした）。
また、パケット転送テーブルＡ２１４１には、ＡＲＰパケットの転送などのために、ブロードキャスト用のエントリも同時に作成される。図４に示したスパニングツリートポロジの場合は、受信した通信トンネル以外の他の全ての通信トンネルに転送すればよいが、その他のトポロジの場合、ノードが同じパケットを重複して受信しないようにしなければならないため、ブロードキャストパケットのソースノードに応じて転送先の通信トンネルを変える必要があり、図３のパケット転送テーブル１０１の例に示すようなブロードキャストパケットに対応するエントリが作成される。
ステップＳ１０４の後、仮想ＬＡＮ状態管理部Ａ２１５１は、仮想ＬＡＮ内の他のノードに対して、ノードＡ２１が参加したことを制御メッセージ送受信部Ａ２１４２を介して制御メッセージを送信することにより通知する（ステップＳ１０５）。本通知により、ノードＡ２１が参加したことを通知する制御メッセージを受信した他のノードは、後述するステップＳ１０７、Ｓ１０９〜Ｓ１１２の動作を行い、必要ならば通信トンネルの開設・削除動作を行うとともに、ノードＡ２１が参加した後のトポロジに対応してパケット転送テーブルＡ２１４１を更新する。ステップＳ１０５の後、ノードＡ２１は定常状態となり、仮想ＬＡＮの参加ノードとして他のノードとデータ通信を行うことが可能となる（ステップＳ１０６）。
ステップＳ１０６の定常状態において発生するイベントは次の３つに分かれる。１つ目は、他のノードが参加・離脱したという通知を受信した場合、２つ目は、隣接ノードとの通信トンネルが切断したことを検出した場合、３つ目は、ノードＡ２１が仮想ＬＡＮから離脱する場合である。
他のノードが参加・離脱したという通知を受信した場合、制御メッセージ送受信部Ａ２１４２は該通知を仮想ＬＡＮ状態管理部Ａ２１５１へ渡すとともに、他のノードへ転送する（ステップＳ１０７）。該通知は、ブロードキャストを用いるか、受信した通信トンネル以外の他の全ての通信トンネルに転送するなどの方法（この場合、重複する通知を受信の際は該通知は廃棄される）を用いて、仮想ＬＡＮ内の全ノードへ周知される。
また、隣接ノードとの通信トンネルが切断したことを検出した場合、仮想ＬＡＮ状態管理部Ａ２１５１は、制御メッセージ送受信部Ａ２１４２を介して、隣接ノードが仮想ＬＡＮから離脱したことを仮想ＬＡＮ内の他のノードに対して通知する（ステップＳ１０８）。
ステップＳ１０７またはステップＳ１０８の後、仮想ＬＡＮ状態管理部Ａ２１５１は、トポロジ計算部Ａ２１５３を用いて、通知に対応するノード参加・離脱後の仮想ＬＡＮのトポロジを計算する（ステップＳ１０９）。
図６を用いてトポロジ更新の例を述べる。図６の状態３０３は、０−０〜２−２のＩＤをもつ９つのノードから構成される格子グラフ型トポロジであり、ここでノード１−１が離脱したとする。
２−２のＩＤをもつノードＡ２１は、ノード１−１が離脱しなという通知を他のノードから受信する。該通知は制御メッセージ送受信部Ａ２１４２から仮想ＬＡＮ状態管理部Ａ２１５１へ渡され、仮想ＬＡＮ状態管理部Ａ２１５１はトポロジ計算部Ａ２１５３を用いて、ノード１−１が離脱したことに対応するトポロジを計算する。ここでは、ノード１−１が離脱すると全体のノード数が９から８に減るため、９番目のノードである、２−２のＩＤをもつノード（すなわちノードＡ２１）がノード１−１の位置へ論理的に移動すると計算されたとする。他にも利用するトポロジ計算アルゴリズムに応じて様々なトポロジ再構成形態が考えられる。
ステップＳ１０９で計算されたトポロジにおいて、ノードＡ２１が通信トンネルを開設・削除することが必要である場合は、該トポロジに合わせてトンネル制御部Ａ２１５２を介して通信トンネルの開設・削除を行う（ステップＳ１１０）。図６に示す例では、ノードＡ２１はノード１−１の位置に論理的に移動するため、新規にノード０−１およびノード１−０と通信トンネルを開設する。また、ノード１−２およびノード２−１との間の通信トンネルも必要であるが、元のトポロジ（ノードＡ２１が２−２の位置に置かれているトポロジ）において既にノードＡ２１とノード１−２およびノード２−１との間に通信トンネルが設定されているため、これらを再利用する（状態３０４参照）。このようにノードの論理的な移動の前後で移動するノードにおいて設定されている通信トンネルをできるだけ再利用することで通信トンネルの開設・削除動作を削減する。
ステップＳ１１０で新規トポロジに合わせて通信トンネルの開設・削除を行うと、仮想ＬＡＮ状態管理部Ａ２１５１は、新規トポロジに合わせてパケット転送テーブルＡ２１４１の更新を行う（ステップＳ１１１）、さらに、仮想ＬＡＮ状態管理部Ａ２１５１はトポロジが再構成されたことを制御メッセージ送受信部Ａ２１４２を用いて仮想ＬＡＮ内の他の全てのノードに通知する（ステップＳ１１２）。該通知を受信したノードは、再構成されたトポロジに合わせてパケット転送テーブルを更新する。
ステップＳ１１２の後、ノードＡ２１は１−１のＩＤをもつノードとして再び仮想ＬＡＮ内の他のノードとの通信を行えるようになる。すなわち、ステップＳ１０６の定常状態へ戻る。
また、ステップＳ１０６の定常状態から、ノードＡ２１が仮想ＬＡＮから離脱する場合、仮想ＬＡＮ状態管理部Ａ２１５１は、制御メッセージ送受信部Ａ２１４２を介して離脱することを仮想ＬＡＮ内に通知し、設定していた通信トンネルを削除することにより仮想ＬＡＮからの離脱を行う（ステップＳ１１３、Ｓ１１４）。ここで、停電などの理由で離脱の通知をせずに、いきなりノードＡ２１が仮想ＬＡＮから離脱してしまうこともありうるが、この場合は、ノードＡ２１の隣接ノードがノードＡ２１との通信トンネルが切断したことを検出し、ステップＳ１０８以降のステップを行うことにより、仮想ＬＡＮは継続的に運用される。
以上、本実施の形態において、ノードＡ２１が仮想ＬＡＮに参加する動作および、参加した後の動作について説明した。
以下、本実施の形態から考えられる他の実施の形態についても併せて説明する。
本実施の形態では、パケット転送テーブルＡ２１４１は、図３に示したパケット転送テーブル１０１のように、ＭＡＣアドレスベースのテーブル構造をとっていた。これは、図８に示すパケット形式４０１のように、カプセル化ヘッダの内側に直ちにＭＡＣヘッダがエンコードされる場合は、ＭＡＣヘッダに含まれる情報を用いて仮想ＬＡＮ内のパケット転送を行わなければならないためである。しかしながら、図８のパケット形式４０２のように、パケット転送用に新たにヘッダ（転送用ヘッダ）が付加される場合は、該転送用ヘッダ内に含まれる情報に基づいてパケット転送が行えるため、必ずしもＭＡＣアドレスベースのテーブル構造をとる必要がない。該パケット転送用ヘッダに、パケットのソースノードＩＤと宛先ノードＩＤがエンコードされる場合は、ノードＩＤベースのテーブル構造をとることができる。例を図７のパケット転送テーブル１０２に示す。
パケット転送テーブル１０２においては、ＭＡＣアドレス、宛先ノードＩＤ、ソースノードＩＤに対応して出側サブインターフェースＩＤが登録されている。このうち、パケットのソースノードでは、宛先ＭＡＣアドレスに対応するノードＩＤおよび出側サブインターフェースＩＤが解決される。そして、パケットをカプセル化する際に、解決されたノードＩＤを宛先ノードＩＤ、自ノードのノードＩＤをソースノードＩＤとしてエンコードし、解決されたサブインターフェースＩＤから送信する。該パケットを受信した中継ノードでは、仮想インターフェースＡ２１４において該パケットにエンコードされた宛先ノードＩＤを参照して対応する出側サブインターフェースＩＤが解決され、解決されたサブインターフェース上に該パケットを転送する。ここで、ユニキャストパケットに対しては宛先ノードＩＤしか参照されないが、ブロードキャストパケットに対しては、同じパケットが重複して受信されないようにするため、ソースノードＩＤも同時に参照して出側サブインターフェースＩＤが解決される。
次に本実施の形態の効果について説明する。
本実施の形態では、仮想ＬＡＮ参加ノード間で自律的に通信トンネルを設定することによりトポロジを構成し、仮想ＬＡＮを構築する。従来技術では、仮想ＬＡＮ提供には仮想ハブが必要であったが、本実施の形態では、予め用意された仮想ハブなしに任意のノード数で仮想ＬＡＮを構築することが可能となる。したがって仮想ＬＡＮ提供にあたって仮想ハブの設置・運用コストを削減できるという効果がある。
また、仮想ＬＡＮ内の通信は、構成されたトポロジに応じて各ノードにおいて作成されるパケット転送テーブルに基づいて行われ、従来技術のように特定のノード（仮想ハブ）だけにトラフィック負荷や処理負荷が集中することはない。各通信トンネルにできるだけ均等に負荷がかかるような適切なトポロジを選択することにより、ノード数や仮想ＬＡＮ内のトラフィックの増加に対して高いスケーラビリティをもたせることができる。
さらに、本実施の形態では、参加ノードのいずれかが離脱しても、仮想ＬＡＮトポロジの修復が自律的に行われる。従来技術では仮想ハブが単一障害点となったが、本実施の形態ではいずれのノードの離脱や障害に対しても、仮想ＬＡＮ参加ノード間の通信を継続することができ、高信頼のシステムを提供することが可能となる。
【実施例】  次に、本発明の実施例を図面を参照して説明する。かかる実施例は本発明を実施するための形態に対応するものである。
本実施例は、図４に示す格子グラフ型トポロジ２０２を用いて仮想ＬＡＮが構築されるものとし、初期状態において図６の状態３０１に示される８ノードから構成されるトポロジになっているものとする。
ここで、図２におけるノードＡ２１が、仮想ＬＡＮに新規に参加するものとする。仮想ＬＡＮに参加するために必要な情報は、現在仮想ＬＡＮに参加しているノード数と、新規に参加するノードが通信トンネルを開設すべき相手ノードのベースＩＰアドレスであり、本実施例では、これらの情報をＤＮＳを用いて解決するものとする。
ＤＮＳを用いて現在仮想ＬＡＮに参加しているノード数および新規に参加するノードが通信トンネルを解決すべき相手ノードのベースＩＰアドレスを解決するために、仮想ＬＡＮに参加するノードは以下の動作を行う。
まず、０−０のＩＤをもつノードが、ＤＮＳサーバＤ１に対して現在仮想ＬＡＮに参加しているノード数を登録する。ここで、ノード数は「ｎｏｄｅｎｕｍ．ｌａｎ−ａ．ｎｅｔ」に対応するＴＸＴ（テキスト）レコードとして登録される。本登録動作は、仮想ＬＡＮ内のノード数が変化したことを検出するたびに行われる。さらに、各ノードは、ＤＮＳサーバＤ１に対して、自ノードのベースＩＰアドレスを登録する。例えば、自ノードのＩＤが２−１であり、ベースＩＰアドレスが８．９．１０．１１である場合、「ｎｏｄｅ２−１．ｌａｎ−ａ．ｎｅｔ」に対するＴＸＴレコードとして、“８．９．１０．１１”をＤＮＳサーバＤ１に対して登録する。本登録動作は、自ノードのＩＤおよびベースＩＰアドレスの変化に追随して行われる。
図９のシーケンスを参照すると、ノードＡ２１のブートストラップ部Ａ２１５４は、まず仮想ＬＡＮの現在のノード数を解決するために、ＤＮＳサーバＤ１に対してドメイン名「ｎｏｄｅｎｕｍ．ｌａｎ−ａ．ｎｅｔ」に対するＴＸＴレコードを解決する。ＤＮＳサーバＤ１は、“８ノード”という応答を返す。ブートストラップ部Ａ２１５４は、トポロジ計算部Ａ２１５３を介して、仮想ＬＡＮが現在０−０〜２−１までのＩＤをもつノードから構成される図６の状態３０１に示すトポロジになっており、ノードＡ２１は２−２のＩＤをもつノードとして仮想ＬＡＮに参加するべきであると判断する。格子グラフ型トポロジにおいては、２−２のＩＤを持つノードは、ノード２−１およびノード１−２と仮想リンクをもつため、ブートストラップ部Ａ２１５４は次に、ノード２−１およびノード１−２と通信トンネルを開設すべく、ノード２−１およびノード１−２のベースＩＰアドレスをＤＮＳを用いて解決する。
図９に示すシーケンスでは、「ｎｏｄｅ２−１．ｌａｎ−ａ．ｎｅｔ」および「ｎｏｄｅ１−２．ｌａｎ−ａ．ｎｅｔ」に対するＴＸＴレコードを解決し、ＤＮＳサーバＤ１からそれぞれ、“８．９．１０．１１”および“６．７．８．９”という応答が返されたとする。
ブートストラップ部Ａ２１５４は、ＤＮＳサーバから得たノードＡ２１が通信トンネルを開設すべき相手ノードのベースＩＰアドレスを仮想ＬＡＮ状態管理部Ａ２１５１へ渡し、仮想ＬＡＮ状態管理部Ａ２１５１は、トンネル制御部Ａ２１５２を介して通信トンネルを開設する。通信トンネル開設の結果、仮想ＬＡＮは図６の状態３０２に示すトポロジとなる。開設された通信トンネルは、ノードＡ２１においてサブインターフェースＡ２１４３により終端されるが、ここでは、ノード２−１との間の通信トンネルを終端するサブインターフェースのＩＤをｔｕｎ０、ノード１−２との間の通信トンネルを終端するサブインターフェースのＩＤをｔｕｎ１とする。
また、本実施例では、通信トンネルは、図８のパケット形式４０２に示すように、Ｅｔｈｅｒｎｅｔ  ｏｖｅｒ  ＵＤＰの形式がとられ、かつ、アウタのＵＤＰヘッダとインナのＭＡＣヘッダの間に転送用ヘッダが付加されるものとする。転送用ヘッダには、パケットのソースノードＩＤと宛先ノードＩＤが含まれる。
次に、仮想ＬＡＮ状態管理部Ａ２１５１は、隣接ノードであるノード２−１またはノード１−２のいずれかに対して、ノードＡ２１が仮想ＬＡＮにおいてパケット転送を行うために必要な情報（パケット転送情報）を要求する。該要求は、制御メッセージ送受信部Ａ２１４２を介して行われる。ここでは、ノード２−１に対してパケット転送情報を要求するものとする。
ノード２−１はノードＡ２１からパケット転送情報を要求されると、ノード２−１内に保持されている仮想ＬＡＮの各参加ノードに対するノードＩＤおよびＭＡＣアドレスのリストを応答する。応答された情報は、制御メッセージ送受信部Ａ２１４２から仮想ＬＡＮ状態管理部Ａ２１５１へ渡され、仮想ＬＡＮ状態管理部Ａ２１５１は、該情報を基にパケット転送テーブルＡ２１４１を作成する。ここで作成されるパケット転送テーブルの内容を図１０のパケット転送テーブル１０３に示す。パケット転送テーブル１０３では、ノード０−０〜ノード２−１のそれぞれの宛先について、ユニキャストパケットに対する出側サブインターフェースＩＤが登録されている。さらに、ブロードキャストパケットに対しては、パケットのソースノードＩＤごとに出側サブインターフェースＩＤが登録されている。
パケット転送テーブルＡ２１４１が作成された後、仮想ＬＡＮ状態管理部Ａ２１５１は、制御メッセージ送受信部Ａ２１４２を介してノードＡ２１の参加処理が完了したというメッセージを他のノードに対して通知する。該メッセージは、隣接するノード２−１に一旦渡され、ノード２−１がブロードキャストにより仮想ＬＡＮに参加する他のノードに通知されるという方法がとられる。該メッセージには、ノードＡ２１のノードＩＤおよびＭＡＣアドレスが含まれる。
ノードＡ２１が参加したというメッセージは、仮想ＬＡＮ内の各ノードによって受信され、各ノードは、該メッセージ内に含まれるノードＡ２１のノードＩＤおよびＭＡＣアドレスを用いて、自ノード内のパケット転送テーブルを更新する。この更新処理により、仮想ＬＡＮ内の各ノードはノードＡ２１との通信を行うことが可能となり、ノードＡ２１は仮想ＬＡＮ内の１つの参加ノードとして機能する。
次に、ノードＡ２１が参加している仮想ＬＡＮにおいて、図６の状態３０３に示すように、ノード１−１が離脱したとする。
この場合、まず、ノード１−１に隣接するノード０−１、１−０、１−２、２−１のいずれかがノード１−１が離脱したことを検出する。この検出は、キープアライブなどの機構を用いることにより実現される。ここでは、ノード０−１が最初にノード１−１の離脱を検出し、ノード１−１内の仮想ＬＡＮ状態管理部が制御メッセージ送受信部を介してノード１−１が離脱したというメッセージを他のノードに対して通知する。該メッセージは、受信したサブインターフェース以外の全サブインターフェースに対して転送される形で仮想ＬＡＮ内の各ノードで次々と転送される。このような転送形態をフラッディングというが、フラッディングによってメッセージが転送される場合は、自ノードが一度受信したメッセージを重複して受信する場合がある。そのため、重複して受信したメッセージは廃棄することにより、メッセージが無限にループして転送されることを防ぐ。
ノード１−１が離脱したというメッセージをノードＡ２１が受信すると、該メッセージは制御メッセージ送受信部Ａ２１４２から仮想ＬＡＮ状態管理部Ａ２１５１へ渡される。仮想ＬＡＮ状態管理部Ａ２１５１は、トポロジ計算部Ａ２１５３を用いてノード１−１が離脱した場合のトポロジを計算する。ここでは、ノードＩＤをｘ−ｙとしたとき、
ｘ＝ｍａｘ（ｘ，ｙ）となるノード：ｐ＝ｘ２＋ｘ＋ｙ＋１
それ以外のノード：ｐ＝ｙ２＋ｘ＋１
というルールでｐを計算し、ｐの値がノード１−１離脱前のノード数に一致するノードが離脱したノードへ論理的に移動することにより、トポロジを再構成するものとする（ｍａｘ（ｘ，ｙ）はｘとｙのうち大きい方の値である）。この場合、ノード１−１離脱前のノード数は９ノードであり、ＩＤが２−２の場合はｐ＝９となるため、トポロジ計算部Ａ２１５３は、自ノード（ノードＡ２１）がノード１−１の位置に論理的に移動するものと計算する。その他のノードにおいては、ｐの値とノード１−１離脱前のノード数が一致しないため、自らトポロジ再構成動作は行わないと判断される。
次に、仮想ＬＡＮ状態管理部Ａ２１５１は、自ノードをノード１−１の位置に論理的に移動させるための通信トンネル開設・削除動作をトンネル制御部Ａ２１５２を介して行う。ノード１−１の位置では、ノード０−１、１−０、１−２、２−１との間に通信トンネルを保持する必要がある。ここでノードＡ２１は、既にノード１−２、２−１との間に通信トンネルを保持しているため、新規にノード０−１、１−０に対して通信トンネルの開設動作を行い、通信トンネルの削除動作は行わない。
トポロジ再構成のための通信トンネルの開設・削除動作が完了すると、ノードＡ２１においては、サブインターフェースＡ２１４３においてサブインターフェースＩＤの再割り当てが行われ、ここでは、ノード１−０との間の通信トンネルを終端するサブインターフェースのＩＤをｔｕｎ０、ノード０−１との間の通信トンネルを終端するサブインターフェースのＩＤをｔｕｎ１、ノード１−２との間の通信トンネルを終端するサブインターフェースのＩＤをｔｕｎ２、ノード２−３との間の通信トンネルを終端するサブインターフェースのＩＤをｔｕｎ３と割り当てるものとする。
次に仮想ＬＡＮ状態管理部Ａ２１５１は、変更されたトポロジに合わせてパケット転送テーブルＡ２１４１の更新を行う。ここでは、図１１のパケット転送テーブル１０４に示すように更新される。
パケット転送テーブルＡ２１４１の更新を行うと、仮想ＬＡＮ状態管理部Ａ２１５１は、トポロジが再構成され、ノードＡ２１が１−１のＩＤをもつノードとして移動したというメッセージを制御メッセージ送受信部Ａ２１４２を介してブロードキャストにより仮想ＬＡＮ内の他ノードへ通知する。該メッセージには、ノードＡ２１のノードＩＤおよびＭＡＣアドレスを含む。該メッセージを受信したノードは、受信したメッセージに含まれるノードＩＤおよびＭＡＣアドレスを用いて、自ノード内のパケット転送テーブルを更新する。本動作により、仮想ＬＡＮ内の各ノードは、ノード１−１離脱後に再構成されたトポロジにおいて互いに通信を行うことが可能となる。
以上本発明の実施の形態および実施例について説明したが、本発明は以上の実施の形態および実施例にのみ限定されず、その他各種の付加変更が可能である。また、本発明のノード装置は、その有する機能をハードウェア的に実現することは勿論、コンピュータとプログラムとで実現することができる。プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態および実施例におけるノードの仮想インターフェースＡ２１４、仮想ＬＡＮ制御部Ａ２１５などの機能手段として機能させる。
本発明の第１の効果は、低コストで仮想ＬＡＮの構築を行うことが可能になることである。
その理由は、本発明のノード装置およびそれを用いて構築される仮想ＬＡＮシステムにおいては、仮想ＬＡＮに参加するノードから他の参加ノード宛てに送信されたデータリンク層パケットは、それらの送受信ノード間に直接通信トンネルが設定されている場合にはその通信トンネルを通じて届けられ、それらの送受信ノード装置間に直接通信トンネルが設定されていない場合には仮想ＬＡＮに参加している１以上の別の参加ノードを経由して届けられるように構成されており、従来のような仮想ハブが不要になるため、仮想ハブの設置・運用コストを削減できるからである。
第２の効果は、スケーラビリティの高い仮想ＬＡＮを提供することが可能となることである。
その理由は、本発明のノード装置およびそれを用いて構築される仮想ＬＡＮシステムにおいては、仮想ＬＡＮ内の通信は、構成されたトポロジに応じて各ノードにおいて作成されるパケット転送テーブルに基づいて行われ、特定のノードだけにトラフィック負荷や処理負荷が集中することはないからである。
第３の効果は、高信頼な仮想ＬＡＮを提供することが可能となることである。
その理由は、本発明のノード装置およびそれを用いて構築される仮想ＬＡＮシステムにおいては、いずれの参加ノードの離脱・障害に対しても、仮想ＬＡＮトポロジの修復が自律的に行われ、仮想ＬＡＮ参加ノード間の通信を継続することができるからである。
【図１】
0004529144.tif 000002
【図２】
0004529144.tif 000003
【図３】
0004529144.tif 000004
【図４】
0004529144.tif 000005
【図５】
0004529144.tif 000006
【図６】
0004529144.tif 000007
【図７】
0004529144.tif 000008
【図８】
0004529144.tif 000009
【図９】
0004529144.tif 000010
【図１０】
0004529144.tif 000011
【図１１】
0004529144.tif 000012