JPWO2010073671A1 - Tcp送信制御装置及びtcp送信制御方法 - Google Patents

Tcp送信制御装置及びtcp送信制御方法 Download PDF

Info

Publication number
JPWO2010073671A1
JPWO2010073671A1 JP2010543889A JP2010543889A JPWO2010073671A1 JP WO2010073671 A1 JPWO2010073671 A1 JP WO2010073671A1 JP 2010543889 A JP2010543889 A JP 2010543889A JP 2010543889 A JP2010543889 A JP 2010543889A JP WO2010073671 A1 JPWO2010073671 A1 JP WO2010073671A1
Authority
JP
Japan
Prior art keywords
tcp
transmission
tso
session
communication
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.)
Granted
Application number
JP2010543889A
Other languages
English (en)
Other versions
JP5517951B2 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2010543889A priority Critical patent/JP5517951B2/ja
Publication of JPWO2010073671A1 publication Critical patent/JPWO2010073671A1/ja
Application granted granted Critical
Publication of JP5517951B2 publication Critical patent/JP5517951B2/ja
Expired - Fee Related 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

間欠的な送信方法を利用するアプリケーションにおける、TCP送信処理の効率化を実現するTCP送信制御装置及びTCP送信制御方法。通信端末(100)は、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するTSO制御部(102)と、TCPセッションで用いられるセッション識別子(202)と、TSO制御部(102)から通知された連結送信処理の利用情報とTCPセグメントの最大連結数とをTCPセッション毎に前記情報の全てを管理する連結管理部(103)とを備える。

Description

本発明は、TCP(Transport Control Protocol)送信制御装置及びTCP送信制御方法に関し、特に、TCP/IP(Transport Control Protocol/Internet Protocol)ネットワークを介してデータ送信を行う場合の効率的な送信制御方法の改良に関する。
インターネット上でTCPによるデータ配信を行う場合、遅延やジッタ、パケットロス等の様々な要因によるネットワーク状況の変化・差異を考慮しなければならない。また、受信側端末に関しても、能力の高いものから低いものまで、幅広い範囲の端末への対応を想定する必要がある。これまでの一般的なTCPスタックは、通信端末としてPC(Personal Computer)を想定した送信制御パラメータを用いて、ベストエフォート(Best Effort)でのデータ配信を実現していた。
このようなソフトウェアにより具現化されたTCP/IP通信においては、プロトコル処理をOS制御下のソフトウェア処理が実行するため、端末全体のCPU処理負荷が向上し、かつ他の優先処理の実行にプロトコル処理が阻害され、接続状態中のアプリケーションデータの通信がリアルタイム性を保証することが困難である場合がある。このような現象を回避するために、図1のように、近年ではハードウェア(NPU:Network Processing Unitとも呼ばれる)を用いてTCP/IP通信におけるプロトコル処理を実現する端末が登場している。
図1は、従来のTCP/IPを用いた通信端末の構成を示す図である。
図1に示すように、TCP/IPを用いた通信端末は、例えばPC(Personal Computer),PDA(Personal Digital Assistants)などのローエンド/ミドルエンド機10と、商用システムサーバ等のハイエンド機20とから構成される。
ローエンド/ミドルエンド機10は、ユーザがアプリケーション実行を指示すると、OS制御下のカーネル(Kernel)が、各プロトコル処理を順次実行する。図1では、カーネルは、アプリケーション指示に従って送信処理では、TCP層の全機能を処理し、IP層の全機能を処理する。そしてネットワークデバイスドライバ、及びネットワークデバイスがTCP/IP通信におけるプロトコル処理に従った送信を実行する。受信処理は、送信処理の逆の流れとなる。
一方、ハイエンド機20は、ユーザがアプリケーション実行を指示すると、OS制御下のカーネル(Kernel)が、各プロトコル処理を順次実行する。但し、TCP層の全機能処理及びIP層の全機能処理は、ネットワークプロセッサ(NPU)にハードウェア(HW)実装されている。
このように、TCP/IPを利用した通信は現在ソフトウェアに具現され様々なシステムに導入されている。ハイエンド機20では、TCP/IPをハードウェアで処理するNPUの導入も実現されている。OSで行う処理をハードウェアにより行うため、スループットの向上やCPU負荷の低減を図ることができる。
特許文献1には、TCP/IPをハードウェア的に処理する装置が記載されている。特許文献1に記載の装置は、接続状態におけるアプリケーションデータの通信のためのプロトコル処理を、OSの制御とは独立した状態で実行できるハードウェアによるプロトコルスタックを提供する。
特許文献2には、オフロードユニットを使用したTCP接続のためのデータ処理方法が記載されている。特許文献2に記載の方法は、アプリケーションデータの送信を従来のTCPセグメント単位の送信ではなく、複数のセグメントを連結して一括でハードウェアに送信要求を行うソフトウェア機能、及び一括で受け取った連結セグメントをTCPの送信セグメントに再分割してネットワークに連続送出するハードウェアを有する。これにより、TCP/IP通信のプロトコル処理の効率化を実現しようとする。
一度に連結できるTCPセグメントの最大数は、輻輳ウインドウサイズを参照して、その時のサイズを上限値として決定される。輻輳ウインドウサイズは、TCP層により保持される内部の変数であり、送信できるセグメントのサイズを表す。このサイズはネットワーク状況の変化にあわせて常に変動している。上記TCPセグメントを連結して一度に送出する機能は、TSO(TCP Segmentation Offload)と呼ばれている。TSOは、TCPのセグメンテーション処理の一部又は全部をハード(NIC)で行う機能である。OSで行う処理を部分的にハードで行うため、スループットの向上やCPU負荷の低減が期待することができる。
このように、ソフトウェアがTCPセグメントの処理を単一のTCPセグメント単位で行うのではなく、複数のTCPセグメントを一回分の処理量として一括処理するものがある。ソフトウェアが複数のTCPセグメントを一括処理することにより、送信時におけるOS制御下のソフトウェア処理量(CPU処理負荷)を低減させることができる。
特開2003−102057号公報 特開2003−224619号公報
しかしながら、このような従来のTCP/IP通信装置にあっては、ソフトウェア処理とハードウェア処理のTCP/IP通信のプロトコル処理における機能分割が、汎用的な用途を主体(一般のPC等を想定)としているため、用途固定の組み込み機器や送信データの通信方法に一定の規則性のあるアプリケーション等では、TCP/IP通信の送信性能を十分に発揮することが困難であるという課題があった。
本発明の目的は、間欠的な送信方法を利用するアプリケーションにおける、TCP送信処理の効率化を実現するTCP送信制御装置及びTCP送信制御方法を提供することである。
本発明のTCP送信制御装置は、ハードウェア処理及びソフトウェア処理によりTCP/IPデータ送信を行うTCP送信制御装置であって、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するTSO制御手段と、前記TCPセッションで用いられるセッション識別子と、前記TSO制御手段から通知された連結送信処理の利用情報と、前記TCPセグメントの最大連結数を管理し、TCPセッション単位でTSO動作を個別にON/OFF設定し、TSO機能を有効化/停止する連結管理手段と、を備える構成を採る。
本発明のTCP送信制御方法は、ハードウェア処理及びソフトウェア処理によりTCP/IPデータ送信を行うTCP送信制御方法であって、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するステップと、前記TCPセッションで用いられるセッション識別子と、前記TSO制御手段から通知された連結送信処理の利用情報と、前記TCPセグメントの最大連結数を管理し、TCPセッション単位でTSO動作を個別にON/OFF設定し、TSO機能を有効化/停止する管理ステップと、を有する。
本発明によれば、TCPセッションで用いられるセッション識別子と、TCPセグメントの連結送信処理の利用情報と、TCPセグメントの最大連結数とをTCPセッション毎に管理することにより、ソフトウェア処理とハードウェア処理を効率的に用いて、TCP/IP通信のデータ送信の効率化を図ることができる。具体的には、以下の効果を奏する。
(1)アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することができ、機器特性に応じた効率的なTCP通信を行うことができる。
(2)パケットロスによるネットワークの輻輳を検出した場合、セッションのパケットロスの修復処理が終了した後に、複数セグメントの連結送信機能を有効にすることができ、ネットワーク状況の変化によるパケットロス処理のCPU負荷上昇を抑え、効率的なTCP通信を行うことができる。
(3)間欠的な送信方法を利用するアプリケーションの場合、輻輳ウインドウサイズの低下を抑制することができ、複数セグメントの連結送信数の低下を防ぐことにより送信性能を維持し、効率的なTCP通信を行うことができる。
例えば、パケットロスが発生した以降の送信処理や間欠的な送信方法を利用するアプリケーションの場合でも、OS制御下でのソフトウェア処理を抑え、CPU負荷を低減した効率的なTCP通信を行うことが可能となる。
従来のTCP/IPを用いた通信端末の構成を示す図 本発明の実施の形態1に係るTCP送信制御装置が用いられる通信端末の構成を示す図 上記実施の形態1に係るTCP送信制御装置の連結管理部が管理するTCP送信制御情報の構成例を示す図 上記実施の形態1に係るTCP送信制御装置のTCP処理部の構成を示す図 上記実施の形態1に係るTCP送信制御装置のTCP通信管理情報の一例を示す図 上記実施の形態1に係るTCP送信制御装置のアプリケーションの起動、TCP送信制御情報200の更新、及びメディアデータ等の送信開始の制御シーケンスを示す図 本発明の実施の形態2に係るTCP送信制御装置が用いられる通信端末の構成を示すブロック図 上記実施の形態2に係るTCP送信制御装置のネットワークの輻輳検出、TSO機能停止、TCPの輻輳回復フェーズ、及びTSO機能回復の制御シーケンスを示す図 上記実施の形態2に係るTCP送信制御装置のTCP送信制御を説明する図 上記実施の形態2に係るTCP送信制御装置のTCP送信制御を説明する図 本発明の実施の形態3に係るTCP送信制御装置が用いられる通信端末の構成を示すブロック図 上記実施の形態3に係るTCP送信制御装置の輻輳ウインドウサイズ抑制、TSO機能の最大連結数維持、及び通信継続の制御シーケンスを示す図 上記実施の形態3に係るTCP送信制御装置の輻輳ウインドウ制御を説明する図 上記実施の形態3に係るTCP送信制御装置の輻輳ウインドウ制御を説明する図
以下、本発明の実施の形態について図面を参照して詳細に説明する。
(実施の形態1)
図2は、本発明の実施の形態1に係るTCP送信制御装置が用いられる通信端末の構成を示す図である。本実施の形態のTCP送信制御装置は、ホームネットワークの送信端末に適用することができる。
図2に示すように、通信端末100は、TCP/IP通信をハードウェアとソフトウェアに処理を分離して構成する送信装置である。
通信端末100は、ユーザに対する情報の入出力の制御を行うUI(User Interface)制御部101と、TCPセグメントの連結送信機能の利用可否を決定するTSO制御部102と、TSO制御部102からの連結送信機能に関する制御情報をアプリケーション(セッション)毎に管理する連結管理部103と、TCP/IPの送信バッファ制御を行う送信バッファ管理部104と、受信バッファ制御を行う受信バッファ管理部105と、TCP/IP通信のデータ送信に対する確認応答処理を行うACK処理部106と、確認応答に伴い次に送信できるTCPセグメントを管理するTCP窓管理部107と、送信するTCPセグメントをIP層に転送するデータセグメント送信部108と、パケットのIP層処理を実施するIP層制御部109と、ネットワークデバイスを制御するデバイス制御部110と、外部ネットワークとの間で通信を行うネットワークデバイス111とを備えて構成される。
UI制御部101は、ユーザからのTSOの利用可否の指示機能、音声や動画等のメディアデータの送信機能、及びその送信要求を受け付けたときに、TSO制御部102へ送信開始要求を受け渡す機能を有する。
TSO制御部102は、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定する。
具体的には、TSO制御部102は、UI制御部101からの送信開始要求を受け付けるとTSO設定情報(TSOのON/OFF、及び最大連結数)として管理し、その情報を連結管理部103へ受け渡す機能を有する。ここでTSO設定情報は、ユーザからの指示による設定ではなく、通信端末100内部で現状のセッション数等の状態から決定してもよい。
[TSO設定情報がOFFされる時の一例]
TSO設定情報(ON/OFF)の決定は、例えば端末内部で他の通信アプリケーションが実行されている場合などは、CPU負荷やアプリケーション同士の通信の競合を考慮するためにOFFに設定するなど、通信端末100のシステム構成やその時の通信状態に依存して決定される。
連結管理部103は、前記TCPセッションで用いられるセッション識別子と、TSO制御部102から通知された連結送信処理の利用情報とTCPセグメントの最大連結数とをTCPセッション毎に前記情報の全てを管理する。
連結管理部103は、前記セッション識別子毎に、TSO動作を個別にON/OFF設定し、TSO機能を有効化/停止する。
連結管理部103は、TSO制御部102から受け取ったTSO設定情報をアプリケーション(セッション)毎にTCP送信制御情報200として管理し、TCP窓管理部107の輻輳ウインドウサイズの変動にあわせてTSO動作のON/OFFを決定する機能を有する。
送信バッファ管理部104は、UI制御部101から渡された実際の送信データを一時的に蓄積しておくバッファである。送信バッファ管理部104に格納された送信データは、データセグメント送信部108により順次取得されていく。
受信バッファ管理部105は、受信側端末から送られたデータをIP層制御部109経由で一時的に蓄積しておくバッファである。受信バッファ管理部105に格納されたデータは、UI制御部101により順次取得されていく。
ACK処理部106及びTCP窓管理部107は、一般的に、TCP制御機能としてスロースタートや輻輳回避、早期再送、早期回復といったアルゴリズムを備えており、ネットワーク状況の変動やパケットのロスへの対応を行う機能を有する。また、TCP窓管理部107は、輻輳ウインドウサイズを管理しており、パケットのロスをACK処理部106が判断すると、管理している輻輳ウインドウサイズを縮小する。この縮小のためのアルゴリズムは、TCPの仕組みに従って制御される。
データセグメント送信部108は、TCP通信管理情報310(後述する図5参照)を参照してTCPセグメントの送信方法をTCP通信の基本動作にあわせてIP層に転送する機能を有する。
IP層制御部109は、IPのプロトコルスタックであり、データセグメント送信部108から渡される送信データを、IPの仕組みに従って制御し、デバイス制御部110及びネットワークデバイス111を介して受信側端末へ配信する。
デバイス制御部110は、ネットワークデバイスを制御する。
ネットワークデバイス111は、デバイス制御部110から受けたデータを実際のネットワークへ送信する機能、及びネットワークから受信したデータをデバイス制御部110へ渡す機能を持つ。また、ネットワークデバイス111は、送信の際にTSOが有効になっている場合は、連結されて受け取ったデータをTCPセグメントの1サイズ分にそれぞれ分割してからネットワークへ送信する機能を有する。
図3は、連結管理部103が管理するTCP送信制御情報200の構成例を示す図である。
TCP送信制御情報200は、連結管理部103がTCPの通信状況を元に変更するデータベースである。TCP送信制御情報200は、連結管理部103が管理するTSO設定情報を元に作成され、データベースとして格納される。
図3に示すように、TCP送信制御情報200は、管理番号201毎に、セッション記述子202、TSO動作203、及び最大連結数204を格納する。
TCP送信制御情報200は、管理番号201により通信端末100がオープンしているセッション数を管理し、セッション記述子202によりUI制御部101(アプリケーション)との紐付けを行う。TSO動作203は、そのセッションでのTSO利用状況をON/OFFで管理する。最大連結数204は、一度に連結させるTCPセグメントの最大数を管理し、ユーザからの指示によりTSO制御部102を経由して設定される。ユーザからの指示が無い場合は、通信中のネットワーク状況にあわせて変動するTCP窓管理部107の輻輳ウインドウサイズを元に決定される。これらの設定情報はTCP/IPアプリケーションの送信側が制御するものである。
また、TCP送信制御情報200は、ユーザからの指示によりTSO制御部102を経由して変更してもよい。
図4は、TCP処理部300の構成を示す図である。
図4に示すように、TCP処理部300は、TCP全般の通信を制御する。TCP処理部300は、図2のACK処理部106、TCP窓管理部107、データセグメント送信部108及び連結管理部103と、共通のデータベースであるTCP通信管理情報310とから構成される。
TCP処理部300は、共通のデータベースであるTCP通信管理情報310を参照/更新してTCP通信を制御する。
図5は、TCP通信管理情報310の一例を示す図である。
図5に示すように、TCP通信管理情報310は、TCP全般の通信を制御するパラメータを管理しており、TCP窓(輻輳ウインドウサイズ)の値やTSOの動作設定(従来では全セッションに対して全てONか全てOFFの2択であった)、その他端末固有の設定値(例えばパケットロスが発生した時の再送回数値など)が管理される。TCP通信管理情報310により管理されるパラメータは、端末に依存して様々な値が存在する。本実施の形態では、セッション記述子、TCP窓、TSO動作の3項目を対象とする。
以下、上述のように構成された送信装置を有する通信端末100の動作を説明する。
通信端末100が、アプリケーションの起動からTCP送信制御情報200の更新を行い、その後、実際のメディアデータ等の送信を開始するまでの動作を、図6の制御シーケンスを用いて説明する。
図6は、アプリケーションの起動、TCP送信制御情報200の更新、及びメディアデータ等の送信開始の制御シーケンスを示す図である。
通信端末100は、電源投入時にまずシステム全体の初期化を行う。この初期化には、各種常駐アプリケーションの初期化からネットワークデバイス111の初期化等が含まれる(S101参照)。
連結管理部103は、この電源投入時のタイミングでTCP送信制御情報200の各パラメータを初期化し、通信アプリケーションの起動と送信開始のタイミングで通知されるTSO設定情報の受け取りができるように準備を行う(S102参照)。
通信アプリケーション起動後に、UI制御部101は、ユーザからの通信指示などを受け付けると、TSO制御部102に対して送信開始メッセージを発行する(S103参照)。
このメッセージを受信したTSO制御部102は、TSO設定情報(TSOのON/OFF、及び必要に応じて最大連結数)として管理し(S104参照)、その情報を連結管理部103へ通知する(S105参照)。
この通知を受けた連結管理部103は、TCP送信制御情報200(図3参照)として、新規の管理番号201(図3参照)を付与し、通知を受けたセッションのソケットIDをセッション記述子202(図3参照)により管理し、受け取ったTSO設定情報の内容をTCP送信制御情報200のデータベースに格納して管理する(S106参照)。
連結管理部103は、TCP送信制御情報200の変更が発生すると、TCP処理部300(図4参照)のTCP通信管理情報310(図5参照)の該当するパラメータ項目も同時に全て更新する。更新はセッション記述子毎に行われるため、TSO動作において、個別にONかOFFの設定が可能となる。
また、TCP送信制御情報200(図3参照)の最大連結数204(図3参照)に変更があった場合は、TCP通信管理情報310(図5参照)のTCP窓の値を更新する。このように、TCP窓(輻輳ウインドウサイズ)の値を抑制することが、TCP送信時の最大連結数を抑制することに繋がり、転送レートを制御することができる。
データ通信が始まると、データセグメント送信部108は、TCPの送信処理の過程において、送信タイミング毎にTCP通信管理情報を参照して、TCPセグメントの連結送信を実施する(S107参照)。
データ通信中にTSO機能の利用状況を変更したい場合や、TCPセグメントの連結数を変更したい場合は、TSO制御部102を通していつでも設定を変更してもよい(S108)。そのため、アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することが可能となる。
以上詳細に説明したように、本実施の形態の通信端末100は、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するTSO制御部102と、TCPセッションで用いられるセッション識別子202と、TSO制御部102から通知された連結送信処理の利用情報とTCPセグメントの最大連結数とをTCPセッション毎に前記情報の全てを管理する連結管理部103とを備える。これにより、通信端末100は、アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することが可能になり、機器特性に応じた効率的なTCP通信を行うことができる。
従来ではTCPの複数セグメントの連結送信方法が、端末起動時にシステム全体としてTCPセグメントの連結送信の使用可否が決定されていた。これに対し、本実施の形態では、アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することが可能になり、機器特性に応じた効率的なTCP通信を行うことができる。例えば、能力の低い受信端末が通信相手の場合は、複数セグメントの連結送信方法を個別に停止させることが可能になり、受信側の端末でデータの取りこぼしが発生する要因が減少し、パケットロスによるTCPの再送制御によるオーバヘッドの増加を抑制することができる。
上記効果を従来例と比較してより具体的に説明する。
(1)従来の複数セグメントの連結送信方法は、端末起動時にシステム全体としてTCPセグメントの連結送信の使用可否が決定されるため、アプリケーション(セッション)単位による個別のデータ送信制御が困難である。能力の低い受信端末が通信相手の場合は、このような複数セグメントの連結送信方法(連続してデータを送信する方法)では受信側の端末でデータの取りこぼしが発生する要因になり、パケットロスによるTCPの再送制御が発生し、オーバヘッドの増加を引き起こす。すなわち、従来例では、端末起動時にシステム全体としてデータセグメント連結送信の使用可否が決定されるため、セッション(アプリケーション)単位での制御が困難である。
これに対して、本実施の形態では、セッション(アプリケーション)単位での制御ができ、機器特性に応じた効率的なTCP通信を行うことができる。
(2)従来の送信制御は汎用的な用途を主体としてTCPのソフトウェアとハードウェアによる機能分割が行われているため、パケットロスによるネットワークの輻輳を検出すると、そのセッションを終了するまで複数セグメントの連結送信機能が無効になる機能が働く。これによりパケットロスの発生後は、複数セグメントの連結送信機能が働かないため、TCPのセグメント単位でプロトコル処理をOS制御下でソフトウェアが処理することになり、CPU処理負荷の上昇、及び送信性能の低下を引き起こす。すなわち、従来例では、輻輳検出時は、セッションを終了するまで、データセグメント連結送信機能が無効になり、通信性能の低下を引き起すことである。常時有効の場合でも性能は劣化する。
これに対して、本実施の形態では、パケットロスによるネットワークの輻輳を検出した場合、セッションのパケットロスの修復処理が終了した後に、複数セグメントの連結送信機能を有効にすることができ、ネットワーク状況の変化によるパケットロス処理のCPU負荷上昇を抑え、効率的なTCP通信を行うことができる。
(3)間欠的な送信方法を利用するアプリケーションの場合、輻輳ウインドウサイズはその間欠区間が端末の再送タイムアウト時間(RTO:Retransmission Time Out)より長いと、保持されている輻輳ウインドウサイズの値を半分に低下させるTCP/IP通信の機能(CWV:Congestion Window Validation)が働いてしまうため、その輻輳ウインドウサイズの低下に伴い複数セグメントの連結送信数が低下し、送信性能の低下を引き起こすという課題があった。すなわち、従来例では、間欠的な送信方法を利用するアプリケーションの場合、輻輳ウインドウサイズが間欠区間毎に低下するため、データセグメント連結送信の機能を有効利用することが困難である。
これに対して、本実施の形態では、間欠的な送信方法を利用するアプリケーションの場合、輻輳ウインドウサイズの低下を抑制することができ、複数セグメントの連結送信数の低下を防ぐことにより送信性能を維持し、効率的なTCP通信を行うことができる。
(実施の形態2)
次に、パケットのロストによるネットワークの輻輳を検出した場合の通信端末100の処理の流れを、実施の形態2により説明する。
図7は、本発明の実施の形態2に係るTCP送信制御装置が用いられる通信端末の構成を示すブロック図である。図2と同一構成部分には同一符号を付している。
図7に示すように、輻輳状態監視部401は、ネットワーク状況の変化(例えばネットワークの輻輳によるパケットのロスト)を監視する。また、輻輳状態監視部401は、TCP窓管理部107が管理している輻輳ウインドウサイズを監視し、通信の定常状態のサイズから半減近くのサイズ縮小が発生した場合にネットワークは輻輳状態であると判断し、TSO機能の停止(減少したサイズから定常状態のサイズに復帰したときは再開)の要求を連結管理部103に通知する。その他のブロックの機能は図2と同様である。
また、連結管理部103は、管理する前記最大連結数に基づいて、輻輳ウインドウサイズの値を抑制するTCP窓の値を設定する。
次に、通信端末100が、TSO機能を有効にした状態からパケットのロストによるネットワークの輻輳を検出し、TSO機能を停止した後、TCPの輻輳回復フェーズを経て定常状態に戻った後にTSO機能を有効にする動作について図8のシーケンスを用いて説明する。
図8は、ネットワークの輻輳検出、TSO機能停止、TCPの輻輳回復フェーズ、及びTSO機能回復の制御シーケンスを示す図である。
図8に示すように、アプリケーションによるデータ通信が開始されると、TCP窓管理部107が管理している輻輳ウインドウサイズは、TCPのスロースタートフェーズを経て一定の値まで上昇し定常状態に入る。
輻輳状態監視部401は、アプリケーションの起動から終了までの間、輻輳ウインドウサイズの変動を常に監視する。その後ネットワーク状況が変化し、パケットのロストをACK処理部106が判断すると、TCP窓管理部107は、輻輳ウインドウサイズの縮小を実施する。
輻輳状態監視部401は、輻輳ウインドウサイズの縮小を検出する(S201参照)とTSO機能を無効化(OFF)するための要求を連結管理部103に対して発行する(S202参照)。
連結管理部103は、格納しているTCP送信制御情報200の該当する管理番号201におけるTSO動作203をOFFに変更しTSO機能を停止する(S203参照)。
データセグメント送信部108は、TCPセグメントの送信機会ごとにTSO機能の有無をTCP通信管理情報310(図5参照)に基づき確認している。このため、データセグメント送信部108は、無効になった時点でTCPセグメントの一括送信を停止し、通常の一セグメント単位での送信方法に変更してデータ通信を継続する(S204参照)。
TCP通信では、パケットのロスト後は、TCPのスロースタートフェーズ及び輻輳回復フェーズを経て徐々にまた輻輳ウインドウサイズを上昇させていく。
輻輳状態監視部401は、パケットのロストの発生の有無に関わらず常に輻輳ウインドウサイズを監視する(S205参照)。このため、輻輳状態監視部401は、輻輳回復フェーズを判断し(S206参照)、輻輳回復フェーズを経て輻輳ウインドウサイズが定常状態の値に戻ったときに、TSO機能を有効化(ON)するための要求を連結管理部103に対して発行する(S207参照)。
連結管理部103は、格納しているTCP送信制御情報200の該当する管理番号201におけるTSO動作203をONに変更しTSO機能を有効化する(S208参照)。
データセグメント送信部108は、TCPセグメントの送信機会ごとにTSO機能の有無をTCP通信管理情報に基づき確認している。このため、データセグメント送信部108は、有効になった時点でTCPセグメントの一括送信を復活させて、通常の一セグメント単位での送信方法から一括送信に変更してデータ通信を継続する(S209参照)。
上記制御シーケンスにより、パケットロスの発生後においても複数セグメントの連結送信機能を復帰させることが可能となる。
このように、実施の形態2によれば、通信端末100は、TCPセッションで用いられるセッション識別子202と、TCPセグメントの連結送信処理の利用情報と、TCPセグメントの最大連結数とをTCPセッション毎に管理する連結管理部103とを備える。さらに、通信端末100は、TCPセッションにおける送信データパケットの欠落を監視し、欠落が発生したTCPセッションのTCPセグメントの連結送信処理の利用情報を無効にし、TCPスロースタートフェーズを終了して輻輳回避フェーズに遷移後、利用情報を有効化する要求を連結管理部103に通知して連結送信処理を継続させる輻輳状態監視部401を備える。これにより、パケットロスによるネットワークの輻輳を検出した場合も、そのセッションのパケットロスの修復処理が終了した後に、複数セグメントの連結送信機能を有効にすることが可能となり、ネットワーク状況の変化によるパケットロス処理のCPU負荷上昇を抑え、効率的なTCP通信を行うことができる。以下、本実施の形態の特徴動作と効果について述べる。
図9A.Bは、TCP送信制御を説明する図であり、図9Aは対比説明のための従来例、図9Bは本実施の形態を示す。
図9Aの従来例及び図9Bの本実施の形態共に、スロースタートフェーズ終了後、緩やかに線形的に送信され、通信安定状態となる。この通信安定状態において輻輳が発生するまでの区間がTSO有効区間である。図9Aの従来例では、輻輳が発生すると、送信できるサイズを減らすと共に直ちにTSO無効区間となり、TSO無効区間となるためCPU負荷は線形的に増加する。従来例では、輻輳検出後は、CPU負荷が上昇し、上昇率は最大で約6倍となる。従来例では、輻輳検出時は、セッションを終了するまで、データセグメント連結送信機能が無効になり、通信性能の低下を引き起す。なお、TSOを常時有効の場合でも性能は劣化する。
これに対し、本実施の形態では、図9Bに示すように、輻輳検出時、データセグメント連結送信フラグを無効にし、スロースタートフェーズを終了して輻輳回避フェーズに遷移後、データセグメント連結送信フラグを有効化し、送信を再開する。すなわち、輻輳検出時、データセグメント連結送信フラグを無効にするだけであり、輻輳が発生してもTSO有効区間はそのまま継続する。このため、輻輳検出後もCPU負荷は変わらない。
このように、従来例ではパケットロスによるネットワークの輻輳を検出したとき、そのセッションを終了するまで複数セグメントの連結送信機能が無効になっていたのに対し、本実施の形態では、パケットロスの発生後においても複数セグメントの連結送信機能を復帰させることが可能になる。これにより、TCPのセグメント単位でプロトコル処理をOS制御下でソフトウェアが処理することがなくなり、CPU処理負荷の低減、及び送信性能の維持ができる。本実施の形態によって、最も効率的なリカバリー処理、及び転送レート維持を期待することができる。
(実施の形態3)
次に、間欠的な送信方法を利用するアプリケーションがデータ通信を行う場合の通信端末100の処理の流れを、実施の形態3により説明する。
間欠的な送信方法を利用するアプリケーションとは、例えばHTTP(Hyper Text Transfer Protocol)を用いたストリーミングである。通信端末100は通常、数百ms程度の一定区間毎にまとまったデータを送信し、そのデータサイズの送信後は次の区間まで送信を停止するという動作を繰り返す。このようなサービスの場合、ある区間でのデータ転送開始時と、次の区間でのデータ転送の開始時とでは、その間にTCPのプロトコル制御情報が再計算されてしまうため、異なる値が用いられることになる。TCP送信制御情報200(図3参照)の再計算の例として、例えば連続したデータ転送中は、送信側TCPスタックはパケットロスが発生しない限り徐々に輻輳ウインドウサイズを上昇させる。逆にデータ転送終了後の無通信区間では、送信側TCPスタックは、輻輳ウインドウサイズを徐々に減らす(CWV:Congestion Window Validation)といった処理が行われる。このCWVの処理は再送タイムアウト時間を超えて、データの送信要求(アプリケーションからのデータの書き込み)が無いときに機能が動作する。そのため、各区間の送信開始のタイミングで輻輳ウインドウサイズが小さくなりすぎている可能性があるために想定したスループットが得られないといった問題が発生することが考えられる。
図10は、本発明の実施の形態3に係るTCP送信制御装置が用いられる通信端末の構成を示すブロック図である。図2と同一構成部分には同一符号を付している。
図10に示すように、送信バッファ監視部601は、アプリケーションによる送信データの書き込み間隔を監視し、監視されている書き込み間隔が、現在の再送タイムアウト時間と等しくなった場合、RTO閾値制御部602に対してRTOの値を増加させる要求を出す。監視するセッションは、連結管理部103により管理されている全てのセッションに対応する。送信バッファ監視部601は、上記セッションのオープン(アプリケーションの起動)時にセッション記述子202を通知する。
RTO閾値制御部602は、通信端末100がパケットを送信後、再送タイムアウト時間(RTO)において規定される時間を変更する。一般的なTCPスタックでは、この再送タイムアウト時間に最小値が設けられており、200ms以上の値が初期値として用いられる。RTO閾値制御部602は、送信バッファ監視部601から変更要求があった場合は、その時間を増加させ、常に書き込み間隔よりも再送タイムアウト時間の方が大きくなるように調整を行う。その他のブロックの機能は図2と同様である。
次に、通信端末100が、間欠的な送信方法を利用するアプリケーションの通信の場合に、輻輳ウインドウサイズの低下を抑制し、TSO機能の最大連結数を維持して通信を継続する動作について図11のシーケンスを用いて説明する。
図11は、輻輳ウインドウサイズ抑制、TSO機能の最大連結数維持、及び通信継続の制御シーケンスを示す図である。
図11に示すように、HTTPを用いたストリーミングなどの間欠送信を行うアプリケーションのデータ送信が開始されると、連結管理部103は、そのオープンされたアプリケーションのセッションをTCP送信制御情報200(図3参照)として新規の管理番号201を付与する。そして、連結管理部103は、通知を受けたセッションのソケットIDをセッション記述子202により管理し、受け取ったTSO設定情報の内容をTCP送信制御情報200のデータベースに格納する(S301参照)。
その後、連結管理部103は、送信バッファ監視部601に対して、新しく登録された管理番号201(図3参照)に該当するセッション記述子202(図3参照)を通知する(S302参照)。
送信バッファ監視部601は、通知されたデータの書き込み間隔の監視を開始する(S303参照)。それと同時に、データセグメント送信部108が、アプリケーションによるデータ送信を開始する(S204参照)。
送信バッファ監視部601は、送信書き込み間隔Yの監視により、RTO閾値(RTO>Yが真)か否かを判断する(S305参照)。送信バッファ監視部601は、監視されている書き込み間隔が、現在の再送タイムアウト時間と等しく(あるいはそれ以上に)なった場合(S305のNo)、RTO閾値制御部602に対して現在の書き込み間隔の通知とともにRTOの値を増加させる要求を出す。RTO値の増加要求を受け取ったRTO閾値制御部602は、書き込み間隔よりもRTO値が大きくなるように調整を行う(S306参照)。
送信バッファ監視部601は、現在の再送タイムアウト時間と書き込み間隔の監視を常に実行し、再送タイムアウト時間が送信書き込み間隔Yより大きくなった場合(S305のYes)、ステップS307の動作を実行する。
RTO閾値制御部602により、再送タイムアウト時間が調整されるので再送タイムアウト時間を超えて、データの送信要求(アプリケーションからのデータの書き込み)が無くなる。このため、データセグメント送信部108は、TCPのCWV機能が動作せずに通信を継続することが可能になる(S308参照)。これにより、各区間の送信開始のタイミングで輻輳ウインドウサイズが小さくなりすぎている状態を抑制することが可能になる。
このように、実施の形態3によれば、通信端末100は、TCPセッションで用いられるセッション識別子202と、TCPセグメントの連結送信処理の利用情報と、TCPセグメントの最大連結数とをTCPセッション毎に管理する連結管理部103とを備える。さらに、通信端末100は、TCPセッションにおける送信データの書き込み間隔を監視する送信バッファ監視部601と、送信データの書き込み間隔がTCPの再送タイムアウト時間を上回るとき、再送タイムアウト時間を書き込み間隔よりも下回るようにタイムアウト時間を変更するRTO閾値制御部602とを備える。これにより、間欠的な送信方法を利用するアプリケーションの場合も、輻輳ウインドウサイズの低下を抑制することが可能になり、複数セグメントの連結送信数の低下を防ぐことにより送信性能を維持し、効率的なTCP通信を行うことができる。以下、本実施の形態の特徴動作と効果について述べる。
図12A.Bは、輻輳ウインドウ制御を説明する図であり、図12Aは対比説明のための従来例、図12Bは本実施の形態を示す。
図12Aの従来例及び図12Bの本実施の形態共に、スロースタートフェーズ終了後、緩やかに線形的に送信される。図12Aに示すように、従来例では、輻輳が発生すると、CWVの機能によって輻輳ウインドウが上下動する。送信停止区間は数秒から10数秒程度である。送信停止区間では、輻輳ウインドウを低下させてしまうため、非効率になる。
これに対し、本実施の形態では、図12Bに示すように、送信停止区間において、輻輳ウインドウを低下させず高い状態を維持する。具体的には、送信バッファ監視部601は、送信書込み間隔Yを監視し、RTO閾値(RTO>Yが真)を制御する。RTO閾値制御部602は、再送タイムアウト時間を送信書込み間隔Yよりも下回るようにタイムアウト時間を変更する。
このように、従来例ではTCPの複数セグメントの連結送信方法が、端末起動時にシステム全体としてTCPセグメントの連結送信の使用可否が決定されていたのに対し、本実施の形態では、アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することが可能になる。これにより、機器特性に応じた効率的なTCP通信を行うことができる。例えば、能力の低い受信端末が通信相手の場合は、複数セグメントの連結送信方法を個別に停止させることが可能になる。受信側の端末でデータの取りこぼしが発生する要因が減少し、パケットロスによるTCPの再送制御によるオーバヘッドの増加を抑制することができる。
その結果、データセグメント連結送信を有効活用することができ、CPU負荷を低減することができる。CPU負荷低減は、省電力化につながる。
以上の説明は本発明の好適な実施の形態の例証であり、本発明の範囲はこれに限定されることはない。
また、通信端末100の各機能ブロックは、集積回路であるLSIとして実現されてもよい。これらは個別に1チップ化されてもよいし、一部または全てを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適応等が可能性としてありえる。
本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
また、本実施の形態では通信端末という名称を用いたが、これは説明の便宜上であり、装置の名称は送信装置、TCP送信制御装置、通信システム、また方法の名称は送信制御方法等であってもよいことは勿論である。
また、上記TCP送信制御装置を構成する各部、例えばネットワークデバイス(NIC)の種類、その数及び接続方法などはどのようなものでもよい。
また、以上説明したTCP送信制御方法は、このTCP送信制御方法を機能させるためのプログラムでも実現される。このプログラムはコンピュータで読み取り可能な記録媒体に格納されている。
2008年12月25日出願の特願2008−331459の日本出願に含まれる明細書、図面及び要約書の開示内容は、すべて本願に援用される。
本発明に係るTCP送信制御装置及びTCP送信制御方法は、ホームネットワークやインターネット等のパケット網においてTCPを用いた高速通信、ストリーミングサービス等を行う場合の、TCP送信処理の効率化を実現する効果を有し、TCP/IP通信機能を有した家電機器等に対して有効である。また、車載LAN内に接続されTCP/IP通信を行う車載通信機器、家庭内ネットワーク用通信インタフェースを搭載した携帯電話等の用途にも応用できる。
100 通信端末
101 UI制御部
102 TSO制御部
103 連結管理部
104 送信バッファ管理部
105 受信バッファ管理部
106 ACK処理部
107 TCP窓管理部
108 データセグメント送信部
109 IP層制御部
110 デバイス制御部
111 ネットワークデバイス
401 輻輳状態監視部
601 送信バッファ監視部
602 RTO閾値制御部
本発明は、TCP(Transport Control Protocol)送信制御装置及びTCP送信制御方法に関し、特に、TCP/IP(Transport Control Protocol/Internet Protocol)ネットワークを介してデータ送信を行う場合の効率的な送信制御方法の改良に関する。
インターネット上でTCPによるデータ配信を行う場合、遅延やジッタ、パケットロス等の様々な要因によるネットワーク状況の変化・差異を考慮しなければならない。また、受信側端末に関しても、能力の高いものから低いものまで、幅広い範囲の端末への対応を想定する必要がある。これまでの一般的なTCPスタックは、通信端末としてPC(Personal Computer)を想定した送信制御パラメータを用いて、ベストエフォート(Best Effort)でのデータ配信を実現していた。
このようなソフトウェアにより具現化されたTCP/IP通信においては、プロトコル処理をOS制御下のソフトウェア処理が実行するため、端末全体のCPU処理負荷が向上し、かつ他の優先処理の実行にプロトコル処理が阻害され、接続状態中のアプリケーションデータの通信がリアルタイム性を保証することが困難である場合がある。このような現象を回避するために、図1のように、近年ではハードウェア(NPU:Network Processing Unitとも呼ばれる)を用いてTCP/IP通信におけるプロトコル処理を実現する端末が登場している。
図1は、従来のTCP/IPを用いた通信端末の構成を示す図である。
図1に示すように、TCP/IPを用いた通信端末は、例えばPC(Personal Computer),PDA(Personal Digital Assistants)などのローエンド/ミドルエンド機10と、商用システムサーバ等のハイエンド機20とから構成される。
ローエンド/ミドルエンド機10は、ユーザがアプリケーション実行を指示すると、OS制御下のカーネル(Kernel)が、各プロトコル処理を順次実行する。図1では、カーネルは、アプリケーション指示に従って送信処理では、TCP層の全機能を処理し、IP層の全機能を処理する。そしてネットワークデバイスドライバ、及びネットワークデバイスがTCP/IP通信におけるプロトコル処理に従った送信を実行する。受信処理は、送信処理の逆の流れとなる。
一方、ハイエンド機20は、ユーザがアプリケーション実行を指示すると、OS制御下のカーネル(Kernel)が、各プロトコル処理を順次実行する。但し、TCP層の全機能処理及びIP層の全機能処理は、ネットワークプロセッサ(NPU)にハードウェア(HW)実装されている。
このように、TCP/IPを利用した通信は現在ソフトウェアに具現され様々なシステムに導入されている。ハイエンド機20では、TCP/IPをハードウェアで処理するNPUの導入も実現されている。OSで行う処理をハードウェアにより行うため、スループットの向上やCPU負荷の低減を図ることができる。
特許文献1には、TCP/IPをハードウェア的に処理する装置が記載されている。特許文献1に記載の装置は、接続状態におけるアプリケーションデータの通信のためのプロトコル処理を、OSの制御とは独立した状態で実行できるハードウェアによるプロトコル
スタックを提供する。
特許文献2には、オフロードユニットを使用したTCP接続のためのデータ処理方法が記載されている。特許文献2に記載の方法は、アプリケーションデータの送信を従来のTCPセグメント単位の送信ではなく、複数のセグメントを連結して一括でハードウェアに送信要求を行うソフトウェア機能、及び一括で受け取った連結セグメントをTCPの送信セグメントに再分割してネットワークに連続送出するハードウェアを有する。これにより、TCP/IP通信のプロトコル処理の効率化を実現しようとする。
一度に連結できるTCPセグメントの最大数は、輻輳ウインドウサイズを参照して、その時のサイズを上限値として決定される。輻輳ウインドウサイズは、TCP層により保持される内部の変数であり、送信できるセグメントのサイズを表す。このサイズはネットワーク状況の変化にあわせて常に変動している。上記TCPセグメントを連結して一度に送出する機能は、TSO(TCP Segmentation Offload)と呼ばれている。TSOは、TCPのセグメンテーション処理の一部又は全部をハード(NIC)で行う機能である。OSで行う処理を部分的にハードで行うため、スループットの向上やCPU負荷の低減が期待することができる。
このように、ソフトウェアがTCPセグメントの処理を単一のTCPセグメント単位で行うのではなく、複数のTCPセグメントを一回分の処理量として一括処理するものがある。ソフトウェアが複数のTCPセグメントを一括処理することにより、送信時におけるOS制御下のソフトウェア処理量(CPU処理負荷)を低減させることができる。
特開2003−102057号公報 特開2003−224619号公報
しかしながら、このような従来のTCP/IP通信装置にあっては、ソフトウェア処理とハードウェア処理のTCP/IP通信のプロトコル処理における機能分割が、汎用的な用途を主体(一般のPC等を想定)としているため、用途固定の組み込み機器や送信データの通信方法に一定の規則性のあるアプリケーション等では、TCP/IP通信の送信性能を十分に発揮することが困難であるという課題があった。
本発明の目的は、間欠的な送信方法を利用するアプリケーションにおける、TCP送信処理の効率化を実現するTCP送信制御装置及びTCP送信制御方法を提供することである。
本発明のTCP送信制御装置は、ハードウェア処理及びソフトウェア処理によりTCP/IPデータ送信を行うTCP送信制御装置であって、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するTSO制御手段と、前記TCPセッションで用いられるセッション識別子と、前記TSO制御手段から通知された連結送信処理の利用情報と、前記TCPセグメントの最大連結数を管理し、TCPセッション単位でTSO動作を個別にON/OFF設定し、TSO機能を有効化/停止する連結管理手段と、を備える構成を採る。
本発明のTCP送信制御方法は、ハードウェア処理及びソフトウェア処理によりTCP
/IPデータ送信を行うTCP送信制御方法であって、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するステップと、前記TCPセッションで用いられるセッション識別子と、前記TSO制御手段から通知された連結送信処理の利用情報と、前記TCPセグメントの最大連結数を管理し、TCPセッション単位でTSO動作を個別にON/OFF設定し、TSO機能を有効化/停止する管理ステップと、を有する。
本発明によれば、TCPセッションで用いられるセッション識別子と、TCPセグメントの連結送信処理の利用情報と、TCPセグメントの最大連結数とをTCPセッション毎に管理することにより、ソフトウェア処理とハードウェア処理を効率的に用いて、TCP/IP通信のデータ送信の効率化を図ることができる。具体的には、以下の効果を奏する。
(1)アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することができ、機器特性に応じた効率的なTCP通信を行うことができる。
(2)パケットロスによるネットワークの輻輳を検出した場合、セッションのパケットロスの修復処理が終了した後に、複数セグメントの連結送信機能を有効にすることができ、ネットワーク状況の変化によるパケットロス処理のCPU負荷上昇を抑え、効率的なTCP通信を行うことができる。
(3)間欠的な送信方法を利用するアプリケーションの場合、輻輳ウインドウサイズの低下を抑制することができ、複数セグメントの連結送信数の低下を防ぐことにより送信性能を維持し、効率的なTCP通信を行うことができる。
例えば、パケットロスが発生した以降の送信処理や間欠的な送信方法を利用するアプリケーションの場合でも、OS制御下でのソフトウェア処理を抑え、CPU負荷を低減した効率的なTCP通信を行うことが可能となる。
従来のTCP/IPを用いた通信端末の構成を示す図 本発明の実施の形態1に係るTCP送信制御装置が用いられる通信端末の構成を示す図 上記実施の形態1に係るTCP送信制御装置の連結管理部が管理するTCP送信制御情報の構成例を示す図 上記実施の形態1に係るTCP送信制御装置のTCP処理部の構成を示す図 上記実施の形態1に係るTCP送信制御装置のTCP通信管理情報の一例を示す図 上記実施の形態1に係るTCP送信制御装置のアプリケーションの起動、TCP送信制御情報200の更新、及びメディアデータ等の送信開始の制御シーケンスを示す図 本発明の実施の形態2に係るTCP送信制御装置が用いられる通信端末の構成を示すブロック図 上記実施の形態2に係るTCP送信制御装置のネットワークの輻輳検出、TSO機能停止、TCPの輻輳回復フェーズ、及びTSO機能回復の制御シーケンスを示す図 上記実施の形態2に係るTCP送信制御装置のTCP送信制御を説明する図 上記実施の形態2に係るTCP送信制御装置のTCP送信制御を説明する図 本発明の実施の形態3に係るTCP送信制御装置が用いられる通信端末の構成を示すブロック図 上記実施の形態3に係るTCP送信制御装置の輻輳ウインドウサイズ抑制、TSO機能の最大連結数維持、及び通信継続の制御シーケンスを示す図 上記実施の形態3に係るTCP送信制御装置の輻輳ウインドウ制御を説明する図 上記実施の形態3に係るTCP送信制御装置の輻輳ウインドウ制御を説明する図
以下、本発明の実施の形態について図面を参照して詳細に説明する。
(実施の形態1)
図2は、本発明の実施の形態1に係るTCP送信制御装置が用いられる通信端末の構成を示す図である。本実施の形態のTCP送信制御装置は、ホームネットワークの送信端末に適用することができる。
図2に示すように、通信端末100は、TCP/IP通信をハードウェアとソフトウェアに処理を分離して構成する送信装置である。
通信端末100は、ユーザに対する情報の入出力の制御を行うUI(User Interface)制御部101と、TCPセグメントの連結送信機能の利用可否を決定するTSO制御部102と、TSO制御部102からの連結送信機能に関する制御情報をアプリケーション(セッション)毎に管理する連結管理部103と、TCP/IPの送信バッファ制御を行う送信バッファ管理部104と、受信バッファ制御を行う受信バッファ管理部105と、TCP/IP通信のデータ送信に対する確認応答処理を行うACK処理部106と、確認応答に伴い次に送信できるTCPセグメントを管理するTCP窓管理部107と、送信するTCPセグメントをIP層に転送するデータセグメント送信部108と、パケットのIP層処理を実施するIP層制御部109と、ネットワークデバイスを制御するデバイス制御部110と、外部ネットワークとの間で通信を行うネットワークデバイス111とを備えて構成される。
UI制御部101は、ユーザからのTSOの利用可否の指示機能、音声や動画等のメディアデータの送信機能、及びその送信要求を受け付けたときに、TSO制御部102へ送信開始要求を受け渡す機能を有する。
TSO制御部102は、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定する。
具体的には、TSO制御部102は、UI制御部101からの送信開始要求を受け付けるとTSO設定情報(TSOのON/OFF、及び最大連結数)として管理し、その情報を連結管理部103へ受け渡す機能を有する。ここでTSO設定情報は、ユーザからの指示による設定ではなく、通信端末100内部で現状のセッション数等の状態から決定してもよい。
[TSO設定情報がOFFされる時の一例]
TSO設定情報(ON/OFF)の決定は、例えば端末内部で他の通信アプリケーションが実行されている場合などは、CPU負荷やアプリケーション同士の通信の競合を考慮するためにOFFに設定するなど、通信端末100のシステム構成やその時の通信状態に依存して決定される。
連結管理部103は、前記TCPセッションで用いられるセッション識別子と、TSO制御部102から通知された連結送信処理の利用情報とTCPセグメントの最大連結数と
をTCPセッション毎に前記情報の全てを管理する。
連結管理部103は、前記セッション識別子毎に、TSO動作を個別にON/OFF設定し、TSO機能を有効化/停止する。
連結管理部103は、TSO制御部102から受け取ったTSO設定情報をアプリケーション(セッション)毎にTCP送信制御情報200として管理し、TCP窓管理部107の輻輳ウインドウサイズの変動にあわせてTSO動作のON/OFFを決定する機能を有する。
送信バッファ管理部104は、UI制御部101から渡された実際の送信データを一時的に蓄積しておくバッファである。送信バッファ管理部104に格納された送信データは、データセグメント送信部108により順次取得されていく。
受信バッファ管理部105は、受信側端末から送られたデータをIP層制御部109経由で一時的に蓄積しておくバッファである。受信バッファ管理部105に格納されたデータは、UI制御部101により順次取得されていく。
ACK処理部106及びTCP窓管理部107は、一般的に、TCP制御機能としてスロースタートや輻輳回避、早期再送、早期回復といったアルゴリズムを備えており、ネットワーク状況の変動やパケットのロスへの対応を行う機能を有する。また、TCP窓管理部107は、輻輳ウインドウサイズを管理しており、パケットのロスをACK処理部106が判断すると、管理している輻輳ウインドウサイズを縮小する。この縮小のためのアルゴリズムは、TCPの仕組みに従って制御される。
データセグメント送信部108は、TCP通信管理情報310(後述する図5参照)を参照してTCPセグメントの送信方法をTCP通信の基本動作にあわせてIP層に転送する機能を有する。
IP層制御部109は、IPのプロトコルスタックであり、データセグメント送信部108から渡される送信データを、IPの仕組みに従って制御し、デバイス制御部110及びネットワークデバイス111を介して受信側端末へ配信する。
デバイス制御部110は、ネットワークデバイスを制御する。
ネットワークデバイス111は、デバイス制御部110から受けたデータを実際のネットワークへ送信する機能、及びネットワークから受信したデータをデバイス制御部110へ渡す機能を持つ。また、ネットワークデバイス111は、送信の際にTSOが有効になっている場合は、連結されて受け取ったデータをTCPセグメントの1サイズ分にそれぞれ分割してからネットワークへ送信する機能を有する。
図3は、連結管理部103が管理するTCP送信制御情報200の構成例を示す図である。
TCP送信制御情報200は、連結管理部103がTCPの通信状況を元に変更するデータベースである。TCP送信制御情報200は、連結管理部103が管理するTSO設定情報を元に作成され、データベースとして格納される。
図3に示すように、TCP送信制御情報200は、管理番号201毎に、セッション記述子202、TSO動作203、及び最大連結数204を格納する。
TCP送信制御情報200は、管理番号201により通信端末100がオープンしているセッション数を管理し、セッション記述子202によりUI制御部101(アプリケーション)との紐付けを行う。TSO動作203は、そのセッションでのTSO利用状況をON/OFFで管理する。最大連結数204は、一度に連結させるTCPセグメントの最大数を管理し、ユーザからの指示によりTSO制御部102を経由して設定される。ユーザからの指示が無い場合は、通信中のネットワーク状況にあわせて変動するTCP窓管理部107の輻輳ウインドウサイズを元に決定される。これらの設定情報はTCP/IPアプリケーションの送信側が制御するものである。
また、TCP送信制御情報200は、ユーザからの指示によりTSO制御部102を経由して変更してもよい。
図4は、TCP処理部300の構成を示す図である。
図4に示すように、TCP処理部300は、TCP全般の通信を制御する。TCP処理部300は、図2のACK処理部106、TCP窓管理部107、データセグメント送信部108及び連結管理部103と、共通のデータベースであるTCP通信管理情報310とから構成される。
TCP処理部300は、共通のデータベースであるTCP通信管理情報310を参照/更新してTCP通信を制御する。
図5は、TCP通信管理情報310の一例を示す図である。
図5に示すように、TCP通信管理情報310は、TCP全般の通信を制御するパラメータを管理しており、TCP窓(輻輳ウインドウサイズ)の値やTSOの動作設定(従来では全セッションに対して全てONか全てOFFの2択であった)、その他端末固有の設定値(例えばパケットロスが発生した時の再送回数値など)が管理される。TCP通信管理情報310により管理されるパラメータは、端末に依存して様々な値が存在する。本実施の形態では、セッション記述子、TCP窓、TSO動作の3項目を対象とする。
以下、上述のように構成された送信装置を有する通信端末100の動作を説明する。
通信端末100が、アプリケーションの起動からTCP送信制御情報200の更新を行い、その後、実際のメディアデータ等の送信を開始するまでの動作を、図6の制御シーケンスを用いて説明する。
図6は、アプリケーションの起動、TCP送信制御情報200の更新、及びメディアデータ等の送信開始の制御シーケンスを示す図である。
通信端末100は、電源投入時にまずシステム全体の初期化を行う。この初期化には、各種常駐アプリケーションの初期化からネットワークデバイス111の初期化等が含まれる(S101参照)。
連結管理部103は、この電源投入時のタイミングでTCP送信制御情報200の各パラメータを初期化し、通信アプリケーションの起動と送信開始のタイミングで通知されるTSO設定情報の受け取りができるように準備を行う(S102参照)。
通信アプリケーション起動後に、UI制御部101は、ユーザからの通信指示などを受
け付けると、TSO制御部102に対して送信開始メッセージを発行する(S103参照)。
このメッセージを受信したTSO制御部102は、TSO設定情報(TSOのON/OFF、及び必要に応じて最大連結数)として管理し(S104参照)、その情報を連結管理部103へ通知する(S105参照)。
この通知を受けた連結管理部103は、TCP送信制御情報200(図3参照)として、新規の管理番号201(図3参照)を付与し、通知を受けたセッションのソケットIDをセッション記述子202(図3参照)により管理し、受け取ったTSO設定情報の内容をTCP送信制御情報200のデータベースに格納して管理する(S106参照)。
連結管理部103は、TCP送信制御情報200の変更が発生すると、TCP処理部300(図4参照)のTCP通信管理情報310(図5参照)の該当するパラメータ項目も同時に全て更新する。更新はセッション記述子毎に行われるため、TSO動作において、個別にONかOFFの設定が可能となる。
また、TCP送信制御情報200(図3参照)の最大連結数204(図3参照)に変更があった場合は、TCP通信管理情報310(図5参照)のTCP窓の値を更新する。このように、TCP窓(輻輳ウインドウサイズ)の値を抑制することが、TCP送信時の最大連結数を抑制することに繋がり、転送レートを制御することができる。
データ通信が始まると、データセグメント送信部108は、TCPの送信処理の過程において、送信タイミング毎にTCP通信管理情報を参照して、TCPセグメントの連結送信を実施する(S107参照)。
データ通信中にTSO機能の利用状況を変更したい場合や、TCPセグメントの連結数を変更したい場合は、TSO制御部102を通していつでも設定を変更してもよい(S108)。そのため、アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することが可能となる。
以上詳細に説明したように、本実施の形態の通信端末100は、データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するTSO制御部102と、TCPセッションで用いられるセッション識別子202と、TSO制御部102から通知された連結送信処理の利用情報とTCPセグメントの最大連結数とをTCPセッション毎に前記情報の全てを管理する連結管理部103とを備える。これにより、通信端末100は、アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することが可能になり、機器特性に応じた効率的なTCP通信を行うことができる。
従来ではTCPの複数セグメントの連結送信方法が、端末起動時にシステム全体としてTCPセグメントの連結送信の使用可否が決定されていた。これに対し、本実施の形態では、アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することが可能になり、機器特性に応じた効率的なTCP通信を行うことができる。例えば、能力の低い受信端末が通信相手の場合は、複数セグメントの連結送信方法を個別に停止させることが可能になり、受信側の端末でデータの取りこぼしが発生する要因が減少し、パケットロスによるTCPの再送制御によるオーバヘッドの増加を抑制することができる。
上記効果を従来例と比較してより具体的に説明する。
(1)従来の複数セグメントの連結送信方法は、端末起動時にシステム全体としてTCPセグメントの連結送信の使用可否が決定されるため、アプリケーション(セッション)単位による個別のデータ送信制御が困難である。能力の低い受信端末が通信相手の場合は、このような複数セグメントの連結送信方法(連続してデータを送信する方法)では受信側の端末でデータの取りこぼしが発生する要因になり、パケットロスによるTCPの再送制御が発生し、オーバヘッドの増加を引き起こす。すなわち、従来例では、端末起動時にシステム全体としてデータセグメント連結送信の使用可否が決定されるため、セッション(アプリケーション)単位での制御が困難である。
これに対して、本実施の形態では、セッション(アプリケーション)単位での制御ができ、機器特性に応じた効率的なTCP通信を行うことができる。
(2)従来の送信制御は汎用的な用途を主体としてTCPのソフトウェアとハードウェアによる機能分割が行われているため、パケットロスによるネットワークの輻輳を検出すると、そのセッションを終了するまで複数セグメントの連結送信機能が無効になる機能が働く。これによりパケットロスの発生後は、複数セグメントの連結送信機能が働かないため、TCPのセグメント単位でプロトコル処理をOS制御下でソフトウェアが処理することになり、CPU処理負荷の上昇、及び送信性能の低下を引き起こす。すなわち、従来例では、輻輳検出時は、セッションを終了するまで、データセグメント連結送信機能が無効になり、通信性能の低下を引き起すことである。常時有効の場合でも性能は劣化する。
これに対して、本実施の形態では、パケットロスによるネットワークの輻輳を検出した場合、セッションのパケットロスの修復処理が終了した後に、複数セグメントの連結送信機能を有効にすることができ、ネットワーク状況の変化によるパケットロス処理のCPU負荷上昇を抑え、効率的なTCP通信を行うことができる。
(3)間欠的な送信方法を利用するアプリケーションの場合、輻輳ウインドウサイズはその間欠区間が端末の再送タイムアウト時間(RTO:Retransmission Time Out)より長いと、保持されている輻輳ウインドウサイズの値を半分に低下させるTCP/IP通信の機能(CWV:Congestion Window Validation)が働いてしまうため、その輻輳ウインドウサイズの低下に伴い複数セグメントの連結送信数が低下し、送信性能の低下を引き起こすという課題があった。すなわち、従来例では、間欠的な送信方法を利用するアプリケーションの場合、輻輳ウインドウサイズが間欠区間毎に低下するため、データセグメント連結送信の機能を有効利用することが困難である。
これに対して、本実施の形態では、間欠的な送信方法を利用するアプリケーションの場合、輻輳ウインドウサイズの低下を抑制することができ、複数セグメントの連結送信数の低下を防ぐことにより送信性能を維持し、効率的なTCP通信を行うことができる。
(実施の形態2)
次に、パケットのロストによるネットワークの輻輳を検出した場合の通信端末100の処理の流れを、実施の形態2により説明する。
図7は、本発明の実施の形態2に係るTCP送信制御装置が用いられる通信端末の構成を示すブロック図である。図2と同一構成部分には同一符号を付している。
図7に示すように、輻輳状態監視部401は、ネットワーク状況の変化(例えばネットワークの輻輳によるパケットのロスト)を監視する。また、輻輳状態監視部401は、TCP窓管理部107が管理している輻輳ウインドウサイズを監視し、通信の定常状態のサ
イズから半減近くのサイズ縮小が発生した場合にネットワークは輻輳状態であると判断し、TSO機能の停止(減少したサイズから定常状態のサイズに復帰したときは再開)の要求を連結管理部103に通知する。その他のブロックの機能は図2と同様である。
また、連結管理部103は、管理する前記最大連結数に基づいて、輻輳ウインドウサイズの値を抑制するTCP窓の値を設定する。
次に、通信端末100が、TSO機能を有効にした状態からパケットのロストによるネットワークの輻輳を検出し、TSO機能を停止した後、TCPの輻輳回復フェーズを経て定常状態に戻った後にTSO機能を有効にする動作について図8のシーケンスを用いて説明する。
図8は、ネットワークの輻輳検出、TSO機能停止、TCPの輻輳回復フェーズ、及びTSO機能回復の制御シーケンスを示す図である。
図8に示すように、アプリケーションによるデータ通信が開始されると、TCP窓管理部107が管理している輻輳ウインドウサイズは、TCPのスロースタートフェーズを経て一定の値まで上昇し定常状態に入る。
輻輳状態監視部401は、アプリケーションの起動から終了までの間、輻輳ウインドウサイズの変動を常に監視する。その後ネットワーク状況が変化し、パケットのロストをACK処理部106が判断すると、TCP窓管理部107は、輻輳ウインドウサイズの縮小を実施する。
輻輳状態監視部401は、輻輳ウインドウサイズの縮小を検出する(S201参照)とTSO機能を無効化(OFF)するための要求を連結管理部103に対して発行する(S202参照)。
連結管理部103は、格納しているTCP送信制御情報200の該当する管理番号201におけるTSO動作203をOFFに変更しTSO機能を停止する(S203参照)。
データセグメント送信部108は、TCPセグメントの送信機会ごとにTSO機能の有無をTCP通信管理情報310(図5参照)に基づき確認している。このため、データセグメント送信部108は、無効になった時点でTCPセグメントの一括送信を停止し、通常の一セグメント単位での送信方法に変更してデータ通信を継続する(S204参照)。
TCP通信では、パケットのロスト後は、TCPのスロースタートフェーズ及び輻輳回復フェーズを経て徐々にまた輻輳ウインドウサイズを上昇させていく。
輻輳状態監視部401は、パケットのロストの発生の有無に関わらず常に輻輳ウインドウサイズを監視する(S205参照)。このため、輻輳状態監視部401は、輻輳回復フェーズを判断し(S206参照)、輻輳回復フェーズを経て輻輳ウインドウサイズが定常状態の値に戻ったときに、TSO機能を有効化(ON)するための要求を連結管理部103に対して発行する(S207参照)。
連結管理部103は、格納しているTCP送信制御情報200の該当する管理番号201におけるTSO動作203をONに変更しTSO機能を有効化する(S208参照)。
データセグメント送信部108は、TCPセグメントの送信機会ごとにTSO機能の有無をTCP通信管理情報に基づき確認している。このため、データセグメント送信部10
8は、有効になった時点でTCPセグメントの一括送信を復活させて、通常の一セグメント単位での送信方法から一括送信に変更してデータ通信を継続する(S209参照)。
上記制御シーケンスにより、パケットロスの発生後においても複数セグメントの連結送信機能を復帰させることが可能となる。
このように、実施の形態2によれば、通信端末100は、TCPセッションで用いられるセッション識別子202と、TCPセグメントの連結送信処理の利用情報と、TCPセグメントの最大連結数とをTCPセッション毎に管理する連結管理部103とを備える。さらに、通信端末100は、TCPセッションにおける送信データパケットの欠落を監視し、欠落が発生したTCPセッションのTCPセグメントの連結送信処理の利用情報を無効にし、TCPスロースタートフェーズを終了して輻輳回避フェーズに遷移後、利用情報を有効化する要求を連結管理部103に通知して連結送信処理を継続させる輻輳状態監視部401を備える。これにより、パケットロスによるネットワークの輻輳を検出した場合も、そのセッションのパケットロスの修復処理が終了した後に、複数セグメントの連結送信機能を有効にすることが可能となり、ネットワーク状況の変化によるパケットロス処理のCPU負荷上昇を抑え、効率的なTCP通信を行うことができる。以下、本実施の形態の特徴動作と効果について述べる。
図9A.Bは、TCP送信制御を説明する図であり、図9Aは対比説明のための従来例、図9Bは本実施の形態を示す。
図9Aの従来例及び図9Bの本実施の形態共に、スロースタートフェーズ終了後、緩やかに線形的に送信され、通信安定状態となる。この通信安定状態において輻輳が発生するまでの区間がTSO有効区間である。図9Aの従来例では、輻輳が発生すると、送信できるサイズを減らすと共に直ちにTSO無効区間となり、TSO無効区間となるためCPU負荷は線形的に増加する。従来例では、輻輳検出後は、CPU負荷が上昇し、上昇率は最大で約6倍となる。従来例では、輻輳検出時は、セッションを終了するまで、データセグメント連結送信機能が無効になり、通信性能の低下を引き起す。なお、TSOを常時有効の場合でも性能は劣化する。
これに対し、本実施の形態では、図9Bに示すように、輻輳検出時、データセグメント連結送信フラグを無効にし、スロースタートフェーズを終了して輻輳回避フェーズに遷移後、データセグメント連結送信フラグを有効化し、送信を再開する。すなわち、輻輳検出時、データセグメント連結送信フラグを無効にするだけであり、輻輳が発生してもTSO有効区間はそのまま継続する。このため、輻輳検出後もCPU負荷は変わらない。
このように、従来例ではパケットロスによるネットワークの輻輳を検出したとき、そのセッションを終了するまで複数セグメントの連結送信機能が無効になっていたのに対し、本実施の形態では、パケットロスの発生後においても複数セグメントの連結送信機能を復帰させることが可能になる。これにより、TCPのセグメント単位でプロトコル処理をOS制御下でソフトウェアが処理することがなくなり、CPU処理負荷の低減、及び送信性能の維持ができる。本実施の形態によって、最も効率的なリカバリー処理、及び転送レート維持を期待することができる。
(実施の形態3)
次に、間欠的な送信方法を利用するアプリケーションがデータ通信を行う場合の通信端末100の処理の流れを、実施の形態3により説明する。
間欠的な送信方法を利用するアプリケーションとは、例えばHTTP(Hyper Text Tra
nsfer Protocol)を用いたストリーミングである。通信端末100は通常、数百ms程度の一定区間毎にまとまったデータを送信し、そのデータサイズの送信後は次の区間まで送信を停止するという動作を繰り返す。このようなサービスの場合、ある区間でのデータ転送開始時と、次の区間でのデータ転送の開始時とでは、その間にTCPのプロトコル制御情報が再計算されてしまうため、異なる値が用いられることになる。TCP送信制御情報200(図3参照)の再計算の例として、例えば連続したデータ転送中は、送信側TCPスタックはパケットロスが発生しない限り徐々に輻輳ウインドウサイズを上昇させる。逆にデータ転送終了後の無通信区間では、送信側TCPスタックは、輻輳ウインドウサイズを徐々に減らす(CWV:Congestion Window Validation)といった処理が行われる。このCWVの処理は再送タイムアウト時間を超えて、データの送信要求(アプリケーションからのデータの書き込み)が無いときに機能が動作する。そのため、各区間の送信開始のタイミングで輻輳ウインドウサイズが小さくなりすぎている可能性があるために想定したスループットが得られないといった問題が発生することが考えられる。
図10は、本発明の実施の形態3に係るTCP送信制御装置が用いられる通信端末の構成を示すブロック図である。図2と同一構成部分には同一符号を付している。
図10に示すように、送信バッファ監視部601は、アプリケーションによる送信データの書き込み間隔を監視し、監視されている書き込み間隔が、現在の再送タイムアウト時間と等しくなった場合、RTO閾値制御部602に対してRTOの値を増加させる要求を出す。監視するセッションは、連結管理部103により管理されている全てのセッションに対応する。送信バッファ監視部601は、上記セッションのオープン(アプリケーションの起動)時にセッション記述子202を通知する。
RTO閾値制御部602は、通信端末100がパケットを送信後、再送タイムアウト時間(RTO)において規定される時間を変更する。一般的なTCPスタックでは、この再送タイムアウト時間に最小値が設けられており、200ms以上の値が初期値として用いられる。RTO閾値制御部602は、送信バッファ監視部601から変更要求があった場合は、その時間を増加させ、常に書き込み間隔よりも再送タイムアウト時間の方が大きくなるように調整を行う。その他のブロックの機能は図2と同様である。
次に、通信端末100が、間欠的な送信方法を利用するアプリケーションの通信の場合に、輻輳ウインドウサイズの低下を抑制し、TSO機能の最大連結数を維持して通信を継続する動作について図11のシーケンスを用いて説明する。
図11は、輻輳ウインドウサイズ抑制、TSO機能の最大連結数維持、及び通信継続の制御シーケンスを示す図である。
図11に示すように、HTTPを用いたストリーミングなどの間欠送信を行うアプリケーションのデータ送信が開始されると、連結管理部103は、そのオープンされたアプリケーションのセッションをTCP送信制御情報200(図3参照)として新規の管理番号201を付与する。そして、連結管理部103は、通知を受けたセッションのソケットIDをセッション記述子202により管理し、受け取ったTSO設定情報の内容をTCP送信制御情報200のデータベースに格納する(S301参照)。
その後、連結管理部103は、送信バッファ監視部601に対して、新しく登録された管理番号201(図3参照)に該当するセッション記述子202(図3参照)を通知する(S302参照)。
送信バッファ監視部601は、通知されたデータの書き込み間隔の監視を開始する(S
303参照)。それと同時に、データセグメント送信部108が、アプリケーションによるデータ送信を開始する(S204参照)。
送信バッファ監視部601は、送信書き込み間隔Yの監視により、RTO閾値(RTO>Yが真)か否かを判断する(S305参照)。送信バッファ監視部601は、監視されている書き込み間隔が、現在の再送タイムアウト時間と等しく(あるいはそれ以上に)なった場合(S305のNo)、RTO閾値制御部602に対して現在の書き込み間隔の通知とともにRTOの値を増加させる要求を出す。RTO値の増加要求を受け取ったRTO閾値制御部602は、書き込み間隔よりもRTO値が大きくなるように調整を行う(S306参照)。
送信バッファ監視部601は、現在の再送タイムアウト時間と書き込み間隔の監視を常に実行し、再送タイムアウト時間が送信書き込み間隔Yより大きくなった場合(S305のYes)、ステップS307の動作を実行する。
RTO閾値制御部602により、再送タイムアウト時間が調整されるので再送タイムアウト時間を超えて、データの送信要求(アプリケーションからのデータの書き込み)が無くなる。このため、データセグメント送信部108は、TCPのCWV機能が動作せずに通信を継続することが可能になる(S308参照)。これにより、各区間の送信開始のタイミングで輻輳ウインドウサイズが小さくなりすぎている状態を抑制することが可能になる。
このように、実施の形態3によれば、通信端末100は、TCPセッションで用いられるセッション識別子202と、TCPセグメントの連結送信処理の利用情報と、TCPセグメントの最大連結数とをTCPセッション毎に管理する連結管理部103とを備える。さらに、通信端末100は、TCPセッションにおける送信データの書き込み間隔を監視する送信バッファ監視部601と、送信データの書き込み間隔がTCPの再送タイムアウト時間を上回るとき、再送タイムアウト時間を書き込み間隔よりも下回るようにタイムアウト時間を変更するRTO閾値制御部602とを備える。これにより、間欠的な送信方法を利用するアプリケーションの場合も、輻輳ウインドウサイズの低下を抑制することが可能になり、複数セグメントの連結送信数の低下を防ぐことにより送信性能を維持し、効率的なTCP通信を行うことができる。以下、本実施の形態の特徴動作と効果について述べる。
図12A.Bは、輻輳ウインドウ制御を説明する図であり、図12Aは対比説明のための従来例、図12Bは本実施の形態を示す。
図12Aの従来例及び図12Bの本実施の形態共に、スロースタートフェーズ終了後、緩やかに線形的に送信される。図12Aに示すように、従来例では、輻輳が発生すると、CWVの機能によって輻輳ウインドウが上下動する。送信停止区間は数秒から10数秒程度である。送信停止区間では、輻輳ウインドウを低下させてしまうため、非効率になる。
これに対し、本実施の形態では、図12Bに示すように、送信停止区間において、輻輳ウインドウを低下させず高い状態を維持する。具体的には、送信バッファ監視部601は、送信書込み間隔Yを監視し、RTO閾値(RTO>Yが真)を制御する。RTO閾値制御部602は、再送タイムアウト時間を送信書込み間隔Yよりも下回るようにタイムアウト時間を変更する。
このように、従来例ではTCPの複数セグメントの連結送信方法が、端末起動時にシステム全体としてTCPセグメントの連結送信の使用可否が決定されていたのに対し、本実
施の形態では、アプリケーション(セッション)毎に、TCPセグメントの連結送信機能の利用可否を決定することが可能になる。これにより、機器特性に応じた効率的なTCP通信を行うことができる。例えば、能力の低い受信端末が通信相手の場合は、複数セグメントの連結送信方法を個別に停止させることが可能になる。受信側の端末でデータの取りこぼしが発生する要因が減少し、パケットロスによるTCPの再送制御によるオーバヘッドの増加を抑制することができる。
その結果、データセグメント連結送信を有効活用することができ、CPU負荷を低減することができる。CPU負荷低減は、省電力化につながる。
以上の説明は本発明の好適な実施の形態の例証であり、本発明の範囲はこれに限定されることはない。
また、通信端末100の各機能ブロックは、集積回路であるLSIとして実現されてもよい。これらは個別に1チップ化されてもよいし、一部または全てを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適応等が可能性としてありえる。
本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
また、本実施の形態では通信端末という名称を用いたが、これは説明の便宜上であり、装置の名称は送信装置、TCP送信制御装置、通信システム、また方法の名称は送信制御方法等であってもよいことは勿論である。
また、上記TCP送信制御装置を構成する各部、例えばネットワークデバイス(NIC)の種類、その数及び接続方法などはどのようなものでもよい。
また、以上説明したTCP送信制御方法は、このTCP送信制御方法を機能させるためのプログラムでも実現される。このプログラムはコンピュータで読み取り可能な記録媒体に格納されている。
2008年12月25日出願の特願2008−331459の日本出願に含まれる明細書、図面及び要約書の開示内容は、すべて本願に援用される。
本発明に係るTCP送信制御装置及びTCP送信制御方法は、ホームネットワークやインターネット等のパケット網においてTCPを用いた高速通信、ストリーミングサービス等を行う場合の、TCP送信処理の効率化を実現する効果を有し、TCP/IP通信機能を有した家電機器等に対して有効である。また、車載LAN内に接続されTCP/IP通
信を行う車載通信機器、家庭内ネットワーク用通信インタフェースを搭載した携帯電話等の用途にも応用できる。
100 通信端末
101 UI制御部
102 TSO制御部
103 連結管理部
104 送信バッファ管理部
105 受信バッファ管理部
106 ACK処理部
107 TCP窓管理部
108 データセグメント送信部
109 IP層制御部
110 デバイス制御部
111 ネットワークデバイス
401 輻輳状態監視部
601 送信バッファ監視部
602 RTO閾値制御部

Claims (10)

  1. ハードウェア処理及びソフトウェア処理によりTCP/IP(Transport Control Protocol/Internet Protocol)データ送信を行うTCP送信制御装置であって、
    データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するTSO(TCP Segmentation Offload)制御手段と、
    前記TCPセッションで用いられるセッション識別子と、前記TSO制御手段から通知された連結送信処理の利用情報と、前記TCPセグメントの最大連結数を管理し、TCPセッション単位でTSO動作を個別にON/OFF設定し、TSO機能を有効化/停止する連結管理手段と、
    を備えるTCP送信制御装置。
  2. 前記TCPセッションにおける送信データパケットの欠落を監視し、欠落が発生したTCPセッションのTCPセグメントの連結送信処理の利用情報を無効にし、TCPスロースタートフェーズを終了して輻輳回避フェーズに遷移後、前記利用情報を有効化する要求を前記連結管理手段に通知して連結送信処理を継続させる輻輳状態監視手段と、
    を更に備える請求項1記載のTCP送信制御装置。
  3. 前記TCPセッションにおける送信データの書き込み間隔を監視する送信バッファ監視手段と、
    前記送信データの書き込み間隔がTCPの再送タイムアウト時間を上回るとき、前記再送タイムアウト時間を前記書き込み間隔以上になるようにタイムアウト時間を変更するRTO閾値制御手段と、
    を更に備える請求項1記載のTCP送信制御装置。
  4. 前記連結管理手段は、管理する前記最大連結数に基づいて、輻輳ウインドウサイズの値を抑制するTCP窓の値を設定する請求項1記載のTCP送信制御装置。
  5. 前記連結管理手段は、輻輳ウインドウサイズの変動にあわせてTSO動作のON/OFFを決定する請求項1記載のTCP送信制御装置。
  6. ハードウェア処理及びソフトウェア処理によりTCP/IPデータ送信を行うTCP送信制御方法であって、
    データ送信のためにオープンされたTCPセッションがTCPセグメントの連結送信処理を利用するか否かを判定するステップと、
    前記TCPセッションで用いられるセッション識別子と、前記TSO制御手段から通知された連結送信処理の利用情報と、前記TCPセグメントの最大連結数を管理し、TCPセッション単位でTSO動作を個別にON/OFF設定し、TSO機能を有効化/停止する管理ステップと、
    を有するTCP送信制御方法。
  7. 前記TCPセッションにおける送信データパケットの欠落を監視するステップと、
    欠落が発生したTCPセッションのTCPセグメントの連結送信処理の利用情報を無効にし、TCPスロースタートフェーズを終了して輻輳回避フェーズに遷移後、前記利用情報を有効化する要求を通知して連結送信処理を継続させるステップと、
    を更に有する請求項6記載のTCP送信制御方法。
  8. 前記TCPセッションにおける送信データの書き込み間隔を監視するステップと、
    前記送信データの書き込み間隔がTCPの再送タイムアウト時間を上回るとき、前記再送タイムアウト時間を前記書き込み間隔以上になるようにタイムアウト時間を変更するステップと、
    を更に有する請求項6記載のTCP送信制御方法。
  9. 前記管理ステップでは、管理する前記最大連結数に基づいて、輻輳ウインドウサイズの値を抑制するTCP窓の値を設定する請求項6記載のTCP送信制御方法。
  10. 前記管理ステップでは、輻輳ウインドウサイズの変動にあわせてTSO動作のON/OFFを決定する請求項6記載のTCP送信制御方法。
