Selecting a flow to be rerouted based on remaining bytes as an indicator

CN122802413APending Publication Date: 2026-09-22HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202511511155.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2025-03-19
Filing Date
2025-10-22
Publication Date
2026-09-22

Smart Images

  • Figure CN122802413A_ABST
    Figure CN122802413A_ABST
Patent Text Reader

Abstract

This disclosure relates to selecting a flow to be rerouted based on remaining bytes as an indicator. A system receives a first data packet of a flow through an ingress port in a network structure. The system stores the number of remaining bytes to be transmitted in the flow in a data structure. The system updates the number of remaining bytes in the flow in response to receiving additional messages about the flow from the source of the flow and receiving acknowledgments (ACKs) corresponding to previously transmitted data packets of the flow from the destination of the flow. The system identifies multiple candidate flows to be rerouted based on intermediate structure congestion detected by intermediate ports in the network structure. The system selects a first flow from the candidate flows based on the corresponding number of remaining bytes in the flow, the first flow being associated with a first path. The system reroutes the first flow from the first path to a new path.
Need to check novelty before this filing date? Find Prior Art

Description

Background Technology

[0001] In a network architecture, paths can be selected for ordered flows based on load. Persistent flows may become unbalanced over time, and some paths may be used more frequently than others. Congestion may be detected at intermediate structure ports. Relaying this "intermediate structure congestion" to an ingress port allows that port to select the flow to be rerouted on a different path from multiple candidate flows. However, rerouting flows can impact the cost and efficiency of the network architecture. Techniques for selecting the optimal flow to reroute can be valuable. Attached Figure Description

[0002] Figure 1 The illustration depicts an environment that facilitates the selection of a stream to be rerouted based on the remaining bytes as an indicator, according to one aspect of this application.

[0003] Figure 2 The illustration depicts an environment that facilitates the selection of a stream to be rerouted based on the remaining bytes as an indicator, according to one aspect of this application.

[0004] Figure 3A The illustration shows a direct method (extended header) according to one aspect of this application for selecting the stream to be rerouted based on the remaining bytes as an indicator.

[0005] Figure 3B The illustration shows a direct method (option field) for selecting the stream to be rerouted based on the remaining bytes as an indicator, according to one aspect of this application.

[0006] Figure 4A A flowchart illustrating a method for selecting a stream to be rerouted based on the remaining bytes as an indicator, according to one aspect of this application, is presented.

[0007] Figure 4B A flowchart illustrating a method for selecting a stream to be rerouted based on the remaining bytes as an indicator, according to one aspect of this application, is presented.

[0008] Figure 5 The illustration depicts a computer system, according to one aspect of this application, that facilitates the selection of streams to be rerouted based on the remaining bytes as indicators.

[0009] Figure 6 The illustration depicts a computer-readable medium that facilitates the selection of a stream to be rerouted based on the remaining bytes as an indicator, according to one aspect of this application.

[0010] In these accompanying drawings, the same reference numerals refer to the same elements. Detailed Implementation

[0011] Various aspects of this application provide a system that facilitates the selection of streams to be rerouted based on the remaining bytes as indicators.

[0012] A network structure can include ingress network devices, intermediate network devices, and egress network devices. Data can be transmitted within the network structure as a “stream,” that is, a stream of messages / packets from one source to one destination (e.g., from one ingress network device to one egress network device). Paths for ordered flows through the network structure can be selected based on load. While data is pending in the network structure, flows may follow the same selected path. Some flows (e.g., persistent flows lasting for long periods) may cause load imbalances over time (e.g., load may vary over time), and some paths may be used more frequently than others.

[0013] When packets are received from a flow, congestion can occur in the middle of the network structure (i.e., "midpoint congestion" or "intermediate structure congestion" detected by intermediate or intermediate structure network devices) or at the network exit (i.e., "endpoint congestion" detected by exit or endpoint network devices). Too many flows may be forwarded to the same link, which can result in too many packets waiting in the queue to be allocated their share of link bandwidth. Rerouting flows that have encountered endpoint congestion and have already reached the exit network device may not provide any benefit. In contrast, rerouting flows that have encountered intermediate structure congestion can improve the overall efficiency of the network structure because the rerouted flows will likely be directed to different intermediate structure links with fewer flows and idle bandwidth to accommodate more packets. When packets are received from a flow, intermediate structure network devices can detect intermediate structure congestion, and can relay information about the detected intermediate structure congestion to the ingress network device, allowing the ingress network device to reroute the flow to a new path.

[0014] However, rerouting flows can impact the performance and / or efficiency of the network architecture. Therefore, the optimal choice of which flows(s) to reroute can have a significant impact on performance.

[0015] The described aspect provides a system that facilitates the selection of a stream to be rerouted from multiple candidate streams based on the "remaining bytes to be transmitted in the stream" (referred to herein as "BR"). An ingress port can receive a stream and obtain information about the stream's "extent" (i.e., a measure of how long the stream will remain alive). The extent of a stream can be represented as the BR. Upon receiving a stream, the ingress port can obtain the BR directly (e.g., from the first packet of a message in the stream, a network interface controller or network interface card (NIC) or software, from Internet Protocol (IP) options, or transport layer headers), or indirectly (e.g., by inference based on historical analysis of the stream or by learning behavior associated with similar traffic or streams by network management software). The ingress port can determine the BR based on information obtained from at least one of the following: the first packet of the stream; headers; extended headers; IP options; transport layer headers; software-related components or hardware-related components; or the NIC. The following section discusses... Figure 3A and Figure 3B An example of obtaining or determining BR is described.

[0016] An ingress port can store the acquired or determined BR in a table or other data structure, incrementing the BR when it receives additional messages from the same first-order stream (e.g., from the source of the stream) and decrementing the BR when it receives an ACK from the destination egress port corresponding to a previously transmitted packet from the same first-order stream. For example, an ingress port can store the BR in a per-port data structure.

