以下、図面に基づいて、本願の開示する通信装置、通信方法、通信プログラム及び通信システムの実施例を詳細に説明する。尚、本実施例により、開示技術が限定されるものではない。
図1は、実施例1の中継システムの構成の一例を示すブロック図である。図1に示す中継システム1は、複数の接続元端末10と、複数の中継サーバ20と、複数のルータ30とを有する。複数の接続元端末10、複数の中継サーバ20及び複数のルータ30は、ネットワーク5を介して接続される。
接続元端末10は、接続元装置であって、通信インタフェース11と、メモリ12と、CPU(Central Processing Unit)13とを有する。通信インタフェース11は、接続元端末10が中継サーバ20と行う通信を制御するインタフェースである。メモリ12には、各種プログラム等の各種情報が記憶されている。CPU13は、接続元端末10全体を制御すると共に、例えば、メモリ12に記憶されている各種プログラムに基づき各種制御を実行する。
CPU13は、ソフトウェア機能として、telnet実行部14及びエージェント15を含む。telnet実行部14は、例えば、telnetプロトコルに関わるアプリのコマンドを実行する。エージェント15は、例えば、telnet実行部14と中継サーバ20との間の通信を監視する。
中継サーバ20は、通信インタフェース21と、メモリ22と、CPU23とを有する通信装置である。通信インタフェース21は、中継サーバ20が、接続元端末10と行う通信を制御すると共に、ルータ30と行う通信を制御するインタフェースである。メモリ22には、各種プログラム等の各種情報が記憶されている。CPU23は、中継サーバ20全体を制御すると共に、例えば、メモリ22に記憶されている各種プログラムに基づき各種制御を実行する。CPU23は、ソフトウェア機能として、接続元端末10と中継サーバ20との間、中継サーバ20とルータ30との間の通信を監視するマネージャ25を含む。ルータ30は、接続先装置である。
尚、説明の便宜上、中継システム1の各接続元端末10はエージェント15を有し、例えば、接続元端末10Aはエージェント15A、接続元端末10Bはエージェント15B、接続元端末10Cはエージェント15Cを有する。また、中継システム1の各中継サーバ20はマネージャ25を有し、例えば、中継サーバ20Aはマネージャ25A、中継サーバ20Bはマネージャ25B、中継サーバ20Cはマネージャ25Cを有する。更に、中継システム1は、各ルータ30(30A、30B、30C、・・・)を有する。
図2は、接続元端末10が有するエージェント15の機能の一例を示すブロック図である。図2に示すエージェント15は、検出部51と、分析部52と、判定部53と、通信部54と、継続部55と、制御部56とを有する。検出部51は、telnet実行部14にて実行されたtelnetアプリのコマンドを検出する。
分析部52は、検出部51にて検出されたコマンドを送信する宛先の機器のアドレスを分析する。分析部52は、分析結果に基づき、当該接続元端末10と、コマンドの宛先の機器(ルータ30)とのセッションを、接続元端末10と中継サーバ20との間のセッションと、中継サーバ20とルータ30との間のセッションとに分解する。
判定部53は、後述するマネージャ25内の管理テーブルの内容を参照し、分析部52により分解された中継サーバ20との間のセッションの使用状態を分析する。判定部53は、例えば、中継サーバ20と確立済みのセッションの内、使用状態が“空き”であるセッションが存在するか否かを判定する。尚、使用状態が“空き”とは、確立済みのセッションの内、コマンドのデータ送信応答が完了した、すなわちコマンドに応答済みの状態である。
通信部54は、判定部53にて中継サーバ20と確立済みのセッションの内、使用状態が“空き”であるセッションが存在しないと判定された場合、中継サーバ20と新規セッションを確立する。一方、通信部54は、判定部53にて中継サーバ20と確立済みのセッションの内、使用状態が“空き”であるセッションが存在すると判定された場合、新規セッションを確立することなく、この“空き”であるセッションを使用する。そして、通信部54は、使用状態が“空き”であるセッションが存在すると判定された場合に、この確立済みのセッションを使用して中継先で中継サーバ20とルータ30との間のセッションを示す確立情報を中継サーバ20に送信する。
そして、通信部54は、中継サーバ20からセッション確立OKの応答を受信した場合、この確立されたセッションを使用してコマンド通信、すなわちデータ送信及びデータ送信応答を実行する。尚、セッション確立OKの応答は、接続元端末10と接続先装置であるルータ30との間のセッション、すなわち接続元端末10と中継サーバ20との間のセッション、及び中継サーバ20とルータ30との間のセッションが確立していることを示すメッセージである。
また、継続部55は、中継サーバ20に対してハートビートメッセージを送信することで、中継サーバ20と確立済みのセッションを継続する。尚、ハートビートメッセージの送信タイミングは、ハートビートメッセージを受信するルータ30側で確立済みのセッションを自動的に切断するタイムアウト時間よりも短い間隔に設定するのが良い。ハートビートメッセージは、例えば、半角空白文字のブランクメッセージとし、接続先装置であるルータ30側でのメッセージ処理の負荷を軽減する。接続先装置であるルータ30は、タイムアウト時間前に中継サーバ20からハートビートメッセージを受信することで、例えば、タイムアウト時間カウントするカウンタの値をクリアする。その結果、ルータ30は、ハートビートメッセージを受信する都度、タイムアウトを計測するカウンタがクリアされることになるため、中継サーバ20を経由した接続元端末10との間の確立済みのセッションを維持できる。
また、通信部54は、中継サーバ20内のマネージャ25とのセッションが確立された後、この確立済みのセッションを使用して1回のデータ送信を実行する際の送信間隔を、例えば2秒間隔に設定する。このようにして、接続先であるルータ30側のデータ送信に対する応答負荷を軽減することが可能となる。なお、制御部56は、エージェント15全体を制御する。
図3は、中継サーバ20が有するマネージャ25の機能の一例を示すブロック図である。図3に示すマネージャ25は、通信部61と、中継部62と、分析部63と、判定部64と、管理テーブル65と、登録部66と、決定部67と、貸与部68と、制御部69とを有する。
通信部61は、例えば、接続先装置となりうるルータ30、ルータ30と接続する他の中継サーバ20、接続元端末10との通信を制御する。中継部62は、接続元端末10とルータ30との間の通信を中継する。分析部63は、接続元端末10からのコマンド及びセッションの確立情報を分析する。そして、分析部63は、分析結果に基づき、接続元端末10と中継サーバ20との間のセッション、及び中継サーバ20とルータ30との間のセッションを識別する。
中継部62は、確立部62Aを有する。確立部62Aは、分析部63により識別された接続元端末10と接続先装置であるルータ30との間のセッション、すなわち接続元端末10と中継サーバ20との間のセッション、及び中継サーバ20とルータ30との間のセッションを確立させる。そして、中継部62は、セッション確立OKの応答を接続元端末10のエージェント15に通知する。管理テーブル65は、接続元端末10とルータ30との間の確立済みセッションの使用状態を管理するために使用される。
図4は、管理テーブル65のデータの一例を示す説明図である。図4に示す管理テーブル65には、当該管理テーブル65を備えた中継サーバ20が中継する各セッションの使用状態等が記憶されている。管理テーブル65には、セッションID65Aと、セッション区間(始点/終点)65Bと、使用状態65Cと、シーケンス番号65Dと、ACK番号65Eと、更新時刻65Fとが対応付けられて記憶されている。
セッションID65Aは、接続元端末10とルータ30との間の確立済みのセッションを識別するIDを示す。セッション区間65Bは、接続元端末10とルータ30との間に関わる、接続元端末10と中継サーバ20との間の確立済みのセッションの始点及び終点と、中継サーバ20とルータ30との間の確立済みのセッションの始点及び終点とを示す。使用状態65Cは、該当セッション区間の確立済みのセッションの使用状態、例えば、“使用中”や“空き”を示す。シーケンス番号65Dは、該当セッション区間の通信で使用した直近のシーケンス番号を示す。ACK番号65Eは、該当セッション区間のセッションで相手先から受信すべき開始のシーケンス番号を示す。更新時刻65Fは、該当セッション区間のセッションで更新した時刻を示す。
尚、マネージャ25は、管理テーブル65を参照して、セッションID65A、セッション区間65B、使用状態65C、シーケンス番号65D、ACK番号65E及び更新時刻65Fを認識できる。例えば、マネージャ25は、図4のセッションID65Aの“02”に着目して、例えば、セッション区間「15B/25A」のセッション及び、セッション区間「25A/30A」のセッションを認識する。尚、セッション区間「15B/25A」は、接続元端末10B内のエージェント15Bと、当該中継サーバ20A内のマネージャ25Aとの間の確立済みのセッション区間を示している。また、セッション区間「25A/30A」のセッションとは、当該中継サーバ20A内のマネージャ25Aとルータ30Aとの間の確立済みのセッション区間を示している。
マネージャ25は、セッション区間「15B/25A」に着目すると、使用状態65Cが“使用中”、シーケンス番号65Dが“20031”、ACK番号65Eが“291”、更新時刻65Fが“2011/03/14 10:02:01001”と認識する。マネージャ25は、セッション区間「25A/30A」に着目すると、使用状態65Cが“使用中”、シーケンス番号65Dが“20001”、ACK番号65Eが“201”、更新時刻65Fが“2011/03/14 10:03:01001”と認識する。また、エージェント15は、マネージャ25内の管理テーブル65を参照して、同様に、各セッションのセッションID65A、セッション区間65B、使用状態65C、シーケンス番号65D、ACK番号65E及び更新時刻65Fを認識できる。
判定部64は、分析部63によるコマンド宛先の確立情報の分析結果に基づき、管理テーブル65のテーブル内容を参照し、中継サーバ20内のマネージャ15とルータ30との間で確立済みのセッションの使用状態を分析する。また、中継部62は、確立済みのセッションを使用してエージェント15からのハートビートメッセージをルータ30に中継する。その結果、中継部62は、エージェント15とマネージャ25との間のセッションは勿論のこと、マネージャ25とルータ30との間のセッションの確立を継続するものである。
また、登録部66は、エージェント15とマネージャ25との間のセッションが確立すると共に、マネージャ25とルータ30との間のセッションが確立した後、これら確立済みのセッションを識別するセッションID65Aを付与する。登録部66は、付与されたセッションID65Aに対応付けて、エージェント15との間で確立済みのセッション区間を示すセッション区間65Bと、ルータ30との間で確立済みのセッション区間を示すセッション区間65Bとを管理テーブル65内に登録する。
更に、登録部66は、セッション区間65Bに対応した確立済みのセッションの使用状態、例えば、判定部64の判定結果を使用状態65Cとして管理テーブル65内に登録する。更に、登録部66は、確立済みのセッションを使用してコマンドに対応する応答結果、例えば、データ送信応答をルータ30から受信する。更に、登録部66は、ルータ30から受信したデータ送信応答を接続元端末10に中継するタイミングで、当該確立済みセッションの使用状態65Cを“空き”として管理テーブル65内に登録する。
決定部67は、通信部61を使用して、接続するルータ30と通信し、ルータ30側でセッションを確立できるセッション上限数を取得する。尚、決定部67は、通信部61を使用してルータ30にコマンドを送信することで、例えば、“Show running-config”から“Line vty 0*”に基づきセッション上限数を取得する。更に、決定部67は、通信部61を使用して、当該ルータ30と接続する各中継サーバ20等にブロードキャスト通信する。更に、決定部67は、ブロードキャスト通信に対する返信応答で、ルータ30と接続する接続台数を認識する。決定部67は、取得されたセッション上限数及び接続台数に基づき、(セッション上限数÷接続台数)の式を用いて、中継サーバ20自体で確立可能なセッション許可数を決定する。
貸与部68は、通信部61を使用してルータ30と接続する各中継サーバ20に対してセッションの貸与要求をブロードキャスト送信する。尚、セッションの貸与要求は、他の中継サーバ20に対して未確立の空きセッションの貸与を要求するものである。また、貸与部68は、他の中継サーバ20からの貸与要求を検出すると、自装置で自律的に決定したセッション許可数の範囲内で未確立のセッションを、貸与要求を発行した中継サーバ20に貸与する。
決定部67は、他の中継サーバ20から未確立のセッションの貸与を検出すると、未確立のセッションの貸与数に応じて、自装置のセッション許可数を更新する。例えば、未確立のセッションが貸与された決定部67は、現在のセッション許可数が“5”、貸与数が“1”の場合、現在のセッション許可数に貸与数を加算して、“5+1”に応じてセッション許可数を“6”に更新する。
また、未確立のセッションを貸与する中継サーバ20側の決定部67は、現在のセッション許可数が“5”、自分が貸与した未確立のセッションの数が“1”の場合、現在のセッション許可数に貸与数を減算して、“5−1”に応じてセッション許可数を“4”に更新する。制御部69は、マネージャ25全体を制御すると共に、セッション許可数の範囲内で新規セッションの確立を制御する。
また、管理テーブル65内のシーケンス番号65DとACK番号65Eとの関係について説明する。図5は、シーケンス番号65D及びACK番号65Eの関係の一例を示す説明図である。例えば、エージェント15は、確立(syn)をマネージャ25に送信する(SQ1)。この際、確立(syn)には、シーケンス番号“1”としてランダム値と、次にマネージャ25から受信すべき、開始シーケンス番号であるACK番号“1”としてランダム値とを含む。従って、マネージャ25は、ACK番号“1”に基づき、エージェント15に送信すべき、開始シーケンス番号を事前に認識できる。
更に、マネージャ25は、確立(syn)を受信すると、確立応答(syn+ack)をエージェント15に送信する(SQ2)。この際、確立応答(syn+ack)には、シーケンス番号“2”としてランダム値と、次にエージェント15から受信すべき、開始シーケンス番号であるACK番号“2”としてシーケンス番号“1”+1とを含む。従って、エージェント15は、ACK番号“2”に基づき、マネージャ25に送信すべき、開始シーケンス番号を事前に認識できる。
更に、エージェント15は、確立応答(syn+ack)を受信すると、確立(ack)をマネージャ25に送信する(SQ3)。この際、確立(ack)には、シーケンス番号“3”としてACK番号“2”と、次にマネージャ25から受信すべき、開始シーケンス番号であるACK番号“3”としてシーケンス番号“2”+1とを含む。従って、マネージャ25は、ACK番号“3”に基づき、エージェント15に送信すべき、開始シーケンス番号を事前に認識できる。
更に、エージェント15は、確立(ack)を受信した後、データ送信(push)をマネージャ25に送信する(SQ4)。この際、データ送信(push)には、シーケンス番号“4”としてシーケンス番号“3”と、次にマネージャ25から受信すべき、開始シーケンス番号であるACK番号“4”としてACK番号“3”とを含む。従って、マネージャ25は、ACK番号“4”に基づき、エージェント15に送信すべき、開始シーケンス番号を事前に認識できる。更に、マネージャ25は、データ送信(push)を受信した後、データ送信応答(push+ack)をエージェント15に送信する(SQ5)。この際、データ送信(push+ack)には、シーケンス番号“5”としてACK番号“4”と、次にエージェント15から受信すべき、開始シーケンス番号であるACK番号“5”としてシーケンス番号“4”+当該データバイト数とを含む。従って、エージェント15は、ACK番号“5”に基づき、マネージャ25に送信すべき、開始シーケンス番号を事前に認識できる。
更に、エージェント15は、データ送信(push)をマネージャ25に送信する(SQ6)。この際、データ送信(push)には、シーケンス番号“6”としてシーケンス番号“5”と、次にマネージャ25から受信すべき、開始シーケンス番号であるACK番号“6”としてACK番号“5”とを含む。従って、マネージャ25は、ACK番号“6”に基づき、同じ確立済みのセッションを使用して、エージェント15に送信すべき、開始シーケンス番号を事前に認識できる。
更に、マネージャ25は、データ送信(push)を受信した後、データ送信応答(push+ack)をエージェント15に送信する(SQ7)。この際、データ送信(push+ack)には、シーケンス番号“7”としてACK番号“6”と、次にエージェント15から受信すべき、開始シーケンス番号であるACK番号“7”としてシーケンス番号“6”+当該データバイト数とを含む。従って、エージェント15は、ACK番号“6”に基づき、同じ確立済みのセッションを使用して、マネージャ25に送信すべき、開始シーケンス番号を事前に認識できる。
登録部66は、エージェント15とマネージャ25との間のセッション区間毎のシーケンスに関してシーケンス番号65D及びACK番号65Eを管理テーブル65内に登録する。従って、マネージャ25及びエージェント15は、管理テーブル65内のシーケンス番号65D及びACK番号65Eを参照して、当該確立済みのセッションに関わる開始シーケンス番号を事前に認識できる。その結果、マネージャ25及びエージェント15は、確立済みの“空き”セッションを使い回しても、円滑なコマンド通信、すなわちデータ送信及びデータ送信応答を実行できる。
尚、図5の例では、エージェント15とマネージャ25との間の確立済みのセッション毎のシーケンスに関してシーケンス番号65D及びACK番号65Eを管理した。しかし、マネージャ25とルータ30との間の確立済みのセッション毎のシーケンスに関してシーケンス番号65D及びACK番号65Eも管理する。つまり、マネージャ25及びルータ30は、管理テーブル65内のシーケンス番号65D及びACK番号65Eを参照して、確立済みのセッションの開始シーケンス番号を事前に認識できる。その結果、マネージャ25及びルータ30は、確立済みの“空き”セッションを使い回しても、円滑なデータ送信及びデータ送信応答を実行できる。
次に、実施例1の中継システム1の動作について説明する。図6は、コマンド通信に関わる中継システム1の動作の一例を示すシーケンス図である。図6に示す中継システム1では、エージェント15A/マネージャ25A間及び、マネージャ25A/ルータ30A間で確立済みの該当セッションがなく、新規セッションが確立できる状況下にあるものとする。尚、新規セッションが確立できる状況下とは、ルータ30Aのセッション上限数の範囲内、かつ中継サーバ20Aのセッション許可数の範囲内で新規セッションが確立可能な状況下である。すなわち、エージェント15A/マネージャ25A間、マネージャ25A/ルータ30A間で新規のセッションが確立可能な状況下である。
図6に示す接続元端末10Aのエージェント15Aの検出部51は、telnet実行部14から確立要求コマンドtelnet>open[15A,30A]を検出する(ステップS11)。エージェント15Aの分析部52は、確立要求コマンドを検出すると、確立要求コマンドを分析する(ステップS12)。分析部52は、確立要求コマンドの分析結果に基づき、確立要求コマンドtelnet>open[15A,30A]をtelnet>open[15A,25A]+telnet>open[25A,30A]に分解する。すなわち、分析部52は、エージェント15Aとルータ30Aとの間のセッションを、エージェント15Aとマネージャ25Aとの間のセッションと、マネージャ25Aとルータ30Aとの間のセッションとに分解する。
エージェント15Aの判定部53は、マネージャ25A内の管理テーブル65を参照して、コマンド宛先に対応するエージェント15Aとマネージャ25Aとの間の確立済みのセッションを分析する。判定部53は、分析結果に基づき、コマンド宛先に対応する確立済みのセッション(15A/25A)がないと判定する(ステップS13)。更に、判定部53は、確立済みのセッション(15A/25A)がないと判定されると、新規セッションが確立可能な状況下にあるか否かを判定する。
通信部54は、新規セッションが確立可能な状況下にあると判定されると(ステップS14)、telnet>open[15A,25A]に基づき、新規セッションを確立すべく、マネージャ25Aに対して確立(syn)を送信する(ステップS15)。更に、マネージャ25Aの中継部62は、エージェント15Aから確立(syn)を受信すると、エージェント15Aに対して確立応答(syn+ack)を送信する(ステップS16)。更に、エージェント15Aの通信部54は、マネージャ25Aから確立応答(syn+ack)を受信すると、マネージャ25Aに対して確立(ack)を送信する(ステップS17)。その結果、エージェント15Aとマネージャ25Aとの間の新規セッションが確立したことになる。従って、マネージャ25Aの登録部66は、エージェント15Aとマネージャ25Aとの間の確立済みのセッション(15A/25A)の使用状態65Cを“使用中”として管理テーブル65内に登録する。
更に、エージェント15Aの通信部54は、ステップS12にて分解したtelnet>open[25A,30A]のコマンド宛先の確立情報をマネージャ25Aに通知する(ステップS18)。マネージャ25Aの分析部63は、コマンド宛先の確立情報を分析する(ステップS19)。マネージャ25Aの判定部64は、管理テーブル65を参照して、コマンド宛先に対応したマネージャ25Aとルータ30Aとの間の確立済みのセッションを分析する。そして、判定部64は、コマンド宛先に対応した確立済みのセッション(25A/30A)がないと判定されると(ステップS20)、新規セッションが確立可能な状況下にあるか否かを判定する。中継部62は、新規セッションが確立可能な状況下にあると判定されると(ステップS21)、telnet>open[25A,30A]に基づき、新規セッションを確立すべく、ルータ30Aに対して確立(syn)を送信する(ステップS22)。ルータ30Aは、マネージャ25Aから確立(syn)を受信すると、マネージャ25Aに対して確立応答(syn+ack)を送信する(ステップS23)。
更に、マネージャ25Aの中継部62は、ルータ30Aから確立応答(syn+ack)を受信すると、ルータ30Aに対して確立(ack)を送信する(ステップS24)。その結果、マネージャ25Aとルータ30Aとの間の新規セッションが確立したことになる。つまり、マネージャ25Aを経由してエージェント15Aとルータ30Aとの間のセッションが確立したことになる。従って、マネージャ25Aの登録部66は、マネージャ25Aとルータ30Aとの間の確立済みのセッション(25A/30A)の使用状態65Cを“使用中”として管理テーブル65内に登録する。
そして、中継部62は、ルータ30Aに対して確立(ack)を送信すると、エージェント15Aとマネージャ25Aとの間、及びマネージャ25Aとルータ30Aとの間の確立完了を示す確立OKをエージェント15Aに送信する(ステップS25)。更に、エージェント15Aの通信部54は、確立OKを受信した場合、確立済みの新規セッション(15A/25A)を使用して、コマンドに対応したデータ送信(push)をマネージャ25Aに送信する(ステップS26)。
更に、マネージャ25Aの中継部62は、確立済みの新規セッション(25A/30A)を使用して、エージェント15Aからのデータ送信(push)をルータ30Aに中継する(ステップS27)。その結果、ルータ30Aは、データ送信(push)を受信すると、データ送信(push)に対応したコマンド内容を実行し、そのコマンド応答結果を取得する。
ルータ30Aは、確立済みのセッション(25A/30A)を使用して、コマンドに対応する応答結果であるデータ送信応答(push+ack)をマネージャ25Aに送信する(ステップS28)。マネージャ25Aの中継部62は、データ送信応答(push+ack)を受信すると、データ送信応答(push+ack)をエージェント15Aに中継する(ステップS29)。その結果、エージェント15Aは、新規セッションを使用してマネージャ25A経由でルータ30Aを遠隔操作したことになる。
マネージャ25Aの制御部69は、ルータ30Aからのデータ送信応答(push+ack)をエージェント15Aに中継すると、確立済みの新規セッション(15A/25A,25A/30A)の使用状態を“空き”と判定する(ステップS30)。そして、マネージャ25Aの登録部66は、確立済みの新規セッションの使用状態65Cを“空き”として管理テーブル65に更新する(ステップS31)。通信部61は、管理テーブル65のテーブル更新をエージェント15Aに送信する(ステップS32)。その結果、エージェント15Aは、確立済みのセッションの使用状態が“空き”に更新されたことを認識できる。
図6の例では、確立済みの該当セッションがなく、新規セッションが確立可能な状況下では、エージェント15Aとマネージャ25Aとの間、マネージャ25Aとルータ30Aとの間で新規セッションを確立する。確立した新規セッションを使用して、エージェント15Aとルータ30Aとの間のコマンドに関わるデータ送信及びデータ送信応答を実行できる。
図7は、コマンド通信に関わる中継システム1の動作の一例を示すシーケンス図である。図7に示す中継システム1では、エージェント15Aとマネージャ25Aとの間、マネージャ25Aとルータ30Aとの間で確立済みのセッションの使用状態が“空き”の状況下にあるものとする。
図7に示すエージェント15Aの通信部54は、確立済みのセッション(15A/25A)を使用して、コマンドに対応するデータ送信(push)をマネージャ25Aに送信する(ステップS41)。更に、マネージャ25Aの中継部62は、エージェント15Aからのデータ送信(push)を受信すると、確立済みのセッション(25A/30A)を使用して、データ送信(push)をルータ30Aに中継する(ステップS42)。その結果、ルータ30Aは、データ送信(push)を受信すると、データ送信に対応したコマンド内容を実行することでコマンド応答結果を取得する。
更に、ルータ30Aは、確立済みのセッション(25A/30A)を使用して、コマンドに対応する応答結果であるデータ送信応答(push+ack)をマネージャ25Aに送信する(ステップS43)。マネージャ25Aの中継部62は、データ送信応答(push+ack)を受信すると、確立済みのセッション(25A/15A)を使用して、データ送信応答(push+ack)をエージェント15Aに中継する(ステップS44)。その結果、エージェント15Aは、確立済みのセッション(15A/25A、25A/30A)を使用してマネージャ25A経由でルータ30Aを遠隔操作することになる。
マネージャ25Aの制御部69は、ルータ30Aからのデータ送信応答(push+ack)をエージェント15Aに中継すると、確立済みのセッション(15A/25A,25A/30A)の使用状態を“空き”と判定する(ステップS45)。そして、マネージャ25Aの登録部66は、確立済みのセッション(15A/25A,25A/30A)の使用状態65Cを“空き”として管理テーブル65に更新する(ステップS46)。マネージャ25Aの通信部61は、テーブル更新をエージェント15Aに送信する(ステップS47)。その結果、エージェント15Aは、確立済みのセッション(15A/25A,25A/30A)の使用状態65Cを“空き”に更新されたことを認識できる。
更に、エージェント15Aの継続部55は、ルータ30A側の確立済みのセッションを継続できる時間の範囲内で定期的にハートビートメッセージをマネージャ25Aに送信する(ステップS48)。従って、マネージャ25Aは、エージェント15Aとの間で確立済みのセッションを維持できる。更に、マネージャ25Aの中継部62は、エージェント15Aからのハートビートメッセージをルータ30Aに中継する(ステップS49)。ルータ30Aは、マネージャ25Aとの間で確立済みのセッションを維持できる。その結果、ルータ30Aは、中継サーバ20A経由で接続元端末10との間で確立済みのセッション(15A/25A、25A/30A)を維持できる。
エージェント15Aの検出部51は、telnet実行部14から、他のアプリの新規の確立要求コマンドtelnet>open[15A,30A]を検出する(ステップS50)。分析部52は、確立要求コマンドを分析し、確立要求コマンドtelnet>open[15A,30A]をtelnet>open[15A,25A]+telnet>open[25A,30A]に分解する(ステップS51)。すなわち、分析部52は、エージェント15Aとルータ30Aとの間のセッション区間を、エージェント15Aとマネージャ25Aとの間のセッションと、マネージャ25Aとルータ30Aとの間のセッションとに分解する。
エージェント15Aの判定部53は、マネージャ25Aの管理テーブル65を参照して、コマンド宛先に対応したエージェント15Aとマネージャ25Aとの間の確立済みのセッションを分析する。判定部53は、コマンド宛先に対応した確立済みの“空き”のセッションがあると判定する(ステップS52)。この際、マネージャ25Aの登録部66は、エージェント15Aとマネージャ25Aとの間に確立済みのセッションの使用状態65Cを“使用中”として管理テーブル65内に登録する。そして、通信部54は、コマンド宛先に対応した確立済みの“空き”のセッションを使用して、ステップS51にて分解したtelnet>open[25A,30A]の確立情報をマネージャ25Aに送信する(ステップS53)。マネージャ25Aの分析部63は、コマンド宛先の確立情報を分析する(ステップS54)。マネージャ25Aの判定部64は、管理テーブル65を参照して、コマンド宛先に対応したマネージャ25Aとルータ30Aとの間の確立済みのセッションを分析する。判定部64は、コマンド宛先に対応した確立済みの“空き”のセッションがあると判定する(ステップS55)。中継部62は、コマンド宛先に対応した確立済みの“空き”のセッションを使用する。この際、マネージャ25Aの登録部66は、マネージャ25Aとルータ30Aとの間に確立済みのセッションの使用状態65Cを“使用中”として管理テーブル65内に登録する。
そして、中継部62は、確立済みの“空き”のセッションがあると判定されると、エージェント15Aとマネージャ25Aとの間及び、マネージャ25Aとルータ30Aとの間の確立完了を示す確立OKをエージェント15Aに送信する(ステップS56)。更に、エージェント15Aの通信部54は、確立OKを受信した場合、確立済みの新規セッション(15A/25A)を使用して、コマンドに対応するデータ送信(push)をマネージャ25Aに送信する(ステップS57)。更に、マネージャ25Aの中継部62は、確立済みの“空き”のセッション(25A/30A)を使用して、エージェント15Aからのデータ送信(push)をルータ30Aに中継する(ステップS58)。その結果、ルータ30Aは、データ送信(push)を受信すると、データ送信(push)に対応したコマンド内容を実行し、そのコマンド応答結果を取得する。
更に、ルータ30Aは、確立済みの“空き”のセッション(25A/30A)を使用して、コマンドに対応する応答結果であるデータ送信応答(push+ack)をマネージャ25Aに送信する(ステップS59)。マネージャ25Aの中継部62は、データ送信応答(push+ack)を受信すると、データ送信応答(push+ack)をエージェント15Aに中継する(ステップS60)。その結果、エージェント15Aは、確立済みの“空き”のセッションを使用してマネージャ25A経由でルータ30Aを遠隔操作したことになる。
マネージャ25Aの制御部69は、ルータ30Aからのデータ送信応答(push+ack)をエージェント15Aに中継すると、確立済みのセッション(15A/25A,25A/30A)の使用状態を“空き”と判定する(ステップS61)。そして、マネージャ25A内の登録部66は、確立済みのセッションの使用状態65Cを“空き”として管理テーブル65に更新する(ステップS62)。通信部61は、テーブル更新をエージェント15Aに送信する(ステップS63)。その結果、エージェント15Aは、確立済みのセッションの使用状態が“空き”に更新されたことを認識できる。
図7の例では、エージェント15Aとマネージャ25Aとの間、マネージャ25Aとルータ30Aとの間で確立済みのセッションが“空き”の状況下にある。この状況下で、中継システム1は、当該確立済みの“空き”のセッションを使用して、エージェント15Aとルータ30Aとの間で他のアプリのコマンドに関わるデータ送信及び送信応答を実行できる。
図8は、コマンド通信に関わる中継システム1の動作の一例を示すシーケンス図である。図8に示す中継システム1では、エージェント15Aとルータ30Aとの間で確立済みのセッションの使用状態が“使用中”で、更なる新規セッションが確立できる状況下にあるものとする。
図8に示すエージェント15Aの検出部51は、telnet実行部14から、他のアプリからの新規の確立要求コマンドtelnet>open[15A,30A]を検出する(ステップS71)。エージェント15Aの分析部52は、確立要求コマンドを分析し、確立要求コマンドtelnet>open[15A,30A]をtelnet>open[15A,25A]+telnet>open[25A,30A]に分解する(ステップS72)。すなわち、分析部52は、エージェント15Aとルータ30Aとの間のセッション区間を、エージェント15Aとマネージャ25Aとの間のセッションと、マネージャ25Aとルータ30Aとの間のセッションとに分解する。
エージェント15Aの判定部53は、マネージャ25Aの管理テーブル65を参照してコマンド宛先に対応したエージェント15Aとマネージャ25Aとの間の確立済みの“空き”のセッションを分析する。判定部53は、コマンド宛先に対応した確立済みの“空き”のセッション(15A/25A)がない、すなわち確立済みのセッションが“使用中”と判定すると(ステップS73)、新規セッションが確立可能な状況下にあるか否かを判定する。
エージェント15Aの通信部54は、新規セッションが確立可能な状況下にあると判定されると(ステップS74)、telnet>open[15A,25A]に基づき、新規セッションを確立すべく、マネージャ25Aに対して確立(syn)を送信する(ステップS75)。更に、マネージャ25Aの中継部62は、エージェント15Aから確立(syn)を受信すると、エージェント15Aに対して確立応答(syn+ack)を送信する(ステップS76)。更に、エージェント15Aの通信部54は、マネージャ25Aから確立応答(syn+ack)を受信すると、マネージャ25Aに対して確立(ack)を送信する(ステップS77)。その結果、エージェント15Aとマネージャ25Aとの間の新規セッションが確立したことになる。従って、マネージャ25Aの登録部66は、エージェント15Aとマネージャ25Aとの間の確立済みのセッション(15A/25A)の使用状態を“使用中”として管理テーブル65内に登録する。
更に、エージェント15Aの通信部54は、ステップS72にて分解したtelnet>open[25A,30A]のコマンド宛先の確立情報をマネージャ25Aに送信する(ステップS78)。マネージャ25Aの分析部63は、コマンド宛先の確立情報を分析する(ステップS79)。マネージャ25Aの判定部64は、管理テーブル65を参照して、コマンド宛先に対応したマネージャ25Aとルータ30Aとの間の確立済みの“空き”のセッションを分析する。判定部64は、コマンド宛先に対応した確立済みの“空き”のセッション(25A/30A)がない、すなわち“使用中”と判定すると(ステップS80)、新規セッションが確立可能な状況下にあるか否かを判定する。
中継部62は、新規セッションが確立可能な状況下にあると判定されると(ステップS81)、telnet>open[25A,30A]に基づき、新規セッションを確立すべく、ルータ30Aに対して確立(syn)を送信する(ステップS82)。ルータ30Aは、マネージャ25Aから確立(syn)を受信すると、マネージャ25Aに対して確立応答(syn+ack)を送信する(ステップS83)。更に、マネージャ25Aの中継部62は、ルータ30Aから確立応答(syn+ack)を受信すると、ルータ30Aに対して確立(ack)を送信する(ステップS84)。その結果、マネージャ25Aとルータ30Aとの間の新規セッションが確立する。つまり、マネージャ25Aを経由してエージェント15Aとルータ30Aとの間のセッションが確立したことになる。従って、マネージャ25Aの登録部66は、マネージャ25Aとルータ30Aとの間の確立済みのセッション(25A/30A)の使用状態65Cを“使用中”として管理テーブル65内に登録する。
そして、中継部62は、確立(ack)を送信すると、確立完了を示す確立OKをエージェント15Aに送信する(ステップS85)。更に、エージェント15Aの通信部54は、確立OKを受信した場合、確立済みの新規セッション(15A/25A)を使用して、コマンドに対応するデータ送信(push)をマネージャ25Aに送信する(ステップS86)。更に、マネージャ25Aの中継部62は、確立済みの新規セッション(25A/30A)を使用して、エージェント15Aからのデータ送信(push)をルータ30Aに中継する(ステップS87)。その結果、ルータ30Aは、データ送信(push)を受信すると、データ送信(push)に対応したコマンド内容を実行し、そのコマンド応答結果を取得する。
更に、ルータ30Aは、確立済みのセッション(25A/30A)を使用して、コマンドに対応する応答結果であるデータ送信応答(push+ack)をマネージャ25Aに送信する(ステップS88)。マネージャ25Aの中継部62は、データ送信応答(push+ack)を受信すると、データ送信応答(push+ack)をエージェント15Aに送信する(ステップS89)。その結果、エージェント15Aは、確立済みの新規セッションを使用してマネージャ25A経由でルータ30Aを遠隔操作したことになる。
マネージャ25Aの制御部69は、ルータ30Aからのデータ送信応答(push+ack)をエージェント15Aに中継すると、確立済みの新規セッション(15A/25A,25A/30A)の使用状態を“空き”と判定する(ステップS90)。そして、マネージャ25Aの登録部66は、確立済みの新規セッションの使用状態65Cを“空き”として管理テーブル65に更新する(ステップS91)。通信部61は、テーブル更新をエージェント15Aに送信する(ステップS92)。その結果、エージェント15Aは、確立済みのセッションの使用状態が“空き”に更新されたことを認識できる。
図8の例では、エージェント15Aとマネージャ25Aとの間、マネージャ25Aとルータ30Aとの間で確立済みのセッションが“使用中”で、新規セッションが確立可能な状況下である。この状況下で、中継システム1は、新規セッションを使用して、エージェント15Aとルータ30Aとの間で、他のアプリのコマンドに関わるデータ送信及び送信応答を実行できる。
図9は、コマンド通信に関わる中継システム1の動作の一例を示すシーケンス図である。図9に示す中継システム1では、エージェント15Aとマネージャ25Aとの間で確立済みのセッションが“使用中”、マネージャ25Aとルータ30Aとの間で確立済みのセッションが“空き”で、新規セッションが確立可能な状況下にあるものとする。
図9に示すエージェント15Aの検出部51は、telnet実行部14から他のアプリの確立要求コマンドtelnet>open[15A,30A]を検出する(ステップS101)。分析部52は、確立要求コマンドを分析すると、確立要求コマンドtelnet>open[15A,30A]をtelnet>open[15A,25A]+telnet>open[25A,30A]に分解する(ステップS102)。すなわち、分析部52は、エージェント15Aとルータ30Aとの間のセッション区間を、エージェント15Aとマネージャ25Aとの間のセッションと、マネージャ25Aとルータ30Aとの間のセッションとに分解する。
エージェント15Aの判定部53は、マネージャ25A内の管理テーブル65を参照して、コマンド宛先に対応したエージェント15Aとマネージャ25Aとの間の確立済みのセッション(15A/25A)を分析する。判定部53は、確立済みの“空き”のセッションがないと判定すると(ステップS103)、新規セッションが確立可能な状況下にあるか否かを判定する。通信部54は、新規セッションが確立可能な状況下にあると判定されると(ステップS104)、telnet>open[15A,25A]に基づき、新規セッションを確立すべく、マネージャ25Aに対して確立(syn)を送信する(ステップS105)。
マネージャ25Aの中継部62は、エージェント15Aから確立(syn)を受信すると、エージェント15Aに対して確立応答(syn+ack)を送信する(ステップS106)。更に、エージェント15Aの通信部54は、マネージャ25Aから確立応答(syn+ack)を受信すると、マネージャ25Aに対して確立(ack)を送信する(ステップS107)。その結果、エージェント15Aとマネージャ25Aとの間のセッションが確立したことになる。従って、マネージャ25Aの登録部66は、エージェント15Aとマネージャ25Aとの間の確立済みのセッション(15A/25A)の使用状態65Cを“使用中”として管理テーブル65内に登録する。
更に、エージェント15Aの通信部54は、ステップS102にて分解したtelnet>open[25A,30A]の確立情報をマネージャ25Aに送信する(ステップS108)。マネージャ25Aの分析部63は、コマンド宛先に対応する確立情報を分析する(ステップS109)。マネージャ25Aの判定部64は、管理テーブル65を参照して、コマンド宛先に対応したエージェント15Aとルータ30Aとの間の確立済みのセッションを分析する。判定部64は、コマンド宛先の確立済みの“空き”のセッションがあると判定する(ステップS110)。
中継部62は、マネージャ25Aとルータ30Aとの間の確立済みのセッションを使用する。そして、マネージャ25Aを経由してエージェント15Aとルータ30Aとの間のセッションが確立したことになる。従って、マネージャ25Aの登録部66は、マネージャ25Aとルータ30Aとの間の確立済みのセッション(25A/30A)の使用状態65Cを“使用中”として管理テーブル65内に登録する。
そして、中継部62は、確立済みの“空き”のセッションがあると判定されると、確立完了を示す確立OKをエージェント15Aに送信する(ステップS111)。更に、エージェント15Aの通信部54は、確立OKを受信した場合、確立済みの新規セッション(15A/25A)を使用して、コマンドに対応するデータ送信(push)をマネージャ25Aに送信する(ステップS112)。更に、マネージャ25Aの中継部62は、確立済みのセッション(25A/30A)を使用して、エージェント15Aからのデータ送信(push)を受信すると、データ送信(push)をルータ30Aに中継する(ステップS113)。その結果、ルータ30Aは、データ送信(push)を受信すると、データ送信(push)に対応したコマンド内容を実行し、そのコマンド応答結果を取得する。
ルータ30Aは、確立済みのセッション(25A/30A)を使用して、コマンドに対応する応答結果であるデータ送信応答(push+ack)をマネージャ25Aに送信する(ステップS114)。マネージャ25Aの中継部62は、データ送信応答(push+ack)を受信すると、データ送信応答(push+ack)をエージェント15Aに送信する(ステップS115)。その結果、エージェント15Aは、確立済みの“空き”のセッションを使用してマネージャ25A経由でルータ30Aを遠隔操作したことになる。
マネージャ25A内の制御部69は、ルータ30Aからのデータ送信応答をエージェント15Aに中継すると、確立済みのセッション(15A/25A,25A/30A)の使用状態を“空き”と判定する(ステップS116)。そして、マネージャ25A内の登録部66は、確立済みのセッションの使用状態65Cを“空き”として管理テーブル65に更新する(ステップS117)。通信部61は、管理テーブル65のテーブル更新をエージェント15Aに送信する(ステップS118)。その結果、エージェント15Aは、確立済みのセッションの使用状態が“空き”に更新されたことを認識することができる。
図9の例では、エージェント15Aとマネージャ25Aとの間で確立済みのセッションが“使用中”、マネージャ25Aとルータ30Aとの間で確立済みのセッションが“空き”で、新規セッションが確立可能な状況下である。この状況下で、中継システム1は、新規セッション及び“空き”のセッションを使用して他のアプリのコマンドに関わるデータ送信及び送信応答を実行できる。
図10は、コマンド通信に関わる中継システム1の動作の一例を示すシーケンス図である。図10に示す中継システム1では、エージェント15Aとルータ30Aとの間で確立済みのセッションの使用状態が“空き”の状態でエージェント15Aからルータ30Bに新規の確立要求コマンドを送信する状況下にあるものとする。
図10に示すエージェント15Aの検出部51は、telnet実行部14から、他のアプリからの確立要求コマンドtelnet>open[15A,30B]を検出する(ステップS121)。分析部52は、確立要求コマンドを分析し、確立要求コマンドtelnet>open[15A,30B]をtelnet>open[15A,25A]+telnet>open[25A,30B]に分解する(ステップS122)。すなわち、分析部52は、エージェント15Aとルータ30Bとの間のセッション区間を、エージェント15Aとマネージャ25Aとの間のセッションと、マネージャ25Aとルータ30Bとの間のセッションとに分解する。
エージェント15Aの判定部53は、マネージャ25Aの管理テーブル65を参照して、コマンド宛先に対応するエージェント15Aとマネージャ25Aとの間の確立済みのセッションを分析する。判定部53は、確立済みの使用状態が“空き”のセッションがあると判定する(ステップS123)。通信部54は、確立済みの“空き”のセッションを使用して、ステップS122にて分解したtelnet>open[25A,30B]のコマンド宛先の確立情報をマネージャ25Aに送信する(ステップS124)。分析部63は、コマンド宛先の確立情報を分析する(ステップS125)。
判定部64は、管理テーブル65を参照して、コマンド宛先のエージェント15Aとルータ30Bとの間の確立済みのセッションを分析する。判定部64は、確立済みの該当セッション(25A/30B)“なし”と判定すると(ステップS126)、新規セッションが確立可能な状況下にあるか否かを判定する。中継部62は、新規セッションが確立可能な状況下にあると判定されると(ステップS127)、telnet>open[25A,30B]に基づき、新規セッションを確立すべく、ルータ30Bに対して確立(syn)を送信する(ステップS128)。更に、ルータ30Bは、マネージャ25Aから確立(syn)を受信すると、マネージャ25Aに対して確立応答(syn+ack)を送信する(ステップS129)。
更に、マネージャ25Aの中継部62は、ルータ30Bから確立応答(syn+ack)を受信すると、ルータ30Bに対して確立(ack)を送信する(ステップS130)。その結果、マネージャ25Aとルータ30Bとの間の新規セッションが確立したことになる。つまり、マネージャ25Aを経由してエージェント15Aとルータ30Bとの間のセッションが確立したことになる。従って、マネージャ25Aの登録部66は、マネージャ25Aとルータ30Bとの間の確立済みのセッション(25A/30B)の使用状態を“使用中”として管理テーブル65内に登録する。
そして、中継部62は、ルータ30Bに対して確立(ack)を送信すると、確立完了を示す確立OKをエージェント15Aに送信する(ステップS131)。更に、エージェント15Aの通信部54は、確立OKを受信した場合、確立済みの新規セッション(15A/25A)を使用して、コマンドに対応するデータ送信(push)をマネージャ25Aに送信する(ステップS132)。
更に、マネージャ25Aの中継部62は、確立済みの新規セッション(25A/30B)を使用して、エージェント15Aからのデータ送信(push)を受信すると、データ送信(push)をルータ30Bに送信する(ステップS133)。その結果、ルータ30Bは、データ送信(push)を受信すると、データ送信(push)に対応したコマンド内容を実行し、そのコマンド応答結果を取得する。
ルータ30Bは、確立済みのセッション(25A/30B)を使用して、コマンドに対応する応答結果であるデータ送信応答(push+ack)をマネージャ25Aに送信する(ステップS134)。マネージャ25Aの中継部62は、データ送信応答(push+ack)を受信すると、データ送信応答(push+ack)をエージェント15Aに中継する(ステップS135)。その結果、エージェント15Aは、確立済みの“空き”のセッションを使用してマネージャ25A経由でルータ30Bを遠隔操作したことになる。
マネージャ25A内の制御部69は、ルータ30Bからのデータ送信応答(push+ack)をエージェント15Aに中継すると、使い回す前の確立済みのセッション(15A/25A,25A/30A)の使用状態を“空き”と判定する(ステップS136)。そして、マネージャ25A内の登録部66は、使い回す前の確立済みのセッションの使用状態65Cを“空き”として管理テーブル65に更新する(ステップS137)。通信部61は、管理テーブル65のテーブル更新をエージェント15Aに送信する(ステップS138)。その結果、エージェント15Aは、確立済みのセッションの使用状態が“空き”に更新されたことを認識できる。尚、登録部66は、ステップS137にて使い回す前の確立済みのセッションの使用状態を更新するのではなく、使用後の確立済みのセッション(15A/25A,25A/30B)の使用状態を更新しても良い。
図10の例では、エージェント15Aとマネージャ25Aとの間の確立済みの“空き”のセッション、マネージャ25Aとルータ30Bとの間の新規セッションを使用して、他のアプリのコマンドに関わるデータ送信及び送信応答を実行できる。
図11は、コマンド通信に関わる中継システム1の動作の一例を示すシーケンス図である。図11に示す中継システム1では、エージェント15Aとルータ30Aとの間で確立済みのセッションの使用状態が“空き”の状態でエージェント15Bからルータ30Aに新規の確立要求コマンドを送信する状況下にあるものとする。
図11に示すエージェント15Bの検出部51は、telnet実行部14から、他のクライアントの新規の確立要求コマンドtelnet>open[15B,30A]を検出する(ステップS141)。分析部52は、確立要求コマンドを分析すると、確立要求コマンドtelnet>open[15B,30A]をtelnet>open[15B,25A]+telnet>open[25A,30A]に分解する(ステップS142)。すなわち、分析部52は、エージェント15Aとルータ30Aとの間のセッション区間を、エージェント15Bとマネージャ25Aとの間のセッションと、マネージャ25Aとルータ30Aとの間のセッションとに分解する。
エージェント15Bの判定部53は、マネージャ25A内の管理テーブル65を参照して、コマンド宛先に対応したエージェント15Bとマネージャ25Aとの間の確立済みのセッションを分析する。判定部53は、コマンド宛先に対応する確立済みの“空き”のセッション(15B/25A)がないと判定すると(ステップS143)、新規セッションが確立可能な状況下にあるか否かを判定する。
通信部54は、新規セッションが確立可能な状況下にあると判定されると(ステップS144)、telnet>open[15B,25A]に基づき、新規セッションを確立すべく、マネージャ25Aに対して確立(syn)を送信する(ステップS145)。更に、マネージャ25Aの中継部62は、エージェント15Bから確立(syn)を受信すると、エージェント15Bに対して確立応答(syn+ack)を送信する(ステップS146)。
更に、エージェント15Bの通信部54は、マネージャ25Aから確立応答(syn+ack)を受信すると、マネージャ25Aに対して確立(ack)を送信する(ステップS147)。その結果、エージェント15Bとマネージャ25Aとの間のセッションが確立したことになる。従って、マネージャ25Aの登録部66は、エージェント15Bとマネージャ25Aとの間の確立済みのセッション(15B/25A)の使用状態65Cを“使用中”として管理テーブル65内に登録する。
更に、エージェント15Bの通信部54は、ステップS142にて分解したtelnet>open[25A,30A]のコマンド宛先の確立情報をマネージャ25Aに送信する(ステップS148)。マネージャ25Aの分析部63は、コマンド宛先に対応した確立情報を分析する(ステップS149)。判定部64は、管理テーブル65を参照して、コマンド宛先に対応したマネージャ25Aとルータ30Aとの間の確立済みのセッションを分析する。
判定部64は、コマンド宛先に対応した確立済みの使用状態が“空き”のセッションがあると判定する(ステップS150)。そして、マネージャ25Aを経由してエージェント15Bとルータ30Aとの間のセッションが確立する。従って、マネージャ25Aの登録部66は、マネージャ25Aとルータ30Aとの間の確立済みのセッション(25A/30A)の使用状態65Cを“使用中”として管理テーブル65内に登録する。
そして、中継部62は、確立済みの“空き”のセッションがあると判定されると、エージェント15Bとルータ30Aとの間の確立完了を示す確立OKをエージェント15Bに送信する(ステップS151)。更に、エージェント15Bの通信部54は、確立OKを受信した場合、確立済みの新規セッション(15B/25A)を使用して、コマンドに対応するデータ送信(push)をマネージャ25Aに送信する(ステップS152)。
更に、マネージャ25Aの中継部62は、確立済みの“空き”のセッション(25A/30A)を使用して、エージェント15Bからのデータ送信(push)をルータ30Aに中継する(ステップS153)。その結果、ルータ30Aは、データ送信(push)を受信すると、データ送信(push)に対応したコマンド内容を実行し、そのコマンド応答結果を取得する。
そして、ルータ30Aは、確立済みのセッションを使用して、コマンド内容に対応する応答結果であるデータ送信応答(push+ack)をマネージャ25Aに送信する(ステップS154)。マネージャ25Aの中継部62は、データ送信応答(push+ack)をエージェント15Bに中継する(ステップS155)。その結果、エージェント15Bは、確立済みのセッションを使用してマネージャ25A経由でルータ30Aを遠隔操作したことになる。
マネージャ25A内の制御部69は、ルータ30Aからのデータ送信応答(push+ack)をエージェント15Bに中継すると、使い回す前の確立済みのセッション(15A/25A,25A/30A)の使用状態を“空き”と判定する(ステップS156)。そして、マネージャ25A内の登録部66は、使い回す前の確立済みのセッションの使用状態65Cを“空き”として管理テーブル65内に更新する(ステップS157)。通信部61は、管理テーブル65のテーブル更新をエージェント15A及びエージェント15Bに送信する(ステップS158)。その結果、エージェント15A及び15Bは、確立済みのセッションの使用状態が“空き”に更新されたことを認識できる。尚、登録部66は、ステップS157にて使い回す前の確立済みのセッションの使用状態を更新するのではなく、使用後の確立済みのセッション(15B/25A,25A/30A)の使用状態を更新しても良い。
図11の例では、エージェント15Bとマネージャ25Aとの間の新規セッション、マネージャ25Aとルータ30Aとの間の確立済みの“空き”のセッションを使用して、他のクライアントのコマンドに関わるデータ送信及び送信応答を実行できる。
図12は、セッション監視処理に関わるマネージャ25の処理動作の一例を示すフローチャートである。図12に示すセッション監視処理では、エージェント15とマネージャ25との間、及びマネージャ25とルータ30との間で確立済みのセッションの使用状態を監視し、確立済みのセッション毎に使用状態を管理テーブル65に更新する処理である。図12においてマネージャ25の中継部62は、ルータ30から信号を受信したか否かを判定する(ステップS201)。
制御部69は、ルータ30から信号を受信した場合に(ステップS201肯定)、ルータ30からデータ送信応答(push+ack)を受信したか否かを判定する(ステップS202)。制御部69は、ルータ30からデータ送信応答(push+ack)を受信した場合に(ステップS202肯定)、データ送信応答(push+ack)の受信に使用したセッションのセッションIDを識別する(ステップS203)。
中継部62は、セッションIDを識別すると、ルータ30から受信したデータ送信応答(push+ack)をエージェント15に送信する(ステップS204)。制御部69は、データ送信応答(push+ack)の送信に使用したセッションが確立済みの“空き”のセッションを使用したか否かを判定する(ステップS205)。登録部66は、確立済みの“空き”のセッションを使用した場合(ステップS205肯定)、該当セッションの使用状態65Cを“空き”として管理テーブル65内に更新する(ステップS206)。更に、制御部69は、当該マネージャ25に接続するエージェント15に管理テーブル65内のテーブル更新を通知し(ステップS207)、図12に示す処理動作を終了する。
また、制御部69は、確立済みの“空き”のセッションを使用しなかった場合に(ステップS205否定)、データ送信応答(push+ack)に使用した確立済みのセッションを“空き”と判定する(ステップS208)。更に、登録部66は、確立済みのセッションの使用状態65Cを“空き”として管理テーブル65内に更新し(ステップS209)、テーブル更新を通知すべく、ステップS207に移行する。
また、中継部62は、ルータ30から信号を受信しなかった場合(ステップS201否定)、この処理動作を終了する。また、制御部69は、ルータ30からデータ送信応答(push+ack)を受信しなかった場合(ステップS202否定)、この確立済みのセッションのセッションIDを識別する(ステップS210)。制御部69は、確立済みのセッションのセッションIDを識別すると、このセッションIDに対応したセッションの使用状態を“使用中”と判定する(ステップS211)。更に、登録部66は、セッションID65Aの使用状態65Cを“使用中”として管理テーブル65内に更新することで(ステップS212)、テーブル更新を通知すべく、ステップS207に移行する。
図12に示すセッション監視処理では、ルータ30からコマンドに対応するデータ送信応答(push+ack)を受信し、データ送信応答(push+ack)をコマンド発信先のエージェント15に中継する。更に、セッション監視処理では、確立済みの“空き”のセッションを使用してコマンドを中継した場合、当該セッションの使用状態65Cを“空き”として管理テーブル65内に更新する。その結果、管理テーブル65は、確立済みの“空き”のセッションを管理できる。
セッション監視処理では、ルータ30からコマンドに対応するデータ送信応答(push+ack)を受信し、データ送信応答(push+ack)をコマンド発信先のエージェント15に中継する。更に、セッション監視処理では、新規セッションを使用してコマンドのデータ送信及びデータ送信応答を中継した場合、当該セッションの使用状態65Cを“空き”として管理テーブル65内に更新する。その結果、管理テーブル65は、確立済みの“空き”のセッションを管理できる。
また、セッション監視処理では、確立済みのセッションを使用してデータ送信応答以外の信号を受信した場合、確立済みのセッションの使用状態65Cを“使用中”として管理テーブル65内に更新する。その結果、管理テーブル65は、確立済みの“使用中”のセッションを管理できる。
図13は、エージェント側コマンド送信処理に関わるエージェント15の処理動作の一例を示すフローチャートである。図13に示すエージェント側コマンド送信処理では、telnet実行部14で発行したルータ30宛のコマンドのデータ送信(push)をエージェント15からマネージャ25へと送信する処理である。図13においてエージェント15の検出部51は、telnet実行部14で発行したコマンドを検出したか否かを判定する(ステップS221)。分析部52は、コマンドを検出した場合(ステップS221肯定)、コマンド内容を分析する(ステップS222)。判定部53は、コマンドの分析結果と管理テーブル65のテーブル内容とを比較し(ステップS223)、コマンド宛先に対応した確立済みのセッションが管理テーブル65内にあるか否かを判定する(ステップS224)。
判定部53は、コマンド宛先に対応した確立済みのセッションが管理テーブル65内にある場合(ステップS224肯定)、管理テーブル65を参照して、確立済みセッションの使用状態が“空き”であるか否かを判定する(ステップS225)。通信部54は、確立済みのセッションの使用状態が“空き”である場合に(ステップS225肯定)、確立済みの“空き”のセッションを使用してコマンド宛先の確立情報をマネージャ15に送信する(ステップS226)。更に、通信部54は、マネージャ25から確立OKを受信したか否かを判定する(ステップS227)。通信部54は、確立OKを受信した場合(ステップS227肯定)、確立済みの“空き”のセッションを使用してコマンドに対応したデータ送信(push)を実行し(ステップS228)、図13に示す処理動作を終了する。
また、判定部53は、確立済みのセッションの使用状態が“空き”でない場合(ステップS225否定)、新規セッションが確立可能な状況下にあるか否かを判定する(ステップS229)。通信部54は、新規セッションが確立可能な状況下にある場合(ステップS229肯定)、新規セッションを確立する新規セッション確立処理を実行する(ステップS230)。更に、通信部54は、新規セッション確立処理を実行すると、新規セッションを使用してコマンド宛先の確立情報をマネージャ25に送信する(ステップS231)。更に、通信部54は、マネージャ25から確立OKを受信したか否かを判定する(ステップS232)。通信部54は、確立OKを受信した場合(ステップS232肯定)、確立済みの新規セッションを使用してコマンドに対応したデータ送信(push)を実行し(ステップS233)、図13に示す処理動作を終了する。
また、検出部51は、コマンドを検出しなかった場合(ステップS221否定)、図13に示す処理動作を終了する。また、判定部53は、コマンド宛先に対応した確立済みセッションがない場合(ステップS224否定)、新規セッションが確立可能な状況下であるか否かを判定すべく、ステップS229に移行する。また、通信部54は、新規セッションが確立可能な状況下でない場合(ステップS229否定)、待機して(ステップS234)、確立済みの該当セッションがあるか否かを判定すべく、ステップS224に移行する。また、通信部54は、確立OKを受信しなかった場合(ステップS227否定)、確立OKを受信したか否かを監視すべく、ステップS227に移行する。また、通信部54は、確立OKを受信しなかった場合(ステップS232否定)、確立OKを受信したか否かを監視すべく、ステップS232に移行する。
図13に示すエージェント側コマンド送信処理では、コマンドを検出すると、コマンド宛先に対応した確立済みの“空き”のセッションがあるか否かを判定する。更に、エージェント側コマンド送信処理では、コマンド宛先に対応した確立済みの“空き”のセッションがある場合、確立済みの“空き”のセッションを使用してコマンドのデータ送信(push)をマネージャ25に中継する。その結果、エージェント15は、新規セッションを確立しなくても、確立済みの“空き”のセッションを使用してコマンドのデータ送信(push)をマネージャ25に中継できる。
エージェント側コマンド送信処理では、コマンド宛先に対応した確立済みの“空き”のセッションがなく、新規セッションが確立可能な状況下である場合、新規セッションを確立する。そして、エージェント側コマンド送信処理では、確立済みの新規セッションを使用してコマンドのデータ送信(push)をマネージャ25に中継する。その結果、エージェント15は、確立済みの“空き”のセッションがなくても、新規セッションが確立可能な状況下であれば、新規セッションを確立すると共に、この新規セッションを使用してコマンドのデータ送信(push)をマネージャ25に中継できる。
エージェント側コマンド送信処理では、コマンド宛先に対応した確立済みの“空き”のセッションがなく、新規セッションが確立可能な状況下でない場合、コマンドのデータ送信(push)に使用するセッションが空くまで待機する。
図14は、マネージャ側コマンド送信処理に関わるマネージャ25の処理動作の一例を示すフローチャートである。図14に示すマネージャ側コマンド送信処理では、エージェント15から受信したコマンドをルータ30に中継する処理である。図14においてマネージャ25の分析部63は、エージェント15から確立情報を受信したか否かを判定する(ステップS241)。分析部63は、確立情報を受信した場合(ステップS241肯定)、確立情報を分析する(ステップS242)。判定部64は、確立情報の分析結果と管理テーブル65のテーブル内容とを比較し(ステップS243)、コマンド宛先の確立情報に対応した確立済みのセッションが管理テーブル65内にあるか否かを判定する(ステップS244)。
判定部64は、確立情報に対応した確立済みのセッションが管理テーブル65内にある場合(ステップS244肯定)、管理テーブル65を参照して、当該確立済みのセッションの使用状態が“空き”であるか否かを判定する(ステップS245)。中継部62は、確立済みのセッションの使用状態が“空き”である場合に(ステップS245肯定)、確立済みの“空き”のセッションを使用して確立OKをエージェント15に送信したか否かを判定する(ステップS246)。中継部62は、確立OKをエージェント15に送信した場合(ステップS246肯定)、当該確立済みの“空き”のセッションを使用してコマンドのデータ送信を実行し(ステップS247)、図14に示す処理動作を終了する。
また、判定部64は、確立済みのセッションの使用状態が“空き”でない場合(ステップS245否定)、新規セッションが確立可能な状況下にあるか否かを判定する(ステップS248)。中継部62は、新規セッションが確立可能な状況下にある場合(ステップS248肯定)、新規セッションを確立する新規セッション確立処理を実行する(ステップS249)。更に、中継部62は、新規セッション確立処理を実行すると、確立OKをエージェント15に送信したか否かを判定する(ステップS250)。更に、中継部62は、確立OKをエージェント15に送信した場合(ステップS250肯定)、新規セッションを使用してコマンドのデータ送信(push)を実行し(ステップS251)、図14に示す処理動作を終了する。
また、分析部63は、エージェント15から確立情報を受信しなかった場合(ステップS241否定)、図14に示す処理動作を終了する。また、判定部64は、コマンド宛先の確立情報に対応した確立済みセッションがない場合(ステップS244否定)、新規セッションが確立可能な状況下であるか否かを判定すべく、ステップS248に移行する。また、中継部62は、新規セッションが確立可能な状況下でない場合(ステップS248否定)、待機して(ステップS252)、確立済みの該当セッションがあるか否かを判定すべく、ステップS244に移行する。
また、中継部62は、確立OKを送信しなかった場合(ステップS246否定)、確立OKを送信したか否かを監視すべく、ステップS246に移行する。また、中継部62は、確立OKを送信しなかった場合(ステップS250否定)、確立OKを送信したか否かを監視すべく、ステップS250に移行する。
図14に示すマネージャ側コマンド送信処理では、確立情報を検出すると、コマンド宛先に対応した確立済みの“空き”のセッションがあるか否かを判定する。更に、マネージャ側コマンド送信処理では、コマンド宛先に対応した確立済みの“空き”のセッションがある場合に、確立済みの“空き”のセッションを使用してコマンドのデータ送信(push)をルータ30に中継する。その結果、マネージャ25は、新規セッションを確立しなくても、確立済みの“空き”のセッションを使用してコマンドのデータ送信(push)をルータ30に中継できる。
マネージャ側コマンド送信処理では、コマンド宛先に対応した確立済みの“空き”のセッションがなく、新規セッションが確立可能な状況下にある場合、新規セッションを確立してコマンドのデータ送信(push)をルータ30に中継する。その結果、マネージャ25は、確立済みの“空き”のセッションがなくても、新規セッションが確立可能な状況下であれば、新規セッションを確立してコマンドのデータ送信をルータ30に中継できる。
マネージャ側コマンド送信処理では、コマンド宛先に対応した確立済みの“空き”のセッションがなく、新規セッションが確立可能な状況下でない場合、データ送信(push)に使用するセッションが空くまで待機する。
図15は、セッション許可数決定処理に関わるマネージャ25の処理動作の一例を示すフローチャートである。図15に示すセッション許可数決定処理では、マネージャ25自体が確立できるセッション許可数を自立的に決定する処理である。図15においてマネージャ25の通信部61は、ルータ30と通信して当該ルータ30自体が確立できるセッション上限数を取得する(ステップS261)。通信部61は、ルータ30に接続する中継サーバ20や接続元端末10にブロードキャスト送信する。通信部61は、ブロードキャスト送信に対する返信数に基づき、ルータ30の接続台数を取得する(ステップS262)。決定部67は、取得されたセッション上限数及び接続台数に基づき、(セッション上限数/接続台数)の式でセッション許可数を算出する(ステップS263)。決定部67は、算出したセッション許可数を自己のセッション上限として決定し(ステップS264)、図15に示す処理動作を終了する。
図15に示すセッション許可数決定処理では、ルータ30のセッション上限数及び接続台数を収集し、これら収集されたセッション上限数/接続台数に基づき、セッション許可数を自立的に決定する。その結果、各中継サーバ20は、自分のセッション許可数を自立的に決定できる。
図16は、セッション許可数調整処理に関わるマネージャ25の処理動作を示すフローチャートである。図16に示すセッション許可数調整処理では、中継サーバ20のマネージャ25同士の通信に応じて自己のセッション許可数を決定する処理である。図16においてマネージャ25の貸与部68は、現在確立済みのセッション数がセッション許可数を超えるか否かを判定する(ステップS271)。
貸与部68は、現在確立済みのセッション数がセッション許可数を超える場合(ステップS271肯定)、ルータ30に直接接続する各中継サーバ20に対して貸与要求をブロードキャスト送信する(ステップS272)。尚、各中継サーバ20のマネージャ25内の貸与部68は、貸与要求に応じてセッション許可数の範囲内で貸与可能な未確立のセッションがある場合、貸与数を貸与要求発行元の中継サーバ20に返信する。
貸与部68は、貸与要求のブロードキャスト送信後、応答タイマを起動する(ステップS273)。貸与部68は、応答タイマがタイムアップしたか否かを判定する(ステップS274)。貸与部68は、応答タイマがタイムアップした場合(ステップS274肯定)、貸与要求に対する貸与数を受信したか否かを判定する(ステップS275)。決定部67は、貸与要求に対する貸与数を受信した場合(ステップS275肯定)、受信した貸与数に応じて現在のセッション許可数を更新し(ステップS276)、図16に示す処理動作を終了する。決定部67は、例えば、セッション許可数が5本で、貸与数が2本の場合、自分のセッション許可数は7本となる。その結果、この中継サーバ20は、確立済みのセッション数がセッション許可数“5本”を超えたとしても、他の中継サーバ20から未確立の空きセッションを貸借できる。
また、貸与部68は、貸与要求に対する貸与数を受信しなかった場合(ステップS275否定)、図16に示す処理動作を終了する。貸与部68は、現在確立済みのセッション数がセッション許可数を超えない場合(ステップS271否定)、他の中継サーバ20から貸与要求を受信したか否かを判定する(ステップS277)。貸与部68は、他の中継サーバ20から貸与要求を受信した場合(ステップS277肯定)、現在の状態がセッション貸与可能な状況下であるか否かを判定する(ステップS278)。貸与部68は、現在の状態がセッション貸与可能な状況下である場合(ステップS278肯定)、貸与要求に対して貸与数を貸与要求発行元の中継サーバ20に送信する(ステップS279)。
決定部67は、貸与数を貸与要求発行元の中継サーバ20に送信すると、その貸与数に応じて現在のセッション許可数を更新し(ステップS280)、図16に示す処理動作を終了する。すなわち、決定部67は、セッション許可数が5本で、他の中継サーバ20に貸与する貸与数が1本の場合、自分のセッション許可数は4本となる。
図16に示すセッション許可数調整処理では、各マネージャ25同士で相互通信して各マネージャ25のセッション許可数を相互に貸借することで、各マネージャ25で設定されたセッション許可数を調整できる。
実施例1の中継システム1では、エージェント15とマネージャ25との間で確立済みの空きセッションがある場合、空きセッションを使用してエージェント15とマネージャ25との間で他のアプリのコマンドのデータ送信及びデータ送信応答を実行する。更に、中継システム1では、マネージャ25とルータ30との間で確立済みの空きセッションがある場合、空きセッションを使用してマネージャ25とルータ30との間で他のアプリのコマンドのデータ送信及びデータ送信応答を実行する。その結果、接続元端末10、中継サーバ20及びルータ30は、確立済みの空きセッションを他のアプリからのコマンドのデータ送信及びデータ送信応答に使い回すことで、新規セッション確立の処理を省略して、その処理負担を軽減できる。
実施例1の中継システム1では、エージェント15からマネージャ25経由でルータ30に対してハートビートメッセージを所定タイミングで送信するため、エージェント15とルータ30との間の確立済みのセッションを継続して維持できる。すなわち、エージェント15とマネージャ25との間、マネージャ25とルータ30との間で確立済みのセッションを継続して維持できる。
実施例1のマネージャ25は、確立済みのセッションを使用してコマンドのデータ送信応答を受信し、当該データ送信応答をエージェント15に中継した場合、当該確立済みのセッションの使用状態65Cを“空き”として管理テーブル65に登録する。その結果、エージェント15及びマネージャ25は、管理テーブル65のテーブル内容を参照して、確立済みのセッションの使用状態を認識できる。
実施例1の中継サーバ20では、ルータ30側でセッション確立可能なセッション上限数と、当該ルータ30側とセッション確立可能に接続した中継サーバ20の接続台数とを収集する。更に、中継サーバ20は、セッション上限数及び接続台数に基づき、中継サーバ20自体がセッション確立を許可できるセッション許可数を算出する。その結果、中継サーバ20は、セッション許可数を自立的に算出し、このセッション許可数の範囲内でセッションを許可できる。
実施例1の中継サーバ20は、ルータ30側と接続するセッション確立可能な他の中継サーバ20からの貸与要求を検出すると、中継サーバ20自体のセッション許可数の範囲内で未確立のセッションがあるか否かを判定する。中継サーバ20は、未確立のセッションがある場合、未確立のセッションを他の中継サーバ20に貸与する。更に、中継サーバ20は、他の中継サーバ20から未確立のセッションの貸与を検出すると、貸与されたセッション数に応じて当該中継サーバ20自体のセッション許可数を決定する。その結果、中継サーバ20は、他の中継サーバ20との間で未確立のセッションを貸借することでセッション許可数を調整できる。
尚、上記実施例1の中継サーバ20では、確立済みのセッションを使用して接続元端末10とルータ30との間でコマンドのデータ送信及び応答結果を中継した。しかしながら、以下に説明するようにしても良く、この場合の実施の形態につき、実施例2として説明する。
図17は、実施例2の中継システムに関わるマネージャの機能一例を示す説明図である。尚、実施例1の中継システム1と同一の構成には同一符号を付すことで、その重複する構成及び動作の説明については省略する。図17に示すマネージャ251は、通信部61、中継部62、確立部62A、分析部63、判定部64、管理テーブル65、登録部66、決定部67、貸与部68及び制御部69を有する。更に、マネージャ251は、キャッシュ71、キャッシュ登録部72及び返信部73を有する。
キャッシュ登録部72は、中継部62を通じてコマンドのデータ送信に対応した応答結果を受信すると、コマンドのデータ送信の内容及び、このデータ送信の内容に対応した応答結果をキャッシュ71に登録する。また、キャッシュ登録部72は、コマンドのデータ送信の内容及び応答結果をキャッシュ71に登録すると、例えば、そのキャッシュ登録から1分後に登録されたコマンドのデータ送信の内容及び応答結果をキャッシュ71から消去する。尚、キャッシュ71に登録されるデータ送信の内容及び応答結果は、例えば、1分以内で応答結果が変更される可能性のないデータ送信の内容及び応答結果に限定するものである。
また、返信部73は、確立済みのセッションを使用してエージェント15からコマンドのデータ送信を検出すると、当該データ送信の内容がキャッシュ71内に登録済みであるか否かを判定する。返信部73は、当該データ送信の内容がキャッシュ71内に登録済みの場合、当該データ送信の内容に対応した応答結果をキャッシュ71から読み出す。返信部73は、データ送信の内容がキャッシュ71内に登録済みの場合、当該データ送信をルータ30に中継せず、キャッシュ71に登録済みのデータ送信の内容に対応した応答結果をエージェント15に返信する。
次に実施例2の中継システム1の動作について説明する。図18は、重複コマンド返信処理に関わるマネージャ251の処理動作の一例を示すフローチャートである。図18に示す重複コマンド返信処理では、コマンドのデータ送信に対応する応答結果をルータ30から取得すると、このデータ送信の内容及び応答結果を対応付けてキャッシュ71に登録する。更に、重複コマンド返信処理では、再度、同一のデータ送信を検出すると、ルータ30にデータ送信を中継することなく、データ送信に対応する応答結果をキャッシュ71から読み出し、この読み出した応答結果をエージェント15に返信する処理である。
図18においてマネージャ251の返信部73は、エージェント15からコマンドのデータ送信を受信したか否かを判定する(ステップS291)。返信部73は、エージェント15からデータ送信を受信した場合(ステップS291肯定)、データ送信の内容に対応した応答結果がキャッシュ71内に登録済みであるか否かを判定する(ステップS292)。返信部73は、応答結果がキャッシュ71内に登録済みである場合(ステップS292肯定)、コマンドのデータ送信をルータ30に中継せず、コマンドのデータ送信に対応した応答結果をエージェント15に返信する(ステップS293)。そして、マネージャ251は、図18に示す処理動作を終了する。
返信部73は、エージェント15からコマンドのデータ送信を受信しなかった場合(ステップS291否定)、図18に示す処理動作を終了する。また、返信部73は、コマンドのデータ送信の内容に対応した応答結果がキャッシュ71内にない場合(ステップS292否定)、当該コマンドのデータ送信をルータ30に中継する(ステップS294)。更に、キャッシュ登録部72は、中継部62を通じてコマンドのデータ送信に対応する応答結果を受信すると(ステップS295)、コマンドのデータ送信の内容及び応答結果を対応付けてキャッシュ71に登録する(ステップS296)。更に、中継部62は、コマンドのデータ送信の内容に対応する応答結果をエージェント15に送信すべく、ステップS293に移行する。尚、キャッシュ登録部72は、コマンドのデータ送信の内容及び応答結果を対応付けてキャッシュ71に登録すると、例えば、1分間のタイマを開始する。更に、キャッシュ登録部72は、1分間タイマがタイムアウトすると、当該登録済みのコマンドのデータ送信の内容及び応答結果をキャッシュ71から消去する。
図18に示す重複コマンド返信処理では、コマンドのデータ送信に対応する応答結果をルータ30から受信すると、コマンドのデータ送信の内容及び応答結果を対応付けてキャッシュ71に登録する。更に、重複コマンド返信処理では、エージェント15からコマンドのデータ送信を検出すると、当該データ送信の内容、すなわちコマンドの内容がキャッシュ71内に登録済みの場合、当該データ送信の内容に対応した応答結果をキャッシュ71から読み出してエージェント15に返信する。その結果、エージェント15は、重複コマンド、すなわち同一のデータ送信の内容に対する応答結果の待ち時間を大幅に短縮化できる。
そして、接続先装置であるルータ30へのアクセス回数が減り、接続先装置の負荷軽減を図ることができる。
実施例2のマネージャ251は、コマンドのデータ送信に対応する応答結果をルータ30から受信した場合、データ送信の内容及び応答結果を対応付けてキャッシュ71に登録する。更に、マネージャ251は、データ送信を受信すると、当該データ送信の内容に対応する応答結果がキャッシュ71に登録済みの場合、データ送信をルータ30に中継することなく、当該キャッシュ71に登録済みの応答結果をエージェント15に返信する。その結果、エージェント15は、重複コマンド、すなわち同一のデータ送信の内容に対する応答結果の待ち時間を大幅に短縮化できる。
尚、上記実施例では、コマンドの対象としてルータ30を例示したが、ルータに限定されるものではなく、レイヤ2スイッチ等のネットワーク機器等の通信機器に適用しても良い。
また、上記実施例のtelnet実行部14が実行するコマンドはtelnetコマンドに限定されるものではない。telnet実行部14が実行するコマンドは、ネットワーク5上の他のコンピュータ等と通信を行うアプリケーションプログラム、例えば、rsh(remote shell)、rlogon(remote login)、SSH(Secure SHell)等のコマンドであっても良い。また、ネットワーク5上の他のコンピュータ等と通信を行うアプリケーションプログラムは、列挙のものに限らず、セッション確立を要するアプリケーションプログラムであれば、何れでも良い。
また、上記実施例では、管理テーブル65をマネージャ25内に配置するようにしたが、中継サーバ20と外部接続するメモリ装置で管理するようにしても良い。また、同様に、管理テーブル65をマネージャ25だけでなく、接続元端末10内に持たせるようにしても良い。また、上記実施例では、エージェント15をソフトウェア機能として接続元端末10内のCPU13で実行すると共に、マネージャ25をソフトウェア機能として中継サーバ20内のCPU23で実行した。しかしながら、各機能を実行するハードウェアとして機能部を設けるようにしても良い。
また、上記実施例では、エージェント15が、マネージャ25とルータ30との間のセッションを確立してマネージャ25から確立OKを受信すると、コマンドのデータ送信(push)を確立済みのセッションを使用してマネージャ25に送信した。しかしながら、エージェント15は、マネージャ25との間のセッションが確立した後、当該確立済みのセッションを使用してコマンドのデータ送信(push)をマネージャ25に送信する。そして、マネージャ25は、エージェント15からデータ送信(push)を受信すると、データ送信(push)を一時的に保管する。そして、マネージャ25は、ルータ30とのセッション確立を検出すると、当該確立済みのセッションを使用して一時的に保管されたデータ送信(push)をルータ30に送信しても良い。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
更に、各装置で行われる各種処理機能は、CPU(Central Processing Unit)(又はMPU(Micro Processing Unit)、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、CPU(又はMPU、MCU等のマイクロ・コンピュータ)で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
ところで、本実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図19を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図19は、通信プログラムを実行するコンピュータを示す説明図である。
図19に示すコンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータの入力を受け付ける入力装置402と、各種情報を表示出力するモニタ403とを有する。更に、コンピュータ400は、記憶媒体からプログラム等を読取る媒体読取装置404と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインタフェース装置405とを有する。更に、コンピュータ400は、各種情報を一時記憶するRAM406(Random Access Memory)と、ハードディスク装置407とを有する。各装置401〜407は、バス408に接続される。
そして、ハードディスク装置407には、上記の実施例と同様の機能を発揮する通信プログラムが予め記憶されている。通信プログラムとしては、図19に示すように、確立プログラム411、判定プログラム412及び通信プログラム413である。尚、プログラム411〜413については、図3に示すマネージャ25の各構成要素と同様、適宜統合又は分散してもよい。更に、ハードディスク装置407は、確立済みセッションの使用状態を記憶する。
CPU401は、確立プログラム411、判定プログラム412及び通信プログラム413をハードディスク装置407から読み出してRAM406に展開することにより、当該プログラムを実行する。その結果、図19に示すように、各プログラム411〜413は、確立プロセス421、判定プロセス422及び通信プロセス423として機能するようになる。尚、各プログラム411〜413は、必ずしもハードディスク装置407に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたプログラムを、コンピュータ400が読み出して実行しても良い。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等で接続した他のコンピュータに各プログラム411〜413を記憶しておき、コンピュータ400が各プログラム411〜413を読み出して実行しても良い。
CPU401は、接続先装置との間でセッションを確立する。更に、CPU401は、確立済みのセッションであって、接続元装置によって発行されたコマンドに対して空きセッションがあるか否かを判定する。CPU401は、接続元装置からコマンドを検出した際に、空きセッションがあると判定された場合には、当該空きセッションを用いて接続先装置との間で当該検出されたコマンドを通信する。更に、CPU401は、確立済みのセッションを継続して維持できる、接続先装置が有する所定時間内に、継続メッセージを接続先装置に当該セッションを用いて送信する。その結果、CPU401は、接続先装置との間で確立済みの空きセッションを他のアプリからのコマンドのデータ送信及びデータ送信応答に使い回すことで、新規セッション確立の処理を省略して、その処理負担を軽減できる。
以上、本実施例を含む実施の形態に関し、更に以下の付記を開示する。
(付記1)接続先装置との間でセッションを確立する確立部と、
前記確立部によって確立済みのセッションであって、接続元装置によって発行されたコマンドに対して空きセッションがあるか否かを判定する判定部と、
前記接続元装置から前記コマンドを検出した際に、前記判定部によって空きセッションがあると判定された場合には、当該空きセッションを用いて前記接続先装置との間で当該検出されたコマンドを通信すると共に、確立済みのセッションを継続して維持できる、前記接続先装置が有する所定時間内に、継続メッセージを前記接続先装置に当該セッションを用いて送信する通信部と
を有することを特徴とする通信装置。
(付記2)前記通信部は、
前記接続元装置から前記コマンドを検出した際に、前記判定部によって空きセッションがないと判定された場合には、前記確立部によって新たに確立されたセッションを用いて前記接続先装置との間で当該検出されたコマンドを通信することを特徴とする付記1に記載の通信装置。
(付記3)前記接続先装置から前記コマンドに対して応答済みのデータ送信応答を検出すると、当該データ送信応答の通信に使用した当該確立済みのセッションの使用状態を空き状態として、当該確立済みのセッションの使用状態を管理する管理部に登録する登録部をさらに有し、
前記判定部は、
前記管理部に登録された前記確立済みのセッションの使用状態に基づき、前記空きセッションがあるか否かを判定することを特徴とする付記1又は2に記載の通信装置。
(付記4)前記接続先装置とセッション確立可能なセッション上限数と、当該接続先装置とセッション確立可能に接続した装置の接続台数とを収集し、収集された前記セッション上限数及び前記接続台数に基づき、当該通信装置自体がセッション確立を許可できるセッション許可数を算出する算出部をさらに有し、
前記確立部は、
前記算出部にて算出された前記セッション許可数の範囲内で前記セッションを確立することを特徴とする付記1〜3の何れか一つに記載の通信装置。
(付記5)前記接続先装置と接続するセッション確立可能な他の通信装置からの貸与要求を検出すると、前記算出部にて算出された当該通信装置自体の前記セッション許可数の範囲内で未確立のセッションがある場合、当該未確立のセッションを、前記貸与要求を発行した前記他の通信装置に貸与する貸与部と、
他の通信装置から前記未確立のセッションの貸与を検出すると、貸与された未確立のセッション数に応じて当該通信装置自体の前記セッション許可数を決定する決定部と
をさらに有することを特徴とする付記4に記載の通信装置。
(付記6)前記接続先装置から前記コマンドのデータ送信に対する応答結果を受信すると、当該コマンドのデータ送信の内容に対応付けて前記応答結果を記憶する記憶部と、
前記コマンドを発行する接続元装置から前記コマンドのデータ送信を受信すると、当該コマンドのデータ送信の内容に対応した前記応答結果が前記記憶部内にある場合に、当該コマンドのデータ送信の内容に対応した前記応答結果を前記記憶部から読み出して前記接続元装置に返信する返信部と
をさらに有することを特徴とする付記1〜5の何れか一つに記載の通信装置。
(付記7)接続先装置に対するコマンドを当該接続先装置との間で通信する通信装置の通信方法であって、
前記通信装置は、
前記接続先装置との間でセッションを確立し、
前記接続先装置との間で確立済みのセッションであって、接続元装置によって発行された前記コマンドに対して空きセッションがあるか否かを判定し、
前記接続元装置から前記コマンドを検出した際に、前記空きセッションがあると判定された場合には、当該空きセッションを用いて前記接続先装置との間で当該検出されたコマンドを通信すると共に、確立済みのセッションを継続して維持できる、前記接続先装置が有する所定時間内に、継続メッセージを前記接続先装置に当該セッションを用いて送信する
ことを特徴とする通信方法。
(付記8)接続先装置に対するコマンドを当該接続先装置との間で通信するコンピュータの通信プログラムであって、
前記接続先装置との間でセッションを確立し、
前記接続先装置との間で確立済みのセッションであって、接続元装置によって発行された前記コマンドに対して空きセッションがあるか否かを判定し、
前記接続元装置から前記コマンドを検出した際に、前記空きセッションがあると判定された場合には、当該空きセッションを用いて前記接続先装置との間で当該検出されたコマンドを通信すると共に、確立済みのセッションを継続して維持できる、前記接続先装置が有する所定時間内に、継続メッセージを前記接続先装置に当該セッションを用いて送信する
各処理をコンピュータに実行させることを特徴とする通信プログラム。
(付記9)接続元装置と、当該接続元装置のアプリによって発行されたコマンドを実行する接続先装置と、前記接続元装置と前記接続先装置との間で前記コマンドを通信する中継装置と有する通信システムであって、
前記接続元装置は、
前記アプリからの前記コマンドを発行すると、当該コマンドの宛先に基づき、前記中継装置との間で確立済みのセッションであって、他のアプリからのコマンドに対して空きセッションがあるか否かを判定する判定部と、
前記中継装置との間で前記空きセッションがあると判定された場合に、当該空きセッションを用いて前記中継装置との間で前記発行されたコマンドを通信すると共に、確立済みのセッションを継続して維持できる、前記接続先装置が有する所定時間内に、継続メッセージを当該中継装置に当該セッションを用いて送信する通信部と
を有し、
前記中継装置は、
前記接続元装置との間で確立済みのセッションを使用してコマンドを検出すると、当該コマンドの宛先に基づき、前記接続先装置との間で確立済みのセッションであって、他のアプリからのコマンドに対して空きセッションがあるか否かを判定する判定部と、
前記接続先装置との間で前記空きセッションがあると判定された場合に、当該空きセッションを用いて前記接続先装置との間で前記検出されたコマンドを通信すると共に、確立済みのセッションを継続して維持できる、前記所定時間内に、継続メッセージを当該接続先装置に当該セッションを用いて送信する通信部と
を有することを特徴とする通信システム。