JP2010543889A 2008-12-25 2009-12-24 Tcp送信制御装置及びtcp送信制御方法 Expired - Fee Related JP5517951B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010543889A JP5517951B2 (ja) 2008-12-25 2009-12-24 Tcp送信制御装置及びtcp送信制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008331459 2008-12-25
JP2008331459 2008-12-25
PCT/JP2009/007197 WO2010073671A1 (ja) 2008-12-25 2009-12-24 Tcp送信制御装置及びtcp送信制御方法
JP2010543889A JP5517951B2 (ja) 2008-12-25 2009-12-24 Tcp送信制御装置及びtcp送信制御方法

Publications (2)

Publication Number Publication Date
JPWO2010073671A1 true JPWO2010073671A1 (ja) 2012-06-07
JP5517951B2 JP5517951B2 (ja) 2014-06-11

Family

ID=42287312

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010543889A Expired - Fee Related JP5517951B2 (ja) 2008-12-25 2009-12-24 Tcp送信制御装置及びtcp送信制御方法

Country Status (3)

Country Link
US (1) US9042244B2 (ja)
JP (1) JP5517951B2 (ja)
WO (1) WO2010073671A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9094326B2 (en) * 2010-11-02 2015-07-28 Qualcomm Incorporated Systems and methods for communicating in a network
WO2014082199A1 (en) * 2012-11-27 2014-06-05 Telefonaktiebolaget L M Ericsson (Publ) Base station, user equipment and method for tcp transmission with dynamic tdd reconfiguration
US10681145B1 (en) * 2014-12-22 2020-06-09 Chelsio Communications, Inc. Replication in a protocol offload network interface controller
EP3560207A1 (en) * 2016-12-21 2019-10-30 British Telecommunications Public Limited Company Managing congestion response during content delivery
US11711553B2 (en) 2016-12-29 2023-07-25 British Telecommunications Public Limited Company Transmission parameter control for segment delivery
JP6963411B2 (ja) * 2017-05-19 2021-11-10 キヤノン株式会社 通信装置、通信方法、およびプログラム
US10833703B2 (en) 2017-12-13 2020-11-10 Canon Kabushiki Kaisha DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6788704B1 (en) * 1999-08-05 2004-09-07 Intel Corporation Network adapter with TCP windowing support
KR20010076328A (ko) 2000-01-19 2001-08-11 이정태 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그동작방법
JP4041646B2 (ja) * 2000-09-07 2008-01-30 Kddi株式会社 Tcp通信方法
US6934256B1 (en) * 2001-01-25 2005-08-23 Cisco Technology, Inc. Method of detecting non-responsive network flows
JP4015395B2 (ja) 2001-09-19 2007-11-28 ソフトバンクモバイル株式会社 移動通信システム
US20030105977A1 (en) * 2001-12-05 2003-06-05 International Business Machines Corporation Offload processing for secure data transfer
JP3859521B2 (ja) 2002-01-29 2006-12-20 ソフトバンクモバイル株式会社 移動通信システム
JP4100182B2 (ja) 2003-01-30 2008-06-11 松下電器産業株式会社 通信端末装置及びその制御方法
JP2006100919A (ja) * 2004-09-28 2006-04-13 Nippon Telegr & Teleph Corp <Ntt> Tcpコネクション中継方法およびtcpコネクション中継装置
US20060227804A1 (en) 2005-04-07 2006-10-12 International Business Machines Corporation Method for enablement for offloading functions in a single LAN adapter
US7430220B2 (en) * 2005-07-29 2008-09-30 International Business Machines Corporation System load based dynamic segmentation for network interface cards
JP2007142582A (ja) * 2005-11-15 2007-06-07 Canon Inc データ通信装置、データ通信方法、プログラム及び記憶媒体
US20070297334A1 (en) * 2006-06-21 2007-12-27 Fong Pong Method and system for network protocol offloading
US7684319B2 (en) * 2006-06-29 2010-03-23 Intel Corporation Transmission control protocol congestion window
JP2008061223A (ja) * 2006-08-04 2008-03-13 Canon Inc 通信装置及び通信方法
EP1885098B1 (en) 2006-08-04 2011-04-06 Canon Kabushiki Kaisha Communication apparatus and communication control method

