[第1の実施の形態]
図1は、第1の実施の形態の通信システム100の全体構成を示す図である。
通信システム100は、制御装置1、送信機2、始端装置3、中継装置4、終端装置5、受信機6、制御通信線7、及びパケット通信線8を備えている。
制御装置1は、通信システム100の通信経路を制御する。例えば、通信システム100を構成する各装置に対して経路情報(パケットの転送先)を指示する。始端装置3は、送信機2から送信されたパケットが最初に通過する装置である。終端装置5は、受信機6に対して最後にパケットを送信する装置である。中継装置4は、始端装置3と終端装置5との間に設けられてパケットを転送する装置である。
図1では、簡略化して1台の中継装置4を表しているが、始端装置3と終端装置5との間に複数の中継装置4を設け、それらの複数の中継装置4を介してパケットを送信するように構成できる。また、図1に開示したように、通信システム100では、送信機2及び受信機6は、それぞれ少なくとも1台が設けられる。即ち、通信システム100は、複数台の送信機2と複数台の受信機6に対する通信が可能な構成である。
パケット通信線8は、送信機2、始端装置3、中継装置4、終端装置5、受信機6の間でパケット(後述するACKパケットを含む)を送受信するための通信回線である。このパケット通信線8で構成されるネットワークにおいて、パケットはUDPによる通信方式で送受信される。制御通信線7は、始端装置3、中継装置4、及び終端装置5と制御装置1との間の経路制御情報の通信に用いられる通信回線である。経路制御情報には、パケット情報、経路情報、通信終了情報、パケット変換情報、通信削除依頼情報などが含まれる。これらの情報の内容については後述する。
制御装置1は、制御処理部1a及び制御記憶部1bを備えている。制御処理部1aは、経路配布機能及び通信終了機能を備えている。経路配布機能は、始端装置3、中継装置4、終端装置5に対してパケットの転送先を指示する機能である。通信終了機能は、始端装置3、中継装置4、終端装置5の内の特定の装置に対して通信を終了させる機能である。制御記憶部1bには、経路配布機能の実行に用いられる情報として、経路制御表、装置位置情報が記憶されている。
始端装置3は、始端処理部3a、始端記憶部3b、及び始端転送部3cを備えている。
始端記憶部3bには、経路始端表、再送パケット表、パケット変換表、経路性能情報が記憶されている。経路始端表には始端装置3のパケット転送先が格納される。再送パケット表には、再送動作を制御する情報及び転送したパケットが含まれる。パケット変換表は、パケット内のヘッダのフィールドを書き換えるための情報を含んでいる。経路性能情報は、始端装置3の通信性能に関する情報であり、制御装置1がパケットの転送経路を決定する際に参照する情報である。
始端処理部3aには、始端処理機能、ACKパケット受信機能、経路始端表変更機能、パケット変換表更新機能、パケット再送機能、通信終了情報送信機能、通信削除機能、経路性能計測機能が設けられている。始端処理機能は、転送を開始するパケットのデータを変更する機能である。ACKパケット受信機能は、中継装置4から返信されるACKパケットを受信して処理する機能である。経路始端表変更機能は、パケット転送先を変更する機能である。パケット変換表更新機能は、パケット変換表を最新の状況に対応するように更新する機能である。パケット再送機能は、パケットロスが発生した際にパケットを再送する機能である。通信終了情報送信機能は、始端装置3が自発的に通信終了を制御装置1に送信する機能である。通信削除機能は、制御装置1から指示された対象に関する通信情報を削除する機能である。
始端転送部3cは、パケットの通信動作を制御するための通信インターフェースであるパケット処理機能と、当該機能の実行に用いられるフローテーブルとを備えている。
中継装置4は、中継処理部4a、中継記憶部4b、及び中継転送部4cを備えている。
中継記憶部4bには、経路中継表、再送パケット表、到着済みパケット表、経路性能情報が記憶されている。経路中継表には中継装置4のパケット転送先が格納される。再送パケット表には、再送動作を制御する情報及び転送したパケットが含まれる。到着済みパケット表には前段装置から転送されたパケットを識別するための履歴データが保存されている。経路性能情報は、中継装置4の通信性能に関する情報であり、制御装置1がパケットの転送経路を決定する際に参照する情報である。
中継処理部4aには、中継処理機能、ACKパケット受信機能、経路中継表変更機能、パケット再送機能、通信終了情報送信機能、通信削除機能、経路性能計測機能が設けられている。中継処理機能は、中継するパケットのデータを変更する機能である。ACKパケット受信機能は、後段の装置から返信されるACKパケットを受信して処理する機能である。経路中継表変更機能は、パケット転送先を変更する機能である。パケット再送機能は、パケットロスが発生した際にパケットを再送する機能である。通信終了情報送信機能は、中継装置4が自発的に通信終了を制御装置1に送信する機能である。通信削除機能は、制御装置1から指示された対象に関する通信情報を削除する機能である。
中継転送部4cは、パケットの通信動作を制御するための通信インターフェースであるパケット処理機能と、当該機能の実行に用いられるフローテーブルとを備えている。
終端装置5は、終端処理部5a、終端記憶部5b、及び終端転送部5cを備えている。
終端記憶部5bには、経路終端表、到着済みパケット表が記憶されている。経路終端表には終端装置5のパケット転送先が格納される。到着済みパケット表には、前段装置から転送されたパケットを識別するための履歴データが保存されている。
終端処理部5aには、終端処理機能、経路終端表変更機能、通信終了情報送信機能、通信削除機能が設けられている。終端処理機能は、受信機6に転送するパケットのデータを変更する機能である。経路終端表変更機能は、パケット転送先を変更する機能である。通信終了情報送信機能は、終端装置5が自発的に通信終了を制御装置1に送信する機能である。通信削除機能は、制御装置1から指示された対象に関する通信情報を削除する機能である。
終端転送部5cは、パケットの通信動作を制御するための通信インターフェースであるパケット処理機能と、当該機能の実行に用いられるフローテーブルとを備えている。
続いて、制御装置1、始端装置3、中継装置4、終端装置5に記憶されるデータ(テーブル、情報)及び各装置間で授受される情報の内容について説明する。
図2は、第1の実施の形態の通信システム100の始端装置3に記憶されるデータの内容を示す図である。
経路始端表3Fには始端装置3のパケット転送先が格納される。経路始端表3Fには経路始端情報3fとして、「通信識別子」、「次段装置IP」、「再送識別子」が含まれる。「通信識別子」はどの送信機2からどの受信機6に対する通信かを特定するための情報である。「次段装置IP」はパケットを転送する次段装置のアドレスである。「再送識別子」は、転送するパケットごとに付番されるパケットを特定するデータである。なお、この経路始端表3Fには複数組の経路始端情報3fである「通信識別子」、「次段装置IP」、「再送識別子」が記憶される。
再送パケット表3Gには、再送パケット情報3gとして「通信識別子」、「次段装置IP」、「再送識別子」、「残り再送回数」、「送信日時」、「パケット」が記憶される。「通信識別子」はどの送信機2からどの受信機6に対する通信かを特定するための情報である。「次段装置IP」はパケットを転送する次段装置のアドレスである。「再送識別子」は転送されるパケットごとに付番されるパケットを特定するデータである。「残り再送回数」はパケットの再送制御に使用されるカウントデータである。「送信日時」はパケットを送信した日時であり、パケットロスの発生の有無を判断するためのタイムアウト検知に用いられる。「パケット」には転送したパケットが保存される。再送時にはこの保存されたパケットが用いられる。なお、この再送パケット表3Gには複数組の再送パケット情報3g「通信識別子」、「次段装置IP」、「再送識別子」、「残り再送回数」、「送信日時」、「パケット」が記憶される。
パケット変換表3Jには、パケット変換情報3jとして「通信識別子」、「送信機IP」、「受信機IP」、「送信元ポート」、「宛先ポート」が記憶される。「通信識別子」はどの送信機2からどの受信機6に対する通信かを特定するための情報である。「送信機IP」はパケットを送信する送信機2のアドレスである。「受信機IP」はパケットを受信する受信機6のアドレスである。「送信元ポート」は送信機2のポート番号である。「宛先ポート」は受信機6のポート番号である。なお、パケット変換表3Jには、複数組のパケット変換情報3jである「通信識別子」、「送信機IP」、「受信機IP」、「送信元ポート」、「宛先ポート」が記憶される。
図3は、第1の実施の形態の通信システム100の中継装置4に記憶されるデータの内容を示す図である。
経路中継表4Fには中継装置4のパケット転送先が格納される。経路中継表4Fには経路中継情報4fとして、「通信識別子」、「次段装置IP」が含まれる。「通信識別子」はどの送信機2からどの受信機6に対する通信かを特定するための情報である。「次段装置IP」はパケットを転送する次段装置のアドレスである。なお、この経路中継表4Fには複数組の経路中継情報4fである「通信識別子」、「次段装置IP」が記憶される。
再送パケット表4Gには再送パケット情報4gとして、「通信識別子」、「次段装置IP」、「再送識別子」、「残り再送回数」、「送信日時」、「パケット」が記憶される。この構成は、図2に示す再送パケット表3Gと同じ構成であるので、詳細の説明は省略する。
到達済みパケット表4Hには到達済みパケット情報4hとして「通信識別子」、「到達済み再送識別子」が含まれる。「通信識別子」はどの送信機2からどの受信機6に対する通信かを特定するための情報である。「到達済み再送識別子」には、前段の装置から転送されたパケットに付された再送識別子が通信識別子毎に時系列で複数記憶される。なお、到達済みパケット表4Hには、到達済みパケット情報4hとして「通信識別子」、「到達済み再送識別子」が複数組記憶される。
図4は、第1の実施の形態の通信システム100の終端装置5に記憶されるデータの内容を示す図である。
経路終端表5Fには、経路終端情報5fとして、「通信識別子」、「送信機IP」、「受信機IP」、「送信元ポート」、「宛先ポート」が記憶される。この構成は、図2に示すパケット変換表3Jと同じ構成であるので、詳細の説明は省略する。
到達済みパケット表5Hには、到達済みパケット情報5hとして、「通信識別子」、「到達済み再送識別子」が含まれる。この構成は、図3に示す到達済みパケット表4Hと同じ構成であるので、詳細の説明は省略する。
図5は、第1の実施の形態の通信システム100の制御装置1に記憶されるデータの内容を示す図である。
経路制御表1Dには経路制御情報1dとして、「通信識別子」、「装置IP」、「次段装置IP」が含まれる。「通信識別子」はどの送信機2からどの受信機6に対する通信かを特定するための情報である。「装置IP」はパケット転送動作を実行する装置のアドレスである。「次段装置IP」は当該装置がパケットを転送する次段の装置のアドレスである。即ち、経路制御情報1dには、通信システム100において、パケットの転送動作を実行する装置と転送経路とを特定するデータが規定されている。なお、経路制御表1Dには複数組の経路制御情報1d「通信識別子」、「装置IP」、「次段装置IP」が含まれる。
図6は、第1の実施の形態の通信システム100の各装置間で授受されるデータの内容を示す図である。
パケット情報9aには「送信機IP」、「受信機IP」、「送信元ポート」、「宛先ポート」が含まれる。「送信機IP」は送信機2のアドレスである。「受信機IP」は受信機6のアドレスである。「送信元ポート」は送信機2のポート番号である。「宛先ポート」は受信機6のポート番号である。パケット情報9aは、始端装置3から制御装置1に送信される情報である。
経路情報9bには「通信識別子」、「次段装置IP」が含まれる。「通信識別子」はどの送信機2からどの受信機6に対する通信かを特定するための情報である。「次段装置IP」はパケットの転送先である次段の装置のアドレスである。経路情報9bは、制御装置1から始端装置3と中継装置4とに送信される。
ACKパケット9cには「通信識別子」、「再送識別子」が含まれる。「通信識別子」はどの送信機2からどの受信機6に対する通信かを特定するための情報である。「再送識別子」は、転送するパケットごとに付番されるパケットを特定するデータである。ACKパケット9cは、中継装置4から始端装置3に返信され、また終端装置5から中継装置4に返信されるデータである。
パケット変換情報9dには、「通信識別子」、「送信機IP」、「受信機IP」、「送信元ポート」、「宛先ポート」が含まれる。パケット変換情報9dに含まれる各データについては上述の内容と同様であるためその説明は省略する。パケット変換情報9dは、始端装置3から制御装置1に送信されるパケット情報9aに対応して、制御装置1から始端装置3及び終端装置5に送信されるデータである。
通信終了情報9eには「通信識別子」が含まれる。通信終了情報9eは、始端装置3、中継装置4、終端装置5から制御装置1に送信されるデータである。
通信削除依頼情報9fには「通信識別子」が含まれる。通信削除依頼情報9fは、制御装置1から始端装置3、中継装置4、終端装置5に送信されるデータである。
続いて、パケット転送動作について説明する。
図7は、第1の実施の形態の通信システム100の各装置の配置とパケット転送経路とを示す図である。
通信システム100には、制御装置1、送信機2−1〜2−2、始端装置3、中継装置4−1〜4−3、終端装置5、及び受信機6−1〜6−2が備えられている。中継装置4−1〜中継装置4−3は、始端装置3と終端装置5の間の適宜の位置に配されている。初期状態では、実線で示す送信機2−2→始端装置3→中継装置4−3→終端装置5→受信機6−2がパケット転送の経路として定められている。
ここで、送信機2−1から受信機6−1に通信を行うケースを想定する。以下に示すパケット転送動作では、制御装置1によって、点線で示す送信機2−1→始端装置3→中継装置4−1→中継装置4−2→終端装置5→受信機6−1の転送経路が選択される。なお、説明の簡略のために以下の図において、送信機2−1を「A」、送信機2−2を「B」、始端装置3を「始」、中継装置4−1〜4−3を「1」〜「3」、終端装置5を「終」、受信機6−1を「C」、受信機6−2を「D」と略記することがある。
図8は、第1の実施の形態の通信システム100の正常なパケット転送動作を示すフローチャートである。
ステップS01において、送信機2−1から受信機6−1に送信するパケットを受信すると、始端装置3は受信したパケットのデータが、初めて送信機2−1から受信機6−1に送信するパケットかどうかを判断する。初めて送信機2−1から受信機6−1に送信するパケットである場合は、ステップS02において、始端装置3はパケット情報9aを作成し、作成したパケット情報9aを制御装置1に送信する。
図9は、第1の実施の形態の通信システム100の始端装置3におけるパケット情報9aの作成方法を説明するための図である。送信機2から送信されるパケットは、IPヘッダ、UDPヘッダ、データで構成されている。始端装置3は、IPヘッダの「送信元IP」と「宛先IP」とを取り出して、それぞれパケット情報9aの「送信機IP」と「受信機IP」とに設定する。更に始端装置3は、UDPヘッダの「送信元ポート」と「宛先ポート」とを取り出して、それぞれパケット情報9aの「送信元ポート」と「宛先ポート」とに設定する。
ここで、始端装置3は、受信したパケットのデータが初めて送信機2から受信機6に送信するパケットかどうかは、パケットのIPヘッダ、UDPヘッダのデータと、パケット変換表3Jのデータとを比較することにより判断する。即ち、図9の下段に記載したように、パケットの「送信元IP」、「宛先IP」、「送信元ポート」、「宛先ポート」のそれぞれがパケット変換表3Jの「送信機IP」、「受信機IP」、「送信元ポート」、「宛先ポート」のそれぞれと同じかどうかを調べる。少なくとも1つの項目が異なっていれば、受信したパケットは、初めてのルートで送信機2から受信機6に送信するパケットであると判断される。一方、全てが同じであれば、受信したパケットは、同じルートで送信機2から受信機6に送信されたことのあるパケットであると判断される。
図8のステップS03において、パケット情報9aを受信した制御装置1は、送信機2−1から受信機6−1に送信する経路の内から最適経路を決定する。そして、このパケットについて「通信識別子」を発番する。
最適経路の決定に際しては、制御処理部1aは、制御記憶部1bにあるそれぞれの装置位置情報、それぞれの装置から収集した経路性能情報などに基づいて、例えば、パケットロス、遅延などの経路性能を利用する。そして、最適経路を決定した後、この最適経路に対応する「通信識別子」を発番して経路制御表1Dを更新する。
図10は、第1の実施の形態の通信システム100の制御装置1が作成する経路制御表を例示する図である。
経路制御表1Dの第1行及び第2行は、既に作成済みの通信識別子が0の経路を表している。即ち、始端装置3→中継装置4−3→終端装置5の経路が規定されている。経路制御表1Dの第3行乃至第5行は、今回作成した通信識別子が1の経路を表している。即ち、始端装置3→中継装置4−1→中継装置4−2→終端装置5の経路が規定されている。
ここで、新たに発番する通信識別子は、経路制御表1D内の最新の通信識別子に1を加算した値とする。但し、1を加算した値が所定の最大値を超える場合は0に置き換える。後述するように、第1の実施の形態では、通信識別子は4バイト(=32ビット)で表現する。したがって、理論上は通信識別子の最大値は232となる。なお、通信識別子の最大値は、通信システム100の構成に応じて適宜設定することができる。
そして、制御装置1はその経路制御表1Dをもとにパケット変換情報9d及び経路情報9bを作成する。図8のステップS04において、制御装置1は作成したパケット変換情報9dを始端装置3及び終端装置5に送信する。また、ステップS05において、制御装置1は作成した経路情報9bを始端装置3及び中継装置4−1、4−2に送信する。
図11は、第1の実施の形態の通信システム100の制御装置1による情報配布内容を説明するための図である。制御装置1は、始端装置3及び終端装置5に対してパケット変換情報9dを送信する。また、制御装置1は、始端装置3、中継装置4−1、中継装置4−2に対してパケット転送先を示す経路情報9bを送信する。なお、中継装置4−3は、転送経路として選択されていないため、経路情報9bは転送されない。
図12は、第1の実施の形態の通信システム100の制御装置1からパケット変換情報を受信した始端装置3及び終端装置5の処理内容を説明するための図である。始端装置3は、パケット変換情報9dを受信すると、パケット変換表3Jにパケット変換情報3jとして情報を追加する。終端装置5は、パケット変換情報9dを受信すると経路終端表5Fに経路終端情報5fとして情報を追加する。
図13は、第1の実施の形態の通信システム100の制御装置1から経路情報を受信した始端装置3及び中継装置4の処理内容を説明するための図である。始端装置3、中継装置4(4−1、4−2)は経路情報9bを受信すると、それぞれ経路始端表3F、経路中継表4Fに情報を追加する。
図14は、第1の実施の形態の通信システム100の正常なパケット転送動作を示すフローチャートである。
図14のステップS10において、始端装置3は、パケットを送信するための準備処理を実行する。
図15は、第1の実施の形態の通信システム100の始端装置3におけるパケットを送信するための準備処理を説明するための図である。
図15(1)に示すように、始端装置3はパケット変換表3Jと経路始端表3Fとを作成した後に、パケットのUDPヘッダの「宛先ポート」及び「送信元ポート」のフィールドの値(=「10000」、「10001」)を、パケット変換情報3jの「通信識別子」の値(=1)で置き換える。更に始端装置3はパケットのUDPヘッダの「長さ」フィールドの値(=「1000」)を、経路始端情報3fの「再送識別子」の値(=「0」)で置き換える。そして、始端装置3は経路始端情報3fの「再送識別子」の値を次回のパケットに対する再送識別子の値(=「1」)に更新する。
ここで、「宛先ポート」、「送信元ポート」のフィールドはそれぞれ2バイト(=16ビット)である。従って、通信識別子は4バイト(=32ビット)で表現でき、理論上は通信識別子の最大値は232となる。
図15(2)に示すように、始端装置3は、始端装置3と中継装置4−1との間で通信するためにパケットのIPヘッダの「送信元IP」を始端装置3のアドレスとし、パケットのIPヘッダの「宛先IP」を経路始端情報3fの「通信識別子」=1に対応する行の「次段装置IP」で置き換える。
図15(3)に示すように、始端装置3は、書き換えたパケット(IPヘッダ、UDPヘッダ、データ)を再送パケット情報3gの「通信識別子」=1に対応する行の「パケット」に保存する。
図14のステップS11において、始端装置3は、処理したパケットを中継装置4−1に送信する。そして、始端装置3は、送信時刻を再送パケット情報3gの「通信識別子」=1に対応する行の「送信日時」に保存する。
図14のステップS12において、中継装置4−1は、受信したパケットを転送するための準備処理を実行する。図16は、中継装置4−1におけるパケットを転送するための準備処理を説明するための図である。
図16(1)に示すように、中継装置4−1は、パケットを受信すると、到達済みパケット情報4hの「通信識別子」に、UDPヘッダの「通信識別子」と一致する「通信識別子」がない場合は、到達済みパケット表4Hに「通信識別子」と「到達済み再送識別子」とを追加する。なお、到達済みパケット情報4hの「通信識別子」に、UDPヘッダの「通信識別子」と一致する「通信識別子」がある場合の処理については、後述する。
図16(2)に示すように、中継装置4−1は、ACKパケット9cの「通信識別子」、「再送識別子」にそれぞれUDPヘッダの「通信識別子」、「再送識別子」を記録する。また中継装置4−1は、パケットのIPヘッダの「送信元IP」を中継装置4−1のアドレスとし、パケットのIPヘッダの「宛先IP」を経路中継情報4fの通信識別子=1に対応する「次段装置IP」で置き換える。
そして、図14のステップS13において、中継装置4−1は、ACKパケット9cをパケットの送信元IP(=始端装置3)に送信する。またステップS14において、中継装置4−1は、書き換えたパケットを中継装置4−2に送信する。
ステップS15において、ACKパケット9cを受信した始端装置3は、再送パケット表3Gから該当する再送パケット情報3gを削除する。図17は、始端装置3における再送パケット情報削除処理を説明するための図である。
図17に示すように、始端装置3はACKパケット9cを受信すると、ACKパケット9cの送信元IPアドレスと一致する、再送パケット情報3gの「次段装置IP」を抽出する。なお、ACKパケット9cの送信元IPアドレスは、ACKパケット9cのヘッダに設けられたデータ(不図示)で識別することができる。そして、始端装置3は、ACKパケット9cの「通信識別子」、「再送識別子」と再送パケット表3Gの「通信識別子」、「再送識別子」とが一致する再送パケット情報3gを削除する。
図14において、中継装置4−1から中継装置4−2へのパケット転送は、上述の始端装置3から中継装置4−1へのパケット転送と同様に行なわれる。なお、この中継装置4−1におけるACKパケット受信機能は、始端装置3におけるACKパケット受信機能と同様の動作である。図14のステップS16において、中継装置4−2が終端装置5に対してパケットを送信すると、終端装置5は、ステップS17において、受信したパケットを受信機6−1に転送するための準備処理を実行する。図18、図19は、終端装置5におけるパケットを転送するための準備処理を説明するための図である。
図18に示すように、終端装置5はパケットを受信すると、到達済みパケット情報5hの「通信識別子」に、UDPヘッダの「通信識別子」と一致する「通信識別子」がない場合は、到達済みパケット表5Hに「通信識別子」と「到達済み再送識別子」を追記する。到達済みパケット情報5hの「通信識別子」に、UDPヘッダの「通信識別子」と一致する「通信識別子」がある場合は、後述する。
図19に示すように、終端装置5は、パケットのUDPヘッダの通信識別子(=「送信元ポート」、「宛先ポート」フィールドのデータ)をキーワードとして経路終端表5Fをサーチする。そして該当した経路終端情報5fの「送信機IP」、「受信機IP」で、パケットのIPヘッダの「送信元IP」、「宛先IP」を置き換えて元に戻す。また、終端装置5は、経路終端情報5fの「送信元ポート」、「宛先ポート」で、UDPヘッダの「送信元ポート」、「宛先ポート」を置き換えて元に戻す。更に、終端装置5は、パケットのUDPヘッダの「長さ」を復元する。即ち、UDPヘッダの「長さ」=IPヘッダの「パケット長」−IPヘッダの「ヘッダ長」として求める。
図14のステップS19において、終端装置5は受信機6−1にパケットを送信する。なお、ステップS18において、終端装置5は、中継装置4−2にACKパケット9cを送信するが、この動作はステップS13、ステップS15において説明した動作と同様であるためその説明は省略する。
なお、上述の初期状態からの最初のパケットの送信に続く2個目以降のパケットの送信動作については、既に経路が定まっている(同じ「送信元IP」、「宛先IP」、「送信元ポート」、「宛先ポート」を持つ通信識別子が存在する)ため、始端装置3から制御装置1への新たな経路を作成するためのパケット情報9aの送信は行われない。その後の始端装置3、中継装置4−1〜4−2、終端装置5でのIPヘッダ、UDPヘッダの書き換えとパケットの転送は上述の動作と同様に行われる。
続いて、パケットロス発生時における再送動作について説明する。
パケットロスが発生したとして認識される状況としては、[ケース1]送信したパケットが宛先に届かなかった場合、[ケース2]送信したパケットは宛先に到達したが、宛先からのACKパケット9cが送信元に届かなかった場合、の2つのケースがある。以下にはこの2つのケースについて動作を説明する。
図20は、第1の実施の形態の通信システム100のパケットロス発生時における再送動作を示すフローチャートである。
ステップS21において、送信機2からパケットを受信すると、ステップS22において、始端装置3は、パケットを送信するための準備処理を実行する。この準備処理の内容は、図14のステップS10の処理と同様であるためその詳細の説明は省略する。
[ケース1の処理]
ステップS23において、始端装置3は、中継装置4−1に対してパケットを送信する。しかし、送信したパケットは、中継装置4−1に到達するまえにロスする。従って、中継装置4−1からはACKパケット9cは返送されない。ステップS24において、パケット送信後の対応動作が実行される。始端装置3は、パケット再送の要否を判断する。即ち、始端装置3は、パケットの送信日時から所定の時間内にACKパケット9cが届いていなければパケットロスが発生したとして、ステップS25において、パケットを再送する。そして、再送パケット情報3gを更新する。
図21は、再送パケット情報更新処理を説明するための図である。始端装置3は、パケット再送時に送信日時を更新する。送信日時は、再送したパケットがロスしたかどうかの判断に用いられる。始端装置3は、再送するたびに再送パケット情報3gの「残り再送回数」を1減少する。もし、「残り再送回数」が0であれば、当該再送パケット情報3gを削除する。「残り再送回数」が0でなければ、ステップS24の処理に戻って上述の処理を繰り返して実行する。
[ケース2の処理]
図20のステップS22において、始端装置3は、パケットを送信するための準備処理を実行する。ステップS31において、始端装置3は、中継装置4−1に対してパケットを送信する。パケットを受信した中継装置4−1は、ステップS32において受信したパケットを転送するための準備処理を実行する。この動作は、図14のステップS12と同様であるため、その詳細の説明は省略する。ステップS33において、中継装置4−1は、ACKパケット9cを始端装置3に送信する。ステップS34において、中継装置4−1は、中継装置4−2にパケットを転送する。
しかし、始端装置3に送信したACKパケット9cは、始端装置3に到達する前にロスする。ステップS35において、始端装置3は、パケット送信後の対応動作を実行する。始端装置3は、パケット再送の要否を判断する。即ち、始端装置3は、パケットの送信日時から所定の時間内にACKパケット9cが届いていなければパケットロスが発生したとして、ステップS36において、パケットを再送する。そして、再送パケット情報3gを更新する。この動作は、ステップS24の動作と同様であるため詳細の説明は省略する。
図20のステップS37において、中継装置4−1は、受信したパケットを受け付けるか否かの判断処理を実行する。図22は、中継装置4−1における受信したパケットを受け付けるか否かの判断処理を説明するための図である。
図22に示すように、中継装置4−1は、受信したパケットのUDPヘッダの再送識別子が、通信識別子が一致する到達済みパケット情報4hに記録されていた場合は受信したパケットを破棄する。この場合はACKパケット9cが始端装置3に届いていないため、ステップS38において、中継装置4−1は、ACKパケット9cをもう一度始端装置3に送信する。
次に、経路情報変更時の動作について説明する。経路情報変更時とは、これまで利用したパケット転送経路を変更するケースのことである。
図23は、第1の実施の形態の通信システム100の経路情報変更時における動作を示すフローチャートである。
図23の上段には、上述のように初期状態において経路情報を取得する動作が示されている。初期状態においては、始端装置3からのパケット情報に基づいて制御装置1が経路情報を配布した。これに対し、経路情報変更時とは、例えば、通信システム100を構成する一部の中継装置4、パケット通信線8などに不具合が発生したため転送経路を変更するようなケースが該当する。このときは、例えば、通信システム100の管理者の指示により、制御装置1から新たな経路情報が送信される。
図23の下段に示す経路情報変更時の動作では、中継装置4−1に不具合が生じたため中継装置4−1を使用せず、始端装置3から中継装置4−2にパケットを転送するように変更する。即ち、ステップS40において、制御装置1は中継装置4−1に経路情報9bをリセットする新たな情報を送信する。ステップS41において、制御装置1は、始端装置3、終端装置5に新たなパケット変換情報9dを送信する。また、ステップS42において、制御装置1は、始端装置3、中継装置4−2に新たな経路情報9bを送信する。新たな経路情報などを受信した装置の動作は、初期状態での動作と同様であるため、その詳細の説明は省略する。なお、上述のフローにおいては全ての装置に新たな経路情報などを送信しているが、情報が変更しない装置には経路情報などを送信しないこととすることができる。
図24は、経路情報変更時において未送信のパケットが存在する場合の動作を説明するための図である。図24に示す例では、始端装置3から中継装置4を経由せず直接終端装置5にパケットを送信するように変更されている。始端装置3は、制御装置1から新たな経路情報9bを受信すると、再送パケット表3Gの通信識別子が一致する再送パケット情報3gの「パケット」に保存されているパケットがある場合は、そのパケットについてIPヘッダの宛先IPを書換える。そして、始端装置3は、書き換えたパケットを送信する。この動作は中継装置4についても同様である。
図25は、到達済みパケット情報4h、5hのデータ更新方法を説明するための図である。到達済みパケット情報4h、5hに受信したパケットの通信識別子と同じ通信識別子がある場合、中継装置4(終端装置5)の中継処理機能(終端処理機能)は受信したパケットの再送識別子より所定数n若い再送識別子を到達済みパケット情報4h(5h)の到達済み再送識別子から削除する。図25に示す例では、n=1000の場合、1000の再送識別子を持つパケットが到達すると、到達済み再送識別子から0の再送識別子を削除して、新たに再送識別子を追加する。これによって、再送識別子の数を抑制することができる。
次に、通信終了処理について説明する。
通信終了処理は、始端装置3、中継装置4、終端装置5のいずれかが通信の異常を検知することにより、あるいは通信異常の恐れがあるため処理を続行することができないと判断されるときに、当該通信異常の通信識別子に対応する通信情報を削除する処理である。通信終了処理が開始される場合として、(1)各装置3,4,5が自発的に異常を検知する場合、(2)制御装置1が通信終了を判断する場合、の2つのケースが考えられる。
図26は、第1の実施の形態の通信システム100の通信終了処理の動作を示すフローチャートである。
始端装置3、中継装置4、終端装置5のいずれかが通信の異常を検知して通信を終了させようとする場合、ステップS45において、始端装置3、中継装置4、終端装置5のいずれかが、制御装置1に通信終了情報9eを送信する。送信する通信終了情報9eには終了させようとする通信の「通信識別子」が含まれる。通信の異常としては、例えば送信機2の異常、受信機6の異常、経路の異常による場合などである。このような異常は、例えば送信機2から受信機6への通信が当該装置3,4,5で一定時間行われているかどうかで判断することもできる。
この通信終了情報9eを受信した制御装置1は、ステップS46において、経路制御表1Dから通信終了情報9eに含まれる通信識別子と同じ通信識別子をもつ経路制御情報1dを削除する。ここで、通信終了情報は始端装置3、中継装置4、終端装置5のいずれかからの通信終了情報9e以外に、制御装置1が自発的に通信状態をチェックすることで検知することもできる。例えば、制御装置1が始端装置3、中継装置4、終端装置5に対して行ったICMP(Internet Control Message Protocol)エコー要求に対する応答の有無で検知することもできる。
ステップS47において、制御装置1は経路制御表1Dの、通信終了情報9eに含まれる通信識別子と同じ通信識別子に関連づけされている全ての始端装置3、中継装置4、終端装置5に対して通信削除依頼情報9fを送信する。通信削除依頼情報9fには通信終了情報9eに含まれる通信識別子と同じ通信識別子が記載されている。
ステップS48において、通信削除依頼情報9fを受信した始端装置3、中継装置4、終端装置5は適宜、経路始端表3F、経路中継表4F、経路終端表5F、パケット変換表3J、到着済みパケット表4H、5Hの中から同じ通信識別子をもつデータを削除する。
[複数経路を使用した通信]
次に、送信機2から受信機6への通信が複数の経路を使用する場合の動作について説明する。
図27は、第1の実施の形態の通信システム100における複数経路通信を説明するための図である。
上述のように、経路が1つだけのときには経路中の中継装置4−1が故障した場合、通信が不可能となり、経路を変更する場合であっても管理者の変更指示を入力するなどにより、多くの時間が必要となる。また、経路が1つだけの場合には通信が不能にならなくても、ネットワークの性能劣化の影響を受けやすくなる。そこで図27に示すように、送信機2−1→始端装置3→中継装置4−3→終端装置5→受信機6−1の経路を更に設け、この経路にも同じ内容のパケットを転送する。このように複数の経路を用いた通信を実現することで一つの通信経路が故障した場合であっても通信に影響がないように構成する。
図28は、通信システム100の始端装置が複数経路へ送信する方法を説明するための図である。
通信の分岐点となる始端装置3は、中継装置4−1と中継装置4−3の両方の経路にパケットを送信する。そのため、複数の中継装置4−1、4−2にパケットを送信する場合は、経路始端表3Fには宛先IPを複数記載する。
合流点となる終端装置5では、先に到達したパケットのみを受信機6に送信する。後から到達したパケットについては破棄する。この動作は、図20のケース2におけるACKパケット未到達での動作と同じである。従って、上述の機能を備えていれば新たに機能を追加する必要はない。
図29は、通信システム100の中継装置が複数経路へ送信する方法を説明するための図である。
始端装置3でなく中継装置4−1が分岐点であっても良い。このときは、通信の分岐点となる中継装置4−1は、中継装置4−2と中継装置4−3の両方の経路にパケットを送信する。そのため、複数の中継装置4−2、4−3にパケットを送信する場合は、経路中継表4Fの通信識別子=1に対応する経路中継情報4fの宛先IPには複数の宛先を記載する。
図30は、通信システム100の中継装置が合流点となる場合の送信する方法を説明するための図である。
図28と同様に、合流点となった中継装置4−2は、先に到達したパケットのみを終端装置5に送信する。後から到達したパケットについては破棄する。この動作は、図20のケース2におけるACKパケット未到達での動作と同じである。従って、上述の機能を備えていれば新たに機能を追加する必要はない。
図31は、通信システム100の始端装置が複数経路へ送信する正常なパケット転送動作を示すフローチャートである。
ステップS41において、送信機2からパケットを受信すると、ステップS42において、始端装置3は、パケットを送信するための準備処理を実行する。この準備処理の内容のうち再送パケット表3Gに保存する動作では、複数の経路に送信した場合は、複数のデータを保存する。
図32は、始端装置3における再送パケット情報の保存方法を説明するための図である。経路始端表3Fの経路始端情報3fに複数の次段装置IPが設定されている場合は、再送パケット表3Gには次段装置IPごとの再送パケット情報3gを保存する。即ち、次段装置IPのみが異なり、その他の項目は同一の複数の再送パケット情報3gが再送パケット表3Gに記憶される。
図31のステップS42における準備処理の内、その他の内容は、図14のステップS10の処理と同様であるためその詳細の説明は省略する。
図31のステップS43、S44におけるパケットの送信に対応して、ステップS45、S46においてACKパケット9cが返信されてきたときは、始端装置3は、ステップS47において、ACKパケットに合致する再送パケット情報3gを削除する。図33は、複数経路送信時の再送パケット情報3gを削除する方法を説明するための図である。
始端装置3はACKパケット9cの送信元IPアドレスと一致する「次段装置IP」をもつ、再送パケット情報3gの「次段装置IP」を抽出する。なお、ACKパケット9cの送信元IPアドレスは、ヘッダに設けられたデータ(不図示)で識別することができる。そして、始端装置3は、ACKパケット9cの「通信識別子」、「再送識別子」と一致する「通信識別子」、「再送識別子」とをもつ再送パケット情報3gを削除する。
図31のステップS51において、中継装置4−2からパケットが終端装置5に送信され、ステップS52において、中継装置4−3からパケットが終端装置5に送信される。ステップS53において、終端装置5は、先に送信されたパケットを受取り、ステップS54においてそのパケットを受信機6に送信する。そして、後から送信されたパケットを破棄する。
図34は、経路情報変更時において未送信のパケットが存在する場合の動作を説明するための図である。
複数経路の内、始端装置3→中継装置4−1→中継装置4−2→終端装置5の経路は、中継装置4−1の故障により使用されず、新たに始端装置3→終端装置5の経路が設定されている。このとき、始端装置3と中継装置4−2には、制御装置1から新たな経路情報9bが送信される。始端装置3と中継装置4−2は、経路情報9bを受信すると以下の動作を実行する。
(1)経路情報9bに含まれる通信識別子と同じ通信識別子をもつ再送パケット情報3gを抽出する。(2)抽出された再送パケット情報3gの「パケット」にある再送パケットについて、残り再送回数が最も多い再送パケット以外の再送パケットを破棄する、(2)残した再送パケットを経路情報9bに記載されている次段装置IPの数だけ複製する、(3)それぞれの再送パケットの次段装置IPを書き換える、(4)書き換えた再送パケットをそれぞれ送信する。
以上説明したように、本実施の形態の通信システム100の制御の枠組み(制御フレーム)をそのまま適用して、複数経路を使用した通信を実現することができる。
[複数の始端装置、終端装置を使用した通信]
次に、始端装置、終端装置がそれぞれ複数台備えられている場合の動作について説明する。
図35は、始端装置、終端装置がそれぞれ複数台備えられている通信システム100の構成例と転送ルートとを示す図である。図35には、実線で示す第1の転送ルートと点線で示す第2の転送ルートとが記載されている。
第1の転送ルートは、第1の経路(送信機2−1→始端装置3−1→中継装置4−1→終端装置5−1→受信機6−1)と第2の経路(送信機2−1→始端装置3−1→中継装置4−2→終端装置5−1→受信機6−1)の複数経路を使用している。第2の転送ルートは、第3の経路(送信機2−2→始端装置3−2→中継装置4−2→終端装置5−2→受信機6−2)と第4の経路(送信機2−2→始端装置3−2→中継装置4−2→中継装置4−1→終端装置5−2→受信機6−2)の複数経路を使用している。
図36は、経路制御表の内容を示す図である。
図36に示すように経路制御表1Dに経路制御情報1dを記載することによって、始端装置、終端装置がそれぞれ複数台備えられ、かつ複数経路を使用した通信であっても、パケット転送ルートは識別可能に規定することができる。
図37は、経路中継表の内容を示す図である。
経路中継表4Fでは、通信識別子ごとに宛先を規定している。従って、通信識別子により通信ごとにパケットを次装置に転送することが可能である。従って、複数の始端装置、終端装置が設けられている場合にも対応することができる。
以上説明したように、本実施の形態の通信システム100の制御の枠組み(制御フレーム)をそのまま適用して、複数の始端装置、終端装置が設けられている場合においてもパケット転送を実現することができる。
[第1の実施の形態の変形例]
第1の実施の形態では、図15(1)に示すように、パケットのUDPヘッダの「宛先ポート」及び「送信元ポート」のフィールドの値を、「通信識別子」の値で置き換えて転送した。しかしながら、この方式ではポートが書き換えられているため、始端装置3とWANとの間にNAT(ネットワーク変換装置)を設置することができない。そこで、変形例では、パケットのUDPヘッダの「チェックサム」のフィールドの値を、「通信識別子」の値で置き換える。
図38は、第1の実施の形態の変形例に係る通信システム100の始端装置3におけるパケットを送信するための準備処理を説明するための図である。
始端装置3はパケット変換表3Jと経路始端表3Fとに新たな情報を追加した後に、パケットのUDPヘッダの「チェックサム」のフィールドの値を、パケット変換情報3jの「通信識別子」の値(=1)で置き換える。更に始端装置3はパケットのUDPヘッダの「長さ」フィールドの値(=「1000」)を、パケット変換情報3jの「再送識別子」の値(=「0」)で置き換える。そして、始端装置3はパケット変換情報3jの「再送識別子」の値を次回のパケットに対する再送識別子の値(=「1」)に更新する。ここで、「チェックサム」のフィールドは2バイト(=16ビット)であるため、通信識別子は2バイト(=16ビット)で表現でき、通信識別子の最大値は216となる。
図39は、第1の実施の形態の変形例に係る通信システム100の終端装置5におけるパケットを受信機に転送するための準備処理を説明するための図である。
図39に示すように、終端装置5は、パケットのUDPヘッダの通信識別子(「チェックサム」のデータ)をキーワードとして経路終端表5Fをサーチする。そして該当した経路終端情報5fの「送信機IP」、「受信機IP」で、パケットのIPヘッダの「送信元IP」、「宛先IP」を置き換えて元に戻す。また終端装置5は、パケットのUDPヘッダの「長さ」を復元する。即ち、UDPヘッダの「長さ」=IPヘッダの「パケット長」−IPヘッダの「ヘッダ長」として求める。更に、終端装置5は、パケットのUDPヘッダの「チェックサム」を復元する。チェックサムの計算方法はRFC768に記載されている。
以上説明した第1の実施の形態の変形例によれば、パケットのUDPヘッダの「宛先ポート」及び「送信元ポート」のフィールドが書き換えられないため、WANの手前にNATを配置することができる。なお、変形例では、通信識別子の数の最大値は216となり、第1の実施の形態の通信識別子の数の最大値232よりも少ないことに留意が必要である。
次に、各装置の処理部が実行する機能の処理フローを説明する。
図40は、第1の実施の形態の通信システム100の始端装置3における始端処理機能の動作を示すフローチャートである。
ステップT01において、始端処理部3aが送信機2からパケットを受信したときは、ステップT02において、パケット変換表3Jに受信したパケットの通信識別子が存在するかどうかを調べる。即ち、受信したパケットに記載されている「送信元IP」、「宛先IP」、「送信元ポート」、「宛先ポート」と、同一の「送信機IP」、「受信機IP」、「送信元ポート」、「宛先ポート」をもつパケット変換情報3jがあったときは、通信識別子が存在すると判断する。
通信識別子が存在しない場合(T02でNO)、ステップT03において、始端処理部3aは制御装置1に対してパケット情報9aを送信する。ステップT04において、始端処理部3aは制御装置1からパケット変換情報9dを受信してパケット変換表3Jを変更(作成)する。ステップT05において、始端処理部3aは制御装置1から経路情報9bを受信して経路始端表3Fを変更(作成)する。そして、ステップT06の処理に進む。
通信識別子が存在する場合(T02でYES)、ステップT06において、以下の処理を通信識別子が一致する全ての経路にパケットを転送するまで繰り返す。
ステップT07において、始端処理部3aは受信したパケットのUDPヘッダの通信識別子として使用するフィールドの値を、パケット変換情報3jの「通信識別子」の値に書き換える。ステップT08において、始端処理部3aは受信したパケットのUDPヘッダの「長さ」をパケット変換情報3jの再送識別子に書き換える。ステップT09において、始端処理部3aは受信したパケットのIPヘッダの「送信元IP」、「宛先IP」を、始端装置3のIPとパケット変換情報3jの「次段装置IP」とに書き換える。ステップT10において、書き換えたパケットを次段装置IPに向けて送信する。ステップT11において、始端処理部3aは送信したパケット、通信識別子、次段装置IP、再送識別子、残り再送回数、送信日時を再送パケット情報3gとして再生パケット表3Gに保存する。
ステップT07〜T11の処理を繰り返して、通信識別子が一致する全ての経路にパケットを転送したとき(T06でYES)は、ステップT12において、始端処理部3aは送信機2からの次のパケットに対応する再送識別子に、経路始端情報3fの再送識別子を更新し処理を終了する。
図41は、第1の実施の形態の通信システム100の始端装置3における経路始端表変更機能の動作を示すフローチャートである。
ステップT15において、制御装置1から経路情報9bを受信したときは、ステップT16において、始端処理部3aは経路始端情報3fの新規登録かどうかを調べる。即ち、経路情報9bの通信識別子と同一の通信識別子が経路始端表3Fに無い場合は新規登録であると判断する。経路始端情報3fの新規登録である場合(T16でYES)、ステップT23において、始端処理部3aは受信した経路情報9bに基づいて経路始端表3Fにデータを追加して、処理を終了する。
経路始端情報3fの新規登録でない場合(T16でNO)、経路の変更処理を実行する。ステップT17において、始端処理部3aは経路情報9bの通信識別子と同一の通信識別子をもった経路始端情報3fのデータを削除する。ステップT18において、始端処理部3aは同一の通信識別子をもつ再送パケット情報3gの「パケット」フィールドにある再送パケットの中で残り再送回数が一番多いもの以外の再送パケットを削除する。
ステップT19において、始端処理部3aは削除せずに残した再送パケットを、経路情報9bの「次段装置IP」フィールドに格納されているIPの数だけ複製する。ステップT20において、始端処理部3aは複製した再送パケットのIPヘッダにある「宛先IP」を経路情報9bの「次段装置IP」で更新する。ステップT21において、始端処理部3aは宛先IPを更新した再送パケットを送信する。ステップT22において、始端処理部3aは、同じ通信識別子をもつ再送パケット情報3gの「次段装置IP」を更新する。ステップT23において、始端処理部3aは受信した経路情報9bに基づいて経路始端表3Fにデータを追加して、処理を終了する。
図42は、第1の実施の形態の通信システム100の始端装置3におけるパケット変換表更新機能の動作を示すフローチャートである。
ステップT25において、制御装置1からパケット変換情報9dを受信すると、ステップT26において、始端処理部3aは新たな通信識別子の登録であるかどうかを調べる。即ち、パケット変換表3Jに同一の通信識別子をもつパケット変換情報3jがない場合は、新たな通信識別子が送信されたと判断される。新たな通信識別子が送信された場合(T26でYES)は、ステップT28において、パケット変換情報9dに基づいて、パケット変換表3Jに新たなデータを追加する。新たな通信識別子で無い場合(T26でNO)は、ステップT27において、これまでのデータを削除する。そして、ステップT28において、パケット変換情報9dに基づいて、パケット変換表3Jに新たなデータを追加する。
図43は、第1の実施の形態の通信システム100の始端装置3と中継装置4におけるACKパケット受信機能の動作を示すフローチャートである。
ステップT31において、始端処理部3a(中継処理部4a)は次段の装置からACKパケット9cを受信する。ステップT32において、始端処理部3a(中継処理部4a)は、ACKパケット9cに含まれている「通信識別子」、「再送識別子」、「送信元IP」と合致する、再送パケット情報3gの「通信識別子」、「再送識別子」、「次段装置IP」を検索する。そして、合致する再送パケット情報3gを削除する。
図44は、第1の実施の形態の通信システム100の始端装置3と中継装置4におけるパケット再送機能の動作を示すフローチャートである。
ステップT35において、始端処理部3a(中継処理部4a)は、再送パケット情報3g(4g)の「送信日時」から再送間隔が経過していることを判断する。ステップT36において、始端処理部3a(中継処理部4a)は、再送パケット情報3g(4g)にあるパケットを次段の装置に送信する。ステップT37において、始端処理部3a(中継処理部4a)は、再送パケット情報3gの残り再送回数を1つ減少する。ステップT38において、残り再送回数が0かどうかを調べる。残り再送回数が0でない場合(T38でNO)、処理を終了する。残り再送回数が0の場合(T84でYES)、ステップT85において、該当する再送パケット情報3g(4g)を削除し、処理を終了する。
図45は、第1の実施の形態の通信システム100の中継装置4における中継処理機能の動作を示すフローチャートである。
ステップT41において、前段の装置からパケットを受信したときは、ステップT42において、中継処理部4aはACKパケットロスによる再送パケットかどうかを調べる。即ち、中継処理部4aは到達済みパケット表4Hの「到達済み再送識別子」に、受信したパケットに記載されている「通信識別子」、「再送識別子」と一致する「通信識別子」、「再送識別子」をもつ到達済みパケット情報4hが存在するかどうかを調べる。
ACKパケットロスによる再送パケットである場合(T42でYES)、ステップT49において、中継処理部4aは前段の装置にACKパケットを送信し、処理を終了する。
ACKパケットロスによる再送パケットでない場合(T42でNO)、ステップT43において、中継処理部4aは受信したパケットの「再送識別子」よりも所定数(n)過去の再送識別子を、通信識別子が一致する到達済みパケット情報4hの「到達済み再送識別子」から取り除く。ステップT44において、中継処理部4aは通信識別子が一致する到達済みパケット情報4hの「到達済み再送識別子」に受信したパケットの再送識別子を追加する。
ステップT45において、中継処理部4aは通信識別子が一致する全ての経路に送信するまでステップT46〜T48の処理を繰り返して実行する。
ステップT46において、中継処理部4aは受信したパケットのIPヘッダの「送信元IP」、「宛先IP」を、中継装置4自身のIPと経路中継情報4fの「次段装置IP」とに書き換える。ステップT47において、書き換えたパケットを次段装置IPに向けて送信する。ステップT48において、中継処理部4aは送信したパケット、通信識別子、次段装置IP、再送識別子、残り再送回数、送信日時を再送パケット情報4gに保存する。
そして、中継処理部4aは通信識別子が一致する全ての経路に送信するまでステップT46〜T48の処理を繰り返して実行したとき(T45でYES)は、ステップT49において、中継処理部4aは前段の装置にACKパケットを送信し、処理を終了する。
図46は、第1の実施の形態の通信システム100の中継装置4における経路中継表変更機能の動作を示すフローチャートである。
ステップT51において、制御装置1から経路情報9bを受信したときは、ステップT52において、中継処理部4aは経路中継情報4fの新規登録かどうかを調べる。即ち、経路情報9bの通信識別子と同一の通信識別子が経路中継表4Fに無い場合は新規登録であると判断する。経路中継情報4fの新規登録である場合(T52でYES)、ステップT59において、中継処理部4aは受信した経路情報9bに基づいて経路中継表4Fにデータを追加して、処理を終了する。
経路中継情報4fの新規登録でない場合(T52でNO)、経路の変更処理を実行する。ステップT53において、中継処理部4aは経路情報9bの通信識別子と同一の通信識別子をもった経路中継情報4fのデータを削除する。ステップT54において、中継処理部4aは同一の通信識別子をもつ再送パケット情報3gの「パケット」フィールドにある再送パケットの中で残り再送回数が一番多いもの以外の再送パケットを削除する。
ステップT55において、中継処理部4aは削除せずに残した再送パケットを、経路情報9bの「次段装置IP」フィールドに格納されているIPの数だけ複製する。ステップT56において、中継処理部4aは複製した再送パケットのIPヘッダにある「宛先IP」を経路情報9bの「次段装置IP」で更新する。ステップT57において、中継処理部4aは宛先IPを更新した再送パケットを送信する。ステップT58において、中継処理部4aは、同じ通信識別子をもつ再送パケット情報3gの「次段装置IP」を更新する。ステップT59において、中継処理部4aは受信した経路情報9bに基づいて経路中継表4Fにデータを追加して、処理を終了する。
図47は、第1の実施の形態の通信システム100の終端装置5における終端処理機能の動作を示すフローチャートである。
ステップT61において、前段の装置からパケットを受信したときは、ステップT62において、終端処理部5aはACKパケットロスによる再送パケットかどうかを調べる。即ち、終端処理部5aは到達済みパケット表5Hの「到達済み再送識別子」に、受信したパケットに記載されている「通信識別子」、「再送識別子」と一致する「通信識別子」、「再送識別子」をもつ到達済みパケット情報5hが存在するときは、ACKパケットロスによる再送パケットと判断する。
ACKパケットロスによる再送パケットである場合(T62でYES)、ステップT69において、終端処理部5aは前段の装置にACKパケット9cを送信し、処理を終了する。
ACKパケットロスによる再送パケットでない場合(T62でNO)、ステップT63において、終端処理部5aは受信したパケットの「再送識別子」よりも所定数(n)過去の再送識別子を、到達済みパケット情報5hの通信識別子が一致する「到達済み再送識別子」から取り除く。ステップT64において、終端処理部5aは到達済みパケット情報5hの通信識別子が一致する「到達済み再送識別子」に受信したパケットの再送識別子を追加する。
ステップT65において、終端処理部5aは受信したパケットのUDPヘッダにある「長さ」フィールドの値を復元する。即ち、UDPヘッダにある「長さ」フィールドの値=IPヘッダの「パケット長」フィールドの値−IPヘッダの「ヘッダ長」フィールドの値とする。ステップT66において、終端処理部5aはパケットのIPヘッダの通信識別子として使用していたフィールドを復元する。ステップT67において、終端処理部5aはパケットのIPヘッダを復元する。ステップT68において、終端処理部5aは書き換えたパケットを受信機6に送信する。ステップT69において、終端処理部5aは前段の装置にACKパケット9cを送信し、処理を終了する。
図48は、第1の実施の形態の通信システム100の終端装置5における経路終端表変更機能の動作を示すフローチャートである。
ステップT71において、制御装置1からパケット変換情報9dを受信すると、ステップT72において、終端処理部5aは経路終端表5fの新規登録かどうかを調べる。即ち、終端処理部5aは経路終端表5Fにパケット変換情報9dにある通信識別子と同一の通信識別子をもつ経路終端情報5fが存在しない場合、新規登録であると判断する。
経路終端情報5fの新規登録である場合(T72でYES)、ステップT74に進む。経路終端情報5fの新規登録でない場合(T72でNO)、ステップT73において、終端処理部5aは経路情報9bと同じ通信識別子をもった経路終端情報5fのデータを削除する。ステップT74において、終端処理部5aはパケット変換情報9dに基づいて経路終端表5Fにデータを追加して、処理を終了する。
図49は、第1の実施の形態の通信システム100の制御装置1における経路配布機能の動作を示すフローチャートである。
ステップT76において、制御処理部1aが始端装置3からパケット情報9aを受信すると、ステップT77において、制御処理部1aは、送信機2から受信機6までの経路で最適な経路を決定する。この経路の決定においては、制御記憶部1bの装置位置情報、各装置3、4の経路性能計測機能によって収集された情報などから得られたパケットロスや遅延などの経路性能が利用される。ステップT78において、制御処理部1aは、新たな通信識別子を発番する。制御処理部1aは、経路制御表1Dに記載されている一番大きな通信識別子よりも1だけ大きい値を新たな通信識別子として発番する。但し、新たな通信識別子は通信システム100として定まっている最大値を超えないように発番する。ステップT79において、制御処理部1aは、決定した経路と発番した通信識別子とを経路制御表1Dに追加する。
ステップT80において、制御処理部1aは、始端装置3から受信したパケット情報9aに発番した通信識別子を付加したパケット変換情報9dを作成する。ステップT81において、制御処理部1aは、作成したパケット変換情報9dを始端装置3と終端装置5とに配布する。ステップT82において、制御処理部1aは、経路制御表1Dに追加した最適な経路に基づいて始端装置3、中継装置4に送信する経路情報9bを作成する。ステップT83において、制御処理部1aは、作成した経路情報9bを始端装置3、中継装置4に配布し、処理を終了する。
図50は、第1の実施の形態の通信システム100の始端装置3、中継装置4、終端装置5における通信終了情報送信機能の動作を示すフローチャートである。
ステップT85において、始端装置3(中継装置4、終端装置5)は、経路の故障を検出する。この経路の故障は、始端装置3(中継装置4、終端装置5)において、例えば送信機2から受信機6への通信が当該装置3,4,5で一定時間行われているかどうかで判断することもできる。ステップT86において、始端装置3(中継装置4、終端装置5)は、通信終了情報9eを制御装置1に送信して、処理を終了する。
図51は、第1の実施の形態の通信システム100の制御装置1における通信終了機能の動作を示すフローチャートである。
ステップT91において、制御処理部1aは、始端装置3、中継装置4、終端装置5の異常を検知し、あるいは始端装置3、中継装置4、終端装置5から通信終了情報9eを受信する。ステップT92において、制御処理部1aは、自ら検知した、あるいは通信終了情報9eに含まれる通信識別子を取得する。そして、制御処理部1aは、自身がもつ情報のうち取得した通信識別子と一致する通信識別子をもつ情報を全て削除する。ステップT93において、制御処理部1aは、通信削除依頼情報9fを始端装置3、中継装置4、終端装置5に送信して、処理を終了する。
図52は、第1の実施の形態の通信システム100の始端装置3、中継装置4、終端装置5における通信削除機能の動作を示すフローチャートである。
ステップT95において、始端装置3(中継装置4、終端装置5)は、制御装置1から通信削除依頼情報9fを受信する。始端装置3(中継装置4、終端装置5)は、自身がもつ情報のうち取得した通信識別子と一致する通信識別子をもつ情報を全て削除して、処理を終了する。
次に通信システム100の各装置の構成を実現する例について説明する。
図53は、第1の実施の形態の通信システム100の各装置の第1の構成例を示す図である。
通信システム100は、制御装置1、複数の送信機2(2−1、・・・、2−n)、始端装置3、複数の中継装置4(4−1、4−2)、終端装置5、複数の受信機6(6−1、・・・、6−m)を備えている。送信機2から受信機6への通信はUDPを用いて行う。また、始端装置3、中継装置4、終端装置5の間の通信回線はWANで構成されている。
各装置(始端装置3、中継装置4、終端装置5)はそれぞれ処理部(始端処理部3a、中継処理部4a、終端処理部5a)とOpenFlow(転送部3c、4c、5c)とが一体で構成される。処理部は上述のパケットの再送動作に関連した処理を実行する。OpenFlowは、パケットの転送動作を担当する。ここで、OpenFlowは、OFC(Open Flow Controller)とOFSW(Open Flow Switch)とで構成され、OFCがフローテーブルを作成し、OFSWはフローテーブルを元にパケットを処理する。
フローテーブルを用いた処理内容は次のとおりである。
(1)前段の装置から始端処理部、中継処理部、終端処理部へのパケット転送処理、(2)IPアドレスが書き換えられたパケットのパケット転送処理、(3)送信されたACKパケットのパケット転送処理、(4)始端処理部、中継処理部、終端処理部と制御装置と間のパケット転送処理。
なお、通信識別子は、UDPヘッダの「宛先ポート」、「送信元ポート」のフィールドを使用しても良く、UDPヘッダの「チェックサム」を利用しても良い。
図54は、第1の実施の形態の通信システム100の各装置の第2の構成例を示す図である。
第2の構成例では、各装置は一体として構成されず、処理部(始端処理部3a、中継処理部4a、終端処理部5a)とOpenFlow(転送部3c、4c、5c)とが別体で構成されている。各装置を別体として構成することにより、処理部とOpenFlowそれぞれの機能に適合して装置のパフォーマンスを向上することができる。
図55は、第1の実施の形態の通信システム100の各装置の第3の構成例を示す図である。
第3の構成例では、処理部とOpenFlowとが一体として構成されている装置と、処理部とOpenFlowとが別体として構成されている装置とを備えている。このように、OpenFlowと始端処理部3a、中継処理部4a、終端処理部5aの機能を別々の機器として構成しても良く、同一の機器として構成しても良い。
図56は、第1の実施の形態の通信システム100の各装置の第4の構成例を示す図である。
第4の構成例では、始端装置3とWANとの間にNAT(Network address translation device)10−1が設けられ、WANと終端装置5との間にNAT10−2が設けられている。この構成では、通信識別子は、UDPヘッダの「チェックサム」を利用して転送される。従って、パケット通信において複数のプライベートアドレスと一つのグローバルアドレスの変換をポート番号を書き換えることにより実行するNAT10を本通信システムに組み込むことができる
図57は、第1の実施の形態の通信システム100の各装置の第5の構成例を示す図である。第5の構成例では、既に再送制御が実施されていた場合に本願発明を適用する構成例を示している。
図57に示す例では、再送制御は外部再送装置8が実行する。この際、通信システム100では、再送制御に関する動作を中止する。具体的には、始端装置3、中継装置4における再送パケット情報2g、3gへの再送パケットの保存を中止する。更に、中継装置4、終端装置5から送信元の装置に対してACKパケット9cを返送することを中止する。
通信システム100における再送制御に関する動作の中止は、システムの改造を行う必要が無く、設定によって実現することができる。即ち、再送パケット情報2g、3gにパケットを保存するときに「残り再送回数」に「0」を設定する。そして、中継転送部4c、終端転送部5cはACKパケットを送信する動作を遮断する。
図57に示す構成例によれば、再送制御は既存の装置を利用しつつ、パケットのサイズを変更することなく複数経路を利用した通信を容易に実現することができる。また、既存の再送制御を利用する形態と、本願の再送制御を用いる形態の両手法を混在させることもできる。
以上、各構成例について説明したが、通信システム100の構成に際しては、通信システム100のパフォーマンスが向上できる形態を選択すれば良い。さらに、各構成例を組み合わせて通信システム100のパフォーマンスが向上できる形態を実現することもできる。
以上説明した第1の実施の形態によれば、UDPを用いた場合であってもパケットロスに対応できる信頼性の高い通信を実現することができる。
第1の実施の形態によれば、中継装置を用いて再送制御を実現する際、パケットサイズを変更することなく再送制御に必要な再送識別子を設けることができる。
また、UDPパケットをTCPパケットに変換せずに通信に用いているため通信時間を短くすることができる。さらに始端装置と終端装置との間に中継装置を設けることにより、機器間の通信時間を短くすることができる。そのため、通信経路内でのパケットロスにより再送を行う場合であっても、再送に要する通信遅延を小さくすることができる。
更に、中継装置4が故障した場合であっても別の経路で通信を継続することができるためシステムの信頼性をより向上させることができる。
また、複数経路から送信されてきたパケットのうち最も早く到着したパケットを受信機に送信するためネットワークの性能劣化の影響を低減することができる。
また、再送パケットの管理を経路ごとに行うことができるため経路に分岐点が存在する場合であっても正しく再送制御を行うことができる。
更に、始端装置に接続される送信機や終端装置に接続される受信機が複数になったとしても再送制御を行うことができる。
また、制御装置が管理する始端装置と終端装置が複数になったとしても再送制御を行うことができる。
また、NAT、外部再送装置を使用していても複数経路を利用した再送制御を行うことができる。
なお、上述の実施の形態では始端装置、中継装置、終端装置を用いているが、本願発明は2つの装置間においてUDPを用いた通信についても適用することが可能である。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。