WO2011151884A1 - 通信装置及び通信方法 - Google Patents

通信装置及び通信方法 Download PDF

Info

Publication number
WO2011151884A1
WO2011151884A1 PCT/JP2010/059221 JP2010059221W WO2011151884A1 WO 2011151884 A1 WO2011151884 A1 WO 2011151884A1 JP 2010059221 W JP2010059221 W JP 2010059221W WO 2011151884 A1 WO2011151884 A1 WO 2011151884A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
bandwidth
communication
band
unit
Prior art date
Application number
PCT/JP2010/059221
Other languages
English (en)
French (fr)
Inventor
明 陣▲崎▼
Original Assignee
株式会社Jin-Magic
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
Priority to CN201080033922.2A priority Critical patent/CN102474463B/zh
Application filed by 株式会社Jin-Magic filed Critical 株式会社Jin-Magic
Priority to US13/700,070 priority patent/US8761010B2/en
Priority to CA2800669A priority patent/CA2800669C/en
Priority to JP2011543749A priority patent/JP5059976B2/ja
Priority to PCT/JP2010/059221 priority patent/WO2011151884A1/ja
Priority to EP10852492.7A priority patent/EP2579516B1/en
Priority to KR1020127002778A priority patent/KR101746629B1/ko
Priority to SG2012087029A priority patent/SG185769A1/en
Priority to BR112012030524A priority patent/BR112012030524A2/pt
Priority to TW100118429A priority patent/TWI530123B/zh
Publication of WO2011151884A1 publication Critical patent/WO2011151884A1/ja
Priority to HK12111868.2A priority patent/HK1171134A1/xx
Priority to IL223255A priority patent/IL223255A/en

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/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
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5691Access to open networks; Ingress point selection, e.g. ISP selection
    • H04L12/5692Selection among different networks
    • 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/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • H04L12/2856Access arrangements, e.g. Internet access
    • H04L12/2869Operational details of access network equipments
    • 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/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5629Admission control

Definitions

  • the present invention relates to a technique for controlling a communication band in communication performed via a network between a transmission device and a reception device.
  • IP Internet Protocol
  • IP Internet Protocol
  • TCP Transmission Control Protocol
  • Reliable communication refers to communication in which transmission data is transferred without excess or deficiency in the order of transmission.
  • TCP currently occupies a large part of traffic, but its performance is unstable and varies. In order to stably supply video distribution services such as moving images, it is necessary to stabilize the TCP performance.
  • TCP bandwidth control technology is one of known technologies related to TCP performance.
  • TCP bandwidth control technology limits traffic to a predetermined amount or less, and basically assigns priorities according to the type of traffic, and avoids network congestion by discarding low priority traffic. It is.
  • TCP has a function of adjusting the data transmission rate by flow control during congestion. This function operates when there is congestion, and tries to improve performance as long as transmission data reaches the receiving terminal device without being discarded. That is, although the performance can be improved according to the communication state, it is not possible to perform control such that the performance is suppressed to an appropriate range.
  • the communication performance required for a certain communication includes a performance A determined by an application or a system administrator. Then, there is a performance B that is dynamically determined by the actual communication situation with this performance A as a target. Considering the trend of traffic increase in recent years, for example, when the actual communication situation is good and the performance B exceeds the performance A, the performance B is lowered and the performance B needs to be raised. It is necessary to control the bandwidth so as to increase B.
  • the present invention has an object to provide a technique capable of performing band adjustment so that necessary performance can be obtained in consideration of the balance between band adjustment and high speed.
  • the disclosed communication device is a communication device that controls a communication band when the transmission device and the reception device perform communication via a network, from the transmission device to the reception device, And a measuring unit that measures a band for communication in at least one of the two directions of communication from the receiving device to the transmitting device, and a storage unit that stores information relating to band adjustment including a target band indicating a band necessary for communication And reading the target band in the direction in which the band is measured from the storage unit, and adjusting the packet transmission interval based on the comparison between the band measured by the measurement unit and the read target band, thereby suppressing the band or It is set as the structure provided with the adjustment part which performs promotion.
  • communication is stabilized and packet retransmission can be effectively suppressed.
  • FIG. 1 is an overall view showing a communication system having a bandwidth adjustment apparatus according to the present embodiment. It is a block diagram of the band adjustment apparatus which concerns on this embodiment. It is a block diagram of a band adjustment relay unit. It is a figure explaining the method by which the band adjustment relay part of the band adjustment apparatus which concerns on this embodiment measures the band of a data packet. It is a figure explaining the method the band adjustment relay part of the band adjustment apparatus which concerns on this embodiment measures the band of an ACK packet. It is a figure explaining the zone
  • FIG. 1 is an overall view showing a communication system having a bandwidth adjusting apparatus according to the present embodiment.
  • two terminal devices 2A and a terminal device (hereinafter referred to as a terminal) 4B are connected to each other via a network 10, and for example, video distribution (moving image distribution) using TCP communication or the like.
  • Communicate Examples of the network 10 include, for example, wired access networks such as ADSL (Asymmetric Digital Subscriber Line) and FTTx (Fiber To The x), and wireless such as HSPA (High Speed Packet Access) and WiMAX (Worldwide Interoperability for Microwave Access).
  • the terminals 2A and 4B are, for example, home or small office network devices connected to the network 10, personal computers, portable terminals, network connection adapters, and the like.
  • Each terminal 2A, 4B has a bandwidth adjustment device 1A, 1B, respectively, and the bandwidth adjustment devices 1A, 1B adjust the bandwidth of the packet transmitted / received by the device to an appropriate value according to the communication.
  • the bandwidth adjustment devices 1A, 1B adjust the bandwidth of the packet transmitted / received by the device to an appropriate value according to the communication.
  • Bandwidth adjustment apparatuses 1A and 1B can be arranged at any location as long as they can observe TCP / IP packets.
  • FIG. 1A shows a configuration in which band adjusting devices 1A and 1B are provided in a transmission terminal and a reception terminal.
  • FIG. 1B is a system configuration diagram when the bandwidth adjusting apparatus 1 according to the present embodiment is incorporated in an apparatus other than the terminal.
  • the bandwidth adjustment device 1C is incorporated in the relay device 3, and adjusts the bandwidth of packets transmitted and received between the terminal 2A and the terminal 4B to an appropriate value according to communication. To do.
  • the relay device 3 refers to a network device that recognizes TCP partially or completely and provides a function related to TCP.
  • a proxy server for example, a proxy server, a load balancer, a traffic shaper, A WAN (Wide Area Network) optimization device and the like are also included in the relay device.
  • WAN Wide Area Network
  • FIGS. 1A and 1B in order to explain the installation position of the bandwidth adjusting apparatus 1 according to the present embodiment, the configuration of the communication system is simplified and the bandwidth terminals 2A and 4B and the relay device are simplified. Only 3 are shown.
  • the bandwidth adjustment apparatus 1 is mounted on the relay apparatus 3 arranged on the network 10 between the transmission terminal 2A and the reception terminal 4B, that is, the configuration of FIG.
  • a method for adjusting the communication band between the transmission terminal 2A and the reception terminal 4B by the band adjustment device 1 will be specifically described.
  • FIG. 2 is a configuration diagram of the bandwidth adjustment device 1 according to the present embodiment.
  • the band adjustment apparatus 1 shown in FIG. 2 includes two band adjustment relay units 11 and 12 and a session table 13.
  • the band adjustment relay units 11 and 12 receive packets from “other modules 30 and 32”, respectively. Receive and pass the packet to “other modules 31, 33”.
  • “Other modules 30 to 33” shown in FIG. 2 are network device drivers and other protocol stacks provided in the relay apparatus 3, and each process a packet including a TCP / IP packet.
  • the bandwidth adjustment relay units 11 and 12 of the bandwidth adjustment device 1 exchange packets with the other modules 30 to 33.
  • the bandwidth adjustment relay units 11 and 12 perform bandwidth adjustment for communication in the direction from the transmission terminal 2A to the reception terminal 4B and from the reception terminal 4B to the transmission terminal 2A, respectively. .
  • the communication directions are described as “A ⁇ B direction” and “B ⁇ A direction”.
  • the session table 13 stores information necessary for the bandwidth adjustment relay units 11 and 12 to perform bandwidth adjustment. Details of the session table 13 will be described later with reference to FIGS. 29 and 30.
  • the bandwidth adjustment device 1 When packets in both directions from the transmission terminal 2A to the reception terminal 4B and from the reception terminal 4B to the transmission terminal 2A pass through the bandwidth adjustment device 1, the bandwidth adjustment device 1 performs bandwidth adjustment for communication in both directions. When only a packet in one direction passes through the bandwidth adjustment device 1, the bandwidth adjustment device 1 performs bandwidth adjustment in the bandwidth adjustment relay portion of the bandwidth adjustment relay portions 11 and 12 through which the packet passes. The necessary information is stored in the session table 13. The other bandwidth adjustment relay unit can also perform bandwidth adjustment with reference to the session table 13.
  • FIG. 3 is a configuration diagram of the bandwidth adjustment relay unit.
  • the band adjustment relay unit 11 illustrated in FIG. 3 includes a packet determination unit 21, a session management unit 22, a reception band measurement unit 23, a band adjustment unit 24, and a transmission band measurement unit 25.
  • FIG. 3 shows only the configuration of the band adjustment relay unit 11 in the A ⁇ B direction, the configuration of the band adjustment relay unit 12 in the B ⁇ A direction is the same as that of the band adjustment relay unit 11 shown in FIG.
  • the bandwidth adjustment relay units 11 and 12 share the session table 13 and the buffer unit 14 in the same manner as the configuration.
  • the packet discriminating unit 21 discriminates whether or not the packet received from the other module 30 is a packet subjected to bandwidth adjustment. Specifically, it is determined whether or not the packet is a TCP packet.
  • the session management unit 22 manages the TCP session when the packet determination unit 21 determines that the packet is a bandwidth adjustment target.
  • the session management unit 22 stores information necessary for managing the TCP session in the session table 13, and executes processing such as extracting necessary information from the session table 13.
  • the reception band measurement unit 23 measures the reception band of the packet that is managed by the session management unit 22.
  • the reception band measurement unit 23 stores the measured reception band in the session table 13 and stores the received packet in the buffer unit 14 when necessary.
  • the bandwidth adjustment unit 24 adjusts the bandwidth based on information such as the measurement bandwidth stored in the session table 13. Specifically, the bandwidth adjustment is performed by increasing or decreasing the packet transmission interval according to the magnitude relationship between the target bandwidth indicating the bandwidth required for communication and the actually measured bandwidth. A method for adjusting the packet transmission interval will be described in detail later with reference to the drawings.
  • the transmission bandwidth measurement unit 25 measures the bandwidth of a packet transferred to another module 31 according to an instruction from the bandwidth adjustment unit 24 or a packet transferred from the packet determination unit 21 to the other module 31. The result is stored in the session table 13.
  • the notations of “reception” and “transmission” are used in the description of the reception band measurement unit 23 and the transmission band measurement unit 25 in FIG. Is mainly composed of the bandwidth adjustment device 1. That is, the reception bandwidth measuring unit 23 processes a packet “received” by the bandwidth adjustment device 1 from another module 30, and the transmission bandwidth measurement unit 25 is a packet that the bandwidth adjustment device 1 “transmits” to the other module 31. This is written in this way.
  • the band adjusting unit 24 transmits / receives information related to the band adjustment to / from the band adjusting unit of the band adjusting relay unit 12 in the opposite direction. As described above, the information stored in the session table 13 by the other bandwidth adjustment relay unit or the other even if the bandwidth adjustment relay unit does not send and receive TCP packets and does not perform bandwidth measurement, The bandwidth adjustment is performed based on the control information received from the bandwidth adjustment section.
  • the bandwidth adjustment device 1 monitors the TCP communication and performs bandwidth adjustment.
  • many common server applications such as Apache HTTP Server, Lighttpd, Squid cache, and BitTorrent have a function (Bandwidth Throttling) for adjusting the transmission bandwidth for each TCP communication.
  • BitTorrent has a function (Bandwidth Throttling) for adjusting the transmission bandwidth for each TCP communication.
  • BitTorrent BitTorrent
  • such a known application bandwidth adjustment technique cannot be expected to perform bandwidth adjustment with high accuracy.
  • bandwidth adjustment is performed by the application, the situation from the TCP layer to the network layer cannot be accurately grasped, and the application cannot recognize the difference between the communication performance expected by the application and the actual communication performance, The bandwidth cannot be adjusted according to the communication. For example, even for data to be subjected to bandwidth adjustment, it is impossible to recognize in real time how much data is actually transmitted / received / retransmitted. For this reason, the application only adjusts the bandwidth so as to achieve “communication performance that is logically required for communication”, and cannot adjust the bandwidth according to the substance.
  • the bandwidth adjustment apparatus 1 can monitor actual TCP communication and perform bandwidth adjustment according to this. Compared with the bandwidth adjustment by the application, more accurate bandwidth adjustment is possible.
  • the transmitting terminal 2A and the receiving terminal 4B transmit a data packet and an ACK packet to the other terminal, respectively.
  • the bandwidth adjustment relay units 11 and 12 monitor communications in the A ⁇ B direction and the B ⁇ A direction, respectively. For this reason, the bandwidth adjustment apparatus 1 provided on the communication path not only transfers the data packet and the ACK packet, but also transfers either the data packet or the ACK packet. Adjustments can be made.
  • bandwidth adjustment relay unit 11 of the bandwidth adjustment device 1. Only monitor data packets and make bandwidth adjustments.
  • FIG. 4 is a diagram illustrating a method in which the bandwidth adjustment relay unit 11 of the bandwidth adjustment device 1 according to the present embodiment measures the bandwidth of the data packet.
  • FIG. 5 is a diagram illustrating the bandwidth adjustment relay unit 12 of the bandwidth adjustment device 1. It is a figure explaining the method to measure the zone
  • the upper part of FIG. 4 and FIG. 5 shows the flow of the data packet DP, and the lower part shows the flow of the ACK packet AP.
  • the bandwidth adjustment device 1 is incorporated in the relay device 3, and the same applies to the following description.
  • the relay device 3 as a network device will be described as an example, but the present invention is not limited to this.
  • a part that delivers TCP / IP inside the operating system can perform the same function, and various processes described below can be incorporated as software and hardware.
  • the reception bandwidth measuring unit 23 in the bandwidth adjustment device 1 of the relay device 3 receives the data packet DP that the transmission terminal 2A transmits to the reception terminal 4B, and the ACK that the reception terminal 4B that has received the data packet DP returns to the transmission terminal 2A.
  • the packet AP is monitored and the communication band is measured.
  • the sequence number (SEQ in FIG. 4) included in the data packet and the data length of the packet are observed, and the integrated value of the data length is obtained.
  • the transmission band at the installation position of the relay device 3 in the communication system is measured.
  • the relay device 3 When the communication band is measured by the ACK packet, as shown in FIG. 5, by measuring the increment of ACK based on the ACK number (ACK in FIG. 5) included in the ACK packet, the relay device 3 in the communication system. Measure the reception band at the installation position.
  • the ACK packet has a smaller data length than the data packet, and unlike the data packet, the data length does not vary greatly from packet to packet. For this reason, the reception band is measured by observing only the ACK number and integrating the increments of ACK packets relayed by the relay device 3 within a predetermined period.
  • the bandwidth adjustment unit 24 of the bandwidth adjustment device 1 uses the communication band measured by the method shown in FIGS. 4 and 5, the bandwidth adjustment unit 24 of the bandwidth adjustment device 1 adjusts the time interval for sending packets (data packet DP and ACK packet AP) from the relay device 3. By doing so, the bandwidth is adjusted. As described in the description of FIG. 3, the bandwidth adjusting unit 24 performs a process of increasing a packet transmission time interval (increasing the time interval) or a packet transmission time interval according to the measured communication bandwidth (time). Decide which of the processes (to shorten the interval) should be executed.
  • bandwidth suppression performing bandwidth adjustment to increase the packet transmission time interval
  • bandwidth promotion performing bandwidth adjustment to shorten the packet transmission time interval
  • FIG. 6 is a diagram for explaining a bandwidth suppression method in the data packet transmission direction
  • FIG. 7 is a diagram for explaining a bandwidth suppression method in the ACK packet transmission direction.
  • the bandwidth adjustment unit 24 in the bandwidth adjustment device 1 of the relay device 3 controls the communication to control the bandwidth when the communication bandwidth measured by the reception bandwidth measurement unit 23 exceeds the target bandwidth indicating the bandwidth necessary for communication. Suppress.
  • the bandwidth suppression method includes a method for controlling the transmission interval of data packets and a method for controlling the transmission interval of ACK packets.
  • the bandwidth adjustment unit 24 of the bandwidth adjustment device 1 performs control to suppress the bandwidth of the data packet transmitted by the transmission terminal 2A.
  • the data packet transfer interval is controlled so that the increment per unit time of the sequence number is suppressed within a predetermined range with respect to the target bandwidth.
  • the bandwidth adjustment unit 24 controls the bandwidth of the ACK packet transmitted by the receiving terminal 4B to control the transmission interval of the ACK packet. Specifically, the ACK packet transfer interval is controlled so that the increment per unit time of the ACK number is within a predetermined range with respect to the target band.
  • the transmission terminal 2A transmits data packets corresponding to the window size as burst traffic at the beginning of TCP communication, but for subsequent data packet transmission, the transmission terminal 2A responds to the reception band of the ACK packet. A data packet addressed to the receiving terminal 4B is transmitted in the band. For this reason, by controlling the transmission interval of the ACK packet as described above, the transmission terminal 2A transmits the data packet according to the increment of the received ACK packet, and thereby the bandwidth in the data packet transmission direction. Can be adjusted.
  • FIG. 8 is a diagram for explaining a bandwidth promotion method for the data packet transmission direction
  • FIG. 9 is a diagram for explaining a bandwidth promotion method for the ACK packet transmission direction.
  • the bandwidth adjustment unit 24 in the bandwidth adjustment device 1 of the relay device 3 performs control so as to promote the bandwidth when the communication bandwidth measured by the reception bandwidth measurement unit 23 is lower than the target bandwidth. Similar to the bandwidth suppression method described above, the bandwidth promotion method includes a method for controlling the transmission interval of data packets and a method for controlling the transmission interval of ACK packets.
  • the bandwidth adjustment unit 24 of the bandwidth adjustment device 1 buffers the data packet received from the transmission terminal 2A in the buffer unit 14 and controls the data packet transmission interval.
  • the stored data packet is transmitted to the receiving terminal 4B at least once.
  • the retransmission of the buffered data packet may be performed a plurality of times depending on the target bandwidth.
  • transmitting the data packet buffered by the bandwidth adjustment device 1 to the receiving terminal 4B is referred to as “proxy retransmission of data packet”.
  • the bandwidth adjustment device 1 in contrast to the transmission terminal 2A retransmitting a data packet by the TCP retransmission function, the bandwidth adjustment device 1 retransmits the data packet in this way.
  • the receiving terminal 4B that has received the proxy retransmitted data packet refers to the sequence number included in the data packet and, when recognizing it as an unreceived data packet, returns a ACK packet for the proxy retransmitted data packet.
  • the ACK packet for the data packet discarded between the relay device 3 and the receiving terminal 4B is returned from the receiving terminal 2A by the bandwidth promotion process, that is, the proxy retransmission of the data packet.
  • the ACK packet does not reach the transmission terminal 2A sufficiently, so the data from the transmission terminal 2A The packet transmission may be delayed.
  • the transmitting terminal 2A when the transmitting terminal 2A receives the ACK packet for the proxy retransmitted data packet, the transmitting terminal 2A transmits the data packet to be transmitted next. Therefore, the transmitting terminal 2A prompts the transmitting terminal 2A to transmit the data packet. It will be.
  • the receiving terminal 4B discards the proxy retransmitted data packet, so that the proxy retransmission process adversely affects TCP communication. There is nothing.
  • the transmission band is increased by transmitting a proxy ACK packet from the relay device in order to prompt the transmitting terminal to transmit the data packet of the next sequence number.
  • This is a TCP relay technology known as “Splitting TCP” or “TCP Spoofing”.
  • the relay device once completes TCP communication from the transmitting terminal and performs new TCP communication to the receiving terminal.
  • the bandwidth adjustment device 1 even when the data packet is proxy retransmitted, the transmission terminal 2A does not discard the proxy retransmitted data packet, and the relay device 3 Even if it is removed from the network, it has the advantage that no data is lost.
  • the bandwidth adjustment unit 24 of the bandwidth adjustment device 1 buffers the ACK packet in the buffer unit 14 and performs buffering according to the target bandwidth.
  • the transmitted ACK packet is transmitted to the transmitting terminal 2A.
  • the retransmission of the buffered ACK packet may be performed a plurality of times depending on the target bandwidth.
  • transmitting the ACK packet buffered by the bandwidth adjustment device 1 to the transmission terminal 2A is referred to as “proxy packet retransmission”. In the following description, it is expressed in this way that the bandwidth adjustment device 1 retransmits the ACK packet while the receiving terminal 4B retransmits the ACK packet.
  • the transmitting terminal 2A that has received the proxy-transmitted ACK packet may transmit a data packet corresponding to the ACK packet.
  • the transmitting terminal 2A by performing proxy retransmission of the ACK packet when the measurement band is lower than the target band, the transmission of the data packet by the transmitting terminal 2A is promoted, and the effect of promoting the delayed communication can be obtained.
  • “Fast Recovery” is one of TCP congestion control technologies. According to this technique, when the transmitting terminal 2A receives three identical ACK packets in succession, the transmitting terminal 2A determines that the packet discard is temporary, and sets the congestion window size. Retransmit the data packet without reducing it. According to the above proxy resending process of the ACK packet, the function of resending the data packet by “FastyRecovery” is promoted, thereby obtaining the effect of increasing the bandwidth of the transmitting terminal 2A.
  • the transmission terminal 2A processes the ACK packet received in duplicate as in the prior art, so that the proxy retransmission of the ACK packet is TCP There is no negative impact on communication.
  • the bandwidth adjustment device 1 (including the relay device 3) retransmits the packet on behalf of the transmission terminal 2A and the reception terminal 4B.
  • the proxy resending by the bandwidth adjustment device 1 is executed earlier than the packet resending by the TCP resending function. Therefore, when the packet is discarded on the route and the communication is hindered, this proxy is performed. By retransmission, it becomes possible to return to the normal communication state more quickly.
  • the bandwidth adjustment apparatus 1 monitors packets transmitted and received between the transmission terminal 2A and the reception terminal 4B, and performs bandwidth adjustment for suppressing or promoting the bandwidth. The method will be described with reference to a flowchart.
  • FIG. 10 is a flowchart showing the received packet discrimination process by the packet discriminator 21 of FIG.
  • the bandwidth adjustment apparatus 1 starts the process shown in FIG. 10 when receiving a packet from the other modules 30 and 32.
  • step S1 it is determined whether or not the received packet is a TCP packet. If the packet is a TCP packet (Yes in step S1), the packet is received by the session management unit 22 in FIG. 3 in step S2. The passed packet is handed over and the process is terminated. If it is determined in step S1 that the received packet is not a TCP packet (in the case of no in step S1), the process proceeds to step S3, and the bandwidth adjustment device 1 relays the packet without performing any particular processing. The process ends.
  • step S1 the packet is determined by referring to a predetermined field of the IP header.
  • a predetermined field of the IP header For example, in IPv4, the value of the protocol field is referred to, and in IPv6, the value of the next header (Next ⁇ Header) field is referenced to determine whether the packet is a TCP packet. Since the format of the IP header is a known technique, a detailed description thereof is omitted.
  • step S1 the IP address or port number included in the IP header or TCP header is referred to, and if the IP address or port number belongs to a predetermined range, the process proceeds to step S2 to be a target packet for bandwidth adjustment. Etc. are possible. By determining an IP address or port number within a predetermined range as an object of bandwidth adjustment, it is possible to actively perform bandwidth adjustment for communication between specific terminals.
  • the present invention is generally applicable to a communication protocol in which a value that can be used as an index for identifying a session and a value indicating the order of packets in the session are stored in the packet.
  • Examples of such communication protocols include IPsec (Security Architecture for Internet Protocol) ESP (Encapsulating Security Payload), RTP (Real-time Transport Protocol), and the like.
  • FIG. 11 is a flowchart showing the band measurement process by the reception band measurement unit 23.
  • the packet subjected to bandwidth adjustment by the packet discrimination process of FIG. 10 is passed to the session management unit 22 of FIG.
  • the session management unit 22 registers necessary information in the session table 13
  • the session management unit 22 passes the packet to the reception band measurement unit 23.
  • the reception bandwidth measurement unit 23 of the bandwidth adjustment device 1 starts the process illustrated in FIG. 11.
  • step S11 it is determined whether or not the packet is a data packet. If the packet received from the session management unit 22 is a data packet (Yes in step S11), the process proceeds to step S12, regardless of whether the sequence number of the data packet overlaps with a packet received in the past. The amount of data relayed per unit time is updated, and the process proceeds to step S15. When the packet received from the session management unit 22 is an ACK packet (in the case of no in step S11), the process proceeds from step S11 to step S13.
  • step S13 it is determined whether or not the ACK number of the received packet is the maximum ACK number.
  • the maximum ACK number means the maximum ACK number included in the ACK packet received by the bandwidth adjustment device 1.
  • the determination in step S13 is held in the session table 13. This is done by comparing the maximum ACK number being received with the ACK number of the received packet. If the ACK number of the received packet is the maximum (in the case of yes in step S13), the process proceeds to step S14, and after updating the ACK amount per unit time, the process proceeds to step S15. If the ACK number of the received packet is not the maximum (in the case of no in step S13), it is determined that the ACK packet with the ACK number has been relayed, and no processing is performed, and the process proceeds to step S15.
  • step S15 it is determined whether or not the unit measurement time has elapsed. If the unit measurement time has not yet elapsed (in the case of no in step S15), the process is terminated without performing any particular process.
  • the unit measurement time refers to a predetermined time for measuring the data amount of the data packet and the ACK amount of the ACK packet, and a value is stored in the session table 13. Details will be described with reference to FIG.
  • step S15 If it is determined in step S15 that the unit measurement time has elapsed (in the case of yes in step S15), the maximum value and the minimum value of the data amount / ACK amount per unit time are updated in step S16. At the same time, the values of the data amount and the ACK amount per unit time updated in step S12 and step S14 are cleared, and the process ends.
  • the band adjustment unit 24 executes the band adjustment process based on the comparison between the target band and the measurement band obtained by the band measurement process shown in FIG.
  • the timing at which the bandwidth adjustment device 1 receives a relay packet and the timing of periodic interrupt processing are cited.
  • bandwidth adjustment is performed at the timing of periodic interrupt processing, and the bandwidth adjustment processing in this case will be described with reference to FIG.
  • FIG. 12 is a flowchart showing the band adjustment process interruption process by the band adjustment unit 24. As described above, in the embodiment, the bandwidth adjustment device 1 periodically starts the process illustrated in FIG. 12 at predetermined time intervals.
  • step S21 it is determined whether or not a unit time of an interrupt cycle for executing interrupt processing has elapsed. If the interrupt processing cycle has not yet elapsed (in the case of no in step S21), the processing is terminated without performing any particular processing.
  • step S21 if the period of the interrupt process has elapsed (in the case of yes in step S21), the process proceeds to step S22, and if it is determined that it is necessary, the process of adjusting the target band is executed. . Details of the bandwidth adjustment processing and the processing for adjusting the target bandwidth will be described later. In addition, when necessary when executing the bandwidth adjustment processing, the packet buffered in the buffer unit 14 is used. The buffering process will be described later. When the bandwidth adjustment process is executed, the process ends.
  • FIG. 13 is a flowchart showing the bandwidth adjustment processing by the bandwidth adjustment unit 24. As described above, the processing shown in FIG. 13 is started when triggered by periodic interrupt processing or reception of a relay packet.
  • step S31 it is determined whether or not the unit adjustment time has elapsed.
  • the “unit adjustment time” refers to the time for measuring the data transfer amount of the relay device 3. If the unit adjustment time has not yet elapsed (in the case of no in step S31), the process proceeds to step S32, and if the held unit transfer amount is cleared, the process proceeds to step S33. When the unit adjustment time has already passed (in the case of yes in step S31), the process proceeds to step S33 without performing any particular process.
  • step S33 it is determined whether or not the data packet is buffered in the buffer unit 14 of FIG. If the data packet is buffered in the buffer unit 14 (Yes in step S33), the process proceeds to step S34, and the band for the data packet is compared with the target band. Specifically, it is determined whether the unit transfer amount of the data packet is less than the target transfer amount read from the session table 13.
  • the “unit transfer amount of packet” is the amount of data transferred by the band adjustment device 1 within the unit adjustment time measured by the reception band measurement unit 23 and measured in the band measurement process of FIG. The amount of data transferred in the direction.
  • step S33 if the data packet is not buffered in the buffer unit 14 (in the case of no in step S33), the process proceeds to step S36.
  • step S34 If the unit transfer amount of the data packet is less than the target transfer amount in step S34 (in the case of no / suppression in step S34), the bandwidth is suppressed and the process proceeds to step S36.
  • the data packet transmission interval is controlled so that the unit transfer amount of the data packet is within a predetermined range with respect to the target transfer amount.
  • step S34 If it is determined in step S34 that the unit transfer amount of the data packet exceeds the target transfer amount (in the case of yes / promotion in step S34), the process proceeds to step S35 to promote the bandwidth. As described above, in the bandwidth promotion process, the data packet buffered in the buffer unit 14 is transferred according to the target transfer amount.
  • Step S36 When the bandwidth control process for the transmission direction is executed, the bandwidth control process for the reception direction after step S36 is performed.
  • Step S36 to Step S38 when the ACK packet is buffered in the buffer unit 14, the bandwidth is suppressed or promoted according to the magnitude relationship between the unit transfer amount of the ACK packet and the target transfer amount. This process corresponds to the process for the data packet in steps S33 to S35.
  • the interrupt cycle in step S21 in FIG. 12 is set to a time shorter than the unit adjustment time in step S31 in FIG. This is because by setting the interrupt cycle to be shorter than the unit adjustment time, a blank period during which no bandwidth adjustment processing is performed is not created.
  • the bandwidth adjustment device 1 when the bandwidth is determined by monitoring the transfer amount of TCP packets passing through the bandwidth adjustment device 1 and exceeding the target bandwidth necessary for communication, Controls packet transmission and suppresses bandwidth.
  • the buffered packet is retransmitted (proxy retransmission) instead of the transmitting terminal 2A and the receiving terminal 4B to promote the bandwidth.
  • burst traffic that is, traffic with a high peak temporarily occurs.
  • the reason for the occurrence of burst traffic is that, for example, after the session starts, transfer is started with an initial value and burst traffic is transmitted “for the time being”.
  • the network on the user side is often connected to the network on the server side by a low-speed access network.
  • the server transmits burst traffic under such a configuration, there is a high possibility that the user side cannot receive burst traffic. Burst traffic that cannot be received on the user side is highly likely to be discarded at the connection point of the access network on the user side.
  • an application program transmits data
  • a TCP or IP protocol stack processes using an operating system mechanism
  • a network driver transmits data.
  • application programs and operating systems operate by time-sharing scheduling. For this reason, every time transmission data passes through various programs, scheduling is performed, and processing is performed in bursts. In a heavily loaded server, the burstiness of this processing tends to be large, which may lead to burst traffic.
  • Burst traffic can cause congestion in the network path.
  • a router or the like that aggregates many TCP sessions always has a risk of congestion.
  • the band is suppressed when the actual band exceeds the target band. Thereby, burst traffic can be effectively suppressed.
  • the bandwidth adjustment device 1 measures the bandwidth of the packet that passes through the device itself, and controls the packet that passes through the device itself. Unlike the conventional TFRC (TCP-Friendly Rate Control) or the like, there is no need for the receiving terminal 4B to notify the packet discard information or for the sending terminal 2A to measure the delay for each packet. Further, if the bandwidth adjustment device 1 is arranged on the path, the bandwidth adjustment processing described above can be performed. Therefore, the transmission terminal 2A and the reception terminal 4B are not necessarily provided with the bandwidth adjustment device 1. Nor.
  • the bandwidth adjustment method it is determined that bandwidth adjustment is necessary for communication where the measurement bandwidth exceeds or falls below the target bandwidth, and the bandwidth is suppressed and promoted. For communications that do not require bandwidth adjustment, only packets are transferred. Since the bandwidth adjustment is performed by such a method, even if the communication requiring the bandwidth adjustment competes with the communication not requiring the bandwidth adjustment in the relay device 3, the speed of the communication not requiring the bandwidth adjustment is adversely affected. There is nothing. [Buffering] As described in the above description of the bandwidth adjustment processing, the bandwidth adjustment device 1 according to the present embodiment suppresses or promotes bandwidth by buffering packets in the buffer unit 14. Next, a method for using buffered packets will be described.
  • FIG. 14 is a diagram for explaining a method of buffering data packets.
  • the bandwidth adjustment device 1 provided in the relay device 3 buffers the data packet in the buffer unit 14 of FIG. Then, processing such as copying the data packet buffered in the buffer unit 14 and transmitting the copied data packet to the receiving terminal 4B is executed.
  • the bandwidth adjustment device 1 monitors the vacancy of the buffer unit 14 and recognizes that the memory of the bandwidth adjustment device 1 or the relay device 3 is depleted, the data packet may be discarded without being buffered. This is because even if the discarded data packet does not reach the reception terminal 4B, the transmission terminal 2A will retransmit the data packet by the TCP function, so that there is no communication problem.
  • the same buffering is performed for ACK packets. Similar to data packet buffering, even if the ACK packet is discarded when the capacity of the memory is exceeded, the receiving terminal 4B retransmits the ACK packet by the TCP function, so that no communication problem occurs.
  • the bandwidth adjusting device 1 may be configured to execute the following processing using a packet buffering function to the buffer unit 14.
  • the order of arrival at the receiving terminal 4B may be changed depending on the network route. Even in such a case, by arranging the packets in the order of the sequence number or the ACK number, the order can be corrected in the network device (the relay device 3 in the embodiment) including the bandwidth adjusting device 1.
  • the sequence number and ACK number of the received packet can be compared with that of the packet already buffered in the buffer unit 14, and the duplicated packet can be discarded without buffering.
  • a terminal device (receiving terminal 4B or transmitting terminal 2A) that receives a packet does not need to discard a duplicate packet.
  • FIG. 15 is a diagram for explaining a method of using a buffered ACK packet.
  • the ACK packet it is possible to further limit the number of packets to be buffered to one.
  • the ACK packet having the largest ACK number among the ACK numbers of the ACK packets received by the bandwidth adjusting device 1 is buffered. This is because in TCP, if the maximum ACK number is known, the sequence number of the data packet to be transmitted next can be determined.
  • the bandwidth adjustment device 1 of the relay device 3 receives the ACK packet AP (5) with the ACK number “5” from the receiving terminal 4B, the ACK number “ 4 "is discarded, and the ACK packet (5) having the largest ACK number is buffered. Then, using the ACK packet AP (5), the above-described bandwidth promotion process is executed.
  • the bandwidth adjustment apparatus 1 copies and transmits the buffered ACK packet (ACK packet AP (5) in FIG. 15) in the embodiment. Thus, the band adjustment is executed.
  • the bandwidth adjustment apparatus 1 copies and transmits the ACK packet buffered in the buffer unit 14 so that the ACK packet is returned to the transmission terminal 2A at a predetermined frequency.
  • the ACK packet copied / transmitted from the buffer unit 14 is also transmitted from the receiving terminal 4B and is received redundantly by the transmitting terminal 2A.
  • the transmitting terminal 2A has a range of known IP network specifications. Process within. For this reason, there is no problem in communication due to such retransmission of the ACK packet.
  • the buffer unit 14 is managed by the session table 13, and is a queue (queue) prepared for each direction of the session, that is, for each of the A ⁇ B direction and the B ⁇ A direction in FIG.
  • the queue is realized by a data structure such as a linked list. Since the linked list is a known technique, a description thereof will be omitted.
  • FIG. 16 is a flowchart showing a data packet buffering process.
  • the reception bandwidth measuring unit 23 of the bandwidth adjustment device 1 in FIG. 3 receives the data packet from the session management unit 22, it starts the process shown in FIG. 16.
  • step S41 it is determined whether or not a data packet having the same sequence number as the sequence number of the received data packet exists in the queue (buffer unit 14). If there is a data packet having the same sequence number (Yes in step S41), the process proceeds to step S42, the received data packet is discarded, and the process ends.
  • step S41 If it is determined in step S41 that there is no data packet having the same sequence number (in the case of no in step S41), the process proceeds to step S43, where the data packet is added to the queue according to the order indicated by the sequence number, and the process is performed. finish.
  • FIG. 17 is a flowchart showing ACK packet buffering processing. 3 receives the ACK packet from the session management unit 22 and starts the process shown in FIG. FIG. 17 shows a process for buffering an ACK packet having the maximum ACK number.
  • step S51 it is determined whether or not the ACK number of the received ACK packet takes the maximum value.
  • the process proceeds to step S52, and the received ACK packet is discarded and processed. Exit.
  • step S51 If it is determined in step S51 that the ACK number of the received ACK packet has the maximum value (Yes in step S51), the process proceeds to step S53.
  • the bandwidth adjustment device 1 is configured to hold a plurality of ACK packets, the ACK packets are added to the queue according to the order indicated by the ACK numbers.
  • the queue length is 1 and only one ACK packet is held, the ACK packet held in the queue is discarded, the received new ACK packet is stored in the queue, and the process is terminated. To do.
  • the transmitting terminal 2A Since the buffering process shown in FIG. 16 and FIG. 17 is a process executed when performing the above-described band adjustment, unlike the conventional technique, the transmitting terminal 2A does not continuously transmit excessive packets. . As a result, the number of packets to be buffered does not continue to increase and does not constantly increase.
  • At least two buffer memories for a packet are prepared for each communication direction of a session, that is, for a data packet buffer and an ACK packet buffer.
  • the buffer memory for packets includes not only packet data but also management information for managing the buffer unit 14, the amount of memory is larger than the packet length.
  • the amount of memory required per session is 100 kilobytes and 1 gigabyte for 10,000 sessions.
  • the average buffer amount per session is actually 10 packets or less. If a 1 gigabyte buffer memory is prepared, processing is possible even with simultaneous relay of 100,000 sessions.
  • the buffer memory may be exhausted. In such a case, the bandwidth adjustment process is continued without buffering the packet.
  • the transmission terminal 2A and the reception terminal 4B retransmit the packet by the TCP function, there is no communication problem even if the buffering is not performed when the memory is exhausted.
  • the bandwidth adjustment process can be performed without adversely affecting the communication.
  • a data packet that does not need to be buffered among the packets stored in the buffer unit 14 is determined. It can also be configured to be discarded. A method for discarding data packets that do not need to be buffered will be specifically described with reference to FIG.
  • FIG. 18 is a diagram for explaining processing for discarding buffer data.
  • the receiving terminal 4B When receiving the data packet, the receiving terminal 4B includes the sequence number of the data packet to be transmitted next by the transmitting apparatus 2A in the ACK number and returns the ACK packet.
  • the relay device 3 including the bandwidth adjustment device 1 refers to the sequence number of the data packet in the buffer unit 14.
  • the ACK packet When the data packet having the sequence number that matches the received ACK number is buffered, the ACK packet is discarded without being relayed, and it is determined that an unnecessary data packet is buffered. Then, the data packet older than the ACK number is discarded. That is, the data packet having a sequence number smaller than the sequence number of the packet to be transmitted next by the transmitting terminal 2A is discarded.
  • the relay device 3 determines that buffering and transfer are unnecessary for the data packet having a sequence number smaller than the ACK number among the data packets that have subsequently arrived from the transmitting terminal 2A side, and discards them.
  • the bandwidth adjustment apparatus 1 can perform bandwidth adjustment even when only packets in one direction among the two directions of the A ⁇ B direction and the B ⁇ A direction are relayed. is there.
  • the data packet that is, the communication in the A ⁇ B direction
  • the ACK packet that is, the communication state in the B ⁇ A direction. Therefore, the packet discarding process of FIG. 18 is applicable when monitoring communication in both directions.
  • the bandwidth adjustment device 1 transmits a packet (proxy retransmission) instead of the transmission terminal 2A and the reception terminal 4B.
  • proxy a packet proxy retransmission
  • FIG. 19 is a flowchart showing proxy retransmission processing of a data packet.
  • the bandwidth adjustment unit 24 of the bandwidth adjustment device 1 of FIG. 3 executes, for example, the bandwidth adjustment process shown in FIG. 13 and the proxy retransmission process of the data packet shown in FIG.
  • step S61 it is determined whether or not the measurement band is below the target band.
  • the process is terminated without performing any particular process.
  • step S61 when the measurement band is equal to or larger than the target band (in the case of no in step S61), the process proceeds to step S62. Then, a data packet having a maximum ACK number or a sequence number larger than the maximum value managed in the session table 13 is copied from the buffer unit 14, transmitted to the receiving terminal 4B, and the process is terminated.
  • FIG. 20 is a flowchart showing proxy retransmission processing of an ACK packet. Similarly to the process illustrated in FIG. 19, the bandwidth adjustment unit 24 can also execute the proxy retransmission process of the ACK packet illustrated in FIG. 20 when performing the bandwidth adjustment process illustrated in FIG. 13.
  • step S71 it is determined whether or not the measurement band is lower than the target band. If the measurement band is lower than the target band (Yes in step S71), the process ends without performing any particular process. This is the same as in the case of yes in step S61 in FIG.
  • step S71 when the measurement band is equal to or larger than the target band (in the case of no in step S71), the process proceeds to step S72. Then, the ACK packet having the maximum value of the ACK number managed in the session table 13 is copied from the buffer unit 14 and transmitted to the transmission terminal 2A, and the process is terminated.
  • the bandwidth adjustment apparatus 1 determines whether or not the data packet needs to be retransmitted, and when it is determined to be necessary, the data packet is automatically retransmitted. Is possible.
  • FIG. 21 is a diagram for explaining an automatic proxy retransmission method for data packets.
  • the bandwidth adjustment apparatus 1 (of the relay apparatus 3) that has received the ACK packet transmitted from the receiving terminal 4B transmits the ACK packet when the data packet corresponding to the received ACK packet is held in the buffer unit 14. The packet is discarded without being transferred to the terminal 2A, and the buffered data packet is transmitted to the receiving terminal 4B.
  • the relay device 3 (the bandwidth adjustment device 1 thereof) transmits the data packet corresponding to the ACK packet.
  • it is expressed as “automatic proxy retransmission” of the data packet.
  • the relay device 3 including the bandwidth adjustment device 1 receives the ACK packet AP (5) with the ACK number “5”.
  • the bandwidth adjusting apparatus 1 does not transfer the ACK packet to the transmission terminal 2 ⁇ / b> A, and the sequence number “ The data packet DP (5) of “5” is copied and retransmitted to the receiving terminal 4B.
  • the ACK packet AP (6) with the ACK number “6” is received, the data packet DP (6) with the sequence number “6” is automatically retransmitted in the same manner.
  • the bandwidth adjustment apparatus 1 can perform bandwidth adjustment even when only packets in one direction among the two directions of the A ⁇ B direction and the B ⁇ A direction are relayed. is there.
  • the data packet that is, the communication in the A ⁇ B direction
  • the ACK packet that is, the communication state in the B ⁇ A direction. Therefore, the automatic proxy retransmission process is applicable when monitoring communication in both directions.
  • FIG. 22 is a flowchart showing an automatic proxy retransmission process of a data packet.
  • the band adjustment unit 24 in FIG. 3 executes the process shown in FIG. 22 when the ACK number of the ACK packet is notified from the band adjustment unit in the opposite direction.
  • step S81 it is determined whether or not a data packet having a sequence number corresponding to the ACK number of the ACK packet received by the band adjusting unit in the opposite direction (that is, matching the ACK number) is stored in the queue of the buffer unit 14. judge. If there is no corresponding data packet in the queue (in the case of no in step S81), the processing is terminated without performing any particular processing.
  • step S81 If it is determined in step S81 that the corresponding data packet is stored in the queue (yes in step S81), the process proceeds to step S82. Then, the corresponding data packet is copied from the buffer unit 14, retransmitted to the receiving terminal 4B, and the process is terminated.
  • the relay device 3 may adjust the redundant transmission ratio according to the result of observing the relay band (band in the data packet transmission direction) including redundant transmission and the reception band (band in the transmission direction of ACK packet). Is possible. For example, when the reception band is smaller than the relay band including the redundant transmission, it is determined that the probability of discarding the data packet transmitted from the relay apparatus 3 is high, and the ratio of the redundant data packet is increased. Execute the process.
  • the bandwidth adjustment apparatus 1 can perform bandwidth adjustment even when only packets in one direction among the two directions of the A ⁇ B direction and the B ⁇ A direction are relayed. is there.
  • the data packet that is, communication in the A ⁇ B direction is controlled based on the ACK packet, that is, the communication state in the B ⁇ A direction. Therefore, the automatic redundant transmission process is applicable when monitoring communication in both directions.
  • a plurality of network devices having the bandwidth adjustment function can be installed on the communication path. The bandwidth adjusting device 1 does not change the packet, and only adjusts the packet transmission interval according to the target bandwidth.
  • the bandwidth adjusting device 1 when the bandwidth adjusting device 1 is used in multiple and the buffering processing is performed in each bandwidth adjusting device 1, it is desirable to set the target bandwidth to a low value. This is because an increase in relay delay due to buffering at a plurality of locations on the route is predicted. By setting the target bandwidth to a relatively low level, the frequency of buffering for promoting the bandwidth can be reduced, thereby effectively suppressing an increase in relay delay. Expected. [Service notification] When the session table 13 of the bandwidth adjustment device 1 becomes full by managing a large number of sessions, the bandwidth adjustment device 1 (the relay device 3 having the bandwidth adjustment device 1) simply relays packets for an overflowing TCP session. Do. For this reason, bandwidth adjustment is not performed for an overflowing TCP session.
  • bandwidth adjustment processing is performed on the TCP session transmitted first. Therefore, a TCP session overflowing in the first bandwidth adjustment device 1 may not be subjected to bandwidth adjustment in the subsequent bandwidth adjustment device 1 as well.
  • information indicating whether or not the packet has been subjected to bandwidth adjustment processing in any of the bandwidth adjustment devices 1 can be included in the TCP packet.
  • the bandwidth adjustment device 1 preferentially performs bandwidth adjustment processing on a packet that has not been subjected to bandwidth adjustment processing.
  • Information indicating whether or not the packet transmitted on the route has been subjected to the bandwidth adjustment processing is referred to as “service notification information”, and the bandwidth adjustment processing is performed below with reference to the service notification information in the multiple use configuration. The method of doing will be specifically described.
  • FIG. 23 is a diagram for explaining a method for distributing the bandwidth adjustment processing by using the service notification information.
  • FIG. 23 illustrates a case where the transmission terminal 2A and the reception terminal 4B communicate via the two relay devices 3A and 3B.
  • the routes between the transmission terminal 2A and the relay device 3A, between the relay device 3A and the relay device 3B, and between the relay device 3B and the reception terminal 4B will be referred to as routes (a), (b), and (c), respectively.
  • relay devices 3A and 3B including bandwidth adjusting device 1 relay packets P1 and P2.
  • the bandwidth adjustment devices 1A and 1B of the relay devices 3A and 3B refer to the service notification information of the packets P1 and P2, and perform bandwidth adjustment preferentially for packets that have not been subjected to bandwidth adjustment processing. Distribute bandwidth adjustment processing in the system.
  • a value indicating that the bandwidth adjustment processing is “not performed” is stored in the service notification information.
  • the bandwidth adjustment device 1A of the relay device 3A performs bandwidth adjustment for some of the packets P1 among the packets P1 and P2 to be relayed.
  • the packet P2 is relayed as it is.
  • the service notification information of the packet P1 is set with a value indicating that the bandwidth adjustment processing is “completed”. It stores a value indicating that the bandwidth adjustment processing has not been performed. Therefore, the bandwidth adjustment device 1B of the relay device 3B refers to the service notification information of the packets P1 and P2, and preferentially adjusts the bandwidth for the packet P2 that has not been subjected to the bandwidth adjustment processing. In the path (c), the bandwidth-adjusted packets P1 and P2 are transmitted.
  • bandwidth adjustment devices 1 are installed on the route, and by referring to the service notification information, a packet for which bandwidth adjustment processing has not been performed is determined and bandwidth adjustment is performed with priority.
  • the bandwidth adjustment process can be distributed. Accordingly, it is possible to increase the possibility that a packet transmitted on the route is subjected to bandwidth adjustment in any of the bandwidth adjustment devices 1.
  • FIG. 24 Next, a setting example of service notification information will be described with reference to FIGS. 24 and 25.
  • FIG. 24
  • FIG. 24 is a diagram illustrating an example of a method for setting service notification information.
  • the service notification information is added to the TCP packet by using 1 bit which is a reserved bit of the TCP header. For example, when “1” is stored in the service notification flag f1, the bandwidth adjustment processing has been completed for the packet, and when “0” is stored, the bandwidth adjustment processing has not yet been performed. Is represented. Since the other fields of the TCP header are known techniques, the description thereof is omitted.
  • the packet change is kept to a minimum by setting the service notification flag f1 by a method as shown in FIG. 24 without adding a TCP option or the like.
  • FIG. 25 is a diagram illustrating another example of a method for setting service notification information.
  • service notification information is set in the field of the urgent pointer (Urgent Pointer) p.
  • URG Urgent Pointer
  • the emergency pointer p is defined as valid only when “1” is set in the URG flag f2. For this reason, as described above, when the URG flag f2 is set to 0, the urgent pointer p is ignored, and normal TCP communication is not affected.
  • the relay device 3 including the bandwidth adjustment device 1 performs service notification of a predetermined field of the TCP header as illustrated in FIGS. 24 and 25.
  • a value (in this case, “1”) indicating that the bandwidth adjustment processing has been performed is set in the flag (f1 or f2), and then the TCP packet is transferred. Since “0” is set for a packet that has not been subjected to the bandwidth adjustment processing, each bandwidth adjustment device 1 determines whether or not the bandwidth adjustment processing is necessary by referring to the value of this predetermined field.
  • the service notification flag indicates that bandwidth adjustment has been performed by at least one bandwidth adjustment device 1 among the plurality of bandwidth adjustment devices 1 provided on the route. That is, bandwidth adjustment may be performed in another bandwidth adjustment device 1 for a packet in which “1” indicating that the service notification flag has been executed is stored, and the above-described multiple use may be performed. Regardless of the value of the service notification flag, for example, when the session table 13 is available, the bandwidth adjustment device 1 may be a bandwidth adjustment target.
  • the value of the flag is an example, and a value indicating that the band adjustment has been performed may be “0”, a value indicating that the band adjustment has not been performed may be “1”, and the like.
  • the bandwidth adjustment device 1 uses the packet determined to be a TCP packet as the target of bandwidth suppression and promotion.
  • the bandwidth adjustment device 1 identifies TCP communication in units of flows by “Per Flow Queuing”, manages a session for each TCP session, and performs processing such as bandwidth adjustment. As described with reference to FIG. 3, the bandwidth adjustment device 1 manages the TCP session using the session table 13. The session management method will be specifically described below.
  • FIG. 26 is a flowchart showing session management processing by the session management unit 22 of FIG.
  • the session management unit 22 starts the process illustrated in FIG. 26 when the packet is received from the packet determination unit 21 that has determined that the received packet is a TCP packet.
  • a session identification code is calculated.
  • the session identification code is information for identifying which session the TCP packet belongs to. A specific method for obtaining the session identification code will be described later.
  • step S92 it is determined whether or not the session identification code obtained in step S91 is registered in the session table 13. If the session identification code has already been registered in the session table 13 (in the case of yes in step S92), it is a session that has been subjected to bandwidth measurement and bandwidth adjustment in the bandwidth adjustment device 1, and therefore no new registration is required. Therefore, the process proceeds to step S100. In step S100, the packet is transferred to the reception band measurement unit 23, and the process is terminated.
  • step S92 if the session identification code obtained in step S91 is not registered in the session table 13 (in the case of no in step S92), registration in the session table 13 is necessary, so the process proceeds to step S93. It is determined whether or not there is a space in the session table 13. If there is a vacancy (Yes in step S93), the process proceeds to step S99, and a session registration process is executed. Specifically, the session identification code, the target bandwidth corresponding to the session, and other necessary information are registered in the session table 13, and the process proceeds to step S100. The process of step S100 is as described above.
  • an initial value of the target bandwidth is set.
  • the initial value may be configured to select a predetermined initial value from a plurality of predefined values based on conditions such as an IP address and a range of TCP port numbers.
  • step S93 If there is no space in the session table 13 (in the case of no in step S93), the process proceeds from step S93 to step S94, and it is determined whether an existing session, that is, a session registered in the session table 13 is valid. judge. When a session that is not valid is included (in the case of no in step S94), the process proceeds from step S94 to step S98, a session end process is executed, and the process proceeds to step S99. Specifically, an end notification is transmitted to the terminal that is the transmission destination of the packet, an invalid session is deleted from the session table 13, and the process proceeds to step S99. The processing after step S99 is as described above.
  • step S94 it is determined whether or not the packet for which the session identification code is obtained in step S91 is a FIN packet or an RST packet. In step S95, the determination is made by referring to the code bits of the TCP header.
  • step S95 If it is determined in step S95 that the packet is a FIN packet or an RST packet (in the case of yes in step S95), the process proceeds from step S95 to step S97 to execute a session end process. Specifically, an end notification is transmitted to the terminal that is the transmission destination of the packet, and the corresponding session is acquired using the session identification code obtained in step S91, and the session is related from the session table 13. The information is deleted and the process is terminated.
  • step S95 If the packet is neither a FIN packet nor an RST packet (in the case of no in step S95), the process proceeds from step S95 to step S96, and the packet is relayed as it is without performing bandwidth measurement / bandwidth adjustment, and the process ends.
  • the session identification code obtained in step S91 is calculated using, for example, a pair of an IP address and a TCP port number.
  • the length of the IP address and TCP port pair is 10 bytes for Ipv4 and 34 bytes for IPv6. From this, a session identification code of about 4 bytes is generated. As described in the flowchart of FIG. 26, the session table 13 is searched using the session identification code.
  • the session identification code is a hash value.
  • a hash value is obtained from the IP address and TCP port number, and the obtained value is used as a session identification code.
  • the value of the generated code can be appropriately dispersed.
  • a value obtained by adding an integer to the IP address / TCP port number pair information may be used as the session identification code.
  • code values can be sufficiently dispersed in practical use.
  • the time required for the code generation processing is when processing is performed by a microprocessor operating at 1 GHz.
  • the machine language command is about 10 commands, which is about 10 nanoseconds.
  • the bandwidth adjustment device 1 obtains a session identification code every time a packet is received, and the obtained session identification code is registered in the session table 13. It is determined whether or not there is. If the obtained session identification code is not registered in the session table 13, new registration is performed in the session table 13, and if it is already registered, the registered information is used to Perform measurement and band adjustment. As described above, if the bandwidth adjustment device 1 according to the embodiment can recognize that the TCP session is ongoing, the bandwidth adjustment device 1 can perform the bandwidth measurement / adjustment processing by tracking the sequence number and the ACK number. There is no need to monitor and track state transitions. Therefore, the load applied to the bandwidth adjustment device 1 can be reduced by adopting the session management method described above.
  • TCP communication is usually terminated by a FIN packet or an RST packet. This is the same as steps 95 to S97 in FIG. However, other than this, communication may not be completed normally due to abnormal termination of the terminal (transmission terminal 2A or reception terminal 4B) or disconnection of the network. Even if communication is not normally terminated and left unattended, it may eventually be terminated due to a terminal timeout.
  • information is deleted from the session table 13 for a session in which a packet has not arrived over a predetermined period at a new session registration timing.
  • the session table 13 is checked every predetermined time, and if there is a registered session for which a packet has not arrived for a predetermined period or longer, the information is deleted.
  • the bandwidth adjustment device 1 deletes information from the session table 13 when it recognizes a session in which a packet has not arrived as a result of monitoring a new session registration timing or over a predetermined period. At the same time, it notifies the terminal that the communication is to be terminated, and executes a communication termination process.
  • a TCP session monitoring time is set in advance by a timer. If there is a session for which the set time has elapsed, information related to the session is deleted from the session table 13 and an end notification is sent to the terminal. For example, the end notification is performed by transmitting an RST packet including “RST” which is one of the TCP commands to the terminal. The terminal that has received the RST packet executes forced termination of the TCP session.
  • the server or client terminal determines the unrecoverable TCP session in accordance with the end notification received from the bandwidth adjustment device 1.
  • Force termination Taking a web server as an example, it is necessary to manage 100,000 sessions. For this reason, it is possible to greatly reduce the processing load on a server having a large amount of access by forcibly terminating a session that cannot be recovered from a failure.
  • Session management for service notification The distribution of the bandwidth adjustment processing among the plurality of bandwidth adjustment devices 1 using the service notification information is as described above. Here, a method of using service notification information when managing a session will be described.
  • FIG. 27 is a flowchart showing session management processing using service notification information. Here, a case where the service notification flag shown in FIG. 24 or 25 is used as the service notification information is shown.
  • steps S91 to S100 are the same as those in steps S91 to S100 in FIG. 26, respectively, so that the description thereof is omitted here, and the processes different from those in FIG. .
  • step S90 referring to the TCP header of the packet received from the packet discrimination unit 21, if the service notification flag stores a value indicating that bandwidth adjustment has not been performed, the process proceeds to step S91, The session management process after step S91 is executed. If a value indicating that the bandwidth adjustment processing has been completed is stored in the service notification flag, it is determined that the packet is not subject to session management in the session management unit 22, and the processing ends without performing any particular processing.
  • step S100 the packet is transferred to the reception bandwidth measuring unit 23, and when the processing to be executed regarding session management is completed, a value indicating that the bandwidth adjustment processing has been completed is set in the service notification flag in step S101. End the process.
  • FIG. 28 is a flowchart showing service notification flag processing.
  • FIG. 28 is a detailed flow of the service notification flag check process of step S90 in the session management process of FIG.
  • step S111 it is determined whether or not the service notification flag of the TCP header is on, that is, whether or not a value indicating that the bandwidth adjustment processing has been performed is stored in the service notification flag.
  • the service notification flag is off, that is, when the service notification flag stores a value indicating that the bandwidth adjustment processing has not been performed (in the case of no in step S111), session management after step S91 in FIG. Proceed to processing.
  • step S111 when the service notification flag is ON (in the case of yes in step S111), the process proceeds to step S112, and it is further determined whether or not there is a space in the session table 13. If there is a vacancy in the session table 13 (in the case of yes in step S112), the process proceeds to the session management process after step S91 in FIG.
  • step S112 If there is no vacancy in the session table 13 (in the case of no in step S112), the process proceeds to step S113, the packet is relayed as it is without performing bandwidth measurement / bandwidth adjustment, and the processing is terminated.
  • step S112 As for the process for determining whether or not the session table 13 is free in step S112, even if the packet has already been subjected to bandwidth adjustment processing (even in the case of yes in step S111), there is no free space in the session table 13. If there is, it is determined that the bandwidth adjustment can be performed, and the session management process after step S91 in FIG. 27 is executed.
  • step S112 it is determined whether or not there is enough space to register information for one session in the session table 13, but the present invention is not limited to this.
  • a predetermined ratio or threshold value may be set, and it may be configured to determine whether or not the free space in the session table 13 falls below the predetermined ratio or threshold value.
  • the session management process after step S91 is executed.
  • the bandwidth adjustment device 1 registers information in the session table 13 when the TCP packet is received, and starts bandwidth measurement and bandwidth adjustment. That is, the bandwidth adjustment device 1 does not need to monitor the state transition from “SYN” to “FIN / RST” of TCP communication for bandwidth adjustment.
  • bandwidth adjustment can be performed from the received TCP packet.
  • the buffering process is performed even when the relay device 3 including the bandwidth adjustment device 1 is removed from the network while the relay device 3 relays communication, or even when the relay device 3 is stopped due to a failure or the like. Therefore, it is not necessary to adversely affect TCP communication.
  • active insertion installing the bandwidth adjusting apparatus 1 in the communication system during the session
  • active removal removing the bandwidth adjusting apparatus 1 from the communication system during the session
  • the bandwidth adjustment device 1 registers information related to the session in the session table 13 when performing bandwidth adjustment on the received packet.
  • the data structure and the like of the session table 13 will be described with reference to FIGS.
  • FIG. 29 is a diagram illustrating a structure example of the session table 13.
  • the session table 13 shown in FIG. 29 is a hash table (one-dimensional array) storing bidirectional session information from the transmission terminal 2A to the reception terminal 4B, and stores session table data in association with indexes. To do.
  • session information can be identified by using a hash key code as a hash table index obtained by taking a remainder from the size of the table.
  • a hash key code is obtained from the pair of the IP address and the TCP port number.
  • FIG. 30 shows an example of the structure of session table data.
  • the session table data associated with the hash table index is provided for each session, and includes management information D1, data D2 indicating the location of session information in the opposite direction, packet source and destination IP addresses, and TCP port numbers.
  • Management information D1 is information used by the session management unit 22 of the bandwidth adjustment device 1 to manage the session table 13.
  • the data D2 indicating the location of the session information in the opposite direction stores the location on the session table 13 of the session information paired with the session information shown in FIG. 30, that is, the “index” in FIG.
  • Each unit such as the session management unit 22 of the bandwidth adjustment apparatus 1 accesses the session information in the opposite direction on the session table 13 using the data D2.
  • Data D2 is invalid if it does not relay traffic in the opposite direction.
  • the data D3 related to the IP address and TCP port number of the transmission source and destination of the packet includes a hash key code (session identification code), a transmission IP address, a reception IP address, a transmission port number, and a reception port number.
  • a hash key code session identification code
  • the data D3 stores the IP address and TCP port number of the transmission source and the transmission destination, and in the embodiment, a session identification which is a hash child key code using a pair of the IP address and the TCP port number. Seeking code.
  • the data D2 indicating the location of the session information in the opposite direction can be calculated by switching the transmission / reception of the IP address and the TCP port number using the data D3.
  • the time required for generating the hash code can be saved by storing the value obtained in advance in the area of the data D2.
  • the time data D4 includes various time information related to bandwidth adjustment, such as a session start time, a data packet relay time, and an ACK packet relay time.
  • a general time value such as a time value in microseconds or a time value measured by a minimum timer interrupt of an operating system such as Jiffy is used.
  • the session duration is obtained from the difference between the current time and the session start time, and the session deletion processing or the like is performed using the obtained session duration.
  • the unit time D5 is a numerical value representing the length of the unit time of the internal time in the network device (in the above example, the relay device 3), the terminal or the like provided with the bandwidth adjusting device 1. Since the unit time may be different for each session, in the embodiment, it is set for each session.
  • the measurement band data D6 stores a band measured by the reception band measurement unit 23, and includes a measurement data amount, a maximum measurement data amount, a minimum measurement data amount, an ACK amount, a maximum ACK amount, and a minimum ACK amount per unit time, respectively. .
  • the measurement data amount and the ACK amount per unit time are the traffic amounts measured by the reception band measurement unit 23 within the period of the unit time D5.
  • the maximum value and the minimum value are the past maximum value and the minimum value, respectively. Record.
  • the target band data D7 stores information indicating the total amount of increments of data packets and ACK packets to be relayed per unit time, that is, the target band.
  • the value of each item of the target bandwidth data D7 stores a predetermined initial value when the session management unit 22 newly registers information in the session table 13, for example, according to the measurement result of the communication bandwidth in the opposite direction. Change the value.
  • the transferable data amount per unit time is an accumulation of the data amount.
  • the transferable ACK amount per unit time is not the increment of the ACK packet length but the increment of ACK.
  • the relay band data D8 stores the band of the packet relayed by the band adjustment of the band adjustment unit 24, and the relay data amount per unit time, the maximum relay data amount, the minimum relay data amount, the relay ACK amount, and the maximum relay ACK amount And the minimum relay ACK amount. Similar to the measurement band and the target band, the data amount and the ACK amount are each composed of an accumulation of data amount and an increment of ACK, respectively. If the ACK does not increase, the relay ACK amount is “0”. Further, when the ACK amount decreases due to the change of the ACK packet order, the corresponding ACK packet is ignored and the ACK amount is measured.
  • the data D9 related to the sequence number stores the sequence number of the data packet buffered in the buffer unit 14, and in the example shown in FIG. 30, the maximum sequence number of the sequence numbers of the buffered data packet is Stores the minimum sequence number.
  • the data D9 makes it unnecessary to analyze the packet buffered in the buffer unit 14, and the processing of the bandwidth adjustment device 1 is reduced.
  • the data D10 related to the ACK number stores the ACK number of the ACK packet buffered in the buffer unit 14, and in the example shown in FIG. 30, the maximum ACK number among the ACK numbers of the buffered ACK packet is stored. Store.
  • Buffer data D11 stores a data packet or one ACK packet in a queue.
  • the session table data is 128 bytes for one-way communication, it is 256 bytes for two directions. If the memory is 1 megabyte, 4096 sessions can be registered. With the current technical level, the session table 13 can be easily realized with 25 megabytes for 100,000 sessions and 256 megabytes for 1 million sessions.
  • the target bandwidth used in the bandwidth adjustment process is stored in the session table 13 as shown in FIG.
  • the initial value of the target band can be selected from predefined values according to the range of values of the IP address and the port number. By determining the target bandwidth based on the IP address and the port number, it becomes possible to set the target bandwidth according to each communication. Such processing is executed by, for example, the session management unit 22 or the like.
  • the target bandwidth can be dynamically changed thereafter.
  • the timing of the change may be, for example, when the session table 13 is referred to in some packet processing, when the periodic interrupt processing shown in FIG. 12 is performed, or when the administrator of the bandwidth adjustment device 1 intentionally changes it. is there.
  • the unit time transferable data amount and the unit time transferable ACK amount of the data D7 are appropriately set.
  • Such processing is executed by, for example, the reception band measurement unit 23 or the like.
  • the packet passing through the bandwidth adjustment device 1 is monitored, and the target bandwidth indicating the bandwidth necessary for communication and the measured actual bandwidth are determined. Compare and perform band suppression or promotion according to the comparison.
  • the transmission timing of the packet is controlled to “suppress” the band so that the packet is transmitted at a constant interval, that is, the target band.
  • the bandwidth is “promoted” by retransmitting the buffered packet to the transmitting terminal 2A and the receiving terminal 4B on behalf of the measuring bandwidth.
  • the communication performance is suppressed within a predetermined range, so that the occurrence of burst traffic and the like is effectively suppressed, and variations in communication performance between terminals are suppressed.
  • the communication performance which was conventionally about 1 Mbps, can be improved to about several Mbps.
  • the packet transmission by the terminal is promoted by the promotion of the bandwidth, so that an increase in traffic accompanying packet retransmission and retransmission is effectively suppressed.
  • the communication performance is suppressed within a predetermined range for each session, and packet retransmission is performed. Can be effectively suppressed, which is effective in stabilizing communication.
  • An IP network such as the Internet is a network infrastructure that provides “unreliable communication”. Under this network, the bandwidth adjustment described above is performed for communication that provides “reliable communication” such as TCP. I do.
  • a network speed differs greatly from terminal to terminal, an imbalance has occurred in the communication quality provided between the terminals. For example, while a server providing a service is connected to a high-speed network, a user-side terminal is generally connected to a relatively low-speed access network. In such an unbalanced environment, communication between terminals performing “reliable communication” is improved by promoting and suppressing the above band.
  • the bandwidth adjustment device 1 it is possible to monitor only packets in one direction in two-way communication and use them for bandwidth adjustment in other directions. There is no need to provide it. Moreover, since it may be installed at any place on the route, it is possible to reduce the network design cost. Furthermore, even if a plurality of bandwidth adjusting devices 1 are installed on the route, each device monitors the packets flowing in its own device and performs bandwidth adjustment, so that the devices do not interfere with each other. Rather, by performing bandwidth adjustment with each of the plurality of bandwidth adjustment devices 1, bandwidth adjustment is performed at a plurality of locations on the route, and TCP communication can be further stabilized.
  • the TCP / IP packet is not changed so as to affect the communication, only the packet operation permitted by the “unreliable communication” of the IP layer is used, and at least 1 of the TCP communication is used.
  • Bandwidth adjustment processing can be performed by relaying only in the direction or the like. Such bandwidth adjustment processing can also be realized by relatively simple software. Accordingly, the bandwidth adjustment device 1 is incorporated in a network connection device having a communication function such as a router, a bridge, a network appliance device, and a terminal. Is possible.
  • the bandwidth adjusting device 1 since the case where the bandwidth adjusting device 1 is incorporated in the relay device 3 is described as an example, it is described how to “relay” the packet to perform the bandwidth adjustment.
  • the bandwidth adjustment device 1 uses the packet transmitted by itself or the packet received by the device as a target for bandwidth measurement / bandwidth adjustment and the like. This can be realized by “sending”.
  • the terminal notifies the TCP layer of the termination from the bandwidth adjustment device within itself, thereby terminating the unrecoverable session.
  • the bandwidth adjustment processing by the bandwidth adjustment device 1 even when the bandwidth adjustment device 1 is provided in the relay device 3, the relay TCP is not terminated as in the conventional TCP technology. Further, the bandwidth adjustment process does not depend on the existing TCP / IP processing function.
  • the bandwidth adjustment device 1 can perform bandwidth adjustment processing by referring to the control information of the received TCP / IP packet, and does not require complicated processing. For this reason, even when the band adjusting device 1 is incorporated in the relay device 3, it becomes easy to mount high-speed TCP Splicing on the relay device 3. Therefore, there is an effect of improving the scalability of the processing performance. Further, by improving the scalability of the processing performance, it becomes possible to perform bandwidth adjustment by managing each session even in a backbone network where a lot of traffic is aggregated.
  • the bandwidth adjustment device 1 recognizes the session based on whether or not the received packet is a TCP packet, and performs bandwidth adjustment on a session basis, so the TCP communication status is determined with reference to the TCP header. There is no need to do. Thereby, even when communication is continuing between the transmission terminal 2A and the reception terminal 4B, it is possible to additionally install the band adjusting device 1 in the communication system without disconnecting the communication. It can be removed. Therefore, stabilization of TCP communication can be realized without lowering network reliability by adding or removing the bandwidth adjustment device 1.

