(58)【調査した分野】(Int.Cl.,DB名)
第1の端末と第2の端末との間で行われるTCPに従うパケットの伝送を、少なくとも第1の中継装置及び第2の中継装置を介して中継するために配置される前記第1の中継装置であって、
前記第1の中継装置と前記第1の端末との間で形成されるTCPセッション及び前記第2の中継装置と前記第2の端末との間で形成されるTCPセッションとは異なる所定のTCPセッションを前記第1の中継装置と前記第2の中継装置との間に形成し、前記第1の中継装置から前記第2の中継装置に向けて送信されたパケットの再送状況に基づいて、送信帯域を制御する帯域制御部と、
当該パケットのTCPヘッダに、前記第1の中継装置と所定のネットワークを介した第2の中継装置との間でのパケットのやり取りであることを示すためのマークを付与するオプション部と、
前記第2の中継装置から送信されるパケットのTCPヘッダに付与される、前記第1と第2の中継装置間でのデータのやり取りであることを示すためのマークに基づいて前記所定のTCPセッションを用いた前記第2の中継装置が提供するパケット転送機能に関する状態を検知する検知部と、を備え、
前記オプション部によって前記マークを付与する場合に、前記第1の端末から受信した前記第2の端末宛へのパケットを前記帯域制御部で制御される送信帯域によって送信する、ことを特徴とする第1の中継装置。
【発明の概要】
【発明が解決しようとする課題】
【0005】
TCPを用いた通信では、送信帯域がRTTと廃棄率に大きく左右されるため、WANのようなRTTが大きく、ホップ数が大きくて廃棄箇所が多い環境下では、契約帯域を大幅に下回る送信帯域しか得られない場合がある。
【0006】
これに対する対策として、TCPのようなシーケンス番号を用いたストリーム型の通信の伝送経路の途中において、複数の中継装置を用いて送信帯域がRTTと廃棄率に左右されないようにストリームを管理することで、送信帯域を改善することが考えられる。
【0007】
このとき、中継装置で障害が発生すると、障害が発生した中継装置に対向する中継装置で障害を検出することができず、種々の不具合が発生する場合があった。例えば、通信装置(端末)間の通信が切断するまでに時間が掛かるという不具合や、中継装置にセッションが残ったままになり同一ポートでの通信が阻害される不具合や、メモリ不足が生じるという不具合等が発生する場合がある。
【0008】
本発明は、上述の課題を解決するために成されたものであり、シーケンス番号を用いたストリーム型の通信を行う環境下において、対向する中継装置の障害の発生を検知できる技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明は、上記の課題の少なくとも一部を解決するためになされたものであり、以下の形態または適用例として実現することができる。
[形態1]
第1の端末と第2の端末との間で行われるTCPに従うパケットの伝送を、少なくとも第1の中継装置及び第2の中継装置を介して中継するために配置される前記第1の中継装置であって、
前記第1の中継装置と前記第1の端末との間で形成されるTCPセッション及び前記第2の中継装置と前記第2の端末との間で形成されるTCPセッションとは異なる所定のTCPセッションを前記第1の中継装置と前記第2の中継装置との間に形成し、前記第1の中継装置から前記第2の中継装置に向けて送信されたパケットの再送状況に基づいて、送信帯域を制御する帯域制御部と、
当該パケットのTCPヘッダに、前記第1の中継装置と所定のネットワークを介した第2の中継装置との間でのパケットのやり取りであることを示すためのマークを付与するオプション部と、
前記第2の中継装置から送信されるパケットのTCPヘッダに付与される、前記第1と第2の中継装置間でのデータのやり取りであることを示すためのマークに基づいて前記所定のTCPセッションを用いた前記第2の中継装置が提供するパケット転送機能に関する状態を検知する検知部と、を備え、
前記オプション部によって前記マークを付与する場合に、前記第1の端末から受信した前記第2の端末宛へのパケットを前記帯域制御部で制御される送信帯域によって送信する、ことを特徴とする第1の中継装置。
この形態の第1の中継装置によれば、パケットの再送状況に基づいて、送信帯域を制御できると共に、オプション部によってパケットのTCPヘッダにマークを付与する場合に第1の端末から受信した第2の端末宛てへのパケットを帯域制御部で制御される送信帯域によって送信できる。
また、TCPヘッダに付与されるマークに基づいて検知部によって、所定のTCPセッションを用いた第2の中継装置が提供するパケット転送機能に関する状態を検知できる。
[形態2]
形態1記載の第1の中継装置であって、
第1の端末と第1のネットワークを介して接続される第1のネットワークインタフェースと、
第2の中継装置と前記所定のネットワークである第2のネットワークを介して接続される第2のネットワークインタフェースと、
パケットを前記第1のネットワークインタフェースまたは前記第2のネットワークインタフェースを介して転送する転送部と、をさらに有する第1の中継装置。
[形態3]
形態1または2記載の第1の中継装置であって
、
前記検知部により前記第2の中継装置から送信されて受信したパケットに前記マークが付与されていないと検知した場合、前記第1の中継装置は、前記受信したパケットを前記第1の端末にパススルーによる転送あるいは前記第1の端末及び第2の端末に対してリセット信号の送信を行い、
前記検知部により前記第2の中継装置から送信されて受信したパケットに前記マークが付与されていると検知した場合、前記第1の中継装置は、前記マークを削除して前記受信したパケットを前記第1の端末に転送する、第1の中継装置。
[形態4]
形態3に記載の第1の中継装置であって、
前記第1と第2の中継装置間でのデータのやり取りは、前記所定のセッションである高速化TCPセッションを用いたパケット転送であり、
前記第2の中継装置の状態とは、前記高速化TCPセッションを用いたパケット転送機能に関する状態である、第1の中継装置。
[形態5]
形態1から4までのいずれか一つに記載の第1の中継装置であって、
前記第1の端末から受信した前記第2の端末宛へのパケットは、前記第1の端末と第2の端末との、前記受信したパケットがTCPコネクション確立要求を行うためのSYNパケットまたはTCPコネクション確立要求を行うためのSYNパケットに対する確認応答パケットである、第1の中継装置。
[形態6]
形態3、形態4、形態3又は形態4に従属する形態5のいずれか一つに記載の第1の中継装置であって、
前記第1の端末から受信し前記帯域制御部で制御される送信帯域により送信されるパケットのTCPヘッダに含まれる確認応答番号から所定の値を減算し、前記検知部によりTCPヘッダに前記マークが含まれていたと検知された前記第2の中継装置からのパケットのTCPヘッダに含まれるシーケンス番号に所定の値を加算するTCPヘッダ更新部をさらに有する、第1の中継装置。
[形態7]
第1の端末と第2の端末との間で行われるTCPに従うパケットの伝送を、少なくとも第1の中継装置及び第2の中継装置を介して中継するために配置される前記第1の中継装置であって、
前記第1の中継装置と前記第1の端末との間で形成されるTCPセッション及び前記第2の中継装置と前記第2の端末との間で形成されるTCPセッションとは異なる所定のTCPセッションを前記第1の中継装置と前記第2の中継装置との間に形成し、前記第1の中継装置から前記第2の中継装置に向けて送信されたパケットの再送状況に基づいて、送信帯域を制御する帯域制御部と、
当該パケットのTCPヘッダに、前記第1の中継装置と所定のネットワークを介した第2の中継装置との間でのパケットのやり取りであることを示すためのマークを付与するオプション部と、
前記第2の中継装置から送信されるパケットのTCPヘッダに付与される、前記第1と第2の中継装置間でのデータのやり取りであることを示すためのマークと前記第2の中継装置から送信されるパケットのTCPヘッダに含まれる確認応答番号との少なくとも一方に基づいて前記第2の中継装置の障害を検知する検知部と、
前記第1の端末から受信し前記帯域制御部で制御される送信帯域により送信される前記パケットのTCPヘッダに含まれる前記確認応答番号から所定の値を減算し、前記TCPヘッダに前記マークが含まれていたと前記検知部により検知された前記第2の中継装置からの前記パケットのTCPヘッダに含まれるシーケンス番号に所定の値を加算するTCPヘッダ更新部と、を
備え、
前記第1の中継装置は、
前記オプション部によって前記マークを付与する場合に、前記第1の端末から受信した前記第2の端末宛へのパケットを前記帯域制御部で制御される送信帯域によって送信し、
受信したパケットによって前記検知部が前記第2の中継装置の障害の発生を検知した場合に、前記受信したパケットがTCPコネクション確立要求を行うためのSYNパケットである場合は、パススルーにより前記受信したデータの転送を前記第1の端末に行う、第1の中継装置。
この形態の第1の中継装置によれば、TCPヘッダに付与されるマークとTCPヘッダに含まれる確認応答番号との少なくとも一方に基づいて検知部によって第2の中継装置の状態を検知できる。
[形態8]
第1の端末と第2の端末との間で行われるTCPに従うパケットの伝送を、少なくとも第1の中継装置及び第2の中継装置を介して中継するために配置される前記第1の中継装置であって、
前記第1の中継装置と前記第1の端末との間で形成されるTCPセッション及び前記第2の中継装置と前記第2の端末との間で形成されるTCPセッションとは異なる所定のTCPセッションを前記第1の中継装置と前記第2の中継装置との間に形成し、前記第1の中継装置から前記第2の中継装置に向けて送信されたパケットの再送状況に基づいて、送信帯域を制御する帯域制御部と、
当該パケットのTCPヘッダに、前記第1の中継装置と所定のネットワークを介した第2の中継装置との間でのパケットのやり取りであることを示すためのマークを付与するオプション部と、
前記第2の中継装置から送信されるパケットのTCPヘッダに付与される、前記第1と第2の中継装置間でのデータのやり取りであることを示すためのマークと前記第2の中継装置から送信されるパケットのTCPヘッダに含まれる確認応答番号との少なくとも一方に基づいて前記第2の中継装置の障害を検知する検知部と、
前記第1の端末から受信し前記帯域制御部で制御される送信帯域により送信される前記パケットのTCPヘッダに含まれる前記確認応答番号から所定の値を減算し、前記TCPヘッダに前記マークが含まれていたと前記検知部により検知された前記第2の中継装置からの前記パケットのTCPヘッダに含まれるシーケンス番号に所定の値を加算するTCPヘッダ更新部と、を
備え、
前記第1の中継装置は、
前記オプション部によって前記マークを付与する場合に、前記第1の端末から受信した前記第2の端末宛へのパケットを前記帯域制御部で制御される送信帯域によって送信し、
受信したパケットにより、前記検知部が前記第2の中継装置の障害の発生を検知した場合に、前記受信したデータがTCPコネクション確立要求を行うためのSYNパケットに対する確認応答パケットを含む場合は、パススルーにより前記受信したデータの転送を前記第1の端末に行う、第1の中継装置。
この形態の第1の中継装置によれば、TCPヘッダに付与されるマークとTCPヘッダに含まれる確認応答番号との少なくとも一方に基づいて検知部によって第2の中継装置の状態を検知できる。
[形態9]
形態7又は形態8に記載の第1の中継装置であって、
第1の端末と第1のネットワークを介して接続される第1のネットワークインタフェースと、
第2の中継装置と前記所定のネットワークである第2のネットワークを介して接続される第2のネットワークインタフェースと、
パケットを前記第1のネットワークインタフェースまたは前記第2のネットワークインタフェースを介して転送する転送部と、をさらに有する第1の中継装置。
【0010】
[適用例1]シーケンス番号を用いたストリーム型の通信によってデータを伝送する2つの端末と、前記2つの端末の伝送路上に直列に配置され前記2つの端末間のデータを中継するための第1と第2の中継装置と、を有するネットワークに配置される第1の中継装置であって、
受信したデータの転送を行うための転送制御部と、
対向する前記第2の中継装置に障害が発生したことを検知する検知部と、を備え、
前記転送制御部は、
前記受信したデータの転送を行う転送部と、
前記第2の中継装置の障害の発生を検知するために前記受信したデータを加工する加工部であって、(i)前記第2の中継装置に向けてデータを転送する場合に、転送するデータに前記第1と第2の中継装置間でのデータのやり取りであることを示すためのマークをデータに付与するオプション部と、(ii)データを対向する前記端末に送信する場合に、送信元の前記端末から送信されるデータに付与されているシーケンス番号に所定値を加算する加算部と、(iii)データを対向する前記端末から受信した場合に、前記端末から送信されたデータに確認応答番号が付与されているときに、前記確認応答番号に対し前記所定値を減算する減算部と、を有する加工部と、を有し、
前記検知部は、前記マークと前記確認応答番号の少なくともいずれか一方に基づいて対向する前記第2の中継装置の障害の発生を検知する、第1の中継装置。
【0011】
適用例1に記載の第1の中継装置によれば、加工部を有することで検知部がマークと確認応答番号の少なくともいずれか一方に基づいて対向する第2の中継装置の障害の発生を容易に検知できる。
【0012】
[適用例2]適用例1に記載の第1の中継装置であって、
前記検知部は、前記第2の中継装置から送信されて受信したデータに前記マークが付与されていない場合に、前記第2の中継装置の障害の発生を検知する、第1の中継装置。
適用例2に記載の第1の中継装置によれば、受信したデータにマークが付与されているか否かを判別することで第2の中継装置の障害の発生を容易に検知できる。
【0013】
[適用例3]適用例1に記載の第1の中継装置であって、
前記検知部は、前記第2の中継装置から送信されて受信したデータのうちの前記確認応答番号が、本来受信すべき番号から前記所定値を加算した番号である場合に、前記第2の中継装置の障害の発生を検知する、第1の中継装置。
適用例3に記載の第1の中継装置によれば、受信したデータのうちの前記確認応答番号が、本来受信すべき番号から前記所定値を加算した番号であるか否かを判別することで第2の中継装置の障害の発生を容易に検知できる。
【0014】
[適用例4]適用例1に記載の第1の中継装置であって、
前記検知部は、前記第2の中継装置から送信されて受信したデータに前記マークが付与されていない場合であり、かつ、前記受信したデータのうちの前記確認応答番号が、本来受信すべき番号から前記所定値を加算した番号である場合に、前記第2の中継装置の障害の発生を検知する、第1の中継装置。
適用例4に記載の第1の中継装置によれば、障害発生の検知をマークと確認応答番号の2つの要素により行なうことで、障害発生検知の精度を向上できる。
【0015】
[適用例5]適用例1乃至適用例4のいずれか一つに記載の第1の中継装置であって、
前記2つの端末はTCPを用いて通信を行い、
前記転送制御部は、
受信したデータによって前記検知部が前記第2の中継装置の障害の発生を検知した場合に、前記受信したデータがTCPコネクション確立要求を行うためのSYNパケットを含む場合は、前記加工部の機能を用いることなく前記受信したデータの転送を行う、第1の中継装置。
適用例5に記載の第1の中継装置によれば、障害発生を検知した場合でも、データ通信を継続できる。
【0016】
[適用例6]適用例1乃至適用例5のいずれか一つに記載の第1の中継装置であって、
前記2つの端末はTCPを用いて通信を行い、
前記転送制御部は、
受信したデータによって前記検知部が前記第2の中継装置の障害の発生を検知した場合に、前記受信したデータがTCPコネクション確立要求を行うためのSYNパケットに対する確認応答パケットを含む場合は、前記加工部の機能を用いることなく前記受信したデータの転送を行う、第1の中継装置。
適用例6に記載の第1の中継装置によれば、障害発生を検知した場合でも、データ通信を継続できる。
【0017】
なお、本発明は、種々の態様で実現することが可能である。例えば、上記に記載の第1の中継装置に限らず、第1の中継装置の制御方法、第1の制御装置の機能や、制御方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記憶媒体、第1と第2の中継装置及び第1と第2の通信装置を備えたネットワークシステム等の態様で実現することができる。
【発明を実施するための形態】
【0019】
次に、本発明の実施の形態を以下の順序で説明する。
A.参考例:
B.実施例:
C.変形例:
【0020】
A.参考例:
実施例を説明する前に、理解の容易のために本発明を適用していない参考例について説明する。
図1は、参考例のネットワークシステム5wを説明するための図である。ネットワークシステム5wは、端末としての第1の通信装置20wと、端末としての第2の通信装置21wと、第1の中継装置10wと、第2の中継装置11wと、を備える。第1と第2の通信装置20w,21wは、第1と第2の中継装置10w,11wとインターネットを介してデータ通信を実現させている。
【0021】
ネットワークシステム5wにおいて、第1の通信装置20wと第1の中継装置10wとの間のデータ通信、及び、第2の通信装置21wと第2の中継装置との間のデータ通信はTCPセッションで管理されている、また、ネットワークシステム5wにおいて、第1の中継装置10wと第2の中継装置11wとの間のデータ通信は、中継装置10w,11w間の固有のTCPセッション(「高速化TCPセッション」ともいう。)として中継装置10w、11wが管理している。
【0022】
第1と第2の中継装置10w,11w間の高速化TCPセッションでは、第1の通信装置20wや第2の通信装置21wから送信されるデータに付与されたシーケンス番号(「元のシーケンス番号」ともいう。)に一定の値を加算したシーケンス番号(「中継装置間シーケンス番号」ともいう。)が用いられる。例えば、第2の通信装置21wから送信されたデータに付与されているシーケンス番号に対し、第2の中継装置11wは一定の値を加算する。そして、加算したシーケンス番号をデータに付与して第1の中継装置10wにデータを送信する。また、中継装置10w,11wから通信装置20w,21wにデータを転送する場合は、中継装置間シーケンス番号から加算された値を減算して元のシーケンス番号に戻す。また、第1と第2の中継装置10w,11w間の高速化TCPセッションでは、中継装置10w,11w間での通信であることを識別するためのTCPオプションをデータに付与する。TCPオプションは、中継装置10w,11wから通信装置20w,21wにデータが送信される際に、送信されるデータから削除される。
【0023】
ここで、第2の中継装置11wに障害が発生した場合(障害発生時)を考える。ここで、「障害の発生」とは、データ(パケット)を転送する機能は正常であるが、高速化TCPセッションを用いてデータを転送する機能に異常が生じた場合を指す。すなわち、「障害の発生」とは、第2の中継装置11wが元のシーケンス番号に一定の値を加算できない状態、又は、第2の中継装置11wがTCPオプションのデータへの付与及び削除ができない状態をいう。
【0024】
障害発生時において、第1の通信装置20wから送信されたデータのシーケンス番号に対し、第1の中継装置10wは一定の値を加算して中継装置間シーケンス番号が付与されたデータを第2の中継装置11wに送信する。第2の中継装置11wは受信したデータに付与された中継装置間シーケンス番号を処理することなく第2の通信装置21wにデータを送信する。第2の通信装置21wは、受信したデータのシーケンス番号がTCPセッションにおけるシーケンス番号(元のシーケンス番号)とは異なっているため、受信したデータを不正なデータとして認識する。そして、第2の通信装置21wは、TCPセッションで用いられるシーケンス番号(元のシーケンス番号)とACKを送信する。しかしながら、第1の中継装置10wでは第2の通信装置21wから送信されたシーケンス番号を認識できず第1の通信装置20wにデータを転送することができない。すなわち、第1と第2の通信装置20w,21w間における通信の継続や、セッションの切断ができないという問題が発生する。
【0025】
B.実施例:
B−1.ネットワークシステム5の構成:
図2は、本発明の実施例としてのネットワークシステム5を説明するための図である。
図2に示すように、ネットワークシステム5は、端末としての第1と第2の通信装置454,455と、第1と第2の通信装置454,455間のデータ通信を中継する第1と第2の中継装置441,442と、を備える。第1と第2の中継装置441,442は、第1と第2の通信装置454,455の伝送路上に直列に配置されている。第1と第2の通信装置454,455はTCPを用いてデータ(パケット)通信を行う。なお、第1と第2の中継装置441,442との間にはインターネット(図示せず)が存在する。
【0026】
第1の中継装置441は、外部機器(例えば第1の通信装置454)との間でデータの受信及び送信を行う入出力インタフェース41,42と、受信したデータの転送を制御するための転送制御部44と、他の中継装置442の障害を検知するための検知部46と、を備える。なお、第2の中継装置442の構成も同様の構成であるため、内部構成の図示は省略すると共に説明を省略する。
【0027】
転送制御部44は、送受信するデータに加工等を施すための加工部48と、データの転送を行う転送部49と、を備える。転送部49は、受信したデータに付与されているIPアドレス等に基づいてデータの転送を行う。
【0028】
加工部48は、オプション部48aと、加算部48bと、減算部48cと、を備える。オプション部48aは、対向する第2の中継装置442に向けてデータを転送する場合に、転送するデータに第1と第2の中継装置間でのデータのやり取りであることを示すためのマークをデータに付与する。本実施例では、このマークはTCPヘッダのTCPオプションを使用している。加算部48bは、データを対向する通信装置(ここでは、第1の通信装置454)に送信する場合に、送信元の通信装置(ここでは、第2の通信装置455)から送信されるデータに付与されているシーケンス番号(元のシーケンス番号)に所定値を加算する。所定値は任意の値を選択可能であり、本実施例では、1000000を元のシーケンス番号に加算する。減算部48cは、データを対向する通信装置(ここでは、第1の通信装置454)から受信した場合に、通信装置から送信されたデータに付与されている確認応答番号に対し所定値(本実施例では、1000000)を減算する。また、第1と第2の中継装置441,442は、中継装置441,442間の固有の通信を管理するためのセッション管理テーブル(図示せず)を備える。
【0029】
なお、加工部48は、第1と第2の中継装置441,442間でのデータ通信を高速に行なうための機能を有していても良い。例えば、国際公開番号WO2011/033894(国際出願日:2010年8月19日)に開示の内容を取り込んでも良い。例えば、第1と第2の中継装置441,442の加工部48は、データの再送状況に基づいてデータを送信するために送信帯域を制御する帯域制御部を備えても良い。帯域制御部を備える場合、加工部48が正常に機能している場合は、転送部49は制御された送信帯域に従って、データを転送する。
【0030】
検知部46は、TCPオプションと確認応答番号の少なくともいずれか一方に基づいて対向する第2の中継装置442の障害の発生を検知する。また、例えば、検知部46によって検知された障害の発生は、図示しないサーバに障害発生情報として送信される。そして、サーバが、障害発生情報の解析や、外部への報知等の処理を行う。
【0031】
図3は、実施例で用いられるTCPヘッダを示す図である。
図3に示すTCPヘッダはTCPで定められている通常のヘッダ構成である。フィールド101には、送信元ポート番号及び宛先ポート番号が格納される。フィールド102には、シーケンス番号が格納される。フィールド103には、確認応答番号(ACK番号)が格納される。フィールド104には、ヘッダ長、ACKフラグ等の各種フラグ、ウィンドウサイズ等の情報が格納される。フィールド105には、チェックサム、緊急ポインタが格納される。フィールド106には、オプション種別、オプション長、オプション値が格納される。詳細には、フィールド106には、MSS(Maximum Segment Size)に関する情報が格納される。フィールド107は、オプション種別、オプション長、オプション値(バージョン番号)が格納される。詳細には、第1と第2の中継装置441,442間でのデータ通信の際にデータに付与されるTCPオプションに関する情報が格納される。フィールド108は、データフィールドである。
【0032】
図4は、ネットワークシステム5におけるデータ通信時のTCPヘッドの変化について説明するための図である。
図4は、コネクション確立時(3ウェイ・ハンドシェイク時)に行なわれる通信の一部を例として示している。第1の通信装置454は、端末間で実行される通常のTCPで通信を開始する(ステップS30)。例えば、シーケンス番号(Seq♯)10000でSYNパケットを送信する。第1の中継装置441のオプション部48aは、受信したデータにTCPオプションを付与し、転送部49がデータを第2の中継装置442に送信する(ステップS32)。第2の中継装置442のオプション部48aは、受信したデータからTCPオプションを外し、第2の中継装置の加算部48bは、受信したデータのシーケンス番号に1000000を加算する(ステップS33)。そして、処理後のデータを転送部49が第2の通信装置455に送信する(ステップS33)。
【0033】
第2の通信装置455は、通常のTCP処理を行い、受信したデータ中のシーケンス番号に対して次に期待するシーケンスをACK番号に付与して送信する(ステップS34)。本実施例では、ACK番号はステップS30で送信された元のシーケンス番号に所定値1000000と1を加算した値となる。第2の中継装置442の減算部48cは、送信元の第2の通信装置455から送信されたデータのACK番号から所定値である1000000を減算することで、元のシーケンスと整合が取れるように処理する(ステップS35)。また、第2の中継装置442のオプション部48aは、データに対しTCPオプションを付与する(ステップS35)。そして、処理後のデータを第2の中継装置442の転送部49が第1の中継装置441に送信する(ステップS35)。第1の中継装置441のオプション部48aは、第2の中継装置442から受信したデータのTCPオプションを外し、元のストリームと整合させる(ステップS36)。また、第1の中継装置441は、受信したデータのシーケンス番号に所定値である1000000を加算する(ステップS36)。そして、第1の中継装置441の転送部49は、処理後のデータを第1の通信装置454に送信する(ステップS36)。なお、図示は省略するが、ステップS36の後、第1の中継装置441は、受信したSYN/ACKパケットのACK番号をシーケンス番号としてACKパケットを第1の中継装置441に送信する。そして、第1の中継装置441及び第2の中継装置442の加工部48は、それぞれACKパケット対し所定の処理を施す。最終的には、第2の通信装置455がACKパケットを受信してコネクションが確立される。
【0034】
理解の容易にために、一般的に行なわれる3ウェイ・ハンドシェイクの処理について説明する。
図5は、通常行なわれる3ウェイ・ハンドシェイクの処理フローである。すなわち、
図5は、本発明を適用しない場合の3ウェイ・ハンドシェイク時の一般的な処理フローである。第1の通信装置454は、第2の通信装置455に対して任意のシーケンス番号A(Aには任意の番号が入力される。)でSYNパケットを送信する(ステップS40)。第2の通信装置455は、SYNパケットに対する応答として、任意のシーケンス番号B(BにはAとは異なる任意の番号が入力される。)を用いて、受信したシーケンス番号Aに1を加算した番号をACK番号に設定してSYN/ACKパケットを第1の通信装置454に送信する(ステップS41)。第1の通信装置454は、受信したSYN/ACKパケットに対して、SYNパケットで用いたシーケンス番号Aに1を加算した値(すなわち、ステップS41で送信されたACK番号)をシーケンス番号とする(ステップS42)。また、第1の通信装置454は、ステップS41で送信されたシーケンス番号Bに1を加算した値(B+1)をACK番号とする(ステップS42)。そして、シーケンス番号とACK番号を付与したデータを第2の通信装置455に送信する(ステップS42)。これにより、第1と第2の通信装置454,455間でコネクションが確立される。
【0035】
図6は、ネットワークシステム5のコネクション確立後の通信を説明するための図である。
図6では、第1の通信装置454から送信されるデータ量は1460バイトと仮定する。第1の通信装置454は、所定のシーケンス番号(本実施例では、シーケンス番号2001)を付してデータを第1の中継装置441に送信する(ステップS50)。第1の中継装置441は、受信したデータにTCPオプションを付与して第2の中継装置442にデータを送信する(ステップS51)。TCPオプションをデータに付与することで、通常のTCPを用いた通信と区別することができる。第2の中継装置442は、第1の中継装置442から送信されたデータを受信すると、受信したデータからTCPオプションを外すと共に、シーケンス番号に所定値(本実施例では1000000)を加算する(ステップS52)。そして、第2の中継装置442は、処理後のデータを第2の通信装置455に送信する(ステップS52)。
【0036】
第2の通信装置455は、次に受信を期待する番号に所定値(本実施例では1000000)が加算された状態のACK番号を付与したデータを第2の中継装置442に送信する(ステップS53)。第2の中継装置442は、第2の通信装置455から送信されたデータを受信すると、受信したデータに対しTCPオプションを付与すると共に、確認応答番号から所定値(本実施例では1000000)を減算する(ステップS54)。これにより、ステップS50で送信された元のシーケンス番号に対するACK番号となる。そして、第2の中継装置442は、処理後のデータを第1の中継装置441に送信する(ステップS54)。第1の中継装置441は、第2の中継装置442から送信されたデータを受信すると、受信したデータからTCPオプションを外すと共に、シーケンス番号に所定値(本実施例では1000000)を加算する(ステップS55)。そして、第1の中継装置441は、処理後のデータを第1の通信装置454に送信する(ステップS55)。
【0037】
ネットワークシステム5は、ステップS55以降のデータ通信(ステップS56〜S58)ついても、同様の処理を行う。すなわち、ステップS56の動作はステップS50の動作と同様であり、ステップS57の動作はステップS51の動作と同様であり、ステップS58の動作はステップS52の動作と同様である。
【0038】
なお、以降において、ネットワークシステム5の第1と第2の中継装置441,442での各場面での障害発生の検知方法について詳細に説明する。
【0039】
B−2.障害発生の検知について:
B−2−1.3ウェイ・ハンドシェイクにおける障害発生の検知:
図7は、3ウェイ・ハンドシェイク時の障害発生の検知について説明するための図である。すなわち、
図7は、3ウェイ・ハンドシェイク時において、第1の中継装置441と第2の中継装置442のいずれかに障害(詳細には、加工部48の障害)が発生した場合の障害発生の検知方法について説明するための図である。
【0040】
TCPでは、コネクションを確立する際、SYNパケットに対してSYN/ACKパケットが返信され、SYN/ACKパケットに対してACKパケットを返信することでコネクションが確立される。詳細には以下に記載する工程によりコネクションが確立される。
・ステップS60:第1の通信装置454から第1の中継装置441にSYNパケットを送信する。
・ステップS61:TCPオプションをデータに付与して第1の中継装置441から第2の中継装置442にデータを送信する。
・ステップS62:TCPオプションをデータから外すと共に、シーケンス番号に所定値である1000000を加算して第2の中継装置442から第2の通信装置455にデータを送信する。
・ステップS63:第2の通信装置455から第2の中継装置442にSYN/ACKを送信する。ACK番号は受信したシーケンス番号に1を加算する。
・ステップS64:TCPオプションをデータに付与すると共に、ACK番号から所定値である1000000を減算して第2の中継装置442から第1の中継装置441にデータを送信する。
・ステップS65:TCPオプションをデータから外すと共に、シーケンス番号に所定値である1000000を加算して第1の中継装置441から第1の通信装置454にデータを送信する。
・ステップS66:受信したACK番号をシーケンス番号とし、受信したシーケンス番号に1を加算し、ACKを第1の通信装置454から第1の中継装置441に送信する。
・ステップS67:TCPオプションをデータに付与して第1の中継装置441から第2の中継装置442にデータを送信する。
・ステップS68:TCPオプションをデータから外すと共に、シーケンス番号に所定値である1000000を加算して第2の中継装置442から第2の通信装置455にデータを送信する。
【0041】
ここで、
図7に示す各地点60p,61p,64p,65p,66p,67pにおいて障害が発生した場合の障害検知方法の概略は以下の通りとなる。
【0042】
・地点60pでの障害発生時(第1の障害検知態様):
SYNパケットにTCPオプションが付与されていないため、第2の中継装置442で障害検知が可能である。
・地点61pでの障害発生時(第2の障害検知態様)
SYN/ACKパケットにTCPオプションが付与されていないため、第1の中継装置441で障害検知が可能である。
・地点64pでの障害発生時(第3の障害検知態様)
SYN/ACKパケットにTCPオプションが付与されていないことと、ACK番号が減算されていないことによって、第1の中継装置441で障害検知が可能である。
・地点65pでの障害発生時(第4の障害検知態様)
ACKパケットにTCPオプションが付与されていなため、第2の中継装置442で障害検知が可能である。
・地点66pでの障害発生時(第5の障害検知態様)
ACKパケットにTCPオプションが付与されていないことと、ACK番号が減算されていないことによって、第2の中継装置442で障害検知が可能である。
・地点67pでの障害発生時(第6の障害検知態様)
再送されたSYN/ACKパケットにTCPオプションが付与されていないことと、ACK番号が減算されていないことによって、第1の中継装置441で障害検知が可能である。
【0043】
上記に挙げた各地点60p,61p,64p,65p,66p,67pでの障害発生の詳細処理フローを障害検知の実施形態として以下に詳述する。
【0044】
B−2−2.第1の障害検知態様:
図8は、3ウェイ・ハンドシェイク時の障害検知の第1の態様を説明するための図である。
図8は、第1の通信装置454がSYNパケットを送信する時点60pで、第1の中継装置441に障害が発生していた場合の処理フローである。
【0045】
第1の通信装置454がSYNパケットを送信すると、第1の中継装置441は加工部48によってSYNパケットを処理できず、SYNパケットをパススルーする(ステップS70)。第2の中継装置442の検知部46は、受信したSYNパケットにTCPオプションが付与されていないことを検知することで、第1の中継装置441の障害発生を検知できる(ステップS70a)。ステップS71以降の工程は、ネットワークシステム5の第1と第2の中継装置441,442間において、第1と第2の中継装置441,442間で用いられることが可能な固有のセッション(高速化セッション)が形成されていない為に、通常のTCPセッションによってデータを転送する。すなわち、ステップS71の次に、第2の通信装置455は、SYN/ACKパケットを第2の中継装置442に送信し、第2の中継装置442と第1の中継装置441はSYN/ACKパケットを第1の通信装置454に向けて転送する(ステップS73,S73a)。SYN/ACKパケットを受信した第1の通信装置454は、受信したSYN/ACKパケットに対して、SYNパケットで使用したシーケンス番号10000に1を加算した値(すなわち、ステップS72で送信されたACK番号)をシーケンス番号としてACKパケットを第2の通信装置455に向けて送信する(ステップS74)。第1の中継装置441と第2の中継装置442は、第1の通信装置454から送信されたACKパケットをパススルーして第2の通信装置455に転送する(ステップS75,S76)。これにより、第1の通信装置454と第2の通信装置455との間でコネクションが確立される。
【0046】
B−2−3.第2の障害検知態様:
図9は、3ウェイ・ハンドシェイク時の障害検知の第2の態様を説明するための図である。
図9では、第1の通信装置454からSYNパケットを送信する時点61pで、第2の中継装置442に障害が発生していた場合の処理フローである。
【0047】
コネクションを確立するために、第1の通信装置454からSYNパケットが第1の中継装置441に送信される(ステップS80)。第1の中継装置441は、第1の通信装置454からのSYNパケットを受信すると、SYNパケットにTCPオプションを付与し、第2の中継装置442に送信する(ステップS81)。しかしながら、第2の中継装置442は、加工部48(
図2)において所定の処理ができないため、SYNパケットをパススルーし第2の通信装置455に送信する(ステップS81a)。第2の通信装置455は、受信したSYNパケットにTCPオプションが付与されているが、第2の通信装置455はTCPオプションをサポートしておらず解釈できない為、TCPオプションを無視する(ステップS81b)。第2の通信装置455は、受信したSYNパケットに対する応答としてSYN/ACKパケットを第2の中継装置442に送信する(ステップS82)。ここで、第2の中継装置442は、第2の通信装置455から送信されたSYN/ACKパケットを加工部48で処理することなく第1の中継装置441に送信する(ステップS82a)。第1の中継装置441は、第2の中継装置442から受信したSYN/ACKパケットにTCPオプションが付与されていないことを検知することで、第2の中継装置442の障害発生を検知できる(ステップS82b)。また、ステップS82bにおいて、第1の中継装置441は、障害発生の検知後にセッション管理テーブルを削除して以降の通信をパススルーさせる。
【0048】
第1の中継装置441は、ステップS83において加工部48の機能を用いることなくSYN/ACKパケットを第1の通信装置454に送信する(パススルー)。第1の通信装置454は、受信したSYN/ACKパケットに対して、SYNパケットで使用したシーケンス番号10000に1を加算した値(すなわち、ステップS83で送信されたACK番号)をシーケンス番号としてACKパケットを第2の通信装置455に向けて送信する(ステップS84)。ステップS84では、通常のTCPセッションによってACKパケットが第1の中継装置441,第2の中継装置442,第2の通信装置455に順にパススルーによって転送される(ステップS85,S86)。これにより、第1の通信装置454と第2の通信装置455との間でコネクションが確立される。
【0049】
B−2−4.第3の障害検知態様:
図10は、3ウェイ・ハンドシェイク時の障害検知の第3の態様を説明するための図である。
図10は、第2の中継装置442が第2の通信装置455にSYNパケットを送信した地点64pで第2の中継装置442に障害が発生した場合の処理フローを示している。
【0050】
図10において、ステップS90〜ステップS92は、
図7に示すステップS60〜ステップS62と同様の処理工程であるため説明を省略する。ステップS92の後に、第2の通信装置455は、SYNパケットに対する応答としてSYN/ACKパケットを第2の中継装置442に送信する(ステップS93)。ここで、第2の中継装置442は、受信したSYN/ACKパケットをパススルーして第1の中継装置441にSYN/ACKパケットを送信する(ステップS93a)。第1の中継装置441は、受信したSYN/ACKパケットにTCPオプションが付与されていないことと、ACK番号が減算されていないことを検知することで、対向する第2の中継装置442の障害発生を検知できる(ステップS94)。本実施例では、ACK番号が減算されていないことは、第2の中継装置442の検知部46が、受信したACK番号から所定値(1000000)を減算した値が、本来受信すべき期待するACK番号であることによって判別する。対向する第2の中継装置442の障害発生を検知した後に、第1の中継装置441は、第1の通信装置454、及び、第2の中継装置442を介して第2の通信装置455にリセット(RST)パケットを送信し、以降の通信を強制的に終了しても良い。また、対向する第2の中継装置442の障害発生を検知した後に、第1の中継装置441は、受信したSYN/ACKパケットをパススルーして第1の通信装置454にSYN/ACKパケットを送信し、3ウェイ・ハンドシェイクの処理を継続しても良い。
【0051】
B−2−5.第4の障害検知態様:
図11は、3ウェイ・ハンドシェイク時の障害検知の第4の態様を説明するための図である。
図11は、第1の中継装置441がSYNパケットを第2の中継装置442に送信した地点65pで第1の中継装置441に障害が発生した場合の処理フローである。
【0052】
図11において、ステップS100〜ステップS103は、
図7に示すステップS60〜ステップS63と同様の処理工程であるため説明を省略する。第2の通信装置455から受信したSYN/ACKパケットに対し、第2の中継装置442は、TCPオプションを付与すると共に確認応答番号から所定値を減算してSYN/ACKパケットを第1の中継装置441に送信する(ステップS104)。そして、第1の中継装置441は、加工部48に障害が発生しているため、第2の中継装置442から受信したSYN/ACKパケットを加工部48で処理することなく第1の通信装置454に送信する(ステップS104a)。第1の通信装置454に送信されたSYN/ACKパケットにはTCPオプションが付与されたままであるが、第1の通信装置454は、TCPオプションを解釈できないためTCPオプションが付与されたSYN/ACKパケットを受信できる(ステップS104b)。第1の通信装置454は、受信したSYN/ACKパケットのACK番号をシーケンス番号としてACKパケットを第1の中継装置441に送信する(ステップS105)。第1の中継装置441は第1の通信装置454から送信されたACKパケットをパススルーして第2の中継装置442に送信する(ステップS105a)。第2の中継装置442は、第1の中継装置441から送信されたACKパケットにTCPオプションが付与されていないことを検知することで、対向する第1の中継装置441の障害発生を検知できる(ステップS106)。対向する第1の中継装置441の障害発生を検知した後は、第2の中継装置442は、第2の通信装置455、及び、第1の中継装置441を介して第1の通信装置454にRSTパケットを送信し、以降の通信を強制的に終了しても良い。また、対向する第1の中継装置441の障害発生を検知した後は、第2の中継装置442は、受信したACKパケットをパススルーして第2の通信装置455にACKパケットを送信することで、3ウェイ・ハンドシェイクの処理を継続しても良い。
【0053】
B−2−6.第5の障害検知態様:
図12は、3ウェイ・ハンドシェイク時の障害検知の第5の態様を説明するための図である。
図12は、第1の中継装置441がSYN/ACKパケットを第1の通信装置454に送信した地点66pで第1の中継装置441に障害が発生した場合の処理フローである。
【0054】
図12において、ステップS110〜ステップS115は、
図7に示すステップS60〜ステップS65と同様の処理工程であるため説明を省略する。ステップS115の後に、第1の通信装置454は、受信したSYN/ACKパケットのACK番号をシーケンス番号としてACKパケットを第1の中継装置441に送信する(ステップS116)。第1の中継装置441は、加工部48に障害が発生しているため、受信したACKパケットを加工部48で処理することなく第2の中継装置442に送信する(ステップS117)。第2の中継装置442は、受信したACKパケットにTCPオプションが付与されていないことと、ACK番号が減算されていないことを検知することで、対向する第1の中継装置441の障害発生を検知できる(ステップS118)。対向する第1の中継装置441の障害発生を検知した後に、第2の中継装置442は、第2の通信装置455、及び、第1の中継装置441を介して第1の通信装置454にリセット(RST)パケットを送信し、以降の通信を強制的に終了しても良い。また、対向する第1の中継装置441の障害発生を検知した後に、第2の中継装置442は、受信したSYN/ACKパケットをパススルーして第1の通信装置454にSYN/ACKパケットを送信し、3ウェイ・ハンドシェイクの処理を継続しても良い。
【0055】
B−2−7.第6の障害検知態様:
図13は、3ウェイ・ハンドシェイク時の障害検知の第6の態様を説明するための図である。
図13は、第2の中継装置442がSYN/ACKパケットを第1の中継装置441に送信した直後に第2の中継装置442に障害が発生した場合の処理フローである。
【0056】
図13において、ステップS120〜ステップS126は、
図7に示すステップS60〜ステップS66と同様の処理工程であるため説明を省略する。第1の通信装置454から送信されたACKパケットに対し、第1の中継装置441はTCPオプションを付与すると共に、ACK番号から所定値である1000000を減算してACKパケットを第2の中継装置442に送信する(ステップS127)。第2の中継装置442は、加工部48に障害が発生しているため、第1の中継装置441から受信したACKパケットを加工部48で処理することなく第2の通信装置455に送信する(ステップS128)。第2の通信装置455は、ACKパケットを受信するが受信したACKパケットのシーケンス番号が期待するシーケンス番号(シーケンス番号:1010001)とは異なるためシーケンス違いによりステップS123と同様のSYN/ACKパケットを第2の中継装置442に再送する(ステップS129)。また、第2の中継装置442は、再送されたSYN/ACKパケットをパススルーし、第1の中継装置441に送信する(ステップS129a)。第1の中継装置441は、受信したSYN/ACKパケットにTCPオプションが付与されていないことと、ACK番号が減算されていないことを検知することで、対向する第2の中継装置442の障害発生を検知できる(ステップS130)。対向する第2の中継装置の障害発生を検知した後に、第1の中継装置441は、第1の通信装置454、及び、第2の中継装置442を介して第2の通信装置455にリセット(RST)パケットを送信し、以降の通信を強制的に終了しても良い。また、対向する第2の中継装置442の障害発生を検知した後に、第1の中継装置441は、受信したSYN/ACKパケットをパススルーして第1の通信装置454にSYN/ACKパケットを送信し、3ウェイ・ハンドシェイクの処理を継続しても良い。
【0057】
B−3.コネクション確立後の障害発生の検知について:
図14は、TCPによるデータ通信中に障害が発生した場合の第1の障害検知態様を説明するための図である。
図14では、シーケンス番号10001におけるデータの第2の通信装置455への送信が完了した地点(ステップS140〜ステップS142の後の地点)140pで、第1の中継装置441に障害が発生した場合の障害検知処理フローである。なお、
図14では、シーケンス番号10001のデータに対するACKパケットについては図示を省略している。
【0058】
第1の通信装置454は、シーケンス番号10001のデータを第1の中継装置441に送信後、シーケンス番号11461のデータを第1の中継装置441に送信する(ステップS150)。第1の中継装置441は障害が発生しているため受信したデータを加工部48で処理することなく第2の中継装置442に送信する(ステップS151)。シーケンス番号11461のデータを受信した第2の中継装置442は、受信したデータにTCPオプションが付与されていないこと、ACK番号が減算されていないことを検知することで、対向する第1の中継装置441の障害を検知できる(ステップS155)。対向する第1の中継装置441の障害を検知した後に、第2の中継装置442は、第2の通信装置455、及び、第1の中継装置441を介して第1の通信装置454にリセット(RST)パケットを送信し、以降の通信を強制的に終了させても良い。また、対向する第1の中継装置441の障害発生を検知した後に、第2の中継装置442は、受信したデータをパススルーによって第2の通信装置455に送信しても良い。なお、第2の中継装置442は、受信したデータをパススルーによって第2の通信装置455に送信した場合において、第2の通信装置455は受信したデータのACK番号が、本体付加されるべき期待するACK番号に所定値である1000000を加算した値と異なるときは、シーケンスエラーと判断する。そして、第2の通信装置455は、期待するACK番号(ここでは、ACK番号20001)を第2の中継装置442,第1の中継装置441を介して第1の通信装置454に送信する。
【0059】
図15は、TCPによるデータ通信中に障害が発生した場合の第2の障害検知態様を説明するための処理である。
図15では、シーケンス番号10001のデータの第2の通信装置455への送信が完了した後(ステップS160〜ステップS162の後)に、第2の中継装置442に障害が発生した場合の障害検知フローである。
【0060】
第1の通信装置454は、シーケンス番号10001のデータを第1の中継装置441に送信後、シーケンス番号11461のデータを第1の中継装置441に送信する(ステップS170)。第1の中継装置441は、シーケンス番号11461のデータにTCPオプションを付与すると共に、ACK番号から所定値である1000000を減算して第2の中継装置442にデータを送信する(ステップS171)。第2の中継装置442は受信したデータをパススルーする(ステップS172)。第2の中継装置442からのデータを受信した第2の通信装置455は、期待したシーケンス番号(シーケンス番号1011461)とは異なるシーケンス番号が付与されたデータを受信したため、シーケンスエラーとして再送要求のACKパケットを返送する(ステップS180)。第2の中継装置442は、障害発生中の為、再送要求のACKパケットをパススルーする(ステップS181)。第1の中継装置441は、再送要求のACKパケットにTCPオプションが付与されていないことと、ACK番号が減算されていないことを検知することで、対向する第2の中継装置442の障害を検知できる(ステップS185)。対向する第2の中継装置442の障害を検知した後に、第1の中継装置441は、第1の通信装置454、及び、第2の中継装置442を介して第2の通信装置455にリセット(RST)パケットを送信し、以降の通信を強制的に終了させても良い。また、対向する第2の中継装置442の障害を検知した後に、第1の中継装置441は、受信したデータをパススルーによって第1の通信装置454に送信しても良い。なお、
図15では、第1の中継装置441は、シーケンス番号11461のデータに対するACKパケットに基づき障害発生を検知したが(ステップS185)、シーケンス番号10001のデータに対するACKパケットの送信がステップS180よりも先に処理された場合は、該ACKパケットに基づき障害発生を検知できる。
【0061】
B−4.効果:
上記のように、第1と第2の中継装置441,442は、TCPオプションとACK番号の少なくともいずれか一方に基づいて、一方の中継装置441,442が他方の中継装置441,442の障害発生を容易に検知できる。これにより、例えば、第1と第2の中継装置441,442のいずれかに障害が発生した場合に、タイムアウト等によるデータ通信の中断を待つことなく、パススルーによるデータ送信や、RSTパケットの送信等のデータ通信を進めるための処理を速やかに実行できる。
【0062】
上記実施例では、TCPオプションとACK番号に基づいて中継装置441,442の障害発生を検知している(例えば、
図10,
図12,
図13)。TCPオプションに加え、ACK番号も障害発生を検知するための判断要素に加えることで、他のネットワーク(コネクション)から誤って侵入したTCPオプションが付与されたパケットを元に、対向する中継装置441,442の障害発生を誤って検知できない可能性を低減できる。すなわち、より精度良く中継装置441,442の障害発生を検知できるネットワークシステム5を構築できる。
【0063】
また、上記実施例では、受信したデータによって検知部46が対向する中継装置441,442の障害発生を検知した場合に、障害発生を検知した中継装置441,442が受信したデータがSYNパケットを含む場合は、パススルーによって以降のデータを処理している(
図8)。これにより、3ウェイ・ハンドシェイクの処理を中断することなくコネクションを確立できる。
【0064】
また、上記実施例では、受信したデータによって検知部46が対向する中継装置441,442の障害発生を検知した場合に、障害発生を検知した中継装置441,442が受信したデータがTCPコネクション確立要求を行うためのSYNパケットに対するACKパケットを含む場合は、パススルーによって以降のデータを処理している(
図9)。これにより、3ウェイ・ハンドシェイクの処理を中断することなくコネクションを確立できる。
【0065】
ここで、上記実施例の第1の中継装置441と第2の中継装置442が課題を解決するための手段に記載の「第1の中継装置」に相当する。詳細には、上記実施例のうち、第1の中継装置441が課題を解決するための手段に記載の「第1の中継装置」に相当する場合は、第2の中継装置442が課題を解決するための手段に記載の「第2の中継装置」に相当する。また、上記実施例のうち、第2の中継装置442が課題を解決するための手段に記載の「第1の中継装置」に相当する場合は、第1の中継装置441が課題を解決するための手段に記載の「第2の中継装置」に相当する。
【0066】
C.変形例:
以上、本発明の一実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができる。例えば以下のような変形が可能である。
【0067】
C−1.第1変形例:
上記実施例の障害検知の一態様では、データにTCPオプションが付与されていないことと、ACK番号が減算されていないことを検知することで対向する中継装置441,442の障害発生を検知する態様を含んでいたが(例えば、B−2−4.第3の障害検知態様)、これに限定されるものではない。すなわち、データにTCPオプションが付与されていないことと、ACK番号が減算されていないことの少なくともいずれか一方を検知することで、一方の中継装置441,442が、他方の対向する中継装置441,442の障害発生を検知しても良い。例えば、
図10において、第1の中継装置441が受信したデータにTCPオプションが付与されていないことを検知することで、第1の中継装置441は対向する第2の中継装置442の障害発生を検知しても良い。また、例えば
図10において、第1の中継装置441が受信したデータのACK番号が所定値減算されていないことを検知することで、第1の中継装置441は対向する第2の中継装置442の障害発生を検知しても良い。すなわち、以下の変形態様の中継装置であっても良い。
【0068】
・第1の変形態様:
シーケンス番号を用いたストリーム型の通信によってデータを伝送する2つの端末と、前記2つの端末の伝送路上に直列に配置され前記2つの端末間のデータを中継するための第1と第2の中継装置と、を有するネットワークに配置される第1の中継装置であって、
受信したデータの転送を行うための転送制御部と、
対向する前記第2の中継装置に障害が発生したことを検知する検知部と、を備え、
前記転送制御部は、
前記受信したデータの転送を行う転送部と、
前記第2の中継装置の障害の発生を検知するために前記受信したデータを加工する加工部であって、(i)前記第2の中継装置に向けてデータを転送する場合に、転送するデータに前記第1と第2の中継装置間でのデータのやり取りであることを示すためのマークをデータに付与するオプション部と、を有する加工部と、を有し、
前記検知部が対向する前記第2の中継装置の障害の発生を検知するための要素として前記マークを含む、第1の中継装置。
上記第1の変形態様の第1の中継装置は、マークに基づいて対向する第2の中継装置の障害発生を検知できる。ここで、検知部は、第2の中継装置から送信されて受信したデータにマークが付与されていない場合に、第2の中継装置の障害の発生を容易に検知できる。
【0069】
・第2の変形態様:
シーケンス番号を用いたストリーム型の通信によってデータを伝送する2つの端末と、前記2つの端末の伝送路上に直列に配置され前記2つの端末間のデータを中継するための第1と第2の中継装置と、を有するネットワークに配置される第1の中継装置であって、
受信したデータの転送を行うための転送制御部と、
対向する前記第2の中継装置に障害が発生したことを検知する検知部と、を備え、
前記転送制御部は、
前記受信したデータの転送を行う転送部と、
前記第2の中継装置の障害の発生を検知するために前記受信したデータを加工する加工部であって、(i)データを対向する前記端末に送信する場合に、送信元の前記端末から送信されるデータに付与されているシーケンス番号に所定値を加算する加算部と、(ii)データを対向する前記端末から受信した場合に、前記端末から送信されたデータに付与されている確認応答番号に対し前記所定値を減算する減算部と、を有する加工部と、を有し、
前記検知部が対向する前記第2の中継装置の障害の発生を検知するための要素として前記確認応答番号を含む、第1の中継装置。
上記第2の変形態様の第1の中継装置は、確認応答番号に基づいて対向する第2の中継装置の障害発生を検知できる。ここで、検知部は、第2の中継装置から送信されて受信したデータのうち確認応答番号が、本来受信すべき番号から所定値を加算した番号である場合に、第2の中継装置の障害の発生を容易に検知できる。
【0070】
C−2.第2変形例:
上記実施例では、第1と第2の通信装置454,455はTCPによってデータ通信を行っていたが、データ通信に用いられるプロトコルはTCPに限定されるものではない。すなわち、第1と第2の通信装置454,455がシーケンス番号を用いたストリーム型の通信によってデータ通信を行う場合に、本発明を適用できる。例えば、RTCP(Real-time Transport Control Protocol)を用いたデータ通信にも本発明は適用できる。
【0071】
C−3.第3変形例:
上記実施例では、第1と第2の中継装置441,442が対向する中継装置441,442の障害発生を検知し、RSTパケットを送信することでデータ通信を中断していたが、以下のようにしてデータ通信を中断しても良い。すなわち、ネットワークシステム5に接続された制御装置を新たに備え、中継装置441,442によって障害が検知された場合に、障害を検知した中継装置が障害検知を制御装置に報知し、障害検知に関する情報を受信した制御装置がデータ通信の中断を実行しても良い。