JP2005167353A - 送信装置およびプログラム - Google Patents

送信装置およびプログラム Download PDF

Info

Publication number
JP2005167353A
JP2005167353A JP2003399988A JP2003399988A JP2005167353A JP 2005167353 A JP2005167353 A JP 2005167353A JP 2003399988 A JP2003399988 A JP 2003399988A JP 2003399988 A JP2003399988 A JP 2003399988A JP 2005167353 A JP2005167353 A JP 2005167353A
Authority
JP
Japan
Prior art keywords
data block
function
transmitted
retransmission
transmission
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.)
Pending
Application number
JP2003399988A
Other languages
English (en)
Other versions
JP2005167353A5 (ja
Inventor
Motoharu Miyake
基治 三宅
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.)
NTT Docomo Inc
Original Assignee
NTT Docomo 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 NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2003399988A priority Critical patent/JP2005167353A/ja
Priority to US10/994,713 priority patent/US7764616B2/en
Priority to DE200460011453 priority patent/DE602004011453T2/de
Priority to EP20040027987 priority patent/EP1536589B1/en
Priority to CNB2004100955131A priority patent/CN100542130C/zh
Publication of JP2005167353A publication Critical patent/JP2005167353A/ja
Publication of JP2005167353A5 publication Critical patent/JP2005167353A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • 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/12Avoiding congestion; Recovering from congestion
    • 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
    • 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/29Flow control; Congestion control using a combination of thresholds
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

【課題】 送信装置と受信装置との通信を仲介する通信網の輻輳が軽微であると推測される場合に、その輻輳を悪化させることなくデータの送信効率を向上させる。
【解決手段】 データブロック毎に固有の番号を書き込んで受信装置へ送信する送信装置に、送信済みのデータブロックについて再送タイムアウトによる再送信を行った後に、その再送信に係るデータブロックの番号を有する確認応答が上記受信装置から送信されてきた場合には、送信済みのデータブロックに後続して送信するべき後続データブロックを所定の数だけ送信させる。
【選択図】 図3

Description

