説明

フォールバック検知装置、フォールバック検知方法及びフォールバック検知プログラム

【課題】フォールバックが行われるまでの時間を短縮すること。
【解決手段】複数のプロトコルに対応する第1の端末によって第2の端末に向けて送信されるパケットを監視する。また、通信開始メッセージが複数あるプロトコルのうち特定のプロトコルにて所定期間内に所定回数第2の端末に送信されたとの監視結果が得られた場合に、通信開始メッセージの送信先となる第2の端末を識別するための識別情報を所定の記憶装置に格納する。また、所定の記憶装置に格納された識別情報が宛先となる通信開始メッセージの送信元となる第1の端末について、フォールバックを制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、フォールバック検知装置、フォールバック検知方法及びフォールバック検知プログラムに関する。
【背景技術】
【0002】
従来、複数のプロトコルに対応したネットワークがある。複数のプロトコルに対応したネットワーク内にある端末は、例えば、1つのプロトコルを優先して用いて他の端末と通信を行う。また、端末は、優先して用いるプロトコルで他の端末と通信ができなかった場合には、他のプロトコルへとフォールバックした上で通信を行う。
【0003】
IPv4及びIPv6に対応したデュアルスタックネットワークを例に説明する。この場合、デュアルスタックネットワークに接続された端末は、例えば、IPv6を優先して用いて他の端末と通信を行う。また、端末は、IPv6を用いて他の端末と通信ができなかった場合には、IPv4にフォールバックした上で、IPv4を用いて他の端末と通信を試みる。
【0004】
また、端末は、通信が確立できない場合には、一定の時間を空けた上で、同じプロトコルにて再接続を何度か試みる。すなわち、端末は、一定の時間を空けた上で再接続を何度か試みても接続できず、タイムアウトとなった場合に、フォールバックを行い、別のプロトコルにて接続を試みる。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】”RFC5461 TCP’s Reaction to Soft Errors”、[online]、[平成23年5月10日検索]、インターネット[online](URL:http://tools.ietf.org/html/rfc5461)
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した手法では、フォールバックが行われるまでに時間がかかる。
【0007】
開示の実施形態は、上述に鑑みてなされたものであって、適切に通信可能となるフォールバック検知装置、フォールバック検知方法及びフォールバック検知プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
開示するフォールバック検知装置は、1つの態様において、複数のプロトコルに対応する第1の端末によって第2の端末に向けて送信されるパケットを監視する監視部を備える。また、通信の開始を要求する通信開始メッセージが前記複数あるプロトコルのうち特定のプロトコルにて前記第1の端末から前記第2の端末に所定期間内に所定回送信されたとの監視結果が前記監視部により得られた場合に、該通信開始メッセージの送信先となる該第2の端末を識別するための該プロトコルにおける識別情報を所定の記憶装置に格納する格納部を備える。また、前記格納部によって前記所定の記憶装置に格納された識別情報が宛先となる前記通信開始メッセージの送信元となる前記第1の端末について、フォールバックを制御するフォールバック制御部を備える。
【発明の効果】
【0009】
開示するフォールバック検知装置の1つの態様によれば、適切に通信可能となるという効果を奏する。
【図面の簡単な説明】
【0010】
【図1】図1は、実施例1におけるフォールバック検知装置を含むシステム構成の一例を示す図である。
【図2】図2は、実施例1におけるフォールバック検知装置の構成の一例を示すブロック図である。
【図3】図3は、実施例1における通信開始メッセージテーブルに記憶されたレコードの一例を示す図である。
【図4】図4は、実施例1におけるDNSパケットテーブルに記憶されたレコードの一例を示す図である。
【図5】図5は、実施例1における内部端末情報テーブルに記憶されたレコードの一例を示す図である。
【図6】図6は、実施例1におけるフォールバックテーブルに記憶されたレコードの一例を示す図である。
【図7】図7は、実施例1において識別情報をフォールバックテーブルに格納するまでの処理の流れの一例を示すシーケンス図である。
【図8】図8は、実施例1におけるフォールバック制御部による処理の一例を示すフローチャートである。
【図9】図9は、フォールバック検知装置による1連の処理を実行するための制御プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。
【発明を実施するための形態】
【0011】
以下に、開示するフォールバック検知装置、フォールバック検知方法及びフォールバック検知プログラムの実施例について、図面に基づいて詳細に説明する。なお、本実施例により開示する発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例1】
【0012】
図1は、実施例1におけるフォールバック検知装置を含むシステム構成の一例を示す図である。図1に示す例では、フォールバック検知装置200に加えて、内部端末100と、ルータ300と、外部端末400とを併せて示したが、これに限定されるものではない。例えば、フォールバック検知装置200を含むシステムは、内部端末100やフォールバック検知装置200、ルータ300、外部端末400以外の他の装置を有しても良い。また、例えば、フォールバック検知装置200とルータ300とを統合しても良く、ルータ300を有さなくても良い。なお、内部端末100は、「第1の端末」とも称される。外部端末400は、「第2の端末」とも称される。
【0013】
また、図1に示す例では、説明の便宜上、内部端末100が1つあり、外部端末400が1つある場合を示したが、これに限定されるものではない。例えば、内部端末100や外部端末400の数は任意であって良い。
【0014】
以下では、内部端末100と、フォークバック検知装置200と、ルータ300とがデュアルスタックネットワーク内にあり、外部端末400が、デュアルスタックネットワーク外にある場合を用いて説明するが、これに限定されるものではない。デュアルスタックネットワークでは、複数のプロトコルが混在して用いられる。例えば、デュアルスタックネットワーク内にある装置は、IPv4(Internet Protocol version 4)とIPv6(Internet Protocol version 6)との両方のプロトコルが用いられる。なお、以下では、デュアルスタックネットワークにて、IPv4とIPv6とが用いられる場合を用いて説明するが、これに限定されるものではなく、任意の複数のプロトコルが用いられても良い。
【0015】
内部端末100は、フォールバック検知装置200と接続される。内部端末100は、デュアルスタックネットワーク内にあり、複数のプロトコルに対応する。例えば、内部端末100は、IPv4におけるアドレスとIPv6におけるアドレスとを有し、IPv4とIPv6とを用いる。以下では、内部端末100が、IPv6を優先して用いる場合を例に説明する。言い換えると、内部端末100は、IPv6を用いて通信を確立できない場合にIPv4を用いる場合を例に説明する。ただし、これに限定されるものではなく、内部端末100は、IPv4を優先して用いても良い。
【0016】
内部端末100は、外部端末400に向けてパケットを送信する。具体的には、内部端末100は、通信先となる外部端末400の識別情報(Query)を要求するDNSクエリ要求を送信し、DNSクエリ要求に対する応答であるDNSクエリ応答を受信する。例えば、内部端末100は、外部端末400のIPアドレスを要求するDNSクエリ要求をルータ300に向けて送信し、DNSクエリ応答を受信する。例えば、内部端末100は、外部端末400と通信を行う場合に、IPv4におけるIPアドレスを要求するDNSクエリ要求を送信するとともに、IPv6におけるIPアドレスを要求するDNSクエリ要求を送信する。なお、DNSクエリ応答は、DNSレスポンス(Response)とも称する。
【0017】
より詳細な一例をあげて説明すると、内部端末100は、ルータ300に対して、外部端末400のFQDN(Fully Qualified Domain Name、完全修飾ドメイン名)を記載したDNSクエリ要求を送信し、DNSクエリに記載されたFQDNに対応するIPアドレスが記載されたDNSクエリ応答を受信する。
【0018】
また、内部端末100は、予め設定された優先するプロトコルにて、DNSクエリ応答により受信した識別情報を用いて、通信の開始を要求する通信開始メッセージを外部端末400に向けて送信する。例えば、内部端末100は、DNSクエリ応答に記載されたIPv6におけるアドレスを送信先としてTCP−SYNパケットを送信する。なお、TCP−SYNパケットとは、「SYN」のフラグがたったパケットであり、通信を開始する際に送信される。
【0019】
ここで、内部端末100は、外部端末400から応答がない場合には、同一のプロトコルにてTCP−SYNパケットの送信を所定回数繰り返す。例えば、内部端末100は、外部端末400から応答が得られない場合には、TCP−SYNパケットの送信を3回繰り返す。
【0020】
なお、以下では、内部端末100が、同一のプロトコルにて「3」回通信開始メッセージの送信を繰り返す場合を例に説明するが、これに限定されるものではなく、任意の回数であって良い。
【0021】
また、内部端末100は、予め設定された優先するプロトコルにて通信開始メッセージを所定回数送信しても、外部端末400から応答が得られなかった場合には、フォールバックを行う。そして、内部端末100は、別のプロトコルにて通信開始メッセージを外部端末400に向けて送信する。例えば、内部端末100は、IPv6にてTCP−SYNパケットを3回送信した後にタイムアウトとなると、フォールバックを行い、IPv4にて、外部端末400のIPv4におけるIPv4アドレスであるIPアドレス「192.168.100.1」を宛先とするTCP−SYNパケットを送信する。
【0022】
また、内部端末100によるフォールバックは、後述するように、フォールバック検知装置200による制御によっても制御される。例えば、内部端末100は、フォールバック検知装置200からフォールバックする旨のメッセージを受信すると、フォールバックを行う。また、内部端末100は、フォールバック検知装置200によってDNSクエリ応答に含まれる識別情報が変更されることで、フォールバックを行わないように制御される。詳細については後述する。
【0023】
ルータ300は、フォールバック検知装置200と外部端末400と接続される。ルータ300は、内部端末100からDNSクエリ要求を受信すると、DNSクエリ応答を内部端末100に送信する。つまり、例えば、ルータ300は、外部端末400のIPアドレスを内部端末100に送信する。
【0024】
外部端末400は、ルータ300と接続される。外部端末400は、内部端末100から通信開始メッセージを受信すると、内部端末100と通信を行う。なお、内部端末100により送信された通信開始メッセージは、外部端末400によって受信されることもあれば、受信されないこともある。例えば、外部端末400が対応していないプロトコルにて内部端末100が通信開始メッセージを送信した場合には、外部端末400によって受信されない。
【0025】
なお、以下では、説明の便宜上、内部端末100のIPv4アドレスが「192.168.1.10/32」であり、IPv6アドレスが「2001:db8:1::100/128」である場合を用いて説明する。また、外部端末400のIPv4アドレスが「192.168.100.1/32」であり、IPv6アドレスが「2001:db8:2::1/128」であり、FQDNが「www.example.com」である場合を用いて説明する。ただし、これに限定されるものではなく、任意のIPアドレスやFQDNを用いて良い。
【0026】
フォールバック検知装置200について説明する。フォールバック検知装置200は、以下に詳細に説明するように、複数のプロトコルに対応する内部端末100によって外部端末400に向けて送信されるパケットを監視する。また、フォールバック検知装置200は、通信開始メッセージが内部端末100から外部端末400に複数のプロトコルのうち特定のプロトコルにて所定回数送信されたとの監視結果が得られた場合に、通信開始メッセージの送信先となる外部端末400を識別するための識別情報を所定の記憶装置に格納する。また、フォールバック検知装置200は、所定の記憶装置に格納された識別情報に基づいて所定のメッセージを送信することで、内部端末100におけるフォールバックを制御する。
【0027】
すなわち、フォールバック検知装置200は、例えば、フォールバックすることになる外部端末400のアドレスリストを生成し、以後、この生成したアドレスリストに記載されたアドレスへの通信開始メッセージが内部端末100により送信されると、内部端末100が直ちにフォールバックを行うように制御する。また、フォールバック検知装置200は、所定期間内に、特定プロトコルで所定回数の通信開始メッセージを受けたことを契機としてフォールバックが「発生する」ものとみなし、アドレスリストを生成する。より詳細には、フォールバック検知装置200は、所定期間A内に、特定プロトコルでN回目の通信開始メッセージを受けた後に、所定期間B内に(AとBは同じでも異なっていてもよい)別のプロトコルで通信開始メッセージを受けたことを契機として、フォールバックが「発生した」ものとみなしてアドレスリストを生成する。なお、上述の所定期間Aと所定期間Bとは、同一の期間であっても良く、異なる期間であっても良い。
【0028】
図2は、実施例1におけるフォールバック検知装置の構成の一例を示すブロック図である。図2に示すように、フォールバック検知装置200は、記憶部210と制御部220とを有する。
【0029】
記憶部210は、制御部220と接続される。記憶部210は、制御部220による各種処理に用いるデータを記憶する。記憶部210は、例えば、RAM(Random Access Memory)やROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、又は、ハードディスクや光ディスクなどである。図2に示す例では、記憶部210は、通信開始メッセージテーブル211と、DNSパケットテーブル212と、内部端末情報テーブル213と、フォールバックテーブル214とを有する。
【0030】
通信開始メッセージテーブル211は、内部端末100によって送信された通信開始メッセージについての情報を記憶する。例えば、通信開始メッセージテーブル211は、内部端末100により送信されたTCP−SYNパケットについて、送信元アドレスと宛先アドレスと監視時刻とを含むレコードを記憶する。なお、監視時刻とは、例えば、フォールバック検知装置200によりTCP−SYNパケットが検知された時刻を示す。
【0031】
図3は、実施例1における通信開始メッセージテーブルに記憶されたレコードの一例を示す図である。図3に示す例では、通信開始メッセージテーブル211は、送信元アドレス「2001:db8:1::100/128」と宛先アドレス「2001:db8:2::1/128」と監視時刻「12:00」とを含むレコードを記憶する。言い換えると、通信開始メッセージテーブル211は、「12:00」に、「2001:db8:1::100/128」から「2001:db8:2::1/128」に送信されたTCP−SYNパケットを検知したことを記憶する。なお、通信開始メッセージテーブル211に記憶された情報は、後述する制御部220により格納されて用いられる。
【0032】
DNSパケットテーブル212は、DNSクエリ要求及びDNSクエリ応答に含まれる識別情報を記憶する。図4は、実施例1におけるDNSパケットテーブルに記憶されたレコードの一例を示す図である。図4に示す例では、DNSパケットテーブル212は、「FQDN」と「IPv4アドレス」と「IPv6アドレス」とを含むレコードを記憶する。
【0033】
図4に示す例では、DNSパケットテーブル212は、FQDN「www.example.com」とIPv4アドレス「192.168.100.1/32」とIPv6アドレス「2001:db8:2::1/128」とを含むレコードを記憶する。なお、DNSパケットテーブル212に記憶されたレコードは、後述する制御部220により格納されて用いられる。具体的には、DNSパケットテーブル212は、内部端末100により送受信されるDNSクエリ要求に含まれるFQDNと、DNSクエリ応答に含まれるIPv4アドレスやIPv6アドレスが対応付けられた上で、制御部220によってレコードとして格納される。
【0034】
内部端末情報テーブル213は、内部端末100を識別するための識別情報を記憶する。具体的には、内部端末100は、内部端末100により用いられるプロトコル各々について、内部端末100を示す識別情報各々を記憶する。なお、内部端末情報テーブル213が事前に内部端末100の識別情報を対応付けて記憶しておくことで、通信開始メッセージが同一の内部端末100から送信されたものかどうかを制御部220が簡単に把握可能となる。
【0035】
図5は、実施例1における内部端末情報テーブルに記憶されたレコードの一例を示す図である。図5に示す例では、内部端末情報テーブル213は、内部端末100の「IPv4アドレス」と「IPv6アドレス」とを含むレコードを記憶する。例えば、内部端末情報テーブル213は、IPv4アドレス「192.168.1.10/32」とIPv6アドレス「2001:db8:1::100/128」とを含むレコードを記憶する。
【0036】
また、内部端末情報テーブル213は、内部端末100が複数ある場合には、複数ある内部端末100各々について、レコードを記憶する。内部端末情報テーブル213に記憶されたレコードは、例えば、予め利用者によって格納される。
【0037】
フォールバックテーブル214は、制御部220による処理結果として、外部端末400の識別情報を記憶する。具体的には、フォールバックテーブル214は、内部端末100の通信先となる外部端末400を示す識別情報のうち、内部端末100が通信を確立できなかった通信先を示す識別情報を記憶する。すなわち、フォールバックテーブル214は、内部端末100により通信を確立する際に用いられた識別情報であって、通信を確立できなかった通信先を特定する識別情報を記憶する。言い換えると、フォールバックテーブル214は、通信を試みた場合に、内部端末100がフォールバックを行うことになる識別情報を記憶する。なお、フォールバックテーブル214は、「所定の記憶装置」とも称する。言い換えると、フォールバックテーブル214は、同一の内部端末100から同一の外部端末400に同一のプロトコルにて通信開始メッセージが所定回数送信された場合に、送信先となった外部端末の係るプロトコルにおける識別情報を記憶する。
【0038】
図6は、実施例1におけるフォールバックテーブルに記憶されたレコードの一例を示す図である。図6に示す例では、フォールバックテーブル214は、「2001:db8:2::1/128」を記憶する。すなわち、フォールバックテーブル214は、内部端末100が「2001:db8:2::1/128」に向けて通信開始メッセージを送信した場合、フォールバックを行うことになることを記憶する。つまり、フォールバックテーブル214は、内部端末100が「2001:db8:2::1/128」に向けて通信開始メッセージを送信した場合、通信が確立されない、ということを記憶する。
【0039】
制御部220は、記憶部210と接続される。制御部220は、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。制御部220は、例えば、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などの電子回路である。図2に示す例では、制御部220は、監視部221と、格納部222と、フォールバック制御部223とを有する。
【0040】
監視部221は、複数のプロトコルに対応する内部端末100によって外部端末400に向けて送信されるパケットを監視する。具体的には、監視部221は、内部端末100による通信を中継することで、内部端末100により送受信される情報を監視する。より詳細には、監視部221は、内部端末100により送受信されるパケットのうち、通信開始メッセージとDNSクエリ要求、DNSクエリ応答を監視する。また、監視部221は、格納部222やフォールバック制御部223に監視結果を出力する。
【0041】
例えば、監視部221は、デュアルスタックネットワーク内の内部端末100から外部端末400への通信パケットのうち、TCP−SYNパケットやDNSクエリ要求、DNSクエリ応答を監視する。
【0042】
より詳細な一例をあげて説明する。監視部221は、内部端末100により送受信されるパケットを取り込み、DNSクエリ要求、DNSクエリ応答、又は、TCP−SYNパケットであるかを判定する。ここで、監視部221は、取り込んだパケットがDNSクエリ要求、DNSクエリ応答であると判定した場合には、DNSクエリ要求やDNSクエリ応答に含まれるFQDNやIPv4アドレス、IPv6アドレスを対応付けてDNSパケットテーブル212に格納する。また、監視部221は、取り込んだパケットがTCP−SYNパケットであると判定した場合には、取り込んだTCP−SYNパケットの送信元アドレスと宛先アドレスと監視時刻とを対応付けて通信開始メッセージテーブル211に格納する。
【0043】
例えば、監視部221は、DNSクエリ要求、DNSクエリ応答を取り込み、通信先となる外部端末400のFQDN「www.example.com」とIPv4アドレス「192.168.100.1」とIPv6アドレス「2001:db8:2::1」とを取得し、対応付けてDNSパケットテーブル212に格納する。また、例えば、監視部221は、TCP−SYNパケットを取り込み、送信元アドレス「2001:db8:1::100/128」と宛先アドレス「2001:db8:2::1/128」と監視時刻「12:02」とを含むレコードを通信開始メッセージテーブル211に格納する。
【0044】
また、監視部221は、通信開始メッセージテーブル211に新たなレコードを格納すると、送信元アドレスと宛先アドレスとが同一となるレコードが一定時間内に所定数格納されているかを判定し、所定数格納されていると判定すると、格納されていると判定されたレコードを格納部222に出力する。つまり、監視部221は、通信開始メッセージが同一の内部端末100から同一の外部端末400に同一のプロトコルにて所定回数送信されているか否かを判定する。言い換えると、監視部221は、通信開始メッセージが同一の内部端末100から外部端末400に、複数のプロトコルのうち特定のプロトコルにて所定回数送信されたかを判定する。
【0045】
図3を例に説明する。ここで、監視時刻が「12:02」となるレコードを格納した場合における処理を例として説明する。また、監視部221が、所定回として「3」を用いる場合を例に説明する。また、監視部221が一定時間として「5分」を用いる場合を用いて説明する。この場合、監視部221は、送信元アドレス「2001:db8:1::100/128」と宛先アドレス「2001:db8:2::1/128」と監視時刻「12:02」とを含むレコードを通信開始メッセージテーブル211に格納すると、宛先アドレス「2001:db8:2::1/128」と「送信元アドレス「2001:db8:1::100/128」」と監視時刻「12:00」とを含み、監視時刻が「12:02」から「5分」以内となるレコードが3以上あるか否かを判定する。図3に示す例では、3つのレコードがあるため、監視部221は、あると判定し、例えば、送信元アドレス「2001:db8:1::100/128」と宛先アドレス「2001:db8:2::1/128」と監視時刻「12:02」とを含むレコードを格納部222に出力する。なお、上述して説明では、監視時刻が含まれたレコ−ドを出力する場合例に説明したが、これに限定されるものではなく、監視時刻を含めなくても良い。
【0046】
なお、上述した説明では、監視部221が、所定回として「3」を用いる場合を例に説明したが、これに限定されるものではなく、任意の数を用いて良い。また、上述した説明では、監視部221が一定時間として「5分」を用いる場合を用いて説明したが、これに限定されるものではなく、任意の時間を用いて良い。また、上述した説明では、監視部221は、通信開始メッセージテーブル211にレコードを格納した場合に、送信元アドレスと宛先アドレスとが同一となるレコードが所定数あるか否かを判定する場合を例に説明したが、これに限定されるものではなく、任意のタイミングにて判定しても良い。
【0047】
また、以下では、監視部221が、所定回数通信開始メッセージが送信されたかを判定し、送信されたと判定された場合にレコードを格納部222に出力する場合を用いて説明するが、これに限定されるものではない。例えば、監視部221は、所定回数通信開始メッセージが送信されたかを判定しなくても良い。この場合、例えば、後述する格納部222が通信開始メッセージテーブル211に基づいて判定する。
【0048】
格納部222は、通信の開始を要求する通信開始メッセージが内部端末100から外部端末400に所定回数送信されたとの監視結果が監視部221により得られた場合に、通信開始メッセージの送信先となる外部端末400を識別するための識別情報をフォールバックテーブル214に格納する。例えば、格納部222は、監視部221により出力されたレコードに含まれる宛先アドレスをフォールバックテーブル214に格納する。図3に示す例では、格納部222は、宛先アドレス「2001:db8:2::1/128」をフォールバックテーブル214に格納する。
【0049】
すなわち、格納部222は、同一の送信元アドレスから同一の宛先アドレスに対する同一プロトコルでの通信開始メッセージを一定の時間内に所定回検知すると、内部端末100にフォールバックが発生するとみなし、宛先アドレスをフォールバックテーブル214に格納する。言い換えると、監視部221は、通信開始メッセージが内部端末100から外部端末400に、複数のプロトコルのうち特定のプロトコルにて所定回数送信されたことを検知すると、フォールバックが発生するとみなして宛先アドレスをフォールバックテーブル214に格納する。すなわち、格納部222は、フォールバックテーブル214を引き起こす契機となった外部端末400を示す識別情報を格納する。
【0050】
また、格納部222は、通信開始メッセージが同一の内部端末100から同一の外部端末400に同一のプロトコルにて所定回数送信されたとの監視結果が監視部221により得られた後に、通信開始メッセージの送信に用いられたプロトコルとは別のプロトコルにて同一の外部端末400に通信開始メッセージが送信された場合に初めて、識別情報をフォールバックテーブル214に格納しても良い。なお、格納部222により格納される宛先アドレスは、別のプロトコルにおける識別情報ではなく、所定回数送信されたプロトコルにおける宛先アドレスである。
【0051】
例えば、格納部222は、同一の送信元アドレスから同一の宛先アドレスに対するTCP−SYNパケットがIPv6にて所定回送信された後に、IPv4にてTCP−SYNパケットが送信されたことを更に検知した場合に初めて、IPv6における外部端末400を示す宛先アドレスをフォールバックテーブル214に格納しても良い。
【0052】
詳細な一例を用いて説明する。格納部222は、監視部221から受信したレコードに含まれる宛先アドレスに対応するFQDNを含むレコードをDNSパケットテーブル212から取得する。そして、格納部222は、取得したレコードに含まれるIPアドレスのうち、監視部221により所定回数検知されたTCP−SYNパケットのプロトコルとは別のプロトコルについてのIPアドレスを取得する。例えば、図3に示す例では、IPv6におけるTCP−SYNパケットが検知されており、格納部222は、IPv4におけるIPアドレスを取得する。そして、格納部222は、通信開始メッセージテーブル211から検索することで、監視部221により所定回数のTCP−SYNパケットが検知されてから一定の時間内に、取得したIPアドレスを宛先とするIPv4にて送信されたTCP−SYNパケットの有無を判定する。つまり、格納部222は、IPv6にて一定時間内に同一送信元から同一宛先へと所定回数通信開始メッセージが送信された後に、一定時間内に、IPv4にて同一宛先に対して通信開始メッセージが送信されたかを判定する。ここで、格納部222は、送信されたと判定した場合には、フォールバックが発生したとみなし、監視部221から受信したレコードに含まれるIPv6における宛先アドレスをフォールバックテーブル214に格納する。
【0053】
このように、格納部222は、通信開始メッセージの送信に用いられたプロトコルとは別のプロトコルにて同一の外部端末400に通信開始メッセージが送信されたかを更に判定した場合に、フォールバックが発生したとみなすことで、フォールバックの発生の検知精度を向上することが可能となる。
【0054】
すなわち、別のプロトコルにて同一の外部端末400に通信開始メッセージを送信する内部端末100を限定しない結果、言い換えると、最初のプロトコルで通信開始メッセージを送った内部端末100とは別の内部端末100が通信開始メッセージを送信してもフォールバックであるとみなして検知することが可能となる。
【0055】
例えば、最初に同一の内部端末100から同一の外部端末400へIPv6で通信開始メッセージが3回送信され、その後、別の内部端末100から同一の外部端末400へIPv4で通信開始メッセージが送信された場合であっても、フォールバックとして検知することが可能となる。
【0056】
この場合、仮に最初のIPv6における3回目の通信開始メッセージにて通信が確立された場合であってもフォールバックとみなすことになるが、経験的に3回目以降で通信が確立する確率が低い場合には、有効となる。また、フォールバック検知装置200は、内部端末100の所定のプロトコルの識別情報と別のプロトコルの識別情報(IPv6のアドレスとIPv4のアドレス)の対応関係の情報を記憶していない状況や不明な状況であっても、フォールバックの検知が可能となる。
【0057】
また、格納部222は、更に、同一の送信元から同一の宛先に別のプロトコルにて通信開始メッセージが送信された場合に初めて、識別情報をフォールバックテーブル214に格納しても良い。具体的には、格納部222は、通信開始メッセージが内部端末100から外部端末400に所定回数送信されたとの監視結果が監視部221により得られた後に、通信開始メッセージの送信に用いられたプロトコルとは別のプロトコルにて、同一の内部端末100から同一の外部端末400に通信開始メッセージが送信されたとの監視結果が監視部221により得られた場合に初めて、識別情報を記憶部210に格納しても良い。なお、格納部222により格納される宛先アドレスは、別のプロトコルにて送信される前に、所定回数送信されたプロトコルにおける宛先アドレスである。この場合、内部端末100を問わない場合と比較して、高精度にフォールバックを検知可能となる。
【0058】
この場合、格納部222は、更に、監視部221から受信したレコードに含まれる送信元アドレスに対応する別のプロトコルの送信元アドレスを、内部端末情報テーブル213から取得する。例えば、内部端末100がIPv6にてTCP−SYNパケットを送信していた場合には、格納部222は、監視部221から受信したレコードに含まれるIPv6のIPアドレスに対応付けられたIPv4のIPアドレスを内部端末情報テーブル213から取得する。そして、格納部222は、通信開始メッセージテーブル211から検索することで、監視部221により所定回数のTCP−SYNパケットが検知されてから一定の時間内に、同一の外部端末400を宛先とするIPv4にて送信されたTCP−SYNパケットであって、内部端末情報テーブル213から取得したIPv4のIPアドレスが送信元アドレスとなるTCP−SYNパケットの有無を判定する。ここで、格納部222は、あると判定した場合には、フォールバックが発生したとみなし、監視部221から受信したレコードに含まれる宛先アドレスをフォールバックテーブル214に格納する。
【0059】
フォールバック制御部223は、格納部222によってフォールバックテーブル214に格納された識別情報が宛先となる通信開始メッセージの送信元となる内部端末100について、フォールバックを制御する。
【0060】
具体的には、フォールバック制御部223は、フォールバックテーブル214に格納されたIPアドレスにより識別される第2の端末と、係るIPアドレスのプロトコルでの通信の開始を要求する通信開始メッセージが送信される場合に、内部端末100に対して、内部端末100をフォールバックさせるためのメッセージを送信する。言い換えると、フォールバック制御部223は、内部端末100により送信された通信開始メッセージの宛先が、フォールバックテーブルに格納された識別情報と一致するかを判定し、一致すると判定した場合に、内部端末100をフォールバックさせるためのメッセージを送信する。
【0061】
例えば、フォールバック制御部223は、デュアルスタックネットワーク内の内部端末100から外部端末400への通信パケットのうちTCP−SYNパケットを常に監視し、TCP−SYNパケットの宛先アドレスがフォールバックテーブル214に格納されているかを判定する。そして、フォールバック制御部223は、格納されていると判定した場合に、TCP−SYNパケットの送信元となる内部端末100に対し、RSTフラグが設定されたTCPパケットであるTCP−RSTパケットを送信する。なお、フォールバック制御部223は、TCP−SYNパケットから送信元を示すIPアドレスとTCPセッション情報とを取得し、取得した情報に基づいてTCP−RSTパケットを生成する。例えば、フォールバック制御部223は、TCP−RSTにおいて、TCP−RSTパケットの宛先アドレスを送信元アドレスとし、TCP−RSTパケットの送信元ポートを宛先ポートとし、TCP−RSTパケットの宛先ポートを送信元ポートとする。
【0062】
すなわち、フォールバック制御部223は、フォールバックとみなした通信の送信先に内部端末100によって通信開始メッセージが送信されると、送信元となる内部端末100にメッセージを送信することで、通信要求をしても通信確立できずにフォールバックしてしまうような宛先に通信要求を試みる内部端末100をフォールバックさせる。この結果、例えば、内部端末100のタイムアウトを待たずに通信NGとすることが可能となる。
【0063】
なお、その後、TCP−RSTパケットを受信した内部端末100は、フォールバックを行った上で、通信開始メッセージを外部端末400に送信する。
【0064】
なお、上述した説明では、フォールバック制御部223が、TCP−RSTパケットを送信する場合を例に説明したが、これに限定されるものではなく、任意のパケットをメッセージとして出力しても良い。例えば、フォールバック制御部223は、ICMP(Internet Control Message Protocol)(v6)のパケットを送信することで、TCP−SYNパケットの送信先となる外部端末400のアドレスには到達不能である旨を内部端末100に通知しても良い。例えば、「destination unreachable」と記載されたICMPのパケットを送信しても良い。
【0065】
[識別情報を格納する処理]
図7は、実施例1において識別情報をフォールバックテーブルに格納するまでの処理の流れの一例を示すシーケンス図である。以下では、IPv4アドレスが「192.168.1.10/32」であり、IPv6アドレスが「2001:db8:1::100/128」である内部端末100が、通信開始メッセージを送信する場合を用いて説明する。また、以下では、IPv4アドレスが「192.168.100.1/32」であり、IPv6アドレスが「2001:db8:2::1/128」であり、FQDNが「www.example.com」である外部端末400に向けて内部端末100が通信開始メッセージを送信する場合を用いて説明する。
【0066】
また、以下では、フォールバック検知装置200が、IPv6のTCP−SYNパケットを3回検知した後に、同一の内部端末100より同一の宛先に対してIPv4のTCP−SYNパケットが送信されたことを検知することで、フォールバックが発生したとみなす場合を例に説明する。また、以下では、内部端末100がIPv6にてTCP−SYNパケットを送信したとしても、外部端末400から応答が得られない場合を用いて説明する。
【0067】
図7に示すように、内部端末100は、外部端末400のFQDNであるDNSクエリを送信し、DNSクエリ要求に対するDNSクエリ応答を受信することで、外部端末400のIPアドレスを取得する(ステップS101)。すなわち、内部端末100は、FQDN「ww.example.com」となる外部端末400へとTCP通信を行うため、ルータ300に対し、外部端末400の名前解決をIPv4及びIPv6の両方で行う。
【0068】
例えば、内部端末100は、FQDN「www.example.com」に対応するIPv4のIPアドレスを取得するためのDNSクエリをルータ300に向けて送信する(ステップS1011)。また、例えば、内部端末100は、FQDN「www.example.com」に対応するIPv6のIPアドレスを取得するためのDNSクエリをルータ300に向けて送信する(ステップS1012)。また、その後、内部端末100は、FQDN「www.example.com」に対応するIPv4のIPアドレス「192.168.100.1」が記載されたDNSクエリ応答をルータ300から受信する(ステップS1013)。また、内部端末100は、FQDN「www.example.com」に対応するIPv6のIPアドレス「2001:db8:2::1/128」が記載されたDNSクエリ応答をルータ300から受信する(ステップS1014)。
【0069】
ここで、フォールバック検知装置200の監視部221は、内部端末100により送受信されるDNSパケットを監視することで、通信先となる外部端末400のFQDN「www.example.com」とIPv4アドレス「192.168.100.1」とIPv6アドレス「2001:db8:2::1/128」とを取得し、対応付けてDNSパケットテーブル212に格納する(ステップS102)。
【0070】
すなわち、監視部221は、DNSパケットを監視し、FQDN「www.example.com」が持つIPアドレスが「192.168.100.1」と「2001:db8:1::100/128」との2つのアドレスを持つという情報をDNSパケットテーブル212に格納する。
【0071】
具体的には、監視部221は、内部端末100により送受信されるパケットを取り込み、DNSクエリ要求、DNSクエリ応答、又は、TCP−SYNパケットであるかを判定する。ステップS102に示す場合、監視部221は、DNSクエリ要求又はDNSクエリ応答と判定すると、DNSクエリ要求やDNSクエリ応答に含まれるFQDNやIPv4アドレス、IPv6アドレスを対応付けてDNSパケットテーブル212に格納する。
【0072】
その後、内部端末100は、外部端末400とIPv6にてTCP通信を行うため、外部端末400のIPv6アドレス「2001:db8:2::1/128」に対してTCP−SYNパケットを送信する(ステップS103)。ここで、内部端末100は、外部端末400から応答が得られない結果、3回TCP−SYNパケットを送信した後にタイムアウトする。
【0073】
例えば、内部端末100は、宛先を「2001:db8:2::1/128」とする1回目のTCP−SYNパケットを送信し(ステップS1031)、宛先を「2001:db8:2::1/128」とする2回目のTCP−SYNパケットを送信し(ステップS1032)、宛先を「2001:db8:2::1/128」とする3回目のTCP−SYNパケットを送信する(ステップS1033)。なお、ここで、内部端末100により送信されるTCP−SYNパケットの送信元アドレスは、「2001:db8:1::100/128」となる。
【0074】
ここで、フォールバック検知装置200の監視部221は、内部端末100によって送信されるTCP−SYNパケットを監視することで、内部端末100によって送信されたIPv6アドレス「2001:db8:2::1/128」を宛先とするTCP−SYNパケットについて、の送信元アドレスと宛先アドレスと監視時刻とを含むレコードを、通信開始メッセージテーブル211に格納する(ステップS104)。また、この際、例えば、監視部221は、通信開始メッセージテーブル211に新たなレコードを格納すると、送信元アドレスと宛先アドレスとが同一となるレコードが一定時間内に所定数格納されているかを判定し、所定数格納されていると判定すると、格納されていると判定されたレコードを格納部222に出力する。
【0075】
そして、内部端末100は、IPv6のTCP通信がタイムアウトした結果、IPv4でTCP通信を行うため、外部端末400のIPv4アドレス「192.168.100.1/32」を宛先とするTCP−SYNパケットを送信する(ステップS105)。なお、ここで、内部端末100により送信されるTCP−SYNパケットの送信元アドレスは、「2001:db8:1::100/128」となる。
【0076】
ここで、通信開始メッセージが内部端末100から外部端末400に所定回数送信されたとの監視結果が監視部221により得られた後に、通信開始メッセージの送信に用いられたプロトコルとは別のプロトコルにて同一の外部端末400に通信開始メッセージが送信されたため、フォールバック検知装置200の格納部222は、フォールバックが発生するとみなし、監視部221により出力されたレコードに含まれ宛先アドレスをフォールバックテーブル214に格納する(ステップS106)。例えば、格納部222は、宛先アドレス「2001:db8:2::1/128」をフォールバックテーブル214に格納する。
【0077】
なお、上記の処理手順は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲で適宜変更しても良い。
【0078】
[フォールバック制御部による処理]
図8は、実施例1におけるフォールバック制御部による処理の一例を示すフローチャートである。
【0079】
図8に示すように、フォールバック制御部223は、内部端末100により送信された通信開始メッセージの宛先が、フォールバックテーブル214に格納された識別情報と一致するかを判定する(ステップS201)。ここで、フォールバック制御部223は、一致したと判定した場合には(ステップS201肯定)、内部端末100をフォールバックさせるためのメッセージを生成する(ステップS202)。例えば、フォールバック制御部223は、TCP−RSTパケットを生成する。
【0080】
そして、フォールバック制御部223は、内部端末100に送信する(ステップS203)。この結果、内部端末100は、通信が確立されないプロトコルにて通信開始メッセージの送信を繰り返すのではなく、すぐにフォールバックする。
【0081】
一方、フォールバック制御部223は、一致しなかったと判定した場合には(ステップS201否定)、そのまま処理を終了する。なお、その後、フォールバック制御部223は、取り込んだ通信開始メッセージをそのまま外部端末400に転送する。
【0082】
[実施例1の効果]
上述したように、実施例1によれば、内部端末100によって外部端末400に向けて送信されるパケットを監視する。また、通信開始メッセージが複数あるプロトコルのうち特定のプロトコルにて所定期間内に所定回数外部端末400に送信されたとの監視結果が得られた場合に、通信開始メッセージの送信先となる外部端末400を識別するための識別情報をフォールバックテーブル214に格納する。また、フォールバックテーブル224に格納された識別情報が宛先となる通信開始メッセージの送信元となる内部端末100について、フォールバックを制御する。この結果、通信の確立に要する時間を短縮可能となる。例えば、フォールバックを行うまでの時間が短縮することができ、適切に通信可能となる。
【0083】
すなわち、実施例1によれば、例えば、内部端末100がTCP通信をする際に用いるTCP−SYNパケットを監視することでフォールバックの発生を推測する。つまり、実施例1では、その宛先に対してどちらかのプロトコル(IPv4あるいはIPv6)で接続できないことを検知する。その上で、フォールバック検知した宛先に対して、それ以降の通信を監視し、特定の処理を行うことで、内部端末100が迅速にフォールバックをすることになる。なお、特定の処理とは、例えば、内部端末100にTCP−RSTパケットを送信したり、ICMPエラーを送信したりすることが該当する。
【0084】
言い換えると、フォールバックとみなすと、通信を確立できない外部端末400のアドレスリストを生成して記憶しておき、生成したアドレスリストに基づいて、内部端末100を強制的にフォールバックさせるための処理を行う。つまり、リストの中にはない外部端末400に最初にアクセスする内部端末100は、往々にしてフォールバックする可能性が高いと考えられるが、この経験をリスト化していくことで、次に同じ又は別の内部端末100が同じプロトコルにて外部端末400にアクセスしようとした場合に、対処可能となる。
【0085】
この結果、例えば、特定のデュアルスタックネットワーク環境において端末のTCP通信のフォールバックを検知することにより、特定のデュアルスタックネットワーク内の端末から特定の宛先に対し、IPv4あるいはIPv6を利用した通信ができないことを検知することができる。また、例えば、検知した情報を元にその後のネットワーク内の端末のTCP通信が特定の宛先に対して通信不能なプロトコル(IPv4あるいはIPv6)を利用して通信しようとした際に、強制的に通信可能なプロトコルにフォールバックさせることで迅速に通信が可能となる。
【0086】
また、実施例1によれば、格納部222は、通信開始メッセージが内部端末100から外部端末400に特定のプロトコルにて所定回数送信されたとの監視結果が監視部221により得られた後に、通信開始メッセージの送信に用いられた特定のプロトコルとは別のプロトコルにて外部端末400に通信開始メッセージが送信されたとの監視結果が監視部221により得られた場合に、識別情報を記憶部210に格納する。すなわち、例えば、IPv6で所定回数の通信開始メッセージを観測した後に、IPv4で同一の外部端末400に対して通信開始メッセージを確認すると、IPv4にて送信された通信開始メッセージの送信元が同一の内部端末100かどうかを気にすることなく、フォールバックと検知する。この結果、特定のプロトコルとは別のプロトコルにて外部端末400に通信開始メッセージが送信された場合にフォールバックと検知することで、フォールバックの発生を高精度にて検知可能となる。
【0087】
また、実施例1によれば、格納部222は、通信開始メッセージが内部端末100から外部端末400にプロトコルにて所定回数送信されたとの監視結果が監視部221により得られた後に、通信開始メッセージの送信に用いられたプロトコルとは別のプロトコルにて、内部端末100から外部端末400に通信開始メッセージが送信されたとの監視結果が監視部221により得られた場合に、識別情報を記憶部210に格納する。すなわち、例えば、IPv6で所定回数の通信開始メッセージを観測した後に、IPv4で同一の外部端末400に対して通信開始メッセージを確認すると、内部端末情報を利用することで、IPv6とIPv4とにおいて送信された通信開始メッセージが同一の内部端末100から発信されたものかどうかを判断した上で、フォールバックと検知することで、フォールバックの発生を高精度にて検知可能となる。
【0088】
また、実施例1によれば、フォールバック制御部223は、記憶部210に格納された識別情報により識別される外部端末400と該識別情報のプロトコルでの通信の開始を要求する通信開始メッセージが送信されたとの監視結果が得られた場合に、通信開始メッセージの送信元となる内部端末100に対して、内部端末100をフォールバックさせるためのメッセージを送信する。この結果、内部端末100にすみやかにフォールバックさせることが可能となる。
【0089】
また、実施例1によれば、内部端末100は、複数のプロトコルに対応するデュアルスタックネットワーク内に接続された端末であって、内部端末100は、デュアルスタックネットワーク外に接続された端末となる。この結果、デュアルスタックネットワーク内に接続された内部端末100について、通信が確立できないプロトコルを用いて通信の確立を試みた場合にすみやかにフォールバックさせることが可能となる。
【0090】
この結果、閉域網内において、広域網向けのパケットで通信可能な端末がどの端末で、広域網向けのパケットで通信不可能な端末がどの端末であるかが予めわかっていない状況であったとしても、格納部222によってフォールバックテーブル214に識別情報が格納されて蓄積される結果、対応可能となる。
【実施例2】
【0091】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例を示す。
【0092】
[フォールバック制御部]
例えば、フォールバック制御部223は、記憶部210に格納された識別情報を含むDNSクエリ応答が得られたとの監視結果が監視部221により得られた場合に、DNSクエリ応答に含まれる識別情報を削除した上で内部端末100に送信しても良い。また、同様に、フォールバック制御部223は、フォールバックテーブル214に格納された識別情報を要求するDNSクエリ要求が得られたとの監視結果が監視部221により得られた場合に、識別情報を含まないDNSクエリ応答を生成した上で内部端末100に送信しても良い。
【0093】
すなわち、格納部222は、DNSクエリ応答に記載される外部端末400の識別情報に対応付けて、内部端末100がフォールバックを行うことになる外部端末400の通信を行う際に用いられる識別情報を記憶する。例えば、格納部222は、外部端末400のURLやFQDNに対応付けて、IPアドレスをフォールバックテーブル214に格納する。その上で、フォールバック制御部223は、フォールバック制御部223に記憶されたURLやFQDNについてのIPアドレスを要求するDNSクエリ要求が得られたとの監視結果が監視部221により得られた場合に、フォールバックテーブル214に格納されたIPアドレスがDNSクエリ応答にて内部端末100に送信されないようにする。
【0094】
例えば、フォールバック制御部223は、no errorフラグを立ててAnswersを空にしたDNSクエリ応答を生成しても良く、nxdomainフラグを立てたDNSクエリ応答を生成しても良い。また、例えば、フォールバック制御部223は、DNSクエリ応答を内部端末100に返さなくても良い。この結果、内部端末100には、フォールバックすることになる外部端末400のIPアドレスが通知されないこととなり、内部端末100におけるフォールバックを防止可能となる。
【0095】
例えば、内部端末100は、外部端末400と通信を行う場合に、IPv4におけるIPアドレスを要求するDNSクエリ要求を送信するとともに、IPv6におけるIPアドレスを要求するDNSクエリ要求を送信する。ここで、外部端末400のIPv6におけるIPアドレスがフォールバックテーブル214に格納されている場合を用いて説明する。言い換えると、外部端末400とIPv6にて通信を試みると、内部端末100が、フォールバックを行うことになる場合を用いて説明する。この場合、フォールバック制御部223は、外部端末400のIPv6が要求されているDNSクエリ要求については、フォールバックテーブル214に格納されたIPアドレスと一致することから、DNSクエリ応答を内部端末100に返さなかったり、nxdomainフラグを立てたDNSクエリ応答を生成して返したりする。一方、フォールバック制御部223は、外部端末400のIPv4が要求されているDNSクエリ要求については、フォールバックテーブル214に格納されたIPアドレスと一致しないことから、そのまま返信する。この結果、内部端末100は、IPv6ではなく、最初からIPv4を用いて、外部端末400と通信を試みることになる。この結果、内部端末100がフォールバックを起こすことを防止することが可能である。つまり、そもそも、内部端末100にフォールバックが起きないようにすることが可能となる。
【0096】
また、上述した説明では、フォールバック制御部223がDNSクエリ応答やDNSクエリ要求について処理を行う場合を例に説明したが、これに限定されるものではない。例えば、ルータ300が、フォールバック検知装置200のフォールバックテーブル214を参照した上で、フォールバックが発生するIPアドレスを取得できないようにしたDNSクエリ応答を送信しても良い。
【0097】
[フォールバック]
また、例えば、上述の実施例では、内部端末100が、IPv6からIPv4にフォールバックする場合を例に説明したが、これに限定されるものではなく、IPv4からIPv6にフォールバックしても良く、任意のプロトコルから別のプロトコルにフォールバックしても良い。
【0098】
[フォールバック制御部]
また、フォールバック制御部223は、格納部222によって識別情報がフォールバックテーブル214に格納されると、直ちに処理を行っても良い。例えば、格納部222によって識別情報が格納されることとなった送信元となる内部端末100に対して、TCP−RSTパケットを送信しても良い。
【0099】
また、例えば、フォールバック制御部223は、内部端末100による「所定回数」回目の通信開始メッセージの送信が確認されたことを契機として、内部端末100に対して、即フォールバックを行う旨のメッセージを送信しても良い。
【0100】
[フォールバックテーブル]
また、例えば、フォールバックテーブル214に、通信先となる外部端末400を示す識別情報に加えて、送信元となる内部端末100を示す識別情報を更に記憶しておいても良い。この場合、フォールバック制御部223は、フォールバックテーブル214に記憶された外部端末400を示す識別情報と内部端末100を示す識別情報の組み合わせと、内部端末100により送信された通信開始メッセージとが一致する場合に、TCP−RSTパケットを送信しても良い。
【0101】
[システム構成]
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は1部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は1部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については(図1〜図8)、特記する場合を除いて任意に変更することができる。
【0102】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は1部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、フォールバック検知装置200とルータ300とを統合して1つの装置としても良く、フォールバックテーブル214を外部装置としてネットワーク経由でフォールバック検知装置200と接続されるようにしても良い。
【0103】
また、例えば、フォールバックの発生を検知して識別情報をフォールバックテーブル214に格納する装置と、フォールバックテーブル214に格納された情報に基づいて内部端末100におけるフォールバックを制御する装置とが別装置であっても良い。すなわち、例えば、TCP−RSTパケットやICMPパケットを送信する装置を、フォールバックテーブル214にIPアドレスを格納する装置と別装置としても良い。
【0104】
[プログラム]
図9は、フォールバック検知装置による1連の処理を実行するための制御プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。図9に例示するように、コンピュータ3000は、例えば、メモリ3010と、CPU(Central Processing Unit)3020と、ネットワークインタフェース3070とを有する。コンピュータ3000の各部はバス3100によって接続される。
【0105】
メモリ3010は、図9に例示するように、ROM3011及びRAM3012を含む。ROM3011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。
【0106】
ここで、図9に例示するように、ハードディスクドライブ3080は、例えば、OS3081、アプリケーションプログラム3082、プログラムモジュール3083、プログラムデータ3084を記憶する。すなわち、開示の技術に係る制御プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール3083として、例えばハードディスクドライブ3080に記憶される。具体的には、上記実施例で説明した制御部220の各部と同様の情報処理を実行する手順各々が記述されたプログラムモジュールが、ハードディスクドライブ3080に記憶される。
【0107】
また、上記実施例で説明した記憶部210の各テーブルに記憶されるデータのように、フォールバック検知プログラムによる情報処理に用いられるデータは、プログラムデータ3084として、例えばハードディスクドライブ3080に記憶される。そして、CPU3020が、ハードディスクドライブ3080に記憶されたプログラムモジュール3083やプログラムデータ3084を必要に応じてRAM3012に読み出し、各種の手順を実行する。
【0108】
なお、フォールバック検知プログラムに係るプログラムモジュール3083やプログラムデータ3084は、ハードディスクドライブ3080に記憶される場合に限られない。例えば、プログラムモジュール3083やプログラムデータ3084は、着脱可能な記憶媒体に記憶されても良い。この場合、CPU3020は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、更新プログラムに係るプログラムモジュール3083やプログラムデータ3084は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されても良い。この場合、CPU3020は、ネットワークインタフェースを介して他のコンピュータにアクセスすることで各種データを読み出す。
【0109】
[その他]
なお、本実施例で説明したフォールバック検知プログラムは、インターネットなどのネットワークを介して配布することができる。また、フォールバック検知プログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVD、ブルーレイディスクなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【0110】
100 内部端末
200 フォールバック検知装置
210 記憶部
211 通信開始メッセージテーブル
212 DNSパケットテーブル
213 内部端末情報テーブル
214 フォールバックテーブル
220 制御部
221 監視部
222 格納部
223 フォールバック制御部
300 ルータ
400 外部端末

【特許請求の範囲】
【請求項1】
複数のプロトコルに対応する第1の端末によって第2の端末に向けて送信されるパケットを監視する監視部と、
通信の開始を要求する通信開始メッセージが前記複数あるプロトコルのうち特定のプロトコルにて前記第1の端末から前記第2の端末に所定期間内に所定回数送信されたとの監視結果が前記監視部により得られた場合に、該通信開始メッセージの送信先となる該第2の端末を識別するための該プロトコルにおける識別情報を所定の記憶装置に格納する格納部と、
前記格納部によって前記所定の記憶装置に格納された識別情報が宛先となる前記通信開始メッセージの送信元となる前記第1の端末について、フォールバックを制御するフォールバック制御部と
を備えたことを特徴とするフォールバック検知装置。
【請求項2】
前記格納部は、前記通信開始メッセージが前記第1の端末から前記第2の端末に前記特定のプロトコルにて所定回数送信されたとの監視結果が前記監視部により得られた後に、該通信開始メッセージの送信に用いられた該特定のプロトコルとは別のプロトコルにて該第2の端末に該通信開始メッセージが送信されたとの監視結果が前記監視部により得られた場合に、前記識別情報を前記所定の記憶装置に格納することを特徴とする請求項1に記載のフォールバック検知装置。
【請求項3】
前記格納部は、前記通信開始メッセージが前記第1の端末から前記第2の端末に前記特定のプロトコルにて所定回数送信されたとの監視結果が前記監視部により得られた後に、該通信開始メッセージの送信に用いられた該特定のプロトコルとは別のプロトコルにて、該第1の端末から該第2の端末に該通信開始メッセージが送信されたとの監視結果が前記監視部により得られた場合に、前記識別情報を前記所定の記憶装置に格納することを特徴とする請求項2に記載のフォールバック検知装置。
【請求項4】
前記フォールバック制御部は、前記格納部によって前記所定の記憶装置に格納された識別情報が宛先となる前記通信開始メッセージの送信元となる前記第1の端末に対して、該第1の端末をフォールバックさせるためのメッセージを送信することを特徴とする請求項1〜3のいずれか1つに記載のフォールバック検知装置。
【請求項5】
前記第1の端末は、前記第2の端末の識別情報を要求するDNSクエリ要求を送信し、該DNSクエリ要求に対する応答であるDNSクエリ応答を受信し、
前記監視部は、前記第1の端末による通信を中継することで、該第1の端末により送受信される情報を監視し、
前記フォールバック制御部は、前記所定の記憶装置に格納された識別情報を含む前記DNSクエリ応答が得られたとの監視結果が前記監視部により得られた場合に、該DNSクエリ応答に含まれる該識別情報を削除した上で、前記DNSクエリ要求の送信元となる前記第1の端末に送信することを特徴とする請求項1〜3のいずれか1つに記載のフォールバック検知装置。
【請求項6】
前記第1の端末は、前記第2の端末の任意のプロトコルの識別情報を要求するDNSクエリ要求を送信し、該DNSクエリ要求に対する応答であるDNSクエリ応答を受信し、
前記監視部は、前記第1の端末による通信を中継することで、該第1の端末により送受信される情報を監視し、
前記フォールバック制御部は、前記所定の記憶装置に格納された識別情報を要求する前記DNSクエリ要求が得られたとの監視結果が前記監視部により得られた場合に、該識別情報を含まない該DNSクエリ応答を生成した上で、前記DNSクエリ要求の送信元となる前記第1の端末に送信することを特徴とする請求項1〜3のいずれか1つに記載のフォールバック検知装置。
【請求項7】
複数のプロトコルに対応する第1の端末によって第2の端末に向けて送信されるパケットを監視する監視工程と、
通信の開始を要求する通信開始メッセージが前記複数あるプロトコルのうち特定のプロトコルにて前記第1の端末から前記第2の端末に所定期間内に所定回数送信されたとの監視結果が前記監視工程により得られた場合に、該通信開始メッセージの送信先となる該第2の端末を識別するための識別情報を所定の記憶装置に格納する格納工程と、
前記格納工程によって前記所定の記憶装置に格納された識別情報が宛先となる前記通信開始メッセージの送信元となる前記第1の端末について、フォールバックを制御するフォールバック制御工程と
を含んだことを特徴とするフォールバック検知方法。
【請求項8】
コンピュータを請求項1〜6のいずれか1つに記載のフォールバック検知装置として機能させるためのフォールバック検知プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate