(57)【要約】【課題】IP通信を利用するアプリケーションを変更することなく、i3の機能を利用してIPパケットを転送することが可能なパケット転送方法を得ること。【解決手段】本発明にかかるパケット転送方法は、IP通信を行う端末（１−１〜１−ｍ）とi3ネットワークをIPネットワーク上に構成するネットワーク装置（２−１〜２−ｎ）との間を、IPパケットを透過的に転送可能な所定のトンネルで接続し、そのトンネルをIP通信が可能な仮想インタフェースとして構成し、そして、i3ネットワークでのIDをIPアドレスと同じフォーマットとすることによって、IPパケットの転送をi3での宛先IDによる転送により実現する。【選択図】        図１
2007013803.tif 000002
【特許請求の範囲】
【請求項１】
IP通信を行う端末と、i3（Internet  Indirection  Infrastructure）ネットワークをIPネットワーク上に構成するネットワーク装置と、から構成されるネットワークにおいて、端末とネットワーク装置の間を所定のトンネルで接続し、i3ネットワークにおけるIDをIPアドレスと同じフォーマットとした場合のパケット転送方法であって、
端末が、IP通信用のアプリケーションを用いて、トンネル上で、IPパケットおよびパケット転送経路情報を登録または削除するための制御信号の送受信を行い、当該登録時に受信したいパケットの宛先IPアドレスを指定する第１のパケット転送ステップと、
ネットワーク装置が、特定のトンネルから制御信号を受信した場合に、当該制御信号に指定されるIPアドレスと当該トンネルとの対応を登録または削除し、さらに、自装置のIPアドレスを追加したパケット経路情報をi3ネットワークに登録する経路情報制御ステップと、
ネットワーク装置が、前記トンネルからIPパケットを受信した場合に、当該IPパケットに含まれる宛先IPアドレスを宛先IDとして扱い、かつ受信したIPパケットをデータとするi3パケットを作成し、当該宛先IDに関する転送先情報を管理する他のネットワーク装置へi3パケットを転送する第２のパケット転送ステップと、
ネットワーク装置が、受信したi3パケットの宛先IDに基づいて他のネットワーク装置との間でi3の方式で規定された所定の転送処理を行い、また、i3パケットの宛先がIPアドレスの場合、当該i3パケットのデータであるIPパケットの宛先IPアドレスに対応付けられたトンネル上にIPパケットを転送する第３のパケット転送ステップと、
を含むことを特徴とするパケット転送方法。
【請求項２】
前記第１のパケット転送ステップでは、端末が、受信したいパケットの宛先IPアドレスに加えて、さらにトランスポート層条件を指定し、
前記経路情報制御ステップでは、ネットワーク装置が、制御信号に指定される宛先IPアドレスおよびトランスポート層条件とトンネルとの対応を登録または削除し、
前記第３のパケット転送ステップでは、ネットワーク装置が、受信したi3パケットの宛先IDおよび登録されたトランスポート層条件に基づいて、他のネットワーク装置との間で転送処理を行い、また、i3パケットの宛先がIPアドレスの場合、当該i3パケットのデータであるIPパケットの宛先IPアドレスに対応付けられたトンネルについて、トランスポート層条件とIPパケットとのマッチングを行い、マッチするトンネル上にIPパケットを転送することを特徴とする請求項１に記載のパケット転送方法。
【請求項３】
前記トランスポート層条件として、送信元アドレスとトランスポート層のプロトコルと送信元ポート番号と宛先ポート番号とを指定することを特徴とする請求項２に記載のパケット転送方法。
【請求項４】
前記第１のパケット転送ステップでは、端末が、受信したいパケットの宛先IPアドレスに加えて、パケット内容条件を指定し、
前記経路情報制御ステップでは、ネットワーク装置が、制御信号に指定される宛先IPアドレスおよびパケット内容条件とトンネルとの対応を登録または削除し、
前記第３のパケット転送ステップでは、ネットワーク装置が、受信したi3パケットの宛先IDおよび登録されたパケット内容条件に基づいて、他のネットワーク装置との間で転送処理を行い、また、i3パケットの宛先がIPアドレスの場合、当該i3パケットのデータであるIPパケットの宛先IPアドレスに対応付けられたトンネルについて、パケット内容条件とIPパケットとのマッチングを行い、マッチするトンネル上にIPパケットを転送することを特徴とする請求項１に記載のパケット転送方法。
【請求項５】
前記パケット内容条件として、文字列のパターンを表す拡張正規表現を指定することを特徴とする請求項４に記載のパケット転送方法。
【請求項６】
前記第３のパケット転送ステップでは、i3パケットのデータであるIPパケットがTCPパケットでかつ受信者（転送先のネットワーク装置および端末）が複数存在する場合、前記ネットワーク装置が、TCPコネクション開始時に受信者をランダムに選択し、また、TCPコネクション継続中は同じ受信者との間で通信が行われるように制御することを特徴とする請求項１に記載のパケット転送方法。
【請求項７】
i3（Internet  Indirection  Infrastructure）ネットワークをIPネットワーク上に構成するネットワーク装置とともにネットワークを構成する、IP通信を行う端末であって、
ネットワーク装置との間を所定のトンネルで接続するトンネル通信手段と、
前記トンネルを、IP通信が可能な１つのインタフェースとしてみなすための機能を提供する仮想インタフェース手段と、
前記仮想インタフェース手段が提供する機能を利用して、トンネル上で、IPパケットおよびパケット転送経路情報を登録または削除するための制御信号の送受信を行い、当該登録時に受信したいパケットの宛先IPアドレスを指定する制御手段と、
を備えることを特徴とする端末。
【請求項８】
IP通信を行う端末とともにネットワークを構成する、i3（Internet  Indirection  Infrastructure）ネットワークをIPネットワーク上に構成するネットワーク装置であって、
端末との間を所定のトンネルで接続するトンネル通信手段と、
特定のトンネルからパケット転送経路情報を登録または削除するための制御信号を受信した場合に、当該制御信号に指定されるIPアドレスと当該トンネルとの対応を登録または削除し、さらに、自装置のIPアドレスを追加したパケット経路情報をi3ネットワークに登録する経路情報制御手段と、
前記トンネルからIPパケットを受信した場合に、当該IPパケットに含まれる宛先IPアドレスを宛先IDとして扱い、かつ受信したIPパケットをデータとするi3パケットを作成し、当該宛先IDに関する転送先情報を管理する他のネットワーク装置へi3パケットを転送する第１の転送制御手段と、
受信したi3パケットの宛先IDに基づいて他のネットワーク装置との間で所定の転送処理を行い、また、i3パケットの宛先がIPアドレスの場合に、当該i3パケットのデータであるIPパケットの宛先IPアドレスに対応付けられたトンネル上にIPパケットを転送する第２の転送制御手段と、
を備えることを特徴とするネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、IP通信を行うホスト端末と、i3（Internet  Indirection  Infrastructure）ネットワークをIPネットワーク上に構成するネットワーク装置と、から構成されるネットワークにおけるパケット転送方法に関するものである。
【背景技術】
【０００２】
下記非特許文献１に記載のi3に示されるランデブ通信方式を実現するオーバレイネットワークでは、受信者が自らの受信したいパケットの宛先IDをネットワークに登録することにより、モビリティ，マルチキャスト，エニキャストといった通信形態を実現する。また、受信者が自らの受信したいパケットの宛先IDをネットワークに登録する際に、ネットワーク内で受信者に転送されるまでの経路を指定することが可能である。また、IDは任意のデータ長のデータとすることが可能であり、受信者がi3ネットワークに指定する受信したいパケットの宛先IDと、送信されるパケットに付与されるIDのマッチングは、最長プレフィックスマッチにより行われる。
【０００３】
【非特許文献１】Internet  Indirection  Infrastructure,  Ion  Stoica,  Daniel  Adkins,  Shelley  Zhuang,  Scott  Shenker,  Sonesh  Surana,  ACM  SIGCOMM2002
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記非特許文献１に記載のi3については、以下に示す問題点がある。
【０００５】
（１）i3は、オーバレイネットワークとして構成され、i3を用いた通信は、アプリケーションが通常のIP通信とは異なる方式で実行することを想定している。したがって、端末で動作するIP通信を利用する既存のアプリケーションを変えることなく、受信者によるパケット転送経路制御，モビリティ，マルチキャスト，エニキャストといった通信機能を、提供することができない。
【０００６】
（２）また、受信者がi3ネットワークに登録可能な「受信を希望するパケットの条件」が、パケットの宛先IDのみであり、i3のIDのマッチング方式が最長プレフィックスマッチである。このため、端末が受信したいパケットを、TCPのコネクション単位のようなフロー単位で指定することができない。したがって、アプリケーションが異なる端末間を移動するセッションハンドオーバを実現しようとした場合に、アプリケーションが使用しているTCPコネクションだけを、新しい端末に転送することができない。
【０００７】
（３）また、エニキャストを利用してサーバの負荷分散を実現しようとした場合に、i3の方式では、ID値によりランダムに負荷分散を行うことしかできない。このため、機能分散（例：DNSサーバでFQDN（Fully  Qualified  Domain  Name）の内容によって管理するサーバが異なる場合）に対応することができない。
【０００８】
（４）また、i3の通信では、ある宛先IDのパケットを受信している受信者が１つか複数かを、送信者が知ることができない。このため、送信者は、受信者が１つと考えてTCP通信を行い、実際には複数受信者が存在し、TCP通信が行えない可能性がある。
【０００９】
本発明は、上記に鑑みてなされたものであって、端末で動作するIP通信を利用するアプリケーションを変更することなく、i3の機能（i3が提供する受信者からの経路制御，モビリティ，マルチキャスト，エニキャストといった機能）を利用してIPパケットを転送することが可能なパケット転送方法を得ることを目的とする。
【００１０】
また、TCPコネクション等、トランスポート層の情報による経路制御を可能とするパケット転送方法を得ることを目的とする。
【００１１】
また、IPパケットの内容による経路制御を可能とし、サーバ負荷分散において、ある範囲の機能分散に対応可能なパケット転送方法を得ることを目的とする。
【００１２】
また、受信者が複数存在する場合であってもTCP通信を可能とするパケット転送方法を得ることを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明にかかるパケット転送方法は、IP通信を行う端末と、i3ネットワークをIPネットワーク上に構成するネットワーク装置と、から構成されるネットワークにおいて、端末とネットワーク装置の間を所定のトンネルで接続し、i3ネットワークにおけるIDをIPアドレスと同じフォーマットとした場合のパケット転送方法であって、たとえば、端末が、IP通信用のアプリケーションを用いて、トンネル上で、IPパケットおよびパケット転送経路情報を登録または削除するための制御信号の送受信を行い、当該登録時に受信したいパケットの宛先IPアドレスを指定する第１のパケット転送ステップと、ネットワーク装置が、特定のトンネルから制御信号を受信した場合に、当該制御信号に指定されるIPアドレスと当該トンネルとの対応を登録または削除し、さらに、自装置のIPアドレスを追加したパケット経路情報をi3ネットワークに登録する経路情報制御ステップと、ネットワーク装置が、前記トンネルからIPパケットを受信した場合に、当該IPパケットに含まれる宛先IPアドレスを宛先IDとして扱い、かつ受信したIPパケットをデータとするi3パケットを作成し、当該宛先IDに関する転送先情報を管理する他のネットワーク装置へi3パケットを転送する第２のパケット転送ステップと、ネットワーク装置が、受信したi3パケットの宛先IDに基づいて他のネットワーク装置との間でi3の方式で規定された所定の転送処理を行い、また、i3パケットの宛先がIPアドレスの場合、当該i3パケットのデータであるIPパケットの宛先IPアドレスに対応付けられたトンネル上にIPパケットを転送する第３のパケット転送ステップと、を含むことを特徴とする。
【発明の効果】
【００１４】
この発明によれば、端末で動作するIP通信用のアプリケーションを変更することなく、i3の機能（受信者によるパケット転送経路制御，モビリティ，マルチキャスト，エニキャストといった機能）を利用してIPパケットを転送することができる、という効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明にかかるパケット転送方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１６】
図１は、本発明にかかるパケット転送方法を実現するためのネットワーク構成の一例を示す図であり、たとえば、IP通信を行うホスト端末（端末）１−１，１−２，…，１−ｍと、i3（Internet  Indirection  Infrastructure）に示されるランデブ通信方式を実現するオーバレイネットワーク（以下、i3ネットワークと呼ぶ）をIPネットワーク上に構成するネットワーク装置２−１，２−２，…，２−ｎと、を備えている。
【００１７】
このネットワークにおいて、本実施の形態では、端末とネットワーク装置の間を、IPパケットを透過的に転送可能なトンネル（以下、端末−装置間トンネルと呼ぶ）で接続する。また、i3ネットワークにおけるIDとしては、たとえば、IPアドレス（IPv4，IPv6のいずれでも可）と同じフォーマットのものを使用する。また、端末−装置間トンネル上では、端末が、指定するID（＝IPアドレス）宛のパケットを受信する。また、端末−装置間トンネル上では、idstackを示すトリガ（IDとidstackの組）の登録／削除を指示するための制御信号の送受信も可能とする。なお、idstackは、i3ネットワーク内で転送に使用する経路を指定するためのIDかIPアドレスのリスト（空も可）である。
【００１８】
図２は、端末１（上記端末１−１〜１−ｍに相当）の構成例を示す図であり、たとえば、LinuxをOSとするPCとする。図２において、端末１は、IP通信モジュール１１と、トンネル通信モジュール１２と、仮想インタフェースドライバ１３と、アプリケーション１４−１〜１４−ｋと、から構成されている。
【００１９】
上記IP通信モジュール１１は、IPネットワークを介して端末−ネットワーク装置間のIP通信を実現するIPプロトコル処理を行う機能を提供し、たとえば、Linuxに含まれるIPプロトコルスタックS/Wによって実現される。
【００２０】
また、トンネル通信モジュール１２は、端末−装置間トンネルを実現するための通信プロトコル処理を行う。たとえば、IETF（Internet  Engineering  Task  Force）のrfc2784に規定されるGRE（Generic  Routing  Encapsulation）を通信プロトコルとして使用することにより、トンネル通信を実現する。端末−装置間トンネルでIPパケットを透過的に転送するときは、GREヘッダの「Protocol  Type」にIPを表す値を設定し、端末−装置間トンネルでトリガの登録／削除を指示するための制御信号の送受信を行うときは、GREヘッダの「Protocol  Type」に制御信号を示す値を設定する。これにより、１つの端末−装置間トンネル上でIPパケット転送と制御信号転送とを実現する。
【００２１】
また、仮想インタフェースドライバ１３は、端末−装置間トンネルを、IP通信が可能な１つのインタフェースとして見せるための機能を提供するものであり、Linuxのデバイスドライバとして実現する。
【００２２】
また、アプリケーション１４−１〜１４−ｋは、Linux上で動作するアプリケーションであり、IP通信モジュール１１を用いたIP通信や、仮想インタフェースドライバ１３が提供するAPIを利用して端末−装置間トンネルでトリガの登録／削除を指示するための制御信号の送受信、を行う。
【００２３】
図３は、ネットワーク装置２（上記ネットワーク装置２−１〜２−ｎに相当）の構成例を示す図であり、たとえば、LinuxをOSとするPCとする。図３において、ネットワーク装置２は、IP通信モジュール２１と、トンネル通信モジュール２２と、DHT検索モジュール２３と、宛先ID端末テーブル２４と、宛先IDルーティングテーブル２５と、制御モジュール２６と、から構成されている。
【００２４】
上記IP通信モジュール２１は、IPネットワークを介して、端末−ネットワーク装置間のIP通信とネットワーク装置間のIP通信を実現するIPプロトコル処理を行う機能を提供し、たとえば、Linuxに含まれるIPプロトコルスタックS/Wによって実現される。また、トンネル通信モジュール２２は、上記トンネル通信モジュール１２と同様の処理を行う。
【００２５】
また、DHT検索モジュール２３は、ChordというDHT（Distributed  Hash  Table）検索方式を実現するモジュールである。ある宛先IDが与えられたときに、その宛先IDがマップされるネットワーク装置を決定する。
【００２６】
また、宛先ID端末テーブル２４は、宛先IDをIDとして指定するトリガを登録している端末−装置間トンネルのリストをデータとして保持する。また、宛先IDルーティングテーブル２５は、自装置が管理することになるIDをIDとして指定するトリガに示されるidstackのリストをデータとして保持する。また、制御モジュール２６は、他のモジュールの機能を利用して、本実施の形態における特徴的な処理を実現する。
【００２７】
つづいて、上記のように構成されるネットワークにおける各装置の動作例について説明する。
【００２８】
端末１の各アプリケーションは、端末−装置間トンネルを仮想インタフェースとして扱い、その仮想インタフェース上で通常のIPプロトコル処理手順に基づいてIPパケットの送受信を行う。たとえば、仮想インタフェースに、自端末のIPアドレスとサブネットワークアドレスとを割り当てる。IPアドレスはIPv4，IPv6のいずれでもよい。
【００２９】
ネットワーク装置２の制御モジュール２６は、自装置に接続される端末−装置間トンネルについて、宛先ID（＝IPアドレス）をキーとして、宛先ID端末テーブル２４を管理する。また、制御モジュール２６は、i3の方式によって自装置が管理することになるIDをキーとして、宛先IDルーティングテーブル２５を管理する。
【００３０】
そして、ネットワーク装置２の制御モジュール２６は、端末−装置間トンネル上で、トリガの登録を指示する制御信号を端末１から受信した場合に、そのトリガに指定されるIDと端末−装置間トンネルとの対応付けを、宛先ID端末テーブル２４に追加する。さらに、そのトリガに示されるidstackを、そのidstackが表すIDのリストの最後に自装置のIPアドレスを追加したidstackに置き換えたトリガを、i3ネットワークに登録する。トリガの登録方式は、i3の方式に従う。
【００３１】
また、ネットワーク装置２の制御モジュール２６は、端末−装置間トンネル上で、トリガの削除を指示する制御信号を端末１から受信した場合に、そのトリガに指定されるIDと端末−装置間トンネルとの対応付けを、宛先ID端末テーブル２４から削除する。さらに、そのトリガに示されるidstackを、そのidstackが表すIDのリストの最後に自装置のIPアドレスを追加したidstackに置き換えたトリガを、i3ネットワークから削除する。トリガの削除方式は、i3の方式に従う。
【００３２】
たとえば、端末１内の特定のアプリケーションが、仮想インタフェース上で、IPパケットを送信すると、そのIPパケットは、端末−装置間トンネル経由でネットワーク装置２に転送される。ネットワーク装置２の制御モジュール２６は、端末−装置間トンネルから受信したIPパケットに含まれる宛先IPアドレスをIDとして扱い、このIDを要素IDとして含むidstackを作成し、さらに、このidstackを宛先としIPパケットをデータとするi3パケットを作成する。そして、上記宛先IPアドレスに等しい宛先IDに関する転送先情報を管理するネットワーク装置２（他のネットワーク装置）へ、i3パケットを転送する。
【００３３】
上記i3パケットを受信したネットワーク装置２の制御モジュール２６は、i3パケットの宛先として示されるidstackの先頭要素が、たとえば、ID（＝ID#1）の場合、宛先IDルーティングテーブル２５のリストに含まれる宛先IDの中でID#1に最長プレフィックスマッチするものを検索する。そして、受信したi3パケットの宛先idstackの先頭要素を、ID#1をキーとするデータに示されるidstack（宛先IDルーティングテーブル２５に保持されたidstackのリスト中の単一または複数のidstack）の内容に、個別に置き換えたi3パケットを作成し、それらのi3パケットをi3の方式で転送する。
【００３４】
また、上記i3パケットを受信したネットワーク装置２の制御モジュール２６は、i3パケットの宛先として示されるidstackの先頭要素が、たとえば、IPアドレス（＝IP#1）の場合、i3パケットの宛先に示されるidstackの先頭要素を削除する。このとき、idstackが空になる場合は、宛先を示すidstackが空のi3パケットのデータであるIPパケットの宛先IPアドレスをキーとして、宛先ID端末テーブル２４を検索し、検索結果として得られる全ての端末−装置間トンネル上にIPパケットを送信する。そして、端末１は、端末−装置間トンネルから受信したIPパケット（仮想インタフェース上で受信したIPパケット）を、通常のIPプロトコル処理手順により受信する。ただし、上記の処理でidstackが空でない場合は、そのidstackを宛先としたi3パケットを作成し、そのi3パケットをi3の方式で転送する。
【００３５】
以降、上記i3パケットの転送処理を繰り返し実行することにより、最終的には、端末１からの指示によりトリガを登録したネットワーク装置２に、i3パケットが転送される。
【００３６】
なお、上記i3の方式での転送処理は、以下の通りである。たとえば、宛先に示されるidstackの先頭要素がIDである場合は、そのIDに関する転送先情報を管理するネットワーク装置へi3パケットを転送する。宛先に示されるidstackの先頭要素がIPアドレスである場合は、そのIPアドレスを持つネットワーク装置へi3パケットを転送する。
【００３７】
このように、本実施の形態においては、i3による通信を行うネットワーク装置と、IP通信を行うアプリケーションが動作する端末と、の間をトンネルで接続し、端末は、そのトンネルを、IP通信が可能な仮想インタフェースとして構成する。また、端末は、そのトンネルを用いて、ネットワーク装置に対してi3におけるパケット転送経路を制御する。また、i3でのIDをIPアドレスと同じフォーマットとし、IPパケットの転送を、i3での宛先IDによる転送により実現する。これにより、端末で動作するIP通信用のアプリケーションを変更することなく、i3の機能（受信者によるパケット転送経路制御，モビリティ，マルチキャスト，エニキャストといった機能）を利用してIPパケットを転送することができる。
【００３８】
実施の形態２．
つづいて、実施の形態２の動作について説明する。なお、ネットワーク、端末１およびネットワーク装置２の構成については、前述した実施の形態１と同様である。本実施の形態では、前述した実施の形態１と異なる処理について説明する。
【００３９】
本実施の形態においては、端末１がネットワーク装置２に登録指示可能なトリガを、IDとトランスポート層条件とidstackとの組み合わせに拡張し、トランスポート層条件として、送信元アドレスとトランスポート層のプロトコルと送信元ポート番号と宛先ポート番号とを指定することとした。トランスポート層条件を構成する各項目については、指定を必須とする。
【００４０】
また、本実施の形態の各ネットワーク装置において、宛先ID端末テーブル２４には、宛先IDとトランスポート層条件を指定するトリガを登録している端末−装置間トンネルのリストをデータとして保持する。また、宛先IDルーティングテーブル２５には、i3の方式によって自装置が管理することになるIDとトランスポート層条件を指定するトリガに示されるidstackのリストをデータとして保持する。
【００４１】
たとえば、ネットワーク装置２の制御モジュール２６は、自装置に接続される端末−装置間トンネルについて、宛先ID（＝IPアドレス）とトランスポート層条件をキーとして、宛先ID端末テーブル２４を管理する。また、制御モジュール２６は、i3の方式によって自装置が管理することになるIDとトランスポート層条件をキーとして、宛先IDルーティングテーブル２５を管理する。
【００４２】
そして、ネットワーク装置２の制御モジュール２６は、端末−装置間トンネル上で、トリガの登録を指示する制御信号を端末１から受信した場合に、そのトリガに指定されるIDおよびトランスポート層条件と、端末−装置間トンネルと、の対応付けを、宛先ID端末テーブル２４に追加する。さらに、そのトリガに示されるidstackを、そのidstackが表すIDのリストの最後に自装置のIPアドレスを追加したidstackに置き換えたトリガを、i3ネットワークに登録する。トリガの登録方式は、i3の方式に従う。
【００４３】
一方で、ネットワーク装置２の制御モジュール２６は、端末−装置間トンネル上で、トリガの削除を指示する制御信号を端末１から受信した場合に、そのトリガに指定されるIDおよびトランスポート層条件と、端末−装置間トンネルと、の対応付けを、宛先ID端末テーブル２４から削除する。さらに、そのトリガに示されるidstackを、そのidstackが表すIDのリストの最後に自装置のIPアドレスを追加したidstackに置き換えたトリガを、i3ネットワークから削除する。トリガの削除方式は、i3の方式に従う。
【００４４】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６は、i3パケットの宛先として示されるidstackの先頭要素が、たとえば、ID（＝ID#1）の場合、宛先IDルーティングテーブル２５のリストに含まれる宛先IDの中でID#1に最長プレフィックスマッチするものを検索する。そして、受信したi3パケットのデータに示されるIPパケットの内容と、各エントリのトランスポート層条件と、のマッチング処理を行う。トランスポート層条件がマッチするエントリが存在する場合は、受信したi3パケットの宛先idstackの先頭要素を、マッチするエントリのデータに示されるidstack（宛先IDルーティングテーブル２５に保持されたidstackのリスト中の単一または複数のidstack）の内容で、個別に置き換えたi3パケットを作成し、それらのi3パケットをi3の方式で転送する。また、トランスポート層条件がマッチするエントリが存在しない場合は、受信したi3パケットの宛先idstackの先頭要素を、最長プレフィックスマッチする全てのエントリのデータに示されるidstackの内容で、個別に置き換えたi3パケットを作成し、それらのi3パケットをi3の方式で転送する。
【００４５】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６は、i3パケットの宛先として示されるidstackの先頭要素が、たとえば、IPアドレス（＝IP#1）の場合、i3パケットの宛先に示されるidstackの先頭要素を削除する。このとき、idstackが空になる場合は、そのi3パケットのデータであるIPパケットの宛先IPアドレスをキーとして、宛先ID端末テーブル２４を検索する。そして、検索結果として得られた全てのエントリ（端末−装置間トンネル）について、トランスポート層条件とi3パケットのデータであるIPパケットとのマッチングを行い、マッチするエントリが存在すれば、そのエントリに示される端末−装置間トンネルのリストに含まれる、全ての端末−装置間トンネル上にIPパケットを送信する。トランスポート層条件がマッチするエントリが存在しなければ、IPアドレスをキーとする検索で得られた全エントリに示される端末−装置間トンネルのリストに含まれる、全ての端末−装置間トンネル上にIPパケットを送信する。ただし、上記の処理でidstackが空でない場合は、そのidstackを宛先としたi3パケットを作成し、そのi3パケットをi3の方式で転送する。
【００４６】
以降、上記i3パケットの転送処理を繰り返し実行することにより、最終的には、端末１からの指示によりトリガを登録したネットワーク装置２に、i3パケットが転送される。
【００４７】
このように、本実施の形態においては、端末が、受信したいパケットの宛先IDだけでなく、トランスポート層条件についても指定可能とし、受信したいパケットを、TCPのコネクション単位のようなフロー単位で指定することを可能とした。これにより、実施の形態１と同様の効果が得られるとともに、さらに、アプリケーションが異なる端末間を移動するセッションハンドオーバを実現しようとした場合に、アプリケーションが使用しているTCPコネクションだけを、新しい端末に転送することができる。すなわち、トランスポート層の情報による経路制御を実現できる。
【００４８】
なお、上記においては、トランスポート層条件を構成する各項目の指定を必須として説明したが、これに限らず、トランスポート層条件を構成する各項目の指定を必須とせずに、実施の形態１の処理と併用することも可能とする。
【００４９】
実施の形態３．
つづいて、実施の形態３の動作について説明する。なお、ネットワーク、端末１およびネットワーク装置２の構成については、前述した実施の形態１および２と同様である。本実施の形態では、前述した実施の形態１と異なる処理について説明する。
【００５０】
本実施の形態においては、端末１がネットワーク装置２に登録指示可能なトリガを、IDとパケット内容条件とidstackとの組み合わせに拡張し、パケット内容条件として、文字列のパターンを表す拡張正規表現を指定することとした。パケット内容条件については、指定を必須とする。
【００５１】
また、本実施の形態の各ネットワーク装置において、宛先ID端末テーブル２４には、宛先IDとパケット内容条件を指定するトリガを登録している端末−装置間トンネルのリストをデータとして保持する。また、宛先IDルーティングテーブル２５には、i3の方式によって自装置が管理することになるIDとパケット内容条件を指定するトリガに示されるidstackのリストをデータとして保持する。
【００５２】
たとえば、ネットワーク装置２の制御モジュール２６は、自装置に接続される端末−装置間トンネルについて、宛先ID（＝IPアドレス）とパケット内容条件をキーとして、宛先ID端末テーブル２４を管理する。また、制御モジュール２６は、i3の方式によって自装置が管理することになるIDとパケット内容条件をキーとして、宛先IDルーティングテーブル２５を管理する。
【００５３】
そして、ネットワーク装置２の制御モジュール２６は、端末−装置間トンネル上で、トリガの登録を指示する制御信号を端末１から受信した場合に、そのトリガに指定されるIDおよびパケット内容条件と、端末−装置間トンネルと、の対応付けを、宛先ID端末テーブル２４に追加する。さらに、そのトリガに示されるidstackを、そのidstackが表すIDのリストの最後に自装置のIPアドレスを追加したidstackに置き換えたトリガを、i3ネットワークに登録する。トリガの登録方式は、i3の方式に従う。
【００５４】
一方で、ネットワーク装置２の制御モジュール２６は、端末−装置間トンネル上で、トリガの削除を指示する制御信号を端末１から受信した場合に、そのトリガに指定されるIDおよびパケット内容条件と、端末−装置間トンネルと、の対応付けを、宛先ID端末テーブル２４から削除する。さらに、そのトリガに示されるidstackを、そのidstackが表すIDのリストの最後に自装置のIPアドレスを追加したidstackに置き換えたトリガを、i3ネットワークから削除する。トリガの削除方式は、i3の方式に従う。
【００５５】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６は、i3パケットの宛先として示されるidstackの先頭要素が、たとえば、ID（＝ID#1）の場合、宛先IDルーティングテーブル２５のリストに含まれる宛先IDの中でID#1に最長プレフィックスマッチするものを検索する。そして、受信したi3パケットのデータに示されるIPパケットの内容と、各エントリのパケット内容条件と、のマッチング処理を行う。パケット内容条件がマッチするエントリが存在する場合は、受信したi3パケットの宛先idstackの先頭要素を、マッチするエントリのデータに示されるidstack（宛先IDルーティングテーブル２５に保持されたidstackのリスト中の単一または複数のidstack）の内容で、個別に置き換えたi3パケットを作成し、それらのi3パケットをi3の方式で転送する。また、パケット内容条件がマッチするエントリが存在しない場合は、受信したi3パケットの宛先idstackの先頭要素を、最長プレフィックスマッチする全てのエントリのデータに示されるidstackの内容で、個別に置き換えたi3パケットを作成し、それらのi3パケットをi3の方式で転送する。
【００５６】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６は、i3パケットの宛先として示されるidstackの先頭要素が、たとえば、IPアドレス（＝IP#1）の場合、i3パケットの宛先に示されるidstackの先頭要素を削除する。このとき、idstackが空になる場合は、そのi3パケットのデータであるIPパケットの宛先IPアドレスをキーとして、宛先ID端末テーブル２４を検索する。そして、検索結果として得られた全てのエントリ（端末−装置間トンネル）について、パケット内容条件とi3パケットのデータであるIPパケットとのマッチングを行い、マッチするエントリが存在すれば、そのエントリに示される端末−装置間トンネルのリストに含まれる、全ての端末−装置間トンネル上にIPパケットを送信する。パケット内容条件がマッチするエントリが存在しなければ、IPアドレスをキーとする検索で得られた全エントリに示される端末−装置間トンネルのリストに含まれる、全ての端末−装置間トンネル上にIPパケットを送信する。ただし、上記の処理でidstackが空でない場合は、そのidstackを宛先としたi3パケットを作成し、そのi3パケットをi3の方式で転送する。
【００５７】
以降、上記i3パケットの転送処理を繰り返し実行することにより、最終的には、端末１からの指示によりトリガを登録したネットワーク装置２に、i3パケットが転送される。
【００５８】
このように、本実施の形態においては、端末が、受信したいパケットの宛先IDだけでなく、パケット内容条件についても指定可能とし、たとえば、受信者が、「DNS  Query」に指定されるFQDNの値を、条件として指定可能な構成とした。これにより、実施の形態１と同様の効果が得られるとともに、さらに、i3の方式において、サーバの負荷分散を実現しようとした場合に、ID値によるランダムな負荷分散ではなく、機能分散を実現できる。
【００５９】
なお、上記においては、パケット内容条件の指定を必須として説明したが、これに限らず、パケット内容条件の指定を必須とせずに、実施の形態１の処理と併用することも可能とする。
【００６０】
実施の形態４．
つづいて、実施の形態４の動作について説明する。なお、ネットワークおよび端末１の構成については、前述した実施の形態１および２と同様である。本実施の形態では、前述した実施の形態１〜３と異なる処理について説明する。
【００６１】
図４は、実施の形態４のネットワーク装置２（図１のネットワーク装置２−１〜２−ｎに相当）の構成例を示す図であり、たとえば、LinuxをOSとするPCとする。図４において、ネットワーク装置２は、前述したIP通信モジュール２１，トンネル通信モジュール２２，DHT検索モジュール２３，宛先ID端末テーブル２４，宛先IDルーティングテーブル２５に加えて、さらに、制御モジュール２６ａと、TCP端末テーブル２７ａと、TCPルーティングテーブル２８ａと、を備えている。なお、前述した実施の形態１のネットワーク装置２（図３参照）と同様の構成については、同一の符号を付してその説明を省略する。
【００６２】
本実施の形態の各ネットワーク装置において、宛先ID端末テーブル２４には、宛先IDをIDとして指定するトリガを登録している端末−装置間トンネルのリストを、データとして保持する。また、宛先IDルーティングテーブル２５には、i3の方式によって自装置が管理することになるIDをIDとして指定するトリガに示されるidstackのリストを、データとして保持する。
【００６３】
たとえば、ネットワーク装置２の制御モジュール２６ａは、自装置に接続される端末−装置間トンネルについて、宛先ID（＝IPアドレス）をキーとして、宛先ID端末テーブル２４を管理する。また、制御モジュール２６ａは、i3の方式によって自装置が管理することになるIDをキーとして、宛先IDルーティングテーブル２５を管理する。
【００６４】
また、ネットワーク装置２の制御モジュール２６ａは、TCPコネクションに関する情報を保持するために、送信元IPアドレス，宛先IPアドレス，送信元ポート番号，宛先ポート番号をキーとして、転送に使用する端末−装置間トンネル（１つ）をデータとして保持するTCP端末テーブル２７ａを管理する。また、制御モジュール２６ａは、送信元IPアドレス，宛先IPアドレス，送信元ポート番号，宛先ポート番号をキーとして、転送に使用するidstack（１つ）をデータとして保持するTCPルーティングテーブルを管理する。
【００６５】
そして、ネットワーク装置２の制御モジュール２６ａは、端末−装置間トンネル上で、トリガの登録を指示する制御信号を端末１から受信した場合に、そのトリガに指定されるIDと、端末−装置間トンネルと、の対応付けを、宛先ID端末テーブル２４に追加する。さらに、そのトリガに示されるidstackを、そのidstackが表すIDのリストの最後に自装置のIPアドレスを追加したidstackに置き換えたトリガを、i3ネットワークに登録する。トリガの登録方式は、i3の方式に従う。
【００６６】
一方で、ネットワーク装置２の制御モジュール２６ａは、端末−装置間トンネル上で、トリガの削除を指示する制御信号を端末１から受信した場合に、そのトリガに指定されるIDと、端末−装置間トンネルと、の対応付けを、宛先ID端末テーブル２４から削除する。さらに、そのトリガに示されるidstackを、そのidstackが表すIDのリストの最後に自装置のIPアドレスを追加したidstackに置き換えたトリガを、i3ネットワークから削除する。トリガの削除方式は、i3の方式に従う。
【００６７】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６ａは、i3パケットのデータに示されるIPパケットがTCPパケットではなく、かつ、i3パケットの宛先として示されるidstackの先頭要素が、たとえば、ID（＝ID#1）の場合、宛先IDルーティングテーブル２５のリストに含まれる宛先IDの中でID#1に最長プレフィックスマッチするものを検索する。そして、受信したi3パケットの宛先idstackの先頭要素を、ID#1をキーとするデータに示されるidstack（宛先IDルーティングテーブル２５に保持されたidstackのリスト中の単一または複数のidstack）の内容に、個別に置き換えたi3パケットを作成し、それらのi3パケットをi3の方式で転送する。
【００６８】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６ａは、i3パケットの宛先に示されるidstackの先頭要素が、たとえば、ID（＝ID#1）で、かつ、i3パケットのデータに示されるIPパケットがTCPパケットでSYNフラグが設定されるものの場合、宛先IDルーティングテーブル２５のリストに含まれる宛先IDの中でID#1に最長プレフィックスマッチするものを検索する。そして、ID#1をキーとするデータに示されるidstackの中からランダムに１つを選択し、受信したi3パケットの宛先idstackの先頭要素を、選択されたidstackの内容に置き換えたi3パケットを作成し、そのi3パケットをi3の方式で転送する。さらに、TCPルーティングテーブル２８ａに、i3パケットに含まれるTCPパケットの送信元IPアドレス，宛先IPアドレス，送信元ポート番号，宛先ポート番号をキーとして、選択したidstackをデータとするエントリを追加する。
【００６９】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６ａは、i3パケットの宛先に示されるidstackの先頭要素が、たとえば、ID（＝ID#1）で、かつ、i3パケットのデータに示されるIPパケットがTCPパケットでSYNフラグもFINフラグも設定されないものの場合、i3パケットに含まれるTCPパケットの送信元IPアドレス，宛先IPアドレス，送信元ポート番号，宛先ポート番号をキーとして、TCPルーティングテーブル２８ａを検索する。この検索でデータが得られなければ、i3パケットを廃棄する。一方で、この検索でデータが得られた場合は、i3パケットの宛先idstackの先頭要素を、検索で得られたidstackの内容に置き換えたi3パケットを作成し、そのi3パケットをi3の方式で転送する。
【００７０】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６ａは、i3パケットの宛先に示されるidstackの先頭要素が、たとえば、ID（＝ID#1）で、かつ、i3パケットのデータに示されるIPパケットがTCPパケットでFINフラグが設定されるものの場合、i3パケットに含まれるTCPパケットの送信元IPアドレス，宛先IPアドレス，送信元ポート番号，宛先ポート番号をキーとして、TCPルーティングテーブル２８ａを検索する。この検索でエントリが得られるのであれば、そのエントリをTCPルーティングテーブル２８ａから削除する。さらに、宛先IDルーティングテーブル２５に含まれる宛先IDの中でID#1に最長プレフィックスマッチするものを検索する。そして、受信したi3パケットの宛先idstackの先頭要素を、ID#1をキーとするデータに示されるidstackの内容に、個別に置き換えたi3パケットを作成し、それらのi3パケットをi3の方式で転送する。
【００７１】
また、i3パケットを受信したネットワーク装置２の制御モジュール２６ａは、i3パケットの宛先に示されるidstackの先頭要素が、IPアドレス（＝IP#1）の場合、i3パケットの宛先に示されるidstackの先頭要素を削除する。このとき、idstackが空になる場合は、以下の処理を行う。
【００７２】
たとえば、idstackが空になり、かつ、宛先を示すidstackが空のi3パケットのデータであるIPパケットがTCPパケットではない場合は、そのIPパケットの宛先IPアドレスをキーとして、宛先ID端末テーブル２４を検索し、検索結果として得られる全ての端末−装置間トンネル上にIPパケットを送信する。
【００７３】
また、idstackが空になり、かつ、i3パケットのデータに示されるIPパケットがTCPパケットでSYNフラグが設定されるものの場合は、そのIPパケットの宛先IPアドレスをキーとして、宛先ID端末テーブル２４を検索し、さらに、検索結果として得られる全ての端末−装置間トンネルの中からランダムに１つを選択し、選択した端末−装置間トンネル上にIPパケットを送信する。そして、TCP端末テーブル２７ａに、i3パケットに含まれるTCPパケットの送信元IPアドレス，宛先IPアドレス，送信元ポート番号，宛先ポート番号をキーとして選択した端末−装置間トンネルをデータとするエントリを追加する。
【００７４】
また、idstackが空になり、かつ、i3パケットのデータに示されるIPパケットがTCPパケットでSYNフラグもFINフラグも設定されないものの場合は、i3パケットに含まれるTCPパケットの送信元IPアドレス，宛先IPアドレス，送信元ポート番号，宛先ポート番号をキーとして、TCP端末テーブル２７ａを検索する。この検索でデータが得られなければi3パケットを廃棄する。一方で、この検索でデータが得られた場合は、検索で得られた端末−装置間トンネル上にIPパケットを送信する。
【００７５】
また、idstackが空になり、かつ、i3パケットのデータに示されるIPパケットがTCPパケットでFINフラグが設定されるものの場合は、i3パケットに含まれるTCPパケットの送信元IPアドレス，宛先IPアドレス，送信元ポート番号，宛先ポート番号をキーとして、TCP端末テーブル２７ａを検索し、検索でエントリが得られるのであればエントリをTCP端末テーブル２７ａから削除する。さらに、IPパケットの宛先IPアドレスをキーとして、宛先ID端末テーブル２４を検索し、検索結果として得られる全ての端末−装置間トンネル上にパケットを送信する。
【００７６】
ただし、上記の処理でidstackが空でない場合は、そのidstackを宛先としたi3パケットを作成し、そのi3パケットをi3の方式で転送する。
【００７７】
以降、上記i3パケットの転送処理を繰り返し実行することにより、最終的には、端末１からの指示によりトリガを登録したネットワーク装置２に、i3パケットが転送される。
【００７８】
このように、本実施の形態においては、TCP通信で受信者が複数存在する場合に、TCPコネクション開始時にネットワーク側で受信者をランダムに選択し、TCPコネクション継続中は必ず同じ通信相手との間で通信が行われるようにネットワーク側で制御を行うこととした。すなわち、ネットワーク側で通信相手が１つになるように制御を行うこととした。これにより、実施の形態１と同様の効果が得られるとともに、さらに、受信者が複数存在する場合であっても、TCP通信が可能となる。
【産業上の利用可能性】
【００７９】
以上のように、本発明にかかるパケット転送方法は、IP通信を行うホスト端末と、i3ネットワークをIPネットワーク上に構成するネットワーク装置と、から構成されるネットワークにおいて有用である。
【図面の簡単な説明】
【００８０】
【図１】本発明にかかるパケット転送方法を実現するためのネットワーク構成の一例を示す図である。
【図２】端末の構成例を示す図である。
【図３】ネットワーク装置の構成例を示す図である。
【図４】ネットワーク装置の構成例を示す図である。
【符号の説明】
【００８１】
１，１−１，１−２，１−ｍ  ホスト端末（端末）
２，２−１，２−２，２−ｎ  ネットワーク装置
１１  IP通信モジュール
１２  トンネル通信モジュール
１３  仮想インタフェースドライバ
１４−１，１４−ｋ  アプリケーション
２１  IP通信モジュール
２２  トンネル通信モジュール
２３  DHT検索モジュール
２４  宛先ID端末テーブル
２５  宛先IDルーティングテーブル
２６，２６ａ  制御モジュール
２７ａ  TCP端末テーブル
２８ａ  TCPルーティングテーブル
【図１】
2007013803.tif 000003
【図２】
2007013803.tif 000004
【図３】
2007013803.tif 000005
【図４】
2007013803.tif 000006