再送タイムアウトが発生した場合に、効率良くデータ通信を継続する技術に関する。
TCP(Transmission Control Protocol)にしたがってデータ通信を行う送信装置や受信装置が普及している。この種の送信装置は、受信装置へ送信するべきデータを所定のデータサイズを有する部分データに分割し、各部分データ毎に固有のヘッダを付与したデータブロック(以下、「セグメント」)として送信する。なお、上記ヘッダには、各セグメントに内包されている部分データを一意に特定するシーケンス番号が書き込まれており、そのシーケンス番号が小さいものから順に送信される。一方、受信装置は、上記セグメントを受信すると、その旨を送信装置へ通知するための通信メッセージ(以下、「確認応答」)を送信装置へ返信する。この確認応答には、受信したセグメントの次に受信装置が受信するべきセグメントのシーケンス番号が書き込まれている。このため、TCPにしたがって行われる通信では、送信したセグメントが受信装置に正しく受信されたことを送信装置に確認させることが可能になっている。
しかしながら、送信装置から送信されたセグメントが常に受信装置へ到達するとは限らない。例えば、送信装置と受信装置との通信を仲介する通信網が輻輳状態であれば、送信装置から送信されたセグメントが受信装置へ到達しないこと(以下、「セグメントの欠落」)が起こり得る。このようなセグメントの欠落が発生した場合には、そのセグメントに対する確認応答が送信されてくることはない。よって、そのセグメントに対する確認応答が送信されてくることを待ち続けることは無駄である。そこで、TCPにしたがって行われる通信では、セグメントを送信してから所定の時間(以下、「再送タイムアウト時間」)が経過するまでに、そのセグメントに対応する確認応答が送信されてこない場合には、そのセグメントは欠落したものと見なして送信装置に再送信させるようにしている。なお、送信済みのセグメントに対応する確認応答とは、そのセグメントのシーケンス番号よりも大きいシーケンス番号が書き込まれた確認応答のことである。以下では、上記再送タイムアウト時間が経過するまでに対応する確認応答が送信されてこないことを「再送タイムアウト」と呼び、このようにしてセグメントを再送信することを「再送タイムアウトによる再送信」と呼ぶ。
上述したように、TCPにしたがって行われる通信では、セグメントが受信装置に正しく受信されたことを確認させてから次のセグメントを送信装置に送信させることによって、通信の信頼性を高めることができる。しかしながら、その一方で、データの送信効率が低下してしまうといった問題点がある。そこで、TCPにしたがってセグメントを送信する送信装置は、データの送信効率を向上させるために、受信装置から送信されてくる確認応答の到達を待たずに、連続して複数のセグメントを送信し、送信済みのセグメントに対応する確認応答を受信する度に、連続して送信するセグメントの数を順次増加させるようにすることもできる。以下では、このようにしてセグメントを送信することを「ウィンドウ制御」と呼び、連続して送信するセグメントの数を「輻輳ウィンドウサイズ」と呼ぶ。このようなウィンドウ制御を行ってセグメントを送信している状況下で、上記再送タイムアウトが発生した場合には、送信装置は、対応する確認応答を受信しなかったセグメントの再送信を行うことに加えて、上記輻輳ウィンドウサイズをその最小値(例えば、1つのセグメントを示す値)まで引き下げる。そして、この送信装置は、送信済みのセグメントに対応する確認応答を受信する度に輻輳ウィンドウサイズを所定のアルゴリズム(例えば、スロースタートアルゴリズムおよび輻輳回避アルゴリズム)にしたがって増加させる。これは、送信装置と受信装置との通信を仲介する通信網の輻輳に起因して上記再送タイムアウトが発生していた場合に、そのような状態の通信網へ大量のセグメントを流入させて輻輳を悪化させることを回避するためである。なお、スロースタートアルゴリズムとは、輻輳ウィンドウサイズを指数関数的に増加させるアルゴリズムであり、輻輳回避アルゴリズムとは、輻輳ウィンドウサイズを線形的に増加させるアルゴリズムである。以下では、スロースタートアルゴリズムにしたがって輻輳ウィンドウサイズを増加させる過程を「スロースタート過程」と称し、輻輳回避アルゴリズムにしたがって輻輳ウィンドウサイズを増加させる過程を「輻輳回避過程」と称する。一般に、TCPにしたがってセグメントを送信する送信装置は、輻輳ウィンドウサイズが所定の閾値に達するまでは上記スロースタート過程を行い、その閾値に達し後は輻輳回避過程を行うようになっている。
ところで、TCPにしたがってセグメントを送信する送信装置は、上述した再送タイムアウトによるセグメントの再送信の他に、既に受信済みの確認応答と同一の確認応答(以下、重複確認応答)を所定回数(例えば、3回)受信した場合に、そのセグメントを再送信するようになっている。このような態様でのセグメントの再送信は、再送タイムアウトの発生を待つことなくセグメントの再送信が行われるので、「高速再送信」と呼ばれている。この高速再送信を行った場合も、送信装置は、上記輻輳ウィンドウサイズを所定の値(例えば、高速再送信を行う時点の輻輳ウィンドウサイズの半分の値)まで引き下げ、送信済みのセグメントに対応する確認応答を受信する度に上記輻輳回避アルゴリズムにしたがって輻輳ウィンドウサイズを増加させる。これは、前述した再送タイムアウトによる再送信の場合と同様に通信網の輻輳を悪化させないようにするためである。なお、このような態様で輻輳ウィンドウサイズを増加させることは、上述したスロースタート過程を経ずに輻輳回避過程が行われるため、「高速回復」と呼ばれている。
このように、TCPにしたがってセグメントを送信する送信装置は、以上に説明した2つの契機でセグメントの再送信を行う。しかしながら、これら2つの契機は互いに無関係に発生し得るため、例えば、高速再送信を行った後に、その高速再送信に係るセグメントに対応する確認応答が所定の再送タイムアウト時間内に受信されず、更に再送タイムアウトが発生してしまうといったことが起こり得る。このような事態が生じてしまうと、輻輳ウィンドウサイズは、まず、高速再送が行われる時点で所定の値まで引き下げられ、次いで、再送タイムアウトによる再送信が行われる時点で、その最小値まで引き下げられることになる。つまり、データの送信効率が極度に悪化してしまう。このような問題点を解決するための技術としては、特許文献1や非特許文献1に開示された技術が挙げられる。
特許文献1には、再送タイムアウトが発生した場合に、その再送タイムアウトが有効であるか否かを送信装置に判定させ、無効であると判定された場合には上記輻輳ウィンドウサイズの抑制を行わせないようにする技術が開示されている。具体的には、TCPにしたがって通信する送信装置と受信装置とを有する通信システムにおいて、同一のセグメントが重複して送信されてきた場合に、受信装置にその旨を送信装置へ通知させ、このような通知が送信されてきた場合には、送信装置は輻輳ウィンドウサイズを所定の値まで引き上げるようになっている。上述したようにTCPにしたがってセグメントを送信する送信装置は、再送タイムアウトが発生した場合に輻輳ウィンドウサイズをその最小値まで引き下げるとともに、その再送タイムアウトに係るセグメントを再送信する。つまり、再送タイムアウトが発生した場合には、元々送信されたセグメントと再送信されたセグメントとの2つのセグメントが受信装置へ送信されることになる。そして、これら2つのセグメントの両者が受信装置へ到達したならば、上記再送タイムアウトは本来発生させる必要のなかったものである。特許文献1に開示された技術によれば、本来不要であった無効な再送タイムアウトにより輻輳ウィンドウサイズが過度に引き下げられることが回避されることになる。
また、非特許文献1には、再送タイムアウトの発生前に、1〜2個の重複確認応答が受信装置から送信されてきた状況下で、更に、再送タイムアウトの発生後に重複確認応答が送信されてきた場合に、上述した高速回復を送信装置に行わせることが開示されている。
特開2001−352339号公報 Reiner Luwing、"Responding to Fast Timeouts in TCP"、[online]、 平成14年7月24日、IETF、[平成15年10月30日検索]、 インターネット<URL:http://www.atm.tut.fi /list-archive/ietf-announce/msg10793.html>
しかしながら、非特許文献1に開示された技術では、再送タイムアウトの発生以前に1または2個の重複確認応答を受信し、かつ、再送タイムアウトの発生後に更に重複確認応答を受信するといった限られた状況にしか対応することができないといった問題点がある。また、特許文献1に開示された技術には、以下に述べるような問題点がある。すなわち、再送信に係るセグメントが受信装置へ到達するのは、既に送信済みのセグメントが受信装置へ到達した後になることが一般的であるから、大量のセグメントを送信しその先頭のセグメントについて再送タイムアウトが発生した場合には、その再送タイムアウトが有効であったか否かの判定を行う前に、その再送信に係るセグメントについても再送タイムアウトが発生してしまう虞がある。具体的には、図9に示されているように、シーケンス番号が500から2500までの5個のセグメントを送信した状況下で、最初に送信したセグメントについて再送タイムアウトが発生しその再送信を行った場合には、その再送信に係るセグメントが受信装置へ到達するのは、シーケンス番号が1000から2500までの4個のセグメントが到達した後になてしまい、その再送信に係るセグメントについても再送タイムアウトが発生してしまう虞がある。
ここで注目すべき点は、図9に示されているように、セグメントの再送信を行った後に、そのセグメントのシーケンス番号を有する確認応答が送信されてくることが起こり得る点である。送信装置と受信装置との通信を仲介する通信網が重度の輻輳状態であり、送信装置から送信されたセグメントが大量に欠落しているのならば、このようなことは起こり得ないはずである。つまり、これは、上記通信網が輻輳状態にあるものの、その度合いが比較的軽微であることを意味している。本願発明者は、この点に着目し、通信網の輻輳が軽微であると推定される場合には、その輻輳を悪化させることなくデータの送信効率を向上させるという着想に到った。
本発明は、上記課題を解決するために、通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信手段であって、データブロック毎に固有の番号を書き込んで送信する第1の送信手段と、前記第1の送信手段によりデータブロックを送信したことを契機として計時を開始する計時手段と、前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信手段と、前記計時手段によって計時された時間が所定時間を超えた時点で、前記第1の送信手段により送信されたデータブロックのうち対応する前記確認応答が前記受信手段によって受信されていないデータブロックを再送信する再送信手段と、前記再送信手段によりデータブロックの再送信が行われた後に、該データブロックの番号を有する確認応答が前記受信手段により受信された場合に、前記送信済みのデータブロックに後続して送信するべき後続データブロックを所定の数だけ送信する第2の送信手段とを有する送信装置を提供する。
また、本発明は、上記課題を解決するために、コンピュータ装置に、通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信機能であって、データブロック毎に固有の番号を書き込んで送信する第1の送信機能と、前記第1の送信機能によりデータブロックを送信したことを契機として計時を開始する計時機能と、前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信機能と、前記計時機能によって計時された時間が所定時間を超えた時点で、前記第1の送信機能により送信されたデータブロックのうち対応する前記確認応答が前記受信機能によって受信されていないデータブロックを再送信する再送信機能と、前記再送信機能によりデータブロックを再送信した後に、該データブロックの番号を有する確認応答を前記受信機能により受信した場合に、前記送信済みのデータブロックに後続して送信するべき後続データブロックを所定の数だけ送信する第2の送信機能とを実現させるプログラムを提供する。
このような送信装置およびプログラムによれば、送信済みのデータブロックの再送信が行われた後に、該データブロックの番号を有する確認応答が受信された場合に、送信済みのデータブロックに後続して送信するべきデータブロックが所定の数だけ送信される。
また、上記課題を解決するために、本発明は、通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信手段であって、データブロック毎に固有の番号を書き込んで送信する送信手段と、前記送信手段によりデータブロックを送信したことを契機として計時を開始する計時手段と、前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信手段と、前記計時手段によって計時された時間が所定時間を超えた時点で、前記送信手段により送信されたデータブロックのうち対応する前記確認応答が前記受信手段によって受信されていないデータブロックを再送信する再送信手段と、前記再送信手段によりデータブロックが再送信されたことを契機として前記輻輳ウィンドウサイズを予め定められた値まで減少させる減少手段と、前記再送信手段によりデータブロックの再送信が行われた後に該データブロックの番号を有する確認応答が前記受信手段により受信された場合に、前記輻輳ウィンドウサイズを予め定められたアルゴリズムにしたがって増加させ、前記送信済みのデータブロックに後続して送信するべき後続データブロックを前記送信手段に送信させる制御手段とを有する送信装置を提供する。
また、上記課題を解決するために、本発明は、コンピュータ装置に、通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信機能であって、データブロック毎に固有の番号を書き込んで送信する送信機能と、前記送信手段によりデータブロックを送信したことを契機として計時を開始する計時機能と、前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信機能と、前記計時機能によって計時された時間が所定時間を超えた時点で、前記送信機能により送信されたデータブロックのうち対応する前記確認応答が前記受信機能によって受信されていないデータブロックを再送信する再送信機能と、前記再送信機能によりデータブロックを再送信したことを契機として、前記輻輳ウィンドウサイズを予め定められた値まで減少させる減少機能と、前記再送信機能により再送信されたデータブロックの番号を有する確認応答を前記受信機能により受信した場合に、前記輻輳ウィンドウサイズを予め定められたアルゴリズムにしたがって増加させ、前記送信済みのデータブロックに後続して送信するべき後続データブロックを前記送信機能に送信させる制御機能とを実現させるプログラムを提供する。
このような送信装置およびプログラムによれば、まず、再送タイムアウトによるデータブロックの再送信に付随して輻輳ウィンドウサイズが予め定められた値まで引き下げられる。そして、その再送信の後に、そのデータブロックに対応する確認応答が受信された場合のみならず、そのデータブロックのシーケンス番号を有する確認応答が受信された場合にも、予め定められたアルゴリズムにしたがって輻輳ウィンドウサイズが引き上げられた後に、後続データブロックが送信される。
また、本発明は、上記課題に鑑みて為されたものであり、記憶手段と、輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信手段であって、データブロック毎に固有の番号を書き込んで送信する送信手段と、前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信手段と、前記送信手段により送信済みのデータブロックの番号を有する確認応答が所定の数だけ前記受信手段により受信された場合に、該番号を有するデータブロックを再送信する第1の再送信手段と、前記第1の再送信手段によりデータブロックが再送信されたことを契機として計時を開始する計時手段と、前記計時手段により計時された時間が所定時間を超えた時点で、前記第1の再送信手段により再送信されたデータブロックに対応する前記確認応答が前記受信手段によって受信されていない場合に、該データブロックを再送信する第2の再送信手段と、前記第2の再送信手段によりデータブロックが再送信されたことを契機として、前記輻輳ウィンドウサイズを前記記憶手段へ書き込んだ後に、該輻輳ウィンドウサイズを予め定められた値まで減少させる減少手段と、前記第2の再送信手段によりデータブロックが再送信された後に該データブロックの番号を有する確認応答が前記受信手段により受信された場合に、前記輻輳ウィンドウサイズを前記記憶手段の記憶内容に基づいて定まる値を初期値として所定のアルゴリズムにしたがって増加させ、前記送信済みのデータブロックに後続して送信するべき後続データブロックを前記送信手段に送信させる制御手段とを有する送信装置を提供する。
また、本発明は、上記課題に鑑みて為されたものであり、コンピュータ装置に、輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信機能であって、データブロック毎に固有の番号を書き込んで送信する送信機能と、前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信機能と、前記送信機能により送信済みのデータブロックの番号を有する確認応答が所定の数だけ前記受信手段により受信された場合に、該番号を有するデータブロックを再送信する第1の再送信機能と、前記第1の再送信機能によりデータブロックを再送信したことを契機として計時を開始する計時機能と、前記計時機能により計時された時間が所定時間を超えた時点で、前記第1の再送信機能により再送信されたデータブロックに対応する前記確認応答が前記受信機能によって受信されていない場合に、該データブロックを再送信する第2の再送信機能と、前記第2の再送信機能によりデータブロックを再送信したことを契機として、前記輻輳ウィンドウサイズを当該コンピュータ装置に記憶させた後に、該輻輳ウィンドウサイズを予め定められた値まで減少させる減少機能と、前記第2の再送信機能により再送信したデータブロックの番号を有する確認応答を前記受信機能により受信した場合に、前記輻輳ウィンドウサイズを当該コンピュータ装置の記憶内容に基づいて定まる値を初期値として所定のアルゴリズムにしたがって増加させ、前記送信済みのデータブロックに後続して送信するべき後続データブロックを前記送信機能により送信する制御機能とを実現させるプログラムを提供する。
このような送信装置およびプログラムによれば、重複確認応答を所定の数だけ受信したことによって再送信されたデータブロックについて再送タイムアウトが発生した状況下で、更に、その重複確認応答が受信された場合には、再送タイムアウトにより引き下げられた輻輳ウィンドウサイズがその再送タイムアウトの発生以前の値まで引き上げられた後に後続データブロックの送信が行われる。
本発明によれば、送信装置と受信装置との間の通信を仲介する通信網の輻輳が軽微であると推測される場合に、その輻輳を悪化させることなくデータの送信効率を向上させることが可能になるといった効果を奏する。
以下、図面を参照しつつ本発明を実施するための最良の形態について説明する。
[A:第1実施形態]
(A−1:構成)
図1は、本発明の第1実施形態に係る送信装置を有する通信システムの全体構成の一例を示す図である。図1に示されているように、この通信システムは、通信網10に接続された送信装置20と受信装置30とを有している。この通信網10は、例えば、インターネットであり、ルータやゲートウェイなどの中継装置を含んでいる。この通信網10は、所定の通信プロトコル(本実施形態では、TCP)にしたがって行われる通信を仲介することができる。なお、本実施形態では、通信網10がインターネットである場合について説明するが、係る通信網はLAN(Local Area Network)であっても良く、また、移動パケット通信網や無線LANのような無線通信網であっても良い。要は、送信装置20と受信装置30との間で所定の通信プロトコルにしたがって行われる通信を仲介する通信網であれば、いずれであっても良い。また、本実施形態では、通信網10を介して送信装置20と受信装置30とが行う通信がTCPに準拠している場合について説明するが、係る通信が準拠するべき通信プロトコルはTCPに限定されるものではないことは言うまでもない。要は、送信したデータブロックがその宛先へ到達したことを、シーケンス番号を用いて確認するとともに、データブロックを送信してから所定の再送タイムアウト時間が経過するまでに上記確認ができなかった場合に、そのデータブロックを再送信するような通信プロトコルであれば良い。
送信装置20と受信装置30とは、いずれも、通信網10に接続されたパーソナルコンピュータ(以下、「PC」)であり、通信網10を介してTCPにしたがった通信を行うことができる。なお、本実施形態では、送信装置20と受信装置30とが、TCPにしたがって通信するPCである場合について説明するが、TCPにしたがって通信するPDA(Personal Digital Assistance)や携帯電話機であっても良いことは勿論である。要は、所定の通信プロトコルにしたがって通信する機能を有するコンピュータ装置であれば、何れであっても良い。
図1に示す通信システムが、TCPにしたがって通信を行う従来の通信システムと異なっている点は、再送タイムアウトによりセグメントの再送が行われた後に、そのセグメントのシーケンス番号を有する確認応答を送信装置20が受信した場合に、送信済みのセグメントに後続して送信するべきセグメント(以下、「後続セグメント」)を所定の数(以下、送信上限値:本第1実施形態では“2”)だけ送信させるようにした点である。以下では、従来の通信システムとの相違点である送信装置20を中心に説明する。
まず、図2を参照しつつ送信装置20の構成を説明する。図2に示されているように、送信装置20は、制御部100と、通信インターフェイス(以下、「IF」と表記する)部110と、記憶部120と、これら各構成要素間のデータ授受を仲介するバス130とを有している。
制御部100は、例えばCPU(Central Processing Unit)であり、記憶部120に格納されているソフトウェアを読み出し実行することにより、送信装置20の各部を制御するためのものである。通信IF部110は、通信網10に接続されており、通信網10を介して送くられてくるセグメントを受信し制御部100へ引渡すとともに、制御部100から引渡されたセグメントを通信網10へ送り出すためのものである。
記憶部120は、図2に示されているように、揮発性記憶部120aと不揮発性記憶部120bとを有している。揮発性記憶部120aは、例えばRAM(Random Access Memory)であり、ソフトウェアにしたがって作動している制御部100によってワークエリアとして利用される。また、この揮発性記憶部120aには、受信装置30へ送信した後続セグメントの数を表すデータ(以下、「送信カウンタ」)が格納される。一方、不揮発性記憶部120bは、例えば、ハードディスクであり、受信装置30へ送信するべきデータや、輻輳ウィンドウサイズの初期値を表すデータ、上記再送タイムアウト時間を表すデータ、上述した送信上限値を表すデータなどが格納されている。なお、本実施形態では、受信装置30へ送信するべきデータが不揮発性記憶部120bに格納されている場合について説明したが、図示せぬ操作部(キーボードやマウスなど)をユーザが操作することにより係るデータを入力するとしても良いことは勿論である。また、本実施形態では、再送タイムアウト時間を表すデータが不揮発性記憶部120bに格納されている場合について説明するが、例えば、セグメントを送信することに先立って、ping(Packet INternet Groper)などを制御部100に実行させ、その応答時間に基づいて再送タイムアウト時間を求めても良いことは勿論である。
上記不揮発性記憶部120bには、上記各種データの他に、オペレーティングシステム(Operating System:以下、「OS」)を制御部100に実現させるためのOSソフトウェアや、上記データをTCPにしたがって受信装置30へ送信するためのデータ送信ソフトウェアが格納されている。以下、これらソフトウェアを実行することによって制御部100に付与される機能について説明する。
送信装置20の電源(図示省略)が投入されると、制御部100は、まず、OSソフトウェアを不揮発性記憶部120bから読み出し実行する。OSソフトウェアにしたがって作動している制御部100には、送信装置20の各部を制御する機能、他のソフトウェアを不揮発性記憶部120bから読み出し実行する機能が付与される。そして、OSソフトウェアの実行を完了し、OSを実現している状態の制御部100は、受信装置30から上記データの送信を要求されると、上記データ送信ソフトウェアを不揮発性記憶部120bから読み出し実行する。このデータ送信ソフトウェアにしたがって作動している制御部100には、TCPにしたがってセグメントを送信する一般的な送信装置と同一な機能の他に、本発明に係る送信装置に特有な機能が付与される。
TCPにしたがってセグメントを送信する一般的な送信装置と同一な機能とは、以下に述べる4つの機能である。第1に、受信装置30へ送信するべきデータを所定のデータサイズを有する部分データに分割してセグメントを生成し、シーケンス番号が小さいものから順に上記輻輳ウィンドウサイズ分のセグメントを連続して送信するセグメント送信機能である。第2に、上記セグメント送信機能によりセグメントを送信したことを契機として計時を開始する計時機能である。第3に、受信装置30から送信されてくる確認応答を受信する受信機能である。前述したように、この確認応答には、受信装置30が次に受信するべきセグメントのシーケンス番号が書き込まれている。そして、第4に、上記セグメント送信機能により送信済みのセグメントのうち、前記計時機能により計時された時間が上記再送タイムアウト時間に達するまでに、対応する確認応答が上記受信機能により受信されていないセグメントを再送信する再送信機能である。
一方、本発明に係る送信装置に特有な機能とは、上記再送信機能によりセグメントの再送信を行った後に、そのセグメントのシーケンス番号が書き込まれている確認応答が上記受信機能により受信された場合に、送信済みのセグメントに後続して送信するべき後続セグメントを上記送信上限値の表す数だけ送信する後続セグメント送信機能である。
このような構成としたため、本第1実施形態に係る送信装置20によれば、再送タイムアウトによるセグメントの再送信を行った状況下で、そのセグメントのシーケンス番号を有する確認応答を受信した場合に、送信済みのセグメントに後続して送信するべき後続セグメントが上記送信上限値の表す数だけ送信される。
以上に説明したように、送信装置20のハードウェア構成は一般的なコンピュータ装置のハードウェア構成と同一であり、記憶部120に格納されている各種ソフトウェアを制御部100に実行させることにより、TCPにしたがってセグメントを送信する従来の送信装置と同一の機能および本発明に係る送信装置に特有な機能とが付与される。なお、本第1実施形態では、上記各種機能をソフトウェアモジュールを用いて実現する場合について説明したが、これらソフトウェアモジュールと同一の機能を担っているハードウェアモジュールを用いて送信装置20を構成しても良いことは勿論である。
(A−2:動作)
次いで、本第1実施形態に係る送信装置20が行う動作のうち、その特徴を顕著に示す動作についてのみ図面を参照しつつ説明する。以下に説明する動作例の前提として、送信装置20の制御部100は、上記データ送信ソフトウェアにしたがって作動しており、図3に示されているように、シーケンス番号が500、1000、1500、2000および2500の5個のセグメントを受信装置30へ宛てて送信したものとする。そして、上記5個のセグメントのうち、シーケンス番号が500であるセグメントが欠落し、再送タイムアウトが発生したものとする。以下では、このような状況下で、上記再送タイムアウトが発生した後に、その再送タイムアウトに係るセグメントのシーケンス番号を有する確認応答を受信した場合に、制御部100が行う動作について図4を参照しつつ説明する。
図4は、再送タイムアウトによるセグメントの再送信を行った後に、その再送タイムアウトに係るセグメントのシーケンス番号を有する確認応答を受信した場合に送信装置20の制御部100が行う動作の流れを示すフローチャートである。なお、再送タイムアウトによるセグメントの再送信を行うまでに制御部100が行う動作については、TCPにしたがってセグメントを送信する従来の送信装置が行う動作と同一であるため説明を省略する。また、以下に説明する動作の開始時点では、上述した送信カウンタに“0”がセットされているものとする。このようなことは、再送タイムアウトが発生した時点で、送信カウンタに“0”をセットすることにより実現される。
図4に示されているように、制御部100は、まず、通信IF部110を介して受信した確認応答が、上記再送信に係るセグメントのシーケンス番号を有する確認応答であるか否かを判定する(ステップSA1)。このステップSA1の判定結果が“No”である場合には、制御部100は、従来の送信装置と同一の動作を行う(ステップSA2)。具体的には、輻輳ウィンドウサイズを所定のアルゴリズム(例えば、スロースタートアルゴリズム)にしたがって増加させ、その輻輳ウィンドウサイズ分の後続セグメントを送信する。逆に、ステップSA1の判定結果が“Yes”である場合には、制御部100は、後述するステップSA3以降の処理を行う。図3に示されているように、本動作例では、再送タイムアウトにより再送信されたセグメントのシーケンス番号は“500”であり、受信装置30から送信されてくる確認応答に書き込まれているシーケンス番号も“500”であるから、ステップSA1の判定結果は“Yes”になり、後述するステップSA3の処理が行われる。
ステップSA1の判定結果が“Yes”である場合に行われるステップSA3では、制御部100は、後続セグメントを上述した送信上限値分だけ送信したか否かを判定する。具体的には、制御部100は、不揮発性記憶部120bに格納されている送信上限値と、揮発性記憶部120aに格納されている送信カウンタの値とを比較し、前者と後者が等しい場合には、上記送信上限値の表す数だけ後続セグメントを送信したと判定する。そして、制御部100はステップSA3の判定結果が“Yes”である場合には、ステップSA1以降の処理を繰り返し実行し、逆に、ステップSA3の判定結果が“No”である場合には、後続セグメントを1つ送信するとともに、送信カウンタに“1”を加算し(ステップSA4)、ステップSA1以降の処理を繰り返し実行する。
本動作例では、その開始時点で上記送信カウンタの値は“0”であり、上記送信上限値は“2”であるから、制御部100は、シーケンス番号が“500”である確認応答のうち、再送タイムアウトの発生後に受信した最初の2つの確認応答に対してのみ上記ステップSA4の処理を行う。その結果、図3に示されているように、2個の後続セグメント(シーケンス番号が3000であるセグメントと、3500であるセグメント)が受信装置30へ送信されることになる。
(A−3:第1実施形態の効果)
以上に説明したように、本第1実施形態によれば、再送タイムアウトによるセグメントの再送信を行った後にそのセグメントのシーケンス番号を有する確認応答を受信した場合(すなわち、輻輳が軽微であると推測される場合)に、送信済みのセグメントに後続して送信するべき後続セグメントを送信させるようにしたため、データの送信効率を向上させることが可能になるといった効果を奏する。加えて、送信する後続セグメントの数が予め定められた数に制限されているため、通信網10の輻輳を悪化させることはないといった効果も奏する。なお、本第1実施形態では、再送タイムアウトによるセグメントの再送信を行った後にそのセグメントのシーケンス番号が書き込まれた確認応答が送信されてきた場合に、上記送信上限値の表す数分の後続セグメントを上記後続セグメント送信機能により送信する場合について説明した。しかしながら、前述した高速再送信によりセグメントを再送信した後に、上記確認応答が送信されてきた場合に、上記後続セグメント送信機能により後続セグメントを送信するとしても良いことは勿論である。
[B:第2実施形態]
(B−1:構成)
次いで、本発明の第2実施形態について図面を参照しつつ説明する。図5は、本発明の第2実施形態に係る送信装置を有する通信システムの全体構成の一例を示す図である。図5に示す通信システムが、図1に示す通信システムと異なっている点は、送信装置20に替えて、送信装置40を設けた点のみである。以下では、図1に示す通信システムとの相違点である送信装置40を中心に説明する。
送信装置40のハードウェア構成は、送信装置20のハードウェア構成(図2参照)と同一である。しかしながら、送信装置40の不揮発性記憶部120bに格納されているデータ送信ソフトウェアは、送信装置20の不揮発性記憶部120bに格納されているものとは異なっている。このため、送信装置40の制御部100には、送信装置20の制御部100に付与された機能とは異なる機能が付与される。具体的には、上述したセグメント送信機能、計時機能、受信機能およびセグメント再送信機能の他に、後述する減少機能および制御機能が付与される。
減少機能とは、上記セグメント再送信機能によりセグメントを再送信したことを契機として、その時点の輻輳ウィンドウサイズを保存ウィンドウサイズとして揮発性記憶部120aに書き込み記憶させる一方、その輻輳ウィンドウサイズを予め定められた値(例えば、輻輳ウィンドウサイズの最小値)まで減少させる機能である。
そして、制御機能とは、上記セグメント再送信機能によりセグメントを再送信した後に、その再送信に係るセグメントのシーケンス番号を有する確認応答が上記受信機能により受信される度に、輻輳ウィンドウサイズを上記保存ウィンドウサイズを初期値として所定のアルゴリズムにしたがって増加させる機能である。このアルゴリズムの一例としては、前述した輻輳回避アルゴリズムが挙げられる。
なお、本第2実施形態では、本発明に係る送信装置に特有な機能をソフトウェアモジュールを用いて実現する場合について説明した。しかしながら、これらソフトウェアモジュールと同一の機能を担っているハードウェアモジュールを用いて送信装置40を構成しても良いことは、上述した送信装置20の場合と同一である。
(B−2:動作)
次いで、本第2実施形態に係る送信装置40が行う動作のうち、その特徴を顕著に示す動作についてのみ図面を参照しつつ説明する。以下に説明する動作例の前提は、上述した第1実施形態における動作例の前提と同一であるとする(図3参照)。すなわち、シーケンス番号が500、1000、1500、2000および2500の5個のセグメントが送信装置40から受信装置30へ送信され、これら5個のセグメントのうち、シーケンス番号が500であるセグメントが欠落し、再送タイムアウトが発生したものとする。以下では、このような状況下で、上記再送タイムアウトが発生した後に、その再送タイムアウトに係るセグメントのシーケンス番号を有する確認応答を受信した場合に、制御部100が行う動作について図6を参照しつつ説明する。
図6は、再送タイムアウトによるセグメントの再送信を行った後に、その再送タイムアウトに係るセグメントのシーケンス番号を有する確認応答を受信した場合に送信装置40の制御部100が行う動作の流れを示すフローチャートである。図6に示すフローチャートが図3に示すフローチャートと異なっている点は、上述したステップSA3およびSA4に替えて、ステップSB3〜SB5の処理を設けた点のみである。以下では、図3に示すフローチャートとの相違点であるステップSB3〜SB5を中心に説明する。
ステップSB3は、ステップSA1の判定結果が“Yes”である場合、すなわち、受信装置30から送信されてきた確認応答に、再送タイムアウトに係るセグメントのシーケンス番号が書き込まれていた場合に行われる処理である。このステップSB3において、送信装置40の制御部100は、再送タイムアウト後に上記確認応答を初めて受信したか否かを判定する。そして、制御部100は、ステップSB3の判定結果が“Yes”である場合には、輻輳ウィンドウサイズの値を揮発性記憶部120aに格納されている保持ウィンドウサイズの半分の値まで増加させる(ステップSB4)。逆に、ステップSB3の判定結果が“No”である場合には、輻輳ウィンドウサイズを前述した輻輳回避アルゴリズムにしたがって増加させる(ステップSB5)。
つまり、送信装置40の制御部100は、図7に示されているように、再送タイムアウトによるセグメントの再送信を行った後そのセグメントのシーケンス番号を有する確認応答を受信する度に、前述した高速回復を行うことになる。なお、本実施形態では、再送タイムアウトによるセグメントの再送信を行った後、そのセグメントのシーケンス番号を有する確認応答を初めて受信した時点から高速回復を行わせる場合について説明したが、上記確認応答を予め定められた数だけ受信した後に高速回復を行わせるようにしても良いことは勿論である。例えば、上記確認応答を3つ受信した時点から高速回復を行わせるようにしても良い。このようにすると、上記確認応答の受信回数が3未満である間は、上述した第1実施形態で説明した態様で後続セグメントを送信させ、その後は、本第2実施形態で説明した態様で輻輳ウィンドウサイズを増加させることができる。これにより、更にデータの送信効率を向上させることが可能になる。また、上述した第2実施形態では、再送タイムアウトが発生した時点の輻輳ウィンドウサイズの半分の値から高速回復を行わせる場合について説明したが、係る高速回復の出発点である輻輳ウィンドウサイズの値は、再送タイムアウトが発生した時点の半分の値に限定されるものではなく、その3分の1や4分の3の値などであっても良い。要は、再送タイムアウトが発生した時点の輻輳ウィンドウサイズに基づいて算出される値であれば何れであっても良い。また、本第2実施形態では、再送信したセグメントのシーケンス番号を有する確認応答を受信した場合に、高速回復を行わせる場合について説明したが、前述したスロースタート過程と輻輳回避過程とを順次行わせる態様であっても勿論良い。このような場合には、スロースタートの出発点である輻輳ウィンドウサイズはその最小値であるから、上記保持ウィンドウサイズを揮発性記憶部120aに記憶させておく必要はない。
(B−3:第2実施形態の効果)
以上に説明したように、本第2実施形態によれば、再送タイムアウトによるセグメントの再送信を行った後にそのセグメントのシーケンス番号を有する確認応答を受信した場合に高速回復が行われることになる。従来の通信システムにおいては、再送タイムアウトの発生後に上記確認応答が受信されても、その確認応答は破棄され輻輳ウィンドウサイズの増加が行われなかったり、特別な条件が満たされた場合にのみ、輻輳ウィンドウサイズの増加が行われていた(非特許文献1参照)。これに対して、本第2実施形態によれば、上記確認応答が受信される度に高速回復が行われ輻輳ウィンドウサイズが増加するので、通信網10の輻輳の悪化を回避しつつ、データの送信効率を向上させることが可能になるといった効果も奏する。なお、本第2実施形態では、再送タイムアウトによるセグメントの再送信を行った後にそのセグメントのシーケンス番号が書き込まれた確認応答が送信されてきた場合に、高速回復を行わせる場合について説明した。しかしながら、前述した高速再送信によりセグメントを再送信した後に、上記確認応答が送信されてきた場合にも、高速回復を行っても良いことは勿論である。
[C:変形例]
以上、本発明を実施するための最良の形態について説明した。しかしながら、以下に述べるような変形を加えても良いことは勿論である。
(C−1:変形例1)
上述した第1実施形態では、再送タイムアウトによるセグメントの再送信を行った後に、そのセグメントのシーケンス番号を有する確認応答を受信する度に、後続セグメントを所定の数に達するまで1つづつ送信装置に送信させる場合について説明したが、その所定の数に達するまで複数個づつ後続セグメントを送信させるとしても良い。要は、再送信に係るセグメントについての送達確認が為されるまでに送信する後続セグメントの数を予め定められた数に限定する態様であればいずれであっても良い。
(C−2:変形例2)
上述した第2実施形態では、再送タイムアウトによるセグメントの再送信を行った後に、そのセグメントのシーケンス番号を有する確認応答を受信した場合に、高速回復を行って輻輳ウィンドウサイズを増加させて後続セグメントを送信させる場合について説明した。しかしながら、高速再送信によりセグメントの再送信を行い高速回復を行っている状況下でその再送信に係るセグメントについて再送タイムアウトが発生した状況下で、更に、そのセグメントのシーケンス番号を有する確認応答を受信した場合に、輻輳ウィンドウサイズをその再送タイムアウトが発生した時点の値まで増加させてから高速回復を行わせるとしても良い。
具体的には、上記再送タイムアウトが発生した時点の輻輳ウィンドウサイズを保持ウィンドウサイズとして送信装置に記憶させ、その再送信に係るセグメントのシーケンス番号を有する確認応答が送信されてきた場合に、その保持ウィンドウサイズを初期値として高速回復を行わせるようにすれば良い。このようにすると、図8に示されているように、高速回復中に再送タイムアウトが発生した場合に、あたかもその再送タイムアウトが発生しなかったかの如く高速回復を継続することが可能になるといった効果を奏する。
なお、本変形例では、輻輳ウィンドウサイズをその再送タイムアウトが発生した時点の値まで増加させる場合について説明したが、その2倍の値まで増加させるとしても良く、その半分の値まで増加させるとしても勿論良い。要は、再送タイムアウトが発生した時点の輻輳ウィンドウサイズや上記2回目の高速再送信を行う直前の輻輳ウィンドウサイズに基づいて定まる値であれば何れであっても良い。
(C−3:変形例3)
TCPにしたがって行われる通信においては、セグメントの欠落が発生した場合以外にも上述した重複確認応答が受信装置から送信されてくることが起こり得る。その一例としては、通信網内でセグメントの複製或いは分割が行われ、同一のシーケンス番号を有する複数のセグメントが受信装置へ到達した場合が挙げられる。このように、セグメントの欠落以外に起因して送信されてくる重複確認応答まで含めて通信網の輻輳が軽微であるか否かを判定してしまうと、通信網の状態を正確に把握することが困難になる虞がある。そこで、このような不具合を回避するために、受信したセグメントが通信網内で複製或いは分割されたセグメントであるか否かをそのセグメントの内容(例えば、IPオプションフィールドに書き込まれているデータ)に基づいて受信装置に判定させ、その判定結果を表す付加データを付与した確認応答を送信させるようにする。そして、受信した確認応答に係る付加データが含まれている場合には、その確認応答を送信装置に破棄させる。これにより、上記セグメントの複製或いは分割が行われたことに起因する弊害を回避することが可能になるといった効果を奏する。
(C−4:変形例4)
上述した第1実施形態では、再送タイムアウトによるセグメントの再送信を行った後に、そのセグメントのシーケンス番号を有する確認応答が送信されてきた場合には、後続セグメントを予め定められた数だけ送信装置に送信させる場合について説明した。また、上述した第2実施形態では、再送タイムアウトによるセグメントの再送信を行った後に、そのセグメントのシーケンス番号を有する確認応答が送信されてきた場合に予め定められたアルゴリズムにしたがって輻輳ウィンドウサイズを増加させて後続セグメントを送信させる場合について説明した。
しかしながら、上記再送信に係るセグメントが常に受信装置へ到達するとは限らない。その理由は、上記再送信に係るセグメントについてもその欠落が発生してしまうことが起こり得るからである。このように再送信に係るセグメントが欠落してしまった場合に対処するために、再送信に係るセグメントについて更に再送タイムアウトによる再送信を行うとしても勿論良い。具体的には、上記再送タイムアウトによる再送信を行った時点から計時を開始する第2の計時手段を設け、その第2の計時手段によって計時された時間が所定時間を超えた時点で、そのセグメントのシーケンス番号よりも大きいシーケンス番号を有する確認応答が送信されてこない場合には、そのセグメントを更に再送信することで実現される。このようにすると、再送信に係るセグメントの欠落が発生した場合にそのセグメントを更に再送信することが可能になるといった効果を奏する。
また、再送タイムアウトによるセグメントの再送信を行い後続セグメントを送信している状況下で、そのセグメントのシーケンス番号を有する重複確認応答の受信回数が所定の数を超えた場合には、そのセグメントを更に再送信させるとしても良い。具体的には、上記所定の数として、再送タイムアウトによる再送信を行うまでに送信されたセグメントのうちその再送タイムアウトに係るセグメント以降に送信されたセグメントの数に基づいて算出される値を用いるようにする。このようにすると、再送タイムアウトにより再送信したセグメントが欠落したことを検出してそのセグメントを更に再送信することが可能になり、セグメントの送信効率が向上するといった効果を奏する。その理由を以下に説明する。
上記値を超える数の重複確認応答が送信されてきたことは、再送信に係るセグメントが受信装置に受信されていないにも拘わらずその再送信に係るセグメントに後続して送信された後続セグメントが受信装置に受信されたことを意味している。一般に、送信装置から送信されたセグメントはその送信順に受信装置へ到達するのであるから、このような場合には、再送信に係るセグメントは欠落したものと推測することができる。このように、上記値を超える数の重複確認応答が送信されてきたことを契機として上記再送信に係るセグメントを更に再送信することにより、再送信に係るセグメントについての再送タイムアウトを待つことなくその欠落を検出し再送信することが可能になる。
また、後続セグメントが受信装置に受信されており、かつ、再送信に係るセグメントが受信装置に受信されていないことを周知のSACK(Selective ACKnowledgement)オプションや、以下に述べるタイムスタンプを用いて検出しその再送信に係るセグメントを更に再送信するとしても勿論良い。例えば、タイムスタンプを用いる態様では、セグメントを送信する際に、その送信時刻を表すタイムスタンプを書き込んで送信させ、受信したセグメントに書き込まれているタイムスタンプをそのまま書き込んだ確認応答を受信装置に送信させる。そして、セグメントの再送信を行う場合にはその再送信時刻を送信装置に記憶させ、その再送信時刻よりも後の時刻を表すタイムスタンプを有する確認応答を受信した場合には、そのセグメントを送信装置に再送信させるようにする。このようにすることにより、再送信に係るセグメントが欠落した場合に、そのセグメントを効率良く再送信することが可能になるといった効果を奏する。
このように、周知のSACKオプション、タイムスタンプおよび送信済みセグメントの数の何れを用いて同一の効果を奏するが、最も好ましい態様は、送信済みセグメントの数を用いる態様である。その理由は、SACKオプションやタイムスタンプを用いる場合には、受信装置がSACKオプションやタイムスタンプを確認応答に付加する機能を有している必要があるが、送信済みセグメントの数を用いる態様では、受信装置に特別な機能を設けておく必要がないからである。
(C−5:変形例5)
上述した第1および第2実施形態では、受信装置へ送信するべきデータを所定のデータサイズを有する部分データに分割してセグメントを生成しそのセグメントを送信する場合について説明した。しかしながら、送信装置から受信装置へ送信されるデータ単位はセグメントに限定されるものではなく、パケットであっても良いし、フレームであっても勿論良い。要は、受信装置へ送信するべきデータを分割された部分データとその部分データを一意に表すシーケンス番号とを含んだデータブロックであれば、いずれであっても良い。
(C−6:変形例6)
上述した第1および第2実施形態では、本発明に係る送信装置の機能を実現させるためのデータ送信ソフトウェアを不揮発性記憶部120bに予め格納させておく場合について説明した。しかしながら、例えば、CD−ROM(Compact Disk Read Only Memory)などのコンピュータ装置読み取り可能な記録媒体に、上記データ送信ソフトウェアを記録させておき、このような記録媒体を用いて一般的なコンピュータ装置に上記データ送信ソフトウェアをインストールするとしても良いことは勿論である。このようにすると、既存の通信システムに含まれている送信装置に、本発明に係る送信装置と同一の機能を付与することが可能になるといった効果を奏する。
本発明の第1実施形態に係る送信装置20を有する通信システムの構成例を示す図である。 同送信装置20のハードウェア構成の一例を示す図である。 同送信装置20と受信装置30との間の通信シーケンスの一例を示す図である。 同送信装置20の制御部100が実行するデータ送信動作の流れを示すフローチャートである。 本発明の第2実施形態に係る送信装置40を有する通信システムの構成例を示す図である。 同送信装置40の制御部100が実行する輻輳ウィンドウサイズ制御動作の流れを示すフローチャートである。 同送信装置40における輻輳ウィンドウサイズの変化を説明するための図である。 変形例2に係る送信装置における輻輳ウィンドウサイズの変化を説明するための図である。 従来のTCPにしたがって送信装置と受信装置との間で行われる通信の通信シーケンスの一例を示す図である。
符号の説明
10…通信網、20、40…送信装置、30…受信装置、100…制御部、110…通信IF部、120…記憶部、120a…揮発性記憶部、120b…不揮発性記憶部、130…バス。

