WO2018077100A1 - Tcp拥塞窗口的确定方法和装置 - Google Patents

Tcp拥塞窗口的确定方法和装置 Download PDF

Info

Publication number
WO2018077100A1
WO2018077100A1 PCT/CN2017/106730 CN2017106730W WO2018077100A1 WO 2018077100 A1 WO2018077100 A1 WO 2018077100A1 CN 2017106730 W CN2017106730 W CN 2017106730W WO 2018077100 A1 WO2018077100 A1 WO 2018077100A1
Authority
WO
WIPO (PCT)
Prior art keywords
data packet
load level
tcp
network node
congestion window
Prior art date
Application number
PCT/CN2017/106730
Other languages
English (en)
French (fr)
Inventor
李晋
李峰
周兴旺
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP17865389.5A priority Critical patent/EP3525406A4/en
Publication of WO2018077100A1 publication Critical patent/WO2018077100A1/zh
Priority to US16/396,047 priority patent/US20190253364A1/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/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • 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/35Flow control; Congestion control by embedding flow control information in regular packets, e.g. piggybacking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Definitions

  • the present invention relates to the field of network transmission technologies, and in particular, to a method and an apparatus for determining a TCP congestion window.
  • Transmission Control Protocol is one of the main transmission protocols for Internet applications, providing connection-oriented and reliable message transmission services. It can be used for reliable data transfer between nodes in a packet network. Among them, File Transfer Protocol (FTP), Hypertext Transfer Protocol (HTTP), and Secure Sockets Layer (SSL) are the basic protocols used on the Internet. Carry the load.
  • FTP File Transfer Protocol
  • HTTP Hypertext Transfer Protocol
  • SSL Secure Sockets Layer
  • Congestion control is an important control function for TCP to ensure reliable transmission of data packets in a packet network.
  • the congestion window is a key parameter mainly involved in congestion control. It describes the TCP sender's round-trip delay for a certain data stream (Round- The maximum number of data packets that can be sent in Trip Time (RTT).
  • RTT Trip Time
  • the TCP sender can adjust the packet sending window according to the received acknowledgment (ACK), and adjust the size of the congestion window to adjust the data sending rate to avoid network crash. Therefore, whether the congestion window is set properly will directly affect the congestion control effect on the network.
  • the commonly used TCP congestion control method includes an algorithm based on packet loss detection.
  • the packet loss is an indication of network congestion.
  • the TCP sender detects three duplicate ACK packets, it considers that packet loss occurs, and then starts the congestion control policy.
  • the congestion window is halved, and the data packets of each connection are sent according to the new congestion window to reduce the rate, so that the network recovers from congestion; the main processes include TCP slow start, congestion avoidance, fast retransmission, and fast recovery. Since the existing congestion control based on packet loss feedback is that the TCP sender controls the transmission of the next RTT cycle according to the ACK feedback acknowledgement information of the TCP receiver, the control has a large hysteresis, and congestion has occurred in the network.
  • the TCP receiver triggers the rate adjustment, which has already affected the user experience.
  • ECN Explicit Congestion Notification
  • This kind of technology needs to have the function of "warning", that is, when the network fast congestion has not caused obvious packet loss, the TCP sender is notified to reduce the rate in advance.
  • CE Congestion Experienced
  • the TCP receiver observes the CE code point and sets an "ECN Echo" (ECE) for the TCP header of the next ACK message sent to the TCP sender. After receiving the ACK message with the ECE, the TCP sender responds in the same manner as the similar packet has been discarded. It can be seen that the ECN is used to allow the network node to send a signal to the TCP receiver when the congestion is about to occur. When the TCP receiver receives the data packet with the CE mark, it knows that the network node is about to be congested, thereby notifying the TCP sender to implement in advance. Reduce the transmission rate to avoid network congestion.
  • ECE ECN Echo
  • an embodiment of the present invention provides a method for determining a TCP congestion window.
  • the method includes: receiving, by the network node, a data packet, where a header of the data packet carries a load degree of a path that the data packet experiences; and the network node acquires a first output port corresponding to the data packet. The degree of load; the network node updates the load level of the data packet according to the load level of the first output port; and the network node sends the updated data packet.
  • an embodiment of the present invention provides a network node.
  • the network node includes a communication interface and a processor.
  • the processor is configured to receive a data packet through the communication interface, and obtain a load level of the first output port corresponding to the data packet, where the header of the data packet carries a load degree of the path experienced by the data packet And updating the load level of the data packet according to the load level of the first output port; and sending the updated data packet by using the communication interface.
  • FIG. 3 is a schematic flowchart of another method for determining a TCP congestion window according to an embodiment of the present invention.
  • FIG. 5 is a schematic flowchart of another method for determining a TCP congestion window by a network node according to an embodiment of the present invention
  • FIG. 6 is a schematic flowchart of another method for determining a TCP congestion window by a network node according to an embodiment of the present invention.
  • FIG. 7 is a schematic flowchart of a method for determining a TCP congestion window by a TCP sending end according to an embodiment of the present disclosure
  • FIG. 8 is a schematic flowchart of a method for determining a TCP congestion window by a TCP receiving end according to an embodiment of the present invention
  • FIG. 9 is a schematic structural diagram of a TCP sending end according to an embodiment of the present disclosure.
  • FIG. 10 is a schematic structural diagram of another TCP sending end according to an embodiment of the present disclosure.
  • FIG. 11 is a schematic structural diagram of a network node according to an embodiment of the present disclosure.
  • FIG. 12 is a schematic structural diagram of another network node according to an embodiment of the present disclosure.
  • FIG. 13 is a schematic structural diagram of a TCP receiving end according to an embodiment of the present disclosure.
  • FIG. 14 is a schematic structural diagram of another TCP receiving end according to an embodiment of the present invention.
  • the method and device for determining a TCP congestion window provided by the embodiment of the present invention are applicable to network data transmission, in particular, a scenario in which a data packet is transmitted between a TCP sender and a TCP receiver through one or more network nodes.
  • 1 is a network architecture of an embodiment of the present invention.
  • the network includes a network element such as a TCP sender, a network node, and a TCP receiver.
  • the TCP sender sends data packets to the TCP receiver through M network nodes.
  • M is an integer greater than or equal to 1.
  • M is 2.
  • FIG. 2 is a schematic flowchart diagram of an embodiment of a method for determining a TCP congestion window according to the present invention.
  • the TCP sender connects to the TCP receiver through the first network node and the second network node.
  • the network node directly connected to the TCP sending end is referred to as a first network node;
  • the connection between the first network node and the second network node and the TCP receiving end may be a direct connection or an indirect connection, such as
  • a network node such as another relay device, a switching device, and a convergence device may be connected between a network node and a second network node, and between the second network node and the TCP receiving end, and the first network node may also receive directly and TCP. End connection.
  • the method of the embodiment of the present invention can be applied to a process of sending a data packet after a TCP connection is established between a TCP sending end and a TCP receiving end. As shown in FIG. 2, the method includes the following steps:
  • the TCP sending end sends a source data packet to the first network node.
  • the first network node acquires a load level of the first output port that is used to send the source data packet, and adds the load level to a header of the source data packet.
  • the first network node may obtain the first output port corresponding to the source data packet by using the data sending table, and the method for obtaining the first output port corresponding to the data packet may be referred to There are techniques, and specific implementation details are not described here.
  • the degree of load reflects the relationship between the data transmission status of the first output port of the network node transmitting the data message and the transmission capability of the output port.
  • the degree of load is taken as a real number greater than or equal to zero. When the load level is less than 1, it indicates that the first output port has more transmission resources than the data packet is sent; when the load level is equal to 1, it indicates that the transmission resource of the first output port is equivalent to the transmission resource required for sending the data packet. When the load level is greater than 1, it indicates that the transmission resource of the first output port cannot meet the transmission resource required for sending the data packet, that is, the first output port enters a congestion state.
  • the first network node sends a first network node data packet to the second network node.
  • the header of the data packet carries the degree of load.
  • the second network node may obtain, by searching the data sending table, the method for sending the data packet to the second output port, where the method for obtaining the second output port corresponding to the data packet is
  • the details of the specific implementation are not described here.
  • the second network node acquires its own load level at the second output port, and compares the load level with the received load level of the first network node data packet header. On the one hand, if the load level is greater than the load level of the data packet header of the first network node, it indicates that the second network node can provide the data packet with a lower transmission capability than the first network node is the data packet.
  • the second network node is a bottleneck node in the network that transmits the TCP source data message.
  • the second network node replaces the load degree of the second network port of the second network node with the load level of the received first network node data packet, and keeps the load of the data packet of the first network node unchanged.
  • the TCP receiving end obtains the load level from the head of the data packet by parsing the received second network node data packet, and encapsulates the load level into the header of the ACK packet.
  • the loading degree carried in the header of the ACK packet is the loading degree carried in the data packet header of the second network node received by the TCP receiving end.
  • the TCP receiving end obtains the load level from the header of the received data packet by parsing the received data packet, and encapsulates the load level into the header of the ACK packet.
  • the ACK message may be carried by the TCP protocol, and the degree of load carried by the TCP header of the ACK message may be implemented by extending the TCP option.
  • the content to be encapsulated may be encapsulated into a Type, Length, and Value (TLV) field of the TCP packet, and the specific implementation is consistent with the IP option shown in Table 1.
  • TLV Type, Length, and Value
  • the TCP receiving end returns an acknowledgement (ACK) packet to the TCP sending end, where the header of the ACK packet carries a load level.
  • ACK acknowledgement
  • the load level is the degree of load acquired by the TCP receiving end after the foregoing step 206 is performed.
  • FIG. 3 is a schematic flowchart diagram of another embodiment of a method for determining a TCP congestion window according to the present invention. The method includes the following steps:
  • the first network node acquires a load level of the first output port that is used to send the data packet.
  • the first network node updates the received source data message according to the load level of the first output port. Specifically, the first network node adds the load level of the first output port to the header of the received source data packet, and the payload of the source data packet remains unchanged, and generates a first network node data packet.
  • the first network node sends a first network node data packet to the second network node.
  • the header of the data packet carries the load level.
  • steps 301, 302, and 303 are similar to the implementations of steps 201, 202, and 203 in the foregoing embodiment, and are not described herein again.
  • the second network node receives the data packet sent by the first network node, acquires the load level of the second output port corresponding to the second network node, and adds the load level to the received data packet.
  • Head The second network node data packet is generated by updating the load degree of the data packet header, and the loads of the first network node data packet and the second network node data packet are the same.
  • the second network node does not modify the received load level of the data header of the first network node, and the second network node sends the load level of the second output port corresponding to the data packet. Add to the head of the first network node data message.
  • the second network node may add the load level of the second output port to the received payload of the first network node data packet IP header in the form of a TLV field. After the degree of TLV field, a new degree of load is formed.
  • the load level carried by the IP header of the second network node data packet includes the load degree of the first output port of the first network node and the second The degree of load on the second output port of the network node.
  • the second network node sends a second network node data packet to the TCP receiving end.
  • the header of the data packet carries the load level processed by the second network node.
  • the load level carried by the header of the data packet includes the load level of the first output port of the first network node and the load level of the second output port of the second network node.
  • the load level carried by the data packet header received by the TCP receiving end includes the loading degree of the first output port of the first network node and the loading degree of the second output port of the second network node, where the TCP receiving end
  • the degree of loading of the first network node and the second network node is mathematically processed, such as performing averaging processing, and encapsulating the averaged load level into the header of the ACK message.
  • the network node updates the load level of the received data packet header according to the load level of the first output port, and keeps the payload of the data packet unchanged, as the updated data packet.
  • FIG. 5 is a schematic flowchart of a network node in combination with the foregoing first method for updating data packets.
  • the method in this embodiment is as follows:
  • the network node receives the source data packet sent by the TCP sender, and the default is that the received data packet header carries a load degree of zero. In other embodiments, the network node receives the data packet sent by the other network node, and the load degree of the received data packet is the load level carried in the data packet header. Further, the network node acquires the load level of the first output port corresponding to the sent data packet, and compares the load level with the load level of the received data packet header.
  • FIG. 6 is a schematic flowchart of a network node in combination with the foregoing second update data packet manner.
  • the method in this embodiment is as follows:
  • the network node does not modify the load level of the received data packet header, and the network node adds the load level of the first output port corresponding to the data packet to the received data packet. Header, and keep the payload of the data message unchanged, as the data message sent by the network node.
  • the difference from the step 503 in the previous embodiment is that after the step 603, the load level carried in the header of the data packet of the network node includes the load level carried by the data packet header received by the network node. The degree of load of the first output port of the network node.
  • the source data packet refers to a data packet sent by the TCP sending end to the TCP receiving end.
  • the TCP sending end after sending the source data packet, the TCP sending end enters the waiting for receiving state and waits for the ACK packet returned by the TCP receiving end.
  • the TCP sending end determines a new TCP congestion window according to the load level carried in the received ACK packet header and the current congestion window.
  • the load level carried in the ACK packet header received by the TCP sending end includes a load level TLV.
  • the TCP sender simultaneously sends multiple service flows, such as the first service flow and the second service flow, each service flow has its own TCP congestion window.
  • the TCP receiving end does not process the load carried in the received data packet header, and directly encapsulates the packet into the header of the ACK packet.
  • the degree of loading carried by the header of the ACK message may include one or more load level TLVs.
  • the TCP receiving end performs a mathematical operation process on the load level carried in the received data packet header, and encapsulates the load degree after the operation processing into the header of the ACK message.
  • the load level carried by the header of the ACK message includes a load level TLV.
  • the memory 902 is configured to store a data message that the TCP sender needs to send, an ACK message returned from the TCP receiver, and the like.
  • the memory 902 may include a volatile memory (English: volatile memory), such as a random access memory (English: random-access memory, abbreviation: RAM); the memory 902 may also include a non-volatile memory (English: non-volatile memory) ), such as read-only memory (English: read-only memory, Abbreviations: ROM), flash memory (English: flash memory), hard disk (English: hard disk drive, abbreviated: HDD) or solid state drive (English: solid-state drive, abbreviation: SSD); memory 902 can also include the above categories a combination of memory.
  • the communication interface 903 is configured to connect to a network node or a TCP receiving end, and send and receive messages related to the foregoing method to a network node or a TCP receiving end.
  • the processor 901 can perform the following operations:
  • the source data packet is sent through the communication interface 903, and the ACK message returned by the TCP receiver is received.
  • the header of the ACK packet carries a load level; and the TCP congestion window is determined according to the load level.
  • FIG. 10 is a schematic structural diagram of another TCP transmitting end according to an embodiment of the present invention.
  • the TCP sender includes:
  • the receiving module 1001 is configured to receive an ACK packet, where a header of the ACK packet carries a load level.
  • the processing module 1002 is configured to adjust a TCP sending window according to the received loading degree of the header of the ACK packet.
  • DETAILED DESCRIPTION Please refer to the description of the embodiment described in FIG. 7.
  • the sending module 1003 is configured to send a source data packet.
  • FIG. 11 is a schematic structural diagram of a network node according to an embodiment of the present invention.
  • the network node includes a processor 1101, a memory 1102, and a communication interface 1103.
  • the processor 1101 is connected to the memory 1102 and the communication interface 1103, for example, the processor 1101 can be connected to the memory 1102 and the communication interface 1003 via a bus.
  • the processor 1101 is configured to support a network node to perform the corresponding functions in the above methods.
  • the processor 1101 can be a central processing unit (CPU), a network processor (in English), a hardware chip, or any combination thereof.
  • the hardware chip may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof.
  • ASIC application-specific integrated circuit
  • PLD programmable logic device
  • the above PLD can be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), and a general array logic (GAL). Or any combination thereof.
  • the memory 1102 is used to store data messages received by the network node.
  • the memory 1102 may include a volatile memory (English: volatile memory), such as a random access memory (English: random-access memory, abbreviation: RAM); the memory 1102 may also include a non-volatile memory (English: non-volatile memory) ), such as read-only memory (English: read-only memory, abbreviation: ROM), flash memory (English: flash memory), hard disk (English: hard disk drive, abbreviation: HDD) or solid state drive (English: solid-state Drive, abbreviation: SSD); the memory 1102 may also include a combination of the above types of memory.
  • ROM read-only memory
  • flash memory English: flash memory
  • HDD hard disk drive
  • SSD solid state drive
  • the communication interface 1103 is configured to connect to a TCP sending end, another network node, or a TCP receiving end, and send and receive messages related to the foregoing method to a TCP sending end, another network node, or a TCP receiving end.
  • the processor 1101 can perform the following operations:
  • the data interface of the TCP sender or other network node is received through the communication interface 1103, and the data packet is sent to other network nodes or TCP receivers.
  • DETAILED DESCRIPTION Please refer to the description of the embodiments described in FIG. 4 to FIG. 6.
  • the receiving module 1201 is configured to receive a data packet sent by a TCP sending end or other network node.
  • the processing module 1202 is configured to feed the data packet according to the received data packet and the congestion degree of the first output port.
  • the line processing generates a data packet sent by the network node.
  • the sending module 1203 is configured to send a data packet processed by the network node.
  • the processor 1301 is configured to support the TCP receiver to perform the corresponding functions in the above methods.
  • the processor 1301 can be a central processing unit (CPU), a network processor (in English), a hardware chip, or any combination thereof.
  • the hardware chip may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof.
  • ASIC application-specific integrated circuit
  • PLD programmable logic device
  • the above PLD can be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), and a general array logic (GAL). Or any combination thereof.
  • the processor 1301 can perform the following operations:
  • the header of the data packet carries a load level; and determining a load level of the header of the ACK packet according to the load level.
  • the storage medium may be a magnetic disk, an optical disk, a read-only memory (ROM), or a random access memory (RAM).
  • the embodiment of the present invention provides a network node that obtains the load level of the first output port by receiving the data packet sent by the TCP sending end, and performs the load degree of the first output port and the load degree carried by the head of the data packet. Compare to update the load level of the data packet header, and send the data packet to the TCP receiver, and the TCP receiver returns.
  • the ACK packet header carries the load level in the data packet, and the TCP receiver determines the congestion window size according to the load degree of the received ACK packet header. It can be seen that in the process of determining the TCP congestion window, the load degree of each network node on the transmission path of the data packet is considered, and therefore, the congestion window size can be determined more accurately and accurately.
  • the disclosed systems, devices, and methods may be implemented in other manners.
  • the device embodiments described above are merely illustrative.
  • the division of cells is only a logical function division.
  • multiple units or components may be combined or integrated. Go to another system, or some features can be ignored or not executed.
  • the mutual coupling or direct coupling or communication connection shown or discussed may be an indirect coupling or communication connection through some interface, device or unit, and may be in an electrical, mechanical or other form.
  • each functional unit in each embodiment of the present patent application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.

