WO2015107806A1 - 通信装置 - Google Patents

通信装置 Download PDF

Info

Publication number
WO2015107806A1
WO2015107806A1 PCT/JP2014/082690 JP2014082690W WO2015107806A1 WO 2015107806 A1 WO2015107806 A1 WO 2015107806A1 JP 2014082690 W JP2014082690 W JP 2014082690W WO 2015107806 A1 WO2015107806 A1 WO 2015107806A1
Authority
WO
WIPO (PCT)
Prior art keywords
transmission
data
unit
control unit
transmission band
Prior art date
Application number
PCT/JP2014/082690
Other languages
English (en)
French (fr)
Inventor
直輝 谷田
隆史 磯部
武己 矢崎
大橋 哲也
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US15/106,183 priority Critical patent/US9882820B2/en
Publication of WO2015107806A1 publication Critical patent/WO2015107806A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • 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/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]

Definitions

  • the present invention relates to communication band control.
  • Cloud computing has become widespread due to high-speed Internet lines.
  • cloud computing a large amount of data is exchanged between a data center and a user via the Internet.
  • data is exchanged over a long-distance network.
  • Long distance networks are called Wide Area Networks (WAN).
  • TCP Transmission Control Protocol
  • the TCP communication is characterized in that an acknowledgment (ACK) for data received by the receiving computer is returned to the transmitting computer.
  • ACK acknowledgment
  • the reception computer notifies the transmission computer of a numerical value called reception window size (RWIN) together with ACK.
  • RWIN reception window size
  • the transmission computer transmits data in a range where the size of data that has been transmitted and has not received ACK, which is called inflight data size (inflight), does not exceed RWIN. Therefore, inflight is limited to RWIN at the maximum during Round Trip Time (RTT) time, which is the time from when data is transmitted until a response is returned. For this reason, the transmission band is limited to RWIN / RTT at the maximum.
  • RTT Round Trip Time
  • Patent Document 1 Determining whether the path to the receiving communication device is a broadband and high-delay environment, and when it is determined that the path is a broadband and high-delay environment, the transmission window size exceeds the reception window size.
  • the first state that is not the first window size is switched to the second state that is the second window size in which the transmission window size exceeds the reception window size, and the reception window in the second state It is disclosed that “the packet having a transmission amount exceeding the size is transmitted”.
  • One aspect of the present invention is a transmission device connected to a network, the transmission unit transmitting data to the reception device via the network, and the reception confirmation and reception window size from the reception device via the network.
  • a reception unit that receives confirmation response data including information, a transmission band control unit that controls a band related to data transmitted from the transmission unit, and a confirmation response is not received from the reception device among the transmitted data
  • a transmission band suppressing unit that suppresses a band controlled by the transmission band control unit so that a data size of data is equal to or less than an upper limit value determined from the reception window size, and the data size and the reception window size.
  • a switching control unit that switches between valid / invalid of the transmission band suppressing unit based on.
  • throughput in data transmission can be increased.
  • FIG. 1 is a configuration diagram of a network system including a communication device in Embodiment 1.
  • FIG. 1 is a hardware configuration diagram of a communication device in Embodiment 1.
  • FIG. This is a TCP packet format.
  • 1 is a functional block diagram of a communication device in Embodiment 1.
  • FIG. 3 is a flowchart illustrating an operation concept of a unique TCP in the first embodiment. 6 is an example of a unique TCP status table in the first embodiment.
  • FIG. 3 is a functional block diagram of a transmission band control unit for unique TCP in the first embodiment. 6 is a flowchart illustrating an operation of a transmission band control unit of a unique TCP in the first embodiment. It is a functional block diagram of the discard rate calculation part in Example 1.
  • FIG. 6 is a flowchart illustrating an operation of a discard rate calculation unit according to the first embodiment.
  • 3 is a functional block diagram of a transmission band suppressing unit in Embodiment 1.
  • FIG. It is a state transition diagram of the state machine used for the transmission band suppression part in Example 1.
  • 6 is a flowchart illustrating an operation of a state machine used in a transmission band suppression unit according to the first embodiment.
  • 6 is a flowchart illustrating an operation of a transmission band suppression function switching unit according to the first embodiment.
  • 6 is a comparison diagram of communication sequences when the transmission band suppression function is valid and when the transmission band suppression function is invalid in Example 1.
  • FIG. 6 is a configuration diagram of a network system including a transmission computer in Embodiment 2.
  • FIG. 1 is a configuration diagram of a network system including a transmission computer in Embodiment 2.
  • FIG. 6 is a hardware configuration diagram of a transmission computer in Embodiment 2.
  • FIG. 6 is a functional block diagram of a transmission computer in Embodiment 2.
  • FIG. 10 is a configuration diagram of a network system including a virtual communication device according to a third embodiment.
  • FIG. 10 is a hardware configuration diagram of a server including a virtual communication device according to a third embodiment.
  • FIG. 10 is a functional block diagram of a server including a virtual communication device according to a third embodiment.
  • Example 1 describes a basic example.
  • FIG. 1 shows a configuration diagram of a network system including a communication apparatus 100 according to the present embodiment.
  • the communication device 100 is installed on a communication line that connects the LAN 110 and the WAN 120.
  • the LAN 130 and the LAN 140 are connected to the communication apparatus 100 via the WAN 120.
  • the plurality of computers 111 and 112 are connected to the communication apparatus 100 via the LAN 110.
  • a plurality of computers 131, 132, 133 are connected to the LAN 130.
  • the computer 141 is connected to the LAN 140.
  • the WAN 120 includes a network connecting long bases as compared to the LAN and a network having a large communication delay between the bases.
  • TCP Transmission Control Protocol
  • the communication control described in the present embodiment is suitable for TCP communication, but can be applied to other communication methods, and the data transmission device and reception device may not be a computer.
  • the communication device 100 performs bandwidth control of data transmission by the unique TCP function provided in the communication device 100.
  • the transmission bandwidth control by the unique TCP speeds up data transmission by performing transmission bandwidth control not limited to RWIN when the reception computer can receive data more than the RWIN notified by the reception computer to the transmission computer.
  • the computer includes a server, a proxy device, an information processing device, a terminal, a portable information processing terminal, a smartphone, a tablet, and the like.
  • Communication between computers includes data transfer between client servers, file transfer between information processing apparatuses, screen transfer for remote access, and the like.
  • the network may be a network whose bandwidth is guaranteed or a network whose bandwidth is not guaranteed.
  • FIG. 2 shows a hardware configuration example of the communication apparatus 100 of the present embodiment.
  • the communication device 100 includes a main memory 230, a secondary storage 240, a processing device 220, a network interface (NIF) 250, an NIF 260, and a system bus 210 that interconnects them and transfers data.
  • NIF network interface
  • the main memory 230 temporarily stores programs and data and reads / writes data.
  • the secondary storage 240 stores programs and data for a long time and loads them into the main memory 230 as necessary.
  • the processing device 220 executes a program on the main memory 230, processes data on the main memory 230, and writes a result to the main memory 230.
  • the main memory 230 stores programs such as the standard TCP function 231, the original TCP function 232, the proxy function 233, and the like.
  • the standard TCP function 231 transmits the data received from the proxy function 233 from the NIF 250 to the LAN 110 and passes the data received from the LAN 110 via the NIF 250 to the proxy function 233.
  • the unique TCP function 232 transmits the data received from the proxy function 233 from the NIF 260 to the WAN 120, and passes the data received from the WAN 120 via the NIF 260 to the proxy function 233.
  • the proxy function 233 passes the data received from the standard TCP function 231 to the unique TCP function 232, and passes the data received from the unique TCP function 232 to the standard TCP function 231.
  • the computer 111 transmits data to the computer 131.
  • the computer 111 controls the transmission band by standard TCP.
  • the communication apparatus 100 controls the transmission band by the unique TCP. Even when the RWIN notified by the computer 131 is small, if the computer 131 can receive more data, a wide communication band can be obtained by the transmission band control by the unique TCP of the communication apparatus 100.
  • FIG. 2 shows an example in which the processing device 220, the main memory 230, the secondary storage 240, the NIF 250, and the NIF 260 are connected through one system bus 210. They may be connected via a plurality of system buses, or may be connected directly without going through the system bus. A number of processing devices, main memory, secondary memory, and NIF that are different from the number illustrated may be implemented.
  • FIG. 2 shows an example in which the standard TCP function 231, the original TCP function 232, and the proxy function 233 are all configured by software. Some or all of these functions may be implemented in one or more elements of the processing device 220, the NIF 250, and the NIF 260.
  • the NIFs 250 and 260 may be logical NIFs implemented in one physical NIF.
  • FIG. 3 shows a format diagram of a packet transmitted / received by the communication apparatus 100.
  • the packet includes a MAC header 910, an IP header 920, a TCP header 930, a TCP option header 940, and a payload 960.
  • the MAC header 910 includes a DMAC 911 representing a destination MAC address, an SMAC 912 representing a source MAC address, and a Type 913 representing a MAC frame type.
  • the IP header 920 includes an IP length 921 representing a packet length excluding the MAC header 910, a protocol 922 representing a protocol number, a SIP 923 representing a source IP address, and a DIP 924 representing a destination IP address.
  • TCP header 930 is a src. port 931 and dst. a port 932, a SEQ 933 representing the transmission sequence number, an ACK 934 representing the reception sequence number, a flag 935 representing the TCP flag number, a tcp hlen 936 representing the TCP header length, and a win_size 937 for notifying the transmission computer of the RWIN.
  • the TCP option header 940 includes an option kind 941 indicating an option type, an option length 942 indicating an option length, and left_edge_1 to 4 (943, 945, 947, 949) used for notifying the transmission computer of the location of the data portion that has been received. ), Right_edge_1 to 4 (944, 946, 948, 950).
  • the MSS Maximum Segment Size
  • a SACK Selective ACKnowledgement option is used to notify the opposite device that the own device is compatible with the SACK option when starting TCP communication.
  • the SACK option is further used to notify the opposite device of a location that can be partially received when a discard is detected during communication.
  • the time stamp option is used to notify the opposite device of the reception time of its own device during communication.
  • the window scale option is used to increase the maximum value of RWIN that can be notified to the opposite device by notifying the opposite device of the number of bits to which the value notified by win_size 937 is shifted to the left.
  • the TCP option is used to transmit functions and information that can be supported by the own apparatus to the opposite apparatus at the start of communication and during communication.
  • FIG. 4 shows details of a functional block configuration example of the communication apparatus 100 of the present embodiment.
  • the communication apparatus 100 includes a standard TCP function 231, a unique TCP function 232, a proxy function 233, an NIF 250, and an NIF 260.
  • the proxy function 233 transfers data between the buffers 301 and 302 of the standard TCP function 231 and the buffers 311 and 312 of the unique TCP function 232.
  • the proxy function 233 uses the standard TCP function 231 and the unique TCP function 232 in TCP communication passing through the communication apparatus 100.
  • the proxy function 233 uses the standard TCP function 231 in communication between the LAN 110 and the NIF 250.
  • a unique TCP function 232 is used in communication between the WAN 120 and the NIF 260.
  • the bandwidth control mode is converted so that the TCP communication whose bandwidth is controlled by the standard TCP on the LAN 110 is controlled by the WAN 120 by the unique TCP.
  • Standard TCP function 231 includes reception buffer 301, transmission buffer 302, reception unit 303, transmission unit 304, and standard TCP transmission bandwidth control unit 305.
  • the reception buffer 301 confirms the consistency of the order of data received by the reception unit 303 and passes it to the proxy function 233.
  • the transmission buffer 302 temporarily buffers the data transmitted from the proxy function 233 and holds it for retransmission when a packet discard occurs, and passes the necessary data to the transmission unit 304.
  • the receiving unit 303 receives data that has arrived at the NIF 250 from the LAN 110.
  • the transmission unit 304 transmits data to the LAN 110 from the NIF 250 according to the standard TCP transmission bandwidth control unit 305.
  • the standard TCP transmission band control unit 305 controls a band in which the transmission unit 304 transmits data according to an algorithm described in IETF RFC793.
  • the unique TCP function 232 includes a reception buffer 311, a transmission buffer 312, a reception unit 313, a transmission unit 314, and a unique TCP control unit 315.
  • the reception buffer 311 confirms the consistency of the order of data received by the reception unit 313 and passes it to the proxy function 233.
  • the transmission buffer 312 temporarily buffers the data transmitted from the proxy function 233 and holds it for retransmission when a packet discard occurs, and passes necessary data to the transmission unit 314.
  • the receiving unit 313 receives data that has reached the NIF 260 from the WAN 120.
  • the transmission unit 314 transmits data from the NIF 260 to the WAN 120 according to the unique TCP control unit 315.
  • the unique TCP control unit 315 controls a band in which the transmission unit 314 transmits data.
  • the unique TCP control unit 315 includes a unique TCP transmission bandwidth control unit 321, a discard rate calculation unit 322, a transmission bandwidth suppression control unit 323, and a state table 324.
  • the state table 324 stores values necessary for executing the unique TCP function.
  • the unique TCP transmission bandwidth control unit 321 calculates the rate at which the transmission unit 314 transmits data based on the data received from the reception unit 313 and the discard rate received from the discard rate calculation unit 322.
  • the discard rate calculation unit 322 calculates the discard rate of the packet transmitted from the transmission unit 314 based on the data received from the reception unit 313.
  • the transmission band suppression control unit 323 controls the band of data transmitted from the transmission unit 314 based on the data received from the reception unit 313 and the discard rate received from the discard rate calculation unit 322.
  • the function controls the band so that inflight does not become larger than ⁇ times the RWIN received from the reception unit 313.
  • Inflight is the size of data that has not received an ACK packet from the receiving unit 313 among the data transmitted from the transmitting unit 314. The value of ⁇ will be described later.
  • FIG. 5 is a flowchart showing an outline of the operation of the unique TCP control unit 315 included in the communication apparatus 100 of this embodiment.
  • the communication apparatus 100 prevents the buffer overflow of the reception computer by enabling the transmission band suppression function. Further, by invalidating the transmission band suppression function, the transmission band is prevented from being limited to the RWIN notified by the reception computer.
  • the communication device 100 speeds up data transmission by switching between enabling / disabling the transmission band suppression function during communication. If the transmission band is not limited to RWIN even if the transmission band suppression function is not disabled, the transmission band suppression function is enabled in order to prevent a decrease in the communication band by preventing the receiver computer from overflowing the buffer.
  • the transmission band suppression function is disabled to further expand the transmission band.
  • the unique TCP control unit 315 starts with the transmission band suppression function enabled (S101). This is because the operating system of the receiving computer may dynamically change the RWIN, so that even if the transmission band suppression function is not disabled, there is a possibility that the transmission band may be expanded by expanding the RWIN. By maintaining the transmission bandwidth suppression function, it is possible to more reliably prevent the receiving computer from overflowing the buffer.
  • the unique TCP control unit 315 continues to determine whether or not the transmission bandwidth is restricted by RWIN. If it is determined that the RWIN limits the transmission band (S102), the unique TCP control unit 315 disables the transmission band suppression function so that the transmission band is not limited to the RWIN (S103).
  • the unique TCP control unit 315 continues to determine whether the invalidation of the transmission band suppression function is appropriate (S104).
  • the conditions for determining that it is inappropriate to disable the transmission band suppression function in step S104 are as follows.
  • the unique TCP control unit 315 detects network congestion while disabling the transmission band suppression function, it determines that disabling the transmission band suppression function is inappropriate. Thereby, the fairness of the communication band with other standard TCP communication whose transmission band is restricted by RWIN is maintained.
  • the unique TCP control unit 315 detects a buffer overflow of the reception computer, it determines that it is inappropriate to disable the transmission bandwidth suppression function. By enabling the transmission bandwidth suppression function, it is possible to prevent the receiving computer from overflowing the buffer.
  • the original TCP control unit 315 is appropriate to enable the transmission band suppression function when the transmission band suppression function is enabled or disabled, and the transmission band suppression function does not change significantly in a long time. It is determined to be inappropriate. By enabling the transmission bandwidth suppression function, it is possible to prevent the receiving computer from overflowing the buffer.
  • the unique TCP control unit 315 validates the transmission band suppression function (S101). Three conditions are given as conditions for determining that disabling the transmission bandwidth suppression function is inappropriate. However, the unique TCP control unit 315 may use all of the conditions, or only some of the conditions. May be used. Other conditions may also be used.
  • FIG. 6 shows an example of the status table 324.
  • the state table 324 has n entries 400 for recording the state of each TCP connection, for example. Examples of information included in each entry 400 are as follows.
  • Loss_ratio 401 is the latest discard rate calculated by the discard rate calculation unit 322.
  • old_loss_ratio 402 is an old discard rate in which the value of the discard rate loss_ratio 401 is stored when the discard rate loss_ratio 401 is updated.
  • the ave_loss_ratio 403 is an average discard rate indicating a moving average value for M times of the discard rate loss_ratio 401. The value of M will be described later.
  • Token 404 indicates a token in the current token bucket.
  • old_token 405 is an old token indicating the value of token token 404 before the token in the token bucket is updated.
  • the tmp_token 406 is a temporary token that is temporarily stored when the value of the token token 404 is transferred to the old token old token 405.
  • Left_send_seg 407 is a left end pointer indicating a pointer to transmitted and ACK received data in the transmission buffer 312.
  • the right_send_seg 408 is a right end pointer indicating a pointer to data that has been transmitted and has not received ACK in the transmission buffer 312.
  • old_ack_seg 409 is an old ACK number that stores the ACK number of the ACK packet immediately before the token token 404 is updated.
  • the mss410 is a maximum segment size indicating the maximum payload size in the TCP session during communication.
  • RWND 411 indicates the RWIN included in the latest ACK packet received from the reception unit 313.
  • the reference time A412 stores a time that serves as a reference for the next token update time.
  • the reference time is, for example, the token bucket update time.
  • the reference time B413 stores the latest time when the inflight is ⁇ times or more of RWIN. The value of ⁇ will be described later.
  • the rts 414 is a counter that stores the number of packets requested to be retransmitted.
  • FIG. 7 shows a functional block configuration example of the unique TCP transmission bandwidth control unit 321.
  • the unique TCP transmission bandwidth controller 321 in this embodiment uses a token bucket algorithm.
  • the token bucket algorithm accumulates tokens in a token bucket. When the token in the token bucket is longer than the transmission packet length, the token bucket algorithm transmits the packet.
  • the token bucket algorithm reduces the token for the packet length from the token bucket when sending a packet.
  • the unique TCP transmission bandwidth control unit 321 includes a timer 501, a token bucket 503, and a token update unit 502 that calculates tokens, and implements the token bucket algorithm of this embodiment.
  • the unique TCP transmission bandwidth control unit 321 can appropriately perform bandwidth control even when the transmission bandwidth suppression function is in an invalid state.
  • FIG. 8 is a flowchart showing an operation example of the unique TCP transmission bandwidth control unit 321.
  • the token bucket algorithm of the present embodiment increases or decreases the number of tokens in the token bucket according to the discard rate every time the interval elapses. This reduces the discard rate.
  • the unique TCP transmission bandwidth control unit 321 may control the transmission bandwidth with an algorithm different from the bandwidth control described below.
  • the unique TCP transmission bandwidth control unit 321 monitors the current time with the timer 501 after the start of processing (S200) (S201). Specifically, the unique TCP transmission bandwidth control unit 321 determines whether or not the difference between the current time and the reference time A 412 is equal to or greater than a predetermined interval. A measured RTT may be used as the interval.
  • the unique TCP transmission bandwidth control unit 321 stores the discard rate acquired from the discard rate calculation unit 322 in the discard rate loss_ratio 401 (S202). . Further, the unique TCP transmission bandwidth control unit 321 saves the value of the token token 404 in the temporary token tmp_token 406 (S203).
  • the unique TCP transmission bandwidth control unit 321 checks whether the value of the left end pointer left_send_seg 407 has changed (S204). If the value has not changed (S204: Yes), the unique TCP transmission bandwidth control unit 321 checks whether there is untransmitted data in the transmission buffer 312 (S205).
  • the unique TCP transmission bandwidth control unit 321 If there is no untransmitted data (S205: No), the unique TCP transmission bandwidth control unit 321 returns to Step S201. When there is untransmitted data (S205: Yes), the unique TCP transmission bandwidth control unit 321 sets the value of the token token 404 to the ACK reception amount (current ACK number-old_ack_seg 409) after the reference time A412 (S207).
  • step S204 when the value of left_send_seg 407 has advanced (S204: No), the unique TCP transmission bandwidth control unit 321 determines whether the K times the old discard rate old_loss_ratio 402 is equal to or greater than the discard rate loss_ratio 401 (S206).
  • K is a predetermined constant or variable. K is a value of 1 or more or less than 1, and is 1 in one example.
  • the unique TCP transmission bandwidth control unit 321 decreases the token token 404 based on the counter rts 414 so as to be smaller than the old token old token 405. .
  • token 404 is changed to (old token 405-rts 414) (S208).
  • the unique TCP transmission bandwidth control unit 321 increases the token 404 by a predetermined amount (S209).
  • the increment is a constant or variable.
  • the unique TCP transmission bandwidth control unit 321 substitutes the discard rate loss_ratio 401 into the old discard rate old_loss_ratio 402, the temporary token tmp_token 406 to the old token old token 405, and the current ACK number to the old ACK number old_ack_seg 409. (S210). Further, the unique TCP transmission bandwidth control unit 321 updates the reference time A412 (S211). The unique TCP transmission bandwidth control unit 321 updates the reference time A412 to the current time, for example. The time after update may be another time. The unique TCP transmission bandwidth control unit 321 updates the token bucket to the updated value of token 404 (S212). The unique TCP transmission band control unit 321 may control the transmission band by a method different from the above method.
  • FIG. 9 shows a functional block configuration example of the discard rate calculation unit 322.
  • the configuration and method described below are examples of the discard rate calculation, and the discard rate may be calculated by other configurations and methods.
  • the discard rate calculation unit 322 includes a packet count unit 710 and a calculation unit 720.
  • the packet count unit 710 includes a counter snd 711, a counter ack.
  • the real 712 and the storage unit 730 are included.
  • the counter snd 711 counts the number of packets transmitted from the transmission unit 314. Counter ack.
  • the real 712 counts the number of packets that have been ACKed or SACKed.
  • Storage unit 730 stores the previous SACK block.
  • SLE1 731 represents the first block start end (SACK Left Edge: SLE) of the SACK option field.
  • SRE1 735 represents a termination (SACK Right Edge: SRE).
  • SLE2 732, SLE3 733, and SLE4 734 represent the start ends of the second, third, and fourth blocks, respectively.
  • SRE2 736, SRE3 737, and SRE4 738 represent the end points of the second, third, and fourth blocks, respectively.
  • FIG. 10 is a flowchart showing an operation example of the discard rate calculation unit 322.
  • the packet counting unit 710 determines whether or not the ACK number has advanced (S302) each time an ACK packet is received (S301). When the ACK number is not advanced (S302: No), the packet count unit 710 reads the value of the SACK (SLE1-4, SRE1-4) received immediately before from the storage unit 730 (S303).
  • the packet count unit 710 determines whether there is a change in the SACK value (S304). Specifically, the packet count unit 710 determines whether the terminal number of the SACK block is small, the terminal number is large, or two or more blocks are not connected.
  • the packet counting unit 710 calculates the number of segments for the change, divides by the maximum segment size mss410, and newly enters the receiving computer. The number of received packets is calculated (S305). The packet count unit 710 uses this value as a counter ack. Add to real 712 (S306). The packet count unit 710 stores the value of the SACK block in the storage unit 730 (S307) and returns to the top.
  • the calculation unit 720 calculates the discard rate loss ratio 401 by (1-ack.real712 / snd711).
  • FIG. 11 shows a functional block configuration example of the transmission band suppression control unit 323.
  • the transmission band suppression control unit 323 includes an average discard rate calculation unit 901, a state machine 902, a transmission band suppression function switching unit 903, a transmission band suppression unit 904, and a counter cnt905.
  • the state machine 902 and the transmission band suppression function switching unit 903 constitute an example of a switching control unit.
  • the average discard rate calculation unit 901 calculates a moving average ave_loss_ratio 403 over M times of the discard rate loss_ratio 401 calculated by the discard rate calculation unit 322 for each interval.
  • the state machine 902 operates based on information received from the reception unit 313 and the discard rate calculation unit 322.
  • M may be a fixed value or a variable value.
  • the average discard rate calculation unit 901 may change M in inverse proportion to RTT.
  • the transmission band suppression function switching unit 903 determines whether to enable or disable the transmission band suppression function based on the average discard rate ave_loss_ratio 403 calculated by the average discard rate calculation unit 901 and the state of the state machine 902. In this example, the invalidation / validity of the transmission band suppression function is controlled by whether or not the transmission band suppression unit 904 is bypassed, but other methods may be used.
  • the transmission band suppression unit 904 transmits the control band calculated by the unique TCP transmission band control unit 321 to the transmission unit 314 as a control band.
  • the control bandwidth calculated by the unique TCP transmission bandwidth controller 321 corresponds to the token amount of the token bucket 503 in this example.
  • the transmission band suppression unit 904 transmits the smaller one of the control band calculated by the unique TCP transmission band control unit 321 and the band whose inflight is equal to ⁇ times RWIN. This is transmitted to the unit 314 as a control band.
  • the counter cnt 905 is used for controlling the state machine 902.
  • is a fixed value or a variable value of 1 or less.
  • the transmission band suppression unit 904 may change ⁇ inversely proportional to the discard rate loss_ratio 401.
  • FIG. 12 is a state transition diagram of the state machine 902.
  • the state machine 902 can transition from the start point of the arrow to the end point.
  • the state machine 902 takes four states.
  • the transmission band suppression function switching unit 903 is permitted to disable the transmission band suppression function.
  • state 1000 it is determined that RWIN does not limit the transmission band, or it is determined that it is inappropriate to disable the transmission band suppression function, and the transmission band suppression function is enabled.
  • state 1001 it is determined that RWIN limits the transmission band, and the transmission band suppression function is enabled.
  • the state 1002 when the RWIN is changing, the transmission band suppression function is temporarily enabled.
  • FIG. 13 is a flowchart showing the operation of the state machine 902. The state transition of the state machine 902 will be described using this. After the communication apparatus 100 is activated (S400), the state machine 902 starts from the state 1000 (S401).
  • the state machine 902 determines whether the change rate of the discard rate calculated by the discard rate calculation unit 322 is equal to or greater than a threshold (S402). Specifically, the state machine 902 determines whether the discard rate loss_ratio 401 is equal to or greater than ⁇ times the previous discard rate old_loss_ratio 402.
  • the state machine 902 When the change rate of the discard rate is equal to or greater than the threshold (S402: Yes), the state machine 902 has a discard rate because the network is congested and packet discard occurs, or the buffer of the receiving computer overflows and packet discard occurs. Determined to have risen As described with reference to FIG. 5, when network congestion or buffer overflow is detected, it is inappropriate to disable the transmission band suppression function (determination conditions (1) and (2)). Accordingly, the state machine 902 transitions to the state 1000 (S406) and returns to step S402.
  • the state machine 902 determines whether the RWIN limits the transmission bandwidth (S403). Specifically, the state machine 902 compares inflight with ⁇ times RWIN.
  • the state machine 902 determines that RWIN does not limit the transmission band (S403: No), and adds 1 to the counter cnt905 (S404).
  • the counter cnt905 is equal to or greater than the threshold value N (S405: Yes)
  • the state machine 902 transitions to the state 1000 (S406) and returns to step S402.
  • the counter cnt905 is smaller than the threshold value N (S405: No)
  • the state machine 902 returns to step S402.
  • the state machine 902 determines that the RWIN limits the transmission band (S403: Yes), and the state machine 902 assigns 0 to the counter cnt905 (S407).
  • is a value greater than 0 and equal to or less than ⁇ in order to disable the transmission band suppression function when the specified condition is satisfied.
  • the state machine 902 determines whether the increase / decrease of RWIN is equal to or greater than the threshold (S409). Specifically, the state machine 902 determines whether the increase or decrease (hereinafter referred to as increase / decrease) from the previous RWIN to the current RWIN is equal to or greater than Z% of the previous RWIN.
  • the state machine 902 transitions to the state 1002 (S410) and returns to step S402.
  • the increase / decrease amount is less than Z% (S409: No)
  • the state machine 902 returns to step S402.
  • the state machine 902 may refer to only one change amount of the increase or decrease amount of RWIN, and may use different threshold values for the increase amount and the decrease amount.
  • the state machine 902 determines whether the current state is the state 1000 (S411). If the current state is the state 1000 (S411: Yes), the state machine 902 transitions to the state 1001, records the current time at the reference time B (S412), and returns to 1102.
  • the state machine 902 determines whether the current state is the state 1002 (S413). If the current state is the state 1002 (S413: Yes), the state machine 902 determines whether the increase / decrease amount from the previous RWIN to the current RWIN is equal to or greater than Z% of the previous RWIN (S414).
  • step S414: Yes When the increase / decrease amount of RWIN is equal to or greater than Z% (S414: Yes), the state machine 902 returns to step S402. When the increase / decrease amount is less than Z% (S414: No), the state machine 902 transitions to the state 1003 (S416) and returns to step S402.
  • the state machine 902 determines whether the time ⁇ has elapsed from the reference time B413 (S415). If it has elapsed (S415: Yes), the state machine 902 transitions to the state 1003 (S416), and returns to step S402. If it has not elapsed (S415: No), the state machine 902 returns to step S402.
  • ⁇ , ⁇ , ⁇ , N, and Z may be fixed values or may vary. For example, these values may change according to the RTT and the discard rate.
  • the state machine 902 performs the determination about the change in RWIN (S409, S414) in order to determine whether or not the operating system of the receiving computer is changing the RWIN. If RWIN is increasing, the buffer size of the receiving computer may be increasing. In that case, since the transmission band may not be limited to RWIN, the transmission band suppression function switching unit 903 temporarily enables the transmission band suppression function until RWIN becomes constant. Further, when RWIN is decreased, the possibility of buffer overflow increases, so the transmission band suppression function is temporarily enabled.
  • the state machine 902 determines whether the time ⁇ has elapsed from the reference time B413 (S415), whether the RWIN is continuously limiting the transmission band, or temporarily the inflight is ⁇ times the RWIN. This is performed to determine whether the state is exceeded. When the time ⁇ has elapsed from the reference time B413, the state machine 902 determines that the RWIN is in a state where the transmission band is limited. Reduce the possibility of misjudgment due to temporary conditions.
  • step S405 when the counter cnt905 is larger than the threshold value N, the state machine 902 transitions to the state 1000 (S406). This is because when the inflight is temporarily lower than ⁇ times RWIN, the state 1000 is not changed, and when the inflight is continuously lower, the state 1000 is changed. Reduce the possibility of misjudgment due to temporary conditions.
  • FIG. 14 is a flowchart illustrating an operation example of the transmission band suppression function switching unit 903.
  • the transmission band suppression function switching unit 903 determines whether or not the state machine 902 is in the state 1003 (S501). When the state machine 902 is not in the state 1003 (S501: No), the transmission band suppression function switching unit 903 enables the transmission band suppression function (S504). Thereafter, the transmission band suppression function switching unit 903 returns to Step S501 for determining the state of the state machine 902.
  • the transmission band suppression function switching unit 903 When the state machine 902 is in the state 1003 (S501: Yes), if the ave_loss_ratio 403 is x% or more (S502: Yes), the transmission band suppression function switching unit 903 enables the transmission band suppression function (1204). Thereafter, the transmission band suppression function switching unit 903 returns to Step S501 for determining the state of the state machine 902.
  • the transmission band suppression function switching unit 903 invalidates the transmission band suppression function (S503).
  • x may be a fixed value or may change dynamically according to the RTT and the discard rate.
  • Some steps may be omitted in the control of the transmission band suppression function shown in FIGS. For example, the determination of the change rate of the discard rate, the change amount of RWIND, the elapsed time from the reference time B, the average discard rate, and the like may be omitted.
  • FIG. 15 is a comparison diagram of communication sequences when the transmission band suppression function is valid and when the transmission band suppression function is invalid.
  • the transmission computer 600 can transmit up to three packets before receiving an ACK (packets 601 to 603). After receiving the three packets 601 to 603, the reception computer 620 returns corresponding ACK packets 621 to 623 to the transmission computer 600. After receiving the ACK packets 621 to 623, the transmission computer 600 starts transmission again (604 to 606). Thus, the transmission computer 600 can transmit data up to RWIN at the maximum during the RTT when the transmission band suppression function is valid.
  • the transmission computer 600 can transmit packets 641 to 643, and can further transmit packets even if the inflight reaches RWIN (packets 644 to 647). As a result, the transmission computer 600 can transmit data equal to or higher than RWIN during RTT. As a result, regardless of the size of RWIN, the transmission band can be increased as long as the reception buffer of the reception computer and the buffer of the NIC can receive.
  • FIG. 15 shows an example in which the MSS is 1460 and the RWIN notified by the receiving computer to the transmitting computer is always 4380.
  • the MSS and RWIN may be arbitrary values, and these values may be changed during communication. It may change.
  • the transmission bandwidth when the transmission bandwidth can be increased, transmission is performed exceeding the reception window size, and when transmission is performed exceeding the reception window size, the transmission window may be reduced without exceeding the reception window size.
  • the transmission band control of the present invention can be applied to other communication protocols.
  • Example 1 shows an example in which the unique TCP function is implemented as a proxy device.
  • a unique TCP function is incorporated in a transmission computer as a TCP function of an operating system will be described.
  • the same components as those in the first embodiment are denoted by the same reference numerals, and description thereof is omitted.
  • FIG. 16 shows a configuration example of a network system including the transmission computer 800 in the second embodiment.
  • the transmission computer 800 is connected to the LAN 110.
  • the difference from the first embodiment is that the communication apparatus 100 having the functions of the standard TCP and the original TCP is not installed on the route, but the transmission computer 800 transmits data to the computers 112, 131, 132, 133, 141 by the original TCP. It is a point to start sending.
  • FIG. 17 shows an example of a hardware configuration diagram of the transmission computer 800 in the second embodiment.
  • FIG. 18 illustrates a functional block configuration example of the transmission computer 800 in the second embodiment.
  • the application 801 exchanges data with the unique TCP function 232, and the unique TCP function 232 exchanges data with the LAN 110 through the NIF 260.
  • the unique TCP function is incorporated into the operating system of the transmission computer.
  • the unique TCP function is implemented as a userland application, and the unique TCP function is used from the same or another application. May incorporate a unique TCP function.
  • This example shows an example in which a proxy device incorporating a unique TCP function is implemented as a virtual communication device.
  • the same components as those in the first embodiment are denoted by the same reference numerals, and description thereof is omitted.
  • FIG. 19 shows a configuration diagram of a network system including the virtual communication apparatuses 810 to 813 in the third embodiment.
  • the virtualization infrastructure 830 operates such that the servers 850 to 852 share software resources (virtual machines, virtual networks, etc.).
  • the virtual communication apparatuses 810 to 813, the virtual machines 831 to 833, and the virtual network 805 operate on the virtualization platform 830.
  • Constituent elements that are not explicitly described as virtual in the following description including the servers 850 to 852 are actual constituent elements.
  • the servers 850 to 852 are connected to the LAN 110.
  • Virtual machines 831 to 833 and virtual communication apparatuses 810 to 813 are connected to a virtual network 805.
  • the virtual communication devices 810 to 813 are also connected to the LAN 110 directly or via the virtual network 805.
  • the virtual network 805 may connect connected computers and communication devices as a single network, or use a function such as VLAN to logically form a plurality of networks, separating the connected computers and communication devices. Also good.
  • the virtual communication device 810 is a proxy device that converts standard TCP communication into original TCP communication.
  • the virtual communication devices 811 to 813 may be proxy devices having the same function as the virtual communication device 810, or may be communication devices having other functions such as a firewall and a load balancer.
  • the virtual computer 831 transmits data to the computer 131 by TCP communication
  • the data transmitted from the virtual computer 831 is subjected to bandwidth control by standard TCP and reaches the virtual communication device 810 via the virtual network 805 to perform virtual communication. From the device 810, the bandwidth is controlled by the original TCP and transmitted to the computer 131.
  • FIG. 19 a case where three servers 850 to 852 share the software resources of the virtualization infrastructure 830 is illustrated as an example, but the virtualization infrastructure 830 may be shared by an arbitrary number of servers.
  • the virtualization infrastructure 830 may be operated with one server.
  • FIG. 20 shows an example of a hardware configuration diagram of the server 850 including the virtual communication device 810 according to the third embodiment.
  • the main memory 230 stores programs for realizing a virtualization infrastructure function 861, virtual machine functions 862 to 864, virtual communication device functions 865 to 868, and a virtual network function 869.
  • the processing device 220 operates according to these programs, thereby realizing the virtualization infrastructure 830, the virtual computer 833, the virtual network 805, and the virtual communication device 810.
  • the other servers 851 and 852 may have the same configuration.
  • FIG. 21 is an example of a functional block diagram of the server 850.
  • the difference between the virtual communication device 810 and the communication device 100 of the first embodiment is that a virtual NIF 871 and a virtual NIF 872 are provided as NIFs, and the virtual NIF 871 is connected to the virtual network function 869.
  • Virtual NIFs 871 and 872 are program modules in the virtual communication apparatus function 865.
  • FIG. 21 shows an example in which the virtual NIF 871 is connected to the virtual network function 869.
  • the virtual NIF 871 may be directly connected to the virtual computer functions 862 to 864.
  • FIG. 21 shows an example in which the virtual NIF 872 is directly connected to the NIF 260, but it may be connected via the virtual network function 869.
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • each of the above-described configurations, functions, processing units, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function can be stored in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card or an SD card.
  • SSD Solid State Drive

Landscapes

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

Abstract

 送信装置は、ネットワークを介して受信装置にデータを送信する送信部と、前記受信装置から前記ネットワークを介して受信確認及び受信ウィンドウサイズの情報を含む確認応答データを受信する受信部と、前記送信部から送信されるデータに関する帯域を制御する送信帯域制御部と、前記送信されるデータのうち前記受信装置から確認応答を受信していないデータのデータサイズが、前記受信ウィンドウサイズから決まる上限値以下になるように、前記送信帯域制御部により制御されている帯域を抑制する、送信帯域抑制部と、前記データサイズと前記受信ウィンドウサイズとに基づいて前記送信帯域抑制部の有効/無効を切り替える、切替制御部と、を含む。

Description

通信装置 参照による取り込み
 本出願は、2014年1月15日に出願された日本出願である特願2014-5330の優先権を主張し、その内容を参照することにより、本出願に取り込む。
 本発明は、通信帯域の制御に関する。
 インターネット回線の高速化により、クラウドコンピューティングが普及している。クラウドコンピューティングは、インターネットを経由して、大量のデータをデータセンタとユーザとの間でやり取りする。例えばデータセンタが外国に設置してあるケースでは、長距離のネットワーク上でデータをやり取りすることとなる。長距離のネットワークは、Wide Area Networks(WAN)と呼ばれる。
 インターネットでは、TCP(Transmission Control Protocol)通信が広く用いられている。TCP通信は、受信計算機が受信したデータに対する確認応答(ACK)を送信計算機へ返信することを特徴とする。また、TCP通信では、受信計算機が送信計算機へ、ACKと一緒に受信ウィンドウサイズ(RWIN)と呼ばれる数値を通知する。
 送信計算機は、インフライトデータサイズ(inflight)と呼ばれる送信済みかつACKを受信していないデータのサイズが、RWINを超えない範囲でデータを送信する。そのため、データが送信されてから応答が返されるまでの時間であるRound Trip Time(RTT)時間中に、inflightが最大でRWINに制限される。このため、送信帯域が最大でRWIN/RTTに制限されてしまう。
 本技術分野の背景技術として、特開2012-95190号公報(特許文献1)がある。「受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かを判定し、広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超えない第1のウィンドウサイズとされる第1の状態を、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替え、前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットを送信する」ことが開示されている。