Claims (10)

  1. 通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する第1の送信手段であって、データブロック毎に固有の番号を書き込んで送信する第1の送信手段と、
    前記第1の送信手段によりデータブロックを送信したことを契機として計時を開始する計時手段と、
    前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信手段と、
    前記計時手段によって計時された時間が所定時間を超えた時点で、前記第1の送信手段により送信されたデータブロックのうち対応する前記確認応答が前記受信手段によって受信されていないデータブロックを再送信する再送信手段と、
    前記再送信手段によりデータブロックの再送信が行われた後に該データブロックの番号を有する確認応答が前記受信手段により受信された場合に、前記送信済みのデータブロックに後続して送信するべき後続データブロックを所定の数だけ送信する第2の送信手段と
    を有する送信装置。
  2. 通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信手段であって、データブロック毎に固有の番号を書き込んで送信する送信手段と、
    前記送信手段によりデータブロックを送信したことを契機として計時を開始する計時手段と、
    前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信手段と、
    前記計時手段によって計時された時間が所定時間を超えた時点で、前記送信手段により送信されたデータブロックのうち対応する前記確認応答が前記受信手段によって受信されていないデータブロックを再送信する再送信手段と、
    前記再送信手段によりデータブロックが再送信されたことを契機として前記輻輳ウィンドウサイズを予め定められた値まで減少させる減少手段と、
    前記再送信手段によりデータブロックの再送信が行われた後に該データブロックの番号を有する確認応答が前記受信手段により受信された場合に、前記輻輳ウィンドウサイズを予め定められたアルゴリズムにしたがって増加させ、前記送信済みのデータブロックに後続して送信するべき後続データブロックを前記送信手段に送信させる制御手段と
    を有する送信装置。
  3. 前記受信手段は、受信した確認応答が前記通信網内で複製或いは分割されたデータブロックを受信したことを契機として前記受信装置により送信された確認応答であるか否かを該確認応答の内容に基づいて判定し、前記通信網内で複製或いは分割されたデータブロックを受信したことを契機として前記受信装置により送信された確認応答であると判定した確認応答を破棄する
    ことを特徴とする請求項1または2に記載の送信装置。
  4. 前記再送信手段により再送信されたデータブロックが前記受信装置に受信されておらず、かつ、該データブロックが再送信された後に送信された後続データブロックが前記受信装置に受信されていることを、前記受信手段により受信された確認応答の内容に基づいて検出した場合に、前記再送信手段により再送信されたデータブロックを再送信する第2の再送信手段を有する
    ことを特徴とする請求項1または2に記載の送信装置。
  5. 前記再送信手段により再送信されたデータブロックの番号を有する確認応答が前記受信手段により受信された回数を集計する集計手段と、
    前記集計手段により集計された前記回数が、前記再送信手段によりデータブロックの再送信が行われるまでに送信されたデータブロックの数に基づいて算出される値を超えた場合に、該番号を有するデータブロックを再送信する第2の再送信手段とを有する
    ことを特徴とする請求項1または2に記載の送信装置。
  6. 前記再送信手段によりデータブロックを再送信したことを契機として計時を開始する第2の計時手段と、
    前記第2の計時手段により計時された時間が所定の時間に達するまでに、前記再送信手段により再送信されたデータブロックの番号よりも大きい番号を有する確認応答が前記受信手段により受信されなかった場合に、該データブロックを再送信する第2の再送信手段とを有する
    ことを特徴とする請求項1または2に記載の送信装置。
  7. 記憶手段と、
    通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信手段であって、データブロック毎に固有の番号を書き込んで送信する送信手段と、
    前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信手段と、
    前記送信手段により送信済みのデータブロックの番号を有する確認応答が所定の数だけ前記受信手段により受信された場合に、該番号を有するデータブロックを再送信する第1の再送信手段と、
    前記第1の再送信手段によりデータブロックが再送信されたことを契機として計時を開始する計時手段と、
    前記計時手段により計時された時間が所定時間を超えた時点で、前記第1の再送信手段により再送信されたデータブロックに対応する前記確認応答が前記受信手段によって受信されていない場合に、該データブロックを再送信する第2の再送信手段と、
    前記第2の再送信手段によりデータブロックが再送信されたことを契機として、前記輻輳ウィンドウサイズを前記記憶手段へ書き込んだ後に、該輻輳ウィンドウサイズを予め定められた値まで減少させる減少手段と、
    前記第2の再送信手段によりデータブロックが再送信された後に該データブロックの番号を有する確認応答が前記受信手段により受信された場合に、前記輻輳ウィンドウサイズを前記記憶手段の記憶内容に基づいて定まる値を初期値として所定のアルゴリズムにしたがって増加させ、前記送信済みのデータブロックに後続して送信するべき後続データブロックを前記送信手段に送信させる制御手段と
    を有する送信装置。
  8. コンピュータ装置に、
    通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する第1の送信機能であって、データブロック毎に固有の番号を書き込んで送信する第1の送信機能と、
    前記第1の送信機能によりデータブロックを送信したことを契機として計時を開始する計時機能と、
    前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信機能と、
    前記計時機能によって計時された時間が所定時間を超えた時点で、前記第1の送信機能により送信されたデータブロックのうち対応する前記確認応答が前記受信機能によって受信されていないデータブロックを再送信する再送信機能と、
    前記再送信機能によりデータブロックを再送信した後に、該データブロックの番号を有する確認応答を前記受信機能により受信した場合に、前記送信済みのデータブロックに後続して送信するべき後続データブロックを所定の数だけ送信する第2の送信機能と
    を実現させるプログラム。
  9. コンピュータ装置に、
    通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信機能であって、データブロック毎に固有の番号を書き込んで送信する送信機能と、
    前記送信手段によりデータブロックを送信したことを契機として計時を開始する計時機能と、
    前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信機能と、
    前記計時機能によって計時された時間が所定時間を超えた時点で、前記送信機能により送信されたデータブロックのうち対応する前記確認応答が前記受信機能によって受信されていないデータブロックを再送信する再送信機能と、
    前記再送信機能によりデータブロックを再送信したことを契機として、前記輻輳ウィンドウサイズを予め定められた値まで減少させる減少機能と、
    前記再送信機能により再送信されたデータブロックの番号を有する確認応答を前記受信機能により受信した場合に、前記輻輳ウィンドウサイズを予め定められたアルゴリズムにしたがって増加させ、前記送信済みのデータブロックに後続して送信するべき後続データブロックを前記送信機能に送信させる制御機能と
    を実現させるプログラム。
  10. コンピュータ装置に、
    通信網を介して輻輳ウィンドウサイズ分のデータブロックを連続して受信装置へ送信する送信機能であって、データブロック毎に固有の番号を書き込んで送信する送信機能と、
    前記受信装置から送信されてくる確認応答であって、前記受信装置が次に受信するべきデータブロックの番号が書き込まれている確認応答を受信する受信機能と、
    前記送信機能により送信済みのデータブロックの番号を有する確認応答が所定の数だけ前記受信手段により受信された場合に、該番号を有するデータブロックを再送信する第1の再送信機能と、
    前記第1の再送信機能によりデータブロックを再送信したことを契機として計時を開始する計時機能と、
    前記計時機能により計時された時間が所定時間を超えた時点で、前記第1の再送信機能により再送信されたデータブロックに対応する前記確認応答が前記受信機能によって受信されていない場合に、該データブロックを再送信する第2の再送信機能と、
    前記第2の再送信機能によりデータブロックを再送信したことを契機として、前記輻輳ウィンドウサイズを当該コンピュータ装置に記憶させた後に、該輻輳ウィンドウサイズを予め定められた値まで減少させる減少機能と、
    前記第2の再送信機能により再送信したデータブロックの番号を有する確認応答を前記受信機能により受信した場合に、前記輻輳ウィンドウサイズを当該コンピュータ装置の記憶内容に基づいて定まる値を初期値として所定のアルゴリズムにしたがって増加させ、前記送信済みのデータブロックに後続して送信するべき後続データブロックを前記送信機能により送信する制御機能と
    を実現させるプログラム。