[0017] One or more intermediate structure switches can detect intermediate structure congestion by measuring load metrics on their ports (e.g., by detecting that more data arrives at the switch's ingress port than can leave a given port). Load metrics can be based on, for example, the bandwidth consumption associated with the detected switch port or network device; the amount of data pending in the input buffer associated with the detected switch or network device; and information associated with the state of the corresponding flow. Other metrics can also be used to detect intermediate structure congestion. Based on the load metrics of the generated corresponding flows, intermediate structure ports can identify candidate flows to be rerouted, for example, as described below. Figure 1 and Figure 2 As described, intermediate structure ports can identify candidate flows to be rerouted by sending a special "redirection" acknowledgment (ACK) to the ingress port.

[0018] An ingress port can identify multiple candidate flows to be rerouted, for example, based on redirection ACKs generated by intermediate structure ports. The ingress port can score or rank candidate flows based on their current Business Router (BR) and select flows for rerouting based on the scores. For example, the ingress port can calculate a score based on a comparison of the BR with the Bandwidth-Delay Product (BDP), which is the link bandwidth multiplied by the congestion-free round-trip time. The score can also be based on a comparison of the BR with an upper or lower threshold; that is, if the BR is greater than the upper threshold, it is selected for rerouting; if it is lower than the lower threshold, it is not selected for rerouting. The score can also be based on a quantification of the BR, such as small, medium, large, and very large categories, where each category includes a range of BRs and can be associated with rerouting decisions. Categories can be based on a comparison of the BR with one or more predetermined thresholds or ranges of the ratio between the BR and the BDP.

[0019] Figure 1 The illustration depicts an environment that facilitates the selection of a flow to be rerouted based on the remaining bytes as an indicator, according to one aspect of this application. Environment 100 may include a network 110 of switches (which may be referred to as a "switch fabric" or "network fabric") and may include switches 112, 114, 116, 118, and 120. Each switch may have a unique address or identifier within switch fabric 110. Various types of endpoints, processing nodes, devices, and networks may be coupled to switch fabric. For example, storage array 130 may be coupled to switch fabric 110 via switch 112; high-performance computing (HPC) network 132 (e.g., unlimited bandwidth, Slingshot, or any other high-performance network) 132 may be coupled to switch fabric 110 via switch 114; multiple end hosts (such as host 136 and host 138) may be coupled to switch fabric 110 via switch 118; and IP / Ethernet network 134 may be coupled to switch fabric 110 via switch 120. HPC network 132 may include multiple networked computers and storage devices running programs simultaneously to perform different complex and performance-intensive tasks. IP / Ethernet network 134 may include application layer protocols between physical Ethernet cabling and IP-based network devices, including communication via Transport Communication Protocol (TCP) / IP and User Datagram Protocol (UDP) packets. Switch architecture 110 itself may be an Ethernet or HPC network.

[0020] Typically, a switch can have edge ports and fabric ports. Edge ports can be coupled to devices outside the fabric. Fabric ports can be coupled to another switch within the fabric via a fabric link. Traffic can typically be injected into switch fabric 110 via an ingress port of an edge switch and can leave switch fabric 110 via an egress port of another (or the same) edge switch. An ingress link can couple the NIC of an edge device (e.g., an HPC terminal host) to an ingress edge port of an edge switch. Switch fabric 110 can then send traffic to an egress edge switch, which can then forward the traffic to a destination edge device via another NIC. Packets can be forwarded within switch fabric 110 based on their Layer 2 address (“fab address”), which can be considered equivalent to a Media Access Control (MAC) address in Ethernet. The forwarding path of packets can be determined based on adaptive forwarding, for example, based on the local programming of the switches in switch fabric 110 and information related to the load, traffic, and congestion available and associated with switch fabric 110.

[0021] In some aspects, switch architecture 110 or HPC network 132 may include network devices (i.e., switches), including ingress network devices, intermediate or intermediate structure network devices, and egress or endpoint network devices. The switches in switch architecture 110 may include systems that perform operations associated with the ingress network devices, intermediate network devices, and egress network devices. For example, switch 118 may be an ingress network device for data originating from device 136 and destined for IP / Ethernet 134 (with switch 120 acting as an egress network device for such data), and switch 118 may also be an egress network device for data originating from IP / Ethernet 134 and destined for device 136 (with switch 120 acting as an ingress network device for such data). Additionally, the switches in switch architecture 110 may also include systems that perform operations associated with intermediate structure network devices. For example, switch 118 may be an intermediate network device for data originating from IP / Ethernet 134 and destined for HPC network 132, for example, via possible paths including switch 120 (acting as an ingress network device), switch 118 (acting as an intermediate network device), and switch 114 (acting as an egress network device). Therefore, a single switch can include a system that performs functions associated with ingress network devices, intermediate network devices, and egress network devices.

[0022] As another example, switch 120 (acting as ingress network device 120) can receive multiple data streams transmitted from IP / Ethernet network 134 (“source”) to HPC network 132 (“destination”). A stream may include multiple messages, and a message may include multiple data packets. Multiple data streams may be transmitted to egress network device 114 via, for example, intermediate network device 116. Upon receiving a stream, ingress network device 120 can determine the first data packet of the stream and store information associated with the stream in a data structure, including, where available, the number of remaining bytes (BR) to be transmitted in the stream. Ingress network device 120 can also receive additional messages for the stream. In response to receiving these additional messages, ingress network device 120 can increment the BR stored in the data structure. Ingress network device 120 can also receive ACKs corresponding to previously transmitted data packets of the stream. In response to receiving these corresponding ACKs, ingress network device 120 can decrement the BR stored in the data structure.

[0023] As described above, based on these data streams transmitted from the source to the destination, intermediate network device 116 can receive the streams and determine whether intermediate structure congestion is detected by generating load metrics for each port used by the streams. Based on the load metrics and other factors (e.g., comparison with a baseline threshold), intermediate network device 116 can determine intermediate structure congestion associated with the streams, and intermediate network device 116 can send a redirection ACK to ingress network device 120, indicating that the stream is a candidate for rerouting. In some aspects, the redirection ACK may include the generated load metrics and other information useful for decision-making at the ingress port.

[0024] Ingress network device 120 can identify candidate flows among multiple flows (e.g., based on receiving a redirect ACK indicating intermediate structure congestion from intermediate ports such as intermediate network devices 116 and 118). Ingress network device 120 can select the first flow to be rerouted from the candidate flows corresponding to the received redirect ACK (which indicates intermediate structure congestion) based on the corresponding number of remaining bytes (BR) to be transmitted in the flow.

[0025] Ingress network device 120 can select the first flow to be rerouted based on BR (e.g., by assigning a score or category to each candidate flow). In one aspect, ingress network device 120 can assign a score or category to a flow by calculating the Bandwidth-Delay Product (BDP) and comparing the BR to the BDP. The Bandwidth-Delay Product can be the product of the link bandwidth and the round-trip time associated with the flow's packets. For example, in a network with a bandwidth of 100 gigabytes per second (GB / s) and a round-trip time of 2.5 microseconds, the BDP can be expressed as: 100 GB / s * 2.5 microseconds = 250 kilobytes (KB). If the flow has a small amount of remaining data relative to the BDP (e.g., if the BR is less than 250 KB), ingress network device 120 can mark the flow as a weak candidate for rerouting (e.g., assigning a lower priority score). If a flow has a moderate amount of remaining data relative to the BDP (e.g., if the BR is between 250 KB and 2.5 MB), the ingress network device 120 can mark the flow as a moderate candidate for rerouting (e.g., assign a moderate priority score). If a flow has a large amount of remaining data relative to the BDP (e.g., if the BR is greater than 2.5 MB), the ingress network device 120 can mark the flow as a strong candidate for rerouting (e.g., assign a high priority score). Any number of categories can be used to represent the number of remaining bytes in the flow, different ranges of the BR compared to the BDP and other associated thresholds, etc.

[0026] The ingress network device 120 can also select the first flow to be rerouted based on other factors, including but not limited to: the amount of time elapsed since the most recently rerouted flow; a comparison of the load metric of the corresponding flow among multiple flows with the load metrics of other flows among multiple flows; or, if applicable, the difference between the load metrics corresponding to the same flow included in the received redirection ACK. Additionally, the factors used by the ingress network device 120 can be associated with the probability that the corresponding flow from multiple flows will be selected for rerouting. The probability can increase based on an increase in load (e.g., an increased explicit congestion avoidance (ECA) value returned in the redirection ACK) or an increase in packet size. For example, the system can select the first flow for rerouting based on the ECA value using a probabilistic model.

[0027] The ingress network device 120 can reroute the first flow to a new path and can also store information associated with the rerouted first flow, such as load metrics associated with the first flow, one or more redirect ACKs associated with the first flow, and the number of remaining bytes to be transmitted in the flow. The ingress network device 120 can use the stored information to determine subsequent candidate flows to be rerouted.

[0028] Figure 2The illustration depicts an environment that facilitates the selection of a flow to be rerouted based on the remaining bytes as an indicator, according to one aspect of this application. Environment 200 may include: ingress network devices 210, 220, 230, and 240; intermediate or intermediate structure network devices 212, 214, 216, 222, 224, 226, 232, 234, 236, 242, 244, and 246; and egress network devices 218, 228, 238, and 248. Environment 200 may be similar to... Figure 1 The network structure 110 can specifically have multiple paths for transmitting data from the ingress network device through one or more intermediate network devices to the egress network device. Data can be transmitted through environment 200 via multiple paths, for example: path 250 (indicated by solid lines), from network ingress 202 to network device 210 (via communication 250.1) to network device 222 (via communication 250.1) to network device 224 (via communication 250.2) to network device 226 (via communication 250.3) to network device 218 (via communication 250.4), and finally output to network egress 204 (via communication 250.5); path 280 (indicated by dashed lines), from network ingress 202 to network device 230 (via communication 280.0) to network device 232 (via communication 280.1) to network... Device 234 (via communication 280.2) to network device 236 (via communication 280.3) to network device 248 (via communication 280.4), and finally output to network egress 204 (via communication 280.5); and path 290 (indicated by alternating dotted lines), from network ingress 202 to network device 240 (via communication 290.0) to network device 242 (via communication 290.1) to network device 244 (via communication 290.2) to network device 246 (via communication 290.3) to network device 248 (via communication 290.4), and finally output to network egress 204 (via communication 290.5).

[0029] Additionally, data can be transmitted via path 260 (indicated by the thick solid line) from network ingress 202 to network device 220 (via communication 260.0), to network device 222 (via communication 260.1), to network device 224 (via communication 260.2), to network device 226 (via communication 260.3), to network device 218 (via communication 260.4), and finally output to network egress 204 (via communication 260.5).

[0030] During operation, intermediate network devices can detect intermediate structure congestion, and egress network devices can detect endpoint congestion when receiving packets from a flow. For example, when receiving packets from a flow on path 250 or 260, network device 222 (operating as an intermediate network device) can detect intermediate structure congestion 206 (indicated by a bold "X") related to the flow originating from ingress network devices 210 and 220. When receiving packets from a flow on path 280 or 290, network device 248 (operating as an egress network device) can detect endpoint congestion 208 (indicated by a bold "X") related to the flow originating from ingress network devices 230 and 240.

[0031] Because egress network device 248 detects endpoint congestion when the flows have already reached the network egress (related to flows originating from network devices 230 and 240 on paths 280 and 290, respectively), rerouting these flows will not help improve their performance. In this case, the system can instead slow down the flows that are causing congestion at the network ingress (e.g., at 202).

[0032] Conversely, since flows originating from network devices 210 and 220 have reached intermediate structure network device 222 but have not yet reached the network exit, rerouting these flows may improve performance. Furthermore, since rerouting flows can impact cost and performance, optimizing the selection of candidate flows to be rerouted can result in significant improvements in both cost and performance. For example, network device 222 can detect intermediate structure congestion 206 based on generated load metrics. Upon detecting intermediate structure congestion 206, network device 222 can send a redirection ACK to ingress network device 220 (via communication 265 to network device 220). In some aspects, network device 220 can be an intermediate network device that can send a redirection ACK to another ingress network device in network ingress 202 (e.g., via communication 266). Therefore, network device 220 (and the depicted ingress network devices 210, 230, and 240) can perform functions associated with both intermediate and endpoint network devices (as described above regarding...). Figure 1 (As described in switches 116 and 120).

[0033] Ingress network device 220 can receive redirection ACKs from intermediate network device 222 (via communication 265) indicating intermediate structure congestion 206 associated with a flow originating from network device 220 (on path 260). Ingress network device 220 can also receive additional redirection ACKs from other intermediate network devices indicating intermediate structure congestion associated with other flows on other paths (not shown). Each redirection ACK may include a load metric for the corresponding flow. Based on the received redirection ACKs, ingress network device 220 can identify multiple candidate flows and select a first flow to be rerouted from the candidate flows corresponding to the received redirection ACK (which indicates intermediate structure congestion) based on the corresponding remaining bytes (BR) to be transmitted in the flow. Ingress network device 220 can select the first flow to be rerouted based on the BR, including, for example, assigning a score or category to each candidate flow by comparing the BR with BDP and other associated thresholds, as described above. Figure 1 The entry network device 120 is described.

[0034] For example, ingress network device 220 can select a flow originating from ingress network device 220 (on “first path” 260) as the first flow to be rerouted. Ingress network device 220 can reroute this selected first flow from first path 260 to “new path” 270 (indicated by dashed lines), which runs from network ingress 202 to network device 220 (via communication 270.0), to network device 212 (via communication 270.1), to network device 214 (via communication 270.2), to network device 216 (via communication 270.3), to network device 218 (via communication 270.4), and finally outputs to network egress 204 (via communication 270.5). Ingress network device 220 can also store information associated with the rerouted first flow, such as load metrics associated with the first flow, one or more redirect ACKs associated with the first flow, and the number of remaining bytes to be transmitted in the flow. Ingress network device 220 can use the stored information to determine subsequent candidate flows to be rerouted.

[0035] Figure 3A The illustration depicts a direct method, according to one aspect of this application, for selecting the stream to be rerouted based on the remaining bytes as an indicator, using an extended header. Figure 3A In the process, the data packet 310 of the stream may include: an Ethernet header 318; an IPv6 header 316 (where the “nexthdr” field indicates that the following is a transport protocol, such as Transmission Control Protocol (TCP), as indicated by element 330); a transport header 314; and a payload 312. The described aspects can be used as follows: Figure 3AThe depicted IPv6 extension header, wherein the flow packet 320 may include: an Ethernet header 328; an IPv6 header 326 (where the “nexthdr” field indicates that a new extension header follows, as indicated by element 334); an extension header 320; a transport header 324; and a payload 322. In IPv6, the extension header 320 can be used to describe the size of the remaining flow. The extension header 320 field may have its own “nexthdr” field, as indicated by element 332, which indicates that a transport header (e.g., TCP) follows.

[0036] Figure 3B The illustration depicts a direct method, according to one aspect of this application, for selecting the stream to be rerouted based on the remaining bytes as an indicator using an options field. Figure 3B In the stream, data packets 350 may include: an Ethernet header 358; an IPv4 header 356; a transport header 354; and a payload 352. The described aspects can be used as follows: Figure 3B The depicted options field in IPv64, wherein the packet 360 of the flow may include: an Ethernet header 368; an IPv4 header 366 (wherein the header length may be increased to cover the following "option fields," as indicated by element 374); an options field 360; a transport header 364; and a payload 362. In IPv4, the options field 360 may be used to describe the size of the remaining flow, as indicated by element 372.

[0037] Figure 4A A flowchart 400 illustrates a method for selecting a stream to be rerouted based on remaining bytes as an indicator, according to one aspect of this application. During operation, the system receives the first data packet of the stream through an ingress port in the network structure (operation 402). For example, in Figure 1 In this context, switch 120, acting as the ingress port in network structure 110, can receive the first data packets of a flow, as described above regarding the data flow from IP / Ethernet network 134 (as the source) to HPC network 132 (as the destination). As another example, Figure 2 The ingress network device 220 can receive multiple streams (e.g., as indicated by communications 260.0 and 270.0).

[0038] The system determines the number of remaining bytes to be transmitted in the stream (Operation 404). (As mentioned above...) Figure 3A and Figure 3B As described, the ingress network device can directly obtain the BR (e.g., from the first packet, header, extended header, option fields, transport layer, software-dependent components, hardware-dependent components, or NIC of a message in the stream). For example... Figure 2The ingress network device 220 can directly obtain the BR from, for example, the first data packet of the message indicated by communication 260.0. The ingress network device can also obtain the BR indirectly (e.g., by inferring from historical flow analysis or by learning behavior associated with similar traffic or flows from network management software). For example, Figure 1 The ingress network device 120 can indirectly obtain the BR (Browser Response) based on historical analysis of the stream (including by inferring the number or range of remaining bytes in previously recorded streams that may be similar to the received stream). The ingress network device 120 can also indirectly obtain the BR by using a tool that learns and analyzes historical data associated with similar streams from previous records, and this tool can provide the BR to the ingress network device 120 based on the analysis. This tool can be, for example, a machine learning model, any artificial intelligence (AI) based system, a product that provides query results based on the analysis of historical data, etc.

[0039] The system stores the remaining number of bytes to be transmitted in the stream in a data structure (operation 406). For example, the ingress port can store the BR in a per-port data structure.

[0040] The system updates the number of remaining bytes in the stream in response to receiving an additional message for the stream from the source of the stream and an acknowledgment (ACK) corresponding to a previously transmitted data packet of the stream from the destination of the stream. If the system receives an additional message for the stream from the source of the stream (decision 408), the system updates the number of remaining bytes to be transmitted in the stream by adding the number of remaining bytes to be transmitted to the data structure (operation 410). For example, if the ingress network device 220 receives another message corresponding to the data stream (e.g., via communication 260.0), the ingress network device 220 may increase the stored BR based on the number of remaining bytes, whether obtained directly from the additional message or indirectly from another source or by other means.

[0041] If the system does not receive additional messages for the stream from its source (decision 408), and if the system receives an ACK corresponding to a previously transmitted data packet of the stream from its destination (decision 412), the system updates the number of remaining bytes to be transmitted in the stream by reducing the number of remaining bytes to be transmitted in the data structure (operation 412). For example, if the ingress network device 220 receives an ACK (not shown) corresponding to a previously transmitted data packet of the stream, the ingress network device 220 can reduce the stored BR based on the number of remaining bytes calculated based on the received corresponding ACK. Decisions 408 and 412, and the corresponding operations 410 and 414, can occur in the order depicted, in parallel, in a different order, or independently of each other. Figure 4B Continue at label A.

[0042] Figure 4BA flowchart 420 illustrates a method for selecting flows to be rerouted based on remaining bytes as indicators, according to one aspect of this application. The system identifies multiple candidate flows to be rerouted based on intermediate structure congestion detected by intermediate ports in the network structure (operation 422). For example, ingress network device 120 may identify candidate flows based on redirection ACKs received from intermediate switches 116 and 118, as described above. Figure 1 As described, the ingress network device 120 can also identify candidate flows based on information tracked, maintained, obtained, or calculated by the ingress network device 120.

[0043] The system selects a first stream from candidate streams based on the number of remaining bytes in the stream; the first stream is associated with the first path (operation 424). Ingress network device (e.g., ...) Figure 2 The ingress network device 220 can select the first stream based on a comparison of the remaining bytes in the stream with the bandwidth-delay product (BDP), as described above. Figure 1 and Figure 2 As described. Ingress network devices (such as...) Figure 1 The 120 in the example can also select a first stream based on a quantification of values ​​(e.g., two or more categories representing different ranges of the number of remaining bytes in the stream), where the corresponding category corresponds to a priority level assigned to the stream that is associated with the corresponding range of the number of remaining bytes in the stream. As an example, Figure 1 The ingress network device 120 can select the first flow to be rerouted in the following manner: if the BR is less than a first predetermined threshold (e.g., the BDP itself or the BDP minus another number), the ingress network device 120 can choose to label or assign a lower priority to the corresponding candidate flow, because rerouting such a flow (the flow with a lower BR) may not cause a significant improvement in performance and cost (i.e., a small impact); while if the BR is greater than a second predetermined threshold (e.g., the BDP itself or the BDP plus another number), the ingress network device 120 can choose to label or assign a higher priority to the corresponding candidate flow, because rerouting such a flow (the flow with a high BR) can cause a significant improvement in performance and cost (i.e., a larger impact).

[0044] Additionally, the ingress network devices (e.g., respectively in) Figure 1 and Figure 2 The BR (or 220 in the ingress network device) can select the first flow to be rerouted from the candidate flows based on a combination of other information available to the ingress network device. The ingress network device can also apply pseudo-random selection to flows that are marked as good candidates for rerouting (e.g., those assigned higher priority) and can further assign higher rerouting probabilities to these flows.

[0045] The system reroutes the first flow from the first path to the new path (operation 426), as described above regarding the data flow from the ingress network device 220 associated with the "first path" 260 as the first path and the data flow from the ingress network device 220 associated with the "new path" 270.

[0046] Therefore, by using the number of remaining bytes (BR) to be transmitted in a stream as an indicator of when to reroute a stream in the network structure, the described aspects provide a mechanism by which ingress network devices can perform the optimal selection of which candidate streams to reroute, which can lead to significant performance improvements and a more efficient overall system.

[0047] Figure 5 The illustration depicts a computer system 500 that facilitates the selection of a stream to be rerouted based on remaining bytes as an indicator, according to one aspect of this application. The computer system 500 includes a processor 502, a memory 504, and a storage device 506. The memory 504 may include volatile memory (e.g., random access memory (RAM)) that serves as managed memory and can be used to store one or more memory pools. Furthermore, the computer system 500 may be coupled to peripheral I / O user equipment 510 (e.g., a display device 511, a keyboard 512, and a pointing device 513). The storage device 506 includes a non-transitory computer-readable storage medium and stores an operating system 516, instructions 518, and data 532. The computer system 500 may include a processor 502, a memory 504, and a storage device 506. Figure 5 The entities or instructions shown are fewer or more entities or instructions.

[0048] When executed by computer system 500, instruction 518 may cause computer system 500 to perform the methods and / or processes described in this disclosure, for example, including computer system 500 operating as an ingress network device. Specifically, instruction 518 may include instruction 520 for receiving a first data packet of a stream through an ingress port, as described above respectively regarding Figure 1 and Figure 2 The ingress network devices 120 and 220 and Figure 4A As described in operation 402.

[0049] Instruction 518 may include instruction 522 for storing the number of remaining bytes to be transferred in the stream within a data structure. (The above is about...) Figure 4A Operation 404 describes determining the number of remaining bytes to be transmitted in the stream, while the above text regarding... Figure 4A Operation 406 describes the number of bytes to be stored.

[0050] Instruction 518 may include instruction 524 for updating the number of remaining bytes in the stream in response to receiving additional messages about the stream from the source of the stream and receiving ACKs from the destination of the stream corresponding to previously transmitted packets of the stream, as described above regarding... Figure 4A Decision 408, Operation 410, Decision 412 and Operation 414, and regarding respectively in Figure 1 and Figure 2 The operation of the ingress network devices 120 and 220 is described.

[0051] Instruction 518 may include instruction 526 for identifying multiple candidate flows to be rerouted based on intermediate structure congestion detected by intermediate ports, as described above regarding... Figure 4B The operation described in 422.

[0052] Instruction 518 may include instruction 528 for selecting a first-order stream from candidate streams based on the corresponding number of remaining bytes in the stream, the first stream being associated with a first path, as described above regarding... Figure 4B Operation 424 is described.

[0053] Instruction 518 may include instruction 530 for rerouting the first stream to a new path, as described above regarding... Figure 4B The operation described in 426.

[0054] Instruction 518 may include more than Figure 5 The instructions shown are further instructions. For example, instruction 518 may include instructions for performing the operations described above with respect to the following: Figure 1 and Figure 2 The environment; Figures 4A to 4B The operations depicted in the flowchart; and Figure 6 The instructions in CRM 600.

[0055] Data 532 may include any data that is required as input or generated as output by the methods, operations, communications and / or processes described in this disclosure. Specifically, data 532 may store at least: a stream; the data of the stream; information associated with the stream or its packets; a load metric; the number of remaining bytes to be transmitted in the stream; additional messages or packets previously received from the stream; ACKs corresponding to previously transmitted packets of the stream; indicators of intermediate structure congestion; load metrics or other information associated with a port or link; a BDP; the result of comparing the BR with the BDP; one or more predetermined or pre-configured thresholds; a category; a score or ranking or order; an assigned weight or priority; a redirection ACK; a redirection ACK corresponding to the stream and including a load metric; multiple candidate streams; the selected stream among multiple candidate streams; a first path; the original path; the same path; a new path; a path used to reroute the stream; a data structure; entries in the data structure; the probability of selecting a stream for rerouting; a factor; a header; an extended header; options; indicators of the transport layer, software-related components, or hardware-related components or the NIC; the size of the packets; the product of the load and the packet size; bandwidth consumption; the amount of data pending in the output or input buffers; and information received from the NIC or associated with the state of the stream.

[0056] Figure 6 The illustration depicts a computer-readable medium (CRM) 600, according to one aspect of this application, that facilitates the selection of a stream to be rerouted based on remaining bytes as an indicator. The CRM 600 may be a non-transitory computer-readable medium or device storing instructions that, when executed by a computer or processor, cause the computer or processor to perform a method. The CRM 600 may store instructions 610 for receiving a first data packet of the stream through an ingress port, as described above regarding... Figure 1 and Figure 2 The ingress network devices 120 and 220 and Figure 4A As described in operation 402.

[0057] The CRM 600 can store instructions 620 for storing the number of remaining bytes to be transmitted in the stream within a data structure. (The above is about...) Figure 4A Operation 404 describes determining the number of remaining bytes to be transmitted in the stream, while the above text regarding... Figure 4A Operation 406 describes the number of bytes to be stored.

[0058] The CRM 600 can store instructions 630 for updating the number of remaining bytes in the stream in response to receiving additional messages about the stream from the source of the stream and receiving ACKs from the destination of the stream corresponding to previously transmitted data packets of the stream, as described above. Figure 4A Decision 408, Operation 410, Decision 412 and Operation 414, and regarding respectively in Figure 1and Figure 2 The operation of the ingress network devices 120 and 220 is described.

[0059] The CRM 600 can store instructions 640 for identifying multiple candidate flows to be rerouted based on intermediate structure congestion detected by intermediate ports, as described above. Figure 4B The operation described in 422.

[0060] CRM 600 can store instructions 650 for selecting a first-order stream from candidate streams based on the corresponding number of remaining bytes in the stream, wherein the first-order stream is associated with a first path, as described above regarding... Figure 4B Operation 424 is described.

[0061] CRM 600 can store instructions 660 for rerouting the first stream to a new path, as mentioned above. Figure 4B The operation described in 426.

[0062] CRM 600 can include more Figure 6 The instructions shown are further instructions. For example, the CRM 500 can also store instructions for performing the operations described above with respect to the following: Figure 1 and Figure 2 The environment; Figures 4A to 4B The operations depicted in the flowchart; and Figure 5 The instructions of computer system 500.

[0063] The term "network device" refers to any device, component, or computing entity that can provide a communication channel for data packets sent from a "processing node" or "endpoint node." A processing node or endpoint node can refer to a device, component, or hardware component that can operate as a source or destination of data, including, for example, control packets or data packets. Network devices can include ingress network devices, intermediate or intermediate structure network devices, or egress or endpoint network devices. An example of a network device can be a switch, as described above. Figure 1 As described herein, a processing node or endpoint node may include an ingress node (which is the endpoint from which data is returned from a request) or an egress node (which is the endpoint from which data is sent from a request). Additionally, a network device may operate or perform the functions of an ingress network device, intermediate network device, or egress network device as described herein. An ingress node may be connected to an ingress port of the network, and an egress node may be connected to an egress port of the network.

[0064] In general, the disclosed aspects provide a computing system, method, and computer-readable medium that facilitates the selection of a stream to be rerouted based on the remaining bytes as an indicator. The system receives a first data packet of a stream through an ingress port in a network structure. The system stores the number of remaining bytes to be transmitted in the stream in a data structure. The system updates the number of remaining bytes in the stream in response to receiving additional messages about the stream from its source and acknowledgments (ACKs) corresponding to previously transmitted data packets of the stream from its destination. The system identifies multiple candidate streams to be rerouted based on intermediate structure congestion detected by intermediate ports in the network structure. The system selects a first stream from the candidate streams based on the corresponding number of remaining bytes in the stream, the first stream being associated with a first path. The system reroutes the first stream from the first path to a new path.

[0065] In this variation, the system determines the number of remaining bytes in the stream based on information obtained from at least one of the following: the first data packet; the header; the extended header; the IP options; the transport layer header; software-related components or hardware-related components; or the network interface controller (NIC).

[0066] In a further variation of this approach, the system determines the number of remaining bytes in the stream based on information inferred from historical data associated with the stream.

[0067] In a further variation, the system updates the number of remaining bytes in the stream by: increasing the number of remaining bytes in the data structure in response to receiving an additional message for the stream; and decreasing the number of remaining bytes in the data structure in response to receiving an ACK corresponding to a previously transmitted data packet of the stream.

[0068] In a further variant, the system further identifies multiple candidate flows to be rerouted based on the redirection ACK received from the intermediate port.

[0069] In a further variation, the system further selects a first stream from the candidate streams based on at least one of the following: a comparison of the number of remaining bytes in the stream with the bandwidth-delay product, wherein the bandwidth-delay product includes the network bandwidth and the round-trip time associated with the data packet; or two or more categories representing different ranges of the number of remaining bytes in the stream, wherein the corresponding category corresponds to a priority level assigned to the stream that is associated with the corresponding range of the number of remaining bytes in the stream.

[0070] In a further variation, the system selects a first stream from the candidate streams based on a combination of the number of remaining bytes in the stream and the information available at the ingress port.

[0071] In a further variation, the system selects a first stream from the candidate streams by: marking the corresponding stream as a poor candidate for rerouting in response to the number of bytes being less than a first predetermined threshold; and marking the corresponding stream as a good candidate for rerouting in response to the number of bytes being greater than a second predetermined threshold.

[0072] In a further variation, the system applies pseudo-random selection to flows marked as good candidates for rerouting. The system assigns a higher rerouting probability to flows marked as good candidates for rerouting.

[0073] On the other hand, a computing system operates in a network structure including an ingress port and intermediate ports. The computing system includes processing resources and a storage device for storing instructions, which, when executed by the processing resources, include the instructions. These instructions are used to receive a first data packet of a stream through the ingress port. These instructions are further used to store the number of remaining bytes to be transmitted in the stream in a data structure. These instructions are further used to update the number of remaining bytes in the stream in response to receiving an additional message about the stream from the source of the stream and an ACK corresponding to a previously transmitted data packet of the stream from the destination of the stream. These instructions are further used to identify multiple candidate streams to be rerouted based on intermediate structure congestion detected by the intermediate ports. These instructions are further used to select a first stream from the candidate streams based on the corresponding number of remaining bytes in the stream, the first stream being associated with a first path. These instructions are further used to reroute the first stream to a new path. The computing system may also include additional instructions associated with: Figure 1 and Figure 2 The environment; Figures 4A to 4B The operations depicted in the flowchart; and Figure 6 The instructions in CRM 600.

[0074] On the other hand, a non-transitory computer-readable storage medium (or CRM) stores instructions for receiving a first data packet of a stream through an ingress port. These instructions are further configured to store the number of remaining bytes to be transmitted in the stream in a data structure. These instructions are further configured to update the number of remaining bytes in the stream in response to receiving an additional message for the stream from its source and an ACK corresponding to a previously transmitted data packet from its destination. These instructions are further configured to identify multiple candidate streams to be rerouted based on intermediate structure congestion detected by an intermediate port. These instructions are further configured to select a first stream from the candidate streams based on the corresponding number of remaining bytes in the stream, the first stream being associated with a first path. These instructions are further configured to reroute the first stream to a new path. The CRM may also store instructions for performing the operations described above with respect to the following: Figure 1 and Figure 2 The environment; Figures 4A to 4B The operations depicted in the flowchart; and Figure 5The instructions of computer system 500.

[0075] The foregoing description is presented to enable any person skilled in the art to make and use the aspects and examples, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed aspects will be apparent to those skilled in the art, and the general principles defined herein can be applied to other aspects and applications without departing from the spirit and scope of this disclosure. Therefore, the aspects described herein are not limited to those shown, but are intended to be consistent with the maximum scope of the principles and features disclosed herein.

[0076] Furthermore, the foregoing descriptions of the various aspects have been presented solely for illustrative and descriptive purposes. These descriptions are not intended to be exhaustive or to limit the aspects described herein to the disclosed forms. Accordingly, many modifications and variations will be apparent to those skilled in the art. Additionally, the foregoing disclosure is not intended to limit the aspects described herein. The scope of the aspects described herein is defined by the appended claims.

Claims

1. A computer-implemented method, comprising: Receive the first data packet of the stream through the ingress port in the network structure; Store the remaining number of bytes to be transmitted in the stream in a data structure; The remaining byte count in the stream is updated in response to receiving additional messages about the stream from the source of the stream and receiving an acknowledgment (ACK) corresponding to previously transmitted data packets of the stream from the destination of the stream; Multiple candidate flows to be rerouted are identified based on intermediate structure congestion detected by intermediate ports in the network structure. A first stream is selected from the candidate streams based on the corresponding number of remaining bytes in the stream, and the first stream is associated with a first path; as well as The first flow is rerouted from the first path to the new path.

2. The method of claim 1, further comprising: The number of remaining bytes in the stream is determined based on information obtained from at least one of the following: The first data packet; Header; Extend the header; Internet Protocol (IP) options; Transport layer header; Software-related components or hardware-related components; or Network Interface Controller (NIC).

3. The method of claim 1, further comprising: The number of remaining bytes in the stream is determined based on information inferred from historical data associated with the stream.

4. The method of claim 1, wherein, Updating the number of remaining bytes in the stream includes: In response to receiving the additional message from the stream, the remaining byte count is incremented in the data structure; and In response to receiving an ACK corresponding to the previously transmitted data packet of the stream, the remaining number of bytes in the data structure is reduced.

5. The method as described in claim 1, in, The multiple candidate flows to be rerouted are further identified based on the redirection ACKs received from the intermediate port.

6. The method of claim 1, wherein, The first stream is further selected from the candidate streams based on at least one of the following: The comparison result of the number of remaining bytes in the stream with the bandwidth-delay product, Wherein, the bandwidth-delay product includes the product of the network bandwidth and the round-trip time associated with the data packet; or Two or more categories representing different ranges of the number of remaining bytes in the stream. The corresponding category corresponds to the priority level assigned to the stream that is associated with a corresponding range of the number of remaining bytes in the stream.

7. The method of claim 1, wherein, The first stream is further selected from the candidate streams based on the following: The combination of the number of remaining bytes in the stream and the information available at the ingress port.

8. The method of claim 1, wherein, Selecting the first stream from the candidate streams includes: In response to the number of bytes being less than a first predetermined threshold, the corresponding stream is marked as a bad candidate for rerouting; and In response to the number of bytes exceeding a second predetermined threshold, the corresponding stream is marked as a good candidate for rerouting.

9. The method of claim 8, further comprising: Apply pseudo-random selection to flows that are marked as good candidates for rerouting; as well as A higher rerouting probability is assigned to the flow that is marked as a good candidate for rerouting.

10. A computing system operating in a network structure including an ingress port and intermediate ports, the computing system comprising: Processing resources; as well as A storage device that stores instructions, which, when executed by the processing resource, include instructions for performing the following operations: Receive the first data packet of the stream through the ingress port; Store the remaining number of bytes to be transmitted in the stream in a data structure; The remaining byte count in the stream is updated in response to receiving additional messages about the stream from the source of the stream and receiving an acknowledgment (ACK) corresponding to previously transmitted data packets of the stream from the destination of the stream; Multiple candidate flows to be rerouted are identified based on the intermediate structure congestion detected by the intermediate port. A first stream is selected from the candidate streams based on the corresponding number of remaining bytes in the stream, and the first stream is associated with a first path; as well as The first stream is rerouted to the new path.

11. The computing system of claim 10, wherein, The instruction is further used for: The number of remaining bytes in the stream is determined based on information obtained from at least one of the following: The first data packet; Header; Extend the header; Internet Protocol (IP) options; Transport layer header; Software-related components or hardware-related components; or Network Interface Controller (NIC).

12. The computing system of claim 10, wherein, The instruction is further used for: The number of remaining bytes in the stream is determined based on information inferred from historical data associated with the stream.

13. The computing system of claim 10, wherein, The instruction is further used for: The remaining number of bytes in the stream is updated in the following manner: In response to receiving the additional message from the stream, the remaining number of bytes is incremented in the data structure; as well as In response to receiving an ACK corresponding to the previously transmitted data packet of the stream, the remaining number of bytes in the data structure is reduced.

14. The computing system of claim 10, wherein, The instruction is further used for: The first stream is further selected from the candidate streams based on at least one of the following: The comparison result of the number of remaining bytes in the stream with the bandwidth-delay product, Wherein, the bandwidth-delay product includes the product of the network bandwidth and the round-trip time associated with the data packet; or Two or more categories representing different ranges of the remaining byte count, The corresponding category corresponds to the priority level assigned to the stream that is associated with a corresponding range of the number of remaining bytes in the stream.

15. The computing system of claim 10, wherein, The instruction is further used for: The first stream is further selected from the candidate streams based on a combination of the number of remaining bytes in the stream and the information available at the ingress port.

16. The computing system of claim 10, wherein, The instruction is further used for: The first stream is selected from the candidate streams in the following manner: In response to the number of bytes being less than a first predetermined threshold, the corresponding stream is marked as a bad candidate for rerouting; as well as In response to the number of bytes exceeding a second predetermined threshold, the corresponding stream is marked as a good candidate for rerouting.

17. The computing system of claim 16, wherein, The instruction is further used for: Apply pseudo-random selection to flows that are marked as good candidates for rerouting; and A higher rerouting probability is assigned to the flow that is marked as a good candidate for rerouting.

18. A non-transitory computer-readable medium storing instructions, said instructions comprising, when executed by at least one processing resource, instructions for performing the following operations: Receive the first data packet of the stream through the ingress port; Store the remaining number of bytes to be transmitted in the stream in a data structure; The remaining number of bytes in the stream is updated in response to receiving additional messages about the stream from the source of the stream and receiving an acknowledgment (ACK) corresponding to the previously transmitted data packets of the stream from the destination of the stream; Multiple candidate flows to be rerouted are identified based on intermediate structure congestion detected by intermediate ports; A first stream is selected from the candidate streams based on the corresponding number of remaining bytes in the stream, wherein the first stream is associated with a first path; as well as The first stream is rerouted to the new path.

19. The non-transitory computer-readable medium of claim 18, wherein, The instruction is further used for: The number of remaining bytes in the stream is determined based on information obtained from at least one of the following: The first data packet; Header; Extend the header; Internet Protocol (IP) options; Transport layer header; Software-related components or hardware-related components; Network Interface Controller (NIC); or Information inferred from historical data associated with the stream.

20. The non-transitory computer-readable medium of claim 18, wherein, The instruction is further used for: The first stream is further selected from the candidate streams based on at least one of the following: The comparison result of the number of remaining bytes in the stream with the bandwidth-delay product, Wherein, the bandwidth-delay product includes the product of the network bandwidth and the round-trip time associated with the data packet; or The comparison result of the remaining byte count with the upper and lower thresholds; or Two or more categories representing different ranges of the remaining byte count, The corresponding category corresponds to the priority level assigned to the stream that is associated with a corresponding range of the number of remaining bytes in the stream.