WO2022067791A1 - Procédé de traitement de données, procédé de transmission de données, et dispositif associé - Google Patents

Procédé de traitement de données, procédé de transmission de données, et dispositif associé Download PDF

Info

Publication number
WO2022067791A1
WO2022067791A1 PCT/CN2020/119708 CN2020119708W WO2022067791A1 WO 2022067791 A1 WO2022067791 A1 WO 2022067791A1 CN 2020119708 W CN2020119708 W CN 2020119708W WO 2022067791 A1 WO2022067791 A1 WO 2022067791A1
Authority
WO
WIPO (PCT)
Prior art keywords
segment
flowlet
packet
target
flow
Prior art date
Application number
PCT/CN2020/119708
Other languages
English (en)
Chinese (zh)
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 CN202080105542.9A priority Critical patent/CN116325708A/zh
Priority to PCT/CN2020/119708 priority patent/WO2022067791A1/fr
Publication of WO2022067791A1 publication Critical patent/WO2022067791A1/fr

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/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0858One way delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring

Definitions

  • the present application relates to the field of communication technologies, and in particular, to a data processing and transmission method and related equipment.
  • data transmission equipment needs to be able to quickly and accurately balance the traffic load to improve its forwarding performance and enhance the reliability of the network, so as to better serve users.
  • Equal-cost multi-path routing is a commonly used load balancing method.
  • the ECMP technology includes a packet-based (Packet) path selection method and a flow (Flow)-based path selection method.
  • the packet-based path selection method can achieve load balancing, and the delays of different paths in multi-paths are different, resulting in out-of-order packets received at the receiving end, requiring packet reordering;
  • Flow-based path selection method The outgoing interface (packet forwarding path) for forwarding the packet can be determined according to a hash algorithm, and the receiving end does not need to reorder the packet.
  • FIG. 1 is a schematic diagram of dividing a TCP flow into Flowlets in the prior art. For example, after the data packet of the current TCP flow reaches the switch, it is detected as containing For 5 Flowlets, the time difference between each data packet in the same Flowlet reaching the switch is generally relatively small, and the time difference between data packets between different Flowlets reaching the switch is relatively obvious.
  • the time gap (timegap) between the first data packet and the second data packet of Flowlet 1 is less than the predetermined threshold (timeout), so the switch regards these two data packets as the same Flowlet.
  • the time difference between the last data packet of Flowlet 1 and the first data packet of Flowlet 2 is greater than a predetermined threshold, so the switch regards the first data packet of Flowlet 2 as a new Flowlet. That is, if the time difference between two adjacent data packets of the same TCP flow reaching the switch is less than a predetermined time interval (timeout), the switch regards the two data packets as the same Flowlet.
  • the existing flowlet granularity load balancing scheme detects Flowlets based on a fixed time interval at the switch, but the load situation in the data transmission network (such as the data center network) changes dynamically and unpredictably, and the fixed time interval Difficult to adapt to dynamically changing network loads.
  • the time interval is too small, the number of detected Flowlets will increase, and the processing granularity of load balancing will be finer, which will easily increase the risk of out-of-order data packets; when the time interval is too large, the number of detected Flowlets will decrease, and load balancing will The processing granularity is too coarse, and the effect of load balancing is not significant.
  • Embodiments of the present invention provide a data processing and transmission method and related equipment, so as to improve the efficiency and accuracy in the data transmission process.
  • an embodiment of the present invention provides a data processing method, which is applied to a host and may include:
  • Generate a first message segment determine the target TCP flow to which the first message segment belongs; obtain the timestamp of the first message segment, and obtain target flow information matching the target TCP flow, the target The flow information includes the time threshold corresponding to the target TCP flow, and the timestamp of the second segment in the target TCP flow; wherein, the second segment is the same as the first message in the target TCP flow.
  • the time threshold is the difference between the first path delay and the second path delay
  • the first path delay is the longest delay in the multipath set of the target TCP flow
  • the delay of the upstream path, the delay of the second path is the delay of the upstream path with the smallest delay in the multi-path set of the target TCP flow;
  • the difference between the time stamps of the segments is compared with the time threshold; according to the comparison result, it is determined whether to divide the first packet segment and the second packet segment into the same Flowlet.
  • the host side first determines which TCP stream the first message segment belongs to (for example, by determining the source port), and then obtains a matching TCP stream.
  • the target flow information wherein, the target flow information includes various information of the target TCP flow, such as the timestamp of the last adjacent segment (ie, the second segment), and in the target TCP flow
  • the time threshold used to divide the Flowlet further, the host side compares the difference between the timestamp values of the first segment to be sent and the last adjacent second segment with the time threshold, thereby Determines whether to divide the first segment and the previous adjacent segment into the same Flowlet; and the time threshold is dynamically calculated by the delay of the paths in the multipath set of the target TCP flow , for example, calculated according to the difference between the maximum delay and the minimum delay of the real-time update of the historical segment (ACK packet with the same triple or quintuple information of the target TCP stream) received by the host; that is, the time
  • the time threshold used to divide Flowlets is dynamically changed, and is based on the corresponding TCP flow.
  • the real-time data transmission delay is dynamically adjusted, so it can always adapt to dynamic network load changes, avoiding the problem of difficulty in adapting to dynamic network loads caused by the switch side detecting Flowlets based on fixed time intervals in the prior art.
  • the embodiment of the present invention combines the delay feedback information of the network path on the host side, and dynamically configures the time interval for detecting and dividing the flowlet, so that the flowlet granularity matches the state of the network path, reduces the risk of out-of-order data packets, and ensures that the effect of load balancing.
  • the determining the target TCP flow to which the first packet segment belongs includes: determining, according to the source port number of the first packet segment, the target TCP flow to which the first packet segment belongs the target TCP stream.
  • the source port number in the quintuple information of the message segment by identifying the source port number in the quintuple information of the message segment, it is possible to identify which TCP stream the message segment to be sent (ie, the first message segment) belongs to, so as to further obtain the message.
  • Flow information of the TCP flow to which the segment belongs including the timestamp value of the last adjacent segment and the time threshold used to divide the Flowlet), so as to further determine the datagram to be sent based on the relevant information in the flow information Whether the segment belongs to the same Flowlet as the last data segment or is it divided into a new Flowlet.
  • the host maintains a flow information table, and the flow information table includes flow information of N TCP flows, where N is an integer greater than or equal to 1, wherein the flow information of each TCP flow Including the flow index of the corresponding TCP flow;
  • the acquiring target flow information matching the target TCP flow includes: searching the flow information table for the target flow matching the target TCP flow according to the flow index of the target TCP flow the target stream information.
  • the host side maintains a flow information table of one or more TCP flows (for example, a currently active TCP flow), and the flow information table includes flow information of one or more TCP flows, and each The TCP flow information may further include the index of the TCP flow, the time threshold involved in the above-mentioned first aspect, and the timestamp of the last adjacent latest segment of the data segment currently to be sent. That is, the host can maintain the flow information of all currently active TCP flows, so that when a segment needs to be sent, it can find the flow index in the flow information table according to the flow index of the TCP flow to which the segment belongs. Matching target flow information to perform subsequent Flowlet division.
  • the determining, according to the comparison result, whether to divide the first packet segment and the second packet segment into the same Flowlet includes: if the first packet segment is of the same Flowlet The difference between the timestamp and the timestamp of the second packet segment is less than or equal to the time threshold, and the first packet segment and the second packet segment are divided into the same Flowlet; The difference between the timestamp of a segment and the timestamp of the second segment is greater than the time threshold, and the first segment is divided into a new Flowlet.
  • the difference between the timestamps between the first segment to be sent and the last adjacent second segment in the target TCP flow to which it belongs is smaller than that corresponding to the target TCP flow (the time threshold is dynamically changed), it is considered that the first segment and the last adjacent second segment meet the conditions of being sent in the same Flowlet, that is, the first segment can be sent in the same Flowlet.
  • a segment is determined to be divided into the same Flowet as the previous second segment; for the same reason, if the current first segment to be sent is the same as the last adjacent second segment in the target TCP flow to which it belongs If the difference between the time stamps is greater than the time threshold corresponding to the target TCP flow, it is considered that the first segment and the last adjacent second segment do not meet the requirements in the same Flowlet.
  • the condition for sending is to divide the first segment into a new Flowet.
  • the target flow information further includes a reference Flowlet identifier of the target TCP flow, and the reference Flowlet identifier is currently the first Flowlet identifier corresponding to the second segment; the method It also includes: generating a first data packet, the first data packet including the first message segment and the Flowlet identifier of the first message segment; wherein, if the timestamp of the first message segment is the same as the all If the difference between the timestamps of the second segment is less than or equal to the time threshold, the Flowlet identifier of the first segment is the first Flowlet identifier; if the timestamp of the first segment is If the difference from the timestamp of the second packet segment is greater than the time threshold, the Flowlet identifier of the first packet segment is the second Flowlet identifier.
  • the flowlet identifier corresponding to the packet segment can be set during the encapsulation process, so that the packet segment can be encapsulated
  • the switch side can identify which Flowlet the data packet belongs to through the Flowlet identifier, so as to decide which path to send through. For example, when the first packet is to enter the data link layer where the switch is located, the first packet needs to be further encapsulated. In this case, a bit is set in the encapsulated data packet for the switch to identify the packet. The identifier of which Flowlet the segment belongs to.
  • the switch side passes the first packet and the second packet corresponding to the second segment through the same path for forwarding.
  • the embodiment of the present invention divides the Flowlet on the host side, and can use the bit (for example, 1 bit) in the reserved field of the transport layer header to mark the Flowlet, and the switch can identify the Flowlet only by the header field, with high efficiency and high efficiency.
  • the hardware overhead is low, and it also ensures that the same Flowlet will not be segmented again no matter how many hops of switches it goes through in the network, reducing the risk of out-of-order packets.
  • the method further includes: if the difference between the timestamp of the first packet segment and the timestamp of the second packet segment is greater than the time threshold, set the The reference Flowlet identifier is updated to the second Flowlet identifier.
  • the flow information of each TCP flow in the flow information table maintained by the host side further includes the reference Flowlet identifier of each TCP flow, that is, the current flow information of each TCP flow is maintained in the flow information table.
  • the ID of the Flowlet so that the corresponding Flowlet ID can be set for the segment to be sent.
  • the reference Flowlet ID is the first Flowlet ID (that is, the Flowlet ID corresponding to the second segment)
  • the The Flowlet ID of a message segment is also marked as the first Flowlet ID, that is, the reference Flowlet ID remains unchanged as the first Flowlet ID; if the reference Flowlet ID is the first Flowlet ID, and when the first message segment matches the first Flowlet ID
  • the second segment is divided into different Flowlets (that is, the first segment is divided into a new Flowlet)
  • the Flowlet ID of the first segment is marked as the second Flowlet ID, and at this time, refer to the Flowlet ID Then it needs to be updated to the second Flowlet ID.
  • the reference Flowlet ID can be switched between 0 or 1, that is, between two adjacent Flowlets, their Flowlet IDs take values at intervals between 0 or 1, so only 1 bit can accurately indicate the difference. Whether the packets belong to the same Flowlet.
  • the method further includes: receiving a target ACK packet, where the target ACK packet is an ACK packet with the same destination port number or the same destination address as the target TCP flow; determining the target ACK packet The uplink path delay of the packet, the uplink path delay is the difference between the timestamp value of the target ACK packet and the timestamp echo response value; compare the uplink path delay of the target ACK packet with the target ACK packet Compare the delays of the upstream paths in the multipath set of the TCP flow; if the upstream path delay of the target ACK packet is greater than the delay of the upstream path with the current maximum delay in the multipath set, the first The path delay is updated to the uplink path delay of the target ACK packet; if the uplink path delay of the target ACK packet is less than the delay of the uplink path with the current minimum delay in the multipath set, the The second path delay is updated to the uplink path delay of the target ACK packet.
  • the time threshold for dividing the Flowlet may be the maximum upstream path delay of the historical packet received by the target TCP flow (or the TCP flow in the same network session as the target TCP flow).
  • the time threshold is calculated from the difference between the time delay and the minimum uplink path delay, that is, the time threshold is a value that changes in real time and is dynamically adjusted according to the network transmission load.
  • the transmission delay of the upstream path of the ACK packet is calculated by the difference between the timestamp value of the target ACK packet and the timestamp echo response value, and the transmission delay of the ACK packet is calculated according to the The historical value of the transmission delay of the uplink path, determine a current minimum uplink path delay, and use it as the first path delay, and determine a current maximum uplink path delay, and use it as the second path delay Path delay; finally, the difference between the first path delay and the second path delay is used to calculate the time threshold for dividing Flowlets in the target TCP flow.
  • the time threshold used to divide Flowlets for different TCP flows or data in different states of the same TCP flow changes dynamically, and is dynamically adjusted according to the real-time transmission delay of the data in the corresponding TCP flow. Therefore, , which can always adapt to dynamic network load changes.
  • the multi-path set includes multiple equivalent transmission paths of the target TCP flow; or, the multi-path set includes multiple equivalent transmission paths of the target TCP flow and non-equivalent transmission paths of the target TCP flow Equivalent transmission paths; or, the multi-path set includes multiple non-equivalent transmission paths of the target TCP stream.
  • the multiple transmission paths in the multi-path set of the target TCP flow are all equal-cost paths.
  • the first path delay is the delay of the uplink path with the largest delay among these equal-cost paths
  • the second path delay is the delay of the uplink path with the smallest delay among these equal-cost paths;
  • the multiple transmission paths in the multi-path set of the target TCP flow may include equal-cost paths or non-equivalent paths.
  • the first path delay is these equivalent or non-equivalent paths.
  • the delay of the uplink path with the largest delay in the middle path, and the delay of the second path is the delay of the uplink path with the smallest delay among these equivalent or non-equivalent paths.
  • whether the multiple paths in the above multipath set are equivalent depends on the type of network topology of the network to which the host accesses, and the embodiment of the present invention can be applied to all network types with multipath transmission.
  • an embodiment of the present invention provides a data transmission method, which is applied to a switch, and may include:
  • the first data packet includes a first message segment and a Flowlet identifier of the first message segment; determine the target TCP flow to which the first data packet belongs, and obtain the target TCP flow associated with the first data packet matching forwarding information; the forwarding information includes a reference Flowlet identifier of the target TCP flow and a reference forwarding path; wherein, the reference Flowlet identifier is currently the first Flowlet identifier corresponding to the second segment, and the second message The segment is the previous segment adjacent to the first segment in the target TCP flow; the reference forwarding path is the first forwarding path of the second data packet, and the second data packet includes the first segment.
  • two message segments and the first Flowlet identifier compare the Flowlet identifier of the first message segment with the first Flowlet identifier; and determine whether to pass the first message segment through the The first forwarding path forwards.
  • the switch side after receiving the data packet, identifies the Flowlet identifier in the data packet, and according to the Flowlet identifier, determines the Flowlet identifier of the adjacent data packet in the target TCP flow to which the first data packet belongs. whether the first data packet needs to be forwarded through the forwarding path corresponding to the second data packet based on this. That is, the switch side does not need to divide Flowlets for data packets according to the time interval of the received data packets, but directly identifies whether the current data packets to be sent are the same TCP flow according to the Flowlet identification bits contained in the received data packets. The previous adjacent data packet in the flowlet belongs to the same Flowlet, so it is decided whether to continue forwarding through the forwarding path of the adjacent data packet, or to divide a new Flowlet for the data packet and decide a new forwarding path for it.
  • the switch maintains a forwarding information table, and the forwarding information table includes forwarding information of M TCP flows, where M is an integer greater than or equal to 1, wherein the forwarding information of each TCP flow Including the five-tuple hash value of the corresponding TCP flow; the determining the target TCP flow to which the first data packet belongs, and obtaining the forwarding information matching the target TCP flow, comprising: according to the five-tuple of the first data packet. tuple information, calculate the quintuple hash value of the first data packet; according to the quintuple hash value of the first data packet, search for the target TCP flow matching from the forwarding information table Forward information.
  • the switch side maintains a forwarding information table, where the forwarding information table includes forwarding information of one or more TCP flows (for example, currently active TCP flows) on the hosts connected to it, and each TCP flow
  • the forwarding information may in turn include the quintuple hash value of the TCP stream. That is, the switch can maintain the forwarding information of all currently active TCP flows, so that when a data packet needs to be sent, it can search the forwarding information table with the quintuple hash value according to the quintuple hash value of the data packet.
  • the forwarding information (including the reference Flowlet identifier, forwarding path, etc.) matching the value of the value is used to forward the to-be-sent data packet.
  • the determining whether to forward the first packet segment through the forwarding path according to the comparison result includes: if the Flowlet identifier of the first packet segment is the same as the first packet If the Flowlet identifiers are the same, the first data packet is forwarded through the first forwarding path; if the Flowlet identifier of the first segment is different from the first Flowlet identifier, it is determined for the first data packet The second forwarding path is forwarded through the second forwarding path.
  • the switch when the switch identifies that the first data packet is the same as the Flowlet identifier of the adjacent data packet in the target TCP flow to which it belongs, the switch forwards the first data packet and the second data packet on the same path; when When the switch identifies that the first data packet is different from the flowlet identifier of the adjacent data packet in the target TCP flow to which it belongs, it determines a new forwarding path for the first data packet, and forwards the first data packet through the new forwarding path. It should be noted that the second forwarding path may be the same as or different from the first forwarding path, depending on the decision of the switch.
  • the method further includes: if the Flowlet identifier of the first packet segment is different from the first Flowlet identifier and is the second Flowlet identifier, referencing the target TCP flow The flowlet identification is updated to the second flowlet identification, and the reference forwarding path is updated to the second forwarding path.
  • the switch needs to divide the first data packet into a new Flowlet, and needs to update the reference Flowlet ID of the TCP flow to which it belongs to the Flowlet ID corresponding to the current latest data packet, that is, the second Flowlet ID.
  • an embodiment of the present invention provides a data processing apparatus, which may include:
  • a first generating unit configured to generate a first segment
  • a first determining unit configured to determine the target TCP flow to which the first segment belongs
  • an obtaining unit configured to obtain the timestamp of the first segment, and obtain target flow information that matches the target TCP flow, where the target flow information includes a time threshold corresponding to the target TCP flow, the target flow Timestamp of the second segment in the TCP flow; wherein the second segment is the previous segment adjacent to the first segment in the target TCP stream, and the time threshold is the first segment
  • the first path delay is the delay of the uplink path with the largest delay in the multipath set of the target TCP flow
  • the second path delay is the The delay of the uplink path with the smallest delay in the multipath set of the target TCP flow
  • a first comparison unit configured to compare the difference between the timestamp of the first packet segment and the timestamp of the second packet segment with the time threshold
  • the flowlet dividing unit is configured to determine, according to the comparison result, whether to divide the first packet segment and the second packet segment into the same Flowlet.
  • the first determining unit is specifically configured to:
  • the target TCP flow to which the first message segment belongs is determined according to the source port number of the first message segment.
  • the apparatus further includes:
  • a maintenance unit configured to maintain a flow information table, where the flow information table includes flow information of N TCP flows, where N is an integer greater than or equal to 1, wherein the flow information of each TCP flow includes a flow index corresponding to the TCP flow;
  • the obtaining unit is specifically configured to: search the target flow information matching the target TCP flow from the flow information table according to the flow index of the target TCP flow.
  • the Flowlet is divided into units, and is specifically used for:
  • the first packet segment is divided into a new Flowlet.
  • the target flow information further includes a reference Flowlet identifier of the target TCP flow, and the reference Flowlet identifier is currently the first Flowlet identifier corresponding to the second segment;
  • the apparatus Also includes:
  • a second generating unit configured to generate a first data packet, where the first data packet includes the first packet segment and the Flowlet identifier of the first packet segment;
  • the flowlet of the first packet segment is identified as the first flowlet identification
  • the Flowlet identifier of the first packet segment is the second Flowlet identifier.
  • the apparatus further includes:
  • a first update unit configured to update the reference Flowlet identifier to the first message segment if the difference between the timestamp of the first segment and the timestamp of the second segment is greater than the time threshold 2.
  • the apparatus further includes:
  • a receiving unit configured to receive a target ACK packet, where the target ACK packet is an ACK packet with the same destination port number or the same destination address as the target TCP stream;
  • a second determining unit configured to determine the uplink path delay of the target ACK packet, where the uplink path delay is the difference between the timestamp value of the target ACK packet and the timestamp echo response value;
  • a second comparison unit configured to compare the uplink path delay of the target ACK packet with the uplink path delay in the multipath set of the target TCP flow
  • a second updating unit configured to update the first path delay to the target if the uplink path delay of the target ACK packet is greater than the delay of the uplink path with the current maximum delay in the multipath set Upstream path delay of ACK packet;
  • a third updating unit configured to update the second path delay to the target if the uplink path delay of the target ACK packet is smaller than the delay of the uplink path with the smallest current delay in the multipath set Upstream path delay of ACK packets.
  • the multi-path set includes multiple equivalent transmission paths of the target TCP flow; or, the multi-path set includes multiple equivalent transmission paths of the target TCP flow and non-equivalent transmission paths of the target TCP flow Equivalent transmission paths; or, the multi-path set includes multiple non-equivalent transmission paths of the target TCP stream.
  • an embodiment of the present invention provides a data processing apparatus, which may include:
  • a receiving unit configured to receive a first data packet, where the first data packet includes a first message segment and a Flowlet identifier of the first message segment, and the first data packet belongs to a target TCP flow;
  • a determining unit configured to determine the target TCP flow to which the first data packet belongs, and obtain forwarding information matching the target TCP flow;
  • the forwarding information includes a reference Flowlet identifier of the target TCP flow and a reference forwarding path; wherein , the reference Flowlet identifier is currently the first Flowlet identifier corresponding to the second message segment, and the second message segment is the previous message segment adjacent to the first message segment in the target TCP flow;
  • the reference forwarding path is a first forwarding path of a second data packet, and the second data packet includes the second packet segment and the first Flowlet identifier;
  • a comparison unit configured to compare the Flowlet identifier of the first segment with the first Flowlet identifier
  • a forwarding unit configured to determine whether to forward the first packet segment through the first forwarding path according to the comparison result.
  • the switch maintains a forwarding information table, and the forwarding information table includes forwarding information of M TCP flows, where M is an integer greater than or equal to 1, wherein the forwarding information of each TCP flow Including the five-tuple hash value corresponding to the TCP flow; the determining unit is specifically used for:
  • the forwarding information matching the target TCP flow is searched from the forwarding information table.
  • the forwarding unit is specifically used for:
  • a second forwarding path is determined for the first data packet, and forwarded through the second forwarding path.
  • the apparatus further includes:
  • an update unit if the Flowlet identifier of the first segment is different from the first Flowlet identifier and is the second Flowlet identifier, updating the reference Flowlet identifier of the target TCP flow to the second Flowlet identifier, and The reference forwarding path is updated to the second forwarding path.
  • the present application provides a semiconductor chip, which may include the data processing apparatus provided by any one of the implementation manners of the third aspect.
  • the present application provides a semiconductor chip, which may include the data processing apparatus provided by any one of the implementation manners of the fourth aspect.
  • the present application provides a semiconductor chip, which may include: the data processing device provided by any one of the implementation manners of the third aspect, an internal memory coupled to the data processing device, and an external memory.
  • the present application provides a semiconductor chip, which may include: the data transmission device provided by any one of the implementation manners of the fourth aspect, an internal memory coupled to the data processing device, and an external memory.
  • the present application provides a system-on-chip SoC chip, where the SoC chip includes the data processing apparatus provided in any one of the implementation manners of the third aspect, an internal memory and an external memory coupled to the data processing apparatus.
  • the SoC chip may be composed of chips, or may include chips and other discrete devices.
  • the present application provides a system-on-chip SoC chip, where the SoC chip includes the data transmission device provided by any one of the implementation manners of the fourth aspect, an internal memory and an external memory coupled to the data transmission device.
  • the SoC chip may be composed of chips, or may include chips and other discrete devices.
  • the present application provides a chip system, where the chip system includes the data processing apparatus provided by any one of the implementation manners of the foregoing third aspect.
  • the chip system further includes a memory for storing necessary or related program instructions and data during the operation of the data processing apparatus.
  • the chip system may be composed of chips, or may include chips and other discrete devices.
  • the present application provides a chip system, where the chip system includes the data transmission device provided by any one of the implementation manners of the fourth aspect.
  • the chip system further includes a memory for storing necessary or related program instructions and data during the operation of the data transmission device.
  • the chip system may be composed of chips, or may include chips and other discrete devices.
  • the present application provides a data processing apparatus, the processing apparatus having the function of implementing any one of the data processing methods in the above-mentioned first aspect.
  • This function can be implemented by hardware or by executing corresponding software by hardware.
  • the hardware or software includes one or more modules corresponding to the above functions.
  • the present application provides a data transmission device, and the processing device has the function of implementing any one of the data transmission methods in the above-mentioned second aspect.
  • This function can be implemented by hardware or by executing corresponding software by hardware.
  • the hardware or software includes one or more modules corresponding to the above functions.
  • the present application provides a host, where the host includes a processor, and the processor is configured to execute the data processing method provided by any one of the implementation manners of the foregoing first aspect.
  • the host may also include memory, coupled to the processor, which holds program instructions and data necessary for the host.
  • the host may also include a communication interface for the host to communicate with other devices or communication networks.
  • the present application provides a switch, where the switch includes a processor, and the processor is configured to execute the data transmission method provided by any one of the implementation manners of the foregoing first aspect.
  • the switch may also include a memory for coupling with the processor that holds program instructions and data necessary for the switch.
  • the switch may also include a communication interface for the switch to communicate with other devices or communication networks.
  • the present application provides a computer-readable storage medium, where the computer-readable storage medium stores a computer program, and when the computer program is executed by a host, implements the multi-core processor described in any one of the second aspect above processing method flow.
  • the present application provides a computer-readable storage medium, where the computer-readable storage medium stores a computer program, and when the computer program is executed by a switch, implements the multi-core processor described in any one of the fourth aspect above processing method flow.
  • an embodiment of the present invention provides a computer program, where the computer program includes instructions, when the computer program is executed by a multi-core processor, so that a host can execute the multi-core processing described in any one of the second aspect above The processing method flow of the device.
  • an embodiment of the present invention provides a computer program, where the computer program includes instructions, when the computer program is executed by a multi-core processor, the switch can perform the multi-core processing described in any one of the fourth aspect above The processing method flow of the device.
  • FIG. 1 is a schematic diagram of dividing a TCP flow into Flowlets in the prior art.
  • FIG. 2 is a schematic diagram of an architecture of a network transmission system provided by an embodiment of the present application.
  • FIG. 3 is a schematic diagram of a topology structure of a data center network provided by an embodiment of the present application.
  • FIG. 4 is a schematic diagram of a computer network OSI model and a TCP/IP model provided by an embodiment of the present application.
  • FIG. 5 is a schematic flowchart of a data transmission method provided by an embodiment of the present invention.
  • FIG. 6A is a schematic diagram of a first data packet and a second data packet in the same Flowlet according to an embodiment of the present invention.
  • FIG. 6B is a schematic diagram of a first data packet and a second data packet in different Flowlets according to an embodiment of the present invention.
  • FIG. 6C is a schematic flowchart of dividing and marking a Flowlet by an additional layer protocol according to an embodiment of the present invention.
  • FIG. 6D is a schematic flowchart of an additional layer protocol dynamically updating the segmentation threshold of a Flowlet according to an embodiment of the present invention.
  • FIG. 7 is a schematic flowchart of a data transmission method provided by an embodiment of the present invention.
  • FIG. 8 is a schematic structural diagram of a data processing apparatus provided by an embodiment of the present invention.
  • FIG. 9 is a schematic structural diagram of a data transmission apparatus provided by an embodiment of the present invention.
  • a component may be, but is not limited to, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer.
  • an application running on a computing device and the computing device may be components.
  • One or more components may reside within a process and/or thread of execution, and a component may be localized on one computer and/or distributed between 2 or more computers.
  • these components can execute from various computer readable media having various data structures stored thereon.
  • a component may, for example, be based on a signal having one or more data packets (eg, data from two components interacting with another component between a local system, a distributed system, and/or a network, such as the Internet interacting with other systems via signals) Communicate through local and/or remote processes.
  • data packets eg, data from two components interacting with another component between a local system, a distributed system, and/or a network, such as the Internet interacting with other systems via signals
  • Equal-Cost Multipath Routing that is, there are multiple paths with the same cost to the same destination address, where the same cost refers to the number of hops (that is, the number) of the switches passed through. same.
  • ECMP Equal-Cost Multipath Routing
  • the same cost refers to the number of hops (that is, the number) of the switches passed through. same.
  • the network topology of the equal-cost multi-path model such as a data center network
  • all possible transmission paths between the same pair of source and destination hosts are equal-cost paths.
  • the traffic sent to the destination IP or destination network segment can be shared through different paths to achieve network load balancing, and when some of the paths are faulty, other paths are used instead to complete the forwarding process , to achieve routing redundancy backup function.
  • the data packets sent to the destination address can only use one of the links, the other links are in the backup state or invalid state, and it takes a certain amount of time to switch each other in the dynamic routing environment, and the equivalent cost
  • the multi-path routing protocol can use multiple links at the same time in this network environment, which not only increases the transmission bandwidth, but also can backup the data transmission of the failed link without delay and packet loss.
  • TCP Transmission Control Protocol
  • TCP is a connection-oriented, reliable, byte stream-based transport layer communication protocol.
  • TCP is designed to accommodate a layered protocol hierarchy that supports multiple network applications. Reliable communication services are provided between pairs of processes in host computers connected to different but interconnected computer communication networks relying on TCP. TCP assumes that it can get simple, possibly unreliable, datagram service from lower-level protocols. In principle, TCP should be able to operate over a wide variety of communication systems from hardwired to packet-switched or circuit-switched networks.
  • Network flow also referred to as network flow
  • Flow a collection of data packets with the same quintuple in a period of time is called a network flow, where the quintuple contains the source IP address and source port of both parties. number, destination IP address, destination port number, and transport layer protocol.
  • a network session is a collection of multiple network flows, and multiple network flows have the same triplet (source address, destination address, transport layer protocol).
  • Flow slice/microflow/small flow which can be understood as a packet group composed of multiple packets continuously sent in a Flow, and each Flow includes multiple Flowlets.
  • Flowlet Flow slice/microflow/small flow
  • packets are forwarded based on the Flowlet mechanism
  • multiple packets included in the Flowlet can be forwarded based on the Flowlet flow table entries.
  • Different Flowlets correspond to different Flowlet flow table entries.
  • the Flowlet flow table entry is used to indicate packet forwarding paths of multiple packets included in each Flowlet.
  • Transmission Control Protocol/Internet Protocol refers to a protocol suite that can realize information transmission between multiple different networks.
  • the TCP/IP protocol not only refers to the two protocols of TCP and IP, but also refers to a protocol cluster composed of FTP, SMTP, TCP, UDP, IP and other protocols, just because the TCP protocol and the IP protocol in the TCP/IP protocol The most representative, so it is called the TCP/IP protocol.
  • TCP is a connection-oriented, reliable, byte stream-based transport layer communication protocol.
  • ISP Internet Service Provider
  • FIG. 2 is a schematic diagram of an architecture of a network transmission system provided by an embodiment of the present application. Please refer to FIG. 2 .
  • the architecture of the network transmission system mainly includes: a host 10 , a switch (SWITCH) 20 , and the Internet.
  • the host 10 can be classified as a source host or a destination host according to whether it is a sender or a receiver.
  • the source host can be connected to the Internet through the switch 20 to communicate with the destination host.
  • the host 10 can be any computing device that generates data and has a network access function.
  • any computer connected to the Internet can be called a host, and each host has a unique IP address.
  • the host 10 may specifically be various types of devices, such as a server, a personal computer, a tablet computer, a mobile phone, a personal digital assistant, a smart wearable device, and an unmanned terminal.
  • the source host needs to encapsulate the application data into data packets (such as TCP/IP packets), and then hand them over to the next data link layer (such as a switch).
  • the host 10 also has the functions of dividing the packet segment by Flowlet, identifying the Flowlet, and dynamically configuring the time threshold for dividing the Flowlet.
  • the switch 20 is a network device that performs the function of encapsulating and forwarding data packets based on MAC (hardware address of the network card) identification. It can "learn" the MAC address and store it in the internal address table. By establishing a temporary exchange path between the sender and receiver of the data frame, the data frame can directly reach the destination address from the source address.
  • the functions of switch 20 may include physical addressing, network topology, error checking, frame sequence, and flow control, among others.
  • the switch 20 also has functions such as Flowlet division and Flowlet identification performed on the packet segment according to the above-mentioned host 10 side, and further performs the same Flowlet in the data flow based on the Flowlet identification that has been divided and identified. Or for the forwarding of different Flowlets, refer to the description of the subsequent related embodiments for details, and details are not repeated here.
  • the source host 10 uses a transmission control protocol (Transmission Control Protocol, TCP) and processes the data through the data processing method in this application, and then sends a message to the message forwarding device of the routing switching network.
  • TCP Transmission Control Protocol
  • the message forwarding device (such as switch, router, etc.) adopts ECMP technology and forwards the message through the data transmission method in this application, and finally forwards the message to the destination host 10, thereby achieving the effect of load balancing processing.
  • the data processing method or the data transmission method in the embodiment of the present invention may be applicable to a transmission mechanism based on TCP/IP.
  • the application scope of the data transmission method in the present invention is not only limited to the data center network, but also applicable to any network with multiple paths, such as an ISP network (Internet Service Provider), where the network topology is any two source-destination communication nodes (that is, Both the source host and the destination host) provide multiple network paths, so the technical solutions in this application can be applied to perform dynamic load balancing at Flowlet granularity.
  • ISP network Internet Service Provider
  • the characteristics of its network topology determine that in the same network session of the data center network, that is, the triplet (source address, destination address, transport layer protocol) information is the same.
  • One or more paths included in the corresponding multi-path set are equal-cost paths; for other types of networks, such as in the same network session of the ISP network, the corresponding multi-path sets are equal-cost paths.
  • One or more paths included in the path set may or may not be equivalent. Therefore, one or more paths included in the multi-path set of the target TCP flow described in this application may be equivalent or not equivalent according to the type of topology of the network to which the host is connected.
  • FIG. 2 is only an exemplary implementation in the embodiment of the present application, and the network architecture in the embodiment of the present invention includes but is not limited to the above network architecture.
  • FIG. 3 is a schematic diagram of a data center network topology provided by an embodiment of the present application.
  • the data center network mainly includes: a Core core layer, an Aggregation convergence layer, an Access access layer, and a POD convergence area layer.
  • the source host can communicate with the destination host through the switch and the core network through the TCP protocol. in,
  • the Point of Delivery (POD) layer consists of multiple PODs, each of which can include servers, storage, and network devices.
  • POD Point of Delivery
  • the Top of Rack (ToR) mode is a way of cabling server cabinets in the data center. When the TOR mode is used for cabling, 1 to 2 access switches are deployed on the upper end of each server cabinet.
  • Access layer Physically connected to the server, generally placed at the top of the cabinet, also known as the ToR switch, or the Edge layer. Access switches are usually located at the top of the rack, so they are also called ToR (Top of Rack) switches, and they physically connect servers.
  • ToR Top of Rack
  • Aggregation Aggregation Layer Aggregation switches, aggregation connection access switches, and provide other services such as firewall (Fire Wall, FW), load balancing (Server Load Balancer, SLB), Secure Sockets Layer offload (Secure Sockets Layer offload, SSL offload) ), intrusion detection, network analysis, etc.
  • the core switch provides high-speed forwarding and provides connectivity for multiple aggregation layers.
  • the core switch provides high-speed forwarding of packets in and out of the data center, and provides connectivity for multiple aggregation layers.
  • the core switch provides an elastic L3 routing network for the entire network.
  • TOR1 in Pod1 it has at least 4 equal-cost paths (ECMP) to access the Internet (Internet).
  • ECMP equal-cost paths
  • TOR1 in Pod1 can at least pass through the equivalent path: Path 1, Path 2, Path 3, and Path 4 to access the Internet.
  • the data transmission method applied to the switch side can be applied to the switches of the above-mentioned layers (Access access layer, Aggregation convergence layer, or Core core layer), that is, when the data packets are sent from the source In the entire forwarding path from the host to the destination host, all switches participating in forwarding can implement any one of the data transmission methods provided in this application.
  • the switches of the above-mentioned layers Access access layer, Aggregation convergence layer, or Core core layer
  • data center network topology in FIG. 3 above is only an exemplary implementation in the embodiments of the present application, and the data center network topology in the embodiments of the present invention includes but is not limited to the above network architecture.
  • FIG. 4 is a schematic diagram of a computer network OSI model and a TCP/IP model provided by an embodiment of the present application.
  • IP model an additional layer is added between the transport layer and the network layer.
  • the additional layer is mainly used to divide, mark and set related parameters of Flowlets in the TCP flow.
  • the OSI eight-layer network model provided by the embodiment of the present invention consists of 1 to 8 layers from bottom to top, which are respectively a physical layer (Physical layer), a data link layer (Data link layer), a network layer (Network layer), Additional layer, transport layer (Transport layer), session layer (Session layer), presentation layer (Presentation layer) and application layer (Application layer);
  • the TCP/IP model provided by the embodiment of the present invention can be simplified from bottom to top 5 layers, mainly including the network interface layer, network layer, additional layer, transport layer and application layer.
  • the layer closest to the user in the OSI reference model is to provide application interfaces for computer users, and also to provide users with various network services directly. Provide rich system application interface to user application software.
  • Common application layer network service protocols are: Hyper Text Transfer Protocol (HTTP), Hyper Text Transfer Protocol (Hyper Text Transfer Protocol over Secure Socket Layer, HTTPS), File Transfer Protocol (File Transfer Protocol, FTP) , Post Office Protocol-Version 3 (POP3), Simple Mail Transfer Protocol (Simple Mail Transfer Protocol, SMTP), etc.
  • the transport layer establishes the end-to-end link of the host.
  • the role of the transport layer is to provide end-to-end reliable and transparent data transmission services for the upper-layer protocols, including dealing with issues such as error control and flow control.
  • This layer shields the details of the data communication of the lower layer from the upper layer, so that the upper layer user only sees a reliable data path between the two transmission entities from host to host, which can be controlled and set by the user.
  • TCP/UDP is at this layer.
  • the additional layer in the embodiment of the present invention is used for dividing and marking the Flowet and setting related parameters for the TCP flow.
  • the additional layer protocol dynamically configures the segmentation threshold of the Flowlet according to the delay feedback of the network path, and divides the segment of the TCP flow into Flowlets according to the dynamic segmentation threshold. Since the flowlet division is completed on the host side, the present invention can use the 1-bit reserved field of the transport layer header to mark the adjacent Flowlets of the same TCP flow (the present invention names the 1-bit field as FL_Tag), and transmits the division result of the Flowlet. At the switch in the network, the switch identifies the Flowlet according to the header flag bit of the data packet.
  • the functions on the host side mainly involve the above-mentioned application layer, presentation layer, session layer, transport layer, and additional layer.
  • the additional layer described in this application may be deployed as a single layer, or may be deployed in the above-mentioned existing transport layer. That is, the functions implemented by the additional layer are combined into the transport layer for implementation, which is not specifically limited in this embodiment of the present invention.
  • This layer establishes the connection between two nodes through IP addressing, selects appropriate routing and switching nodes for the packets sent by the transport layer at the source end, and transmits them to the transport layer at the destination end correctly according to the address. Also known as the IP protocol layer.
  • the network layer realizes the entire transmission process of data from any node to any other node according to the network layer address information contained in the data, that is, the main function is to complete the message transmission between hosts in the network, using the data link
  • the services of the layer transmit each message from the source to the destination.
  • the functions involved in the switch in the embodiment of the present invention correspond to the network layer.
  • Cyclic Redundancy Check (CRC), error notification, network topology, flow control, etc. Combine bits into bytes, and bytes into frames, use link-layer addresses (Ethernet uses MAC addresses) to access the medium, and perform error detection. Between adjacent nodes connected by physical links, a data link in a logical sense is established, and point-to-point or point-to-multiple direct communication of data is realized on the data link.
  • the data link layer is responsible for the reliable transmission of data between the host's interface message processor (Interface Message Processor, IMP) and the IMP-IMP.
  • IMP Interface Message Processor
  • the data link layer is responsible for the reliable transmission of data between and among them.
  • the main function of the physical layer is to complete the original bit stream transmission between adjacent nodes. That is, it is responsible for sending and receiving data in the form of a bit stream. In fact, the transmission of the final signal is realized through the physical layer.
  • Commonly used transmission media for the physical layer include (various physical devices) hubs, repeaters, modems, network cables, twisted pairs, coaxial cables, etc.
  • each layer protocol when application layer data is sent to the network through the protocol stack, each layer protocol must add a data header, which is called encapsulation.
  • the protocol layer has different names for data packets. For example, it is called a message at the application layer, a segment at the transport layer, a datagram or packet at the network layer, and a frame at the link layer. frame), etc.
  • FIG. 4 is only an exemplary implementation in the embodiments of the present application, and the network models and functions involved in the embodiments of the present invention include but are not limited to the above models and functions.
  • a Flowlet is actually a micro-Flow.
  • a flow can be divided into many Flowlets.
  • the same Flowlet has the same quintuple information, that is, the source IP, destination IP, source port, destination port and transport layer protocol are all the same.
  • Multiple Packets continuously sent in a flow are regarded as a Flowlet, and the Flowlet mechanism is applied to select a path, so that the multiple Packets included in the Flowlet are forwarded based on the selected path.
  • the same forwarding path (excluding the equivalent path) is used for forwarding
  • different but equivalent paths can be used (ie, equal-cost multi-path) for forwarding, or unequal-cost paths for forwarding, depending on the type of network topology of the network to which the host is connected.
  • the equal-cost multipath can be included in the forwarding path of the data packet, the path with the same number of switch hops; the unequal-cost multipath refers to the path with unequal switch hops in the forwarding path of the data packet.
  • a Flow can be regarded as a composition of multiple Flowlets.
  • Load balancing introduces an intermediate layer based on Flowlets, which is neither a packet nor a flow, but is larger than a flowlet.
  • a Flowlet whose packet is smaller than a Flow, that is, a Flowlet can be considered as a microflow composed of one or more Packets in the same Flow.
  • FIG. 5 is a schematic flowchart of a data transmission method provided by an embodiment of the present invention.
  • the method may be applied to the network architecture described in FIG. 2 or FIG. 3, wherein the host 10 may be used to support and Steps S501 to S504 of the method flow shown in FIG. 5 are performed.
  • the following description will be made from the side of the host 10 (source host) with reference to FIG. 3 .
  • the method may include the following steps S501-S504, and optionally, may further include steps S505-S506.
  • Step S501 Generate a first packet segment, and determine the target TCP flow to which the first packet segment belongs.
  • the source host when a host (which can be called a source host) needs to send a message to another host (which can be called a destination host), the source host first generates a data packet that conforms to the relevant protocol standards locally, and then passes the switch. Wait for it to be sent to the destination host.
  • the process of generating a data packet mainly involves an application layer (including an application layer, a presentation layer, and a session layer), a transport layer and a network layer.
  • the message enters the transport layer after being encapsulated by the application layer on the source host side, and generates a segment that conforms to the transport layer protocol (that is, the first message segment), such as a TCP segment (segment) conforming to the TCP protocol. That is, on the host side, when the TCP segment completes the encapsulation of the transport layer header field (that is, the first segment in the embodiment of the present invention is generated), the additional layer in the present application is triggered (as shown in FIG. 2 ).
  • a TCP flow represents the data transmission process in a certain business process, that is, from TCP three-way handshake ⁇ data transmission end ⁇ connection release; and the quintuple information of the same TCP flow is the same,
  • the quintuple information includes source IP, destination IP, source port, destination port, and transport layer protocol.
  • the host determines the target TCP flow to which the first message segment belongs according to the source port number in the first message segment. That is, the source port numbers corresponding to different TCP streams must be different, so whether different packet segments belong to the same TCP stream can be determined by the source ports in the packet segments. For example, the source host may determine which target TCP flow the first packet belongs to according to the source port information in the first packet.
  • Step S502 Obtain the timestamp of the first packet segment, and obtain target flow information matching the target TCP flow.
  • the flowlet division and identification of the first segment depends on the difference between the timestamps between the first segment and the adjacent previous segment and the corresponding time The relationship between the thresholds, so it is necessary to obtain matching related flow information.
  • the source host determines the TCP flow to which the first message segment to be sent currently belongs, it further obtains the timestamp of the first message segment, and obtains target flow information matching the target TCP flow for further follow-up The division, identification, etc. of the Flowlet.
  • the timestamp of the message segment is usually time information added when the message segment is encapsulated in the transport layer, and the time information represents the moment when the message segment is generated (for the destination host It can also be understood as the moment when the source host sends the segment). For example, when the host needs to send data to the destination host, it will encapsulate the sending time into the timestamp item of the data. For both the source host and the destination host, the timestamp can be used to know when the data was sent. , so as to calculate (or measure) the network delay, calculate the time-consuming of service processing, etc.
  • the host can obtain the timestamp of the first packet segment by obtaining the timestamp value carried in the first packet segment, or obtain the timestamp of the first packet segment according to the current timestamp of the system, and The obtaining step may be completed after the first packet segment is generated and before step S503, and the specific execution time point is not limited.
  • the target flow information includes a time threshold corresponding to the target TCP flow and a timestamp of the second packet segment in the target TCP flow.
  • the second segment is the previous segment adjacent to the first segment in the target TCP stream (that is, the timestamp value in the target TCP stream is earlier than the first segment and adjacent to the first segment. message segment); the timestamp of the second message segment can be obtained by the host according to the timestamp value carried in the second message segment, or obtained by the host according to the moment recorded by the system at that time, that is, the first message
  • the timestamp of the segment and the timestamp of the second segment may be obtained using the same standard.
  • the time threshold is the difference between the first path delay and the second path delay
  • the first path delay is the delay of the uplink path with the largest delay in the multipath set of the target TCP flow
  • the first path delay is The two-path delay is the delay of the uplink path with the smallest delay in the multi-path set of the target TCP flow.
  • the multipath set of the target TCP flow may include multiple transmission paths corresponding to the target TCP flow, that is, multiple possible upstream transmission paths between the source IP, source port, destination IP, and destination port of the target TCP flow.
  • the multi-path set of the target TCP flow may further include multiple transmission paths corresponding to the TCP flow of the same network session between the target TCP flow, that is, multiple possible transmission paths between the source IP and the destination IP.
  • the multipath set of the target TCP stream may include multiple transmission paths corresponding to the target TCP stream itself, and may further include triple information (source address, destination address, transport layer protocol) related to the target TCP stream Multiple transmission paths corresponding to the same TCP stream. That is, one TCP stream may correspond to a multipath set, or multiple TCP streams in the same network session may correspond to the same multipath set. Therefore, each TCP stream may maintain a
  • the time threshold for dividing Flowlets may also be a time threshold for dividing Flowlets that is jointly maintained among multiple TCP flows.
  • the upstream path refers to the path from the sender (that is, the source host) to the receiver (destination host); and the upstream path delay refers to the time when the source host receives the packet after the segment is sent from the source host and reaches the destination host. The total delay experienced between the acknowledgment from the destination host (the destination host sends the acknowledgment immediately after receiving the data).
  • the multiple transmission paths in the multi-path set of the target TCP flow are all equal-cost paths.
  • the first path delay is equal to Among these equal-cost paths, the delay of the uplink path with the largest delay, the second path delay is the delay of the uplink path with the smallest delay among these equal-cost paths;
  • the multiple transmission paths in the multi-path set of the target TCP flow may include equal-cost paths or non-equivalent paths.
  • the first path delay is these equivalent or non-equivalent paths.
  • the delay of the uplink path with the largest delay is the delay of the second path
  • the delay of the second path is the delay of the uplink path with the smallest delay among these equivalent or non-equivalent paths.
  • the network of the equivalent multi-path model (such as data The multipath set between the different TCP flows between the sender and the receiver in the central network) is actually the same, so it can be based on the same historical segment as the quintuple or triple of the target TCP flow.
  • the uplink path delay is used to calculate the time threshold.
  • Fig. 3 since the network topology in Fig. 3 is a data center network, which belongs to the equal-cost multi-path model, all paths in the multi-path set of the target TCP flow under this network are equivalent Paths, such as Path 1, Path 2, Path 3 and Path shown in Figure 3.
  • the host maintains a flow information table, and the flow information table includes flow information of N TCP flows, where N is an integer greater than or equal to 1, wherein the flow information of each TCP flow Including the flow index of the corresponding TCP flow; the acquiring target flow information matching the target TCP flow includes: searching the flow information table for the target flow matching the target TCP flow according to the flow index of the target TCP flow the target stream information.
  • the additional layer protocol needs to maintain a flow information table FlowInfoTable, which is used to record the flow information of each TCP flow when the Flowlet is divided.
  • Each TCP flow occupies an entry in the FlowInfoTable table, as shown in Table 1,
  • each entry may contain six items: SrcPort, LstFLTag, LstTS, TTDiff, TripTime_max, TripTime_min. in,
  • the TCP stream index (SrcPort) item is used to index each TCP stream. That is, the label of the TCP stream. Wherein, this item corresponds to the flow index of the TCP flow described in this application.
  • the field value (LstFLTag) item of the previous data packet is the FL_Tag field value of the previous segment of the TCP flow. That is, whether the Flowlet ID corresponding to the last packet just sent is 0 or 1. Wherein, this item corresponds to the reference Flowlet identifier described in this application.
  • the LstTS item is the timestamp value of a segment on the TCP stream. That is, the timestamp value of the last data packet just sent (the timestamp value added by the transport layer), and its unit is usually microsecond (us) level. Wherein, this item corresponds to the timestamp value of the second segment described in this application.
  • the TTDiff item is the time threshold used by the TCP flow to divide Flowlets. That is, each stream maintains a time threshold independently, whose unit is usually microsecond (us) level. For example, it is the difference between the TripTime_max item and the TripTime_min item shown in Table 1. For example, the value of the TripTime_max item is 58 and the value of the TripTime_min item is 31, then the value of the TTDiff item is 27, and the value of the TripTime_max item is 27. 49. If the value of the TripTime_min item is 36, the value of the TTDiff item is 13. Wherein, this item corresponds to the time threshold described in this application.
  • TripTime_max is the delay of the upstream path with the largest delay in the multipath set corresponding to the TCP stream (the upstream path refers to the path from the sender to the receiver), and its unit is usually microseconds ( us) level. Wherein, this item corresponds to the first path delay described in this application.
  • TripTime_min is the delay of the uplink path with the smallest delay in the multipath set corresponding to the TCP flow, and the unit is usually a microsecond (us) level. Wherein, this item corresponds to the second path delay described in this application.
  • Step S503 Compare the difference between the timestamp of the first packet segment and the timestamp of the second packet segment with the time threshold.
  • the second The timestamp of the packet segment, the difference between the timestamp of the first packet segment (the timestamp is determined from the first packet segment) and the timestamp of the second packet segment and the above target flow information Compare the time threshold of the first message segment and the second message segment to obtain whether the time difference between the first segment and the second segment exceeds the maximum time interval corresponding to the target TCP flow to which the segment belongs, that is, the time threshold.
  • Step S504 According to the comparison result, determine whether to divide the first packet segment and the second packet segment into the same Flowlet.
  • step S303 it is determined whether to divide the first packet segment and the second packet segment into the same Flowlet, and for the same Flowet in a TCP flow, it is performed through the same path. For forwarding, the forwarding path needs to be re-decided for different Flowlets.
  • the first packet segment is is divided into the same Flowlet as the second segment; if the difference between the timestamp of the first segment and the timestamp of the second segment is greater than the time threshold, the first segment Segments are divided into new Flowlets.
  • the difference between the timestamps between the first segment to be sent and the last adjacent second segment in the target TCP flow to which it belongs is smaller than that corresponding to the target TCP flow (the time threshold is dynamically changed), it is considered that the first segment and the last adjacent second segment meet the conditions of being sent in the same Flowlet, that is, the first segment can be sent in the same Flowlet.
  • a segment is determined to be divided into the same Flowet as the previous second segment; for the same reason, if the current first segment to be sent is the same as the last adjacent second segment in the target TCP flow to which it belongs If the difference between the time stamps is greater than the time threshold corresponding to the target TCP flow, it is considered that the first segment and the last adjacent second segment do not meet the requirements in the same Flowlet.
  • the condition for sending is to divide the first segment into a new Flowet.
  • FIG. 6A is a schematic diagram of a first data packet and a second data packet in the same Flowlet provided by an embodiment of the present invention
  • the first data packet is the first segment and is encapsulated by an additional layer
  • the second data packet is a data packet after the second segment is encapsulated by the additional layer.
  • the host side divides the first packet segment and the second packet segment into the same In one Flowlet (Flowlet5 in the figure), that is, the corresponding first data packet and the second data packet are divided into the same Flowlet5.
  • FIG. 6B is a schematic diagram of a first data packet and a second data packet in different Flowlets according to an embodiment of the present invention.
  • the timestamps of the first packet segment and the second packet segment are If the difference between the values is greater than the time threshold, the host side divides the first segment and the second segment into different Flowlets (respectively, Flowlet5 and Flowlet4 in the figure), that is, the corresponding first data packets. and the second packet is divided into Flowlet5 and Flowlet4. It can be understood that, at this time, the first data packet is equivalent to the first data packet in the new Flowlet.
  • the embodiment of the present invention dynamically configures the time interval for detecting the Flowlet by combining the delay feedback information of the network path, so as to ensure Flowlet granularity matches network path state.
  • this embodiment of the present invention may further include the following method steps S505-S506.
  • Step S505 Generate a first data packet, where the first data packet includes the first packet segment and the Flowlet identifier of the first packet segment.
  • the source host side after the source host side encapsulates the first data segment through the additional layer and the network layer, it further generates a first data packet, where the first data packet includes the first segment and the first segment
  • the Flowlet identifier that is, in the process of generating the first data packet, in addition to encapsulating the header of the relevant protocol, it is also necessary to encapsulate the Flowlet identifier of the packet segment.
  • the Flowlet identifier of the first segment may be encapsulated in the Flowlet identifier bit on the header.
  • the target flow information also includes the reference Flowlet identifier of the target TCP flow (that is, corresponding to the LstFLTag field in Table 1 above). It is assumed that the reference Flowlet identifier is currently the first Flowlet identifier corresponding to the second segment, that is, the last most recent Flowlet identifier. When the sent segment is the second segment, the reference Flowlet identifier actually refers to the first Flowlet identifier corresponding to the second segment.
  • the flowlet of the first packet segment is identified as the first flowlet identifier; if the difference between the timestamp of the first packet segment and the timestamp of the second packet segment is greater than the time threshold, the Flowlet identifier of the first packet segment is the second Flowlet identifier.
  • the flowlet identifier corresponding to the packet segment can be set during the encapsulation process, so that the packet segment can be encapsulated
  • the switch side can identify which Flowlet the data packet belongs to through the Flowlet identifier, so as to decide which path to send through. For example, when the first packet is to enter the data link layer where the switch is located, the first packet needs to be further encapsulated. In this case, a bit is set in the encapsulated data packet for the switch to identify the packet. The identifier of which Flowlet the segment belongs to.
  • the switch side passes the first packet and the second packet corresponding to the second segment through the same path for forwarding.
  • the embodiment of the present invention divides the Flowlet on the host side, and can use the bit (for example, 1 bit) in the reserved field of the transport layer header to mark the Flowlet, and the switch can identify the Flowlet only by the header field, with high efficiency and high efficiency.
  • the hardware overhead is low, and it also ensures that the same Flowlet will not be segmented again no matter how many hops of switches it goes through in the network, reducing the risk of out-of-order packets.
  • Step S506 If the difference between the timestamp of the first packet segment and the timestamp of the second packet segment is greater than the time threshold, update the reference Flowlet identifier to the second Flowlet identifier.
  • the flow information of each TCP flow in the flow information table maintained by the host side also includes the reference Flowlet identifier of each TCP flow, that is, the current Flowlet identifier of each TCP flow is maintained in the flow information table , so as to set the corresponding Flowlet identifier for the segment to be sent.
  • the reference Flowlet ID is the first Flowlet ID (that is, the Flowlet ID corresponding to the second segment)
  • the The Flowlet ID of a message segment is also marked as the first Flowlet ID, that is, the reference Flowlet ID remains unchanged as the first Flowlet ID; if the reference Flowlet ID is the first Flowlet ID, and when the first message segment matches the first Flowlet ID
  • the second segment is divided into different Flowlets (that is, the first segment is divided into a new Flowlet)
  • the Flowlet ID of the first segment is marked as the second Flowlet ID, and at this time, refer to the Flowlet ID Then it needs to be updated to the second Flowlet ID.
  • the reference Flowlet ID can be switched between 0 or 1, that is, between two adjacent Flowlets, their Flowlet IDs take values at intervals between 0 or 1, so only 1 bit can accurately indicate the difference. Whether the packets belong to the same Flowlet.
  • the host also updates the first path delay or the second path delay according to the received ACK packet, so as to update the time threshold of the target TCP flow in real time.
  • the host receives a target ACK packet, and the target ACK packet is an ACK packet with the same destination port number or the same destination address as the target TCP stream; determining the uplink path delay of the target ACK packet, the uplink path The delay is the difference between the timestamp value of the target ACK packet and the timestamp echo response value; the uplink path delay of the target ACK packet and the uplink path delay of the historical ACK packets in the target TCP flow Compare; if the uplink path delay of the target ACK packet is greater than the maximum value of the uplink path delays of the historical ACK packets, then update the first path delay to the uplink path time of the target ACK packet If the uplink path delay of the target ACK packet is less than the minimum value among the uplink path delays of the historical ACK packets, update the second path delay to the up
  • the time threshold for dividing the Flowlet may be the maximum upstream path delay of the historical packet received by the target TCP flow (or the TCP flow in the same network session as the target TCP flow).
  • the time threshold is calculated from the difference between the time delay and the minimum uplink path delay, that is, the time threshold is a value that changes in real time and is dynamically adjusted according to the network transmission load.
  • the transmission delay of the upstream path of the ACK packet is calculated by the difference between the timestamp value of the target ACK packet and the timestamp echo response value, and the transmission delay of the ACK packet is calculated according to the The historical value of the transmission delay of the uplink path, determine a current minimum uplink path delay, and use it as the first path delay, and determine a current maximum uplink path delay, and use it as the second path delay Path delay; finally, the difference between the first path delay and the second path delay is used to calculate the time threshold for dividing Flowlets in the target TCP flow.
  • the time threshold used to divide Flowlets is dynamically changed, and is dynamically adjusted according to the real-time transmission delay of data in the corresponding TCP flow, so it can always adapt to dynamic network load changes.
  • FIG. 6C is a schematic flowchart of an additional layer protocol dividing and marking a Flowlet according to an embodiment of the present invention. Based on the flow information table maintained by the host in the above Table 1, the following exemplarily describes when the TCP segment is completed. After the encapsulation of the header field of the transport layer, the function of the additional layer is triggered and the realization process of flowlet division and marking is performed, which may include the following steps:
  • the index in the FlowInfoTable (the flow information table described in Table 1) is changed to correspond to the TCP flow. entry (denoted as [SrcPort]).
  • the next step is to judge whether the segment (such as the first segment) meets the flowlet segmentation conditions, that is, to determine whether the timestamp value of the segment (such as the timestamp value of the first segment) is different from that of the segment.
  • the relationship between the difference between the timestamp values of the previous segment recorded in the corresponding entry of the TCP flow and the segmentation threshold of the Flowlet that is, CurTS–[SrcPort].LstTS ⁇ [SrcPort].TTDiff).
  • the current segment (such as the first segment) is regarded as the first segment of the new Flowlet and marked on the FL_Tag bit of the header.
  • the value of the FL_Tag bit of the segment header is set to the opposite value of the LstFLTag item in the entry, and then the value of the LstFLTag item in the entry is updated;
  • the current segment (such as the first segment) is regarded as the subsequent segment of the previous Flowlet and marked on the FL_Tag bit of the header.
  • the method of marking is to mark the packet.
  • the value of the FL_Tag bit of the segment header is set to the same value of the LstFLTag entry in this entry.
  • FIG. 6D is a schematic flowchart of an additional layer protocol dynamically updating a segmentation threshold of a Flowlet according to an embodiment of the present invention. Based on the flow information table maintained by the host in Table 1 above, it should be noted that, since the data center network topology provides multiple equal-cost paths for the same pair of source and destination hosts, in this embodiment of the present invention, the time carried by the ACK packet is first used.
  • Stamp continuously obtains the uplink path delay of equal-cost paths (including equal-cost paths in the same TCP flow, or can include equal-cost paths in the same network session), and records the maximum and minimum uplink path delays
  • the maximum delay difference between equal-cost paths is represented by the difference between the maximum and minimum uplink path delays, and the TTDiff parameter is periodically configured based on the maximum delay difference.
  • the following exemplarily describes the implementation process of the additional layer protocol dynamically configuring the TTDiff parameter used to indicate the division of the Flowlet, which may specifically include the following steps:
  • the host side indexes the corresponding ACK packet in the FlowInfoTable information table according to the destination port information carried.
  • the entry (denoted as [SrcPort]) is the same as the entry corresponding to the TCP flow associated with the ACK packet.
  • Timesatmp timestamp value field value
  • TimesatmpEcho timestamp echo response field value
  • the additional layer protocol may also periodically update the TTDiff items of all entries in the information table.
  • the value of the TTDiff item is configured as the difference between the TripTime_max item and the TripTime_min item of each entry, and the TripTime_max item and the TripTime_min item are set simultaneously. to reset the value of , so that the maximum or minimum value that has expired will not always exist.
  • the update period may also be set to the time order of the network round-trip delay (about 100-200 microseconds), the reset value of the TripTime_max item is set to zero, and the reset value of the TripTime_min item is set to one Larger value (such as the maximum value that can be represented by 4 bytes).
  • Flowlet technology can well solve the problems of hash collision, rat flow blocking, asymmetry and other problems faced by data center network load balancing.
  • Most of the existing Flowlet-level solutions detect and forward Flowlets at the switch based on a fixed time interval, but the fixed time interval cannot match the dynamically changing traffic load moment of the data center network, which will lead to uneven load distribution in the network.
  • This application proposes to pre-segment traffic at the terminal host based on a time threshold that adaptively changes with the path load, and then distribute fine-grained Flowlets to the network. After the switch recognizes the Flowlets, it can execute any routing algorithm to further balance the load.
  • FIG. 7 is a schematic flowchart of a data transmission method provided by an embodiment of the present invention.
  • the method can be applied to the switch in the network architecture described in FIG. 2 or FIG. 3.
  • the switch 20 can be used to support and Steps S701 to S704 of the method flow shown in FIG. 7 are performed.
  • the following description will be made from the switch side with reference to FIG. 3 .
  • the method may include the following steps S701-S704.
  • Step S701 Receive the first data packet.
  • the first data packet includes a first packet segment and a Flowlet identifier of the first packet segment.
  • Step S702 Determine the target TCP flow to which the first data packet belongs, and obtain forwarding information matching the target TCP flow.
  • the forwarding information includes a reference Flowlet identifier of the target TCP flow and a reference forwarding path; wherein, the reference Flowlet identifier is currently a first Flowlet identifier corresponding to a second packet segment, and the second packet segment is the last packet segment adjacent to the first packet segment in the target TCP flow; the reference forwarding path is the first forwarding path of the second data packet, and the second packet includes the second packet a text segment and the first Flowlet identifier;
  • the switch maintains a forwarding information table, and the forwarding information table includes forwarding information of M TCP flows, where M is an integer greater than or equal to 1, wherein the forwarding information of each TCP flow Including the five-tuple hash value of the corresponding TCP flow; the determining the target TCP flow to which the first data packet belongs, and obtaining the forwarding information matching the target TCP flow, comprising: according to the five-tuple of the first data packet. tuple information, calculate the quintuple hash value of the first data packet; according to the quintuple hash value of the first data packet, search for the target TCP flow matching from the forwarding information table Forward information.
  • the switch side maintains a forwarding information table, where the forwarding information table includes forwarding information of one or more TCP flows (for example, currently active TCP flows) on the hosts connected to it, and each TCP flow
  • the forwarding information may in turn include the quintuple hash value of the TCP stream. That is, the switch can maintain the forwarding information of all currently active TCP flows, so that when a data packet needs to be sent, it can search the forwarding information table with the quintuple hash value according to the quintuple hash value of the data packet.
  • the forwarding information (including the reference Flowlet identifier, forwarding path, etc.) matching the value of the value is used to forward the to-be-sent data packet.
  • Step S703 Compare the Flowlet identifier of the first segment with the first Flowlet identifier
  • Step S704 According to the comparison result, determine whether to forward the first packet segment through the first forwarding path.
  • the switch side identifies the Flowlet identifier in the data packet, and according to the Flowlet identifier, determines whether the Flowlet identifier of the first data packet and the adjacent data packets in the target TCP flow to which it belongs are the same. , and based on this, it is determined whether the first data packet needs to be forwarded through the forwarding path corresponding to the second data packet. That is, the switch side does not need to divide Flowlets for data packets according to the time interval of the received data packets, but directly identifies whether the current data packets to be sent are the same TCP flow according to the Flowlet identification bits contained in the received data packets. The previous adjacent data packet in the flowlet belongs to the same Flowlet, so it is decided whether to continue forwarding through the forwarding path of the adjacent data packet, or to divide a new Flowlet for the data packet and decide a new forwarding path for it.
  • the forwarding path referred to in the embodiment of the present invention refers to the forwarding port currently determined by each switch. That is, the complete forwarding path of a data packet may actually need to be jointly determined by the forwarding ports that are determined separately by the multi-hop switch. Therefore, in the embodiment of the present invention, on the switch side actually means that each switch in the multi-hop switch executes the above data transmission method, and then finally determines the complete forwarding path of the first data packet.
  • the first data packet is forwarded through the first forwarding path; If the Flowlet identifier of a packet segment is different from the first Flowlet identifier, a second forwarding path is determined for the first data packet and forwarded through the second forwarding path.
  • the switch when the switch identifies that the first data packet is the same as the Flowlet identifier of the adjacent data packet in the target TCP flow to which it belongs, the switch forwards the first data packet and the second data packet on the same path; when When the switch identifies that the first data packet is different from the flowlet identifier of the adjacent data packet in the target TCP flow to which it belongs, it determines a new forwarding path for the first data packet, and forwards the first data packet through the new forwarding path. It should be noted that the second forwarding path may be the same as or different from the first forwarding path, depending on the decision result of the switch.
  • the method further includes: if the Flowlet identifier of the first packet segment is different from the first Flowlet identifier and is the second Flowlet identifier, referencing the target TCP flow The flowlet identification is updated to the second flowlet identification, and the reference forwarding path is updated to the second forwarding path.
  • the switch needs to divide the first data packet into a new Flowlet, and needs to update the reference Flowlet ID of the TCP flow to which it belongs to the Flowlet ID corresponding to the current latest data packet, that is, the second Flowlet ID.
  • the flowlet is identified at the switch according to the identification bit of the data packet.
  • the switch implements the above functions through the Flowlet forwarding information table (Flowlet Table), where the format of Table 2 is as follows:
  • each entry in the Flowlet forwarding information table may contain three items: Entry, FLTag, and Port. in,
  • the Entry item records the hash value of the quintuple (source IP, destination IP, source port, destination port, and protocol number) of the data packet, and uses this hash value to index the corresponding entry of the TCP stream in the forwarding table. Wherein, this item corresponds to the quintuple hash value described in this application.
  • the FLTag item records the Flowlet flag bit information, which is used for the identification of adjacent Flowlets, wherein this item corresponds to the reference Flowlet identifier described in this application.
  • the Port item records the information of the forwarding port. Wherein, this item corresponds to the forwarding information described in this application.
  • the following exemplarily describes the implementation process of identifying the Flowlet according to the identification bit of the data packet on the switch side, and the implementation process may include the following main steps:
  • the switch For each arriving data packet, the switch must first identify which TCP flow the data packet belongs to, and then identify which Flowlet of the TCP flow the data packet belongs to.
  • the switch first performs a hash operation on the quintuple of the data packet to obtain a hash value, and then searches the Flowlet forwarding table for the forwarding table entry corresponding to the Entry item with the same hash value to determine that the arriving data packet belongs to Which TCP stream.
  • the hash value is key1, key2, etc. in Table 1 above.
  • the data packet belongs to the current flow burst, and the data packet is forwarded to the output port indicated by the Port item of the entry.
  • the switch performs a quintuple hash on it, and the hash value is key2, and then assumes that the flowlet identifier value of the packet B is 0; the switch forwards according to the hash value key2
  • the index in the information table corresponds to the entry, and the FLTag value in the entry is compared with the Flowlet identification value of packet B.
  • the main protection points of this application may include the following points:
  • each flow has an exclusive entry in the information table, and the entry includes the relevant information when splitting the Flowlet.
  • the timestamp option in the ACK packet continuously obtain the one-way delay information of the path from the host, and then calculate the one with the largest delay in the multi-path set (which may include equal-cost paths or non-equal-cost paths).
  • the delay of the uplink path; and the maximum delay difference is periodically set as the time threshold for dividing the Flowlet to ensure that the time threshold can dynamically adapt to the path load, and the information table is updated.
  • the current segment is regarded as the first segment of the new Flowlet.
  • a bit of a reserved field in the TCP header is used as a flag bit to distinguish different Flowlets of the same flow. Among them, the flag bits of all message segments in the same Flowlet have the same value, and the flag bits of adjacent Flowlets have the same value. value is opposite.
  • the switch can identify each Flowlet according to the five-tuple hash and the one-bit flag bit in the header of the transport layer or the additional layer, and can use any routing algorithm to complete the forwarding of the data packet.
  • FIG. 8 is a schematic structural diagram of a data processing apparatus provided by an embodiment of the present invention.
  • the data processing apparatus 80 may include a first generating unit 801, a first determining unit 802, an obtaining unit 803, a first The comparing unit 804 and the Flowlet dividing unit 805, wherein the detailed description of each unit is as follows.
  • a first generating unit 801, configured to generate a first segment
  • a first determining unit 802 configured to determine the target TCP flow to which the first packet segment belongs
  • Obtaining unit 803, configured to obtain the timestamp of the first segment, and obtain target flow information matching the target TCP flow, where the target flow information includes a time threshold corresponding to the target TCP flow, the Timestamp of the second segment in the target TCP flow; wherein, the second segment is the previous segment adjacent to the first segment in the target TCP stream, and the time threshold is the first segment
  • the first path delay is the delay of the uplink path with the largest delay in the multipath set of the target TCP flow
  • the second path delay is the Describe the delay of the uplink path with the smallest delay in the multipath set of the target TCP flow;
  • a first comparison unit 804 configured to compare the difference between the timestamp of the first packet segment and the timestamp of the second packet segment with the time threshold
  • the flowlet dividing unit 805 is configured to determine, according to the comparison result, whether to divide the first packet segment and the second packet segment into the same Flowlet.
  • the first determining unit is specifically configured to:
  • the target TCP flow to which the first message segment belongs is determined according to the source port number of the first message segment.
  • the apparatus further includes:
  • a maintenance unit configured to maintain a flow information table, where the flow information table includes flow information of N TCP flows, where N is an integer greater than or equal to 1, wherein the flow information of each TCP flow includes a flow index corresponding to the TCP flow;
  • the obtaining unit is specifically configured to: search the target flow information matching the target TCP flow from the flow information table according to the flow index of the target TCP flow.
  • the Flowlet is divided into units, and is specifically used for:
  • the first packet segment is divided into a new Flowlet.
  • the target flow information further includes a reference Flowlet identifier of the target TCP flow, and the reference Flowlet identifier is currently the first Flowlet identifier corresponding to the second segment;
  • the apparatus Also includes:
  • a second generating unit configured to generate a first data packet, where the first data packet includes the first packet segment and a Flowlet identifier of the first packet segment;
  • the flowlet of the first packet segment is identified as the first flowlet identification
  • the Flowlet identifier of the first packet segment is the second Flowlet identifier.
  • the apparatus further includes:
  • a first update unit configured to update the reference Flowlet identifier to the first message segment if the difference between the timestamp of the first segment and the timestamp of the second segment is greater than the time threshold 2.
  • the apparatus further includes:
  • a receiving unit configured to receive a target ACK packet, where the target ACK packet is an ACK packet with the same destination port number or the same destination address as the target TCP stream;
  • a second determining unit configured to determine the uplink path delay of the target ACK packet, where the uplink path delay is the difference between the timestamp value of the target ACK packet and the timestamp echo response value;
  • a second comparison unit configured to compare the uplink path delay of the target ACK packet with the uplink path delay in the multipath set of the target TCP flow
  • a second updating unit configured to update the first path delay to the target if the uplink path delay of the target ACK packet is greater than the delay of the uplink path with the current maximum delay in the multipath set Upstream path delay of ACK packet;
  • a third updating unit configured to update the second path delay to the target if the uplink path delay of the target ACK packet is smaller than the delay of the uplink path with the smallest current delay in the multipath set Upstream path delay of ACK packets.
  • the multi-path set includes multiple equivalent transmission paths of the target TCP flow; or, the multi-path set includes multiple equivalent transmission paths of the target TCP flow and non-equivalent transmission paths of the target TCP flow Equivalent transmission paths; or, the multi-path set includes multiple non-equivalent transmission paths of the target TCP stream.
  • FIG. 9 is a schematic structural diagram of a data transmission apparatus provided by an embodiment of the present invention.
  • the data transmission apparatus 90 may include a receiving unit 901, a determining unit 902, a comparing unit 903, and a forwarding unit 904, wherein each unit
  • the detailed description is as follows.
  • a receiving unit 901 configured to receive a first data packet, where the first data packet includes a first message segment and a Flowlet identifier of the first message segment, and the first data packet belongs to a target TCP flow;
  • a determining unit 902 configured to determine the target TCP flow to which the first data packet belongs, and obtain forwarding information matching the target TCP flow;
  • the forwarding information includes a reference Flowlet identifier of the target TCP flow and a reference forwarding path;
  • the reference Flowlet identifier is currently the first Flowlet identifier corresponding to the second packet segment, and the second packet segment is the previous packet segment adjacent to the first packet segment in the target TCP flow;
  • the reference forwarding path is a first forwarding path of a second data packet, and the second data packet includes the second packet segment and the first Flowlet identifier;
  • a comparison unit 903 configured to compare the Flowlet identifier of the first segment with the first Flowlet identifier
  • the forwarding unit 904 is configured to determine, according to the comparison result, whether to forward the first packet segment through the first forwarding path.
  • the switch maintains a forwarding information table, and the forwarding information table includes forwarding information of M TCP flows, where M is an integer greater than or equal to 1, wherein the forwarding information of each TCP flow Including the five-tuple hash value corresponding to the TCP flow; the determining unit is specifically used for:
  • the forwarding information matching the target TCP flow is searched from the forwarding information table.
  • the forwarding unit is specifically used for:
  • a second forwarding path is determined for the first data packet, and forwarded through the second forwarding path.
  • the apparatus further includes:
  • an update unit if the Flowlet identifier of the first segment is different from the first Flowlet identifier and is the second Flowlet identifier, updating the reference Flowlet identifier of the target TCP flow to the second Flowlet identifier, and The reference forwarding path is updated to the second forwarding path.
  • An embodiment of the present invention further provides a host, wherein the host includes a processor, a memory, and a communication interface, wherein the memory is used for storing data processing program codes, and the processor is used for calling the data processing program codes to execute Part or all of the steps of any one of the data processing methods described in the above method embodiments.
  • An embodiment of the present invention further provides a switch, wherein the host includes a processor, a memory, and a communication interface, wherein the memory is used to store a data transmission program code, and the processor is used to call the data transmission program code to execute Part or all of the steps of any one of the data transmission methods described in the above method embodiments.
  • Embodiments of the present invention further provide a computer-readable storage medium, wherein the computer-readable storage medium may store a program, and when the program is executed by a host, the program includes any part or part of any of the data processing methods described in the above method embodiments. all steps.
  • the embodiment of the present invention also provides a computer program, the computer program includes instructions, when the computer program is executed by the switch, the switch can execute part or all of the steps of any data transmission method.
  • the disclosed apparatus may be implemented in other manners.
  • the device embodiments described above are only illustrative.
  • the division of the above-mentioned units is only a logical function division.
  • multiple units or components may be combined or integrated. to another system, or some features can be ignored, or not implemented.
  • the shown or discussed mutual coupling or direct coupling or communication connection may be through some interfaces, indirect coupling or communication connection of devices or units, and may be in electrical or other forms.
  • the units described above as separate components may or may not be physically separated, and components shown as units may or may not be physical units, that is, may be located in one place, or may be distributed to multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution in this embodiment.
  • each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically alone, or two or more units may be integrated into one unit.
  • the above-mentioned integrated units may be implemented in the form of hardware, or may be implemented in the form of software functional units.
  • the integrated units are implemented in the form of software functional units and sold or used as independent products, they may be stored in a computer-readable storage medium.
  • the technical solutions of the present application can be embodied in the form of software products in essence, or the parts that contribute to the prior art, or all or part of the technical solutions, and the computer software products are stored in a storage medium , including several instructions to cause a computer device (which may be a personal computer, a server, or a network device, etc., specifically a processor in the computer device) to execute all or part of the steps of the foregoing methods in the various embodiments of the present application.
  • a computer device which may be a personal computer, a server, or a network device, etc., specifically a processor in the computer device
  • the aforementioned storage medium may include: U disk, mobile hard disk, magnetic disk, optical disk, Read-Only Memory (Read-Only Memory, abbreviation: ROM) or Random Access Memory (Random Access Memory, abbreviation: RAM), etc.
  • a medium that can store program code may include: U disk, mobile hard disk, magnetic disk, optical disk, Read-Only Memory (Read-Only Memory, abbreviation: ROM) or Random Access Memory (Random Access Memory, abbreviation: RAM), etc.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Procédé de traitement de données, procédé de transmission de données, et dispositif associé. Le procédé de traitement de données est appliqué à un hôte et comprend les étapes consistant : à générer un premier segment de message, et à déterminer un flux TCP cible auquel le premier segment de message appartient; à obtenir des informations de flux cible correspondant au flux TCP cible, les informations de flux cible comprenant un seuil de temps correspondant au flux TCP cible, et une estampille temporelle d'un second segment de message dans le flux TCP cible; à comparer une valeur de différence entre une estampille temporelle du premier segment de message et l'estampille temporelle du second segment de message, avec le seuil de temps; et à déterminer, en fonction du résultat de la comparaison, s'il faut classer le premier segment de message et le second segment de message dans un même flowlet. Au moyen du procédé, l'efficacité et la précision d'une transmission de données peuvent être améliorées.