JP2003399988A 2003-11-28 2003-11-28 送信装置およびプログラム Pending JP2005167353A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2003399988A JP2005167353A (ja) 2003-11-28 2003-11-28 送信装置およびプログラム
US10/994,713 US7764616B2 (en) 2003-11-28 2004-11-22 Transmitter device for controlling data transmission
DE200460011453 DE602004011453T2 (de) 2003-11-28 2004-11-25 Sendegerät zur Steuerung der Datenübertragung
EP20040027987 EP1536589B1 (en) 2003-11-28 2004-11-25 Transmitter device for controlling data transmission
CNB2004100955131A CN100542130C (zh) 2003-11-28 2004-11-25 用于控制数据发送的发送器设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003399988A JP2005167353A (ja) 2003-11-28 2003-11-28 送信装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2005167353A true JP2005167353A (ja) 2005-06-23
JP2005167353A5 JP2005167353A5 (ja) 2006-06-01

Family

ID=34463893

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003399988A Pending JP2005167353A (ja) 2003-11-28 2003-11-28 送信装置およびプログラム

Country Status (5)

Country Link
US (1) US7764616B2 (ja)
EP (1) EP1536589B1 (ja)
JP (1) JP2005167353A (ja)
CN (1) CN100542130C (ja)
DE (1) DE602004011453T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101269601B1 (ko) 2011-10-19 2013-06-05 에스케이텔레콤 주식회사 이기종 네트워크 기반 데이터 동시 전송 서비스 방법
KR101307827B1 (ko) * 2011-12-07 2013-09-12 에스케이텔레콤 주식회사 이기종 네트워크 기반 데이터 동시 전송 서비스를 지원하는 장치

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4235506B2 (ja) * 2003-08-14 2009-03-11 株式会社エヌ・ティ・ティ・ドコモ 送信装置、中継装置およびプログラム
CN103227701A (zh) * 2005-07-08 2013-07-31 富士通株式会社 接收装置
EP1903747B1 (en) * 2005-07-08 2017-03-08 Fujitsu Ltd. Transmitting apparatus, receiving apparatus and information communication method
WO2008044653A1 (fr) 2006-10-05 2008-04-17 Ntt Docomo, Inc. Système, périphérique et procédé de communication
US8429406B2 (en) 2007-06-04 2013-04-23 Qualcomm Atheros, Inc. Authorizing customer premise equipment into a network
US7933240B2 (en) * 2007-07-19 2011-04-26 Honeywell International Inc. Apparatus and method for redundant connectivity and multi-channel operation of wireless devices
US8681676B2 (en) * 2007-10-30 2014-03-25 Honeywell International Inc. System and method for providing simultaneous connectivity between devices in an industrial control and automation or other system
FR2925802B1 (fr) * 2007-12-20 2010-01-08 Canon Kk Procede d'acquittement de donnees
US8625622B2 (en) * 2009-12-25 2014-01-07 Cisco Technology, Inc. Increasing transmission rate to a remote device in response to attributing information loss as not being a result of network congestion
US20140281018A1 (en) * 2013-03-13 2014-09-18 Futurewei Technologies, Inc. Dynamic Optimization of TCP Connections
WO2015039316A1 (zh) * 2013-09-18 2015-03-26 华为技术有限公司 调度方法和基站
US9609524B2 (en) 2014-05-30 2017-03-28 Honeywell International Inc. Apparatus and method for planning and validating a wireless network
US9515777B2 (en) * 2014-10-23 2016-12-06 International Business Machines Corporation Snoop virtual receiver time
JP6409558B2 (ja) * 2014-12-19 2018-10-24 富士通株式会社 通信装置、中継装置、および、通信制御方法
US9819602B2 (en) 2015-07-27 2017-11-14 Qualcomm Incorporated Efficient datagram segmentation and reassembly for packet-switched networks
JP7024259B2 (ja) * 2017-08-29 2022-02-24 トヨタ自動車株式会社 情報処理システム、情報処理方法、プログラム、及び情報処理装置
WO2019169273A1 (en) * 2018-03-02 2019-09-06 Futurewei Technologies, Inc. Method of traffic and congestion control for a network with quality of service
US11240162B1 (en) * 2020-08-23 2022-02-01 Habana Labs Ltd. Method for remote direct memory access (RDMA) congestion control over an ethernet network

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4203167A (en) * 1978-12-01 1980-05-20 Jenkins Metal Corporation Simulated belt buckle and appendage
JPH0732387B2 (ja) * 1985-02-23 1995-04-10 株式会社日立製作所 デ−タ再送方式
EP0825738B1 (en) * 1996-08-23 2006-11-08 Nippon Telegraph And Telephone Corporation Error compensating method and apparatus and medium storing an error compensation program
JP3482091B2 (ja) * 1997-01-09 2003-12-22 株式会社東芝 通信装置
US6091710A (en) * 1997-07-07 2000-07-18 Paradyne Corporation System and method for preventing data slow down over asymmetric data transmission links
US6038606A (en) * 1997-11-25 2000-03-14 International Business Machines Corp. Method and apparatus for scheduling packet acknowledgements
US6118765A (en) * 1998-01-13 2000-09-12 Qualcomm Inc. System method and computer program product for eliminating unnecessary retransmissions
US6317430B1 (en) * 1998-02-19 2001-11-13 Lucent Technologies Inc. ARQ protocol support for variable size transmission data unit sizes using a hierarchically structured sequence number approach
US6882624B1 (en) * 1998-04-09 2005-04-19 Nokia Networks Oy Congestion and overload control in a packet switched network
CA2249152C (en) * 1998-09-30 2003-07-08 Northern Telecom Limited Apparatus for and method of managing bandwidth for a packet-based connection
EP1018821A1 (en) 1999-01-08 2000-07-12 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Communication device and method
US6611495B1 (en) * 1999-02-22 2003-08-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for improved data transfer in packet-switched communication networks
SG87029A1 (en) * 1999-05-08 2002-03-19 Kent Ridge Digital Labs Dynamically delayed acknowledgement transmission system
EP1077559A1 (en) * 1999-08-17 2001-02-21 Telefonaktiebolaget Lm Ericsson Method and device for determining a time-parameter
US6424626B1 (en) * 1999-10-29 2002-07-23 Hubbell Incorporated Method and system for discarding and regenerating acknowledgment packets in ADSL communications
JP2001142845A (ja) * 1999-11-17 2001-05-25 Toshiba Corp コンピュータシステムおよびデータ転送制御方法
US6990070B1 (en) * 1999-12-17 2006-01-24 Nortel Networks Limited Method and apparatus for adjusting packet transmission volume from a source
FR2805112B1 (fr) * 2000-02-11 2002-04-26 Mitsubishi Electric Inf Tech Procede et unite de controle de flux d'une connexion tcp sur un reseau a debit controle
JP2001298485A (ja) 2000-04-14 2001-10-26 Fujitsu Ltd トランスポート層におけるデータ転送方法
JP2001352339A (ja) 2000-06-07 2001-12-21 Nippon Telegr & Teleph Corp <Ntt> 通信システム
JP2002152308A (ja) * 2000-11-09 2002-05-24 Nec Corp データ通信システム、その通信方法及びその通信プログラムを記録した記録媒体
US6934257B2 (en) * 2001-04-04 2005-08-23 Intel Corporation Transferring transmission control protocol packets
EP1251661B1 (en) 2001-04-04 2008-08-13 Telefonaktiebolaget LM Ericsson (publ) Data flow control method
US7099273B2 (en) * 2001-04-12 2006-08-29 Bytemobile, Inc. Data transport acceleration and management within a network communication system
US6961309B2 (en) * 2001-04-25 2005-11-01 International Business Machines Corporation Adaptive TCP delayed acknowledgment
US20020167948A1 (en) * 2001-05-09 2002-11-14 Dayong Chen Communications methods, apparatus, computer program products and data structures using segment sequence numbers
JP2003224547A (ja) 2002-01-30 2003-08-08 Tetsushi Uchiumi フロー制御方法
US7385923B2 (en) * 2003-08-14 2008-06-10 International Business Machines Corporation Method, system and article for improved TCP performance during packet reordering

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101269601B1 (ko) 2011-10-19 2013-06-05 에스케이텔레콤 주식회사 이기종 네트워크 기반 데이터 동시 전송 서비스 방법
KR101307827B1 (ko) * 2011-12-07 2013-09-12 에스케이텔레콤 주식회사 이기종 네트워크 기반 데이터 동시 전송 서비스를 지원하는 장치