Landscapes

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

Abstract

本发明公开了一种TCP拥塞窗口的确定方法和装置,通信方法包括网络节点接收数据报文,获取网络节点发送所述数据报文的第一输出端口的负载程度,更新数据报文的负载程度,生成网络节点数据报文发送给TCP接收端。TCP接收端在返回的ACK报文中携带负载程度。TCP发送端根据ACK报文的负载程度和当前拥塞窗口,确定新的拥塞窗口。本发明实施例中利用数据报文所经历路径的负载程度,实现了TCP发送端对拥塞窗口快速准确的调整,使网络资源收敛于高利用率并提高网络吞吐量、以及各业务流之间的公平性。

Description

TCP拥塞窗口的确定方法和装置 技术领域
本发明涉及网络传输技术领域,尤其涉及一种TCP拥塞窗口的确定方法和装置。
背景技术
传输控制协议(Transmission Control Protocol,简称TCP)是目前互联网应用的主要传输协议之一,提供面向连接的、可靠的报文传输服务。其可以用于分组网络中的各节点之间进行可靠数据传输。其中,文件传输协议(File Transfer Protocol,简称FTP)、超文本传送协议(Hypertext Transfer Protocol,简称HTTP)及安全套接层(Secure Sockets Layer,简称SSL)等当前互联网上使用的基础协议,都由TCP进行承载。
在分组交换网络中,当需要传输的数据报文数目太多时,会出现链路带宽资源有限而导致网络传输性能下降的情况,也就是拥塞。当网络中发生拥塞时,会出现数据报文丢失,时延增大,网络吞吐量下降等现象,严重时会导致“拥塞崩溃”现象。拥塞控制是TCP保证分组网络中数据报文可靠传输的一个重要控制功能,其中拥塞窗口是拥塞控制主要涉及的一个关键参数,描述了TCP发送端针对某一数据流在一个往返时延(Round-Trip Time,简称RTT)内最多可以发送的数据报文的数量。TCP发送端可以根据接收到的确认(ACKnowledge,简称ACK)报文,通过调整拥塞窗口的大小实现报文发送窗口的调整,进而能够实现调整数据发送速率,避免网络崩溃现象的发生。因此,拥塞窗口设置的是否合理会直接影响对网络的拥塞控制效果。
目前常用的TCP拥塞控制方法包括基于丢包检测的算法,一般认为丢包是网络拥塞的指示,当TCP发送端检测到三个重复ACK报文就认为检测到发生丢包,随即启动拥塞控制策略,把拥塞窗口减半,按照新的拥塞窗口主动降低速率发送各连接的数据报文,以便网络从拥塞中恢复;其主要过程包括TCP慢启动、拥塞避免、快速重传和快速恢复等。由于现有的基于丢包反馈的拥塞控制是TCP发送端根据TCP接收端的ACK反馈确认信息而对下一RTT周期的发送进行控制,其控制存在较大的滞后性,在网络已经出现拥塞,丢包明显后,TCP接收端才触发速率调整,这时候已经影响到用户感受了。为了改善这种“事后”的拥塞控制机制,现有技术引入了显式拥塞通知(Explicit Congestion Notification,简称ECN)技术。这种技术需要具备“预警”的功能,就是在网络快拥塞还没有引起明显丢包的时候,通知TCP发送端提前降低速率。ECN方法的主要原理是:具有ECN能力的网络节点检测到即将发生的拥塞时,在接收的数据报文IP头部设置“经历拥塞”(Congestion Experienced,简称CE)码点并将数据报文转发给TCP接收端。TCP接收端观察CE码点,并且在其向TCP发送端发送的下一ACK报文的TCP头部设置“ECN回声标志”(ECN Echo,简称ECE)。TCP发送端接收具有ECE的ACK报文后,采用与类似分组已经被丢弃的方式相同的方式来响应。由此可见,ECN用于允许网络节点在即将出现拥塞时发送信号通知TCP接收端,TCP接收端收到具有CE标记的数据报文就知道有网络节点将要发生拥塞,从而通知TCP发送端提前实现降低传输速率以避免网络拥塞。
然而,采用现有技术的方法,存在以下问题:首先,ECN的主要目的是在网络节点即将拥塞时提前让TCP发送端减小拥塞窗口来实现拥塞控制,但缺乏网络轻载时的处理机制。在网络轻载时,ECN方法无法快速通知TCP发送端网络资源的空闲状况,让TCP发送端快 速增大拥塞窗口,提高传输速度,更好的利用网络传输资源。其次,ECN机制不能准确反应网络拥塞状况,当数据报文传输路径中多个网络节点出现拥塞时,ECN方法只进行CE码点标记,无法获知网络节点中拥塞最严重的节点以及区分各节点的拥塞程度,无法做到让TCP发送端准确获取网络的拥塞程度和瓶颈节点,导致TCP发送端难以快速而准确地减小拥塞窗口,进行高效拥塞控制避免。
发明内容
本发明的目的在于克服现有技术的缺陷,提出了一种新的TCP拥塞窗口的确定方法和装置,从而实现根据数据报文经历路径的网络负载情况快速准确地调整TCP拥塞窗口。
第一方面,本发明实施例提供一种TCP拥塞窗口的确定方法。其中,该方法包括:网络节点接收数据报文,所述数据报文的头部携带该数据报文所经历路径的负载程度;所述网络节点获取发送所述数据报文对应的第一输出端口的负载程度;所述网络节点根据第一输出端口的负载程度更新所述数据报文的负载程度;所述网络节点发送所述更新后的数据报文。
结合第一方面,在第一方面的第一种可能的实现方式中,所述网络节点更新数据报文的负载程度包括:所述网络节点将发送数据报文对应的第一输出端口的负载程度添加到所述数据报文的头部。
结合第一方面,在第一方面的第二种可能的实现方式中,所述网络节点更新数据报文的负载程度包括:所述网络节点确定发送数据报文对应的第一输出端口的负载程度大于所述数据报文头部的负载程度;所述网络节点将发送数据报文对应的第一输出端口的负载程度替换所述数据报文头部的负载程度。
结合第一方面至第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述负载程度可以表征为空闲率或拥塞度。
结合第一方面,在第一方面的第四种可能的实现方式中,所述数据报文是IP数据报文。
第二方面,本发明实施例提供一种TCP拥塞窗口的确定方法。其中,该方法包括:TCP发送端发送源数据报文,等待接收ACK报文;所述TCP发送端接收ACK报文;所述TCP发送端根据所述ACK报文头部携带的负载程度确定TCP拥塞窗口。
结合第二方面,在第二方面的第一种可能的实现方式中,所述确定TCP拥塞窗口的方法还包括:当负载程度小于或等于1时,新的TCP拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,新的TCP拥塞窗口=当前拥塞窗口/负载程度。
第三方面,本发明实施例提供一种TCP拥塞窗口的确定方法。其中,该方法包括:TCP接收端接收数据报文;所述TCP接收端生成所述数据报文的ACK报文,所述ACK报文头部携带所述数据报文头部的负载程度;所述TCP接收端发送ACK报文。
第四方面,本发明实施例提供一种网络节点。所述网络节点包括通信接口和处理器。所述处理器用于通过通信接口接收数据报文,并获取发送所述数据报文对应的第一输出端口的负载程度;所述数据报文的头部携带该数据报文所经历路径的负载程度;根据第一输出端口的负载程度更新所述数据报文的负载程度;通过通信接口发送所述更新后的数据报文。
结合第四方面,在第四方面的第一种可能的实现方式中,所述处理器更新数据报文的 负载程度包括:所述处理器将发送数据报文对应的第一输出端口的负载程度添加到所述数据报文的头部。
结合第四方面,在第四方面的第二种可能的实现方式中,所述处理器更新数据报文的负载程度包括:所述处理器确定发送数据报文对应的第一输出端口的负载程度大于所述数据报文头部的负载程度;所述处理器将发送数据报文对应的第一输出端口的负载程度替换所述数据报文头部的负载程度。
结合第四方面至第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述负载程度可以表征为第一输出端口的空闲率或拥塞度。
结合第四方面,在第四方面的第四种可能的实现方式中,所述数据报文是IP数据报文。
第五方面,本发明实施例提供一种TCP发送端。所述TCP发送端包括通信接口和处理器。所述处理器用于通过通信接口发送源数据报文和接收ACK报文;根据所述ACK报文头部携带的负载程度确定TCP拥塞窗口。
结合第五方面,在第五方面的第一种可能的实现方式中,所述处理器确定TCP拥塞窗口的步骤还包括:当负载程度小于或等于1时,新的TCP拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,新的TCP拥塞窗口=当前拥塞窗口/负载程度。
第六方面,本发明实施例提供一种TCP接收端。所述TCP接收端包括通信接口和处理器。所述处理器用于通过通信接口接收数据报文;生成所述数据报文的ACK报文,所述ACK报文头部携带所述数据报文头部的负载程度;通过通信接口发送ACK报文。
在本发明实施例中,在确定TCP拥塞窗口的过程中,由于考虑了数据报文所经历的路径上各网络节点的负载程度,可以更加合理准确地确定拥塞窗口大小。在网络低负载或高负载阶段,本发明方法可以实现快速而准确地增大或减小拥塞窗口至理想状态,使网络传输资源快速收敛于高利用率并提高网络吞吐量;同时,应用本实施例的TCP发送窗口调整的方法,TCP发送端的每条业务流可以获得的负载程度相同,在网络低负载或高负载阶段,拥塞窗口的增加或减少的比例也相同,从而提高每条业务流之间的公平性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种网络架构示意图;
图2是本发明实施例提供的一种确定TCP拥塞窗口方法的流程示意图;
图3是本发明实施例提供的另一种确定TCP拥塞窗口方法的流程示意图;
图4是本发明实施例提供的一种网络节点确定TCP拥塞窗口方法的流程示意图;
图5是本发明实施例提供的另一种网络节点确定TCP拥塞窗口方法的流程示意图;
图6是本发明实施例提供的另一种网络节点确定TCP拥塞窗口方法的流程示意图;
图7是本发明实施例提供的一种TCP发送端确定TCP拥塞窗口方法的流程示意图;
图8是本发明实施例提供的一种TCP接收端确定TCP拥塞窗口方法的流程示意图;
图9是本发明实施例提供的一种TCP发送端的组成结构示意图;
图10是本发明实施例提供的另一种TCP发送端的组成结构示意图;
图11是本发明实施例提供的一种网络节点的组成结构示意图;
图12是本发明实施例提供的另一种网络节点的组成结构示意图;
图13是本发明实施例提供的一种TCP接收端的组成结构示意图;
图14是本发明实施例提供的另一种TCP接收端的组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本文中术语“***”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
本发明实施例提供的TCP拥塞窗口的确定方法和装置,适用于网络数据传输,尤其是在TCP发送端与TCP接收端之间通过一个或多个网络节点进行数据报文传输的场景。图1示出了本发明实施例应用的网络架构,网络中包含TCP发送端、网络节点以及TCP接收端等网元,其中TCP发送端通过M个网络节点将数据报文发送到TCP接收端,M为大于或等于1的整数。图1中M为2。首先对本发明实施例提供的TCP拥塞窗口的确定方法中各种方法执行主体进行说明。如图1所示,TCP发送端,包括但不限于网络服务器(英文:Web Server)、视频服务器(英文:Video Server)、即时通信服务器(英文:IM Server)和 游戏服务器(英文:Game Server)等,向TCP接收端提供网络页面、视频文件、IM交流和游戏等功能。TCP接收端,包括但不限于浏览器、视频播放器、IM聊天软件和网络游戏等多种不同应用,获取TCP发送端发送的数据,为用户提供网络浏览、视频播放、通信交流及娱乐休闲等功能。网络节点为位于TCP发送端和TCP接收端之间的数据报文转发设备,网络节点具有IP地址,支持传输层协议传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol,TCP/IP),可以是数字用户线路接入复用器(Digital Subscriber Line Access Multiplexer,DSLAM)、交换机、路由器或光线路终端设备(optical line terminal,OLT)等网络节点。本发明实施例的实现,部署在TCP发送端、网络节点以及TCP接收端的网元上。
图2为本发明提供的TCP拥塞窗口的确定方法的一种实施例的流程示意图。如图2所示,TCP发送端通过第一网络节点以及第二网络节点与TCP接收端连接。本实施例中将与TCP发送端直接连接的网络节点称为第一网络节点;第一网络节点和第二网络节点以及TCP接收端的连接可以是直接的连接,也可以是间接的连接,如第一网络节点和第二网络节点之间、以及第二网络节点与TCP接收端之间还可以连接有其他中继设备、交换设备、汇聚设备等网络节点,第一网络节点也可以直接和TCP接收端连接。本发明实施例的方法可以应用在TCP发送端和TCP接收端建立起TCP连接后的数据报文发送过程中。如图2所示,该方法包含如下步骤:
201、TCP发送端向第一网络节点发送源数据报文。
其中,所述源数据报文指TCP发送端向TCP接收端发送的数据报文。
202、第一网络节点获取其用于发送所述源数据报文对应的第一输出端口的负载程度,并将所述负载程度添加到源数据报文的头部。
在本发明实施例中,第一网络节点可以通过查找数据发送表来获取发送所述源数据报文对应的第一输出端口,其中获取发送数据报文对应的第一输出端口的方法可参阅现有技术,具体的实现细节在此不再赘述。
所述负载程度反应了网络节点在发送数据报文的第一输出端口的数据发送状况与该输出端口发送能力之间的关系。负载程度的取值为大于或等于0的实数。当负载程度小于1时,表明第一输出端口有超过发送数据报文所需的传输资源;当负载程度等于1时,表明第一输出端口的传输资源和发送数据报文所需的传输资源相当;当负载程度大于1时,表明第一输出端口的传输资源不能满足发送数据报文所需的传输资源,即第一输出端口进入拥塞状态。在一些实施方式中,负载程度可以表征为第一输出端口的空闲率,空闲率可表示为第一输出端口的剩余的或未使用的发送能力。示例性地,第一输出端口的带宽为1Gbps,实际的数据发送量只有600Mbps,那么第一输出端口的空闲率为40%(即(1Gbps-600Mbps)/1Gbps=40%)。由此可见,当第一输出端口的负载程度越小,对应的空闲率越大;反之,当第一输出端口的负载程度越大,对应的空闲率越小。在另一些实施方式中,负载程度可以表征为第一输出端口的拥塞度,拥塞度可表示为第一输出端口未能满足数据报文发送需求的所需的额外的传输资源。示例性地,第一输出端口发送的数据报文速率需求为1.2Gbps,而其对应的带宽为1Gbps,那么第一输出端口的拥塞度为20%(即1.2Gbps/1Gbps-1=20%),即数据报文发送流量超出可用带宽20%。由此可见,当第一输出端口的负载程度越大,对应的拥塞度越大;反之,当第一输出端口的负载程度越小,对应的拥塞度也越小。可选地,第一网络节点对第一输出端口负载程度的获取方式为,第一网 络节点在通过第一输出端口发送的一个或多个TCP业务流的最大RTT之后(一般为200ms左右)检测各个TCP业务流的流量趋于稳定,经过随后的多个采样周期(一般为ms级)检测第一输出端口的数据发送状况和传输资源,从而获取所述第一输出端口的负载程度。此外,所述负载程度还可以使用第一端口的繁忙程度、队列长度、或资源剩余量来表征。
在本发明实施例中,第一网络节点根据所述第一输出端口的负载程度更新所接收的源数据报文。具体地,第一网络节点将第一输出端口的所述负载程度添加到所接收的源数据报文的头部,源数据报文的载荷保持不变,生成第一网络节点数据报文。示例性地,如果TCP发送端发送的是IP数据报文,则数据报文的IP头部携带的负载程度可以通过扩展IP选项来实现。具体地,可以将需要封装的内容封装到IP报文的类型、长度、数值TLV(Type-Length-Value)字段中,如表格1所示。
表格1
Type Length Value
负载程度 Value字段为float类型,占用4个字节 0.8
值得说明的是,表格1示例性地给出第一网络节点第一输出端口的负载程度为0.8,在实际网络中,该数值的大小根据第一网络节点第一输出端口基于前述的负载程度定义计算所得。例如,第一输出端口的带宽为1Gbps,负载程度为0.8,则表示第一输出端口的空闲率为20%。
203、第一网络节点向第二网络节点发送第一网络节点数据报文。所述数据报文的头部携带了负载程度。
其中,所述负载程度是第一网络节点在接收的源数据报文的头部添加的第一网络节点第一输出端口的负载程度。
204、第二网络节点接收第一网络节点发送的第一网络节点数据报文,获取第二网络节点发送所述数据报文对应的第二输出端口的负载程度,若所述负载程度大于第一网络节点数据报文头部的负载程度时,更新第一网络节点数据报文头部的负载程度,生成第二网络节点数据报文,所述第一网络节点数据报文和第二网络节点数据报文的载荷是相同的;否则不改变第一网络节点数据报文头部的负载程度,将第一网络节点数据报文作为第二网络节点数据报文。
在本发明实施例中,第二网络节点可通过查找数据发送表来获取发送所述数据报文对应到第二输出端口,其中获取发送数据报文对应的第二输出端口的方法可参阅现有技术,具体的实现细节在此不再赘述。
具体地,第二网络节点获取自身在第二输出端口的负载程度,并将所述负载程度与所接收的第一网络节点数据报文头部的负载程度进行比较。一方面,若所述负载程度大于第一网络节点数据报文头部的负载程度,表明第二网络节点为所述数据报文能提供的传输能力低于第一网络节点为所述数据报文提供的传输能力。在这种情况下,第二网络节点是网路中传输所述TCP源数据报文的瓶颈节点。此时,第二网络节点将第二网络节点第二输出端口的负载程度替换所接收的第一网络节点数据报文的头部的负载程度,并保持第一网络节点数据报文的载荷不变,作为第二网络节点发送的数据报文。另一方面,若所述负载程度等于或小于所接收到的第一网络节点数据报文头部的负载程度,表明第二网络节点为所述数据报文能提供的传输能力不低于第一网络节点为所述数据报文提供的传输能力。在这种情况下,第二网络节点不是网络中传输所述TCP数据报文的瓶颈节点。此时,第二网络 节点可以不对接收到的第一网络节点数据报文的头部的负载程度进行处理,直接将接收到的第一网络节点数据报文作为第二网络节点数据报文。
205、第二网络节点向TCP接收端发送第二网络节点数据报文。该数据报文的头部携带了经过第二网络节点处理后的负载程度。
在本发明实施例中,根据上述步骤204的操作,一方面,如果第二网络节点第二输出端口的负载程度大于第一网络节点数据报文头部的负载程度,则第二网络节点数据报文的头部携带的负载程度是第二网络节点第二输出端口的负载程度;另一方面,如果第二网络节点第二输出端口的负载程度等于或小于第一网络节点数据报文头部的负载程度,则第二网络节点数据报文的头部携带的负载程度是第一网络节点第一输出端口的负载程度。
206、TCP接收端通过解析所接收的第二网络节点数据报文,从数据报文的头部获取负载程度,并将所述负载程度封装到ACK报文的头部。
其中,所述ACK报文的头部携带的负载程度是TCP接收端接收到的第二网络节点数据报文头部携带的负载程度。
在本发明实施例中,TCP接收端通过解析所接收的数据报文,从接收的数据报文的头部获取负载程度,并将该负载程度封装到ACK报文的头部。示例性地,所述ACK报文可以以TCP协议承载,则ACK报文的TCP头部携带的负载程度可以通过扩展TCP选项来实现。具体地,可以将需要封装的内容封装到TCP报文的类型、长度、数值TLV(Type-Length-Value)字段中,具体实现和表格1所示的IP选项是一致的。TCP接收端从数据报文头部获取负载程度并将该负载程度重新封装到ACK报文的TCP头部的方法可参阅现有技术,具体的实现细节在此不再赘述。
207、TCP接收端向TCP发送端返回确认(Acknowledgement,ACK)报文,所述ACK报文的头部携带负载程度。
其中,所述负载程度是TCP接收端经过上述步骤206操作后获取的负载程度。
208、TCP发送端接收到TCP接收端返回的ACK报文后,根据ACK报文头部携带的负载程度以及TCP发送端当前的拥塞窗口,确定新的TCP拥塞窗口。
其中,TCP发送端根据所述负载程度确定新的TCP拥塞窗口的具体方法在后续实施例中有详细描述。
图3为本发明提供的TCP拥塞窗口的确定方法的另一实施例的流程示意图。该方法包含如下步骤:
301、TCP发送端向第一网络节点发送源数据报文。
302、第一网络节点获取其用于发送所述数据报文对应的第一输出端口的负载程度。第一网络节点根据所述第一输出端口的负载程度更新所接收的源数据报文。具体地,第一网络节点将第一输出端口的所述负载程度添加到所接收的源数据报文的头部,源数据报文的载荷保持不变,生成第一网络节点数据报文。
303、第一网络节点向第二网络节点发送第一网络节点数据报文。该数据报文的头部携带了负载程度。
上述步骤301、302和303分别与前述实施例中步骤201、202和203的实现方式相类似,此处不再赘述。
304、第二网络节点接收第一网络节点发送的数据报文,获取第二网络节点发送所述数据报文对应的第二输出端口的负载程度,将所述负载程度添加到所接收的数据报文头部 以更新数据报文头部的负载程度,生成第二网络节点数据报文,所述第一网络节点数据报文和第二网络节点数据报文的载荷是相同的。
在本发明实施例中,第二网络节点不修改所接收到的第一网络节点数据报文头部的负载程度,第二网络节点将发送所述数据报文对应的第二输出端口的负载程度添加到第一网络节点数据报文的头部。示例性地,如果TCP发送端发送的是IP数据报文,第二网络节点可以将第二输出端口的负载程度以TLV字段形式添加到所接收的第一网络节点数据报文IP头部的负载程度的TLV字段之后,形成新的负载程度。与前述实施例中步骤204不同之处在于,经过步骤304后,所述第二网络节点数据报文的IP头部携带的负载程度包含了第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度。
305、第二网络节点向TCP接收端发送第二网络节点数据报文。该数据报文的头部携带了经过第二网络节点处理后的负载程度。
其中,所述数据报文的头部携带的负载程度包含了第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度。
306、TCP接收端通过解析所接收的第二网络节点数据报文,从数据报文的头部获取负载程度,并将该负载程度封装到ACK报文的头部。
在一些实施方式中,所述ACK报文的头部携带的负载程度是未经处理的TCP接收端接收到的数据报文头部携带的负载程度。示例性地,TCP接收端接收到的数据报文头部携带的负载程度包含第一网络节点和第二网络节点的负载程度,TCP接收端可以将所述第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度不进行处理,直接封装到ACK报文的头部。在另一些实施方式中,所述ACK报文的头部携带的负载程度是经处理的TCP接收端接收到的数据报文头部携带的负载程度。示例性地,TCP接收端接收到的数据报文头部携带的负载程度包含第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度,TCP接收端把所述第一网络节点和第二网络节点的负载程度进行数学运算处理,如进行平均处理,将平均后的负载程度封装到ACK报文的头部。
307、TCP接收端向TCP发送端返回确认(Acknowledgement,ACK)报文,所述ACK报文的头部携带负载程度。
在一些实施方式中,所述ACK报文的头部携带的负载程度包含了第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度。在另一些实施方式中,所述ACK报文的头部携带的负载程度包含了将第一网络节点第一输出端口的负载程度和第二网络节点第二输出端口的负载程度进行数学运算处理后的负载程度。
308、TCP发送端接收到TCP接收端返回的ACK报文后,根据ACK报文头部携带的负载程度以及TCP发送端当前的拥塞窗口,确定新的TCP拥塞窗口。
其中,TCP发送端根据所述负载程度确定新的TCP拥塞窗口的具体方法在后续实施例中有详细描述。
接下来首先从网络节点侧介绍本发明实施例提供的TCP拥塞窗口的确定方法。图4为本发明网络中拥塞窗口确定方法的一种实施例的流程示意图,本实施例的执行主体是网络节点,本实施例的方法如下:
401、接收数据报文,所述数据报文的头部携带该数据报文所经历路径的负载程度。
其中,所述数据报文的头部携带负载程度。在一些实施方式中,网络节点接收TCP发送端发送的源数据报文;此时所述网络节点对应如图2所示的第一网络节点。在这种情况 下,所述网络节点默认所接收的数据报文头部携带的负载程度为0。在另一些实施方式中,网络节点接收其他网络节点发送的数据报文;此时所述网络节点对应如图2所示的第二网络节点。在这种情况下,所述网络节点所接收的数据报文头部携带经过所述其他网络节点处理后的负载程度。
402、获取发送所述数据报文对应的第一输出端口的负载程度。
所述负载程度反映了网络节点在发送数据报文的第一输出端口的数据发送状况与该输出端口发送能力之间的关系。负载程度的取值为大于或等于0的实数。当负载程度小于1时,表明第一输出端口有超过发送数据报文所需的传输资源;当负载程度等于1时,表明第一输出端口的传输资源和发送数据报文所需的传输资源相当;当负载程度大于1时,表明第一输出端口的传输资源不能满足发送数据报文所需的传输资源,即第一输出端口进入拥塞状态。在一些实施方式中,负载程度可以表征为第一输出端口的空闲率,空闲率可表示为第一输出端口的剩余的或未使用的发送能力。示例性地,第一输出端口的带宽为1Gbps,实际的数据发送量只有600Mbps,那么第一输出端口的空闲率为40%(即(1Gbps-600Mbps)/1Gbps=40%)。由此可见,当第一输出端口的负载程度越小,对应的空闲率越大;反之,当第一输出端口的负载程度越大,对应的空闲率越小。在另一些实施方式中,负载程度可以表征为第一输出端口的拥塞度,拥塞度可表示为第一输出端口未能满足数据报文发送需求的所需的额外的传输资源。示例性地,第一输出端口发送的数据报文速率需求为1.2Gbps,而其对应的带宽为1Gbps,那么第一输出端口的拥塞度为20%(即1.2Gbps/1Gbps-1=20%),也就是说数据报文发送流量超出可用带宽20%。由此可见,当第一输出端口的负载程度越大,对应的拥塞度越大;反之,当第一输出端口的负载程度越小,对应的拥塞度也越小。此外,所述负载程度还可以使用第一端口的繁忙程度、队列长度、或资源剩余量来表征。可选地,第一网络节点对第一输出端口负载程度的获取方式为,第一网络节点在通过第一输出端口发送的一个或多个TCP业务流的最大RTT之后(一般为200ms左右)检测各个TCP业务流的流量趋于稳定,经过随后的多个采样周期(一般为ms级)检测第一输出端口的数据发送状况和传输资源,从而获取所述第一输出端口的负载程度。
403、根据第一输出端口的负载程度更新所述数据报文的负载程度。
在本发明实施例中,网络节点根据第一输出端口的负载程度更新所接收的数据报文头部的负载程度,并保持数据报文的载荷不变,作为更新后的数据报文。
404、发送所述更新后的数据报文。
可选地,在上述步骤403中,网络节点接收其他网络节点发送的数据报文,并在确定第一输出端口的负载程度大于接收的数据报文头部的负载程度时,将所述第一输出端口的负载程度替换所接收到的数据报文的头部的负载程度,并保持数据报文的载荷不变,作为更新后的数据报文。
可选地,在上述步骤403中,网络节点不修改所接收的数据报文头部的负载程度,将第一输出端口的负载程度添加到所接收的数据报文的头部,并保持数据报文的载荷不变,作为更新后的数据报文。
图5为结合上述第一种更新数据报文方式的网络节点的流程示意图,本实施例的方法如下:
501、接收数据报文。
502、获取其用于发送所述数据报文对应的第一输出端口的负载程度。
503、判断第一输出端口的负载程度是否大于所接收的数据报文头部的负载程度。若是,则进入步骤504;否则,跳至步骤505。
在一些实施方式中,网络节点接收TCP发送端发送的源数据报文,则默认为接收的数据报文头部携带的负载程度为0。在另一些实施方式中,网络节点接收其他网络节点发送的数据报文,接收的数据报文的负载程度为所述数据报文头部携带的负载程度。进一步地,网络节点获取发送数据报文对应的第一输出端口的负载程度,并将该负载程度与接收的数据报文头部的负载程度进行比较。
504、将第一输出端口的负载程度替换所述数据报文头部的负载程度,所述数据报文的载荷保持不变,生成网络节点数据报文。
在本发明实施例中,网络节点是网路中传输所述TCP源数据报文的瓶颈节点。此时,所述网络节点将第一输出端口的负载程度替换所接收到的数据报文的头部的负载程度,并保持数据报文的载荷不变,作为所述网络节点发送的数据报文。
505、发送网络节点数据报文。
其中,所述网络节点数据报文中的头部携带负载程度。在一些实施方式中,所述负载程度可以是所述网络节点接收的数据报文头部的负载程度。在另一些实施方式中,所述负载程度可以是所述网络节点第一输出端口的负载程度。
图6为结合上述第二种更新数据报文方式的网络节点的流程示意图,本实施例的方法如下:
601、接收数据报文。
602、获取其用于发送所述数据报文对应的第一输出端口的负载程度。
上述步骤601、602分别与前述实施例中步骤501、502的实现方式相类似,此处不再赘述。
603、将第一输出端口的负载程度添加入数据报文头部,所述数据报文的载荷保持不变,生成网络节点数据报文。
在本发明实施例中,网络节点不修改所接收的数据报文头部的负载程度,网络节点将发送所述数据报文对应的第一输出端口的负载程度添加到所接收的数据报文的头部,并保持数据报文的载荷不变,作为所述网络节点发送的数据报文。与前述实施例中步骤503不同之处在于,经过步骤603后,所述网络节点数据报文的头部携带的负载程度包含了所述网络节点接收的数据报文头部携带的负载程度以及所述网络节点的第一输出端口的负载程度。
604、发送网络节点数据报文。
其中,所述网络节点数据报文中的头部携带负载程度。该负载程度可以包含所述网络节点接收的数据报文头部携带的负载程度和所述网络节点的第一输出端口的负载程度。
接下来从TCP发送端侧介绍本发明实施例提供的TCP拥塞窗口的确定方法。图7为本发明网络中拥塞窗口确定方法的一种实施例的流程示意图,本实施例的执行主体是TCP发送端,结合图1所示的网络场景,本实施例的方法如下:
701、发送源数据报文,等待接收ACK报文。
其中,所述源数据报文指TCP发送端向TCP接收端发送的数据报文。在本发明实施例中,TCP发送端发送源数据报文后,进入等待接收状态,等待TCP接收端返回的ACK报文。
702、接收ACK报文。
其中,所述ACK报文是TCP接收端返回给TCP发送端,用以确认收到TCP发送端发送的源数据报文。
703、根据ACK报文头部携带的负载程度确定TCP拥塞窗口。
在本发明实施例中,TCP发送端根据接收的ACK报文头部携带的负载程度,结合当前的拥塞窗口,确定新的TCP拥塞窗口。
可选地,在上述步骤703中,TCP发送端接收到的ACK报文头部携带的负载程度包含一个负载程度TLV。新的TCP拥塞窗口可以确定为当前拥塞窗口与负载程度的数学运算。示例性地,当负载程度小于或等于1时,新的TCP拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,新的TCP拥塞窗口=当前拥塞窗口/负载程度。例如,当前TCP拥塞窗口=100,如果负载程度=50%,即网络中的空闲率为50%,则新的TCP拥塞窗口=100*(1+(1-50%)/50%)=200,即新的TCP拥塞窗口比当前TCP拥塞窗口增加了一倍;如果负载程度=120%,即网络中的拥塞率为20%,则新的TCP拥塞窗口=100/120%=83,即新的TCP拥塞窗口比当前TCP拥塞窗口减少了20%。当TCP发送端同时发送多个业务流时,如第一业务流和第二业务流,每个业务流有各自的TCP拥塞窗口。相应地,每个业务流的新的TCP拥塞窗口可以确定为每个业务流的当前拥塞窗口与负载程度的数学运算。示例性地,当负载程度小于或等于1时,每个业务流的新的TCP拥塞窗口=每个业务流的当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,每个业务流的新的TCP拥塞窗口=每个业务流的当前拥塞窗口/网络拥塞程度。例如,第一业务流当前TCP拥塞窗口=50,第二业务流当前TCP拥塞窗口=80,如果负载程度=50%,即网络中的空闲率为50%,则第一业务流的新的TCP拥塞窗口=50*(1-50%)/50%=100,第二业务流的新的TCP拥塞窗口=80*(1+(1-50%)/50%)=160;如果负载程度=120%,即网络中的拥塞率为20%,则第一业务流的新的TCP拥塞窗口=50/120%=41,第二业务流的新的TCP拥塞窗口=80/120%=66。
可选地,在上述步骤703中,TCP发送端收到的ACK报文头部携带的负载程度包含多个负载程度TLV。新的TCP拥塞窗口可以确定为当前拥塞窗口与负载程度中的多个负载程度的数学运算。示例性地,当负载程度小于或等于1时,新的TCP拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);当负载程度大于1时,新的TCP拥塞窗口=当前拥塞窗口/网络拥塞程度。其中,
Figure PCTCN2017106730-appb-000001
N表示负载程度包含了N个负载程度。当TCP发送端发送一个业务流时,如果当前TCP拥塞窗口=100并且负载程度包含两个负载程度TLV为负载程度1=50%、负载程度2=70%,则负载程度=(50%+70%)/2=60%,即网络中的空闲率为40%,则新的TCP拥塞窗口=100*(1+(1-60%)/60%)=166;如果当前TCP拥塞窗口=100并且负载程度包含两个负载程度TLV为负载程度1=120%,负载程度2=110%,则负载程度=(120%+110%)/2=105%,即网络中的拥塞率为5%,则新的TCP拥塞窗口=100/105%=95。当TCP发送端同时发送多个业务流时,每个业务流的新的TCP拥塞窗口可以确定为每个业务流的当前拥塞窗口与负载程度的数学运算。示例性地,第一业务流当前TCP拥塞窗口=50,第二业务流当前TCP拥塞窗口=80,如果负载程度包含两个负载程度TLV为负载程度1=50%,负载程度2=70%,则负载程度=(50%+70%)/2=60%,即网络中的空闲率为40%,则第一业务流的新的TCP拥塞窗口=50*(1+(1-60%)/60%)=83,第二业务流的新的TCP拥塞窗口=80*(1+(1-60%)/60%)=133;如果负载程度包含两个 负载程度TLV为负载程度1=120%,负载程度2=110%,则负载程度=(120%+110%)/2=105%,即网络中的拥塞率为5%,则第一业务流的新的TCP拥塞窗口=50/105%=47,第二业务流的新的TCP拥塞窗口=80/105%=76。
接下来从TCP接收端侧介绍本发明实施例提供的TCP拥塞窗口的确定方法。图8为本发明网络中拥塞窗口确定方法的一种实施例的流程示意图,本实施例的执行主体是TCP接收端,结合图1所示的网络场景,本实施例的方法如下:
801、接收数据报文。
802、生成所述数据报文的ACK报文,所述ACK报文头部携带所述数据报文头部的负载程度。
803、发送ACK报文。
其中,所述ACK报文的头部携带负载程度。
可选地,在上述步骤802中,TCP接收端把接收的数据报文头部携带的负载程度不进行处理,直接封装到ACK报文的头部。在这种情况下,ACK报文的头部携带的负载程度可包含一个或多个负载程度TLV。
可选地,在上述步骤802中,TCP接收端把接收的数据报文头部携带的负载程度进行数学运算处理,将经过运算处理的负载程度封装到ACK报文的头部。在这种情况下,ACK报文的头部携带的负载程度包含一个负载程度TLV。
上述主要从各个网元之间的交互以及网元自身的处理的角度对本发明实施例提供的方案进行了介绍。可以理解的是,各个网元为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例,本专利申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本专利申请的范围。
本专利申请进一步给出实现上述方法实施例中各步骤及方法的装置实施例。值得注意的是,装置实施例可以与上述方法配合使用,也可以单独使用。
图9是本发明实施例提供的一种TCP发送端的结构示意图。如图9所示,该TCP发送端包括处理器901、存储器902以及通信接口903。处理器901连接到存储器902和通信接口903,例如处理器901可以通过总线连接到存储器902和通信接口903。
处理器901被配置为支持TCP发送端执行上述方法中相应的功能。该处理器901可以是中央处理器(英文:central processing unit,CPU),网络处理器(英文:network processor,NP),硬件芯片或者其任意组合。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,ASIC),可编程逻辑器件(英文:programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,FPGA),通用阵列逻辑(英文:generic array logic,GAL)或其任意组合。
存储器902存储器用于存储TCP发送端需要发送的数据报文、以及来自TCP接收端返回的ACK报文等。存储器902可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器902也可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory, 缩写:ROM),快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器902还可以包括上述种类的存储器的组合。
通信接口903用于与网络节点或者TCP接收端连接,与网络节点或者TCP接收端收发上述方法中所涉及的消息。
处理器901可以执行以下操作:
通过通信接口903发送源数据报文,并接收TCP接收端返回的ACK报文,所述ACK报文的头部携带负载程度;根据所述负载程度来确定TCP拥塞窗口。具体实施方式请参阅图7所述实施例的描述。
图10是本发明实施例提供的另一种TCP发送端的结构示意图。如图10所示,该TCP发送端包括:
接收模块1001,用于接收ACK报文,所述ACK报文的头部携带负载程度。
处理模块1002,用于根据接收到的所述ACK报文的头部携带的负载程度,调整TCP发送窗口。具体实施方式请参阅图7所述实施例的描述。
发送模块1003,用于发送源数据报文。
图11是本发明实施例提供的一种网络节点的结构示意图。如图11所示,该网络节点包括处理器1101、存储器1102以及通信接口1103。处理器1101连接到存储器1102和通信接口1103,例如处理器1101可以通过总线连接到存储器1102和通信接口1003。
处理器1101被配置为支持网络节点执行上述方法中相应的功能。该处理器1101可以是中央处理器(英文:central processing unit,CPU),网络处理器(英文:network processor,NP),硬件芯片或者其任意组合。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,ASIC),可编程逻辑器件(英文:programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,FPGA),通用阵列逻辑(英文:generic array logic,GAL)或其任意组合。
存储器1102存储器用于存储网络节点所接收的数据报文。存储器1102可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器1102也可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器1102还可以包括上述种类的存储器的组合。
通信接口1103用于与TCP发送端、其他网络节点或者TCP接收端连接,与TCP发送端、其他网络节点或者TCP接收端收发上述方法中所涉及的消息。
处理器1101可以执行以下操作:
通过通信接口1103接收TCP发送端或者其他网络节点的数据报文,和向其他网络节点或TCP接收端发送数据报文。具体实施方式请参阅图4至图6所述实施例的描述。
图12是本发明实施例提供的另一种网络节点的结构示意图。如图12所示,该网络节点包括:
接收模块1201,用于接收TCP发送端或其他网络节点发送的数据报文。
处理模块1202,用于根据接收到的数据报文以及第一输出端口的拥塞度对数据报文进 行处理,生成所述网络节点发送的数据报文。具体实施方式请参阅图4至图6所述实施例的描述。
发送模块1203,用于发送经过所述网络节点处理的数据报文。
图13是本发明实施例提供的一种TCP接收端的结构示意图。如图13所示,该TCP接收端包括处理器1301、存储器1302以及通信接口1303。处理器1301连接到存储器1302和通信接口1303,例如处理器1301可以通过总线连接到存储器1302和通信接口1303。
处理器1301被配置为支持TCP接收端执行上述方法中相应的功能。该处理器1301可以是中央处理器(英文:central processing unit,CPU),网络处理器(英文:network processor,NP),硬件芯片或者其任意组合。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,ASIC),可编程逻辑器件(英文:programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,FPGA),通用阵列逻辑(英文:generic array logic,GAL)或其任意组合。
存储器1302存储器用于存储TCP接收端接收的数据报文等。存储器1302可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器1302也可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器1302还可以包括上述种类的存储器的组合。
通信接口1303用于与网络节点或者TCP发送端连接,与网络节点或者TCP发送端收发上述方法中所涉及的消息。
处理器1301可以执行以下操作:
通过通信接口1303接收数据报文,所述数据报文的头部携带负载程度;根据所述负载程度来确定ACK报文的头部的负载程度。具体实施方式请参阅图8所述实施例的描述。
图14是本发明实施例提供的另一种TCP接收端的结构示意图。如图14所示,该TCP接收端包括:
接收模块1401,用于接收数据报文,所述数据报文的头部携带负载程度。
处理模块1402,用于根据接收到的所述数据报文的头部携带的负载程度,生成ACK报文的头部的负载程度。具体实施方式请参阅图8所述实施例的描述。
发送模块1403,用于发送ACK报文。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
本发明实施例提出了一种网络节点通过接收TCP发送端发送的数据报文,获取第一输出端口的负载程度,通过第一输出端口的负载程度和数据报文的头部携带的负载程度进行比较来更新数据报文头部的负载程度,并发送数据包到TCP接收端,TCP接收端在返回的 ACK报文头部携带数据报文中的负载程度,TCP接收端根据接收的ACK报文头部的负载程度来确定拥塞窗口大小。可以看出,在确定TCP拥塞窗口的过程中,考虑了数据报文的发送路径上各网络节点的负载程度,因此,可以更加合理准确地确定拥塞窗口大小。在网络低负载或高负载阶段,本发明方法的主要目的是快速增大或减小拥塞窗口至理想状态,使网络收敛于高利用率,提高带宽利用率和网络吞吐量;同时,提高数据流连接之间的公平性。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本专利申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本专利申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包含若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本专利申请各个实施例方法的全部或部分步骤。而前述的存储介质包含:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本专利申请的具体实施方式,但本专利申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本专利申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本专利申请的保护范围之内。因此,本专利申请的保护范围应以权利要求的保护范围为准。