PCT/CN2020/119708 2020-09-30 2020-09-30 Procédé de traitement de données, procédé de transmission de données, et dispositif associé WO2022067791A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202080105542.9A CN116325708A (zh) 2020-09-30 2020-09-30 一种数据处理、传输方法及相关设备
PCT/CN2020/119708 WO2022067791A1 (fr) 2020-09-30 2020-09-30 Procédé de traitement de données, procédé de transmission de données, et dispositif associé

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/119708 WO2022067791A1 (fr) 2020-09-30 2020-09-30 Procédé de traitement de données, procédé de transmission de données, et dispositif associé

Publications (1)

Publication Number Publication Date
WO2022067791A1 true WO2022067791A1 (fr) 2022-04-07

Family

ID=80949468

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/119708 WO2022067791A1 (fr) 2020-09-30 2020-09-30 Procédé de traitement de données, procédé de transmission de données, et dispositif associé

Country Status (2)

Country Link
CN (1) CN116325708A (fr)
WO (1) WO2022067791A1 (fr)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277504A (zh) * 2022-07-11 2022-11-01 京东科技信息技术有限公司 一种网络流量监控方法、装置和系统
CN115277568A (zh) * 2022-07-20 2022-11-01 重庆星环人工智能科技研究院有限公司 一种数据发送方法、装置、设备及存储介质
CN116366478A (zh) * 2023-06-01 2023-06-30 湖北省楚天云有限公司 一种基于fpga的数据包对比去重方法
CN116708280A (zh) * 2023-08-08 2023-09-05 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种基于乱序度容忍的数据中心网络多路径传输方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150127797A1 (en) * 2013-11-05 2015-05-07 Cisco Technology, Inc. System and method for multi-path load balancing in network fabrics
CN107634912A (zh) * 2016-07-19 2018-01-26 华为技术有限公司 负载均衡方法、装置及设备
CN108270687A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 一种负载均衡处理方法及装置
CN110061929A (zh) * 2019-03-10 2019-07-26 天津大学 针对非对称网络的数据中心负载均衡方法
CN110460537A (zh) * 2019-06-28 2019-11-15 天津大学 基于包集合的数据中心非对称拓扑下流量调度方法
US20200067839A1 (en) * 2015-07-02 2020-02-27 Cisco Technology, Inc. Network traffic load balancing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150127797A1 (en) * 2013-11-05 2015-05-07 Cisco Technology, Inc. System and method for multi-path load balancing in network fabrics
US20200067839A1 (en) * 2015-07-02 2020-02-27 Cisco Technology, Inc. Network traffic load balancing
CN107634912A (zh) * 2016-07-19 2018-01-26 华为技术有限公司 负载均衡方法、装置及设备
CN108270687A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 一种负载均衡处理方法及装置
CN110061929A (zh) * 2019-03-10 2019-07-26 天津大学 针对非对称网络的数据中心负载均衡方法
CN110460537A (zh) * 2019-06-28 2019-11-15 天津大学 基于包集合的数据中心非对称拓扑下流量调度方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277504A (zh) * 2022-07-11 2022-11-01 京东科技信息技术有限公司 一种网络流量监控方法、装置和系统
CN115277504B (zh) * 2022-07-11 2024-04-05 京东科技信息技术有限公司 一种网络流量监控方法、装置和系统
CN115277568A (zh) * 2022-07-20 2022-11-01 重庆星环人工智能科技研究院有限公司 一种数据发送方法、装置、设备及存储介质
CN116366478A (zh) * 2023-06-01 2023-06-30 湖北省楚天云有限公司 一种基于fpga的数据包对比去重方法
CN116366478B (zh) * 2023-06-01 2023-08-15 湖北省楚天云有限公司 一种基于fpga的数据包对比去重方法
CN116708280A (zh) * 2023-08-08 2023-09-05 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种基于乱序度容忍的数据中心网络多路径传输方法
CN116708280B (zh) * 2023-08-08 2023-10-24 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种基于乱序度容忍的数据中心网络多路径传输方法