Landscapes

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

Abstract

 送信端末2A及び受信端末4Bがネットワーク10を介して通信を行うときに、通信の帯域を制御する通信装置1において、受信帯域測定部23は、送信端末2Aから受信端末4B、及び受信端末4Bから送信端末2Aの2方向の通信のうち、少なくとも1方向の通信について帯域を測定する。セッションテーブル13は、通信に必要な帯域を示す目標帯域を含む帯域調整に係わる情報を記憶する。帯域調整部24は、セッションテーブル13から帯域を測定した方向の目標帯域を読み出し、受信帯域測定部23において測定した帯域と読み出した目標帯域との比較に基づきパケットの送出間隔を調整することにより、帯域の抑制または促進を行う。

Description

通信装置及び通信方法
 本発明は、送信装置と受信装置との間でネットワークを介して行われる通信において、通信帯域を制御する技術に関する。
 近年のネットワーク技術の進展により、インターネット等のネットワークを伝わるトラフィックは増加の一途を辿っている。インターネット等で使用されるIP(Internet Protocol)は、パケットを相手の装置に送信する役割を担う。IPにより実現される通信は、「信頼性のない通信」である。すなわち、IPは、データの到達や到達順序については保証していない。
 TCP(Transmission Control Protocol)は、「信頼性のある通信」を実現するために用いられる。以下において、「信頼性のある通信」とは、送信データが、送信した順序どおりに過不足なく転送される通信を言うものとする。
 TCPは、現在、トラフィックの大きい部分を占めているものの、その性能は、不安定で、ばらつきがあるのが実情である。動画等の映像配信サービス等を安定して供給するためには、TCP性能を安定させる必要がある。
 TCP性能に係わる公知の技術の1つとして、TCP帯域制御技術が挙げられる。TCP帯域制御技術は、トラフィックを所定量以下に制限するものであり、基本的に、トラフィックの種類に応じて優先順位を付け、優先度の低いトラフィックを破棄することによりネットワークの輻輳を回避する技術である。
 従来技術によれば、TCPは、輻輳時にはフロー制御によりデータ送信速度を調整する機能を有する。この機能は、輻輳がある場合に動作し、送信データがパケット破棄されずに受信側の端末装置に届いている限り、性能を向上させようとする。すなわち、通信の状態に応じて性能を向上させることはできるが、性能を適切な範囲に低く抑制する、といった制御をすることはできない。
 ある通信が必要とする通信性能には、まず、アプリケーションやシステム管理者により決定される性能Aがある。そして、この性能Aを目標として実際の通信情況により動的に決定される性能Bがある。近年のトラフィック増加の傾向を鑑みると、例えば実際の通信情況が良好であり、性能Bが性能Aを上回る場合には、性能Bを下げ、また、性能Bを上げる必要のある場合には、性能Bを上げるように帯域を制御する必要がある。
 本発明は、帯域調整と高速化のバランスを考慮して、必要な性能が得られるよう帯域調整を行うことのできる技術を提供することを目的とする。
 上記課題を解決するために、開示の通信装置は、送信装置及び受信装置がネットワークを介して通信を行うときに、通信の帯域を制御する通信装置であって、前記送信装置から前記受信装置、及び前記受信装置から送信装置の2方向の通信のうち、少なくとも1方向の通信について帯域を測定する測定部と、通信に必要な帯域を示す目標帯域を含む帯域調整に係わる情報を記憶する記憶部と、前記記憶部から前記帯域を測定した方向の目標帯域を読み出し、前記測定部において測定した帯域と該読み出した目標帯域との比較に基づきパケットの送出間隔を調整することにより、帯域の抑制または促進を行う調整部とを備える構成とする。
 開示の通信装置によれば、通信が安定化し、パケットの再送を効果的に抑えることが可能となる。