特開2012-95190号公報
 特許文献1の方式は、広帯域及び高遅延環境であると判定された場合に、バースト的に輻輳ウィンドウサイズがRWINに達したとき、送信帯域がRWINを超えるように帯域制御を行う可能性がある。送信帯域がRWINを超えると、パケット廃棄が発生しなければスループットを高まるが、受信計算機のバッファ溢れによりパケット廃棄が発生するとスループットが落ちる。
 本願発明の一態様は、ネットワークに接続される送信装置であって、前記ネットワークを介して受信装置にデータを送信する送信部と、前記受信装置から前記ネットワークを介して受信確認及び受信ウィンドウサイズの情報を含む確認応答データを受信する受信部と、前記送信部から送信されるデータに関する帯域を制御する送信帯域制御部と、前記送信されるデータのうち前記受信装置から確認応答を受信していないデータのデータサイズが、前記受信ウィンドウサイズから決まる上限値以下になるように、前記送信帯域制御部により制御されている帯域を抑制する、送信帯域抑制部と、前記データサイズと前記受信ウィンドウサイズとに基づいて前記送信帯域抑制部の有効/無効を切り替える、切替制御部と、を含む。
 本発明の一態様によれば、データ送信におけるスループットを高めることができる。
実施例1における通信装置を含むネットワークシステムの構成図である。 実施例1における通信装置のハードウェア構成図である。 TCPのパケットフォーマットである。 実施例1における通信装置の機能ブロック図である。 実施例1における独自TCPの動作概念を示すフローチャートである。 実施例1における独自TCPの状態テーブルの例である。 実施例1における独自TCPの送信帯域制御部の機能ブロック図である。 実施例1における独自TCPの送信帯域制御部の動作を示すフローチャートである。 実施例1における廃棄率計算部の機能ブロック図である。 実施例1における廃棄率計算部の動作を示すフローチャートである。 実施例1における送信帯域抑制部の機能ブロック図である。 実施例1における送信帯域抑制部に用いられるステートマシンの状態遷移図である。 実施例1における送信帯域抑制部に用いられるステートマシンの動作を示すフローチャートである。 実施例1における送信帯域抑制機能切替部の動作を示すフローチャートである。 実施例1における送信帯域抑制機能有効時及び送信帯域抑制機能無効時における通信シーケンスの比較図である。 実施例2における送信計算機を含むネットワークシステムの構成図である。 実施例2における送信計算機のハードウェア構成図である。 実施例2における送信計算機の機能ブロック図である。 実施例3における仮想通信装置を含むネットワークシステムの構成図である。 実施例3における仮想通信装置を含むサーバのハードウェア構成図である。 実施例3における仮想通信装置を含むサーバの機能ブロック図である。
 以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
 実施例1は、基本的な一例を記載する。図1は、本実施例の通信装置100を含むネットワークシステムの構成図を示す。通信装置100はLAN110とWAN120を接続する通信回線上に設置される。LAN130とLAN140はWAN120を介して通信装置100に接続される。
 複数の計算機111、112はLAN110を介して通信装置100に接続される。複数の計算機131、132、133はLAN130に接続される。計算機141はLAN140に接続される。また、WAN120は、LANと比べると長い拠点間を結ぶネットワークや、拠点間での通信の遅延が大きいネットワークを含む。
 以下においては、OSI参照モデルのトランスポート層にあたる伝送制御プロトコルであるTransmission Control Protocol(TCP)に基づく通信を例として説明する。本実施例で説明する通信制御は、TCP通信に好適であるが、他の通信方式にも適用することができ、データの送信装置及び受信装置は計算機でなくてもよい。
 通信装置100は、例えばLAN110に接続された計算機111がWAN120を経由して計算機131にTCP通信によってデータを送信するとき、通信装置100の備える独自TCP機能によってデータ送信の帯域制御を行う。独自TCPによる送信帯域制御は、受信計算機が送信計算機へ通知するRWIN以上に、受信計算機がデータを受信可能な場合、RWINに制限されない送信帯域制御を行うことによってデータ送信を高速化する。
 以下、独自TCP機能による送信帯域制御に関する例を詳細に説明する。なお、計算機、通信装置及びネットワークの数は、図示の数に限定されず任意である。計算機は、サーバ、プロキシ装置、情報処理装置、端末、携帯型情報処理端末、スマートフォンやタブレット等を含む。計算機間の通信は、クライアントサーバ間のデータ転送や、情報処理装置間のファイル転送、リモートアクセスの画面転送等を含む。ネットワークは帯域保証されるネットワークでも帯域保証されないネットワークでもよい。
 図2は、本実施例の通信装置100のハードウェア構成例を示す。通信装置100は、主記憶230、二次記憶240、処理装置220、ネットワークインターフェース(NIF)250、NIF260、及びそれらを相互接続しデータを転送するシステムバス210を含む。
 主記憶230は、プログラム及びデータを一時的に記憶しデータの読み書きを行う。二次記憶240は、プログラム及びデータを長期的に保存し必要に応じて主記憶230へロードする。処理装置220は、主記憶230上のプログラムを実行し主記憶230上のデータを処理し結果を主記憶230へ書き込む。
 主記憶230は、標準TCP機能231、独自TCP機能232、プロキシ機能233などのプログラムを記憶する。標準TCP機能231は、プロキシ機能233から受け取ったデータをNIF250からLAN110へと送信し、LAN110からNIF250を経由して受信したデータをプロキシ機能233へ渡す。
 独自TCP機能232は、プロキシ機能233から受け取ったデータをNIF260からWAN120へと送信し、WAN120からNIF260を経由して受信したデータをプロキシ機能233へ渡す。プロキシ機能233は、標準TCP機能231から受け取ったデータを独自TCP機能232へ渡し、独自TCP機能232から受け取ったデータを標準TCP機能231へ渡す。
 例えば、計算機111が、計算機131へデータが送信するとする。計算機111から通信装置100までの経路であるLAN110上では、計算機111が標準TCPによって送信帯域を制御する。通信装置100から計算機131への経路であるWAN120及びLAN130上では、通信装置100が独自TCPによって送信帯域を制御する。計算機131が通知するRWINが小さい場合でも、計算機131がより多くのデータを受信可能である場合、通信装置100の独自TCPによる送信帯域制御によって、広い通信帯域が得られる。
 図2は、処理装置220、主記憶230、二次記憶240、NIF250、NIF260がひとつのシステムバス210を介して接続されている例を示す。複数のシステムバスを介して接続されていたり、システムバスを介さずに直接接続されていたりしてもよい。図示した数とは異なる数の、処理装置、主記憶、二次記憶、NIFが実装されていてもよい。
 図2は、標準TCP機能231、独自TCP機能232、プロキシ機能233が全てソフトウェアにより構成されている例を示す。これら機能の一部又は全ては、処理装置220、NIF250、及びNIF260のうちの一つ又は複数要素に実装されてもよい。NIF250、260は、一つの物理的なNIFに実装された論理的なNIFでもよい。
 図3には通信装置100が送受信するパケットのフォーマット図を表す。パケットは、MACヘッダ910、IPヘッダ920、TCPヘッダ930、TCPオプションヘッダ940、ペイロード960を含む。
 MACヘッダ910は、宛先MACアドレスを表すDMAC911と、送信元MACアドレスを表すSMAC912と、MACフレームタイプを表すType913を含む。IPヘッダ920は、MACヘッダ910を除くパケット長を表すIP length921と、プロトコル番号を表すprotocol922と、送信元IPアドレスを表すSIP923と、宛先IPアドレスを表すDIP924を含む。
 TCPヘッダ930は、送信元ポート番号を表すsrc.port931と、宛先ポート番号を表すdst.port932と、送信シーケンス番号を表すSEQ933と、受信シーケンス番号を表すACK934と、TCPフラグ番号を表すflag935と、TCPのヘッダ長を表すtcp hlen936と、RWINを送信計算機へ通知するwin_size937を含む。
 TCPオプションヘッダ940は、オプション種別を表すoption kind941と、オプション長を表すoption length942と、受信できたかデータ箇所の位置を送信計算機に通知するために用いられるleft_edge_1~4(943、945、947、949)、right_edge_1~4(944、946、948、950)を含む。
 例えば、MSS(Maximum Segment Size)オプションは、TCP通信を開始するときに自装置の受信可能なMSSのサイズを対向装置に通知するために用いられる。SACK(Selective ACKnowledgement)オプションは、TCP通信を開始するときに、自装置がSACKオプションに対応可能であることを対向装置に通知するために用いられる。SACKオプションは、さらに、通信中に廃棄が検出されたときに部分的に受信できた箇所を対向装置に通知するために用いられる。
 タイムスタンプオプションは、通信中の自装置の受信時刻を対向装置に通知するために用いられる。ウィンドウスケールオプションは、win_size937で通知する値を左シフトするビット数を対向装置に通知することで、対向装置に通知可能なRWINの最大値を大きくするために用いられる。このように、TCPオプションは、通信開始時及び通信中に自装置の対応可能な機能や情報を対向装置に伝えるために用いられる。
 図4は本実施例の通信装置100の機能ブロック構成例の詳細を示す。通信装置100は、標準TCP機能231、独自TCP機能232、プロキシ機能233、NIF250、NIF260を含む。
 プロキシ機能233は、標準TCP機能231のバッファ301、302と独自TCP機能232のバッファ311、312と間で、データを転送する。プロキシ機能233は、通信装置100を通過するTCP通信において、標準TCP機能231と独自TCP機能232とを用いる。
 具体的には、プロキシ機能233は、LAN110とNIF250との通信において標準TCP機能231を用いる。WAN120とNIF260との間の通信において独自TCP機能232を用いる。これにより、LAN110上で標準TCPによって帯域が制御されているTCP通信を、WAN120では独自TCPによって帯域が制御されるように、帯域制御モードを変換する。
 標準TCP機能231は、受信バッファ301、送信バッファ302、受信部303、送信部304、標準TCP送信帯域制御部305を含む。受信バッファ301は、受信部303が受信したデータの順序の整合性等を確認しプロキシ機能233へ渡す。送信バッファ302は、プロキシ機能233から送信されるデータを一時的にバッファリングするとともにパケット廃棄が起こったときに再送するために保持し、必要なデータを送信部304へ渡す。
 受信部303は、LAN110からNIF250に届いたデータを受信する。送信部304は、標準TCP送信帯域制御部305に従ってNIF250よりLAN110にデータを送信する。標準TCP送信帯域制御部305は、IETF RFC793に記載のアルゴリズムによって送信部304がデータを送信する帯域を制御する。
 独自TCP機能232は、受信バッファ311、送信バッファ312、受信部313、送信部314、独自TCP制御部315を含む。受信バッファ311は、受信部313が受信したデータの順序等の整合性を確認しプロキシ機能233へ渡す。送信バッファ312は、プロキシ機能233から送信されるデータを一時的にバッファリングするとともにパケット廃棄が起こったときに再送するために保持し、必要なデータを送信部314へ渡す。
 受信部313は、WAN120からNIF260に届いたデータを受信する。送信部314は、独自TCP制御部315に従ってNIF260よりWAN120にデータを送信する。独自TCP制御部315は、送信部314がデータを送信する帯域を制御する。
 独自TCP制御部315は、独自TCP送信帯域制御部321、廃棄率計算部322、送信帯域抑制制御部323、状態テーブル324を含む。状態テーブル324は、独自TCP機能を実行するのに必要な値を格納する。独自TCP送信帯域制御部321は、受信部313から受け取ったデータ及び廃棄率計算部322から受け取った廃棄率をもとに、送信部314がデータを送信する速度を計算する。
 廃棄率計算部322は、受信部313から受け取ったデータをもとに送信部314から送信されたパケットの廃棄率を計算する。送信帯域抑制制御部323は、受信部313から受け取ったデータ及び廃棄率計算部322から受け取った廃棄率をもとに、送信部314から送信されるデータの帯域を制御する。
 送信帯域抑制制御部323の送信帯域抑制機能が有効な場合、当該機能は、inflightが受信部313から受け取ったRWINのδ倍より大きくならないように、帯域を制御する。inflightは、送信部314から送信されるデータのうち受信部313からACKパケットを受け取っていないデータのサイズである。δの値については後述する。
 図5は本実施例の通信装置100に含まれる独自TCP制御部315の動作概要を示すフローチャートである。通信装置100は、送信帯域抑制機能を有効にすることで受信計算機のバッファ溢れを防ぐ。さらに、送信帯域抑制機能を無効にすることで、受信計算機が通知するRWINに送信帯域が制限されることを防ぐ。
 通信装置100は、通信中に送信帯域抑制機能の有効/無効を切り替えることでデータ送信を高速化する。送信帯域抑制機能を無効にしなくてもRWINに送信帯域が制限されない場合は、受信計算機のバッファ溢れを防ぐことによって通信帯域の低下を抑えるため、送信帯域抑制機能を有効にする。
 受信計算機のバッファが溢れておらず、送信帯域がRWINによって制限されているときは、さらに送信帯域を広げるために送信帯域抑制機能を無効にする。この切替えを動的に行うことによって、受信計算機及びネットワークの状況に応じたデータ通信の高速化を実現する。
 図5を参照して、通信装置100の動作の概要を説明する。詳細については後述する。通信装置100の起動時(S100)、独自TCP制御部315は、送信帯域抑制機能を有効化した状態で開始する(S101)。受信計算機のオペレーティングシステムはRWINを動的に変化させることがあるため、送信帯域抑制機能を無効にしなくても、RWINが拡大することで送信帯域を拡大する可能性があるからである。送信帯域抑制機能を維持することで、受信計算機のバッファ溢れをより確実に防げる。
 独自TCP制御部315は、送信帯域がRWINで制限されているかどうか判定し続ける。RWINが送信帯域を制限していると判定すると(S102)、独自TCP制御部315は、送信帯域抑制機能を無効化することで、送信帯域をRWINに制限されないようにする(S103)。
 送信帯域抑制機能の無効化(S103)後、独自TCP制御部315は、送信帯域抑制機能の無効化が適切かどうか判定し続ける(S104)。ステップS104で送信帯域抑制機能を無効にすることが不適切だと判定する条件は次の通りである。
 (1)独自TCP制御部315は、送信帯域抑制機能を無効にしているときにネットワークの輻輳を検出した場合、送信帯域抑制機能を無効にすることは不適切だと判定する。これにより、RWINに送信帯域を制限されている他の標準TCP通信との通信帯域の公平性を保つ。
 (2)独自TCP制御部315は、受信計算機のバッファ溢れを検出した場合、送信帯域抑制機能を無効にすることは不適切だと判定する。送信帯域抑制機能を有効にすることで、受信計算機のバッファ溢れを防ぐことができる。
 (3)独自TCP制御部315は、送信帯域抑制機能を有効にしても無効にしても長い時間でみた送信帯域が大きく変わらない場合、送信帯域抑制機能は有効にすることが適切であり、無効にすることは不適切だと判定する。送信帯域抑制機能を有効とすることで、受信計算機のバッファ溢れを未然に防ぐことができる。
 以上の判定基準により送信帯域抑制機能の無効化が不適切だと判定された場合(S104:No)、独自TCP制御部315は、送信帯域抑制機能を有効化する(S101)。送信帯域抑制機能を無効化することが不適切であると判定する条件として3つの条件をあげたが、独自TCP制御部315は、全ての条件をそれぞれ用いてもよいし、一部の条件のみを用いてもよい。また、他の条件を使用してもよい。
 図6は状態テーブル324の例を示す。状態テーブル324は、例えばTCPコネクションごとの状態を記録するためのn個のエントリ400を有する。各エントリ400が含む情報の例は以下の通りである。
 loss_ratio401は、廃棄率計算部322が計算した最新の廃棄率である。old_loss_ratio402は、廃棄率loss_ratio401が更新される際に廃棄率loss_ratio401の値が格納される旧廃棄率である。ave_loss_ratio403は、廃棄率loss_ratio401のM回分の移動平均値を示す平均廃棄率である。Mの値については後述する。
 token404は、現在のトークンバケット内のトークンを示す。old_token405は、トークンバケット内のトークンが更新される前のトークンtoken404の値を示す旧トークンである。tmp_token406は、トークンtoken404の値を旧トークンold token405に移すときに一時的に記憶しておく一時トークンである。
 left_send_seg407は、送信バッファ312内において、送信済みかつACK受信済みデータへのポインタを示す左端ポインタである。right_send_seg408は、送信バッファ312内において、送信済みかつACKを受信していないデータへのポインタを示す右端ポインタである。old_ack_seg409は、トークンtoken404が更新される直前のACKパケットのACK番号を記憶する旧ACK番号である。mss410は、通信中のTCPセッションにおける最大のペイロードサイズを示す最大セグメントサイズである。
 RWND411は、受信部313から受け取った最新のACKパケットに含まれるRWINを示す。基準時刻A412は、次回のトークン更新時刻の基準となる時刻を記憶する。基準時刻は、例えば、トークンバケットの更新時刻である。基準時刻B413は、inflightがRWINのα倍以上となった最近の時刻を記憶する。αの値については後述する。rts414は、再送要求されたパケット数を保存するカウンタである。
 図7は、独自TCP送信帯域制御部321の機能ブロック構成例を示す。本実施例における独自TCP送信帯域制御部321は、トークンバケットアルゴリズムを使用する。トークンバケットアルゴリズムは、トークンバケットにトークンを蓄積する。トークンバケット内のトークンが送信パケット長以上である場合、トークンバケットアルゴリズムは、当該パケットを送信する。
 トークンバケットアルゴリズムは、パケットを送信すると、パケット長分のトークンをトークンバケットから減らす。独自TCP送信帯域制御部321は、タイマ501、トークンバケット503、トークンを計算するトークン更新部502を含み、本実施例のトークンバケットアルゴリズムを実現する。独自TCP送信帯域制御部321により、送信帯域抑制機能が無効状態である場合でも、適切に帯域制御を行うことができる。
 図8は独自TCP送信帯域制御部321の動作例を示すフローチャートである。本実施例のトークンバケットアルゴリズムは、インターバル経過毎に、廃棄率に応じてトークンバケット内のトークンを増減する。これにより廃棄率を低減する。独自TCP送信帯域制御部321は、下記帯域制御と異なるアルゴリズムで送信帯域を制御してもよい。
 独自TCP送信帯域制御部321は、処理開始(S200)の後、タイマ501にて、現在時刻を監視する(S201)。具体的には、独自TCP送信帯域制御部321は、現在時刻と基準時刻A412との差が、所定のインターバル以上かどうか判定する。インターバルとして、計測されたRTTを用いてもよい。
 現在時刻と基準時刻A412との差がインターバル以上である場合(S201:Yes)、独自TCP送信帯域制御部321は、廃棄率loss_ratio401に廃棄率計算部322から取得した廃棄率を格納する(S202)。また、独自TCP送信帯域制御部321は、一時トークンtmp_token406に、トークンtoken404の値を退避させる(S203)。
 次に、独自TCP送信帯域制御部321は、左端ポインタleft_send_seg407の値が変化しているかをチェックする(S204)。その値が変化していない場合(S204:Yes)、独自TCP送信帯域制御部321は、送信バッファ312に未送信データがあるかどうかチェックする(S205)。
 未送信データがない場合(S205:No)、独自TCP送信帯域制御部321は、ステップS201に戻る。未送信データがある場合(S205:Yes)、独自TCP送信帯域制御部321は、トークンtoken404の値を基準時刻A412以降のACK受信量(現在のACK番号-old_ack_seg409)に設定する(S207)。
 ステップS204において、left_send_seg407の値が進んでいた場合(S204:No)、独自TCP送信帯域制御部321は、旧廃棄率old_loss_ratio402のK倍が廃棄率loss_ratio401以上か判定する(S206)。Kは、所定の定数又は変数である。Kは、1以上又は1未満の値であり、一例において1である。
 旧廃棄率old_loss_ratio402のK倍が廃棄率loss_ratio401より小さい場合(S206:No)、独自TCP送信帯域制御部321は、トークンtoken404を、旧トークンold token405よりも小さくなるよう、カウンタrts414に基づいて減少させる。例えば、token404を、(old token405-rts414)に変化させる(S208)。
 旧廃棄率old_loss_ratio402のK倍が廃棄率loss_ratio401以上である場合(S206:Yes)、独自TCP送信帯域制御部321は、token404を所定量だけ増加させる(S209)。増加量は定数又は変数である。
 ステップS207、S208、S209の後、独自TCP送信帯域制御部321は、廃棄率loss_ratio401を旧廃棄率old_loss_ratio402に、一時トークンtmp_token406を旧トークンold token405に、現在のACK番号を旧ACK番号old_ack_seg409に代入する(S210)。さらに、独自TCP送信帯域制御部321は、基準時刻A412を更新する(S211)。独自TCP送信帯域制御部321は、基準時刻A412を例えば現在時刻に更新する。更新後時刻は、他の時刻でもよい。独自TCP送信帯域制御部321は、更新したtoken404の値に、トークンバケットを更新する(S212)。なお、独自TCP送信帯域制御部321は、上記方法と異なる方法で送信帯域を制御してもよい。
 図9は廃棄率計算部322の機能ブロック構成例を示す。以下に説明する構成及び方法は廃棄率計算の一例であって、他の構成及び方法により廃棄率を計算してもよい。廃棄率計算部322は、パケットカウント部710、計算部720を含む。パケットカウント部710は、カウンタsnd711、カウンタack.real712、記憶部730を含む。カウンタsnd711は、送信部314より送信されたパケット数をカウントする。カウンタack.real712は、ACK又はSACKされたパケット数をカウントする。記憶部730は、前回のSACKブロックを記憶する。
 記憶部730において、SLE1 731は、SACKオプションフィールドの第一ブロック始端(SACK Left Edge:SLE)を表す。SRE1 735は、終端(SACK Right Edge: SRE)を表す。SLE2 732、SLE3 733、SLE4 734は、それぞれ、第二、第三、第四ブロックの始端を表す。SRE2 736、SRE3 737、SRE4 738は、それぞれ、第二、第三、第四ブロックの終端を表す。
 図10は廃棄率計算部322の動作例を示すフローチャートである。処理開始(S300)の後、パケットカウント部710は、ACKパケットを受信(S301)するたびに、ACK番号が進んだかどうかを判定する(S302)。ACK番号が進んでいない場合(S302:No)、パケットカウント部710は、記憶部730からひとつ前に受信したSACKの値(SLE1-4、SRE1-4)を読み出す(S303)。
 パケットカウント部710は、SACKの値に変化があるか判定する(S304)。具体的には、パケットカウント部710は、SACKブロックのうち終端の番号が小さくなるか、終端の番号が大きくなるか、あるいは2つ以上のブロックが繋がっていないかを判定する。
 ACK番号又はSACKの値に変化がみられた場合(S302:Yes、S304:Yes)、パケットカウント部710は、変化分のセグメント数を計算して最大セグメントサイズmss410で割り、新規に受信計算機に受信されたパケット数を計算する(S305)。パケットカウント部710は、この値をカウンタack.real712に加算する(S306)。パケットカウント部710は、SACKブロックの値を記憶部730に格納して(S307)、先頭に戻る。計算部720は、廃棄率loss ratio401を、(1-ack.real712/snd711)により算出する。
 図11は送信帯域抑制制御部323の機能ブロック構成例を示す。送信帯域抑制制御部323は、平均廃棄率計算部901、ステートマシン902、送信帯域抑制機能切替部903、送信帯域抑制部904、カウンタcnt905を含む。ステートマシン902及び送信帯域抑制機能切替部903は、切替制御部の一例を構成する。
 平均廃棄率計算部901は、廃棄率計算部322がインターバルごとに計算した廃棄率loss_ratio401のM回に渡る移動平均ave_loss_ratio403を計算する。ステートマシン902は、受信部313及び廃棄率計算部322から受けとった情報をもとに動作する。Mは固定値でもよく、可変値でもよい。例えば、平均廃棄率計算部901は、MをRTTと反比例に変化させてもよい。
 送信帯域抑制機能切替部903は、平均廃棄率計算部901が計算した平均廃棄率ave_loss_ratio403及びステートマシン902の状態をもとに、送信帯域抑制機能の有効とするか無効とするかを判定する。本例において、送信帯域抑制機能の無効/有効は、送信帯域抑制部904をバイパスするか否かにより制御されるが、他の方法を使用してもよい。
 送信帯域抑制機能が無効である場合、送信帯域抑制部904は、独自TCP送信帯域制御部321が計算した制御帯域を送信部314に制御帯域として伝達する。独自TCP送信帯域制御部321が計算した制御帯域は、本例におけるトークンバケット503のトークン量に相当する。送信帯域抑制機能が有効である場合、送信帯域抑制部904は、独自TCP送信帯域制御部321が計算した制御帯域と、inflightがRWINのδ倍と等しくなる帯域のうち、小さい方の帯域を送信部314に制御帯域として伝達する。
 カウンタcnt905は、ステートマシン902の制御に利用される。δは、例えば、1以下の、固定値又は可変値である。例えば、送信帯域抑制部904は、δを廃棄率loss_ratio401に反比例に変化させてもよい。
 図12はステートマシン902の状態遷移図である。ステートマシン902は、矢印の始点から終点に遷移し得る。ステートマシン902は、4つの状態をとる。状態1003において、送信帯域抑制機能切替部903は、送信帯域抑制機能を無効にすることが許可されている。
 状態1000において、RWINが送信帯域を制限していないと判定されているか、又は送信帯域抑制機能を無効にすることが不適切だと判定されていて、送信帯域抑制機能が有効にされている。状態1001において、RWINが送信帯域を制限していると判定されており、送信帯域抑制機能が有効にされている。状態1002において、RWINが変化しているときに、送信帯域抑制機能が一時的に有効にされている。
 図13はステートマシン902の動作を示すフローチャートである。これを用いてステートマシン902の状態遷移について説明する。通信装置100の起動(S400)後、ステートマシン902は状態1000から開始する(S401)。
 ステートマシン902は、廃棄率計算部322が計算した廃棄率の変化率が閾値以上であるか判定する(S402)。具体的には、ステートマシン902は、廃棄率loss_ratio401が、前回の廃棄率old_loss_ratio402のγ倍以上であるか判定する。
 廃棄率の変化率が閾値以上である場合(S402:Yes)、ステートマシン902は、ネットワークが輻輳してパケット廃棄が発生したか、受信計算機のバッファが溢れてパケット廃棄が発生したために廃棄率が上昇したと判定する。図5を参照して説明したように、ネットワークの輻輳又はバッファ溢れが検出された場合、送信帯域抑制機能を無効にすることは不適切である(判定条件(1)及び(2))。従って、ステートマシン902は、状態1000に遷移し(S406)、ステップS402に戻る。
 廃棄率計算部322が計算した廃棄率loss_ratio401が前回の廃棄率old_loss_ratio402のγ倍よりも小さい場合(S402:No)、ステートマシン902は、RWINが送信帯域を制限しているか判定する(S403)。具体的には、ステートマシン902は、inflightとRWINのα倍とを比較する。
 inflightがRWINのα倍よりも小さい場合、ステートマシン902は、RWINが送信帯域を制限していないと判定し(S403:No)、カウンタcnt905に1を加える(S404)。カウンタcnt905が閾値N以上である場合(S405:Yes)、ステートマシン902は状態1000に遷移し(S406)、ステップS402に戻る。カウンタcnt905が閾値Nよりも小さい場合(S405:No)、ステートマシン902は、ステップS402に戻る。
 inflightがRWINのα倍以上である場合、ステートマシン902は、RWINが送信帯域を制限していると判定し(S403:Yes)、ステートマシン902は、カウンタcnt905に0を代入する(S407)。送信帯域抑制機能が有効になった後、規定条件が満たされた場合に送信帯域抑制機能を無効にするため、αは、0より大きく、δ以下の値である。
 現在の状態が状態1003である場合(S408:Yes)、ステートマシン902は、RWINの増減が閾値以上であるか判定する(S409)。具体的には、ステートマシン902は、前回のRWINから現在のRWINへの増加量又は減少量(以下増減量と呼ぶ)が、前回のRWINのZ%以上であるか判定する。
 RWINの増減量がZ%以上である場合(S409:Yes)、ステートマシン902は、状態1002に遷移し(S410)、ステップS402に戻る。増減量がZ%未満である場合(S409:No)、ステートマシン902は、ステップS402に戻る。なお、ステートマシン902は、RWINの増加量又は減少量の一方の変化量のみを参照してもよく、増加量と減少量で異なる閾値を使用してもよい。
 現在の状態が状態1003でない場合(S408:No)、ステートマシン902は、現在の状態が状態1000か判定する(S411)。現在の状態が状態1000であれば(S411:Yes)、ステートマシン902は、状態1001に遷移し、現在時刻を基準時刻Bに記録し(S412)、1102に戻る。
 現在の状態が状態1000でない場合(S411:No)、ステートマシン902は、現在の状態が、状態1002であるか判定する(S413)。現在の状態が、状態1002であれば(S413:Yes)、ステートマシン902は、前回のRWINから現在のRWINへの増減量が、前回のRWINのZ%以上であるか判定する(S414)。
 RWINの増減量がZ%以上である場合(S414:Yes)、ステートマシン902は、ステップS402に戻る。増減量がZ%未満である場合(S414:No)、ステートマシン902は、状態1003に遷移し(S416)、ステップS402に戻る。
 現在の状態が状態1002でなければ(S413:No)、ステートマシン902は、基準時刻B413から時間βが経過しているか判定する(S415)。経過していれば(S415:Yes)、ステートマシン902は、状態1003に遷移し(S416)、ステップS402に戻る。経過していなければ(S415:No)、ステートマシン902は、ステップS402に戻る。
 図5を参照して説明したように、送信帯域抑制機能を有効にしても無効にしても長い時間でみた送信帯域が大きく変わらない場合、送信帯域抑制機能は有効にすることが適切である(条件(3))。RWINによる送信帯域抑制期間が短い場合、送信帯域抑制機能を有効とすることで、受信計算機のバッファ溢れを未然に防ぐことが有効である。基準時刻B413から時間βが経過していることが状態1003に遷移することの条件に含まれることで、RWINによる送信帯域抑制期間が短い場合に、送信帯域抑制機能が無効になることを避ける。
 上記α、β、γ、N、Zは固定値でもよいし、変化してもよい。例えば、これらの値は、RTTや廃棄率に応じて変化してもよい。
 ステートマシン902は、RWINの変化についての判定(S409、S414)を、受信計算機のオペレーティングシステムがRWINを変更中か否か判定するために行う。RWINが増加している場合、受信計算機のバッファサイズが拡大中の可能性がある。その場合、送信帯域がRWINに制限されなくなる可能性があるため、送信帯域抑制機能切替部903は、RWINが一定になるまで送信帯域抑制機能を一時的に有効にする。また、RWINが減少している場合、バッファ溢れの可能性が増加するため、送信帯域抑制機能を一時的に有効にする。
 ステートマシン902は、基準時刻B413から時間βが経過しているかの判定(S415)を、RWINが継続的に送信帯域を制限している状態であるか、一時的にinflightがRWINのα倍を超えた状態であるかを判定するために行う。基準時刻B413から時間βが経過した場合、ステートマシン902は、RWINが送信帯域を制限している状態であると判定する。一時的な状態による誤判定の可能性を低減する。
 ステップS405においてカウンタcnt905が閾値Nよりも大きい場合に、ステートマシン902は、状態1000に遷移する(S406)。これは、inflightが一時的にRWINのα倍よりも下回った場合に状態1000に遷移せず、継続的に下回った場合に状態1000に遷移するためである。一時的な状態による誤判定の可能性を低減する。
 図14は、送信帯域抑制機能切替部903の動作例を示すフローチャートである。処理開始後(S500)、送信帯域抑制機能切替部903は、ステートマシン902が状態1003かどうか判定する(S501)。ステートマシン902が状態1003でない場合(S501:No)、送信帯域抑制機能切替部903は、送信帯域抑制機能を有効にする(S504)。その後、送信帯域抑制機能切替部903は、ステートマシン902の状態を判定するステップS501に戻る。
 ステートマシン902が状態1003である場合(S501:Yes)、ave_loss_ratio403がx%以上であれば(S502:Yes)、送信帯域抑制機能切替部903は、送信帯域抑制機能を有効にする(1204)。その後、送信帯域抑制機能切替部903は、ステートマシン902の状態を判定するステップS501に戻る。
 ave_loss_ratio403がx%未満であれば(S502:No)、送信帯域抑制機能切替部903は、送信帯域抑制機能を無効にする(S503)。xは固定の値でもよいし、RTTや廃棄率に応じて動的に変化してもよい。
 図13及び図14に示す送信帯域抑制機能の制御において、いくつかのステップを省略してもよい。例えば、廃棄率の変化率、RWINDの変化量、基準時刻Bからの経過時間、平均廃棄率等についての判定を省略してもよい。
 図15は送信帯域抑制機能有効時及び送信帯域抑制機能無効時における通信シーケンスの比較図である。ここでは、受信計算機620は、常に送信計算機600にRWIN=4380を通知し、また送信計算機600は、常にペイロードサイズが1460のパケットを送信する場合を例として説明する。
 送信帯域抑制機能有効時において、送信計算機600は、ACKを受信する前にパケットを3つまで送信することができる(パケット601~603)。受信計算機620は3つのパケット601~603を受信後、対応するACKパケット621~623を送信計算機600へ返す。送信計算機600はACKパケット621~623を受信後、再び送信を開始する(604~606)。このように、送信計算機600は、送信帯域抑制機能有効時、RTT中に最大でRWINまでしかデータを送信することができない。
 送信帯域抑制機能無効時において、送信計算機600は、パケット641~643を送信し、inflightがRWINに到達してもさらにパケットを送信することができる(パケット644~647)。その結果、送信計算機600は、RTT中にRWIN以上のデータを送信することができる。これにより、RWINの大きさに依らず、受信計算機の受信バッファやNICのバッファが受信可能な限り送信帯域を大きくすることができる。
 なお、図15は、MSSが1460、受信計算機が送信計算機へ通知するRWINが常に4380である例を示しているが、MSS及びRWINは任意の値でよく、それらの値が通信中に値が変化してもよい。
 本実施例によれば、送信帯域を高めることが可能なときに受信ウィンドウサイズを超えて送信し、受信ウィンドウサイズを超えて送信すると送信帯域を落とす可能性があるときに受信ウィンドウサイズを超えずに送信することができ、スループットを高めることができる。なお、上記例は、TCP通信における送信帯域制御の例であるが、本発明の送信帯域制御を他の通信プロトコルに適用することができる。
 実施例1は、独自TCP機能がプロキシ装置として実装される例を示した。本実施例は、独自TCP機能がオペレーティングシステムのTCP機能として送信計算機に組み込まれる例を説明する。特に断りのない限り、実施例1と同様の構成のものには同じ符号を付し、説明を省略する。
 図16は、実施例2における送信計算機800を含むネットワークシステムの構成例を示す。送信計算機800は、LAN110に接続される。実施例1との違いは、経路上に標準TCPと独自TCPの機能を有する通信装置100を設置するのではなく、送信計算機800が独自TCPによって、計算機112、131、132、133、141へデータの送信を開始する点である。
 図17は、実施例2における送信計算機800のハードウェア構成図の例を示す。図18は、実施例2における送信計算機800の機能ブロック構成例を示す。アプリケーション801は、独自TCP機能232とデータの受渡しを行い、独自TCP機能232がNIF260を通してLAN110とデータのやり取りを行う。
 ここでは、独自TCP機能が送信計算機のオペレーティングシステムに組み込まれる例を挙げたが、ユーザランドのアプリケーションとして独自TCP機能を実装し、同じ又は他のアプリケーションから独自TCP機能を利用する形で、送信計算機に独自TCP機能を組み込んでもよい。
 本実施例は、独自TCP機能が組み込まれるプロキシ装置が仮想通信装置として実装される例を示す。特に断りのない限り、実施例1と同様の構成のものには同じ符号を付し、説明を省略する。
 図19は、実施例3における仮想通信装置810~813を含むネットワークシステムの構成図を示す。仮想化基盤830は、サーバ850~852がソフトウェアリソース(仮想計算機、仮想ネットワーク等)を共有する形で稼働する。仮想通信装置810~813、仮想計算機831~833、及び仮想ネットワーク805は、仮想化基盤830上で稼働する。サーバ850~852を含め、以下の説明において仮想との明示がない構成要素は、実構成要素である。
 サーバ850~852は、LAN110に接続される。仮想計算機831~833及び仮想通信装置810~813は仮想ネットワーク805に接続される。仮想通信装置810~813は、直接又は仮想ネットワーク805を経由してLAN110にも接続される。仮想ネットワーク805は、接続される計算機や通信装置を1つのネットワークとして接続してもよいし、VLAN等の機能を用いて、論理的に複数のネットワークとし、接続される計算機や通信装置を区切ってもよい。
 ここで、仮想通信装置810は標準TCP通信を独自TCP通信へ変換するプロキシ装置である。仮想通信装置811~813は、仮想通信装置810と同一の機能を持つプロキシ装置でもよいし、ファイヤウォールやロードバランサなどの他の機能を持つ通信装置でもよい。
 例えば仮想計算機831が計算機131へとTCP通信によってデータを送信するとき、仮想計算機831から送信するデータは、標準TCPによって帯域制御されて仮想ネットワーク805を経由して仮想通信装置810に届き、仮想通信装置810からは独自TCPによって帯域制御されて計算機131へと送信される。
 図19においては3台のサーバ850~852が仮想化基盤830のソフトウェアリソースを共有している場合を例として図示しているが、任意の台数のサーバで仮想化基盤830を共有してもよいし、1台のサーバで仮想化基盤830を稼働させてもよい。
 図20は実施例3における仮想通信装置810を含むサーバ850のハードウェア構成図の例を示す。主記憶230は、仮想化基盤機能861、仮想計算機機能862~864、仮想通信装置機能865~868、及び仮想ネットワーク機能869を実現するプログラムを格納している。処理装置220がこれらプログラムに従って動作することで、仮想化基盤830、仮想計算機833、仮想ネットワーク805、及び仮想通信装置810が実現される。他のサーバ851、852も同様の構成を有していてよい。
 図21はサーバ850の機能ブロック図の例である。仮想通信装置810と実施例1の通信装置100の違いは、NIFとして仮想NIF871及び仮想NIF872の仮想NIFを備える点、仮想NIF871が仮想ネットワーク機能869に接続される点である。仮想NIF871、872は、仮想通信装置機能865内のプログラムモジュールである。
 図21は、仮想NIF871が仮想ネットワーク機能869に接続される例を示す、仮想NIF871は、仮想計算機機能862~864に直接接続されてもよい。図21は、仮想NIF872がNIF260と直接接続される例を示すが、仮想ネットワーク機能869を経由して接続してもよい。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。 また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。

Claims (14)

  1.  ネットワークに接続される送信装置であって、
     前記ネットワークを介して受信装置にデータを送信する送信部と、
     前記受信装置から前記ネットワークを介して受信確認及び受信ウィンドウサイズの情報を含む確認応答データを受信する受信部と、
     前記送信部から送信されるデータに関する帯域を制御する送信帯域制御部と、
     前記送信されるデータのうち前記受信装置から確認応答を受信していないデータのデータサイズが、前記受信ウィンドウサイズから決まる上限値以下になるように、前記送信帯域制御部により制御されている帯域を抑制する、送信帯域抑制部と、
     前記データサイズと前記受信ウィンドウサイズとに基づいて前記送信帯域抑制部の有効/無効を切り替える、切替制御部と、を含む、送信装置。
  2.  請求項1に記載の送信装置であって、
     前記切替制御部は、前記データサイズが、前記上限値以下である閾値以上であるか否かに基づいて、前記送信帯域抑制部を有効から無効に切り替えるか否か判定する、送信装置。
  3.  請求項2に記載の送信装置であって、
     前記切替制御部は、前記データサイズが前記閾値以上である状態が所定時間継続しているか否かに基づいて、前記送信帯域抑制部を有効から無効に切り替えるか否か判定する、送信装置。
  4.  請求項1に記載の送信装置であって、
     前記切替制御部は、前記受信ウィンドウサイズの変化が閾値より小さいか否かに基づいて、前記送信帯域抑制部を有効から無効に切り替えるか否か判定する、送信装置。
  5.  請求項1に記載の送信装置であって、
     前記切替制御部は、前記送信部から送信されたデータの廃棄率の変化が閾値より小さいか否かに基づいて、前記送信帯域抑制部を有効から無効に切り替えるか否か判定する、送信装置。
  6.  請求項1に記載の送信装置であって、
     前記切替制御部は、前記送信部から送信されたデータの平均廃棄率が閾値より小さいか否かに基づいて、前記送信帯域抑制部を有効から無効に切り替えるか否か判定する、送信装置。
  7.  請求項2に記載の送信装置であって、
     前記切替制御部は、前記データサイズが前記閾値より小さいか否かに基づいて、前記送信帯域抑制部を無効から有効に切り替えるか否か判定する、送信装置。
  8.  請求項7に記載の送信装置であって、
     前記切替制御部は、前記データサイズが前記閾値より小さい状態が所定時間継続している場合に、前記送信帯域抑制部を無効から有効に切り替えるか否か判定する、送信装置。
  9.  請求項1に記載の送信装置であって、
     前記切替制御部は、前記受信ウィンドウサイズの変化が閾値以上である場合に、前記送信帯域抑制部を無効から有効に切り替える、送信装置。
  10.  請求項1に記載の送信装置であって、
     前記切替制御部は、前記送信部から送信されたデータの廃棄率の変化が閾値以上である場合に、前記送信帯域抑制部を無効から有効に切り替える、送信装置。
  11.  請求項1に記載の送信装置であって、
     前記切替制御部は、前記送信部から送信されたデータの平均廃棄率が閾値以上である場合に、前記送信帯域抑制部を無効から有効に切り替える、送信装置。
  12.  請求項1に記載の送信装置であって、
     前記送信帯域制御部は、前記送信部から送信されたデータの廃棄率から決定されるトークンに応じて前記帯域を制御する、送信装置。
  13.  ネットワークに接続される送信装置の制御方法であって、
     前記ネットワークを介して受信装置にデータを送信し、
     前記受信装置から前記ネットワークを介して受信確認及び受信ウィンドウサイズの情報を含む確認応答データを受信し、
     前記送信装置から送信されるデータに関する帯域を制御し、
     前記送信されるデータのうち前記受信装置から確認応答を受信していないデータのデータサイズが、前記受信ウィンドウサイズから決まる上限値以下になるように、前記制御されている帯域を抑制し、
     前記データサイズと前記受信ウィンドウサイズとに基づいて、前記帯域の抑制の有/無を切り替える、送信装置の制御方法。
  14.  インタフェースと、処理装置と、主記憶とを含む送信装置において、前記処理装置に前記送信装置の制御処理を実行させる命令、を格納する、非一時的計算機読み取り可能記憶媒体であって、前記命令は、
     前記インタフェースから受信装置にデータを送信し、
     前記インタフェースを介して、前記受信装置から受信確認及び受信ウィンドウサイズの情報を含む確認応答データを受信し、
     前記インタフェースから送信されるデータに関する帯域を制御し、
     前記送信されるデータのうち前記受信装置から確認応答を受信していないデータのデータサイズが、前記受信ウィンドウサイズから決まる上限値以下になるように、前記制御されている帯域を抑制し、
     前記データサイズと前記受信ウィンドウサイズとに基づいて、前記帯域の抑制の有/無を切り替える、処理を前記処理装置に実行させる、非一時的計算機読み取り可能記憶媒体。