Also Published As

Publication number Publication date
CN116325708A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
WO2022067791A1 (fr) Procédé de traitement de données, procédé de transmission de données, et dispositif associé
US11411770B2 (en) Virtual port channel bounce in overlay network
US20220263767A1 (en) Network Congestion Notification Method, Agent Node, and Computer Device
US9680746B2 (en) Source routing with fabric switches in an ethernet fabric network
US10355879B2 (en) Virtual extensible LAN tunnel keepalives
US8179808B2 (en) Network path tracing method
KR101317969B1 (ko) 링크 애그리게이션 방법 및 노드
US8050180B2 (en) Network path tracing method
US9154394B2 (en) Dynamic latency-based rerouting
US8306039B2 (en) Methods and systems for automatic transport path selection for multi-homed entities in stream control transmission protocol
US9614759B2 (en) Systems and methods for providing anycast MAC addressing in an information handling system
US20160359592A1 (en) Techniques for determining network anomalies in data center networks
US10361954B2 (en) Method and apparatus for processing modified packet
US9059922B2 (en) Network traffic distribution
US20140198793A1 (en) Traffic forwarding in a point multi-point link aggregation using a link selector data table
US9425893B1 (en) Methods and apparatus for implementing optical integrated routing with traffic protection
US9548930B1 (en) Method for improving link selection at the borders of SDN and traditional networks
US10931530B1 (en) Managing routing resources of a network
TWI721103B (zh) 集群精確限速方法和裝置
WO2022253087A1 (fr) Procédé de transmission de données, nœud, gestionnaire de réseau et système
US20220294712A1 (en) Using fields in an encapsulation header to track a sampled packet as it traverses a network
WO2023226633A1 (fr) Procédé de traitement de défaillance, et dispositif et système associés
WO2015096512A1 (fr) Procédé et dispositif d'émission de paquets basé sur un réseau trill
EP4325800A1 (fr) Procédé et appareil de transmission de paquets
WO2022052800A1 (fr) Système de communication, procédé de traitement de données et dispositif associé

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20955814

Country of ref document: EP

Kind code of ref document: A1