Also Published As

Publication number Publication date
CN100542130C (zh) 2009-09-16
US20050117515A1 (en) 2005-06-02
EP1536589B1 (en) 2008-01-23
EP1536589A2 (en) 2005-06-01
EP1536589A3 (en) 2005-12-07
DE602004011453D1 (de) 2008-03-13
DE602004011453T2 (de) 2009-01-22
US7764616B2 (en) 2010-07-27
CN1622536A (zh) 2005-06-01

Similar Documents

Publication Publication Date Title
JP2005167353A (ja) 送信装置およびプログラム
US11641387B2 (en) Timely delivery of real-time media problem when TCP must be used
CN109936510B (zh) 多路径rdma传输
US7477675B2 (en) Data communication apparatus
JP4503186B2 (ja) 通信装置及び通信方法
US7496038B2 (en) Method for faster detection and retransmission of lost TCP segments
CN104518853B (zh) 一种数据重传的方法、接收端及***
CN108270682A (zh) 一种报文传输方法、终端、网络设备及通信***
US9007905B2 (en) System to improve an Ethernet network
US20070071005A1 (en) System and method for implementing ASI over long distances
CN109981385B (zh) 一种实现丢包检测的方法、装置和***
JP5080654B2 (ja) 通信装置、通信方法
JP2006287925A (ja) エラー回復機構およびそれを備えるネットワーク要素
US7007199B2 (en) Reliable communication method and device
JP2009089197A (ja) 中継装置
JP4384676B2 (ja) データ通信装置の制御方法
JP2005167780A (ja) ストリーミングデータ伝送装置及び伝送方法
JP4364763B2 (ja) データ通信装置
JP2005167352A (ja) 送信装置およびプログラム
JP2008199431A (ja) 通信装置
JP2005136637A (ja) 送信装置およびプログラム
JP2016019198A (ja) 通信装置、通信装置の制御方法、プログラム
WO2022056791A1 (zh) 一种报文重传方法和装置
US11962517B2 (en) Communications method, apparatus, and system for recovering lost packets
JP2005136636A (ja) 送信装置およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060406

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080218

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080924