本実施形態に係る帯域調整装置を有する通信システムを示す全体図である。 本実施形態に係る帯域調整装置の構成図である。 帯域調整中継部の構成図である。 本実施形態に係る帯域調整装置の帯域調整中継部がデータパケットの帯域を測定する方法を説明する図である。 本実施形態に係る帯域調整装置の帯域調整中継部がACKパケットの帯域を測定する方法を説明する図である。 データパケット送信方向についての帯域抑制方法を説明する図である。 ACKパケット送信方向についての帯域抑制方法を説明する図である。 データパケット送信方向についての帯域の促進方法を説明する図である。 ACKパケット送信方向についての帯域の促進方法を説明する図である。 受信したパケットの判別処理を示したフローチャートである。 帯域測定処理を示したフローチャートである。 帯域調整処理の割り込み処理を示したフローチャートである。 帯域調整処理を示したフローチャートである。 データパケットをバッファリングする方法を説明する図である。 バッファリングしたACKパケットを利用する方法を説明する図である。 データパケットのバッファリング処理を示したフローチャートである。 ACKパケットのバッファリング処理を示したフローチャートである。 バッファデータを破棄する処理を説明する図である。 データパケットの代理再送処理を示したフローチャートである。 ACKパケットの代理再送処理を示したフローチャートである。 データパケットの自動代理再送方法を説明する図である。 データパケットの自動代理再送処理を示したフローチャートである。 サービス通知情報の利用により帯域調整処理を分散させる方法を説明する図である。 サービス通知情報の設定方法の一例を示す図である。 サービス通知情報の設定方法の他の例を示す図である。 セッション管理処理を示したフローチャートである。 サービス通知情報を用いたセッション管理処理を示したフローチャートである。 サービス通知フラグ処理を示したフローチャートである。 セッションテーブルの構造例を示す図である。 セッションテーブルデータの構造例を示す図である。
 以下、本発明の実施の形態について、図面を参照して詳細に説明する。
〔構成〕
 図1は、本実施形態に係る帯域調整装置を有する通信システムを示す全体図である。図1(a)に示す通信システムは、2台の端末装置2A及び端末装置(以下端末)4Bが、互いにネットワーク10を介して接続され、例えばTCP通信を用いた映像配信(動画配信)等の通信を行う。ネットワーク10の例としては、例えば、ADSL(Asymmetric Digital Subscriber Line)、FTTx(Fiber To The x)等の有線アクセスネットワークや、HSPA(High Speed Packet Access)、WiMAX(Worldwide Interoperability for Microwave Access)等の無線アクセスネットワークが挙げられる。端末2A、4Bは、例えば、ネットワーク10に接続された家庭用あるいは小規模オフィス用ネットワーク機器、パーソナルコンピュータ、携帯端末、ネットワーク接続用アダプタ等からなる。
 各端末2A、4Bは、それぞれ帯域調整装置1A、1Bを有し、帯域調整装置1A、1Bは、自装置が送受するパケットの帯域を、通信に応じた適切な値に調整する。以下の説明においては、データの送信側の装置には、符号に「A」を、受信側の装置には、符合に「B」を付すこととする。
 帯域調整装置1A、1Bは、TCP/IPパケットを観測可能な位置であれば、どのような場所であっても配置が可能である。図1(a)においては、送信端末及び受信端末内に帯域調整装置1A、1Bを備える構成を示す。
 図1(b)は、本実施形態に係る帯域調整装置1を端末以外の装置に組み込んだ場合のシステム構成図である。図1(b)に示す例では、帯域調整装置1Cは、中継装置3内に組み込まれ、端末2Aと端末4Bとの間で送受されるパケットの帯域を、通信に応じた適切な値に調整する。
 ここで、中継装置3とは、部分的あるいは完全にTCPを認識し、TCPに係わる機能を提供するネットワーク機器をいい、ルータやブリッジ等だけでなく、例えば、プロキシサーバ、ロードバランサ、トラフィックシェーパー及びWAN(Wide Area Network)最適化装置等も、中継装置に含まれる。
 また、図1(a)及び図1(b)においては、本実施形態に係る帯域調整装置1の設置位置を説明するために、通信システムの構成を簡略化して帯域端末2A、4B及び中継装置3のみを示している。
 以下においては、図1(b)の構成、すなわち、送信端末2Aと受信端末4Bとの間のネットワーク10上に配置される中継装置3に本実施形態に係る帯域調整装置1が搭載されている場合を例に、帯域調整装置1が送信端末2A-受信端末4B間の通信帯域を調整する方法について、具体的に説明する。
 図2は、本実施形態に係る帯域調整装置1の構成図である。図2に示す帯域調整装置1は、2つの帯域調整中継部11、12と、セッションテーブル13とを有し、帯域調整中継部11、12は、それぞれ「他のモジュール30、32」からパケットを受け取り、「他のモジュール31、33」へとパケットを渡す。
 図2に示す「他のモジュール30~33」は、中継装置3内に備えられるネットワークデバイスドライバや他のプロトコルスタックであり、それぞれがTCP/IPパケットを含むパケットを処理する。
 帯域調整装置1の帯域調整中継部11、12は、他のモジュール30~33との間でパケットの受け渡しを行う。帯域調整中継部11、12は、受け取ったパケットがTCPパケットである場合には、それぞれ送信端末2Aから受信端末4B及び受信端末4Bから送信端末2Aへと向かう方向の通信についての帯域調整を実施する。なお、図2や次に説明する図3においては、各通信方向を「A→B方向」及び「B→A方向」と記載している。
 セッションテーブル13は、帯域調整中継部11、12が帯域調整の実施するときに必要な情報を格納する。セッションテーブル13の詳細については、後に図29及び図30を参照して詳しく説明する。
 送信端末2Aから受信端末4B、及び受信端末4Bから送信端末2Aへと向かう両方向のパケットが帯域調整装置1を通過する場合には、帯域調整装置1は、両方向の通信について帯域調整を行う。一方向のパケットのみが帯域調整装置1を通過する場合には、帯域調整装置1は、帯域調整中継部11、12のうち、パケットが通過している方の帯域調整中継部において帯域調整を行い、セッションテーブル13に必要な情報を格納する。他方の帯域調整中継部は、セッションテーブル13を参照して、帯域調整を行うことも可能である。
 図3は、帯域調整中継部の構成図である。図3に示す帯域調整中継部11は、パケット判別部21、セッション管理部22、受信帯域測定部23、帯域調整部24及び送信帯域測定部25を有する。
 なお、図3においては、A→B方向の帯域調整中継部11の構成のみを示しているが、B→A方向の帯域調整中継部12の構成は、図3に示す帯域調整中継部11の構成と同様であり、帯域調整中継部11、12は、セッションテーブル13及びバッファ部14を共有する。
 パケット判別部21は、他のモジュール30から受け取ったパケットが、帯域調整の対象となるパケットであるか否かを判別する。具体的には、TCPパケットであるか否かを判別する。
 セッション管理部22は、パケット判別部21において帯域調整の対象となるパケットであると判別した場合に、TCPセッションの管理を行う。セッション管理部22は、TCPセッションの管理に必要な情報をセッションテーブル13に格納し、また、必要な情報をセッションテーブル13から取り出す等の処理を実行する。
 受信帯域測定部23は、セッション管理部22が管理対象とするパケットの受信帯域を測定する。受信帯域測定部23は、測定した受信帯域をセッションテーブル13に格納するとともに、必要な場合には、受信したパケットをバッファ部14に格納する。
 帯域調整部24は、セッションテーブル13に格納されている測定帯域等の情報に基づき、帯域の調整を行う。具体的には、通信に必要な帯域を示す目標帯域と、実際に測定した帯域との大小関係に応じて、パケットの送出間隔を長く、あるいは短くして、帯域調整を行う。パケットの送出間隔の調整方法については、後に図面を参照して詳しく説明する。
 送信帯域測定部25は、帯域調整部24からの指示にしたがって他のモジュール31へと転送されるパケットや、パケット判別部21から他のモジュール31へと転送されるパケットの帯域を測定し、測定結果をセッションテーブル13に格納する。
 なお、通信システム内の動作の説明中の「送信」「受信」の表記と異なり、図3の受信帯域測定部23、送信帯域測定部25の説明においては、「受信」及び「送信」の表記は、帯域調整装置1を主体としている。すなわち、受信帯域測定部23は、帯域調整装置1が他のモジュール30から「受信」したパケットを処理し、送信帯域測定部25は、帯域調整装置1が他のモジュール31に「送信」するパケットを処理しているため、このように表記している。
 帯域調整部24は、反対方向の帯域調整中継部12の帯域調整部との間で、帯域調整に係わる情報を送受する。上記のとおり、一方の帯域調整中継部においてはTCPパケットを送受しておらず、帯域測定を行っていない場合であっても、他方の帯域調整中継部がセッションテーブル13に格納した情報や、他方の帯域調整部から受信した制御情報に基づいて、帯域調整を行う。
 図1~図3に示すとおり、帯域調整装置1は、TCP通信を監視して、帯域調整を行う。例えばApache HTTP Server、Lighttpd、Squid cache、BitTorrent等の一般的なサーバアプリケーションの多くは、TCP通信ごとに送信帯域を調整する機能(Bandwidth Throttling)を有している。しかし、このような公知のアプリケーションによる帯域調整技術では、高精度での帯域調整を期待できない。
 すなわち、アプリケーションにより帯域調整を行ったとしても、オペレーティングシステムのスケジューリングに依存してトランスポート層(TCP等)、ネットワーク層(IP等)、デバイスドライバ等でバーストトラフィックになる可能性がある。また、アプリケーションにて帯域調整を行うと、TCP層からネットワーク層にかけての状況が正確に把握できず、アプリケーションは、アプリケーションが期待する通信性能と、実際の通信性能の乖離を認識できず、実際の通信に応じた帯域調整をすることができない。例えば、帯域調整の対象とするデータであっても、どれだけのデータを実際に送信したか/受信したか/再送したか等の状況を実時間的に認識できない。このため、アプリケーションは、あくまでも「論理的に通信が必要とする通信性能」になるよう帯域調整を行うのみであり、実体に即した帯域調整は行えない。
 これに対して、本実施形態に係る帯域調整装置1は、図1~図3に示すとおり、実際のTCP通信を監視して、これに即した帯域調整を行うことができる。アプリケーションによる帯域調整と比較しても、より高精度の帯域調整が可能である。
〔通信の方向〕
 送信端末2A及び受信端末4Bは、それぞれ相手の端末宛にデータパケット及びACKパケットを送信する。図2及び図3に示す構成の帯域調整装置1は、帯域調整中継部11、12は、それぞれA→B方向及びB→A方向の通信を監視する。このため、通信経路上に設けられる帯域調整装置1は、データパケット及びACKパケットの両方のパケットを転送する場合だけでなく、データパケットまたはACKパケットのいずれか一方を転送する場合であっても帯域調整を行うことが可能である。例えば、帯域調整装置1を備える中継装置3がA→B方向のデータパケットのみを中継し、ACKパケットについては他の経路を経由する場合であっても、帯域調整装置1の帯域調整中継部11のみがデータパケットを監視して、帯域調整を行う。
〔帯域測定〕
 本実施形態に係る帯域調整装置1がデータパケットやACKパケットを監視して通信帯域を測定する方法について、それぞれ図4及び図5を参照して説明する。
 図4は、本実施形態に係る帯域調整装置1の帯域調整中継部11がデータパケットの帯域を測定する方法を説明する図であり、図5は、帯域調整装置1の帯域調整中継部12がACKパケットの帯域を測定する方法を説明する図である。図4や図5の上段はデータパケットDPの流れ、下段はACKパケットAPの流れを示しており、以下においても同様である。
 図4及び図5に示す例では、帯域調整装置1は、中継装置3に組み込まれている場合を示し、以下の説明においても同様とする。以降においては、ネットワーク機器としての中継装置3を例に説明をするが、これに限定されるものではない。例えば、オペレーティングシステムの内部でTCP/IPを受け渡す部分でも、同様の機能を果たすことができ、以下に説明する各種処理は、ソフトウェア及びハードウェアとして組み込むことが可能である。
 中継装置3の帯域調整装置1内の受信帯域測定部23は、送信端末2Aが受信端末4Bに対して送信するデータパケットDPや、データパケットDPを受信した受信端末4Bが送信端末2Aに返すACKパケットAPを監視して、通信帯域を測定する。
 データパケットにより通信帯域を測定する場合は、図4に示すように、データパケットに含まれるシーケンス番号(図4のSEQ)とパケットのデータ長とを観測して、データ長の積算値を求めることにより、通信システムのうち、中継装置3の設置位置における送信帯域を測定する。
 ACKパケットにより通信帯域を測定する場合は、図5に示すように、ACKパケットに含まれるACK番号(図5のACK)に基づきACKの増分を計測することにより、通信システムのうち、中継装置3の設置位置における受信帯域を測定する。
 ACKパケットは、データパケットと比べてデータ長が小さく、また、データパケットのように、パケットごとにデータ長が大きく異なることがない。このため、ACK番号のみを観測し、所定の期間内に中継装置3が中継するACKパケットの増分を積算することにより、受信帯域を測定している。
〔帯域調整〕
 図4や図5に示す方法で測定した通信帯域を利用して、帯域調整装置1の帯域調整部24は、中継装置3からパケット(データパケットDPやACKパケットAP)を送出する時間間隔を調整することにより、帯域調整を行う。図3の説明においても述べたとおり、帯域調整部24は、測定した通信帯域に応じて、パケット送出の時間間隔を空ける(時間間隔を長くする)処理、あるいはパケット送出の時間間隔を詰める(時間間隔を短くする)処理のいずれを実行すべきかを決定する。
 以下においては、パケット送出の時間間隔を長くするよう帯域調整を行うことを「帯域の抑制」、パケット送出の時間間隔を短くするよう帯域調整を行うことを「帯域の促進」と定義する。まず、本実施形態に係る帯域調整装置1による帯域の抑制方法について説明する。
 図6は、データパケット送信方向についての帯域抑制方法を説明する図であり、図7は、ACKパケット送信方向についての帯域抑制方法を説明する図である。
 中継装置3の帯域調整装置1内の帯域調整部24は、受信帯域測定部23において測定した通信帯域が通信に必要な帯域を示す目標帯域を上回る場合には、通信を制御して、帯域を抑制する。帯域の抑制方法には、データパケットの送信間隔を制御する方法と、ACKパケットの送信間隔を制御する方法とがある。
 例えばデータパケットの送信間隔の制御に関しては、図6に示すように、帯域調整装置1の帯域調整部24は、送信端末2Aが送信したデータパケットの帯域を抑制する制御を行う。具体的には、目標帯域に対して、シーケンス番号の単位時間当たりの増分が所定の範囲内に抑制されるよう、データパケットの転送間隔を制御する。これにより、送信端末2Aがバーストトラフィックを出すことがあっても、所定の帯域で受信端末4Bにデータパケットを届けることができる。
 一方、ACKパケットの送信間隔の制御については、図7に示すように、帯域調整部24が、受信端末4Bが送信したACKパケットの帯域を抑制する制御を行う。具体的には、目標帯域に対して、ACK番号の単位時間当たりの増分が所定の範囲内になるよう、ACKパケットの転送間隔を制御する。
 一般に、送信端末2Aは、TCP通信の初めのうちは、ウィンドウサイズ分のデータパケットをバーストトラフィックとして送信するが、後続のデータパケット送信については、送信端末2Aは、ACKパケットの受信帯域に応じた帯域で受信端末4B宛のデータパケットを送出する。このため、上記のとおりにACKパケットの送出間隔を制御することにより、送信端末2Aは、受信したACKパケットの増分に応じてデータパケットを送信することとなり、これにより、データパケット送信方向についての帯域を調整することができる。
 次に、本実施形態に係る帯域調整装置1による帯域の促進方法について説明する。
 図8は、データパケット送信方向についての帯域の促進方法を説明する図であり、図9は、ACKパケット送信方向についての帯域の促進方法を説明する図である。
 中継装置3の帯域調整装置1内の帯域調整部24は、受信帯域測定部23において測定した通信帯域が上記目標帯域を下回る場合には、帯域を促進するように制御を行う。上記の帯域の抑制方法と同様に、帯域の促進方法には、データパケットの送信間隔を制御する方法と、ACKパケットの送信間隔を制御する方法とがある。
 データパケットの送信間隔の制御に関しては、図8に示すように、帯域調整装置1の帯域調整部24が、バッファ部14に送信端末2Aから受信したデータパケットをバッファリングしておき、バッファリングしておいたデータパケットを少なくとも1回受信端末4Bに送信する。バッファリングしておいたデータパケットの再送は、目標帯域に応じて、複数回行うこともある。
 以下においては、帯域調整装置1がバッファリングしておいたデータパケットを受信端末4Bに送信することを、「データパケットの代理再送」とする。以下の説明においては、送信端末2AがTCPの再送機能によりデータパケットを再送することに対して、帯域調整装置1がデータパケットを再送することを、このように表すこととする。
 代理再送されたデータパケットを受信した受信端末4Bは、データパケットに含まれるシーケンス番号を参照し、未受信のデータパケットと認識した場合には、代理再送されたデータパケットに対するACKパケットを返送する。このように、帯域の促進処理、すなわち、データパケットの代理再送により、中継装置3と受信端末4Bとの間で破棄されていたデータパケットに対するACKパケットが受信端末2Aから返送される。
 更に、A→B方向の測定帯域(実際のデータパケットについての送信帯域)が目標帯域を下回る理由の1つとして、ACKパケットが送信端末2Aに十分に届いていないため、送信端末2Aからのデータパケットの送信が滞っていることが考えられる。上記の帯域の促進処理によれば、送信端末2Aは、代理再送されたデータパケットに対するACKパケットを受信すると、次に送信すべきデータパケットを送信するので、送信端末2Aによるデータパケットの送信を促すこととなる。
 このように、測定帯域が目標帯域を下回る場合にデータパケットの代理再送を行うことにより、受信端末4BからのACKの返送や送信端末2Aのデータパケットの送信が促され、滞っていた通信を促進させる効果が得られる。
 なお、代理再送されたデータパケットが受信端末4Bにおいて既に受信済であった場合には、受信端末4Bは、代理再送されたデータパケットを破棄するため、代理再送処理が、TCP通信に悪影響を及ぼすことはない。
 また、従来のTCP改善方式によれば、送信端末に次のシーケンス番号のデータパケットの送信を促すために、中継装置が代理ACKパケットを送信することにより、送信帯域を増強している。これは、「Splitting TCP」や「TCP Spoofing」として公知のTCP中継技術である。これらの従来のTCP中継技術では、ALG(Application Level Gateway)方式のTCP中継装置がスケーラビリティに乏しいこと、TCP Splicingでは複雑な処理の実行が困難であること等の問題を解決している。
 しかし、公知技術であるので詳細な説明は割愛するが、Splitting TCPやTCP Spoofingでは、中継装置は、送信端末からのTCP通信を一度終了し、受信端末に対しては、新たなTCP通信を行う。これによれば、仮に、中継装置が代理で送信したACKパケットに対応するデータパケット(例えば、「ACK番号=10」のACKパケットに対して送信端末が送信する「シーケンス番号=10+1=11」のデータパケット)を受信端末が未受信であったとすると、この代理ACKパケット(ACK番号=10)は偽となる。偽の代理ACKパケットを受信した送信端末は、それ以前のデータ(シーケンス番号=10までのデータ)を破棄するので、中継装置が停止した場合やネットワークから除去された場合には、破棄されたデータを二度と回復することができない、という問題がある。
 これに対して、本実施形態に係る帯域調整装置1によれば、データパケットを代理再送した場合であっても、送信端末2Aが代理再送されたデータパケットを破棄することがなく、中継装置3がネットワークから除去された場合であっても、データが失われることがない、という利点を有する。
 ACKパケットの送信間隔の制御に関しては、図9に示すように、帯域調整装置1の帯域調整部24が、バッファ部14にACKパケットをバッファリングしておき、目標帯域に応じて、バッファリングしておいたACKパケットを送信端末2Aに送信する。バッファリングしておいたACKパケットの再送は、目標帯域に応じて、複数回行うこともある。
 以下においては、帯域調整装置1がバッファリングしておいたACKパケットを送信端末2Aに送信することを、「ACKパケットの代理再送」とする。以下の説明においては、受信端末4BがACKパケットを再送することに対して、帯域調整装置1がACKパケットを再送することを、このように表すこととする。
 代理再送されたACKパケットを受信した送信端末2Aは、ACKパケットに対応するデータパケットを送信する可能性がある。このように、測定帯域が目標帯域を下回る場合にACKパケットの代理再送を行うことにより、送信端末2Aによるデータパケットの送信が促され、滞っていた通信を促進させる効果が得られる。
 ところで、TCPの輻輳制御技術の1つに、「Fast Recovery」がある。この技術によれば、送信端末2Aが連続して3個の同じACKパケットを受信した場合には、送信端末2Aは、パケット破棄は一時的なものであるとして、輻輳ウィンドウ(congestion window)サイズを縮小させることなく、データパケットを再送する。上記のACKパケットの代理再送処理によれば、「Fast Recovery」によるデータパケットの再送機能が促され、これにより、送信端末2Aの帯域を増強する効果が得られる。
 なお、代理再送されたACKパケットが送信端末2Aにおいて既に受信済であったとしても、送信端末2Aは、従来と同様に重複して受信したACKパケットを処理するため、ACKパケットの代理再送がTCP通信に悪影響を及ぼすことはない。
 図8及び図9を参照して説明したとおり、帯域の促進では、帯域調整装置1(を備える中継装置3)が、送信端末2Aや受信端末4Bの代理でパケットを再送する。帯域調整装置1による代理再送の方が、TCPの再送機能によるパケット再送よりも早く実行されるため、経路上でパケット破棄が発生し、これにより通信が滞っているような場合には、かかる代理再送によって、より迅速に通常の通信の状態へと復帰することが可能となる。
 図10~図13を参照して、本実施形態に係る帯域調整装置1が、送信端末2Aと受信端末4Bとの間で送受されるパケットを監視し、帯域の抑制または促進の帯域調整を行う方法について、フローチャートを参照して説明する。
 図10は、図3のパケット判別部21による受信したパケットの判別処理を示したフローチャートである。帯域調整装置1は、他のモジュール30、32からパケットを受信したことを契機として、図10に示す処理を開始する。
 まず、ステップS1で、受信したパケットがTCPパケットであるか否かを判定し、TCPパケットである場合(ステップS1でyesの場合)には、ステップS2で、図3のセッション管理部22に受信したパケットを渡し、処理を終了する。ステップS1の判定において、受信したパケットがTCPパケットでないと判定した場合(ステップS1でnoの場合)には、ステップS3に進み、帯域調整装置1においては特に処理を行わず、パケットを中継し、処理を終了する。
 ステップS1におけるパケットの判別は、実施例では、IPヘッダの所定のフィールドを参照することにより行っている。例えば、IPv4においては、プロトコル(Protocol)フィールドの値を参照し、IPv6においては、ネクストヘッダ(Next Header)フィールドの値を参照することにより、TCPパケットであるか否かを判別する。IPヘッダのフォーマットについては公知の技術であるので、詳細な説明は省略する。
 図10に示すとおり、実施例では、TCPパケットであるか否かを判定し、TCPパケットについては全て帯域調整の対象として処理を行っているが、これに限定されるものではない。例えば、ステップS1において、IPヘッダやTCPヘッダに含まれるIPアドレスやポート番号を参照し、IPアドレスやポート番号が所定の範囲に属する場合には、ステップS2に進み、帯域調整の対象パケットとする等の変形が可能である。所定の範囲のIPアドレスやポート番号を帯域調整の対象と判断することにより、特定の端末間の通信に対して積極的に帯域調整を行っていくことが可能となる。本発明は、セッションを識別する指標として使用可能な値及びセッションにおけるパケットの順序を示す値をパケット内に格納する通信プロトコルに対して一般に適用可能である。このような通信プロトコルとして、例えばIPsec(Security Architecture for Internet Protocol)ESP(Encapsulating Security Payload)、RTP(Real-time Transport Protocol)等が挙げられる。
 図11は、受信帯域測定部23による帯域測定処理を示したフローチャートである。図10のパケットの判別処理により帯域調整の対象とされたパケットは、図3のセッション管理部22に渡される。セッション管理部22は、必要な情報をセッションテーブル13に登録すると、パケットを受信帯域測定部23に渡す。帯域調整装置1の受信帯域測定部23は、セッション管理部22からパケットを受け付けると、図11に示す処理を開始する。
 まず、ステップS11で、パケットがデータパケットであるか否かを判定する。セッション管理部22から受け取ったパケットがデータパケットである場合(ステップS11でyesの場合)には、ステップS12に進み、データパケットのシーケンス番号が過去に受信したパケットと重複するか否かによらずに、単位時間当たりに中継したデータ量を更新し、ステップS15に進む。セッション管理部22から受け取ったパケットがACKパケットである場合(ステップS11でnoの場合)には、ステップS11からステップS13に進む。
 ステップS13で、受信パケットのACK番号が、最大ACK番号であるか否かを判定する。詳しくは後述するが、最大ACK番号とは、帯域調整装置1が受信したACKパケットに含まれるACK番号のうち、値が最大のものをいい、ステップS13の判定は、セッションテーブル13に保持されている最大ACK番号と受信パケットのACK番号とを比較することにより行う。受信したパケットのACK番号が最大である場合(ステップS13でyesの場合)には、ステップS14に進み、単位時間当たりのACK量を更新すると、ステップS15に進む。受信したパケットのACK番号が最大でない場合(ステップS13でnoの場合)には、そのACK番号のACKパケットについては中継済であるとして、特に処理を行わず、ステップS15に進む。
 ステップS15では、単位測定時間が経過したか否かを判定し、未だ単位測定時間が経過していない場合(ステップS15でnoの場合)は、特に処理を行わず、処理を終了する。単位測定時間とは、データパケットのデータ量やACKパケットのACK量の測定を行うために予め定めておいた時間をいい、セッションテーブル13に値が格納されている。詳しくは、図30を参照して説明する。
 ステップS15において、単位測定時間が経過したと判定した場合(ステップS15でyesの場合)には、ステップS16で、単位時間当たりのデータ量・ACK量の最大値及び最小値を更新する。これとともに、それぞれステップS12及びステップS14で更新した単位時間当たりのデータ量・ACK量の値をクリアし、処理を終了する。
 帯域調整部24は、目標帯域と、図11に示す帯域測定処理により求まる測定帯域との比較に基づき、帯域調整処理を実行する。帯域調整処理を実行する契機としては、例えば、帯域調整装置1が中継パケットを受信するタイミングや、定期的な割り込み処理のタイミングが挙げられる。実施例では、定期的な割り込み処理のタイミングで帯域調整を行うこととし、この場合の帯域調整処理について、図12を参照して説明する。
 図12は、帯域調整部24による帯域調整処理の割り込み処理を示したフローチャートである。上記のとおり、実施例では、帯域調整装置1は、所定の時間間隔で、定期的に図12に示す処理を開始する。
 まず、ステップS21で、割り込み処理を実行する割り込み周期の単位時間を経過したか否かを判定する。未だ割り込み処理の周期を経過していない場合(ステップS21でnoの場合)は、特に処理を行わず、処理を終了する。
 一方、割り込み処理の周期を経過している場合(ステップS21でyesの場合)には、ステップS22に進み、帯域調整処理と、必要と判断した場合には、目標帯域を調整する処理を実行する。帯域調整処理及び目標帯域を調整する処理の詳細については、後述する。また、帯域調整処理の実行に際して必要な場合には、バッファ部14にバッファリングしておいたパケットを利用する。バッファリング処理については、後述する。帯域調整処理を実行すると、処理を終了する。
 図13は、帯域調整部24による帯域調整処理を示したフローチャートである。上記のとおり、定期的な割り込み処理や、中継パケットの受信を契機として、図13に示す処理を開始する。
 まず、ステップS31で、単位調整時間が経過したか否かを判定する。「単位調整時間」とは、中継装置3のデータ転送量を計測する時間をいう。未だ単位調整時間が経過していない場合(ステップS31でnoの場合)は、ステップS32に進み、保持している単位転送量をクリアすると、ステップS33に進む。既に単位調整時間が経過している場合(ステップS31でyesの場合)は、特に処理を行わず、ステップS33に進む。
 ステップS33で、図3のバッファ部14にデータパケットがバッファリングされているか否かを判定する。バッファ部14にデータパケットがバッファリングされている場合(ステップS33でyesの場合)には、ステップS34に進み、更に、データパケットについての帯域と目標帯域とを比較する。具体的には、データパケットの単位転送量が、セッションテーブル13から読み出した目標転送量を下回るか否かを判定する。ここで、「パケットの単位転送量」とは、受信帯域測定部23が測定する、上記単位調整時間内に帯域調整装置1が転送したデータ量であって、図11の帯域測定処理において測定した方向についての転送データ量をいう。
 ステップS33で、バッファ部14にデータパケットがバッファリングされていない場合(ステップS33でnoの場合)は、ステップS36に進む。
 ステップS34で、データパケットの単位転送量が目標転送量を下回る場合(ステップS34でno/抑制の場合)には、帯域の抑制を行い、ステップS36に進む。上記のとおり、帯域の抑制処理では、目標転送量に対してデータパケットの単位転送量が所定の範囲内になるようにデータパケットの送出間隔を制御している。
 ステップS34の判定において、データパケットの単位転送量が目標転送量を上回る場合(ステップS34でyes/促進の場合)には、ステップS35に進み、帯域の促進を行う。上記のとおり、帯域の促進処理では、バッファ部14にバッファリングしておいたデータパケットを、目標転送量に応じて転送する。
 送信方向についての帯域制御処理を実行すると、ステップS36以降の受信方向についての帯域制御処理を行う。ステップS36~ステップS38の処理については、バッファ部14にACKパケットがバッファリングされている場合には、ACKパケットの単位転送量と目標転送量との大小関係に応じて帯域の抑制や促進を行う処理であり、それぞれステップS33~ステップS35のデータパケットに対する処理と対応するものである。
 なお、図12のステップS21の割り込み周期は、図13のステップS31の単位調整時間よりも短い時間を設定する。これは、割り込み周期を単位調整時間よりも短く設定することで、帯域調整処理がなされない空白の期間を作らないためである。
 以上説明したように、本実施形態に係る帯域調整装置1によれば、帯域調整装置1を通過するTCPパケットの転送量を監視して帯域を求め、通信に必要な目標帯域を上回る場合には、パケット送出を制御して帯域を抑制する。求めた帯域が目標帯域を下回る場合には、バッファリングしておいたパケットを送信端末2Aや受信端末4Bに代わり再送(代理再送)して帯域の促進を行う。
 従来のTCP通信の問題点の1つに、バーストトラフィック、すなわち、一時的にピークの高いトラフィックが発生することが挙げられる。バーストトラフィックが発生する原因は、例えば、セッション開始後は初期値で転送を開始し、「とりあえず」バーストトラフィックを送信してしまうためである。サービスを提供するサーバとユーザ間の通信では、サーバ側のネットワークに対して、ユーザ側のネットワークの方が低速なアクセスネットワークで接続されていることも多い。このような構成の下でサーバがバーストトラフィックを送信すると、ユーザ側では、バーストトラフィックを受けきれない可能性が高い。ユーザ側で受けきれないバーストトラフィックは、ユーザ側のアクセスネットワークの接続点でパケット破棄される可能性が高い。
 また、TCP通信では、アプリケーションプログラムがデータを送信し、オペレーティングシステムの機構を使ってTCPやIPのプロトコルスタックが処理し、最後にネットワークドライバがデータを送信する。通常の計算機システムでは、アプリケーションプログラムやオペレーティングシステムは、時分割的なスケジューリングによって動作している。このため、送信データが各種プログラムを経由するごとにスケジューリングが入ることとなり、バースト的に処理されることとなる。負荷の高いサーバでは、この処理のバースト性が大きくなる傾向が強く、バーストトラフィックにつながることがある。
 バーストトラフィックは、ネットワーク経路で輻輳の原因となり得る。特に、多くのTCPセッションを集約するルータ等では、常に輻輳が発生する危険がある。しかし、本実施形態に係る帯域調整装置1によれば、実際の帯域が目標帯域を上回る場合には、帯域の抑制を行う。これにより、バーストトラフィックを効果的に抑止することが可能となる。
 更には、帯域調整装置1は、自装置を通過するパケットの帯域を測定し、自装置を通過するパケットを制御している。従来のTFRC(TCP-Friendly Rate Control)等のように、受信端末4Bがパケット破棄情報を通知したり、送信端末2Aが遅延をパケットごとに測定したりする必要がない。また、経路上に帯域調整装置1が配置されていれば、上記の帯域調整処理を実施することが可能であるので、送信端末2Aや受信端末4Bは、必ずしも帯域調整装置1を備えている必要もない。
 また、仮に、帯域調整のために、パケットに変更を加えてパケット長を変更するとすれば、帯域調整を行う装置においてパケットを作り直す必要があり、処理負荷の増大や、他のネットワーク機器への影響が懸念される。しかし、本実施形態に係る帯域調整方法では、パケットの転送間隔を制御しているのみであるため、このような問題も発生しない。
 そして、本実施形態に係る帯域調整方法では、測定帯域が目標帯域を上回る場合・下回る通信について、帯域調整が必要と判断し、それぞれ帯域の抑制・促進を行う。帯域調整を実施する必要のない通信については、パケットを転送するのみである。このような方法で帯域調整を行っているため、中継装置3において帯域調整の必要な通信と帯域調整不要な通信とが競合することがあっても、帯域調整不要の通信の速度に悪影響を与えることもない。
〔バッファリング〕
 上記の帯域調整処理の説明においても述べたとおり、本実施形態に係る帯域調整装置1は、バッファ部14にパケットをバッファリングしておくことにより、帯域の抑制や促進を行っている。次に、バッファリングしたパケットを利用する方法について説明する。
 図14は、データパケットをバッファリングする方法を説明する図である。
 図14に示すとおり、中継装置3に備えられる帯域調整装置1は、データパケットを図3のバッファ部14にバッファリングしておく。そして、バッファ部14にバッファリングしているデータパケットを複写し、複写したデータパケットを受信端末4Bに送信する等の処理を実行する。
 帯域調整装置1がバッファ部14の空きを監視して、帯域調整装置1や中継装置3のメモリが枯渇したことを認識すると、データパケットをバッファリングせず破棄することとしてもよい。これは、破棄したデータパケットが受信端末4Bまで届いていないような場合であっても、いずれ送信端末2AがTCPの機能によりデータパケットの再送を行うため、通信上の問題は生じない。
 ACKパケットについても同様のバッファリングを行う。データパケットのバッファリングと同様に、メモリの容量を超える場合にはACKパケットを破棄するとしても、受信端末4BがTCPの機能によりACKパケットの再送を行うため、通信上の問題は生じない。
 更に、帯域調整装置1が、バッファ部14へのパケットのバッファリング機能を利用して以下の処理を実行する構成とすることもできる。
 例えば、バッファリングするデータパケットやACKパケットを、シーケンス番号やACK番号順に並べてバッファリングすることもできる。例えばネットワークの経路により、受信端末4Bに到着する順序が入れ替わることがある。このような場合であっても、シーケンス番号やACK番号順にパケットを並べておくことで、帯域調整装置1を備えるネットワーク機器(実施例では中継装置3)において順序を修正することができる。
 また、受信したパケットのシーケンス番号やACK番号等をバッファ部14に既にバッファリングしているパケットのそれと比較して、重複するパケットはバッファリングせずに破棄することもできる。パケットを受信する端末装置(受信端末4Bや送信端末2A)においては、重複するパケットを破棄する処理が不要となる。
 図15は、バッファリングしたACKパケットを利用する方法を説明する図である。
 ACKパケットに関しては、更に、バッファリングしておくパケット数を1つに限定する構成とすることも可能である。帯域調整装置1が受信したACKパケットのACK番号のうち、最大のACK番号をとるACKパケットをバッファリングしておく。TCPにおいては、最大のACK番号が分かれば、次に送信すべきデータパケットのシーケンス番号を判断可能であるためである。図15の例では、中継装置3の帯域調整装置1は、ACK番号が「5」のACKパケットAP(5)を受信端末4Bから受信すると、それまでバッファ部14に保持していたACK番号「4」のACKパケットAP(4)を破棄し、最大のACK番号を持つACKパケット(5)をバッファリングする。そして、このACKパケットAP(5)を用いて、先述の帯域の促進処理を実行する。
 パケットロス等により受信端末4Bにおいてデータパケットを受信していないような場合であっても、先述のとおり、帯域の促進処理を実行することで、安定した通信を供給することが可能となる。そこで、帯域調整装置1は、バッファリングするACKパケット数が1のみであっても、実施例では、バッファリングしたACKパケット(図15においてはACKパケットAP(5))を複写して送信することにより、帯域調整を実行している。
 ところで、ACKパケットは、受信端末4Bがデータパケットを受信していない期間についても、ある頻度(例えば目標帯域)で送信端末2Aに返しておくことが望ましい。そこで、帯域調整装置1は、所定の頻度で送信端末2AにACKパケットが返るように、バッファ部14にバッファリングしているACKパケットを複写し、送信する。バッファ部14から複写・送信がなされたACKパケットは、受信端末4Bからも送信され、送信端末2Aにおいては重複して受信することになるが、送信端末2Aは、公知のIPネットワークの仕様の範囲内で処理を行う。このため、このようなACKパケットの再送により通信に問題が発生することはない。
 次に、図16及び図17を参照しつつ、上記のバッファリング処理に関して、バッファ部14を構成するバッファメモリを管理する方法について説明する。バッファ部14は、セッションテーブル13により管理され、セッションの一の方向ごと、すなわち、図2のA→B方向及びB→A方向のそれぞれについて用意したキュー(待ち行列)である。キューは、リンクトリスト等のデータ構造により実現される。リンクトリストについては、公知の技術であるので、説明は省略する。
 図16は、データパケットのバッファリング処理を示したフローチャートである。図3の帯域調整装置1の受信帯域測定部23は、データパケットをセッション管理部22から受け取ると、図16に示す処理を開始する。
 まず、ステップS41で、受け取ったデータパケットのシーケンス番号と同一のシーケンス番号を有するデータパケットがキュー(バッファ部14)に存在するか否かを判定する。同一のシーケンス番号を有するデータパケットが存在する場合(ステップS41でyesの場合)には、ステップS42に進み、受け取ったデータパケットについては破棄し、処理を終了する。
 ステップS41の判定において、同一のシーケンス番号を有するデータパケットがない場合(ステップS41でnoの場合)には、ステップS43に進み、シーケンス番号が示す順序にしたがってデータパケットをキューに追加し、処理を終了する。
 図17は、ACKパケットのバッファリング処理を示したフローチャートである。図3の帯域調整装置1の受信帯域測定部23は、ACKパケットをセッション管理部22から受け取ると、図17に示す処理を開始する。図17においては、最大ACK番号をとるACKパケットをバッファリングする処理を示す。
 まず、ステップS51で、受け取ったACKパケットのACK番号が、最大値をとるか否かを判定する。受け取ったACKパケットのACK番号が、これまでに受信したACKパケットの中で最大値ではない場合(ステップS51でnoの場合)には、ステップS52に進み、受け取ったACKパケットについては破棄し、処理を終了する。
 ステップS51の判定において、受け取ったACKパケットのACK番号が最大値をとる場合(ステップS51でyesの場合)には、ステップS53に進む。そして、帯域調整装置1が複数のACKパケットを保持する構成をとる場合には、ACK番号が示す順序にしたがってACKパケットをキューに追加する。キューの長さが1であり、1つのACKパケットしか保持しない構成をとる場合には、キューに保持されているACKパケットを破棄するとともに、受け取った新しいACKパケットをキューに記憶し、処理を終了する。
 図16や図17に示すバッファリング処理は、上記の帯域調整を行う際に実行される処理であるので、従来技術と異なり、送信端末2Aが継続的に過度のパケットを送出し続けることがない。これにより、バッファリングするパケット数が増え続けることや、定常的に大きな値になることがない。
 上記のとおり、実施例では、パケット用のバッファメモリは、あるセッションの通信方向ごと、すなわち、データパケットのバッファ用とACKパケットのバッファ用とで、少なくとも2個を用意する。それぞれのバッファメモリにバッファリングするパケット数は、目標帯域と、測定した帯域との差に依存する。例えばデータパケットのバッファリングするパケット数については、例えば、TCP通信の初期転送時のTCPウィンドウサイズのパケット数程度を設定する。バッファメモリのパケットデータを格納する領域を64キロバイト、初期転送時のTCPウィンドウサイズを1450バイトとすると、パケット数は、64KB/1450B=45パケット程度である。
 パケット用のバッファメモリには、パケットのデータだけでなく、バッファ部14の管理を行うための管理情報を含むため、メモリ量は、パケット長より大きい。ここで、パケット当たり2キロバイト、1セッション当たり最大50パケットをバッファリングすると仮定すると、セッション当たり必要なメモリ量は100キロバイト、1万セッションでは、1ギガバイトとなる。
 帯域調整処理により、目標帯域に応じて送信端末2Aからの送信帯域を制御しているため、実際には、1セッション当たりの平均バッファ量は、10パケット以下となる。1ギガバイトのバッファメモリを用意すれば、10万セッションの同時中継であっても処理が可能である。
 複数のセッションを同時に中継する場合に備えてバッファメモリの容量を確保しておいた場合であっても、バッファメモリが枯渇するケースも発生し得る。このような場合には、パケットのバッファリングは行わずに、帯域調整処理を継続する。先述のとおり、送信端末2Aや受信端末4Bは、TCPの機能によりパケットの再送を行うため、メモリが枯渇した場合にはバッファリングを行わないこととしても、通信上の問題は発生しない。バッファメモリに一時的に過負荷がかかる可能性はあるものの、通信に悪影響を与えることなく、帯域調整処理を行うことができる。
 更には、実施例のように、帯域調整装置1を備えるネットワーク機器が中継装置3である場合には、バッファ部14に格納されているパケットのうち、バッファリングの不要なデータパケットを判断して破棄する構成とすることもできる。図18を参照して、バッファリングの不要なデータパケットを破棄する方法について具体的に説明する。
 図18は、バッファデータを破棄する処理を説明する図である。
 受信端末4Bは、データパケットを受信すると、次に送信装置2Aが送信すべきデータパケットのシーケンス番号をACK番号に含めて、ACKパケットを返送する。本実施形態に係る帯域調整装置1を備える中継装置3は、ACKパケットを受信すると、バッファ部14のデータパケットのシーケンス番号を参照する。そして、受け取ったACK番号と一致するシーケンス番号のデータパケットがバッファリングされている場合には、ACKパケットを中継せずに破棄するとともに、不要なデータパケットがバッファリングされていると判断する。そして、ACK番号よりも古いデータパケットを破棄する。すなわち、次に送信端末2Aが送信すべきパケットのシーケンス番号よりも小さいシーケンス番号をとるデータパケットを破棄する。
 更には、中継装置3は、以降に送信端末2A側から到着したデータパケットのうち、ACK番号よりも値の小さいシーケンス番号のデータパケットについては、バッファリング及び転送は不要と判断し、破棄する。
 図18に示す例では、帯域調整装置1を備える中継装置3は、ACK番号「5」のACKパケットAP(5)を受信する。これは、受信装置4Bにおいてはシーケンス番号「4」のデータパケットDP(4)を受信済であることを表す。したがって、中継装置3は、シーケンス番号が5-1=4以下のデータパケットDP(4)、DP(3)についてはバッファリング・転送は不要と判断し、破棄する。
 このように、帯域調整装置1を備える中継装置3において、ACKパケットのACK番号を参照して古いデータパケットを破棄することにより、中継装置3から受信端末4Bまでの無駄なトラフィックを削減するとともに、必要なバッファ量の節約に資する。
 なお、先述のとおり、本実施形態に係る帯域調整装置1は、A→B方向及びB→A方向の2方向のうち、1方向のパケットのみを中継する場合であっても帯域調整が可能である。しかし、図18に示すパケットを破棄する処理に関しては、ACKパケットすなわちB→A方向の通信の状況に基づき、データパケットすなわちA→B方向の通信を制御している。したがって、図18のパケット破棄の処理は、両方向の通信を監視している場合に適用可能である。
〔代理再送〕
 帯域の促進処理の説明において、帯域調整装置1が送信端末2Aや受信端末4Bに代わりパケットを送信(代理再送)することについて述べた。ここでは、代理再送の具体的な方法及びその応用例について、詳しく説明する。
 図19は、データパケットの代理再送処理を示したフローチャートである。図3の帯域調整装置1の帯域調整部24は、例えば、図13に示す帯域調整処理を実行するとともに、図19に示すデータパケットの代理再送処理を実行する。
 まず、ステップS61で、測定帯域が目標帯域を下回っているか否かを判定する。測定帯域が目標帯域を下回る場合(ステップS61でyesの場合)には、特に処理を行わず、処理を終了する。
 一方、測定帯域が目標帯域以上である場合(ステップS61でnoの場合)には、ステップS62に進む。そして、セッションテーブル13で管理しているACK番号の最大値または最大値よりも大きい値のシーケンス番号を有するデータパケットをバッファ部14から複写し、受信端末4Bに送信し、処理を終了する。
 図20は、ACKパケットの代理再送処理を示したフローチャートである。図19に示す処理と同様に、帯域調整部24は、図13に示す帯域調整処理を実行するときに、図20に示すACKパケットの代理再送処理を併せて実行することもできる。
 まず、ステップS71で、測定帯域が目標帯域を下回っているか否かを判定し、測定帯域が目標帯域を下回る場合(ステップS71でyesの場合)には特に処理を行わずに処理を終了する。これは、図19のステップS61でyesの場合と同様である。
 一方、測定帯域が目標帯域以上である場合(ステップS71でnoの場合)には、ステップS72に進む。そして、セッションテーブル13で管理しているACK番号の最大値を有するACKパケットをバッファ部14から複写し、送信端末2Aに送信し、処理を終了する。
 帯域調整処理において、データパケットやACKパケットの代理再送を行うことによる効果については、帯域調整処理の説明において述べたとおりである。
 更には、図19や図20に示すパケットの代理再送処理を利用して、帯域調整装置1においてデータパケットの再送の要否を判断し、必要と判断した場合にデータパケットを自動再送することも可能である。
 図21は、データパケットの自動代理再送方法を説明する図である。
 受信端末4Bから送信されたACKパケットを受信した(中継装置3の)帯域調整装置1は、受信したACKパケットに対応するデータパケットをバッファ部14に保持している場合には、ACKパケットを送信端末2Aに転送することなく破棄するとともに、バッファリングしているデータパケットを受信端末4B宛に送信する。送信端末2AがACKパケットに含まれるACK番号にしたがって対応するデータパケットを送信する場合と比較すると、中継装置3(の帯域調整装置1)がACKパケットに対応するデータパケットを送信しているので、ここでは、データパケットの「自動代理再送」と表現している。
 図21に示す例では、帯域調整装置1を備える中継装置3は、ACK番号「5」のACKパケットAP(5)を受信する。帯域調整装置1は、バッファ部14にシーケンス番号「5」のデータパケットDP(5)をバッファリングしている場合には、ACKパケットを送信端末2Aに転送せず、バッファ部14のシーケンス番号「5」のデータパケットDP(5)を複写して、受信端末4Bに再送する。ACK番号「6」のACKパケットAP(6)を受信すると、シーケンス番号「6」のデータパケットDP(6)についても同様に自動再送する。
 なお、先述のとおり、本実施形態に係る帯域調整装置1は、A→B方向及びB→A方向の2方向のうち、1方向のパケットのみを中継する場合であっても帯域調整が可能である。しかし、図21に示す自動代理再送処理に関しては、ACKパケットすなわちB→A方向の通信の状況に基づき、データパケットすなわちA→B方向の通信を制御している。したがって、自動代理再送処理は、両方向の通信を監視している場合に適用可能である。
 図22は、データパケットの自動代理再送処理を示したフローチャートである。図3の帯域調整部24は、反対方向の帯域調整部からACKパケットのACK番号を通知されたことを契機として、図22に示す処理を実行する。
 まず、ステップS81で、反対方向の帯域調整部において受信したACKパケットのACK番号に対応する(すなわちACK番号と一致する)シーケンス番号のデータパケットがバッファ部14のキューに格納されているか否かを判定する。該当するデータパケットがキューにない場合(ステップS81でnoの場合)には、特に処理を行わず、処理を終了する。
 ステップS81の判定において、該当するデータパケットがキューに格納されている場合(ステップS81でyesの場合)には、ステップS82に進む。そして、該当するデータパケットをバッファ部14から複写して、受信端末4Bに再送し、処理を終了する。
 帯域調整装置1を備える中継装置3において図21及び図22に示すデータパケットの自動代理再送を行うことで、中継装置3から送信端末2Aまでの往復遅延時間、及び、トラフィックの節約が可能となる。
〔データパケットの自動冗送〕
 帯域調整装置1のバッファリング機能を利用して、データパケットの冗送処理を実行することも可能である。すなわち、帯域調整装置1を備える中継装置3から受信端末4Bまでの経路上において、パケット破棄の確率が高い場合には、中継装置3が、データパケットを所定の頻度で複写して重複送信(冗送)する。中継装置3は、パケット破棄の確率を、ACKパケットの受信状況により判断する。
 中継装置3は、冗送を含めた中継帯域(データパケット送信方向の帯域)と、受信帯域(ACKパケットの送信方向の帯域)とを観測した結果に応じて、冗送割合を調整することも可能である。例えば、冗送を含めた中継帯域に対して受信帯域が小さい場合には、中継装置3から送信されたデータパケットの破棄の確率が高いと判断して、冗送するデータパケットの割合を上げる等の処理を実行する。
 このようなデータパケットの冗送処理により、パケット破棄の確率を低下させ、TCP通信の性能を向上させることも可能である。
 なお、先述のとおり、本実施形態に係る帯域調整装置1は、A→B方向及びB→A方向の2方向のうち、1方向のパケットのみを中継する場合であっても帯域調整が可能である。しかし、上記のデータパケットの自動冗送処理に関しては、ACKパケットすなわちB→A方向の通信の状況に基づき、データパケットすなわちA→B方向の通信を制御している。したがって、自動冗送処理は、両方向の通信を監視している場合に適用可能である。
〔多重使用〕
 上記の帯域調整機能を備えるネットワーク機器については、通信経路上に複数設置することも可能である。帯域調整装置1は、パケットの変更等は行っておらず、パケットの伝送間隔を目標帯域に応じて調整しているだけである。このため、通信経路上に帯域調整装置を複数配置し、各帯域調整装置1において帯域調整処理を実行する構成をとることが可能である。このように、帯域調整装置1を多重使用する構成としても、パケットの変更は行っていないため、帯域調整装置1間で相互に悪影響を与えることがない。また、各帯域調整装置1が帯域調整処理を実行することで、各経路において通信が安定化することとなるため、1台の帯域調整装置1のみで帯域調整を行う場合と比べて、更に高い効果が期待できる。
 なお、帯域調整装置1を多重使用し、各帯域調整装置1において上記バッファリング処理を行う場合には、目標帯域は、低目に設定しておくことが望ましい。経路上の複数箇所でバッファリングを行うことによる中継遅延の増加が予測されるためである。目標帯域を比較的低目に設定しておくことで、帯域の促進のためにバッファリングを行う頻度を低くすることができ、これにより、中継遅延の増加を効果的に抑制することができると見込まれる。
〔サービス通知〕
 多くのセッションを管理することにより、帯域調整装置1のセッションテーブル13が一杯になると、帯域調整装置1(を備える中継装置3)は、あふれたTCPセッションに対しては、単にパケットの中継のみを行う。このため、あふれたTCPセッションについては帯域調整が実施されないこととなる。上述の帯域調整装置1の多重使用により、経路上に複数の帯域調整装置1が設けられているとしても、基本的には、先に伝送されたTCPセッションに対して帯域調整処理を実施していくことになるため、最初の帯域調整装置1であふれたTCPセッションは、以降の帯域調整装置1においても帯域調整がなされない場合も考えられる。
 そこで、多重使用のシステム構成において、いずれかの帯域調整装置1において帯域調整処理がなされたパケットであるか否かを示す情報を、TCPパケットに含めることとすることができる。帯域調整装置1は、帯域調整処理が未実施のパケットに対して優先的に帯域調整処理を行っていく。経路上を伝送されるパケットが帯域調整処理済であるか否かを示す情報を、「サービス通知情報」とし、以下に、多重使用の構成において、サービス通知情報を参照して帯域調整処理を実施する方法について、具体的に説明することとする。
 図23は、サービス通知情報の利用により帯域調整処理を分散させる方法を説明する図である。図23は、送信端末2A及び受信端末4Bが、2台の中継装置3A、3Bを介して通信を行う場合を例示する。説明のため、送信端末2A-中継装置3A間、中継装置3A-中継装置3B間及び中継装置3B-受信端末4B間の経路をそれぞれ経路(a)、(b)及び(c)とする。
 2つのパケットP1、P2が経路(a)~(c)を経由して受信端末4Bにおいて受信されるまでの間に、帯域調整装置1を備える中継装置3A、3Bが、パケットP1、P2を中継する。各中継装置3A、3Bの帯域調整装置1A、1Bは、パケットP1、P2のサービス通知情報を参照し、帯域調整処理が未実施のパケットに対して優先的に帯域調整を実施することにより、通信システム内で帯域調整処理の分散を行う。
 経路(a)を経由して中継装置3Aに到達したパケットには、いずれもサービス通知情報には帯域調整処理が「未実施」であることを示す値が格納されている。中継装置3Aの帯域調整装置1Aは、中継するパケットP1、P2のうち、一部のパケットP1について帯域調整を行う。パケットP2についてはそのまま中継する。
 経路(b)を経由して中継装置3Bに到達したパケットのうち、パケットP1のサービス通知情報には、帯域調整処理が「済」であることを示す値が設定されているが、パケットP2のそれには、帯域調整処理が未実施であることを示す値が格納されている。そこで、中継装置3Bの帯域調整装置1Bは、パケットP1、P2のサービス通知情報を参照して、帯域調整処理が未だなされていないパケットP2に対して優先的に帯域調整を行う。経路(c)では、帯域調整されたパケットP1、P2が伝送される。
 上記のとおり、経路上に複数の帯域調整装置1が設置されており、サービス通知情報を参照して、帯域調整処理が未実施のパケットを判断して優先的に帯域調整を行っていくことにより、帯域調整処理を分散させることができる。これにより、経路上を伝送されるパケットがいずれかの帯域調整装置1において帯域調整される可能性を高めることができる。
 次に、図24及び図25を参照して、サービス通知情報の設定例について説明する。
 図24は、サービス通知情報の設定方法の一例を示す図である。図24に示す例では、サービス通知情報をTCPヘッダの予約ビットである1ビットを利用して、サービス通知フラグf1をTCPパケットに付加する。サービス通知フラグf1に、例えば「1」が格納されている場合にはそのパケットは帯域調整処理が済であり、「0」が格納されている場合には、未だ帯域調整処理がなされていなことを表すこととする。TCPヘッダの他のフィールドについては、公知の技術であるので、説明を省略する。
 TCPオプションの追加等は行わずに、図24に示すような方法でサービス通知フラグf1を設定することで、パケットの変更を最小限に留めている。
 図25は、サービス通知情報の設定方法の他の例を示す図である。図25に示す例では、TCPヘッダのUrgent(URG)フラグf2に「0」が設定されているパケットに関しては、緊急ポインタ(Urgent Pointer)pのフィールドにサービス通知情報を設定している。ここでは、他のフィールドの説明については、図24の場合と同様に省略する。
 TCPの仕様では、緊急ポインタpは、URGフラグf2に「1」が設定されている場合にのみ有効と定義されている。このため、上記のように、URGフラグf2に0が設定されている場合、緊急ポインタpは無視されることとなり、通常のTCP通信に影響を与えることがない。
 帯域調整装置1を備える中継装置3は、他の装置から受信したTCPパケットに対して帯域調整を行った場合には、図24や図25に例示するようなTCPヘッダの所定のフィールドのサービス通知フラグ(f1やf2)に、帯域調整処理実施済であることを示す値、ここでは「1」を設定してから、TCPパケットを転送する。帯域調整処理が未実施であるパケットには「0」が設定されているので、この所定のフィールドの値を参照することにより、各帯域調整装置1が、帯域調整処理の要否を判断する。
 なお、サービス通知フラグは、経路上に設けられた複数の帯域調整装置1のうち、少なくとも1台の帯域調整装置1により帯域調整がなされたことを表す。すなわち、サービス通知フラグに実施済であることを示す「1」が格納されているパケットに対して、更に他の帯域調整装置1において帯域調整を実施し、上記の多重使用としてもよい。帯域調整装置1は、サービス通知フラグの値に係わらず、例えばセッションテーブル13の空きがある場合には、帯域調整の対象としてもよい。
 また、上記のフラグの値は、一例であり、帯域調整実施済であることを表す値が「0」であり、未実施であることを表す値が「1」である等でもよい。
 以上説明したように、上記のサービス通知を行うことで、帯域調整装置1を多重使用する場合であっても、サービス通知フラグ等のサービス通知情報を参照して、帯域調整処理が未実施であることを示す情報が格納されているパケットに対して優先的に帯域調整を行う。結果として、通信システムに設けられた複数の帯域調整装置1のそれぞれに帯域調整処理が分散されることとなり、より多くのセッションに対して帯域調整処理を実施することが可能となる。
