JP6412529B2 - 送信制御装置、送信制御方法及び送信制御プログラム - Google Patents

送信制御装置、送信制御方法及び送信制御プログラム Download PDF

Info

Publication number
JP6412529B2
JP6412529B2 JP2016146120A JP2016146120A JP6412529B2 JP 6412529 B2 JP6412529 B2 JP 6412529B2 JP 2016146120 A JP2016146120 A JP 2016146120A JP 2016146120 A JP2016146120 A JP 2016146120A JP 6412529 B2 JP6412529 B2 JP 6412529B2
Authority
JP
Japan
Prior art keywords
transmission
syn packet
call
execution
round trip
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
Application number
JP2016146120A
Other languages
English (en)
Other versions
JP2018019161A (ja
Inventor
幸司 島
幸司 島
誠 幾島
誠 幾島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Priority to JP2016146120A priority Critical patent/JP6412529B2/ja
Priority to US15/659,646 priority patent/US10608863B2/en
Publication of JP2018019161A publication Critical patent/JP2018019161A/ja
Application granted granted Critical
Publication of JP6412529B2 publication Critical patent/JP6412529B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Description

本発明は、送信制御装置、送信制御方法及び送信制御プログラムに関する。
TCP(Transmission Control Protocol)におけるソケット間の接続(TCPコネクション)を確立するための手順として、スリーウェイハンドシェイクと呼ばれる手順が知られている。
スリーウェイハンドシェイクでは、例えばサーバとの通信を要求するクライアントがSYNパケットをサーバに送信する。サーバはSYNパケットを受信すると、SYN+ACKパケットをクライアントに送信する。クライアントはSYN+ACKパケットを受信すると、ACKパケット、及び、HTTPリクエストなどといった送信対象のデータをサーバに送信する。このようにして、送信対象のデータがクライアントからサーバに送信されることとなる。ここで、クライアントがSYNパケットをサーバに送信してから当該クライアントがサーバからSYN+ACKパケットを受信するまでの時間を、スリーウェイハンドシェイクにおけるラウンドトリップタイム(RTT)と呼ぶこととする。
またスリーウェイハンドシェイクに関連するTCPにおける通信の高速化の技術の一例として、RFC(Request for Comments)7413に、TFO(TCP Fast Open)と呼ばれる技術が記載されている。
TFOでは、スリーウェイハンドシェイクでクライアントからサーバに送信されるSYNパケットに、TFOが有効であることを示すTCPオプションが含まれる。ここで当該サーバがTFOに対応可能である場合は、当該サーバは、当該SYNパケットを受信すると、クッキーと呼ばれるデータが付与されたSYN+ACKパケットをクライアントに送信する。クライアントはSYN+ACKパケットを受信すると、ACKパケット及び送信対象のデータをサーバに送信する。
その後、同一のソケット間の通信が再度開始される際には、クライアントは、サーバから受信済であるクッキー、及び、送信対象のデータを含むSYNパケットをサーバに送信する。このようにすることでTFOでは、クライアントがサーバからクッキーを受信すると、スリーウェイハンドシェイクにおけるSYN+ACKパケットの受信を待つことなく当該クライアントは当該サーバに送信対象のデータを送信できることとなる。その結果、スリーウェイハンドシェイクにおける1のRTTに相当する通信時間が節約されるため、通信速度が向上する。
TFOの仕様に沿った通信が実装されていないアプリケーションプログラムにおいてTFOの仕様に沿った通信を可能にするための一手法として、例えばTFOの仕様に沿うようアプリケーションプログラムを改修することが考えられる。例えばRFC7413には、TFOの仕様に沿った通信を実装するための一手法が示されている。
しかしTFOの仕様に沿うようアプリケーションプログラムを改修するとなると、改修すべき箇所をすべて特定した上で、特定されたすべての箇所を改修する必要があるため手間がかかってしまう。
本発明は上記実情に鑑みてなされたものであって、その目的の一つは、アプリケーションプログラムを改修することなくTFOの仕様に沿った通信を可能とする通信制御装置、通信制御方法及び通信制御プログラムを提供することにある。
上記課題を解決するために、本発明に係る送信制御装置は、アプリケーションプログラムが接続関数の呼び出しを実行した際に、当該接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させる遅延部と、SYNパケットの送信が遅延されている期間に前記アプリケーションプログラムが送信関数の呼び出しを実行した際に、当該送信関数の呼び出しの実行に応じて、送信対象のデータを含むSYNパケットを送信する送信部と、を含む。
本発明の一態様では、スリーウェイハンドシェイクにおけるSYNパケットの送信からSYN+ACKパケットの受信までの時間であるラウンドトリップタイムを特定するラウンドトリップタイム特定部と、アプリケーションプログラムにおける前記接続関数の呼び出しの実行から前記送信関数の呼び出しの実行までの時間である送信タイムラグを特定する送信タイムラグ特定部と、をさらに含み、前記遅延部は、前記ラウンドトリップタイムと前記送信タイムラグとの比較結果に応じて、前記接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるか否かを制御する。
この態様では、前記遅延部は、複数の通信装置のそれぞれについて、当該通信装置との通信における前記ラウンドトリップタイムと前記送信タイムラグとの比較結果に応じて、当該通信装置に接続するための前記接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるか否かを制御してもよい。
あるいは、前記遅延部は、複数のソケットのそれぞれについて、当該ソケットとの通信における前記ラウンドトリップタイムと前記送信タイムラグとの比較結果に応じて、当該ソケットに接続するための前記接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるか否かを制御してもよい。
また、本発明の一態様では、スリーウェイハンドシェイクにおけるSYNパケットの送信からSYN+ACKパケットの受信までの時間であるラウンドトリップタイムを特定するラウンドトリップタイム特定部、をさらに含み、前記遅延部は、前記接続関数の呼び出しの実行タイミングから前記ラウンドトリップタイムが経過するまで前記SYNパケットの送信を遅延させる。
また、本発明の一態様では、SYNパケットの送信が遅延されている期間に前記送信関数の呼び出しが実行されなかった回数が所定数を超えた際には、前記送信部は、TFOが有効であることを示すTCPオプションを含まないSYNパケットを送信する。
また、本発明に係る送信制御方法は、アプリケーションプログラムが接続関数の呼び出しを実行した際に、当該接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるステップと、SYNパケットの送信が遅延されている期間に前記アプリケーションプログラムが送信関数の呼び出しを実行した際に、当該送信関数の呼び出しの実行に応じて、送信対象のデータを含むSYNパケットを送信するステップと、を含む。
また、本発明に係る送信制御プログラムは、アプリケーションプログラムが接続関数の呼び出しを実行した際に、当該接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させる手順、SYNパケットの送信が遅延されている期間に前記アプリケーションプログラムが送信関数の呼び出しを実行した際に、当該送信関数の呼び出しの実行に応じて、送信対象のデータを含むSYNパケットを送信する手順、をコンピュータに実行させる。
本発明の一実施形態に係る通信システムの全体構成の一例を示す図である。 クライアントからサーバへのデータ送信の一例を説明する説明図である。 クライアントからサーバへのデータ送信の別の一例を説明する説明図である。 本発明の一実施形態に係るクライアントで実装される機能の一例を示す機能ブロック図である。 本発明の一実施形態に係るクライアントにおいて行われる処理の流れの一例を示すフロー図である。
以下、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本発明の一実施形態に係る通信システム10の全体構成の一例を示す図である。図1に示すように、本実施形態に係る通信システム10には、クライアント12と、サーバ14とが含まれる。クライアント12とサーバ14とは、例えばインターネットなどのコンピュータネットワーク16を介して互いに通信可能となっている。
本実施形態に係るサーバ14は、例えばウェブサーバであり、クライアント12から要求されたデータをクライアント12に送信する。
本実施形態に係るクライアント12は、例えばゲームコンソール、スマートフォン、携帯電話、パーソナルコンピュータ等のコンピュータである。
図1に示すように、本実施形態に係るクライアント12には、例えば、プロセッサ12a、記憶部12b、通信部12c、出力部12d、入力部12eが含まれる。プロセッサ12aは、例えばクライアント12にインストールされるプログラムに従って動作するCPU等のプログラム制御デバイスである。記憶部12bは、例えばROMやRAM等の記憶素子やハードディスクドライブなどである。記憶部12bには、プロセッサ12aによって実行されるプログラムなどが記憶される。通信部12cは、例えばイーサネット(登録商標)モジュールや無線LANモジュールなどの通信インタフェースである。出力部12dは、例えばプロセッサ12aから入力される指示に従って情報を表示出力するディスプレイ等の表示部や音声出力するスピーカ等の音声出力部である。入力部12eは、例えばユーザが行った操作の内容をプロセッサ12aに出力するゲームコントローラ、タッチパッド、マウス、キーボード、マイク等である。
また本実施形態に係るクライアント12では、例えばクライアント12が備えるハードウェアタイマ、又は、クライアント12にインストールされたソフトウェアタイマにより、あるタイミングから別のタイミングまでの時間が計測できるようになっている。
また本実施形態に係るクライアント12には、アプリケーションプログラム、及び、当該アプリケーションプログラムのプラットフォームソフトウェアとして動作するオペレーティングシステムがインストールされている。
本実施形態では例えば、クライアント12にインストールされているアプリケーションソフトウェアにおいて、サーバ14に記憶されているコンテンツを要求する機能が実装されている。サーバ14へのコンテンツの要求に先立って、スリーウェイハンドシェイクによりクライアント12のソケットとサーバ14のソケットとの間の通信が確立される。
この場合、一般的なアプリケーションソフトウェアにおいては、connect()関数などといった、サーバ14に接続するための接続関数が呼び出された後で、send()関数やwrite()関数などといった、サーバ14へのデータ送信のための送信関数が呼び出される。サーバ14に送信されるHTTPリクエストのデータなどは、例えば送信関数のパラメータとして設定される。なおこれらの関数は例えば標準ソケットAPIの関数であり、また、システムコールであってもライブラリ関数であっても構わない。
ここで本実施形態に係るクライアント12からサーバ14へのデータ送信につき、図2A及び図2Bを参照しながら説明する。
図2Aは、クライアント12からサーバ14へのデータ送信の一例を説明する説明図である。
図2Aに示すように本実施形態に係るクライアント12は、アプリケーションプログラムにて接続関数の呼び出しが実行されると、サーバ14との間でのスリーウェイハンドシェイクを開始する。すなわち、アプリケーションプログラムにて接続関数の呼び出しが実行されると、クライアント12はサーバ14にSYNパケットを送信する。このとき本実施形態では、TFO(TCP Fast Open)が有効であることを示すTCPオプション(以下、TFO有効オプションと呼ぶ。)が含まれるSYNパケットが送信される。
そしてサーバ14は、SYNパケットを正常に受信すると、SYN+ACKパケットをクライアント12に送信する。ここでサーバ14がTFOに対応したものである場合は、サーバ14は、RFC(Request for Comments)7413で定義されたクッキーを含むSYN+ACKパケットをクライアント12に送信する。
ここで図2Aの例では、クライアント12がSYN+ACKパケットを受信するまでに、アプリケーションプログラムにて送信関数の呼び出しが実行されていることとする。またクライアント12の送信ソケットバッファに送信対象のデータが記憶されていることとする。
そしてクライアント12は、SYN+ACKパケットを正常に受信すると、ACKパケットをサーバ14に送信し、以後、サーバ14への送信対象のデータを構成する1又は複数のパケットをサーバ14に送信する。上述のように図2Aの例では、クライアント12がSYN+ACKパケットを受信するまでに、アプリケーションプログラムにて送信関数の呼び出しが実行されている。そのためクライアント12は、ACKパケットをサーバ14に送信したタイミングにおけるサーバ14への送信対象のデータの送信は可能である。
ここでサーバ14から送信されたSYN+ACKパケットにクッキーが含まれている場合は、クライアント12は当該クッキーを記憶する。
サーバ14は、例えばHTTPリクエストなどの要求である送信対象のデータをクライアント12から受け付けると、要求に応じたデータをクライアント12に送信する。
図2Bは、クライアント12からサーバ14へのデータ送信の別の一例を説明する説明図である。図2Bに例示するデータ送信は、例えば図2Aに例示するデータ送信が行われた後にクライアント12とサーバ14との間で別のTCPコネクションが確立される際に行われる。また図2Bに例示するデータ送信は、例えばクライアント12とサーバ14との間で確立されたTCPコネクションが切断された後に再度TCPコネクションが確立される際に行われる。
図2Bに示すように、サーバ14から受信したクッキーが記憶されたクライアント12は、アプリケーションプログラムにて接続関数の呼び出しが実行されても、SYNパケットのサーバ14への送信を行わない。
そしてその後、アプリケーションプログラムにて送信関数の呼び出しが実行されると、記憶されているクッキー、及び、送信対象のデータの少なくとも一部を構成するパケットを含むSYNパケットをサーバに送信する。
その後、図2Aと同様に、サーバ14は、SYNパケットを正常に受信すると、SYN+ACKパケットをクライアント12に送信する。そしてクライアント12は、SYN+ACKパケットを正常に受信すると、ACKパケットをサーバ14に送信する。
以上のようにすることで本実施形態では、アプリケーションプログラムを改修することなく、TFOの仕様に沿った通信が可能となる。また本実施形態では、接続関数の呼び出しが実行されてからスリーウェイハンドシェイクにおける1のRTTが経過する前に送信対象のデータがサーバ14に送信されるため、通信速度が向上する。
以下、本実施形態に係るクライアント12の機能及びクライアント12において行われる処理についてさらに説明する。
図3は、本実施形態に係るクライアント12で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係るクライアント12で、図3に示す機能のすべてが実装される必要はなく、また、図3に示す機能以外の機能が実装されていても構わない。
図3に示すように、本実施形態に係るクライアント12は、機能的には例えば、クッキー記憶部20、送信タイムラグデータ記憶部22、ラウンドトリップタイムデータ記憶部24、アプリケーションプログラム実行部26、遅延部28、送信部30、受信部32、送信タイムラグ特定部34、ラウンドトリップタイム特定部36、を含んでいる。クッキー記憶部20、送信タイムラグデータ記憶部22、ラウンドトリップタイムデータ記憶部24は、記憶部12bを主として実装される。アプリケーションプログラム実行部26、遅延部28、送信タイムラグ特定部34、ラウンドトリップタイム特定部36は、プロセッサ12aを主として実装される。送信部30、受信部32は、通信部12cを主として実装される。クライアント12は、本実施形態において、サーバ14へのデータの送信を制御する送信制御装置としての役割を担うこととなる。
以上の機能は、コンピュータであるクライアント12にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ12aで実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介してクライアント12に供給されてもよい。またこのプログラムは、クライアント12で実行されるアプリケーションプログラムのプラットフォームであるオペレーティングシステムのプログラムとしてクライアント12に供給されてもよい。
クッキー記憶部20は、本実施形態では例えば、サーバ14から送信される、RFC7413で定義されたクッキーを記憶する。
送信タイムラグデータ記憶部22は、本実施形態では例えば、送信タイムラグを示す送信タイムラグデータを記憶する。ここで送信タイムラグとは、アプリケーションプログラムにおける接続関数の呼び出しの実行のタイミングから送信関数の最初の呼び出しの実行のタイミングまでの時間を指すこととする。クライアント12のスペックがよいほど、あるいは、クライアント12におけるリソースの使用量が少ないほど、一般的に送信タイムラグは短くなる。例えばクライアント12で実行されている他のアプリケーションプログラムの数が少ないほど、一般的に送信タイムラグは短くなる。本実施形態では送信タイムラグデータの値をTsendと表現することとし、その初期値は例えば0であることとする。
ラウンドトリップタイムデータ記憶部24は、本実施形態では例えば、ラウンドトリップタイムを示すラウンドトリップタイムデータを記憶する。ここでラウンドトリップタイムとは、スリーウェイハンドシェイクにおけるSYNパケットの送信からSYN+ACKパケットの受信までの時間を指すこととする。ラウンドトリップタイムは、クライアント12とサーバ14との1往復の通信に要する時間に相当する。クライアント12とサーバ14との間の通信環境が良好であるほどラウンドトリップタイムは短くなる。本実施形態ではラウンドトリップタイムデータの値をTrttと表現することとし、その初期値は例えば0であることとする。
アプリケーションプログラム実行部26は、本実施形態では例えば、クライアント12にインストールされたアプリケーションプログラムを実行する。アプリケーションプログラム実行部26は例えば、クライアント12で実行されるアプリケーションプログラムのプラットフォームとして機能する。
遅延部28は、本実施形態では例えば、アプリケーションプログラムが接続関数の呼び出しを実行した際に、当該接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させる。上述のように例えばサーバ14から受信したクッキーがクライアント12に記憶されている場合には、本実施形態に係る遅延部28は、アプリケーションプログラムにて接続関数の呼び出しが実行されても、SYNパケットのサーバ14への送信を遅延させる。
送信部30は、本実施形態では例えば、送信対象のデータを構成するパケットを含む各種のパケットをサーバ14に送信する。
受信部32は、本実施形態では例えば、HTTPリクエストに対する返信のデータを構成するパケットなどのパケットをサーバ14から受信する。
送信タイムラグ特定部34は、本実施形態では例えば、上述の送信タイムラグを特定する。送信タイムラグ特定部34は、例えば、上述の送信タイムラグを計測して、送信タイムラグデータ記憶部22に記憶されている送信タイムラグデータの値Tsendを、計測された時間を示す値に更新する。
ラウンドトリップタイム特定部36は、本実施形態では例えば、上述のラウンドトリップタイムを特定する。ラウンドトリップタイム特定部36は、例えば、上述のラウンドトリップタイムを計測して、ラウンドトリップタイムデータ記憶部24に記憶されているラウンドトリップタイムデータの値Trttを、計測された時間を示す値に更新する。
以下、本実施形態に係るクライアント12において行われる、アプリケーションプログラムにおける接続関数の呼び出しの実行に応じたSYNパケットの送信の処理の流れの一例を、図4に例示するフロー図を参照しながら説明する。
まず、遅延部28が、ラウンドトリップタイムデータ記憶部24に記憶されているラウンドトリップタイムデータの値Trttと、送信タイムラグデータ記憶部22に記憶されている送信タイムラグデータの値Tsendと、を比較する(S101)。
ここで値Trttが値Tsendよりも大きい場合は、遅延部28は、現在から値Trttが示す時間だけ後のタイミングを、遅延期限として設定する(S102)。この場合においては、遅延部28は、送信部30によるパケットの送信を遅延させることとなる。このように本処理例では、遅延部28は、ラウンドトリップタイムが送信タイムラグよりも長い場合に、接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させる。また本処理例では最大で、接続関数の呼び出しの実行タイミングからラウンドトリップタイムが経過するまでSYNパケットの送信は遅延されることとなる。
そして、遅延部28は、アプリケーションプログラムにおける送信関数の呼び出しの実行の監視(S103)、及び、遅延期限の到来の監視を行う(S104)。
ここで送信関数の呼び出しが実行されると、遅延部28は遅延期限をキャンセルする(S105)。
そして、送信部30は、送信対象のデータの少なくとも一部、及び、クッキー記憶部20に記憶されているクッキーを含むSYNパケットをサーバに送信する(S106)。このように本処理例では、送信部30は、SYNパケットの送信が遅延されている期間にアプリケーションプログラムが送信関数の呼び出しを実行した際に、当該送信関数の呼び出しの実行に応じて、送信対象のデータを含むSYNパケットを送信する。そして本処理例に示す処理は終了される。
一方、S101に示す処理で値Trttが値Tsend以下であることが確認された場合、及び、S104に示す処理で遅延期限が到来したことが確認された場合は、送信部30が、TFO有効オプションを含むSYNパケットをサーバ14に送信する(S107)。そして本処理例に示す処理は終了される。
図4に示す処理例では、遅延部28は、S101に示すように、ラウンドトリップタイムと送信タイムラグとの比較結果に応じて、接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるか否かを制御する。
ラウンドトリップタイムが送信タイムラグよりも長い場合は、送信関数の呼び出しがSYN+ACKパケットの受信までに実行される可能性が高い。この場合、図4の処理例では、遅延部28が、アプリケーションプログラムにおける接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させる。そして送信部30が、アプリケーションプログラムにおける送信関数の呼び出しの実行に応じて、送信対象のデータを含むSYNパケットを送信する(図2B参照)。そのためこの場合は、スリーウェイハンドシェイクの後にデータ送信が行われる場合(図2A参照)よりも、早いタイミングで送信対象のデータが送信されることとなる。
一方、ラウンドトリップタイムが送信タイムラグよりも長くない場合は、送信関数の呼び出しがSYN+ACKパケットの受信までに実行されない可能性が高い。この場合、送信関数の呼び出しが実行されない状態で遅延期限が到来する可能性が高いので、図4の処理例では、遅延部28は、アプリケーションプログラムにおける接続関数の呼び出しの実行に応じたSYNパケットの送信の遅延を制限する。そして送信部30は、接続関数の呼び出しに応じて直ちにSYNパケットを送信する。そのためこの場合は、接続関数の呼び出しの実行に応じたSYNパケットの送信が遅延される場合よりも早いタイミングで送信対象のデータが送信されることとなる。
そして本実施形態では、S107に示す処理の後に、受信部32がクッキーを含むSYN+ACKパケットをサーバ14から受信すると、送信部30がACKパケットを送信する(図2A参照)。そして送信部30は、以後、サーバ14への送信対象のデータを構成する1又は複数のパケットをサーバ14に送信する。また受信部32は、受信したクッキーをクッキー記憶部20に記憶させる。
また本実施形態では、S106に示す処理の後に、受信部32がSYN+ACKパケットをサーバ14から受信すると、送信部30がACKパケットをサーバ14に送信する(図2B参照)。
そして本実施形態では図4に示す処理と独立して、送信タイムラグ特定部34が、アプリケーションプログラムにおける接続関数の呼び出しの実行のタイミング、及び、送信関数の最初の呼び出しの実行のタイミングを監視する。そして送信関数の最初の呼び出しが実行されると、送信タイムラグ特定部34は、送信タイムラグを計測して、送信タイムラグデータ記憶部22に記憶されている送信タイムラグデータの値Tsendの値を、計測結果に応じた値に更新する。
また本実施形態では図4に示す処理と独立して、ラウンドトリップタイム特定部36が、SYNパケットの送信タイミング、及び、SYN+ACKパケットの受信タイミングを監視する。ここでSYN+ACKパケットが受信されると、ラウンドトリップタイム特定部36は、ラウンドトリップタイムを計測する。そしてラウンドトリップタイム特定部36は、ラウンドトリップタイムデータ記憶部24に記憶されているラウンドトリップタイムデータの値Trttの値を、計測結果に応じた値に更新する。
なお、本発明は上述の実施形態に限定されるものではない。
例えば通信システム10に複数のサーバ14が含まれることが想定される。この場合に、クッキー記憶部20は、サーバ14のIPアドレスなどといったサーバ14の識別情報に関連付けて、当該サーバ14から受信したクッキーを記憶してもよい。あるいはクッキー記憶部20が、サーバ14のIPアドレスとポート番号との組合せ、すなわち、クッキーの送信元のソケットの識別情報に関連付けて、当該サーバ14から受信したクッキーを記憶してもよい。あるいはクッキー記憶部20が、サーバ14のIPアドレスとポート番号、及び、クライアント12で接続関数や送信関数を実行するアプリケーションプログラムの識別子の組合せに関連付けて、当該サーバ14から受信したクッキーを記憶してもよい。
また同様に、ラウンドトリップタイムデータや送信タイムラグデータが、通信相手となるサーバ14毎、あるいは、クライアント12のソケットと接続されるサーバ14のソケット毎に管理されてもよい。そしてサーバ14毎あるいはソケット毎に接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるか否かが制御されてもよい。
また例えば、ラウンドトリップタイムデータ記憶部24が、サーバ14の識別情報に関連付けて、当該サーバ14との通信において計測されたラウンドトリップタイムを示すラウンドトリップタイムデータを記憶してもよい。またラウンドトリップタイムデータ記憶部24が、クライアント12のソケットと接続されるサーバ14のソケットの識別情報に関連付けて、当該ソケットとの通信において計測されたラウンドトリップタイムを示すラウンドトリップタイムデータを記憶してもよい。
また例えば、送信タイムラグデータ記憶部22が、サーバ14の識別情報に関連付けて、当該サーバ14との通信の際に計測された送信タイムラグを示す送信タイムラグデータを記憶してもよい。あるいは送信タイムラグデータ記憶部22が、クライアント12のソケットと接続されるサーバ14のソケットの識別情報に関連付けて、当該ソケットとの通信の際に計測された送信タイムラグを示す送信タイムラグデータを記憶してもよい。
そして遅延部28は例えば、複数のサーバ14のそれぞれについて、当該サーバ14との接続を確立するためのスリーウェイハンドシェイクにおけるSYNパケットの送信を遅延させるか否かを制御してもよい。ここで遅延部28は例えば、当該サーバ14との通信におけるラウンドトリップタイムと送信タイムラグとの比較結果に応じてSYNパケットの送信を遅延させるか否かを制御してもよい。
また遅延部28は例えば、複数のソケットのそれぞれについて、当該ソケットとの接続を確立するためのスリーウェイハンドシェイクにおけるSYNパケットの送信を遅延させるか否かを制御してもよい。ここで遅延部28は例えば、当該ソケットとの通信におけるラウンドトリップタイムと送信タイムラグとの比較結果に応じてSYNパケットの送信を遅延させるか否かを制御してもよい。
また遅延部28は例えば、サーバ14と通信する複数のアプリケーションプログラムのそれぞれについて、サーバ14との接続を確立するためのスリーウェイハンドシェイクにおけるSYNパケットの送信を遅延させるか否かを制御してもよい。ここで遅延部28は例えば、当該アプリケーションでの通信におけるラウンドトリップタイムと送信タイムラグとの比較結果に応じてSYNパケットの送信を遅延させるか否かを制御してもよい。
また例えば、S105に示す処理で遅延期限が到来した回数が所定数に達した場合は、以後、送信部30が、TFO有効オプションを含まないSYNパケットをサーバ14に送信してもよい。また、アプリケーションプログラムにおける接続関数の呼び出しの実行に応じて、送信部30が、図4に示す処理を実行することなく、TFO有効オプションを含まないSYNパケットをサーバ14に送信してもよい。
なお本発明の適用範囲はHTTP通信に限定されず、HTTP以外のアプリケーションプロトコルでの通信に本発明を適用してもよい。
10 通信システム、12 クライアント、12a プロセッサ、12b 記憶部、12c 通信部、12d 出力部、12e 入力部、14 サーバ、16 コンピュータネットワーク、20 クッキー記憶部、22 送信タイムラグデータ記憶部、24 ラウンドトリップタイムデータ記憶部、26 アプリケーションプログラム実行部、28 遅延部、30 送信部、32 受信部、34 送信タイムラグ特定部、36 ラウンドトリップタイム特定部。

Claims (8)

  1. アプリケーションプログラムが接続関数の呼び出しを実行した際に、当該接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させる遅延部と、
    SYNパケットの送信が遅延されている期間に前記アプリケーションプログラムが送信関数の呼び出しを実行した際に、当該送信関数の呼び出しの実行に応じて、送信対象のデータを含むSYNパケットを送信する送信部と、
    を含むことを特徴とする送信制御装置。
  2. スリーウェイハンドシェイクにおけるSYNパケットの送信からSYN+ACKパケットの受信までの時間であるラウンドトリップタイムを特定するラウンドトリップタイム特定部と、
    アプリケーションプログラムにおける前記接続関数の呼び出しの実行から前記送信関数の呼び出しの実行までの時間である送信タイムラグを特定する送信タイムラグ特定部と、をさらに含み、
    前記遅延部は、前記ラウンドトリップタイムと前記送信タイムラグとの比較結果に応じて、前記接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるか否かを制御する、
    ことを特徴とする請求項1に記載の送信制御装置。
  3. 前記遅延部は、複数の通信装置のそれぞれについて、当該通信装置との通信における前記ラウンドトリップタイムと前記送信タイムラグとの比較結果に応じて、当該通信装置に接続するための前記接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるか否かを制御する、
    ことを特徴とする請求項2に記載の送信制御装置。
  4. 前記遅延部は、複数のソケットのそれぞれについて、当該ソケットとの通信における前記ラウンドトリップタイムと前記送信タイムラグとの比較結果に応じて、当該ソケットに接続するための前記接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるか否かを制御する、
    ことを特徴とする請求項2に記載の送信制御装置。
  5. スリーウェイハンドシェイクにおけるSYNパケットの送信からSYN+ACKパケットの受信までの時間であるラウンドトリップタイムを特定するラウンドトリップタイム特定部、をさらに含み、
    前記遅延部は、前記接続関数の呼び出しの実行タイミングから前記ラウンドトリップタイムが経過するまで前記SYNパケットの送信を遅延させる、
    ことを特徴とする請求項1に記載の送信制御装置。
  6. SYNパケットの送信が遅延されている期間に前記送信関数の呼び出しが実行されなかった回数が所定数を超えた際には、前記送信部は、TFOが有効であることを示すTCPオプションを含まないSYNパケットを送信する、
    ことを特徴とする請求項1から5のいずれか一項に記載の送信制御装置。
  7. アプリケーションプログラムが接続関数の呼び出しを実行した際に、当該接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させるステップと、
    SYNパケットの送信が遅延されている期間に前記アプリケーションプログラムが送信関数の呼び出しを実行した際に、当該送信関数の呼び出しの実行に応じて、送信対象のデータを含むSYNパケットを送信するステップと、
    を含むことを特徴とする送信制御方法。
  8. アプリケーションプログラムが接続関数の呼び出しを実行した際に、当該接続関数の呼び出しの実行に応じたSYNパケットの送信を遅延させる手順、
    SYNパケットの送信が遅延されている期間に前記アプリケーションプログラムが送信関数の呼び出しを実行した際に、当該送信関数の呼び出しの実行に応じて、送信対象のデータを含むSYNパケットを送信する手順、
    をコンピュータに実行させることを特徴とする送信制御プログラム。
JP2016146120A 2016-07-26 2016-07-26 送信制御装置、送信制御方法及び送信制御プログラム Active JP6412529B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016146120A JP6412529B2 (ja) 2016-07-26 2016-07-26 送信制御装置、送信制御方法及び送信制御プログラム
US15/659,646 US10608863B2 (en) 2016-07-26 2017-07-26 Transmission control application supporting TCP fast open

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016146120A JP6412529B2 (ja) 2016-07-26 2016-07-26 送信制御装置、送信制御方法及び送信制御プログラム

Publications (2)

Publication Number Publication Date
JP2018019161A JP2018019161A (ja) 2018-02-01
JP6412529B2 true JP6412529B2 (ja) 2018-10-24

Family

ID=61010720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016146120A Active JP6412529B2 (ja) 2016-07-26 2016-07-26 送信制御装置、送信制御方法及び送信制御プログラム

Country Status (2)

Country Link
US (1) US10608863B2 (ja)
JP (1) JP6412529B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11323529B2 (en) * 2017-07-18 2022-05-03 A10 Networks, Inc. TCP fast open hardware support in proxy devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3705297B1 (ja) * 2005-01-20 2005-10-12 三菱電機株式会社 ネットワーク伝送装置およびネットワーク伝送方法
KR100767705B1 (ko) * 2005-06-20 2007-10-18 에스케이 텔레콤주식회사 Cdma2000망에서의 접속 시간 단축을 위한 고속 데이터호 접속 방법
JP2009164947A (ja) * 2008-01-08 2009-07-23 Nec Corp サーバ、パケット転送方法およびプログラム
JP5124494B2 (ja) * 2009-01-20 2013-01-23 株式会社日立製作所 輻輳制御装置
JP5655848B2 (ja) * 2009-01-28 2015-01-21 株式会社明電舎 Tcp通信方式
US8117322B1 (en) * 2009-12-10 2012-02-14 Google Inc. Latency reduction on HTTP servers
JP5271247B2 (ja) * 2009-12-15 2013-08-21 日本電信電話株式会社 通信品質データのモニタリング測定装置と方法およびプログラム
US8595477B1 (en) * 2011-03-24 2013-11-26 Google Inc. Systems and methods for reducing handshake delay in streaming protocol web requests
JP6335430B2 (ja) * 2013-03-21 2018-05-30 キヤノン株式会社 通信装置、通信装置の制御方法、プログラム
WO2014168524A1 (en) * 2013-04-08 2014-10-16 Telefonaktiebolaget L M Ericsson (Publ) Controlling establishment of multiple tcp connections
WO2017220149A1 (en) * 2016-06-23 2017-12-28 Telefonaktiebolaget Lm Ericsson (Publ) Scheduling packets for transport over an mptcp connection

Also Published As

Publication number Publication date
US20180034681A1 (en) 2018-02-01
JP2018019161A (ja) 2018-02-01
US10608863B2 (en) 2020-03-31

Similar Documents

Publication Publication Date Title
KR101576585B1 (ko) 지연된 확인응답에 의한 tcp 프록시 세션에 대한 버퍼 사용량 감소
EP3761591B1 (en) Tcp link configuration method, apparatus, and computer program product
US20160088074A1 (en) System and Method to Balance Servers Based on Server Load Status
KR102148046B1 (ko) 준비되지 않은 단말의 호출 기법
KR102045974B1 (ko) 데이터 전송 방법, 장치, 및 시스템
US9491261B1 (en) Remote messaging protocol
WO2008147578A1 (en) System and/or method for client- driven server load distribution
EP2741463A1 (en) Data packet transmission method
WO2015018338A1 (zh) 一种连接建立的方法及装置
TW201029419A (en) Method and apparatus for improving reconfiguration procedure for scheduling request
WO2015078341A1 (zh) 应用程序远程更新的方法和装置
JP2016170630A5 (ja)
US11700321B2 (en) Transparent proxy conversion of transmission control protocol (TCP) fast open connection
US11349934B2 (en) Opportunistic transmission control protocol (TCP) connection establishment
JP6412529B2 (ja) 送信制御装置、送信制御方法及び送信制御プログラム
CN112165449B (zh) web应用实时权限的控制方法、电子装置和存储介质
WO2017080363A1 (zh) 一种数据传输的方法及wap设备
WO2016154921A1 (zh) 一种数据业务的数据传输方法及装置
JP6129526B2 (ja) 通信装置、通信方法およびプログラム
US20150156164A1 (en) Communication system, communication control method, communication relay system, and communication relay control method
JP6758858B2 (ja) 通信装置、通信方法及びプログラム
WO2016015187A1 (zh) 一种数据调度方法及装置
JPWO2019232497A5 (ja)
CN113727152A (zh) 调整码率的方法、装置及存储介质
KR101641689B1 (ko) 데이터 가속 전송 방법, 서버 및 그를 구현하기 위한 프로그램이 기록된 기록매체

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180815

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: 20180911

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180928

R150 Certificate of patent or registration of utility model

Ref document number: 6412529

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250