JP7291247B2 - 配送制御装置、配送制御方法及び配送制御プログラム - Google Patents
配送制御装置、配送制御方法及び配送制御プログラム Download PDFInfo
- Publication number
- JP7291247B2 JP7291247B2 JP2021562468A JP2021562468A JP7291247B2 JP 7291247 B2 JP7291247 B2 JP 7291247B2 JP 2021562468 A JP2021562468 A JP 2021562468A JP 2021562468 A JP2021562468 A JP 2021562468A JP 7291247 B2 JP7291247 B2 JP 7291247B2
- Authority
- JP
- Japan
- Prior art keywords
- server
- packet
- server process
- delivery control
- port number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
- H04L47/323—Discarding or blocking control packets, e.g. ACK packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Description
本発明は、配送制御装置、配送制御方法及び配送制御プログラムに関する。
クライアントサーバシステムでは、クライアントがサーバにパケットを送信すると、このパケットを受信したサーバは、このパケットの宛先のポート番号が待ち受けポート番号であるサーバプロセスにこのパケットを配送する。
サーバプログラムを起動することにより生成されるサーバプロセスの待ち受けポート番号は、当該サーバプログラムの開発者によって予め設定される。
ここでサーバプログラムの開発者は他のサーバプログラムにおいて設定される待ち受けポート番号を事前に把握できない。そのため、サーバプロセスの待ち受けポート番号が複数のサーバプログラムにおいて重複することがある。
この場合、重複する待ち受けポート番号が宛先であるパケットの配送先のサーバプロセスを特定できない。
本発明は上記実情に鑑みてなされたものであって、その目的の一つは、複数のサーバプロセスにおいて待ち受けポート番号が重複していても、当該待ち受けポート番号を宛先とするパケットを適切に配送できる配送制御装置、配送制御方法及び配送制御プログラムを提供することにある。
上記課題を解決するために、本発明に係る配送制御装置は、互いに異なるサーバプログラムを起動することにより生成される、待ち受けポート番号が同じである複数の実行中のサーバプロセスを検出する検出部と、検出される前記複数の実行中のサーバプロセスのうち、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御するプロセス制御部と、前記待ち受けポート番号が宛先であるパケットを受信する受信部と、受信する前記パケットを前記動作状態の前記サーバプロセスに配送する配送制御部と、を含む。
本発明の一態様では、パケットの送信元と当該パケットの配送先である前記サーバプロセスとが関連付けられたソケット管理データを記憶するソケット管理データ記憶部、をさらに含み、前記配送制御部は、前記ソケット管理データに登録されていない送信元から受信するパケットを、前記動作状態の前記サーバプロセスに配送する。
この態様では、前記配送制御部は、前記ソケット管理データにおいて前記待機状態の前記サーバプロセスと関連付けられている送信元から受信するパケットを破棄してもよい。
この場合、前記配送制御部は、前記パケットがTCP RSTパケットである場合は当該パケットを破棄せずに当該サーバプロセスに配送してもよい。
また、前記配送制御部は、前記パケットがTCP FINパケットである場合は当該パケット及び送信元が同じである後続するパケットを破棄せずに当該サーバプロセスに配送してもよい。
また、本発明の一態様では、前記プロセス制御部は、新たな前記サーバプロセスが生成される際に、当該サーバプロセスが動作状態になるように制御し、当該サーバプロセスと待ち受けポート番号が同じである動作状態の前記サーバプロセスを待機状態に遷移させる。
また、本発明の一態様では、前記プロセス制御部は、待機状態である前記サーバプロセスの指定に応じて、当該サーバプロセスを動作状態に遷移させるとともに、当該サーバプロセスと待ち受けポート番号が同じである動作状態の前記サーバプロセスを待機状態に遷移させる。
また、本発明に係る配送制御方法は、互いに異なるサーバプログラムを起動することにより生成される、待ち受けポート番号が同じである複数の実行中のサーバプロセスを検出するステップと、検出される前記複数の実行中のサーバプロセスのうち、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御するステップと、前記待ち受けポート番号が宛先であるパケットを受信するステップと、受信する前記パケットを前記動作状態の前記サーバプロセスに配送するステップと、を含む。
また、本発明に係る配送制御プログラムは、互いに異なるサーバプログラムを起動することにより生成される、待ち受けポート番号が同じである複数の実行中のサーバプロセスを検出する手順、検出される前記複数の実行中のサーバプロセスのうち、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御する手順、前記待ち受けポート番号が宛先であるパケットを受信する手順、受信する前記パケットを前記動作状態の前記サーバプロセスに配送する手順、をコンピュータに実行させる。
以下、本発明の一実施形態について図面に基づき詳細に説明する。
図1は、本発明の一実施形態に係るゲームシステム1の全体構成の一例を示す図である。図1に示すように、本実施形態に係るゲームシステム1には、端末10、端末12、及び、端末14が含まれている。端末10、端末12、及び、端末14は、インターネット等のコンピュータネットワーク16に接続されている。そのため端末10、端末12、及び、端末14は、コンピュータネットワーク16を介して互いに通信可能となっている。
図1に示すように、端末10には、例えば、プロセッサ10a、記憶部10b、通信部10c、操作部10d、表示部10eが含まれる。端末12には、例えば、プロセッサ12a、記憶部12b、通信部12c、操作部12d、表示部12eが含まれる。端末14には、例えば、プロセッサ14a、記憶部14b、通信部14c、操作部14d、表示部14eが含まれる。
プロセッサ10a、プロセッサ12a、プロセッサ14aは、それぞれ、例えば、端末10、端末12、端末14にインストールされるプログラムに従って動作するマイクロプロセッサ等のプログラム制御デバイスである。
記憶部10b、記憶部12b、記憶部14bは、例えばROMやRAM等の記憶素子や、ソリッドステートドライブ(SSD)などである。記憶部10b、記憶部12b、記憶部14bには、それぞれ、プロセッサ10a、プロセッサ12a、プロセッサ14a、によって実行されるプログラムなどが記憶される。
通信部10c、通信部12c、通信部14cは、例えば、無線LANモジュールなどの通信インタフェースである。通信部10cは、コンピュータネットワーク16を介して、端末12や端末14との間でデータを授受する。通信部12cは、コンピュータネットワーク16を介して、端末10や端末14との間でデータを授受する。通信部14cは、コンピュータネットワーク16を介して、端末10や端末12との間でデータを授受する。
操作部10d、操作部12d、操作部14dは、例えばユーザが行った操作の内容を、それぞれ、プロセッサ10a、プロセッサ12a、プロセッサ14aに出力するボタンやタッチセンサ等の操作部材である。
表示部10e、表示部12e、表示部14eは、例えば液晶ディスプレイや有機ELディスプレイ等のディスプレイである。
本実施形態では例えば、端末10において、複数のゲームプログラムを実行することができる。ただし、実行中である複数のゲームプログラムのうち動作状態であるものは1つに制限され、残りのゲームプログラムは待機状態(サスペンド状態)になるよう制御される。そのため本実施形態では、複数のゲームプログラムが同時に動作状態になっていることを考慮したゲームプログラムの品質保証タスク(QAタスク)を行う必要がない。
実行中のゲームプログラムが動作状態から待機状態に遷移すると、ワークメモリやレジスタ等に記憶されている当該ゲームプログラムの実行状態を示す状態データが、記憶部10bのメモリ又はSSDに設けられた退避領域に保存される。そして、当該ゲームプログラムが待機状態から動作状態に復帰(レジューム)すると、退避領域に保存されていた状態データが元の場所に戻される。
また、ゲームプログラムが動作状態である際に行われていた通信は、待機状態になると中断される。そして、当該ゲームプログラムが待機状態から動作状態に復帰すると、中断されていた通信が再開される。
以上のことは、端末12、及び、端末14においても同様である。
また、本実施形態に係るゲームプログラムは、マルチプレイのゲームのプログラムであり、クライアント機能とサーバ機能とを備えている。そして、本実施形態に係るゲームプログラムは、サーバとして機能するサーバモード又はクライアントとして機能するクライアントモードのいずれかの動作モードで動作させることができるようになっている。
本実施形態では例えば、ゲームプログラムをサーバモードで起動することで、当該ゲームプログラムに対応するサーバプロセスが生成される。本実施形態では例えば、ゲームプログラムに対応するサーバプロセスがバインドされる待ち受けポート番号は、当該ゲームプログラムの開発者によって予め設定されている。
また本実施形態では例えば、ゲームプログラムをクライアントモードで起動することで、当該ゲームプログラムに対応するクライアントプロセスが生成される。本実施形態では例えば、ゲームプログラムに対応するクライアントプロセスがバインドされるポートのポート番号は、空いているポート番号のうちからオペレーティングシステム等のシステムプログラムによって動的に決定される。
以下、本実施形態に係るゲームシステム1における動作の一例について説明する。以下の説明では、端末10、端末12、端末14のユーザを、それぞれ、ユーザA、ユーザB、ユーザCと呼ぶこととする。また、端末10、端末12、端末14に設定されたIPアドレスは、それぞれ、11.11.11.11、22.22.22.22、33.33.33.33であることとする。
当該動作例では、まず、図2に示すように、端末10が、ゲームプログラムApp1をサーバモードで起動する。このことによって、サーバプロセスS1が端末10に生成される。そして、サーバプロセスS1は、動作状態での実行を開始する。図2に示すように、サーバプロセスS1は、ポート番号50000にバインドされる。上述のように、サーバプロセスS1にバインドされるポート番号50000は、ゲームプログラムApp1において予め設定されている。
そして、端末12が、ゲームプログラムApp1をクライアントモードで起動する。このことによって、クライアントプロセスC1が端末12に生成される。そして、クライアントプロセスC1は、動作状態での実行を開始する。図2に示すように、クライアントプロセスC1は、ポート番号51000にバインドされる。上述のように、クライアントプロセスC1にバインドされるポート番号51000は、端末12で動作するシステムプログラムによって動的に割り当てられる。
そして、端末10と端末12との間で通信が行われることにより、ユーザAとユーザBは、ゲームプログラムApp1によって提供されるマルチプレイのゲームを楽しむことができる。端末10は、このゲームがプレイされている際に端末10のポート番号50000を宛先とするパケットを受信すると、端末10によってカーネルメモリに動的に確保されるサーバプロセスS1のソケットバッファに当該パケットを格納する。そして、サーバプロセスS1は、当該パケットに含まれるデータに応じた処理を実行する。このようにして、当該パケットは、動作状態であるサーバプロセスS1に配送される。
図3は、パケットの送信元と当該パケットの配送先であるサーバプロセスとが関連付けられたソケット管理データの一例を示す図である。図3に示すソケット管理データは、例えば、端末12の51000番ポートが送信元であり端末10の50000番ポートが宛先である最初のTCPパケットを端末10が受信した際に端末10に登録される。ソケット管理データには、例えば、プロセスID、プロトコルデータ、クライアントIPアドレス、クライアントポート番号、サーバIPアドレス、及び、サーバポート番号が含まれる。このように本実施形態に係るソケット管理データによって、サーバのソケットとクライアントのソケットとの組合せによって特定される通信経路が、当該通信経路によって通信されるパケットの配送先のサーバプロセスに関連付けられる。
ソケット管理データに含まれるプロセスIDには、当該ソケット管理データに対応付けられるプロセスの識別情報であるプロセスIDが設定される。ここでは、サーバプロセスS1のプロセスIDが1であることとする。
ソケット管理データに含まれるプロトコルデータは、当該ソケット管理データに対応付けられる通信経路での通信に用いられるプロトコルの種類を示すデータである。プロトコルデータの値の例としては、「TCP」、「UDP」などが挙げられる。
ソケット管理データのクライアントIPアドレス及びクライアントポート番号には、それぞれ、当該ソケット管理データに対応付けられるクライアントのIPアドレス及びポート番号が設定される。また、ソケット管理データのサーバソケットIPアドレス及びサーバソケットポート番号には、それぞれ、当該ソケット管理データに対応付けられるサーバのIPアドレス及びポート番号が設定される。
図3の例では、端末10の通信相手である端末12のIPアドレス及びポート番号が、それぞれ、当該ソケット管理データのクライアントIPアドレス、及び、クライアントポート番号の値に設定されている。また、端末10のIPアドレス及びポート番号が、それぞれ、当該ソケット管理データのサーバIPアドレス、及び、サーバポート番号の値に設定されている。
なお、ハンドシェイクによる通信経路の確立に応じて、当該通信経路に対応付けられるソケット管理データが登録されてもよい。
端末10と端末12との間での一連の通信が行われた後、図4に示すように、ユーザAが端末10を操作することにより、端末10でゲームプログラムApp2がサーバモードで起動され、サーバプロセスS2が生成されることとする。このとき、動作状態であったサーバプロセスS1は待機状態に遷移する。そして、サーバプロセスS2は、動作状態での実行を開始する。また、端末14でゲームプログラムApp2がクライアントモードで起動され、クライアントプロセスC2が生成されることとする。そして、クライアントプロセスC2は、動作状態での実行を開始する。
ここで例えば、ゲームプログラムApp2において予め設定されているポート番号が50000であり、サーバプロセスS2が、サーバプロセスS1と同様に、ポート番号50000にバインドされることとする。また、クライアントプロセスC2は、端末14で動作するシステムプログラムによって動的に割り当てられるポート番号52000にバインドされることとする。
そして、端末10と端末14との間で通信が行われることにより、ユーザAとユーザCは、ゲームプログラムApp2によって提供されるマルチプレイのゲームを楽しむことができる。
本実施形態では例えば、端末10で動作するカーネルによって、互いに異なるサーバプログラムを起動することにより生成される、待ち受けポート番号が同じである複数の実行中のサーバプロセスが検出される。そして、当該検出に応じて、当該複数の実行中のプロセスが動作状態であるか待機状態であるかを管理するための、図5に例示するサスペンド管理データが生成される。
サスペンド管理データには、例えば、端末10で実行中であるサーバプロセスの識別情報であるプロセスID、当該サーバプロセスの待ち受けポート番号、及び、サスペンドフラグ、が含まれる。ここで、上述のようにサーバプロセスS1のプロセスIDは1であることとする。また、サーバプロセスS2のプロセスIDは2であることとする。
サスペンド管理データに含まれるサスペンドフラグには、当該サスペンド管理データに対応付けられるサーバプロセスが動作状態であるか待機状態であるかを示す値が設定される。例えば、サスペンド管理データに対応付けられるサーバプロセスが動作状態である際には、当該サスペンド管理データに含まれるサスペンドフラグには値0が設定される。また、サスペンド管理データに対応付けられるサーバプロセスが待機状態である際には、当該サスペンド管理データに含まれるサスペンドフラグには値1が設定される。
端末10でサーバプロセスS2が生成され、動作状態であったサーバプロセスS1が待機状態に遷移すると、図5に示すように、プロセスIDの値が1であるサスペンド管理データ、及び、プロセスIDの値が2であるサスペンド管理データが端末10に登録される。ここで、プロセスIDの値が1であるサスペンド管理データのサスペンドフラグの値は1に設定される。そして、プロセスIDの値が2であるサスペンド管理データのサスペンドフラグの値は0に設定される。
端末10が、ゲームプログラムApp2によって提供されるゲームがプレイされている際に、端末14のポート番号52000を送信元とし、端末10のポート番号50000を宛先とするパケットを端末14から受信したとする。そしてこのとき、図3に示すように、端末14のIPアドレスやポート番号を含むソケット管理データが端末10に登録されていないとする。
この場合、本実施形態では、端末10は、図5に示すサスペンド管理データに基づいて特定される動作状態であるサーバプロセス(ここではサーバプロセスS2)を、受信した上述のパケットの配送先に決定する。そして、端末10は、受信した上述のパケットをこのようにして決定されるサーバプロセスS2のソケットバッファに格納する。当該ソケットバッファは、端末10によってカーネルメモリに動的に確保される。そして、サーバプロセスS2は、当該パケットに含まれるデータに応じた処理を実行する。このようにして、当該パケットは、動作状態であるサーバプロセスS2に配送される。
上述のように、サーバプログラムを起動することにより生成されるサーバプロセスの待ち受けポート番号は、当該サーバプログラムの開発者によって予め設定される。ここでサーバプログラムの開発者は他のサーバプログラムにおいて設定される待ち受けポート番号を事前に把握できない。そのため、サーバプロセスの待ち受けポート番号が複数のサーバプログラムにおいて重複することがある。
本実施形態では、複数のサーバプロセスにおいて待ち受けポート番号が重複していても、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御される。そして、重複する待ち受けポート番号が宛先である、端末10が受信したパケットは、動作状態のサーバプロセスに配送される。このようにして本実施形態によれば、複数のサーバプロセスにおいて待ち受けポート番号が重複していても、当該待ち受けポート番号を宛先とするパケットを適切に配送できることとなる。
また、本実施形態において、サーバプロセスS1が待機状態である際に、端末10が、端末12のポート番号51000を送信元とし、端末10のポート番号50000を宛先とするパケットを端末12から受信したとする。そしてこのとき図3に示す、端末12のポート番号51000とサーバプロセスS1とが関連付けられたソケット管理データが端末10に登録されているとする。
この場合、本実施形態では、端末10は、受信したパケットを待機状態であるサーバプロセスS1に配送せずに破棄する。この場合は、サーバプロセスS1のソケットバッファに当該パケットが格納されない。このようにして、本実施形態によれば、カーネルメモリの使用量を抑制することができる。
本実施形態では、端末14の52000番ポートが送信元であり端末10の50000番ポートが宛先である最初のTCPパケットを端末10が受信した際に、図6に示すように、プロセスIDの値が2である新たなソケット管理データが端末10に登録される。
その後、ユーザAが端末10を操作することにより、待機状態であったサーバプロセスS1が動作状態に復帰し、動作状態であったサーバプロセスS2が待機状態に遷移したとする。すると図7に示すように、プロセスIDの値が1であるサスペンド管理データのサスペンドフラグの値は0に変更され、プロセスIDの値が2であるサスペンド管理データのサスペンドフラグの値は1に変更される。
そして、ユーザAとユーザBは、ゲームプログラムApp1によって提供されるマルチプレイのゲームを再開することができる。また、サーバプロセスS1が待機状態であった際に中断されていた端末10と端末12との通信は再開される。そのため、例えば通信ができないことによるTCP RSTパケット(リセットパケット)の送信が端末12によって行われない程度の時間(例えば60秒)以内にサーバプロセスS1が復帰すると、ユーザAとユーザBのユーザ体験は維持されることとなる。
本実施形態において、サーバプロセスS1が待機状態である際に、端末10が、ソケット管理データにおいて待機状態であるサーバプロセスS1と関連付けられている送信元からTCP RSTパケットを受信したとする。この場合に、端末10は、当該パケットを破棄せずに待機状態であるサーバプロセスS1に配送してもよい。
当該TCP RSTパケットは、サーバプロセスS1が復帰するまでの間は、サーバプロセスS1のソケットバッファに格納される。そして、サーバプロセスS1が復帰すると、ソケットバッファに格納されたTCP RSTパケットに基づいて、サーバプロセスS1は、通信相手との通信を終了(リセット)する処理を実行する。
このようにすることで、サーバプロセスS1は、復帰した際に、通信相手との通信をリセットすべきであることを直ちに把握することが可能となる。そのため、TCP RSTパケットを送信した通信相手からのパケットを待ち受けるためのリソースを節約することができる。
また、本実施形態において、サーバプロセスS1が待機状態である際に、端末10が、ソケット管理データにおいて待機状態であるサーバプロセスS1と関連付けられている送信元からTCP FINパケット(終了パケット)を受信したとする。この場合に、端末10は、当該パケット及び送信元が同じである後続するパケットを破棄せずに待機状態であるサーバプロセスS1に配送してもよい。
これらのパケットは、サーバプロセスS1が復帰するまでの間は、サーバプロセスS1のソケットバッファに格納される。そして、サーバプロセスS1が復帰すると、ソケットバッファに格納されたこれらのパケットに基づいて、サーバプロセスS1は、通信相手から送信されたパケットをもれなく受信して、通信相手との通信を終了させることができる。
以下、本実施形態に係る端末10の機能及び端末10で実行される処理について、さらに説明する。
図8は、本実施形態に係る端末10で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係る端末10で、図8に示す機能のすべてが実装される必要はなく、また、図8に示す機能以外の機能が実装されていても構わない。
図8に示すように、端末10には、機能的には例えば、サスペンド管理データ記憶部20、ソケット管理データ記憶部22、プロセス管理部24、受信部26、配送制御部28、送信部30、が含まれる。
サスペンド管理データ記憶部20、ソケット管理データ記憶部22は、記憶部10bを主として実装される。プロセス管理部24、配送制御部28は、プロセッサ10aを主として実装される。受信部26、送信部30は、通信部10cを主として実装される。
以上の機能は、コンピュータである端末10にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ10aで実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介して端末10に供給されてもよい。
また、端末10では、上述のサーバプロセスS1やサーバプロセスS2などのプロセス32が実行される。
サスペンド管理データ記憶部20は、本実施形態では例えば、図5及び図7に例示されているサスペンド管理データを記憶する。
ソケット管理データ記憶部22は、本実施形態では例えば、図3及び図6に例示されているソケット管理データを記憶する。
プロセス管理部24は、本実施形態では例えば、端末10で実行されるプロセス32を管理する。プロセス管理部24の機能は、例えば、オペレーティングシステムのカーネルで実装される。プロセス管理部24は例えば、プロセス32を起動したり停止したりする。
また、プロセス管理部24は、互いに異なるサーバプログラムを起動することにより生成される、待ち受けポート番号が同じである複数の実行中のサーバプロセスを検出する。そして、プロセス管理部24は、検出されるこれら複数の実行中のサーバプロセスのうち、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御する。
ここで例えば、プロセス管理部24が、新たなサーバプロセスが生成される際に、当該サーバプロセスが動作状態になるように制御し、当該サーバプロセスと待ち受けポート番号が同じである動作状態のサーバプロセスを待機状態に遷移させてもよい。
例えば、プロセス管理部24がサーバプログラムを起動することで新たなサーバプロセスが生成されたとする。以下、当該サーバプロセスを新規サーバプロセスと呼ぶこととする。この場合、プロセス管理部24は、新規サーバプロセスと待ち受けポート番号が同じである動作状態のサーバプロセスが存在するか否かを確認する。以下、当該サーバプロセスを重複サーバプロセスと呼ぶこととする。ここで、このような重複サーバプロセスが存在する場合は、当該重複サーバプロセスを待機状態に遷移させる。そして、プロセス管理部24は、新規サーバプロセスの動作状態での実行を開始させる。
なお、新規サーバプロセスと待ち受けポート番号が異なる動作状態のサーバプロセスが存在していても問題はない。この場合は、当該サーバプロセスと新規サーバプロセスの両方が動作状態となる。
また、プロセス管理部24は、待機状態であるサーバプロセスの指定に応じて、当該サーバプロセスを動作状態に遷移させるとともに、当該サーバプロセスと待ち受けポート番号が同じである動作状態のサーバプロセスを待機状態に遷移させてもよい。
例えば、ユーザによって待機状態のサーバプロセスを指定する操作に応じて、当該サーバプロセスを動作状態に遷移させる。このとき、プロセス管理部24は、動作状態に復帰したサーバプロセスと待ち受けポート番号が同じである、動作状態のサーバプロセスを待機状態に遷移させる。このようにして、待ち受けポート番号が同じである複数の実行中のサーバプロセスは、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御される。
また、プロセス管理部24は、上述した、待ち受けポート番号が同じである複数の実行中のサーバプロセスの検出に応じて、サスペンド管理データを生成する。そしてプロセス管理部24は、生成されたサスペンド管理データをサスペンド管理データ記憶部20に記憶させる。例えば上述の重複サーバプロセスが存在することが確認された際に、サスペンドデータ管理データが生成されてもよい。
また、プロセス管理部24は、プロセス32の状態の変化に応じて、サスペンド管理データ記憶部20に記憶されるサスペンド管理データの追加、削除、更新などといった、サスペンド管理データの管理を実行する。例えば、サーバプロセスが動作状態から待機状態に遷移した際に、当該サーバプロセスに対応するサスペンド管理データのサスペンドフラグの値は0から1に変更される。逆に、サーバプロセスが待機状態から動作状態に遷移した際に、当該サーバプロセスに対応するサスペンド管理データのサスペンドフラグの値は1から0に変更される。
受信部26は、本実施形態では例えば、端末12又は端末14から送信されるパケットを受信する。
配送制御部28は、本実施形態では例えば、受信部26が受信するパケットをどのサーバプロセスに配送するかを制御する。配送制御部28の機能は、例えば、オペレーティングシステムのカーネルで実装される。配送制御部28は、例えば、複数のサーバプロセスで重複している待ち受けポート番号が宛先であるパケットを動作状態のサーバプロセスに配送する。ここで例えば、配送制御部28が、ソケット管理データに登録されていない送信元から受信するパケットを、動作状態のサーバプロセスに配送してもよい。
また、配送制御部28は、新たな通信経路を用いた通信の発生に応じて、当該通信経路に対応付けられるソケット管理データを生成する。そして、配送制御部28は、生成されたソケット管理データをソケット管理データ記憶部22に記憶させる。
配送制御部28は、ソケット管理データにおいて待機状態のサーバプロセスと関連付けられている送信元から受信するパケットを破棄してもよい。
ここで、配送制御部28は、上述のように、ソケット管理データにおいて待機状態のサーバプロセスと関連付けられている送信元から受信するパケットがTCP RSTパケットである場合は当該パケットを破棄せずに当該サーバプロセスに配送してもよい。
また、配送制御部28は、上述のように、ソケット管理データにおいて待機状態のサーバプロセスと関連付けられている送信元から受信するパケットがTCP FINパケットである場合は当該パケットを破棄せずに当該サーバプロセスに配送してもよい。この場合、配送制御部28は、送信元が同じである後続するパケットについても破棄せずに当該サーバプロセスに配送してもよい。
送信部30は、本実施形態では例えば、端末10で実行されているプロセス32が出力するパケットを送信先である端末12又は端末14に送信する。
ここで、本実施形態に係る端末10がサーバプログラムを起動することで新たなサーバプロセス(新規サーバプロセス)が生成された際に行われる処理の流れの一例を、図9に例示するフロー図を参照しながら説明する。
まず、プロセス管理部24は、新規サーバプロセスと待ち受けポート番号が同じである、動作状態であるサーバプロセス(重複サーバプロセス)が存在するか否かを確認する(S101)。
重複サーバプロセスが存在することが確認された場合は(S101:Y)、プロセス管理部24は、確認された重複サーバプロセスを待機状態に遷移させる(S102)。
そして、プロセス管理部24は、新規サーバプロセスに対応するサスペンド管理データを生成して、生成されたサスペンド管理データをサスペンド管理データ記憶部20に記憶させる(S103)。当該サスペンド管理データのサスペンドフラグの値は0に設定される。
そして、プロセス管理部24は、重複サーバプロセスに対応するサスペンド管理データがサスペンド管理データ記憶部20に記憶されているか否かを確認する(S104)。
記憶されている場合は(S104:Y)、プロセス管理部24は、当該サスペンド管理データのサスペンドフラグの値を0から1に変更する(S105)。
記憶されていない場合は(S104:N)、プロセス管理部24は、重複サーバプロセスに対応するサスペンド管理データを生成する。そして、プロセス管理部24は、生成されたサスペンド管理データをサスペンド管理データ記憶部20に記憶させる(S106)。この場合、生成されたサスペンド管理データのサスペンドフラグの値は1に設定される。
そして、プロセス管理部24は、新規サーバプロセスの動作状態での実行を開始させて(S107)、本処理例に示す処理は終了される。
S101に示す処理で、重複サーバプロセスが存在しないことが確認されたとする(S101:N)。この場合も、プロセス管理部24は、新規サーバプロセスの動作状態での実行を開始させて(S107)、本処理例に示す処理は終了される。
次に、本実施形態に係る端末10の受信部26がパケットを受信した際に行われる処理の流れの一例を、図10A及び図10Bに例示するフロー図を参照しながら説明する。
まず、配送制御部28が、受信部26が受信したパケットの送信元のIPアドレス及びポート番号が登録されたソケット管理データが存在するか否かを確認する(S201)。ここでは例えば、受信したパケットの送信元のIPアドレス及びポート番号が、それぞれ、クライアントIPアドレスの値及びクライアントポート番号の値に設定されたソケット管理データがソケット管理データ記憶部22に記憶されているか否かが確認される。
存在しない場合は(S201:N)、配送制御部28は、サスペンド管理データ記憶部20に記憶されているサスペンド管理データに基づいて、端末10において動作状態であるサーバプロセスを特定する(S202)。
そして、配送制御部28は、S202に示す処理で特定されたサーバプロセスに受信したパケットを配送して(S203)、本処理例に示す処理は終了される。
S201に示す処理で、受信部26が受信したパケットの送信元のIPアドレス及びポート番号が登録されたソケット管理データの存在が確認されたとする(S201:Y)。この場合は、配送制御部28は、当該ソケット管理データに示されているサーバプロセスを特定する(S204)。
そして、配送制御部28は、S204に示す処理で特定されたサーバプロセスが動作状態である否かを確認する(S205)。ここで、配送制御部28は、サスペンド管理データ記憶部20に記憶されているサスペンド管理データに基づいて、S204に示す処理で特定されたサーバプロセスが動作状態である否かを確認してもよい。
S204に示す処理で特定されたサーバプロセスが動作状態であることが確認された場合は(S205:Y)、配送制御部28は、S204に示す処理で特定されたサーバプロセスに受信したパケットを配送して(S203)、本処理例に示す処理は終了される。
S205に示す処理で、S204に示す処理で特定されたサーバプロセスが待機状態であることが確認されたとする(S205:N)。この場合は、配送制御部28は、受信したパケットがTCP RSTパケットであるか否かを確認する(S206)。
TCP RSTパケットである場合は(S206:Y)、配送制御部28は、S204に示す処理で特定された待機状態であるサーバプロセスに受信したパケットを配送して(S203)、本処理例に示す処理は終了される。
S206に示す処理で、受信したパケットがTCP RSTパケットでないことが確認されたとする(S206:N)。この場合は、配送制御部28は、受信したパケットが、TCP FINパケット、又は、TCP FINパケットに後続するパケットであるか否かを確認する(S207)。
S207に示す処理で、受信したパケットが、TCP FINパケット、又は、TCP
FINパケットに後続するパケットであることが確認されたとする(S207:Y)。この場合は、配送制御部28は、S204に示す処理で特定された待機状態であるサーバプロセスに受信したパケットを配送して(S203)、本処理例に示す処理は終了される。
FINパケットに後続するパケットであることが確認されたとする(S207:Y)。この場合は、配送制御部28は、S204に示す処理で特定された待機状態であるサーバプロセスに受信したパケットを配送して(S203)、本処理例に示す処理は終了される。
S207に示す処理で、受信したパケットが、TCP FINパケットでもTCP FINパケットに後続するパケットでもないことが確認されたとする(S207:N)。この場合は、配送制御部28は、受信したパケットを破棄して(S208)、本処理例に示す処理は終了される。
なお、本発明は上述の実施形態に限定されるものではない。
本発明の適用範囲は、TCPプロトコルやUDPプロトコルには限定されない。また、本発明の適用範囲は、ゲームプログラムには限定されない。
また、端末10、端末12、端末14の役割分担は上述のものに限定されない。例えば、端末12や端末14に端末10の機能が実装されてもよい。また、端末10に端末12や端末14の機能が実装されてもよい。すなわち、端末10において、クライアントプロセスが実行されてもよい。また、端末12及び端末14において、サーバプロセスが実行されてもよい。また、端末10、端末12、端末14において、サーバプロセスとクライアントプロセスの両方が実行されてもよい。
また、端末10のクライアントプロセスと端末12あるいは端末14のサーバプロセスとが通信してもよい。また、端末12のクライアントプロセスと端末14のサーバプロセスとが通信してもよい。また、端末14のクライアントプロセスと端末12のサーバプロセスとが通信してもよい。
また、上記の具体的な文字列や数値及び図面中の具体的な文字列や数値は例示であり、これらの文字列や数値には限定されない。
Claims (9)
- 互いに異なるサーバプログラムを起動することにより生成される、待ち受けポート番号が同じである複数の実行中のサーバプロセスを検出する検出部と、
検出される前記複数の実行中のサーバプロセスのうち、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御するプロセス制御部と、
前記待ち受けポート番号が宛先であるパケットを受信する受信部と、
受信する前記パケットを前記動作状態の前記サーバプロセスに配送する配送制御部と、
を含むことを特徴とする配送制御装置。 - パケットの送信元と当該パケットの配送先である前記サーバプロセスとが関連付けられたソケット管理データを記憶するソケット管理データ記憶部、をさらに含み、
前記配送制御部は、前記ソケット管理データに登録されていない送信元から受信するパケットを、前記動作状態の前記サーバプロセスに配送する、
ことを特徴とする請求項1に記載の配送制御装置。 - 前記配送制御部は、前記ソケット管理データにおいて前記待機状態の前記サーバプロセスと関連付けられている送信元から受信するパケットを破棄する、
ことを特徴とする請求項2に記載の配送制御装置。 - 前記配送制御部は、前記パケットがTCP RSTパケットである場合は当該パケットを破棄せずに当該サーバプロセスに配送する、
ことを特徴とする請求項3に記載の配送制御装置。 - 前記配送制御部は、前記パケットがTCP FINパケットである場合は当該パケット及び送信元が同じである後続するパケットを破棄せずに当該サーバプロセスに配送する、
ことを特徴とする請求項3又は4に記載の配送制御装置。 - 前記プロセス制御部は、新たな前記サーバプロセスが生成される際に、当該サーバプロセスが動作状態になるように制御し、当該サーバプロセスと待ち受けポート番号が同じである動作状態の前記サーバプロセスを待機状態に遷移させる、
ことを特徴とする請求項1から5のいずれか一項に記載の配送制御装置。 - 前記プロセス制御部は、待機状態である前記サーバプロセスの指定に応じて、当該サーバプロセスを動作状態に遷移させるとともに、当該サーバプロセスと待ち受けポート番号が同じである動作状態の前記サーバプロセスを待機状態に遷移させる、
ことを特徴とする請求項1から6のいずれか一項に記載の配送制御装置。 - 互いに異なるサーバプログラムを起動することにより生成される、待ち受けポート番号が同じである複数の実行中のサーバプロセスを検出するステップと、
検出される前記複数の実行中のサーバプロセスのうち、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御するステップと、
前記待ち受けポート番号が宛先であるパケットを受信するステップと、
受信する前記パケットを前記動作状態の前記サーバプロセスに配送するステップと、
を含むことを特徴とする配送制御方法。 - 互いに異なるサーバプログラムを起動することにより生成される、待ち受けポート番号が同じである複数の実行中のサーバプロセスを検出する手順、
検出される前記複数の実行中のサーバプロセスのうち、1つのサーバプロセスが動作状態になり、残りのサーバプロセスが待機状態になるよう制御する手順、
前記待ち受けポート番号が宛先であるパケットを受信する手順、
受信する前記パケットを前記動作状態の前記サーバプロセスに配送する手順、
をコンピュータに実行させることを特徴とする配送制御プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019220923 | 2019-12-06 | ||
JP2019220923 | 2019-12-06 | ||
PCT/JP2020/036078 WO2021111710A1 (ja) | 2019-12-06 | 2020-09-24 | 配送制御装置、配送制御方法及び配送制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021111710A1 JPWO2021111710A1 (ja) | 2021-06-10 |
JP7291247B2 true JP7291247B2 (ja) | 2023-06-14 |
Family
ID=76221026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021562468A Active JP7291247B2 (ja) | 2019-12-06 | 2020-09-24 | 配送制御装置、配送制御方法及び配送制御プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220407807A1 (ja) |
EP (1) | EP4072078A4 (ja) |
JP (1) | JP7291247B2 (ja) |
WO (1) | WO2021111710A1 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006352567A (ja) | 2005-06-16 | 2006-12-28 | Fujitsu Ltd | サービス提供装置および通信制御プログラム |
JP2008146380A (ja) | 2006-12-11 | 2008-06-26 | Sony Computer Entertainment Inc | キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10260851A (ja) * | 1997-03-21 | 1998-09-29 | Toshiba Corp | クライアントサーバシステムならびに同システムにおけるサーバの割り付け方法、及び同システムにおけるサーバ負荷の制御方法 |
JP3763662B2 (ja) * | 1998-03-12 | 2006-04-05 | 松下電器産業株式会社 | ネットワークエージェントシステムおよびエージェント間通信方法 |
US8849972B2 (en) * | 2008-11-25 | 2014-09-30 | Polycom, Inc. | Method and system for dispatching received sessions between a plurality of instances of an application using the same IP port |
US20150143354A1 (en) * | 2013-11-19 | 2015-05-21 | Suresh Mathew | Zero downtime deployment and rollback |
-
2020
- 2020-09-24 EP EP20896384.3A patent/EP4072078A4/en active Pending
- 2020-09-24 WO PCT/JP2020/036078 patent/WO2021111710A1/ja unknown
- 2020-09-24 US US17/780,360 patent/US20220407807A1/en active Pending
- 2020-09-24 JP JP2021562468A patent/JP7291247B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006352567A (ja) | 2005-06-16 | 2006-12-28 | Fujitsu Ltd | サービス提供装置および通信制御プログラム |
JP2008146380A (ja) | 2006-12-11 | 2008-06-26 | Sony Computer Entertainment Inc | キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体 |
Also Published As
Publication number | Publication date |
---|---|
US20220407807A1 (en) | 2022-12-22 |
EP4072078A1 (en) | 2022-10-12 |
JPWO2021111710A1 (ja) | 2021-06-10 |
WO2021111710A1 (ja) | 2021-06-10 |
EP4072078A4 (en) | 2023-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5518954B2 (ja) | セッション接続の持続 | |
US7409482B2 (en) | Computer and method for on-demand network access control | |
US7627627B2 (en) | Controlling command message flow in a network | |
EP4009593A1 (en) | Data transmission method and apparatus, network card and storage medium | |
US8583831B2 (en) | Thin client discovery | |
US20070083924A1 (en) | System and method for multi-stage packet filtering on a networked-enabled device | |
US20050135384A1 (en) | Virtual endpoint | |
US20120317566A1 (en) | Virtual machine packet processing | |
JP2005516478A (ja) | フォールト・トレラント・ルーチング・データベースを提供するシステムおよび方法 | |
US10191760B2 (en) | Proxy response program, proxy response device and proxy response method | |
WO2013015825A1 (en) | Virtual machine migration to minimize packet loss in virtualized network | |
KR20040085045A (ko) | 애플리케이션에 투명한 방식으로 메시징 시스템에서가용성 및 확장성을 향상시키는 방법 및 시스템 | |
EP1746791A1 (en) | Network attack combating method, network attack combating device and network attack combating program | |
WO2010000146A1 (zh) | 实现信息备份的方法、防火墙和网络系统 | |
CN107465626A (zh) | 一种虚拟机热迁移方法及装置 | |
JP2020532251A (ja) | メッシュポートを有するメッシュ通信ネットワーク | |
CN110838935B (zh) | 高可用sdn控制器集群方法、系统、存储介质及设备 | |
Bernaschi et al. | SockMi: a solution for migrating TCP/IP connections | |
JP5941887B2 (ja) | エッジルータ切替方法及びシステム及びエッジルータ及び冗長管理装置 | |
JP7291247B2 (ja) | 配送制御装置、配送制御方法及び配送制御プログラム | |
US10498867B2 (en) | Network interface device and host processing device field | |
US7363383B2 (en) | Running a communication protocol state machine through a packet classifier | |
JP2021052240A (ja) | プログラム、通信装置、および通信方法 | |
US10291717B2 (en) | Prioritizing VDI sessions and redirected devices in software defined networks | |
WO2017219777A1 (zh) | 一种报文处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220511 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230516 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230602 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7291247 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |