(57)【要約】      （修正有）【課題】ＩＰｖ４／ｖ６デュアルスタック利用時のＴＣＰ接続遅延を回避することを可能にする。【解決手段】端末からのＴＣＰパケットを端末の前段に置いたサーバでキャプチャし、端末のＴＣＰ接続状況をサーバで把握する。端末のＴＣＰ接続状態がＳＹＮ−ＳＥＮＴもしくはＳＹＮ−ＲＥＣＥＩＶＥＤの状態にあるときに、当該端末宛のソフトエラーＩＣＭＰｖ６”ｎＤｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ（ＩＣＭＰタイプ＝１、コード＝０）”などをキャプチャした場合、ＩＣＭＰｖ６の内容をハードエラーとなるもの（例：“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ（ＩＣＭＰタイプ＝１、コード＝１）”など）に書き換えて端末に送信する。【選択図】図１
2008250976.tif 000002
【特許請求の範囲】
【請求項１】
他のホストから送信されたIPv4またはIPv6パケットの転送機能を持つ装置であって、該他のホストのTCP接続状態を解析および記録する機能を持ち、前記TCP接続状態に応じて前記他のホストに向けて送信されたICMPまたはICMPv6パケットの内容を変換して前記他のホストに転送する機能を持つ装置。
【請求項２】
請求項１記載の装置であって、前記TCP接続状態がSYN_SENTまたはSYN_RECEIVEDである場合に、タイプが1でコードが0もしくは3である前記ICMPv6パケットのコードを1もしくは4に変更することを特徴とする装置。
【請求項３】
請求項１記載の装置であって、前記TCP接続状態がSYN_SENTまたはSYN_RECEIVEDである場合に、タイプが3でコードが0もしくは1もしくは5である前記ICMPパケットのコードを0もしくは1もしくは5以外に変更することを特徴とする装置。
【請求項４】
他のホストのTCP接続状態を解析および記録し、該ＴＣＰ接続状態に基づいてIPv4またはIPv6パケットの転送機能を制限する機能を持つファイアウォール装置であって、前記TCP接続状態に応じて前記他のホストに向けて送信されたICMPまたはICMPv6パケットの内容を変換して前記他のホストに転送する機能を持つことを特徴とするファイアウォール装置。
【請求項５】
請求項４記載のファイアウォール装置であって、前記TCP接続状態がSYN_SENTまたはSYN_RECEIVEDである場合に、タイプが1でコードが0もしくは3である前記ICMPv6パケットのコードを1もしくは4に変更することを特徴とするファイアウォール装置。
【請求項６】
請求項４記載の装置であって、前記TCP接続状態がSYN_SENTまたはSYN_RECEIVEDである場合に、タイプが3でコードが0もしくは1もしくは5である前記ICMPパケットのコードを0もしくは1もしくは5以外に変更することを特徴とするファイアウォール装置。
【請求項７】
端末内で、IPv4またはIPv6パケットの転送機能の前段で動作するソフトウェアであって、該端末のTCP接続状態を解析および記録する機能を持ち、前記TCP接続状態に応じて該端末が受信したICMPまたはICMPv6パケットの内容を変換して前記パケットの転送機能に転送する機能を持つソフトウェア。
【請求項８】
請求項７記載のソフトウェアであって、前記TCP接続状態がSYN_SENTまたはSYN_RECEIVEDである場合に、タイプが1でコードが0もしくは3である前記ICMPv6パケットのコードを1もしくは4に変更することを特徴とするソフトウェア。
【請求項９】
請求項７記載のソフトウェアであって、前記TCP接続状態がSYN_SENTまたはSYN_RECEIVEDである場合に、タイプが3でコードが0もしくは1もしくは5である前記ICMPパケットのコードを0もしくは1もしくは5以外に変更することを特徴とするソフトウェア。
【請求項１０】
端末内で、IPv4またはIPv6パケットの転送機能の前段で動作し、該端末のTCP接続状態を解析および記録することにより前記IPv4またはIPv6パケットの転送機能を制限する機能を持つファイアウォールソフトウェアであって、前記TCP接続状態に応じて該端末が受信したICMPまたはICMPv6パケットの内容を変換して前記パケットの転送機能に転送する機能を持つファイアウォールソフトウェア。
【請求項１１】
請求項１０記載のファイアウォールソフトウェアであって、前記TCP接続状態がSYN_SENTまたはSYN_RECEIVEDである場合に、タイプが1でコードが0もしくは3である前記ICMPv6パケットのコードを1もしくは4に変更することを特徴とするファイアウォールソフトウェア。
【請求項１２】
請求項１０記載のファイアウォールソフトウェアであって、前記TCP接続状態がSYN_SENTまたはSYN_RECEIVEDである場合に、タイプが3でコードが0もしくは1もしくは5である前記ICMPパケットのコードを0もしくは1もしくは5以外に変更することを特徴とするファイアウォールソフトウェア。
【請求項１３】
請求項１記載の装置であって、前記ICMPまたはICMPv6パケットを変換せずに前記他のホストに送信した回数を記録する機能を持ち、該回数が一定以上になった場合に前記TCP接続状態に応じて前記他のホストに向けて送信されたICMPまたはICMPv6パケットの内容を変換して前記他のホストに転送することを特徴とする装置。
【請求項１４】
請求項２記載の装置であって、前記ICMPv6パケットを変換せずに前記他のホストに送信した回数を記録する機能を持ち、該回数が一定以上になった場合に、前記TCP接続状態に応じて前記他のホストに向けて送信されたICMPv6パケットの内容を変換して前記他のホストに転送することを特徴とする装置。
【請求項１５】
請求項３記載の装置であって、前記ICMPパケットを変換せずに前記他のホストに送信した回数を記録する機能を持ち、該回数が一定以上になった場合に、前記TCP接続状態に応じて前記他のホストに向けて送信されたICMPパケットの内容を変換して前記他のホストに転送することを特徴とする装置。
【請求項１６】
請求項１記載の装置であって、前記他のホストのアドレスとICMPまたはICMPv6パケットの変換機能の適用/非適用の対応関係を保持し、前記他のホスト宛のICMPまたはICMPv6パケット受信時に前記対応関係を参照し前記他のホストからのICMPまたはICMPv6受信パケットがICMPまたはICMPv6パケットの変換機能を適用する前記他のホストからのICMPまたはICMPv6受信パケットであった場合に前記TCP接続状態に応じて前記他のホストに向けて送信されたICMPまたはICMPv6パケットの内容を変換して前記他のホストに転送することを特徴とする装置。
【請求項１７】
請求項２記載の装置であって、前記他のホストのアドレスとICMPv6パケットの変換機能の適用/非適用の対応を関係を保持し、前記他のホスト宛のICMPv6パケット受信時に前記対応関係を参照し、前記他のホストからのICMPまたはICMPv6受信パケットがICMPv6パケットの変換機能を適用する前記他のホストからのICMPまたはICMPv6受信パケットであった場合に前記TCP接続状態に応じて前記他のホストに向けて送信されたICMPv6パケットの内容を変換して前記他のホストに転送することを特徴とする装置。
【請求項１８】
請求項３記載の装置であって、前記他のホストのアドレスとICMPパケットの変換機能の適用/非適用の対応関係を保持し、前記他のホスト宛のICMPパケット受信時に前記対応関係を参照し前記他のホストからのICMPまたはICMPv6受信パケットがICMPパケットの変換機能を適用する前記他のホストからのICMPまたはICMPv6受信パケットであった場合に前記TCP接続状態に応じて前記他のホストに向けて送信されたICMPパケットの内容を変換して前記他のホストに転送することを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ICMP変換装置に関する。
【背景技術】
【０００２】
RFC1122にて示されているTCPの仕様上、”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  : no route to destination(ICMPタイプ=1：コード０）”などICMPv6エラーの一部は一時的なエラーの可能性がある「ソフトエラー」として、それを受け取ってもTCPコネクション確立を直ちに中止せず、再送リトライ回数を超えるまで繰り返しコネクション確立を試行することになっている。そのため、IPv4/v6デュアルスタックでホストを運用している際にIPv6到達性がないホストに対してTCP通信を行おうとすると、ICMPv6エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｏ  ｒｏｕｔｅ  ｔｏ  ｄｅｓｔｉｎａｔｉｏｎ”によりIPv6到達性がないことが確認できるにもかかわらず、IPv4でのTCPコネクション確立に直ちに移行せずにIPv6のTCPコネクション確立リトライ上限までタイムアウト→再送を繰り返してしまうため、恒常的に遅延が発生するという問題がdraft-ietf-tcpm-tcp-soft-errors-01.txtの3.2章にて示されている。
この問題に関しては、端末側のTCPの実装を、コネクション確立フェーズの間だけはソフトエラーを受信したら直ちに中断するように変更することで解決する手法がdraft-ietf-tcpm-tcp-soft-errors-01.txtの4章において示されている。
【０００３】
【非特許文献１】Braden, R., "Requirements for Internet Hosts - Communication Layers", STD 3, RFC 1122, October 1989.
【非特許文献２】F. Gont., "TCP's Reaction to Soft Errors", Internet-Draft, draft-ietf-tcpm-tcp-soft-errors-01.txt, August 2006.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、端末においてはWindowsをはじめとするプロプライエタリソフトがほぼ必須となっており、上記の端末ソフトウェアに改造を加える手法は適用できない場面が多い。そこで、外部サーバを端末の前段に置いて解決する手法が求められている。
【課題を解決するための手段】
【０００５】
端末からのTCPパケットを端末の前段に置いたサーバでキャプチャし、端末のTCP接続状況をサーバで把握する。端末のTCP接続状態がSYN-SENTもしくはSYN-RECEIVEDの状態にあるときに、当該端末宛のソフトエラーＩＣＭＰｖ６”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｏ  ｒｏｕｔｅ  ｔｏ  ｄｅｓｔｉｎａｔｉｏｎ”をキャプチャした場合、ICMPv6の内容をハードエラーとなるもの(例：  “Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｗｉｔｈ  ｄｅｓｔｉｎａｔｉｏｎ  ａｄｍｉｎｉｓｔｒａｔｉｖｅｌｙ  ｐｒｏｈｉｂｉｔｅｄ（ＩＣＭＰタイプ＝１、コード＝１）”など)に書き換えて端末に送信する。これにより端末は直ちにIPv6によるTCPコネクション確立を中止し、IPv4によるTCPコネクション確立に移行するため、接続遅延を起こさずに済む。
【０００６】
このサーバは新設してもよいが、通常TCP接続状態はファイアウォール(FW)で把握しているのでFWに対してICMPv6変換を行う改造を加えてもよい。
【発明の効果】
【０００７】
本発明によれば、手を入れづらい端末側のソフトウェアに手を入れることなく、IPv4/IPv6デュアルスタック利用時のTCP接続遅延を回避することが可能となる。
【実施例１】
【０００８】
図2は本発明を適用する典型的なネットワーク構成の例である。IPv4/v6デュアルスタックのLAN 6、網7、網9と、IPv4のみの接続性を持つ網8が存在しており、LAN6と網7とは本発明のサーバであるFW 1aを介して接続しており、網7と網8は境界ルータa 4を介して接続しており、網8と網9は境界ルータb 5を介して接続している。端末2はIPv4/v6デュアルスタック対応であり、まずIPv6での通信を試行し、IPv6通信が失敗した場合はIPv4に切り替えて通信を試行するフォールバック機能を備える。端末2からホスト3に通信する際には、網8を通信経路として選ぶ必要があるため、端末2-ホスト3間ではIPv6通信はできず、IPv4でのみ接続が可能であるが、端末2がそのことを事前に知ることは不可能である。
【０００９】
図3は本発明を適用する典型的なネットワーク構成の別の例である。図2におけるLAN 6と網7の間に別の網11が存在し、本発明のサーバであるFW機能を持つBBルータ 1bとトンネルサーバ10の間に設定されたトンネル12を介してLAN 6と網7が接続している。
【００１０】
図4は本発明を適用する典型的なネットワーク構成のさらに別の例である。こちらの例ではBBルータ13と本発明のサーバであるFW機能を持つトンネルサーバ1cの間に設定されたトンネル12を介してLAN 6と網7が接続している。
【００１１】
図1は端末2からホスト3に向けてTCP接続を行う場合を示した本発明のシーケンス図である。端末2から発せられたIPv6のTCP SYN(s1)は、FW 1a/1b/1cを介して境界ルータa 4に到達する(s2)。境界ルータaは網8にIPv6接続性が無いため、ICMPv6エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｏ  ｒｏｕｔｅ  ｔｏ  ｄｅｓｔｉｎａｔｉｏｎ（ＩＣＭＰタイプ＝１：コード０）”を送信元に向けて返送する(s3)。それを受けたFWは、TCP接続状態を確認してSYN_SENTもしくはSYN_RECEIVERD状態であることを確認した場合はICMPv6エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｏ  ｒｏｕｔｅ  ｔｏ  ｄｅｓｔｉｎａｔｉｏｎ”をハードエラーとなる別のICMPv6エラー、たとえば“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｗｉｔｈ  ｄｅｓｔｉｎａｔｉｏｎ  ａｄｍｉｎｉｓｔｒａｔｉｖｅｌｙ  ｐｒｏｈｉｂｉｔｅｄ（ＩＣＭＰタイプ＝１、コード＝１）”に書き換えて端末に転送する(s4)。この書き換え候補は、ほかには“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａble : port unreachable (ICMPタイプ=1、コード＝４）”も考えられる。s4を受けた端末は、タイムアウトとリトライを繰り返すことなく直ちにIPv4のTCP接続に移行してシーケンスを続行する(s5〜s13)。IPv4に関しては端末2とホスト3の間の接続性は確保されているため特に失敗することなく、端末2とホスト3の間にIPv4でのTCP接続が確立されて通信が行われる(s14)。
【００１２】
ＩＣＭＰｖ６エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ａｄｄｒｅｓｓ  ｕｎｒｅａｃｈａｂｌｅ  （ＩＣＭＰタイプ＝１：コード３）”もソフトエラーとなるため、これも”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｏ  ｒｏｕｔｅ  ｔｏ  ｄｅｓｔｉｎａｔｉｏｎ”と同様に“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｗｉｔｈ  ｄｅｓｔｉｎａｔｉｏｎ  ａｄｍｉｎｉｓｔｒａｔｉｖｅｌｙ  ｐｒｏｈｉｂｉｔｅｄ”などで書き換えることも考えられる。
【００１３】
図5は、本発明のサーバであるFW装置1a/1b/1cの装置構成図である。CPU101とメモリ102とNIF103とがバス104で接続された、一般的なルータシステムである。メモリ内にはパケット転送ソフトウェア1024がある。パケット転送ソフトウェアの一部として通常のFW機能ソフトウェア1021があり、その一部が改造した本発明のソフトウェア1022、およびTCP接続状況管理DB1023となっている。
【００１４】
図6は本発明のソフトウェア1022のフローチャートである。この処理は通常のFW機能ソフトウェア1022の処理の前段、もしくは中途に挿入される。FW 1a/1b/1cがICMPv6エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｏ  ｒｏｕｔｅ  ｔｏ  ｄｅｓｔｉｎａｔｉｏｎ（ＩＣＭＰタイプ＝１：コード０）”を受け取る(f1)と、本発明のソフトウェア1022はTCP接続状況DB 1023を検索し(f2)、当該ICMPv6エラーに対応するTCP接続の存否を判別する(f3)。もし対応するTCP接続が存在しない場合はFW処理を続行する(f4)。対応するTCP接続が存在する場合は、続いてTCP接続状況を確認する(f5)。もし接続状況が”ＳＹＮ＿ＳＥＮＴ”もしくは“ＳＹＮ＿ＲＥＣＥＩＶＥＤ”ではない場合は、FW処理を続行する(f6)。接続状況が”ＳＹＮ＿ＳＥＮＴ”もしくは“ＳＹＮ＿ＲＥＣＥＩＶＥＤ”であった場合は、受け取ったICMPv6パケットを“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｗｉｔｈ  ｄｅｓｔｉｎａｔｉｏｎ  ａｄｍｉｎｉｓｔｒａｔｉｖｅｌｙ  ｐｒｏｈｉｂｉｔｅｄ（ＩＣＭＰタイプ＝１、コード＝１）”などのハードエラーとなるICMPv6エラーに書き換え(f7)、FW処理を続行する(f8)。これにより、通常のFW処理ソフトウェア1021によりICMPv6パケットが拒絶されない場合は端末2に書き換えられたICMPv6エラーが届くことになり、タイムアウト待ちなしにIPv4接続に移行することが可能となる。
【００１５】
図7はTCP接続状況DB1024の例である。送信元と宛先のアドレスおよびポートごとに状況を保持しており、これによってパケットごとの接続状況を確認することが可能となる。
【００１６】
以上の実施例により、ＩＰｖ６→ＩＰｖ４のフォールバック機能を持つ端末のソフトウェアに手を入れることなく、IPv4/IPv6デュアルスタック利用時にIPv6到達性がない宛先に対してのTCP接続遅延を回避することが可能となる。
【実施例２】
【００１７】
実施例１ではＩＰｖ６→ＩＰｖ４のフォールバック機能を持つ端末がTCP通信しようとした状況において端末-ホスト間のIPv6到達性がない場合を考えたが、ＩＰｖ４→ＩＰｖ６のフォールバック機能を持つ端末がTCP通信しようとした状況において端末-ホスト間のIPv4到達性がない場合も考えられる。その場合も本発明により解決が可能である。
【００１８】
図8は上記の状況において本発明を適用する典型的なネットワーク構成の例である。IPv4/v6デュアルスタックのLAN 6、網7、網9と、IPv6のみの接続性を持つ網14が存在しており、LAN6と網7とは本発明のサーバであるFW 1dを介して接続しており、網7と網14は境界ルータa 4を介して接続しており、網14と網9は境界ルータb 5を介して接続している。端末15はIPv4/v6デュアルスタック対応であり、まずIPv4での通信を試行し、IPv4通信が失敗した場合はIPv6に切り替えて通信を試行するフォールバック機能を備える。端末15からホスト3に通信する際には、網14を通信経路として選ぶ必要があるため、端末15-ホスト3間ではIPv4通信はできず、IPv6でのみ接続が可能であるが、端末15がそのことを事前に知ることは不可能である。
【００１９】
図9は端末15からホスト3に向けてTCP接続を行う場合を示した本発明のシーケンス図である。端末14から発せられたIPv4のTCP SYN(s21)は、FW 1dを介して境界ルータa 4に到達する(s22)。境界ルータaは網14にIPv4接続性が無いため、ICMPv4エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎreachable : network unreachable(ICMPタイプ=3：コード０）”もしくは”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｈｏｓｔ  ｕｎｒｅａｃｈａｂｌｅ（ＩＣＭＰタイプ＝３：コード１）”を送信元に向けて返送する(s23)。それを受けたFWは、TCP接続状態を確認してSYN_SENTもしくはSYN_RECEIVERD状態であることを確認した場合はICMPv4エラーをハードエラーとなる別のICMPv4エラー、たとえば“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｄestination network administratively prohibited(ICMPタイプ=3、コード＝９）”に書き換えて端末に転送する(s24)。この書き換え候補は、ほかにはICMPタイプ=1でコードが0,1,5以外の全てのものが考えられる。s24を受けた端末は、タイムアウトとリトライを繰り返すことなく直ちにIPv6のTCP接続に移行してシーケンスを続行する(s25〜s33)。IPv6に関しては端末15とホスト3の間の接続性は確保されているため特に失敗することなく、端末15とホスト3の間にIPv6でのTCP接続が確立されて通信が行われる(s34)。
【００２０】
ＩＣＭＰｖ６エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ａｄｄｒｅｓｓ  ｕｎｒｅａｃｈａｂｌｅ  （ＩＣＭＰタイプ＝１：コード５）”もソフトエラーとなるため、これも”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｅｔｗｏｒｋ  ｕｎｒｅａｃｈａｂｌｅ”もしくは”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｈｏｓｔ  ｕｎｒｅａｃｈａｂｌｅ”と同様に“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｄｅｓｔｉｎａｔｉｏｎ  ｎｅｔｗｏｒｋ  ａｄｍｉｎｉｓｔｒａｔｉｖｅｌｙ  ｐｒｏｈｉｂｉｔｅｄ”などで書き換えることも考えられる。
以上の実施例により、ＩＰｖ４→ＩＰｖ６のフォールバック機能を持つ端末のソフトウェアに手を入れることなく、ＩＰｖ４／ＩＰｖ６デュアルスタック利用時にＩＰｖ４到達性がない宛先に対してのＴＣＰ接続遅延を回避することが可能となる。
【実施例３】
【００２１】
実施例１では端末の前段に物理的に別のFWを設置したが、FW機能をソフトウェアとして実装して端末のパケット転送ソフトウェアの前段に置くという構成で本発明を実施することも可能である。
【００２２】
図10は本発明を適用する典型的なネットワーク構成の例である。IPv4/v6デュアルスタックのLAN 6、網7、網9と、IPv4のみの接続性を持つ網8が存在しており、LAN6と網7とは境界ルータc 17を介して接続しており、網7と網8は境界ルータa 4を介して接続しており、網8と網9は境界ルータb 5を介して接続している。端末16はIPv4/v6デュアルスタック対応であり、まずIPv6での通信を試行し、IPv6通信が失敗した場合はIPv4に切り替えて通信を試行するフォールバック機能を備え、さらに本発明のソフトウェア機能を実装したFW機能をソフトウェアとして具備している。端末16からホスト3に通信する際には、網8を通信経路として選ぶ必要があるため、端末2-ホスト3間ではIPv6通信はできず、IPv4でのみ接続が可能であるが、端末16がそのことを事前に知ることは不可能である。
【００２３】
図12は端末16からホスト3に向けてTCP接続を行う場合を示した本発明のシーケンス図である。端末16のパケット転送ソフトウェア16024から発せられたIPv6のTCP SYN(s41)は、端末16のFW機能ソフトウェア16021を介して境界ルータa 4に到達する(s42)。境界ルータaは網8にIPv6接続性が無いため、ICMPv6エラー” Destination Unreachable : no route to destination(ICMPタイプ=1：コード0)”を送信元に向けて返送する(s43)。それを受けた端末16のFW機能ソフトウェア16021は、TCP接続状態を確認してSYN_SENTもしくはSYN_RECEIVERD状態であることを確認した場合はICMPv6エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｏ  ｒｏｕｔｅ  ｔｏ  ｄｅｓｔｉｎａｔｉｏｎ”をハードエラーとなる別のＩＣＭＰｖ６エラー、たとえば“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｗｉｔｈ  ｄｅｓｔｉｎａｔｉｏｎ  ａｄｍｉｎｉｓｔｒａｔｉｖｅｌｙ  ｐｒｏｈｉｂｉｔｅｄ（ＩＣＭＰタイプ＝１、コード＝１）”に書き換えて端末16のパケット転送ソフトウェア16024に転送する(s44)。この書き換え候補は、ほかには“Destination Unreachable : port unreacｈａｂｌｅ  （ＩＣＭＰタイプ＝１、コード＝４）”も考えられる。s44を受けた端末は、タイムアウトとリトライを繰り返すことなく直ちにIPv4のTCP接続に移行してシーケンスを続行する(s45〜s53)。IPv4に関しては端末16とホスト3の間の接続性は確保されているため特に失敗することなく、端末16とホスト3の間にIPv4でのTCP接続が確立されて通信が行われる(s54)。
【００２４】
ICMPv6エラー”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ａｄｄｒｅｓｓ  ｕｎｒｅａｃｈａｂｌｅ  （ＩＣＭＰタイプ＝１：コード３）”もソフトエラーとなるため、これも”  Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｎｏ  ｒｏｕｔｅ  ｔｏ  ｄｅｓｔｉｎａｔｉｏｎ”と同様に“Ｄｅｓｔｉｎａｔｉｏｎ  Ｕｎｒｅａｃｈａｂｌｅ  ：  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｗｉｔｈ  ｄｅｓｔｉｎａｔｉｏｎ  ａｄｍｉｎｉｓｔｒａｔｉｖｅｌｙ  ｐｒｏｈｉｂｉｔｅｄ”などで書き換えることも考えられる。
【００２５】
図11は、本発明が適用された端末16の装置構成図である。CPU1601とメモリ1602とNIF1603とがバス1604で接続された、一般的なネットワーク端末システムである。メモリ内にはパケット転送ソフトウェア16024とそれを利用するネットワーク通信アプリケーション16025、および通常のFW機能ソフトウェア16021がある。通常のFW機能ソフトウェア16021の一部が改造した本発明のソフトウェア16022、およびTCP接続状況管理DB16023となっている。
【００２６】
図13は本発明のソフトウェア16022のフローチャートである。この処理は通常のFW機能ソフトウェア16022の処理の前段、もしくは中途に挿入される。端末16がICMPv6エラー”  Ｄｅｓｔｉnation Unreachable : no route to destiｎａｔｉｏｎ（ＩＣＭＰタイプ＝１：コード０）”を受け取る(f11)と、本発明のソフトウェア16022はTCP接続状況DB 16023を検索し(f12)、当該ICMPv6エラーに対応するTCP接続の存否を判別する(f13)。もし対応するTCP接続が存在しない場合はFW処理を続行する(f14)。対応するTCP接続が存在する場合は、続いてTCP接続状況を確認する(f15)。もし接続状況が”ＳＹＮ＿ＳＥＮＴ”もしくは“ＳＹＮ＿ＲＥＣＥＩＶＥＤ”ではない場合は、FW処理を続行する(f16)。接続状況が”ＳＹＮ＿ＳＥＮＴ”もしくは“ＳＹＮ＿ＲＥＣＥＩＶＥＤ”であった場合は、受け取ったICMPv6パケットを“Destination Unreachable : communication with destination administratively prohibited(ICMPタイプ=1、コード=1)”などのハードエラーとなるICMPv6エラーに書き換え(f17)、FW処理を続行する(f18)。これにより、通常のFW処理ソフトウェア16021によりICMPv6パケットが拒絶されない場合は通常のパケット転送ソフトウェア16024に書き換えられたICMPv6エラーが届くことになり、タイムアウト待ちなしにIPv4接続に移行することが可能となる。
【００２７】
以上の実施例により、ＩＰｖ６→ＩＰｖ４のフォールバック機能を持つ端末のソフトウェア本体に手を入れずに新規ソフトウェアを追加するだけで、IPv4/IPv6デュアルスタック利用時にIPv6到達性がない宛先に対してのTCP接続遅延を回避することが可能となる。
【実施例４】
【００２８】
実施例１ではICMPv6ソフトエラーを受信したFW装置は直ちにICMPv6ハードエラーに変換して端末に送信していたが、ソフトエラーの本来の意味である「一時的な障害」であるかどうかをある程度は見極めたいという要求もある。そこで、FW装置が一定回数はICMPv6ソフトエラーをそのまま端末に送信し、一定回数を超えたところで初めてICMPv6ハードエラー変換を行う形で本発明を実施することも可能である。
【００２９】
図１４は本発明を適用する典型的なネットワーク構成図である。実施例１の図２と比べて、FW装置が一定回数までICMPv6ソフトエラーをそのまま端末に送信する機能を持つFW装置1eに置き換わっている。
【００３０】
図１５は本発明のサーバであるFW装置1eの装置構成図である。実施例１の図５と比べて、本発明のソフトウェアがソフトエラー送信回数をチェックする機能を持つ1025に置き換わっている。また、TCP接続状況DBがカウンタを持つ1026に置き換わっている。
【００３１】
図１６は端末2からホスト3に向けてTCP接続を行う場合を示した本発明のシーケンス図である。実施例１の図１と比べて、ICMPv6ソフトエラーをそのまま端末に送信し、リトライを行うシーケンス(s61-x、s62-x、s63-x、s64-x)がn-1回(1 < n < m ； mは端末側でIPv4フォールバックを行うリトライ回数)行われた後に、ソフトエラーからハードエラーへの変換が行われている(s65)。
【００３２】
図17は本発明のソフトウェア1025のフローチャートである。実施例１の図６と比べて、TCP接続状況をチェックしたf5の後に、リトライカウンタの回数をチェックする処理f19が追加されている。f19でチェックした結果カウンタの値がn未満だった場合はカウンタの値を1増加する処理f20を行った後に、FW処理を続行する(f21)。
【００３３】
図18はTCP接続状況DB1026の例である。実施例１の図7と比べて、リトライカウンタが追加されている。
【００３４】
以上の実施例により、端末のIPv4フォールバックに任せるよりはすばやく端末にIPv4フォールバックを促すことが可能となり、さらにネットワークの一時的障害を実施例1よりも正確に検知することが可能となる。
【実施例５】
【００３５】
実施例１では全ての端末からのICMPv6ソフトエラーをICMPv6ハードエラーに変換して送信していたが、端末ごとにソフトエラーの本来の意味である「一時的な障害」であるかどうかを見極めるか、すばやくフォールバックを行うかを選択したいという要求もある。そこで、FW装置に端末のリストを持ち、ICMPv6ソフトエラーをそのまま端末に送信するか、ICMPv6ハードエラー変換を行うかを選択する形で本発明を実施することも可能である。
【００３６】
図１９は本発明を適用する典型的なネットワーク構成図である。実施例１の図２と比べて、FW装置が端末ごとにFW装置1fに置き換わっている。また、端末がソフトエラー→ハードエラー変換を適用する2aと適用しない2bの二つとなっている。
【００３７】
図２０は本発明のサーバであるFW装置1fの装置構成図である。実施例１の図５と比べて、端末ごとのソフトエラー→ハードエラー変換適用の有無を記録した端末適用DB1028が追加されており、本発明のソフトウェアが端末適用DB1028をチェックする機能を持つ1027に置き換わっている。
【００３８】
図２１は端末2a,2bからホスト3に向けてTCP接続を行う場合を示した本発明のシーケンス図である。端末2aからの接続は実施例１の図１とまったく同様に行われるが、端末2bからの接続はICMPv6ソフトエラーをそのまま端末に送信し、リトライを行うシーケンス(s101-x、s102-x、s103-x、s104-x)がm回( mは端末側でIPv4フォールバックを行うリトライ回数)行われた後に、端末側でIPv4フォールバックが行われて接続している(s105〜s114)。
【００３９】
図２２は本発明のソフトウェア1027のフローチャートである。実施例１の図６と比べて、TCP接続状況を検索するf2の前に、適用端末DB1028を検索し(f22)、ソフトエラー→ハードエラー変換を適用する端末かチェックする処理f23が追加されている。f23でチェックした結果非適用端末だった場合はFW処理を続行する(f24)。
【００４０】
図２３は適用端末DB1028の例である。端末のアドレスごとに適用/非適用を選択することが可能となっている。
以上の実施例により、端末ごとに端末自身のIPv4フォールバックに任せるか、ソフトエラー→ハードエラー変換によりすばやく端末にIPv4フォールバックを促すかが選択可能となる。
【図面の簡単な説明】
【００４１】
【図１】端末2とホスト3の間にIPv6到達性がない場合に、端末の前段にFWを置いた場合の本発明のシーケンス図。
【図２】端末2とホスト3の間にIPv6到達性がないネットワークの例。
【図３】端末2とホスト3の間にIPv6到達性がないネットワークの例。
【図４】端末2とホスト3の間にIPv6到達性がないネットワークの例。
【図５】本発明のサーバであるFWの装置構成図。
【図６】本発明のソフトウェアのフローチャート。
【図７】TCP接続状況DBの例。
【図８】端末15とホスト3の間にIPv4到達性がないネットワークの例。
【図９】端末15とホスト3の間にIPv4到達性がない場合に、端末の前段にFWを置いた場合の本発明のシーケンス図。
【図１０】端末16とホスト3の間にIPv6到達性がないネットワークの例。
【図１１】本発明をソフトウェアとして端末16に具備した場合の装置構成図。
【図１２】端末16とホスト3の間にIPv6到達性がない場合に本発明をソフトウェアとして端末16に具備した場合の本発明のシーケンス図。
【図１３】本発明のソフトウェアのフローチャート。
【図１４】端末2とホスト3の間にIPv6到達性がないネットワークの例。
【図１５】本発明のサーバであるFWの装置構成図。
【図１６】端末2とホスト3の間にIPv6到達性がない場合に、端末の前段にFWを置いた場合の本発明のシーケンス図。
【図１７】本発明のソフトウェアのフローチャート。
【図１８】TCP接続状況DBの例。
【図１９】端末2a,2bとホスト3の間にIPv6到達性がないネットワークの例。
【図２０】本発明のサーバであるFWの装置構成図。
【図２１】端末2a,2bとホスト3の間にIPv6到達性がない場合に、端末の前段にFWを置いた場合の本発明のシーケンス図。
【図２２】本発明のソフトウェアのフローチャート。
【図２３】適用端末DBの例。
【符号の説明】
【００４２】
１ａ／１ｂ／１ｃ／１ｄ／１ｅ／１ｆ…本発明のサーバ、２／２ａ／２ｂ／１５／１６…端末、３…ホスト、４／５／１７…境界ルータ、６／７／９…ＩＰｖ４／ｖ６デュアルスタック網、８…ＩＰｖ６のみ通信可能な網、１４…ＩＰｖ４のみ通信可能な網、１１…ＩＰパケットを転送するトンネルが設定される網、１２…ＩＰパケットを転送するトンネル、１０…トンネルサーバ、１３…ＢＢルータ、ｓ１／ｓ２／ｓ２５／ｓ２６／ｓ２７／ｓ４１／ｓ４２／ｓ６１−ｘ／ｓ６２−ｘ／ｓ８１／ｓ８２／ｓ１０１−ｘ／ｓ１０２−ｘ…ＴＣＰ  ＳＹＮ（ＩＰｖ６）、ｓ５／ｓ６／ｓ７／ｓ２１／ｓ２２／ｓ４５／ｓ４６／ｓ４７／ｓ６６／ｓ６７／ｓ６８／ｓ８５／ｓ８６／ｓ８７／ｓ１０５／ｓ１０６／ｓ１０７…ＴＣＰ  ＳＹＮ（ＩＰｖ４）、ｓ８／ｓ９／ｓ１０／ｓ４８／ｓ４９／ｓ５０／ｓ６９／ｓ７０／ｓ７１／ｓ８８／ｓ８９／ｓ９０…ＴＣＰ  ＳＹＮＡＣＫ（ＩＰｖ４）、ｓ２８／ｓ２９／ｓ３０…ＴＣＰ  ＳＹＮＡＣＫ（ＩＰｖ６）、ｓ１１／ｓ１２／ｓ１３…ＴＣＰ  ＡＣＫ（ＩＰｖ６）、ｓ３１／ｓ３２／ｓ３３／ｓ５１／ｓ５２／ｓ５３／ｓ７２／ｓ７３／ｓ７４／ｓ９１／ｓ９２／ｓ９３／ｓ１１１／ｓ１１２／ｓ１１３…ＴＣＰ  ＡＣＫ（ＩＰｖ４）、ｓ３／ｓ４３／ｓ６３−ｘ／ｓ６４−ｘ／ｓ８３／ｓ１０３−ｘ／ｓ１０４−ｘ…ＩＣＭＰｖ６ソフトエラー、ｓ４／ｓ４４／ｓ６５／ｓ８４…本発明により書き換えられたＩＣＭＰｖ６ハードエラー、ｓ２３…ＩＣＭＰソフトエラー、ｓ２４…本発明により書き換えられたＩＣＭＰハードエラー、１０１／１６０１…ＣＰＵ、１０２／１６０２…メモリ、１０３／１６０３…ＮＩＦ、１０４／１６０４…バス、１０２１／１６０２１…通常のＦＷソフトウェア、１０２２／１６０２２…本発明のソフトウェア、１０２３／１６０２３…ＴＣＰ接続状況ＤＢ、１０２４／１６０２４…パケット転送ソフトウェア、１６０２５…ネットワーク通信アプリケーション。
【図１】
2008250976.tif 000003
【図２】
2008250976.tif 000004
【図３】
2008250976.tif 000005
【図４】
2008250976.tif 000006
【図５】
2008250976.tif 000007
【図６】
2008250976.tif 000008
【図７】
2008250976.tif 000009
【図８】
2008250976.tif 000010
【図９】
2008250976.tif 000011
【図１０】
2008250976.tif 000012
【図１１】
2008250976.tif 000013
【図１２】
2008250976.tif 000014
【図１３】
2008250976.tif 000015
【図１４】
2008250976.tif 000016
【図１５】
2008250976.tif 000017
【図１６】
2008250976.tif 000018
【図１７】
2008250976.tif 000019
【図１８】
2008250976.tif 000020
【図１９】
2008250976.tif 000021
【図２０】
2008250976.tif 000022
【図２１】
2008250976.tif 000023
【図２２】
2008250976.tif 000024
【図２３】
2008250976.tif 000025