PCT/JP2014/082690 2014-01-15 2014-12-10 通信装置 WO2015107806A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/106,183 US9882820B2 (en) 2014-01-15 2014-12-10 Communication apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-005330 2014-01-15
JP2014005330A JP6234236B2 (ja) 2014-01-15 2014-01-15 通信装置

Publications (1)

Publication Number Publication Date
WO2015107806A1 true WO2015107806A1 (ja) 2015-07-23

Family

ID=53542710

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/082690 WO2015107806A1 (ja) 2014-01-15 2014-12-10 通信装置

Country Status (3)

Country Link
US (1) US9882820B2 (ja)
JP (1) JP6234236B2 (ja)
WO (1) WO2015107806A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069727B2 (en) 2011-08-12 2015-06-30 Talari Networks Incorporated Adaptive private network with geographically redundant network control nodes
US10785117B2 (en) * 2009-06-11 2020-09-22 Talari Networks Incorporated Methods and apparatus for configuring a standby WAN link in an adaptive private network
JPWO2018138878A1 (ja) * 2017-01-27 2019-06-27 三菱電機株式会社 中継装置およびパケット転送方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005020524A1 (ja) * 2003-08-20 2005-03-03 Nec Corporation セッション中継装置及び中継方法
JP2009224834A (ja) * 2008-03-13 2009-10-01 Nec Commun Syst Ltd 通信装置、通信システム、ウィンドウサイズ調整方法およびプログラム
JP2012095190A (ja) * 2010-10-28 2012-05-17 Sony Corp 通信装置、通信システム、プログラム及び通信方法
WO2013125096A1 (ja) * 2012-02-24 2013-08-29 株式会社日立製作所 通信装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09247209A (ja) * 1996-03-12 1997-09-19 Chokosoku Network Computer Gijutsu Kenkyusho:Kk 資源予約チャネル用トランスポートレイヤプロトコルのフロー制御方式
US7564792B2 (en) * 2003-11-05 2009-07-21 Juniper Networks, Inc. Transparent optimization for transmission control protocol flow control
US7760633B2 (en) * 2005-11-30 2010-07-20 Cisco Technology, Inc. Transmission control protocol (TCP) congestion control using transmission delay components
JP2007243447A (ja) * 2006-03-07 2007-09-20 Nippon Telegr & Teleph Corp <Ntt> パケット送信制御装置
US8125904B2 (en) * 2006-05-30 2012-02-28 Broadcom Corporation Method and system for adaptive queue and buffer control based on monitoring and active congestion avoidance in a packet network switch
TW200816719A (en) * 2006-08-23 2008-04-01 Matsushita Electric Ind Co Ltd Communication equipment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005020524A1 (ja) * 2003-08-20 2005-03-03 Nec Corporation セッション中継装置及び中継方法
JP2009224834A (ja) * 2008-03-13 2009-10-01 Nec Commun Syst Ltd 通信装置、通信システム、ウィンドウサイズ調整方法およびプログラム
JP2012095190A (ja) * 2010-10-28 2012-05-17 Sony Corp 通信装置、通信システム、プログラム及び通信方法
WO2013125096A1 (ja) * 2012-02-24 2013-08-29 株式会社日立製作所 通信装置