Also Published As

Publication number Publication date
JP5517951B2 (ja) 2014-06-11
WO2010073671A1 (ja) 2010-07-01
US20120063309A1 (en) 2012-03-15
US9042244B2 (en) 2015-05-26

Similar Documents

Publication Publication Date Title
JP5517951B2 (ja) Tcp送信制御装置及びtcp送信制御方法
US8081569B2 (en) Dynamic adjustment of connection setup request parameters
KR101344886B1 (ko) 효율적인 데이터 처리를 위한 방법 및 장치
JP5974159B2 (ja) 通信ネットワーク内でtcpプロトコルにより引き起こされたバックオフを緩和する装置及び方法
US8667167B2 (en) Method and network device for controlling transmission rate of communication interface
US20070201380A1 (en) Method and system for power-efficient adaptive link aggregation
CN1819553A (zh) 使用多个传输控制协议确认的传输控制协议拥塞控制
WO2008032750A1 (fr) dispositif de communication
JP6595112B2 (ja) データ送信方法及び装置並びに端末
US20120213118A1 (en) Method and system for network interface controller (nic) address resolution protocol (arp) batching
WO2005020523A1 (ja) セッション中継装置及び中継方法
US20140355623A1 (en) Transmission Control Protocol (TCP) Connection Control Parameter In-Band Signaling
WO2020211341A1 (zh) 拥塞控制方法、装置、计算机设备及存储介质
CN115378955A (zh) 一种数据处理方法以及相关设备
CN108737119B (zh) 一种数据传输方法、装置及系统
WO2021103822A1 (zh) 用于获取共用最大分段大小mss的方法及装置
WO2016061985A1 (zh) 报文处理方法、装置及系统
CN102195941B (zh) 一种改进的传输控制协议代理实现方法及装置
KR20200097736A (ko) 무선 통신 방법 및 디바이스
WO2022126411A1 (zh) 一种网络拥塞管理方法以及相关装置
WO2022140946A1 (zh) 通信装置和时钟管理方法
US20210168219A1 (en) Relay device, data relay method and program
JP2010183470A (ja) ネットワーク接続装置並びにネットワーク接続制御方法及びプログラム
JP2017521905A (ja) 送信機における電力節約および性能バランシングのための方法および機構
KR101685658B1 (ko) Yellow-Light TCP : 모바일 데이터 전송에서의 에너지 절감형 프로토콜 방법

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121025

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140214

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140401

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees