WO2007043373A9 - 通信装置 - Google Patents

通信装置

Info

Publication number
WO2007043373A9
WO2007043373A9 PCT/JP2006/319661 JP2006319661W WO2007043373A9 WO 2007043373 A9 WO2007043373 A9 WO 2007043373A9 JP 2006319661 W JP2006319661 W JP 2006319661W WO 2007043373 A9 WO2007043373 A9 WO 2007043373A9
Authority
WO
WIPO (PCT)
Prior art keywords
packet
data
unit
communication device
ack
Prior art date
Application number
PCT/JP2006/319661
Other languages
English (en)
French (fr)
Other versions
WO2007043373A1 (ja
Inventor
Hiroshi Kurata
Yoshinori Okazaki
Atsuhiro Tsuji
Keiichi Takagaki
Yosuke Matsushita
Original Assignee
Matsushita Electric Ind Co Ltd
Hiroshi Kurata
Yoshinori Okazaki
Atsuhiro Tsuji
Keiichi Takagaki
Yosuke Matsushita
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 Matsushita Electric Ind Co Ltd, Hiroshi Kurata, Yoshinori Okazaki, Atsuhiro Tsuji, Keiichi Takagaki, Yosuke Matsushita filed Critical Matsushita Electric Ind Co Ltd
Priority to CN2006800368286A priority Critical patent/CN101278529B/zh
Priority to US12/066,224 priority patent/US20090268747A1/en
Priority to EP20060811009 priority patent/EP1933509A1/en
Priority to JP2007539872A priority patent/JP4777996B2/ja
Publication of WO2007043373A1 publication Critical patent/WO2007043373A1/ja
Publication of WO2007043373A9 publication Critical patent/WO2007043373A9/ja

Links

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
    • 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/1829Arrangements specially adapted for the receiver end
    • H04L1/1832Details of sliding window management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/263Rate modification at the source after receiving feedback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1887Scheduling and prioritising arrangements

Definitions

  • the present invention relates to a communication apparatus, and more particularly to a communication apparatus that performs data transfer using a transmission control protocol (hereinafter referred to as TCP) via an Internet Protocol (hereinafter referred to as IP) network.
  • TCP transmission control protocol
  • IP Internet Protocol
  • FIG. 1 is a sequence diagram showing a flow of data transfer in TCP.
  • the window size means the amount of data that the transmitting device can continue to send data to the receiving device without obtaining an ACK packet.
  • This window size generally indicates the upper limit (hereinafter referred to as RWIN-MAX) of the maximum amount of data that can be held by the receiving device, and may be increased or decreased by the transmitting device depending on the network congestion status.
  • RWIN-MAX the upper limit of the maximum amount of data that can be held by the receiving device
  • the receiving side device has an ACK number of 10 by ACK packet P11. And that it is a window size force. Therefore, the transmission side device can transmit the data packets P21, P22, P23, and P24 of sequence numbers 10 to 13 without waiting for ACK packets for the four data packets.
  • the reception side device has a reception buffer for temporarily holding data received by the reception side device, and can generally secure data for RWIN-MAX.
  • the free space in the reception buffer decreases due to packet reception by the transmitting side device, and increases by passing the received data to an application program (hereinafter simply referred to as an application).
  • an application an application program
  • the receiving device sends a packet called a window update notification packet to notify the transmitting device that the free space in the receiving buffer has increased. have.
  • the window size decreases in ACK packets P12 and P13, and finally becomes zero.
  • the received data packets P21, P22, P23, and P24 are still held in the reception buffer, and the received data is not yet delivered to the application.
  • the receiving side device delivers the received data to the application, it transmits a window update notification packet P14 to notify the transmitting side device that only four window sizes are empty.
  • the transmission side device receives the window update notification packet P14, the transmission side device resumes transmission of the subsequent data packet P25, P26, P27, and P28.
  • the difference between the time at which the receiving side device transmits ACK packet PI 1 and the time at which it receives data packet P21 transmitted from the transmitting side device is called the response delay time (RTT).
  • RTT response delay time
  • TCP has a function described in Non-Patent Document 1, that is, a high-speed retransmission function.
  • FIG. 2 is a sequence diagram showing packet transmission / reception regarding the high-speed retransmission function.
  • data packets out of the data packets that are transmitted also by the transmitting side device Assume that P284 loses a packet and does not reach the receiving device. At this time, the receiving side device receives the data packets P285, P286, and P287 after the lost data packet P284, and determines that the arrival order is switched due to the power lost by the data packet P284 or for some reason. it can. Therefore, the receiving side device immediately transmits the ACK packet P273 in order to notify the transmitting side device that the data packet P284 has arrived when the data packet P285 is received. This ACK packet is called an immediate confirmation response.
  • this ACK packet P273 is the same ACK packet as the previously transmitted ACK packet P272, it may be a duplicate ACK. In the following, this is described as a duplicate ACK. Thereafter, the receiving side apparatus transmits duplicate ACK packets P274 and P275 similar to the ACK packet P272 until the data packet P284 is received.
  • the transmitting side device that receives the duplicate ACK packets P273, P274, and P275 detects that the packet indicated by the duplicate ACK packet has been lost by receiving the same ACK packet three times in succession. Immediately resend data packet P288. This immediate retransmission process is called Fast Retransmission! Uh.
  • This high-speed retransmission enables a quick recovery when a packet loss occurs much earlier than a retransmission based on a timeout described later.
  • the RWIN-MAX is increased by increasing the RWIN-MAX because of its poor reception performance. May arrive, which may reduce the data transfer efficiency.
  • FIG. 3 is a diagram illustrating an example of the configuration of an internet home appliance.
  • An Internet home appliance (reception-side device in the figure) 1 is a device having a communication function for connecting to the network 7 by wire or wireless, and includes, for example, an Ethernet (registered trademark) interface.
  • Network 7 is a network including wired or wireless, and examples include a public network such as the Internet.
  • the receiving side device 1 includes a system bus 2, a processing unit 3, a storage unit 4, and a communication unit 5.
  • the communication unit 5 is nodeware connected on the system bus 2.
  • the communication unit 5 has a function of transmitting a packet stored in the storage unit 4 to the network 7 and a function of receiving a packet from the network 7.
  • the communication unit 5 receives packets received from the network 7. It has a storage area (hereinafter referred to as FIFO) 6 for temporary storage.
  • FIFO storage area
  • the processing unit 3 is nodeware connected on the system bus 2.
  • the data stored in the storage unit 4 is processed as a packet, and the received packet is analyzed.
  • the processing unit 3 may have a function of transferring a transmission packet from the storage unit 4 to the communication unit 5 or transferring a packet stored in FIF06 of the communication unit 5 to the storage unit 4. .
  • the storage unit 4 has a function of holding packets to be transmitted and received and data thereof.
  • the receiving-side device 1 when receiving the packet, performs the following processing.
  • FIG. 4 is a sequence diagram showing an example of data transfer when the data transfer efficiency of the network home appliance is reduced. is there.
  • FIG. 4 shows a sequence when the data transfer between the receiving side apparatus 1 and the transmitting side apparatus 8 in FIG. 3 is performed by TCP.
  • the receiving side device 1 is an Internet home appliance
  • the transmitting side device 8 whose reception performance is low has high transmission performance such as a PC (Personal Computer).
  • Network 7 transfer capacity 100Mbps
  • the receiving side apparatus 1 transmits an ACK packet P31 in which the window size is set to RWIN-MAX (32 KB) to the transmitting side apparatus 8.
  • the transmission side device 8 transmits the data packet P41 for RWIN-MAX (32 KB) to the network 7.
  • RWIN-MAX (32 KB) worth of data packets arrive at the communication unit 5 of the receiving side device 1 at a stretch with a transfer capacity of 100 Mbps.
  • FIF06 of receiving device 1 is Since the capacity is only 4KB, it is impossible to store RWIN—MAX (32KB).
  • the transfer capability from the FIF 06 to the storage unit 4 is often inferior to the transfer capability of the network 7.
  • the case where there is a five-fold difference between the transfer capability from the FIF 06 to the storage unit 4 and the speed of the packet arriving at the communication unit 5, that is, the transfer capability of the network 7 will be described.
  • the receiving-side device 1 Upon receiving the first data packet P41-1, the receiving-side device 1 performs data transfer of the received packet from the FIF06 to the storage unit 4. If the time required for this data transfer is 5T, the difference in transfer performance is five times, so the interval between data packets arriving from the network 7 is T. Therefore, five data packets arrive at the receiving side device 1 during this 5T. However, the capacity of FIF06 is 4KB. Therefore, when the fifth data packet arrives, the free space becomes insufficient, and the data packet overflows from FIF06. In this way, packet loss will occur in the subsequent data, and then unnecessary retransmission will be performed. In the end, RWIN-MAX was made too large, and transfer efficiency dropped due to the frequent occurrence of unnecessary retransmissions. In general, therefore, the upper limit of RWIN-MAX is set according to the capacity of FIF06 in powerless communication devices such as Internet home appliances.
  • FIG. 5 is a sequence diagram showing reception processing of a receiving side device (for example, a PC) with high processing capability.
  • a receiving side device for example, a PC
  • RWIN-MAX is 4
  • the receiving side apparatus transmits the ACK packet P291 by receiving the data packet P301.
  • the transmission side device that has received the ACK packet P291 transmits the subsequent data packet P304 because it has reached sequence number 11 and has a window size.
  • the receiving side device receives the data packet P303 with the sequence number 13 before the data packet P302 with the sequence number 12 arrives, so that the power or order of the packet loss of the data packet P302 is changed.
  • an immediate confirmation response P292 is immediately transmitted. Further, the receiving side apparatus transmits immediate confirmation responses P294 and P295 by receiving the data packet P304.
  • the transmission side apparatus receives three immediate confirmation responses, and thereby operates the high-speed retransmission function, and retransmits the data packet P305 of sequence number 12. In this way, when packet loss occurs, it is possible to restore communication with a high-speed retransmission function.
  • FIG. 6 is a sequence diagram showing a reception process of a reception side device (for example, an Internet home appliance) with low processing capability.
  • a reception side device for example, an Internet home appliance
  • RWIN-MAX is 4
  • the data packet P322 among the data packets P321, P322, and P323 to which the transmission side apparatus power is also transmitted does not reach the reception side apparatus due to packet loss.
  • the receiving side apparatus transmits the ACK packet P311 by receiving the data packet P321.
  • the ACK packet P311 transmitted by the receiving device is Since the reception side apparatus has completed the reception processing of the received data packet P321, the window size is 2. Therefore, no data packet is transmitted from the transmission side device that has received the ACK packet P311.
  • the receiving side device receives the data packet P323 with the sequence number 13 before the data packet P322 with the sequence number 12 arrives, so that the power or order of the packet loss of the data packet P322 is switched. And immediately after receiving the data packet P323, an immediate confirmation response P312 is sent. At this time, the window size is 2 because the reception process has not been completed.
  • the receiving side device that has completed the reception process transmits a window update notification packet P313 with a window size of 4.
  • the transmitting side device that has received the window update notification packet P313 transmits the data packet P324 with sequence numbers 14 and 15 because the sequence number is 11 and the window size is strong.
  • the receiving side device that has received the data packet P324 transmits immediate confirmation responses P314 and P315.
  • the high-speed retransmission function does not work in the transmission side device.
  • the transmitting side device does not receive the ACK packet with the sequence number 12, and therefore performs retransmission due to timeout after the timeout time T1 has elapsed (P325).
  • the processing capability is low, the receiving side device cannot perform immediate confirmation responses continuously, so the high-speed retransmission function does not work and the low-speed retransmission waits for the timeout. For this reason, even if a small packet loss occurs, there is no transfer rate.
  • Patent Document 1 discloses a method in which the data transmission rate of the transmission side apparatus is controlled by the reception side apparatus. According to the method of Patent Document 1, when the receiving side device generates an ACK for the received data, the receiving side device does not immediately transmit it and holds the ACK packet in the ACK transmission queue. After that, according to the following (1) and (2), the ACK is sent at regular intervals. The data transmission rate is controlled by performing communication.
  • FIG. 7 is a sequence diagram showing exchange of data packets and ACK packets in Patent Document 1.
  • the reception side device When receiving the data packet P61 transmitted from the transmission side device, the reception side device generates an ACK packet to the transmission side device and inserts it into the ACK transmission queue.
  • the ACK packet generated at this time is an ACK packet with ACK number 10.
  • the receiving side apparatus transmits an ACK packet P51 at a predetermined time determined by regular intervals.
  • ACK packet P51 transmits an ACK packet
  • the ACK packet has enough power in the ACK transmission queue to satisfy a predetermined number (explained as 2), so ACK division is performed. Therefore, the ACK number is 9.1, not 10.
  • the window size has increased by 1 MSS to 2.
  • the transmitting side device that has received the ACK packet P51 can transmit the sequence number from 9.1 to 11.1 by receiving the window size 2 packet.
  • Data packet P62 with sequence number 10 as data is transmitted.
  • the receiving side apparatus transmits the ACK packet P52 when a predetermined time determined by a regular interval comes.
  • ACK packet transmission when ACK packet transmission is performed, ACK division is performed because the ACK packet is filled with a predetermined number (explained as 2) in the ACK transmission queue. Therefore, the ACK number is 9.2 compared to 10, and the window size is increased by 1 MSS to 3.
  • the receiving side device that has received this ACK packet P52 can transmit from sequence number 9.2 to 12.2 as in the case of receiving ACK packet P51.
  • ACK division is performed at regular intervals, and the window size is increased by 1 MSS.
  • the interval between data packets transmitted by the transmitting device is controlled.
  • Patent Document 1 Japanese Patent No. 3617649
  • Non-Patent Document 1 Standard Specification “RFC2001”, IETF, [Searched July 21, 2006], Internet ⁇ URL: http: // www. Ietf. Org / rfc / rfc2001.txt>
  • the ACK transmission interval is 2.5 milliseconds.
  • the RWIN—MAX that can be increased within the RTT is only 5 units.
  • the time required to receive a 1 MSS data packet is about 0.3 milliseconds, and the time required to send an ACK packet is 0. It is about 2 milliseconds. Therefore, in such an example, it is impossible to perform ACK transmission processing at intervals of 0.32 milliseconds.
  • Means for solving the second object of the present invention is to provide a communication device capable of prompting the transmitting device to promptly retransmit lost packets even when packet loss occurs.
  • a communication device is a communication device that receives data transmitted from another communication device, the receiving unit receiving the data, and the receiving unit
  • the first packet generation means for generating an acknowledgment packet indicating the response content to the other communication device with respect to the data received by the first communication device and transmitting the packet to the other communication device; and the data reception result by the reception means Regardless, it is characterized by comprising a second packet generation means for generating a data request packet for requesting data transmission to the other communication device and transmitting it to the other communication device.
  • the second packet generation unit generates the data request packet so that the size of receivable data is included in the data request packet as the reception size.
  • the data request packet which is a window update notification packet for requesting data transmission to another communication device
  • the data request packet is transmitted to the other communication device regardless of the reception result of the data transmitted by the other communication device. Therefore, the amount of data transmitted from other communication devices can be voluntarily controlled at an arbitrary timing. For example, control can be performed without waiting for reception of data from another communication device. Furthermore, since it is not necessary to divide the ACK and to transmit many ACKs at short transmission intervals, the control processing load can be reduced. Furthermore, since the reception size is included in the data request packet, the size of receivable data can be notified to other communication devices, and as a result, transmission traffic can be controlled according to the reception capability. Can be realized.
  • the communication apparatus further includes size calculation means for updating the reception size by adding an update amount to the reception size, and the second packet generation means is configured to update each time the update time elapses.
  • the size calculation unit may update the reception size, generate the data request packet including the updated reception size, and transmit the data request packet to the other communication device.
  • the window size is changed at every update time, that is, at a predetermined update interval. Since the reception size increases with each update amount and the data request packet, which is a window update notification packet, is transmitted, it becomes possible to control the traffic pattern of the transmission data of other communication devices and match the processing of the communication device. Data can be received. Further, by increasing the window size by the update amount, the amount of each data continuously transmitted from other communication devices can be made the update amount. As a result, in a communication device that receives such data, the capacity of the memory that temporarily stores the received data before passing it to the application program can be reduced to the amount of update.
  • the communication device may further include an update determination unit that determines the update time and the update amount based on the communication capability of the communication device.
  • the receiving means is configured as a physical layer communication device having a memory for temporarily storing received data
  • the update determining means includes the capacity of the memory, and the memory.
  • the update time and the update amount are determined based on the transfer capability of the stored data !.
  • the communication apparatus further includes processing means for processing the data received by the receiving means, and the update determining means is further based on the processing capability of the processing means.
  • the update determination unit may further determine the update time based on a bit rate required by an application program operating in the communication device.
  • the bit rate required by the application program in the communication device It is possible to match the data transmission pattern by other communication devices with the traffic pattern suitable for the application program, thereby preventing the generation of unnecessary traffic more than required by the application program.
  • the second packet generation unit when the second packet generation unit generates the data request packet every time the update time elapses, when the data is received by the reception unit, the data request packet It may be characterized in that the generation of is stopped.
  • the transmission of the data request packet serving as the window update notification packet is stopped, that is, the window update notification function is stopped, so that the data request packet is continuously transmitted and the data transmitted by other communication devices is transmitted. Can be prevented from increasing indefinitely.
  • the second packet generation unit stops generating the data request packet that is performed every time the update time elapses, data is received by the reception unit, The generation of the data request packet performed every time the update time elapses may be resumed.
  • the size calculating unit further acquires a total amount of data requested by the application program operating in the communication device, and decreases as the received amount of data received by the receiving unit approaches the total amount.
  • the response size may be calculated, and the first packet generation unit may generate the confirmation response packet indicating that the size of receivable data is the response size as the response content.
  • the first packet generation means generates the confirmation response packet indicating the size of receivable data as a response size, and performs the de- cessing performed every time the update time elapses.
  • the first packet generating means is generated last time.
  • a confirmation response packet having a response size smaller than the response size of the confirmation response packet is generated, and the second packet generation means resumes the production of the data request packet performed every time the update time elapses. This may be a feature.
  • the communication device further transmits the confirmation response packet by the first packet generation unit when the production of the data request packet performed every time the update time elapses. It is possible to provide delay means for delaying the timing.
  • the transmission timing of the acknowledgment packet is delayed, so that even if the interval of the reception time of each data continuously transmitted from other transmitters fluctuates, the controlled traffic turn is continuously maintained. It becomes possible. For example, the reception of a plurality of data transmitted from other communication devices and the transmission of a plurality of acknowledgment packets (ACK packets) from the communication devices corresponding to these data are performed at each update time, that is, at predetermined intervals. Has been done. In such a case, if the transmitted data is received at an interval shorter than the predetermined interval, the communication device that has received the data immediately transmits an acknowledgment packet for the data. Delay the transmission of the acknowledgment packet immediately. That is, the communication device transmits the confirmation response packet after the update time has elapsed since the last transmission of the confirmation response packet.
  • ACK packets acknowledgment packets
  • the receiving means is configured as a physical layer communication device having a memory for temporarily storing received data, and the communication device further includes a capacity of the memory, the memory And a transmission interval determining means for determining a transmission interval of the acknowledgment packet based on the data transfer capability held in the transmission response, and the delay means includes a plurality of transmission intervals determined by the transmission interval determining means. The timing is delayed so that the acknowledgment packet is transmitted.
  • the acknowledgment packet is transmitted at a transmission interval based on the capacity of the memory and the transfer capability, so that the traffic pattern suitable for the capability of the physical layer communication device is changed to other communication patterns. It is possible to match the data transmission pattern by the device and prevent packet loss at the physical layer communication device.
  • the communication apparatus further includes a processing unit that processes data received by the receiving unit, and a transmission interval that determines a transmission interval of the acknowledgment packet based on a processing capability of the processing unit. Determining means, and the delay means delays the timing so that a plurality of the acknowledgment packets are transmitted at a transmission interval determined by the transmission interval determination means.
  • the communication apparatus further includes transmission interval determination means for determining a transmission interval of the acknowledgment packet based on a bit rate required by an application program operating on the communication apparatus. And the delay means delays the timing so that a plurality of the acknowledgment packets are transmitted at a transmission interval determined by the transmission interval determination means.
  • the communication device further includes a transmission interval determining unit that determines a transmission interval of the acknowledgment packet based on a request to change a reception rate, and the delay unit is configured by the transmission interval determining unit. The timing may be delayed so that a plurality of the acknowledgment packets are transmitted at the determined transmission interval.
  • the first packet generation unit generates the acknowledgment packet indicating a size of receivable data as a response size
  • the delay unit further includes the first packet.
  • the response size indicated by the acknowledgment packet generated by the generation means is changed based on a request for changing the reception rate.
  • the second packet generation unit starts generating the data request packet that is performed every time the update time elapses when a reception amount of data received by the reception unit exceeds a threshold value. It is characterized by that.
  • the data transmission pattern by the other communication device can be matched with the traffic pattern according to the communication capability of the communication device. It becomes possible.
  • the second packet generation unit generates the data request packet including a head number of requested data, and the reception amount of the data received by the reception unit exceeds a threshold value.
  • the generation of the data request packet may be started every time the update time elapses so that the head number of the data request packet transmitted sequentially increases.
  • a data request packet as a window update notification packet is transmitted every time the update time elapses.
  • the reception size that is the window size of each data request packet and the leading number that is the ACK number are larger than the reception size and leading number of the previous data request packet.
  • the communication device further includes detection means for detecting a loss of data transmitted from the other communication device, and the first packet generation means responds with a size of receivable data. Generating the acknowledgment packet indicated as a size, and generating an acknowledgment packet indicating a response size smaller than the response size of the previously generated acknowledgment packet when the detection means detects a mouth. Also good.
  • the The first packet generator generates the acknowledgment packet indicating the difference between the response size of the previously generated acknowledgment packet and the amount of lost data as the small response size.
  • the first packet generation means further sets a response size larger than the response size of the previously generated confirmation response packet when the detection means does not detect the mouth at a predetermined time. It is characterized by generating an acknowledgment packet.
  • the second packet generation unit is configured such that when the data sequentially transmitted by the other communication device is not received by the reception unit in a predetermined order, or the data is lost.
  • the data request packet may be generated as a negative response packet to be transmitted.
  • the second packet generation means when a data loss occurs, the predetermined number of the data indicating the same content as the confirmation response packet for the data received by the receiving means immediately before the occurrence of the loss. Request packet is generated and transmitted.
  • loss detection means for detecting lost data among the data received by the reception means is provided, and the first packet generation means confirms the transmission of data from the other communication device.
  • the confirmation response packet instructing retransmission of the loss data detected by the loss detection means is transmitted to the other communication device, and the second packet generation means is transmitted by the first packet generation means.
  • Acknowledgment packet sent When the number of transmissions is less than the necessary number for causing the other communication device to retransmit the loss data, the necessary number power is also provided regardless of the transmission of data from the other communication device.
  • the confirmation response packet may be transmitted as the data request packet to the other communication device by the number of copies obtained by subtracting the number of transmissions.
  • the first packet generation means of the communication device transmits a DupAck (acknowledgment response packet) as a reception response to the transmission of the packet from another communication device, and the second packet.
  • the generation means is a duplicate of the required number “3” minus the number of transmissions, regardless of the transmission of data packets from other communication devices.
  • DupAck is sent as a data request packet to other communication devices. Therefore, for example, when the first packet generation means is transmitting two DupAck (the number of transmissions is “2”), the second packet generation means receives the packet even if the other communication device has received the packet. Regardless, one DupAck is sent.
  • the receiving means includes a memory, and sequentially acquires data transmitted from the other communication devices and stores the data in the memory, and the loss detecting means is not stored in the memory. It can be characterized by detecting lost data!
  • lost data lost due to overflow from the receiving FIFO memory is detected with certainty, and thus it is possible to reliably prompt other communication devices to perform high-speed retransmission of the data.
  • the communication device further includes network processing means for acquiring data from the receiving means and performing processing as a network layer of the OSI reference model on the data, and the loss detecting means Further, it is characterized by detecting lost data lost in the network processing means.
  • lost data is reliably detected in the network processing means for performing IP (Internet Protocol) processing, that is, the IP processing unit, so that the data is transmitted to other communication devices. It is possible to promptly prompt high-speed retransmission.
  • IP Internet Protocol
  • the loss detection means may detect the loss data only when the lost loss data is data based on TCP (Transmission Control Protocol).
  • the communication device further includes device specifying means for specifying the other communication device to be retransmitted based on the data acquired by the receiving means.
  • the loss detection unit detects loss data
  • the loss detection unit holds the detection result
  • the communication device further determines whether the loss detection unit detects the loss data.
  • a predetermined period has elapsed
  • the communication device transmits a predetermined number of data, when the processing speed of data by the communication device is slower than when the loss data is detected, or
  • reset means for deleting a detection result held by the loss detection means when a data request packet is transmitted by the second packet generation means.
  • the detection result (packet loss information) held by the loss detection means is deleted, so that the acknowledgment packet or data is transmitted even though other communication device power data is retransmitted. It is possible to prevent the request packet from being transmitted by mistake, and to suppress the generation of useless traffic due to such an erroneous packet.
  • the detection result is deleted when a predetermined period of time elapses, the detection result can be surely deleted according to the progress of the predetermined period. If the detection result is deleted when the communication device transmits a predetermined number of data, the detection result can be easily deleted at an appropriate timing without requiring a timer function.
  • the detection result is deleted when the data processing speed (for example, PPS) by the communication device is slower than the detection of loss data, the detection result is detected even though the communication device is overloaded. Since the knowledge result is retained, it is possible to prevent the transmission of an acknowledgment packet or data request packet, and other communication devices will transmit data according to the packet, resulting in unnecessary traffic. Can be suppressed. Furthermore, it is possible to prevent the loss data detection and the detection result deletion from being repeated frequently, and the detection result can be deleted at an appropriate timing. In addition, when the detection result is deleted when the data request packet is transmitted by the second packet generation means, an appropriate confirmation response packet or data request packet can be transmitted.
  • PPS data processing speed
  • the first and second packet generation means instruct the retransmission of the erroneous loss data when the loss data is detected again.
  • An acknowledgment packet or a data request packet may be transmitted. Therefore, in the present invention, an appropriate retransmission instruction signal can be transmitted by deleting the detection result at the timing as described above.
  • the second packet generation means may confirm the response by the first packet generation means.
  • the number of copies may be calculated when an answer packet is generated.
  • the second packet generation means can quickly transmit the data request packet by the calculated number of replicas, and as a result, other communication
  • the fast retransmission can be activated the fastest for the device.
  • the second packet generation means can transmit the data request packet immediately, it is not necessary to hold the data request packet and information related to the packet for a long time. As a result, the memory capacity can be reduced.
  • the second packet generation means transmits the confirmation response packet before a predetermined period of time elapses after the confirmation response packet is transmitted by the first packet generation means. Before the elapse of a predetermined period of time and when the load factor of the communication device is equal to or less than a predetermined threshold, or the communication device has received an increase in the amount of data that can be received by the communication device. The number of copies may be calculated before notifying the communication device.
  • the second packet generation The means can reliably count the number of transmissions of the acknowledgment packet that has also been transmitted by the first packet generation means during the predetermined period, and can calculate the exact number of copies.
  • the number of copies is calculated before a predetermined period elapses after the acknowledgment packet is transmitted and when the load factor (for example, the CPU usage rate) of the communication device is equal to or less than a predetermined threshold.
  • the load factor for example, the CPU usage rate
  • the exact duplication is the same as described above.
  • the number can be calculated.
  • the number of replicas is calculated, and after that, when the number of replicas of DupAck is also transmitted as the second packet generation means as a data request packet, The other communication device transmits the DupAck (acknowledgment packet) transmitted from the first packet generation means and the second packet generation means. Differentiate from received DupAck (data request packet).
  • another communication apparatus may determine that the required number of the same DupAck has not been transmitted for the loss data and may not execute high-speed retransmission for the loss data. Therefore, in the present invention, as described above, by calculating the number of replicas before notifying WinUpdate, it is possible to transmit as many DupAck as the number of replicas before notifying WinUpdate, and to other communication devices. High-speed retransmission can be surely encouraged.
  • the second packet generation means may calculate the number of copies based on a data amount receivable by the communication device. For example, the second packet generation unit may receive the first packet generation unit from the first packet generation unit based on the receivable data amount when the first acknowledgment packet is transmitted by the first packet generation unit. It is also possible to calculate the number of copies by calculating the number of transmissions scheduled to be transmitted and subtracting the number of transmissions from the required number.
  • the second packet generation means can immediately transmit the data request packet corresponding to the number of replicas.
  • the second packet generation means replicates a data request packet in the data link layer or transport layer of the OSI reference model, and determines the number of replicas. It is characterized by transmitting a data request packet signal.
  • the communication device of the present invention can control the transmission data rate of another communication device on the transmission side, suppress packet loss that has occurred by receiving data exceeding the processing capability, Prevent throughput degradation. Furthermore, by controlling the transmission rate of other communication devices on the transmission side to the transmission rate suitable for the processing capability of the communication device, efficient data transfer can be performed and the maximum throughput can be obtained.
  • FIG. 1 is a data transmission / reception sequence diagram in TCP.
  • FIG. 2 is a packet transmission / reception sequence diagram regarding the high-speed retransmission function.
  • FIG. 3 is a block diagram of an Internet home appliance.
  • FIG. 4 is a sequence diagram showing an example of data transfer when data transfer efficiency is reduced.
  • FIG. 5 is a packet transmission / reception sequence diagram in a high-speed receiving device.
  • FIG. 6 is a packet transmission / reception sequence diagram in a low-speed receiving device.
  • FIG. 7 is a TCP transmission / reception sequence diagram in the prior art.
  • FIG. 8 is a configuration diagram showing an example of a configuration of a network and a communication device according to Embodiment 1 of the present invention.
  • FIG. 9 is a block diagram showing an example functional configuration of a processing unit according to Embodiment 1 of the present invention.
  • FIG. 10 is a sequence diagram of packet transmission / reception in Embodiment 1 of the present invention.
  • FIG. 11 is a configuration diagram showing a functional configuration example of a processing unit according to Embodiment 2 of the present invention.
  • FIG. 12 is a sequence diagram of packet transmission / reception in Embodiment 2 of the present invention.
  • FIG. 13 is a flowchart showing the operation of the receiving side apparatus according to the second embodiment of the present invention.
  • FIG. 14 is a block diagram showing a functional configuration example of a processing unit according to Embodiment 3 of the present invention.
  • FIG. 15 is a sequence diagram of packet transmission / reception in the third embodiment of the present invention.
  • FIG. 16 is a sequence diagram of packet transmission / reception in the fourth embodiment of the present invention.
  • FIG. 17 is a configuration diagram showing an example functional configuration of a processing unit according to Embodiment 5 of the present invention.
  • FIG. 18 is a sequence diagram of packet transmission / reception in Embodiment 5 of the present invention.
  • FIG. 19 is a sequence diagram of another packet transmission / reception according to the fifth embodiment of the present invention.
  • FIG. 20 is a sequence diagram of packet transmission / reception in Embodiment 6 of the present invention.
  • FIG. 21 is a sequence diagram of another packet transmission / reception according to the sixth embodiment of the present invention.
  • FIG. 22 is a configuration diagram showing an example functional configuration of a processing unit according to Embodiment 7 of the present invention.
  • FIG. 23 is a sequence diagram of packet transmission / reception in Embodiment 7 of the present invention.
  • FIG. 24 is another sequence diagram of packet transmission / reception in Embodiment 7 of the present invention.
  • FIG. 25 is a block diagram showing a functional configuration example of a processing unit according to Embodiment 8 of the present invention.
  • FIG. 26 is a sequence diagram of packet transmission / reception in Embodiment 8 of the present invention.
  • FIG. 27 is a sequence diagram of another packet transmission / reception according to the eighth embodiment of the present invention.
  • FIG. 28 is a block diagram showing a functional configuration example of a processing unit according to the ninth embodiment of the present invention.
  • FIG. 29 is a sequence diagram of packet transmission / reception in Embodiment 9 of the present invention.
  • FIG. 30 is a diagram showing a configuration example of a network and a configuration example of a communication device in the tenth embodiment of the present invention.
  • FIG. 31 is a configuration diagram showing a functional configuration of a CPU of a communication apparatus according to Embodiment 10 of the present invention.
  • FIG. 32 is a diagram showing a communication sequence between communication devices in the tenth embodiment of the present invention.
  • FIG. 33 is a diagram showing an example of a processing sequence in the reception-side apparatus according to the tenth embodiment of the present invention.
  • FIG. 34 is a flowchart showing DupAck replication number calculation processing in the DupAck management unit in the tenth embodiment of the present invention.
  • FIG. 35 is a diagram showing a configuration example of a network and a configuration example of a communication apparatus according to the first modification of the tenth embodiment.
  • FIG. 36 is a configuration diagram showing a functional configuration of a CPU of a receiving side device according to the first modification of the tenth embodiment.
  • FIG. 37 is a diagram showing an example of a processing sequence of the reception side apparatus according to the first modification of the tenth embodiment.
  • FIG. 38 is a configuration diagram showing a functional configuration of a CPU of a receiving side device according to the second modification of the tenth embodiment.
  • FIG. 39 is a diagram showing a communication sequence between communication devices according to the third modification of the tenth embodiment.
  • FIG. 40 is a diagram showing an example of a processing sequence of the reception-side apparatus according to the third modification of the tenth embodiment.
  • FIG. 41 is a flowchart showing a DupAck replication number calculation process in the DupAck management unit according to the third modification of the tenth embodiment.
  • Window size calculation unit Window update timer unit Reception rate determination unit Previous RWIN storage unit
  • Window size calculation unit Window update timer unit Reception rate determination unit Previous RWIN storage unit
  • the reception-only communication device is the reception-side device
  • the transmission-only communication device is the transmission-side device
  • the present invention is applied to the reception-side device.
  • the present invention may be applied to a transmission-side apparatus in which both the transmission-side apparatus and the transmission-side apparatus may have transmission / reception functions.
  • FIG. 8 is a diagram showing an example of the configuration of the communication device (reception side device) according to the present embodiment.
  • the receiving side device 31 is a device having a communication function for connecting to the network 37 by wire or wirelessly, and includes, for example, an Ethernet (registered trademark) interface.
  • Network 37 is a network including wired or wireless, and examples include public networks such as the Internet.
  • the receiving side device 31 includes a system bus 32, a processing unit 33, a storage unit 34, and a communication unit 35.
  • the communication unit 35 is nodeware connected on the system bus 32.
  • the communication unit 35 has a function of transmitting the packet stored in the storage unit 34 to the network 37 and the network 37. Has a function of receiving packets.
  • the communication unit 35 has a storage area (hereinafter referred to as FIFO) 36 for temporarily holding packets received from the network 37.
  • FIFO storage area
  • the communication unit is configured as a receiving means.
  • the processing unit 33 is hardware connected on the system bus 32.
  • the processing unit 33 performs processing for constructing the data stored in the storage unit 34 as a packet, or performs analysis processing on the received packet.
  • the processing unit 33 may have a function of transferring a transmission packet from the storage unit 34 to the communication unit 35, or transferring a packet stored in the FIF036 of the communication unit 35 to the storage unit 34.
  • the storage unit 34 has a function of holding packets to be transmitted and received and data thereof.
  • the reception process of the reception side device 31 will be described.
  • the receiving side device 31 first stores the received packet in the FIF 036 of the communication unit 35.
  • the receiving-side device 31 transfers the received packet stored in the FIF 036 from the FIF 036 to the storage unit 34 via the system bus 32.
  • the contents of the received packet transferred to the storage unit 34 are analyzed by the processing unit 33 and processed for reception.
  • the processing unit 33 obtains the analysis result, it passes the received data to an application program (hereinafter simply referred to as an application).
  • FIG. 9 is a configuration diagram showing an example of a functional configuration of the processing unit 33 in the reception-side device 31 of the present embodiment.
  • the TCP processing unit 42 may be implemented by a power LSI (Large Scale Integration) configured as a program executed by the processing unit 33.
  • the solid line in the figure indicates the data flow of the transmission / reception packet, and the broken line indicates the flow related to the exchange of control information.
  • the processing unit 33 includes an IP processing unit 41, a TCP processing unit 42, and an application processing unit 43.
  • the TCP processing unit 42 of the receiving side device 31 includes a TCP packet processing unit 44, a reception buffer 47, a window size calculation unit 48, a window update timer unit 49, a reception rate determination unit 50, and a previous RWIN storage unit 51. Consists of Next, each of these components will be described.
  • the TCP packet processing unit 44 has a TCP packet transmission / reception processing function.
  • the TCP packet processing unit 44 identifies the application of the received packet and sends the packet to the application. Stored in receive buffer 47 for delivery to the case. Further, the TCP packet processing unit 44 has a function of constructing a TCP packet, passing it to the IP processing unit 41, and transmitting it as a TCP / IP packet.
  • the TCP packet processing unit 44 includes an ACK generation unit 45 and a window update notification generation unit 46.
  • the ACK generation unit 45 determines an ACK number based on the sequence number of the received TCP packet, and generates an ACK packet.
  • the ACK packet the currently receivable free space (hereinafter, window size) obtained from the window size calculation unit 48 is also set.
  • the ACK generation unit is configured as the first packet generation unit, and the ACK packet corresponds to an acknowledgment packet.
  • the window size set in the ACK packet corresponds to the response size.
  • the window update notification generation unit 46 generates a window update notification packet when the reception buffer 47 is freed up. Further, the window update notification generation unit 46 has a function of generating a window update notification packet according to an instruction from the window update timer unit 49. The window size obtained from the window size calculation unit 48 is set in the window update notification packet.
  • the window update notification generation unit is configured as a second packet generation unit, and the window update notification packet corresponds to a data request packet. The window size set in the window update notification packet corresponds to the reception size.
  • the reception buffer 47 has a function of temporarily storing reception data to be passed to the application processing unit 43.
  • the reception buffer 47 can store data of maximum RWIN-MAX, and in response to a request from the application processing unit 43, the data temporarily held in the reception buffer 47 is sequentially transferred to the application processing unit 43.
  • the reception buffer 47 notifies the window update notification generation unit 46 that the window size has increased when the window size has increased due to data being passed to the application processing unit 43.
  • the window size calculation unit 48 has a function of calculating a value to be notified to the transmission side device 38 as a window size.
  • the window size calculation unit 48 determines the update amount (hereinafter referred to as RWIN-Update) instructed by the reception rate determination unit 50 and the previous time stored in the previous RWIN storage unit 51.
  • the window size is calculated based on the notified window size (RWIN—Prev).
  • the window size is calculated by the following formula.
  • Window size RWIN—Prev + RWIN— Update ' ⁇ ⁇ (Formula 1)
  • Window size MIN (RWIN—Prev + RWIN Update
  • MIN (A, B) shall return the minimum value of A and B.
  • the window update timer unit 49 has a function of instructing the window update notification generation unit 46 to transmit a window update notification packet at a predetermined interval.
  • the predetermined interval is instructed by the reception rate determining unit 50.
  • the reception rate determination unit 50 has a function of determining the update amount of the window size calculation unit 48 and the predetermined interval of the window update timer unit 49 based on the reception rate of the TCP packet in the reception side device 31. . Next, an example of a method for determining the update amount and the predetermined interval will be described.
  • the update amount and the predetermined interval can be calculated by the following formula based on the capacity of FIF036 and the transfer capability of the system bus 32.
  • Update amount Capacity of FIF036 ⁇ (Equation 3)
  • Predetermined interval Capacity of FIF036 Z System bus 32 transfer capacity ⁇ (Equation 4)
  • the capacity power of FIF036 of the receiving side device 31 is the transfer capacity power OMbps of the system bus 32
  • the update amount is 4KB according to the capacity of FIF036, and the predetermined interval is
  • the time required for the system bus 32 to transfer 4 KB is 0.8 milliseconds. Note that setting the predetermined interval to 0.8 milliseconds or more can suppress the data transfer amount to be equal to or less than the transfer capacity of the system bus 32, and therefore may be 1 millisecond.
  • the CPU Central Processing Unit
  • the predetermined interval is calculated from the processing time of one packet and the transfer capacity of the system node. It may be calculated.
  • Example 2 The update amount and the predetermined interval can be calculated by the following formula based on the capacity of FIF036 and the bit rate required by the application.
  • Predetermined interval RTTZCEILING (((Bit rate required by application
  • CEILING (A, B) outputs the result of rounding A up to the nearest B.
  • the size power of FIF036 of the receiving side device 31 is the size power of FIF036 of the receiving side device 31.
  • the update amount is 4KB according to the size of FIF036. It becomes.
  • the bit rate required by the application is 10 Mbps, it is necessary for the application to receive 12.5 KB of data during 1 RTT (10 milliseconds). Therefore, considering the increase of 4KB each as the update amount, 3.125 times, that is, 4 updates are required during 1RTT.
  • the predetermined interval is R TTZ4, which is 2.5 milliseconds.
  • the update amount and the predetermined interval can be calculated based on the maximum capacity RWIN-MAX of data that can be stored in the reception buffer 47 and the bit rate required by the application.
  • Predetermined interval RTTZCEILING (((bit rate required by application XRTT) / 8) / RWIN_MAX, 1) (Equation 8)
  • the maximum capacity of data that can be stored in the receive buffer 47 RWIN— When the MAX is 8 KB, the bit rate required by the application is 10 Mbps, and the RTT is 10 milliseconds, the update amount is RWIN— 8KB to match MAX. Furthermore, in this case, since the bit rate required by the application is 10 Mbps, it is necessary to receive 12.5 KB of data during 1 RTT (10 milliseconds). Therefore, considering the increase of 8KB each as the update amount, 1.5625 times, that is, 2 updates are required during 1RTT. Therefore, the predetermined interval is RTTZ2, which is 5 milliseconds.
  • the update amount is rounded to the MSS unit, or the predetermined interval is It may be rounded up to the nearest second or several milliseconds.
  • the reception rate determining unit 50 receives the receiving side device 31 when a plurality of connections are established, or when the processing unit 33 performs processing other than another communication processing, resulting in a decrease in processing capability. It is possible to have a function to dynamically change the update amount and the predetermined interval in accordance with the change in the reception status.
  • the previous RWIN storage unit 51 has a function of recording and holding the window size (hereinafter referred to as the previous window size) used when the window update notification was performed last time.
  • the previous RWIN storage unit 51 passes the previous window size to be recorded and held to the window size calculation unit 48, receives the result calculated by the window size calculation unit 48, updates the previous window size, and holds the record.
  • FIG. 10 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving side device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting side device 38 is indicated by a solid line.
  • one packet length is 1
  • the update amount is 4
  • the update interval is T milliseconds.
  • the receiving side device 31 enters a state of receiving data transmitted from the transmitting side device 38 through establishment of a connection with the transmitting side device 38 or the like. At this time, the reception side device 31 sets the update amount 4 as the window size of the ACK packet (a window update notification packet may be acceptable), notifies the transmission side device 38 of the ACK packet (window update notification packet), (Since the sending side device 38 that received the P7 Do ACK packet P71 has the window size S4 of the received ACK packet P71, it sends four data packets P81 of sequence numbers 10, 11, 12, and 13) Send (P81).
  • the receiving side device 31 adds the update amount 4 to the previously notified window size 4 according to Equation 1, and Set the window size of the window update notification packet and set the window update notification packet to A notification is sent to the transmission side device 38 (P72).
  • the transmitting side device 38 that has received the ACK packet P72 transmits 8 data packets including the already transmitted sequence numbers 10, 11, 12, and 13 because the window size of the received ACK packet P72 is 8. It becomes possible to do. Therefore, the transmission side device 38 transmits a data packet P82 of sequence numbers 14, 15, 16, and 17 that is a continuation of the data packet P81.
  • ACK packets P73 and P74 are also transmitted from the receiving side device 31 in the same manner as described above. Further, the data packets P83 and P84 are also transmitted from the transmission side device 38 as described above.
  • the interval of the ACK packet transmitted by the receiving side device 31 is the T millisecond interval
  • the interval at which the transmitting side device 38 receives the ACK packet is also the T millisecond interval.
  • the ACK packet interval received by the transmission side device 38 is T milliseconds, and the window size is increased by the update amount, the transmission side device 38 performs data update by the update amount every T milliseconds. A ticket will be sent.
  • the transmission side device 31 transmits data packets at intervals of T milliseconds
  • the reception side device 31 receives data packets of each update amount at intervals of T milliseconds.
  • this T millisecond is a value that also calculates force, such as (Equation 4) or (Equation 6), so during this T millisecond, the receiving side device 31 processes the data for the update amount. Is possible. Therefore, the reception process can be performed without overflowing the reception process.
  • the reception-side device 31 controls the interval and the amount of transmission data transmitted from the transmission-side device 38, thereby maximizing the performance of the reception-side device 31. It becomes possible to come out. Further, according to the present invention, it is possible to start the control of the transmission data interval and the amount thereof at an arbitrary timing regardless of the reception of the data packet. Furthermore, by controlling the amount of transmission data in units of update amounts, the number of window update notification packet generations is reduced, and the same ACK number is used for window update notification packets. As a result, the only parameter that should be changed in a series of window update notification packets is the window size, so the processing load can be reduced.
  • Patent Document 1 uses a method of performing ACK division and updating the free buffer capacity that can be received by 1 MSS at a time. It is necessary to control at re-second intervals. Therefore, in this embodiment, the processing load can be reduced as compared with the conventional case. Furthermore, the interval and amount of transmission data transmitted from the transmission side device 38 can be controlled to a rate that matches the reception rate of the application of the reception side device 31, and the maximum amount of update data is stored in the reception buffer. Only data stays and memory efficiency is improved.
  • the communication device (receiving device) in the present embodiment is substantially the same as the configuration shown in FIG. 8 of the first embodiment, and only the processing unit is different. Therefore, detailed description of the components other than the processing unit is omitted.
  • FIG. 11 is a configuration diagram illustrating an example of a functional configuration of a processing unit in the reception-side device 31 according to the present embodiment.
  • the reception-side device 31 of the present embodiment includes a processing unit 33a instead of the processing unit 33 of the first embodiment.
  • the processing unit 33a in the present embodiment has an additional function with respect to the processing unit 33 of the first embodiment, and therefore only the difference from the first embodiment will be described.
  • the processing unit 33a includes an IP processing unit 61, a TCP processing unit 62, and an application processing unit 63.
  • the TCP processing unit 62 of the receiving side device 31 of the present embodiment includes a TCP packet processing unit 64, a reception buffer 67, a window size calculation unit 68, a window update timer unit 69, a reception rate determination unit 70, and It consists of the previous RWIN storage unit 71.
  • reception buffer 67, window size calculation unit 68, and previous RWIN storage unit 71 have the same functions and configurations as reception buffer 47, window size calculation unit 48, and previous RWIN storage unit 51 of the first embodiment. Have.
  • the TCP packet processing unit 64 includes an ACK generation unit 65 and a window update notification generation unit 66.
  • Such a TCP packet processing unit 64 has the function of the TCP packet processing unit 44 shown in the first embodiment, and while the window size to be notified is updated based on (Equation 1), When the packet from the device 38 is received, it further has a function of notifying the reception rate determining unit 70 that the window update notification function is stopped. Note that the window update notification function increases the window size at predetermined intervals as shown in the first embodiment. Then, a window update notification packet indicating the increased window size is transmitted to the transmission side device 38.
  • Window update timer unit 69 has the function of window update timer unit 49 shown in the first embodiment, and further has a function of stopping the timer function based on a stop notification from reception rate determining unit 70.
  • Reception rate determination unit 70 has the function of reception rate determination unit 50 shown in the first embodiment, and stops window update timer unit 69 upon receiving a stop notification from TCP packet processing unit 64. And a function for setting the update amount to 0.
  • FIG. 12 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting device 38 is indicated by a solid line.
  • one packet length is 1
  • the update amount is 4
  • the update interval is T milliseconds.
  • the receiving-side device 31 receives the data packet P101.
  • the receiving side device 31 When receiving the data packet P101, the receiving side device 31 generates an ACK packet P95 for the data packet P101 and transmits it to the transmitting side device 38.
  • the reception rate determining unit 70 stops the window update timer of the window update timer unit 69 and sets the update amount in the window size calculation unit 68 to zero. Therefore, the window size of the ACK packet P95 to be transmitted is 16, which is the window size value held in the previous RWIN storage unit 71.
  • the transmitting side device 38 Upon receiving this ACK packet P95, the transmitting side device 38 receives the ACK number 14 and the window. Data of sequence number 14 and later can be transmitted from window size 16 for window size 16. Therefore, the transmission side device 38 transmits the data packet P105 of sequence numbers 26, 27, 28, and 29, which is untransmitted data after the sequence number 14.
  • the window update timer is stopped and the update amount is zero. Therefore, the window size of the ACK packet P96 with respect to the data packet P102 is 16, which is the window size value held in the previous RWIN storage unit 71. Further, the transmitting side device 38 that has received this ACK packet P96 transmits data packets P106 of sequence numbers 30, 31, 32, and 33, which are untransmitted data of sequence number 18 and later. Thereafter, the same process is repeated.
  • FIG. 13 is a flowchart showing the operation of the reception side device 31 in the present embodiment.
  • N is the sequence number of the data packet requested by the receiving side device 31.
  • the window update timer unit 49 of the receiving apparatus 31 starts time measurement.
  • the receiving side device 31 determines whether or not it has received the data packet from the receiving side device 38 (step S402).
  • the receiving side device 31 determines whether or not the power has passed a predetermined period of T milliseconds. (Step S404).
  • the receiving-side device 31 stops the window update notification function described above (step S408).
  • the window update timer unit 49 stops measuring time and the update amount is reset to zero.
  • n is the number of data packets received by the receiving side device 31.
  • the receiving side device 31 determines again whether or not it has received the data packet from the transmitting side device 38 (step S412). As a result, when it is determined that a data packet has been received (Y in step S412), the receiving-side device 31 repeatedly executes the processing from step S410, and when it is determined that no data packet has been received (step S412). N in S412), the data reception processing from the transmission side device 38 is terminated.
  • reception rate determination unit 70 sets the update amount to 0 and stops the window update timer As a result, the rate of transmission data transmitted from the transmission side device 38 can be kept constant even after data reception.
  • the communication device (receiving device) in the present embodiment is substantially the same as the configuration shown in FIG. 8 of the first embodiment, and only the processing unit is different. Therefore, detailed description of the components other than the processing unit is omitted.
  • FIG. 14 is a configuration diagram illustrating an example of a functional configuration of a processing unit in the reception-side device 31 according to the present embodiment.
  • the receiving side device 31 of the present embodiment includes a processing unit 33b instead of the processing unit 33 of the first embodiment.
  • the processing unit 33b in the present embodiment has an additional function with respect to the processing unit 33a of the second embodiment, so only the difference from the second embodiment will be described.
  • the processing unit 33b includes an IP processing unit 81, a TCP processing unit 82, and an application processing unit 83.
  • the TCP processing unit 82 of the receiving side device 31 of the present embodiment includes a TCP packet processing unit 84, a reception buffer 87, a window size calculation unit 88, a window update timer unit 89, a reception rate determination unit 90, and It consists of the previous RWIN storage unit 91.
  • reception buffer 87 and previous RWIN storage unit 91 have the same functions and configurations as reception buffer 47 and previous RWIN storage unit 51 of the first embodiment.
  • the TCP packet processing unit 84 includes an ACK generation unit 85 and a window update notification generation unit 86.
  • Such a TCP packet processing unit 84 has the function of the TCP packet processing unit 64 shown in the second embodiment, and the packet from the transmission side device 38 while the window update notification function is stopped. Is received, the window update notification function 90 is notified to the reception rate determination unit 90.
  • Window size calculation unit 88 has the functions of window size calculation units 48 and 68 described in the first and second embodiments. Further, when the window size calculation unit 88 has a function of notifying the total data amount in a series of data reception from the application processing unit 83, the window size calculation unit 88 notifies the end of reception of the data of only the total data amount with an ACK packet. It has a function to reduce the window size.
  • the window update timer unit 89 receives the function of the window update timer unit 69 described in the second embodiment and the window update notification function restart notification from the reception rate determination unit 90, and performs the window update notification function. Has the ability to resume.
  • Reception rate determination unit 90 receives the function of reception rate determination unit 70 shown in Embodiment 2 and the window update notification function restart notification from TCP packet processing unit 84, and receives a predetermined interval and update amount.
  • the window update timer unit 89 is notified of the window update notification function restart.
  • FIG. 15 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the reception side device 31 is indicated by a broken line
  • the data packet transmitted by the transmission side device 38 is indicated by a solid line.
  • one packet length is 1
  • the update amount is 4
  • the update interval is T milliseconds.
  • the transmission side device 38 transmits the data packets P121 and P122 to complete the data transfer. Thereafter, the transfer of the data packet P123 is resumed after an arbitrary time. The exchange of ACK packets and data packets at this time will be explained.
  • the window size calculation unit 88 is notified of the total amount of data in one series of data reception from the application processing unit 83. Therefore, the window size calculation unit 88 reduces the window size of the ACK packet to be transmitted in accordance with the end of reception of data corresponding to the total data amount.
  • Equation 9 shows a window size calculation formula in the window size calculation unit 88.
  • Window size ⁇ ((total data amount received data amount) + update amount
  • the transmission side device 38 transmits a data packet P121.
  • the receiving side device 31 that has received the data bucket P121 generates and transmits an ACK packet P111 corresponding to the data bucket P121.
  • the data packet transmitted by the receiving side device 31 is set to the window size 8 based on (Equation 9).
  • the transmission side device 38 transmits the data bucket P122.
  • the receiving side device 31 that has received the data packet P122 receives the data bucket.
  • ACK packet PI 12 corresponding to PI 22 is generated and transmitted.
  • the data packet transmitted by the receiving side device 31 is set to the window size 4 based on (Equation 9). In this way, the window size is reduced according to the remaining received data amount.
  • the transmission side device 38 transmits the data packet P123 and resumes data transmission. At this time, because the window size of the ACK packet P112 transmitted by the reception side device 31 was the last time, the transmission side device 38 must transmit the sequence number 10, 11, 12, 13 and the data packet for the window size. become. As described above, when the data transmission is temporarily stopped, the window size is reduced, so that the transmission data is prevented from arriving in bursts when the data transmission is resumed.
  • the receiving side device 31 when the receiving side device 31 receives the data packet P123 for which the transmitting side device 38 has resumed transmission, the receiving side device 31 generates and transmits an ACK packet P113 corresponding to the received data packet P123. Thereafter, the receiving side device 31 notifies the reception rate determining unit 90 that the data transfer has been resumed.
  • the reception rate determination unit 90 that has received the notification determines the update amount and the predetermined interval, and prompts the window update timer unit 89 to restart the window update timer, as in the first embodiment.
  • the receiving side device 31 adds the update capacity 4 to the previously notified window size 4 according to (Equation 1), and The window size of the window update notification packet is set, and the window update notification packet is notified to the transmitting side device 38 (P114). Further, the receiving side device 31 transmits the window update notification packets P115 and P116 at a predetermined interval of T milliseconds. As a result, the transmission side device 38 transmits the data packets P124, P125, and PI 26 at a predetermined interval of T milliseconds.
  • the communication device (receiving device) in the present embodiment is substantially the same as the configuration shown in FIG. 8 of the first embodiment, and only the processing unit is different. Therefore, detailed description of the components other than the processing unit is omitted.
  • the processing unit in receiving-side apparatus 31 of the present embodiment has a configuration substantially similar to that of processing unit 33a shown in Fig. 11 of the second embodiment. Therefore, the processing unit in the present embodiment will be described below using FIG. 11 so that the difference from the second embodiment becomes clear.
  • the TCP packet processing unit 64 in the present embodiment has the function shown in the second embodiment, detects the packet loss while the window update notification function is stopped, and transmits the transmission side device. When it is confirmed that the lost packet is retransmitted from 38, it has a function of notifying the reception rate determining unit 70 of resumption of the window update notification function.
  • Window update timer unit 89 in the present embodiment has the function shown in the second embodiment, receives the window update notification function restart notification from reception rate determination unit 70, and has a window update timer function. Has the ability to resume.
  • Reception rate determining section 70 has the functions shown in the second embodiment. Further, the reception rate determining unit 70 receives the window update notification function restart notification from the TCP packet processing unit 64, calculates a predetermined interval and the update amount, and sends a window update notification function restart to the window update timer unit 69. And a function for notifying the previous window size value recorded in the previous RWIN storage unit 71 to an initial value, for example, 0.
  • the previous RWIN storage unit 71 has the function shown in the second embodiment and the function of initializing the stored previous window size value by the operation of the reception rate determining unit 70.
  • FIG. 16 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting device 38 is indicated by a solid line.
  • one packet length is 1
  • the update amount is 1
  • the update interval is T milliseconds.
  • the receiving side device 31 receives transmission data packets from the transmitting side device 38 at regular intervals while the window update notification function is stopped. At this time, it is assumed that the data packet P152 is lost.
  • the receiving-side apparatus 31 notices that a packet loss has occurred due to the arrival of the data packet P153. Therefore, the receiving side device 31 transmits the ACK packet P133 with the ACK number 11. After that, the receiving side device 31 receives the data packets P154, P155, and P156 after the packet loss in the same way, and transmits the ACK packets P134, P135, and P136 with the ACK number 11 because the packet loss has occurred. To do. At this time, if the transmitting side device 38 receives four consecutive ACK packets with duplicate ACK numbers, it detects that a packet loss has occurred on the network, and immediately retransmits the data packet P158 without waiting for a timeout ( TCP high-speed retransmission function). Up to this point, the functions are also implemented in the conventional TCP.
  • the receiving side device 31 When receiving the retransmitted data packet P158, the receiving side device 31 notifies the reception rate determining unit 70 that a packet loss has occurred and the retransmission packet has been received. To do.
  • the reception rate determining unit 70 notified of the reception of the retransmitted packet initializes the value of the previous RWIN storage unit 71, prompts the window update timer unit 69 to start the window update timer, sets the update amount to 1, Restart the update notification function. Thereafter, the receiving side device 31 generates and transmits an ACK packet P138.
  • the ACK packet P138 generated at this time is set to ACK number 17 from the currently received sequence number 16, and the window size 1 is set based on the value and update amount recorded in the previous RWIN storage unit 71. Set. Receiving this ACK packet P138, the transmitting side device 31 transmits the data packet P159 of the next sequence number 17 based on the notified window size 1.
  • the receiving side device 31 adds the update capacity 1 to the previously notified window size 1 according to (Equation 1), 2 is set as the window size of the window update notification packet, and the window update notification packet is notified to the transmitting side device 38 (P139).
  • the transmitting side device 38 that has received the ACK packet P139 has already transmitted since the window size of the received ACK packet P139 is 2. Only two data packets including sequence number 17 can be transmitted. Therefore, the transmission side device 38 transmits the data packet P160 with the sequence number 18 that is a continuation of the data packet P159. Thereafter, the receiving side device 31 performs window update processing at intervals of T milliseconds as in the first embodiment, and receives data packets at intervals of T milliseconds.
  • Embodiments 1 and 2 the same effects as in Embodiments 1 and 2 can be obtained. Furthermore, according to the present embodiment, it is possible to perform transmission rate control for the retransmission data of the transmitting side device by restarting the window update notification function even after the packet loss occurs. Further, by combining with the third embodiment, the effects obtained in the third embodiment can be enjoyed.
  • the communication device (receiving device) in the present embodiment is substantially the same as the configuration shown in FIG. 8 of the first embodiment, and only the processing unit is different. Therefore, detailed description of the components other than the processing unit is omitted.
  • FIG. 17 is a configuration diagram illustrating an example of a functional configuration of a processing unit in the reception-side device 31 according to the present embodiment.
  • the receiving side device 31 of the present embodiment includes a processing unit 33c instead of the processing unit 33 of the first embodiment.
  • the processing unit 33c in the present embodiment has an additional function with respect to the processing unit 33a of the second embodiment, and therefore only the differences from the second embodiment will be described.
  • the processing unit 33c includes an IP processing unit 101, a TCP processing unit 102, and an application processing unit 10.
  • the TCP processing unit 102 of the receiving-side device 31 of the present embodiment includes a TCP packet processing unit 104, a reception buffer 107, a window size calculation unit 108, a window update timer unit 109, and a reception rate determination unit 110.
  • the RWIN storage unit 111 and the ACK delay unit 112 are included.
  • reception buffer 107, window size calculation unit 108, window update timer unit 109, and previous RWIN storage unit 111 are reception buffer 67, window size calculation unit 68, window update timer unit 69 of the second embodiment. It has the same functions and configuration as the previous RWIN storage unit 71.
  • the TCP packet processing unit 104 includes an ACK generation unit 105 and a window update notification generation unit 106.
  • Window update notification generator 106 has the same functions and configuration as window update notification generator 66 of the second embodiment.
  • ACK generation unit 105 determines an ACK number based on the sequence number of the received TCP bucket, and generates an ACK packet.
  • the window size that is the currently receivable free space obtained from the window size calculation unit 108 is also set.
  • the ACK generation unit 105 of the present embodiment passes the generated 80 ⁇ packet to the 803 ⁇ 4 @ extension unit 112. The passed ACK packet is then transmitted.
  • Reception rate determination section 110 has the same function as reception rate determination section 70 of Embodiment 2, and also has a function of specifying ACK packet delay time and its ACK amount to ACK delay section 112.
  • the ACK packet delay time and ACK amount are determined by the following equations.
  • ACK amount update amount ⁇ ⁇ ⁇ ⁇ (Formula 12)
  • the ACK amount and ACK packet delay time are calculated by calculating the capacity of FIF036 and the transfer capability of the system bus 32 as well as the formula for calculating the update amount and update interval, and the application requests it. It can be calculated from the bit rate.
  • the ACK delay unit 112 has a function of temporarily holding and delaying the generated ACK packet before transmission.
  • the ACK delay time is determined by reception rate determination section 110.
  • FIG. 18 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting device 38 is indicated by a solid line.
  • one packet length is 1
  • the update amount is 4
  • the update interval is T milliseconds.
  • the receiving-side device 31 starts 1RT after starting the window update notification function. Since T has elapsed and data packet P181 has been received, the window update notification function has been stopped.
  • the ACK generation unit 105 of the reception-side device 31 When the data packet P181 is received, the ACK generation unit 105 of the reception-side device 31 generates the ACK packet and passes it to the ACK delay unit 112. Upon receiving the ACK packet, the ACK delay unit 112 obtains the ACK transmission time obtained by adding the ACK packet delay time to the time when the ACK packet (or window update notification packet) was transmitted last time, and the current time exceeds the ACK delay time. If the ACK number is advanced by the ACK amount compared to the previous ACK packet, the ACK packet is sent immediately. In FIG. 18, when the data packet P181 is received, the ACK packet delay time elapses from the previous ACK packet transmission time, so the ACK packet P175 is immediately transmitted.
  • the ACK generation unit 105 of the receiving side device 31 generates an ACK packet for the received data packet P 182 and passes it to the ACK delay unit 112.
  • the Hachiji 13 ⁇ 4 @ extension unit 112 that has received the Hachi 1 ⁇ packet calculates the ACK transmission time by adding the ACK delay time to the previous transmission time of the ACK packet P175, and as a result, the current time does not satisfy the ACK transmission time.
  • ACK packet P176 is not sent immediately. Thereafter, when the current time reaches the ACK transmission time, the ACK delay unit 112 transmits the ACK packet P176 held by the ACK delay unit 112.
  • FIG. 19 is a sequence diagram showing another exchange of the data packet and the ACK packet in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the reception side device 31 is indicated by a broken line
  • the data packet transmitted by the transmission side device 38 is indicated by a solid line.
  • one packet length is 1
  • the update amount is 4
  • the update interval is T milliseconds.
  • the receiving-side device 31 has stopped the window update notification function because 1RT T has passed since the start of the window update notification function and data packet P201 has been received. is there.
  • the ACK generation unit 105 of the reception-side device 31 When the data packet P201 is received, the ACK generation unit 105 of the reception-side device 31 generates the ACK packet and passes it to the ACK delay unit 112. ACK delay when an ACK packet is received The unit 112 obtains an ACK transmission time obtained by adding the ACK packet delay time to the time when the previous ACK packet (or window update notification packet) was transmitted, and the current time exceeds the ACK delay time and the ACK number is the previous time. If the ACK amount is advanced compared to the ACK packet, the ACK packet is immediately transmitted. In FIG. 19, when the data packet P201 is received, the ACK packet delay time elapses from the previous ACK packet transmission time, so the ACK packet P195 is immediately transmitted.
  • the data packet P202 transmitted by the transmission side device 38 is received with a delay from normal due to a change in the state of the network 37.
  • the ACK generation unit 105 of the reception side device 31 generates an ACK packet for the received data packet P202 and passes it to the ACK delay unit 112.
  • the 80 0 @@ extension unit 112 obtains the ACK transmission time obtained by adding the ACK delay time to the transmission time of the previous ACK packet P195.
  • the current time has already passed the ACK transmission time. Therefore, the ACK packet 196 is immediately transmitted.
  • the ACK packet P196 is immediately transmitted.
  • the receiving-side device 31 receives the data packet P203 transmitted by the transmitting-side device 38.
  • the receiving side device 31 generates an ACK packet for the received data packet P203 and passes it to the ACK delay unit 112.
  • the Hachiji 13 ⁇ 4 @ extension unit 112 that received the Hachi 1 ⁇ packet found the ACK transmission time by adding the ACK delay time to the transmission time of the previous A CK packet P196. As a result, the current time does not satisfy the ACK transmission time.
  • ACK packet 197 is not transmitted. Thereafter, when the current time reaches the ACK transmission time, the ACK delay unit 112 transmits the ACK packet P197 held by the ACK delay unit 112.
  • the ACK delay unit 112 confirms the ACK transmission time and transmits ACK packets P198 and P199.
  • the data packet arrival interval has returned to the predetermined interval, so that an ACK packet is immediately transmitted.
  • Embodiments 1 and 2 the same effects as in Embodiments 1 and 2 can be obtained. Furthermore, in this embodiment, even if the data packet arrival interval changes due to network fluctuations, it is possible to control the transmission rate of the transmitting device by controlling the transmission interval of the ACK packet. It becomes. In addition, this embodiment is an implementation form. By combining with mode 3 or 4, the effect obtained in embodiment 3 or 4 can also be enjoyed.
  • the communication device (receiving device) in the present embodiment is substantially the same as the configuration shown in FIG. 8 of the first embodiment, and only the processing unit is different. Therefore, detailed description of the components other than the processing unit is omitted.
  • processing unit in receiving-side apparatus 31 of the present embodiment has substantially the same configuration as processing unit 33c shown in Fig. 17 of the fifth embodiment. Therefore, the processing unit in the present embodiment will be described below using FIG. 17 so as to clarify the difference from the fifth embodiment.
  • FIG. 17 shows a processing configuration example centering on the TCP processing unit in the receiving-side device 31 of the present invention.
  • functions of each processing unit will be described. Note that Embodiment 5 and the configuration example are the same, and there is only a slight difference in function. In describing the present embodiment, only the differences from the fifth embodiment will be described.
  • Reception rate determination section 110 in the present embodiment has the function shown in Embodiment 5, updates the ACK delay time and the ACK amount in response to a request to change the reception rate, and performs the A CK delay.
  • Section 112 has a function of notifying.
  • ACK delay section 112 in the present embodiment has the functions shown in Embodiment 5, and also has the ACK delay time and ACK amount determined by reception rate determination section 110 based on the reception rate change request. Is reflected in the transmitted ACK packet.
  • FIG. 20 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting device 38 is indicated by a solid line.
  • 1 packet length until 1 RTT elapses is assumed to be 1
  • the update amount is 4
  • the update interval (the above-mentioned predetermined interval) is T milliseconds.
  • the receiving side apparatus 31 receives the data packet P221 and transmits the ACK packet P212. Up to this point, receiving-side apparatus 31 performs the same data transmission / reception processing as in the fifth embodiment. Thereafter, it is assumed that the receiving-side device 31 wants to change the reception rate at the time of “reception rate change” in the figure. In the present embodiment, it is assumed that the reception interval (the above-mentioned predetermined interval) is to be changed to double 2T milliseconds. This rate change request is notified to the reception rate determination unit 110. The reception rate determination unit 110 that has received the reception rate change request instructs the ACK delay unit 112 to double the ACK packet delay time because it wants to double the reception interval.
  • ACK generation section 105 When receiving apparatus 31 receives data packet P222, ACK generation section 105 generates an ACK packet and passes it to ACK delay section 112.
  • the ACK delay unit 112 that has received the ACK packet adds the ACK packet delay time to the previous ACK transmission time to obtain the ACK packet transmission time.
  • the ACK transmission time calculated at this time is ahead of the ACK transmission time calculated without receiving the reception rate change request. Therefore, since the current time has reached the ACK transmission time when the data packet P 222 is received, the ACK delay unit 112 of the receiving side device 31 does not immediately transmit the ACK.
  • ACK generation section 105 generates an ACK packet and passes it to ACK delay section 112.
  • the ACK delay unit 112 that has received the ACK packet adds the ACK packet delay time to the previous ACK transmission time to obtain the ACK packet transmission time.
  • the ACK delay unit 112 immediately transmits 80003 ⁇ 4.
  • the ACK delay unit 112 subtracts the data amount 4 for the hold from the window size to transmit the ACK packet P213 as the window size 12. I do.
  • the receiving side device 31 performs reception processing of the data packets P224 and P225 and transmits an ACK packet P214. In this way, it is possible to change the transmission interval of data packets transmitted by the transmission side device 38 to double.
  • FIG. 21 is a sequence diagram showing another exchange of the data packet and the ACK packet in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting device 38 is indicated by a solid line.
  • 1RTT after the window update notification starts
  • the length of one packet is 1
  • the update amount is 4
  • the update interval is T milliseconds.
  • the receiving side device 31 receives the data packet P241 and transmits the ACK packet P232.
  • receiving-side apparatus 31 performs the same data transmission / reception processing as in the fifth embodiment. Thereafter, it is assumed that the receiving-side device 31 wants to change the reception rate at the time of “reception rate change” in the figure. In this embodiment, it is assumed that the update amount is to be changed to one half. This rate change request is notified to the reception rate determination unit 110. The reception rate determining unit 110 that has received the reception rate change request instructs the ACK delay unit 112 to halve the update amount because it wants to halve the update amount. That is, in the present embodiment, the update amount is changed to 2.
  • ACK generation section 105 generates an ACK packet and passes it to ACK delay section 112.
  • the ACK delay unit 112 that has received the ACK packet adds the ACK packet delay time to the previous ACK transmission time to obtain the ACK packet transmission time. Since the ACK transmission time calculated at this time reaches the current time at the time when the data packet P242 is received, the ACK delay unit 112 immediately transmits the ACK packet P233. However, the update amount of the ACK delay unit 112 is halved due to the reception rate change request. Therefore, since the ACK amount of the ACK packet that is about to be transmitted is four sequence numbers 18, 19, 20, and 21, and the update amount is 2, Yachi 13 ⁇ 4 @ extension unit 112 ) Set the window size to 14 and send ACK packet P233.
  • Window size previous window size stored by RWIN storage unit 111
  • the receiving-side device 31 transmits ACK packets P234, P235, and P236 while reducing the window size by two.
  • the receiving-side device 31 receives the data packet P246 from the transmitting-side device 38.
  • the same effects as in Embodiments 1, 2, and 5 can be obtained.
  • the transmission rate of data packets transmitted by the transmission side apparatus is dynamically changed by controlling the ACK transmission interval and window size according to the change in the reception status of the reception side apparatus. Is possible. Further, by combining the present embodiment with the third or fourth embodiment, the effects obtained in the third or fourth embodiment can be obtained.
  • the communication device (receiving device) in the present embodiment is substantially the same as the configuration shown in FIG. 8 of the first embodiment, and only the processing unit is different. Therefore, detailed description of the components other than the processing unit is omitted.
  • FIG. 22 is a configuration diagram illustrating an example of a functional configuration of a processing unit in the reception-side device 31 of the present embodiment.
  • the receiving-side device 31 of the present embodiment includes a processing unit 33d instead of the processing unit 33 of the first embodiment.
  • the processing unit 33d in the present embodiment has an additional function with respect to the processing unit 33 of the first embodiment, and therefore only the difference from the first embodiment will be described.
  • the processing unit 33d includes an IP processing unit 121, a TCP processing unit 122, and an application processing unit 123.
  • the TCP processing unit 122 of the receiving side device 31 of the present embodiment includes the TCP packet processing unit 124, the reception buffer 127, the window size calculation unit 128, the window update timer unit 129, and the reception rate determination unit 130. , And the previous RWIN storage unit 131.
  • the reception buffer 127, window size calculation unit 128, window update timer unit 129, and previous R WIN storage unit 131 are the reception buffer 47, window size calculation unit 48, window update timer unit 49 of the first embodiment. It has the same functions and configuration as the previous RWIN storage unit 51.
  • the TCP packet processing unit 124 includes an ACK generation unit 125 and a window update notification generation unit 126.
  • the TCP packet processing unit 124 is the TCP packet processing unit 4 described in the first embodiment.
  • the reception rate determination unit 130 is notified that the reception data packet has reached the update amount. It further has a function to
  • Reception rate determining section 130 has the function of reception rate determining section 50 shown in the first embodiment.
  • the reception rate determination unit 130 notifies the TCP packet processing unit 124 of the update amount, and notifies that the reception data packet has reached the update amount when the continuous reception data packet reaches the update amount.
  • the reception rate determining unit 130 calculates the update amount and the predetermined interval by any of the methods (Equation 3) to (Equation 8), and the window size calculation unit The value is transmitted to 128 and window update timer unit 129.
  • FIG. 23 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving side device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting side device 38 is indicated by a solid line.
  • one packet length is 1
  • the update amount is 4
  • the update interval is T milliseconds.
  • the transmission side device 38 has a function of slow start that gradually increases the amount of transmission data. For this reason, the number of transmission data packets transmitted by the transmission side device 38 is increased to 1 packet (P261), 2 packets (P262), and 4 packets (P263) per 1 RTT. Until the data packet P262 is received, the data update packet continuously transmitted from the transmission side device 38 has not reached the update amount in the reception side device 31, and therefore the window update notification function is not performed.
  • the receiving-side device 31 receives the data packet P263.
  • the receiving side device 31 that has received the data packet P263 generates and transmits an ACK packet P253 for the data packet P263.
  • the TCP packet processing unit 124 notifies the reception rate determining unit 130 that the update amount has been reached.
  • the reception rate determination unit 130 that is notified that the update amount has been reached receives the update amount (4 in this embodiment) to the window size calculation unit 128.
  • the transmission side device 38 that has received the ACK packet P253 transmits the subsequent sequence numbers 8, 9, 10, and 11 because of the window size of the received ACK packet P253.
  • the receiving side device 31 that has started the window update notification function, after transmitting the ACK packet P253, when the predetermined interval T milliseconds elapses, sets the update amount to the previously notified window size 4 according to (Equation 1). 4 is added, 8 is set to the window size of the window update notification packet, and the window update notification packet is notified to the transmission side device 38 (P254).
  • the transmitting side device 38 that has received the ACK packet P2 54 transmits 8 data packets including the already transmitted sequence numbers 8, 9, 10, and 11 because the window size of the received ACK packet P254 is 8. It becomes possible to do. Therefore, the transmission side device 38 transmits the data packet P264 of sequence numbers 12, 13, 14, and 15 that is a continuation of the data packet P263.
  • the same effect as in the first embodiment can be obtained, and even when the transmission side device performs a slow start, transmission from the reception side device to the transmission side device is possible.
  • the rate can be controlled. Further, the same effects as described above can be obtained even in the data transmission / reception processing shown in FIG.
  • FIG. 24 is a sequence diagram showing another exchange of the data packet and the ACK packet in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the reception side device 31 is indicated by a broken line
  • the data packet transmitted by the transmission side device 38 is indicated by a solid line.
  • 1 packet length is 1
  • update amount is 4
  • update interval predetermined interval
  • the data transmission / reception processing between the reception-side device 31 and the transmission-side device 38 is performed in the same manner as the processing shown in FIG. 23 until the data packet P343 is received.
  • the TCP packet processing unit 124 notifies the reception rate determining unit 130 that the update amount has been reached.
  • Receiving rate determination unit 130 which has been notified that the update amount has been reached, notifies window size calculation unit 128 of the update amount (4 in this embodiment) and activates window update timer to window update timer unit 129. Prompt and start the window update notification function.
  • the receiving-side device 31 that has started the window update notification function updates the window according to the following equation 14.
  • Window size previously notified window size + update amount ACK number increase amount...
  • Receiving side device 31 having received data packet P343 transmits an ACK packet P333 to the transmitting side device after receiving the data packet by the window update notification function.
  • the ACK packet P333 has an ACK number of 5 due to the increment of the ACK number 1, and a window size of 7 according to (Equation 14).
  • the transmitting side device 38 that has received the ACK packet P333 has the received ACK packet P333 having a window size of 7 and an ACK number of 5. Therefore, the sequence numbers 8, 9, 10 and 11 data packets P344 are transmitted.
  • the receiving device 31 uses the window update notification function to transmit the ACK packet P333 and when the predetermined interval of T milliseconds elapses, the update capacity is set to the previously notified window size 7 according to (Equation 14). Add 4 and calculate window size 10 based on ACK number increment 1.
  • the receiving side device 31 notifies the transmitting side device 38 of the ACK packet P334 having the calculated window size 10 set.
  • the transmitting side device 38 that has received the ACK packet P334 has a window size of 10 for the received ACK packet P334 and an ACK number of 6. Data packets P345 of 13, 14, and 15 are transmitted.
  • the present embodiment it is possible to obtain the same effect as in the first embodiment, and even when the transmission side device performs a slow start, the transmission from the reception side device to the transmission side device It is possible to control the rate. Further, by combining the present embodiment with the second, third, fourth, or the like, the effects obtained in the respective embodiments can also be enjoyed.
  • the window update notification function is started when the data packet continuously transmitted from the transmission side device 38 reaches the update amount.
  • the window update notification function may be started when time elapses or when the number of all data packets transmitted from the transmission side device 38 reaches a predetermined number.
  • the communication device (receiving device) in the present embodiment is substantially the same as the configuration shown in FIG. 8 of the first embodiment, and only the processing unit is different. Therefore, detailed description of the components other than the processing unit is omitted.
  • FIG. 25 is a configuration diagram illustrating an example of a functional configuration of a processing unit in the reception-side device 31 according to the present embodiment.
  • the receiving-side device 31 of the present embodiment includes a processing unit 33e instead of the processing unit 33 of the first embodiment.
  • the processing unit 33e includes an IP processing unit 141, a TCP processing unit 142, and an application processing unit 14.
  • the TCP processing unit 142 is described as a program executed by the processing unit 33e in the present embodiment, it may be implemented in an LSI or the like.
  • the solid line shows the data flow of transmission and reception packets
  • the broken line shows the flow related to the exchange of control information.
  • the TCP processing unit 142 of the reception-side device 31 includes a TCP packet processing unit 144, a reception buffer 147, a window size calculation unit 148, and a previous RWIN storage unit 149.
  • the TCP packet processing unit 144 has a TCP packet transmission / reception processing function.
  • the TCP packet processing unit 144 specifies the application of the received packet, and stores the packet in the reception buffer 147 for delivery to the application. Further, the TCP packet processing unit 144 has a function of constructing a TCP packet, passing it to the IP processing unit 141, and transmitting it as a TCP / IP packet.
  • the TCP packet processing unit 144 includes an ACK generation unit 145, a window update notification generation unit 146, and a packet loss detection unit 150.
  • the ACK generation unit 145 determines an ACK number based on the sequence number of the received TCP packet, and generates an ACK packet.
  • the currently receivable free space obtained from the window size calculation unit 148, that is, the window size is also set.
  • the window update notification generation unit 146 generates a window update notification packet when the reception buffer 147 has an empty space.
  • the window update notification generation unit 146 also uses the window size obtained from the window size calculation unit 148 as the window update notification packet.
  • the packet loss detection unit 150 has a function of detecting that a TCP packet is missing or lost. Further, the packet loss detection unit 150 has a function of notifying the window size calculation unit 148 that a loss has occurred.
  • the reception buffer 147 has a function of temporarily holding reception data to be passed to the application processing unit 143.
  • the reception buffer 147 can store the maximum RWIN-MAX data, and in response to a request from the application processing unit 143, the data temporarily stored in the reception buffer 147 is sequentially transferred to the application processing unit 143. .
  • the reception buffer 147 notifies the window update notification generation unit 146 that the window size has increased when the window size increases tl due to data being passed to the application processing unit 143.
  • the window size calculation unit 148 has a function of calculating a value to be notified to the transmission side device 38 as a window size. That is, window size calculation section 148 in the present embodiment calculates the window size based on the packet loss notified from packet loss detection section 150.
  • the window size is calculated by the following formula.
  • Window size Previously notified window size minus previous notified window size Amount of lost data ' ⁇ ⁇ ⁇ (Formula 15)
  • Window size Last notified window size + Update amount ⁇ ⁇ ⁇ ⁇ (Formula 16)
  • the update amount may be 1 MSS or multiple MSS.
  • the previous RWIN storage unit 149 has a function of recording and holding the window size (hereinafter referred to as the previous window size) used when the window update notification was performed last time.
  • the previous RWI N storage unit 149 passes the previous window size to be recorded and held to the window size calculation unit 148, receives the result calculated by the window size calculation unit 148, updates the previous window size, and holds the record.
  • FIG. 26 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet sent by the receiving device 31 or The window update notification packet is indicated by a broken line
  • the data packet transmitted by the transmission side device 38 is indicated by a solid line.
  • the receiving-side device 31 enters a state of receiving data transmitted from the transmitting-side device 38 through establishment of a connection with the transmitting-side device 38 or the like. At this time, the receiving-side device 31 notifies the transmitting-side device 38 that the window size is 8 (P351).
  • the transmission side device 38 transmits data packets P361 and P362 to the reception side device 31 based on the window size 8. However, it is assumed that the data packet P362 is lost because the network 37 is congested at this time or the capacity of the relay device is insufficient.
  • the receiving side device 31 that has not reached the data packet P362 transmits an ACK packet P352 up to the sequence number that has arrived.
  • the transmitting side device 38 that has received the ACK packet P352 transmits a data packet P363 that is a subsequent sequence number.
  • Receiving side device 31 receiving data packet P363 detects that sequence number 8 has been lost, and has received ACK packet P353 (hereinafter referred to as duplicate ACK packet) P353 similar to ACK packet P352 transmitted last time. Send only the number of packets (packets with sequence numbers 9 to 15). In the present embodiment, seven duplicate ACK packets P353 are transmitted. Receiving the duplicate ACK packet, the transmitting side device 38 knows that sequence number 8 has been lost, and retransmits data packet P364 with sequence number 8 using the high-speed retransmission function.
  • Receiving apparatus 31 that has received retransmitted data packet P364 reduces the window size according to (Equation 15) and transmits ACK packet P354 as window size 7. Since the window size set in the ACK packet is 7, the transmitting side device 38 that has received the ACK packet P354 transmits the data packet P365 for 7 packets.
  • transmission side device 38 again has a data packet having 8 packets as in the case of transmitting data packets P361 and P362. Is sent to the receiving device 31. As a result, the packet again The possibility of loss is increased.
  • the window size is set to 7 in ACK packet P354, it is possible to prevent packet loss from occurring again.
  • FIG. 27 is a sequence diagram showing another exchange of the data packet and the ACK packet in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving side device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting side device 38 is indicated by a solid line.
  • one packet length is 1
  • the update amount is 2
  • the predetermined time is H milliseconds.
  • the receiving-side device 31 enters a state of receiving data transmitted from the transmitting-side device 38 through establishment of a connection with the transmitting-side device 38 or the like. At this time, the receiving-side device 31 notifies the transmitting-side device 38 that the window size is 6 (P371).
  • the transmission side device 38 transmits the data packet P381 to the reception side device 31 based on the window size 6.
  • the receiving side device 31 that has received the data packet P381 transmits an ACK packet P372 indicating the ACK number 7 and the window size 6 to the transmitting side device 38.
  • Such data transmission / reception processing between the reception side device 31 and the transmission side device 38 is continuously repeated for a while.
  • the receiving-side device 31 increases the window size by the update amount according to (Equation 16) and notifies the window size as 8 ( P373).
  • the transmission side device 38 transmits the data packet P382 corresponding to the window size 8.
  • the transmission side device 38 can transmit more packets while suppressing the occurrence of packet loss. Therefore, in the present embodiment, if no packet loss occurs during the predetermined time H, the window size is set large, so that the data transfer efficiency can be improved.
  • the communication device (receiving device) in the present embodiment is substantially the same as the configuration shown in FIG. 8 of the first embodiment, and only the processing unit is different. Therefore, detailed description of the components other than the processing unit is omitted.
  • FIG. 28 is a configuration diagram illustrating an example of a functional configuration of a processing unit in the reception-side device 31 according to the present embodiment.
  • the receiving-side device 31 of the present embodiment includes a processing unit 33e instead of the processing unit 33 of the first embodiment.
  • the processing unit 33f includes an IP processing unit 161, a TCP processing unit 162, and an application processing unit 163.
  • the TCP processing unit 162 is described as a program executed by the processing unit 33f in the present embodiment, it may be implemented in an LSI or the like.
  • the solid line in the figure indicates the data flow of transmission / reception packets, and the broken line indicates the flow related to the exchange of control information.
  • the TCP processing unit 162 of the reception-side device 31 includes a TCP packet processing unit 164, a reception buffer 167, and a window size calculation unit 168.
  • the reception buffer 167 has the same function and configuration as the reception buffer 47 of the first embodiment.
  • the TCP packet processing unit 164 has a function of TCP packet transmission / reception processing.
  • the TCP packet processing unit 164 specifies the application of the received packet, and stores the packet in the reception buffer 167 for delivery to the application. Further, the TCP packet processing unit 164 has a function of constructing a TCP packet, passing it to the IP processing unit 161, and transmitting it as a TCPZlP packet.
  • the TCP packet processing unit 164 includes an ACK generation unit 165, a duplicate ACK generation unit 166, and a packet loss detection unit 169.
  • ACK generation section 165 determines an ACK number based on the sequence number of the received TCP packet, and generates an ACK packet.
  • the currently receivable free space obtained from the window size calculation unit 168, that is, the window size is also set.
  • Duplicate ACK generation section 166 has a function of generating and transmitting a duplicate ACK packet when notified by packet loss detection section 169 that a loss has occurred in the received packet. Further, the window size obtained from the window size calculation unit 168 is set in the duplicate ACK packet. [0294] The packet loss detection unit 169 has a function of detecting that a TCP packet is lost or lost. Further, the packet loss detection unit 169 notifies the duplicate ACK generation unit 166 that there is a packet loss.
  • the window size calculation unit 168 has a function of calculating the window size based on the availability of the reception buffer 167 and notifying the ACK generation unit 165 and the duplicate ACK generation unit 166.
  • FIG. 29 is a sequence diagram showing exchange of data packets and ACK packets in the present embodiment.
  • the ACK packet or window update notification packet transmitted by the receiving side device 31 is indicated by a broken line
  • the data packet transmitted by the transmitting side device 38 is indicated by a solid line.
  • the transmission-side device 38 When receiving the ACK packet P391 from the reception-side device 31, the transmission-side device 38 transmits data packets P401, P402, and P403 to the reception-side device P391. Here, it is assumed that the data packet P402 of the data packets P401, P402, and P403 transmitted by the transmission side device 38 is not received by the reception side device 31.
  • the receiving-side device 31 detects a missing packet when the data packet P403 arrives.
  • the receiving side device 31 that detects the packet loss immediately generates a predetermined number of ACK packets P392 and transmits them to the transmitting side device 38.
  • the transmitting side device 38 immediately retransmits the data packet P404 by the high speed retransmission function.
  • FIG. 30 is a diagram showing a configuration example of the network and a configuration example of the communication device according to the embodiment of the present invention.
  • the communication device 200A communicates with the communication device 100A via the network 3A.
  • the communication device 100A and the communication device 200A are devices having a communication function for connecting to the network 3A by wire or wirelessly.
  • a device having an Ethernet (registered trademark) interface for example, a PC (Personal Computer) or a network) Appliances capable of communication).
  • the network 3A is a network including wired or wireless, and examples include a public network such as the Internet.
  • communication device 100A and communication device 200A establish a TCP connection between them, and data is transmitted from communication device 200A to communication device 100A.
  • the data transmission source communication device 200A is referred to as a transmission side device
  • the data transmission destination communication device 10OA is referred to as a reception side device.
  • a receiving device that is an FTP client that performs an operation based on an application program downloads a file from a transmitting device that is an FTP (File Transfer Protocol) server (for example, a PC) or a POP (Post Office Protocol) server.
  • FTP File Transfer Protocol
  • PC for example, a PC
  • POP Post Office Protocol
  • Communication device 100A includes CPU 101A as a processing unit, storage unit 102A, system bus 103A, and communication unit 105A.
  • the communication unit 105A is hardware connected on the system bus 103A.
  • the communication unit 105A has a function of transmitting data passed by the CPU 101A to the network 3A, and a function of receiving data from the network 3A and passing it to the CPU 101A.
  • the communication unit 105A includes a reception FIFO memory 151A that temporarily holds data received by the network 3A, and a transmission FIFO memory 152A that temporarily holds data passed from the CPU 101A.
  • the communication unit 105A includes a data loss detection unit 150A that detects data loss when the data received from the network 3A overflows without being stored in the reception FIFO memory 151A.
  • the data loss detection unit 150A may notify the CPU 101A of the occurrence of an overrun only when the protocol and port number of the lost packet match the currently communicating protocol and port number. Good. Furthermore, the reception FIFO memory 151A and the transmission FIFO memory 152A can be shared for transmission and reception!
  • the CPU 101A has a function of moving (reading) the data stored in the reception FIFO memory 151A of the communication unit 105A to the storage unit 102A and the data stored in the storage unit 102A for transmission of the communication unit 105A. It has a function to move (write) to the FIFO memory 152A. Also, The CPU 101A also performs protocol processing including TCP such as data analysis and transmission data creation processing on the data stored in the storage unit 102A. In addition, the CPU 101A has a function of executing a communication application program and other programs as necessary using the storage unit 102A.
  • the communication devices 100A and 200A are separately provided with a DMA controller.
  • the data is moved by a DMA (Dirt Memory Access) controller that is not included in the CPU.
  • each protocol process may be performed by separate hardware, not by the CPU 101A.
  • FIG. 31 is a configuration diagram showing a functional configuration of the CPU 101A in the communication device 100A.
  • the functional configuration shown in FIG. 31 can be realized as software operating on CPU 101A shown in FIG.
  • the power communication device 100A described as a receiving-side device centering on TCP data reception processing according to the present invention includes a functional unit that performs TCP data transmission processing. It may be.
  • Communication device 200A may be a conventional communication device or a communication device having a reception processing function unit to which the present invention is applied.
  • the reception process according to the present invention will be described in detail, and the functions and operations related to the transmission process will be omitted. Further, the description of other configurations for realizing TCP communication that are not directly related to the present invention will be omitted.
  • the flow of data is shown using several types of lines.
  • the solid line is the data flow indicating the flow of the packet or data
  • the dotted line is the control flow indicating the flow of the control signal (notification or parameter).
  • the CPU 101A of the communication device 100A has a detailed configuration of a packet processing unit that processes a received or transmitted packet as an API unit 1100, a TCP processing unit 1200, an IP processing unit 1300, an IF processing unit 1400, And a MAC processing unit 1500.
  • the TCP processing unit 1200 includes a reception buffer 1240, a window control unit 1250, a WinUpdate generation unit 1260, a DupAck generation unit 1270, an Ack generation unit 1280, a TCP transmission unit 1220, and a TCP reception unit 121. 0, TCP loss detection unit 1215, and DupAck management unit 1230.
  • the MAC processing unit 1500 includes a loss notification unit 5000, a socket duplication unit 7000, a MAC transmission unit 1520, and a MAC reception unit 1510.
  • the API unit 1100 delivers data between the TCP processing unit 1200 and an application program such as FTP, and notifies the completion of the processing.
  • the API unit 1100 requests the TCP processing unit 1200 to exchange data, and converts the data passed from the TCP processing unit 1200 as necessary so that the application program can process it. And copying, and notifies the TCP processing unit 1200 of the completion of the processing.
  • the TCP processing unit 1200 converts the TCP packet received from the IP processing unit 1300 into data to be passed to the API unit 1100.
  • the TCP processing unit 1200 extracts and holds data included in one or more TCP packets received from the IP processing unit 1300 from the TCP packet, and corresponds to the data transfer request from the API unit 1100. Pass data.
  • the TCP processing unit 1200 creates an Ack for the TCP packet received from the IP processing unit 1300 and passes it to the IP processing unit 1300.
  • Ack is described as an ACK or an ACK packet in the first to ninth embodiments.
  • IP processing unit 1300 extracts the TCP packet from the IP packet received from IF processing unit 1400 and passes it to TCP processing unit 1200. Also, the IP processing unit 1300 adds an IP header to the TCP packet received from the TCP processing unit 1200 to construct an IP packet, and passes it to the IF processing unit 1400.
  • IF processing section 1400 extracts the IP bucket from the MAC frame received from MAC processing section 1500, and passes it to IP processing section 1300. Further, IF processing section 1400 adds a MAC header to the IP packet received from IP processing section 1300 to construct a MAC frame and passes it to MAC processing section 1500.
  • the MAC processing unit 1500 passes the data received by the communication unit 105A shown in Fig. 30 to the IF processing unit 1400. This process is a process of transferring (reading) data from the reception FIFO memory 151A of the communication unit 105A in FIG. 30 to the storage unit 102A in FIG. Further, MAC processing unit 1500 passes the MAC frame received from IF processing unit 1400 to communication unit 105A. This process This is a process of passing (writing) data from the storage unit 102A of FIG. 30 to the transmission FIFO memory 152A of the communication unit 105A.
  • the reception buffer 1240 of the TCP processing unit 1200 is a buffer area for managing data received from the TCP reception unit 1210.
  • the actual data to be managed is arranged in the storage unit 102A in FIG.
  • the reception buffer 1240 has a function of passing data to be managed to the API unit 1100 and freeing a buffer area that holds the completed data.
  • it in response to an inquiry about the usable buffer size from the window control unit 1250, it has a function of transmitting the usable buffer size to the window control unit 1250.
  • the window control unit 1250 queries the reception buffer 1240, calculates Win from the usable buffer size obtained together, and holds it. In the present embodiment, Win is described as the window size in the first to ninth embodiments. In addition, the window control unit 1250 passes the managed Win to each of the DupAck management unit 1230 and the Ack generation unit 1280 inquiries of Win. Further, when the window control unit 1250 receives a notification of completion of the application process from the API unit 1100, the window control unit 1250 calculates Win from the usable buffer size obtained by inquiring the reception buffer 1240, and the calculated Win is used as the DupAck management unit. Pass to 1230.
  • WinUpdate generation unit 1260 When the WinUpdate generation unit 1260 receives Win from the DupAck management unit 1230, the WinUpdate generation unit 1260 creates WindowUpdate (Ack that notifies the sending side device that the Win that can be received has increased, hereinafter WinUpdate) and creates the TCP transmission unit 1220. To pass.
  • WindowUpdate Ack that notifies the sending side device that the Win that can be received has increased, hereinafter WinUpdate
  • the DupAck generation unit 1270 generates a DupAck (Duplicate acknowledgement) from the DupAck information received from the DupAck management unit 1230 and passes it to the TCP transmission unit 1220.
  • the DupAck information includes a sequence number (hereinafter referred to as Seq) that is an ACK number of Embodiments 1 to 9 and Win.
  • Seq sequence number
  • the DupAck or DupAck packet corresponds to the duplicate ACK in the first to ninth embodiments.
  • the Ack generation unit 1280 When the Ack generation unit 1280 receives a Seq from the TCP reception unit 1210, the Ack generation unit 1280 is based on Win obtained by making an inquiry to the Window control unit 1250 and the Seq received from the TCP reception unit 1210. Create an Ack and pass it to the TCP transmitter 1220.
  • this embodiment is configured as a first packet generation unit that generates DupAck or Ack, which is a power confirmation response packet of each of the DupAck generation unit 1270 and the Ack generation unit 1280.
  • the TCP transmission unit 1220 sets the TCP header information necessary for the TCP packet (DupAck or Ack) received from the DupAck management unit 1230 or the Ack generation unit 1280, and sends the TCP packet to the IP processing unit 1300. hand over.
  • the TCP reception unit 1210 includes a TCP loss detection unit 1215 that investigates whether the Seq of the TCP packet is in order.
  • the TCP processing unit 1200 receives data from the TCP packet when the Seq of the TCP packet received from the IP processing unit 1300 is in order (when the TCP loss detection unit 1215 does not detect the loss of the TCP bucket). Perform the extraction process and pass it to the receive buffer 1240. Also, the TCP reception unit 1210 passes the next Seq to the Ack generation unit 1280 when the Seq is in order. Note that the function of passing the next Seq to the Ack generation unit 1280 does not have to occur every time. In this case, the notification to the Ack generation unit 1280 is notified at a rate of once every plural times, or is performed after a predetermined time of the system timer power by the Delayed Ack algorithm.
  • the TCP loss detection unit 1215 adjusts the Seq of the TCP packet received by the TCP reception unit 1210. If the Seq is not in order, the expected Seq is passed to the DupAck management unit 1230.
  • the DupAck management unit 1230 holds the Seq received from the TCP loss detection unit 1215 and Win obtained by making an inquiry to the Window control unit 1250 as DupAck information. Further, the DupAck management unit 1230 passes the DupAck information to the DupAck generation unit 1270 and counts the number of times passed as the number of DupAck transmissions.
  • the DupAck management unit 1230 When the DupAck management unit 1230 receives Win from the window control unit 1250, the DupAck transmission number held by the DupAck transmission number is less than the predetermined number based on the packet loss information from the loss notification unit 5000. Is calculated. If the result is greater than or equal to ⁇ , the DupAck management unit 1230 generates DupAck information (Seq and Win) to be held before passing Win received from the window control unit 1250 to the WinUpdate generation unit 1260. Pass to part 1270. Then, the DupAck management unit 1230 notifies the calculated number of DupAck duplications to the inquiry of the packet duplication unit 7000. In the present embodiment, the DupAck replication number calculated by the DupAck management unit 1230 will be described by taking an example of management in units of packets.
  • the number of DupAck duplications may be managed as one unit not in units of packets to be transmitted, for example, in units of TCP connections or the entire communication device.
  • the DupAck management unit 1230 erases the packet loss information received from the packet loss notification unit 5000, and further sets the DupAck duplication number and the DupAck transmission number to the initial values. Reset to.
  • the initial value of the number of DupAck replicas will be explained by taking 1 as an example.
  • the initial value of the number of DupAck transmissions will be explained using 0 as an example.
  • the MAC processing unit 1500 includes a MAC reception unit 1510, a MAC transmission unit 1520, and a loss notification unit 5000. A detailed description of each is given below.
  • MAC reception unit 1510 passes the MAC frame (P200) read from reception FIFO memory 151A of communication unit 105A in Fig. 30 to IF processing unit 1400. That is, the MAC receiver 1510
  • the data in the reception FIFO memory 151A in FIG. 30 is moved to the storage unit 102A via the CPU 101A.
  • the MAC transmission unit 1520 includes a packet duplication unit 7000.
  • the MAC transmission unit 1520 writes the MAC frames received from the IF processing unit 1400 in the transmission FIFO memory 152A of the communication unit 105A in FIG. 30 by the number of copies indicated by the packet duplication unit 7000 (P100). That is, the MAC transmission unit 1520 attempts to move data from the CPU 101A in FIG. 30 to the transmission FIFO memory 152A. Therefore, the MAC transmission unit 1520 duplicates DupAck and writes it in the transmission FIFO memory 152A.
  • the packet duplication unit 7000 makes an inquiry to the DupAck management unit 1230, and instructs the MAC transmission unit 1520 to send the target MAC frame N times based on the number of DupAck duplications (N) obtained from the inquiry. To do.
  • the packet duplication unit 7000 moves the data of the target MAC frame once. As N times duplicate and send You can only give instructions to do so.
  • MAC transmitting section 1520 and packet duplicating section 7000 are configured as second packet generating means for generating DupAck that is a data request packet.
  • the loss notification unit 5000 receives the packet loss notification (E150) from the data loss detection unit 150A in Fig. 30 and passes the packet loss information to the DupAck management unit 1230.
  • the packet loss notification (E150) includes an IP address, protocol, and port number
  • the loss notification unit 5000 also passes the IP address, protocol, and port number as packet loss information to the DupAck management unit 1230.
  • the DupAck management unit 1230 based on the IP address and port number acquired from the loss notification unit 5000, the DupAck management unit 1230 identifies the transmission-side device 200A that is a partner that prompts retransmission of the lost packet.
  • the DupAck management unit 1230 includes device specifying means.
  • FIG. 32 taking as an example a case where communication apparatus 100 A is operated as a reception-side apparatus and communication apparatus 200 A as a transmission-side apparatus. .
  • FIG. 32 shows a communication sequence between communication devices in the present embodiment.
  • the performance of the receiving device 100A is low (for example, the performance of the CPU 101A is 133 MHz).
  • the length of one packet (LEN) stored in one packet is set to 1 KByte, and the units and values of Seq and Win are adjusted accordingly.
  • FIG. 32 shows a situation where Win of the receiving side device 100A is decreasing.
  • the communication sequence up to this point is omitted.
  • the receiving-side apparatus 100A copies the already transmitted DupAck (P14) and transmits the copied DupAck (P15) to the transmitting-side apparatus 200A.
  • the “communication unit” surrounded by a dotted line indicates the communication unit 105A of FIG. 30, and the “MAC” surrounded by a dotted line indicates the MAC processing unit 1500 of FIG. 31, and is surrounded by a dotted line.
  • “IF” indicates the IF processing unit 1400 in FIG.
  • IP surrounded by a dotted line
  • TCP TCP processing unit 1200 in FIG. 31
  • API API surrounded by a dotted line
  • application indicates the application program of FIG.
  • the Seq l bucket (P21) transmitted from the communication device (transmission side device) 200A is transmitted via the network 3A to the communication unit 105A ⁇ of the communication device (reception side device) 100A.
  • reception processing is performed.
  • the TCP reception unit 1210 notifies the transmission side device 200A that the data has been received.
  • the Ack generation unit 1280 that receives Seq from the TCP reception unit 1210 uses the Window control unit 1250 to inquire the reception buffer 1240 about currently receivable Wins.
  • TCP transmission section 1220 performs TCP header construction processing on the TCP packet
  • IP processing section 1300 and IF processing section 1400 perform packet construction on the TCP packet subjected to the TCP header construction processing.
  • the data loss detection unit 150A notifies the CPU 101A that an overrun has occurred (control flow E100). That is, the loss notification unit 5000 receives the packet loss notification and passes the packet loss information to the DupAck management unit 1230 of the TCP processing unit 1200. The DupAck management unit 1230 holds the received packet loss information.
  • the processing sequence (P231, P131, P241, P141) will be described. Since the processing for the data of P23 and P24 is the same as the processing for the data of P21, description of those processing is omitted here. Also, the processing for P13 and P14 data is Since it is the same as the process, the description of the process is omitted here.
  • the TCP receiver 1210 analyzes the TCP header of the received TCP packet and completes the non-packetization process.
  • the constructed packet (MAC frame) is output to the packet duplicating unit 7000 of the MAC processing unit 1500.
  • the packet duplicating unit 7000 inquires of the DupAck management unit 1230 about the number of duplications, and the duplication number is “1”, so that the MAC processing unit 1500 is not instructed to duplicate the packets.
  • the MAC transmission unit 1520 writes only one packet into the transmission FIFO memory 152A of the communication unit 105A.
  • DupAck (P14) is the TCP processing unit from the 2012 MAC processing ⁇ 1500 knock-over replication ⁇ 7000 ⁇ MAC transmission ⁇ 1520 ⁇ ⁇ ⁇ thus the communication ⁇ 105A FIFO memory 152A (Data flow P141).
  • the Win state (W12 shown in Fig. 32) has not changed since the Ack (PI 2) was received from the receiving apparatus 100A.
  • the receiving side device 100A receives the reception buffer 1240 and the DupAck management unit in response to a reception request from the application program.
  • the 1230 passes the received data to the application program via the API unit 1100 (data flow P212).
  • the API unit 1100 When the reception of the received data to the application is completed, the API unit 1100 notifies the window control unit 1250 that the reception has been completed (data flow P213).
  • the packet-constructed DupAck packet (MAC frame) is output to the packet duplicating unit 7000 of the MAC processing unit 1500.
  • the packet replication unit 7000 makes an inquiry to the DupAck management unit 1230.
  • the packet duplication unit 7000 instructs the MAC transmission unit 1520 to write one packet to the transmission FIFO memory 152A of the communication unit 105A based on the DupAck duplication number “1” obtained from the DupAck management unit 1230. To do.
  • the MAC transmission unit 1520 writes one DupAck packet to the transmission FIFO memory 152A.
  • MAC transmission unit 1520 since the number of DupAck duplications is “1”, MAC transmission unit 1520 writes a DupAck packet only once in transmission FIFO memory 152A of communication unit 105A. When the number is N (N ⁇ 2), N DupAck packets are transmitted by writing the same N times.
  • the packet written in the transmission FIFO memory 152A of the communication unit 105A is transmitted as a DupAck packet (P15) from the communication unit 105A to the transmission side device 200A via the network 3A.
  • the WinUpdate generation unit 1260 creates WinUpdate and passes it to the TCP transmission unit 1220.
  • the WinUpdate passed to the TCP transmission unit 1220 is constructed through the IP processing unit 1300 and the IF processing unit 1400 (data flow P161).
  • the WinUpdate packet (MAC frame) having the packet structure is passed from the MAC transmission unit 1520 to the communication unit 105A.
  • Communication unit 105A transmits the WinUpdate (P16) packet to transmitting side device 200A via network 3A.
  • the DupAck management unit 1230 sends the control flow after transmitting the duplicated DupAck packet (P15).
  • E100 deletes the packet loss information passed from the loss notification unit 5000 and holds it, and Dup
  • the DupAck management unit 1230 receives the packets of the sequence with the packet loss, and the DupAck management unit 1230 deletes the DupAck information (Seq and Win) stored in the DupAck management unit 1230, and the number of DupAck transmissions Is set to “0”, and the DupAck replication count is set to “0”.
  • the packet loss information is erased even if the DupAck management unit 1230 duplicates the DupAck, and even after the packet loss information is received from the loss notification unit 5000 and the power is too long (for example, after 1 second) The packet loss information may be deleted.
  • the DupAck management unit 1230 includes a reset unit.
  • the packet duplicating unit 7000 manages the number of packets that have received packet loss information from the loss notifying unit 5000, and erases the packet loss information when a specific number of packets is transmitted. Even so.
  • FIG. 34 is a flowchart showing an algorithm of the DupAck replication number calculation method in the present embodiment.
  • the DupAck management unit 1230 Upon receiving the Win update notification from the window control unit 1250, the DupAck management unit 1230 checks whether the number of DupAck transmissions held is 1 or more and less than N (step S100). Further, the DupAck management unit 1230 investigates whether or not the loss notification is performed by the loss notification unit 5000 and packet loss information is recorded (step S102).
  • step S100 if the number of DupAck transmissions managed by itself is 0 or less or (N + 1) or more (N in step S100), the DupAck management unit 1230 sets the number of DupAck duplications to “0”. (Step S104). On the other hand, when the number of DupAck transmissions held is 1 or more and less than N (Y in step S100), the DupAck management unit 1230 executes the process of step S102.
  • N is the number (a predetermined number or a necessary number) of DupAck necessary for causing the transmission side apparatus to perform retransmission.
  • step S102 If packet loss information from the loss notification unit 5000 is recorded in step S102 (Y in step S102), the DupAck management unit 1230 calculates the number of DupAck duplications using the formula “N — DupAck transmission number”. Calculate (step S106). On the other hand, when packet loss information is not recorded (N in Step S102), the DupAck management unit 1230 sets the number of DupAck duplications to “0” (Step S104).
  • N is preferably the number at which the transmitting-side apparatus 200A activates high-speed retransmission.
  • N is 3 as an example, and it is a condition for avoiding packet loss in a DupAck network, and may be 3 or more.
  • a large value is particularly effective when DupAck is likely to disappear on a route with poor network quality. However, if this value is large, it will lead to an increase in network traffic, so it is not desirable to increase it unnecessarily. Desirably 3 or at most 4 is preferred.
  • the transmission side device 200A is activated to perform high-speed retransmission, and the throughput reduction due to TCP retransmission is suppressed, and the reception side device 100A has the effect.
  • the effect of activating high-speed retransmission of the sending side device 200A only when packet loss occurs, the effect of not overloading the network, the effect of suppressing unnecessary traffic due to duplicating DupAck, and the receiving side device required for DupAck transmission It has the effect of reducing CPU consumption of 100A and the effect of not sending an incorrect DupAck.
  • receiving-side apparatus 100A reduces data loss in communication unit 105A. Detected force The receiving side device 100A according to this modification detects a data entry in the IP processing unit 1300.
  • FIG. 35 is a diagram showing a network configuration example and a communication device configuration example of the first modification example in the tenth embodiment.
  • the communication unit 105A is hardware connected on the system bus 103A, and includes the data loss detection unit 150A like the communication unit 105A of the above-described embodiment 10! /, NA! /, .
  • the communication unit 105A has a function of transmitting data passed by the CPU 101A to the network 3A and a function of receiving data received from the network 3A.
  • the communication unit 105A also includes a reception FIFO memory 151A that temporarily holds data received by the network 3A and a transmission FIFO memory 152A that temporarily holds data passed from the CPU 101A.
  • FIG. 36 is a configuration diagram showing a functional configuration of the CPU 101A in the receiving-side device 100A.
  • the solid line is the data flow indicating the data flow
  • the dotted line is the control flow indicating the control signal flow.
  • the CPU 101A of the receiving side device 100A includes an API unit 1100, a TCP processing unit 1200, an IP processing unit 1300, and a MAC processing unit 1500. Is provided. The explanation of each function part in Fig. 36 is shown below. Since the API unit 1100 and the TCP processing unit 1200 are exactly the same as the functions of the tenth embodiment, description thereof will be omitted.
  • MAC processing unit 1500 does not include loss notification unit 5000 but includes only MAC reception unit 1510 and MAC transmission unit 1520.
  • the MAC reception unit 1510 and the MAC transmission unit 1520 have the same functions as those in the tenth embodiment.
  • IP processing unit 1300 extracts TCP packets from IP packets received from IF processing unit 1400, and delivers them to TCP processing unit 1200 in the same manner as IP processing unit 1300 in Embodiment 10 above. The Also, the IP processing unit 1300 adds an IP header to the TCP packet received from the TCP processing unit 1200 to construct an IP packet, and passes it to the IF processing unit 1400. Unlike the IP processing unit 1300 of the tenth embodiment, the IP processing unit 1300 includes a reception FIFO queue 1310, a data loss detection unit 150A, and a loss notification unit 5000.
  • the reception FIFO queue 1310 is an area for temporarily storing data passed from the IF processing unit 1400. A part of the area of the storage unit 102A is allocated to this area, and the reception FIFO queue 1310 has a function of managing data stored in the area. That is, the reception FIFO queue 1310 manages the data received from the IF processing unit 1400 so that the IP processing unit 1300 processes the data in the order received (first-in first-out).
  • the data loss detection unit 150A detects that a reception overrun has occurred in the reception FIFO queue 1310, and notifies the loss notification unit 5000 of a packet loss notification (E150).
  • the loss notification unit 5000 receives the packet loss notification (E150) from the data loss detection unit 150A, and passes the packet loss information notifying that a loss has occurred to the DupAck management unit 1230 of the TCP processing unit 1200 .
  • the packet loss notification (E150) includes the IP address, protocol, and port number
  • the loss notification unit 5000 passes the packet loss information including the IP address, protocol, and port number to the DupAck management unit 1230.
  • the “communication unit” surrounded by a dotted line indicates the communication unit 105A of FIG. 35
  • the “MAC” surrounded by a dotted line indicates the MAC processing unit 1500 of FIG. 36 and surrounded by a dotted line.
  • “IF” indicates the IF processing unit 1400 in FIG. 36
  • IP surrounded by a dotted line indicates the IP processing unit 1300 in FIG.
  • TCP TCP processing unit 1200 of Fig. 36
  • API API surrounded by a dotted line indicates the API unit 1100 of Fig. 36, surrounded by a dotted line.
  • the “application” shown in FIG. 36 represents the application program shown in FIG.
  • Seq 2 packet (P22) transmitted from communication apparatus (transmission side apparatus) 200A is received and processed by communication unit 105A of communication apparatus (reception side apparatus) 100A via network 3A.
  • the MAC receiving unit 1510 of the MAC processing unit 1500 receives the packet (P22) read from the receiving FIFO memory 151A of the communication unit 105A.
  • the speed or power of processing to pass the IP packet from the IF processing unit 1400 to the receiving FIFO queue 1310 of the IP processing unit 1300 extracts the TCP packet from the IP packet and extracts the TCP packet. Exceeds the speed or amount of processing to pass to the TCP processing unit 1200, and overrun occurs in the reception FIFO queue 1310.
  • the data loss detection unit 150A notifies the loss notification unit 5000 that a loss has occurred (E150).
  • the loss notification unit 5000 receives a packet loss notification that an overrun has occurred in the reception FIFO queue 1310, and passes the packet loss information to the DupAck management unit 1230 of the TCP processing unit 1200.
  • the IP processing unit 1300 has been described as having the reception FIFO queue 1310.
  • the IF processing unit 1400 A data loss detection unit and a loss notification unit may be provided. It is also possible to investigate the lost data and notify only when it is a specific protocol (eg, IPv4, IPv6).
  • the data loss detection unit 150A may investigate the lost data and notify the loss only when the data loss is a specific protocol (eg, TCP)! /.
  • a specific protocol eg, TCP
  • the data loss detection unit 150A may add the address of the lost data and the port number to the packet loss notification. Further, the DupAck management unit 1230 may determine loss based on the received IP address or port number.
  • the above processing is performed, so that the transmission side device 200A can perform high-speed re-transmission.
  • the effect of suppressing the throughput drop due to TCP retransmission by sending a transmission the effect of activating the high-speed retransmission of the sending device 200A only when the packet loss of a specific TCP packet in the receiving device 100A, and the network Has the effect of not overloading the network, the effect of suppressing unnecessary traffic due to duplicate DupAck, and the effect of not sending an incorrect DupAck.
  • the DupAck is duplicated by the MAC processing unit 1500.
  • the DupAck is duplicated by the TCP processing unit 1200.
  • FIG. 38 is a configuration diagram showing a functional configuration of the CPU 101A according to the second modification example of the tenth embodiment.
  • the solid line is the data flow showing the data flow
  • the dotted line is the control flow showing the control signal flow.
  • the CPU 101A of the receiving side device 100A includes an API unit 1100, a TCP processing unit 1200, an IP processing unit 1300, and a MAC processing unit 1500. Is provided. A description of each functional unit in FIG. 38 is given below. Note that the API unit 1100, IP processing unit 1300, and IF processing unit 1400 are exactly the same as the functions of the above-described tenth embodiment, and thus description thereof is omitted.
  • the TCP processing unit 1200 is characterized by the TCP transmission unit 1220 provided with the packet duplication unit 7000.
  • the TCP transmission unit 1220 sets necessary TCP header information in the TCP packets (Ack, WinUpdate, and DupAck) received from the Ack generation unit 1280, the WinUpdate generation unit 1260, and the Dup Ack generation unit 1270.
  • the TCP packet in which the TCP header information is set is passed to the IP processing unit 1300. Also, the TCP transmission unit 1220 passes the Dup Ack duplicated by the packet duplication unit 7000 to the IP processing unit 1300.
  • the packet duplication unit 7000 Based on the number of DupAck duplications obtained by inquiring the DupAck management unit 1230, the packet duplication unit 7000 duplicates the DupAck by the number of DupAck duplications, Instructs the TCP transmission unit 1220 to pass it to the processing unit 1300.
  • the packet duplicating unit 7000 force DupAck is configured as second packet generating means for generating a data request packet.
  • MAC processing unit 1500 does not include packet duplication unit 7000.
  • MAC reception unit 1510, MAC transmission unit 1520, and loss notification unit 5000 have the same functions as those in the tenth embodiment.
  • the processing in receiving-side apparatus 100A in the present modification will be described using the processing sequence shown in FIG.
  • the “communication unit” surrounded by a dotted line in FIG. 33 indicates the communication unit 105A in FIG. 30, and the “MAC” surrounded by a dotted line indicates the MAC processing unit 1500 in FIG.
  • “IF” surrounded by a dotted line indicates the IF processing unit 1400 in FIG. 38
  • “IP” surrounded by a dotted line indicates the IP processing unit 1300 in FIG. 38.
  • TCP surrounded by a dotted line indicates the TCP processing unit 1200 of FIG. 38
  • “ ⁇ , surrounded by a dotted line indicates the API unit 1100 of FIG. 38, surrounded by a dotted line.
  • “Application” shown in FIG. 38 represents the application program shown in FIG.
  • the DupAck management unit 1230 that has received Win holds the packet loss information in the control flow E100 V, so the DupAck transmission number “2” and the predetermined number “3” force also set the DupAck replication number to the predetermined number. Calculate by the method (DupAck replication number calculation method shown in Fig. 34).
  • the knotting duplication unit 7000 inquires the DupAck received from the DupAck generation unit 1270 from the DupAck management unit 1230, and duplicates the number of DupAck duplications obtained and transmits the DupAck to the TCP transmission unit 1220. In the above example, since the number of DupAck duplications is “1”, the packet duplication unit 7000 instructs the TCP transmission unit 1220 to transmit the one DupAck without duplicating the received DupAck.
  • the packet duplication unit 7000 duplicates the DupAck so that the total number of DupAck is N, and the TCP transmission unit 1220 receives the duplicated DupAck ( Instruct to send all (including the copy source DupAck).
  • the TCP transmission unit 1220 passes the DupAck instructed to transmit to the packet duplication unit 7000 to the IP processing unit 1300. Then, DupAck is constructed through the IF processing unit 1400, and is written into the FIFO memory 152A of the communication unit 105A by the MAC transmission unit 1520 of the MAC processing unit 1500.
  • reception-side apparatus 100A duplicates and transmits DupAck at the timing based on the state of the window. However, reception-side apparatus 100A according to this modification changes to the Window state. Instead, the DupAck is copied and transmitted at the timing of the first DupAck transmission.
  • the TCP processing unit 1200 according to this modification is characterized by the DupAck management unit 1230.
  • the DupAck management unit 1230 uses the received Seq and the Win obtained by making an inquiry to the window control unit 1250 as DupAck information. Calculate the DupAck replication number and keep it. More In addition, the DupAck management unit 1230 passes the DupAck information to the DupAck generation unit 1270, and counts the number of times passed as the number of DupAck transmissions.
  • the DupAck management unit 1230 notifies the DupAck duplication number calculated in response to the inquiry from the packet duplication unit 7000.
  • the DupAck duplication number calculated by the DupAck management unit 1230 will be described by taking management in units of packets as an example.
  • the DupAck management unit 1230 when the DupAck management unit 1230 notifies the packet duplication unit 7000 of the DupAck duplication number, the DupAck management unit 1230 has a function of deleting the packet loss information received from the packet loss notifying unit 5000 and further initializing the DupAck duplication number.
  • the initial value of the number of DupAck replicas will be explained using “1” as an example.
  • the initial value of the number of DupAck transmissions will be described using “0” as an example.
  • FIG. 39 is a diagram showing a communication sequence between communication devices according to this modification.
  • this communication sequence shows a sequence example when the performance of the receiving-side apparatus 100A is low (for example, the performance of the CPU is 133 MHz).
  • the MAC reception unit 1510 of the MAC processing unit 1500 receives the data (MAC frame) (P23) read from the reception FIFO memory 151A of the communication unit 105A.
  • the reception buffer 1240 manages the data that does not arrive in order and holds the data until the data arrives in order.
  • the DupAck management unit 1230 holds Seq and Win when the first DupAck is created, and the DupAck creation power also changes Seq and Win after a predetermined time has elapsed before the TimeOut due to retransmission. It may be passed to the DupAck generation unit 1270, and the number of replicas corresponding to the lack of DupAck (number of replicas) may be calculated.
  • the DupAck management unit 1230 keeps Seq and Win when the first DupAck is created, and the DupAck creation power also falls below the predetermined threshold before the time out due to retransmission.
  • Seq and Win may be passed to the DupAck generation unit 1270 to calculate the number of duplicates (number of duplicates) that is insufficient for DupAck.
  • the TCP transmission unit 1220 outputs DupAck, and the DupAck is constructed through the IP processing unit 1300 and the IF processing unit 1400 (data flow P131).
  • the packet duplication unit 7000 of the MAC transmission unit 1520 transmits two MAC frames received from the IF processing unit 1400 to the MAC transmission unit 1520 according to “2” of the DupAck duplication number obtained by inquiring from the DupAck management unit 1230. To instruct.
  • the MAC transmission unit 1520 duplicates the received MAC frame and writes the two MAC frames in the transmission FIFO memo U 152A of the communication unit 105A.
  • the two DupAck (MAC frames P13 and P14) written in the transmission FIFO memory 152A of the communication unit 105A are transmitted to the transmission-side apparatus 200A via the network 3A.
  • the DupAck management unit 1230 deletes the packet loss information received from the loss notification unit 5000.
  • the DupAck replication count is initialized to “1”.
  • the reception buffer 1240 manages the strong data that has not arrived in order until the data has arrived in order.
  • the DupAck management unit 1230 inquires about the currently receivable Win through the window control unit 1250 through the window control unit 1250, and obtains the Win obtained from the inquiry and the Seq received from the TCP loss detection unit 1215 as DupAck information. Hold as.
  • the DupAck management unit 1230 passes the DupAck information to the DupAck generation unit 1270.
  • the DupAck management unit 1230 since the DupAck management unit 1230 has not received the packet loss information from the loss notification unit 5000, it does not calculate the number of DupAck replicas. The number of DupAck replicas remains “1”.
  • the TCP transmission unit 1220 outputs DupAck, and the DupAck passes through the IP processing unit 1300 and the IF processing unit 1400, and a packet is constructed (data flow P141).
  • the packet-structured DupAck (MAC frame) is acquired by the MAC transmission unit 1520 of the MAC processing unit 1500.
  • the packet replication unit 7000 inquires of the DupAck management unit 1230 about the number of DupAck replications, and grasps that the number of replications is “1”. When the number of copies is “1”, the MAC transmission unit 1520 writes only one MAC frame to the transmission FIFO memory 152 A of the communication unit 105A.
  • FIG. 41 is a flowchart showing the algorithm of the Dup Ack replication number calculation method by the DupAck management unit 1230 of the TCP processing unit 1200 in this modification.
  • the DupAck management unit 1230 investigates whether or not the packet loss information received by the loss notification unit 5000 is recorded (step S202).
  • step S200 the DupAck management unit 1230 determines that the result obtained by subtracting “2” from the quotient (WinZMSS) obtained by dividing Win by MSS is equal to or greater than the predetermined number “N” (N in step S200). ), The DupAck replication count is set to “1” (step S204). On the other hand, if the result obtained by subtracting “2” from the quotient obtained by dividing Win by MSS (WinZMSS) is less than the predetermined number “N” (Y in step S200), DupAck management unit 1230 performs the process in step S202. Execute.
  • the MSS is “1”, for example, and packet loss information from the loss notification unit 5000 is recorded.
  • each functional block in the block diagrams (FIG. 8, FIG. 30, FIG. 35, etc.) is typically Realized as an integrated circuit LSI. These may be individually made into one chip, or may be made into one chip so as to include some or all of them (for example, functional blocks other than memory may be made into one chip).
  • IC integrated circuit
  • system LSI system LSI
  • super LSI super LSI
  • non-linear LSI depending on the difference in the power integration level of LSI.
  • the method of circuit integration is not limited to LSI's, and implementation using dedicated circuitry or general purpose processors is also possible.
  • An FPGA Field Programmable Gate Array
  • a reconfigurable 'processor that can reconfigure the connection and settings of the circuit cells inside the LSI may be used.
  • the communication device of the present invention has the effect of being able to control data transmission traffic spontaneously according to its own reception capability and to reduce the control processing load, for example, TCP and TCP. Communication with equivalent window control and acknowledgment functions
  • the present invention can be applied to any communication device that performs reception processing based on a communication protocol.

Landscapes

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

Abstract

 データの送信トラフィックを自らの受信能力に応じて自発的に制御し得るとともに、その制御処理負担を軽減した通信装置を提供する。  データを受信する通信部(35)と、通信部(35)によって受信されたデータに対する送信側装置(38)への応答内容を示すACKパケットを生成し、送信側装置(38)に送信するACK生成部(45)と、通信部(35)によるデータの受信結果に関わらず、送信側装置(38)に対してデータの送信を要求するウィンドウ更新通知パケットを生成し、送信側装置(38)に送信するウィンドウ更新通知生成部(46)とを備える。

Description

明 細 書
通信装置
技術分野
[0001] 本発明は、通信装置に関し、特に、インターネットプロトコル(Internet Protocol: 以下 IP)ネットワークを介してトランスミッションコントロールプロトコル(Transmission Control Protocol:以下 TCP)を用 Vヽたデータ転送を行う通信装置に関する。 背景技術
[0002] 図 1は、 TCPにおけるデータ転送の流れを示したシーケンス図である。
[0003] TCPにおけるデータ転送において、データはパケットと呼ばれる単位で送受信され る。また、 1パケットサイズは、予めやり取りしたパケット最大サイズ情報(Maximum Segment Size :以下 MSS)を元に決定される。送信側装置が送ったパケットに対し て、そのパケットが受信側装置に到達したことは、肯定応答パケット (Acknowledge ment Packet:以下 ACKまたは ACKパケット)を受信側装置が送り、それを送信側 装置が受け取ることによって確認される。なお、肯定応答パケットは確認応答パケット ともいう。図 1の例では、データパケットを実線で、 ACKパケットを破線で示している。 また、データパケットには、例えば P21 (Seq= 10)が表記されており、シーケンス番 号 10のパケットを送信していることを示している。さらに、 ACKパケットには、例えば P 11 (Ack= 10, Win =4)が表記されており、 ACK番号 10およびウィンドウサイズ 4の パケットであることを示している。なお、説明を簡単にするためにデータパケットサイズ は、 1として説明する。
[0004] 次に、ウィンドウサイズの説明をする。ウィンドウサイズとは、送信側装置が、 ACKパ ケットを得ることなしに、受信側装置にデータを送り続けることが可能なデータ量を意 味している。このウィンドウサイズは、一般的には、受信側装置が受信したデータを保 持できる最大量の上限(以下 RWIN— MAX)を示しており、ネットワークの輻輳状態 などに応じて送信側装置により増減される。理想的な状態では、ネットワークの輻輳 がなぐウィンドウサイズは RWIN— MAXの値で安定して!/、る状態となる。
[0005] 図 1の例では、受信側装置は、 ACKパケット P11によって、 ACK番号が 10である ことと、ウィンドウサイズ力 であることを通知している。よって、送信側装置は、シーケ ンス番号 10〜13のデータパケット P21、 P22、 P23、 P24を、 4つのデータパケットに 対する ACKパケットを待たずに送信することが可能である。
[0006] 受信側装置は、受信側装置が受信したデータを一時的に保持するための受信バッ ファを持ち、一般に、 RWIN— MAX分のデータを確保することが可能である。また、 この受信バッファの空き容量は、送信側装置力 のパケット受信により減少し、アプリ ケーシヨンプログラム(以下、単にアプリケーションという)へ受信データを引き渡すこと で増加する。さらに、受信バッファの空き容量が増カロした折には、受信側装置は、ウイ ンドウ更新通知パケットと呼ばれるパケットを送信し、送信側装置に受信バッファの空 き容量が増加したことを通知する機能を持つ。
[0007] 図 1の例では、データパケット P21、 P22、 P23、 P24の送信後、 ACKパケット P12 、 P13においてウィンドウサイズが減少し、最終的に 0となっている。つまり、受信した データパケット P21、 P22、 P23、 P24は、受信バッファに保持されたままとなつており 、まだアプリケーションへの受信データの引き渡しが行われていない状態である。そ の後、受信側装置は、アプリケーションに受信データの引き渡しを行うと、ウィンドウ更 新通知パケット P14を送信し、ウィンドウサイズが 4つだけ空 、たことを送信側装置に 通知する。送信側装置は、ウィンドウ更新通知パケット P14を受信すると、続きのデー タノケット P25、 P26、 P27、 P28の送信を再開する。
[0008] また、受信側装置が ACKパケット PI 1を送信する時刻と、送信側装置から送信され たデータパケット P21を受信する時刻との差を応答遅延時間(Round Trip Time : 以下 RTT)と呼ぶ。 RTTの大きなネットワークを介して、データ転送を行う際は、送信 側装置は、ウィンドウサイズ分のデータ転送を行った後、受信側からの ACKもしくは ウィンドウ更新通知が到着するまでの間、送信処理を停止することになる。そのため、 効率の良いデータ転送ができなくなってしまう。そこで、効率の良いデータ転送を行う ためには、 RWIN— MAXを大きくする必要がある。
[0009] さらに、 TCPには、非特許文献 1に記載される機能、つまり高速再送機能がある。
[0010] 図 2は、高速再送機能に関するパケット送受信を示すシーケンス図である。
[0011] 図 2に示すように、送信側装置力も送信されるデータパケットのうち、データパケット P284がパケットロスし、受信側装置に到達しな力つたとする。このとき、受信側装置 は、パケットロスしたデータパケット P284以降のデータパケット P285、 P286、 P287 を受信することで、データパケット P284がロスした力もしくは、何らかの理由で、到着 順序が入れ替わっていると判断できる。そのため、受信側装置は、データパケット P2 85を受信した時点で、データパケット P284が到着して 、な 、ことを送信側装置に通 知するため、即座に ACKパケット P273を送信する。この ACKパケットを即時確認応 答という。また、この ACKパケット P273は、以前に送信している ACKパケット P272と 同じ ACKパケットであることから、重複 ACKということもある。以下、重複 ACKとして 説明する。以降、受信側装置は、データパケット P284を受信するまで、 ACKパケット P272と同様な重複 ACKパケット P274、 P275を送信する。
[0012] 次に、この重複 ACKパケット P273、 P274、 P275を受信した送信側装置は、連続 して 3回同じ ACKパケットを受信したことにより、重複 ACKパケットが示すパケットを ロスしたことを検知し、即座にデータパケット P288の再送を行う。この即座に再送処 理を行うことを咼速再送 (Fast Retransmission)と!、う。
[0013] この高速再送は、後述するタイムアウトによる再送に比べ非常に早ぐパケットロス 発生時の迅速な復帰を可能として 、る。
[0014] しかし、家庭用電気製品にネットワーク機能を備えた「ネット家電」と呼ばれる装置に おいては、その受信性能の低さから、 RWIN— MAXを大きくすることで、受信性能を 越えたパケットが到着し、かえってデータ転送効率を落としてしまう恐れがある。
[0015] 図 3は、ネット家電の構成の一例を示す図である。
[0016] ネット家電(図中の受信側装置) 1は、ネットワーク 7と有線または無線で接続する通 信機能を持つ装置であり、例えば、 Ethernet (登録商標)インタフェースを備える。ネ ットワーク 7は有線または無線を含むネットワークであり、インターネットなどの公衆ネッ トワークなどが例として挙げられる。
[0017] 受信側装置 1は、システムバス 2、処理部 3、記憶部 4、および通信部 5を備える。
[0018] 通信部 5は、システムバス 2上に接続されたノヽードウエアである。通信部 5は、記憶 部 4に格納されたパケットをネットワーク 7に送信する機能と、ネットワーク 7からバケツ トを受信する機能を有する。また、通信部 5は、ネットワーク 7から受信したパケットを 一時的に保持するための記憶領域 (以下、 FIFOと 、う) 6を有する。
[0019] 処理部 3は、システムバス 2上に接続されたノヽードウエアである。記憶部 4に格納さ れたデータをパケットとして構築する処理を行ったり、受信したパケットの解析処理を 行ったりする。なお、処理部 3は、送信パケットを記憶部 4から通信部 5へ転送したり、 通信部 5の FIF06に格納されているパケットを記憶部 4へ転送したりする機能を有す る場合ちある。
[0020] 記憶部 4は、送受信するパケットやそのデータを保持する機能を有する。
[0021] また、受信側装置 1は、パケットを受信すると次のような処理を行う。
(1)送信側装置 8から送信されたパケットを通信部 5で受信し、 FIF06へ格納
(2) FIF06へ格納されたパケットを、システムバス 2を介して記憶部 4へ転送
(3)記憶部 4へ転送されたパケットの内容を処理部 3により解析
(4)受信したパケットに対して解析結果で得られたデータを、アプリケーションに渡す [0022] 図 4は、ネット家電のデータ転送効率が低下してしまう場合におけるデータ転送の 一例を示すシーケンス図である。なお、図 4は、図 3の受信側装置 1と送信側装置 8と の間のデータ転送を TCPで実施した場合のシーケンスを示す。また、受信側装置 1 はネット家電であって受信性能が低ぐ送信側装置 8は PC (Personal Computer)など のように高 、送信性能を有する。
[0023] ここで、
RWIN— MAX: 32 (単位を KB、ネットワークでの輻輳なしとする)
FIF06の容量: 4 (単位を KBとする)
システムバス 2の転送能力: 20Mbps
ネットワーク 7の転送能力: 100Mbps
を例として説明する。
[0024] 受信側装置 1は、ウィンドウサイズを RWIN— MAX (32KB)に設定した ACKパケ ット P31を送信側装置 8に送信する。送信側装置 8は、 ACKパケット P31を受信する と RWIN— MAX(32KB)分のデータパケット P41をネットワーク 7に送信する。その 結果、 100Mbpsの転送能力で、 RWIN— MAX (32KB)分のデータパケットが一気 に受信側装置 1の通信部 5に到着することになる。しかし、受信側装置 1の FIF06は 、容量 4KBしかないため、 RWIN— MAX (32KB)分のデータを格納しきることは不 可能である。
[0025] そこで、データパケットが到着し次第、そのデータパケットを早急に FIF06から記憶 部 4へ転送する必要がある。このとき、データパケット P41の到着間隔に比べ、 FIFO 6から記憶部 4へ受信済みパケットを転送する能力が勝っている場合は、 FIF06が 溢れる前に、受信済みパケットを記憶部 4へ転送しきることができ、送信側装置から送 信されるデータパケット P41を全て受信しきることが可能である。なお、 PCにおけるシ ステムバス 2に相当するバスの最大転送能力は、例えば PCIバスの場合、 1064Mbp s (133MBZs)であり、ネットワーク 7の転送能力に比べ十分に早い。
[0026] しかし、受信側装置 1がネット家電などでは、 FIF06から記憶部 4への転送能力が 、ネットワーク 7の転送能力に比べ劣ってしまう場合が多い。本例では、 FIF06から 記憶部 4への転送能力と、通信部 5に到着するパケットのスピード、すなわちネットヮ ーク 7の転送能力とに 5倍の差がある場合で説明を行う。
[0027] 受信側装置 1は、 1つ目のデータパケット P41— 1を受信すると、 FIF06から記憶部 4へ受信済みパケットのデータ転送を行う。このデータ転送に要する時間を 5Tとする と、転送性能の差が 5倍であるから、ネットワーク 7から到着するデータパケットの間隔 は、 Tとなる。よって、この 5Tの間に、 5つのデータパケットが受信側装置 1に到着す ることになる。し力し、 FIF06の容量は、 4KBである。そのため、 5つ目のデータパケ ットが到着した時点で空き容量不足となり、そのデータパケットは FIF06から溢れるこ とになる。このように、その後のデータも、パケットロスが発生することになり、その後無 駄な再送が行われることになる。結局、 RWIN— MAXを大きくしすぎたために、無駄 な再送の多発により転送効率が落ちてしまうことになる。そこで、一般には、ネット家 電などのような非力な通信装置においては、 RWIN— MAXの上限は FIF06の容量 に合わせて設定される。
[0028] このように RWIN— MAXを FIF06の容量(4KB)と一致する値に設定した場合、 R TTが 10ミリ秒の環境では、やはり 4KBZ10ミリ秒 = 3. 2Mbpsと内部バス 1の転送 能力は 20Mbpsの性能の割に、パケット転送性能が出ない。なお、 FIF06の容量が RWIN MAX(32KB)分あると仮定すると、 RWIN MAXを 32KBとして通知でき 、 32KBZ10ミリ秒 = 25. 6Mbpsとなり、内部バスの性能で制限されてとしても、 20 Mbpsもの転送性能を弓 Iき出すことができる。
[0029] また、ネット家電においては、その処理能力の低さから、 RWIN— MAXの設定値 によっては、大幅に受信能力を落としてしまうことがある。
[0030] 図 5は、処理能力の高 、受信側装置 (例えば PCなど)の受信処理を示すシーケン ス図である。なお、 RWIN— MAXを 4とした場合を例に説明する。
[0031] まず、図 5に示すように、送信側装置力も送信されるデータパケット P301、 P302、 P303のうちデータパケット P302がパケットロスにより受信側装置に到達しなかったと する。このとき、受信側装置は、データパケット P301を受信することにより、 ACKパケ ット P291を送信する。 ACKパケット P291を受信した送信側装置は、シーケンス番号 11まで到達したことと、ウィンドウサイズ力 であることから、続きのデータパケット P30 4を送信する。一方、受信側装置は、シーケンス番号 12のデータパケット P302が到 達する前に、シーケンス番号 13のデータパケット P303を受信することで、データパケ ット P302がパケットロスした力、または順序が入れ替わつていることを検知し、データ パケット P303受信後、即座に即時確認応答 P292を送信する。さらに、受信側装置 は、データパケット P304を受信することにより、即時確認応答 P294、 P295を送信す る。
[0032] 次に、送信側装置は、即時確認応答を 3個受信することにより、高速再送機能が働 き、シーケンス番号 12のデータパケット P305を再送する。このように、パケットロスが 発生した場合、高速な再送機能により通信を復帰することが可能となっている。
[0033] 図 6は、処理能力の低 、受信側装置 (例えばネット家電など)の受信処理を示すシ 一ケンス図である。なお、 RWIN— MAXを 4とした場合を例に説明する。
[0034] まず、図 6に示すように、送信側装置力も送信されるデータパケット P321、 P322、 P323のうちデータパケット P322がパケットロスにより受信側装置に到達しなかったと する。特に、受信能力の低い受信側装置の場合、データが受信側装置の FIF06か ら溢れてしまい、ネットワークが輻輳していなくても、パケットロスを引き起こしてしまうこ とがある。このとき、受信側装置は、データパケット P321を受信することにより、 ACK パケット P311を送信する。このとき、受信側装置が送信する ACKパケット P311は、 受信側装置にぉ 、て、受信したデータパケット P321の受信処理が完了して 、な ヽた め、ウィンドウサイズが 2となっている。そのため、 ACKパケット P311を受信した送信 側装置からは、何れのデータパケットも送信されない。その後、受信側装置は、シー ケンス番号 12のデータパケット P322が到達する前に、シーケンス番号 13のデータ パケット P323を受信することで、データパケット P322がパケットロスした力、または順 序が入れ替わつていることを検知し、データパケット P323受信後、即座に即時確認 応答 P312を送信する。このときのウィンドウサイズも受信処理が完了していないため 、ウィンドウサイズが 2となっている。その後、受信処理が終わった受信側装置は、ウイ ンドウサイズを 4としたウィンドウ更新通知パケット P313を送信する。ウィンドウ更新通 知パケット P313を受信した送信側装置は、シーケンス番号が 11で、ウィンドウサイズ 力 であることから、シーケンス番号 14、 15のデータパケット P324を送信する。また、 データパケット P324を受信した受信側装置は、即時確認応答 P314、 P315を送信 する。このとき、受信側装置が送信した即時確認応答パケットは連続 2個である。その ため、送信側装置では、高速再送機能が働力ない。そのため、送信側装置は、シー ケンス番号 12の ACKパケット受信がないため、タイムアウト時間 T1を経過後、タイム アウトによる再送を行うことになる(P325)。このように、処理能力が低い場合、受信側 装置は、即時確認応答を連続で行うことができないため、高速再送機能が働かず、タ ィムアウトを待った低速な再送となってしまう。このため、少しのパケットロス発生でも 全く転送レートが出ない。
[0035] そこで、既存の FIF06の容量で、 RWIN— MAXを大きく通知しつつも、パケット口 スを発生させずに、 RTTの大きな環境でもネット家電の受信能力を最大限に発揮す るためには、送信側装置が送信するデータの送信レートを、受信側装置から制御す る必要がある。さらに、たとえパケットロスが発生しても、必要以上にレート低下を招か ない必要がある。
[0036] 特許文献 1には、受信側装置によって、送信側装置のデータ送信レートを制御する 方式が開示されている。特許文献 1の方式によれば、受信側装置は、受信したデー タに対する ACKを生成すると、即座に送信せずにー且 ACK送信キューに ACKパ ケットを保持する。その後、次の(1)および (2)に従い、規則的な間隔で、 ACKの送 信を行うことでデータ送信レートを制御する。
[0037] (l)ACK送信キュー内の残りの ACKパケットが所定数未満の場合、送信されるべ き ACKを分割する。
(2)ACKの送信のつど、ウィンドウサイズ情報を 1MSSずつ増加させる。
[0038] 図 7は、特許文献 1におけるデータパケットと ACKパケットのやり取りを示したシー ケンス図である。
[0039] 受信側装置は、送信側装置から送信されデータパケット P61を受信すると、送信側 装置への ACKパケットを生成し、 ACK送信キューへ挿入する。なお、このとき生成さ れた ACKパケットは、 ACK番号 10の ACKパケットである。その後、受信側装置は、 規則的な間隔により決定された、所定時刻に ACKパケット P51を送信する。 ACKパ ケット P51は、 ACKパケット送信を行う際、 ACK送信キューに ACKパケットが所定数 (2として説明する)に満たな力つたため、 ACK分割を行っている。そのため、 ACK番 号は、 10ではなぐ 9. 1となっている。また、ウィンドウサイズは 1MSS増加した 2とな つている。
[0040] 次に、 ACKパケット P51を受信した送信側装置は、ウィンドウサイズ 2のパケットを 受信したことにより、シーケンス番号 9. 1から 11. 1まで送信可能となったため、未送 信の後続のデータであるシーケンス番号 10のデータパケット P62を送信する。
[0041] さらに、受信側装置は、 ACKパケット P51を送信後、規則的な間隔により決定され た、所定時刻を迎えると、 ACKパケット P52の送信を行う。 ACKパケット P52に関し ても、 ACKパケット送信を行う際、 ACK送信キューに ACKパケットが所定数(2とし て説明する)に満たなカゝつたため、 ACK分割を行うことになる。そのため、 ACK番号 は、 10ではなぐ 9. 2となり、ウィンドウサイズは 1MSS増加した 3となっている。この A CKパケット P52を受信した受信側装置は、 ACKパケット P51の受信時と同様に、シ 一ケンス番号 9. 2から 12. 2まで送信可能となったため、未送信の後続のデータであ るシーケンス番号 11のデータパケット P63を送信する。
[0042] 以降、同様に 1MSSずつウィンドウサイズを増力!]させながら、規則的な間隔で、 AC Kノケット P53、 P54を送信していく。
[0043] このように、規則的な間隔で、 ACK分割を行 、、 1MSSずつウィンドウサイズを増 加させ、 ACKパケットを送信することで、送信側装置が送信するデータパケットの間 隔を制御している。
特許文献 1:特許第 3617649号公報
非特許文献 1 :標準仕様書「RFC2001」、 IETF、 [平成 18月 7月 21検索]、インター ネット<URL :http : //www. ietf. org/rfc/rfc2001. txt>
発明の開示
発明が解決しょうとする課題
[0044] しかし、特許文献 1の方式では、受信したデータに対する ACKを、送信前にー且キ ユーに保持し、規則的な間隔で、 ACK分割を行い、ウィンドウサイズを 1MSSずつ増 カロさせることで、送信側装置力も送信される送信レートの制御を行っているため、受 信側装置からの送信レート制御を行うことは可能だが、次のような問題を含んでいる。
[0045] (1)データ受信を行わな!/、と制御が開始できな!/、と 、う問題
(2) ACK分割を行うため処理負荷がかるという問題
(3)ウィンドウサイズを 1MSS増加させるため細かな ACK送信間隔の制御が必要 であるため負荷が力かるという問題
(4)パケットロス発生時の対応がな 、と 、う問題
[0046] 例えば、 RTTを 10ミリ秒とすると、図 7に示すように、 1RTT(10ミリ秒)の間に 4回 A CKを送信していることになる。よって、 ACK送信間隔は、 2. 5ミリ秒となる。し力し、 2 . 5ミリ秒間隔の ACK送信では、 RTT内に増加できる RWIN— MAXは、 5どまりであ る。仮に、 RWIN— MAXを 32まで増加させたい場合、 ACK送信間隔は、 10ミリ秒 / (32- 1) =0. 32ミリ秒とする必要があり処理負荷が増大する。例えば、 CPU動作 クロック 133MHzのネット家電機器において、 1MSSのデータパケットを受信する処 理に要する時間は、 0. 3ミリ秒程度であり、また、 ACKパケットを送信する処理に要 する時間は、 0. 2ミリ秒程度である。よって、このような例の場合、 0. 32ミリ秒間隔で ACK送信処理を行うことは、不可能である。
[0047] そこで、本発明は、力かる問題に鑑みてなされたものであって、データを送信する 送信側装置に対して、そのデータの送信トラフィックを自らの受信能力に応じて自発 的に制御し得るとともに、その制御処理負担を軽減した通信装置を提供することを第 1の目的とする。また、パケットロスが発生したときにも、消失したパケットの迅速な再 送を送信装置に対して促すことが可能な通信装置を提供することを第 2の目的とする 課題を解決するための手段
[0048] 上記目的を達成するために、本発明に係る通信装置は、他の通信装置から送信さ れたデータを受信する通信装置であって、前記データを受信する受信手段と、前記 受信手段によって受信されたデータに対する前記他の通信装置への応答内容を示 す確認応答パケットを生成し、前記他の通信装置に送信する第 1のパケット生成手段 と、前記受信手段によるデータの受信結果に関わらず、前記他の通信装置に対して データの送信を要求するデータ要求パケットを生成し、前記他の通信装置に送信す る第 2のパケット生成手段とを備えることを特徴とする。例えば、前記第 2のパケット生 成手段は、受信可能なデータのサイズが受信サイズとして前記データ要求パケットに 含まれるように、当該データ要求パケットを生成する。
[0049] これにより、他の通信装置に対してデータの送信を要求するウィンドウ更新通知パ ケットたるデータ要求パケットが、他の通信装置力 送信されたデータの受信結果に 関わらず、他の通信装置に送信されるため、他の通信装置から送信されるデータ量 を任意のタイミングで自発的に制御することが可能となる。例えば、他の通信装置か らのデータの受信を待たずに制御することが可能である。さらに、 ACKを分割すると いう処理や、多くの ACKを短い送信間隔で送信することが不要となるため、制御処 理負担を軽減することができる。さらに、データ要求パケットには受信サイズが含まれ ているため、他の通信装置に対して、受信可能なデータのサイズを通知することがで き、その結果、受信能力に応じた送信トラフィックの制御を実現することができる。
[0050] また、前記通信装置は、さらに、前記受信サイズに更新量を加算することで、当該 受信サイズを更新するサイズ算出手段を備え、前記第 2のパケット生成手段は、更新 時間の経過ごとに、前記サイズ算出手段に前記受信サイズを更新させて、更新され た受信サイズを含む前記データ要求パケットを生成し、前記他の通信装置に送信す ることを特徴としてもよい。
[0051] これにより、更新時間の経過ごとに、つまり所定の更新間隔で、ウィンドウサイズたる 受信サイズが更新量ずつ増加し、ウィンドウ更新通知パケットであるデータ要求パケ ットが送信されるため、他の通信装置の送信データのトラフィックパターンを制御する ことが可能となり、通信装置の処理に合わせたデータの受信を行うことができる。また 、ウィンドウサイズが更新量ずつ増加することにより、他の通信装置から連続して送信 される各データの量を、更新量にすることが可能となる。その結果、それらのデータを 受信する通信装置では、受信されたデータをアプリケーションプログラムに引き渡す 前に一時的に記憶するメモリの容量を、更新量までに削減することができる。
[0052] また、前記通信装置は、さらに、前記通信装置の通信能力に基づ!/、て、前記更新 時間および前記更新量を決定する更新決定手段を備えることを特徴としてもよい。
[0053] これにより、通信装置の通信能力に応じたトラフィックパターンに、他の通信装置に よるデータの送信パターンを合わせることが可能となる。
[0054] また、前記受信手段は、受信されたデータを一時的に保持するためのメモリを有す る物理層通信デバイスとして構成され、前記更新決定手段は、前記メモリの容量と、 前記メモリに保持されたデータの転送能力とに基づ!、て、前記更新時間および前記 更新量を決定することを特徴としてもょ 、。
[0055] これにより、物理層通信デバイスの能力に適したトラフィックパターンに、他の通信 装置によるデータの送信パターンを合わせることが可能となり、物理層通信デバイス でのパケットロスを防止することができる。
[0056] また、前記通信装置は、さらに、前記受信手段により受信されたデータを処理する 処理手段を備え、前記更新決定手段は、さらに、前記処理手段の処理能力に基づ
V、て、前記更新時間を決定することを特徴としてもよ!、。
[0057] これにより、通信装置のデータ処理能力に適したトラフィックパターンに、他の通信 装置によるデータの送信パターンを合わせることが可能となり、通信装置の通信及び データ処理のために割く処理量を制御することができる。
[0058] また、前記更新決定手段は、さらに、前記通信装置で動作するアプリケーションプ ログラムが必要とするビットレートに基づ 、て、前記更新時間を決定することを特徴と してちよい。
[0059] これにより、通信装置におけるアプリケーションプログラムの必要とするビットレート に適したトラフィックパターンに、他の通信装置によるデータの送信パターンを合わせ ることが可能となり、アプリケーションプログラムが要求する以上の無駄なトラフィックの 発生を防止することができる。
[0060] また、前記第 2のパケット生成手段は、前記更新時間の経過ごとに、前記データ要 求パケットを生成しているときに、前記受信手段によってデータが受信されると、前記 データ要求パケットの生成を中止することを特徴としてもよい。
[0061] これにより、ウィンドウ更新通知パケットたるデータ要求パケットの送信が中止され、 つまりウィンドウ更新通知機能が停止されるため、データ要求パケットが継続して送信 され続けて他の通信装置が送信するデータの送信レートが無限に上がってしまうこと を防止することができる。
[0062] また、前記第 2のパケット生成手段は、前記更新時間の経過ごとに行われる前記デ ータ要求パケットの生成を中止しているときに、前記受信手段によってデータが受信 されると、前記更新時間の経過ごとに行われる前記データ要求パケットの生成を再開 することを特徴としてもよい。
[0063] これにより、他の通信装置がデータ送信を中止して再開したときには、再度、通信 装置の通信能力に合わせたトラフィックパターンの制御が可能となる。
[0064] また、前記サイズ算出手段は、さらに、前記通信装置で動作するアプリケーションプ ログラムが要求するデータの総量を取得し、前記受信手段によって受信されたデー タの受信量が前記総量に近づくにつれて減少するような応答サイズを算出し、第 1の パケット生成手段は、受信可能なデータのサイズが前記応答サイズであることを前記 応答内容として示す前記確認応答パケットを生成することを特徴としてもよい。
[0065] これにより、一連のデータの受信終了に合わせて、それらのデータに対する ACK パケットたる確認応答パケットの応答サイズ (ウィンドウサイズ)が減少するため、他の 通信装置がデータ送信を再開したときには、再開時に他の通信装置力 送信される データの量を、その減少された応答サイズに制限することができるので、通信装置の 受信性能に合わせたデータ送信の再開を行うことができる。
[0066] また、前記第 1のパケット生成手段は、受信可能なデータのサイズを応答サイズとし て示す前記確認応答パケットを生成し、前記更新時間の経過ごとに行われる前記デ ータ要求パケットの生産が中止しているときに、先に送信されてロスしたデータが再 送されて前記受信手段によって受信された際には、前記第 1のパケット生成手段は、 前回生成された前記確認応答パケットの応答サイズよりも小さい応答サイズを示す確 認応答パケットを生成し、前記第 2のパケット生成手段は、前記更新時間の経過ごと に行われる前記データ要求パケットの生産を再開することを特徴としてもよい。
[0067] これにより、パケットロス発生時においても、送信データのレート制御を行うことが可 能となる。
[0068] また、前記通信装置は、さらに、前記更新時間の経過ごとに行われる前記データ要 求パケットの生産が中止しているときに、前記第 1のパケット生成手段による前記確認 応答パケットの送信のタイミングを遅らせる遅延手段を備えることを特徴としてもよい。
[0069] これにより、確認応答パケットの送信のタイミングが遅れるため、他の送信装置から 連続的に送信された各データの受信時刻の間隔が揺ら 、でも、制御したトラフィック ノターンを継続的に維持することが可能となる。例えば、他の通信装置から送信され た複数のデータの受信と、それらのデータに対する通信装置からの複数の確認応答 パケット (ACKパケット)の送信とがそれぞれ、更新時間の経過ごと、つまり所定間隔 で行われている。このようなときに、他の通信装置力 送信されたデータが所定間隔 よりも短い間隔で受信されると、そのデータを受信した通信装置は、そのデータに対 する確認応答パケットを即座に送信することなぐ確認応答パケットの送信を遅延さ せる。つまり、通信装置は、前回に確認応答パケットを送信して力も更新時間が経過 した後に、その確認応答パケットを送信する。
[0070] また、前記受信手段は、受信されたデータを一時的に保持するためのメモリを有す る物理層通信デバイスとして構成され、前記通信装置は、さらに、前記メモリの容量と 、前記メモリに保持されたデータの転送能力とに基づいて、前記確認応答パケットの 送信間隔を決定する送信間隔決定手段を備え、前記遅延手段は、前記送信間隔決 定手段によって決定された送信間隔で複数の前記確認応答パケットが送信されるよ うに、前記タイミングを遅らせることを特徴としてもょ 、。
[0071] これにより、メモリの容量と転送能力に基づいた送信間隔で確認応答パケットが送 信されるため、物理層通信デバイスの能力に適したトラフィックパターンに、他の通信 装置によるデータの送信パターンを合わせることが可能となり、物理層通信デバイス でのパケットロスを防止することができる。
[0072] また、前記通信装置は、さらに、前記受信手段により受信されたデータを処理する 処理手段と、前記処理手段の処理能力に基づいて、前記確認応答パケットの送信間 隔を決定する送信間隔決定手段とを備え、前記遅延手段は、前記送信間隔決定手 段によって決定された送信間隔で複数の前記確認応答パケットが送信されるように、 前記タイミングを遅らせることを特徴としてもょ 、。
[0073] これにより、通信装置のデータ処理能力に適したトラフィックパターンに、他の通信 装置によるデータの送信パターンを合わせることが可能となり、通信装置の通信及び データ処理のために割く処理量を制御することができる。
[0074] また、前記通信装置は、さらに、前記通信装置で動作するアプリケーションプロダラ ムが必要とするビットレートに基づ 、て、前記確認応答パケットの送信間隔を決定す る送信間隔決定手段を備え、前記遅延手段は、前記送信間隔決定手段によって決 定された送信間隔で複数の前記確認応答パケットが送信されるように、前記タイミン グを遅らせることを特徴としてもょ ヽ。
[0075] これにより、通信装置におけるアプリケーションプログラムの要求するビットレートに 適したトラフィックパターンに、他の通信装置によるデータの送信パターンを合わせる ことが可能となり、アプリケーションプログラムが要求する以上の無駄なトラフィックの 発生を防止することができる。
[0076] また、前記通信装置は、さらに、受信レート変更の要求に基づいて、前記確認応答 パケットの送信間隔を決定する送信間隔決定手段を備え、前記遅延手段は、前記送 信間隔決定手段によって決定された送信間隔で複数の前記確認応答パケットが送 信されるように、前記タイミングを遅らせることを特徴としてもょ ヽ。
[0077] これにより、受信レート変更の要求があったときには、その要求に基づいた送信間 隔で確認応答パケットが送信されるため、その要求に適したトラフィックパターンに、 他の通信装置によるデータの送信パターンを合わせることが可能となる。
[0078] また、前記第 1のパケット生成手段は、受信可能なデータのサイズを応答サイズとし て示す前記確認応答パケットを生成し、前記遅延手段は、さらに、前記第 1のパケット 生成手段によって生成された前記確認応答パケットの示す応答サイズを、受信レート 変更の要求に基づ ヽて変更することを特徴としてもょ 、。
[0079] これにより、受信レート変更の要求があったときには、その要求に基づいた応答サイ ズ (ウィンドウサイズ)を示す確認応答パケット (ACKパケット)が送信されるため、その 要求に適したトラフィックパターンに、他の通信装置によるデータの送信パターンを合 わせることが可能となる。
[0080] また、前記第 2のパケット生成手段は、前記受信手段によって受信されたデータの 受信量が閾値を超えたときに、前記更新時間の経過ごとに行われる前記データ要求 パケットの生成を開始することを特徴としてもょ 、。
[0081] これにより、他の通信装置が徐々にデータの送信レートを増加させても、通信装置 の通信能力に応じたトラフィックパターンに、他の通信装置によるデータの送信パタ ーンを合わせることが可能となる。
[0082] また、前記第 2のパケット生成手段は、要求されるデータの先頭番号を含む前記デ ータ要求パケットを生成し、前記受信手段によって受信されたデータの受信量が閾 値を超えたときには、順次送信される前記データ要求パケットの先頭番号が増加する ように、前記更新時間の経過ごとに行われる前記データ要求パケットの生成を開始 することを特徴としてもよい。
[0083] これにより、データの受信量が閾値を超えたときには、ウィンドウ更新通知パケットた るデータ要求パケットが更新時間の経過ごとに送信される。そして、各データ要求パ ケットのウィンドウサイズたる受信サイズと ACK番号たる先頭番号とは、前回のデータ 要求パケットの受信サイズと先頭番号よりも増加する。その結果、通信装置の通信能 力に応じたトラフィックパターンに、他の通信装置によるデータの送信パターンを確実 に合わせることが可能となる。
[0084] また、前記通信装置は、さらに、前記他の通信装置から送信されたデータのロスを 検出する検出手段を備え、前記第 1のパケット生成手段は、受信可能なデータのサイ ズを応答サイズとして示す前記確認応答パケットを生成し、前記検出手段によって口 スが検出されたときには、前回生成された確認応答パケットの応答サイズよりも小さい 応答サイズを示す確認応答パケットを生成することを特徴としてもよい。例えば、前記 第 1のパケット生成手段は、前回生成された確認応答パケットの応答サイズと、ロスし たデータの量との差分を前記小さい応答サイズとして示す前記確認応答パケットを生 成する。
[0085] これにより、パケットロスが発生したときには、確認応答パケット (ACKパケット)の応 答サイズ (ウィンドウサイズ)が小さくなるため、他の通信装置によるデータの送信レー トを落として、パケットロスの発生を抑えることができる。
[0086] また、前記第 1のパケット生成手段は、さらに、前記検出手段によって所定時間に口 スが検出されな力つたときには、前回生成された確認応答パケットの応答サイズよりも 大き 、応答サイズを示す確認応答パケットを生成することを特徴としてもょ ヽ。
[0087] これにより、パケットロスが所定時間内に発生しな力つたときには、確認応答パケット
(ACKパケット)の応答サイズ (ウィンドウサイズ)が大きくなるため、他の通信装置によ るデータの送信レートを上げて、データ送信効率を上げることができる。
[0088] また、前記第 2のパケット生成手段は、前記他の通信装置によって順次送信された データが予め定められた順序通りに前記受信手段に受信されな力つた場合、または 、前記データがロスした場合に送信されるべき否定応答パケットとして、前記データ 要求パケットを生成することを特徴としてもよい。例えば、前記第 2のパケット生成手 段は、データのロスが発生した場合に、ロス発生の直前に前記受信手段で受信され たデータに対する確認応答パケットと同一の内容を示す、所定数の前記データ要求 パケットを生成して送信する。
[0089] これにより、他の通信装置から送信されたデータがロスしても、他の通信装置から送 信されたデータの受信結果に関わらず、他の通信装置に対して高速再送機能を誘 発させることができる。その結果、タイムアウトを待つことなぐロスしたデータを受信す ることがでさる。
[0090] また、前記受信手段で受信されたデータのうち、消失したロスデータを検知するロス 検知手段を備え、前記第 1のパケット生成手段は、前記他の通信装置からのデータ の送信に対する確認応答として、前記ロス検知手段によって検知されたロスデータの 再送を指示する前記確認応答パケットを、前記他の通信装置に送信し、前記第 2の パケット生成手段は、前記第 1のパケット生成手段により送信される確認応答パケット の送信数が、前記他の通信装置に対して前記ロスデータの再送を実行させるだけの 必要数に満たない場合に、前記他の通信装置からのデータの送信に関わらず、前 記必要数力も送信数を差し引いた複製数だけ、前記確認応答パケットを前記データ 要求パケットとして前記他の通信装置に送信することを特徴としてもよい。
[0091] 例えば、他の汎用の通信装置は、 3つの DupAckをそれぞれ確認応答パケットとし て受信したときに、それらの DupAckの示すロスデータを再送する。即ち、他の通信 装置に対してロスデータの再送を実行させるだけの DupAckの必要数とは「3」である 。このような場合、本発明に係る通信装置の第 1のパケット生成手段は、他の通信装 置からのパケットの送信に対する受信応答として、 DupAck (確認応答パケット)を送 信し、第 2のパケット生成手段は、その DupAckの送信数が必要数「3」に満たない場 合に、他の通信装置力 のデータパケットの送信に関わらず、その必要数「3」から送 信数を差し引いた複製数だけ、 DupAckをデータ要求パケットとして他の通信装置 に送信する。したがって、例えば、第 1のパケット生成手段が DupAckを 2つ送信して いるときには (送信数が「2」)、第 2のパケット生成手段は、他の通信装置力もパケット を受け取って 、ないにも関わらず、 DupAckを 1つ送信する。
[0092] これにより、通信装置のリソースが十分でない場合であっても、すなわち、通信装置 における受信処理の遅延により TCP Windowサイズが回復しない場合においても 、タイムアウトまで待つことなぐ他の通信装置に対してロスデータの高速再送を発動 させることができる。その結果、ロスデータによるスループットの低下を最小限に抑え ることができる。また、従来例のように ELNを解釈する機能を他の通信装置に対して 要求することなぐ汎用の通信装置に対して高速再送を促すことができる。
[0093] また、受信手段で取得されたデータ力 ロスデータが検知されるため、ネットワーク が過負荷状態であるために消失したデータ(例えば TCPパケット)の再送を指示する ような誤った DupAckが送信されることがない。したがって、そのような DupAckに応 じて他の通信装置が過負荷状態のネットワークにさらにデータを送信して無駄なトラ フィックを発生させてしまうようなことを防ぐことができる。
[0094] また、前記受信手段は、メモリを備え、前記他の通信装置から送信されるデータを 順次取得して前記メモリに格納し、前記ロス検知手段は、前記メモリに格納されずに 消失したロスデータを検知することを特徴としてもよ!、。
[0095] これにより、例えば受信用 FIFOメモリから溢れたことにより消失したロスデータが確 実に検知されるため、他の通信装置に対してそのデータの高速再送を確実に促すこ とがでさる。
[0096] また、前記通信装置は、さらに、前記受信手段からデータを取得して、 OSI参照モ デルのネットワーク層としての処理を前記データに対して行なうネットワーク処理手段 を備え、前記ロス検知手段は、前記ネットワーク処理手段において消失したロスデー タを検知することを特徴としてもょ ヽ。
[0097] これ〖こより、例えば IP (Internet Protocol)の処理を行なうネットワーク処理手段、す なわち IP処理部において消失したロスデータが確実に検知されるため、他の通信装 置に対してそのデータの高速再送を確実に促すことができる。
[0098] また、前記ロス検知手段は、消失したロスデータが TCP (Transmission Control Prot ocol)に基づくデータである場合に限って、前記ロスデータを検知することを特徴とし てもよい。
[0099] これにより、 TCPパケット以外のロスデータに対して誤った確認応答パケットまたは データ要求パケットが送信されるのを防ぐことができ、そのようなパケットに応じて他の 通信装置力 データが送信されて、無駄なトラフィックが発生するのを防ぐことができ る。
[0100] また、前記通信装置は、さらに、前記受信手段で取得されたデータに基づ 、て再 送指示対象の前記他の通信装置を特定する装置特定手段を備えることを特徴として ちょい。
[0101] 例えば、受信手段より取得されたデータにより示される IPアドレスやポート番号など に基づいて再送指示対象の他の通信装置が特定されるため、データの送信元となる 他の通信装置に対して確実に確認応答パケットまたはデータ要求パケットを送信す ることができ、誤った装置に対して再送指示信号を送信することにより生じる無駄なト ラフィックの発生を抑制することができる。
[0102] また、前記ロス検知手段は、ロスデータを検知したときには前記検知結果を保持し ておき、前記通信装置は、さらに、前記ロス検知手段によるロスデータの検知から所 定期間が経過したとき、前記通信装置が所定数のデータを送信したとき、前記通信 装置によるデータの処理速度が前記ロスデータの検知時よりも遅くなつたとき、または
、前記第 2のパケット生成手段によってデータ要求パケットが送信されたときに、前記 ロス検知手段により保持されている検知結果を削除するリセット手段を備えることを特 徴としてもよい。
[0103] これにより、ロス検知手段により保持されている検知結果 (パケットロス情報)が削除 されるため、他の通信装置力 データが再送されているにも関わらず、確認応答パケ ットまたはデータ要求パケットを誤って送信してしまうということを防ぐことができ、その ような誤ったパケットによる無駄なトラフィックの発生を抑制することができる。また、口 スデータの検知力 所定期間が経過したときに検知結果が削除される場合には、所 定期間の経過に従って確実に検知結果を削除することができる。また、通信装置が 所定数のデータを送信したときに検知結果が削除される場合には、タイマ機能などを 要せず検知結果を簡単に適切なタイミングで削除することができる。また、通信装置 によるデータの処理速度 (例えば、 PPS)がロスデータの検知時よりも遅くなつたとき に検知結果が削除される場合には、通信装置が過負荷状態であるにもかかわらず検 知結果が保持されているために確認応答パケットまたはデータ要求パケットが送信さ れることを防ぐことができ、そのパケットに応じて他の通信装置力もデータが送信され て無駄なトラフィックが発生してしまうのを抑制することができる。さらに、ロスデータの 検知とその検知結果の削除とが頻繁に繰り返されることを防ぐことができ、適切なタイ ミングで検知結果を削除することができる。また、前記第 2のパケット生成手段によつ てデータ要求パケットが送信されたときに検知結果が削除される場合には、適切な確 認応答パケットまたはデータ要求パケットを送信することができる。例えば、データ要 求パケットが送信された後に検知結果が削除されていなければ、再びロスデータが 検知されたときに、第 1および第 2のパケット生成手段は、誤ったロスデータの再送を 指示する確認応答パケットまたはデータ要求パケットを送信してしまうことがある。した がって、本発明では上述のようなタイミングで検知結果を削除することにより、適切な 再送指示信号を送信することができる。
[0104] また、前記第 2のパケット生成手段は、前記第 1のパケット生成手段によって確認応 答パケットが生成されるときに前記複製数を算出することを特徴としてもよい。
[0105] これにより、複製数が早期に算出されるため、第 2のパケット生成手段はその算出さ れた複製数だけデータ要求パケットを早急に送信することができ、その結果、他の通 信装置に対して高速再送を最も速く発動させることができる。さらに、第 2のパケット生 成手段はデータ要求パケットを早急に送信することができるため、そのデータ要求パ ケットやそのパケットに関連する情報などを長時間保持しておく必要がない。その結 果、メモリ容量を削減することができる。
[0106] また、前記第 2のパケット生成手段は、前記第 1のパケット生成手段によって確認応 答パケットが送信されてカゝら所定期間が経過する前に、前記確認応答パケットが送 信されてから所定期間が経過する前であって且つ前記通信装置の負荷率が所定の 閾値以下になったとき、または、前記通信装置の受信可能なデータ量が増加したこと を前記通信装置が前記他の通信装置に通知する前に、前記複製数を算出すること を特徴としてもよい。
[0107] これにより、第 1のパケット生成手段によって確認応答パケットが送信されて力 所 定期間 (例えば、タイムアウト期間)が経過する前に複製数が算出される場合には、 第 2のパケット生成手段は、その所定期間において第 1のパケット生成手段力も送信 された確認応答パケットの送信数を確実にカウントすることができ、正確な複製数を 算出することができる。また、確認応答パケットが送信されてから所定期間が経過す る前であって且つ前記通信装置の負荷率 (例えば、 CPUの使用率)が所定の閾値 以下になったときに複製数が算出される場合には、上述と同様に正確な複製数を算 出することができるとともに、第 2のパケット生成手段は、通信装置の負荷が小さいと きに、データ要求パケットを適切に生成することができる。また、通信装置の受信可能 なデータ量が増加したこと (例えば、 WinUpdate)を通信装置が他の通信装置に通 知する前に複製数が算出される場合には、上述と同様に正確な複製数を算出するこ とができる。さらに、例えば、 WinUpdateが他の通信装置に通知された後に、複製 数が算出されて、その後、その複製数だけの DupAckがデータ要求パケットとして第 2のパケット生成手段力も送信される場合には、他の通信装置は、第 1のパケット生成 手段力 送信された DupAck (確認応答パケット)と、第 2のパケット生成手段から送 信された DupAck (データ要求パケット)とを区別する。したがって、他の通信装置は 、ロスデータに対して同一の DupAckが必要数だけ送信されていないと判断して、そ のロスデータに対して高速再送を実行しない場合がある。そこで、本発明では、上述 のように WinUpdateを通知する前に複製数を算出することにより、 WinUpdateの通 知前にその複製数だけの DupAckを送信することができ、他の通信装置に対して高 速再送を確実に促すことができる。
[0108] また、前記第 2のパケット生成手段は、前記通信装置で受信可能なデータ量に基 づいて前記複製数を算出することを特徴としてもよい。例えば、前記第 2のパケット生 成手段は、前記第 1のパケット生成手段によって最初の確認応答パケットが送信され るときに、前記受信可能なデータ量に基づいて、前記第 1のパケット生成手段から送 信される予定の送信数を算出し、前記必要数から前記送信数を差し引くことにより、 前記複製数を算出することを特徴としてもよい。
[0109] これにより、最初の確認応答パケットが送信されるときに、第 1のパケット生成手段か ら送信される予定の送信数が例えば Windowサイズに基づ ヽて算出されて、その送 信数に基づいて複製数が算出されるため、その最初の確認応答パケットが送信され た後に、第 2のパケット生成手段はその複製数だけのデータ要求パケットを早急に送 信することができる。
[0110] また、前記第 2のパケット生成手段は、前記複製数が 2以上であるときには、 OSI参 照モデルのデータリンク層またはトランスポート層にあるデータ要求パケットを複製し て、前記複製数のデータ要求パケット信号を送信することを特徴としてもょ ヽ。
[0111] これにより、データリンク層にある MAC (Media Access Control)フレームとして構築 された DupAck (確認応答パケット)が複製される場合には、その複製元の DupAck が送信可能な状態に完成されているため、 DupAckを再送するのに要するメモリ容 量を削減できるとともに、 CPUの処理負荷を低減することができる。また、トランスポ ート層にある TCPパケットとして構築された DupAck (確認応答パケット)が複製され る場合には、その複製数の管理をトランスポート層 (TCP)で容易に行なえることがで きる。その結果、例えば既存の通信装置に対して本発明を適用するときには、そのト ランスポート層に対して改修を行なえばよぐ改修箇所を限定することができる。 [0112] なお、本発明は、このような通信装置として実現することができるだけでなぐその方 法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現すること ができる。
発明の効果
[0113] 本発明の通信装置は、送信側の他の通信装置の送信データレートを制御すること が可能となり、処理能力を超えたデータを受信することで発生していたパケットロスを 抑制し、スループット低下を防止する。さらに、通信装置の処理能力に適した送信レ ートに、送信側の他の通信装置の送信レートを制御することで、効率の良いデータ転 送を行え最大スループットを得ることが可能となる。
図面の簡単な説明
[0114] [図 1]図 1は、 TCPにおけるデータ送受信シーケンス図である。
[図 2]図 2は、高速再送機能に関するパケット送受信シーケンス図である。
[図 3]図 3は、ネット家電の構成図である。
[図 4]図 4は、データ転送効率が低下してしまう場合におけるデータ転送の一例を示 すシーケンス図である。
[図 5]図 5は、高速な受信側装置におけるパケット送受信シーケンス図である。
[図 6]図 6は、低速な受信側装置におけるパケット送受信シーケンス図である。
[図 7]図 7は、従来技術における TCP送受信シーケンス図である。
[図 8]図 8は、本発明の実施の形態 1に係るネットワークと通信装置の構成の一例を示 す構成図である。
[図 9]図 9は、本発明の実施の形態 1に係る処理部の機能構成例を示す構成図であ る。
[図 10]図 10は、本発明の実施の形態 1におけるパケット送受信のシーケンス図である
[図 11]図 11は、本発明の実施の形態 2に係る処理部の機能構成例を示した構成図 である。
[図 12]図 12は、本発明の実施の形態 2におけるパケット送受信のシーケンス図である [図 13]図 13は 本発明の実施の形態 2における受信側装置の動作を示すフローチヤ ートである。
[図 14]図 14は 本発明の実施の形態 3に係る処理部の機能構成例を示した構成図 である。
[図 15]図 15は 本発明の実施の形態 3におけるパケット送受信のシーケンス図である [図 16]図 16は、本発明の実施の形態 4におけるパケット送受信のシーケンス図である
[図 17]図 17は、本発明の実施の形態 5に係る処理部の機能構成例を示した構成図 である。
[図 18]図 18は、本発明の実施の形態 5におけるパケット送受信のシーケンス図である
[図 19]図 19は、本発明の実施の形態 5における他のパケット送受信のシーケンス図 である。
[図 20]図 20は、本発明の実施の形態 6におけるパケット送受信のシーケンス図である
[図 21]図 21は、本発明の実施の形態 6における他のパケット送受信のシーケンス図 である。
[図 22]図 22は、本発明の実施の形態 7に係る処理部の機能構成例を示した構成図 である。
[図 23]図 23は、本発明の実施の形態 7におけるパケット送受信のシーケンス図である
[図 24]図 24は、本発明の実施の形態 7における他のパケット送受信のシーケンス図 である。
[図 25]図 25は、本発明の実施の形態 8に係る処理部の機能構成例を示した構成図 である。
[図 26]図 26は、本発明の実施の形態 8におけるパケット送受信のシーケンス図である [図 27]図 27は、本発明の実施の形態 8における他のパケット送受信のシーケンス図 である。
[図 28]図 28は、本発明の実施の形態 9に係る処理部の機能構成例を示した構成図 である。
[図 29]図 29は、本発明の実施の形態 9におけるパケット送受信のシーケンス図である
[図 30]図 30は、本発明の実施の形態 10におけるネットワークの構成例および通信装 置の構成例を示す図である。
[図 31]図 31は、本発明の実施の形態 10における通信装置の CPUの機能構成を示 す構成図である。
[図 32]図 32は、本発明の実施の形態 10における通信装置間の通信シーケンスを示 す図である。
[図 33]図 33は、本発明の実施の形態 10における受信側装置における処理シーケン スの例を示す図である。
[図 34]図 34は、本発明の実施の形態 10における DupAck管理部における DupAck 複製数算出処理を示すフローチャートである。
[図 35]図 35は、実施の形態 10の変形例 1に係るネットワーク構成例および通信装置 の構成例を示す図である。
[図 36]図 36は、実施の形態 10の変形例 1に係る受信側装置の CPUの機能構成を 示す構成図である。
[図 37]図 37は、実施の形態 10の変形例 1に係る受信側装置の処理シーケンスの例 を示す図である。
[図 38]図 38は、実施の形態 10の変形例 2に係る受信側装置の CPUの機能構成を 示す構成図である。
[図 39]図 39は、実施の形態 10の変形例 3に係る通信装置間の通信シーケンスを示 す図である。
[図 40]図 40は、実施の形態 10の変形例 3に係る受信側装置の処理シーケンスの例 を示す図である。 [図 41]図 41は、実施の形態 10の変形例 3に係る DupAck管理部における DupAck 複製数算出処理を示すフローチャートである。
符号の説明
1 受信側装置
2 システムバス
3 処理部
4 L 部
5 通信部
6 FIFO
7 ネットワーク
8 送信側装置
31 受信側装置
32 システムバス
33 処理部
34
35 通信部
36 FIFO
37 ネットワーク
38 送信側装置
41 IP処理部
42 TCP処理部
43 アプリケーション処理部
44 TCPパケット処理部
45 ACK生成部
46 ウィンドウ更新通知生成部
47 受信バッファ
48 ウィンドウサイズ算出部
49 ウィンド、ゥ更新タイマ咅 受信レート決定部 前回 RWIN記憶部
IP処理部
TCP処理部
アプリケーション処理部
TCPパケット処理部
ACK生成部
ウィンドウ更新通知生成部 受信バッファ
ウィンドウサイズ算出部 ウィンドウ更新タイマ部 受信レート決定部 前回 RWIN記憶部
IP処理部
TCP処理部
アプリケーション処理部
TCPパケット処理部
ACK生成部
ウィンドウ更新通知生成部 受信バッファ
ウィンドウサイズ算出部 ウィンドウ更新タイマ部 受信レート決定部 前回 RWIN記憶部
IP処理部
TCP処理部
アプリケーション処理部
TCPパケット処理部 105 ACK生成部
106 ウィンドウ更新通知生成部
107 受信バッファ
108 ウィンドウサイズ算出部
109 ウィンドウ更新タイマ部
110 受信レート決定部
111 前回 RWIN記憶部
112 ACK遅延部
121 IP処理部
122 TCP処理部
123 アプリケーション処理部
124 TCPパケット処理部
125 ACK生成部
126 ウィンドウ更新通知生成部
127 受信バッファ
128 ウィンドウサイズ算出部
129 ウィンドウ更新タイマ部
130 受信レート決定部
131 前回 RWIN記憶部
141 IP処理部
142 TCP処理部
143 アプリケーション処理部
144 TCPパケット処理部
145 ACK生成部
146 ウィンドウ更新通知生成部
147 受信バッファ
148 ウィンドウサイズ算出部
149 前回 RWIN記憶部 150 パケットロス検知部
161 IP処理部
162 TCP処理部
163 アプリケーション処理部
164 TCPパケット処理部
165 ACK生成部
166 重複 ACK生成部
167 受信バッファ
168 ウィンドウサイズ算出部
169 パケット抜け検知部
発明を実施するための最良の形態
[0116] 以下本発明の実施の形態について、図面を参照しながら説明する。なお、実施の 形態における説明においては、 TCPを用いた通信を例に説明を行うが、 TCP同様に 、受信可能なバッファ空き容量を確認応答パケットによって通知する同種の通信プロ トコルにおいても、本発明は、適用可能である。また、実施の形態の説明においては 、受信専用の通信装置を受信側装置とし、送信専用の通信装置を送信側装置とし、 受信側装置に本発明を適用したとして説明を行うが、受信側装置および送信側装置 の双方に、送受信機能を備えてもよぐ送信側装置に本発明を適用しても良い。
[0117] (実施の形態 1)
図 8は、本実施の形態に係る通信装置 (受信側装置)の構成の一例を示す図であ る。受信側装置 31は、ネットワーク 37と有線または無線で接続する通信機能を持つ 装置であり、例えば、 Ethernet (登録商標)インタフェースを備える。ネットワーク 37 は有線または無線を含むネットワークであり、インターネットなどの公衆ネットワークな どが例として挙げられる。
[0118] 受信側装置 31は、システムバス 32、処理部 33、記憶部 34、および通信部 35を備 える。
[0119] 通信部 35は、システムバス 32上に接続されたノヽードウエアである。通信部 35は、 記憶部 34に格納されたパケットをネットワーク 37に送信する機能と、ネットワーク 37 からパケットを受信する機能を有する。また、通信部 35は、ネットワーク 37から受信し たパケットを一時的に保持するための記憶領域 (以下、 FIFOという) 36を有する。な お、実施の形態 1〜10では、通信部が受信手段として構成されている。
[0120] 処理部 33は、システムバス 32上に接続されたハードウェアである。処理部 33は、 記憶部 34に格納されたデータをパケットとして構築する処理を行ったり、受信したパ ケットに対して解析処理を行ったりする。なお、処理部 33は、送信パケットを記憶部 3 4から通信部 35へ転送したり、通信部 35の FIF036に格納されているパケットを記憶 部 34へ転送したりする機能を有する場合もある。
[0121] 記憶部 34は、送受信するパケットやそのデータを保持する機能を有する。
[0122] ここで、受信側装置 31の受信処理を説明する。受信側装置 31は、ネットワーク 37 からパケットを受信すると、まず通信部 35の FIF036に受信したパケットを格納する。 次に、受信側装置 31は、 FIF036に格納した受信パケットを FIF036から記憶部 34 へシステムバス 32を介して転送する。記憶部 34へ転送された受信パケットの内容は 、処理部 33によって解析され、受信処理される。処理部 33は、解析結果を得ると、ァ プリケーシヨンプログラム(以下、単にアプリケーションという)に受信したデータを引き 渡す。
[0123] 図 9は、本実施の形態の受信側装置 31における処理部 33の機能構成の一例を示 す構成図である。なお、本実施の形態においては、 TCP処理部 42は、処理部 33で 実行されるプログラムとして構成されている力 LSI (Large Scale Integration)などで 実装されたものであっても良い。また、図中の実線は、送受信パケットのデータフロー を、破線は制御情報のやり取りに関するフローを示して 、る。
[0124] 処理部 33は、 IP処理部 41、 TCP処理部 42およびアプリケーション処理部 43を備 える。
[0125] 受信側装置 31の TCP処理部 42は、 TCPパケット処理部 44、受信バッファ 47、ウイ ンドウサイズ算出部 48、ウィンドウ更新タイマ部 49、受信レート決定部 50、および前 回 RWIN記憶部 51から構成される。次に、これらの各構成要素の説明をする。
[0126] TCPパケット処理部 44は、 TCPパケットの送受信処理の機能を有する。 TCPパケ ット処理部 44は、受信したパケットのアプリケーションを特定し、そのパケットをアプリ ケーシヨンへ引き渡すため、受信バッファ 47に格納する。さらに、 TCPパケット処理 部 44は、 TCPパケットを構築し、 IP処理部 41へ渡し、 TCP/IPパケットとして送信 する機能を有する。また、 TCPパケット処理部 44には、 ACK生成部 45とウィンドウ更 新通知生成部 46が含まれる。
[0127] ACK生成部 45は、受信した TCPパケットのシーケンス番号に基づいて、 ACK番 号を決定し、 ACKパケットを生成する。 ACKパケットには、ウィンドウサイズ算出部 4 8から得た、現在受信可能な空き容量 (以下、ウィンドウサイズ)も設定される。なお、 実施の形態 1〜9では、 ACK生成部は第 1のパケット生成手段として構成されて、 A CKパケットは確認応答パケットに相当する。また、 ACKパケットに設定されるウィンド ゥサイズは応答サイズに相当する。
[0128] ウィンドウ更新通知生成部 46は、受信バッファ 47の空き状況に増加が生じたとき、 ウィンドウ更新通知パケットを生成する。さらに、ウィンドウ更新通知生成部 46は、ウイ ンドウ更新タイマ部 49からの指示により、ウィンドウ更新通知パケットを生成する機能 を有する。ウィンドウ更新通知パケットには、ウィンドウサイズ算出部 48から得た、ウイ ンドウサイズが設定される。なお、実施の形態 1〜9では、ウィンドウ更新通知生成部 は第 2のパケット生成手段として構成されて、ウィンドウ更新通知パケットはデータ要 求パケットに相当する。また、ウィンドウ更新通知パケットに設定されるウィンドウサイズ は受信サイズに相当する。
[0129] 受信バッファ 47は、アプリケーション処理部 43に渡すための受信データを一時的 に保持する機能を有する。受信バッファ 47は、最大 RWIN— MAXのデータを格納 することができ、アプリケーション処理部 43の要求により、受信バッファ 47に一時的に 保持されているデータを順に、アプリケーション処理部 43へ渡す。また、受信バッファ 47は、アプリケーション処理部 43へデータが渡されることによってウィンドウサイズが 増加した際は、ウィンドウ更新通知生成部 46へウィンドウサイズが増加したことを通知 する。
[0130] ウィンドウサイズ算出部 48は、送信側装置 38へウィンドウサイズとして通知する値を 算出する機能を有する。ウィンドウサイズ算出部 48は、受信レート決定部 50から指示 される更新量(以下、 RWIN— Update)と、前回 RWIN記憶部 51に格納される前回 通知したウィンドウサイズ (RWIN—Prev)とに基づき、ウィンドウサイズを算出する。ゥ インドウサイズは、次の式で算出される。
[0131] ウィンドウサイズ = RWIN—Prev +RWIN— Update' · · (式 1)
[0132] なお、受信バッファ 47が格納可能なデータの最大サイズ (RWIN— MAX)も考慮し て、次の式で算出してもよい。
[0133] ウィンドウサイズ =MIN (RWIN— Prev+RWIN一 Update,
RWIN— MAX) · · · (式 2)
MIN (A, B)は、 Aと Bの最小値を返すものとする。
[0134] ウィンドウ更新タイマ部 49は、所定間隔で、ウィンドウ更新通知生成部 46にウィンド ゥ更新通知パケットの送信を指示する機能を有する。また、所定間隔は、受信レート 決定部 50により指示される。
[0135] 受信レート決定部 50は、受信側装置 31における TCPパケットの受信レートに基づ き、ウィンドウサイズ算出部 48の更新量と、ウィンドウ更新タイマ部 49の所定間隔を決 定する機能を有する。次に、更新量と所定間隔の決定方法の例を示す。
[0136] 例 1 :
更新量と所定間隔は、 FIF036の容量とシステムバス 32の転送能力に基づいて次 の式で算出することができる。
[0137] 更新量 =FIF036の容量 · · ·(式 3)
所定間隔 =FIF036の容量 Zシステムバス 32の転送能力 · · ·(式 4)
[0138] 具体的には、受信側装置 31の FIF036の容量力 ΚΒであり、システムバス 32の転 送能力力 OMbpsである場合、更新量は、 FIF036の容量に合わせ 4KBとなり、所 定間隔は、 4KBをシステムバス 32が転送するのに要する時間 0. 8ミリ秒となる。なお 、所定間隔は、 0. 8ミリ秒以上とすることで、システムバス 32の転送能力以下のデー タ転送量に抑えることができるので、 1ミリ秒としても良い。また、所定間隔を算出する 際、システムバス 32の転送能力で除算している力 CPU (Central Processing Unit) 処理能力も加味し、 1パケットの処理時間とシステムノ スの転送能力とから所定間隔 を算出しても良い。
[0139] 例 2 : 更新量と所定間隔は、 FIF036の容量とアプリケーションが要求するビットレートに 基づ 、て次の式で算出することができる。
[0140] 更新量 =FIF036の容量 · · ·(式 5)
所定間隔 =RTTZCEILING ( ( (アプリケーションが必要とするビットレート
XRTT) Z8)Z更新量, 1) · · · (式 6)
CEILING (A, B)は、 Aを Bの単位で切り上げた結果を出力する。
[0141] 具体的には、受信側装置 31の FIF036のサイズ力 KBであり、アプリケーションが 要求するビットレート 10Mbps、 RTTを 10ミリ秒とした場合、更新量は、 FIF036のサ ィズに合わせ 4KBとなる。さらに、この場合、アプリケーションの要求するビットレート 力 10Mbpsであるため、 1RTT(10ミリ秒)中に、 12. 5KBのデータをアプリケーショ ンが受信する必要がある。したがって、更新量として 4KBずつの増加を考慮すると、 1RTTに中に 3. 125回、すなわち 4回の更新が必要となる。よって、所定間隔は、 R TTZ4である 2. 5ミリ秒となる。
[0142] 例 3 :
更新量と所定間隔は、受信バッファ 47に格納可能なデータの最大容量 RWIN— MAXとアプリケーションが要求するビットレートに基づいて次の式力 算出することが できる。
[0143] 更新量 =RWIN— ΜΑΧ· · · (式 7)
所定間隔 =RTTZCEILING ( ( (アプリケーションが必要とするビットレート XRTT) /8) /RWIN_MAX, 1) · · · (式 8)
[0144] 具体的には、受信バッファ 47に格納可能なデータの最大容量 RWIN— MAXを 8 KB、アプリケーションが必要とするビットレート 10Mbps、 RTTを 10ミリ秒とした場合、 更新量は、 RWIN— MAXに合わせ 8KBとなる。さら〖こ、この場合、アプリケーション の必要とするビットレートが 10Mbpsであるため、 1RTT(10ミリ秒)中に、 12. 5KBの データを受信する必要がある。したがって、更新量として 8KBずつの増加を考慮する と、 1RTT中に 1. 5625回、すなわち 2回の更新が必要となる。よって、所定間隔は、 RTTZ2である 5ミリ秒となる。
[0145] なお、例 1〜例 3で示した式を元に、更新量を MSS単位に丸めたり、所定間隔をミ リ秒もしくは、数ミリ秒単位に切り上げたりしてもよい。
[0146] また、受信レート決定部 50は、複数のコネクションが張られた場合や、処理部 33が 別の通信処理以外の処理を実施するため、処理能力が低下した場合など、受信側 装置 31の受信状況が変化場合に合わせて、更新量と所定間隔を動的に変更する機 能を持っても良い。
[0147] 前回 RWIN記憶部 51は、前回にウィンドウ更新通知を行った際に用いたウィンドウ サイズ (以下、前回ウィンドウサイズという)を記録保持する機能を有する。前回 RWIN 記憶部 51は、記録保持する前回ウィンドウサイズをウィンドウサイズ算出部 48へ渡し 、ウィンドウサイズ算出部 48が算出した結果を受け取り、前回ウィンドウサイズを更新 し記録保持を行う。
[0148] 図 10は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 10の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。また、 1パケット長を 1、更新量を 4、更新間隔(上述の所定 間隔)を Tミリ秒、として説明をする。さらに、図中の P71 (Ack= 10, Win=4)は、 A CK番号 10およびウィンドウサイズ 4の ACKパケットであることを示し、 P81 (Seq= l 0, 11, 12, 13)は、シーケンス番号 10、 11、 12、 13のデータノケットであることを示 している。
[0149] 受信側装置 31は、送信側装置 38とコネクションの確立などを経て、送信側装置 38 から送信されるデータを受信する状態となる。このとき、受信側装置 31は、更新量 4を ACKパケット(ウィンドウ更新通知パケットでも良 、)のウィンドウサイズとして設定し、 その ACKパケット(ウィンドウ更新通知パケット)を送信側装置 38へ通知して 、る (P7 D o ACKパケット P71を受信した送信側装置 38は、受信した ACKパケット P71のゥ インドウサイズ力 S4であることから、シーケンス番号 10、 11、 12、 13の 4個のデータパ ケット P81を送信する(P81)。
[0150] 次に、受信側装置 31は、 ACKパケット P71を送信後、所定間隔の Tミリ秒が経過 すると、式 1に従い、前回通知したウィンドウサイズ 4に、更新量 4を加算し、 8をウィン ドウ更新通知パケットのウィンドウサイズに設定し、そのウィンドウ更新通知パケットを 送信側装置 38へ通知する(P72)。 ACKパケット P72を受信した送信側装置 38は、 受信した ACKパケット P72のウィンドウサイズが 8であることから、既に送信済みシー ケンス番号 10、 11、 12、 13を含めて 8個のデータパケットを送信することが可能とな る。そのため、送信側装置 38は、データパケット P81の続きであるシーケンス番号 14 、 15、 16、 17のデータノ ケット P82を送信する。
[0151] 以降、 ACKパケット P73、 P74も上述と同様に受信側装置 31から送信される。また 、データパケット P83、 P84も上述と同様に送信側装置 38から送信される。
[0152] このとき、受信側装置 31が送信する ACKパケットの間隔は、 Tミリ秒間隔であるた め、送信側装置 38が ACKパケットを受信する間隔も Tミリ秒間隔となる。さらに、送信 側装置 38が受信する ACKパケット間隔が Tミリ秒間隔であり、更新量ずつウィンドウ サイズが増加しているため、送信側装置 38は、 Tミリ秒間隔で、更新量ずつのデータ ノ ケッ卜を送信することとなる。
[0153] 受信側装置 31は、送信側装置 38が Tミリ秒間隔で、データパケットを送信するため 、 Tミリ秒間隔で更新量ずつのデータパケットを受信することとなる。なお、この Tミリ秒 は、(式 4)または、(式 6)など力も算出した値であるため、この Tミリ秒の間に、受信側 装置 31は、更新量分のデータを処理することが可能である。よって、受信処理が溢 れることなく受信処理を行うことが可能である。
[0154] このように本実施の形態では、送信側装置 38から送信される送信データの間隔と その量を、受信側装置 31で制御することにより、受信側装置 31の最大限の性能を引 き出すことが可能となる。また、本発明により、この送信データの間隔とその量の制御 を、データパケットの受信によらず任意のタイミングで開始することが可能である。さら に、更新量の単位で送信データ量を制御することで、ウィンドウ更新通知パケットの 生成回数を減らし、ウィンドウ更新通知パケットの ACK番号も同一のものを使用する 。その結果、一連のウィンドウ更新通知パケットで変更すべきパラメータはウィンドウサ ィズだけであるため、処理負荷を軽減することが可能となる。例えば、 RWIN— MAX を 32、更新量を 4、 RTTを 10ミリ秒としたとき、本実施の形態では、ウィンドウ更新通 知パケットの送信間隔は、 1. 42ミリ秒となる。一方、特許文献 1では、 ACK分割を行 い 1MSSずつ受信可能な空きバッファ容量を更新する方式を使用するため、 0. 32ミ リ秒間隔で制御する必要がある。したがって、本実施の形態では、従来と比べて処理 負荷を軽減できる。さらに、送信側装置 38から送信される送信データの間隔とその 量を、受信側装置 31のアプリケーションの受信レートにあったレートに制御することが でき、受信バッファには、最大でも更新量分のデータしか滞留せず、メモリ効率も良く なる。
[0155] (実施の形態 2)
本実施の形態における通信装置 (受信側装置)は、実施の形態 1の図 8に示す構 成と略同様であって、処理部のみが異なる。したがって、処理部以外の構成要素に っ 、ての詳細な説明は省略する。
[0156] 図 11は、本実施の形態の受信側装置 31における処理部の機能構成の一例を示 す構成図である。本実施の形態の受信側装置 31は、実施の形態 1の処理部 33の代 わりに処理部 33aを備える。以降、各構成要素の機能に関して説明を行う。なお、本 実施の形態における処理部 33aは、実施の形態 1の処理部 33に対して付加的な機 能を有するため、実施の形態 1との差分のみを説明する。
[0157] 処理部 33aは、 IP処理部 61、 TCP処理部 62およびアプリケーション処理部 63を 備える。
[0158] また、本実施の形態の受信側装置 31の TCP処理部 62は、 TCPパケット処理部 64 、受信バッファ 67、ウィンドウサイズ算出部 68、ウィンドウ更新タイマ部 69、受信レート 決定部 70、および前回 RWIN記憶部 71から構成される。ここで、受信バッファ 67、ゥ インドウサイズ算出部 68および前回 RWIN記憶部 71は、実施の形態 1の受信バッフ ァ 47、ウィンドウサイズ算出部 48および前回 RWIN記憶部 51と同一の機能および構 成を有する。
[0159] TCPパケット処理部 64は、 ACK生成部 65およびウィンドウ更新通知生成部 66を 備える。このような TCPパケット処理部 64は、実施の形態 1に示した TCPパケット処 理部 44の機能を有するとともに、通知するウィンドウサイズを (式 1)に基づき更新して いる最中に、送信側装置 38からのパケットを受信したら、ウィンドウ更新通知機能を 停止することを受信レート決定部 70に通知する機能をさらに有する。なお、ウィンドウ 更新通知機能とは、実施の形態 1に示すように、所定間隔で、ウィンドウサイズを増加 させて、その増加されたウィンドウサイズを示すウィンドウ更新通知パケットを送信側 装置 38に送信することを!ヽぅ。
[0160] ウィンドウ更新タイマ部 69は、実施の形態 1に示したウィンドウ更新タイマ部 49の機 能を有するとともに、受信レート決定部 70からの停止通知に基づきタイマ機能を停止 する機能をさらに有する。
[0161] 受信レート決定部 70は、実施の形態 1に示した受信レート決定部 50の機能を有す るとともに、 TCPパケット処理部 64からの停止通知を受けて、ウィンドウ更新タイマ部 69を停止する機能と更新量を 0とする機能とをさらに有する。
[0162] 図 12は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 12の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。また、 1パケット長を 1、更新量を 4、更新間隔(上述の所定 間隔)を Tミリ秒、として説明をする。さらに、図中の P91 (Ack= 10, Win=4)は、 A CK番号 10およびウィンドウサイズ 4の ACKパケットであることを示し、 P101 (Seq = 10, 11, 12, 13)は、シーケンス番号 10、 11、 12、 13のデータノケットであることを 示している。
[0163] 受信側装置 31が ACKパケット P94を送信するまでと、送信側装置 38がデータパケ ット P104を送信するまでは、受信側装置 31および送受信側装置 38におけるデータ 送受信処理は、実施の形態 1と同様である。したがって、受信側装置 31が、 ACKパ ケット P95を送信する処理、すなわち 1RTT経過後の処理から説明する。
[0164] 1RTT経過後、受信側装置 31は、データパケット P101を受信する。受信側装置 3 1は、データパケット P101を受信すると、データパケット P101に対する ACKパケット P95を生成し、送信側装置 38へ送信する。また、データパケット P101を受信すると 受信レート決定部 70は、ウィンドウ更新タイマ部 69のウィンドウ更新タイマを停止し、 ウィンドウサイズ算出部 68での更新量を 0に設定する。そのため、送信する ACKパケ ット P95のウィンドウサイズは、前回 RWIN記憶部 71が保持するウィンドウサイズ値で ある 16となる。
[0165] この ACKパケット P95を受信した送信側装置 38は、 ACK番号 14およびウィンドウ サイズ 16から、シーケンス番号 14以降のデータをウィンドウサイズ 16分送信すること ができる。そこで、送信側装置 38は、シーケンス番号 14以降の未送信データである シーケンス番号 26、 27、 28、 29のデータパケット P105を送信する。
[0166] 次に、受信側装置 31が、データパケット P102を受信したときの処理に関して説明 する。データパケット P102受信時には、ウィンドウ更新タイマは停止しており、更新量 は 0となっている。そのため、データパケット P102に対する ACKパケット P96のウィン ドウサイズは、前回 RWIN記憶部 71が保持するウィンドウサイズ値である 16となる。ま た、この ACKパケット P96を受信した送信側装置 38は、シーケンス番号 18以降の未 送信データであるシーケンス番号 30、 31、 32、 33のデータパケット P106を送信する 。以降、同様に処理を繰り返す。
[0167] 図 13は、本実施の形態における受信側装置 31の動作を示すフローチャートである
[0168] まず、受信側装置 31は、送信側装置 38との間でコネクションを確立し、送信側装 置 38から送信されるデータを受信し得る状態になる。そして、受信側装置 31は、ウイ ンドウ更新通知機能を開始する (ステップ S400)。つまり、受信側装置 31は、 ACK 番号 =Nおよびウィンドウサイズ =更新量を示す ACKパケットまたはウィンドウ更新 通知パケットを生成して、送信側装置 38に送信する。なお、 Nは、受信側装置 31が 要求するデータパケットのシーケンス番号である。また、このとき受信側装置 31のウイ ンドウ更新タイマ部 49は時間計測を開始する。
[0169] 次に、受信側装置 31は、受信側装置 38からデータパケットを受信した力否かを判 別する (ステップ S402)。ここで、受信側装置 38からデータパケットを受信していない と判別したときには (ステップ S402の N)、さらに、受信側装置 31は、所定期間である Tミリ秒が経過した力否かを判別する (ステップ S404)。
[0170] 受信側装置 31は、 Tミリ秒が経過したと判別すると (ステップ S404の Y)、 ACK番 号 =Nおよびウィンドウサイズ =前回のウィンドウサイズ +更新量を示すウィンドウ更 新通知パケットを生成して、送信側装置 38に送信する (ステップ S406)。一方、 Tミリ 秒が経過して ヽな 、と判別したとき(ステップ S404の N)や、ステップ S406でウィンド ゥ更新通知パケットの送信が終了したときには、受信側装置 31は、再びステップ S40 2からの処理を実行する。
[0171] また、受信側装置 31は、ステップ S402でデータパケットを受信したと判別すると (ス テツプ S402の Y)、上述のウィンドウ更新通知機能を停止する (ステップ S408)。つま り、ウィンドウ更新タイマ部 49は時間計測を停止し、更新量は 0にリセットされる。さら に、受信側装置 31は、送信側装置 38から送信されて受信されたデータパケットに対 する確認応答として、 ACK番号 =N+nおよびウィンドウサイズ =前回のウィンドウサ ィズを示す ACKパケットを生成して、送信側装置 38に送信する (ステップ S410)。な お、 nは、受信側装置 31で受信されたデータパケットの数である。
[0172] そして、受信側装置 31は、再び、送信側装置 38からデータパケットを受信した力否 かを判別する (ステップ S412)。その結果、データパケットを受信したと判別したとき には (ステップ S412の Y)、受信側装置 31は、ステップ S410からの処理を繰り返し 実行し、データパケットを受信していないと判別したときには (ステップ S412の N)、送 信側装置 38からのデータの受信処理を終了する。
[0173] このように本実施の形態では、実施の形態 1と同様の効果を得ることができるととも に、 1RTT経過後に受信レート決定部 70が更新量を 0にしてウィンドウ更新タイマを 停止することで、データ受信後も送信側装置 38から送信される送信データのレートを 一定に保つことが可能となる。
[0174] (実施の形態 3)
本実施の形態における通信装置 (受信側装置)は、実施の形態 1の図 8に示す構 成と略同様であって、処理部のみが異なる。したがって、処理部以外の構成要素に っ 、ての詳細な説明は省略する。
[0175] 図 14は、本実施の形態の受信側装置 31における処理部の機能構成の一例を示 す構成図である。本実施の形態の受信側装置 31は、実施の形態 1の処理部 33の代 わりに処理部 33bを備える。以降、各構成要素の機能に関して説明を行う。なお、本 実施の形態における処理部 33bは、実施の形態 2の処理部 33aに対して付加的な機 能を有するため、実施の形態 2との差分のみを説明する。
[0176] 処理部 33bは、 IP処理部 81、 TCP処理部 82およびアプリケーション処理部 83を 備える。 [0177] また、本実施の形態の受信側装置 31の TCP処理部 82は、 TCPパケット処理部 84 、受信バッファ 87、ウィンドウサイズ算出部 88、ウィンドウ更新タイマ部 89、受信レート 決定部 90、および前回 RWIN記憶部 91から構成される。ここで、受信バッファ 87お よび前回 RWIN記憶部 91は、実施の形態 1の受信バッファ 47および前回 RWIN記 憶部 51と同一の機能および構成を有する。
[0178] TCPパケット処理部 84は、 ACK生成部 85およびウィンドウ更新通知生成部 86を 備える。このような TCPパケット処理部 84は、実施の形態 2に示した TCPパケット処 理部 64の機能を有するとともに、ウィンドウ更新通知機能が停止している最中に、送 信側装置 38からのパケットを受信したら、受信レート決定部 90にウィンドウ更新通知 機能再開を通知する機能を有する。
[0179] ウィンドウサイズ算出部 88は、実施の形態 1および 2に示したウィンドウサイズ算出 部 48, 68の機能を有する。さらに、ウィンドウサイズ算出部 88は、 1連のデータ受信 における総データ量をアプリケーション処理部 83から通知される機能を有する場合 は、総データ量だけのデータの受信の終了に合わせて ACKパケットで通知するウイ ンドウサイズを減少させる機能を有する。
[0180] ウィンドウ更新タイマ部 89は、実施の形態 2に示したウィンドウ更新タイマ部 69の機 能と、受信レート決定部 90からのウィンドウ更新通知機能再開の通知を受け、ウィンド ゥ更新通知機能を再開する機能を有する。
[0181] 受信レート決定部 90は、実施の形態 2に示した受信レート決定部 70の機能と、 TC Pパケット処理部 84からのウィンドウ更新通知機能再開の通知を受け、所定間隔と更 新量の算出を行い、ウィンドウ更新タイマ部 89にウィンドウ更新通知機能再開の通知 を行う機能を有する。
[0182] 図 15は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 15の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。また、 1パケット長を 1、更新量を 4、更新間隔(上述の所定 間隔)を Tミリ秒、として説明をする。さらに、図中の Pl l l (Ack=6, Win=8)は、 A CK番号 6およびウィンドウサイズ 8の ACKパケットであることを示し、 P121 (Seq = 2 , 3, 4, 5)は、シーケンス番号 2、 3、 4、 5のデータパケットであることを示している。
[0183] 送信側装置 38は、データパケット P121、 P122を送信することで、ー且データ転送 を終える。その後、任意の時間を空けてデータパケット P123の転送を再開する。この ときの ACKパケットとデータパケットのやり取りを説明する。
[0184] まず、送信側装置 38がデータパケット P122で転送を一旦終了するときに関して説 明する。
[0185] ウィンドウサイズ算出部 88は、 1連のデータ受信における総データ量をアプリケーシ ヨン処理部 83から通知されている。そこで、ウィンドウサイズ算出部 88は、総データ量 だけのデータの受信の終了に合わせて、送信する ACKパケットのウィンドウサイズを 減少させる。(式 9)は、ウィンドウサイズ算出部 88におけるウィンドウサイズ算出式を 示している。
[0186] ウィンドウサイズ =ΜΙΝ ( (総データ量 受信データ量) +更新量,
前回 RWIN記憶部が保持するウィンドウサイズ) · · ·(式 9) すなわち、
ウィンドウサイズ =ΜΙΝ (残りの受信データ量 +更新量,
前回 RWIN記憶部が保持するウィンドウサイズ) · · ·(式 10) となる。
[0187] なお、総データ量にあわせて、
ウィンドウサイズ = ΜΙΝ (総データ量 受信データ量,
前回 RWIN記憶部が保持するウィンドウサイズ) · · ·(式 11) としても良い。(式 11)とした場合は、送信側装置 38からデータ送信が再開される際、 受信側装置 31の受信バッファに空きが存在するか確認するプルーブパケットからデ ータ送信が始まることとなる。
[0188] 図 15において、送信側装置 38は、データパケット P121を送信する。データバケツ ト P 121を受信した受信側装置 31は、データバケツト P 121に対応する ACKバケツト P111を生成し、送信する。このとき受信側装置 31が送信するデータパケットは、(式 9)に基づき、ウィンドウサイズ 8と設定される。次に、送信側装置 38は、データバケツ ト P122を送信する。データパケット P122を受信した受信側装置 31は、データバケツ ト PI 22に対応する ACKパケット PI 12を生成し、送信する。このとき受信側装置 31 が送信するデータパケットは、(式 9)に基づき、ウィンドウサイズ 4と設定される。このよ うに、残り受信データ量に合わせてウィンドウサイズを減少させて 、く。
[0189] 次に、送信側装置 38がデータ送信を再開した以降、すなわちデータパケット P123 を送信した以降で説明する。
[0190] 送信側装置 38は、データパケット P123を送信し、データ送信を再開する。このとき 、受信側装置 31が前回送信した ACKパケット P112のウィンドウサイズ力 であったこ とから、送信側装置 38は、シーケンス番号 10、 11、 12、 13とウィンドウサイズ分のデ ータパケットを送信することになる。このように、データ送信が一旦停止する際に、ウイ ンドウサイズを減少させていたことで、データ送信再開の際に、バースト的に送信デ ータが到着することを防止して 、る。
[0191] 次に、受信側装置 31は、送信側装置 38が送信再開をしたデータパケット P123を 受信すると、受信したデータパケット P123に対応する ACKパケット P113を生成し、 送信する。その後、受信側装置 31は、受信レート決定部 90にデータ転送が再開され たことを通知する。通知を受けた受信レート決定部 90は、実施の形態 1と同様に、更 新量と所定間隔を決定し、ウィンドウ更新タイマ部 89にウィンドウ更新タイマの再開を 促す。その結果、 ACKパケット P113を送信後、所定間隔の Tミリ秒が経過すると、受 信側装置 31は、(式 1)に従い、前回通知したウィンドウサイズ 4に、更新容量 4を加算 し、 8をウィンドウ更新通知パケットのウィンドウサイズに設定し、そのウィンドウ更新通 知パケットを送信側装置 38へ通知する (P114)。さらに、受信側装置 31は、所定間 隔の Tミリ秒間隔で、ウィンドウ更新通知パケット P115、 P116を送信していく。これに より、送信側装置 38では、所定間隔の Tミリ秒間隔で、データパケット P124、 P125、 PI 26を送信することとなる。
[0192] このように本実施の形態では、実施の形態 1および 2と同様の効果を得ることができ る。さらに、本実施の形態では、データ転送がー且停止した際にも、ウィンドウサイズ を減少させてウィンドウ更新通知機能を再開することで、送信側装置からの送信が一 且停止した後の再開した送信データの送信レートを制御することも可能となる。
[0193] (実施の形態 4) 本実施の形態における通信装置 (受信側装置)は、実施の形態 1の図 8に示す構 成と略同様であって、処理部のみが異なる。したがって、処理部以外の構成要素に っ 、ての詳細な説明は省略する。
[0194] また、本実施の形態の受信側装置 31における処理部は、実施の形態 2の図 11に 示す処理部 33aと略同様の構成を有する。したがって、本実施の形態における処理 部について、図 11を用い、実施の形態 2との違いが明確になるように以下説明する。
[0195] 本実施の形態における TCPパケット処理部 64は、実施の形態 2に示した機能を有 するとともに、ウィンドウ更新通知機能が停止している最中に、パケットロスを検知し、 送信側装置 38からのロスしたパケットの再送を確認したら、受信レート決定部 70にゥ インドウ更新通知機能再開を通知する機能を有する。
[0196] 本実施の形態におけるウィンドウ更新タイマ部 89は、実施の形態 2に示した機能を 有するとともに、受信レート決定部 70からのウィンドウ更新通知機能再開の通知を受 け、ウィンドウ更新タイマ機能を再開する機能を有する。
[0197] 受信レート決定部 70は、実施の形態 2に示した機能を有する。さらに、受信レート 決定部 70は、 TCPパケット処理部 64からのウィンドウ更新通知機能再開の通知を受 け、所定間隔と更新量の算出を行い、ウィンドウ更新タイマ部 69にウィンドウ更新通 知機能再開の通知を行う機能と、前回 RWIN記憶部 71に記録されている前回ウィン ドウサイズ値を初期値、例えば 0に戻す機能とを有する。
[0198] 前回 RWIN記憶部 71は、実施の形態 2に示した機能と、受信レート決定部 70の働 きにより、記憶している前回ウィンドウサイズ値が初期化される機能とを有する。
[0199] 図 16は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 16の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。また、説明を簡略ィ匕するために、 1パケット長を 1、更新量を 1、更新間隔 (上述の所定間隔)を Tミリ秒、として説明をする。さらに、図中の P131 ( Ack= l l, Win =6)は、 ACK番号 11およびウィンドウサイズ 6の ACKパケットであ ることを示し、 P151 (Seq= 10)は、シーケンス番号 10のデータパケットであることを 示している。 [0200] 受信側装置 31は、ウィンドウ更新通知機能を停止している状態で、一定間隔で、送 信側装置 38からの送信データパケットを受信している。このとき、データパケット P15 2がパケットロスしたとして説明をする。
[0201] 受信側装置 31は、データパケット P153の到着によりパケットロスが発生したことに 気付く。そのため、受信側装置 31は、 ACK番号 11の ACKパケット P133を送信する 。その後も、受信側装置 31は、同様にパケットロス以降のデータパケット P154、 P15 5、 P156を受信し、パケットロスが発生しているため、 ACK番号 11の ACKパケット P 134、 P135、 P136を送信する。このとき、送信側装置 38は、重複した ACK番号の ACKパケットを 4連続で受信すると、ネットワーク上でパケットロスが発生したと検知し 、タイムアウトを待たずに即座に、データパケット P158を再送する (TCP高速再送機 能)。ここまでは、従来の TCPでも、実装されている機能である。
[0202] 次に、 TCP高速再送機能により、データパケット P158が再送処理された以降の説 明をする。
[0203] 受信側装置 31では、再送されたデータパケット P158が受信されると、 TCPパケット 処理部 64は、受信レート決定部 70へ、パケットロスが発生して再送パケットを受信し たことを通知する。再送パケットを受信したことを通知された受信レート決定部 70は、 前回 RWIN記憶部 71の値を初期化し、ウィンドウ更新タイマ部 69にウィンドウ更新タ イマの起動を促し、更新量を 1とし、ウィンドウ更新通知機能を再開する。その後、受 信側装置 31は、 ACKパケット P138を生成し、送信する。このとき生成される ACKパ ケット P138は、現在受信しているシーケンス番号 16から、 ACK番号 17を設定し、前 回 RWIN記憶部 71に記録されている値と更新量を元にウィンドウサイズ 1が設定され る。この ACKパケット P138を受信した送信側装置 31は、通知されたウィンドウサイズ 1に基づき、続きのシーケンス番号 17のデータパケット P159を送信する。
[0204] 次に、受信側装置 31は、 ACKパケット P138を送信後、所定間隔の Tミリ秒が経過 すると、(式 1)に従い、前回通知したウィンドウサイズ 1に、更新容量 1を加算し、 2をゥ インドウ更新通知パケットのウィンドウサイズに設定し、そのウィンドウ更新通知パケット を送信側装置 38へ通知する(P139)。 ACKパケット P139を受信した送信側装置 3 8は、受信した ACKパケット P139のウィンドウサイズが 2であることから、既に送信済 みシーケンス番号 17を含めて 2個のデータパケットを送信することが可能となる。その ため、送信側装置 38は、データパケット P159の続きであるシーケンス番号 18のデー タパケット P160を送信する。以降、受信側装置 31は、実施の形態 1と同様に Tミリ秒 間隔で、ウィンドウ更新処理を行い、 Tミリ秒間隔で、データパケットを受信することに なる。
[0205] このように本実施の形態では、実施の形態 1および 2と同様の効果を得ることができ る。さらに、本実施の形態では、パケットロス発生後も、ウィンドウ更新通知機能を再 開させること〖こよって、送信側装置の再送データに関しても送信レート制御を行うこと が可能となる。また、実施の形態 3と組み合わせることにより、実施の形態 3で得られ る効果ち享受することがでさる。
[0206] (実施の形態 5)
本実施の形態における通信装置 (受信側装置)は、実施の形態 1の図 8に示す構 成と略同様であって、処理部のみが異なる。したがって、処理部以外の構成要素に っ 、ての詳細な説明は省略する。
[0207] 図 17は、本実施の形態の受信側装置 31における処理部の機能構成の一例を示 す構成図である。本実施の形態の受信側装置 31は、実施の形態 1の処理部 33の代 わりに処理部 33cを備える。以降、各構成要素の機能に関して説明を行う。なお、本 実施の形態における処理部 33cは、実施の形態 2の処理部 33aに対して付加的な機 能を有するため、実施の形態 2との差分のみを説明する。
[0208] 処理部 33cは、 IP処理部 101、 TCP処理部 102およびアプリケーション処理部 10
3を備える。
[0209] また、本実施の形態の受信側装置 31の TCP処理部 102は、 TCPパケット処理部 1 04、受信バッファ 107、ウィンドウサイズ算出部 108、ウィンドウ更新タイマ部 109、受 信レート決定部 110、前回 RWIN記憶部 111、および ACK遅延部 112から構成され る。ここで、受信バッファ 107、ウィンドウサイズ算出部 108、ウィンドウ更新タイマ部 1 09、および前回 RWIN記憶部 111は、実施の形態 2の受信バッファ 67、ウィンドウサ ィズ算出部 68、ウィンドウ更新タイマ部 69および前回 RWIN記憶部 71と同一の機能 および構成を有する。 [0210] TCPパケット処理部 104は、 ACK生成部 105およびウィンドウ更新通知生成部 10 6を備える。ウィンドウ更新通知生成部 106は、実施の形態 2のウィンドウ更新通知生 成部 66と同様の機能および構成を有する。
[0211] ACK生成部 105は、実施の形態 1〜4の ACK生成部と同様、受信した TCPバケツ トのシーケンス番号に基づいて、 ACK番号を決定し、 ACKパケットを生成する。 AC Kパケットには、ウィンドウサイズ算出部 108から得た、現在受信可能な空き容量であ るウィンドウサイズも設定される。さらに、本実施の形態の ACK生成部 105は、生成し た八0^パケットを八0¾@延部112へ渡す。渡された ACKパケットは、その後送信さ れる。
[0212] 受信レート決定部 110は、実施の形態 2の受信レート決定部 70と同様の機能を有 するとともに、 ACK遅延部 112に ACKパケット遅延時間とその ACK量とを指定する 機能を有する。 ACKパケット遅延時間および ACK量は、次の式で決定される。
[0213] ACK量 =更新量 · · ·(式 12)
ACKパケット遅延時間 =更新間隔 (上述の所定間隔) · · ·(式 13)
[0214] なお、 ACK量および ACKパケット遅延時間は、更新量および更新間隔を算出す る式と同様に、 FIF036の容量や、システムバス 32の転送能力力も算出したり、ァプ リケーシヨンが要求するビットレートから算出したりすることができる。
[0215] ACK遅延部 112は、生成された ACKパケットを送信前に一時的に保持し、遅延さ せる機能を有する。 ACK遅延時間は、受信レート決定部 110により決定される。
[0216] 図 18は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 18の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。また、 1パケット長を 1、更新量を 4、更新間隔(上述の所定 間隔)を Tミリ秒、として説明をする。さらに、図中の P175 (Ack= 14, Win= 16)は、 ACK番号 14、ウィンドウサイズ 16の ACKパケットであることを示し、 P183 (Seq= 18 , 19, 20, 21)は、シーケンス番号 18、 19、 20、 21のデータノケットであることを示し ている。
[0217] 受信側装置 31は、実施の形態 2と同様に、ウィンドウ更新通知機能を開始後、 1RT Tが経過し、データパケット P181を受信したために、ウィンドウ更新通知機能を停止 している状態である。
[0218] 受信側装置 31の ACK生成部 105は、データパケット P181が受信されるとその AC Kパケットを生成し、 ACK遅延部 112へ渡す。 ACKパケットを受け取った ACK遅延 部 112は、前回 ACKパケット(または、ウィンドウ更新通知パケット)を送信した時刻に ACKパケット遅延時間を加算した ACK送信時刻を求め、現在時刻が ACK遅延時 刻を越えているかつ、 ACK番号が前回 ACKパケットに比べ ACK量分進んでいるの なら、即座に ACKパケットを送信する。図 18では、データパケット P181が受信され た時点で、前回 ACKパケット送信時刻から ACKパケット遅延時間が経過して 、るの で、即座に ACKパケット P175は送信されている。
[0219] ここで、送信側装置 38が送信したデータパケット P182がネットワーク 37の状況変 化により通常よりも早く受信されたとする。受信側装置 31の ACK生成部 105は、受 信したデータパケット P 182に対する ACKパケットを生成し、 ACK遅延部 112へ渡 す。八じ1^パケットを受け取った八じ1¾@延部112は、前回 ACKパケット P175の送信 時刻に ACK遅延時間を加算した ACK送信時刻を求めた結果、 ACK送信時刻に現 在時刻が満たないので、即座に ACKパケット P176の送信を行わない。その後、 AC K遅延部 112は、 ACK送信時刻に現在時刻が達すると、 ACK遅延部 112で保留し ていた ACKパケット P176を送信する。
[0220] 図 19は、本実施の形態におけるデータパケットと ACKパケットの他のやり取りを示 したシーケンス図である。図 19の例では、受信側装置 31が送信する ACKパケット、 もしくは、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータ パケットを実線で示している。また、 1パケット長を 1、更新量を 4、更新間隔(上述の 所定間隔)を Tミリ秒、として説明をする。
[0221] 受信側装置 31は、実施の形態 2と同様に、ウィンドウ更新通知機能を開始後、 1RT Tが経過し、データパケット P201を受信したために、ウィンドウ更新通知機能を停止 している状態である。
[0222] 受信側装置 31の ACK生成部 105は、データパケット P201が受信されるとその AC Kパケットを生成し、 ACK遅延部 112へ渡す。 ACKパケットを受け取った ACK遅延 部 112は、前回 ACKパケット(または、ウィンドウ更新通知パケット)を送信した時刻に ACKパケット遅延時間を加算した ACK送信時刻を求め、現在時刻が ACK遅延時 刻を越えているかつ、 ACK番号が前回 ACKパケットに比べ ACK量分進んでいるの なら、即座に ACKパケットを送信する。図 19では、データパケット P201が受信され た時点で、前回 ACKパケット送信時刻から ACKパケット遅延時間が経過して 、るの で、即座に ACKパケット P195は送信されている。
[0223] ここで、送信側装置 38が送信したデータパケット P202がネットワーク 37の状況変 化により通常より遅延して受信されたとする。受信側装置 31の ACK生成部 105は、 受信したデータパケット P202に対する ACKパケットを生成し、 ACK遅延部 112へ 渡す。八0^パケットを受け取った八0¾@延部112は、前回 ACKパケット P195の送 信時刻に ACK遅延時間を加算した ACK送信時刻を求めた結果、すでに現在時刻 が ACK送信時刻を経過しているので、即座に ACKパケット 196の送信を行う。つま り、図 19では、前回 ACKパケット P195の送信時刻力も ACKパケット遅延時間を十 分に経過しているので、即座に ACKパケット P196は送信されている。
[0224] さらに、受信側装置 31は、送信側装置 38が送信したデータパケット P203を受信す る。受信側装置 31は、受信したデータパケット P203に対する ACKパケットを生成し 、 ACK遅延部 112へ渡す。八じ1^パケットを受け取った八じ1¾@延部112は、前回 A CKパケット P196の送信時刻に ACK遅延時間を加算した ACK送信時刻を求めた 結果、 ACK送信時刻に現在時刻が満たないため、 ACKパケット 197の送信を行わ ない。その後、 ACK遅延部 112は、 ACK送信時刻に現在時刻が達すると、 ACK遅 延部 112で保留していた ACKパケット P197を送信する。以降も、 ACK遅延部 112 は、 ACK送信時刻を確認し、 ACKパケット P198、 P199の送信を行う。そして、 AC Kパケット P200の時点で、データパケット到着間隔が所定間隔に戻ったため、即座 に ACKパケットが送信されるようになる。
[0225] このように本実施の形態では、実施の形態 1および 2と同様の効果を得ることができ る。さらに、本実施の形態では、ネットワークの揺らぎによって、データパケットの到着 間隔に変化が生じたとしても、 ACKパケットの送信間隔を制御することによって、送 信側装置の送信レート制御を行うことが可能となる。また、本実施の形態を実施の形 態 3または 4と組み合わせることにより、実施の形態 3または 4で得られる効果も享受 することができる。
[0226] (実施の形態 6)
本実施の形態における通信装置 (受信側装置)は、実施の形態 1の図 8に示す構 成と略同様であって、処理部のみが異なる。したがって、処理部以外の構成要素に っ 、ての詳細な説明は省略する。
[0227] また、本実施の形態の受信側装置 31における処理部は、実施の形態 5の図 17に 示す処理部 33cと略同様の構成を有する。したがって、本実施の形態における処理 部について、図 17を用い、実施の形態 5との違いが明確になるように以下説明する。
[0228] 図 17は、本発明の受信側装置 31における TCP処理部を中心とした処理構成例を 示したものである。以降、各処理部の機能に関して説明を行う。なお、実施の形態 5と 構成例は、同じでありその機能に若干の差があるのみである。本実施の形態を説明 する上では、実施の形態 5との差分のみを説明する。
[0229] 本実施の形態における受信レート決定部 110は、実施の形態 5に示した機能を有 するとともに、受信レート変更の要求を受けて、 ACK遅延時間と ACK量を更新し、 A CK遅延部 112へ通知する機能を有する。
[0230] 本実施の形態における ACK遅延部 112は、実施の形態 5に示した機能を有すると ともに、受信レート変更要求に基づき受信レート決定部 110で決定された、 ACK遅 延時間と ACK量とを受け取り、送信する ACKパケットに反映する機能を有する。
[0231] 図 20は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 20の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。また、ウィンドウ更新通知の開始後の、 1RTTが経過するま での 1パケット長を 1、更新量を 4、更新間隔 (上述の所定間隔)を Tミリ秒、として説明 をする。さらに、図中の P211 (Ack= 14, Win = 16)は、 ACK番号 14およびウィンド ゥサイズ 16の ACKパケットであることを示し、 P222 (Seq= 18, 19, 20, 21)は、シ 一ケンス番号 18、 19、 20、 21のデータパケットであることを示している。
[0232] 受信側装置 31は、データパケット P221を受信し、 ACKパケット P212を送信する。 ここまでは、受信側装置 31は、実施の形態 5と同様のデータ送受信処理を行なう。そ の後、受信側装置 31は、図中の「受信レート変更」の時刻に受信レートを変更したく なったとする。本実施の形態では、受信間隔 (上述の所定間隔)を 2倍の 2Tミリ秒と 変更したいとする。このレート変更要求は、受信レート決定部 110に通知される。受 信レートの変更要求を受け取った受信レート決定部 110は、受信間隔を 2倍にしたい ことから、 ACK遅延部 112に ACKパケット遅延時間を 2倍とするように指示を出す。
[0233] その後、受信側装置 31がデータパケット P222を受信すると、 ACK生成部 105は A CKパケットを生成し、 ACK遅延部 112へ渡す。 ACKパケットを受け取った ACK遅 延部 112は、前回の ACK送信時刻に ACKパケット遅延時間を加算して、 ACKパケ ット送信時刻を求める。このとき算出される ACK送信時刻は、受信レート変更要求を 受けずに算出される ACK送信時刻よりも先となっている。そのため、データパケット P 222が受信された時点にぉ 、て、現在時刻が ACK送信時刻に達して ヽな 、ので、 受信側装置 31の ACK遅延部 112は、即座に ACK送信を行わな ヽ。
[0234] さらに、受信側装置 31がデータパケット P223を受信すると、 ACK生成部 105は A CKパケットを生成し、 ACK遅延部 112へ渡す。 ACKパケットを受け取った ACK遅 延部 112は、前回の ACK送信時刻に ACKパケット遅延時間を加算して、 ACKパケ ット送信時刻を求める。その結果、データパケット P223が受信された時点において、 現在時刻が ACK送信時刻に達しているので、 ACK遅延部 112は即座に八00¾信 を行う。また、このとき ACK遅延部 112は、前のデータパケット P222に対する ACK パケットが保留されて 、るため、その保留分のデータ量 4をウィンドウサイズから減算 して、ウィンドウサイズ 12として ACKパケット P213の送信を行う。以降同様に、受信 側装置 31はデータパケット P224、 P225の受信処理を行い、 ACKパケット P214の 送信を行う。このようにして、送信側装置 38が送信するデータパケットの送信間隔を 2 倍に変更することが可能である。
[0235] 図 21は、本実施の形態におけるデータパケットと ACKパケットの他のやり取りを示 したシーケンス図である。図 21の例では、受信側装置 31が送信する ACKパケット、 もしくは、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータ パケットを実線で示している。また、ウィンドウ更新通知の開始後の、 1RTTが経過す るまでの 1パケット長を 1、更新量を 4、更新間隔 (上述の所定間隔)を Tミリ秒、として 説明をする。
[0236] 受信側装置 31は、データパケット P241を受信し、 ACKパケット P232を送信する。
ここまでは、受信側装置 31は、実施の形態 5と同様のデータ送受信処理を行なう。そ の後、受信側装置 31は、図中の「受信レート変更」の時刻に受信レートを変更したく なったとする。本実施の形態では、更新量を 2分の 1に変更したいとする。このレート 変更要求は、受信レート決定部 110に通知される。受信レート変更要求を受け取つ た受信レート決定部 110は、更新量を 2分の 1にしたいことから、 ACK遅延部 112に 更新量を 2分の 1とするように指示を出す。すなわち、本実施の形態では、更新量が 2 に変更される。
[0237] その後、受信側装置 31がデータパケット P242を受信すると、 ACK生成部 105は A CKパケットを生成し、 ACK遅延部 112へ渡す。 ACKパケットを受け取った ACK遅 延部 112は、前回の ACK送信時刻に ACKパケット遅延時間を加算して、 ACKパケ ット送信時刻を求める。このとき算出される ACK送信時刻は、データパケット P242が 受信された時点にお 、て現在時刻に達して!/ヽるため、 ACK遅延部 112は即座に A CKパケット P233を送信する。しかし、受信レート変更要求により ACK遅延部 112の 更新量は、 2分の 1となっている。そのため、現在送信しょうとしている ACKパケットの ACK量が、シーケンス番号 18、 19、 20、 21の 4つ分であり、更新量が 2であるから、 八じ1¾@延部112は、(式 14)に従いウィンドウサイズを 14に設定して ACKパケット P 233を送信する。
[0238] ウィンドウサイズ =前回 RWIN記憶部 111が記憶するウィンドウサイズ
- (ACK量-更新量) · · ·(式 14)
[0239] 同様に、受信側装置 31は、データパケット P243、 P244、 P245を受信するとウィン ドウサイズを 2ずつ減らしながら、 ACKパケット P234、 P235、 P236を送信していく。
[0240] その後、受信側装置 31は、送信側装置 38からデータパケット P246を受信する。こ こで、データパケット P246はシーケンス番号 34、 35の 2つのデータ分であって、 AC K量 = 2となる。したがって、受信側装置 31は、(式 14)に従い、前回のウィンドウサイ ズと同じ 8のウィンドウサイズを示す ACKパケット P237を送信することになる。このよう にして、送信側装置 38が送信するデータパケットの送信量を 2分の 1に変更すること が可能である。
[0241] このように本実施の形態では、実施の形態 1、 2および 5と同様の効果を得ることが できる。さらに、本実施の形態では、受信側装置の受信状況の変化に応じて、 ACK 送信間隔やウィンドウサイズを制御することにより、送信側装置が送信するデータパ ケットの送信レートを動的に変更することが可能である。また、本実施の形態を実施 の形態 3または 4と組み合わせることにより、実施の形態 3または 4で得られる効果も享 受することができる。
[0242] (実施の形態 7)
本実施の形態における通信装置 (受信側装置)は、実施の形態 1の図 8に示す構 成と略同様であって、処理部のみが異なる。したがって、処理部以外の構成要素に っ 、ての詳細な説明は省略する。
[0243] 図 22は、本実施の形態の受信側装置 31における処理部の機能構成の一例を示 す構成図である。本実施の形態の受信側装置 31は、実施の形態 1の処理部 33の代 わりに処理部 33dを備える。以降、各構成要素の機能に関して説明を行う。なお、本 実施の形態における処理部 33dは、実施の形態 1の処理部 33に対して付加的な機 能を有するため、実施の形態 1との差分のみを説明する。
[0244] 処理部 33dは、 IP処理部 121、 TCP処理部 122およびアプリケーション処理部 12 3を備える。
[0245] また、本実施の形態の受信側装置 31の TCP処理部 122は、 TCPパケット処理部 1 24、受信バッファ 127、ウィンドウサイズ算出部 128、ウィンドウ更新タイマ部 129、受 信レート決定部 130、および前回 RWIN記憶部 131から構成される。ここで、受信バ ッファ 127、ウィンドウサイズ算出部 128、ウィンドウ更新タイマ部 129、および前回 R WIN記憶部 131は、実施の形態 1の受信バッファ 47、ウィンドウサイズ算出部 48、ゥ インドウ更新タイマ部 49および前回 RWIN記憶部 51と同一の機能および構成を有 する。
[0246] TCPパケット処理部 124は、 ACK生成部 125およびウィンドウ更新通知生成部 12 6を備える。 TCPパケット処理部 124は、実施の形態 1に示した TCPパケット処理部 4 4の機能を有するとともに、受信レート決定部 130から更新量が通知され、連続受信 データパケットが更新量に達したとき、受信データパケットが更新量に達したことを受 信レート決定部 130に通知する機能をさらに有する。
[0247] 受信レート決定部 130は、実施の形態 1に示した受信レート決定部 50の機能を有 する。さらに、受信レート決定部 130は、 TCPパケット処理部 124へ更新量を通知す る機能と、連続受信データパケットが更新量に達したときに、受信データパケットが更 新量に達したことを通知する通知を TCPパケット処理部 124から受け取る機能とを有 する。さらに、受信レート決定部 130は、更新量に達したことの通知を受け取ると、 ( 式 3)〜 (式 8)の 、ずれかの方法で更新量と所定間隔を算出し、ウィンドウサイズ算出 部 128とウィンドウ更新タイマ部 129へその値を伝える。
[0248] 図 23は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 23の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。また、 1パケット長を 1、更新量を 4、更新間隔(上述の所定 間隔)を Tミリ秒、として説明をする。さらに、図中の P251 (Ack= 2, Win=4)は、 A CK番号 2およびウィンドウサイズ 4の ACKパケットであることを示し、 P261 (Seq= l) は、シーケンス番号 1のデータパケットであることを示している。
[0249] 送信側装置 38は、送信データ量を徐々に増加させるスロースタートという機能を有 している。そのため、送信側装置 38が送信する送信データパケットの数は、 1RTTご とに、 1パケット(P261)、 2パケット(P262)、 4パケット(P263)と増加している。デー タパケット P262が受信されるまでは、受信側装置 31では、送信側装置 38が連続に 送信するデータパケットが更新量に達して 、な 、ため、ウィンドウ更新通知機能は行 われていない。
[0250] その後、受信側装置 31は、データパケット P263を受信する。データパケット P263 を受信した受信側装置 31は、データパケット P263に対する ACKパケット P253を生 成し送信する。また、受信側装置 31では、 TCPパケット処理部 124が受信レート決 定部 130へ、更新量に達したことを通知する。更新量に達したことを通知された受信 レート決定部 130は、ウィンドウサイズ算出部 128へ更新量 (本実施の形態では 4)を 通知し、ウィンドウ更新タイマ部 129へウィンドウ更新タイマの起動を促し、ウィンドウ 更新通知機能を開始する。 ACKパケット P253を受信した送信側装置 38は、受信し た ACKパケット P253のウィンドウサイズ力 であることから、続きのシーケンス番号 8、 9、 10、 11を送信する。
[0251] 次に、ウィンドウ更新通知機能を開始した受信側装置 31は、 ACKパケット P253を 送信後、所定間隔 Tミリ秒経過すると、(式 1)に従い、前回通知したウィンドウサイズ 4 に、更新量 4を加算し、 8をウィンドウ更新通知パケットのウィンドウサイズに設定し、そ のウィンドウ更新通知パケットを送信側装置 38へ通知する(P254)。 ACKパケット P2 54を受信した送信側装置 38は、受信した ACKパケット P254のウィンドウサイズが 8 であることから、既に送信済みシーケンス番号 8、 9、 10、 11を含めて 8個のデータパ ケットを送信することが可能となる。そのため、送信側装置 38は、データパケット P26 3の続きであるシーケンス番号 12、 13、 14、 15のデータパケット P264を送信する。
[0252] このように本実施の形態では、実施の形態 1と同様の効果を得ることができるととも に、送信側装置がスロースタートを行う場合においても、受信側装置から送信側装置 の送信レートを制御することができる。また、以下の図 24に示すデータ送受信処理で あっても、上述と同様の効果を得ることができる。
[0253] 図 24は、本実施の形態におけるデータパケットと ACKパケットの他のやり取りを示 したシーケンス図である。図 24の例では、受信側装置 31が送信する ACKパケット、 もしくは、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータ パケットを実線で示している。また、 1パケット長を 1、更新量を 4、更新間隔(上述の 所定間隔)を Tミリ秒、として説明をする。
[0254] このとき、受信側装置 31と送信側装置 38とのデータ送受信処理は、データパケット P343が受信されるまで、図 23に示す処理と同様に行われる。次に、受信側装置 31 では、データパケット P343が受信されると、 TCPパケット処理部 124は、受信レート 決定部 130へ、更新量に達したことを通知する。更新量に達したことを通知された受 信レート決定部 130は、ウィンドウサイズ算出部 128へ更新量 (本実施の形態では 4) を通知し、ウィンドウ更新タイマ部 129へウィンドウ更新タイマの起動を促し、ウィンドウ 更新通知機能を開始する。 [0255] 次に、ウィンドウ更新通知機能を開始した受信側装置 31は、次の式 14に則りウィン ドウ更新を行う。
[0256] ウィンドウサイズ =前回通知したウィンドウサイズ +更新量 ACK番号増加量 …
(式 14)
[0257] なお、本実施の形態では、前回通知したウィンドウサイズを 4、更新量を 4、 ACK番 号増加量を 1として説明する。
[0258] データパケット P343を受信した受信側装置 31は、ウィンドウ更新通知機能により、 データパケット受信後、 ACKパケット P333を送信側装置へと送信する。このときの、 ACKパケット P333は、 ACK番号は ACK番号増加量 1により、 5となり、ウィンドウサ ィズは、(式 14)により、 7となる。 ACKパケット P333を受信した送信側装置 38は、受 信した ACKパケット P333のウィンドウサイズが 7で、 ACK番号が 5であることから、 5 以降のシーケンスで未送信シーケンスであるシーケンス番号 8、 9、 10、 11のデータ パケット P344を送信する。
[0259] 次に、ウィンドウ更新通知機能により受信側装置 31は、 ACKパケット P333を送信 後、所定間隔の Tミリ秒が経過すると、(式 14)に従い、前回通知したウィンドウサイズ 7に、更新容量 4を加算し、 ACK番号増加量 1に基づいて、ウィンドウサイズ 10を算 出する。受信側装置 31は、算出したウィンドウサイズ 10を設定した ACKパケット P33 4を、送信側装置 38へ通知する。 ACKパケット P334を受信した送信側装置 38は、 受信した ACKパケット P334のウィンドウサイズが 10で、 ACK番号が 6であることから 、 ACK番号が 6以降のシーケンスで未送信シーケンスであるシーケンス番号 12、 13 、 14、 15のデータパケット P345を送信する。
[0260] このように本実施の形態では、実施の形態 1と同様の効果を得ることができるととも に、送信側装置がスロースタートを行う場合においても、受信側装置から送信側装置 の送信レートを制御することが可能である。また、本実施の形態を実施の形態 2、 3、 または 4などと組み合わせることにより、各々の実施の形態で得られる効果も享受する ことができる。
[0261] なお、本実施の形態では、送信側装置 38から連続的に送信されたデータパケット が更新量に達したときに、ウィンドウ更新通知機能を開始させたが、予め定められた 時間が経過したときや、送信側装置 38から送信された全てのデータパケットの数が 予め定められた数に達したときに、ウィンドウ更新通知機能を開始させてもよい。
[0262] (実施の形態 8)
本実施の形態における通信装置 (受信側装置)は、実施の形態 1の図 8に示す構 成と略同様であって、処理部のみが異なる。したがって、処理部以外の構成要素に っ 、ての詳細な説明は省略する。
[0263] 図 25は、本実施の形態の受信側装置 31における処理部の機能構成の一例を示 す構成図である。本実施の形態の受信側装置 31は、実施の形態 1の処理部 33の代 わりに処理部 33eを備える。
[0264] 処理部 33eは、 IP処理部 141、 TCP処理部 142およびアプリケーション処理部 14
3を備える。なお、本実施の形態においては、 TCP処理部 142は、処理部 33eで実 行されるプログラムとして説明を行うが、 LSIなどに実装されたものであっても良い。ま た、図中の実線は、送受信パケットのデータフローを、破線は制御情報のやり取りに 関するフローを示している。
[0265] 受信側装置 31の TCP処理部 142は、 TCPパケット処理部 144、受信バッファ 147 、ウィンドウサイズ算出部 148、および前回 RWIN記憶部 149から構成される。
[0266] TCPパケット処理部 144は、 TCPパケットの送受信処理の機能を有する。 TCPパ ケット処理部 144は、受信したパケットのアプリケーションを特定し、そのパケットをァ プリケーシヨンへ引き渡すため、受信バッファ 147に格納する。さらに、 TCPパケット 処理部 144は、 TCPパケットを構築し、 IP処理部 141へ渡し、 TCP/IPパケットとし て送信する機能を有する。また、 TCPパケット処理部 144には、 ACK生成部 145、ゥ インドウ更新通知生成部 146およびパケットロス検知部 150が含まれる。
[0267] ACK生成部 145は、受信した TCPパケットのシーケンス番号に基づいて、 ACK番 号を決定し、 ACKパケットを生成する。 ACKパケットには、ウィンドウサイズ算出部 1 48から得た、現在受信可能な空き容量、つまりウィンドウサイズも設定される。
[0268] ウィンドウ更新通知生成部 146は、受信バッファ 147の空き状況に増加が生じたと き、ウィンドウ更新通知パケットを生成する。また、ウィンドウ更新通知生成部 146は、 ウィンドウサイズ算出部 148から得たウィンドウサイズを、そのウィンドウ更新通知パケ ットに設定する。
[0269] パケットロス検知部 150は、 TCPパケットに抜けやロスがあったことを検知する機能 を持つ。また、パケットロス検知部 150は、ロスが発生したことをウィンドウサイズ算出 部 148に通知する機能を有する。
[0270] 受信バッファ 147は、アプリケーション処理部 143に渡すための受信データを一時 的に保持する機能を有する。受信バッファ 147は、最大 RWIN— MAXのデータを格 納することができ、アプリケーション処理部 143の要求により、受信バッファ 147に一 時的に保持されているデータを順に、アプリケーション処理部 143へと渡す。また、受 信バッファ 147は、アプリケーション処理部 143へデータが渡されることによってウィン ドウサイズが増力 tlした際は、ウィンドウ更新通知生成部 146へウィンドウサイズが増加 したことを通知する。
[0271] ウィンドウサイズ算出部 148は、送信側装置 38へウィンドウサイズとして通知する値 を算出する機能を有する。つまり、本実施の形態におけるウィンドウサイズ算出部 14 8は、パケットロス検知部 150から通知されたパケットロスに基づいて、ウィンドウサイ ズを算出する。ウィンドウサイズは、次の式で算出される。
[0272] ウィンドウサイズ =前回通知したウィンドウサイズ一前回通知したウィンドウサイズ中 ロスしたデータ量' · ·(式 15)
[0273] また、所定時間 Hにパケットロスが検知されていな力つた場合は、次の式で算出し ても良い。
[0274] ウィンドウサイズ =前回通知したウィンドウサイズ +更新量 · · ·(式 16)
なお、更新量は、 1MSSであったり、複数 MSSであったりしても良い。
[0275] 前回 RWIN記憶部 149は、前回にウィンドウ更新通知を行った際に用いたウィンド ゥサイズ (以下、前回ウィンドウサイズという)を記録保持する機能を有する。前回 RWI N記憶部 149は、記録保持する前回ウィンドウサイズをウィンドウサイズ算出部 148へ 渡し、ウィンドウサイズ算出部 148が算出した結果を受け取り、前回ウィンドウサイズを 更新し記録保持を行う。
[0276] 図 26は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 26の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。また、説明を簡略ィ匕するために、 1パケット長を 1、更新量を 2、所定時間を Hミリ秒、として説明をする。さらに、図中の P351 (Ack= l, Win=8) は、 ACK番号 1およびウィンドウサイズ 8の ACKパケットであることを示し、 P362 (Se q = 8)は、シーケンス番号 8のデータパケットであることを示している。
[0277] 受信側装置 31は、送信側装置 38とコネクションの確立などを経て、送信側装置 38 から送信されるデータを受信する状態となる。このとき、受信側装置 31は、ウィンドウ サイズを 8として、送信側装置 38へ通知している(P351)。送信側装置 38は、ウィンド ゥサイズ 8に基づいて、データパケット P361、 P362を受信側装置 31へ送信する。し かし、このときネットワーク 37が混雑している、または、中継装置の能力不足などが原 因で、データパケット P362がロスしたとする。データパケット P362が到達しなかった 受信側装置 31では、到着したシーケンス番号までに対する ACKパケット P352を送 信する。 ACKパケット P352を受信した送信側装置 38は、続きのシーケンス番号で あるデータパケット P363を送信する。
[0278] データパケット P363を受信した受信側装置 31は、シーケンス番号 8がロスしたこと 検知し、前回送信した ACKパケット P352と同様の ACKパケット(以下、重複 ACKパ ケットという) P353を、受信したパケット(シーケンス番号 9〜 15のパケット)数分だけ 送信する。なお、本実施の形態では、 7個の重複 ACKパケット P353が送信されるこ とになる。重複 ACKパケットを受信した送信側装置 38は、シーケンス番号 8がロスし たことを知り、高速再送機能によりシーケンス番号 8のデータパケット P364を再送す る。
[0279] 再送されたデータパケット P364を受信した受信側装置 31は、(式 15)によりウィンド ゥサイズを減少させ、ウィンドウサイズ 7として ACKパケット P354を送信する。 ACKパ ケット P354を受信した送信側装置 38は、その ACKパケットに設定されるウィンドウサ ィズが 7であることから、 7パケット分のデータパケット P365を送信する。
[0280] つまり、 ACKパケット P354でウィンドウサイズ力 ¾に設定されて 、れば、送信側装 置 38は、データパケット P361、 P362を送信したときと同様、再び、 8個のパケットを 有するデータパケットを受信側装置 31に送信しょうとする。その結果、再び、パケット ロスが発生する可能性が高まる。
[0281] しかしながら、本実施の形態では、 ACKパケット P354でウィンドウサイズが 7に設 定されるため、再びパケットロスが発生するのを防ぐことができる。
[0282] 図 27は、本実施の形態におけるデータパケットと ACKパケットの他のやり取りを示 したシーケンス図である。図 27の例では、受信側装置 31が送信する ACKパケット、 もしくは、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータ パケットを実線で示している。また、説明を簡略ィ匕するために、 1パケット長を 1、更新 量を 2、所定時間を Hミリ秒、として説明をする。
[0283] 受信側装置 31は、送信側装置 38とコネクションの確立などを経て、送信側装置 38 から送信されるデータを受信する状態となる。このとき、受信側装置 31は、ウィンドウ サイズを 6として、送信側装置 38へ通知している(P371)。送信側装置 38は、ウィンド ゥサイズ 6に基づいて、データパケット P381を受信側装置 31へ送信する。データパ ケット P381を受信した受信側装置 31は、 ACK番号 7およびウィンドウサイズ 6を示す ACKパケット P372を送信側装置 38に送信する。このような受信側装置 31と送信側 装置 38のデータ送受信処理は、暫く継続して繰り返される。
[0284] そして、受信側装置 31は、データパケットの受信を開始して所定時間 Hが経過する と、(式 16)によりウィンドウサイズを更新量だけ増加させ、ウィンドウサイズを 8として通 知する(P373)。これにより、送信側装置 38は、ウィンドウサイズ 8に応じたデータパ ケット P382を送信する。
[0285] つまり、所定時間 Hの間にパケットロスが発生していなければ、送信側装置 38は、 パケットロスの発生を抑えた状態でより多くのパケットを送信することができる可能性 が高い。 したがって、本実施の形態では、所定時間 Hの間にパケットロスが発生し ていなければ、ウィンドウサイズが大きく設定されるため、データ転送効率を向上する ことができる。
[0286] このように本実施の形態では、ウィンドウサイズをパケットロス状況にあわせ動的に 変化させることで、連続的なパケットロスを防止することが可能となる。また、パケット口 スが発生していないことを検知し、ウィンドウサイズを増加させることで、より効率の良 Vヽデータ転送を実現することが可能となる。 [0287] (実施の形態 9)
本実施の形態における通信装置 (受信側装置)は、実施の形態 1の図 8に示す構 成と略同様であって、処理部のみが異なる。したがって、処理部以外の構成要素に っ 、ての詳細な説明は省略する。
[0288] 図 28は、本実施の形態の受信側装置 31における処理部の機能構成の一例を示 す構成図である。本実施の形態の受信側装置 31は、実施の形態 1の処理部 33の代 わりに処理部 33eを備える。
[0289] 処理部 33fは、 IP処理部 161、 TCP処理部 162およびアプリケーション処理部 163 を備える。なお、本実施の形態においては、 TCP処理部 162は、処理部 33fで実行 されるプログラムとして説明を行うが、 LSIなどに実装されたものであっても良い。また 、図中の実線は、送受信パケットのデータフローを、破線は制御情報のやり取りに関 するフローを示している。
[0290] 受信側装置 31の TCP処理部 162は、 TCPパケット処理部 164、受信バッファ 167 およびウィンドウサイズ算出部 168から構成される。なお、受信バッファ 167は、実施 の形態 1の受信バッファ 47と同一の機能および構成を有する。
[0291] TCPパケット処理部 164は、 TCPパケットの送受信処理の機能を有する。 TCPパ ケット処理部 164は、受信したパケットのアプリケーションを特定し、そのパケットをァ プリケーシヨンへ引き渡すため、受信バッファ 167に格納する。さらに、 TCPパケット 処理部 164は、 TCPパケットを構築し、 IP処理部 161へ渡し、 TCPZlPパケットとし て送信する機能を有する。また、 TCPパケット処理部 164には、 ACK生成部 165、 重複 ACK生成部 166およびパケット抜け検知部 169が含まれる。
[0292] ACK生成部 165は、受信した TCPパケットのシーケンス番号に基づいて、 ACK番 号を決定し、 ACKパケットを生成する。 ACKパケットには、ウィンドウサイズ算出部 1 68から得た、現在受信可能な空き容量、つまりウィンドウサイズも設定される。
[0293] 重複 ACK生成部 166は、受信パケットに抜けが発生したことをパケット抜け検知部 169から通知されると、重複 ACKパケットを生成し、送信する機能を有する。また、重 複 ACKパケットには、ウィンドウサイズ算出部 168から得た、ウィンドウサイズが設定さ れる。 [0294] パケット抜け検知部 169は、 TCPパケットに抜けやロスがあったことを検知する機能 を持つ。また、パケット抜け検知部 169は、パケット抜けがあったことを重複 ACK生成 部 166に通知する。
[0295] ウィンドウサイズ算出部 168は、受信バッファ 167の空き状況によりウィンドウサイズ を算出し、 ACK生成部 165や重複 ACK生成部 166へ通知する機能を有する。
[0296] 図 29は、本実施の形態におけるデータパケットと ACKパケットのやり取りを示した シーケンス図である。図 29の例では、受信側装置 31が送信する ACKパケット、もしく は、ウィンドウ更新通知パケットを破線で示し、送信側装置 38が送信するデータパケ ットを実線で示している。
[0297] 送信側装置 38は、受信側装置 31から ACKパケット P391を受信すると、データパ ケット P401, P402, P403を受信側装置 P391に送信する。ここで、送信側装置 38 が送信したデータパケット P401、 P402、 P403のうち、データパケット P402が受信 側装置 31に受信されな力つたとする。
[0298] このとき、受信側装置 31は、データパケット P403の到着によりパケットの抜けを検 知する。パケットの抜けを検知した受信側装置 31は、即座に ACKパケット P392を所 定数生成し、送信側装置 38へ送信する。
[0299] 所定数の ACKパケット P392を受信した送信側装置 38は、高速再送機能により、 即座にデータパケット P404を再送する。
[0300] このように本実施の形態では、パケット抜け検知後、同一の ACKパケットを所定数 、送信側装置へ送信することにより、送信側装置に高速再送機能を迅速に誘発させ ることが可能となり、パケット抜け力ものすばやい復旧を行うことが可能となる。
[0301] (実施の形態 10)
以下本実施の形態について、図面を参照しながら説明する。
[0302] 図 30は、本発明の実施の形態に係るネットワークの構成例および通信装置の構成 例を示す図である。図 30において、通信装置 200Aが、ネットワーク 3Aを経由し、通 信装置 100Aと通信する。通信装置 100Aおよび通信装置 200Aは、ネットワーク 3A と有線または無線で接続する通信機能を持つ装置であり、例えば、 Ethernet (登録 商標)インタフェースを備えた装置(例えば PC (Personal Computer)や、ネットワーク 通信が可能な家電装置など)である。ネットワーク 3Aは、有線または無線を含むネッ トワークであり、インターネットなどの公衆ネットワークなどが例として挙げられる。
[0303] 本実施の形態では、通信装置 100Aと通信装置 200Aとがそれぞれの間で TCPの コネクションを確立し、通信装置 200Aから通信装置 100Aにデータが送信されること を想定する。このような想定上、 TCPのコネクションにおけるデータ送信の関係にお いて、データ送信元の通信装置 200Aを送信側装置、データ送信先の通信装置 10 OAを受信側装置と呼ぶ。例えば、 FTP (File Transfer Protocol)サーバである送信側 装置 (例えば PC)から、アプリケーションプログラムに基づく動作を行なう FTPクライア ントたる受信側装置がファイルをダウンロードする場合や、 POP (Post Office Protocol )サーバである送信装置から、電子メールを扱うアプリケーションプログラムに基づく 動作を行なう受信側装置が電子メールを受信する場合などを想定する。
[0304] 通信装置 100Aは、処理部たる CPU101A、記憶部 102A、システムバス 103A、 および通信部 105Aを備える。
[0305] 通信部 105Aは、システムバス 103A上に接続されたハードウェアである。この通信 部 105Aは、 CPU101Aによって渡されたデータをネットワーク 3Aに送信する機能と 、ネットワーク 3Aからデータを受信して CPU101Aに渡す機能とを有する。
[0306] また、この通信部 105Aは、ネットワーク 3A力も受信したデータを一時的に保持す る受信用 FIFOメモリ 151Aと、 CPU101Aから渡されたデータを一時的に保持する 送信用 FIFOメモリ 152Aとを備える。さらに、通信部 105Aは、ネットワーク 3Aから受 信したデータが受信用 FIFOメモリ 151Aに収まらず溢れてしまった場合、そのデー タロスを検知するデータロス検知部 150Aを備える。
[0307] なお、データロス検知部 150Aは、ロスしたパケットのプロトコルおよびポート番号が 、現在通信しているプロトコルおよびポート番号と一致した場合のみに、オーバーラ ンの発生を CPU101Aに通知してもよい。さらに、受信用 FIFOメモリ 151Aと送信用 FIFOメモリ 152Aは、送信と受信で共有して!/ヽても良!、。
[0308] CPU101Aは、通信部 105Aの受信用 FIFOメモリ 151Aに格納されたデータを記 憶部 102Aに移動する(読み出し)機能と、記憶部 102Aに格納されているデータを 通信部 105Aの送信用 FIFOメモリ 152Aに移動する(書き込み)機能をもつ。また、 CPU101Aは、記憶部 102Aに格納さているデータに対してデータの解析や送信用 データの作成処理など、 TCPを含むプロトコル処理も行なう。また、 CPU101Aは、 通信アプリケーションプログラムや、必要に応じてその他のプログラムを、記憶部 102 Aを使用しながら実行する機能を持つ。
[0309] なお、記憶部 102Aから通信部 105Aの送信用 FIFOメモリ 152Aまたは通信部 10 5Aの受信用 FIFOメモリ 151Aから記憶部 102Aへのデータの転送において、通信 装置 100A, 200Aは、別途 DMAコントローラを具備し、 CPUではなぐ DMA (Dire ct Memory Access)コントローラによりデータの移動を行なう場合もある。さらに、各プ ロトコル処理は、 CPU101Aにより実施されるのではなぐ別途ハードウェアでそれぞ れ実施されてもよい。
[0310] 図 31は、通信装置 100Aにおける CPU101Aの機能構成を示す構成図である。
[0311] 図 31に示す機能構成は、図 30に示す CPU101A上で動作するソフトウェアとして 実現可能である。なお、図 31の構成図は、受信側装置として、本発明に係る TCPデ ータの受信処理を中心として記載されている力 通信装置 100Aは、 TCPデータの 送信処理を行なう機能部を具備していてもよい。また、通信装置 200Aは、従来の通 信装置であってもよいし、本発明が適用された受信処理の機能部を持つ通信装置で あってもよい。以下、各機能部の説明を記述するにあたり、本発明に係る受信処理に ついてのみ詳細に記述し、送信処理に係る機能および動作の説明は省略する。また 、本発明に直接関係のな 、TCP通信を実現するためのその他の構成にっ ヽても説 明を省略する。
[0312] なお、図 31においては、データの流れをいくつかの種類の線を用いてあらわしてい る。実線はパケットまたはデータの流れを示すデータフロー、点線は制御信号 (通知 またはパラメータ)の流れを示す制御フローである。
[0313] 図 31において、通信装置 100Aの CPU101Aは、受信または送信するパケットを 処理するパケット処理部の詳細な構成として、 API部 1100、 TCP処理部 1200、 IP 処理部 1300、 IF処理部 1400、および MAC処理部 1500を有する。さらに、 TCP処 理部 1200は、受信ノ ッファ 1240、 Window制御部 1250、 WinUpdate生成部 126 0、 DupAck生成部 1270、 Ack生成部 1280、 TCP送信部 1220、 TCP受信部 121 0、 TCPロス検知部 1215、および DupAck管理部 1230を有する。またさらに、 MA C処理部 1500は、ロス通知部 5000、ノ ケッ卜複製部 7000、 MAC送信部 1520、お よび MAC受信部 1510を有する。
[0314] API部 1100は、 TCP処理部 1200と例えば FTPなどのアプリケーションプログラム との間のデータの受け渡し、および、その処理完了の通知を行なう。 API部 1100は、 アプリケーションプログラムからの要求に応じて、 TCP処理部 1200にデータの受け 渡しを要求し、 TCP処理部 1200から渡されたデータを、アプリケーションプログラム が処理できるように必要に応じて変換やコピーを行い、その処理の完了を TCP処理 部 1200に通知する。
[0315] TCP処理部 1200は、 IP処理部 1300から受け取った TCPパケットを、 API部 110 0に渡すデータに変換する。 TCP処理部 1200は、 IP処理部 1300から受け取った一 つあるいは複数の TCPパケットに含まれるデータを、 TCPパケットから抽出して保持 し、 API部 1100からのデータの受け渡し要求に応じて、該当するデータを渡す。ま た、 TCP処理部 1200は、 IP処理部 1300から受け取った TCPパケットに対する Ack を作成して IP処理部 1300に渡す。なお、本実施の形態では、 Ackを、上記実施の 形態 1〜 9の ACKまたは ACKパケットとして説明する。
[0316] IP処理部 1300は、 IF処理部 1400から受け取った IPパケットから TCPパケットを抽 出し、 TCP処理部 1200に渡す。また、 IP処理部 1300は、 TCP処理部 1200から受 け取った TCPパケットに IPヘッダを追加して IPパケットを構築し、 IF処理部 1400に 渡す。
[0317] IF処理部 1400は、 MAC処理部 1500から受け取った MACフレームから IPバケツ トを抽出し、 IP処理部 1300に渡す。また、 IF処理部 1400は、 IP処理部 1300から受 け取った IPパケットに MACヘッダを追加して MACフレームを構築して MAC処理部 1500に渡す。
[0318] MAC処理部 1500は、図 30に示す通信部 105Aが受け取ったデータを IF処理部 1400に渡す。この処理は、図 30の通信部 105Aの受信用 FIFOメモリ 151Aから図 30の記憶部 102Aにデータを渡す (読み出し)処理である。また、 MAC処理部 1500 は、 IF処理部 1400から受け取った MACフレームを通信部 105Aに渡す。この処理 は、図 30の記憶部 102Aから通信部 105Aの送信用 FIFOメモリ 152Aにデータを渡 す (書き込み)処理である。
[0319] 以下、上記の TCP処理部 1200および MAC処理部 1500のさらに詳細な構成に ついて図 31を使用して説明する。
[0320] TCP処理部 1200の受信バッファ 1240は、 TCP受信部 1210から受け取ったデー タを管理するバッファ領域である。管理するデータの実態は、図 30の記憶部 102A に配置される。受信バッファ 1240は、管理するデータを API部 1100に渡し、渡し終 えたデータを保持していたバッファ領域を開放する機能をもつ。また、 Window制御 部 1250からの使用可能なバッファサイズの問 、合わせに対し、使用可能なバッファ サイズを Window制御部 1250に伝える機能をもつ。
[0321] Window制御部 1250は、受信バッファ 1240に問 、合わせて得た使用可能なバッ ファサイズから Winを算出して保持する。なお、本実施の形態では、 Winを、実施の 形態 1〜9のウィンドウサイズとして説明する。また、 Window制御部 1250は、 DupA ck管理部 1230および Ack生成部 1280力ゝらの Winの問!、合わせに対し、管理して いる Winをそれぞれに渡す。さらに、 Window制御部 1250は、 API部 1100からァプ リケーシヨン処理の完了の通知を受けると、受信バッファ 1240に問い合わせて得た 使用可能なバッファサイズから Winを算出し、算出した Winを DupAck管理部 1230 に渡す。
[0322] WinUpdate生成部 1260は、 DupAck管理部 1230より Winを受け取った場合に 、 WindowUpdate (受信できる Winが増加したことを送信側装置に通知する Ack、 以後 WinUpdate)を作成して TCP送信部 1220に渡す。
[0323] DupAck生成部 1270は、 DupAck管理部 1230より受け取った DupAck情報より DupAck (Duplicate acknowledgement:即時応答確認)を生成して TCP送信部 122 0に渡す。なお、 DupAck情報は、上記実施の形態 1〜9の ACK番号たるシーケン スナンバー(以下、 Seqという)と、 Winとを含む。また、 DupAckまたは DupAckパケ ットは、上記実施の形態 1〜9の重複 ACKに相当する。
[0324] Ack生成部 1280は、 TCP受信部 1210より Seqを受け取った場合、 Window制御 部 1250に問い合わせて得た Winと、 TCP受信部 1210より受け取った Seqとに基づ いて Ackを作成し、 TCP送信部 1220に渡す。
[0325] なお、本実施の形態では、 DupAck生成部 1270および Ack生成部 1280のそれ ぞれ力 確認応答パケットたる DupAckまたは Ackを生成する第 1のパケット生成手 段として構成されている。
[0326] TCP送信部 1220は、 DupAck管理部 1230または Ack生成部 1280から受け取つ た TCPパケット(DupAckまたは Ack)に必要な TCPヘッダ情報を設定して、その TC Pパケットを IP処理部 1300に渡す。
[0327] TCP受信部 1210は、 TCPパケットの Seqが順序どおりであるかどうかを調査する T CPロス検知部 1215を備える。 TCP処理部 1200は、 IP処理部 1300から受け取った TCPパケットの Seqが順序どおりであった場合 (TCPロス検知部 1215が TCPバケツ トのロスを検知しな力つた場合)、 TCPパケットからデータを抽出する処理を実施し、 受信バッファ 1240に渡す。また、 TCP受信部 1210は、 Seqが順序通りであった場 合に次の Seqを Ack生成部 1280に渡す。なお、 Ack生成部 1280へ次の Seqを渡 す機能は、毎回発生しなくてもよい。この場合、 Ack生成部 1280への通知は、複数 回に 1回の割合で通知されたり、 Delayed Ackアルゴリズムにより、システムのタイマ 力 所定時間経過後に行われたりする。
[0328] TCPロス検知部 1215は、 TCP受信部 1210が受け取った TCPパケットの Seqを調 查し、 Seqが順序通りでなかった場合、期待していた Seqを DupAck管理部 1230に 渡す。
[0329] DupAck管理部 1230は、 TCPロス検知部 1215から受け取った Seqと、 Window 制御部 1250に問い合わせて得た Winとを DupAck情報として保持する。さらに、 Du pAck管理部 1230は、 DupAck情報を DupAck生成部 1270に渡し、その渡した回 数を DupAck送信数としてカウントする。
[0330] また、 DupAck管理部 1230は、 Window制御部 1250より Winを受け取った場合 に、ロス通知部 5000からのパケットロス情報に基づいて、保持する DupAck送信数 力も所定数に足りない DupAck複製数を算出する。その結果力 ^以上の場合は、 Du pAck管理部 1230は、 Window制御部 1250より受け取った Winを WinUpdate生 成部 1260に渡す前に、保持する DupAck情報(Seqおよび Win)を DupAck生成 部 1270に渡す。そして、 DupAck管理部 1230は、パケット複製部 7000の問い合わ せに対し、算出した DupAck複製数を通知する。なお、本実施の形態においては、 DupAck管理部 1230が算出した DupAck複製数について、パケット単位での管理 を例に説明する。
[0331] なお、 DupAck複製数を、送信するパケット単位ではなく例えば、 TCPのコネクショ ン単位や通信装置全体で一つとして管理してもよ 、。
[0332] さらに、 DupAck管理部 1230は、 DupAck複製数をパケット複製部 7000に通知 すると、パケットロス通知部 5000から受け取ったパケットロス情報を消去し、さらに Du pAck複製数および DupAck送信数を初期値にリセットする。 DupAck複製数の初 期値としては、 1を例に説明する。また、 DupAck送信数の初期値としては、 0を例に 説明する。
[0333] MAC処理部 1500は、 MAC受信部 1510、 MAC送信部 1520、およびロス通知 部 5000を備える。それぞれの詳細な説明を以下に示す。
[0334] MAC受信部 1510は、図 30の通信部 105Aの受信用 FIFOメモリ 151Aから読み 出した MACフレーム(P200)を IF処理部 1400に渡す。即ち、 MAC受信部 1510は
、図 30の受信用 FIFOメモリ 151Aのデータを、 CPU101Aを介して記憶部 102Aに 移動させようとする。
[0335] MAC送信部 1520は、パケット複製部 7000を備える。 MAC送信部 1520は、 IF処 理部 1400から受け取った MACフレームをパケット複製部 7000が指示する複製数 だけ、図 30の通信部 105Aの送信用 FIFOメモリ 152Aに書き込む(P100)。即ち、 MAC送信部 1520は、図 30の CPU101Aから送信用 FIFOメモリ 152Aへデータを 移動させようとする。したがって、 MAC送信部 1520は、 DupAckを複製して送信用 FIFOメモリ 152Aに書き込む。
[0336] パケット複製部 7000は、 DupAck管理部 1230に問い合わせ、問い合わせて得た DupAck複製数(N個)に基づいて、 MAC送信部 1520に対して、対象となる MAC フレームの N回の送信指示を行なう。なお、図 30の通信部 105Aが MACフレームを DupAck複製数 (N個)だけ複製して送信する機能をもつ場合には、パケット複製部 7000は、対象となる MACフレームのデータの移動は 1回として、 N回複製して送信 する指示のみを行なってもよ 、。
[0337] なお、本実施の形態では、 MAC送信部 1520とパケット複製部 7000とが、データ 要求パケットたる DupAckを生成する第 2のパケット生成手段として構成されている。
[0338] ロス通知部 5000は、図 30のデータロス検知部 150Aからのパケットロス通知(E15 0)を受け取り、 DupAck管理部 1230にパケットロス情報を渡す。なお、パケットロス 通知(E150)に IPアドレスや、プロトコル、ポート番号が含まれる場合は、ロス通知部 5000は、 DupAck管理部 1230にパケットロス情報として IPアドレス、プロトコル、お よびポート番号も渡す。その結果、 DupAck管理部 1230は、ロス通知部 5000から 取得した IPアドレスやポート番号に基づ 、て、ロスしたパケットの再送を促す相手で ある送信側装置 200Aを特定する。即ち、 DupAck管理部 1230は装置特定手段を 備える。
[0339] 以下、本実施の形態に係る通信装置間の通信シーケンスについて、通信装置 100 Aを受信側装置、通信装置 200Aを送信側装置として動作させたときを例として図 32 を用いて説明する。
[0340] 図 32は、本実施の形態における通信装置間の通信シーケンスを示す図である。な お、受信側装置 100Aの性能は低い(例えば CPU101Aの性能が 133MHz)。また 、説明を簡略化するために、 1パケット内に格納されるデータ長である 1パケット長 (L EN)を 1KByteにし、 Seqや Winの単位や値も、これに合わせている。また、図 32は 、受信側装置 100Aの Winが少なくなつている状況を示す。さらに、図 32では、送信 側装置 200Aと受信側装置 100Aとの TCP接続時のコネクション設立と、受信側装 置 100Aの Winが多い状態から少ない状態(Win=4、図 32の W11参照)にいたる までの通信のシーケンスとを省略する。
[0341] 図 32に示すように、受信側装置 100Aは、 Seq= lのデータ(P21)の受信に対し、 Ack (P 12)を送信側装置 200Aに送信している。この Ackには、次に要求するバケツ トのシーケンスナンバー(Num= 2)と、受信側装置 100Aの受信可能なデータ量 (W in= 3)とがパラメータとして含まれている。 Winの値が 3 (W12)であるのは、 Seq= l のデータに対するアプリケーションプログラムでの受信処理が完了しておらず、受信 可能なデータ量が減少しているためである。図 32の例では、 Seq = 2のデータ(P22 )力 受信側装置 100Aの受信処理中で TCP (通信プロトコルのトランスポート層)の 処理に至るまでに消失している(パケットの消失が発生している)。そのため、受信側 装置 100Aは Seq = 2 (P22)に対する Ackを返さな!/、。
[0342] 次に、受信側装置 100Aは、 Seq = 3、 4 (P23、 P24)のデータの受信に対し、 Ack を送信側装置に送信する。この Ack (P13、 P14)は、どちらもパラメータが Num= 2 および Win = 3となる。これは、受信側装置 100Aが、 Seq= lのデータの後に、 Seq = 3および Seq = 4のデータを受信したため、 Seq = 2のデータが不足して!/、ることを 検知したためである。受信側装置 100Aは、 Seq = 2のパケットを要求する Ackを、 S eq= lのパケットの受信時に既に送信している。したがって、この Ack(P13、 P14)は Seq = 2のデータが到達していないことを伝える DupAckとなる。このとき、これらの D upAck(P13、 P14)の Winは、 Seq= 1のパケットに対する Ack(P12)の Winと同じ である。これは、 Seq= lのデータに対するアプリケーションプログラムの受信処理が 完了して!/、な!/、ためである。
[0343] 受信側装置 100Aの CPU101Aが低速であるため、 Seq= 1のデータに対するァ プリケーシヨンプログラムの受信処理は、受信側装置 100Aが 2つ目の DupAckを送 信した後に完了する。アプリケーションプログラムの受信処理が完了した後に、受信 側装置 100Aは、送信側装置 200Aに Winが回復したことを伝える WinUpdate (Nu m= 2および Win=4) (P16)を送信する。ここで、受信側装置 100Aは、この WinUp dateを送信する直前に、既に送信した DupAck (P 14)をコピーして、そのコピーされ た DupAck (P 15)を送信側装置 200Aに送信する。送信側装置 200Aは、 3つ目の DupAck (P 15)を受信し、 Seq = 2の再送データ(P25)を高速再送する。
[0344] 図 33は、受信側装置 100Aにおける処理シーケンスの例を示す図である。具体的 に、図 33は、受信側装置 100Aが Seq= l (P21)のデータを受信し、 WinUpdate ( PI 6)を送信するまでの処理シーケンスを示す。図 33の処理シーケンスと、図 30およ び図 31の受信側装置 1 OOAの構成図とを用いて、本実施の形態における受信側装 置 100Aでの処理を説明する。なお、図 33中、点線で囲まれた"通信部"は、図 30の 通信部 105Aを示し、点線で囲まれた" MAC"は、図 31の MAC処理部 1500を示し 、点線で囲まれた" IF"は、図 31の IF処理部 1400を示し、点線で囲まれた" IP"は、 図 31の IP処理部 1300を示す。さら〖こ、図 33中、点線で囲まれた" TCP"は、図 31の TCP処理部 1200を示し、点線で囲まれた" API"は、図 31の API部 1100を示し、点 線で囲まれた"アプリケーション"は、図 31のアプリケーションプログラムを示す。
[0345] まず、図 33の処理フローに従って、受信側装置 100Aが Seq= 1 (P21)のパケット を受信してから Ack (P 12)を送信するまでの処理シーケンス(P21、 P211、 P121、 および P12)を説明する。
[0346] 図 33に示すように、通信装置 (送信側装置) 200Aから送信された Seq= lのバケツ ト(P21)は、ネットワーク 3Aを介し通信装置 (受信側装置) 100Aの通信部 105A〖こ よって受信処理される。通信部 105Aの受信用 FIFOメモリ 151Aに格納された Seq = 1のパケット(P21)は、 CPU101Aにより、受信用 FIFOメモリ 151Aから記憶部 10 2Aに読み出される。なお、受信用 FIFOメモリ 151Aから記憶部 102Aへの移動にお いて、別途受信側装置 100Aに DMAコントローラを具備し、 CPU101Aではなぐ D MAコントローラによりそのパケットが移動されてもよい。
[0347] MAC処理部 1500の MAC受信部 1510によって通信部 105Aの受信用 FIFOメ モリ 151Aより読み出された Seq= lの MACフレーム(P21)は、 IF処理部 1400およ ひ ΊΡ処理部 1300により非パケットィ匕されて TCP受信部 1210に渡される(データフロ 一 P211)。
[0348] TCP受信部 1210は、 Seq= 1の TCPパケットの TCPヘッダの解析処理を行い、非 パケット化処理を完了する。このとき、 TCPロス検知部 1215において、 Seq= lのパ ケット(P21)受信処理前にパケットロスが発生していないので、 Seq= lのパケットは 順序通りの受信データであると判断され、受信バッファ 1240および DupAck管理部 1230に受信データとして渡される。この渡された受信データは、 API部 1100を通し てアプリケーションプログラムに渡されることとなる。
[0349] また、 TCPロス検知部 1215において、順序通りのパケットであることが確認された ので、 TCP受信部 1210は、当該データを受信したことを送信側装置 200Aに通知 するため、 Ack生成咅 1280に次の Seqである Seq = 2を渡す。 TCP受信咅 1210力 ら Seqを受け取った Ack生成部 1280は、 Window制御部 1250を介して、受信バッ ファ 1240に現在受信可能な Winを問い合わせる。 Ack生成部 1280は、問い合わせ 結果である Win= 3と TCP受信部 1210から受け取った Seqとを基に、 Seq= lのパ ケット(P21)に対して Num= 2および Win= 3を示す TCPパケットを生成し、 TCP送 信部 1220に渡す。
[0350] TCP送信部 1220は、その TCPパケットに対して TCPヘッダ構築処理を行い、 IP 処理部 1300および IF処理部 1400は、その TCPヘッダ構築処理された TCPバケツ トに対してパケット構築を行なう。パケット構築された Num= 2および Win= 3を示す MACフレームは、 MAC処理部 1500の MAC送信部 1520によって、パケットとして 通信部 105Aの送信用 FIFOメモリ 152Aに書き込まれる(データフロー P121)。
[0351] このように、通信部 105Aの送信用 FIFOメモリに書き込まれたデータ(MACフレー ム)は、 Seq= lのパケット(P21)の Ack(P12)としてネットワーク 3Aを介して送信側 装置 200Aへ送信される。
[0352] 次に、図 33の処理フローに沿って、受信側装置 100Aが Seq = 2 (P22)を受信し てからの処理シーケンス(P22および E100)を説明する。
[0353] 通信装置 (送信側装置) 200Aから送信された Seq = 2のパケット(P22)は、ネットヮ ーク 3Aを介し、通信装置 (受信側装置) 100Aの通信部 105Aによって受信処理さ れる。し力し、 CPU101Aが低速であるために、通信部 105Aの受信用 FIFOメモリ 1 51Aにおいて既に受信されたパケットがあふれてしまい、オーバーランが発生する。 その結果、 Seq = 2のパケット(P22)は受信用 FIFOメモリ 151Aに格納されない。
[0354] Seq = 2のパケットでオーバーランが発生したため、データロス検知部 150Aは CP U101Aに対して、オーバーランが発生したことを通知する(制御フロー E100)。即ち 、ロス通知部 5000は、パケットロス通知を受け取り、 TCP処理部 1200の DupAck管 理部 1230にパケットロス情報渡す。 DupAck管理部 1230は受け取ったパケットロス 情報を保持する。
[0355] 次に、図 33の処理フローに沿って、受信側装置 100Aが Seq = 3および Seq = 4の ノケット(P23、 P24)を受信してから Ack (P13、 P14)を送信するまでの処理シーケ ンス(P231、 P131、 P241、 P141)を説明する。 P23および P24のデータに対する 処理は、 P21のデータに対する処理と同様であるため、ここではそれらの処理の説明 を省略する。また、 P13および P14のデータに対する処理は、 P12のデータに対する 処理と同様であるため、ここではそれらの処理の説明を省略する。
[0356] MAC処理部 1500の MAC受信部 1510によって読み出された Seq = 3のパケット( P23)は、 IF処理部 1400および IP処理部 1300により非パケットィ匕され、 TCP受信 部 1210に渡される(データフロー P231)。 TCP受信部 1210は、受け取った TCPパ ケットの TCPヘッダの解析処理を行い、非パケット化処理を完了する。このとき、 Seq = 2のパケット(P22)が未だ到着していないため、 Seq = 3の TCPパケットは、 TCP口 ス検知部 1215において、順序通りではない受信データであると判断される。 TCP口 ス検知部 1215は順序どおりで届くはずのシーケンスナンバー(Seq = 2)を DupAck 管理部 1230に渡す。
[0357] Seq = 2を受け取った DupAck管理部 1230は、 Window制御部 1250を介して、 受信バッファ 1240に現在受信可能な Winを問い合わせ、 Win= 3を受け取る。 Dup Ack管理部 1230は、 TCPロス検知部 1215から受け取った Seq = 2と、 Window制 御部 1250に問 、合わせて得た Win= 3とを DupAck情報として保持し、 DupAck情 報を DupAck生成部 1280に渡す。さら〖こ、 DupAck管理部 1230は、 DupAck送信 数を「1」にカウントする。 DupAck生成部 1280は、受け取った Dup Ack情報(Win および Seq)より、 Num= 2および Win = 3を示す DupAckを生成し、生成した DupA ckを TCP送信部 1220に渡す。
[0358] DupAck (Num= 2および Win = 3)は、 TCP送信部 1220から IP処理部 1300お よび IF処理部 1400を経て、パケット構築される(データフロー P131)。パケット構築 されたパケット(MACフレーム)は、 MAC処理部 1500のパケット複製部 7000に出 力される。このとき、パケット複製部 7000は、 DupAck管理部 1230に複製数を問い 合わせ、その複製数が「1」であるため、 MAC処理部 1500に対してパケットの複製を 指示しない。その結果、 MAC送信部 1520は、通信部 105Aの送信用 FIFOメモリ 1 52Aにパケットを 1つだけ書き込む。
[0359] データフロー P231と同様に、 MAC処理部 1500の MAC受信部 1510によって読 み出された Seq = 4のパケット(P24)は、 TCP処理部 1200の DupAck管理部 1230 および DupAck生成部 1270にまで至る(データフロー P241)。 DupAck管理部 12 30は、現在保持している DupAck情報の Seq = 2と、 TCPロス検知部 1215から受け 取った Seqとが同一であることを判断し、同一の場合、 DupAck管理部 1230が管理 する DupAckの送信数を 2にカウントする。
[0360] データフロー P131と同様に、 DupAck (P14)は、 TCP送信部 1220から MAC処 理咅 1500のノケッ卜複製咅 7000【こ至り、 MAC送信咅 1520【こよって通信咅 105A の FIFOメモリ 152Aに書き込まれる(データフロー P141)。
[0361] 次に、図 33の処理フローに沿って、 Seq= 1 (P21)のデータのアプリケーションプロ グラムによる処理が完了し、 DupAckの複製を開始するまでの処理シーケンス (P21
2および P213)を説明する。
[0362] 送信側装置 200Aでは、受信側装置 100Aからの Ack (PI 2)を受信してから Win の状態(図 32に示す W12)が変化していない。 W12の状態では、新たに次のバケツ ト(Seq = 5)を送信することができない。その間に、受信側装置 100Aでは、アプリケ ーシヨンプログラムからの受信要求により、受信バッファ 1240および DupAck管理部
1230が API部 1100を介してアプリケーションプログラムに受信データを渡す(デー タフロー P212)。
[0363] API部 1100は、受信データをアプリケーションに渡し終えると Window制御部 125 0へ受信完了したことを通知する(データフロー P213)。
[0364] 次に、図 33の処理フローに沿って、 DupAckがパケット構築され、 MAC処理部 15 00において DupAckが複製される処理シーケンス(P151)を説明する。
[0365] API部 1100から受信完了したという通知を受けた Window制御部 1250は、受信 ノ ッファ 1240にバッファの空き容量を問い合わせ、得たバッファ空き容量の情報から Win = 4を算出する。算出した Winを DupAck管理部 1230に渡す。
[0366] Winを受け取った DupAck管理部 1230は、制御フロー E100において保持してい たパケットロス情報に基づき、 DupAck送信数「2」と所定の数「3」とを用いて DupAc k複製数算出方法により DupAck複製数を算出する。このときの算出結果は、「1」で あり、その値は DupAck管理部 1230で保持される。 DupAck複製数算出方法につ いては、後で説明する。さらに、 DupAck管理部は、保持していた DupAck情報(Se q = 2および Win = 3)を DupAck生成部 1270に渡す。
[0367] DupAck生成部 1270は、受け取った DupAck情報により、 DupAck(Num= 2お よび Win= 3)を作成して TCP送信部 1220に渡す。
[0368] TCP送信部 1220に渡された Num= 2および Win= 3を示す TCPパケット(DupA ck)は、 IP処理部 1300および IF処理部 1400を経て、パケット構築される(データフ ロー P151)。パケット構築された DupAckパケット(MACフレーム)は、 MAC処理部 1500のパケット複製部 7000に出力される。このときパケット複製部 7000は、 DupA ck管理部 1230に問い合わせを行なう。パケット複製部 7000は、 DupAck管理部 12 30から問い合わせて得た DupAck複製数「1」により、 MAC送信部 1520に対して、 通信部 105Aの送信用 FIFOメモリ 152Aに 1つパケットを書き込むように指示する。 そして、 MAC送信部 1520は、 1つの DupAckパケットを送信用 FIFOメモリ 152Aに 書き込む。
[0369] 本実施の形態においては、 MAC送信部 1520は、 DupAck複製数が「1」のため、 通信部 105Aの送信用 FIFOメモリ 152Aに 1回だけ DupAckパケットの書き込みを 行ったが、 DupAck複製数が N (N≥ 2)の場合は、同一のものを N回書き込むことに より、 N個の DupAckパケットの送信が行なわれる。
[0370] 通信部 105Aの送信用 FIFOメモリ 152Aに書きこまれたパケットは、通信部 105A よりネットワーク 3Aを介して送信側装置 200Aへ DupAckパケット(P15)として送信 される。
[0371] 次に、図 33の処理フローに沿って、 TCP処理部 1200で作成された WinUpdate がパケット構築され、送信される処理シーケンス (P161、 P16)を説明する。
[0372] DupAck管理部 1230は、 Window制御部 1250から受け取った Win =4を WinU pdate生成部 1260に渡す。 WinUpdate生成部 1260は、 WinUpdateを作り、 TCP 送信部 1220に渡す。 TCP送信部 1220に渡された WinUpdateは、 IP処理部 1300 および IF処理部 1400を経て、パケット構築される(データフロー P161)。パケット構 築された WinUpdateパケット(MACフレーム)は、 MAC送信部 1520から通信部 10 5Aに渡される。
[0373] そして、通信部 105Aは、その WinUpdate (P16)を、ネットワーク 3Aを介して送信 側装置 200Aへパケット送信する。
[0374] DupAck管理部 1230は、複製した DupAckパケット(P15)の送信後、制御フロー E100でロス通知部 5000から渡されて保持して!/、たパケットロス情報を消去し、 Dup
Ack複製数を「1」に初期化する。
[0375] さらに、 DupAck管理部 1230は、パケットロスしたシーケンスのパケットを受信する ことで、 DupAck管理部 1230が記憶して!/、た DupAck情報(Seqおよび Win)を消 去し、 DupAck送信数を「0」にして、 DupAck複製数を「0」にする。
[0376] なお、パケットロス情報の消去については、 DupAck管理部 1230が DupAckを複 製して ヽな 、場合でもロス通知部 5000からパケットロス情報を受け取って力も所定 時間経過後(例えば 1秒後)にそのパケットロス情報を消去してもよい。
[0377] また、ロス通知部 5000からパケットロス情報を受け取つてから PPS (Packet Per
Sec)が低くなつた場合に、パケットロス情報の消去を実施してもよい。即ち、 DupAck 管理部 1230はリセット手段を備える。
[0378] さらに、ロス通知部 5000からパケットロス情報を受け取って力も送信したパケット数 をパケット複製部 7000が管理しておき、特定のパケット数が送信された場合に、パケ ットロス情報の消去を実施してもよ 、。
[0379] ここで、本実施の形態における TCP処理部 1200の DupAck管理部 1230による D upAck複製数算出方法のアルゴリズムについて図 34を用いて説明する。
[0380] 図 34は、本実施の形態における DupAck複製数算出方法のアルゴリズムを示すフ ローチャートである。
[0381] DupAck管理部 1230は、 Window制御部 1250から Win更新の通知を受けると、 保持している DupAck送信数が 1以上でかつ N未満かどうかを調査する(ステップ S1 00)。さらに、 DupAck管理部 1230は、ロス通知部 5000によるロス通知が行われ、 パケットロス情報が記録されている力否かを調査する (ステップ S 102)。
[0382] 即ち、ステップ S100において、 DupAck管理部 1230は、自分が管理する DupAc k送信数が 0以下または (N+ 1)以上の場合は (ステップ S 100の N)、 DupAck複製 数を「0」とする(ステップ S 104)。一方、保持している DupAck送信数が 1以上でか つ N未満の場合は(ステップ S 100の Y)、 DupAck管理部 1230はステップ S 102の 処理を実行する。なお、 Nは、送信側装置に対して再送を実行させるのに必要な Du pAckの数 (所定数または必要数)である。 [0383] ステップ S102において、ロス通知部 5000からのパケットロス情報が記録されてい た場合は(ステップ S 102の Y)、 DupAck管理部 1230は、 DupAck複製数を式「N — DupAck送信数」で算出する (ステップ S 106)。一方、パケットロス情報が記録され ていない場合は(ステップ S 102の N)、 DupAck管理部 1230は、 DupAck複製数を 「0」とする(ステップ S 104)。
[0384] 例えば、本実施の形態では、上述の DupAck複製数算出方法のアルゴリズムの開 始時において、 DupAck管理部 1230は、 DupAck送信数「2」とロス通知部 5000か らパケットロス情報を受け取り保持 (記録)している。したがって、ステップ S100では、 DupAck送信数が「2」であるため、 DupAck管理部 1230は、ステップ S 102の処理 を実行する。そして、ステップ S 102では、 DupAck管理部 1230は、パケットロス情報 を保持して!/ヽるため、 DupAck複製数を N = 3および DupAck送信数「2」より算出す る。よって、「DupAck複製数 =N— DupAck送信数」より DupAck複製数は「1」に なる。
[0385] なお、上記 Nは送信側装置 200Aが高速再送を発動する数であることが望ましい。
また、本実施の形態では、 Nを一例として 3としている力 DupAckのネットワークでの パケットロスを回避する条件ということで、 3以上としてもよい。大きい値は特に、ネット ワークの品質が悪ぐ経路上で DupAckが消失しやすい場合に有効である。ただし、 この値が大きいということは、ネットワークのトラヒックを増やすことに繋がるため、無用 に大きくすることは好ましくない。望ましくは 3、大きくても 4が好ましい。
[0386] このように本実施の形態では、以上の処理を行なうことで、送信側装置 200Aに高 速再送を発動させ TCPの再送によるスループット低下を押さえる効果と、受信側装 置 100A内でのパケットロスである場合にのみ送信側装置 200Aの高速再送を発動 させる効果と、ネットワークを過負荷状態にしない効果と、複製する DupAckによる無 駄なトラフィックを抑える効果と、 DupAck送信に要する受信側装置 100Aの CPUの 消費を抑える効果と、誤った DupAckを送信しな 、効果とがある。
[0387] (変形例 1)
ここで上記実施の形態 10における第 1の変形例について説明する。
[0388] 上記実施の形態 10では、受信側装置 100Aは通信部 105Aにおけるデータロスを 検知した力 本変形例に係る受信側装置 100Aは IP処理部 1300におけるデータ口 スを検知する。
[0389] なお、本変形例について、上記実施の形態 10に共通していない部分に関してのみ 説明する。
[0390] 図 35は、上記実施の形態 10における第 1の変形例のネットワーク構成例および通 信装置の構成例を示す図である。
[0391] 通信部 105Aは、システムバス 103A上に接続されたハードウェアであって、上記実 施の形態 10の通信部 105Aのようにデータロス検知部 150Aを備えて!/、な!/、。この 通信部 105Aは、 CPU101Aによって渡されたデータをネットワーク 3Aに送信する 機能と、ネットワーク 3Aから受信したデータを受信する機能とを有する。また、通信部 105Aは、ネットワーク 3A力 受信したデータを一時的に保持する受信用 FIFOメモ リ 151Aと、 CPU101Aから渡されたデータを一時的に保持する送信用 FIFOメモリ 1 52Aとを備える。
[0392] 本変形例に係る CPU101Aのプログラムによって実現される機能構成について図 36を用いて説明する。
[0393] 図 36は、受信側装置 100Aにおける CPU101Aの機能構成を示す構成図である。
なお図 36中、実線はデータの流れを示すデータフロー、点線は制御信号の流れを 示す制御フローである。受信側装置 100Aの受信または送信するパケットを処理する パケット処理部の詳細な構成として、受信側装置 100Aの CPU101Aは、 API部 11 00、 TCP処理部 1200、 IP処理部 1300、および MAC処理部 1500を備える。図 36 の各機能部の説明を以下に示す。 API部 1100および TCP処理部 1200に関しては 、上記実施の形態 10の機能と全く同様であるため説明を省略する。
[0394] 本変形例に係る MAC処理部 1500は、上記実施の形態 10における MAC処理部 1500と異なりロス通知部 5000を備えず、 MAC受信部 1510および MAC送信部 15 20のみを備える。この MAC受信部 1510および MAC送信部 1520は、上記実施の 形態 10と同様の機能を有する。
[0395] IP処理部 1300は、上記実施の形態 10の IP処理部 1300と同様に、 IF処理部 140 0から受け取った IPパケットから TCPパケットを抽出し、 TCP処理部 1200に受け渡 す。また、 IP処理部 1300は、 TCP処理部 1200から受け取った TCPパケットに IPへ ッダを追カ卩して IPパケットを構築して IF処理部 1400に渡す。このような IP処理部 13 00は、上記実施の形態 10の IP処理部 1300と異なり、受信用 FIFOキュー 1310とデ ータロス検知部 150Aとロス通知部 5000とを備える。
[0396] 受信用 FIFOキュー 1310は、 IF処理部 1400から渡されるデータを一時的に格納 する領域である。この領域には、記憶部 102Aの領域のうちの一部が割り当てられ、 受信用 FIFOキュー 1310は、その領域に格納されるデータを管理する機能をもつ。 即ち、受信用 FIFOキュー 1310は、 IF処理部 1400から受け取ったデータを受け取 つた順番に IP処理部 1300に処理させる(First- In First- Out)ように管理している。
[0397] データロス検知部 150Aは、受信用 FIFOキュー 1310において受信オーバーラン が発生したことを検知し、ロスが発生したことをロス通知部 5000にパケットロス通知( E150)を通知する。
[0398] ロス通知部 5000は、データロス検知部 150Aからパケットロス通知(E150)を受け 取り、ロスが発生したことを通知するパケットロス情報を、 TCP処理部 1200の DupAc k管理部 1230に渡す。なお、パケットロス通知(E150)に IPアドレス、プロトコルゃポ ート番号を含む場合は、ロス通知部 5000は、 IPアドレス、プロトコルおよびポート番 号を含むパケットロス情報を DupAck管理部 1230に渡す。
[0399] 図 37は、本変形例に係る受信側装置 100Aにおける処理シーケンスの例を示す図 である。即ち、この図 37は、受信側装置 100Aが Seq= l (P21)のパケットを受信し、 WinUpdate (P16)を送信するまでの処理シーケンスを示す。なお、図 37中、点線 で囲まれた"通信部"は、図 35の通信部 105Aを示し、点線で囲まれた" MAC"は、 図 36の MAC処理部 1500を示し、点線で囲まれた" IF"は、図 36の IF処理部 1400 を示し、点線で囲まれた" IP"は、図 36の IP処理部 1300を示す。さら〖こ図 37中、点 線で囲まれた" TCP"は、図 36の TCP処理部 1200を示し、点線で囲まれた" API" は、図 36の API部 1100を示し、点線で囲まれた"アプリケーション"は、図 36のァプ リケーシヨンプログラムを示す。
[0400] この図 37に示す処理シーケンスは、図 33に示す処理シーケンスと比べて、 Seq = 2のパケット(P22)に対する受信側装置 100Aでのパケットロス検知の受信処理シー ケンスのみが異なる。以下、この受信処理シーケンスに関してのみ説明する。
[0401] 図 37の処理フローに沿って、受信側装置 100Aによる Seq = 2 (P22)のパケットに 対する処理シーケンス(P22、 P221、 E150)を説明する。
[0402] 通信装置 (送信側装置) 200Aから送信された Seq = 2のパケット(P22)は、ネットヮ ーク 3Aを介し通信装置 (受信側装置) 100Aの通信部 105Aにより受信処理される。
[0403] MAC処理部 1500の MAC受信部 1510は、通信部 105Aの受信用 FIFOメモリ 1 51Aより読み出されたパケット (P22)を受け取る。読み出された Seq = 2のパケット (P 22)は、 IF処理部 1400を介して、 IP処理部 1300の受信用 FIFOキュー 1310に渡 される(データフロー P221)。
[0404] ここで、 IF処理部 1400から IP処理部 1300の受信用 FIFOキュー 1310に IPバケツ トを渡す処理の速度または量力 IP処理部 1300において IPパケットから TCPバケツ トを抽出してその TCPパケットを TCP処理部 1200に渡す処理の速度または量をこえ てしまい、受信用 FIFOキュー 1310においてオーバーランが発生する。データロス 検知部 150Aは、ロス通知部 5000にロスが発生したことを通知する(E150)。ロス通 知部 5000は、受信用 FIFOキュー 1310におけるオーバーランが発生したというパケ ットロス通知を受け、 TCP処理部 1200の DupAck管理部 1230にパケットロス情報を 渡す。
[0405] なお、本変形例では、 IP処理部 1300に受信用 FIFOキュー 1310があるとして説 明を行ったが、 IF処理部 1400に同様の受信用 FIFOキューを持つときには、 IF処理 部 1400にデータロス検知部およびロス通知部を設けてもよい。また、ロスしたデータ を調査し、特定のプロトコル (例えば、 IPv4、 IPv6)であった場合のみに通知しても良 い。
[0406] また、データロス検知部 150Aにおいて、ロスしたデータを調査し、特定のプロトコ ル(例えば TCP)であった場合にのみ、そのロスを通知してもよ!/、。
[0407] さらに、データロス検知部 150Aにおいて、ロスしたデータのアドレスや、ポート番号 をパケットロス通知に付カ卩してもよい。また、 DupAck管理部 1230において、受け取 つた IPアドレスや、ポート番号に基づいて、ロスの判定をしてもよい。
[0408] このように本変形例では、以上の処理を行なうことで、送信側装置 200Aに高速再 送を発動させ TCPの再送によるスループット低下を押さえる効果と、受信側装置 100 A内での特定の TCPパケットのパケットロスである場合にのみ送信側装置 200Aの高 速再送を発動させる効果と、ネットワークを過負荷状態にしない効果と、複製する Du pAckによる無駄なトラフィックを抑える効果と、誤った DupAckを送信しな 、効果と がある。
[0409] (変形例 2)
ここで上記実施の形態 10における第 2の変形例について説明する。
[0410] 上記実施の形態 10では、 MAC処理部 1500で DupAckを複製した力 本変形例 では、 TCP処理部 1200で DupAckを複製する。
[0411] 以下、本変形例について、上記実施の形態 10に共通していない部分に関しての み説明する。
[0412] 図 38は、上記実施の形態 10における第 2の変形例に係る CPU101Aの機能構成 を示す構成図である。実線はデータの流れを示すデータフロー、点線は制御信号の 流れを示す制御フローである。受信側装置 100Aの受信または送信するパケットを処 理するパケット処理部の詳細な構成として、受信側装置 100Aの CPU101Aは、 API 部 1100、 TCP処理部 1200、 IP処理部 1300、および MAC処理部 1500を備える。 図 38の各機能部の説明を以下に示す。なお、 API部 1100、 IP処理部 1300、およ び IF処理部 1400に関しては、上記実施の形態 10の機能と全く同様であるため説明 を省略する。
[0413] 本変形例に係る TCP処理部 1200は、パケット複製部 7000を備えた TCP送信部 1 220に特徴がある。
[0414] TCP送信部 1220は、 Ack生成部 1280、 WinUpdate生成部 1260、および Dup Ack生成部 1270から受け取った TCPパケット(Ack、 WinUpdate,および DupAck )に、必要な TCPヘッダ情報を設定し、その TCPヘッダ情報が設定された TCPパケ ットを IP処理部 1300に渡す。また、 TCP送信部 1220は、パケット複製部 7000が複 製した Dup Ackを IP処理部 1300に渡す。
[0415] パケット複製部 7000は、 DupAck管理部 1230に問い合わせて得た DupAck複製 数に基づいて、その DupAck複製数だけ DupAckを複製し、複製した DupAckを IP 処理部 1300に渡すように、 TCP送信部 1220に対して指示する。
[0416] なお、本変形例では、このパケット複製部 7000力 DupAckをデータ要求パケット として生成する第 2のパケット生成手段として構成されている。
[0417] MAC処理部 1500は、上記実施の形態 10における MAC処理部 1500と異なり、 パケット複製部 7000を備えていない。 MAC受信部 1510、 MAC送信部 1520、お よびロス通知部 5000は、上記実施の形態 10と同様の機能を有する。
[0418] ここで、図 33に示す処理シーケンスを用いて、本変形例における受信側装置 100 Aでの処理を説明する。なお、本変形例では、図 33中、点線で囲まれた"通信部"は 、図 30の通信部 105Aを示し、点線で囲まれた" MAC"は、図 38の MAC処理部 15 00を示し、点線で囲まれた" IF"は、図 38の IF処理部 1400を示し、点線で囲まれた "IP"は、図 38の IP処理部 1300を示す。さら〖こ、図 33中、点線で囲まれた" TCP"は 、図 38の TCP処理部 1200を示し、点線で囲まれた" ΑΡΓ,は、図 38の API部 1100 を示し、点線で囲まれた"アプリケーション"は、図 38のアプリケーションプログラムを 示す。
[0419] 本変形例では、図 33に示す Seq = 2の DupAckパケット(P15)の複製(データフロ 一 P151)に特徴があり、この点に関してのみ説明する。
[0420] 受信完了通知を受けた Window制御部 1250は、受信バッファ 1240にバッファの 空き容量を問い合わせ、問い合わせ結果力も Win=4を算出する。そして Window 制御部 1250は、算出した Winを DupAck管理部 1230に通知する。 Winを受け取つ た DupAck管理部 1230は、制御フロー E100におけるパケットロス情報を保持して V、るため、 DupAck送信数の「2」と所定の数である「3」力も DupAck複製数を所定 の方法(図 34に示す DupAck複製数算出方法)により算出する。算出した DupAck 複製数は「1」であるため、 DupAck管理部 1230は、保持していた DupAck情報(Se q = 2および Win= 3)を DupAck生成部 1270〖こ渡し、算出した DupAck複製数を 保持する。 DupAck管理部 1230は、 DupAck情報を DupAck生成部に渡した後に 、 Window制御部 1250から受け取った Win = 4を WinUpdate生成部 1260に渡す 。 DupAck生成部 1270は、受け取った DupAck情報より DupAck (Num= 2および Win = 3)を作成して TCP送信部 1220のパケット複製部 7000に渡す。 [0421] ノケット複製部 7000は、 DupAck生成部 1270より受け取った DupAckを、 DupA ck管理部 1230より問 、合わせて得た DupAck複製数だけ複製して TCP送信部 12 20に送信させる。上述の例では、 DupAck複製数は「1」であるため、パケット複製部 7000は、受け取った DupAckを複製せずにその 1つの DupAckを TCP送信部 122 0に送信するように指示する。ただし、 DupAck複製数が N (≥ 2)である場合は、パケ ット複製部 7000は、 DupAckを複製して DupAckの数を合計 N個にし、 TCP送信 部 1220に対して、複製した DupAck (複製元の DupAckを含む)をすベて送信する ように指示する。
[0422] TCP送信部 1220は、パケット複製部 7000に送信するように指示された DupAck を IP処理部 1300に渡す。そして DupAckは、 IF処理部 1400を経て、パケット構築 され、 MAC処理部 1500の MAC送信部 1520により通信部 105Aの FIFOメモリ 15 2Aに書き込まれる。
[0423] このように本変形例では、以上の処理を行なうことにより、パケット数などを TCPで 管理している場合に複製する DupAckの数を管理しやすくなる。さらに、既存の通信 モジュールにパケット複製部を導入する場合に TCP処理部内で改修をすることとなり 、改修箇所を限定することができる。
[0424] (変形例 3)
ここで上記実施の形態 10における第 3の変形例について説明する。
[0425] 上記実施の形態 10では、受信側装置 100Aは、 Windowの状態に基づくタイミン グで DupAckを複製して送信したが、本変形例に係る受信側装置 100Aは、 Windo wの状態に変わらずに 1回目の DupAckの送信のタイミングでその DupAckを複製 して送信する。
[0426] 以下、本変形例について、上記実施の形態 10に共通していない部分に関しての み説明する。
[0427] 本変形例に係る TCP処理部 1200は、 DupAck管理部 1230に特徴がある。
[0428] DupAck管理部 1230は、 TCPロス検知部 1215から受け取った Seqを受け取った 場合に、その受け取った Seqと、 Window制御部 1250に問い合わせて得た Winとを DupAck情報とし、その DupAck情報カゝら DupAck複製数を算出して保持する。さら に、 DupAck管理部 1230は、 DupAck情報を DupAck生成部 1270に渡し、その 渡した回数を DupAck送信数としてカウントする。
[0429] DupAck管理部 1230は、パケット複製部 7000の問い合わせに対して算出した Du pAck複製数を通知する。なお、本変形例においては、 DupAck管理部 1230が算 出した DupAck複製数にっ ヽては、パケット単位での管理を例に説明する。
[0430] さらに、 DupAck管理部 1230は、 DupAck複製数をパケット複製部 7000に通知 すると、パケットロス通知部 5000から受け取ったパケットロス情報を消去し、さらに Du pAck複製数を初期値する機能を持つ。 DupAck複製数の初期値としては、「1」を 例に説明する。また、 DupAck送信数の初期値としては、「0」を例に説明する。
[0431] 図 39は、本変形例に係る通信装置間の通信シーケンスを示す図である。なお、上 記実施の形態 10と同様、この通信シーケンスは、受信側装置 100Aの性能が低い( 例えば CPUの性能が 133MHz)場合のシーケンス例を示す。
[0432] 受信側装置 100Aは、 Seq = 3のデータの受信に対し、 Ackを送信側装置 200Aに 送信する。この Ack (P13)のパラメータは、 Num= 2および Win= 3を示す。これは、 受信側装置 100Aが、 Seq= lのデータの後に、 Seq = 3のデータを受信したため、 S eq = 2のデータが不足して!/、ることを検知したためである。 Seq = 2を要求する Ackは 、 Seq= lの受信時に既に送信されており、この Ack(P13)は Seq = 2のデータが到 達していないことを伝える DupAckとなる。この DupAck (P 13)の Winは、 Seq= lに 対する Ack (P 12)の Winと同じである。これは、 Seq= lのデータに対するアプリケー シヨンプログラムでの受信処理が完了して ヽな 、ためである。
[0433] 本変形例に係る受信側装置 100Aは、 1回目の DupAckを送信したとき、 Seq = 2 のデータが到達して 、な 、と検知して 、るため、前回送信した DupAck (P13)を複 製した DupAck (P14)を送信側装置 200Aへ送信する。
[0434] そして、受信側装置 100Aは、 Seq = 4のデータの受信に対し、 Seq = 3のデータを 受信した場合と同様に、 Seq = 2を要求する DupAck (P 15)を送信側装置 200Aへ 送信する。送信側装置 200Aは、 DupAckを 3つ(P13、 P14、 P15)を受信したため 、 Seq = 2の再送データ(P25)を高速再送する。
[0435] 図 40は、受信側装置 100Aにおける処理シーケンスの例を示す図である。具体的 に、図 40は、受信側装置 100Aが Seq= l (P21)のデータを受信し、 3つめの DupA ck (PI 5)を送信するまでの処理シーケンスの例を示す。
[0436] 以下、図 40の処理フローに沿って、受信側装置 100Aが Seq = 3のパケット(P23) を受信してから Ack(P15)を送信するまでの処理シーケンス(P231、 P131、 P13、 P14、 P241、および P141)を説明する。なお、図 40中、点線で囲まれた"通信部" は、図 30の通信部 105Aを示し、点線で囲まれた" MAC"は、図 31の MAC処理部 1500を示し、点線で囲まれた" IF"は、図 31の IF処理部 1400を示す。さら〖こ、図 40 中、点線で囲まれた" IP"は、図 31の IP処理部 1300を示し、点線で囲まれた" TCP" は、図 31の TCP処理部 1200を示し、点線で囲まれた" API"は、図 31の API部 110 0を示し、点線で囲まれた"アプリケーション"は、図 31のアプリケーションプログラムを 示す。
[0437] MAC処理部 1500の MAC受信部 1510は、通信部 105Aの受信用 FIFOメモリ 1 51Aより読み出されたデータ(MACフレーム)(P23)を受け取る。読み出された Seq = 3のデータ(MACフレーム)は、 IF処理部 1400および IP処理部 1300により非パ ケット化処理され、 TCP受信部 1210に TCPパケットとして渡される(データフロー P2 31)。
[0438] TCP受信部 1210は、 Seq = 3の TCPパケットの TCPヘッダの解析処理を行い、非 パケット化処理を完了する。このとき Seq = 3の TCPパケットは、 TCPロス検知部 121 5において、 Seq = 2のデータが到着していないため、順序通りではないデータであ ると判断される。 TCP受信部 1210は、 Seq = 3のデータを受信バッファ 1240に渡し 、 TCPロス検知部 1215は順序どおりで届くはずのシーケンスナンバー(Seq = 2)を DupAck管理部 1230に渡す。受信バッファ 1240は、順序通りに到着しな力つたデ ータを、その順序通りのデータが到着するまで保持するように管理する。
[0439] DupAck管理部 1230は、受け取った Seq (Seq = 2)と、 Window制御部 1250を 介して、受信バッファ 1240に現在受信可能な Winを問 、合わせた結果の Win (Win = 3)とを DupAck情報として、 DupAck生成部 1270〖こ渡し、 DupAck送信数を「1」 にカウントする。 DupAck生成部 1270は、受け取った DupAck情報より DupAck (N um= 2および Win= 3)を作成して TCP送信部 1220に渡す。 [0440] さらに、 DupAck管理部 1230は、制御フロー EIOOにおいて、ロス通知部 5000力 ら受け取ったパケットロス情報を保持しているため、このときに、 DupAckの複製数を DupAck複製数算出方法により算出する。本変形例に係る DupAck複製数算出方 法では、 Win= 3、 MSS = 1、および所定の数 = 3より、 DupAck複製数は「2」として 算出される(本変形例に係る DupAck複製数算出方法の詳細につ 、ては後述する)
[0441] なお、 DupAck管理部 1230は、 1つめの DupAck作成時に Seqと Winを保持して おき、 DupAck作成力も再送による TimeOutの経過前までの所定の時間が経過し た後に、 Seqと Winを DupAck生成部 1270に渡し、 DupAckの足りない分 (複製数) の複製数を算出してもよい。
[0442] なお、 DupAck管理部 1230は、 1つめの DupAck作成時に Seqと Winを保持して おき、 DupAck作成力も再送による TimeOutの経過前までに CPUの使用率が所定 の閾値以下になったときに、 Seqと Winを DupAck生成部 1270に渡し、 DupAckの 足りな 、分 (複製数)の複製数を算出してもよ 、。
[0443] 次に、 TCP送信部 1220は DupAckを出力し、その DupAckは、 IP処理部 1300 および IF処理部 1400を経て、パケット構築される(データフロー P131)。 MAC送信 部 1520のパケット複製部 7000は、 DupAck管理部 1230から問い合わせて得た D upAck複製数の「2」により、 IF処理部 1400から受け取った MACフレームを MAC 送信部 1520に 2つ分送信するように指示する。 MAC送信部 1520は、受け取った MACフレームを複製して、 2つの MACフレームを通信部 105Aの送信用 FIFOメモ U 152Aに書さ込む。
[0444] 通信部 105Aの送信用 FIFOメモリ 152Aに書き込まれた 2つの DupAck (MACフ レーム P13, P14)はネットワーク 3Aを介して送信側装置 200Aへ送信される。
[0445] DupAck管理部 1230は、ノケット(P14)を送信した直後に、ロス通知部 5000力ら 受け取ったパケットロス情報を消去する。さらに、 DupAck複製数を「1」に初期化す る。
[0446] 次に、 MAC処理部 1500の MAC受信部 1510は、通信部 105Aの受信用 FIFOメ モリ 151Aより読み出されたパケット (MACフレーム (P24) )を受け取る。読み出され た Seq = 4のパケット(MACフレーム)は、 IF処理部 1400および IP処理部 1300によ り非パケット化処理され、 TCP受信部 1210に TCPパケットとして渡される(データフ ロー P241)。
[0447] TCP受信部 1210は、 Seq = 3の TCPパケットの TCPヘッダの解析処理を行い、非 パケット化処理を完了する。このとき Seq = 3のデータは、 TCPロス検知部 1215にお いて、 Seq = 2データが到着していないため、順序通りではないデータであると判断さ れる。 TCP受信部 1210は、 Seq = 3のデータを受信バッファ 1240に渡し、 TCPロス 検知部 1215は順序どおりで届くはずのシーケンスナンバー(Seq = 2)を DupAck管 理部 1230に渡す。受信バッファ 1240は、順序通りに到着しな力つたデータを、その 順序通りのデータが到着するまで保持するように管理する。
[0448] DupAck管理部 1230は、 Window制御部 1250を介して、受信バッファ 1240に現 在受信可能な Winを問い合わせ、問い合わせて得た Winと、 TCPロス検知部 1215 より受け取った Seqとを DupAck情報として保持する。 DupAck管理部 1230は、 Du pAck生成部 1270に DupAck情報を渡す。 DupAck生成部 1270は、受け取った D upAck情報(Seq= 2および Win= 3)から、 Num= 2および Win= 3を示すパケット( P15)を生成し、生成した DupAckを TCP送信部 1220に渡す。このとき、 DupAck 管理部 1230は、ロス通知部 5000からのパケットロス情報を受け取っていないため、 DupAck複製数を算出しな 、。 DupAck複製数は「1」のままである。
[0449] 次に、 TCP送信部 1220は DupAckを出力し、その DupAckは、 IP処理部 1300 および IF処理部 1400を経て、パケット構築される(データフロー P141)。パケット構 築された DupAck (MACフレーム)は、 MAC処理部 1500の MAC送信部 1520に 取得される。このときパケット複製部 7000は、 DupAck管理部 1230に DupAck複製 数を問い合わせて、複製数が「1」であることを把握する。複製数が「1」であることによ り、 MAC送信部 1520は、 MACフレームを通信部 105Aの送信用 FIFOメモリ 152 Aに 1つだけ書き込む。
[0450] MAC送信部 1520により通信部 105Aの送信用 FIFOメモリ 151Aに書き込まれた MACフレームは、ネットワーク 3Aを介して送信側装置 200Aへとパケットとして送信 される。これが、 3つ目の DupAckとなり、送信側装置 200Aは高速再送を発動する。 [0451] 図 41は、本変形例における TCP処理部 1200の DupAck管理部 1230による Dup Ack複製数算出方法のアルゴリズムを示すフローチャートである。
[0452] DupAck管理部 1230は、 TCPロス検知部 1215から Seqを受けると、 Window制 御部 1250から問い合わせて得た Winを、 MSS (Max Section Size)で除算した商(W in/MSS)から「2」を減算した結果力 所定の数 (高速再送に必要とされる DupAck の数「N」であって、例えば N = 3)未満かどうかを調査する(ステップ S200)。なお、 上述の MSSは、送信側装置 200Aが 1回に送信可能な最大のデータ長であって、 本変形例では例えば「1」である。
[0453] さらに、 DupAck管理部 1230は、ロス通知部 5000により受け取ったパケットロス情 報が記録されて 、るか否かを調査する (ステップ S 202)。
[0454] 即ち、ステップ S200において、 DupAck管理部 1230は、 Winを MSSで除算した 商 (WinZMSS)から「2」を減算した結果が、所定の数「N」以上の場合は (ステップ S200の N)、 DupAck複製数を「1」とする(ステップ S204)。一方、 Winを MSSで除 算した商 (WinZMSS)から「2」を減算した結果力 所定の数「N」未満の場合は (ス テツプ S200の Y)、 DupAck管理部 1230はステップ S202の処理を実行する。
[0455] ステップ S202において、ロス通知部 5000からのパケットロス情報が記録されてい た場合は(ステップ S202の Y)、 DupAck管理部 1230は、 DupAck複製数を式「Du pAck複製数 =N— { (WinZMSS)—2}」により算出する。一方、パケットロス情報が 記録されていない場合は(ステップ S202の N)、 DupAck管理部 1230は、 DupAck 複製数を「 1」とする (ステップ S 204)。
[0456] 具体的に、本変形例では、 DupAck管理部 1230は、まず、 Window制御部 1250 力も Win= 3を得る。また、 MSSは例えば「1」であって、ロス通知部 5000からのパケ ットロス情報が記録されて 、る。
[0457] このような場合、 DupAck管理部 1230は、ステップ S200において、((WinZMS S)—2 = 3/1— 2= 1)く(N = 3)であるため、ステップ S202の処理を行う。
[0458] そして、ステップ S202において、 DupAck管理部 1230は、パケットロス情報が記 録されていると判断して、ステップ S206において DupAck複製数 = 3—{ (3Z1)— 2} = 2を算出する。 [0459] なお、 DupAck管理部 1230は、ステップ S206において、 DupAck複製数を所定 の数「N」として算出してもよい。
[0460] このように本変形例では、以上の処理を行なうことで、送信側装置 200Aに高速再 送を最も速く発動させ TCPの再送によるスループット低下を押さえる効果と、受信側 装置 100A内でのパケットロスである場合にのみ送信側装置 200Aの高速再送を発 動させる効果と、ネットワークを過負荷状態にしない効果と、複製する DupAckによる 無駄なトラフィックを抑える効果と、 DupAckの送信に要する受信側装置 100Aの CP Uの消費を抑える効果と、誤った DupAckを送信しな 、と 、う効果とがある。
[0461] 以上のように、本発明について実施の形態 1〜10およびその変形例を用いて説明 したが、ブロック図(図 8、図 30および図 35など)の各機能ブロックは典型的には集積 回路である LSIとして実現される。これらは個別に 1チップ化されても良いし、一部又 は全てを含むように 1チップ化されても良い (例えばメモリ以外の機能ブロックが 1チッ プ化されていても良い。 ) o
[0462] ここでは、 LSIとした力 集積度の違いにより、 IC、システム LSI、スーパー LSI、ゥ ノレ卜ラ LSIと呼称されることちある。
[0463] また、集積回路化の手法は LSIに限るものではなぐ専用回路又は汎用プロセサで 実現してもよい。 LSI製造後に、プログラムすることが可能な FPGA (Field Programma ble Gate Array)や、 LSI内部の回路セルの接続や設定を再構成可能なリコンフィギ ユラブル'プロセッサーを利用しても良い。
[0464] さらには、半導体技術の進歩又は派生する別技術により LSIに置き換わる集積回 路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積ィ匕を行って もよい。バイオ技術の適応等が可能性としてありえる。
[0465] また、各機能ブロックのうち、符号化または復号化の対象となるデータを格納する手 段だけ 1チップィ匕せずに別構成としても良い。
産業上の利用可能性
[0466] 本発明の通信装置は、データの送信トラフィックを自らの受信能力に応じて自発的 に制御し得るとともに、その制御処理負担を軽減することができるという効果を奏し、 例えば TCPおよび TCPと同等のウィンドウ制御機能および確認応答機能を持つ通 信プロトコルに基づいて受信処理を行うあらゆる通信装置に適用可能である。

Claims

請求の範囲
[1] 他の通信装置から送信されたデータを受信する通信装置であって、
前記データを受信する受信手段と、
前記受信手段によって受信されたデータに対する前記他の通信装置への応答内 容を示す確認応答パケットを生成し、前記他の通信装置に送信する第 1のパケット生 成手段と、
前記受信手段によるデータの受信結果に関わらず、前記他の通信装置に対してデ ータの送信を要求するデータ要求パケットを生成し、前記他の通信装置に送信する 第 2のパケット生成手段と
を備えることを特徴とする通信装置。
[2] 前記第 2のパケット生成手段は、受信可能なデータのサイズが受信サイズとして前 記データ要求パケットに含まれるように、当該データ要求パケットを生成する
ことを特徴とする請求項 1記載の通信装置。
[3] 前記通信装置は、さらに、
前記受信サイズに更新量を加算することで、当該受信サイズを更新するサイズ算出 手段を備え、
前記第 2のパケット生成手段は、更新時間の経過ごとに、前記サイズ算出手段に前 記受信サイズを更新させて、更新された受信サイズを含む前記データ要求パケットを 生成し、前記他の通信装置に送信する
ことを特徴とする請求項 2記載の通信装置。
[4] 前記通信装置は、さらに、
前記通信装置の通信能力に基づ!、て、前記更新時間および前記更新量を決定す る更新決定手段を備える
ことを特徴とする請求項 3記載の通信装置。
[5] 前記受信手段は、受信されたデータを一時的に保持するためのメモリを有する物 理層通信デバイスとして構成され、
前記更新決定手段は、前記メモリの容量と、前記メモリに保持されたデータの転送 能力とに基づ 、て、前記更新時間および前記更新量を決定する ことを特徴とする請求項 4記載の通信装置。
[6] 前記更新決定手段は、さらに、前記通信装置で動作するアプリケーションプロダラ ムが必要とするビットレートに基づ 、て、前記更新時間を決定する
ことを特徴とする請求項 4記載の通信装置。
[7] 前記第 2のパケット生成手段は、前記更新時間の経過ごとに、前記データ要求パケ ットを生成しているときに、前記受信手段によってデータが受信されると、前記データ 要求パケットの生成を中止する
ことを特徴とする請求項 3記載の通信装置。
[8] 前記第 2のパケット生成手段は、前記更新時間の経過ごとに行われる前記データ 要求パケットの生成を中止しているときに、前記受信手段によってデータが受信され ると、前記更新時間の経過ごとに行われる前記データ要求パケットの生成を再開する ことを特徴とする請求項 7記載の通信装置。
[9] 前記第 1のパケット生成手段は、受信可能なデータのサイズを応答サイズとして示 す前記確認応答パケットを生成し、
前記更新時間の経過ごとに行われる前記データ要求パケットの生産が中止してい るときに、先に送信されてロスしたデータが再送されて前記受信手段によって受信さ れた際には、
前記第 1のパケット生成手段は、前回生成された前記確認応答パケットの応答サイ ズよりも小さい応答サイズを示す確認応答パケットを生成し、
前記第 2のパケット生成手段は、前記更新時間の経過ごとに行われる前記データ 要求パケットの生産を再開する
ことを特徴とする請求項 7記載の通知装置。
[10] 前記通信装置は、さらに、前記更新時間の経過ごとに行われる前記データ要求パ ケットの生産が中止しているときに、前記第 1のパケット生成手段による前記確認応答 パケットの送信のタイミングを遅らせる遅延手段を備える
ことを特徴とする請求項 7記載の通信装置。
[11] 前記受信手段は、受信されたデータを一時的に保持するためのメモリを有する物 理層通信デバイスとして構成され、 前記通信装置は、さらに、前記メモリの容量と、前記メモリに保持されたデータの転 送能力とに基づいて、前記確認応答パケットの送信間隔を決定する送信間隔決定手 段を備え、
前記遅延手段は、前記送信間隔決定手段によって決定された送信間隔で複数の 前記確認応答パケットが送信されるように、前記タイミングを遅らせる
ことを特徴とする請求項 10記載の通信装置。
[12] 前記通信装置は、さらに、前記通信装置で動作するアプリケーションプログラムが 必要とするビットレートに基づ 、て、前記確認応答パケットの送信間隔を決定する送 信間隔決定手段を備え、
前記遅延手段は、前記送信間隔決定手段によって決定された送信間隔で複数の 前記確認応答パケットが送信されるように、前記タイミングを遅らせる
ことを特徴とする請求項 10記載の通信装置。
[13] 前記第 2のパケット生成手段は、前記受信手段によって受信されたデータの受信量 が閾値を超えたときに、前記更新時間の経過ごとに行われる前記データ要求パケット の生成を開始する
ことを特徴とする請求項 3記載の通信装置。
[14] 前記通信装置は、さらに、
前記他の通信装置力 送信されたデータのロスを検出する検出手段を備え、 前記第 1のパケット生成手段は、受信可能なデータのサイズを応答サイズとして示 す前記確認応答パケットを生成し、前記検出手段によってロスが検出されたときには 、前回生成された確認応答パケットの応答サイズよりも小さ ヽ応答サイズを示す確認 応答パケットを生成する
ことを特徴とする請求項 2記載の通信装置。
[15] 前記第 1のパケット生成手段は、さらに、前記検出手段によって所定時間にロスが 検出されなかったときには、前回生成された確認応答パケットの応答サイズよりも大き Vヽ応答サイズを示す確認応答パケットを生成する
ことを特徴とする請求項 14記載の通信装置。
[16] 前記第 1のパケット生成手段は、前回生成された確認応答パケットの応答サイズと、 ロスしたデータの量との差分を前記小さい応答サイズとして示す前記確認応答バケツ トを生成する
ことを特徴とする請求項 14記載の通信装置。
[17] 前記第 2のパケット生成手段は、
前記他の通信装置によって順次送信されたデータが予め定められた順序通りに前 記受信手段に受信されなカゝつた場合、または、前記データがロスした場合に送信さ れるべき否定応答パケットとして、前記データ要求パケットを生成する
ことを特徴とする請求項 1記載の通信装置。
[18] 前記第 2のパケット生成手段は、データのロスが発生した場合に、ロス発生の直前 に前記受信手段で受信されたデータに対する確認応答パケットと同一の内容を示す 、所定数の前記データ要求パケットを生成して送信する
ことを特徴とする請求項 17記載の通信装置。
[19] 前記受信手段で受信されたデータのうち、消失したロスデータを検知するロス検知 手段を備え、
前記第 1のパケット生成手段は、
前記他の通信装置からのデータの送信に対する確認応答として、前記ロス検知手 段によって検知されたロスデータの再送を指示する前記確認応答パケットを、前記他 の通信装置に送信し、
前記第 2のパケット生成手段は、
前記第 1のパケット生成手段により送信される確認応答パケットの送信数が、前記 他の通信装置に対して前記ロスデータの再送を実行させるだけの必要数に満たない 場合に、前記他の通信装置力 のデータの送信に関わらず、前記必要数から送信 数を差し引いた複製数だけ、前記確認応答パケットを前記データ要求パケットとして 前記他の通信装置に送信する
ことを特徴とする請求項 17記載の通信装置。
[20] 前記受信手段は、メモリを備え、前記他の通信装置から送信されるデータを順次取 得して前記メモリに格納し、
前記ロス検知手段は、前記メモリに格納されずに消失したロスデータを検知する ことを特徴とする請求項 19記載の通信装置。
[21] 前記第 2のパケット生成手段は、前記第 1のパケット生成手段によって確認応答パ ケットが生成されるときに前記複製数を算出する
ことを特徴とする請求項 19記載の通信装置。
[22] 前記第 2のパケット生成手段は、
前記第 1のパケット生成手段によって確認応答パケットが送信されて力 所定期間 が経過する前に、前記確認応答パケットが送信されてカゝら所定期間が経過する前で あって且つ前記通信装置の負荷率が所定の閾値以下になったとき、または、前記通 信装置の受信可能なデータ量が増加したことを前記通信装置が前記他の通信装置 に通知する前に、前記複製数を算出する
ことを特徴とする請求項 19記載の通信装置。
[23] 前記第 2のパケット生成手段は、前記通信装置で受信可能なデータ量に基づ!/、て 前記複製数を算出する
ことを特徴とする請求項 19記載の通信装置。
[24] 前記第 2のパケット生成手段は、
前記第 1のパケット生成手段によって最初の確認応答パケットが送信されるときに、 前記受信可能なデータ量に基づいて、前記第 1のパケット生成手段から送信される 予定の送信数を算出し、前記必要数から前記送信数を差し引くことにより、前記複製 数を算出する
ことを特徴とする請求項 23記載の通信装置。
[25] 他の通信装置力 送信されたデータを受信する通信方法であって、
前記データを受信する受信ステップと、
前記受信ステップで受信されたデータに対する前記他の通信装置への応答内容を 示す確認応答パケットを生成し、前記他の通信装置に送信する第 1のパケット生成ス テツプと、
前記受信ステップでのデータの受信結果に関わらず、前記他の通信装置に対して データの送信を要求するデータ要求パケットを生成し、前記他の通信装置に送信す る第 2のパケット生成ステップと を含むことを特徴とする通信方法。
[26] 他の通信装置力 送信されたデータを受信するためのプログラムであって、
前記データを受信する受信ステップと、
前記受信ステップで受信されたデータに対する前記他の通信装置への応答内容を 示す確認応答パケットを生成し、前記他の通信装置に送信する第 1のパケット生成ス テツプと、
前記受信ステップでのデータの受信結果に関わらず、前記他の通信装置に対して データの送信を要求するデータ要求パケットを生成し、前記他の通信装置に送信す る第 2のパケット生成ステップと
をコンピュータに実行させることを特徴とするプログラム。
[27] 他の通信装置力 送信されたデータを受信する集積回路であって、
前記データを受信する受信手段と、
前記受信手段によって受信されたデータに対する前記他の通信装置への応答内 容を示す確認応答パケットを生成し、前記他の通信装置に送信する第 1のパケット生 成手段と、
前記受信手段によるデータの受信結果に関わらず、前記他の通信装置に対してデ ータの送信を要求するデータ要求パケットを生成し、前記他の通信装置に送信する 第 2のパケット生成手段と
を備えることを特徴とする集積回路。
PCT/JP2006/319661 2005-10-03 2006-10-02 通信装置 WO2007043373A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN2006800368286A CN101278529B (zh) 2005-10-03 2006-10-02 通信装置
US12/066,224 US20090268747A1 (en) 2005-10-03 2006-10-02 Communication apparatus
EP20060811009 EP1933509A1 (en) 2005-10-03 2006-10-02 Communication apparatus
JP2007539872A JP4777996B2 (ja) 2005-10-03 2006-10-02 通信装置、通信方法、プログラムおよび集積回路

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005290576 2005-10-03
JP2005-290576 2005-10-03
JP2006-197892 2006-07-20
JP2006197892 2006-07-20

Publications (2)

Publication Number Publication Date
WO2007043373A1 WO2007043373A1 (ja) 2007-04-19
WO2007043373A9 true WO2007043373A9 (ja) 2007-06-14

Family

ID=37942617

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/319661 WO2007043373A1 (ja) 2005-10-03 2006-10-02 通信装置

Country Status (7)

Country Link
US (1) US20090268747A1 (ja)
EP (1) EP1933509A1 (ja)
JP (1) JP4777996B2 (ja)
KR (1) KR20080053334A (ja)
CN (1) CN101278529B (ja)
TW (1) TW200723782A (ja)
WO (1) WO2007043373A1 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8009696B2 (en) 2004-08-06 2011-08-30 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US9189307B2 (en) 2004-08-06 2015-11-17 LiveQoS Inc. Method of improving the performance of an access network for coupling user devices to an application server
US9647952B2 (en) 2004-08-06 2017-05-09 LiveQoS Inc. Network quality as a service
US7769014B2 (en) * 2007-02-13 2010-08-03 Seiko Epson Corporation Transmitting and receiving system, transmitting apparatus, and receiving apparatus
TWI355164B (en) * 2007-02-27 2011-12-21 Quanta Comp Inc Data transmitting method for wireless communicatio
JP4587053B2 (ja) 2007-08-28 2010-11-24 日本電気株式会社 通信装置、通信システム、パケット欠落検出方法、およびパケット欠落検出プログラム
JP4557028B2 (ja) * 2008-03-19 2010-10-06 ソニー株式会社 情報処理装置、情報処理方法、クライアント機器、情報処理システム
JP5247215B2 (ja) 2008-04-04 2013-07-24 キヤノン株式会社 通信装置及びその制御方法
US9270477B2 (en) * 2008-05-28 2016-02-23 Airmagnet, Inc. Method and apparatus of measuring and reporting data gap from within an analysis tool
JP5460088B2 (ja) * 2009-03-17 2014-04-02 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US8300535B2 (en) * 2009-02-24 2012-10-30 Canon Kabushiki Kaisha Information processing apparatus, method thereof, and storage medium
JP5406558B2 (ja) * 2009-02-24 2014-02-05 キヤノン株式会社 データ処理装置、データ処理方法およびプログラム
US8325601B2 (en) * 2009-05-08 2012-12-04 Canon Kabushiki Kaisha Reliable network streaming of a single data stream over multiple physical interfaces
JP2011081769A (ja) * 2009-09-14 2011-04-21 Ricoh Co Ltd データ転送装置、データ転送デバイスおよびデータ転送方法
JP4821904B2 (ja) * 2009-10-23 2011-11-24 エヌイーシーコンピュータテクノ株式会社 データ通信システム及びデータ通信方法
WO2011074454A1 (ja) * 2009-12-14 2011-06-23 日本電気株式会社 パケット再送制御システム、方法、及びプログラム
US8370725B2 (en) * 2010-02-01 2013-02-05 Mosys, Inc. Communication interface and protocol
US8964543B1 (en) * 2010-02-16 2015-02-24 Google Inc. System and method of reducing latency by transmitting duplicate packets over a network
JP5682618B2 (ja) * 2010-03-03 2015-03-11 日本電気株式会社 パケット再送制御システム、方法、及びプログラム
US9137278B2 (en) * 2010-04-08 2015-09-15 Vasona Networks Inc. Managing streaming bandwidth for multiple clients
JP5601029B2 (ja) * 2010-05-27 2014-10-08 ソニー株式会社 通信装置及び通信方法、並びにコンピューター・プログラム
JP5544430B2 (ja) * 2010-11-16 2014-07-09 株式会社日立製作所 通信装置および通信システム
US8683285B2 (en) * 2010-12-29 2014-03-25 Plx Technology, Inc. Parallel packetized interconnect with simplified data link layer
US10951743B2 (en) 2011-02-04 2021-03-16 Adaptiv Networks Inc. Methods for achieving target loss ratio
JP5329581B2 (ja) 2011-02-04 2013-10-30 株式会社東芝 無線通信端末および無線通信方法
US9590913B2 (en) 2011-02-07 2017-03-07 LiveQoS Inc. System and method for reducing bandwidth usage of a network
US8717900B2 (en) * 2011-02-07 2014-05-06 LivQoS Inc. Mechanisms to improve the transmission control protocol performance in wireless networks
JP5780050B2 (ja) 2011-08-17 2015-09-16 富士通株式会社 伝送システム
KR101709932B1 (ko) * 2011-09-06 2017-02-24 알까뗄 루슨트 네트워크 정체를 회피하기 위한 방법 및 그의 장치
WO2013037322A1 (zh) * 2011-09-16 2013-03-21 华为技术有限公司 分片接收和发送的方法以及分片接收和发送的装置
JP5814829B2 (ja) * 2012-03-01 2015-11-17 株式会社東芝 無線通信装置及び方法
WO2013179554A1 (ja) * 2012-05-30 2013-12-05 日本電気株式会社 通信装置および通信方法
US9444727B2 (en) * 2012-10-16 2016-09-13 Cisco Technology, Inc. Duplicating traffic along local detours before path remerge to increase packet delivery
CN104823419B (zh) * 2012-11-28 2018-04-10 松下知识产权经营株式会社 接收终端及接收方法
US20150012792A1 (en) * 2013-07-03 2015-01-08 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for providing a transmission control protocol minimum retransmission timer
US9584425B2 (en) * 2013-08-20 2017-02-28 Brocade Communications Systems, Inc. Bandwidth optimization using coalesced DUP ACKs
US9760577B2 (en) * 2013-09-06 2017-09-12 Red Hat, Inc. Write-behind caching in distributed file systems
EP3051870B1 (en) * 2013-09-29 2019-07-03 Huawei Technologies Co., Ltd. Data transmission method and device
US9706923B2 (en) * 2014-02-25 2017-07-18 General Electric Company System and method for adaptive interference mitigation in wireless sensor network
KR102187810B1 (ko) * 2014-09-26 2020-12-08 삼성전자주식회사 통신 시스템에서 데이터 흐름 제어 장치 및 방법
JP5881071B1 (ja) * 2014-11-20 2016-03-09 パナソニックIpマネジメント株式会社 無線通信装置、無線通信システム及び無線通信方法
JP6455135B2 (ja) * 2014-12-24 2019-01-23 富士通株式会社 パケット抽出装置、パケット抽出プログラムおよびパケット抽出方法
US10700978B2 (en) 2016-12-05 2020-06-30 International Business Machines Corporation Offloading at a virtual switch in a load-balanced group
US10768997B2 (en) 2016-12-05 2020-09-08 International Business Machines Corporation Tail latency-based job offloading in load-balanced groups
US20180159922A1 (en) * 2016-12-05 2018-06-07 International Business Machines Corporation Job assignment using artificially delayed responses in load-balanced groups
CN109698762B (zh) * 2017-10-24 2020-10-23 华为技术有限公司 一种调整参数的方法及参数调整装置
CN114221905A (zh) * 2020-09-03 2022-03-22 阿里巴巴集团控股有限公司 处理单元及流控制单元、以及相关方法
US11323309B1 (en) 2021-01-14 2022-05-03 Juniper Networks, Inc. Asynchronous socket replication between nodes of a network
US11570116B1 (en) 2021-03-10 2023-01-31 Juniper Networks, Inc. Estimating standby socket window size during asynchronous socket replication

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2964937B2 (ja) * 1996-01-08 1999-10-18 日本電気株式会社 適応クレジット制御型転送方法
JP3343054B2 (ja) * 1997-07-01 2002-11-11 ケイディーディーアイ株式会社 インターネット対応リンクモニタ方法
US20010024445A1 (en) * 2000-02-23 2001-09-27 Takuro Noda Communication system, communication device and communication method
EP1137217A1 (en) * 2000-03-20 2001-09-26 Telefonaktiebolaget Lm Ericsson ARQ parameter negociation in a data packet transmission system using link adaptation
US7142508B2 (en) * 2000-12-22 2006-11-28 Radiance Technologies, Inc. System and method for controlling data transfer rates on a network
DE60135304D1 (de) * 2001-04-04 2008-09-25 Ericsson Telefon Ab L M Verfahren zur Datenflusssteuerung
DE60211322T2 (de) * 2002-06-18 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Empfängerinitiierte Inkrementierung der Übertragungsrate
US7500010B2 (en) * 2005-04-07 2009-03-03 Jeffrey Paul Harrang Adaptive file delivery system and method

Also Published As

Publication number Publication date
JPWO2007043373A1 (ja) 2009-04-16
CN101278529A (zh) 2008-10-01
WO2007043373A1 (ja) 2007-04-19
US20090268747A1 (en) 2009-10-29
KR20080053334A (ko) 2008-06-12
TW200723782A (en) 2007-06-16
CN101278529B (zh) 2011-10-19
EP1933509A1 (en) 2008-06-18
JP4777996B2 (ja) 2011-09-21

Similar Documents

Publication Publication Date Title
JP4777996B2 (ja) 通信装置、通信方法、プログラムおよび集積回路
US7835273B2 (en) Method for transmitting data in mobile ad hoc network and network apparatus using the same
EP2887595B1 (en) Method and node for retransmitting data packets in a tcp connection
US7283469B2 (en) Method and system for throughput and efficiency enhancement of a packet based protocol in a wireless network
US7613118B2 (en) Detecting change in a transport protocol window size without data transmission
JP4256395B2 (ja) 無線ネットワーク環境で伝送遅延による不要な再伝送を減少させるための方法及びそれを用いた通信装置
US8014287B2 (en) Communications apparatus
US8306062B1 (en) Method and apparatus of adaptive large receive offload
US20080037420A1 (en) Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgentcp (square waveform) TCP friendly san
US20080291911A1 (en) Method and apparatus for setting a TCP retransmission timer
WO2009026854A1 (fr) Procédé de commande d&#39;envoi de données et dispositif de transmission de données
EP1581013A2 (en) Transmitted packet replenishment system and transmitted packet replenishing method
WO2008044653A1 (fr) Système, périphérique et procédé de communication
WO2008032750A1 (fr) dispositif de communication
US20070223492A1 (en) Methods and apparatus for optimizing a TCP session for a wireless network
WO2017107148A1 (zh) 一种数据传输方法及网络侧设备
WO2003015337A1 (en) Uplink session extension
KR101231793B1 (ko) Tcp 세션 최적화 방법 및 네트워크 노드
JP2006279867A (ja) Adsl通信装置、プログラム及び方法
JP2004140596A (ja) Tcp上のデータ転送における品質を推定する方法およびシステム
TWI308012B (en) Method for adaptive estimation of retransmission timeout in wireless communication systems
WO2006058257A2 (en) Method and apparatus for setting a tcp retransmission timer
KR20050099759A (ko) 이동통신망에서 무선 tcp 성능 최적화를 위한 방법 및시스템
KR100915996B1 (ko) 대역폭변화에 따른 적응형 전송 제어 프로토콜을 이용한데이터 패킷 전송 방법 및 그를 위한 송신측 단말장치
Zhu et al. Performance of Tahoe, Reno, and SACK TCP at Different Scenarios

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680036828.6

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 12066224

Country of ref document: US

Ref document number: 2006811009

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2007539872

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 1020087007987

Country of ref document: KR

NENP Non-entry into the national phase

Ref country code: DE