〔セッション管理〕
 先に図10のパケット判別処理の説明においても述べたとおり、実施形態に係る帯域調整装置1は、TCPパケットであると判別したパケットを帯域の抑制及び促進の対象とする。帯域調整装置1は、「Per Flow Queuing」により、フロー単位でTCP通信を識別し、TCPセッションごとにセッションを管理して、帯域調整等の処理を行う。図3を参照して説明したとおり、帯域調整装置1は、セッションテーブル13を用いて、TCPセッションを管理する。以下に、セッションの管理方法について具体的に説明する。
 図26は、図3のセッション管理部22によるセッション管理処理を示したフローチャートである。セッション管理部22は、受け付けたパケットがTCPパケットであると判断したパケット判別部21からパケットを受け取ったことを契機として、図26に示す処理を開始する。
 まず、ステップS91で、セッション識別コードを計算する。セッション識別コードは、TCPパケットがいずれのセッションのものであるかを識別するための情報である。セッション識別コードの具体的な求め方については、後述する。
 ステップS92で、ステップS91において求めたセッション識別コードが、セッションテーブル13に登録されているか否かを判定する。セッション識別コードが既にセッションテーブル13に登録されている場合(ステップS92においてyesの場合)は、帯域調整装置1において帯域測定・帯域調整を行ったことのあるセッションであるので、新たな登録は不要であるので、ステップS100に進む。ステップS100では、パケットを受信帯域測定部23に転送し、処理を終了する。
 ステップS92の判定において、ステップS91で求めたセッション識別コードがセッションテーブル13に未登録の場合(ステップS92においてnoの場合)は、セッションテーブル13への登録が必要であるので、ステップS93に進み、セッションテーブル13に空きがあるか否かを判定する。空きがある場合(ステップS93においてyesの場合)は、ステップS99に進み、セッション登録処理を実行する。具体的には、セッション識別コードやセッションに応じた目標帯域、その他必要な情報をセッションテーブル13に登録し、ステップS100に進む。ステップS100の処理については上記のとおりである。
 なお、ステップS99のセッション登録処理において、セッションテーブル13にセッションを登録するときに、目標帯域の初期値の設定を行う。初期値は、IPアドレスやTCPポート番号の範囲等の条件に基づき、予め定義されている複数の値の中から所定の初期値を選択する構成としてもよい。
 セッションテーブル13に空きがない場合(ステップS93においてnoの場合)には、ステップS93からステップS94に進み、既存のセッション、すなわち、セッションテーブル13に登録されているセッションが有効であるか否かを判定する。有効でないセッションが含まれる場合(ステップS94においてnoの場合)は、ステップS94からステップS98に進み、セッション終了処理を実行し、ステップS99に進む。具体的には、パケットの送信先である端末に終了通知を送信するとともに、有効でないセッションをセッションテーブル13から削除して、ステップS99に進む。ステップS99以降の処理については、上記のとおりである。
 セッションテーブル13に登録されているセッションが全て有効な場合(ステップS94においてyesの場合)は、ステップS94からステップS95に進む。そして、ステップS95で、ステップS91においてセッション識別コードを求めたパケットがFINパケットまたはRSTパケットであるか否かを判定する。ステップS95においては、TCPヘッダのコードビットを参照することにより判定を行う。
 ステップS95の判定において、パケットがFINパケットまたはRSTパケットである場合(ステップS95においてyesの場合)は、ステップS95からステップS97に進み、セッション終了処理を実行する。具体的には、パケットの送信先である端末に終了通知を送信するとともに、ステップS91で求めたセッション識別コードを利用して、該当するセッションを取得し、セッションテーブル13から、該当するセッションに係わる情報を削除し、処理を終了する。
 パケットがFINパケットでもRSTパケットでもない場合(ステップS95においてnoの場合)は、ステップS95からステップS96に進み、帯域測定・帯域調整は行わずにそのままパケットを中継し、処理を終了する。
 なお、ステップS91で求めるセッション識別コードは、例えば、IPアドレス及びTCPポート番号の対を用いて算出する。IPアドレス及びTCPポートの対の長さは、Ipv4で10バイト、IPv6で34バイトであり、ここから4バイト程度のセッション識別コードを生成する。図26のフローチャートの説明においても述べたとおり、セッションテーブル13の検索は、セッション識別コードを用いて行う。
 実施例では、セッションテーブル13の検索を効率よく行うため、公知のハッシュテーブルを利用している。この場合、セッション識別コードは、ハッシュ値である。
 具体的には、IPアドレスとTCPポート番号とからハッシュ値を求め、求めた値をセッション識別コードとする。ハッシュ値として適切なセッション識別コードを生成するために、例えば、チェックサム、CRC(Cyclic Redundancy Check)コード等を用いることで、生成されるコードの値を適度にばらつかせることができる。
 あるいは、IPアドレス・TCPポート番号対の情報を、整数加算することにより得られる値をセッション識別コードとしてもよい。このようなコードの生成方法であっても、実用上は十分にコード値をばらつかせることができ、この場合、コード生成処理に要する時間は、1ギガヘルツで動作するマイクロプロセッサで処理した場合には、機械語命令が10命令程度で、10ナノ秒程度である。
 以上説明したように、本実施形態に係るセッション管理方法によれば、帯域調整装置1は、パケットを受信するごとに、セッション識別コードを求め、求めたセッション識別コードがセッションテーブル13に登録されているか否かの判定を行う。求めたセッション識別コードがセッションテーブル13に未登録である場合には、新たにセッションテーブル13への登録を行い、既に登録されている場合には、登録されている情報を利用して、帯域の測定や帯域調整を行う。このように、実施形態に係る帯域調整装置1は、TCPセッションが継続中であることを認識できれば、シーケンス番号やACK番号を追跡して帯域の測定・調整処理が可能であって、TCP通信の状態遷移を監視・追跡する必要がない。したがって、上記のセッションの管理方法を採ることで、帯域調整装置1にかかる負荷を軽減することができる。
〔セッションの監視・セッションの削除〕
 TCP通信は、通常は、FINパケットやRSTパケットにより終了する。これは、図26のステップ95~ステップS97のとおりである。しかし、これ以外にも、端末(送信端末2Aや受信端末4B)の異常終了や、ネットワークの切断等の要因により、通信が正常に終了しないまま放置されることがある。通信が正常に終了せず、放置されている場合であっても、最終的には、端末のタイムアウトにより終了することもある。
 そこで、図26のステップS94~ステップS98の処理のように、新たにセッションの登録を行うタイミングで、所定の期間以上に渡ってパケットが到着していないセッションについては、セッションテーブル13から情報を削除する。あるいは、所定の時間おきにセッションテーブル13を調べ、登録されているセッションの中で、所定の期間以上に渡ってパケットが到着していないものがある場合にはその情報を削除する。
 このように、正常に終了できなかった通信が放置されていることを認識して、セッションテーブル13から登録されている情報を削除することで、セッションテーブル13の領域の無駄な使用を排除し、より多くのセッションについて帯域調整を行うことが可能となる。
 また、帯域調整装置1は、新たにセッションの登録を行うタイミングや所定の期間以上に渡って監視をした結果、パケットが到着していないセッションを認識した場合は、セッションテーブル13から情報の削除を行うとともに、端末に対して通信を終了する旨の通知をし、通信終結処理を実行する。通信終結処理を実行するために、予めTCPセッションの監視時間をタイマで設定しておく。設定した時間を経過したセッションがあれば、そのセッションに係わる情報のセッションテーブル13からの削除、及び端末への終了通知を行う。例えば、TCPコマンドの1つである「RST」を含むRSTパケットを端末に送信することにより、終了通知を行う。RSTパケットを受信した端末は、TCPセッションの強制終了を実行する。
 以上のとおり、通信障害や端末における障害によりTCPセッションが回復不能となった場合には、サーバやクライアントの端末は、帯域調整装置1から受信した終了通知にしたがって、回復不能となったTCPセッションを強制終了させる。ウェブサーバを例に挙げると、10万セッションを管理する必要がある。このため、障害からの回復が不能となったセッションについては強制終了させることで、大量のアクセスを抱えるサーバにかかる処理負荷を大きく軽減させることが可能となる。
〔サービス通知を行う場合のセッション管理〕
 サービス通知情報を用いて、複数の帯域調整装置1の間で帯域調整処理を分散させることについては先に説明したとおりである。ここでは、セッションを管理するときにサービス通知情報を利用する方法について説明する。
 図27は、サービス通知情報を用いたセッション管理処理を示したフローチャートである。ここでは、サービス通知情報として、図24や図25に示すサービス通知フラグを用いる場合を示す。
 図27に示す一連の処理のうち、ステップS91~ステップS100の処理については、それぞれ図26のステップS91~ステップS100と同様であるため、ここでは説明を省略し、図26と異なる処理について説明する。
 ステップS90で、パケット判別部21から受け取ったパケットのTCPヘッダを参照して、サービス通知フラグに帯域調整が未実施であることを示す値が格納されている場合に、ステップS91に進み、上述のステップS91以降のセッション管理処理を実行する。サービス通知フラグに帯域調整処理済であることを示す値が格納されている場合には、セッション管理部22におけるセッション管理対象外のパケットであるとして、特に処理を行わず、処理を終了する。
 ステップS100で、パケットを受信帯域測定部23に転送し、セッションの管理に関して実行すべき処理が完了すると、ステップS101で、サービス通知フラグに、帯域調整処理済であることを示す値を設定し、処理を終了する。
 図28は、サービス通知フラグ処理を示したフローチャートである。図28は、図27のセッション管理処理のうち、ステップS90のサービス通知フラグチェック処理の詳細フローである。
 まず、ステップS111で、TCPヘッダのサービス通知フラグがオン、すなわち、サービス通知フラグに帯域調整処理が実施済であることを示す値が格納されているか否かを判定する。サービス通知フラグがオフ、すなわち、サービス通知フラグには帯域調整処理が未実施であることを示す値が格納されている場合(ステップS111においてnoの場合)は、図27のステップS91以降のセッション管理処理に進む。
 一方、サービス通知フラグがオンである場合(ステップS111においてyesの場合)は、ステップS112に進み、セッションテーブル13に空きがあるか否かを更に判定する。セッションテーブル13に空きがある場合(ステップS112においてyesの場合)は、図27のステップS91以降のセッション管理処理に進む。
 セッションテーブル13に空きがない場合(ステップS112においてnoの場合)は、ステップS113に進み、帯域測定・帯域調整は行わずにそのままパケットを中継し、処理を終了する。
 なお、ステップS112のセッションテーブル13の空きの有無を判定する処理については、既に帯域調整処理がなされたパケットであっても(ステップS111でyesの場合であっても)、セッションテーブル13に空きがあれば、帯域調整の実施が可能と判断し、図27のステップS91以降のセッション管理処理を実行するためである。
 また、ステップS112では、セッションテーブル13に新たに1セッション分の情報を登録するだけの空きがあるか否かを判定しているが、これに限定されるものではない。例えば、所定の割合やしきい値を設定しておき、セッションテーブル13の空きが所定の割合やしきい値を下回るか否かを判定する構成としてもよい。
 このように、サービス通知フラグを参照し、予め処理対象のパケットであると判断した場合にステップS91以降のセッション管理処理を実行する。言い換えると、帯域調整装置1にとっては非処理対象のパケットについてはステップ91以降のセッション管理処理を不要と判断し、処理を行わない。これにより、帯域調整装置1にかかる負荷を軽減する効果が得られる。
〔活性挿入・活性除去〕
 先に図26等の説明においても述べたとおり、帯域調整装置1は、TCPパケットを受信したことを契機として、セッションテーブル13に情報を登録し、帯域の測定・帯域調整を開始する。すなわち、帯域調整装置1は、帯域調整のためにTCP通信の「SYN」から「FIN/RST」までの状態遷移を監視することが不要である。
 このため、あるセッションの最中に帯域調整装置1を備える中継装置3をネットワークに挿入した場合であっても、受信したTCPパケットから帯域調整を行うことが可能となる。また、中継装置3が通信を中継中に帯域調整装置1を備える中継装置3をネットワークから除去した場合や中継装置3が障害等により停止した場合であっても、上記バッファリング処理を行っているため、TCP通信に悪影響を与えずに済む。
 ここでは、セッションの最中に帯域調整装置1を通信システムに設置することを「活性挿入」、セッションの最中に帯域調整装置1を通信システムから除去することを「活性除去」とする。
 本実施形態に係る帯域調整装置1が活性挿入及び活性除去可能なことにより、通信システムを運用する観点からも、効果を有する。
〔セッションテーブル〕
 上記のTCPセッション管理方法においても述べたとおり、帯域調整装置1は、受信したパケットについて帯域調整を行うに当たり、セッションテーブル13にセッションに係わる情報を登録する。ここでは、図29及び図30を参照して、セッションテーブル13のデータ構造等について説明する。
 図29は、セッションテーブル13の構造例を示す図である。図29に示すセッションテーブル13は、送信端末2Aから受信端末4Bの方向及び逆方向の双方向のセッション情報を格納したハッシュテーブル(一次元配列)であり、インデックスと対応付けてセッションテーブルデータを格納する。
 実施例では、ハッシュキーコードをテーブルの大きさで剰余をとった値をハッシュテーブルのインデックスとすることにより、セッション情報の識別を可能としている。かかるインデックスの求め方については、公知の技術を用いている。ハッシュキーコードは、上述のとおり、IPアドレス及びTCPポート番号の対から求める。
 図30は、セッションテーブルデータの構造例を示す図である。ハッシュテーブルのインデックスと対応付けられるセッションテーブルデータは、セッションごとに設けられ、管理情報D1、反対方向のセッション情報の場所を指示するデータD2、パケットの送信元及び送信先のIPアドレスやTCPポート番号に係わるデータD3、時刻データD4(D4-1とD4-2)、単位時間D5、測定帯域データD6、目標帯域データD7、中継帯域データD8、シーケンス番号に係わるデータD9、ACK番号に係わるデータD10及びパケットのバッファデータD11を含む。
 管理情報D1は、帯域調整装置1のセッション管理部22がセッションテーブル13の管理に用いる情報である。
 反対方向のセッション情報の場所を指示するデータD2は、図30に示すセッション情報と対をなすセッション情報のセッションテーブル13上の場所、すなわち図29の「インデックス」を格納する。帯域調整装置1のセッション管理部22等の各部は、データD2を用いて、セッションテーブル13上の反対方向のセッション情報にアクセスする。データD2は、反対方向のトラフィックを中継しない場合には、無効である。
 パケットの送信元及び送信先のIPアドレスやTCPポート番号に係わるデータD3は、ハッシュキーコード(セッション識別コード)、送信IPアドレス、受信IPアドレス、送信ポート番号及び受信ポート番号を含む。
 なお、データD3には、送信元及び送信先のIPアドレスやTCPポート番号が格納されており、実施例では、IPアドレス及びTCPポート番号の対を利用して、ハッシュ子キーコードであるセッション識別コードを求めている。このため、反対方向のセッション情報の場所を指示するデータD2については、データD3を用いて、IPアドレスとTCPポート番号の送信/受信を入れ替えて算出することも可能である。ただし、データD2の領域に予め求めた値を格納しておくことで、ハッシュコード生成に要する時間を節約できる。
 時刻データD4は、セッション開始時刻、データパケット中継時刻及びACKパケット中継時刻等の、帯域調整に係わる各種の時刻情報を含む。例えば、マイクロ秒単位の時刻数値や、Jiffy等のオペレーティングシステムの最小タイマ割り込みで計時する時刻値等の一般的な時刻値を使用する。例えば、現在時刻とセッション開始時刻との差からセッション継続時間が得られ、得られたセッション継続時間を用いて、上記セッションの削除処理等を行う。
 単位時間D5は、帯域調整装置1を備えるネットワーク機器(上記の例では中継装置3)や端末等における内部時刻の単位時間の長さを表す数値である。単位時間は、セッションごとに異なる場合があるので、実施例では、セッションごとに設定している。
 測定帯域データD6は、受信帯域測定部23において測定した帯域を格納し、それぞれ単位時間当たりの測定データ量、最大測定データ量、最小測定データ量、ACK量、最大ACK量及び最小ACK量を含む。単位時間当たりの測定データ量及びACK量は、単位時間D5の期間内に受信帯域測定部23が計測したトラフィック量であり、それぞれの最大値及び最小値には、過去の最大値及び最小値を記録する。
 目標帯域データD7には、単位時間に中継すべきデータパケットやACKパケットの増分の総量を表す情報、すなわち、目標帯域が格納される。目標帯域データD7の各項目の値は、セッション管理部22が、新たにセッションテーブル13に情報を登録するときに、所定の初期値を格納し、例えば反対方向の通信帯域の測定結果等に応じて、値を変更する。帯域の測定方法において説明したとおり、単位時間当たりの転送可能データ量は、データ量の積算である。これに対し、単位時間当たりの転送可能ACK量は、ACKパケット長の増分ではなく、ACKの増分である。
 中継帯域データD8は、帯域調整部24の帯域調整により中継されるパケットの帯域を格納し、単位時間当たりの中継データ量、最大中継データ量、最小中継データ量、中継ACK量、最大中継ACK量及び最小中継ACK量を含む。データ量及びACK量は、測定帯域や目標帯域と同様に、それぞれデータ量の積算及びACKの増分からなる。なお、ACKが増えない場合には、中継ACK量は「0」となる。また、ACKパケットの順序が入れ替わることにより、ACK量が減少する場合には、該当するACKパケットについては無視してACK量を計測する。
 シーケンス番号に係わるデータD9は、バッファ部14にバッファリングしているデータパケットのシーケンス番号を格納し、図30に示す例では、バッファリングしているデータパケットのシーケンス番号のうち、最大シーケンス番号と最小シーケンス番号とを格納する。データD9により、バッファ部14にバッファリングしているパケットの解析を不要とし、帯域調整装置1の処理が軽減される。
 ACK番号に係わるデータD10は、バッファ部14にバッファリングしているACKパケットのACK番号を格納し、図30に示す例では、バッファリングしているACKパケットのACK番号のうち、最大ACK番号を格納する。
 バッファデータD11は、データパケットや1個のACKパケットをキューに格納している。
 図30に示すとおり、セッションテーブルデータは、一方向の通信につき128バイトであるので、二方向については、256バイトとなる。メモリが1メガバイトとすると、4096セッションを登録可能である。現在の技術水準では、10万セッションには25メガバイト、100万セッションには256メガバイトあれば、セッションテーブル13を容易に実現できる。
〔目標帯域の設定〕
 帯域調整処理において使用する目標帯域は、図30に示すとおり、セッションテーブル13に格納される。目標帯域の初期値は、例えば、IPアドレスやポート番号の値の範囲に応じて、予め定義されている値の中から選択させる構成とすることができる。IPアドレスやポート番号により目標帯域を決定することで、通信ごとに応じた目標帯域を設定可能となる。かかる処理は、例えばセッション管理部22等が実行する。
 帯域調整装置1が、TCPパケットの受信を認識し、帯域調整処理を開始すると、その後、目標帯域を動的に変更することも可能である。変更のタイミングとしては、例えば、何らかのパケット処理でセッションテーブル13を参照したとき、図12に示す定期的な割り込み処理を行ったとき、帯域調整装置1の管理者が意図的に変更するとき等がある。いずれの場合においても、その時点のセッションテーブルデータ(図30)を参照して、データD7の単位時間転送可能データ量や単位時間転送可能ACK量を適宜設定する。かかる処理は、例えば受信帯域測定部23等が実行する。
 動的に目標帯域を設定することで、実際の通信に応じたより適切な目標帯域を用いて帯域調整することが可能となる。
 以上説明したように、本実施形態に係る帯域調整装置1によれば、帯域調整装置1を通過するパケットを監視して、通信に必要な帯域を示す目標帯域と、測定した実際の帯域とを比較し、比較に応じて、帯域の抑制や促進を行う。測定帯域が目標帯域を上回る場合には、パケットの送信タイミングを制御して一定の間隔、すなわち、目標帯域でパケットが送信されるよう、帯域を「抑制」する。一方、測定帯域が目標帯域を下回る場合には、予めバッファリングしておいたパケットを送信端末2Aや受信端末4Bに代理で再送することにより、帯域を「促進」する。帯域の抑制により、通信性能が所定の範囲内に抑えられるので、バーストトラフィック等の発生を効果的に抑制することとなり、端末間での通信性能のばらつきを抑える。これにより、従来は1Mbpsほどであった通信性能を、数Mbps程度まで改善することができる。また、帯域の促進により、端末によるパケット送信が促されることで、パケット再送及び再送に伴うトラフィックの増加を効果的に抑制する。このように、実際の帯域を目標帯域に近付けるよう帯域の抑制または促進を行うことで、帯域調整装置1を経由する通信については、セッション単位で通信性能を所定の範囲に抑えるとともに、パケットの再送を効果的に抑えることができるため、通信の安定化に効果を奏する。
 インターネット等のIPネットワークは、「信頼性のない通信」を提供するネットワーク基盤であるが、このネットワークの下で、TCPのような「信頼性のある通信」を提供する通信に対して上記帯域調整を行う。従来においては、端末ごとにネットワーク速度が大きく異なる場合には、端末間に提供される通信品質に不均衡が生じていた。例えば、サービスを提供するサーバは高速なネットワークに接続されているのに対し、ユーザ側端末は比較的低速なアクセスネットワークに接続されているのが一般的である。このような不均衡な環境において、上記の帯域の促進及び抑制を行うことで、「信頼性のある通信」を行う端末間の通信を改善する。
 また、本実施形態に係る帯域調整装置1によれば、2方向の通信のうち1方向のパケットのみを監視して他の方向の帯域調整に利用することも可能であるので、対向する装置を設ける必要がない。また、経路上の任意の場所に設置してもよいため、ネットワーク設計コストを削減させることが可能である。更には、経路上に複数の帯域調整装置1設置しても、各装置が、自装置内を流れるパケットを監視して帯域調整を行うため、装置間で相互に干渉することもない。寧ろ、複数の帯域調整装置1のそれぞれで帯域調整を行うことにより、経路上の複数箇所で帯域調整がなされ、TCP通信を更に安定化させることができる。
 更には、TCP/IPパケットに対して通信に影響するような変更を加えるわけではなく、IP層の「信頼性のない通信」で許容されたパケット操作のみを用い、また、少なくともTCP通信の1方向のみの中継等で帯域調整処理を実施することが可能である。このような帯域調整処理は、比較的単純なソフトウェアによっても実現でき、これにより、ルータ、ブリッジ、ネットワークアプライアンス機器、端末等の通信機能を備えるネットワーク接続機器であれば、帯域調整装置1を組み込むことが可能となる。
 なお、実施例では、帯域調整装置1を中継装置3に組み込む場合を例に説明しているため、パケットをどのように「中継」して帯域調整を行うかについて記載している。帯域調整装置1を端末に組み込む場合には、帯域調整装置1は、自装置が送出するパケットや自装置が受信するパケットを、帯域測定・帯域調整等の対象とし、上記の方法でパケットを「送信」することにより、実現できる。セッションの監視・削除処理については、端末が自装置内の帯域調整装置からTCP層に終了通知をすることで、回復不能なセッションを終了させている。
 更には、帯域調整装置1による帯域調整処理では、帯域調整装置1を中継装置3に設けた場合であっても、従来のTCP技術のように、中継TCPを終端することがない。また、帯域調整処理は、既存のTCP/IP処理機能に依存していない。帯域調整装置1は、受信したTCP/IPパケットの制御情報を参照することで、帯域調整処理を行うことができ、複雑な処理を不要とする。このため、中継装置3に帯域調整装置1を組み込む場合であっても、当該中継装置3に高速なTCP Splicingを実装させることが容易となる。したがって、処理性能のスケーラビリティを向上させる効果がある。また、処理性能のスケーラビリティの向上により、多くのトラフィックが集約される基幹ネットワークにおいても、セッションごとに管理して帯域調整を行うことが可能となる。
 そして、帯域調整装置1は、受信したパケットがTCPパケットであるか否かに基づいて、セッションを認識し、セッション単位で帯域調整を行うので、TCPヘッダを参照して、TCP通信の状態を判断する必要がない。これにより、送信端末2Aと受信端末4Bとの間で通信が継続しているときであっても、通信を切断させることなく、帯域調整装置1を通信システムに追加で設置すること、通信システムから除去することが可能となる。したがって、帯域調整装置1の追加や除去によってネットワークの信頼性を低下させることなく、TCP通信の安定化を実現することが可能となる。
 なお、上記においては、送信端末2A-受信端末4B間の通信には、TCPを用いる場合の帯域調整を実施する方法を例に説明しているが、これには限らない。例えばSCTP(Stream Control Transmission Protocol)やXTP(Xpress Transport Protocol)等を用いて通信を行う場合についても同様に、上記の帯域調整方法を適用することが可能である。