Claims (16)

  1. 一种TCP拥塞窗口的确定方法,其特征在于,包括:
    网络节点接收数据报文,所述数据报文的头部携带该数据报文所经历路径的负载程度;
    所述网络节点获取发送所述数据报文对应的第一输出端口的负载程度;
    所述网络节点根据第一输出端口的负载程度更新所述数据报文的负载程度;
    所述网络节点发送所述更新后的数据报文。
  2. 根据权利要求1所述的方法,其特征在于,所述网络节点更新数据报文的负载程度包括:
    所述网络节点将发送数据报文对应的第一输出端口的负载程度添加到所述数据报文的头部。
  3. 根据权利要求1所述的方法,其特征在于,所述网络节点更新数据报文的负载程度包括:
    所述网络节点确定发送数据报文对应的第一输出端口的负载程度大于所述数据报文头部的负载程度;
    所述网络节点将发送数据报文对应的第一输出端口的负载程度替换所述数据报文头部的负载程度。
  4. 根据权利要求1-3任一项所述的方法,其特征在于,所述负载程度可以表征为空闲率或拥塞度。
  5. 根据权利要求1所述的方法,其特征在于,所述数据报文是IP数据报文。
  6. 一种TCP拥塞窗口的确定方法,其特征在于,包括:
    TCP发送端发送源数据报文,等待接收ACK报文;
    所述TCP发送端接收ACK报文;
    所述TCP发送端根据所述ACK报文头部携带的负载程度确定TCP拥塞窗口。
  7. 根据权利要求6所述的方法,其特征在于,所述确定TCP拥塞窗口的方法还包括:
    当负载程度小于或等于1时,新的TCP拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);
    当负载程度大于1时,新的TCP拥塞窗口=当前拥塞窗口/负载程度。
  8. 一种TCP拥塞窗口的确定方法,其特征在于,包括:
    TCP接收端接收数据报文;
    所述TCP接收端生成所述数据报文的ACK报文,所述ACK报文头部携带所述数据报文头部的负载程度;
    所述TCP接收端发送ACK报文。
  9. 一种网络节点,包括:
    通信接口;
    处理器,用于通过通信接口接收数据报文,并获取发送所述数据报文对应的第一输出端口的负载程度;所述数据报文的头部携带该数据报文所经历路径的负载程度;根据第一输出端口的负载程度更新所述数据报文的负载程度;通过通信接口发送所述更新后的数据报文。
  10. 根据权利要求9所述的网络节点,其特征在于,所述处理器更新数据报文的负载程度包括:
    所述处理器将发送数据报文对应的第一输出端口的负载程度添加到所述数据报文的头部。
  11. 根据权利要求9所述的网络节点,其特征在于,所述处理器更新数据报文的负载程度包括:
    所述处理器确定发送数据报文对应的第一输出端口的负载程度大于所述数据报文头部的负载程度;
    所述处理器将发送数据报文对应的第一输出端口的负载程度替换所述数据报文头部的负载程度。
  12. 根据权利要求9-11任一项所述的网络节点,其特征在于,所述负载程度可以表征为第一输出端口的空闲率或拥塞度。
  13. 根据权利要求9所述的网络节点,其特征在于,所述数据报文是IP数据报文。
  14. 一种TCP发送端,包括:
    通信接口;
    处理器,用于通过通信接口发送源数据报文和接收ACK报文;根据所述ACK报文头部携带的负载程度确定TCP拥塞窗口。
  15. 根据权利要求14所述的TCP发送端,其特征在于,所述处理器确定TCP拥塞窗口的步骤还包括:
    当负载程度小于或等于1时,新的TCP拥塞窗口=当前拥塞窗口*(1+(1-负载程度)/负载程度);
    当负载程度大于1时,新的TCP拥塞窗口=当前拥塞窗口/负载程度。
  16. 一种TCP接收端,包括:
    通信接口;
    处理器,用于通过通信接口接收数据报文;生成所述数据报文的ACK报文,所述ACK报文头部携带所述数据报文头部的负载程度;通过通信接口发送ACK报文。
PCT/CN2017/106730 2016-10-28 2017-10-18 Tcp拥塞窗口的确定方法和装置 WO2018077100A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP17865389.5A EP3525406A4 (en) 2016-10-28 2017-10-18 METHOD AND DEVICE FOR DETERMINING A TCP OVERLOAD WINDOW
US16/396,047 US20190253364A1 (en) 2016-10-28 2019-04-26 Method For Determining TCP Congestion Window, And Apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610971199.1A CN108011834A (zh) 2016-10-28 2016-10-28 Tcp拥塞窗口的确定方法和装置
CN201610971199.1 2016-10-28

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/396,047 Continuation US20190253364A1 (en) 2016-10-28 2019-04-26 Method For Determining TCP Congestion Window, And Apparatus

Publications (1)

Publication Number Publication Date
WO2018077100A1 true WO2018077100A1 (zh) 2018-05-03

Family

ID=62024401

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2017/106730 WO2018077100A1 (zh) 2016-10-28 2017-10-18 Tcp拥塞窗口的确定方法和装置

Country Status (4)

Country Link
US (1) US20190253364A1 (zh)
EP (1) EP3525406A4 (zh)
CN (1) CN108011834A (zh)
WO (1) WO2018077100A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110830381B (zh) 2018-08-10 2021-10-26 华为技术有限公司 拥塞控制方法及相关设备
EP3664398A1 (en) * 2018-12-06 2020-06-10 InterDigital CE Patent Holdings Network equipment and method for delivering data packets
EP4011044A1 (en) * 2019-08-06 2022-06-15 Telefonaktiebolaget LM Ericsson (publ) Technique for controlling and performing data traffic handling in a core network domain
CN110856214B (zh) * 2019-10-29 2023-01-10 广东省电信规划设计院有限公司 一种tcp拥塞控制方法及装置
CN111328106B (zh) * 2020-03-10 2023-04-18 中国联合网络通信集团有限公司 拥塞控制方法及装置
US11706144B2 (en) * 2020-05-06 2023-07-18 Marvell Israel (M.I.S.L) Ltd. Marking packets based on egress rate to indicate congestion
CN111953555A (zh) * 2020-06-29 2020-11-17 联想(北京)有限公司 一种链路检测方法、cpe及存储介质
CN115484210B (zh) * 2022-08-16 2023-07-25 北京百度网讯科技有限公司 拥塞窗口的确定方法、装置与***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101056259A (zh) * 2007-05-21 2007-10-17 中南大学 一种用于高速网络中的协同工作式拥塞控制方法
US7352700B2 (en) * 2003-09-09 2008-04-01 Lucent Technologies Inc. Methods and devices for maximizing the throughput of TCP/IP data along wireless links
CN102404208A (zh) * 2011-11-11 2012-04-04 中国科学院软件研究所 一种稳定高效的互联网拥塞控制方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6882624B1 (en) * 1998-04-09 2005-04-19 Nokia Networks Oy Congestion and overload control in a packet switched network
US6760775B1 (en) * 1999-03-05 2004-07-06 At&T Corp. System, method and apparatus for network service load and reliability management
US6741555B1 (en) * 2000-06-14 2004-05-25 Nokia Internet Communictions Inc. Enhancement of explicit congestion notification (ECN) for wireless network applications
JP3814185B2 (ja) * 2000-11-13 2006-08-23 松下電器産業株式会社 基地局装置、移動通信端末装置、及びそれらを用いた無線アクセスシステム
US7284047B2 (en) * 2001-11-08 2007-10-16 Microsoft Corporation System and method for controlling network demand via congestion pricing
US9344377B2 (en) * 2010-04-30 2016-05-17 Broadcom Corporation Packet processing architecture
US20120030451A1 (en) * 2010-07-28 2012-02-02 Broadcom Corporation Parallel and long adaptive instruction set architecture
JP5832335B2 (ja) * 2012-02-24 2015-12-16 株式会社日立製作所 通信装置および通信システム
US9276866B2 (en) * 2012-11-30 2016-03-01 Microsoft Technology Licensing, Llc Tuning congestion notification for data center networks
CN108023683B (zh) * 2016-11-02 2020-12-25 华为技术有限公司 一种发送报文的方法、装置、芯片及终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7352700B2 (en) * 2003-09-09 2008-04-01 Lucent Technologies Inc. Methods and devices for maximizing the throughput of TCP/IP data along wireless links
CN101056259A (zh) * 2007-05-21 2007-10-17 中南大学 一种用于高速网络中的协同工作式拥塞控制方法
CN102404208A (zh) * 2011-11-11 2012-04-04 中国科学院软件研究所 一种稳定高效的互联网拥塞控制方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3525406A4 *

Also Published As

Publication number Publication date
CN108011834A (zh) 2018-05-08
US20190253364A1 (en) 2019-08-15
EP3525406A4 (en) 2019-08-21
EP3525406A1 (en) 2019-08-14

Similar Documents

Publication Publication Date Title
WO2018077100A1 (zh) Tcp拥塞窗口的确定方法和装置
KR102030574B1 (ko) 전송 제어 프로토콜(tcp) 데이터 패킷을 송신하는 방법 및 장치 그리고 시스템
CN109981471B (zh) 一种缓解拥塞的方法、设备和***
US8306039B2 (en) Methods and systems for automatic transport path selection for multi-homed entities in stream control transmission protocol
US8953631B2 (en) Interruption, at least in part, of frame transmission
WO2018121068A1 (zh) 确定传输路径的方法和装置
CN107070689B (zh) 减少使用网络保活消息时的错误警告的方法及装置
CN106612284B (zh) 一种流数据的传输方法和装置
WO2019029318A1 (zh) 网络拥塞的通告方法、代理节点及计算机设备
JP5867188B2 (ja) 情報処理装置、輻輳制御方法および輻輳制御プログラム
CN106936730B (zh) 一种报文发送方法、tcp代理以及tcp客户端
JP5867160B2 (ja) 通信制御装置、通信制御方法および通信制御プログラム
EP3232638A1 (en) Data transmission method, apparatus and system
US20100157803A1 (en) Method and system to manage network traffic congestion in networks with link layer flow control
WO2019101208A1 (zh) 一种传输速率调整的方法、节点设备以及服务器
CN105262836A (zh) 服务器推送信息的方法及客户端接收推送信息的方法
WO2019128649A1 (zh) 一种发送数据流的方法、设备和***
US20230275924A1 (en) Network security protection method and protection device
KR101540494B1 (ko) 네트워크 메시지 관리 디바이스 및 그 방법들
JP5592301B2 (ja) クライアント装置、通信システム、生存確認方法、及びプログラム
EP3562108B1 (en) Load sharing between hybrid tunnels
CN113794641B (zh) 报文处理方法及装置
CN111274195B (zh) Rdma网络流控方法、装置及计算机可读存储介质
CN113424578B (zh) 一种传输控制协议加速方法和装置
Zampognaro Enabling CoDel AQM with TCP Cubic connections over satellite links

Legal Events

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

Ref document number: 17865389

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2017865389

Country of ref document: EP

Effective date: 20190508