US20040190540A1 - Transmission control method and system - Google Patents

Transmission control method and system Download PDF

Info

Publication number
US20040190540A1
US20040190540A1 US10/744,960 US74496003A US2004190540A1 US 20040190540 A1 US20040190540 A1 US 20040190540A1 US 74496003 A US74496003 A US 74496003A US 2004190540 A1 US2004190540 A1 US 2004190540A1
Authority
US
United States
Prior art keywords
data blocks
acknowledgement
data
sequence information
data block
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
US10/744,960
Other versions
US7505412B2 (en
Inventor
Motoharu Miyake
Hiroshi Inamura
Osamu Takahashi
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
Assigned to NTT DOCOMO, INC. reassignment NTT DOCOMO, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TAKAHASHI, OSAMU, INAMURA, HIROSHI, MIYAKE, MOTOHARU
Publication of US20040190540A1 publication Critical patent/US20040190540A1/en
Application granted granted Critical
Publication of US7505412B2 publication Critical patent/US7505412B2/en
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • 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/1607Details of the supervisory signal
    • H04L1/1621Group acknowledgement, i.e. the acknowledgement message defining a range of identifiers, e.g. of sequence numbers
    • 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/187Details of sliding window management
    • 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/188Time-out mechanisms
    • 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/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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
    • 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]