Claims (19)

  1.  送信装置及び受信装置がネットワークを介して通信を行うときに、通信の帯域を制御する通信装置であって、
     前記送信装置から前記受信装置、及び前記受信装置から送信装置の2方向の通信のうち、少なくとも1方向の通信について帯域を測定する測定部と、
     通信に必要な帯域を示す目標帯域を含む帯域調整に係わる情報を記憶する記憶部と、
     前記記憶部から前記帯域を測定した方向の目標帯域を読み出し、前記測定部において測定した帯域と該読み出した目標帯域との比較に基づきパケットの送出間隔を調整することにより、帯域の抑制または促進を行う調整部と
     を備えることを特徴とする通信装置。
  2.  前記調整部は、前記送信装置及び受信装置の間で送受されるパケットには変更を加えずに、パケットの破棄、パケットの中継または送信、複数の複写パケットの中継または送信、及び、パケットの送出間隔の制御を行うパケット処理を行うことで、帯域を調整する
     ことを特徴とする請求項1記載の通信装置。
  3.  前記測定部は、前記送信装置から第1のパケットを受信した前記受信装置が該送信装置宛に返送する第2のパケットを観測して、該第2のパケットの送信方向の通信についての帯域を測定し、
     前記調整部は、前記第2のパケットの送出間隔を制御して、該第2のパケットの送出間隔を空け、または詰めることにより、帯域の抑制、または促進を行う
     ことを特徴とする請求項1記載の通信装置。
  4.  前記測定部は、前記第2のパケットに含まれる、前記送信装置が次に送信すべき前記第1のパケットを示す情報に基づき、該第2のパケットの送信方向の帯域を測定する
     前記調整部は、前記送信装置が次に送信すべき前記第1のパケットを示す情報の増分が前記目標帯域に近づくよう前記第2のパケットの送出間隔を制御して、前記帯域の抑制または促進を行う
     ことを特徴とする請求項3記載の通信装置。
  5.  前記送信装置が送信する第1のパケット及び前記受信装置が該第1のパケットに対して返送する第2のパケットを、該第1及び第2のパケットに含まれるパケットの順序を示す情報にしたがって格納するパケット格納部と、
     を更に備え、
     前記調整部は、
      前記ネットワークを介してパケットを受信すると、該受信したパケット、及び前記パケット格納部に格納しているパケットの前記パケットの順序を示す情報を比較し、
      前記パケットの順序を示す情報が互いに一致する場合には、前記パケット格納部に格納しているパケットまたは前記受信したパケットのいずれか一方を破棄し、他方のパケットについては該パケット格納部に保存させる
     ことを特徴とする請求項1記載の通信装置。
  6.  前記調整部は、前記第1または第2のパケットの送信方向の帯域が、該通信方向の前記目標帯域を下回る場合には、前記パケット格納部に格納したパケットを複写し、該複写パケットを、該目標帯域に応じた送出間隔で少なくとも1回送出する
     ことを特徴とする請求項5記載の通信装置。
  7.  前記調整部は、所定の期間以上に渡って前記第2のパケットを認識しない場合には、第1のパケットの順序を示す番号が、第2のパケットの順序を示す番号のうち最大の番号と対応する第1のパケットを前記パケット格納部から取得し、該取得した第1のパケットの複写パケットを、前記受信装置に向けて送出させる
     ことを特徴とする請求項6記載の通信装置。
  8.  前記調整部は、所定の期間以上に渡って前記第1のパケットを認識しない場合には、第2のパケットの順序を示す番号が最大の番号をとる第2のパケットを前記パケット格納部から取得し、該取得した第2のパケットの複写パケットを、前記送信装置に向けて送出させる
     ことを特徴とする請求項6記載の通信装置。
  9.  前記調整部は、前記パケットの順序を示す番号が同一の第2のパケットについての複写パケットを、所定の回数以上連続して送出して、前記送信装置における送信帯域を向上させる
     ことを特徴とする請求項6記載の通信装置。
  10.  前記測定部及び調整部は、前記送信装置及び受信装置間の二方向の通信のうち、一方の通信についての帯域測定及び帯域調整をそれぞれ行う第1の測定部及び第1の調整部、並びに他方の通信についての帯域測定及び帯域調整をそれぞれ行う第2の測定部及び第2の調整部を有し、
     前記2方向のうちパケットを認識している通信方向の測定部及び調整部を動作させて、該認識している通信方向について帯域調整を行う
     ことを特徴とする請求項1記載の通信装置。
  11.  前記調整部は、前記受信装置から受信した第2のパケットのうち、前記送信装置において破棄されるパケットについては、該送信装置に送出させず、自装置において破棄する
     ことを特徴とする請求項5記載の通信装置。
  12.  前記送信装置または受信装置からパケットを受信したことを契機として前記記憶部に情報の登録を行い、該送信装置と受信装置との間のセッションの管理を開始する管理部と
     を更に備え、
     前記記憶部は、前記送信装置と前記受信装置との間のセッションを識別する情報と対応付けて、該セッションについての帯域調整に係わる情報を記憶する
     ことを特徴とする請求項1記載の通信装置。
  13.  前記セッション管理部は、前記パケットに含まれる、通信の状態遷移を表す情報を参照し、該状態遷移を表す情報に該送信装置及び受信装置の間のセッションを終了する旨の値が格納されている場合には、該セッションを識別する情報及びこれと対応付けられた帯域調整に係わる情報を前記記憶部から削除するとともに、該パケットの送信先である前記送信装置または受信装置に対して、通信の終了を通知する通知パケットを生成し、送出する
     ことを特徴とする請求項12記載の通信装置。
  14.  前記セッション管理部は、管理中のセッションに関するパケットを所定の期間に渡って認識しない場合には、該セッションを識別する情報及びこれと対応付けられた帯域調整に係わる情報を前記記憶部から削除するとともに、前記送信装置及び受信装置に対して、通信の終了を通知するパケットを生成し、送出する
     ことを特徴とする請求項14記載の通信装置。
  15.  前記調整部は、帯域調整を行った前記パケットに、帯域調整処理が実施済であることを示す情報を設定し、受信したパケットに該情報が設定されているか否かに基づき、該受信したパケットが帯域調整の対象であるか否かを判定する
     ことを特徴とする請求項1記載の通信装置。
  16.  前記調整部は、前記パケットのTCP(Transmission Control Protocol)ヘッダのURGENTビットには0を設定し、URGENTポインタフィールドには、帯域調整処理が実施済であることを示す情報を設定し、該パケットのチェックサムフィールドには、該設定した情報の値を含める値を設定する
     ことを特徴とする請求項15記載の通信装置。
  17.  前記測定部は、前記測定した帯域と前記目標帯域とを比較し、該測定した帯域が該目標帯域を上回る場合には、予め設定されている目標帯域の許容範囲内で目標帯域を増やし、該測定した帯域が該目標帯域を下回る場合には、該許容範囲内で目標帯域を減らして、該変更した目標帯域を前記記憶部に記憶させる
     ことを特徴とする請求項1記載の通信装置。
  18.  前記管理部は、管理するセッションについての目標帯域を、パケットのネットワークアドレスの範囲、通信プロトコルの種類、通信の継続時間、時間帯、測定帯域あるいは送出したデータ量に応じて変更し、該変更した目標帯域を前記記憶部に記憶させる
     ことを特徴とする請求項12記載の通信装置。
  19.  送信装置及び受信装置がネットワークを介して通信を行うときに、通信の帯域を制御する通信方法であって、
     前記送信装置から前記受信装置、及び前記受信装置から送信装置の2方向の通信のうち、少なくとも1方向の通信について帯域を測定し、
     通信に必要な帯域を示す目標帯域を含む帯域調整に係わる情報を記憶する記憶部から前記帯域を測定した方向の目標帯域を読み出し、前記測定した帯域と該読み出した目標帯域との比較に基づきパケットの送出間隔を調整することにより、帯域の抑制または促進を行う
     ことを特徴とする通信方法。
PCT/JP2010/059221 2010-05-31 2010-05-31 通信装置及び通信方法 WO2011151884A1 (ja)

Priority Applications (12)

Application Number Priority Date Filing Date Title
EP10852492.7A EP2579516B1 (en) 2010-05-31 2010-05-31 Communication apparatus and communication method
US13/700,070 US8761010B2 (en) 2010-05-31 2010-05-31 Communication apparatus and communication method
CA2800669A CA2800669C (en) 2010-05-31 2010-05-31 Communication apparatus and communication method
JP2011543749A JP5059976B2 (ja) 2010-05-31 2010-05-31 通信装置及び通信方法
PCT/JP2010/059221 WO2011151884A1 (ja) 2010-05-31 2010-05-31 通信装置及び通信方法
CN201080033922.2A CN102474463B (zh) 2010-05-31 2010-05-31 通信装置以及通信方法
KR1020127002778A KR101746629B1 (ko) 2010-05-31 2010-05-31 통신 장치 및 통신 방법
SG2012087029A SG185769A1 (en) 2010-05-31 2010-05-31 Communication apparatus and communication method
BR112012030524A BR112012030524A2 (pt) 2010-05-31 2010-05-31 aparelho de comunicação e método de comunicação
TW100118429A TWI530123B (zh) 2010-05-31 2011-05-26 Communication devices and communication methods
HK12111868.2A HK1171134A1 (en) 2010-05-31 2012-11-21 Communication apparatus and communication method
IL223255A IL223255A (en) 2010-05-31 2012-11-26 Communication device and method of communication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/059221 WO2011151884A1 (ja) 2010-05-31 2010-05-31 通信装置及び通信方法

Publications (1)

Publication Number Publication Date
WO2011151884A1 true WO2011151884A1 (ja) 2011-12-08

Family

ID=45066283

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/059221 WO2011151884A1 (ja) 2010-05-31 2010-05-31 通信装置及び通信方法

Country Status (12)

Country Link
US (1) US8761010B2 (ja)
EP (1) EP2579516B1 (ja)
JP (1) JP5059976B2 (ja)
KR (1) KR101746629B1 (ja)
CN (1) CN102474463B (ja)
BR (1) BR112012030524A2 (ja)
CA (1) CA2800669C (ja)
HK (1) HK1171134A1 (ja)
IL (1) IL223255A (ja)
SG (1) SG185769A1 (ja)
TW (1) TWI530123B (ja)
WO (1) WO2011151884A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013232851A (ja) * 2012-05-01 2013-11-14 Nippon Telegr & Teleph Corp <Ntt> 可用帯域測定装置及び方法及びプログラム
JP2015023320A (ja) * 2013-07-16 2015-02-02 日本放送協会 並列分散管理装置、プログラム及び並列分散処理システム
JP2016126444A (ja) * 2014-12-26 2016-07-11 コニカミノルタ株式会社 画像形成システム、画像処理装置、および画像処理装置の制御プログラム
JP2018067788A (ja) * 2016-10-19 2018-04-26 日本電気株式会社 受信トラヒックの高速化装置、高速化方法、および高速化プログラム

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5263394B2 (ja) * 2009-06-16 2013-08-14 富士通オプティカルコンポーネンツ株式会社 光通信装置及び光通信装置の節電制御方法
JP5501052B2 (ja) * 2010-03-24 2014-05-21 キヤノン株式会社 通信装置、通信装置の制御方法、プログラム
JP5937806B2 (ja) * 2011-11-10 2016-06-22 株式会社Nttドコモ 移動通信方法、ポリシー及び課金ルールサーバ装置及び移動管理ノード
US9648133B2 (en) * 2012-03-12 2017-05-09 Telefonaktiebolaget L M Ericsson Optimizing traffic load in a communications network
US9413672B2 (en) * 2012-06-06 2016-08-09 Apple Inc. Flow control for network packets from applications in electronic devices
JP5935571B2 (ja) * 2012-07-27 2016-06-15 富士通株式会社 帯域幅制御装置、帯域幅制御方法、および、帯域幅制御プログラム
US20140047126A1 (en) * 2012-08-10 2014-02-13 International Business Machines Corporation Coordinated enforcement of traffic shaping limits in a network system
CN103944691B (zh) * 2013-01-17 2019-01-15 中兴通讯股份有限公司 一种协同业务传输中的数据重传方法及接入网网关
EP2798507B1 (en) 2013-02-26 2017-03-22 Fastly Inc. Enhanced acknowledgement handling in communication packet transfer
JP6236933B2 (ja) * 2013-07-02 2017-11-29 富士通株式会社 中継装置
US20150071273A1 (en) * 2013-09-11 2015-03-12 Celeno Communications (Israel) Ltd. Efficient transfer of tcp traffic over wlan
US20150195326A1 (en) * 2014-01-03 2015-07-09 Qualcomm Incorporated Detecting whether header compression is being used for a first stream based upon a delay disparity between the first stream and a second stream
JP2015130121A (ja) * 2014-01-08 2015-07-16 ヤマハ株式会社 中継装置
EP3128709B1 (en) * 2014-04-01 2021-09-08 Ubiquoss Inc. Method for controlling line in access network having g.hn technology applied thereto, and access network line concentration instrument, access network terminal and access network system using same
US9450879B2 (en) * 2014-05-09 2016-09-20 Nexgen Storage, Inc. Adaptive bandwidth throttling
US9961585B2 (en) 2014-05-16 2018-05-01 Nokia Solutions And Networks Oy Network-side buffer management
JP6525576B2 (ja) * 2014-12-17 2019-06-05 キヤノン株式会社 制御装置、制御システム、制御方法、医用画像撮影装置、医用画像撮影システム、撮影制御方法およびプログラム
US10601721B2 (en) 2015-10-29 2020-03-24 Altiostar Networks, Inc. Maintenance of downlink throughput
CN105391589B (zh) * 2015-12-15 2018-09-25 京信通信系统(中国)有限公司 一种报文传输的方法及装置
TWI678084B (zh) * 2016-09-05 2019-11-21 日商日本電氣股份有限公司 網路頻段量測裝置及網路頻段量測方法
US20180131640A1 (en) * 2016-11-07 2018-05-10 Qualcomm Incorporated Techniques for encoding and decoding multiple acknowledgement signals in new radio
CN109905327B (zh) * 2017-12-11 2021-05-07 网宿科技股份有限公司 一种无线网络数据传输方法、发送端及接收端
US10784931B2 (en) * 2018-06-08 2020-09-22 Apple Inc. Assisted multi-user multi-input multi-output (MU-MIMO) communication system
CN109075961B (zh) * 2018-07-31 2021-12-03 北京小米移动软件有限公司 传输块处理方法、装置、电子设备和计算机可读存储介质
CN117500057A (zh) * 2022-07-21 2024-02-02 华为技术有限公司 一种通信方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008219812A (ja) * 2007-03-07 2008-09-18 Daikin Ind Ltd 帯域制御装置、同帯域制御装置を備えたネットワーク及び空調管理システム、帯域制御方法並びに帯域制御プログラム
JP2009141565A (ja) * 2007-12-05 2009-06-25 Panasonic Corp 受信端末装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908624B2 (en) * 2007-06-18 2011-03-15 Broadcom Corporation System and method for just in time streaming of digital programs for network recording and relaying over internet protocol network
US8411566B2 (en) * 2007-10-31 2013-04-02 Smart Share Systems APS Apparatus and a method for distributing bandwidth
US8289870B2 (en) * 2009-09-23 2012-10-16 Avaya Inc. Priority-based, dynamic optimization of utilized bandwidth

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008219812A (ja) * 2007-03-07 2008-09-18 Daikin Ind Ltd 帯域制御装置、同帯域制御装置を備えたネットワーク及び空調管理システム、帯域制御方法並びに帯域制御プログラム
JP2009141565A (ja) * 2007-12-05 2009-06-25 Panasonic Corp 受信端末装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CAO LE THANH MAN ET AL.: "ImTCP: TCP with an inline network measurement mechanism", IEICE TECHNICAL REPORT, vol. 104, no. 73, May 2004 (2004-05-01) *
See also references of EP2579516A4 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013232851A (ja) * 2012-05-01 2013-11-14 Nippon Telegr & Teleph Corp <Ntt> 可用帯域測定装置及び方法及びプログラム
JP2015023320A (ja) * 2013-07-16 2015-02-02 日本放送協会 並列分散管理装置、プログラム及び並列分散処理システム
JP2016126444A (ja) * 2014-12-26 2016-07-11 コニカミノルタ株式会社 画像形成システム、画像処理装置、および画像処理装置の制御プログラム
JP2018067788A (ja) * 2016-10-19 2018-04-26 日本電気株式会社 受信トラヒックの高速化装置、高速化方法、および高速化プログラム

Also Published As

Publication number Publication date
HK1171134A1 (en) 2013-03-15
EP2579516A4 (en) 2013-04-10
BR112012030524A2 (pt) 2019-09-24
IL223255A0 (en) 2013-02-03
SG185769A1 (en) 2013-01-30
TW201212593A (en) 2012-03-16
IL223255A (en) 2016-06-30
CN102474463B (zh) 2015-07-08
KR20130082070A (ko) 2013-07-18
US20130176848A1 (en) 2013-07-11
JP5059976B2 (ja) 2012-10-31
CN102474463A (zh) 2012-05-23
EP2579516A1 (en) 2013-04-10
EP2579516B1 (en) 2015-08-26
CA2800669A1 (en) 2011-12-08
JPWO2011151884A1 (ja) 2013-07-25
CA2800669C (en) 2017-04-25
US8761010B2 (en) 2014-06-24
TWI530123B (zh) 2016-04-11
KR101746629B1 (ko) 2017-06-13

Similar Documents

Publication Publication Date Title
JP5059976B2 (ja) 通信装置及び通信方法
CN110661723B (zh) 一种数据传输方法、计算设备、网络设备及数据传输系统
US8451727B2 (en) Apparatus and method for controlling congestion occurrence in a communication network
US7369498B1 (en) Congestion control method for a packet-switched network
US9655003B2 (en) Systems and methods for improved wireless interface aggregation
US7564792B2 (en) Transparent optimization for transmission control protocol flow control
US20060203730A1 (en) Method and system for reducing end station latency in response to network congestion
US9325628B2 (en) Packet handling method, forwarding device and system
US20060221825A1 (en) Congestion control network relay device and method
US10439940B2 (en) Latency correction between transport layer host and deterministic interface circuit
JP2001308947A (ja) 通信装置、中継装置および通信制御方法
WO2020147453A1 (zh) 数据传输方法及相关装置
CN111147573A (zh) 一种数据传输的方法和装置
US20230269183A1 (en) Apparatus and method for managing network flow congestion
US20230269187A1 (en) Apparatus and method for managing network flow congestion
US9894552B2 (en) Regulating data communication between a mobile data client and a remote server
JP2013017135A (ja) 通信装置およびパケット廃棄軽減方法
WO2019004013A1 (ja) データ送信装置、方法および記録媒体
WO2010010028A1 (en) Control of data flow

Legal Events

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

Ref document number: 201080033922.2

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2011543749

Country of ref document: JP

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

Ref document number: 10852492

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 20127002778

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2800669

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 223255

Country of ref document: IL

WWE Wipo information: entry into national phase

Ref document number: 3703/KOLNP/2012

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 2010852492

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13700070

Country of ref document: US

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112012030524

Country of ref document: BR

ENP Entry into the national phase

Ref document number: 112012030524

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20121126