Also Published As

Publication number Publication date
JP2015133669A (ja) 2015-07-23
US20170041240A1 (en) 2017-02-09
US9882820B2 (en) 2018-01-30
JP6234236B2 (ja) 2017-11-22

Similar Documents

Publication Publication Date Title
CN110661723B (zh) 一种数据传输方法、计算设备、网络设备及数据传输系统
CN108881056B (zh) 一种拥塞控制方法、网络设备及其网络接口控制器
JP5651805B2 (ja) 通信装置
CN109218222B (zh) 一种实现发送端调速的方法、装置和系统
EP3763094A1 (en) Flow management in networks
US11258717B2 (en) Method for sending service packet, network device, and system
JP5832335B2 (ja) 通信装置および通信システム
WO2015107806A1 (ja) 通信装置
US20160149817A1 (en) Analysis device
JP2008118281A (ja) 通信装置
US20160277943A1 (en) Network system, control method of network system, communication device, and program
CN113595920B (zh) 网络拥塞控制方法及设备
JPWO2019244966A1 (ja) 通信装置、通信方法及びプログラム
CN115396372B (zh) 数据流的速率控制方法、智能网卡、云端设备及存储介质
US11805071B2 (en) Congestion control processing method, packet forwarding apparatus, and packet receiving apparatus
JP2016019156A (ja) 通信装置およびその制御方法
JP6279970B2 (ja) プロセッサ、通信装置、通信システム、通信方法およびコンピュータプログラム
US20240171504A1 (en) Multi-path architecture for hardware offloading
JP6568571B2 (ja) データ転送装置、データ転送方法および通信装置
TWI649991B (zh) 資料通信裝置、資料通信控制方法及程式
JP2011254296A (ja) 情報処理装置および情報処理方法
JP2015204466A (ja) データ転送装置、データ転送方法および通信装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14879125

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15106183

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14879125

Country of ref document: EP

Kind code of ref document: A1