Definitions

  • the invention relates to a technique for controlling retransmission of data in a communication network.
  • TCP Transmission Control Protocol
  • OSI Open Systems Interconnection
  • a sender device allocates a sequence number to a header of each data segment to be transmitted, and also initializes a timer when the data segment is transmitted.
  • the sender device If there is no acknowledgement from the receiver device of receipt of a transmitted data segment within a projected time (Timeout), the time being determined on the basis of an estimated time for transmission of the data segment to its reception, and acknowledgement of its receipt (i.e., estimated round trip time of the data segment), the sender device tentatively determines that the data segment has been lost without reaching the receiver device and retransmits the data segment to the receiver device.
  • a projected time the time being determined on the basis of an estimated time for transmission of the data segment to its reception, and acknowledgement of its receipt (i.e., estimated round trip time of the data segment).
  • a number contained in a header of the received acknowledgement indicates which data segment the received acknowledgement corresponds to.
  • the receiver device transmits an acknowledgement it sets a sequence number of a data segment which it expects to receive next in the “acknowledgement number” field in the header of the acknowledgement. For instance, when using sequence numbers starting from 500 and followed by 1000, 1500 etc., an acknowledgement number of an acknowledgement to be transmitted to a sender device is set as 1000 once a data segment having a sequence number “500” is received.
  • the sender device determines that a transmitted data segment has been safely received by a receiver device and transmits a subsequent data segment.
  • a sender device receives an acknowledgment having an acknowledgment number 1000 where the sender device has not transmitted a data segment having a sequence number 1000 , or where even if the data segment has been transmitted, the segment has not been received by a receiver device.
  • This acknowledgement number remains set at 1000 until a data segment containing a sequence number 1000 is received at the receiver device even where a subsequent data segment having a sequence number 1500 is already received at a receiver device due to a loss of the data segment having a sequence number 1000 .
  • a sequence number of the least recent data segment which is not received by a receiver device is set as an acknowledgement number.
  • TCP provides a method for transmitting a certain number of data segments according to a number defined by a “window.”
  • a “window” is a number of bytes or a number of data segments that can be transmitted prior to receipt of an acknowledgement.
  • a window size is determined by a sender device such that it does not exceed an available buffer size of a receiver device.
  • a window slides by the number of data segments for which an acknowledgement has been received, and a subsequent data segment(s) is transmitted to the extent by which a window has slid.
  • This method is referred to as a “sliding window method”; and by controlling a window size, a data flow is controlled.
  • transmitted data segments may either be lost in the system or need to be stored temporarily in a node in the network until data communication is restored. Especially, deterioration is more likely to happen in a wireless communication environment. Following restoration of data communication, any data segments that are temporarily stored in a node in the network are able to reach the receiver device, although with some delay.
  • the sender device retransmits a first data segment from among data segments that have thus far been transmitted but that have not been acknowledged.
  • the receiver device receives both the data segment temporarily stored in the network (hereinafter referred to as “an original data segment”) and the retransmitted data segment.
  • the receiver device then returns an acknowledgement for the original data segment upon its receipt, and also transmits an acknowledgement for the retransmitted data segment upon its receipt; with each of these acknowledgments normally having the same acknowledgment number.
  • FIG. 10 is an example sequence diagram showing a case where a packet communication is performed between a server device 10 ′ (a sender device) and a client device 50 (a receiver device).
  • a 4-digit-number appearing to the right of an initial point of each arrow at server device 10 ′ in the figure is a sequence number of a data segment transmitted from server device 10 ′; and a 4-digit-number appearing to the left of an initial point of each arrow at receiver device 50 in the figure is an acknowledgement number included in an acknowledgement transmitted from client device 50 .
  • an original sliding window size is three, i.e., three data segments may be sent without receiving an acknowledgement.
  • three data segments (original data segments) S 1 -S 3 are transmitted for a first time from server device 10 ′, the data segments S 1 , S 2 , and S 3 having sequence numbers 0 , 1000 , and 2000 , respectively.
  • a timer is set at server device 10 ′ upon transmission of the data segments.
  • the data segments S 1 , S 2 , and S 3 are received at client device 50 with a delay due to deterioration in network communication conditions.
  • Client device 50 upon receiving the original data segment S 1 , transmits to server device 10 ′ an acknowledgement RI having acknowledgment number 1000 .
  • server device 10 ′ upon receiving original data segment S 2 , client device 50 transmits an acknowledgement R 2 having acknowledgment number 2000 , and an acknowledgement R 3 having acknowledgment number 3000 upon receiving original data segment S 3 .
  • server device 10 ′ does not receive an acknowledgment from receiver device 50 before an elapsed time measured by a timer exceeds a timeout value. As a result, server device 10 ′ determines that the original data segment S 1 has not been received by client device 50 at the time of timeout, and retransmits a data segment having sequence number 0 (retransmitted data segment S′ 1 ).
  • One data segment, i.e., retransmitted data segment S′ 1 is transmitted here because a window size is reduced to a minimum value upon timeout.
  • Server device 10 ′ subsequently receives an acknowledgement R 1 having an acknowledgement number 1000 .
  • server device 10 ′ is unable to determine on the basis of the acknowledgement number 1000 whether the acknowledgement R 1 pertains to original data segment S 1 or to retransmitted data segment S′ 1 , for the reason stated above. Therefore, server device 10 ′ treats acknowledgement R 1 as pertaining to retransmitted data segment S′ 1 , and a data segment having sequence number 1000 is therefore retransmitted (retransmitted data segment S′ 2 ).
  • Server device 10 ′ further retransmits a data segment having a subsequent sequence number 2000 (retransmitted data segment S′ 3 ) because the window size is increased by one after receiving the acknowledgement R 1 .
  • Server device 10 ′ subsequently receives an acknowledgement R 2 having an acknowledgement number 2000 , and subsequent original data segments (original data segment S 4 and following original data segments) are sequentially transmitted.
  • original data segments S 2 and S 3 are retransmitted (retransmitted data segments S′ 2 and S′ 3 ) even though they have safely arrived at client device 50 . That is, when data segments S 2 and S 3 are each received by client device 50 at two different times, the retransmission of data segments S 2 and S 3 results in unnecessary transmission, although this was not determined at the time of the retransmission. Further, as is clear from FIG. 10, acknowledgements R′ 2 and R′ 3 are also transmitted in response to the retransmitted data segments S′ 2 and S′ 3 . Thus, a total of four data segments are unnecessarily retransmitted.
  • FIG. 11 shows a second example of where unnecessary retransmission of data segments may take place.
  • TCP provides that transmission of an acknowledgement from a receiver device may be delayed within a prescribed time, and that the acknowledgement may be transmitted together with a next data transmission from the receiver device (“Delayed Acknowledgement”, RFC 2581).
  • Delayed Acknowledgement RFC 2581
  • an acknowledgement should be transmitted without waiting for a next data transmission.
  • an acknowledgement informing receipt of the two data segments can be substituted by use of a single acknowledgement.
  • a receiver device transmits an acknowledgement for the second received data segment thereby informing a sender device of receipt of the two data segments. This is the case in the example shown in FIG. 11.
  • the original data segments S 1 , S 2 , and S 3 are transmitted from server device 10 ′ and received subsequently by client device 50 with some delay due to deterioration in the communication path, as assumed in the case of FIG. 10. Subsequently, client device 50 transmits an acknowledgement R 2 . In the meantime, server device 10 ′ retransmits data segment S 1 (retransmitted data segment S′ 1 ) due to the timeout.
  • One data segment, i.e., retransmitted data segment S′ 1 is transmitted here because a window size is reduced to a minimum value upon timeout.
  • Server device 10 ′ subsequently receives the acknowledgement R 2 transmitted from client device 50 .
  • server device 10 ′ refers to acknowledgement number 2000 contained in acknowledgement R 2 , and retransmits a segment having the same sequence number, i.e., the original data segment S 3 .
  • Server device 10 ′ further transmits a subsequent original data segment S 4 having sequence number 3000 because the window size is increased by one data segment by receiving the acknowledgement R 2 .
  • Server device 10 ′ subsequently receives an acknowledgement R 3 having acknowledgement number 3000 transmitted from client device 50 . As a result, server device 10 ′ sequentially transmits an original data segment S 5 having a subsequent sequence number 4000 and following data segments.
  • the original data segment S 3 is retransmitted even though the segment S 3 has been safely received by client device 50 in actuality; and as shown in FIG. 11 an acknowledgement R′ 3 for the retransmitted data segment S′ 3 is also transmitted.
  • the retransmission of data segment S′ 3 and the acknowledgement R′ 3 constitute unnecessary transmission.
  • Such unnecessary transmission of data segments is not performed if it is determined that an acknowledgement received after retransmission of a data segment pertains to an original data segment in a case where a sender device is unable to determine whether the acknowledgement pertains to the original data segment or the retransmitted data segment.
  • an acknowledgment for a retransmitted data segment is regarded as an acknowledgement for an original data segment, wherein a window is slid forwards, causing a subsequent original data segment to be transmitted.
  • a transmission of an original data segment is repeated, there is a risk of a cumulative increase in the number of data segments that have been transmitted from server device 10 ′ but that have not reached client device 50 being increased.
  • Allman et. al proposes a technique for using statistical information to estimate whether a received acknowledgment pertains to an original data segment or to a retransmitted data segment in packet communication in a wired packet communication network.
  • estimation is performed on the basis of 1 ⁇ 2 of a minimum round trip time as a threshold value, where the minimum round trip time is the smallest value of a plurality of round trip times obtained by measuring a time from which a data segment is transmitted until a time when an acknowledgment for the segment is received while a connection remains alive between a sender device and a receiver device.
  • the acknowledgement received is regarded as pertaining to the retransmitted data segment, with the elapsed time being less than (or equal to or less than) the threshold value, while the acknowledgment received is regarded as pertaining to the original data segment.
  • Determination of the threshold time as being a half that of a minimum round trip time is based on the following conditions:
  • a probability of an acknowledgement being received for an originally transmitted data segment is about the same during: a period from retransmission until 1 ⁇ 2 of a minimum round trip time has elapsed; a period from retransmission until 3 ⁇ 4 of a minimum round trip time has elapsed; and a period from retransmission until the complete minimum round trip time has elapsed; and
  • a probability of receiving an acknowledgement for a retransmitted data segment sharply increases about a time point shortly after 1 ⁇ 2 of the minimum round trip time has elapsed from retransmission.
  • time stamp information is always appended to an original data segment at a sender device and to an acknowledgement at a receiver device even under good network conditions. This means that the size of both the original data segment and the acknowledgement data segment is increased.
  • the increase in the amount of transmitted data leads to an increase in communication charges where subscribers are charged for communication in proportion to the amount of segments transmitted through a network. Such an undesirable increase in communication charges is likely to become more pronounced where network conditions are good and instances of data retransmission are likely to be small. Clearly, such increases in communication charges are not desirable for users of receiver devices or sender devices.
  • time stamp information in reserved bits of a TCP header used at the time of communication instead of adding the information to a data segment.
  • existing communication systems do not support such a method, and consequently, sender and receiver devices would need to be significantly modified to employ such a method.
  • the present invention is envisioned to solve the above problems, and its object is to provide a technique that enables a reliable determination as to whether an acknowledgement received by a sender device is for an original data segment or for a retransmitted data segment. Specifically, the technique described herein does not increase the data amount and requires no redesign of a receiver device and a little redesign of a sender device.
  • the present invention provides a transmission control method for use in a communication network, comprising: assigning sequence information to each data block to be sequentially transmitted from a sender device to a receiver device; transmitting a plurality of data blocks to the receiver device after assigning the sequence information to each of the plurality of data blocks; retransmitting, from among the plurality of data blocks, a data block for which an acknowledgement signal is not received; receiving an acknowledgement signal containing sequence information of an earliest data block that has not been received by the receiver device, from among the plurality of data blocks; and determining whether the acknowledgement signal acknowledges receipt of one of the plurality of data blocks on the basis of sequence information of the retransmitted data block and the sequence information contained in the acknowledgement signal, wherein the transmitting step includes transmitting a data block subsequent to the transmitted plurality of data blocks when it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks.
  • An example of the data block is a data segment according to TCP.
  • the transmission control method further comprises a step of storing in a memory storage means sequence information of a data block subsequent to the retransmitted data block, wherein the determination step includes performing the determination by comparing the sequence information stored in the memory storage means with the sequence information contained in the acknowledgement signal.
  • the acknowledgement signal acknowledges receipt of one of the plurality of data blocks when a data block identified by the sequence information contained in the acknowledgement signal is a data block that follows the data block identified by the sequence information stored in the memory storage means.
  • a number of the plurality of data blocks transmitted in the transmitting step is determined according to a window size defining a number of data blocks that may be transmitted without receiving an acknowledgement; in this case, the retransmitting step includes changing the window size to a minimum size when retransmitting a data block that is not acknowledged within a projected time, and retransmitting a number of data blocks determined according to the changed window size; and the transmitting step includes increasing the window size when it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks, such that the window size is equal to or larger than that of before the window size was changed to the minimum size in the retransmitting step, and transmitting a number of data blocks determined according to the increased window size.
  • the present invention further provides a communication device comprising: assignment means for assigning sequence information to each data block to be sequentially transmitted to a receiver device; transmission means for transmitting a plurality of data blocks to the receiver device after assigning the sequence information to each of the plurality of data blocks; retransmission means for retransmitting, from among the plurality of data blocks, a data block for which an acknowledgement signal is not received; receiving means for receiving an acknowledgement signal containing sequence information of an earliest data block that has not been received by the receiver device, from among the plurality of data blocks; and determination means for determining whether the acknowledgement signal acknowledges receipt of one of the plurality of data blocks on the basis of sequence information of the retransmitted data block and the sequence information contained in the acknowledgement signal, wherein the transmission means transmits a data block subsequent to the transmitted plurality of data blocks when it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks.
  • the communication device further comprises memory storage means for storing sequence information of a data block subsequent to the retransmitted data block, wherein the determination means performs the determination by comparing the sequence information stored in the memory storage means with the sequence information contained in the acknowledgement signal.
  • the determination means determines that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks when a data block identified by the sequence information contained in the acknowledgement signal is a data block that follows the data block identified by the sequence information stored in the memory storage means.
  • a number of the plurality of data blocks transmitted by the transmission means of the communication device is determined according to a window size defining a number of data blocks that may be transmitted without receiving an acknowledgement.
  • the retransmission means changes the window size to a minimum size when retransmitting a data block that is not acknowledged within a projected time, and retransmits a number of data blocks determined according to the changed window size; and the transmission means increases the window size when it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks, such that the window size is equal to or larger than that before the window size was changed to the minimum size by the retransmission means, and transmits a number of data blocks determined according to the increased window size.
  • the present invention further provides a communication system by which the transmission control method is implemented in the above described various embodiments by providing at least two devices with various means which the above communication device comprises.
  • the present invention provides a program for causing a computer to execute the transmission control method in the above described various embodiments.
  • the program may be stored in various types of recording media such as a magnetic tape, a magnetic disk, a floppyTM disk, an optical recording medium, a magneto-optical recording medium, a DVD (Digital Video Disk), a RAM, and others.
  • the present invention enables an optimum determination as to whether an acknowledgement received at a sender device pertains to an original data segment or to a retransmitted data segment without increasing the data amount of a data segment. As a result, unnecessary transmission of data segments can be prevented. Also, the present invention requires no redesign of a receiver device and a little redesign of a sender device.
  • FIG. 1 is a block diagram showing a configuration of a communication system 1 according to a first preferred embodiment of the present invention.
  • FIG. 2 is a block diagram showing a configuration of a server device 10 according to the embodiment.
  • FIG. 3 is a diagram illustrating a data configuration of a header appended to a data segment according to the embodiment.
  • FIG. 4 is a sequence chart illustrating an example of performing a packet communication between server device 10 and a client device 50 according to the embodiment.
  • FIG. 5 is a flow chart showing operations of transmitting and receiving data segments at server device 10 .
  • FIG. 6 is a diagram for describing a window according to a second embodiment of the present invention.
  • FIG. 7 is a sequence chart showing an example of performing a packet communication between server device 10 and client device 50 according to the second embodiment.
  • FIG. 8 is a flow chart showing operations of server device 10 of transmitting and receiving data segments according to the second embodiment.
  • FIGS. 9A to 9 C are a diagram for describing changes in a congestion window according to the second embodiment.
  • FIG. 10 is a sequence chart showing an example of performing a packet communication between a conventional server device 10 ′ and client device 50 .
  • FIG. 11 is a sequence chart showing another example of performing a packet communication between a conventional server device 10 ′ and client device 50 .
  • FIG. 1 is a block diagram illustrating a configuration of a communication system 1 according to a first embodiment of the present invention.
  • a communication terminal 40 is connected to a client device 50 and performs communications with client device 50 .
  • a mobile packet communication network 30 provides packet communication services to communication terminals 40 served by the network 30 .
  • Server device 10 performs packet communication with client device 50 via the Internet 20 , mobile packet communication network 30 , and communication terminal 40 . It is assumed in the present embodiment that TCP (Transmission Control Protocol) is used to perform packet communications, thereby transmitting data segments.
  • TCP Transmission Control Protocol
  • Server device 10 is configured in the same way as a standard computer, and therefore, only those components relating to the present invention will be described with reference to FIG. 2.
  • a CPU 100 executes a program stored in a storage unit 105 , thereby controlling each component of server device 10 .
  • CPU 100 comprises a timer 100 a, which outputs a trigger signal when a predetermined time set by CPU 100 has elapsed.
  • Storage unit 105 comprises a RAM (Random Access Memory) 102 , a ROM (Read Only Memory) 103 , and a HD (Hard Disk) 104 .
  • ROM 103 stores a program for causing CPU 100 to control data segment transmission. Specifically, when transmitting data to client device 50 , CPU 100 divides the data into segments, appends a header to each of the divided data segments, and transmits the segments sequentially to client device 50 .
  • CPU 100 uses the above-described sliding window method to transmit data segments to client device 50 based on parameter variables (detailed in a second embodiment) stored in HD 104 .
  • FIG. 3 shows a data configuration of a header appended to a data segment.
  • CPU 100 allocates a sequence number to the “sequence number” field of the header shown in FIG. 3, enters other necessary information into each data area of the header, and appends the header to the data segment.
  • CPU 100 after transmitting a data segment to client device 50 , waits for an acknowledgement indicating that the data segment has been received by client device 50 .
  • a data configuration of a header appended to an acknowledgement is the same as that shown in FIG. 3.
  • the “acknowledgement number” field of the header shown in FIG. 3 a sequence number which client device 50 expects to receive next is set by client device 50 .
  • CPU 100 sets timer 100 a to have a predetermined value (hereinafter referred to as “a timeout value”) and causes timer 100 a to measure an elapsed time for server device 10 to wait for an acknowledgement.
  • a timeout value a predetermined value
  • CPU 100 determines that the data segment has not been received by client device 50 .
  • CPU 100 then resets a value of timer 100 a, and retransmits the data segment.
  • server device 10 receives an acknowledgement after the retransmission
  • CPU 100 determines whether the received acknowledgement corresponds to the original data segment or to the retransmitted data segment in such a way as described below.
  • CPU 100 first compares an acknowledgement number contained in the received acknowledgement (hereinafter referred to as “an acknowledgement number for comparison”) with an acknowledgement number which an acknowledgement transmitted in response to the retransmitted segment is expected to have (hereinafter referred to as “an expected acknowledgement number”).
  • an acknowledgement number transmitted in response to the retransmitted data segment is a sequence number of a data segment that is subsequent to the retransmitted data segment.
  • CPU 100 may record in RAM 102 , at the time of retransmission, the sequence number of a data segment that is subsequent to the retransmitted data segment as an expected acknowledgement number.
  • server device 10 stores a plurality of types of parameter variables and uses them for congestion control.
  • a variable snd_nxt represents a sequence number of a next data segment to be transmitted; and the value of snd_nxt indicates the sequence number of a data segment that is subsequent to the retransmitted data segment. Therefore, the value of snd_nxt may be used as an expected acknowledgement number in performing the determination, instead of recording the expected acknowledgement number in RAM 102 .
  • Client device 50 has the configuration of a generally used computer, and therefore description will be given only of functions of the device 50 that specifically relate to the present preferred embodiment.
  • Client device 50 upon receiving a data segment from server device 10 , transmits to server device 10 an acknowledgement informing that the data segment has been received. Specifically, a sequence number indicating a sequential position subsequent to the data segment is set as the acknowledgement number contained in the acknowledgement for transmission to server device 10 .
  • client device 50 sequentially receives the data segments transmitted from server device 10 with delay.
  • an acknowledgement for the second data segment is transmitted, thereby informing server device 10 that two data segments have been received.
  • a sequence number indicating a sequential position that is subsequent to the second data segment is set as the acknowledgement number of the acknowledgement for transmission to server device 10 .
  • FIG. 4 is a sequence chart showing an example case where a packet communication is performed between server device 10 and client device 50 .
  • FIG. is a flow chart illustrating operations of transmitting and receiving data segments at server device 10 according to the present embodiment. It is assumed that in the present embodiment, the sliding window method is used to transmit data segments.
  • the initial window size is set as three, and the amount of data segments that can be received by client device 50 is sufficiently large relative to the window size set by server device 10 . For simplicity, it is assumed that the window size is fixed as three, and that the window size is not increased for congestion control.
  • server device 10 records a window size occurring immediately before the retransmission timeout is detected.
  • data segments having sequence number 0 , 1000 , and 2000 , respectively are transmitted from server device 10 to client device 50 .
  • a wireless communication environment between communication terminal 40 and mobile packet communication network 30 has deteriorated, and transmission of the original data segments S 1 , S 2 , and S 3 has been suspended.
  • the wireless communication environment improves and communication is restored, the original data segments S 1 , S 2 , and S 3 that have been residing in the network 30 are transmitted to client device 50 .
  • client device 50 sequentially receives original data segments S 1 , S 2 , and S 3 with a delay.
  • an interval from when the original data segment is received until the original data segment S 2 is received is shorter than a predetermined time, and an acknowledgement having an acknowledgement number 2000 is transmitted to server device 10 as an acknowledgement for the original data segments S 1 and S 2 .
  • Step S 300 CPU 100 of server device 10 transmits the original data segments S 1 , S 2 , and S 3 , and then waits for an acknowledgement transmitted from client device 50 in response to receipt of the original data segment S 1 . In waiting for the acknowledgement, CPU 100 sets a timeout value at timer 100 a to cause timer 100 a to measure an elapsed time (Step S 301 ).
  • CPU 100 determines whether any acknowledgment is received (Step S 302 ). When it is determined “No” in Step S 302 , CPU 100 then determines whether a timeout by timer 100 a occurs (Step S 303 ). In a case that it is determined “No” in Step S 303 , the routine returns to Step S 302 . The determination of Steps S 302 and S 303 is repeated by CPU 100 before a timeout occurs as far as no acknowledgement is received.
  • Step S 302 No, Step S 303 ; Yes
  • CPU 100 then resets timer 100 a , and proceeds to Step S 304 .
  • Step S 304 CPU 100 determines that the original data segment S 1 has not been received by client device 50 , and retransmits a data segment having sequence number 0 (the retransmitted data segment S′ 1 in FIG. 4) to client device 50 .
  • the window size is reduced to a minimum value due to the timeout, and only one data segment is retransmitted here.
  • CPU 100 further sets a timeout value at timer 100 a to cause it to measure an elapsed time.
  • CPU 100 determines whether any acknowledgment is received (Step S 305 ), and in a case that it is determined “No” in Step S 305 , CPU 100 then determines whether a timeout by timer 100 a occurs (Step S 306 ). When the determination of Step S 306 is “No,” the routine returns to Step S 305 . After this, the determination of Steps S 305 and S 306 is repeated by CPU 100 before a timeout occurs as far as no acknowledgement is received.
  • Step S 305 It is assumed that CPU 100 subsequently receives the acknowledgment R 2 before the timeout value is reached, i.e., before a trigger signal is output from timer 100 a , where it is determined “Yes” in Step S 305 , and the routine proceeds to Step S 307 .
  • Step S 307 CPU 100 resets timer 100 a .
  • CPU 100 compares the acknowledgement number 2000 contained in the acknowledgement R 2 (the acknowledgement number for comparison) with the expected acknowledgement number 1000 that is expected to be contained in an acknowledgement transmitted in response to receipt of the retransmitted data segment transmitted in Step S 304 ; the expected acknowledgement number having been stored in RAM 102 at the time of the retransmission. Since, in the example, the acknowledgement number for comparison is larger than the expected acknowledgement number, CPU 100 determines that the acknowledgement R 2 corresponds to the original data segments S 1 and S 2 . In other words, CPU 100 determines that the original data segments S 1 and S 2 are received by client device 50 without being lost.
  • the window size is restored to “three” as of before the timeout by referring to the stored information in RAM 102 , and the window slides by the original data segments S 1 and S 2 .
  • two data segments subsequent to the transmitted data segment S 3 can now be transmitted.
  • Step S 309 CPU 100 of server device 10 transmits two original data segments S 4 and S 5 that are subsequent to the original data segment S 3 .
  • FIG. 4 a process corresponding to Step S 309 is shown wherein server device 10 transmits the original data segments S 4 and S 5 to client device 50 .
  • the routine then returns to Step S 301 , and timer 100 a starts measuring an elapsed time.
  • CPU 100 repeats the determination of Steps S 302 and S 303 before a timeout occurs as far as no acknowledgement is received.
  • server device 10 While server device 10 is performing the above mentioned processes, the original data segment S 3 is received by client device 50 . Then, an acknowledgement R 3 having an acknowledgement number 3000 is transmitted to server device 10 in response to the original data segment S 3 .
  • Step S 302 when acknowledgement R 3 having an acknowledgment number 3000 reaches server device 10 , it is determined by CPU 100 of server device 10 “Yes” in Step S 302 . As a result, the window slides further by one data segment, and server device 10 can now transmit one data segment that is subsequent to the last data segment S 5 from among previously transmitted data segments. In Step S 300 , CPU 100 transmits an original data segment S 6 having subsequent sequence number 5000 .
  • server device 10 transmits the original data segment S 6 to client device 50 .
  • ROM 103 of server device 10 stores a program for causing CPU 100 to perform a data segment transmission control process. The process will be described in detail in the following, and it should be noted that those portions that are the same as those of the first embodiment will not be described here.
  • CPU 100 in transmitting data segments to client device 50 , performs congestion control in addition to utilizing the sliding window method described in relation to the first embodiment, for controlling a data flow of data segments. Specifically, CPU 100 increases or decreases a window size, i.e., a number of data segments that can be transmitted without acknowledgement. A change in window size is initiated each time receipt of a transmitted data segment is acknowledged. It is to be noted also that ROM 103 stores in advance information on control of congestion window.
  • Server device 10 stores in HD 104 at least five parameter variables, snd_max, snd_nxt, snd_una, snd_wnd, and snd_cwnd. Congestion control is performed by transmitting a number of data segments identified on the basis of those parameter variables.
  • FIG. 6 is a diagram describing the interrelations of these five parameter variables.
  • snd_max shows a sequence number (sequence number 5000 in FIG. 6) of an original data segment to be transmitted;
  • snd_nxt shows a next sequence number (sequence number 5000 in FIG. 6) of a data segment server device 10 will transmit or retransmit;
  • snd_una shows the least recent unacknowledged sequence number (sequence number 2000 in FIG. 6) among data segments that have already been transmitted.
  • snd_cwnd shows a number of data segments that may be transmitted by server device 10 without receipt of an acknowledgement for previously transmitted data segments.
  • One segment is represented in a unit called Maximum Segment Size (hereinafter referred to as “MSS”), where the default size of 1 MSS is determined as 1,460 bytes; and snd_cwnd has, for example, 3 MSS as its initial value.
  • MSS Maximum Segment Size
  • CPU 100 of Server device 10 increases a value of snd_cwnd using a “Slow Start” algorithm where a number of data segments transmitted is incremented exponentially until the value reaches a predetermined threshold (e.g., 65,535 bytes) every time an acknowledgement for a transmitted data segment is received; cnd_cwnd is a value controlled by server device 10 and represents a “congestion window size.”
  • a predetermined threshold e.g., 65,535 bytes
  • snd_wnd represents an advertised window size notified from a client device 50 ; and the value of the advertised window size indicates an available buffer receiving space of client device 50 , and is represented in bytes.
  • CPU 100 of server device 10 determines a minimum of advertised window size (snd_wnd) and congestion window size (snd_cwnd) as a window size for transmission, on the basis of which window control is performed. Consequently, a transmission window size never exceeds an advertised window size, and a number of data segments transmitted to client device 50 never exceeds an available buffer space of client device 50 .
  • the advertised window size is of a sufficiently larger size than that of a congestion window size; and for the sake of the explanation, a transmission window size is referred to as a “congestion window size.”
  • CPU 100 of server device 10 when retransmission timeout is detected, CPU 100 of server device 10 first sets the value of snd_cwnd with 1 MSS, and records in RAM 102 the value of snd_cwnd occurring immediately before the retransmission timeout is detected. CPU 100 substitutes the value of snd_nxt with that of snd_una, and then retransmits a data segment designated by snd_nxt. Each time an acknowledgement is received for a retransmitted data segment, the value set in snd_cwnd is incremented by 1 MSS according to the above described Slow Start algorithm.
  • the determination process (Step S 307 of FIG. 5; Step S 307 of FIG. 8 in the second embodiment) described in the first embodiment is performed when an acknowledgement is received following data segment retransmission.
  • the congestion window size is restored to that immediately before retransmission.
  • the value of the congestion window size is updated with the value of snd_cwnd that has been stored in RAM 102 at the time of detecting the retransmission timeout.
  • CPU 100 replaces the value of snd_nxt with the value of snd_max, and the data transmission is started from a data segment designated by snd_nxt.
  • CPU 100 performs the described congestion control, whereby a flow of data as of before the timeout can be quickly recovered.
  • FIG. 7 is a sequence chart showing another example of performing packet communication between server device 10 and client device 50 .
  • FIG. 8 is a flow chart showing transmission and receipt operations of data segments by server device 10 according to the present embodiment.
  • FIGS. 9A to 9 C are schematic diagrams showing changes in the congestion window size. It is to be noted that the same reference numerals denote the same steps described in the first embodiment, and description thereof is therefore omitted.
  • data segments having sequence number 0 , 1000 , 2000 , 3000 , and 4000 , respectively, (original data segments S 11 , S 12 , S 13 , S 14 , S 15 ) are transmitted from server device 10 to client device 50 .
  • the congestion window size snd_cwnd applied at this time is 5 MSS.
  • the least recent unacknowledged sequence number 0 (S 11 ) is set as a value of snd_una.
  • the next original sequence number to be transmitted 5000 is set as snd_max; and sequence number 5000 of a next data segment to be transmitted (S 16 ) is set as snd_nxt.
  • wireless communication between terminal 40 and mobile packet communication network 30 deteriorates, as a result of which transmission of the original data segments S 11 to S 15 is suspended.
  • the original data segments S 11 to S 15 are successively transmitted to client device 50 .
  • Client device 50 then successively receives the original data segments S 11 to S 15 with significant delay.
  • client device 50 Upon receiving the original data segment S 11 , client device 50 transmits an acknowledgement R 11 having acknowledgement number 1000 as a response to receipt of the original data segment S 11 .
  • Step S′ 304 CPU 100 determines that the original data segment S 11 has not been received by client device 50 .
  • CPU 100 then retransmits to client device 50 a data segment (a retransmitted data segment S′ 11 in FIG. 7) having sequence number 0 designated by the value of snd_nxt.
  • CPU 100 also sets a timeout value with timer 100 a to cause timer 100 a to measure the timeout value.
  • CPU 100 of server device 10 receives the acknowledgement R 11 before a trigger signal is output from timer 100 a before the timer expires, and the routine then proceeds to Step S 307 .
  • server device 10 operation of server device 10 corresponding to the above steps will be described with reference to FIG. 8.
  • Step S 300 CPU 100 of server device 10 transmits the five original data segments S 11 -S 15 with the congestion window size of 5 MSS.
  • CPU 100 then performs the processes of S 301 to S 303 , and the routine then proceeds to Step S′ 304 .
  • Step S′ 304 CPU 100 changes the congestion window size to 1 MSS for congestion control, and retransmits a data segment having sequence number 0 (retransmitted data segment S′ 11 ).
  • server device 10 receives the acknowledgement R 11 (Step S 305 ; Yes), and the process of Step S 307 is performed.
  • Step S 307 CPU 100 compares the acknowledgement number 1000 (acknowledgement number for comparison) contained in acknowledgement R 11 with expected acknowledgement number ( 1000 ) for the retransmitted data segment transmitted in Step S 304 .
  • the value of the expected acknowledgement number may be obtained by referring to the value of snd_nxt; and alternatively, the stored information of RAM 102 may be referred to as in the first embodiment.
  • the acknowledgement number for comparison and the expected acknowledgement number are identical; and it is not possible to determine whether the acknowledgement R 11 corresponds to the original data segment S 11 or the retransmitted data segment. Therefore, CPU 100 estimates that the acknowledgement R 11 corresponds to the retransmitted data segment S′ 11 . That is, it is determined that the original data segment S 11 has not been received by client device 50 due to loss of a data segment, and the routine proceeds to Step S 308 .
  • Step S 308 it is determined whether any data segment for retransmission exists subsequent to the retransmitted data segment S′ 11 .
  • the value of snd_nxt at this time is the sequence number 1000 of a transmitted data segment S 12 (see FIG. 9A). Therefore, it is determined that a data segment for retransmission does exist, and the routine then proceeds to Step S′ 304 .
  • Step S′ 304 the congestion window size is increased to 2 MSS since the acknowledgement R 11 is received, whereby congestion control is performed. Two data segments having subsequent sequence numbers 1000 and 2000 (S′ 12 and S′ 13 ) are then retransmitted.
  • CPU 100 sets timer 100 a at the same time.
  • retransmitted data segments S′ 12 and S′ 13 are transmitted from server device 10 .
  • client device 50 transmits acknowledgements having acknowledgement numbers 2000 , 3000 , and 4000 , respectively, in response to receipt of the original data segments S 12 , S 13 , and S 14 . It is assumed here that the acknowledgements R 12 and R 13 have been lost due to a deterioration in wireless communication. As a result, the acknowledgement R 14 is transmitted to server device 10 .
  • CPU 100 receives the acknowledgement R 14 (Step S 305 ; Yes) before an elapsed time measured by timer 100 a exceeds a timeout value. The routine then proceeds to Step S 307 .
  • Step S 307 CPU 100 compares acknowledgement number 4000 (acknowledgement number for comparison) contained in the acknowledgement R 14 with an expected acknowledgement number for a retransmitted data segment S′ 13 ( 3000 ). Since the acknowledgement number for comparison is larger than the expected acknowledgement number, it is determined that the original data segments S 11 to S 14 have been safely received by client device 50 without being lost. The routine then proceeds to Step S′ 309 .
  • Step S′ 309 CPU 100 refers to the stored information in RAM 102 and restores the congestion window size to that existing immediately before the retransmission timeout. Specifically, the congestion window size is restored to 5 MSS stored in RAM 102 , and is further incremented by 1 MSS as a result of receipt of the acknowledgement R 14 , thus resulting in 6 MSS in total. As shown in FIG. 9B, the value of snd_nxt is replaced with the value of snd_max. Further, since the original data segment S 15 has not been acknowledged, the value of snd_una is changed to 4000 , which is the sequence number of the original data segment S 15 . Provided that the congestion window is 6 MSS starting from the value of snd_una, 5 original data segments S 16 to S 20 that have not been transmitted and that are under the congestion window are transmitted sequentially.
  • the original data segments S 16 , S 17 , S 18 , S 19 , and S 20 having sequence numbers 5000 , 6000 , 7000 , 8000 , and 9000 , respectively, are transmitted from server device 10 to client device 50 .
  • CPU 100 While transmitting these original data segments, CPU 100 receives an acknowledgement R 15 . CPU 100 then determines that the original data segment S 15 has been received by client device 50 , and changes the value of snd_una to the sequence number 5000 corresponding to the original data segment S 16 . The congestion window size is incremented by 1 MSS, resulting in 7 MSS (refer to FIG. 9C). As a result, subsequent original data segments S 21 and S 22 can be transmitted, and these data segments are transmitted from server device 10 to client device 50 .
  • a packet communication is performed according to TCP.
  • the present invention may be applied to a communication protocol for packet communications other than TCP if it performs retransmission control of a data block or a data segment.
  • data segments may be transmitted using a window that is similar to a sliding window method used in TCP.
  • a separate server device may replace the function of determination performed by server device 10 as to which data segment corresponds to a received acknowledgement.
  • server device 10 upon receiving an acknowledgement after transmitting a data segment for retransmission, inquires at a separate server device whether the acknowledgement corresponds to an original data segment or to a retransmitted data segment.
  • the separate service device performs the determination and transmits a result of the determination to server device 10 .
  • Server device 10 is then able to determine which data segment corresponds to the acknowledgement on the basis of the transmitted result of the determination.
  • client device 50 performs a packet communication with server device 10 through communication terminal 40 .
  • client device 50 may comprise a wireless communication function and perform a packet communication with server device 10 through mobile packet communication network 30 , the Internet 20 , and not through communication terminal 40 .

