Network routing processing method, related apparatus and medium
By generating candidate port number groups by allocating a set of available port numbers to switching nodes in the switching network, the congestion problem of fixed data transmission paths between network devices is solved, and more efficient data transmission path selection is achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- TENCENT TECHNOLOGY (SHENZHEN) CO LTD
- Filing Date
- 2024-12-19
- Publication Date
- 2026-06-23
AI Technical Summary
In existing technologies, the data transmission path between network devices is fixed, which makes network congestion prone to occur when the amount of data changes. Furthermore, existing solutions such as random path switching or congestion control algorithms cannot effectively improve transmission efficiency.
By assigning a set of available port numbers to each switching node in the switching network, a candidate port number group is generated. The target path is determined based on the detection results, avoiding fixed path selection and improving the accuracy and efficiency of path selection.
It improves the data transmission efficiency between network devices, reduces congestion issues despite multiple routing attempts, and ensures efficient and accurate data transmission.
Smart Images

Figure CN122268791A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the field of computer technology, and in particular to a network routing processing method, related apparatus and medium. Background Technology
[0002] Currently, data transmission between network devices often relies on switching networks. Switching networks are typically composed of multiple layers of switches. Data packets from the source network device pass through these multiple layers of switches to reach the destination network device.
[0003] In a switched network, the transmission path between any two network devices is generally fixed. This is because switching nodes typically select routes based on the five-tuple (source address, destination address, source port, destination port, and protocol number) carried in the data packet. Since the five-tuple of a data packet is usually fixed, the transmission path is also fixed. However, the amount of data to be transmitted along the same path often varies. Therefore, when the amount of data to be transmitted along the path between the source and destination network devices is large, a certain delay will occur, which is often considered network congestion. One approach to this situation is not to re-route even when network congestion occurs, leading to low network efficiency; another approach is to randomly switch to a new transmission path. However, this random switching has a certain degree of randomness, and multiple switching attempts may still fail to find a good path. Data transmission efficiency remains low. Summary of the Invention
[0004] This disclosure provides a network routing processing method, related apparatus, and medium that can improve the data transmission efficiency between network devices.
[0005] According to one aspect of this disclosure, a network routing processing method is provided, executed by a first network device, the first network device communicating with a second network device through multiple switching nodes in a switching network, the method comprising:
[0006] Determine multiple connection paths between the first network device and the second network device;
[0007] For each switching node on the connection path, obtain the outgoing port number group corresponding to the outgoing port of the switching node. For each switching node in the switching network, the available port numbers in the available port number set are pre-assigned to each outgoing port of the switching node, and the available port numbers assigned to each outgoing port form the outgoing port number group.
[0008] Candidate port number groups are generated based on the intersection of the outgoing port number groups of each switching node on the connection path;
[0009] Using the candidate port number in the candidate port number group as the source port number, a first probe packet is sent to obtain the probe result, and the target path to the second network device is determined based on the probe result, so that the first network device can communicate with the second network device through multiple switching nodes in the target path.
[0010] According to one aspect of this disclosure, a network routing processing apparatus is provided, executed by a first network device, the first network device communicating with a second network device through a plurality of switching nodes in a switching network, the apparatus comprising:
[0011] The determining unit is used to determine multiple connection paths between the first network device and the second network device;
[0012] The acquisition unit is used to acquire the outgoing port number group corresponding to the outgoing port of each switching node on the connection path. Specifically, for each switching node in the switching network, the available port numbers in the available port number set are pre-assigned to each outgoing port of the switching node, and the available port numbers assigned to each outgoing port form the outgoing port number group.
[0013] The generation unit is used to generate a candidate port number group based on the intersection of the outgoing port number groups of each switching node on the connection path;
[0014] The processing unit is configured to send a first probe packet using the candidate port number in the candidate port number group as the source port number, obtain the probe result, and determine the target path to the second network device based on the probe result, so that the first network device can communicate with the second network device through multiple switching nodes in the target path.
[0015] Optionally, the determining unit includes:
[0016] The first determining module is used to determine the network congestion characterization parameters of the source connection path relied upon by the first network device when communicating with the second network device in the current detection period.
[0017] The second determining module is used to determine multiple connection paths between the first network device and the second network device if network congestion is determined to exist in the source connection path based on the network congestion characterization parameters.
[0018] Optionally, the second determining module is used to:
[0019] Obtain the data transmission status parameters of the source connection path in the previous detection cycle relative to the current detection cycle;
[0020] Based on the data transmission status parameters of the previous detection period and the network congestion characterization parameters, the data transmission status parameters of the current detection period are determined.
[0021] If the data transmission status parameter of the current detection period is less than the first threshold, then it is determined that there is network congestion in the source connection path.
[0022] Optionally, the network congestion characterization parameters include an outgoing port congestion window, and the data transmission status parameters include a moving average window;
[0023] The step of determining the data transmission status parameters for the current detection period based on the data transmission status parameters of the previous detection period and the network congestion characterization parameters includes: performing a weighted calculation on the moving average window of the previous detection period and the outgoing port congestion window to obtain the moving average window for the current detection period.
[0024] The step of determining that the source connection path is congested if the data transmission status parameter of the current detection period is less than the first threshold includes: determining that the source connection path is congested if the sliding average window of the current detection period is less than the product of the maximum sliding window and the window threshold coefficient.
[0025] Optionally, the network congestion characterization parameter includes the data transmission rate, and the data transmission status parameter includes the average data transmission rate;
[0026] The step of determining the data transmission status parameters of the current detection period based on the data transmission status parameters of the previous detection period and the network congestion characterization parameters includes: performing a weighted calculation on the average data transmission rate of the previous detection period and the data transmission rate to obtain the average data transmission rate of the current detection period.
[0027] The step of determining that the source connection path is congested if the data transmission status parameter of the current detection period is less than the first threshold includes: determining that the source connection path is congested if the average data transmission rate of the current detection period is less than the product of the maximum data transmission rate and the rate threshold coefficient.
[0028] Optionally, the group of output port numbers for each output port of the switching node is determined by the controller in the switching network in the following manner:
[0029] The retrieval module is used to retrieve the available port number from the set of available port numbers;
[0030] The generation module is used to generate a second probe packet based on the available port number, the first device address of the first network device, and the second device address of the second network device;
[0031] The digest module is used to perform digest calculation based on a preset seed and the second probe packet using a preset digest algorithm to obtain the digest result corresponding to the available port number;
[0032] The modulo module is used to perform a modulo operation based on the summary result and the number of nodes connected to the next-layer exchange node of the exchange node to obtain the target remainder;
[0033] The third determining module is used to determine, based on the target remainder, one output port corresponding to the available port number among the multiple output ports of the switching node;
[0034] The grouping module is used to group multiple available port numbers corresponding to the same outgoing port into the same group after all available port numbers in the set of available port numbers have been traversed, so as to obtain the outgoing port number group corresponding to each outgoing port of the switching node.
[0035] Optionally, the plurality of switching nodes include at least one access layer switch connected to the first network device and at least one aggregation layer switch connected to the at least one access layer switch; the number of nodes includes a first sub-number of the at least one access layer switch and a second sub-number of the at least one aggregation layer switch; the preset seed includes a first seed and a second seed, and the preset digest algorithm includes a first digest algorithm and a second digest algorithm;
[0036] The summary module is used for:
[0037] Based on the first seed and the second probe packet, a digest operation is performed using the first digest algorithm to obtain a first result corresponding to the available port number; based on the second seed and the second probe packet, a digest operation is performed using the second digest algorithm to obtain a second result corresponding to the available port number.
[0038] The mold-taking module is used for:
[0039] Based on the first result and the first number of sub-sub ...
[0040] The third determining module is used for:
[0041] Based on the first remainder, determine an output port corresponding to the available port number for connecting to the access layer switch; based on the second remainder, determine an output port corresponding to the available port number for connecting to the aggregation layer switch.
[0042] Optionally, the processing unit is used for:
[0043] For each candidate port number group, determine the path to be examined that the candidate port number group points to;
[0044] Based on the path number of the path to be examined, candidate connection paths are determined among multiple paths to be examined.
[0045] For each candidate connection path, the first probe packet is sent using the candidate port number in the candidate port number group corresponding to the candidate connection path as the source port number, and the probe result of the candidate connection path is obtained.
[0046] Optionally, when the first network device communicates with the second network device, it depends on the source connection path among the multiple connection paths;
[0047] The process of determining candidate connection paths from multiple paths to be examined based on the path number of the path to be examined includes:
[0048] Determine the first path number of the source connection path;
[0049] Among the multiple paths to be examined whose path number is greater than the first path number, the path number difference between each path to be examined and the source connection path is determined based on the first path number and the path number.
[0050] Based on the path sequence difference and a preset number, the candidate connection path is determined from the plurality of paths to be examined.
[0051] Optionally, the processing unit is used for:
[0052] The extraction module is used to extract a candidate port number from the candidate port number group as the source port number for the connection path corresponding to the candidate port number group, and determine the path sequence number of the connection path.
[0053] The probe packet generation module is used to generate a first probe packet based on the source port number and the path sequence number;
[0054] The detection module is used to send the first detection packet and perform load probing on the switching nodes on the connection path corresponding to the candidate port number group through the first detection packet, so as to obtain the detection result of the connection path corresponding to the candidate port number group.
[0055] Optionally, the probe packet generation module is used for:
[0056] Initialize the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the outgoing port communication queue corresponding to the connection path to 0, so as to obtain the initial load information;
[0057] Determine the first device address of the first network device, the second device address of the second network device, and the destination port number that the first network device and the second network device rely on when communicating;
[0058] The first device address, the second device address, the path number, the source port number, the destination port number, and the initial load information are packaged into a first probe packet, and the probe flag corresponding to the first probe packet is set to a first value.
[0059] Optionally, the detection module is used for:
[0060] Determine the detection order of the switching nodes on the connection path;
[0061] Based on the detection order, the first detection packet is sequentially sent to the switching nodes on the connection path, so that each switching node on the connection path updates the outgoing port bottleneck bandwidth utilization rate with the outgoing port bandwidth utilization rate when the outgoing port bandwidth utilization rate of the switching node is greater than the outgoing port bottleneck bandwidth utilization rate, and updates the outgoing port bottleneck queue length with the outgoing port communication queue length when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length. When the second network device receives the first detection packet, it generates a target data packet based on the outgoing port bottleneck bandwidth utilization rate and the outgoing port bottleneck queue length, and sends the target data packet to the first network device.
[0062] The target data packet is received, and the detection result of the connection path is determined based on the outgoing port bottleneck queue length and outgoing port bottleneck bandwidth utilization recorded in the target data packet.
[0063] Optionally, when the outgoing port bandwidth utilization of the switching node is greater than the outgoing port bottleneck bandwidth utilization, each switching node in the connection path updates the outgoing port bottleneck bandwidth utilization with the outgoing port bandwidth utilization, and when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length, updates the outgoing port bottleneck queue length with the outgoing port communication queue length, including:
[0064] Extract the destination port number and probe marker from the first probe packet;
[0065] The destination port number and the probe marker are first verified;
[0066] In response to the first verification being passed, each switching node in the connection path updates the outgoing port bottleneck bandwidth utilization rate with the outgoing port bandwidth utilization rate when the outgoing port bandwidth utilization rate of the switching node is greater than the outgoing port bottleneck bandwidth utilization rate, and updates the outgoing port bottleneck queue length with the outgoing port communication queue length when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length.
[0067] Optionally, the detection results include the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the connection path corresponding to each of the candidate port number groups;
[0068] The processing unit is used for:
[0069] For each connection path corresponding to the candidate port number group, a first score is determined based on the outgoing port bottleneck bandwidth utilization, and a second score is determined based on the outgoing port bottleneck queue length.
[0070] Based on the first score and the second score, determine the total path score of the connection path;
[0071] Based on the total path score, the target path to the second network device is determined from the connection paths corresponding to each of the candidate port number groups.
[0072] Optionally, the detection results include the outgoing port bottleneck bandwidth utilization of the connection path corresponding to each of the candidate port number groups;
[0073] The processing unit is used for:
[0074] Based on the bottleneck bandwidth utilization of the outgoing port and the second threshold, multiple intermediate connection paths are selected from the connection paths corresponding to each of the candidate port number groups.
[0075] The target path is determined from the plurality of intermediate connection paths.
[0076] Optionally, the detection results include the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the connection path corresponding to each of the candidate port number groups;
[0077] The processing unit is used for:
[0078] If the bottleneck bandwidth utilization of the outgoing port of each connection path corresponding to the candidate port number group is greater than the third threshold, then the connection path with the smallest bottleneck bandwidth utilization of the outgoing port is determined as the target path.
[0079] In response to the fact that the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each of the candidate port number groups is greater than the third threshold, and the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each of the candidate port number groups is the same, the connection path with the smallest outgoing port bottleneck queue length is determined as the target path.
[0080] According to one aspect of this disclosure, an electronic device is provided, including a memory and a processor, the memory storing a computer program, the processor executing the computer program to implement the network routing processing method as described above.
[0081] According to one aspect of this disclosure, a computer-readable storage medium is provided, the storage medium storing a computer program that, when executed by a processor, implements the network routing processing method as described above.
[0082] According to one aspect of this disclosure, a computer program product is provided, comprising a computer program that is read and executed by a processor of a computer device, causing the computer device to perform the network routing processing method as described above.
[0083] In this embodiment, no fixed source port number is set; the source port number is determined from the candidate port number group generated in this embodiment. Beforehand, for each switching node in the switching network, available port numbers from the available port number set are assigned to multiple output ports of that switching node, with each output port receiving a different available port number. Thus, the available port numbers assigned to each output port form an output port number group. For a source port number in a data packet, for each switching node, the output port number group corresponding to each output port of that switching node can be used to determine which output port number group the source port number belongs to, thereby determining the output port of each switching node. During actual routing, a candidate port number group is generated based on the intersection of the output port number groups of each switching node on the connection path between the source network device and the destination network device. Each port number in this candidate port number group is the port number that can be used to generate a complete candidate path from the source network device to the destination network device. By using these port numbers as source port numbers and sending a first probe packet, instead of sending a first probe packet for every connection path to the destination network device, the efficiency of determining the target path from the source network device to the destination network device is greatly improved. In this embodiment, the source port number is not fixed but is detected through the first probe packet from a group of feasible candidate port numbers, improving the accuracy of routing and reducing congestion issues despite multiple routing attempts, thereby improving data transmission efficiency.
[0084] Other features and advantages of this disclosure will be set forth in the following description and will be apparent in part from the description or may be learned by practicing the disclosure. The objectives and other advantages of this disclosure may be realized and obtained by means of the structures particularly pointed out in the description, claims and drawings. Attached Figure Description
[0085] The accompanying drawings are provided to further understand the technical solutions of this disclosure and constitute a part of the specification. They are used together with the embodiments of this disclosure to explain the technical solutions of this disclosure and do not constitute a limitation on the technical solutions of this disclosure.
[0086] Figure 1A This is a first architecture diagram of a system to which the network routing processing method according to the embodiments of this disclosure is applied;
[0087] Figure 1B This is a second architecture diagram of a system to which the network routing processing method according to embodiments of this disclosure is applied;
[0088] Figure 1C This is a third-architecture diagram of a system for which the network routing processing method according to embodiments of this disclosure is applied;
[0089] Figure 2 This is a schematic diagram illustrating the application of the network routing processing method according to embodiments of this disclosure in a data center network scenario;
[0090] Figure 3 This is a schematic diagram illustrating the application of the network routing processing method according to embodiments of this disclosure to a Redis data service scenario;
[0091] Figure 4 This is a schematic diagram illustrating the application of the network routing processing method according to the embodiments of this disclosure to a cloud disk storage scenario;
[0092] Figure 5 This is a flowchart of a network routing processing method according to an embodiment of the present disclosure;
[0093] Figure 6 This is a schematic diagram of the source connection path between a first network device and a second network device according to an embodiment of the present disclosure;
[0094] Figure 7 This is a schematic diagram illustrating communication between a first network device and a second network device via a source connection path according to an embodiment of the present disclosure.
[0095] Figure 8 This is a flowchart illustrating the determination of multiple connection paths according to an embodiment of the present disclosure;
[0096] Figure 9This is a flowchart illustrating the determination of network congestion in a source connection path according to an embodiment of this disclosure;
[0097] Figure 10 This is a flowchart illustrating the process of determining the output port number group corresponding to the output port of a switching node according to an embodiment of the present disclosure.
[0098] Figure 11A This is a schematic diagram illustrating the implementation process of routing calculation based on a 5-tuple according to an embodiment of the present disclosure;
[0099] Figure 11B This is a schematic diagram illustrating the implementation process of determining the output port number group corresponding to the output port of a switching node according to an embodiment of the present disclosure;
[0100] Figure 12 This is a schematic diagram illustrating the implementation process of configuring routing summaries for switching nodes at various levels of a switching network according to an embodiment of this disclosure;
[0101] Figures 13A-13C This is a schematic diagram illustrating the process of determining the output port number group of switching nodes at each level of a switching network according to an embodiment of the present disclosure.
[0102] Figures 14A-14C This is a schematic diagram illustrating the implementation process of determining a candidate port number group according to an embodiment of the present disclosure;
[0103] Figure 15 This is a flowchart illustrating the detection results of determining the connection path corresponding to a candidate port number group according to an embodiment of this disclosure;
[0104] Figure 16 This is a flowchart illustrating the generation of a first probe packet according to an embodiment of the present disclosure;
[0105] Figure 17A This is a schematic diagram of the message format of a data packet according to an embodiment of the present disclosure;
[0106] Figure 17B This is a schematic diagram of the message format of a first probe packet according to an embodiment of the present disclosure;
[0107] Figure 18 This is a schematic diagram of multiple connection paths between a first network device and a second network device according to an embodiment of the present disclosure;
[0108] Figure 19 This is a flowchart of load probing of a switching node according to an embodiment of the present disclosure;
[0109] Figure 20 This is a flowchart of load probing of a switching node according to another embodiment of the present disclosure;
[0110] Figure 21 This is a flowchart of path selection before load detection according to an embodiment of the present disclosure;
[0111] Figure 22 This is a flowchart of determining candidate connection paths according to an embodiment of the present disclosure;
[0112] Figure 23 This is a schematic diagram illustrating the implementation process of path filtering before load detection according to an embodiment of the present disclosure;
[0113] Figure 24 This is a flowchart of determining a target path according to an embodiment of the present disclosure;
[0114] Figure 25 This is a flowchart of determining a target path according to another embodiment of the present disclosure;
[0115] Figure 26 This is a flowchart of determining a target path according to another embodiment of the present disclosure;
[0116] Figure 27 This is a fourth architecture diagram of the system to which the network routing processing method according to the embodiments of this disclosure is applied;
[0117] Figure 28 This is a schematic diagram of the structure of an adaptive routing module and a path proxy module in a server according to an embodiment of the present disclosure;
[0118] Figure 29 This is a schematic diagram of the workflow of a server according to an embodiment of the present disclosure;
[0119] Figure 30 This is a schematic diagram of the message format of a target data message according to an embodiment of the present disclosure;
[0120] Figure 31 This is a schematic diagram of a switch implementing load feedback according to an embodiment of the present disclosure;
[0121] Figure 32 This is a schematic diagram illustrating the process of detecting and obtaining target data packets using candidate outgoing port number groups according to an embodiment of the present disclosure;
[0122] Figure 33 This is a schematic diagram of iterative probing in multiple batches according to an embodiment of the present disclosure;
[0123] Figure 34 This is a detailed schematic diagram illustrating the server determining the target path according to an embodiment of the present disclosure;
[0124] Figure 35This is a detailed schematic diagram illustrating the server determining the target path according to another embodiment of the present disclosure;
[0125] Figure 36 This is a schematic diagram comparing the experimental results of the embodiments of this disclosure with related technologies;
[0126] Figure 37 This is another schematic diagram comparing the experimental results of the embodiments of this disclosure with related technologies;
[0127] Figure 38 This is a block diagram of a network routing processing apparatus according to an embodiment of the present disclosure;
[0128] Figure 39 This is a terminal structure diagram of a network routing processing method according to an embodiment of the present disclosure;
[0129] Figure 40 This is a server architecture diagram of a network routing processing method according to an embodiment of the present disclosure. Detailed Implementation
[0130] To make the objectives, technical solutions, and advantages of this disclosure clearer, the following detailed description is provided in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely illustrative and are not intended to limit the scope of this disclosure.
[0131] The nouns and terms used in the embodiments of this disclosure are to be interpreted as follows:
[0132] Switching network: This generally refers to a network architecture that includes multiple network devices and multiple switches. For example, a switching network can be a data center network. A data center network is an infrastructure used to provide network, storage, and computing resources to support enterprises or data center tenants in performing a wide range of workloads. The core components of a data center network include multiple servers and multiple switches, where servers are used as network devices (including sending and receiving devices), and switches are used as forwarding devices.
[0133] Congestion control: By detecting congestion in the communication path and dynamically adjusting the transmission rate of the sending end (sending device), excessive data injection into the communication path can prevent overload of forwarding devices. In the congestion control algorithm, a congestion window (cwnd) is maintained for each communication connection. The congestion window determines the maximum amount of data the sending end can send within a round-trip time (RTT). The size (value) of the congestion window is dynamically adjusted based on the current congestion level of the communication path. If the communication path becomes more congested, the congestion window value decreases; if the communication path becomes smoother, the congestion window value increases. It is worth noting that while the congestion control algorithm has the ability to detect congestion in the communication path, the embodiments of this disclosure can detect congestion in the communication path more accurately and comprehensively based on the congestion control algorithm.
[0134] Equal Cost Multi Path (ECMP) is a technique that selects multiple equivalent communication paths in a switched network and distributes traffic across these paths to achieve load balancing and network redundancy.
[0135] Communication connection: refers to the communication connection between the sending device and the receiving device.
[0136] Communication path (connection path): refers to the combination of a series of switches and links that network devices must pass through to communicate.
[0137] In data center networks, equal-cost multipath routing hash algorithms are widely used for routing, selecting one communication path from multiple equivalent paths for communication between network devices. However, in real-world data center networks, hash polarization inevitably occurs to some extent, where multiple data streams transmit through the same communication path, causing congestion and resulting in significantly lower throughput than ideal. Therefore, there is a need to detect congestion on communication paths.
[0138] To address this need, the relevant technologies mainly provide the following two solutions:
[0139] (1) Native Transmission Control Protocol (TCP) scheme. For TCP connections, the congestion control algorithm detects the congestion of the current connection path and adjusts the congestion window value. This means that TCP connections have to endure the low throughput caused by congestion, even if there are other connection paths that are idle in the switching network. In addition, the congestion situation detected by the congestion control algorithm is too one-sided and cannot effectively reflect the real situation.
[0140] (2) PLB Scheme. The PLB scheme is applied to TCP connections in IPv6 networks. On the one hand, the routing hash algorithm of the switch is configured to use the Flow Label field in the IPv6 header as a hash factor field (routing factor field). On the other hand, the code of the server's TCP protocol stack is modified to make the server count the number of ECN signals. For a certain connection path, if a certain number of ECN signals are counted in several consecutive periods, it is determined that the connection path is congested. Then the server will randomly modify the Flow Label field in the IPv6 header to achieve random routing. However, the PLB solution has the following problems: it requires a certain period of time to detect congestion on the connection path, which is typically at least tens to hundreds of RTTs, or 1 to 10 ms in data center networks; the connection path obtained after random routing may still pass through congestion points (bottlenecks), requiring another waiting period before random routing can be performed again. Therefore, the PLB solution often requires multiple random routing attempts to find a relatively free connection path. Furthermore, due to hash polarization, there is a probability that even with a large number of random routing attempts, a sufficiently free connection path may still not be found; the number of ECN signals is closely related to the congestion control algorithm used and the configuration of the switching network, such as Data Center Quantized Congestion Notification. The Notification (DCQCN) algorithm differs greatly from other ECN-based algorithms in the number of ECNs generated in steady state. The DCQCN algorithm generates a very low percentage of steady-state ECNs (e.g., 1%), and may not even generate the number of ECNs required for PLB to detect congestion, even in severe congestion scenarios. In addition, the uncertainty of ECN signals is very high, and it is difficult to guarantee that there will be more than a certain number of ECN signals in multiple consecutive cycles. For example, packet loss may prevent the counting of ECN signals.
[0141] Both of the above approaches are prone to causing long-term congestion in the transmission path, thereby affecting data transmission efficiency. Modern switching networks are very sensitive to data transmission throughput and latency. A decrease in throughput will directly reduce the input output per second (IOPS) of the application layer, and the increased latency caused by congestion may significantly increase service latency. Both throughput degradation and latency degradation may violate the service commitment terms.
[0142] In view of this, embodiments of the present disclosure provide a network routing processing method, related apparatus and medium, which can improve the data transmission efficiency between network devices.
[0143] The system architecture and scenarios in which this disclosure is applied are described below.
[0144] Figure 1A This is a first system architecture diagram of the network routing processing method provided in this embodiment of the disclosure, which includes a terminal 130, a forwarding device 120, a server 110, etc.
[0145] Terminal 130 can take various forms, including desktop computers, laptops, personal digital assistants (PDAs), mobile phones, in-vehicle terminals, and dedicated terminals. Furthermore, it can be a single device or a collection of multiple devices. For example, multiple desktop computers connected via a local area network, sharing a single monitor, can work collaboratively to form a single terminal 130. Terminal 130 can communicate with relay device 120 via wired or wireless means to exchange data.
[0146] Server 110 refers to a computer system capable of providing certain services to terminal 130. Compared to ordinary terminal 130, server 110 has higher requirements in terms of stability, security, and performance. Server 110 can be a single high-performance computer in a network platform, a cluster of multiple high-performance computers, a portion of a single high-performance computer (e.g., a virtual machine), or a combination of portions of multiple high-performance computers (e.g., virtual machines). Server 110 can also communicate with forwarding device 120 via wired or wireless means to exchange data.
[0147] Forwarding device 120 is used to realize data transmission between different network nodes (network nodes refer to terminal 130 or server 110) in the switching network. Forwarding device 120 typically has multiple ports, through which multiple network nodes can be connected. These ports can be physical ports or virtual ports. Forwarding device 120 can be a switch (i.e., a switching node) or router, or other devices capable of receiving and forwarding packets. Messages sent from terminal 130 to server 110 must reach the corresponding server 110 through forwarding device 120; messages sent from server 110 to terminal 130 must also reach the corresponding terminal 130 through forwarding device 120. Figure 1A In this configuration, terminal 130 can be used as a first network device (sending device), and server 110 can be used as a second network device (receiving device); or, server 110 can be used as a first network device (sending device), and terminal 130 can be used as a second network device (receiving device), without any limitation.
[0148] Figure 1BThis is a second system architecture diagram for the network routing processing method provided in this embodiment of the disclosure. It includes a forwarding device 120 and a server 110, etc., wherein some servers 110 are used as first network devices (sending devices) and other servers 110 are used as second network devices (receiving devices).
[0149] Figure 1C This is a third system architecture diagram of the network routing processing method provided in this embodiment of the disclosure. It includes a terminal 130 and a server 110, wherein some terminals 130 are used as first network devices (transmitting devices) and other terminals 130 are used as second network devices (receiving devices).
[0150] The embodiments disclosed herein can be applied in various scenarios, such as Figure 2 The data center network scenario shown is as follows: Figure 3 The Redis data service scenario shown, and such as Figure 4 The cloud disk storage scenario shown.
[0151] (I) Data center network scenario.
[0152] Data center networks typically use a Clos / Fat-tree architecture (Layer 3 or Layer 2 switches), such as Figure 2 As shown, a data center network has three layers of switches: access layer (Leaf), aggregation layer (Spine), and core layer (Core). The data center network also includes a server layer (Host), where servers act as sending devices (first network devices) or receiving devices (second network devices), and the Layer 3 switches act as forwarding devices (switching nodes). An access layer switch and all its downstream servers are collectively called a rack; for example, access layer switches L0 and L1 and their downstream servers H0 and H1 are collectively called rack 0. An access layer switch, all its upstream aggregation layer switches, and all its downstream servers are collectively called a network module (Pod); for example, access layer switches L0, L1, L2, and L3, along with their upstream aggregation layer switches S0, S1, S2, and S3 and their downstream servers H0, H1, H2, and H3, are collectively called network module 0. It is worth noting that in a data center network, to increase communication bandwidth and connection reliability between servers, servers can connect to different access layer switches via multiple links, for example... Figure 2 In this configuration, server H0 is connected to access layer switch L0 through one outgoing port and to access layer switch L1 through another outgoing port. The outgoing port of the server is the network port.
[0153] by Figure 2Taking the example of servers H0 and H4 having a communication connection and the current communication path being H0-L0-S0-C0-S4-L4-H4, this illustrates two solutions provided by related technologies. In this solution, server H0 is used as the first network device, and server H4 is used as the second network device. The symbol "-" represents a physical link. For example, "H0-L0" means that server H0 and access layer switch L0 are connected through a physical link.
[0154] (1) Native TCP Scheme. In the native TCP scheme, server H0, as the first network device, will use a congestion control algorithm to detect the congestion status of the current communication path H0-L0-S0-C0-S4-L4-H4. If server H0 detects congestion, it will reduce the congestion window value accordingly and will not switch routes (TCP connections can only switch routes after being disconnected and re-established). This means that the TCP connection between server H0 and H4 has to endure the low throughput caused by congestion, even if there are other communication paths that are idle in the data center network. In addition, the congestion situation detected by the congestion control algorithm is too one-sided and cannot effectively reflect the real situation.
[0155] (2) PLB Scheme. In the PLB scheme, for the current communication path H0-L0-S0-C0-S4-L4-H4, if server H0, as the first network device, detects a certain number of ECN signals in multiple consecutive cycles, then the current communication path H0-L0-S0-C0-S4-L4-H4 is considered congested. However, this results in the need to run on the communication path for a period of time before the congestion situation is detected. This time is typically on the order of 1 to 10 ms in data center networks, during which the current communication path will remain congested. Furthermore, the number of ECN signals depends on the congestion control algorithm used and the relevant configuration of the message transmission network. Furthermore, the DCQCN algorithm differs significantly from other ECN-based algorithms in the number of ECNs generated in steady state. The DCQCN algorithm generates a very low percentage of steady-state ECNs (e.g., 1%), and even in severe congestion scenarios, it may not generate enough ECNs for the PLB to detect congestion. This means that even if the current communication path H0-L0-S0-C0-S4-L4-H4 is congested, server H0 may not be able to detect it. In addition, the uncertainty of ECN signals is significant, and it is difficult to guarantee that there will be more than a certain number of ECN signals in multiple consecutive periods. For example, packet loss may prevent server H0 from counting a sufficient number of ECN signals.
[0156] By using the network routing processing method provided in this disclosure, available port numbers from the available port number set are pre-assigned to multiple outgoing ports of each switching node in the switching network, with each outgoing port assigned a different available port number. Based on the congestion window value, the congestion status of the current connection path can be accurately detected, facilitating accurate routing decisions and effectively resolving congestion problems. During actual routing, a candidate port number group is generated based on the intersection of the outgoing port number groups of each switching node on the connection path between the source network device and the destination network device. Each port number in this candidate port number group is a port number that can be used to generate a complete candidate path from the source network device to the destination network device. Using these port numbers as source port numbers, a first probe packet is sent, instead of sending a first probe packet for every connection path to the destination network device. This greatly improves the efficiency of determining the target path from the source network device to the destination network device. The source port number in this embodiment is not fixed, but is detected by the first probe packet from a group of feasible candidate port numbers. This can improve the accuracy of routing and, compared with the PLB scheme, reduce the problem of congestion after multiple routing attempts, thereby improving data transmission efficiency.
[0157] (ii) Redis data service scenario.
[0158] like Figure 3 As shown, a terminal 340, an overlay network 330, a proxy server 320, and a base network 310 (switching network) are illustrated. The base network 310 is an underlay network, meaning it's a network established directly at the physical layer; for example, it could be a data center network. The overlay network 330 is an overlay network, created using virtualization technology. The proxy server 320 facilitates communication between the base network 310 and the overlay network 330. The overlay network 330, proxy server 320, and base network 310 work together to provide Redis data services to the terminal 340. The overlay network 330 can be considered the front end of the Redis database, offering advantages in flexibility, security, and virtualization technology, thus meeting the external access and connection requirements of the Redis data service. The base network 310 can be considered the back end of the Redis database, focusing on high performance and stability to ensure the Redis data service can efficiently process data and provide services externally.
[0159] If the solutions provided by related technologies are applied in the basic network 310, problems such as terminal 340 request timeout and data loss will occur, which will seriously affect the availability and performance of Redis data services. For application scenarios that require high reliability and low latency (such as real-time data analysis and online transaction processing), the decline in service quality may lead to serious business losses. In addition, the basic network 310 and the overlay network 330 cannot exert their full performance, which can easily lead to a waste of computing resources.
[0160] If the network switching processing method provided in this embodiment is applied to the basic network 310, the congestion problem faced by the basic network 310 can be solved quickly and effectively, giving full play to the performance of the basic network 310 itself, without limiting the performance of the overlay network 330; it can achieve efficient data processing, ensure high availability and timely feedback of Redis data services, and avoid serious business losses.
[0161] (III) Cloud disk storage scenario.
[0162] like Figure 4 As shown, a terminal 420 and a basic network 410 (switching network) are illustrated. The basic network 410 is an underground network, i.e., a network established directly at the physical layer. For example, the basic network 410 can be a data center network. The basic network 410 is used to provide cloud disk storage services to the terminal 420. The cloud disk storage service supports data creation, deletion, modification, and querying. For example, in response to a data storage request initiated by the terminal 420, the basic network 410 stores the data carried in the data storage request. Alternatively, in response to a data read request initiated by the terminal 420, the basic network 410 queries the data required by the data read request from the data stored in the basic network 410 and sends the retrieved data to the terminal 420.
[0163] If the solution provided by the relevant technology is applied in the basic network 410, the requests initiated by the terminal 420 may not be processed in a timely manner or may even fail to be processed, which will seriously affect the service quality and availability of cloud disk storage services.
[0164] If the network switching processing method provided in this embodiment is applied in the basic network 410, the basic network 410 can quickly respond to the request initiated by the terminal 420, achieve more effective data balancing, and improve the service quality and availability of cloud disk storage services; at the same time, it also helps to improve the flexibility and scalability of cloud disk storage services, and provides strong support for functions such as online expansion and contraction.
[0165] It should be noted that the above examples only illustrate some application scenarios of this disclosure. The business scenarios to which this disclosure can be applied may include, but are not limited to, the specific embodiments described above.
[0166] The embodiments of this disclosure are described in general below.
[0167] According to one embodiment of this disclosure, a network routing processing method is provided.
[0168] This network routing method is applied to switched networks, which generally refer to a network architecture that includes transmitting devices, receiving devices, and multiple forwarding devices. For example, a switched network could be like this: Figure 2 The data center network shown is as follows: A sending device (first network device) is an electronic device used to send messages to a receiving device and receive acknowledgments from the receiving device; the sending device can be a terminal or a server. A receiving device (second network device) is an electronic device used to receive messages from the sending device and send acknowledgments back to the sending device; the receiving device can be a terminal or a server. A forwarding device (switching node) is an electronic device capable of receiving and forwarding messages; for example, a forwarding device can be a switch or a router.
[0169] The network routing process is executed by a first network device, which communicates with a second network device through multiple switching nodes in the switching network.
[0170] like Figure 5 As shown, a network routing processing method according to an embodiment of this disclosure may include:
[0171] Step 510: Determine multiple connection paths between the first network device and the second network device;
[0172] Step 520: For each switching node on the connection path, obtain the group of output port numbers corresponding to the output port of the switching node;
[0173] Step 530: Generate candidate port number groups based on the intersection of the outgoing port number groups of each switching node on the connection path;
[0174] Step 540: Using the candidate port number in the candidate port number group as the source port number, send the first probe packet to obtain the probe result, and determine the target path to the second network device based on the probe result, so that the first network device can communicate with the second network device through multiple switching nodes in the target path.
[0175] Steps 510-540 are described in detail below.
[0176] In step 510, multiple connection paths between the first network device and the second network device are determined.
[0177] A connection path is used to indicate a combination of physical links through a series of switching nodes that are allowed to be traversed between a first network device and a second network device for data transmission.
[0178] In this specific implementation, since the switching nodes at each level of the switching network are physically connected, the locations of the first and second network devices within the entire switching network are first determined. Next, based on the level and connection relationships of each switching node in the switching network, all switching nodes that can be traversed at each level from the first network device to the second network device are determined. Further, based on the connection relationships between switching nodes at different levels, the switching nodes determined at each level are arranged and combined to obtain multiple connection paths between the first and second network devices.
[0179] For example, when the first network device is Figure 2 Server H0 in the middle, the second network device Figure 2 When server H4 is connected, the connection between the first network device and the second network device passes through the access layer, aggregation layer, and core layer. At this point, when the connection from the first network device to the access layer is upstream, the possible switching nodes include access layer switches L0 and L1; when the connection from the access layer to the aggregation layer is upstream, the possible switching nodes include aggregation layer switches S0, S1, S2, and S3. Since the connection from the aggregation layer to the core layer, and from the core layer to the aggregation layer of network module 1 where the second network device resides, depends on which aggregation layer switch the first network device upstream connects to in network module 0, the selection of the core layer switch can be disregarded at this stage. Furthermore, when the connection from the aggregation layer of network module 1 to the access layer is downstream, the possible switching nodes include access layer switches L4 and L5. Therefore, by arranging and combining the two access layer switches that can be selected when the first network device goes up to the access layer, the four aggregation layer switches that can be selected when the access layer goes up to the aggregation layer, and the two access layer switches that can be selected when the aggregation layer of network module 1 goes down to the access layer, we can obtain 2×4×2=16 connection paths between the first network device and the second network device.
[0180] It should be noted that the normal transmission of data between the first network device and the second network device in these 16 connection paths is not guaranteed. This largely depends on whether the output port number of each hop switching node in each of these 16 connection paths is consistent with the source port number in the 5-tuple between the first network device and the second network device.
[0181] In step 520, for each switching node on the connection path, the output port number group corresponding to the output port of the switching node is obtained.
[0182] An output port refers to the physical port on which a switching node connects to the next switching node.
[0183] An outgoing port number group refers to the combination of outgoing port numbers that a switching node relies on to connect to the next switching node through an outgoing port.
[0184] It's important to note that the connection between a switching node and its successor via an output port is at the physical layer. A switching node can physically connect to different successor switching nodes through different output ports. However, whether data transmission can occur between a switching node connected via an output port and its successor depends on the output port numbers within the corresponding output port number group. The output port numbers within an output port number group are at the logical layer. Different output ports correspond to different output port number groups.
[0185] For example, in Figure 2 In this configuration, access layer switch L0 has four output ports: port 1, port 2, port 3, and port 4. Access layer switch L0 is physically connected to aggregation layer switches S0, S1, S2, and S3 through these four different output ports (port 1 connects to aggregation layer switch S0, port 2 connects to aggregation layer switch S1, port 3 connects to aggregation layer switch S2, and port 4 connects to aggregation layer switch S3). Therefore, which of the four aggregation layer switches access switch L0 sends a received data packet to depends on which output port number group the source port number in the 5-tuple of the data packet corresponds to.
[0186] Specifically, for each switching node in the switching network, the available port numbers in the available port number set are pre-assigned to each output port of the switching node, and the available port numbers assigned to each output port form an output port number group.
[0187] The set of available port numbers refers to the entire space of port numbers used for data transmission between network devices.
[0188] Available port numbers refer to port numbers that can be selected and used as source port numbers.
[0189] It should be noted that the set of available port numbers in this embodiment may include 65,535 port numbers.
[0190] In this specific implementation, data transmission between network devices depends on which switching nodes in the switching network are associated with the source port number in the 5-tuple. Different data packet transmission methods are only affected by the 5-tuple and do not affect the output port number groups assigned to each output port of the switching node. Therefore, to simplify calculations, in this embodiment, the central controller of the switching network pre-assigns the available port numbers from the available port number set to each output port of the switching node, and the available port numbers assigned to each output port form an output port number group. Furthermore, the output port number groups corresponding to each output port of the switching node are often constant.
[0191] Furthermore, since the architecture of each network module in the switching network is basically the same, and the total number of switching nodes at the same level and the connection relationship between any switching node at this level and switching nodes at the upper and lower levels are also basically the same, when the central controller of the switching network in this embodiment allocates available port numbers to switching nodes, it only needs to pre-allocate the available port numbers from the available port number set to each output port of a switching node at each level, and the available port numbers allocated to each output port form an output port number group. For switching nodes at the same level, the output port number groups for each output port can be set to be the same. This can save a significant amount of time and resources in setting up output port number groups for each output port of a switching node.
[0192] For example, Figure 2 In the access layer, the outgoing ports of each switch have the same outgoing port number group, and in the aggregation layer, the outgoing ports of each switch have the same outgoing port number group.
[0193] In step 530, candidate port number groups are generated based on the intersection of the outgoing port number groups of each switching node on the connection path.
[0194] The intersection is used to indicate the available port numbers shared by the outgoing port number groups of the various switching nodes on the connection path.
[0195] Candidate port number groups are used to indicate the combination of available port numbers that are common to the outgoing port number groups of each switching node on the connection path.
[0196] In this specific implementation, firstly, for each switching node on each connection path, the outgoing port used by each switching node on that connection path is determined, and the outgoing port number group corresponding to the outgoing port used by each switching node is extracted. Next, the intersection of the outgoing port number groups corresponding to the outgoing ports used by each switching node on that connection path is taken, and all the outgoing port numbers contained in the intersection result are combined to form the candidate port number group corresponding to that connection path.
[0197] It should be noted that since the candidate port numbers in the candidate port number group corresponding to the connection path are common to the outgoing ports used by all switching nodes on the connection path, the first network device can successfully transmit the data packet to the second network device through the connection path only if the source port number in the five-tuple of the data packet sent by the first network device is a candidate port number in the candidate port number group. Once the source port number in the five-tuple of the data packet sent by the first network device is different from the candidate port number in the candidate port number group, the first network device and the second network device cannot communicate using this connection path.
[0198] In step 540, a first probe packet is sent using the candidate port number in the candidate port number group as the source port number to obtain the probe result. Based on the probe result, the target path to the second network device is determined so that the first network device can communicate with the second network device through multiple switching nodes in the target path.
[0199] The first probe packet refers to the probe message generated by the first network device using candidate port numbers from the candidate port number group as the source port number for the connection path corresponding to each candidate port number group. The first probe packet for each connection path corresponding to the candidate port number group is used to transmit the first probe packet from the first network device to the second network device through the connection path to probe the load status of each switching node on the connection path.
[0200] The detection results are used to indicate the idle or load status of the connection paths corresponding to each candidate port number group.
[0201] The target path refers to the connection path used by the first network device and the second network device to communicate. Specifically, if the first network device and the second network device are already communicating through a connection path different from the target path, then the target path is the connection path that the first network device and the second network device will switch to from that different connection path. Generally, the target path will be less congested than the original connection path used by the first network device and the second network device.
[0202] In this specific implementation, the first network device first randomly selects a candidate port number from each candidate port number group as the source port number and constructs a first probe packet based on the source port number. Next, it sends the first probe packet to the second network device using the connection path corresponding to each candidate port number group to probe the load status of each switching node on that connection path. Further, after receiving the first probe packet, the second network device returns a probe acknowledgment message to the first network device. The first network device can determine the probe results for each connection path corresponding to each candidate port number group based on the probe acknowledgment message. Finally, based on the probe results, it selects a relatively idle connection path from the connection paths corresponding to each candidate port number group as the target path, and enables the first network device to communicate with the second network device through multiple switching nodes in the target path.
[0203] To save space, the specific process of determining the target path to the second network device based on the detection results, and the specific process of sending the first probe packet using the candidate port number in the candidate port number group as the source port number to obtain the detection results, according to embodiments of this disclosure, will be described in detail below. It will not be repeated here.
[0204] For ease of explanation, the embodiments disclosed herein... Figure 2 Based on this, it provides such as Figure 6 The diagram shown illustrates a data center network. Figure 6 In this system, the first network device is server H0, and the second network device is server H4. Data transmission between the two is achieved through the source connection path H0-L0-S0-C0-S4-L4-H4. Based on this, server H0 first sends the data packet to access layer switch L0.
[0205] For ease of understanding, the embodiments of this disclosure are as follows: Figure 6 Based on this, it provides such as Figure 7 The diagram shows a message transmission process. Figure 7As shown, after receiving a data packet from server H0, access layer switch L0 forwards the data packet to aggregation layer switch S0; after receiving the data packet from access layer switch L0, aggregation layer switch S0 forwards the data packet to core layer switch C0. This process continues until access layer switch L4 forwards the data packet to server H4. Similarly, after receiving a data packet, server H4 returns an acknowledgment message to server H0. First, server H4 forwards the acknowledgment message to access layer switch L4. Then, after receiving the acknowledgment message from server H4, access layer switch L4 forwards the acknowledgment message to aggregation layer switch S4; after receiving the acknowledgment message from access layer switch L4, aggregation layer switch S4 forwards the acknowledgment message to core layer switch C0. This process continues until access layer switch L0 forwards the acknowledgment message to server H0.
[0206] Through steps 510-540 above, in this embodiment of the disclosure, a fixed source port number is not set; the source port number is determined from the candidate port number group generated in this embodiment. Beforehand, for each switching node in the switching network, available port numbers from the available port number set are assigned to multiple output ports of that switching node, with each output port receiving a different available port number. Thus, the available port numbers assigned to each output port form an output port number group. For a source port number in a data packet, for each switching node, the output port number group corresponding to each output port of that switching node can be used to determine which output port number group the source port number belongs to, thereby determining the output port of each switching node. During actual routing, a candidate port number group is generated based on the intersection of the output port number groups of each switching node on the connection path between the source network device and the destination network device. Each port number in this candidate port number group is the port number that can be used to generate a complete candidate path from the source network device to the destination network device. By using these port numbers as source port numbers and sending a first probe packet, instead of sending a first probe packet for every connection path to the destination network device, the efficiency of determining the target path from the source network device to the destination network device is greatly improved. In this embodiment, the source port number is not fixed but is detected through the first probe packet from a group of feasible candidate port numbers, improving the accuracy of routing and reducing congestion issues despite multiple routing attempts, thereby improving data transmission efficiency.
[0207] The above is a general description of steps 510-540. The following will provide a detailed description of the specific implementation of steps 510-540.
[0208] Step 510 will be described in detail below.
[0209] In step 510, multiple connection paths between the first network device and the second network device are determined.
[0210] Please refer to Figure 8 In one embodiment, step 510 specifically includes, but is not limited to, the following steps 810-820:
[0211] Step 810: Determine the network congestion characterization parameters of the source connection path relied upon by the first network device when communicating with the second network device within the current probe period;
[0212] Step 820: If it is determined that there is network congestion in the source connection path based on the network congestion characterization parameters, then determine multiple connection paths between the first network device and the second network device.
[0213] Steps 810-830 are described in detail below.
[0214] In step 810, the source connection path is used to indicate the connection path (communication path) used by the communication connection when the first network device has established a communication connection with the second network device.
[0215] The current detection period refers to the time period in which the first network device periodically detects the congestion of the source connection path.
[0216] Network congestion characterization parameters refer to parameters that can intuitively represent whether a source connection path is congested. For example, the outgoing port congestion window (cwnd) and data transmission rate can both be used as network congestion characterization parameters.
[0217] In this context, data transmission rate typically refers to the actual throughput of the source connection path in a switched network, i.e., the amount of data successfully transmitted through the source connection path within a certain time. It reflects how quickly data can be transmitted under current network conditions. By detecting the data transmission rate, the first network device can assess the congestion status of the source connection path and adjust the transmission rate accordingly to avoid or mitigate congestion.
[0218] In this specific implementation, with authorization, the first network device detects the maximum amount of data that the source connection path can send within one round-trip time, thereby obtaining the outgoing port congestion window of the source connection path in the current detection period. Next, the first network device calculates the data transmission rate of the source connection path in the current detection period based on the amount of data sent within one round-trip time. Finally, the data transmission rate and the outgoing port congestion window are integrated into a network congestion characterization parameter.
[0219] In step 820, if the source connection path is determined to be congested based on network congestion characterization parameters, it indicates that continued communication between the first network device and the second network device using the source connection path will result in significant latency. Therefore, routing between the first and second network devices is required, allowing them to communicate via a less congested connection path. Based on this, multiple connection paths between the first and second network devices are determined. The specific process for determining these multiple connection paths has been described in detail above and will not be repeated here.
[0220] The advantage of this embodiment is that the first network device periodically detects the congestion of the source connection path used to communicate with the second network device, and intuitively identifies whether the source connection path is congested based on network congestion characterization parameters such as the outgoing port congestion window and data transmission rate. When it is determined that the source connection path is congested, the device quickly enters the routing process of this embodiment and determines multiple connection paths between the first and second network devices. This allows for finding a relatively free connection path among the multiple connection paths for path switching, enabling rapid identification of network congestion and routing, which is beneficial for improving the data transmission efficiency between network devices.
[0221] Please refer to Figure 9 In one embodiment, the specific process of determining that the source connection path is congested based on network congestion characterization parameters includes, but is not limited to, the following steps 910-920:
[0222] Step 910: Obtain the data transmission status parameters of the source connection path in the previous detection cycle relative to the current detection cycle;
[0223] Step 920: Based on the data transmission status parameters and network congestion characterization parameters of the previous detection period, determine the data transmission status parameters of the current detection period;
[0224] Step 930: If the data transmission status parameter of the current detection period is less than the first threshold, then it is determined that there is network congestion in the source connection path.
[0225] Steps 910-930 are described in detail below.
[0226] In step 910, the data transmission status parameter refers to a parameter used to indicate the speed, latency, or amount of data that can be transmitted in the source connection path.
[0227] For example, data transmission status parameters could be a moving average window indicating the source transmission path, the average data transmission rate, and so on.
[0228] In this specific implementation, the first network device periodically records and updates the data transmission status parameters of the connection path (here referred to as the source connection path) upon which it relies for communication with the second network device. Based on this, with authorization, the first network device can obtain the locally recorded data transmission status parameters of the source connection path in the previous probe cycle relative to the current probe cycle.
[0229] In step 920, the data transmission status parameters and network congestion characterization parameters of the previous detection period can be weighted and calculated. The result of the weighted calculation is used as the data transmission status parameters of the current detection period, and the data transmission status parameters recorded locally are updated with the data transmission status parameters of the current detection period.
[0230] In step 930, the first threshold is used to assess whether network congestion has occurred in the source connection path.
[0231] In this specific implementation, firstly, the data transmission status parameter of the current probe period is compared with a first threshold. Next, if the data transmission status parameter of the current probe period is greater than or equal to the first threshold, it indicates that data transmission along the source connection path is relatively smooth and there is no network congestion. In this case, the first network device and the second network device can continue to use the source connection path for communication without switching to another connection path. If the data transmission status parameter of the current probe period is less than the first threshold, it indicates that the data transmission capability of the source connection path is poor; therefore, it is determined that network congestion exists along the source connection path.
[0232] The advantage of this embodiment is that by probing and comparing data transmission status parameters in different probing periods, it can dynamically detect whether network congestion exists in the source connection path in each probing period, rather than relying solely on static network configuration to identify network congestion. Furthermore, it considers network congestion characterization parameters for each probing period to intuitively represent the network congestion situation. Combining the data transmission status parameters from the previous probing period with those from the current period to calculate the data transmission status parameters for the current period improves the accuracy of data transmission status parameter determination. Moreover, determining network congestion based on a simple threshold comparison method improves the accuracy and efficiency of network congestion detection.
[0233] In a specific example, network congestion characterization parameters include outgoing port congestion windows, and data transmission status parameters include moving average windows.
[0234] Step 920 includes:
[0235] The moving average window and the outlet congestion window of the previous detection period are weighted and calculated to obtain the moving average window of the current detection period.
[0236] Step 930 includes:
[0237] If the moving average window of the current detection period is less than the product of the maximum moving window and the window threshold coefficient, then it is determined that there is network congestion in the source connection path.
[0238] Specifically, first, a moving average coefficient is set, for example, to 0.1. Next, the product of the moving average coefficient and the outgoing port congestion window, and the result of 1 minus the moving average coefficient, are added to the product of the moving average window from the previous detection period to obtain the moving average window for the current detection period. Further, the product of the maximum moving average window and a window threshold coefficient is used as the first threshold. The window threshold coefficient is preset and is typically set to 0.4. Then, if the moving average window for the current detection period is less than the first threshold, it indicates poor data transmission capability of the source connection path, thus determining that network congestion exists in the source connection path.
[0239] In another specific example, network congestion characterization parameters include data transmission rate, and data transmission status parameters include the average data transmission rate.
[0240] Step 920 includes:
[0241] The average data transmission rate of the previous detection period is weighted and calculated to obtain the average data transmission rate of the current detection period.
[0242] Step 930 includes:
[0243] If the average data transmission rate during the current probe period is less than the product of the maximum data transmission rate and the rate threshold coefficient, then network congestion is determined to exist in the source connection path.
[0244] Specifically, first, a rate averaging coefficient is set. Then, the product of the rate averaging coefficient and the data transmission rate, plus the product of the deceleration rate averaging coefficient and the data transmission rate average of the previous detection period, is added to obtain the data transmission rate average of the current detection period. Further, the product of the maximum data transmission rate and the rate threshold coefficient is used as the first threshold. The rate threshold coefficient is preset and is typically set to 0.4. Next, if the data transmission rate average of the current detection period is less than the first threshold, it indicates that the data transmission capacity of the source connection path is poor, and network congestion is determined to exist in the source connection path.
[0245] The advantage of the two specific examples above is that by using data transmission rate and outgoing port congestion window as network congestion characterization parameters, data transmission rate and outgoing port congestion window can more accurately and reliably reflect the network congestion of the source connection path, and make the network congestion detection of this embodiment independent of specific congestion algorithms and network configurations, thereby improving the accuracy and reliability of network congestion detection.
[0246] Step 520 will be described in detail below.
[0247] In step 520, for each switching node on the connection path, the outgoing port number group corresponding to the outgoing port of the switching node is obtained. Specifically, for each switching node in the switching network, the available port numbers in the available port number set are pre-assigned to each outgoing port of the switching node, and the available port numbers assigned to each outgoing port form an outgoing port number group.
[0248] Please refer to Figure 10 In one embodiment, the output port number group of each output port of the switching node is determined by the controller in the switching network in the following manner:
[0249] Step 1010: Retrieve available port numbers from the set of available port numbers;
[0250] Step 1020: Generate a second probe packet based on the available port number, the first device address of the first network device, and the second device address of the second network device;
[0251] Step 1030: Based on the preset seed and the second probe packet, perform a digest operation using a preset digest algorithm to obtain the digest result corresponding to the available port number;
[0252] Step 1040: Based on the summary results and the number of nodes connected to the next-layer switching node by the switching node, perform a modulo operation to obtain the target remainder;
[0253] Step 1050: Based on the target remainder, determine one output port corresponding to the available port number from among the multiple output ports of the switching node;
[0254] Step 1060: After all available port numbers in the available port number set have been traversed, multiple available port numbers corresponding to the same output port are grouped together to obtain the output port number groups corresponding to each output port of the switching node.
[0255] Steps 1010-1060 are described in detail below.
[0256] In step 1010, since the set of available port numbers often contains multiple available port numbers, in order to group each available port number, it is necessary to extract each available port number from the set of available port numbers and iterate through all available port numbers in the set of available port numbers.
[0257] In step 1020, the first device address is used to locate and identify the first network device on the Internet. The second device address is used to locate and identify the second network device on the Internet.
[0258] The second probe packet refers to a data packet formed by setting the source port number to each available port number while keeping the source device address, destination device address, destination port number, and protocol number in the 5-tuple unchanged.
[0259] In the specific implementation of this embodiment, for each available port number, the available port number is used as the source port number, and the source port number, the first device address of the first network device, the second device address of the second network device, the preset fixed destination port number, and the protocol number together form a 5-tuple, and the 5-tuple is determined as the second probe packet corresponding to the available port number.
[0260] For ease of understanding, this example illustrates a routing operation where multiple routing factor fields are quintuples and the routing calculation uses a routing hash algorithm. This disclosure provides a schematic diagram of the routing operation shown in Figure 14, which will be explained step-by-step:
[0261] (1) When a switch receives a message, it determines multiple equivalent connection paths in the switching network that can reach the destination IP address based on the destination IP address in the message. It constructs a candidate outgoing port list based on the candidate outgoing ports (referring to the outgoing ports in the switch) that these connection paths need to pass through, such as [8, 9, 10, 11], where 8 represents the port number of the outgoing port.
[0262] (2) The switch performs a hash calculation on the five-tuple in the message to obtain the hash value;
[0263] (3) The switch performs a modulo operation between the hash value and the length of the candidate outgoing port list to obtain the target index number of the candidate outgoing port list. Then, it determines the target outgoing port corresponding to the target index number in the candidate outgoing port list and sends the message out through the target outgoing port.
[0264] For example, if the hash value obtained by hashing the 5-tuple in the message is 13, and the length of the candidate outgoing port list [8, 9, 10, 11] is 4, then the target index number obtained by performing the modulo operation is 1. Therefore, the second-ranked outgoing port 9 in the candidate outgoing port list [8, 9, 10, 11] is taken as the target outgoing port. The index number of the candidate outgoing port list starts from 0.
[0265] It's worth noting that routing operations also apply to the first and second network devices in a switched network. For example, after generating a message, the first network device needs to use routing operations to determine which output port to send the message through. Furthermore, the source and destination port numbers in the 5-tuple differ in meaning from the output ports of electronic devices (such as the output ports of a switch). The source and destination port numbers in the 5-tuple are transport layer concepts used to identify specific applications / processes within the transport layer; while the output ports of electronic devices are data link layer concepts used to send messages.
[0266] Figure 14 also shows the hash seed, which is a random number or string used to initialize the hash function (used to perform hash calculations).
[0267] In step 1030, the preset seed refers to an initial value used by the preset digest algorithm in the digest operation. It is used to obtain a fixed-length string after digesting the input data (such as a file or message). The preset digest algorithm refers to a pre-defined digest algorithm that points to a specific digest function. The digest result is used to indicate a fixed-length string.
[0268] In this specific implementation, for each available port number corresponding to a second probe packet, a preset seed and the second probe packet are input into the digest function corresponding to a preset digest algorithm. The digest function performs a digest operation on the second probe packet based on the preset seed, calculating a fixed-length string corresponding to the second probe packet, thus obtaining the digest result corresponding to that available port number. This digest result is generally a random integer.
[0269] In step 1040, the number of nodes is used to indicate the total number of next-layer switching nodes to which the switching node is connected. For example, Figure 2 The access layer switch L0 is connected to the next layer of aggregation layer switches, and the total number of aggregation layer switches is 4.
[0270] In the specific implementation of this embodiment, firstly, the number of nodes that a switching node can connect to in the next layer of switching nodes is counted. Then, the digest result is divided by the number of nodes, and the remainder of the division result is taken as the target remainder, wherein the target remainder is not greater than an integer number of nodes.
[0271] In step 1050, firstly, the output ports of the switching nodes are indexed based on the number of nodes in the next-layer switching node, ensuring that the index number of each output port is no greater than the number of nodes. For example, the index numbers of the output ports are marked as integers from 1 to the number of nodes. Next, the output ports with the same index number and remainder are determined as the output ports corresponding to the available port numbers.
[0272] In step 1060, after all available port numbers in the set of available port numbers have been traversed, each output port of each switching node will correspond to at least one available port number. Therefore, all available port numbers corresponding to the same output port are grouped together, and this group is used as the output port number group corresponding to that output port, thereby obtaining the output port number group corresponding to each output port of the switching node.
[0273] like Figure 11B The diagram illustrates the specific process of assigning available port numbers from the available port number set to the k output ports of a switching node. Specifically, while keeping the quadruple unchanged, the available port numbers in the available port number set are traversed, and each available port number is combined with a quadruple (source address, destination address, destination port number, and protocol number) to form a second probe packet. This packet is then input into a digest function for digest operation, yielding the target remainder corresponding to each available port number. The target remainder is one of k outputs. Finally, based on the outputs corresponding to the various available port numbers in the available port number set, the available port numbers are assigned to k different output port number groups, resulting in output port number group 1 corresponding to output port 1 of the switching node, ..., and output port number group K corresponding to output port K of the switching node.
[0274] The advantage of this embodiment is that the same digest algorithm and preset seed are used for digest operation for each available port number in the set of available port numbers. At the same time, a method is introduced to determine the correspondence between available port numbers and output ports of the switching node by performing a modulo operation on the digest result and the number of nodes connected to the next layer of switching nodes. This can conveniently and accurately allocate available port numbers to each output port of the switching node, realize the reasonable allocation and management of output port number groups of each output port. So that when a message needs to be sent out through a certain output port of the switching node, the source port number in the message can be set to any available port number in the output port number group corresponding to that output port, which is beneficial to improving the efficiency and reliability of data transmission.
[0275] When all layers of a switching network use the same digest algorithm and digest seed for digest operations, the routing results of different switching nodes become quite similar. This means that packets from different network devices tend to be sent out through the same outgoing ports at different switching nodes. Consequently, many packets rely on the same connection paths during transmission, leading to excessive traffic concentration in the switching network and hash polarization. Therefore, in this embodiment, different hash seeds and / or different hash functions can be configured for different electronic devices in the switching network to introduce differentiation and minimize hash polarization.
[0276] like Figure 12 The diagram illustrates the unified configuration of switch routes for switching nodes at various layers by the central controller of the switching network. Switch routes include a digest algorithm and a digest seed. Specifically, the goal of route configuration is to ensure that all switching nodes at the same layer have consistent routing results, while routing results differ between switching nodes at different layers. For example, for access layer switch route digest configuration, the digest algorithms for access layer switches L0, L1, ..., LI are all configured as XOR-based digest algorithm L, and the digest seed used is also configured as digest seed L. For aggregation layer switch route digest configuration, the digest algorithms for aggregation layer switches S0, S1, ..., SJ are all configured as XOR-based digest algorithm S, and the digest seed used is also configured as digest seed S. For core layer switch route digest configuration, the digest algorithms for core layer switches C0, C1, ..., CK are all XOR-based digest algorithm C, and the digest seed used is also configured as digest seed C. Here, K, J, and I are all integers greater than 1. XOR-based digest algorithms refer to XOR-based digest algorithms, which result in a definite change in the output due to a relative change in the input.
[0277] In one embodiment, the plurality of switching nodes include at least one access layer switch connected to the first network device and at least one aggregation layer switch connected to the at least one access layer switch; the number of nodes includes a first sub-number of at least one access layer switch and a second sub-number of at least one aggregation layer switch; the preset seed includes a first seed and a second seed, and the preset digest algorithm includes a first digest algorithm and a second digest algorithm.
[0278] The first sub-number indicates the total number of access layer switches that the first network device can physically connect to. The second sub-number indicates the total number of aggregation layer switches that a single access switch can physically connect to.
[0279] The first seed refers to the digest seed used when assigning available outgoing port numbers to the outgoing ports of an access layer switch. The second seed refers to the digest seed used when assigning available outgoing port numbers to the outgoing ports of an aggregation layer switch.
[0280] The first digest algorithm refers to the digest algorithm used when assigning available outgoing port numbers to outgoing ports connected to access layer switches. The second digest algorithm refers to the digest seed used when assigning available outgoing port numbers to outgoing ports connected to aggregation layer switches.
[0281] It should be noted that the first seed and the second seed are different, and the first digest algorithm and the second digest algorithm are different.
[0282] In this embodiment, step 1030 may include:
[0283] Based on the first seed and the second probe packet, the first digest algorithm is used to perform a digest operation to obtain the first result corresponding to the available port number;
[0284] Based on the second seed and the second probe packet, a digest operation is performed using the second digest algorithm to obtain the second result corresponding to the available port number.
[0285] In this specific implementation, the specific process of performing digest calculation based on the first seed and the first digest algorithm, and the specific process of performing digest calculation based on the second seed and the second digest algorithm, are similar to the specific description of step 1030 described above. The difference is that the input data for both digest calculations in this embodiment is the second probe packet, but the seed and digest algorithm used in the digest calculation are different, so the first result and the second result corresponding to the available port number are also different. To save space, these will not be elaborated further.
[0286] Step 1040 may include:
[0287] Based on the first result and the first number of sub-series, perform a modulo operation to obtain the first remainder;
[0288] Based on the second result and the number of second sub-sequences, a modulo operation is performed to obtain the second remainder.
[0289] In the specific implementation of this embodiment, the specific process of performing modulo operations based on the first result and the first number of sub-sub ...
[0290] Step 1050 may include:
[0291] Based on the first remainder, determine an output port corresponding to the available port number for connecting to the access layer switch;
[0292] Based on the second remainder, determine an output port corresponding to the available port number for connecting to the aggregation layer switch.
[0293] In the specific implementation of this embodiment, the specific process of determining the output port of the access layer switch corresponding to the available port number, and the specific process of determining the output port of the aggregation layer switch corresponding to the available port number, are similar to the specific description of step 1050 above. The difference lies in that the first remainder and the second remainder are different, and the number of output ports connected to the access layer switch and the number of output ports connected to the aggregation layer switch are different. Therefore, the output ports of the switches corresponding to the same available port number are different at different layers. To save space, these will not be elaborated further.
[0294] The advantage of this embodiment is that, during switch routing configuration, different digest algorithms and digest seeds are set for switching nodes at different levels, while the same digest algorithm and digest seed are set for switching nodes at the same level. This effectively reduces hash polarization between different levels of the switching network, enabling the entire switching network to achieve load balancing during data transmission. Simultaneously, for the same level, only one switching node needs to be assigned available port numbers to extend to any switching node in the entire level, which can improve the efficiency of available port number grouping to a certain extent and enhance the uniformity of outgoing port number groups for switching nodes at the same level.
[0295] The following is combined Figures 13A-13C The following is an example description of a specific process by which a controller in a switching network assigns a group of output port numbers to each output port of a switching node, according to one embodiment of the present disclosure.
[0296] It should be noted that because the number of switching nodes at different layers of a switched network often varies, and the digest algorithms and digest seeds set during routing configuration also differ between switching nodes at different layers, the outgoing port number packets of switching nodes at different layers are also different. However, the outgoing port number packets of switching nodes at the same layer are often consistent.
[0297] In this example, the set of available port numbers contains 16 available port numbers, and these 16 available port numbers are integers from 1 to 16. Figure 2 The outgoing port grouping is determined by the outgoing ports of each switch at each level along the route from server H0 to server H4.
[0298] from Figure 2It can be seen that the connection from server H0 to server H4 requires passing through 5 links in the switching network. The links are as follows: from server H0 uplink to the access layer switch in network module 0, from the access layer switch in network module 0 uplink to the aggregation layer switch in network module 0, from the aggregation layer switch in network module 0 uplink to the core layer and downlink to the aggregation layer switch in network module 1, from the aggregation layer switch in network module 1 downlink to the access layer switch in network module 1, and from the access layer switch in network module 1 downlink to server H4.
[0299] like Figure 13A As shown, in the outgoing port number grouping corresponding to the aggregation layer switch in the uplink route of the access layer switch, taking access layer switch L1 as an example, access layer switch L1 has four different outgoing ports that can connect to the next layer aggregation layer switch. One outgoing port connects to aggregation layer switch S0, one to aggregation layer switch S1, one to aggregation layer switch S2, and one to aggregation layer switch S3. Based on this, according to the digest algorithm and preset seed set during the routing configuration of the access layer switch, and with the number of nodes determined to be 4, digest and modulo operations are performed to divide the 16 available port numbers into four groups. Finally, the outgoing port number groups corresponding to the four outgoing ports of access layer switch L1 are obtained. Specifically, the available port numbers of the output port group SG2 of the output port of access layer switch L1 connecting to aggregation layer switch S0 are 3, 7, 11, and 15, respectively; the available port numbers of the output port group SG3 of the output port of access layer switch L1 connecting to aggregation layer switch S0 are 4, 8, 12, and 16, respectively; the available port numbers of the output port group SG0 of the output port of access layer switch L1 connecting to aggregation layer switch S0 are 1, 5, 9, and 13, respectively; and the available port numbers of the output port group SG1 of the output port of access layer switch L1 connecting to aggregation layer switch S0 are 2, 6, 10, and 14, respectively. And so on, the output port groups corresponding to the output ports of other access layer switches in the access layer of the switching network are consistent with those of access layer switch L1. For example, the available port numbers of the output port group of the access layer switch L0 / access layer switch L2 / access layer switch L3 connected to the aggregation layer switch S0 are also 3,7,11,15, and the available port numbers of the output port group of the uplink connection of access layer switch L4 / access layer switch L5 / access layer switch L6 to the aggregation layer switch S4 are also 3,7,11,15.
[0300] like Figure 13BAs shown, in the outgoing port number grouping corresponding to the core layer switch in the uplink route of the aggregation layer switch, taking aggregation layer switch S0 as an example, aggregation layer switch S0 has two different outgoing ports that can connect to the next-layer core layer switch. One outgoing port connects to core layer switch C0, and the other connects to core layer switch C1. Based on this, according to the digest algorithm and preset seed set during the routing configuration of the aggregation layer switch, and with the number of nodes determined to be 2, digest and modulo operations are performed to divide the 16 available port numbers into two groups. Finally, the outgoing port number groups corresponding to the two outgoing ports of aggregation layer switch S0 are obtained. Among them, the available port numbers of the outgoing port number group CG1 of the outgoing port of aggregation layer switch S0 connecting to core layer switch C0 are 1, 2, 3, 4, 5, 6, 7, 8 in sequence; the available port numbers of the outgoing port number group CG0 of the outgoing port of aggregation layer switch connecting to core layer switch C1 in the uplink are 9, 10, 11, 12, 13, 14, 15, 16 in sequence. Similarly, the outgoing port number groups corresponding to the outgoing ports of other aggregation layer switches in the aggregation layer of the switching network are consistent with those of aggregation layer switch S0. For example, the available port numbers corresponding to the outgoing port number groups of one outgoing port connected to the core layer switch by aggregation layer switches S1, S2, and S3 are also 1, 2, 3, 4, 5, 6, 7, and 8, while the available port numbers corresponding to the outgoing port number groups of one outgoing port connected to the core layer switch by aggregation layer switches S4, S5, S6, and S7 are also 1, 2, 3, 4, 5, 6, 7, and 8.
[0301] like Figure 13CAs shown, in the outgoing port number grouping of the access layer switches corresponding to the downlink routing of the aggregation layer switch, taking aggregation layer switch S4 as an example, aggregation layer switch S4 has two different outgoing ports that can connect to the next layer access layer switches. One outgoing port connects to access layer switch L4, and the other outgoing port connects to access layer switch L5. Based on this, according to the digest algorithm and preset seed set during the routing configuration of the aggregation layer switch, and with the number of nodes determined to be 2, digest and modulo operations are performed to divide the 16 available port numbers into two groups. Finally, the outgoing port number groups corresponding to the two outgoing ports of aggregation layer switch S4 are obtained. Among them, the available port numbers of the outgoing port number group LG1 of the outgoing port of aggregation layer switch S4 connecting to access layer switch L4 are 5, 6, 7, 8, 13, 14, 15, 16 in sequence; the available port numbers of the outgoing port number group LG0 of the downlink connecting to access layer switch L5 of aggregation layer switch are 1, 2, 3, 4, 9, 10, 11, 12 in sequence. Similarly, the outgoing port number groups corresponding to the outgoing ports of each downlink route of the other aggregation layer switches in the aggregation layer of the switching network are consistent with those of aggregation layer switch S4. For example, the available port numbers corresponding to the outgoing port number groups of one downlink connection access layer switch of aggregation layer switches S5, S6, and S7 are also 1, 2, 3, 4, 9, 10, 11, and 12.
[0302] It should be noted that in the above example, the outgoing port number group corresponding to the access layer switch is represented by SGi. Since the access layer switch connects to 4 aggregation layer switches upstream, i = 0, 1, 2, 3. Similarly, the outgoing port number group corresponding to the aggregation layer switch is represented by CGi. Since the aggregation layer switch connects to 2 core layer switches upstream, i = 0, 1. Likewise, since the aggregation layer switch of network module 1 connects to 2 access layer switches downstream between servers H0 and H4, the outgoing port number group corresponding to the aggregation layer switch is represented by LGi, i = 0, 1.
[0303] It should be noted that, due to Figure 2 Once the aggregation layer switch to which the first network device in the network is connected uplink is completely determined, the aggregation layer switch to which the next network device continues the uplink connection, regardless of which core layer switch it connects to, is also uniquely determined. Therefore, when considering the changes in the connection path from the first network device to the second network device, it is only necessary to consider which access layer switch the first network device connects to uplink, which aggregation layer switch it connects to uplink from the access layer switch, and which access layer switch it connects to downlink from the aggregation layer switch. It is not necessary to consider the selection of the connection path from the aggregation layer switch to the core layer switch or from the core layer switch to the aggregation layer switch.
[0304] Furthermore, since the routing configuration mentioned above specifies that the digest algorithm and seed of switching nodes at the same level in the switching network should be set to be the same, when allocating available port numbers in this embodiment of the disclosure, it is only necessary to select a pair of servers across network modules in the switching network for probing. This is because all network devices behave the same way, and the behavior of switching nodes at the same level is also the same. Therefore, it is only necessary to select a pair of servers across network modules (e.g., server H0 and server 4) for probing to extend the allocation results of available port numbers to all switching nodes in the entire switching network.
[0305] Step 530 will be described in detail below.
[0306] In step 530, candidate port number groups are generated based on the intersection of the outgoing port number groups of each switching node on the connection path.
[0307] The following is combined Figures 14A-14C The exchange network is Figure 2 The following example illustrates the specific process of generating candidate port number groups for a connection path.
[0308] like Figure 14AThe diagram illustrates the different connection paths that different outgoing port number groups will lead to in a data flow. Specifically, source server H0 has two outgoing ports (i.e., network ports): port p0 and port p1. The outgoing port number groups corresponding to port p0 and port p1 are determined according to the specific methods described in steps 1010-1040 above. Furthermore, since there are four outgoing port number groups when the data flows from access layer switch L0 to the aggregation layer, the outgoing port number of outgoing port number group SG2 will cause the data flow to travel from access layer switch L0 to aggregation layer switch S0, and then downlink to aggregation layer switch S4 via core layer switch C0 / core layer switch C1. The outgoing port number of outgoing port number group SG3 will cause the data flow to travel from access layer switch L0 to aggregation layer switch S1, and then downlink to aggregation layer switch S5 via core layer switch C2 / core layer switch C3. The outgoing port number of port group SG0 will allow data flow from access layer switch L0 to aggregation layer switch S3, and then downlink through core layer switches C4 / C5 to aggregation layer switch S6. The outgoing port number of port group SG1 will allow data flow from access layer switch L0 to aggregation layer switch S3, and then downlink through core layer switches C6 / C7 to aggregation layer switch S4. Similarly, since there are two outgoing port groups when flowing downlink from aggregation layer switch S4 to the access layer, the outgoing port number of port group LG1 will allow data flow from aggregation layer switch S4 to access layer switch L4, and then downlink through access layer switch L4 to destination server H4. The outgoing port number of port group LG0 will allow data flow from aggregation layer switch S4 to access layer switch L5, and then downlink through access layer switch L5 to destination server H4. Similarly, the situation where source server H0 sends a data stream to destination server H4 via access layer switch L1 is the same as the situation where a data stream is sent via access layer switch L0, and the situation where source server H0 sends a data stream to destination server H4 via aggregation layer switch S5, aggregation layer switch S6, and aggregation layer switch S6 is the same as the situation where a data stream is sent via aggregation layer switch S4.
[0309] like Figure 14BThe diagram illustrates the specific outgoing port numbers required for the successful transmission of packets from source server H0 to destination server H4 across various switching nodes. Specifically, when a packet is sent from source server H0 to the access layer, if the source port number (the outgoing port number corresponding to one outgoing port of the source server) is 1-6, the packet can be successfully transmitted to access layer switch L0; if the source port number is 9-16, the packet can be successfully transmitted to access layer switch L1. Similarly, if the source port number is 3 or 7, the packet can be successfully transmitted from access layer switch L0 to aggregation layer switch S0 and then to aggregation layer switch S4. If the source port number is 11 or 15, the packet can be successfully transmitted from access layer switch L1 to aggregation layer switch S0 and then to aggregation layer switch S4. When the source port number (the outgoing port number corresponding to one outgoing port of access layer switch L0) in the message is 4 or 8, the message can be successfully transmitted from access layer switch L0 to aggregation layer switch S1 and then to aggregation layer switch S5. When the source port number (the outgoing port number corresponding to one outgoing port of access layer switch L1) in the message is 12 or 16, the message can be successfully transmitted from access layer switch L1 to aggregation layer switch S1 and then to aggregation layer switch S5. When the source port number (the outgoing port number corresponding to one outgoing port of access layer switch L0) in the message is 1 or 5, the message can be successfully transmitted from access layer switch L0 to aggregation layer switch S2 and then to aggregation layer switch S6. When the source port number (the outgoing port number corresponding to one outgoing port of access layer switch L1) in the message is 9 or 13, the message can be successfully transmitted from access layer switch L1 to aggregation layer switch S2 and then to aggregation layer switch S6. When the source port number (the outgoing port number corresponding to one outgoing port of access layer switch L0) in the message is 2 or 6, the message can be successfully transmitted from access layer switch L0 to aggregation layer switch S3 and then to aggregation layer switch S7. When the source port number (the outgoing port number corresponding to one outgoing port of access layer switch L1) in the message is 10 or 14, the message can be successfully transmitted from access layer switch L1 to aggregation layer switch S3 and then to aggregation layer switch S7. Furthermore, when the source port number (the outgoing port number corresponding to one outgoing port of aggregation layer switch S4) in the message is 7 or 15, the message can be successfully transmitted from aggregation layer switch S4 to access layer switch L4 and then to destination server H4. When the source port number (the outgoing port number corresponding to one outgoing port of aggregation layer switch S4) in the message is 3 or 11, the message can be successfully transmitted from aggregation layer switch S4 to access layer switch L5 and then to destination server H4.When the source port number (the outgoing port number corresponding to one outgoing port of aggregation layer switch S5) in the message is 8 or 16, the message can be successfully transmitted from aggregation layer switch S5 to access layer switch L4 and reach the destination server H4. When the source port number (the outgoing port number corresponding to one outgoing port of aggregation layer switch S5) in the message is 4 or 12, the message can be successfully transmitted from aggregation layer switch S5 to access layer switch L5 and reach the destination server H4. When the source port number (the outgoing port number corresponding to one outgoing port of aggregation layer switch S6) in the message is 5 or 13, the message can be successfully transmitted from aggregation layer switch S6 to access layer switch L4 and reach the destination server H4. When the source port number (the outgoing port number corresponding to one outgoing port of aggregation layer switch S6) in the message is 1 or 9, the message can be successfully transmitted from aggregation layer switch S6 to access layer switch L5 and reach the destination server H4. When the source port number (the outgoing port number corresponding to one outgoing port of aggregation layer switch S7) in the message is 6 or 14, the message can be successfully transmitted from aggregation layer switch S7 to access layer switch L4 and reach the destination server H4. When the source port number (the outgoing port number corresponding to one outgoing port of aggregation layer switch S7) in the message is 2 or 10, the message can be successfully transmitted from aggregation layer switch S7 to access layer switch L5 and reach the destination server H4.
[0310] like Figure 14CThe diagram shows a table illustrating candidate port number groups and their corresponding connection paths, formed by intersecting and grouping the outgoing port number groups of the switching nodes at each level. Specifically, when source server H0 chooses to use network port 0 (p0) for packet transmission, the connection paths that enable source server H0 to successfully transmit packets to destination server H4 are those with path numbers from 1 to 8. For connection path number 1, the switching nodes on this path are L0-S2-C4 / 5-S6-L5, and the candidate port number group includes candidate port number 1. This means that source server H0 can only transmit packets to destination server H4 through connection path 1 if the source port number of the packet is 1. For connection path number 2, the switching node on this path is L0-S3-C6 / 7-S7-L5, and the candidate port number group includes candidate port number 2. This means that source server H0 can only transmit the packet to destination server H4 through connection path 2 if the source port number of the packet is 2. Similarly, when source server H0 chooses to use network port 1 (i.e., p1) for packet transmission, the connection paths that enable source server H0 to successfully transmit the packet to destination server H4 are connection paths with path numbers 9 to 16. Specifically, for connection path number 10, the switching node on this path is L1-S3-C6 / 7-S7-L5, and the candidate port number group includes candidate port number 10. This means that source server H0 can only transmit the packet to destination server H4 through connection path 1 if the source port number of the packet is 10.
[0311] It should be noted that the path numbers and candidate port number groups for each connection path are not entirely the same. The example above illustrates only a special case, which is affected by the digest algorithm and digest seed used by the switching nodes at different levels. Furthermore, in reality, the number of candidate port numbers in the candidate port number groups corresponding to each connection path is not absolutely 1 or absolutely identical; the example above only illustrates a very special case.
[0312] Step 540 will be described in detail below.
[0313] In step 540, a first probe packet is sent using the candidate port number in the candidate port number group as the source port number to obtain the probe result. Based on the probe result, the target path to the second network device is determined so that the first network device can communicate with the second network device through multiple switching nodes in the target path.
[0314] Please refer to Figure 15 In one embodiment, step 540 specifically includes, but is not limited to, the following steps 1510-1530:
[0315] Step 1510: For the connection path corresponding to the candidate port number group, extract a candidate port number from the candidate port number group as the source port number, and determine the path sequence number of the connection path.
[0316] Step 1520: Generate the first probe packet based on the source port number and path sequence number;
[0317] Step 1530: Send the first probe packet and use the first probe packet to perform load probing on the switching nodes on the connection path corresponding to the candidate port number group, and obtain the probe results of the connection path corresponding to the candidate port number group.
[0318] Steps 1510-1530 are described in detail below.
[0319] In step 1510, the path number is used to distinguish and identify different connection paths.
[0320] In this specific implementation, since the path numbers of each connection path in the switching network are pre-defined, with authorization, the path number pre-defined for the connection path can be found based on the switching nodes and links included in the connection path corresponding to the candidate port number group, thereby determining the path number of the connection path. Simultaneously, since candidate port numbers in the same candidate port number group point to the same connection path, when performing load probing on each connection path, it is unnecessary to extract each candidate port number from the same candidate port number group to construct the first probe packet, as this would lead to repeated probing of the same connection path. Therefore, for the connection path corresponding to the candidate port number group, a candidate port number can be randomly extracted from the candidate port number group as the source port number.
[0321] In step 1520, since the first device address of the first network device, the second device address of the second network device, and the destination port number are fixed during the communication connection between the first network device and the second network device, the source port number, the first device address of the first network device, the second device address of the second network device, and the destination port number are written into the UDP header of the first probe packet, and the path sequence number is written into the custom header of the first probe packet. Simultaneously, a field space for loading connection path load information and congestion location information is set in the custom header of the first probe packet, thereby obtaining the first probe packet.
[0322] Since the candidate port number groups and path sequence numbers corresponding to different connection paths are different, the first probe packets of different connection paths are also different.
[0323] In step 1530, after generating the first probe packets for each connection path, the first network device sends the first probe packets to the second network device through the connection path, and writes its own load and congestion status into the first probe packets through each switching node on the connection path. When the second network device receives the first probe packets, the first probe packets contain the load status of the switching nodes on the connection path. Therefore, the second network device generates a probe response packet based on the load status of the switching nodes on the connection path recorded in the received first probe packets, and writes the probe results into the probe response packet and returns it to the first network device, so that the first network device obtains the probe results of the connection path corresponding to the candidate port number group.
[0324] The advantage of this embodiment is that, for the connection path corresponding to the candidate port number group, only one candidate port number is randomly selected from each candidate port number group as the source port number to generate the first probe packet, instead of traversing all candidate port numbers in the candidate port number group. This method, compared to constructing probe packets using all available port numbers in the available port number set as source port numbers for path load probing, can effectively reduce repeated probing of the same connection path, thereby improving load probing efficiency. Simultaneously, since the candidate port number group is obtained by taking the intersection of the outgoing port number groups of each switching node on the same connection path, it indicates that the candidate port numbers in the candidate port number group are a series of port numbers that will definitely enable the data flow to be successfully transmitted from the first network device to the second network device through the corresponding connection path. This completely eliminates those ports that cannot successfully transmit the data flow through the selected connection path. Therefore, to a certain extent, after setting the candidate port number as the source port number, it is possible to deterministically know which connection path the data flow corresponding to the first probe packet traverses, thus achieving load probing of deterministic paths.
[0325] Please refer to Figure 16 In one embodiment, step 1520 specifically includes, but is not limited to, the following steps 1610-1630:
[0326] Step 1610: Initialize the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the outgoing port communication queue corresponding to the connection path to 0, so as to obtain the initial load information.
[0327] Step 1620: Determine the first device address of the first network device, the second device address of the second network device, and the destination port number on which the first network device and the second network device communicate.
[0328] Step 1630: Pack the first device address, the second device address, the path number, the source port number, the destination port number, and the initial load information into a first probe packet, and set the probe flag corresponding to the first probe packet to a first value.
[0329] Steps 1610-1630 are described in detail below.
[0330] In step 1610, the outgoing port bottleneck bandwidth utilization is used to indicate the maximum outgoing port bandwidth utilization among the various switching nodes on the connection path.
[0331] The outgoing port communication queue refers to the queue of messages to be processed by each outgoing port of each switching node on the connection path.
[0332] The outgoing port bottleneck queue length indicates the maximum length of the outgoing port communication queue for each outgoing port of each switching node on the connection path. The length of the outgoing port communication queue represents the number of messages that the outgoing port needs to process / transmit.
[0333] Initial load information is used to indicate the load status of each switching node in the connection path before the first probe packet is sent.
[0334] In the specific implementation of this embodiment, when generating the first probe packet, the field values corresponding to the load information fields in the first probe packet, such as the outgoing port bottleneck bandwidth utilization rate and the outgoing port bottleneck queue length of the outgoing port communication queue, are all initialized to 0.
[0335] In step 1620, since the first device address of the first network device, the second device address of the second network device, and the destination port number on which the first network device and the second network device communicate are often fixed and used when the first network device and the second network device establish a communication connection using the source connection path, the first device address of the first network device, the second device address of the second network device, and the destination port number on which the first network device and the second network device communicate can be directly invoked.
[0336] In step 1630, the probe flag is used to identify the specific type of message / data packet transmitted on the connection path. A first value indicates that the message / data packet transmitted on the connection path has probe functionality. When the probe flag is not the first value, it indicates that the message / data packet does not have probe functionality. For example, setting the first value to 1 and uniformly setting the probe flag of data packets or messages without probe functionality to 0.
[0337] Taking the example of a message using the UDP protocol at the transport layer in an embodiment of this disclosure, the following is provided: Figure 17A The diagram shows the message format of the data packet, and as shown in the figure. Figure 17B The diagram shows the message format of the probe message (first probe packet).
[0338] like Figure 17AAs shown, the message format of a data packet typically includes an Eth header, IP header, UDP header, custom header, and payload field. Among these, the destination port number, source port number, UDP length, checksum, and other fields related to the UDP protocol are recorded in the UDP header. The probe flag field and other fields related to the custom protocol are recorded in the custom protocol field. In addition, the service information and messages to be transmitted in the data packet are recorded in the payload field. It should be noted that data packets are often used only for data transmission and not for probing, so their probe flag field is generally not the first value.
[0339] like Figure 17B As shown, the message format of the first probe packet (probe message) often includes an Eth header, an IP header, a UDP header, and a custom header. The destination port number, source port number, UDP length, checksum, and other UDP-related fields are recorded in the UDP header. The probe flag field, load information, congestion location information field, and other fields related to the custom protocol are recorded in the custom protocol. Since the first probe packet (probe message) is used to perform load probing on various connection paths, its probe flag field is generally set to the first value. The load information reflects the bottleneck load on the connection path, and the congestion location information indicates the location of the switching node causing the bottleneck load on the connection path.
[0340] It should be noted that a custom protocol refers to a protocol defined to implement the network routing processing method provided in the embodiments of this disclosure, and a custom header refers to the header corresponding to the custom protocol.
[0341] In this specific implementation, the first device address, the second device address, the source port number, and the destination port number are packaged into the UDP header of the first probe packet, the path sequence number and the initial payload information are packaged into the custom header of the first probe packet, and the probe flag corresponding to the first probe packet is set to the first value and recorded in the custom header of the first probe packet, thereby obtaining the first probe packet.
[0342] The advantage of this embodiment is that the data format of the first probe packet is set in a relatively standardized manner, which can comprehensively determine the information to be probed for each switching node on the connection path and the information to be recorded in the first probe packet. Since the first probe packet simultaneously includes load information and congestion location information fields, the data in the first probe packet becomes more diverse, which is beneficial for a comprehensive analysis of the load situation of the connection path, thereby improving the accuracy of path selection. Furthermore, the probe flag set for the first probe packet helps to quickly distinguish between packets with probe functionality and those without, thereby improving the processing efficiency of the switching node for different packets.
[0343] Please refer to Figure 19 In one embodiment, step 1530 specifically includes, but is not limited to, the following steps 1910-1930:
[0344] Step 1910: Determine the probe order of the switching nodes on the connection path;
[0345] Step 1920: Based on the probe order, the first probe packet is sent sequentially to the switching nodes on the connection path, so that when the outgoing port bandwidth utilization of each switching node is greater than the outgoing port bottleneck bandwidth utilization, the outgoing port bottleneck bandwidth utilization is updated with the outgoing port bandwidth utilization, and when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length, the outgoing port bottleneck queue length is updated with the outgoing port communication queue length. When the second network device receives the first probe packet, it generates a target data packet based on the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length, and sends the target data packet to the first network device.
[0346] Step 1930: Receive the target data packet and determine the detection result of the connection path based on the outgoing port bottleneck queue length and outgoing port bottleneck bandwidth utilization recorded in the target data packet.
[0347] Steps 1910-1930 are described in detail below.
[0348] In step 1910, the probe sequence is used to indicate the order in which the first probe packet passes through the switching nodes on the connection path.
[0349] In the specific implementation of this embodiment, firstly, the switching nodes that will be traversed along the connection path are determined. Then, based on the order in which the switching nodes are traversed along the connection path from the first network device to the second network device, the detection order of the switching nodes along the connection path is determined.
[0350] For example, Figure 14C The connection path with path number 1 has the following switching nodes: L0-S2-C4 / 5-S6-L5. Therefore, the detection order of the switching nodes on this connection path is: access layer switch L0, aggregation layer switch S2, core layer switch C4, aggregation layer switch S6, and access layer switch L5.
[0351] In step 1920, the outgoing port bandwidth utilization rate is used to indicate the bandwidth utilization rate corresponding to the outgoing port recorded locally by each switching node. The outgoing port communication queue length is the length of the queue formed by the pending packets corresponding to the outgoing ports recorded locally by each switching node. The target data packet refers to the probe acknowledgment packet / probe reply packet returned by the second network device to the first network device in response to the first probe packet.
[0352] In this specific implementation, based on the probing order, the first network device sequentially sends the first probe packet to the switching nodes along the connection path. Specifically, the first network device first sends the first probe packet to the access layer switch along the connection path. At this time, the access layer switch to which the first network device is physically connected collects locally recorded data on the outgoing port bandwidth utilization and outgoing port communication queue length of the outgoing ports used in the connection path. Since the outgoing port bottleneck queue length and outgoing port bottleneck bandwidth utilization in the first probe packet are both 0, the access layer switch records the collected outgoing port bandwidth utilization and outgoing port communication queue length in the first probe packet and routes the updated first probe packet uplink to the aggregation layer switch along the connection path. At this time, the aggregation layer switch collects locally recorded data on the outgoing port bandwidth utilization and outgoing port communication queue length of the outgoing ports used in the connection path. Next, when the aggregation layer switch detects that its own egress port bandwidth utilization is greater than the egress port bottleneck bandwidth utilization recorded in the first probe packet, it updates the egress port bottleneck bandwidth utilization with the egress port bandwidth utilization. Similarly, when its own detected egress port communication queue length is greater than the egress port bottleneck queue length recorded in the first probe packet, it updates the egress port bottleneck queue length with the egress port communication queue length. This updates the first probe packet, and the updated first probe packet continues to be transmitted. This process is repeated, continuously updating the first probe packet until it is finally sent to the second network device. Upon receiving the first probe packet, the second network device generates a target data packet based on the egress port bottleneck bandwidth utilization and the egress port bottleneck queue length, and sends the target data packet to the first network device.
[0353] In step 1930, when the second network device receives the first probe packet, it generates a target data packet based on the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length, and sends the target data packet to the first network device. Therefore, the first network device will receive the target data packet returned by the second network device. The target data packet records information such as path sequence number, outgoing port bottleneck queue length, and outgoing port bottleneck bandwidth utilization. The first network device can determine which connection path the outgoing port bottleneck queue length and outgoing port bottleneck bandwidth utilization point to based on the path sequence number, thereby determining the probe result of the connection path with that path sequence number.
[0354] like Figure 18As shown, the first network device simultaneously sends first probe packets to the connection paths corresponding to multiple candidate port number groups within the same batch. This ensures that each first probe packet generated by the first network device reaches the second network device along its corresponding connection path, and the target data packet generated by the second network device also reaches the first network device along its corresponding connection path. For example, if the first probe packet 1 generated by the first network device reaches the second network device along connection path 1 corresponding to candidate port number group 1, then the target data packet 1 generated by the second network device will also reach the first network device along connection path 1 corresponding to candidate port number group 1.
[0355] The advantage of this embodiment is that, when performing load probing on each switching node of the connection path, the detection order for load probing on each switching node of the connection path is determined according to the transmission direction of the packets of the first network device and the second network device on the connection path. Furthermore, according to the detection order, the first probe packet is sent to each switching node in sequence, and each switching node continuously updates the load information and congestion location information of the first probe packet according to the outgoing port bandwidth utilization and outgoing port communication queue length of the outgoing port used in the connection path, which is different from the method of recording all the outgoing port bandwidth utilization and outgoing port communication queue length of each switching node in the first probe packet. This embodiment of the present disclosure only updates the outgoing port bottleneck bandwidth utilization and outgoing port bottleneck queue length of the first probe packet according to the outgoing port bandwidth utilization and outgoing port communication queue length of each switching node. This can effectively reduce the data size of the first probe packet, improve the transmission rate of the first probe packet, and thus improve the load probing efficiency of each switching node of the connection path.
[0356] Please refer to Figure 20 In one embodiment, step 1920 specifically includes, but is not limited to, the following steps 2010-2030:
[0357] Step 2010: Extract the destination port number and probe marker from the first probe packet;
[0358] Step 2020: Perform the first verification of the destination port number and probe marker;
[0359] Step 2030: In response to the first verification being passed, each switching node in the connection path updates the outgoing port bottleneck bandwidth utilization rate with the outgoing port bandwidth utilization rate when the outgoing port bandwidth utilization rate of the switching node is greater than the outgoing port bottleneck bandwidth utilization rate, and updates the outgoing port bottleneck queue length with the outgoing port communication queue length when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length.
[0360] Steps 2010-2030 are described in detail below.
[0361] In step 2010, since the first probe packet is generated as described above, the UDP header of the first probe packet records the destination port number written by the first network device, and the custom protocol header records the probe flag written by the first network device. Based on this, with authorization, when the switching node receives the first probe packet, it can extract the destination port number from the UDP header of the first probe packet and the probe flag from the custom protocol header of the first probe packet.
[0362] In step 2020, during the first verification of the destination port number and probe flag, the switching node first checks whether the destination port number in the first probe packet corresponds to the destination port number of the custom protocol. If the destination port number in the UDP header of the first probe packet corresponds to the destination port number of the custom protocol, it further checks whether the value of the probe flag in the custom header is a first value. Based on this, if the destination port number in the UDP header of the first probe packet corresponds to the destination port number of the custom protocol and the value of the probe flag in the custom header is the first value, the first verification is considered successful. Conversely, if the destination port number in the UDP header of the first probe packet does not correspond to the destination port number of the custom protocol, and / or the value of the probe flag in the custom header is not the first value, the first verification is considered unsuccessful. Here, successful first verification indicates that the format and data of the first probe packet meet the requirements, while unsuccessful first verification indicates that the format and data of the first probe packet do not meet the requirements.
[0363] In step 2030, in response to the successful first verification, it is determined that the format and data of the first probe packet meet the requirements. Based on this, load probing is performed on each switching node along the connection path. This load probing process is basically the same as the specific description of step 1930 above, and will not be repeated here.
[0364] The advantage of this embodiment is that, when performing load probing on each switching node in the connection path, it takes into account the possibility that the probe marker and destination port number provided by the first network device may have errors in format or content. It limits each switching node to first check the destination port number and probe marker recorded in the first probe packet after receiving it. Only when the destination port number and probe marker are verified successfully will load probing be performed on each switching node in the connection path. This can improve the security of load probing to a certain extent.
[0365] In practical applications, the number of candidate port number groups in a switched network is often large, which leads to a large number of connection paths corresponding to these candidate port number groups. If the load of all connection paths corresponding to all candidate port number groups is probed, it often results in long probe times and high resource consumption. Therefore, this disclosure provides a path probing scheme based on a filtering mechanism, which can significantly reduce the number of connection paths to be probed and improve path probing efficiency.
[0366] In this embodiment, the first network device relies on the source connection path among the multiple connection paths when communicating with the second network device.
[0367] Please refer to Figure 21 In this embodiment, step 540 specifically includes, but is not limited to, the following steps 2110-2130:
[0368] Step 2110: For each candidate port number group, determine the path to be examined that the candidate port number group points to;
[0369] Step 2120: Based on the path number of the path to be examined, determine the candidate connection path among multiple paths to be examined;
[0370] Step 2130: For each candidate connection path, use the candidate port number in the candidate port number group corresponding to the candidate connection path as the source port number, send the first probe packet, and obtain the probe result of the candidate connection path.
[0371] Steps 2110-2130 are described in detail below.
[0372] In step 2110, the path to be examined refers to the connection path among multiple connection paths that enables the communication connection between the first network device and the second network device to be successfully established.
[0373] In this specific implementation, since each candidate port number group is obtained by taking the intersection of the outgoing port number groups of each switching node on a connection path, each candidate port number group corresponds to a connection path. Based on this, for each candidate port number group, the connection path corresponding to the candidate port number group is taken as the path to be examined pointed to by the candidate port number group.
[0374] For example, the above Figure 14C The candidate port number group containing candidate port number 1 is obtained by intersecting the outgoing port number groups of each switching node in the connection path (L0-S2-C4 / 5-S6-L5). Therefore, the path to be examined pointed to by the candidate port number group containing candidate port number 1 is L0-S2-C4 / 5-S6-L5.
[0375] In step 2120, to distinguish the various connection paths in the switching network, a path number can be pre-defined for each connection path to differentiate them. Based on this, to avoid overly clustered path probing caused by starting with the connection path with the first path number in each load probe, the probe batch for each path to be examined can be divided based on the difference between the path number of each path to be examined and the path number of the source connection path, and candidate connection paths can be determined from among the multiple paths to be examined.
[0376] In step 2130, the specific process of sending a first probe packet for each candidate connection path to perform load probing is similar to steps 1510-1530 above. To save space, it will not be described again.
[0377] The advantage of this embodiment is that it takes into account the large number of connection paths corresponding to candidate port number groups. If load probing is performed on all connection paths corresponding to candidate port number groups, the detection time will be long and the resource consumption will be high. By filtering the candidate connection paths to be detected based on the difference between the path number of each path to be examined and the path number of the source connection path, the number of connection paths to be detected can be effectively reduced, thereby improving the load probing efficiency.
[0378] Please refer to Figure 22 In one embodiment, step 2120 specifically includes, but is not limited to, the following steps 2210-2230:
[0379] Step 2210: Determine the first path number of the source connection path;
[0380] Step 2220: Among the multiple paths to be examined whose path number is greater than the first path number, determine the path number difference between each path to be examined and the source connection path based on the first path number and the path number.
[0381] Step 2230: Based on the path sequence difference and the preset number, determine the candidate connection path among multiple paths to be examined.
[0382] Steps 2210-2230 are described in detail below.
[0383] In step 2210, the first path number is used to indicate the positional order of the source connection path among multiple connection paths.
[0384] In this specific implementation, since the path numbers of each connection path in the switching network are preset, with authorization, the path number preset for the source connection path can be found based on the switching nodes and links contained in the source connection path, thereby obtaining the first path number of the source connection path.
[0385] In step 2220, the path number difference is used to indicate the degree of difference between the source connection path and the path under investigation in terms of the number position.
[0386] In the specific implementation of this embodiment, for multiple paths to be examined whose path number is greater than the first path number, the path number of each path to be examined is subtracted from the first path number of the source connection path. The path number difference between each path to be examined and the source connection path is obtained by subtracting the first path number of the source connection path from the path number of each path to be examined.
[0387] Furthermore, in some specific embodiments, the scope of obtaining the path number difference can be extended to all paths to be examined, rather than being limited to multiple paths to be examined whose path number is greater than the first path number.
[0388] In step 2230, the preset number indicates the total number of connection paths allowed to perform load probing within the same batch. The probe packets for each connection path within the same batch are sent simultaneously by the first network device.
[0389] In this specific implementation, firstly, for multiple paths to be examined with path numbers greater than the first path number, they are arranged in ascending order of path number difference based on the path number difference, forming a first path sequence. Next, for multiple paths to be examined with path numbers less than the first path number, they are arranged in ascending order of path number difference based on the path number difference, forming a second path sequence. Further, the first and second path sequences are merged, with the first path sequence first and the second path sequence last, to obtain a complete path sequence. Then, a predetermined number of paths to be examined at the top of the path sequence are extracted as candidate connection paths.
[0390] like Figure 23 As shown, the source connection path between the first network device and the second network device is L0-S0-C0 / 1-S4-L4 (e.g., Figure 6 ),according to Figure 14C The first path number of the source connection path is 7. Based on this, when the path to be examined is Figure 14CWhen considering all the connection paths shown, firstly, the path number of each path to be examined is subtracted from the first path number of the source connection path to obtain the path number difference between each path to be examined and the source connection path. The path number differences for the 16 paths to be examined (including the source connection path) are -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, respectively. Next, the paths to be examined (excluding the source connection path) are sorted according to the path number difference, forming the path sequence [connection path 8, connection path 9, connection path 10, connection path 11, connection path 12, connection path 13, connection path 14, connection path 15, connection path 16, connection path 1, connection path 2, connection path 3, connection path 4, connection path 5, connection path 6]. Based on this, when the preset number is 5, the first batch of candidate connection paths are connection path 8, connection path 9, connection path 10, connection path 11, and connection path 12. Furthermore, when the first batch of candidate connection paths are all detected to be heavily loaded, connection paths 13, 14, 15, 16 and 1 are then used as the second batch of candidate connection paths for load detection, in order to find a relatively idle or lightly loaded candidate connection path as the target path.
[0391] The advantage of this embodiment is that, considering that if a certain number of connection paths are selected as candidate connection paths in order of their path numbers during each filtering process, the overlap of the connection paths detected in each routing process will be high, which may cause many network devices to route to the same connection path, resulting in congestion of the selected connection path. The solution is to set the path filtering to select candidate connection paths to be detected based on the difference between the path number of each path to be examined and the path number of the source connection path. This can greatly reduce the number of connection paths to be detected, and while improving the efficiency of path detection, it can differentiate the connection paths selected by different network devices during routing, thereby reducing the risk of each network device routing to the same connection path.
[0392] In this embodiment of the disclosure, the detection results include the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the connection path corresponding to each candidate port number group.
[0393] Please refer to Figure 24 In one embodiment, the specific process of determining the target path to the second network device based on the detection results may include, but is not limited to, the following steps 2410-2420:
[0394] Step 2410: Based on the bottleneck bandwidth utilization of the outgoing port and the second threshold, select multiple intermediate connection paths from the connection paths corresponding to each candidate port number group.
[0395] Step 2420: Determine the target path among multiple intermediate connection paths.
[0396] Steps 2410-2420 are described in detail below.
[0397] In step 2410, the second threshold is used to measure whether there is an outgoing port bottleneck bandwidth utilization (idleness) in the connection path corresponding to each candidate port number group that meets expectations. For example, the second threshold can be set to 30%.
[0398] Intermediate connection paths refer to the connection paths among the candidate port number groups where the idle level meets expectations.
[0399] In this specific implementation, firstly, the outgoing port bottleneck bandwidth utilization rate of the connection path corresponding to each candidate port number group is compared with a second threshold. Then, among the connection paths corresponding to each candidate port number group, the connection paths with an outgoing port bottleneck bandwidth utilization rate less than or equal to the second threshold are determined as intermediate connection paths.
[0400] In step 2420, since the multiple intermediate connection paths are relatively idle connection paths, one of the multiple intermediate connection paths can be randomly selected as the target path.
[0401] Furthermore, in order to maximize the data transmission efficiency of the first network device and the second network device, the intermediate connection path with the lowest outgoing port bottleneck bandwidth utilization can be directly determined as the target path among multiple intermediate connection paths.
[0402] The advantage of this embodiment is that by comparing the outgoing port bottleneck bandwidth utilization and the second threshold, multiple sufficiently idle connection paths can be selected as intermediate connection paths. The target path can then be determined from these multiple sufficiently idle intermediate connection paths. This approach can identify connection paths with higher idle levels to a greater extent, giving the first and second network devices a greater chance to use idle paths for communication. Compared to switching to a non-idle connection path when there is a sufficiently idle connection path, this approach can significantly improve the data transmission efficiency between network devices and fully utilize the transmission resources of idle connection paths in the switching network.
[0403] Please refer to Figure 25 In one embodiment, the specific process of determining the target path to the second network device based on the detection results may include, but is not limited to, the following steps 2510-2520:
[0404] Step 2510: In response to the fact that the outgoing port bottleneck bandwidth utilization of the connection path corresponding to each candidate port number group is greater than the third threshold, the connection path with the smallest outgoing port bottleneck bandwidth utilization is determined as the target path.
[0405] Step 2520: In response to the fact that the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each candidate port number group is greater than the third threshold, and the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each candidate port number group is the same, the connection path with the smallest outgoing port bottleneck queue length is determined as the target path.
[0406] Steps 2510-2520 are described in detail below.
[0407] In step 2510, the third threshold is used to measure whether there is an outgoing port bottleneck bandwidth utilization (idleness) in the connection path corresponding to each candidate port number group that meets expectations.
[0408] It should be noted that the specific values of the third threshold and the second threshold in the embodiments of this disclosure may be the same in some specific examples.
[0409] In this specific implementation, firstly, the outgoing port bottleneck bandwidth utilization of the connection path corresponding to each candidate port number group is compared with a third threshold. Next, if the outgoing port bottleneck bandwidth utilization of the connection path corresponding to each candidate port number group is greater than the third threshold, it indicates that the idle level of the connection path corresponding to each candidate port number group does not meet expectations. Based on this, only one connection path with a lower load can be selected as the target path from among multiple connection paths. Furthermore, since a lower outgoing port bottleneck bandwidth utilization indicates a lower load on the connection path, the connection path with the lowest outgoing port bottleneck bandwidth utilization among the connection paths corresponding to each candidate port number group is determined as the target path.
[0410] In step 2520, firstly, the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each candidate port number group is compared with the third threshold, and the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each candidate port number group is compared with each other. Next, in response to the fact that the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each candidate port number group is greater than the third threshold and the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each candidate port number group is the same, it indicates that the idle level of the connection paths corresponding to each candidate port number group is not as expected, and the bottleneck load of the connection paths corresponding to each candidate port number group has reached its maximum (generally 100%). Based on this, only one connection path with a relatively small number of packets to be transmitted can be selected as the target path. Furthermore, since a larger outgoing port bottleneck queue length indicates a larger number of packets to be transmitted and a longer waiting time, the connection path with the smallest outgoing port bottleneck queue length among the connection paths corresponding to each candidate port number group is determined as the target path.
[0411] Furthermore, for the target path determined in step 2510 or step 2520, a candidate port number is randomly selected from the candidate port number group corresponding to the target path as the source port number, and the selected source port number, the network port number of the first network device, and the path number of the target path are configured on the communication connection between the first network device and the second network device, so that the first network device and the second network device switch from communicating using the source connection path to communicating using the target path.
[0412] The advantage of this embodiment is that, considering the case where the bandwidth utilization of all available connection paths (connection paths corresponding to each candidate port number group) is higher than the third threshold, and given the heavy load on the entire switching network, selecting the connection path with lower outgoing port bottleneck bandwidth utilization as the target path can improve the data transmission efficiency of the first and second network devices while achieving load balancing of the switching network. Furthermore, this embodiment also considers the case where the bandwidth utilization of all available connection paths reaches its maximum, selecting the connection path with the shortest outgoing port bottleneck queue length as the target path can effectively reduce the queuing time of transmitted packets for the first and second network devices, thereby improving the data transmission efficiency between network devices.
[0413] Please refer to Figure 26 In one embodiment, the specific process of determining the target path to the second network device based on the detection results may include, but is not limited to, the following steps 2610-2620:
[0414] Step 2610: For each connection path corresponding to the candidate port number group, determine the first score based on the outgoing port bottleneck bandwidth utilization and the second score based on the outgoing port bottleneck queue length.
[0415] Step 2620: Determine the total path score of the connecting path based on the first score and the second score;
[0416] Step 2630: Based on the total path score, determine the target path to the second network device from the connection paths corresponding to each candidate port number group.
[0417] Steps 2610-2620 are described in detail below.
[0418] In step 2610, the first score indicates the degree to which a connection path is prioritized when filtering paths based on outgoing port bottleneck bandwidth utilization. A higher first score indicates a greater chance of the connection path being prioritized. The second score indicates the degree to which a connection path is prioritized when filtering paths based on outgoing port bottleneck queue length. A higher second score indicates a greater chance of the connection path being prioritized.
[0419] In this specific implementation, since the outgoing port bottleneck bandwidth utilization and outgoing port bottleneck queue length are both numerical data for the connection paths corresponding to each candidate port number group, the following steps are taken: First, a pre-set first function and a pre-set second function are obtained. The first function is a decreasing function with the outgoing port bottleneck bandwidth utilization as the independent variable and a first score as the dependent variable; the second function is a decreasing function with the outgoing port bottleneck queue length as the independent variable and a second score as the dependent variable. Next, for the connection paths corresponding to each candidate port number group, the outgoing port bottleneck bandwidth utilization is input into the first function, and the output of the first function is used as the first score; the outgoing port bottleneck queue length is input into the second function, and the output of the second function is used as the second score.
[0420] In step 2620, the total path score is used to indicate the score of the connection path corresponding to each candidate port number group being selected as the target path, quantified by numerical value.
[0421] In the specific implementation of this embodiment, firstly, a first weight and a second weight are determined. The first weight indicates the importance of port bottleneck bandwidth utilization in path selection, and the second weight indicates the importance of port bottleneck queue length in path selection. Next, for the connection path corresponding to each candidate port number group, the product of the first weight and the first score, and the product of the second weight and the second score are added together to obtain the total path score.
[0422] In step 2630, since a higher total path score indicates a less busy connection path, to enable fast data packet transmission between the first and second network devices, the connection path with the highest total path score among the multiple candidate port number groups can be selected as the target path.
[0423] The advantage of this embodiment is that when determining the target path among multiple connection paths, it takes into account both the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length. Based on the fractional calculation and weighted calculation method, it can prioritize the connection path with a smaller outgoing port bottleneck bandwidth utilization and a smaller outgoing port bottleneck queue length as the target path. This makes it easier for the first network device and the second network device to use more idle connection paths for data transmission, which can improve the rationality and accuracy of path selection, and thus improve the data transmission efficiency of the first network device and the second network device.
[0424] The following describes the specific application process of the network routing processing method according to the embodiments of this disclosure.
[0425] The following will be based on Figure 2 Taking the data center network shown as an example, the specific application process of the network routing processing method of this disclosure embodiment is illustrated.
[0426] Please refer to Figure 27 , Figure 27 This is a schematic diagram of an implementation architecture of the network routing processing method provided in this disclosure, involving an adaptive switching module and a path proxy module (similar to a kernel module in a Linux system) in the server data transmission stack, a load feedback module and a routing configuration module in the switch, and a central controller. The central controller is mainly used to configure the routing function of the network switch, ensuring that the routing hash seed and algorithm of each layer of the switch remain consistent. The central controller is also used to group available port numbers (allowed source port numbers) and provide queries for available port number groups.
[0427] The routing configuration module in a switch is primarily used to execute routing configurations issued by the central controller, specifically assigning pre-defined routing hash algorithms and hash seeds to each switch. The load feedback module in a switch is mainly used to maintain load metrics and check received data packets for load feedback markers. If a load feedback marker is present, the load information collected by the switch is fed back in the packet. This includes outgoing port bottleneck bandwidth utilization and outgoing port bottleneck queue length.
[0428] like Figure 28As shown, the adaptive switching module in the server is connection-level, and its logic is implemented for each communication connection. The path proxy module in the server queries the outgoing port number group of each layer of switches from the central controller and generates a combined group of all possible connection paths (the candidate port number group mentioned above). The adaptive switching module performs congestion detection on the current communication path (the source connection path mentioned above), and when congestion is detected on the current communication path, it performs congestion detection on multiple connection paths to determine the target path from among the multiple connection paths and switches the current communication path to the target path.
[0429] Please refer to Figure 29 , Figure 29 This is a schematic diagram of the workflow of a server provided in an embodiment of this disclosure, which will be combined with... Figure 29 Provide a detailed description:
[0430] Step 1: During initialization (after the server powers on), the server, acting as the primary network device, needs to request the grouping results of the available port numbers (i.e., the outgoing port number groups corresponding to the outgoing ports of each switching node) from the central controller via the path proxy module. These outgoing port number groups are shared by all connections on the server.
[0431] Step 2: After the path proxy module obtains the outgoing port number group (source port number group information) corresponding to the outgoing port of each switching node, it will calculate the joint group of all possible paths to obtain multiple candidate port number groups, and perform a certain path grouping arrangement on the connection paths corresponding to all candidate port number groups for path detection. The path grouping arrangement includes determining the path sequence number and detection batch of the connection path corresponding to the candidate port number group, etc.
[0432] Step 3: After establishing a communication connection, the server, acting as the first network device, first initializes itself. During the initialization process, the values involved in the path control field need to be configured. Taking the source port number field as an example, the source port number can be randomly selected from the range of source port numbers as the server's source port number, or a preset source port number can be used to control the path of the data flow. At the same time, the server will also query the path sequence number corresponding to the source connection path currently in use based on the current source port number.
[0433] Step 4: When the server sends a data packet using the communication connection formed by the current communication path (source connection path), it checks whether congestion control allows it. This process of checking whether congestion control allows it is a standard protocol stack process.
[0434] Step 5: If congestion control allows, generate the data packet to be sent.
[0435] Step 6: Before sending the data packet, generate a UDP header using the UDP source port number configured in the connection to control the physical path of the data flow, so that the data packet is transmitted through the current communication path (source connection path).
[0436] Step 7: Use throughput monitoring logic to periodically check the congestion window size (or rate size).
[0437] Step 8: If the congestion window (or rate) of the current communication path is less than the first threshold, it means that the current communication path is congested, and it is necessary to detect a more idle connection path to switch to.
[0438] Step 9: The path detection logic selects a batch of connection paths based on the path grouping and arrangement results to detect their load status;
[0439] Step 10: Determine the target path (idle path) among multiple connection paths based on the detection results.
[0440] Step 1: The server configures the source port number (candidate port number of the candidate port number group) corresponding to the idle path to the source port number corresponding to the communication connection between the first network device and the second network device, so as to control the physical path of subsequent data flow in the communication connection between the first network device and the second network device.
[0441] Taking the example of a message using the UDP protocol at the transport layer in an embodiment of this disclosure, the following is provided: Figure 17A The diagram shows the message format of the data packet, and as shown in the figure. Figure 17B The diagram shows the message format of the probe message, and as shown in the figure. Figure 30 The diagram shown illustrates the message format of the target data packet / probe confirmation packet, which will be combined with... Figure 17A , Figure 17B as well as Figure 30 This will be described from the perspectives of both switches and servers.
[0442] like Figure 30 The diagram illustrates the message format of a target data packet. Specifically, the message format of a target data packet often includes an Eth header, an IP header, a UDP header, and a custom header. The destination port number, source port number, UDP length, checksum, and other UDP-related fields are recorded in the UDP header. The probe flag field, current hop count, bottleneck hop count, outgoing port bottleneck bandwidth utilization, outgoing port bottleneck queue length, and other fields related to the custom protocol are recorded in the custom protocol. The current hop count indicates the length of the entire connection path, while the bottleneck hop count indicates the location of the most congested switching node in the connection path.
[0443] (a) Switches.
[0444] The primary function of a switch is to maintain load metrics and update these metrics in the first probe packet (probe message). The following will combine... Figure 31 Explain the working process of the switch.
[0445] (1) Inspection of testing requirements.
[0446] Before sending a packet, each output port of the switch checks whether the destination port number in the UDP header of the packet matches the destination port number corresponding to the custom protocol (e.g., 51000). See [link / details]. Figure 31 If step ① in the code is correct, then further check whether the value of the probe flag field in the custom header is 1, see [link to step ①]. Figure 31 If step ② in the above is 1, subsequent indicator maintenance and message updates will be performed. The destination port number field corresponds to the destination port number mentioned above; a probe flag value of 1 corresponds to the first value mentioned above, and a probe flag value of 0 corresponds to a non-first value mentioned above.
[0447] (2) Indicator maintenance.
[0448] The switch maintains two metrics for each outgoing port: outgoing port bandwidth utilization and outgoing port communication queue length. These two metrics are updated periodically; in practice, the latest period's values can be used, or a weighted moving average can be used.
[0449] (3) Update of the first detection packet.
[0450] The switch independently determines the outgoing port bottleneck bandwidth utilization and outgoing port bottleneck queue length based on the first probe packet:
[0451] (a) The load feedback module first increments the current hop number field in the custom protocol header of the first probe packet by 1, see... Figure 31 Step ③ in the process;
[0452] (b) If the outgoing port bandwidth utilization of the switch's outgoing port is greater than the outgoing port bottleneck bandwidth utilization in the first probe packet, the switch updates the current hop count to the bottleneck hop count, see... Figure 31 Step ③ in the process; the switch updates the outgoing port bottleneck bandwidth utilization in the first probe packet with the outgoing port bandwidth utilization, see... Figure 31 Step ④ in the process; simultaneously, the switch updates the outgoing port bottleneck queue length in the first probe packet with the outgoing port communication queue length, see... Figure 31 Step 5 in the process;
[0453] (c) If the outgoing port bandwidth utilization of the switch's outgoing port is equal to the outgoing port bottleneck bandwidth utilization in the first probe packet, then if the outgoing port communication queue length of the switch's outgoing port is greater than the outgoing port bottleneck queue length in the first probe packet, the switch updates the current hop count to the bottleneck hop count, see... Figure 31 Step ③ in the process; the switch updates the outgoing port bottleneck bandwidth utilization in the first probe packet with the outgoing port bandwidth utilization, see... Figure 31 Step ④ in the process; simultaneously, the switch updates the outgoing port bottleneck queue length in the first probe packet with the outgoing port communication queue length, see... Figure 31 Step ⑤ in the process. However, if the egress port communication queue length of the switch's egress port is less than or equal to the egress port bottleneck queue length in the first probe packet, the switch will not update the first probe packet;
[0454] (d) If the outgoing port bandwidth utilization of the switch is less than the outgoing port bottleneck bandwidth utilization in the first probe packet, the switch will not update the first probe packet.
[0455] In this connection path, after each switch processes the first probe packet, the outgoing port bottleneck bandwidth utilization rate in the first probe packet can indicate the maximum outgoing port bandwidth utilization rate among the switches in the connection path, and the outgoing port bottleneck queue length in the first probe packet can indicate the maximum outgoing port communication queue length among the switches in the connection path.
[0456] In addition, the probe results will also bring back two pieces of information: the current hop count and the bottleneck hop count. The current hop count can be used to optimize the number of potential paths; for example, the current hop count in a normal cross-Pod path probe result should be 5. If the current hop count in the probe result is 3, it means that the two connected endpoints are within the same Pod, and the connection path does not pass through the core layer switch. If the current hop count is 1, it means that the two connected servers are within the same rack, and there are only 2 potential paths.
[0457] It should be noted that the reason for requiring an outgoing port congestion window (i.e., congestion window cwnd) in this embodiment is that, due to considerations such as cost reduction and low actual average traffic intensity, data center networks are often designed with bandwidth convergence. This means that the total uplink bandwidth of the access layer switches (i.e., the link bandwidth between the access layer switches and the aggregation layer switches) is less than the total downlink bandwidth (i.e., the link bandwidth between the access layer switches and the servers). The ratio of total uplink bandwidth to total downlink bandwidth may reach 1:3 or even 1:6. In this situation, if the current connection path is congested and needs to be routed, it is very likely that the bandwidth utilization of most (or even all) connection paths will be 100%. At this point, other metrics are needed to determine which connection path is less congested and less competitive. Metrics such as queue height (indicating the number of packets waiting to be sent at a port) and real-time RTT are unreliable because queue height changes drastically in real data center networks (leading to significant changes in RTT). The metric detection process is actually just a single sampling, and even in a highly competitive connection path, the probability of sampling a low queue height is not small. If further judgments are made based on queue height or real-time RTT, it is easy to lead to misjudgments. Therefore, the embodiments of this disclosure use an outgoing port congestion window (i.e., congestion window cwnd) that is easier to converge and more accurate.
[0458] (ii) Server.
[0459] This explanation uses a server as the primary network device as an example.
[0460] (1) Perform congestion detection on the current connection path (the source connection path mentioned above).
[0461] The server generates probe packets targeting the source connection path. These probe packets are used to detect the outgoing port congestion window (cwnd) and data transmission rate of the source connection path. It's worth noting that in the first probe packet, the probe flag field has a value of 1 (or a magic number such as 0x8af53eb2), indicating that the detection function is enabled, meaning the switch is allowed to perform metric maintenance and packet updates. In contrast, in both ordinary data packets and target data packets, the probe flag field has a value of 0 (or a non-magic number), indicating that the detection function is disabled.
[0462] Then, the server sends probe packets and receives corresponding acknowledgment packets. It uses the load metrics carried in the acknowledgment packets to determine if the current communication path is congested. For example, based on the outgoing port congestion window (cwnd) / data transmission rate in the acknowledgment packet, it calculates the moving average window / data transmission rate average for the current probe period. If the moving average window / data transmission rate average is less than a first threshold, the current communication path is determined to be congested, meaning the available bandwidth for the communication connection on the current communication path is less than the required bandwidth, and the current communication path cannot meet the throughput requirements of the communication connection. This triggers congestion detection on multiple candidate communication paths.
[0463] The server updates the moving average window / average data transmission rate for each detection period using a moving average method. The formula for updating the moving average window is as follows:
[0464] W′ a =(1-c)W a +c*cwand;
[0465] Among them, W a W′ represents the moving average window of the previous detection period. a This represents the latest obtained moving average window (the moving average window for the current probe period); c represents the moving average coefficient (e.g., 0.1); wand represents the outgoing port congestion window (the current congestion window value) in the message to be sent by the outgoing port. By using the moving average method, fluctuation noise can be filtered out as much as possible, so that the final moving average window can accurately reflect the level of data flow contention at the port.
[0466] The moving average window being less than the first threshold can be expressed as:
[0467] W′ a <b*W m ;
[0468] Among them, W′ a W represents the latest obtained moving average window; m represents the maximum sliding window; b represents the window threshold coefficient (e.g., 0.4).
[0469] (2) Generate multiple candidate port number groups and perform congestion detection on the connection paths corresponding to the multiple candidate port number groups.
[0470] After detecting congestion on the source connection path, it is necessary to quickly find an idle connection path for switching. In this embodiment, the central controller first performs an intersection operation on the outgoing port number groups of each switching node based on the connection path, generating multiple candidate port number groups. For each candidate port number group, a first probe packet is generated and sent to the connection path corresponding to that candidate port number group, thereby finding an idle communication path. (Refer to...) Figure 17A The probe message format shown in this disclosure uses a fixed destination port number (e.g., 51000) to identify messages using a custom protocol, while the source port number is variable. Therefore, path control can be implemented using the source port number. It is worth noting that this disclosure identifies the communication connection using a connection identifier field in the custom header, rather than the traditional five-tuple. Therefore, changing the source port number does not affect the identification of the communication connection. In one embodiment of this disclosure, a fixed source port number can also be used to identify messages using a custom protocol, and the destination port number can be used for path control. In an IPv6 network, path control can also be implemented using the Flow Label field in the IPv6 header; this is not limited.
[0471] After generating the first probe packet, the server needs to configure it. When configuring the first probe packet, for each connection path to be probed, the source port number in the first probe packet must be set to a candidate port number from the candidate port number group corresponding to that connection path; simultaneously, the path sequence number corresponding to the connection path also needs to be configured in the first probe packet to distinguish different first probe packets and identify the connection path corresponding to the first probe packet. For example... Figure 30 As shown and Figure 31 The path number field shown.
[0472] This disclosure embodiment can employ iterative detection in multiple batches, such as... Figure 33 As shown, the server sends K first probe packets in each batch to probe the connection paths corresponding to K candidate port number groups (there will be no duplicates among the K connection paths). If the target path can be determined in the current batch, the iteration stops; if the target path cannot be determined in the current batch, the server continues to send the next batch of K first probe packets until all batches have been traversed.
[0473] The target data packet corresponding to the first probe packet sent by the server in each batch will generally be returned to the server within 1 to 2 RTTs (depending on network conditions). After receiving the target data packet, the server saves the outgoing port bottleneck bandwidth utilization and outgoing port bottleneck queue length in the target data packet to the corresponding connection path according to the path sequence number in the target data packet. That is, the outgoing port bottleneck bandwidth utilization in the target data packet is used as the outgoing port bottleneck bandwidth utilization of the connection path corresponding to the target data packet, and the outgoing port bottleneck queue length is treated similarly.
[0474] The server can implement timeout control for the first probe packet sent. If the target data packet corresponding to the first probe packet is not received after a waiting time threshold (e.g., 2 RTTs) has elapsed since the first probe packet was sent, the target path can be determined directly based on the already received target data packets, or the next batch of first probe packets can be sent. This is because the connection path experienced by a delayed target data packet is likely to be more congested than that experienced by an earlier target data packet, and the delayed target data packet is likely to contain invalid information; therefore, there is no need to continue waiting for the delayed target data packet.
[0475] For the current batch, the server's decision flow is as follows:
[0476] (a) If there is a connection path in the current batch that meets the throughput requirements (i.e., the outgoing port bandwidth utilization of the existing connection path is less than the idle bandwidth utilization (30%)), then the connection path with the lowest outgoing port bottleneck bandwidth utilization among the connection paths that meet the throughput requirements is determined as the target path, for example, in Figure 34 The system will identify path 5 as the target path.
[0477] (b) If there is no connection path that meets the throughput requirements in the current batch, the probe of the next batch will be initiated until a connection path that meets the throughput requirements is found or multiple batches have been traversed.
[0478] (c) If no connection path that meets the throughput requirements is found after traversing multiple batches, the candidate communication path with the lowest outgoing port bottleneck bandwidth utilization among all the detected connection paths is determined as the target path.
[0479] (d) If, after traversing multiple batches, no connection path meeting the throughput requirements is found, and the outgoing port bottleneck bandwidth utilization of all detected connection paths is 100%, then the connection path with the shortest outgoing port bottleneck queue length among all detected connection paths is identified as the target path. For example, in Figure 35 The system will determine path 1 as the target path.
[0480] (3) Path switching.
[0481] Once the target path has been determined, the network interface number and source port number corresponding to the target path are configured on the communication connection between the first network device and the second network device to complete the path switching.
[0482] The embodiments disclosed herein can achieve at least the following technical effects:
[0483] (1) It can accurately and effectively detect the congestion status of data streams. The embodiments of this disclosure directly monitor the congestion window (the aforementioned outgoing port congestion window) or the rate value (the aforementioned data transmission rate), rather than monitoring the congestion signal in the network. Therefore, it can accurately detect the congestion status, regardless of the actual congestion control algorithm and network configuration (such as ECN configuration) used.
[0484] (2) It can avoid the risk of hash polarization. The deterministic path control used in this embodiment can deterministically cover all possible paths (the connection paths corresponding to each candidate port number group) without the problem of being unable to switch over even if there is an idle path in the hash polarization scenario. Therefore, if there is an idle path, this embodiment can quickly find it and switch the traffic over.
[0485] (3) It can quickly obtain the load status of all available paths, thereby rapidly finding an idle path for switching. This embodiment of the disclosure simultaneously probes the congestion status of the connection paths corresponding to multiple candidate port number groups through concurrent probing, and can complete path probing and path switching within 1 to 2 RTTs. In contrast, the PLB scheme needs to run on the randomly switched connection path for a period of time (e.g., tens of RTTs) to detect whether the new connection path is idle. If it is not idle, it must try switching again, resulting in the event that finally successfully switches to an idle path typically reaching tens to hundreds of RTTs.
[0486] The experimental results of the network routing processing method according to the embodiments of this disclosure are described below with examples.
[0487] Please refer to Figure 36 The communication connection between the first and second network devices transmits packets through the source connection path. New traffic enters the source connection path at the 10-second mark, causing the throughput of the communication connection to drop from 100G to 30G. The performance of the three solutions in this situation is as follows:
[0488] (1) Native TCP scheme. The TCP connection will not switch paths due to congestion of the source connection path, so the throughput of the TCP connection will remain at 30G after the 10th second.
[0489] (2) PLB solution. The PLB solution took 500ms to find a less congested connection path, but the throughput of the communication connection on that connection path could only reach 50G.
[0490] (3) The solution provided in this disclosure. The target path is detected within 1 RTT, and the traffic of the communication connection is switched from the source connection path to the target path. Therefore, the communication connection only experiences congestion briefly, and the throughput quickly recovers to 100G after dropping to 30G.
[0491] Reference Figure 37 ( Figure 37 The height of the rectangle represents the throughput. Communication connections transmit messages through the source connection path, and new traffic enters the source connection path at some point. The three schemes perform as follows in this scenario:
[0492] (1) Native TCP solution. TCP connections cannot switch routes after encountering congestion, and continue to operate at the throughput level after congestion.
[0493] (2) PLB scheme. The PLB scheme detects congestion in the source connection path only after a certain period of time (20ms) when new traffic enters, and performs a random route change. For the connection path obtained by the first random route change, congestion is still detected after a certain period of time, and then a second random route change is performed. For the connection path obtained by the second random route change, congestion is still detected after a certain period of time, and finally K random routes are performed to finally switch to an uncongested connection path. At this time, the throughput of the communication connection is 60% of the initial throughput, and 500ms has been consumed.
[0494] (3) The solution provided in this embodiment. In this embodiment, source connection path congestion is detected within 100us after new traffic enters, triggering path detection and path switching. Finally, the path switching is completed within 120us, and the communication connection regains 100% throughput, which is the same as the throughput before the new traffic entered.
[0495] The apparatus and device according to embodiments of this disclosure will now be described.
[0496] It is understood that although the steps in the above flowcharts are shown sequentially according to the arrows, these steps are not necessarily executed in the order indicated by the arrows. Unless explicitly stated in this embodiment, there is no strict order restriction on the execution of these steps, and they can be executed in other orders. Moreover, at least some steps in the above flowcharts may include multiple steps or multiple stages. These steps or stages are not necessarily completed at the same time, but can be executed at different times. The execution order of these steps or stages is not necessarily sequential, but can be performed alternately or in turn with other steps or at least some of the steps or stages in other steps.
[0497] It should be noted that in various specific embodiments of this application, when processing is required based on data related to the characteristics of the target object, such as target object attribute information or a set of attribute information, the permission or consent of the target object will be obtained first. Furthermore, the collection, use, and processing of this data will comply with relevant laws, regulations, and standards. In addition, when embodiments of this application require obtaining target object attribute information, separate permission or consent from the target object will be obtained through pop-ups or redirection to a confirmation page. Only after obtaining the target object's separate permission or consent will the necessary target object-related data for the normal operation of the embodiments of this application be obtained.
[0498] Figure 38 This is a schematic diagram of the network routing processing device 3800 provided in an embodiment of the present disclosure. The network routing processing device 3800 is executed by a first network device, which communicates with a second network device through multiple switching nodes in a switching network. The network routing processing device 3800 includes:
[0499] The determining unit 3810 is used to determine multiple connection paths between the first network device and the second network device;
[0500] The acquisition unit 3820 is used to acquire the outgoing port number group corresponding to the outgoing port of each switching node on the connection path. Specifically, for each switching node in the switching network, the available port numbers in the available port number set are pre-assigned to each outgoing port of the switching node, and the available port numbers assigned to each outgoing port form an outgoing port number group.
[0501] The generation unit 3830 is used to generate candidate port number groups based on the intersection of the outgoing port number groups of each switching node on the connection path.
[0502] The processing unit 3840 is used to send a first probe packet with a candidate port number in the candidate port number group as the source port number, obtain the probe result, and determine the target path to the second network device based on the probe result, so that the first network device can communicate with the second network device through multiple switching nodes in the target path.
[0503] Optionally, the determining unit 3810 includes:
[0504] A first determining module (not shown) is used to determine the network congestion characterization parameters of the source connection path relied upon by the first network device when communicating with the second network device in the current probe period.
[0505] The second determining module (not shown) is used to determine multiple connection paths between the first network device and the second network device if network congestion is determined to exist in the source connection path based on network congestion characterization parameters.
[0506] Optionally, the second determining module (not shown) is used for:
[0507] Obtain the data transmission status parameters of the source connection path in the previous probe cycle relative to the current probe cycle;
[0508] Based on the data transmission status parameters and network congestion characterization parameters of the previous detection period, the data transmission status parameters of the current detection period are determined.
[0509] If the data transmission status parameter of the current probe period is less than the first threshold, then it is determined that there is network congestion in the source connection path.
[0510] Optionally, network congestion characterization parameters include an outgoing port congestion window, and data transmission status parameters include a moving average window;
[0511] Based on the data transmission status parameters and network congestion characterization parameters of the previous detection period, the data transmission status parameters of the current detection period are determined, including: weighting the moving average window and the outgoing port congestion window of the previous detection period to obtain the moving average window of the current detection period.
[0512] If the data transmission status parameter of the current probe period is less than the first threshold, then it is determined that there is network congestion in the source connection path, including: if the moving average window of the current probe period is less than the product of the maximum moving window and the window threshold coefficient, then it is determined that there is network congestion in the source connection path.
[0513] Optionally, network congestion characterization parameters include data transmission rate, and data transmission status parameters include average data transmission rate;
[0514] Based on the data transmission status parameters and network congestion characterization parameters of the previous detection period, the data transmission status parameters of the current detection period are determined, including: weighting the average data transmission rate and the data transmission rate of the previous detection period to obtain the average data transmission rate of the current detection period.
[0515] If the data transmission status parameter of the current probe period is less than the first threshold, then it is determined that there is network congestion in the source connection path, including: if the average data transmission rate of the current probe period is less than the product of the maximum data transmission rate and the rate threshold coefficient, then it is determined that there is network congestion in the source connection path.
[0516] Optionally, the output port number group of each output port of the switching node is determined by the controller in the switching network in the following way:
[0517] A retrieval module (not shown) is used to retrieve available port numbers from the set of available port numbers;
[0518] A generation module (not shown) is used to generate a second probe packet based on the available port number, the first device address of the first network device, and the second device address of the second network device.
[0519] The digest module (not shown) is used to perform digest calculations based on a preset seed and a second probe packet using a preset digest algorithm to obtain the digest result corresponding to the available port number.
[0520] The modulo module (not shown) is used to perform a modulo operation based on the summary result and the number of nodes connected to the next layer of exchange nodes to obtain the target remainder;
[0521] The third determining module (not shown) is used to determine one output port corresponding to an available port number from multiple output ports of the switching node based on the target remainder;
[0522] The grouping module (not shown) is used to group multiple available port numbers corresponding to the same output port into the same group after all available port numbers in the set of available port numbers have been traversed, so as to obtain the output port number group corresponding to each output port of the switching node.
[0523] Optionally, the multiple switching nodes include at least one access layer switch connected to the first network device and at least one aggregation layer switch connected to the at least one access layer switch; the number of nodes includes a first sub-number of at least one access layer switch and a second sub-number of at least one aggregation layer switch; the preset seed includes a first seed and a second seed, and the preset digest algorithm includes a first digest algorithm and a second digest algorithm;
[0524] The summary module (not shown) is used for:
[0525] Based on the first seed and the second probe packet, a digest operation is performed using the first digest algorithm to obtain the first result corresponding to the available port number; based on the second seed and the second probe packet, a digest operation is performed using the second digest algorithm to obtain the second result corresponding to the available port number.
[0526] The mold-taking module (not shown) is used for:
[0527] Based on the first result and the first number of sub-sub ...
[0528] The third determining module (not shown) is used for:
[0529] Based on the first remainder, determine an output port corresponding to the available port number for connecting to the access layer switch; based on the second remainder, determine an output port corresponding to the available port number for connecting to the aggregation layer switch.
[0530] Optionally, the processing unit 3840 is used for:
[0531] For each candidate port number group, determine the path to be examined that the candidate port number group points to;
[0532] Based on the path number of the path to be examined, candidate connection paths are determined from multiple paths to be examined.
[0533] For each candidate connection path, the first probe packet is sent using the candidate port number in the candidate port number group corresponding to the candidate connection path as the source port number, and the probe result of the candidate connection path is obtained.
[0534] Optionally, when the first network device communicates with the second network device, it depends on the source connection path among multiple connection paths;
[0535] Based on the path number of the path to be examined, candidate connection paths are determined from multiple paths to be examined, including:
[0536] Determine the first path number of the source connection path;
[0537] Among multiple paths to be examined whose path number is greater than the first path number, the path number difference between each path to be examined and the source connection path is determined based on the first path number and the path number.
[0538] Based on the path number difference and a preset number, candidate connection paths are determined from multiple paths to be examined.
[0539] Optionally, the processing unit 3840 is used for:
[0540] An extraction module (not shown) is used to extract a candidate port number from the candidate port number group as the source port number for the connection path corresponding to the candidate port number group, and to determine the path sequence number of the connection path.
[0541] A probe packet generation module (not shown) is used to generate a first probe packet based on the source port number and path sequence number;
[0542] A detection module (not shown) is used to send a first detection packet and perform load probing on the switching nodes on the connection path corresponding to the candidate port number group through the first detection packet, so as to obtain the detection results of the connection path corresponding to the candidate port number group.
[0543] Optionally, the probe packet generation module (not shown) is used for:
[0544] The bottleneck bandwidth utilization of the outgoing port corresponding to the initial connection path and the length of the outgoing port communication queue are both set to 0 to obtain the initial load information.
[0545] Determine the first device address of the first network device, the second device address of the second network device, and the destination port number on which the first network device and the second network device communicate.
[0546] The first device address, the second device address, the path number, the source port number, the destination port number, and the initial load information are packaged into a first probe packet, and the probe flag corresponding to the first probe packet is set to the first value.
[0547] Optionally, the detection module (not shown) is used for:
[0548] Determine the probe order of the switching nodes on the connection path;
[0549] Based on the probe order, the first probe packet is sent sequentially to the switching nodes on the connection path, so that when the outgoing port bandwidth utilization of each switching node is greater than the outgoing port bottleneck bandwidth utilization, the outgoing port bottleneck bandwidth utilization is updated with the outgoing port bandwidth utilization, and when the outgoing port communication queue length of each switching node is greater than the outgoing port bottleneck queue length, the outgoing port bottleneck queue length is updated with the outgoing port communication queue length. When the second network device receives the first probe packet, it generates a target data packet based on the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length, and sends the target data packet to the first network device.
[0550] Receive the target data packet and determine the detection result of the connection path based on the outgoing port bottleneck queue length and outgoing port bottleneck bandwidth utilization recorded in the target data packet.
[0551] Optionally, when the outgoing port bandwidth utilization of each switching node in the connection path is greater than the outgoing port bottleneck bandwidth utilization, the outgoing port bottleneck bandwidth utilization is updated with the outgoing port bandwidth utilization; and when the outgoing port communication queue length of each switching node is greater than the outgoing port bottleneck queue length, the outgoing port bottleneck queue length is updated with the outgoing port communication queue length, including:
[0552] Extract the destination port number and probe marker from the first probe packet;
[0553] Perform initial verification of the destination port number and probe marker;
[0554] In response to the first verification being passed, each switching node in the connection path updates the outgoing port bottleneck bandwidth utilization with the outgoing port bandwidth utilization when the outgoing port bandwidth utilization of the switching node is greater than the outgoing port bottleneck bandwidth utilization, and updates the outgoing port bottleneck queue length with the outgoing port communication queue length when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length.
[0555] Optionally, the detection results include the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the connection path corresponding to each candidate port number group.
[0556] Processing unit 3840 is used for:
[0557] For each connection path corresponding to the candidate port number group, a first score is determined based on the outgoing port bottleneck bandwidth utilization, and a second score is determined based on the outgoing port bottleneck queue length.
[0558] Based on the first score and the second score, determine the total score of the connecting path;
[0559] Based on the total path score, the target path to the second network device is determined from the connection paths corresponding to each candidate port number group.
[0560] Optionally, the detection results include the outgoing port bottleneck bandwidth utilization of the connection path corresponding to each candidate port number group;
[0561] Processing unit 3840 is used for:
[0562] Based on the bottleneck bandwidth utilization of the outgoing port and the second threshold, multiple intermediate connection paths are selected from the connection paths corresponding to each candidate port number group.
[0563] Determine the target path among multiple intermediate connection paths.
[0564] Optionally, the detection results include the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the connection path corresponding to each candidate port number group.
[0565] Processing unit 3840 is used for:
[0566] If the outgoing port bottleneck bandwidth utilization of the connection path corresponding to each candidate port number group is greater than the third threshold, then the connection path with the smallest outgoing port bottleneck bandwidth utilization is determined as the target path.
[0567] If the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each candidate port number group is greater than the third threshold, and the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each candidate port number group is the same, then the connection path with the smallest outgoing port bottleneck queue length is determined as the target path.
[0568] Reference Figure 39 , Figure 39To implement the network routing processing method of this embodiment, the terminal includes the following components: a radio frequency (RF) circuit 3910, a memory 3915, an input unit 3930, a display unit 3940, a sensor 3950, an audio circuit 3960, a wireless fidelity (WiFi) module 3970, a processor 3980, and a power supply 3990. Those skilled in the art will understand that... Figure 39 The terminal structure shown does not constitute a limitation on mobile phones or computers and may include more or fewer components than shown, or combine certain components, or have different component arrangements.
[0569] The RF circuit 3910 can be used to receive and transmit signals during information transmission or calls. In particular, it receives downlink information from the base station and processes it with the processor 3980; in addition, it transmits uplink data to the base station.
[0570] The memory 3915 can be used to store software programs and modules, and the processor 3980 executes various functional applications and data processing of the target terminal by running the software programs and modules stored in the memory 3915.
[0571] The input unit 3930 can be used to receive input numeric or character information, and to generate key signal inputs related to the settings and function control of the target terminal. Specifically, the input unit 3930 may include a touch panel 3931 and other input devices 3932.
[0572] The display unit 3940 can be used to display input or provided information, as well as various menus of the target terminal. The display unit 3940 may include a display panel 3941.
[0573] Audio circuitry 3960, speaker 3961, and microphone 3962 provide an audio interface.
[0574] In this embodiment, the processor 3980 included in the terminal can execute the network routing processing method of the previous embodiment.
[0575] The terminals disclosed in this embodiment include, but are not limited to, mobile phones, computers, intelligent voice interaction devices, smart home appliances, vehicle terminals, and aircraft. The embodiments of this invention can be applied to various scenarios, including but not limited to data security, blockchain, data storage, and information technology.
[0576] Figure 40This is a partial structural block diagram of a server for implementing the network routing processing method of this disclosure. The server can vary significantly due to different configurations or performance characteristics, and may include one or more Central Processing Units (CPUs) 4022 (e.g., one or more processors) and a memory 4032, and one or more storage media 4030 (e.g., one or more mass storage devices) for storing application programs 4042 or data 4044. The memory 4032 and storage media 4030 may be temporary or persistent storage. The program stored in the storage media 4030 may include one or more modules (not shown in the diagram), each module including a series of instruction operations on the server. Furthermore, the CPU 4022 may be configured to communicate with the storage media 4030 and execute the series of instruction operations in the storage media 4030 on the server.
[0577] The server may also include one or more power supplies 4023, one or more wired or wireless network interfaces 4050, one or more input / output interfaces 4058, and / or one or more operating systems 4041, such as Windows Server™, Mac OS X™, Unix™, Linux™, FreeBSD™, etc.
[0578] The central processing unit 4022 in the server can be used to execute the network routing processing method of the present disclosure embodiments.
[0579] This disclosure also provides a computer-readable storage medium for storing program code for executing the network routing processing methods of the foregoing embodiments.
[0580] This disclosure also provides a computer program product comprising a computer program. A processor of a computer device reads and executes the computer program, causing the computer device to perform the network routing processing method described above.
[0581] The terms “first,” “second,” “third,” “fourth,” etc. (if present) in this disclosure and the foregoing drawings are used to distinguish similar objects and are not necessarily used to describe a particular order or sequence. It should be understood that such data can be interchanged where appropriate so that the embodiments of this disclosure described herein can be implemented, for example, in orders other than those illustrated or described herein. Furthermore, the terms “comprising” and “including,” and any variations thereof, are intended to cover non-exclusive inclusion; for example, a process, method, system, product, or apparatus that includes a series of steps or units is not necessarily limited to those steps or units explicitly listed, but may include other steps or units not explicitly listed or inherent to such processes, methods, products, or apparatuses.
[0582] It should be understood that in this disclosure, "at least one item" means one or more, and "more than one" means two or more. "And / or" is used to describe the relationship between related objects, indicating that three relationships can exist. For example, "A and / or B" can represent three cases: only A exists, only B exists, and both A and B exist simultaneously, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related objects are in an "or" relationship. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can represent: a, b, c, "a and b", "a and c", "b and c", or "a and b and c", where a, b, and c can be single or multiple.
[0583] It should be understood that in the description of the embodiments of this disclosure, "multiple" means two or more, "greater than", "less than", "exceeding" etc. are understood to exclude the number itself, and "above", "below", "within" etc. are understood to include the number itself.
[0584] In the several embodiments provided in this disclosure, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces, indirect coupling or communication connection between apparatuses or units, and may be electrical, mechanical, or other forms.
[0585] In this disclosure, the terms "module" or "unit" refer to a computer program or part of a computer program that has a predetermined function and works with other related parts to achieve a predetermined goal, and can be implemented wholly or partially using software, hardware (such as processing circuitry or memory), or a combination thereof. Similarly, a processor (or multiple processors or memory) can be used to implement one or more modules or units. Furthermore, each module or unit can be part of an overall module or unit that includes the functionality of that module or unit.
[0586] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0587] Furthermore, the functional units in the various embodiments of this disclosure can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.
[0588] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this disclosure, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods of the various embodiments of this disclosure. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0589] It should also be understood that the various implementation methods provided in this disclosure can be combined arbitrarily to achieve different technical effects.
[0590] The above is a detailed description of the embodiments of this disclosure. However, this disclosure is not limited to the above embodiments. Those skilled in the art can make various equivalent modifications or substitutions without departing from the spirit of this disclosure. All such equivalent modifications or substitutions are included within the scope defined by the claims of this disclosure.
Claims
1. A network routing processing method, characterized in that, Performed by a first network device, which communicates with a second network device through multiple switching nodes in a switching network, the method includes: Determine multiple connection paths between the first network device and the second network device; For each switching node on the connection path, obtain the outgoing port number group corresponding to the outgoing port of the switching node. For each switching node in the switching network, the available port numbers in the available port number set are pre-assigned to each outgoing port of the switching node, and the available port numbers assigned to each outgoing port form the outgoing port number group. Candidate port number groups are generated based on the intersection of the outgoing port number groups of each switching node on the connection path; Using the candidate port number in the candidate port number group as the source port number, a first probe packet is sent to obtain the probe result, and the target path to the second network device is determined based on the probe result, so that the first network device can communicate with the second network device through multiple switching nodes in the target path.
2. The method according to claim 1, characterized in that, Determining multiple connection paths between the first network device and the second network device includes: Determine the network congestion characterization parameters of the source connection path relied upon by the first network device when communicating with the second network device within the current detection period; If network congestion is determined based on the network congestion characterization parameters, then multiple connection paths between the first network device and the second network device are determined.
3. The method according to claim 2, characterized in that, The step of determining that the source connection path is congested based on the network congestion characterization parameters includes: Obtain the data transmission status parameters of the source connection path in the previous detection cycle relative to the current detection cycle; Based on the data transmission status parameters of the previous detection period and the network congestion characterization parameters, the data transmission status parameters of the current detection period are determined. If the data transmission status parameter of the current detection period is less than the first threshold, then it is determined that there is network congestion in the source connection path.
4. The method according to claim 1, characterized in that, The port number group of each output port of the switching node is determined by the controller in the switching network in the following way: Retrieve the available port number from the set of available port numbers; A second probe packet is generated based on the available port number, the first device address of the first network device, and the second device address of the second network device; Based on the preset seed and the second probe packet, a preset digest algorithm is used to perform a digest operation to obtain the digest result corresponding to the available port number; Based on the summary result and the number of nodes connected to the next-layer switching node of the switching node, a modulo operation is performed to obtain the target remainder; Based on the target remainder, determine one output port corresponding to the available port number from among the multiple output ports of the switching node; After all available port numbers in the set of available port numbers have been traversed, multiple available port numbers corresponding to the same outgoing port are grouped together to obtain the outgoing port number group corresponding to each outgoing port of the switching node.
5. The method according to claim 4, characterized in that, The plurality of switching nodes include at least one access layer switch connected to the first network device and at least one aggregation layer switch connected to the at least one access layer switch; the number of nodes includes a first sub-number of the at least one access layer switch and a second sub-number of the at least one aggregation layer switch; the preset seed includes a first seed and a second seed, and the preset digest algorithm includes a first digest algorithm and a second digest algorithm; The step of performing a digest operation based on a preset seed and the second probe packet using a preset digest algorithm to obtain a digest result corresponding to the available port number includes: performing a digest operation based on the first seed and the second probe packet using the first digest algorithm to obtain a first result corresponding to the available port number; and performing a digest operation based on the second seed and the second probe packet using the second digest algorithm to obtain a second result corresponding to the available port number. The step of performing a modulo operation based on the summary result and the number of nodes connected to the next-layer switching node of the switching node to obtain the target remainder includes: performing a modulo operation based on the first result and the first sub-number to obtain a first remainder; and performing a modulo operation based on the second result and the second sub-number to obtain a second remainder. The step of determining an output port corresponding to the available port number among the multiple output ports of the switching node based on the target remainder includes: determining an output port corresponding to the available port number for connecting to an access layer switch based on the first remainder; and determining an output port corresponding to the available port number for connecting to an aggregation layer switch based on the second remainder.
6. The method according to claim 1, characterized in that, The step of sending a first probe packet using a candidate port number from the candidate port number group as the source port number and obtaining the probe result includes: For each candidate port number group, determine the path to be examined that the candidate port number group points to; Based on the path number of the path to be examined, candidate connection paths are determined among multiple paths to be examined. For each candidate connection path, the first probe packet is sent using the candidate port number in the candidate port number group corresponding to the candidate connection path as the source port number, and the probe result of the candidate connection path is obtained.
7. The method according to claim 6, characterized in that, When the first network device communicates with the second network device, it relies on the source connection path among the multiple connection paths; The process of determining candidate connection paths from multiple paths to be examined based on the path number of the path to be examined includes: Determine the first path number of the source connection path; Among the multiple paths to be examined whose path number is greater than the first path number, the path number difference between each path to be examined and the source connection path is determined based on the first path number and the path number. Based on the path sequence difference and a preset number, the candidate connection path is determined from the plurality of paths to be examined.
8. The method according to claim 1, characterized in that, The step of sending a first probe packet using a candidate port number from the candidate port number group as the source port number and obtaining the probe result includes: For the connection path corresponding to the candidate port number group, extract one of the candidate port numbers from the candidate port number group as the source port number, and determine the path sequence number of the connection path; A first probe packet is generated based on the source port number and the path sequence number; Send the first probe packet, and use the first probe packet to perform load probing on the switching nodes on the connection path corresponding to the candidate port number group, and obtain the probe results of the connection path corresponding to the candidate port number group.
9. The method according to claim 8, characterized in that, The generation of the first probe packet based on the source port number and the path sequence number includes: Initialize the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the outgoing port communication queue corresponding to the connection path to 0, so as to obtain the initial load information; Determine the first device address of the first network device, the second device address of the second network device, and the destination port number that the first network device and the second network device rely on when communicating; The first device address, the second device address, the path number, the source port number, the destination port number, and the initial load information are packaged into a first probe packet, and the probe flag corresponding to the first probe packet is set to a first value.
10. The method according to claim 9, characterized in that, The step of performing load probing on the switching nodes on the connection path corresponding to the candidate port number group using the first probe packet to obtain the probe results of the connection path corresponding to the candidate port number group includes: Determine the detection order of the switching nodes on the connection path; Based on the detection order, the first detection packet is sequentially sent to the switching nodes on the connection path, so that each switching node on the connection path updates the outgoing port bottleneck bandwidth utilization rate with the outgoing port bandwidth utilization rate when the outgoing port bandwidth utilization rate of the switching node is greater than the outgoing port bottleneck bandwidth utilization rate, and updates the outgoing port bottleneck queue length with the outgoing port communication queue length when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length. When the second network device receives the first detection packet, it generates a target data packet based on the outgoing port bottleneck bandwidth utilization rate and the outgoing port bottleneck queue length, and sends the target data packet to the first network device. The target data packet is received, and the detection result of the connection path is determined based on the outgoing port bottleneck queue length and outgoing port bottleneck bandwidth utilization recorded in the target data packet.
11. The method according to claim 10, characterized in that, When the outgoing port bandwidth utilization of each switching node in the connection path is greater than the outgoing port bottleneck bandwidth utilization, the outgoing port bottleneck bandwidth utilization is updated with the outgoing port bandwidth utilization. And when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length, the outgoing port communication queue length is updated with the outgoing port bottleneck queue length, including: Extract the destination port number and probe marker from the first probe packet; The destination port number and the probe marker are first verified; In response to the first verification being passed, each switching node in the connection path updates the outgoing port bottleneck bandwidth utilization rate with the outgoing port bandwidth utilization rate when the outgoing port bandwidth utilization rate of the switching node is greater than the outgoing port bottleneck bandwidth utilization rate, and updates the outgoing port bottleneck queue length with the outgoing port communication queue length when the outgoing port communication queue length of the switching node is greater than the outgoing port bottleneck queue length.
12. The method according to claim 1, characterized in that, The detection results include the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the connection path corresponding to each of the candidate port number groups. Determining the target path to the second network device based on the detection results includes: For each connection path corresponding to the candidate port number group, a first score is determined based on the outgoing port bottleneck bandwidth utilization, and a second score is determined based on the outgoing port bottleneck queue length. Based on the first score and the second score, determine the total path score of the connection path; Based on the total path score, the target path to the second network device is determined from the connection paths corresponding to each of the candidate port number groups.
13. The method according to claim 1, characterized in that, The detection results include the outgoing port bottleneck bandwidth utilization rate of the connection path corresponding to each of the candidate port number groups; Determining the target path to the second network device based on the detection results includes: Based on the bottleneck bandwidth utilization of the outgoing port and the second threshold, multiple intermediate connection paths are selected from the connection paths corresponding to each of the candidate port number groups. The target path is determined from the plurality of intermediate connection paths.
14. The method according to claim 1, characterized in that, The detection results include the outgoing port bottleneck bandwidth utilization and the outgoing port bottleneck queue length of the connection path corresponding to each of the candidate port number groups. Determining the target path to the second network device based on the detection results includes: If the bottleneck bandwidth utilization of the outgoing port of each connection path corresponding to the candidate port number group is greater than the third threshold, then the connection path with the smallest bottleneck bandwidth utilization of the outgoing port is determined as the target path. In response to the fact that the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each of the candidate port number groups is greater than the third threshold, and the outgoing port bottleneck bandwidth utilization of the connection paths corresponding to each of the candidate port number groups is the same, the connection path with the smallest outgoing port bottleneck queue length is determined as the target path.
15. A network routing processing device, characterized in that, Performed by a first network device, which communicates with a second network device through multiple switching nodes in a switching network, the apparatus includes: The determining unit is used to determine multiple connection paths between the first network device and the second network device; The acquisition unit is used to acquire the outgoing port number group corresponding to the outgoing port of each switching node on the connection path. Specifically, for each switching node in the switching network, the available port numbers in the available port number set are pre-assigned to each outgoing port of the switching node, and the available port numbers assigned to each outgoing port form the outgoing port number group. The generation unit is used to generate a candidate port number group based on the intersection of the outgoing port number groups of each switching node on the connection path; The processing unit is configured to send a first probe packet using the candidate port number in the candidate port number group as the source port number, obtain the probe result, and determine the target path to the second network device based on the probe result, so that the first network device can communicate with the second network device through multiple switching nodes in the target path.
16. An electronic device comprising a memory and a processor, the memory storing a computer program, characterized in that, When the processor executes the computer program, it implements the network routing processing method according to any one of claims 1 to 14.
17. A computer-readable storage medium storing a computer program, characterized in that, When the computer program is executed by the processor, it implements the network routing processing method according to any one of claims 1 to 14.
18. A computer program product comprising a computer program that is read and executed by a processor of an electronic device, causing the electronic device to perform the network routing processing method according to any one of claims 1 to 14.