Abstract

Upon receiving an acknowledgement after retransmission of a data segment, an acknowledgement number contained in the acknowledgement is compared with an acknowledgment number expected to be contained in an acknowledgement pertaining to the retransmitted data segment. When the former is larger than the latter, it is determined that the acknowledgement pertains to a data segment that was originally transmitted.

Description

    TECHNICAL FIELD
  • The invention relates to a technique for controlling retransmission of data in a communication network. [0001]
  • BACKGROUND ART
  • Devices that use TCP (Transmission Control Protocol) for transmitting and receiving data are now commonly employed. TCP is a protocol used under the OSI (Open Systems Interconnection) Reference Model, and is used when data streamed from an upper layer are divided into data segments for transmission from a sender device to a receiver device. TCP ensures reliable streaming of ordered data segments to a receiver device. Specifically, a number (hereinafter referred to as “a sequence number”) is allocated to each data segment in a data sequence to indicate an order of the data segment in the data sequence. A sender device allocates a sequence number to a header of each data segment to be transmitted, and also initializes a timer when the data segment is transmitted. If there is no acknowledgement from the receiver device of receipt of a transmitted data segment within a projected time (Timeout), the time being determined on the basis of an estimated time for transmission of the data segment to its reception, and acknowledgement of its receipt (i.e., estimated round trip time of the data segment), the sender device tentatively determines that the data segment has been lost without reaching the receiver device and retransmits the data segment to the receiver device. [0002]
  • At a sender device, when an acknowledgement is received, a number contained in a header of the received acknowledgement indicates which data segment the received acknowledgement corresponds to. When the receiver device transmits an acknowledgement it sets a sequence number of a data segment which it expects to receive next in the “acknowledgement number” field in the header of the acknowledgement. For instance, when using sequence numbers starting from 500 and followed by 1000, 1500 etc., an acknowledgement number of an acknowledgement to be transmitted to a sender device is set as 1000 once a data segment having a sequence number “500” is received. Upon receiving such an acknowledgment, the sender device determines that a transmitted data segment has been safely received by a receiver device and transmits a subsequent data segment. [0003]
  • It is to be noted that a sender device receives an acknowledgment having an [0004] acknowledgment number 1000 where the sender device has not transmitted a data segment having a sequence number 1000, or where even if the data segment has been transmitted, the segment has not been received by a receiver device. This acknowledgement number remains set at 1000 until a data segment containing a sequence number 1000 is received at the receiver device even where a subsequent data segment having a sequence number 1500 is already received at a receiver device due to a loss of the data segment having a sequence number 1000. Thus, a sequence number of the least recent data segment which is not received by a receiver device is set as an acknowledgement number.
  • In the data segment transmission method explained above, reliability is ensured by transmitting from a sender device a subsequent data segment only after receipt at the device from a receiver device of an acknowledgement for a previously transmitted data segment. However, while this method ensures data transmission reliability it inhibits efficiency. To improve efficiency, TCP provides a method for transmitting a certain number of data segments according to a number defined by a “window.” A “window” is a number of bytes or a number of data segments that can be transmitted prior to receipt of an acknowledgement. A window size is determined by a sender device such that it does not exceed an available buffer size of a receiver device. When a sender device receives an acknowledgement for a transmitted data segment(s), a window slides by the number of data segments for which an acknowledgement has been received, and a subsequent data segment(s) is transmitted to the extent by which a window has slid. This method is referred to as a “sliding window method”; and by controlling a window size, a data flow is controlled. [0005]
  • If data flow is suspended when a sliding window method is being employed, due to, for example, a break in wireless communication or congestion in a system, transmitted data segments may either be lost in the system or need to be stored temporarily in a node in the network until data communication is restored. Especially, deterioration is more likely to happen in a wireless communication environment. Following restoration of data communication, any data segments that are temporarily stored in a node in the network are able to reach the receiver device, although with some delay. [0006]
  • However, if communication disruption persists for a relatively long time, and a timeout occurs at a sender device for a transmitted data segment, the sender device retransmits a first data segment from among data segments that have thus far been transmitted but that have not been acknowledged. As a result, the receiver device receives both the data segment temporarily stored in the network (hereinafter referred to as “an original data segment”) and the retransmitted data segment. The receiver device then returns an acknowledgement for the original data segment upon its receipt, and also transmits an acknowledgement for the retransmitted data segment upon its receipt; with each of these acknowledgments normally having the same acknowledgment number. This gives rise to a problem that the sender device is unable to determine whether an acknowledgment received pertains to an originally transmitted or to a retransmitted data segment, and reverts to a state where it is determined that the original data segment failed to reach the receiver device. [0007]
  • In the following two examples, explanation will be given for such a situation. [0008]
  • FIG. 10 is an example sequence diagram showing a case where a packet communication is performed between a [0009] server device 10′ (a sender device) and a client device 50 (a receiver device). A 4-digit-number appearing to the right of an initial point of each arrow at server device 10′ in the figure is a sequence number of a data segment transmitted from server device 10′; and a 4-digit-number appearing to the left of an initial point of each arrow at receiver device 50 in the figure is an acknowledgement number included in an acknowledgement transmitted from client device 50. It is assumed here that an original sliding window size is three, i.e., three data segments may be sent without receiving an acknowledgement.
  • In FIG. 10, three data segments (original data segments) S[0010] 1-S3 are transmitted for a first time from server device 10′, the data segments S1, S2, and S3 having sequence numbers 0, 1000, and 2000, respectively. A timer is set at server device 10′ upon transmission of the data segments.
  • In the figure, the data segments S[0011] 1, S2, and S3 are received at client device 50 with a delay due to deterioration in network communication conditions. Client device 50, upon receiving the original data segment S1, transmits to server device 10′ an acknowledgement RI having acknowledgment number 1000. Likewise, upon receiving original data segment S2, client device 50 transmits an acknowledgement R2 having acknowledgment number 2000, and an acknowledgement R3 having acknowledgment number 3000 upon receiving original data segment S3.
  • As shown in the figure, [0012] server device 10′ does not receive an acknowledgment from receiver device 50 before an elapsed time measured by a timer exceeds a timeout value. As a result, server device 10′ determines that the original data segment S1 has not been received by client device 50 at the time of timeout, and retransmits a data segment having sequence number 0 (retransmitted data segment S′1). One data segment, i.e., retransmitted data segment S′1, is transmitted here because a window size is reduced to a minimum value upon timeout.
  • [0013] Server device 10′ subsequently receives an acknowledgement R1 having an acknowledgement number 1000. Here, server device 10′ is unable to determine on the basis of the acknowledgement number 1000 whether the acknowledgement R1 pertains to original data segment S1 or to retransmitted data segment S′1, for the reason stated above. Therefore, server device 10′ treats acknowledgement R1 as pertaining to retransmitted data segment S′1, and a data segment having sequence number 1000 is therefore retransmitted (retransmitted data segment S′2). Server device 10′ further retransmits a data segment having a subsequent sequence number 2000 (retransmitted data segment S′3) because the window size is increased by one after receiving the acknowledgement R1.
  • [0014] Server device 10′ subsequently receives an acknowledgement R2 having an acknowledgement number 2000, and subsequent original data segments (original data segment S4 and following original data segments) are sequentially transmitted.
  • In the example, original data segments S[0015] 2 and S3 are retransmitted (retransmitted data segments S′2 and S′3) even though they have safely arrived at client device 50. That is, when data segments S2 and S3 are each received by client device 50 at two different times, the retransmission of data segments S2 and S3 results in unnecessary transmission, although this was not determined at the time of the retransmission. Further, as is clear from FIG. 10, acknowledgements R′2 and R′3 are also transmitted in response to the retransmitted data segments S′2 and S′3. Thus, a total of four data segments are unnecessarily retransmitted.
  • FIG. 11 shows a second example of where unnecessary retransmission of data segments may take place. To prevent a receiver device from transmitting an excessive number of acknowledgements, TCP provides that transmission of an acknowledgement from a receiver device may be delayed within a prescribed time, and that the acknowledgement may be transmitted together with a next data transmission from the receiver device (“Delayed Acknowledgement”, RFC 2581). However, in a case of receiving two full-size data segments in a row within a prescribed time, an acknowledgement should be transmitted without waiting for a next data transmission. That is, in a case that two data segments are received within a short time lag, for example within 200 msec (millisecond) of each other, an acknowledgement informing receipt of the two data segments can be substituted by use of a single acknowledgement. Specifically, a receiver device transmits an acknowledgement for the second received data segment thereby informing a sender device of receipt of the two data segments. This is the case in the example shown in FIG. 11. [0016]
  • In FIG. 11, the original data segments S[0017] 1, S2, and S3 are transmitted from server device 10′ and received subsequently by client device 50 with some delay due to deterioration in the communication path, as assumed in the case of FIG. 10. Subsequently, client device 50 transmits an acknowledgement R2. In the meantime, server device 10′ retransmits data segment S1 (retransmitted data segment S′1) due to the timeout. One data segment, i.e., retransmitted data segment S′1, is transmitted here because a window size is reduced to a minimum value upon timeout.
  • [0018] Server device 10′ subsequently receives the acknowledgement R2 transmitted from client device 50. Upon receipt, server device 10′ refers to acknowledgement number 2000 contained in acknowledgement R2, and retransmits a segment having the same sequence number, i.e., the original data segment S3. Server device 10′ further transmits a subsequent original data segment S4 having sequence number 3000 because the window size is increased by one data segment by receiving the acknowledgement R2.
  • [0019] Server device 10′ subsequently receives an acknowledgement R3 having acknowledgement number 3000 transmitted from client device 50. As a result, server device 10′ sequentially transmits an original data segment S5 having a subsequent sequence number 4000 and following data segments.
  • In this example, the original data segment S[0020] 3 is retransmitted even though the segment S3 has been safely received by client device 50 in actuality; and as shown in FIG. 11 an acknowledgement R′3 for the retransmitted data segment S′3 is also transmitted. Thus, the retransmission of data segment S′3 and the acknowledgement R′3 constitute unnecessary transmission.
  • Such unnecessary transmission of data segments is not performed if it is determined that an acknowledgement received after retransmission of a data segment pertains to an original data segment in a case where a sender device is unable to determine whether the acknowledgement pertains to the original data segment or the retransmitted data segment. [0021]
  • However, when such a determination is made, an acknowledgment for a retransmitted data segment is regarded as an acknowledgement for an original data segment, wherein a window is slid forwards, causing a subsequent original data segment to be transmitted. When such a transmission of an original data segment is repeated, there is a risk of a cumulative increase in the number of data segments that have been transmitted from [0022] server device 10′ but that have not reached client device 50 being increased.
  • To avoid such a risk, it is determined by default that an acknowledgement pertains to an original data segment in a case where a sender device is unable to determine whether the acknowledgement pertains to the original data segment or a retransmitted data segment. However, using this determination, a sender device is unable to avoid unnecessary retransmission of a data segment. [0023]
  • To solve this problem, “The Eifel Detection Algorithm for TCP” (Reiner Ludwig, et. al, http://www.watersprings.org/pub/id/draft-ietf- tsvwg-tcp-eifel-alg-04.txt, 24 Jul., 2002) discloses a technique for enabling reliable determination as to whether an acknowledgment pertains to an original data segment or to a retransmitted data segment by using the TCP Time Stamps Option defined in RFC 1323. [0024]
  • Also, in “On Estimating End-To-End Network Path Properties. 2.8 Impact of Bad Timeouts” (Mark Allman, Vern Paxson, ACM SIGCOMM '99, vol.29, no.4, pp 263-274, Oct. 1999), Allman et. al proposes a technique for using statistical information to estimate whether a received acknowledgment pertains to an original data segment or to a retransmitted data segment in packet communication in a wired packet communication network. [0025]
  • In the Allman's proposal, estimation is performed on the basis of ½ of a minimum round trip time as a threshold value, where the minimum round trip time is the smallest value of a plurality of round trip times obtained by measuring a time from which a data segment is transmitted until a time when an acknowledgment for the segment is received while a connection remains alive between a sender device and a receiver device. In the method, if a time which elapses from retransmission of a data segment until a time when a first acknowledgement is received is equal to or longer than (or longer than) the threshold value, the acknowledgement received is regarded as pertaining to the retransmitted data segment, with the elapsed time being less than (or equal to or less than) the threshold value, while the acknowledgment received is regarded as pertaining to the original data segment. [0026]
  • Determination of the threshold time as being a half that of a minimum round trip time is based on the following conditions: [0027]
  • 1. Statistically, a probability of an acknowledgement being received for an originally transmitted data segment is about the same during: a period from retransmission until ½ of a minimum round trip time has elapsed; a period from retransmission until ¾ of a minimum round trip time has elapsed; and a period from retransmission until the complete minimum round trip time has elapsed; and [0028]
  • 2. Statistically, a probability of receiving an acknowledgement for a retransmitted data segment sharply increases about a time point shortly after ½ of the minimum round trip time has elapsed from retransmission. [0029]
  • However, when the Eifel Detection Algorithm is used, time stamp information is always appended to an original data segment at a sender device and to an acknowledgement at a receiver device even under good network conditions. This means that the size of both the original data segment and the acknowledgement data segment is increased. The increase in the amount of transmitted data leads to an increase in communication charges where subscribers are charged for communication in proportion to the amount of segments transmitted through a network. Such an undesirable increase in communication charges is likely to become more pronounced where network conditions are good and instances of data retransmission are likely to be small. Clearly, such increases in communication charges are not desirable for users of receiver devices or sender devices. [0030]
  • It is feasible to include time stamp information in reserved bits of a TCP header used at the time of communication instead of adding the information to a data segment. However, existing communication systems do not support such a method, and consequently, sender and receiver devices would need to be significantly modified to employ such a method. [0031]
  • Further, even when the technique of Allman is used, an optimum result of the determination cannot be obtained in a mobile communication environment where data segment delay is pronounced in a wireless section. [0032]
  • SUMMARY
  • The present invention is envisioned to solve the above problems, and its object is to provide a technique that enables a reliable determination as to whether an acknowledgement received by a sender device is for an original data segment or for a retransmitted data segment. Specifically, the technique described herein does not increase the data amount and requires no redesign of a receiver device and a little redesign of a sender device. [0033]
  • To solve the above problem, the present invention provides a transmission control method for use in a communication network, comprising: assigning sequence information to each data block to be sequentially transmitted from a sender device to a receiver device; transmitting a plurality of data blocks to the receiver device after assigning the sequence information to each of the plurality of data blocks; retransmitting, from among the plurality of data blocks, a data block for which an acknowledgement signal is not received; receiving an acknowledgement signal containing sequence information of an earliest data block that has not been received by the receiver device, from among the plurality of data blocks; and determining whether the acknowledgement signal acknowledges receipt of one of the plurality of data blocks on the basis of sequence information of the retransmitted data block and the sequence information contained in the acknowledgement signal, wherein the transmitting step includes transmitting a data block subsequent to the transmitted plurality of data blocks when it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks. An example of the data block is a data segment according to TCP. Preferably, the receiver device is a mobile communication terminal performing packet communications via a mobile communication network. [0034]
  • In one preferred embodiment, the transmission control method further comprises a step of storing in a memory storage means sequence information of a data block subsequent to the retransmitted data block, wherein the determination step includes performing the determination by comparing the sequence information stored in the memory storage means with the sequence information contained in the acknowledgement signal. Preferably, it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks when a data block identified by the sequence information contained in the acknowledgement signal is a data block that follows the data block identified by the sequence information stored in the memory storage means. [0035]
  • In another preferred embodiment of the transmission control method, a number of the plurality of data blocks transmitted in the transmitting step is determined according to a window size defining a number of data blocks that may be transmitted without receiving an acknowledgement; in this case, the retransmitting step includes changing the window size to a minimum size when retransmitting a data block that is not acknowledged within a projected time, and retransmitting a number of data blocks determined according to the changed window size; and the transmitting step includes increasing the window size when it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks, such that the window size is equal to or larger than that of before the window size was changed to the minimum size in the retransmitting step, and transmitting a number of data blocks determined according to the increased window size. [0036]
  • The present invention further provides a communication device comprising: assignment means for assigning sequence information to each data block to be sequentially transmitted to a receiver device; transmission means for transmitting a plurality of data blocks to the receiver device after assigning the sequence information to each of the plurality of data blocks; retransmission means for retransmitting, from among the plurality of data blocks, a data block for which an acknowledgement signal is not received; receiving means for receiving an acknowledgement signal containing sequence information of an earliest data block that has not been received by the receiver device, from among the plurality of data blocks; and determination means for determining whether the acknowledgement signal acknowledges receipt of one of the plurality of data blocks on the basis of sequence information of the retransmitted data block and the sequence information contained in the acknowledgement signal, wherein the transmission means transmits a data block subsequent to the transmitted plurality of data blocks when it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks. [0037]
  • In one preferred embodiment, the communication device further comprises memory storage means for storing sequence information of a data block subsequent to the retransmitted data block, wherein the determination means performs the determination by comparing the sequence information stored in the memory storage means with the sequence information contained in the acknowledgement signal. Preferably, the determination means determines that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks when a data block identified by the sequence information contained in the acknowledgement signal is a data block that follows the data block identified by the sequence information stored in the memory storage means. [0038]
  • In another preferred embodiment, a number of the plurality of data blocks transmitted by the transmission means of the communication device is determined according to a window size defining a number of data blocks that may be transmitted without receiving an acknowledgement. In this case, the retransmission means changes the window size to a minimum size when retransmitting a data block that is not acknowledged within a projected time, and retransmits a number of data blocks determined according to the changed window size; and the transmission means increases the window size when it is determined that the acknowledgement signal acknowledges receipt of one of the plurality of data blocks, such that the window size is equal to or larger than that before the window size was changed to the minimum size by the retransmission means, and transmits a number of data blocks determined according to the increased window size. [0039]
  • The present invention further provides a communication system by which the transmission control method is implemented in the above described various embodiments by providing at least two devices with various means which the above communication device comprises. [0040]
  • Further, the present invention provides a program for causing a computer to execute the transmission control method in the above described various embodiments. The program may be stored in various types of recording media such as a magnetic tape, a magnetic disk, a floppy™ disk, an optical recording medium, a magneto-optical recording medium, a DVD (Digital Video Disk), a RAM, and others. [0041]
  • The present invention enables an optimum determination as to whether an acknowledgement received at a sender device pertains to an original data segment or to a retransmitted data segment without increasing the data amount of a data segment. As a result, unnecessary transmission of data segments can be prevented. Also, the present invention requires no redesign of a receiver device and a little redesign of a sender device.[0042]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram showing a configuration of a communication system [0043] 1 according to a first preferred embodiment of the present invention.
  • FIG. 2 is a block diagram showing a configuration of a [0044] server device 10 according to the embodiment.
  • FIG. 3 is a diagram illustrating a data configuration of a header appended to a data segment according to the embodiment. [0045]
  • FIG. 4 is a sequence chart illustrating an example of performing a packet communication between [0046] server device 10 and a client device 50 according to the embodiment.
  • FIG. 5 is a flow chart showing operations of transmitting and receiving data segments at [0047] server device 10.
  • FIG. 6 is a diagram for describing a window according to a second embodiment of the present invention. [0048]
  • FIG. 7 is a sequence chart showing an example of performing a packet communication between [0049] server device 10 and client device 50 according to the second embodiment.
  • FIG. 8 is a flow chart showing operations of [0050] server device 10 of transmitting and receiving data segments according to the second embodiment.
  • FIGS. 9A to [0051] 9C are a diagram for describing changes in a congestion window according to the second embodiment.
  • FIG. 10 is a sequence chart showing an example of performing a packet communication between a [0052] conventional server device 10′ and client device 50.
  • FIG. 11 is a sequence chart showing another example of performing a packet communication between a [0053] conventional server device 10′ and client device 50.
  • DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
  • Hereinafter, preferred embodiments of the present invention will be explained with reference to the attached drawings. To avoid unnecessary description, descriptions of components are not repeated. [0054]
  • A. First Embodiment [0055]
  • 1. Configuration [0056]
  • Configuration of communication system [0057] 1:
  • FIG. 1 is a block diagram illustrating a configuration of a communication system [0058] 1 according to a first embodiment of the present invention.
  • A [0059] communication terminal 40 is connected to a client device 50 and performs communications with client device 50. A mobile packet communication network 30 provides packet communication services to communication terminals 40 served by the network 30. Server device 10 performs packet communication with client device 50 via the Internet 20, mobile packet communication network 30, and communication terminal 40. It is assumed in the present embodiment that TCP (Transmission Control Protocol) is used to perform packet communications, thereby transmitting data segments.
  • Configuration of server device [0060] 10:
  • Next, a description will be given of a configuration of [0061] server device 10. Server device 10 is configured in the same way as a standard computer, and therefore, only those components relating to the present invention will be described with reference to FIG. 2.
  • A [0062] CPU 100 executes a program stored in a storage unit 105, thereby controlling each component of server device 10. CPU 100 comprises a timer 100 a, which outputs a trigger signal when a predetermined time set by CPU 100 has elapsed. Storage unit 105 comprises a RAM (Random Access Memory) 102, a ROM (Read Only Memory) 103, and a HD (Hard Disk) 104.
  • [0063] ROM 103 stores a program for causing CPU 100 to control data segment transmission. Specifically, when transmitting data to client device 50, CPU 100 divides the data into segments, appends a header to each of the divided data segments, and transmits the segments sequentially to client device 50.
  • In the present preferred embodiment, [0064] CPU 100 uses the above-described sliding window method to transmit data segments to client device 50 based on parameter variables (detailed in a second embodiment) stored in HD 104.
  • FIG. 3 shows a data configuration of a header appended to a data segment. [0065] CPU 100 allocates a sequence number to the “sequence number” field of the header shown in FIG. 3, enters other necessary information into each data area of the header, and appends the header to the data segment.
  • [0066] CPU 100, after transmitting a data segment to client device 50, waits for an acknowledgement indicating that the data segment has been received by client device 50. A data configuration of a header appended to an acknowledgement is the same as that shown in FIG. 3. In the “acknowledgement number” field of the header shown in FIG. 3, a sequence number which client device 50 expects to receive next is set by client device 50.
  • [0067] CPU 100 sets timer 100 a to have a predetermined value (hereinafter referred to as “a timeout value”) and causes timer 100 a to measure an elapsed time for server device 10 to wait for an acknowledgement. In a case where a trigger signal is output from timer 100 a, the signal indicating that the timeout value elapsed before an acknowledgement was received, CPU 100 determines that the data segment has not been received by client device 50. CPU 100 then resets a value of timer 100 a, and retransmits the data segment. When server device 10 receives an acknowledgement after the retransmission, CPU 100 determines whether the received acknowledgement corresponds to the original data segment or to the retransmitted data segment in such a way as described below.
  • In the determination process, [0068] CPU 100 first compares an acknowledgement number contained in the received acknowledgement (hereinafter referred to as “an acknowledgement number for comparison”) with an acknowledgement number which an acknowledgement transmitted in response to the retransmitted segment is expected to have (hereinafter referred to as “an expected acknowledgement number”). It should be noted that the acknowledgement number transmitted in response to the retransmitted data segment is a sequence number of a data segment that is subsequent to the retransmitted data segment. In one embodiment, CPU 100 may record in RAM 102, at the time of retransmission, the sequence number of a data segment that is subsequent to the retransmitted data segment as an expected acknowledgement number. The recorded expected acknowledgement number is read and used for comparison in the case of performing the determination process upon receiving an acknowledgement. Further, as will be detailed in the description of the second embodiment, server device 10 stores a plurality of types of parameter variables and uses them for congestion control. Among such variables, a variable snd_nxt represents a sequence number of a next data segment to be transmitted; and the value of snd_nxt indicates the sequence number of a data segment that is subsequent to the retransmitted data segment. Therefore, the value of snd_nxt may be used as an expected acknowledgement number in performing the determination, instead of recording the expected acknowledgement number in RAM 102.
  • In a case that the value of the acknowledgement number for comparison is larger than the expected acknowledgement number, it is determined that the acknowledgement corresponds to the original data segment. That is, [0069] CPU 100 determines that the original data segment has been received by client device 50, and then transmits a subsequent original data segment.
  • In a case that the value of the acknowledgement number for comparison is the same as that of the expected acknowledgement number, the determination cannot be made whether the acknowledgement corresponds to the original data segment or to the retransmitted data segment. Therefore, [0070] CPU 100 assumes that the acknowledgement pertains to the retransmitted data segment, and then determines whether there is any data segment for retransmission that is subsequent to the retransmitted data segment. In a case that there is such a segment, the subsequent data segment for retransmission is transmitted; and when there is no such a segment, a subsequent original data segment is transmitted.
  • Configuration of client device [0071] 50:
  • [0072] Client device 50 has the configuration of a generally used computer, and therefore description will be given only of functions of the device 50 that specifically relate to the present preferred embodiment.
  • [0073] Client device 50, upon receiving a data segment from server device 10, transmits to server device 10 an acknowledgement informing that the data segment has been received. Specifically, a sequence number indicating a sequential position subsequent to the data segment is set as the acknowledgement number contained in the acknowledgement for transmission to server device 10.
  • It is assumed here that a wireless communication environment deteriorates between [0074] communication terminal 40 and mobile packet communication network 30 while client device 50 is performing a packet communication with server device 10. In such a case, client device 50 sequentially receives the data segments transmitted from server device 10 with delay. In a case where an interval from when a first data segment is received until a second data segment is received is shorter than a predetermined time period, an acknowledgement for the second data segment only is transmitted, thereby informing server device 10 that two data segments have been received. Specifically, a sequence number indicating a sequential position that is subsequent to the second data segment is set as the acknowledgement number of the acknowledgement for transmission to server device 10.
  • 2. Operation [0075]
  • Next, an operation of the present preferred embodiment will be described. [0076]
  • FIG. 4 is a sequence chart showing an example case where a packet communication is performed between [0077] server device 10 and client device 50. FIG. is a flow chart illustrating operations of transmitting and receiving data segments at server device 10 according to the present embodiment. It is assumed that in the present embodiment, the sliding window method is used to transmit data segments. In the second embodiment, the initial window size is set as three, and the amount of data segments that can be received by client device 50 is sufficiently large relative to the window size set by server device 10. For simplicity, it is assumed that the window size is fixed as three, and that the window size is not increased for congestion control. In a case of a timeout, server device 10 records a window size occurring immediately before the retransmission timeout is detected.
  • In FIG. 4, data segments having [0078] sequence number 0, 1000, and 2000, respectively (original data segments S1, S2, and S3), are transmitted from server device 10 to client device 50.
  • In the example shown in the figure, a wireless communication environment between [0079] communication terminal 40 and mobile packet communication network 30 has deteriorated, and transmission of the original data segments S1, S2, and S3 has been suspended. When the wireless communication environment improves and communication is restored, the original data segments S1, S2, and S3 that have been residing in the network 30 are transmitted to client device 50.
  • On the other hand, [0080] client device 50 sequentially receives original data segments S1, S2, and S3 with a delay. In this example, an interval from when the original data segment is received until the original data segment S2 is received is shorter than a predetermined time, and an acknowledgement having an acknowledgement number 2000 is transmitted to server device 10 as an acknowledgement for the original data segments S1 and S2.
  • Now, description will be given of operations performed by [0081] server device 10 with reference to FIG. 5. In Step S300, CPU 100 of server device 10 transmits the original data segments S1, S2, and S3, and then waits for an acknowledgement transmitted from client device 50 in response to receipt of the original data segment S1. In waiting for the acknowledgement, CPU 100 sets a timeout value at timer 100 a to cause timer 100 a to measure an elapsed time (Step S301).
  • [0082] CPU 100 then determines whether any acknowledgment is received (Step S302). When it is determined “No” in Step S302, CPU 100 then determines whether a timeout by timer 100 a occurs (Step S303). In a case that it is determined “No” in Step S303, the routine returns to Step S302. The determination of Steps S302 and S303 is repeated by CPU 100 before a timeout occurs as far as no acknowledgement is received.
  • It is further assumed here that the elapsed time reaches a timeout value before the acknowledgement R[0083] 2 is received because the arrival of the data segments S1 to S3 is delayed. In this case, a trigger signal is output from timer 100 a after an elapsed time measured by timer 100 a reaches a timeout value without receiving an acknowledgement (Step S302; No, Step S303; Yes). CPU 100 then resets timer 100 a, and proceeds to Step S304.
  • In Step S[0084] 304, CPU 100 determines that the original data segment S1 has not been received by client device 50, and retransmits a data segment having sequence number 0 (the retransmitted data segment S′1 in FIG. 4) to client device 50. The window size is reduced to a minimum value due to the timeout, and only one data segment is retransmitted here. CPU 100 further sets a timeout value at timer 100 a to cause it to measure an elapsed time.
  • [0085] CPU 100 then determines whether any acknowledgment is received (Step S305), and in a case that it is determined “No” in Step S305, CPU 100 then determines whether a timeout by timer 100 a occurs (Step S306). When the determination of Step S306 is “No,” the routine returns to Step S305. After this, the determination of Steps S305 and S306 is repeated by CPU 100 before a timeout occurs as far as no acknowledgement is received.
  • It is assumed that [0086] CPU 100 subsequently receives the acknowledgment R2 before the timeout value is reached, i.e., before a trigger signal is output from timer 100 a, where it is determined “Yes” in Step S305, and the routine proceeds to Step S307.
  • In Step S[0087] 307, CPU 100 resets timer 100 a. CPU 100 then compares the acknowledgement number 2000 contained in the acknowledgement R2 (the acknowledgement number for comparison) with the expected acknowledgement number 1000 that is expected to be contained in an acknowledgement transmitted in response to receipt of the retransmitted data segment transmitted in Step S304; the expected acknowledgement number having been stored in RAM 102 at the time of the retransmission. Since, in the example, the acknowledgement number for comparison is larger than the expected acknowledgement number, CPU 100 determines that the acknowledgement R2 corresponds to the original data segments S1 and S2. In other words, CPU 100 determines that the original data segments S1 and S2 are received by client device 50 without being lost. As a result, the window size is restored to “three” as of before the timeout by referring to the stored information in RAM 102, and the window slides by the original data segments S1 and S2. As a result, two data segments subsequent to the transmitted data segment S3 can now be transmitted.
  • In Step S[0088] 309, CPU 100 of server device 10 transmits two original data segments S4 and S5 that are subsequent to the original data segment S3. In FIG. 4, a process corresponding to Step S309 is shown wherein server device 10 transmits the original data segments S4 and S5 to client device 50. The routine then returns to Step S301, and timer 100 a starts measuring an elapsed time.
  • Subsequently, [0089] CPU 100 repeats the determination of Steps S302 and S303 before a timeout occurs as far as no acknowledgement is received.
  • While [0090] server device 10 is performing the above mentioned processes, the original data segment S3 is received by client device 50. Then, an acknowledgement R3 having an acknowledgement number 3000 is transmitted to server device 10 in response to the original data segment S3.
  • In FIG. 5, when acknowledgement R[0091] 3 having an acknowledgment number 3000 reaches server device 10, it is determined by CPU 100 of server device 10 “Yes” in Step S302. As a result, the window slides further by one data segment, and server device 10 can now transmit one data segment that is subsequent to the last data segment S5 from among previously transmitted data segments. In Step S300, CPU 100 transmits an original data segment S6 having subsequent sequence number 5000.
  • In FIG. 4, in a process corresponding to Step S[0092] 302, server device 10 transmits the original data segment S6 to client device 50.
  • The foregoing is an explanation of how data segments are transmitted from [0093] server device 10 to client device 50.
  • B. Second Embodiment [0094]
  • Next, description will be given of another example of performing packet communications between [0095] server device 10 and client device 50. Hereinafter, a description of the same components as the first embodiment will be omitted. Also, like components are described with like reference numerals being assigned.
  • [0096] 1. Configuration
  • Configuration of server device [0097] 10:
  • A description will be given only of those configurations relating to the present embodiment. [0098]
  • [0099] ROM 103 of server device 10 stores a program for causing CPU 100 to perform a data segment transmission control process. The process will be described in detail in the following, and it should be noted that those portions that are the same as those of the first embodiment will not be described here.
  • In the present embodiment, in transmitting data segments to [0100] client device 50, CPU 100 performs congestion control in addition to utilizing the sliding window method described in relation to the first embodiment, for controlling a data flow of data segments. Specifically, CPU 100 increases or decreases a window size, i.e., a number of data segments that can be transmitted without acknowledgement. A change in window size is initiated each time receipt of a transmitted data segment is acknowledged. It is to be noted also that ROM 103 stores in advance information on control of congestion window.
  • In the following description, window congestion control will be detailed. [0101] Server device 10 according to the present embodiment stores in HD 104 at least five parameter variables, snd_max, snd_nxt, snd_una, snd_wnd, and snd_cwnd. Congestion control is performed by transmitting a number of data segments identified on the basis of those parameter variables. FIG. 6 is a diagram describing the interrelations of these five parameter variables. snd_max shows a sequence number (sequence number 5000 in FIG. 6) of an original data segment to be transmitted; snd_nxt shows a next sequence number (sequence number 5000 in FIG. 6) of a data segment server device 10 will transmit or retransmit; snd_una shows the least recent unacknowledged sequence number (sequence number 2000 in FIG. 6) among data segments that have already been transmitted.
  • snd_cwnd shows a number of data segments that may be transmitted by [0102] server device 10 without receipt of an acknowledgement for previously transmitted data segments. One segment is represented in a unit called Maximum Segment Size (hereinafter referred to as “MSS”), where the default size of 1 MSS is determined as 1,460 bytes; and snd_cwnd has, for example, 3 MSS as its initial value. CPU 100 of Server device 10 increases a value of snd_cwnd using a “Slow Start” algorithm where a number of data segments transmitted is incremented exponentially until the value reaches a predetermined threshold (e.g., 65,535 bytes) every time an acknowledgement for a transmitted data segment is received; cnd_cwnd is a value controlled by server device 10 and represents a “congestion window size.”
  • In contrast, snd_wnd represents an advertised window size notified from a [0103] client device 50; and the value of the advertised window size indicates an available buffer receiving space of client device 50, and is represented in bytes.
  • [0104] CPU 100 of server device 10 determines a minimum of advertised window size (snd_wnd) and congestion window size (snd_cwnd) as a window size for transmission, on the basis of which window control is performed. Consequently, a transmission window size never exceeds an advertised window size, and a number of data segments transmitted to client device 50 never exceeds an available buffer space of client device 50. In the present embodiment, it is assumed that the advertised window size is of a sufficiently larger size than that of a congestion window size; and for the sake of the explanation, a transmission window size is referred to as a “congestion window size.”
  • In the present embodiment, when retransmission timeout is detected, [0105] CPU 100 of server device 10 first sets the value of snd_cwnd with 1 MSS, and records in RAM 102 the value of snd_cwnd occurring immediately before the retransmission timeout is detected. CPU 100 substitutes the value of snd_nxt with that of snd_una, and then retransmits a data segment designated by snd_nxt. Each time an acknowledgement is received for a retransmitted data segment, the value set in snd_cwnd is incremented by 1 MSS according to the above described Slow Start algorithm.
  • In the present embodiment, the determination process (Step S[0106] 307 of FIG. 5; Step S307 of FIG. 8 in the second embodiment) described in the first embodiment is performed when an acknowledgement is received following data segment retransmission. As a result, in a case where the received acknowledgement corresponds to an original data segment, the congestion window size is restored to that immediately before retransmission. Specifically, the value of the congestion window size is updated with the value of snd_cwnd that has been stored in RAM 102 at the time of detecting the retransmission timeout. At the same time, CPU 100 replaces the value of snd_nxt with the value of snd_max, and the data transmission is started from a data segment designated by snd_nxt.
  • In the present embodiment, [0107] CPU 100 performs the described congestion control, whereby a flow of data as of before the timeout can be quickly recovered.
  • 2. Operation [0108]
  • FIG. 7 is a sequence chart showing another example of performing packet communication between [0109] server device 10 and client device 50. FIG. 8 is a flow chart showing transmission and receipt operations of data segments by server device 10 according to the present embodiment. FIGS. 9A to 9C are schematic diagrams showing changes in the congestion window size. It is to be noted that the same reference numerals denote the same steps described in the first embodiment, and description thereof is therefore omitted.
  • In FIG. 7, data segments having [0110] sequence number 0, 1000, 2000, 3000, and 4000, respectively, (original data segments S11, S12, S13, S14, S15) are transmitted from server device 10 to client device 50. The congestion window size snd_cwnd applied at this time is 5 MSS. As shown in FIG. 9A, the least recent unacknowledged sequence number 0 (S11) is set as a value of snd_una. The next original sequence number to be transmitted 5000 is set as snd_max; and sequence number 5000 of a next data segment to be transmitted (S16) is set as snd_nxt.
  • In the example shown in the figure, wireless communication between [0111] terminal 40 and mobile packet communication network 30 deteriorates, as a result of which transmission of the original data segments S11 to S15 is suspended. When the wireless conditions improve and communication is restored, the original data segments S11 to S15 are successively transmitted to client device 50. Client device 50 then successively receives the original data segments S 11 to S15 with significant delay.
  • Upon receiving the original data segment S[0112] 11, client device 50 transmits an acknowledgement R 11 having acknowledgement number 1000 as a response to receipt of the original data segment S11.
  • It is further assumed that, due to the delayed reception of the data segments S[0113] 11 to S15, a timeout occurred at server device 10 before receipt of acknowledgement R11. That is, CPU 100 receives no acknowledgement even if a trigger signal is output from timer 10 a after the timeout value is exceeded after Step S301 (Step S302; No, Step S303; Yes). As shown in FIG. 9A, upon timeout, server device 10 updates the congestion window size with 1 MSS, and replaces the value of snd_nxt with the value of snd_una.
  • Next in Step S′[0114] 304, CPU 100 determines that the original data segment S11 has not been received by client device 50. CPU 100 then retransmits to client device 50 a data segment (a retransmitted data segment S′11 in FIG. 7) having sequence number 0 designated by the value of snd_nxt. CPU 100 also sets a timeout value with timer 100 a to cause timer 100 a to measure the timeout value.
  • Subsequently, [0115] CPU 100 of server device 10 receives the acknowledgement R11 before a trigger signal is output from timer 100 a before the timer expires, and the routine then proceeds to Step S307.
  • Next, operation of [0116] server device 10 corresponding to the above steps will be described with reference to FIG. 8.
  • In Step S[0117] 300, CPU 100 of server device 10 transmits the five original data segments S11-S15 with the congestion window size of 5 MSS. CPU 100 then performs the processes of S301 to S303, and the routine then proceeds to Step S′304. In Step S′304, CPU 100 changes the congestion window size to 1 MSS for congestion control, and retransmits a data segment having sequence number 0 (retransmitted data segment S′11). Subsequently, server device 10 receives the acknowledgement R11 (Step S305; Yes), and the process of Step S307 is performed.
  • In Step S[0118] 307, CPU 100 compares the acknowledgement number 1000 (acknowledgement number for comparison) contained in acknowledgement R11 with expected acknowledgement number (1000) for the retransmitted data segment transmitted in Step S304. The value of the expected acknowledgement number may be obtained by referring to the value of snd_nxt; and alternatively, the stored information of RAM 102 may be referred to as in the first embodiment. In this case, the acknowledgement number for comparison and the expected acknowledgement number are identical; and it is not possible to determine whether the acknowledgement R11 corresponds to the original data segment S11 or the retransmitted data segment. Therefore, CPU 100 estimates that the acknowledgement R11 corresponds to the retransmitted data segment S′11. That is, it is determined that the original data segment S11 has not been received by client device 50 due to loss of a data segment, and the routine proceeds to Step S308.
  • In Step S[0119] 308, it is determined whether any data segment for retransmission exists subsequent to the retransmitted data segment S′11. The value of snd_nxt at this time is the sequence number 1000 of a transmitted data segment S12 (see FIG. 9A). Therefore, it is determined that a data segment for retransmission does exist, and the routine then proceeds to Step S′304. In Step S′304, the congestion window size is increased to 2 MSS since the acknowledgement R11 is received, whereby congestion control is performed. Two data segments having subsequent sequence numbers 1000 and 2000 (S′12 and S′13) are then retransmitted. CPU 100 sets timer 100 a at the same time.
  • In FIG. 7, retransmitted data segments S′[0120] 12 and S′13 are transmitted from server device 10.
  • On the other hand, [0121] client device 50 transmits acknowledgements having acknowledgement numbers 2000, 3000, and 4000, respectively, in response to receipt of the original data segments S12, S13, and S14. It is assumed here that the acknowledgements R12 and R13 have been lost due to a deterioration in wireless communication. As a result, the acknowledgement R14 is transmitted to server device 10.
  • In FIG. 8, [0122] CPU 100 receives the acknowledgement R14 (Step S305; Yes) before an elapsed time measured by timer 100 a exceeds a timeout value. The routine then proceeds to Step S307.
  • In Step S[0123] 307, CPU 100 compares acknowledgement number 4000 (acknowledgement number for comparison) contained in the acknowledgement R14 with an expected acknowledgement number for a retransmitted data segment S′13 (3000). Since the acknowledgement number for comparison is larger than the expected acknowledgement number, it is determined that the original data segments S11 to S14 have been safely received by client device 50 without being lost. The routine then proceeds to Step S′309.
  • In Step S′[0124] 309, CPU 100 refers to the stored information in RAM 102 and restores the congestion window size to that existing immediately before the retransmission timeout. Specifically, the congestion window size is restored to 5 MSS stored in RAM 102, and is further incremented by 1 MSS as a result of receipt of the acknowledgement R14, thus resulting in 6 MSS in total. As shown in FIG. 9B, the value of snd_nxt is replaced with the value of snd_max. Further, since the original data segment S15 has not been acknowledged, the value of snd_una is changed to 4000, which is the sequence number of the original data segment S15. Provided that the congestion window is 6 MSS starting from the value of snd_una, 5 original data segments S16 to S20 that have not been transmitted and that are under the congestion window are transmitted sequentially.
  • In FIG. 8, the original data segments S[0125] 16, S17, S18, S19, and S20 having sequence numbers 5000, 6000, 7000, 8000, and 9000, respectively, are transmitted from server device 10 to client device 50.
  • While transmitting these original data segments, [0126] CPU 100 receives an acknowledgement R15. CPU 100 then determines that the original data segment S15 has been received by client device 50, and changes the value of snd_una to the sequence number 5000 corresponding to the original data segment S16. The congestion window size is incremented by 1 MSS, resulting in 7 MSS (refer to FIG. 9C). As a result, subsequent original data segments S21 and S22 can be transmitted, and these data segments are transmitted from server device 10 to client device 50.
  • The configuration described above prevents unnecessary retransmission of a data segment, and also any unnecessary reduction in a transmission rate of data segments. Further, since a transmission rate is restored to a value determined from that existing immediately before a retransmission timeout, a reduced transmission rate caused by unnecessary retransmission can be quickly corrected. [0127]
  • C. Modifications [0128]
  • In the foregoing, a preferred embodiment of the present invention has been described. The present invention may be implemented in various other embodiments without departing from the main characteristic of the invention. Following are example modifications. [0129]
  • In the above preferred embodiments, a packet communication is performed according to TCP. However, the present invention may be applied to a communication protocol for packet communications other than TCP if it performs retransmission control of a data block or a data segment. In this case, data segments may be transmitted using a window that is similar to a sliding window method used in TCP. [0130]
  • A separate server device may replace the function of determination performed by [0131] server device 10 as to which data segment corresponds to a received acknowledgement. In this case, server device 10, upon receiving an acknowledgement after transmitting a data segment for retransmission, inquires at a separate server device whether the acknowledgement corresponds to an original data segment or to a retransmitted data segment. The separate service device performs the determination and transmits a result of the determination to server device 10. Server device 10 is then able to determine which data segment corresponds to the acknowledgement on the basis of the transmitted result of the determination.
  • In the above embodiment, [0132] client device 50 performs a packet communication with server device 10 through communication terminal 40. However, client device 50 may comprise a wireless communication function and perform a packet communication with server device 10 through mobile packet communication network 30, the Internet 20, and not through communication terminal 40.

Claims (8)

1. A transmission control method for use in a communication network, comprising:
assigning sequence information to each data block to be sequentially transmitted from a sender device to a receiver device;
transmitting a plurality of data blocks to said receiver device after assigning said sequence information to each of said plurality of data blocks;
retransmitting, from among said plurality of data blocks, a data block for which an acknowledgement signal is not received;
receiving an acknowledgement signal containing sequence information of an earliest data block that has not been received by said receiver device, from among said plurality of data blocks; and
determining whether said acknowledgement signal acknowledges receipt of one of said plurality of data blocks on the basis of sequence information of said retransmitted data block and said sequence information contained in said acknowledgement signal,
wherein said transmitting step includes transmitting a data block subsequent to said transmitted plurality of data blocks when it is determined that said acknowledgement signal acknowledges receipt of one of said plurality of data blocks.
2. A transmission control method according to claim 1,
wherein a number of said plurality of data blocks transmitted in said transmitting step is determined according to a window size defining a number of data blocks that may be transmitted without receiving an acknowledgement;
wherein said retransmitting step includes changing said window size to a minimum size when retransmitting a data block that is not acknowledged within a projected time, and retransmitting a number of data blocks determined according to the changed window size; and
wherein said transmitting step includes increasing said window size when it is determined that said acknowledgement signal acknowledges receipt of one of said plurality of data blocks, such that said window size is equal to or larger than that of before said window size was changed to said minimum size in said retransmitting step, and transmitting a number of data blocks determined according to the increased window size.
3. A communication device comprising:
assignment means for assigning sequence information to each data block to be sequentially transmitted to a receiver device;
transmission means for transmitting a plurality of data blocks to said receiver device after assigning said sequence information to each of said plurality of data blocks;
retransmission means for retransmitting, from among said plurality of data blocks, a data block for which an acknowledgement signal is not received;
receiving means for receiving an acknowledgement signal containing sequence information of an earliest data block that has not been received by said receiver device, from among said plurality of data blocks; and
determination means for determining whether said acknowledgement signal acknowledges receipt of one of said plurality of data blocks on the basis of sequence information of said retransmitted data block and said sequence information contained in said acknowledgement signal,
wherein said transmission means transmits a data block subsequent to said transmitted plurality of data blocks when it is determined that said acknowledgement signal acknowledges receipt of one of said plurality of data blocks.
4. A communication device according to claim 3, further comprising memory storage means for storing sequence information of a data block subsequent to said retransmitted data block,
wherein said determination means performs said determination by comparing said sequence information stored in said memory storage means with said sequence information contained in said acknowledgement signal.
5. A communication device according to claim 4,
wherein said determination means determines that said acknowledgement signal acknowledges receipt of one of said plurality of data blocks when a data block identified by said sequence information contained in said acknowledgement signal is a data block that follows said data block identified by said sequence information stored in said memory storage means.
6. A communication device according to any one of claims 3-5,
wherein a number of said plurality of data blocks transmitted by said transmission means is determined according to a window size defining a number of data blocks that may be transmitted without receiving an acknowledgement;
wherein said retransmission means changes said window size to a minimum size when retransmitting a data block that is not acknowledged within a projected time, and retransmits a number of data blocks determined according to the changed window size; and
wherein said transmission means increases said window size when it is determined that said acknowledgement signal acknowledges receipt of one of said plurality of data blocks, such that said window size is equal to or larger than that before said window size was changed to said minimum size by said retransmission means, and transmits a number of data blocks determined according to the increased window size.
7. A communication system comprising:
assignment means for assigning sequence information to each data block to be sequentially transmitted from a sender device to a receiver device;
transmission means for transmitting a plurality of data blocks to said receiver device after assigning said sequence information with each of said plurality of data blocks;
retransmission means for retransmitting, from among said plurality of data blocks, a data block for which an acknowledgement is not received;
receiving means for receiving an acknowledgement signal containing sequence information of an earliest data block that has not been received by said receiver device, from among said plurality of data blocks; and
determination means for determining whether said acknowledgement signal acknowledges receipt of one of said plurality of data blocks on the basis of sequence information of said retransmitted data block and said sequence information contained in said acknowledgement signal,
wherein said transmission means transmits a data block subsequent to said transmitted plurality of data blocks when it is determined that said acknowledgement signal acknowledges receipt of one of said plurality of data blocks.
8. A program product for causing a computer to execute:
a process of assigning sequence information to each data block to be sequentially transmitted from a sender device to a receiver device;
a process of transmitting a plurality of data blocks to said receiver device after assigning said sequence information to each of said plurality of data blocks;
a process of retransmitting, from among said plurality of data blocks, a data block for which an acknowledgement signal is not received;
a process of receiving an acknowledgement signal containing sequence information of an earliest data block that has not been received by said receiver device, from among said plurality of data blocks; and
a process of determining whether said acknowledgement signal acknowledges receipt of one of said plurality of data blocks on the basis of sequence information of said retransmitted data block and said sequence information contained in said acknowledgement signal,
wherein said transmitting process includes transmitting a data block subsequent to said transmitted plurality of data blocks when it is determined that said acknowledgement signal acknowledges receipt of one of said plurality of data blocks.
US10/744,960 2002-12-27 2003-12-22 Transmission control method and system Expired - Fee Related US7505412B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002382222 2002-12-27
JP2002-382222 2002-12-27

Publications (2)

Publication Number Publication Date
US20040190540A1 true US20040190540A1 (en) 2004-09-30
US7505412B2 US7505412B2 (en) 2009-03-17

Family

ID=32463667

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/744,960 Expired - Fee Related US7505412B2 (en) 2002-12-27 2003-12-22 Transmission control method and system

Country Status (4)

Country Link
US (1) US7505412B2 (en)
EP (1) EP1434380B1 (en)
CN (1) CN1244211C (en)
DE (1) DE60307032T2 (en)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050157696A1 (en) * 2004-01-15 2005-07-21 Sony Ericsson Mobile Communications Japan, Inc. Data transmission method and data transmission apparatus
US20050165923A1 (en) * 2003-12-26 2005-07-28 Ntt Docomo, Inc. Transmitter device and relay device for performing data transmission control
US20050185579A1 (en) * 2004-02-20 2005-08-25 Curitel Communications, Inc. Method and apparatus for performing data communication between mobile communication terminal and wireline communication server
US20060059399A1 (en) * 2004-09-16 2006-03-16 Lucent Technologies, Inc. Determining a number of automatic request retransmissions based on block size
US20060215563A1 (en) * 2005-03-22 2006-09-28 Intel Corporation Method and apparatus for delayed recovery for block acknowledgement bursting in a wireless network
US20080052589A1 (en) * 2006-08-22 2008-02-28 Fujitsu Limited Data retransmission method, communications device, and computer program
US20090122696A1 (en) * 2004-02-17 2009-05-14 International Business Machines Corporation Data Transfer in a Messaging System
US20100287296A1 (en) * 2009-05-08 2010-11-11 Canon Kabushiki Kaisha Network streaming of a single data stream simultaneously over multiple physical interfaces
US20120099534A1 (en) * 2007-08-10 2012-04-26 Fujitsu Limited Communication apparatus, transmitting method and receiving method
US20130064140A1 (en) * 2011-09-14 2013-03-14 Michael L. Ziegler Node interface indicators
KR101345526B1 (en) 2007-10-17 2013-12-27 한국과학기술원 Apparatus and method for transmitting/receiving data in a communication system
US20160182388A1 (en) * 2014-12-19 2016-06-23 Fujitsu Limited Communication device, relay device, and communication method
US20160337219A1 (en) * 2015-05-15 2016-11-17 Sr Technologies, Inc. System and method for long range wireless local area network communications
EP3629505A1 (en) * 2018-09-25 2020-04-01 Panasonic Intellectual Property Corporation of America User equipment and base station involved in transmission of data
EP3609107A4 (en) * 2017-05-05 2020-04-22 Huawei Technologies Co., Ltd. Data transmission method, apparatus, and system
US11750333B2 (en) 2021-10-06 2023-09-05 Sr Technologies, Inc. System and method for long range wireless local area network communications

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882412B2 (en) * 2004-10-05 2011-02-01 Sanjiv Nanda Enhanced block acknowledgement
US20060168287A1 (en) * 2004-12-07 2006-07-27 Glauert Timothy H Rotating event buffer
US7948909B2 (en) * 2006-06-30 2011-05-24 Embarq Holdings Company, Llc System and method for resetting counters counting network performance information at network communications devices on a packet network
US8000318B2 (en) * 2006-06-30 2011-08-16 Embarq Holdings Company, Llc System and method for call routing based on transmission performance of a packet network
US8194643B2 (en) * 2006-10-19 2012-06-05 Embarq Holdings Company, Llc System and method for monitoring the connection of an end-user to a remote network
US8488447B2 (en) 2006-06-30 2013-07-16 Centurylink Intellectual Property Llc System and method for adjusting code speed in a transmission path during call set-up due to reduced transmission performance
US8289965B2 (en) 2006-10-19 2012-10-16 Embarq Holdings Company, Llc System and method for establishing a communications session with an end-user based on the state of a network connection
US8477614B2 (en) 2006-06-30 2013-07-02 Centurylink Intellectual Property Llc System and method for routing calls if potential call paths are impaired or congested
US9094257B2 (en) 2006-06-30 2015-07-28 Centurylink Intellectual Property Llc System and method for selecting a content delivery network
US8717911B2 (en) 2006-06-30 2014-05-06 Centurylink Intellectual Property Llc System and method for collecting network performance information
US7940735B2 (en) * 2006-08-22 2011-05-10 Embarq Holdings Company, Llc System and method for selecting an access point
US8549405B2 (en) 2006-08-22 2013-10-01 Centurylink Intellectual Property Llc System and method for displaying a graphical representation of a network to identify nodes and node segments on the network that are not operating normally
US7889660B2 (en) * 2006-08-22 2011-02-15 Embarq Holdings Company, Llc System and method for synchronizing counters on an asynchronous packet communications network
US8130793B2 (en) 2006-08-22 2012-03-06 Embarq Holdings Company, Llc System and method for enabling reciprocal billing for different types of communications over a packet network
US8144586B2 (en) * 2006-08-22 2012-03-27 Embarq Holdings Company, Llc System and method for controlling network bandwidth with a connection admission control engine
US8189468B2 (en) 2006-10-25 2012-05-29 Embarq Holdings, Company, LLC System and method for regulating messages between networks
US8224255B2 (en) * 2006-08-22 2012-07-17 Embarq Holdings Company, Llc System and method for managing radio frequency windows
US8194555B2 (en) * 2006-08-22 2012-06-05 Embarq Holdings Company, Llc System and method for using distributed network performance information tables to manage network communications
US8223655B2 (en) 2006-08-22 2012-07-17 Embarq Holdings Company, Llc System and method for provisioning resources of a packet network based on collected network performance information
US8125897B2 (en) * 2006-08-22 2012-02-28 Embarq Holdings Company Lp System and method for monitoring and optimizing network performance with user datagram protocol network performance information packets
US20080049629A1 (en) * 2006-08-22 2008-02-28 Morrill Robert J System and method for monitoring data link layer devices and optimizing interlayer network performance
US8238253B2 (en) 2006-08-22 2012-08-07 Embarq Holdings Company, Llc System and method for monitoring interlayer devices and optimizing network performance
US8619600B2 (en) 2006-08-22 2013-12-31 Centurylink Intellectual Property Llc System and method for establishing calls over a call path having best path metrics
US9479341B2 (en) 2006-08-22 2016-10-25 Centurylink Intellectual Property Llc System and method for initiating diagnostics on a packet network node
US8407765B2 (en) 2006-08-22 2013-03-26 Centurylink Intellectual Property Llc System and method for restricting access to network performance information tables
US8743703B2 (en) 2006-08-22 2014-06-03 Centurylink Intellectual Property Llc System and method for tracking application resource usage
US7808918B2 (en) 2006-08-22 2010-10-05 Embarq Holdings Company, Llc System and method for dynamically shaping network traffic
US8228791B2 (en) 2006-08-22 2012-07-24 Embarq Holdings Company, Llc System and method for routing communications between packet networks based on intercarrier agreements
US8576722B2 (en) 2006-08-22 2013-11-05 Centurylink Intellectual Property Llc System and method for modifying connectivity fault management packets
US8537695B2 (en) 2006-08-22 2013-09-17 Centurylink Intellectual Property Llc System and method for establishing a call being received by a trunk on a packet network
US8531954B2 (en) 2006-08-22 2013-09-10 Centurylink Intellectual Property Llc System and method for handling reservation requests with a connection admission control engine
US8199653B2 (en) * 2006-08-22 2012-06-12 Embarq Holdings Company, Llc System and method for communicating network performance information over a packet network
US8098579B2 (en) * 2006-08-22 2012-01-17 Embarq Holdings Company, LP System and method for adjusting the window size of a TCP packet through remote network elements
US8015294B2 (en) * 2006-08-22 2011-09-06 Embarq Holdings Company, LP Pin-hole firewall for communicating data packets on a packet network
US8750158B2 (en) 2006-08-22 2014-06-10 Centurylink Intellectual Property Llc System and method for differentiated billing
US8144587B2 (en) 2006-08-22 2012-03-27 Embarq Holdings Company, Llc System and method for load balancing network resources using a connection admission control engine
US8274905B2 (en) 2006-08-22 2012-09-25 Embarq Holdings Company, Llc System and method for displaying a graph representative of network performance over a time period
US8064391B2 (en) * 2006-08-22 2011-11-22 Embarq Holdings Company, Llc System and method for monitoring and optimizing network performance to a wireless device
US8307065B2 (en) * 2006-08-22 2012-11-06 Centurylink Intellectual Property Llc System and method for remotely controlling network operators
US7684332B2 (en) * 2006-08-22 2010-03-23 Embarq Holdings Company, Llc System and method for adjusting the window size of a TCP packet through network elements
US8223654B2 (en) * 2006-08-22 2012-07-17 Embarq Holdings Company, Llc Application-specific integrated circuit for monitoring and optimizing interlayer network performance
US7843831B2 (en) 2006-08-22 2010-11-30 Embarq Holdings Company Llc System and method for routing data on a packet network
US8111692B2 (en) * 2007-05-31 2012-02-07 Embarq Holdings Company Llc System and method for modifying network traffic
US8068425B2 (en) 2008-04-09 2011-11-29 Embarq Holdings Company, Llc System and method for using network performance information to determine improved measures of path states
US8325623B1 (en) 2010-02-16 2012-12-04 Google Inc. System and method for reducing latency during data transmissions over a network
CN104734985A (en) * 2013-12-23 2015-06-24 腾讯数码(天津)有限公司 Data receiving flow control method and system
CN117279040A (en) 2017-08-10 2023-12-22 三星电子株式会社 Method and apparatus for data processing in a wireless communication system
WO2022116178A1 (en) * 2020-12-04 2022-06-09 华为技术有限公司 Tcp mss adjustment method, apparatus, and system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4839891A (en) * 1987-07-24 1989-06-13 Nec Corporation Method for controlling data flow
US5245616A (en) * 1989-02-24 1993-09-14 Rosemount Inc. Technique for acknowledging packets
US20020165973A1 (en) * 2001-04-20 2002-11-07 Doron Ben-Yehezkel Adaptive transport protocol
US6493316B1 (en) * 1998-09-30 2002-12-10 Nortel Networks Limited Apparatus for and method of managing bandwidth for a packet based connection
US6901081B1 (en) * 1999-08-17 2005-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Method and device for determining a time-parameter

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757248B1 (en) 2000-06-14 2004-06-29 Nokia Internet Communications Inc. Performance enhancement of transmission control protocol (TCP) for wireless network applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4839891A (en) * 1987-07-24 1989-06-13 Nec Corporation Method for controlling data flow
US5245616A (en) * 1989-02-24 1993-09-14 Rosemount Inc. Technique for acknowledging packets
US6493316B1 (en) * 1998-09-30 2002-12-10 Nortel Networks Limited Apparatus for and method of managing bandwidth for a packet based connection
US6901081B1 (en) * 1999-08-17 2005-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Method and device for determining a time-parameter
US20020165973A1 (en) * 2001-04-20 2002-11-07 Doron Ben-Yehezkel Adaptive transport protocol

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050165923A1 (en) * 2003-12-26 2005-07-28 Ntt Docomo, Inc. Transmitter device and relay device for performing data transmission control
US7680141B2 (en) * 2003-12-26 2010-03-16 Ntt Docomo, Inc. Transmitter device and relay device for performing data transmission control
US20050157696A1 (en) * 2004-01-15 2005-07-21 Sony Ericsson Mobile Communications Japan, Inc. Data transmission method and data transmission apparatus
US7619976B2 (en) * 2004-01-15 2009-11-17 Sony Ericsson Mobile Communications Japan, Inc. Data transmission method and data transmission apparatus
US8289838B2 (en) * 2004-02-17 2012-10-16 International Business Machines Corporation Data transfer in a messaging system
US20090122696A1 (en) * 2004-02-17 2009-05-14 International Business Machines Corporation Data Transfer in a Messaging System
US20050185579A1 (en) * 2004-02-20 2005-08-25 Curitel Communications, Inc. Method and apparatus for performing data communication between mobile communication terminal and wireline communication server
US8031597B2 (en) * 2004-02-20 2011-10-04 Curitel Communications, Inc. Method and apparatus for performing data communication between mobile communication terminal and wireline communication server
US7873070B2 (en) * 2004-09-16 2011-01-18 Alcatel-Lucent Usa Inc. Determining a number of automatic request retransmissions based on block size
US20060059399A1 (en) * 2004-09-16 2006-03-16 Lucent Technologies, Inc. Determining a number of automatic request retransmissions based on block size
US20060215563A1 (en) * 2005-03-22 2006-09-28 Intel Corporation Method and apparatus for delayed recovery for block acknowledgement bursting in a wireless network
US9325456B2 (en) * 2005-03-22 2016-04-26 Intel Corporation Method and apparatus for delayed recovery for block acknowledgement bursting in a wireless network
US20080052589A1 (en) * 2006-08-22 2008-02-28 Fujitsu Limited Data retransmission method, communications device, and computer program
US20120099534A1 (en) * 2007-08-10 2012-04-26 Fujitsu Limited Communication apparatus, transmitting method and receiving method
US9288014B2 (en) 2007-08-10 2016-03-15 Fujitsu Limited Communication apparatus, transmitting method and receiving method
US8619679B2 (en) * 2007-08-10 2013-12-31 Fujitsu Limited Communication apparatus, transmitting method and receiving method
KR101345526B1 (en) 2007-10-17 2013-12-27 한국과학기술원 Apparatus and method for transmitting/receiving data in a communication system
US20100287296A1 (en) * 2009-05-08 2010-11-11 Canon Kabushiki Kaisha Network streaming of a single data stream simultaneously over multiple physical interfaces
US20130064140A1 (en) * 2011-09-14 2013-03-14 Michael L. Ziegler Node interface indicators
US8830838B2 (en) * 2011-09-14 2014-09-09 Hewlett-Packard Development Company, L.P. Node interface indicators
US20160182388A1 (en) * 2014-12-19 2016-06-23 Fujitsu Limited Communication device, relay device, and communication method
US10075382B2 (en) * 2014-12-19 2018-09-11 Fujitsu Limited Communication device, relay device, and communication method for a plurality of packets
US20160337219A1 (en) * 2015-05-15 2016-11-17 Sr Technologies, Inc. System and method for long range wireless local area network communications
US9992087B2 (en) * 2015-05-15 2018-06-05 Sr Technologies, Inc. System and method for long range wireless local area network communications
EP3609107A4 (en) * 2017-05-05 2020-04-22 Huawei Technologies Co., Ltd. Data transmission method, apparatus, and system
US11018725B2 (en) 2017-05-05 2021-05-25 Huawei Technologies Co., Ltd. Data transmission method, apparatus, and system
EP3629505A1 (en) * 2018-09-25 2020-04-01 Panasonic Intellectual Property Corporation of America User equipment and base station involved in transmission of data
WO2020064310A1 (en) * 2018-09-25 2020-04-02 Panasonic Intellectual Property Corporation Of America User equipment and base station involved in transmission of data
US11750333B2 (en) 2021-10-06 2023-09-05 Sr Technologies, Inc. System and method for long range wireless local area network communications

Also Published As

Publication number Publication date
CN1244211C (en) 2006-03-01
DE60307032D1 (en) 2006-09-07
US7505412B2 (en) 2009-03-17
DE60307032T2 (en) 2007-02-15
EP1434380B1 (en) 2006-07-26
EP1434380A1 (en) 2004-06-30
CN1512710A (en) 2004-07-14

Similar Documents

Publication Publication Date Title
US7505412B2 (en) Transmission control method and system
JP4283589B2 (en) COMMUNICATION DEVICE, COMMUNICATION CONTROL METHOD, AND PROGRAM
JP5694993B2 (en) Communication apparatus and communication method
EP2632102A1 (en) Method and device for data transmission
US7593338B2 (en) Congestion control method and system for reducing a retransmission timeout count in a transmission control protocol
JPWO2012066824A1 (en) Communication apparatus and communication system
US20030128672A1 (en) Transmission and flow control
CN102891883A (en) Wireless transmission control protocol processing method and equipment
US20050117515A1 (en) Transmitter device for controlling data transmission
US7168022B2 (en) Transmission control method and system
US7738395B2 (en) Communication system for improving data transmission efficiency of TCP in a wireless network environment and a method thereof
JP7067544B2 (en) Communication systems, communication devices, methods and programs
US7239610B2 (en) Methods and devices for partial upper layer frame loss detection based retransmission
JP3784801B2 (en) Transmission control method, communication apparatus, communication system, and program
KR100913897B1 (en) Method for controlling congestion of TCP for reducing the number of retransmission timeout
US7764624B2 (en) Methods and devices for preventing protocol stalling
JP2004222270A (en) Transmission control method, communication device, communication system and program
WO2003069920A2 (en) Transmission and flow control

Legal Events

Date Code Title Description
AS Assignment

Owner name: NTT DOCOMO, INC., JAPAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MIYAKE, MOTOHARU;INAMURA, HIROSHI;TAKAHASHI, OSAMU;REEL/FRAME:015424/0909;SIGNING DATES FROM 20040226 TO 20040303

CC Certificate of correction
FEPP Fee payment procedure

Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20170317