Load sharing method, device and equipment

By splitting data streams into multiple stream slices using a stream slicing strategy and distributing the load across multiple paths, intelligent traffic scheduling can be achieved using SRv6 or G-SRv6 technology, thereby improving network throughput and reducing latency.

CN121603444APending Publication Date: 2026-03-03BEIJING XINWANG RUIJIE NETWORK TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411145541.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-08-20
Publication Date
2026-03-03

AI Technical Summary

Technical Problem

Existing load balancing schemes cannot effectively distribute load across multiple paths, resulting in low network throughput and high latency.

Method used

By adopting a flow slicing strategy, the data stream is split into multiple flow slices, and the load is distributed across multiple paths through flow identifiers and flow slice identifiers. Intelligent scheduling is performed using SRv6 or G-SRv6 technology to achieve load balancing of traffic across multiple paths.

Benefits of technology

It improves network throughput, reduces latency, and solves the problem that elephant streams cannot be load-sharing across multiple paths.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121603444A_ABST
    Figure CN121603444A_ABST
Patent Text Reader

Abstract

The invention provides a load sharing method, device and equipment, and the method comprises the steps: carrying out the grouping of a received target flow according to a flow slicing strategy, and determining a plurality of flow slices; wherein one stream slice corresponds to one stream slice identifier, one target stream corresponds to one stream identifier, or one group of target streams corresponds to one stream identifier; and carrying out load sharing on the plurality of stream slices on a plurality of paths through the stream slice strategy according to the stream identifier and the stream slice identifier. According to the method provided by the invention, load sharing on multiple paths is effectively realized, so that the network throughput rate is improved and the time delay is reduced.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of load sharing technology, and in particular to a load sharing method, apparatus and equipment. Background Technology

[0002] Intelligent computing services are divided into two main categories: input computing and computing-interface scenarios. Input computing scenarios include data upload for training, remote storage and computation, and inference service interaction, with transmitted data primarily consisting of massive sample data and inference application interaction data. Computing-interface scenarios include distributed collaborative training and federated learning, with data transmitted over the computing network mainly consisting of parameter data such as gradients and inter-layer vectors. Users upload massive amounts of training data to the computing center for model training, with traffic characterized by bursts of massive data uploads accompanying AI training tasks. Therefore, load balancing for data transmission becomes a critical issue.

[0003] Currently, existing load balancing schemes include two approaches: one is flow-by-flow hash load balancing, which hashes the packet 5-tuple and distributes it to fixed related paths; however, this approach cannot distribute load across multiple paths for large flows. The other approach is packet-by-packet load balancing, which forwards data packet by packet across multiple paths; however, this approach results in uneven load distribution when multiple flows have a mix of large and small packets.

[0004] Therefore, the relevant technologies cannot effectively achieve load sharing across multiple paths. Summary of the Invention

[0005] This application provides a load balancing method, apparatus, and device to solve the problem that related technologies cannot effectively achieve load balancing on multiple paths, thereby improving network throughput and reducing latency.

[0006] In a first aspect, embodiments of this application provide a load balancing method applied to a first network device, the method comprising:

[0007] According to the stream slicing strategy, the received target streams are grouped to determine multiple stream slices; wherein, one stream slice corresponds to one stream slice identifier, one target stream corresponds to one stream identifier, or a group of target streams corresponds to one stream identifier;

[0008] Based on the flow identifier and the flow slice identifier, the load is distributed across multiple flow slices on multiple paths using the flow slice strategy.

[0009] In one possible design, the flow slicing strategy is either an IPv6-based segment routing (SRv6) flow slicing strategy or a general IPv6 segment routing (G-SRv6) flow slicing strategy. The flow slicing strategy includes a matching strategy and a slicing method. The flow slice is either an SRv6 flow slice or a G-SRv6 flow slice. The step of determining multiple flow slices for the received target flow packets according to the flow slicing strategy includes:

[0010] According to the matching strategy, the target stream is identified and the stream identifier is assigned;

[0011] According to the slicing method, the target stream is split into multiple stream slices, and a corresponding stream slice identifier is assigned to each of the split stream slices;

[0012] For each packet in each of the flow slices, based on the flow identifier and the flow slice identifier, the packet is encapsulated into an SRv6 data packet format to obtain the SRv6 flow slice, or the packet is encapsulated into a G-SRv6 data packet format to obtain the G-SRv6 flow slice.

[0013] In one possible design, the step of encapsulating the packet into an SRv6 packet format to obtain the SRv6 flow slice or encapsulating the packet into a G-SRv6 packet format to obtain the G-SRv6 flow slice based on the flow identifier and the flow slice identifier includes:

[0014] The packet is encapsulated using SRv6, and the following content is carried using an IPv6 header and / or a segment routing extension header (SRH) to obtain the SRv6 flow slice; or, the packet is encapsulated using G-SRv6, and the following content is carried using an IPv6 header and / or a segment routing extension header (SRH) to obtain the G-SRv6 flow slice:

[0015] Flow slice flag information, the identifier of the first network device, the flow identifier and the flow slice identifier, and the EOS flag used to indicate the end of the flow slice;

[0016] The stream slice flag information is used to indicate the information of the stream slice type encapsulation.

[0017] In one possible design, the flow slicing strategy includes a strategy for planning load balancing: the step of load balancing the multiple flow slices on multiple paths according to the flow identifier and the flow slice identifier, through the flow slicing strategy, includes:

[0018] If the load balancing strategy is a Traffic Engineering (TE) strategy, the flow slice identifier is used as a hash perturbation factor. A matching strategy is employed to distribute the load across different segment lists (SLs) according to their weights. Load balancing is then performed on the multiple flow slices based on these multiple SLs. The SLs indicate the load balancing paths. The TE strategy is either an SRv6 TE strategy or a G-SRv6 TE strategy. Alternatively...

[0019] If the relevant strategy for the planned load balancing is the best-effort (BE) strategy, configure and enable the BE load balancing function, and determine the equivalent load balancing (ECMP) or link aggregation group (LAG) member port load balancing based on the target flow on the basis of the flow slice. The BE strategy is the SRv6 BE strategy or the G-SRv6 BE strategy.

[0020] In one possible design, the load balancing of the multiple stream slices based on multiple stream slices includes:

[0021] For each flow slice of the same target flow, load sharing is performed according to weight, and one SL is selected from multiple SLs to forward the flow slice.

[0022] In one possible design, the load balancing of the multiple stream slices based on multiple stream slices includes:

[0023] If at least one TE policy is nested within the TE policy, the following load balancing operation is performed for the nested TE policy corresponding to the first network device:

[0024] If the nested TE strategy is an encapsulation mode, a new load balancing segment (SL) for the flow slice is determined according to the flow slicing strategy, and load balancing is performed according to the new SL; wherein, without disrupting the existing flow slice division, the correspondence between nodes corresponding to the flow slices is maintained, and the nodes include the first network device and the adjacent network devices of the first network device; or,

[0025] If the nested TE strategy is in Insert mode, load balancing is performed based on the currently divided flow slices.

[0026] In one possible design, the correspondence between the maintenance nodes and the corresponding flow slices includes:

[0027] Adjust or inherit the stream identifier, stream slice identifier, and EOS flag as needed.

[0028] In one possible design, the flow slice identifier is used by a second network device to resolve the plurality of flow slices according to their order.

[0029] In one possible design, the flow slicing policy includes an indication of whether order preservation is required, the indication being used to instruct a second network device whether to perform a parsing operation on multiple received flow slices in the order of the multiple flow slices; wherein the second network device is a tunnel egress device or an egress device as a TE policy.

[0030] In one possible design, the slicing method is a time-based or packet-count-based slicing method, and the step of splitting the target stream into multiple stream slices according to the slicing method includes:

[0031] The target stream is split into multiple stream slices based on time or number of messages.

[0032] Secondly, embodiments of this application provide a load-sharing method applied to a second network device, the method comprising:

[0033] Receive multiple stream slices on multiple paths;

[0034] Based on the stream slicing strategy, the received multiple stream slices are parsed.

[0035] In one possible design, for each flow slice, the IPv6 header and / or SRH of each packet in that flow slice carries the following:

[0036] Flow slice flag information, the identifier of the first network device, the flow identifier and the flow slice identifier, and the EOS flag used to indicate the end of the flow slice;

[0037] The stream slice flag information is used to indicate the information encapsulated in the SRv6 stream slice type.

[0038] In one possible design, parsing the received multiple stream slices includes:

[0039] The plurality of stream slices are sorted according to the stream slice identifier;

[0040] Based on the matching strategy, slicing method, IPv6 header and / or the content carried by the SRH, the sorted multiple flow slices are parsed sequentially.

[0041] In one possible design, the stream slicing strategy includes a matching strategy, a slicing method, and an indication of whether order preservation is required; the step of parsing the received multiple stream slices according to the stream slicing strategy includes:

[0042] Based on the matching strategy, slicing method, IPv6 header and / or the content carried by the SRH, determine whether to perform parsing operations on the received multiple flow slices in the order of the multiple flow slices by using indication information;

[0043] If parsing is performed sequentially, the multiple stream slices are sorted, and the sorted stream slices are parsed sequentially; or,

[0044] If sequential parsing is not required, then the received stream slices are parsed sequentially.

[0045] Thirdly, embodiments of this application provide a load balancing method applied to intermediate network devices, the method comprising:

[0046] If the intermediate network device acts as a forwarding node, it forwards the received stream slices; or,

[0047] If the intermediate network device serves as the exit device of the previous TE policy and the entry device of the next TE policy, then the load balancing operation corresponding to the nested TE policy is executed.

[0048] In one possible design, the load-sharing operation corresponding to the nested TE strategy includes:

[0049] If the nested TE strategy is an encapsulation mode, a new load balancing segment (SL) for the flow slice is determined according to the flow slicing strategy, and load balancing is performed according to the new SL; wherein, without disrupting the existing flow slice division, the correspondence between nodes corresponding to the flow slices is maintained, and the nodes include the intermediate network device and the adjacent network devices of the intermediate network device; or,

[0050] If the nested TE strategy is in Insert mode, load balancing is performed based on the currently divided flow slices.

[0051] Fourthly, embodiments of this application provide a load-sharing method applied to a controller or orchestrator, the method comprising:

[0052] Determine the stream slicing strategy;

[0053] Send the flow slicing policy to the first network device and the second network device;

[0054] The flow slicing strategy is used by the first network device to perform corresponding load balancing, and by the second network device to perform corresponding parsing based on whether there are sorting requirements.

[0055] Fifthly, embodiments of this application provide a load-sharing device applied to a first network device, the device comprising:

[0056] The stream slice determination module is used to group the received target streams according to the stream slice strategy and determine multiple stream slices; wherein, one stream slice corresponds to one stream slice identifier, one target stream corresponds to one stream identifier, or a group of target streams corresponds to one stream identifier;

[0057] The load balancing module is used to perform load balancing on multiple paths for the multiple flow slices based on the flow identifier and the flow slice identifier, and through the flow slice strategy.

[0058] Sixthly, embodiments of this application provide a load-sharing device applied to a second network device, the device comprising:

[0059] The receiving module is used to receive multiple stream slices on multiple paths;

[0060] The parsing module is used to parse multiple received stream slices according to the stream slicing strategy.

[0061] Seventhly, embodiments of this application provide a load-sharing device applied to an intermediate network device, the device comprising:

[0062] A forwarding module is used to forward received stream slices when the intermediate network device acts as a forwarding node; or,

[0063] The load balancing module is used to perform load balancing operations corresponding to nested TE policies when the intermediate network device acts as the egress device of the previous TE policy and the ingress device of the next TE policy.

[0064] Eighthly, embodiments of this application provide a load-sharing device applied to a controller or orchestrator, the device comprising:

[0065] The determination module is used to determine the stream slicing strategy;

[0066] The sending module is used to send the stream slicing strategy to the first network device and the second network device;

[0067] The flow slicing strategy is used by the first network device to perform corresponding load balancing, and by the second network device to perform corresponding parsing based on whether there are sorting requirements.

[0068] Ninthly, embodiments of this application provide an electronic device, including: a processor, and a memory communicatively connected to the processor;

[0069] The memory stores computer-executed instructions;

[0070] The processor executes computer execution instructions stored in the memory to implement the method as described in any of the preceding aspects.

[0071] In a tenth aspect, embodiments of this application provide a computer-readable storage medium storing computer-executable instructions, which, when executed by a processor, are used to implement the method as described in any of the preceding aspects.

[0072] Eleventhly, embodiments of this application provide a computer program product, including a computer program that, when executed by a processor, implements the method described in any of the preceding aspects.

[0073] The load balancing method, apparatus, and device provided in this embodiment first group the received data streams according to a flow slicing strategy to determine multiple flow slices. Each flow slice corresponds to a flow slice identifier, and a data stream or a group of data streams corresponds to a flow identifier. Further, based on the flow identifier and the flow slice identifier, the load balancing is performed on the multiple flow slices across multiple paths using the flow slicing strategy. Therefore, this application, based on a flow slicing strategy, splits a data stream (e.g., an elephant stream) or a group of data streams into multiple flow slices, and utilizes the assigned flow identifier and flow slice identifier to achieve load balancing on multiple paths through the flow slicing strategy. This improves the load balancing effect, thereby increasing network throughput and reducing latency, while also solving the problem in related technologies where load balancing for elephant streams across multiple paths is impossible. Attached Figure Description

[0074] To more clearly illustrate the technical solutions in the embodiments or related technologies of this application, the accompanying drawings used in the description of the embodiments or related technologies will be briefly introduced below. Obviously, the accompanying drawings described below are some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.

[0075] Figure 1 A schematic diagram illustrating the scenario of the massive data uploading and processing scheme provided in the embodiments of this application;

[0076] Figure 2 A schematic diagram illustrating a scenario of SRv6 stream slice load balancing provided in an embodiment of this application;

[0077] Figure 3 A flowchart illustrating the load-sharing method provided in an embodiment of this application;

[0078] Figure 4 A schematic diagram of message encapsulation provided for embodiments of this application;

[0079] Figure 5 This is a schematic diagram of the load-sharing device provided in the embodiments of this application;

[0080] Figure 6 This is a schematic diagram of the structure of an electronic device provided in an embodiment of this application.

[0081] The accompanying drawings illustrate specific embodiments of this application, which will be described in more detail below. These drawings and descriptions are not intended to limit the scope of the concept in any way, but rather to illustrate the concept of this application to those skilled in the art through reference to particular embodiments. Detailed Implementation

[0082] Exemplary embodiments will now be described in detail, examples of which are illustrated in the accompanying drawings. When the following description relates to the drawings, unless otherwise indicated, the same numbers in different drawings denote the same or similar elements. The embodiments described in the following exemplary embodiments do not represent all embodiments consistent with this application. Rather, they are merely examples of apparatuses and methods consistent with some aspects of this application as detailed in the appended claims.

[0083] Based on the embodiments in this application, all other embodiments obtained by those skilled in the art without inventive effort are within the scope of protection of this application.

[0084] The terms “first,” “second,” “third,” “fourth,” etc. (if present) in the specification, claims, and accompanying drawings of this application 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 embodiments of the application described herein can be implemented, for example, in orders other than those illustrated or described herein. Furthermore, the terms “comprising” and “having,” and any variations thereof, are intended to cover a non-exclusive inclusion; for example, a process, method, system, product, or apparatus that comprises 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 apparatus.

[0085] To address the problems existing in related technologies, the technical concept of this application is to deploy several SRv6 / G-SRv6 paths in the network to achieve load balancing of traffic across multiple paths. Based on flow identifiers and flow slice identifiers, traffic is analyzed through flow slicing strategies, and then intelligently scheduled to balance the load of traffic across different paths.

[0086] The load sharing method, apparatus and equipment provided in this application are intended to solve the above-mentioned technical problems in related technologies.

[0087] First, let me explain the terms used in this application:

[0088] Segment Routing over IPv6 (SRv6) is a next-generation IP transport protocol based on IPv6 and source routing. It unifies traditional complex network protocols, simplifies network protocols, and ensures application-level SLAs, forming the foundation for building intelligent IP networks in the 5G and cloud era. It utilizes existing IPv6 forwarding technologies and enables network programmability through flexible IPv6 extension headers. IPv6+ technology based on SRv6 / G-SRv6, through programmable paths and resource reservation technology, provides high-throughput capabilities with elastic bandwidth expansion through SRv6 / G-SRv6 tunnels.

[0089] Elephant traffic refers to network traffic that consumes a large amount of bandwidth and transmits data for a long time. This type of traffic usually contains a large number of data packets, which, although they may only account for a small portion of the total traffic, consume a large portion of the network bandwidth.

[0090] DSCP (Differentiated Services Code Point) is a field in the IP packet header used to implement the Differentiated Services (DiffServ) model in IP networks. Differentiated Services is a network service model that allows networks to differentiate and process different types of traffic to meet varying Quality of Service (QoS) requirements.

[0091] In the IPv4 packet header, the DSCP field occupies the first 6 bits (the high 6 bits) of the Type of Service (ToS) byte. In IPv6, this functionality is achieved through the first 6 bits of the Traffic Class (TC) field; although the name differs, it is essentially the same as DSCP. (The last sentence appears to be incomplete and possibly refers to a different method or policy, possibly related to ACLs or policy matching.)

[0092] Traffic Engineering Policy (TE) encapsulation modes can include Encap and Insert modes. These two modes are used in TE policies (such as SRv6 TE or G-SRv6 TE policies) to guide the forwarding path and encapsulation method of packets in the network.

[0093] Encap Mode: In Encap mode, when a data packet passes through an intermediate node, if it needs to be forwarded according to the SRv6 TE or G-SRv6 TE policy, the intermediate node will look up the corresponding encapsulation mode based on the Segment Identifier (SID) table. If the encapsulation mode corresponding to the SID is Encap, the intermediate node will encapsulate a new IPv6 header and a new Segment Routing Header (SRH), where the destination address (DA) of the new IPv6 header is set to the address corresponding to the next SID. In this way, the data packet will be forwarded according to the new encapsulation and the path information in the SRH.

[0094] Insert Mode: Similar to Encap mode, in Insert mode, packets also need to make forwarding decisions based on the SID table at intermediate nodes. However, if the encapsulation mode corresponding to the SID is Insert, the intermediate node will insert a new SRH header between the original SRH header and IPv6 header, instead of encapsulating a complete IPv6 header and SRH header. In this way, the packet will carry multiple SRH headers during forwarding until it reaches the destination node.

[0095] The load balancing method provided in this application, based on SRv6 or IPv6+ technology based on Generalized SRv6 (G-SRv6), utilizes programmable paths and resource reservation technology to provide high throughput capabilities with elastic bandwidth expansion through SRv6 / G-SRv6 (i.e., SRv6 or G-SRv6) tunnels. Combined with... Figure 1 As shown, Figure 1 This diagram illustrates a scenario for a massive data uploading and processing solution. Software-defined networking (SDN) management, through intelligent scheduling, achieves efficient dispatching and can receive reports of the entire network status. Data center service flows, via network entry devices, select appropriate SR lists (e.g., SR List 1, SR List 2, SR List 3) based on factors such as load capacity, efficiency, and throughput (i.e., SLs, where an SL includes a path formed by multiple intermediate nodes (i.e., intermediate network devices) to achieve load balancing across multiple paths, thus uploading the data stream to the AI ​​training center.

[0096] Specifically, several SRv6 / G-SRv6 paths are deployed in the network to achieve load balancing of traffic across multiple paths. Traffic statistics are performed, and traffic within the segment list is intelligently scheduled based on traffic conditions to ensure load balancing across different paths. This addresses the challenge of supporting multi-path load balancing for large traffic flows.

[0097] Therefore, intelligent computing services are divided into two main categories: input computing and computing-interconnected scenarios. Input computing involves massive amounts of sample surface data, while AI training data in computing-interconnected scenarios also exhibits characteristics of low throughput and high bandwidth. From the perspective of enhancing computing power or supplementing computing with the network, multi-path load balancing based on SRv6 / G-SRv6 is used to improve network throughput and reduce latency.

[0098] The load balancing method provided in this application is applicable to all target flows, such as a single large data stream or a set of data streams. Figure 2 The diagram illustrates a scenario of SRv6 stream slicing load balancing. The following example uses SRv6-based load sharing. Figure 2 As shown, the scenario includes a controller and network devices. The network devices include the IPv6-based segment routing SRv6 tunnel ingress device PE1, intermediate nodes (such as P1, P2, P3, P4, P5, etc.), and the SRv6 tunnel egress device PE2.

[0099] For example, taking Elephant Flow as an example, the controller (or orchestrator) accepts user service subscriptions and generates a flow slicing policy based on SRv6. This flow slicing policy may include: Access Control List (ACL) policy (used to identify the flow range), slicing method (including number or time, such as quantity and time interval), load balancing related policies SR Policy (here referring to SR TE policy, Traffic Engineering (TE)) / SR BE (Best Effort (BE)), and whether there are sorting requirements at the egress point. The controller (or orchestrator) can distribute the SRv6-based flow slicing policy to the ingress and egress devices, namely PE1 and PE2. The execution process of PE1 is as follows:

[0100] 1. Based on the received data stream, identify the "elephant stream" by redirecting traffic through APN or ACL;

[0101] 2. Substream splitting is performed based on the number of packets or time slices (e.g., time intervals). Stream slices are virtual packet containers.

[0102] 3. Based on the flow slice identifier and the original packet 5-tuple, hash the packets and distribute them evenly across different segment lists (SLs) for forwarding. This achieves SRv6 Policy's non-equal-cost multiple path (NEC) or equal-cost load balancing. For example: SL1: P1→P2→P5, SL2: P1→P3→P5, SL1: P1→P4→P5.

[0103] The data is forwarded to PE2 via an intermediate node. The execution process on PE2 is as follows:

[0104] PE2 decapsulation addresses the need for order preservation by reordering the stream slice boundaries.

[0105] Specifically, targeting Figure 2 The specific process of load sharing shown is as follows:

[0106] 1. The controller / orchestrator (i.e., the controller or orchestrator) accepts user service subscriptions and generates a flow slicing policy based on SRv6. This flow slicing policy may include: matching policy (e.g., ACL, or the data processor (Distributed Processing Unit, DPU) is a match flow table, etc.), slicing method, SR TE policy or SR BE policy, and indication information on whether order preservation is required (i.e., whether there is a sorting requirement at the exit).

[0107] 2. The entire network is planned to use the source address prefix for SRv6 stream slice encapsulation. Each device uses this prefix plus the local node identifier to uniquely identify the entry PE.

[0108] 3. When a packet enters the entry PE (denoted as PE1), the target flow is identified according to policies such as ACL, a flow identifier (denoted as FlowID 1) is assigned, and the flow is split into slices according to the configured splitting rules (here referring to the slicing method). Each slice is assigned a corresponding SRv6 flow slice identifier (e.g., flow slice ID) (e.g., flow slice 1, flow slice 2, flow slice 3). The flow slice IDs are incremented sequentially and rotated in turn according to the flow slice ID space.

[0109] 4. When encapsulating packets on PE1 using SRv6, the source address, flow identifier, flow slice ID, and End of Slice (EOS) flags of the local SRv6 flow slice type need to be included in the outer encapsulation header (e.g., the Segment Routing Header (SRH)). The encapsulation format is as follows. Figure 4 Detailed description of the specific embodiments shown;

[0110] 5. The last packet of each flow slice sets the EOS flag bit; for example, if the last packet of each flow slice sets the EOS flag bit to 1, it indicates that the flow slice has ended (i.e., it has the EOS flag); if the EOS flag bit of other packets is set to 0, it indicates that the flow slice has not ended (i.e., it does not have the EOS flag).

[0111] 6. The tail node PE (denoted as PE2) decrypts the SRv6 encapsulation. Based on the source address prefix of the SRv6 flow slice type encapsulation carried in the packet encapsulation header, it identifies the SRv6 flow slice type encapsulation. Based on the tunnel ingress device identifier (here referring to the network device identifier) ​​and flow identifier, it identifies the same data flow / group. Based on the flow slice ID and EOS flag, it rearranges out-of-order packets at the flow slice boundary. Before the preceding slice of this flow is forwarded, it first buffers the subsequent flow slice packets. After forwarding the packet with the EOS flag corresponding to this slice, it forwards the buffered flow slice packets in sequence. In this way, the corresponding flow slice packets are forwarded in sequence according to the flow slice ID, ensuring that the packets are forwarded to PE2 in order. For example, if flow slice 2 has arrived at PE2 before flow slice 1 is forwarded, PE2 first buffers flow slice 2. After forwarding the packet with the EOS flag corresponding to flow slice 1, it forwards the buffered packets corresponding to flow slice 2 in sequence.

[0112] 7. For data packets that do not require order preservation, this can be controlled through configuration on PE2. In this case, PE2 can simply remove the SRv6 tunnel encapsulation for forwarding.

[0113] Therefore, in this embodiment, based on SRv6 flow slicing, multiple packets of an elephant stream or a group of data streams are encapsulated using SRv6 tunneling, while simultaneously adding the identifier of the tunnel ingress device, flow slice flag information, flow identifier, and flow slice ID. The elephant stream or a group of data streams is split according to time or number of packets, with the same flow identifier for the same data stream / group of data streams, and the same slice identifier for the same flow slice. Load balancing is performed based on flow slices, improving the load balancing effect. Based on the flow identifier and flow slice identifier, the allocation of slice identifiers is controlled at the tunnel ingress, using the slice identifier as a hash perturbation factor to enable load balancing of different flow slices across multiple paths. Out-of-order reordering is performed at the tunnel exit to ensure the ordered transmission of the elephant stream or a group of data streams.

[0114] It should be noted that the implementation method of load balancing based on G-SRv6 is the same as or similar to that of load balancing based on SRv6, and will not be repeated below.

[0115] The technical solution of this application and how the technical solution of this application solves the above-mentioned technical problems are described in detail below with specific embodiments. These specific embodiments can be combined with each other, and the same or similar concepts or processes may not be described again in some embodiments. The embodiments of this application will now be described with reference to the accompanying drawings.

[0116] Figure 3 This is a flowchart illustrating the load-sharing method provided in an embodiment of this application. The load-sharing method may include:

[0117] S301. According to the flow slicing strategy, the received target flow is grouped to determine multiple flow slices; wherein, one flow slice corresponds to one flow slice identifier, one target flow corresponds to one flow identifier, or a group of target flows corresponds to one flow identifier;

[0118] S302. Based on the flow identifier and the flow slice identifier, load balancing is performed on the multiple flow slices on multiple paths using the flow slice strategy.

[0119] In this embodiment, the executing entity may be a first network device, which may be an IPv6-based segment routing SRv6 tunnel entry device or a G-SRv6-based tunnel entry device, without specific limitations.

[0120] Among them, IPv6+ technology based on SRv6 or G-SRv6 provides high throughput capabilities for services with elastic bandwidth expansion through programmable path and resource reservation technology via SRv6 or G-SRv6 tunnels. Based on this feature, several SRv6 / G-SRv6 paths are deployed in the network to achieve load balancing of traffic across multiple paths.

[0121] Specifically, the target flow here can be a single "elephant flow" or a group of data flows; that is, a single target flow can be a single "elephant flow," and a group of target flows can be a group of data flows. Based on the flow slicing strategy, a single data flow (e.g., an "elephant flow") or a group of data flows is split into multiple SRv6 / G-SRv6-based flow slices. Using the assigned flow identifiers and flow slice identifiers, the flow slicing strategy enables load balancing across multiple SRv6 / G-SRv6 flow slices on multiple paths, improving load balancing performance and resolving the issue that related technologies cannot effectively load balance "elephant flows" across multiple paths.

[0122] The load balancing method provided in this application first groups the received data streams according to a flow slicing strategy to determine multiple flow slices. Each flow slice corresponds to a flow slice identifier, and a data stream or a group of data streams corresponds to a flow identifier. Further, based on the flow identifier and the flow slice identifier, the load balancing is performed on the multiple flow slices across multiple paths using the flow slicing strategy. Therefore, this application, based on a flow slicing strategy, splits a data stream (e.g., an elephant stream) or a group of data streams into multiple flow slices, and utilizes the assigned flow identifier and flow slice identifier to achieve load balancing on multiple paths through the flow slicing strategy. This improves the load balancing effect, thereby increasing network throughput and reducing latency, while also solving the problem in related technologies where load balancing for elephant streams across multiple paths is impossible.

[0123] In one possible design, the method further includes:

[0124] Determine the stream slicing strategy.

[0125] The strategy for determining stream slicing includes:

[0126] Receive the stream slicing policy sent by the controller or orchestrator; or,

[0127] Determine the stream slicing strategy based on the predefined configuration.

[0128] In one possible design, the flow slicing strategy is either an IPv6-based segment routing (SRv6) flow slicing strategy or a general IPv6 segment routing (G-SRv6) flow slicing strategy. The flow slicing strategy includes a matching strategy and a slicing method. The flow slice is either an SRv6 flow slice or a G-SRv6 flow slice. The step of determining multiple flow slices for the received target flow packets according to the flow slicing strategy includes:

[0129] According to the matching strategy, the target stream is identified and the stream identifier is assigned;

[0130] According to the slicing method, the target stream is split into multiple stream slices, and a corresponding stream slice identifier is assigned to each of the split stream slices;

[0131] For each packet in each of the flow slices, based on the flow identifier and the flow slice identifier, the packet is encapsulated into an SRv6 data packet format to obtain the SRv6 flow slice, or the packet is encapsulated into a G-SRv6 data packet format to obtain the G-SRv6 flow slice.

[0132] In one possible design, the slicing method is a time-based or packet-count-based slicing method, and the step of splitting the target stream into multiple stream slices according to the slicing method includes:

[0133] The target stream is split into multiple stream slices based on time or number of messages.

[0134] In this embodiment, at the SRv6 tunnel ingress device, a large flow or a group of data flows is identified according to a matching strategy. Related data packets received successively are grouped according to time and / or number of packets, with each group called a flow slice. This ensures that each flow slice is of equal or similar size, thereby reducing the impact on the corresponding weights during subsequent load balancing. Flow identifiers and flow slice IDs are used for identification; the same flow identifier for the same data flow / group of data flows, and the same slice identifier for the same flow slice, allows for subsequent identification of data flows and flow slices based on these identifiers and IDs.

[0135] Taking flow slicing by the number of packets as an example, assuming the number of packets is 200, then packets 1 to 200 belong to flow slice 1, and the flow slice ID is ID_1; packets 201 to 400 belong to flow slice 2, and the flow slice ID is ID_2, and so on.

[0136] In one possible design, the step of encapsulating the packet into an SRv6 packet format to obtain the SRv6 flow slice or encapsulating the packet into a G-SRv6 packet format to obtain the G-SRv6 flow slice based on the flow identifier and the flow slice identifier includes:

[0137] The packet is encapsulated using SRv6, and the following content is carried using an IPv6 header and / or a segment routing extension header (SRH) to obtain the SRv6 flow slice; or, the packet is encapsulated using G-SRv6, and the following content is carried using an IPv6 header and / or a segment routing extension header (SRH) to obtain the G-SRv6 flow slice:

[0138] Flow slice flag information, the identifier of the first network device, the flow identifier and the flow slice identifier, and the EOS flag used to indicate the end of the flow slice;

[0139] The stream slice flag information is used to indicate the information of the stream slice type encapsulation.

[0140] The identifier of the first network device is determined by the source address prefix used for SRv6 stream slice type encapsulation and the local identifier of the first network device.

[0141] In one possible design, the flow slice identifier is used by a second network device to resolve the plurality of flow slices according to their order.

[0142] In this embodiment, to facilitate identification of whether data packets of a single flow slice have been forwarded, an EOS flag is newly defined and set only on the last packet of each flow slice. Furthermore, the flow slice flag information can be used to determine whether the encapsulation is a flow slice; for example, a flow slice flag of 01 indicates a flow slice type encapsulation, while a flow slice flag of 00 indicates a non-flow slice type encapsulation.

[0143] Specifically, when a message enters the SRv6 tunnel, the SRv6 tunnel encapsulation is enhanced by adding the tunnel ingress device identifier, flow slice flag information, flow identifier, and flow slice ID. The EOS flag is set as needed to determine the end data packet of the current flow slice, making it easier to identify whether the data packet of a single flow slice has been forwarded. This enables load balancing based on flow slices, improving the load balancing effect.

[0144] In one possible design, the flow slicing strategy includes a strategy for planning load balancing: the step of load balancing the multiple flow slices on multiple paths according to the flow identifier and the flow slice identifier, through the flow slicing strategy, includes:

[0145] If the load balancing strategy is a Traffic Engineering (TE) strategy, the flow slice identifier is used as a hash perturbation factor. A matching strategy is employed to distribute the load across different segment lists (SLs) according to their weights. Load balancing is then performed on the multiple flow slices based on these multiple SLs. The SLs indicate the load balancing paths. The TE strategy is either an SRv6 TE strategy or a G-SRv6 TE strategy. Alternatively...

[0146] If the relevant strategy for the planned load balancing is the best-effort (BE) strategy, configure and enable the BE load balancing function, and determine the equivalent load balancing (ECMP) or link aggregation group (LAG) member port load balancing based on the target flow on the basis of the flow slice. The BE strategy is the SRv6 BE strategy or the G-SRv6 BE strategy.

[0147] Among them, the original packet five-tuple, virtual LAN VLAN information, DSCP, TC and other matching strategies are used, such as ACL strategy. The specific matching strategy is not limited here.

[0148] In this embodiment, the corresponding load balancing strategy is executed based on SRv6 TE Policy multi-SL load balancing or SRv6 BE load balancing. At the tunnel inlet, the allocation of control slice identifiers is performed, using the flow slice ID as a hash perturbation factor to ensure load balancing of different flow slices of the same data stream / group on multiple paths. When data arrives at the tunnel exit device, the same data stream / group is identified based on the tunnel inlet device identifier and the flow identifier, and then reordered according to the flow slice ID to ensure ordered transmission of the large flow or group of data streams.

[0149] Specifically, regarding the SRv6 BE load balancing scheme: (different traffic slice sizes; load balancing is stronger than no load balancing), combined with... Figure 2 As shown.

[0150] 1. Configure and enable SRv6 BE load balancing. PE1 can perform ECMP or LAG member port (weighted) load balancing based on flow (node ​​identifier + flow identifier) ​​on a flow slice basis. Recommendation: Use the optimization scheme of this embodiment if the latency of different load balancing paths can be determined to be limited.

[0151] 2. Intermediate P nodes use normal BE forwarding: Enable SRv6 BE load balancing function, identify the flow slice type encapsulation based on the source address prefix of the flow slice type encapsulation, and perform traffic-based ECMP / LAG member port (weighted) load balancing based on flow slices.

[0152] Specifically, BE load balancing: record the current flow (node ​​identifier + flow identifier) ​​and arrange the sending rules according to the load balancing ratio; starting egress selection: select the egress interface with more available bandwidth and a higher load balancing ratio as the current sending egress; subsequent egress selection: send the next flow slice packet to the next egress according to the arranged sending rules.

[0153] For example, see Figure 4 As shown, Figure 4 A schematic diagram of message encapsulation is shown.

[0154] Example 1, see Figure 4 Scheme 1 shown:

[0155] 1) The source address carries the flow identifier and flow slice ID;

[0156] 2) The last bit of TC (referring to PKTC) is used to carry the EOS flag of the stream slice on demand.

[0157] Example 2, see Figure 4 Option 2 shown:

[0158] 1) The Flow label field in the IPv6 header carries the flow identifier and flow slice ID;

[0159] 2) The last bit of TC is used to carry the EOS (End of Slice) flag on demand.

[0160] Among them, targeting Figure 4 The stream identifiers in the data include, but are not limited to:

[0161] 1) ACL;

[0162] 2) ARN (Application Response Network) ID;

[0163] 3) APN6 (Application-aware IPv6 Networking) ID.

[0164] The fragmentation process includes, but is not limited to:

[0165] Using packet count as the splitting rule, it is recommended that the number of packets per flow slice be 200-1000;

[0166] Using time slices as the splitting rule, the recommended time slice length is 2T (T is the forwarding delay difference of multiple SRv6 paths).

[0167] In one possible design, the load balancing of the multiple stream slices based on multiple stream slices includes:

[0168] For each flow slice of the same target flow, load sharing is performed according to weight, and one SL is selected from multiple SLs to forward the flow slice.

[0169] In this embodiment, combined with Figure 2 As shown, when a packet enters PE1, the target flow is identified according to policies such as ACLs. A flow identifier is assigned, and the flow is split into slices according to the configured splitting rules. A corresponding flow slice ID is assigned, and using the flow slice ID, the original packet's five-tuple, and VLAN information, load balancing is performed on different SLs according to non-equivalent load balancing (UCMP or ECMP). The flow slice ID serves as a hash perturbation factor, enabling load balancing across multiple paths for different flow slices of the same data flow / group. For example, the hash result of the original packet's five-tuple for Elephant Flow A is X. X is summed with the flow slice ID, and then, according to the load balancing and weights, one SL is selected from multiple SLs for forwarding.

[0170] When load balancing according to weights, and generating multiple flow slice result arrays based on weights, factors such as weight and cache size are considered. This allows for the continuous forwarding of multiple flow slice packets on high-bandwidth flow slices, effectively utilizing cache space. For example, when three flow slices (SL1, SL2, SL3) are load-balanced in a 2:1:1 ratio, the simplified processing is SL1, SL2, SL1, SL3... Assuming that flow slice 1 of flow A is hashed to SL1, then flow slice 2 corresponds to SL2, flow slice 3 to SL1, flow slice 4 to SL3, flow slice 5 to SL1, and so on.

[0171] In one possible design, the load balancing of the multiple stream slices based on multiple stream slices includes:

[0172] If at least one TE policy is nested within the TE policy, the following load balancing operation is performed for the nested TE policy corresponding to the first network device:

[0173] If the nested TE strategy is an encapsulation mode, a new load balancing segment (SL) for the flow slice is determined according to the flow slicing strategy, and load balancing is performed according to the new SL; wherein, without disrupting the existing flow slice division, the correspondence between nodes corresponding to the flow slices is maintained, and the nodes include the first network device and the adjacent network devices of the first network device; or,

[0174] If the nested TE strategy is in Insert mode, load balancing is performed based on the currently divided flow slices.

[0175] In one possible design, the correspondence between the maintenance nodes and the corresponding flow slices includes:

[0176] Adjust or inherit the stream identifier, stream slice identifier, and EOS flag as needed.

[0177] In this embodiment, another SR Policy is nested within the SRv6 TE Policy, and this SR Policy is in Encap mode (adding a new outer encapsulation, including IPv6 packet header and SRH packet header). It can perform load balancing based on flow slices again according to the configuration. Without disrupting the existing flow slice division, the corresponding relationship is maintained, and the flow identifier, flow slice ID and EOS flag are adjusted / inherited as needed, and load balancing is performed according to the new SL.

[0178] If the embedded SR Policy is in Insert mode (adding a new SRH header on top of the original SRv6 encapsulation), load balancing is performed based on the existing flow slice.

[0179] In addition, the intermediate P node uses normal SRv6 forwarding: To ensure load sharing during public network forwarding, multiple SLs can be planned to take the public network's equal cost multiple path (ECMP) path or link aggregation group (LAG) member port respectively.

[0180] If the same device is both the exit point of the previous SR Policy and the entry point of the next SR Policy, then the corresponding relationship is maintained according to the configuration, and the flow identifier, flow slice ID and EOS (End of Slice) flag are adjusted / inherited as needed, and the existing flow slices are reused for load balancing.

[0181] In one possible design, the flow slicing policy includes an indication of whether order preservation is required, the indication being used to instruct a second network device whether to perform a parsing operation on multiple received flow slices in the order of the multiple flow slices; wherein the second network device is a tunnel egress device or an egress device as a TE policy.

[0182] In this embodiment, for data packets requiring order preservation, PE2 decapsulates the SRv6 encapsulation. Based on the source address prefix of the SRv6 flow slice type encapsulation carried in the source address of the packet encapsulation header, it identifies the SRv6 flow slice type encapsulation. Based on the tunnel ingress device identifier and flow identifier, it identifies the same data stream / group. Based on the flow slice ID and EOS (End of Slice) flag, it rearranges out-of-order packets at the flow slice boundary. Before the preceding slice of the flow is forwarded, the subsequent flow slice packets are buffered. After forwarding the packet with the EOS flag corresponding to the slice, the buffered flow slice packets are forwarded sequentially. In this way, the corresponding flow slice packets are forwarded sequentially according to the slice ID, ensuring that the packets are forwarded to PE2 in order. This solves the problem of out-of-order delivery that may be introduced by the per-packet load balancing method when multiple flows have a mixture of large and small packets.

[0183] For data packets that do not require order preservation, this can be controlled through configuration on PE2. In this case, PE2 can simply remove the SRv6 tunnel encapsulation for forwarding.

[0184] Therefore, this application provides wide area network support for flexible high-bandwidth transmission capabilities, enabling accelerated transmission of large-scale data streams between computing scenarios, including input and output.

[0185] Another embodiment of this application provides a load-sharing method, which may include:

[0186] Receive multiple stream slices on multiple paths;

[0187] Based on the stream slicing strategy, the received multiple stream slices are parsed.

[0188] The multiple paths are determined based on the first network device, and the multiple paths are load-sharing multiple paths.

[0189] In this embodiment, the executing entity may be a second network device, which is an IPv6-based segment routing SRv6 tunnel egress device or an egress device as an SRv6 TE policy egress device; or, the second network device may be a G-SRv6-based tunnel egress device or an egress device as a G-SRv6 TE policy egress device, without specific limitations.

[0190] Specifically, the first network device, based on a flow slicing strategy, splits a data stream (e.g., an elephant stream) or a group of data streams into multiple SRv6 / G-SRv6-based flow slices. Using the assigned flow identifier and flow slice identifier, the flow slicing strategy determines how to load-distribute the multiple SRv6 flow slices across multiple paths. The second network device, based on the flow slices received on multiple paths, uses the flow slicing strategy to decapsulate them, thereby achieving multi-path load balancing and improving the load balancing effect. This also solves the problem that related technologies cannot load-distribute elephant streams across multiple paths.

[0191] The load balancing method provided in this application first parses multiple received SRv6 stream slices according to a stream slicing strategy. Therefore, this application, based on stream slices received on multiple paths, utilizes a stream slicing strategy for decapsulation, thereby achieving multi-path load balancing and improving the load balancing effect. It also solves the problem in related technologies that cannot perform load balancing on multiple paths for large streams.

[0192] In one possible design, for each flow slice, the IPv6 header and / or SRH of each packet in that flow slice carries the following:

[0193] Flow slice flag information, the identifier of the first network device, the flow identifier and the flow slice identifier, and the EOS flag used to indicate the end of the flow slice;

[0194] The stream slice flag information is used to indicate the information encapsulated in the SRv6 stream slice type.

[0195] In one possible design, parsing the received multiple stream slices includes:

[0196] The plurality of stream slices are sorted according to the stream slice identifier;

[0197] Based on the matching strategy, slicing method, IPv6 header and / or the content carried by the SRH, the sorted multiple flow slices are parsed sequentially.

[0198] In one possible design, the stream slicing strategy includes a matching strategy, a slicing method, and an indication of whether order preservation is required; the step of parsing the received multiple stream slices according to the stream slicing strategy includes:

[0199] Based on the matching strategy, slicing method, IPv6 header and / or the content carried by the SRH, determine whether to perform parsing operations on the received multiple flow slices in the order of the multiple flow slices by using indication information;

[0200] If parsing is performed sequentially, the multiple stream slices are sorted, and the sorted stream slices are parsed sequentially; or,

[0201] If sequential parsing is not required, then the received stream slices are parsed sequentially.

[0202] In this embodiment, combined with Figure 2 As shown, for packets requiring ordered delivery, PE2 decapsulates SRv6 packets. Based on the source address prefix of the SRv6 flow slice type encapsulation carried in the packet encapsulation header, it identifies the SRv6 flow slice type encapsulation. It then identifies the same data stream / group based on the tunnel ingress device identifier and flow identifier. Based on the flow slice ID and the EOS (End of Slice) flag, it rearranges out-of-order packets at the flow slice boundary. Before the preceding slice of the flow is forwarded, the subsequent flow slice packets are buffered. After forwarding the packet with the EOS flag corresponding to the slice, the buffered flow slice packets are forwarded sequentially. This sequential forwarding of the corresponding flow slice packets based on the slice ID ensures that packets are forwarded to PE2 in order. This solves the out-of-order problem that can be introduced by the per-packet load balancing method when multiple flows have a mix of large and small packets.

[0203] For data packets that do not require order preservation, this can be controlled through configuration on PE2. In this case, PE2 can simply remove the SRv6 tunnel encapsulation for forwarding.

[0204] Another embodiment of this application provides a load balancing method, which is applied to an intermediate network device, and the method includes:

[0205] If the intermediate network device acts as a forwarding node, it forwards the received stream slices; or,

[0206] If the intermediate network device serves as the exit device of the previous TE policy and the entry device of the next TE policy, then the load balancing operation corresponding to the nested TE policy is executed.

[0207] In this embodiment, the execution entity can be an intermediate network device, which can be a forwarding node, a device with SRv6 tunnel ingress device capability or G-SRv6 tunnel ingress device capability, or an intermediate node, without specific limitations.

[0208] Specifically, the first network device, based on a flow slicing strategy, splits a data flow (e.g., an elephant stream) or a group of data flows into multiple SRv6 / G-SRv6-based flow slices. Using the assigned flow identifier and flow slice identifier, and through the flow slicing strategy, it determines how to load-distribute the multiple SRv6 flow slices across multiple paths. Intermediate network devices forward the data or perform load balancing based on nested SRv6 TE strategies. The second network device, based on the flow slices received on multiple paths, decapsulates the data using the flow slicing strategy, thereby achieving multi-path load balancing and improving the load balancing effect. This also solves the problem that related technologies cannot achieve multi-path load balancing for elephant streams.

[0209] In one possible design, the load-sharing operation corresponding to the nested TE strategy includes:

[0210] If the nested TE strategy is an encapsulation mode, a new load balancing segment (SL) for the flow slice is determined according to the flow slicing strategy, and load balancing is performed according to the new SL; wherein, without disrupting the existing flow slice division, the correspondence between nodes corresponding to the flow slices is maintained, and the nodes include the intermediate network device and the adjacent network devices of the intermediate network device; or,

[0211] If the nested TE strategy is in Insert mode, load balancing is performed based on the currently divided flow slices.

[0212] In this embodiment, another SR Policy is nested within the SRv6 TE Policy, and this SR Policy is in Encap mode (adding a new outer encapsulation, including IPv6 packet header and SRH packet header). It can perform load balancing based on flow slices again according to the configuration. Without disrupting the existing flow slice division, the corresponding relationship is maintained, and the flow identifier, flow slice ID and EOS flag are adjusted / inherited as needed, and load balancing is performed according to the new SL.

[0213] If the embedded SR Policy is in Insert mode (adding a new SRH header on top of the original SRv6 encapsulation), load balancing is performed based on the existing flow slice.

[0214] If the intermediate network device is both the exit point of the previous SR Policy and the entry point of the next SR Policy, then according to the configuration, the corresponding relationship is maintained, and the flow identifier, flow slice ID and EOS (End of Slice) flag are adjusted / inherited as needed, and the existing flow slices are reused for load balancing.

[0215] Another embodiment of this application provides a load-sharing method, which is applied to a controller or orchestrator, the method comprising:

[0216] Determine the stream slicing strategy;

[0217] Send the flow slicing policy to the first network device and the second network device;

[0218] The flow slicing strategy is used by the first network device to perform corresponding load balancing, and by the second network device to perform corresponding parsing based on whether there are sorting requirements.

[0219] In this embodiment, the controller / orchestrator (i.e., the controller or orchestrator) accepts user service subscriptions and generates an SRv6-based flow slicing policy. This flow slicing policy may include: a matching policy, a slicing method, an SR TE policy or an SR BE policy, and an indication of whether order preservation is required (i.e., whether there is an ordering requirement at the egress point). The flow slicing policy is sent to a first network device and a second network device. Based on the flow slicing policy, the first network device splits a data stream (e.g., an elephant stream) or a group of data streams into multiple SRv6 / G-SRv6-based flow slices. Using the assigned flow identifier and flow slice identifier, the flow slicing policy determines how to load-distribute the multiple SRv6 flow slices across multiple paths. The second network device decapsulates the received flow slices across multiple paths using the flow slicing policy, thereby achieving multi-path load balancing and improving the load balancing effect. This also solves the problem that related technologies cannot load-distribute elephant streams across multiple paths.

[0220] To implement the load-sharing method, this embodiment provides a load-sharing device, see [link to documentation]. Figure 5 , Figure 5 This is a schematic diagram of the load-sharing device provided in an embodiment of this application; the load-sharing device is applied to a first network device, which is an IPv6-based segment routing SRv6 tunnel ingress device or a G-SRv6-based tunnel ingress device, and the device includes:

[0221] The stream slice determination module 501 is used to group the received target streams according to the stream slice strategy and determine multiple stream slices; wherein, one stream slice corresponds to one stream slice identifier, one target stream corresponds to one stream identifier, or a group of target streams corresponds to one stream identifier;

[0222] The load balancing module 502 is used to perform load balancing on multiple paths for the multiple flow slices based on the flow identifier and the flow slice identifier, and through the flow slice strategy.

[0223] In this embodiment, based on the flow slicing strategy, a data flow (e.g., an elephant flow) or a group of data flows is split into multiple SRv6 / G-SRv6-based flow slices. By using the assigned flow identifier and flow slice identifier, the flow slicing strategy enables load balancing of multiple SRv6 flow slices on multiple paths, improving the load balancing effect, thereby increasing network throughput and reducing latency. At the same time, it solves the problem that related technologies cannot load balance elephant flows on multiple paths.

[0224] The load-sharing device provided in this embodiment can be used to execute the technical solution of the load-sharing method embodiment described in the first aspect above. Its implementation principle and technical effect are similar, and will not be repeated here.

[0225] In one possible design, the flow slicing strategy is either an IPv6-based segment routing (SRv6) flow slicing strategy or a general IPv6 segment routing (G-SRv6) flow slicing strategy. The flow slicing strategy includes a matching strategy and a slicing method. The flow slice is either an SRv6 flow slice or a G-SRv6 flow slice. The flow slice determination module 501 is specifically used for:

[0226] According to the matching strategy, the target stream is identified and the stream identifier is assigned;

[0227] According to the slicing method, the target stream is split into multiple stream slices, and a corresponding stream slice identifier is assigned to each of the split stream slices;

[0228] For each packet in each of the flow slices, based on the flow identifier and the flow slice identifier, the packet is encapsulated into an SRv6 data packet format to obtain the SRv6 flow slice, or the packet is encapsulated into a G-SRv6 data packet format to obtain the G-SRv6 flow slice.

[0229] In one possible design, the stream slice determination module 501 is specifically used for:

[0230] The packet is encapsulated using SRv6, and the following content is carried using an IPv6 header and / or a segment routing extension header (SRH) to obtain the SRv6 flow slice; or, the packet is encapsulated using G-SRv6, and the following content is carried using an IPv6 header and / or a segment routing extension header (SRH) to obtain the G-SRv6 flow slice:

[0231] Flow slice flag information, the identifier of the first network device, the flow identifier and the flow slice identifier, and the EOS flag used to indicate the end of the flow slice;

[0232] The stream slice flag information is used to indicate the information of the stream slice type encapsulation.

[0233] In one possible design, the flow slicing strategy includes a strategy for planning load balancing: the load balancing module 502 is specifically used for:

[0234] If the load balancing strategy is a Traffic Engineering (TE) strategy, the flow slice identifier is used as a hash perturbation factor. A matching strategy is employed to distribute the load across different segment lists (SLs) according to their weights. Load balancing is then performed on the multiple flow slices based on these multiple SLs. The SLs indicate the load balancing paths. The TE strategy is either an SRv6 TE strategy or a G-SRv6 TE strategy. Alternatively...

[0235] If the relevant strategy for the planned load balancing is the best-effort (BE) strategy, configure and enable the BE load balancing function, and determine the equivalent load balancing (ECMP) or link aggregation group (LAG) member port load balancing based on the target flow on the basis of the flow slice. The BE strategy is the SRv6 BE strategy or the G-SRv6 BE strategy.

[0236] In one possible design, the load-sharing module 502 is specifically used for:

[0237] For each flow slice of the same target flow, load sharing is performed according to weight, and one SL is selected from multiple SLs to forward the flow slice.

[0238] In one possible design, the load-sharing module 502 is specifically used for:

[0239] If at least one TE policy is nested within the TE policy, the following load balancing operation is performed for the nested TE policy corresponding to the first network device:

[0240] If the nested TE strategy is an encapsulation mode, a new load balancing segment (SL) for the flow slice is determined according to the flow slicing strategy, and load balancing is performed according to the new SL; wherein, without disrupting the existing flow slice division, the correspondence between nodes corresponding to the flow slices is maintained, and the nodes include the first network device and the adjacent network devices of the first network device; or,

[0241] If the nested TE strategy is in Insert mode, load balancing is performed based on the currently divided flow slices.

[0242] In one possible design, the load-sharing module 502 is specifically used for:

[0243] Adjust or inherit the stream identifier, stream slice identifier, and EOS flag as needed.

[0244] In one possible design, the flow slice identifier is used by a second network device to resolve the plurality of flow slices according to their order.

[0245] In one possible design, the flow slicing policy includes an indication of whether order preservation is required, the indication being used to instruct a second network device whether to perform a parsing operation on multiple received flow slices in the order of the multiple flow slices; wherein the second network device is a tunnel egress device or an egress device as a TE policy.

[0246] In one possible design, the slicing method is a time-based or packet-count-based slicing method, and the flow slice determination module 501 is specifically used for:

[0247] The target stream is split into multiple stream slices based on time or number of messages.

[0248] Another embodiment of this application provides a load-sharing device applied to a second network device, which is an SRv6 tunnel egress device or an egress device using an SRv6 TE policy; or, the second network device is a G-SRv6 tunnel egress device or an egress device using a G-SRv6 TE policy; the device includes:

[0249] The receiving module is used to receive multiple stream slices on multiple paths;

[0250] The parsing module is used to parse multiple received stream slices according to the stream slicing strategy.

[0251] In this embodiment, based on the stream slices received on multiple paths, the stream slice strategy is used for decapsulation, thereby achieving load sharing across multiple paths and improving the load sharing effect. At the same time, it solves the problem that related technologies cannot achieve load sharing across multiple paths for large streams.

[0252] The load-sharing device provided in this embodiment can be used to execute the technical solution of the load-sharing method embodiment described in the second aspect above. Its implementation principle and technical effect are similar, and will not be repeated here.

[0253] In one possible design, for each flow slice, the IPv6 header and / or SRH of each packet in that flow slice carries the following:

[0254] Flow slice flag information, the identifier of the first network device, the flow identifier and the flow slice identifier, and the EOS flag used to indicate the end of the flow slice;

[0255] The stream slice flag information is used to indicate the information encapsulated in the SRv6 stream slice type.

[0256] In one possible design, the parsing module is specifically used for:

[0257] The plurality of stream slices are sorted according to the stream slice identifier;

[0258] Based on the matching strategy, slicing method, IPv6 header and / or the content carried by the SRH, the sorted multiple flow slices are parsed sequentially.

[0259] In one possible design, the stream slicing strategy includes a matching strategy, a slicing method, and an indication of whether order preservation is required; the parsing module is specifically used for:

[0260] Based on the matching strategy, slicing method, IPv6 header and / or the content carried by the SRH, determine whether to perform parsing operations on the received multiple flow slices in the order of the multiple flow slices by using indication information;

[0261] If parsing is performed sequentially, the multiple stream slices are sorted, and the sorted stream slices are parsed sequentially; or,

[0262] If sequential parsing is not required, then the received stream slices are parsed sequentially.

[0263] In this embodiment, combined with Figure 2 As shown, for packets requiring ordered delivery, PE2 decapsulates SRv6 packets. Based on the source address prefix of the SRv6 flow slice type encapsulation carried in the packet encapsulation header, it identifies the SRv6 flow slice type encapsulation. It then identifies the same data stream / group based on the tunnel ingress device identifier and flow identifier. Based on the flow slice ID and the EOS (End of Slice) flag, it rearranges out-of-order packets at the flow slice boundary. Before the preceding slice of the flow is forwarded, the subsequent flow slice packets are buffered. After forwarding the packet with the EOS flag corresponding to the slice, the buffered flow slice packets are forwarded sequentially. This sequential forwarding of the corresponding flow slice packets based on the slice ID ensures that packets are forwarded to PE2 in order. This solves the out-of-order problem that can be introduced by the per-packet load balancing method when multiple flows have a mix of large and small packets.

[0264] For data packets that do not require order preservation, this can be controlled through configuration on PE2. In this case, PE2 can simply remove the SRv6 tunnel encapsulation for forwarding.

[0265] Another embodiment of this application provides a load-sharing device applied to an intermediate network device; the device includes:

[0266] A forwarding module is used to forward received stream slices when the intermediate network device acts as a forwarding node; or,

[0267] The load balancing module is used to perform load balancing operations corresponding to nested TE policies when the intermediate network device acts as the egress device of the previous TE policy and the ingress device of the next TE policy.

[0268] In this embodiment, the execution entity can be an intermediate network device, which can be a forwarding node, a device with SRv6 tunnel ingress device capability or G-SRv6 tunnel ingress device capability, or an intermediate node, without specific limitations.

[0269] Specifically, the first network device, based on a flow slicing strategy, splits a data flow (e.g., an elephant stream) or a group of data flows into multiple SRv6 / G-SRv6-based flow slices. Using the assigned flow identifier and flow slice identifier, and through the flow slicing strategy, it determines how to load-distribute the multiple SRv6 flow slices across multiple paths. Intermediate network devices forward the data or perform load balancing based on nested SRv6 TE strategies. The second network device, based on the flow slices received on multiple paths, decapsulates the data using the flow slicing strategy, thereby achieving multi-path load balancing and improving the load balancing effect. This also solves the problem that related technologies cannot achieve multi-path load balancing for elephant streams.

[0270] The load-sharing device provided in this embodiment can be used to execute the technical solution of the load-sharing method embodiment described in the third aspect above. Its implementation principle and technical effect are similar, and will not be repeated here.

[0271] In one possible design, the load-sharing module is specifically used for:

[0272] If the nested TE strategy is an encapsulation mode, a new load balancing segment (SL) for the flow slice is determined according to the flow slicing strategy, and load balancing is performed according to the new SL; wherein, without disrupting the existing flow slice division, the correspondence between nodes corresponding to the flow slices is maintained, and the nodes include the intermediate network device and the adjacent network devices of the intermediate network device; or,

[0273] If the nested TE strategy is in Insert mode, load balancing is performed based on the currently divided flow slices.

[0274] Another embodiment of this application provides a load-sharing device applied to a controller or orchestrator; the device includes:

[0275] The determination module is used to determine the stream slicing strategy;

[0276] The sending module is used to send the stream slicing strategy to the first network device and the second network device;

[0277] The flow slicing strategy is used by the first network device to perform corresponding load balancing, and by the second network device to perform corresponding parsing based on whether there are sorting requirements.

[0278] In this embodiment, the controller / orchestrator (i.e., the controller or orchestrator) accepts user service subscriptions and generates an SRv6-based flow slicing policy. This flow slicing policy may include: a matching policy, a slicing method, an SR TE policy or an SR BE policy, and an indication of whether order preservation is required (i.e., whether there is an ordering requirement at the egress point). The flow slicing policy is sent to a first network device and a second network device. Based on the flow slicing policy, the first network device splits a data stream (e.g., an elephant stream) or a group of data streams into multiple SRv6 / G-SRv6-based flow slices. Using the assigned flow identifier and flow slice identifier, the flow slicing policy determines how to load-distribute the multiple SRv6 flow slices across multiple paths. The second network device decapsulates the received flow slices across multiple paths using the flow slicing policy, thereby achieving multi-path load balancing and improving the load balancing effect. This also solves the problem that related technologies cannot load-distribute elephant streams across multiple paths. The load-sharing device provided in this embodiment can be used to execute the technical solution of the load-sharing method embodiment described in the fourth aspect above. Its implementation principle and technical effect are similar, and will not be repeated here.

[0279] To implement the methods of the above embodiments, this embodiment provides an electronic device. Figure 6 This is a schematic diagram of the structure of an electronic device provided in an embodiment of this application. Figure 6 As shown, the electronic device of this embodiment includes: a processor 601 and a memory 602 communicatively connected to the processor; wherein, the memory 602 is used to store computer execution instructions; the processor 601 is used to execute the computer execution instructions stored in the memory to implement the various steps performed in the above embodiment. For details, please refer to the relevant descriptions in the foregoing method embodiments.

[0280] This application also provides a computer-readable storage medium storing computer-executable instructions, which, when executed by a processor, implement the above-described method.

[0281] This application also provides a computer program product, including a computer program that, when executed by a processor, implements the above-described method.

[0282] In the several embodiments provided in this application, it should be understood that the disclosed devices and methods can be implemented in other ways. For example, the device embodiments described above are merely illustrative; for instance, the division of modules is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple modules 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 indirect coupling or communication connection through some interfaces, devices, or modules, and may be electrical, mechanical, or other forms. Additionally, the functional modules in the various embodiments of this application may be integrated into one processing unit, or each module may exist physically separately, or two or more modules may be integrated into one unit. The above-mentioned modular units can be implemented in hardware or in the form of hardware plus software functional units.

[0283] The integrated modules implemented as software functional modules described above can be stored in a computer-readable storage medium. These software functional modules, stored in a storage medium, include several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) or processor to execute some steps of the methods of the various embodiments of this application. It should be understood that the processor may be a Central Processing Unit (CPU), or other general-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), etc. A general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in this invention can be directly implemented by a hardware processor, or implemented by a combination of hardware and software modules within the processor.

[0284] The memory may include high-speed RAM, and may also include non-volatile memory (NVM), such as at least one disk drive, and may also be a USB flash drive, external hard drive, read-only memory, disk, or optical disc. The bus may be an Industry Standard Architecture (ISA) bus, a Peripheral Component Interconnect (PCI) bus, or an Extended Industry Standard Architecture (EISA) bus. Buses can be categorized as address buses, data buses, control buses, etc. For ease of illustration, the buses in the accompanying drawings are not limited to a single bus or a single type of bus. The aforementioned storage medium can be implemented by any type of volatile or non-volatile storage device or a combination thereof, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic storage, flash memory, disk, or optical disc. The storage medium can be any available medium accessible to general-purpose or special-purpose computers.

[0285] An exemplary storage medium is coupled to a processor, enabling the processor to read information from and write information to the storage medium. Alternatively, the storage medium can be an integral part of the processor. Both the processor and the storage medium can reside in an Application Specific Integrated Circuit (ASIC). Alternatively, the processor and storage medium can exist as discrete components in an electronic device or host device.

[0286] Those skilled in the art will understand that all or part of the steps of the above-described method embodiments can be implemented by hardware related to program instructions. The aforementioned program can be stored in a computer-readable storage medium. When executed, the program performs the steps of the above-described method embodiments; and the aforementioned storage medium includes various media capable of storing program code, such as ROM, RAM, magnetic disks, or optical disks.

[0287] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of this application, and are not intended to limit them. Although this application has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some or all of the technical features therein. Such modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the scope of the technical solutions of the embodiments of this application.

Claims

1. A load-sharing method, characterized in that, Applied to a first network device, the method includes: According to the stream slicing strategy, the received target streams are grouped to determine multiple stream slices; wherein, one stream slice corresponds to one stream slice identifier, one target stream corresponds to one stream identifier, or a group of target streams corresponds to one stream identifier; Based on the flow identifier and the flow slice identifier, the load is distributed across multiple flow slices on multiple paths using the flow slice strategy.

2. The method according to claim 1, characterized in that, The flow slicing strategy is either the IPv6-based segment routing SRv6 flow slicing strategy or the general IPv6 segment routing G-SRv6 flow slicing strategy. The flow slicing strategy includes a matching strategy and a slicing method. The flow slice is either an SRv6 flow slice or a G-SRv6 flow slice. The step of grouping the received target stream according to the stream slicing strategy and determining multiple stream slices includes: According to the matching strategy, the target stream is identified and the stream identifier is assigned; According to the slicing method, the target stream is split into multiple stream slices, and a corresponding stream slice identifier is assigned to each of the split stream slices; For each packet in each of the flow slices, based on the flow identifier and the flow slice identifier, the packet is encapsulated into an SRv6 data packet format to obtain the SRv6 flow slice, or the packet is encapsulated into a G-SRv6 data packet format to obtain the G-SRv6 flow slice.

3. The method according to claim 2, characterized in that, The step of encapsulating the packet into an SRv6 packet format to obtain the SRv6 flow slice or encapsulating the packet into a G-SRv6 packet format to obtain the G-SRv6 flow slice based on the flow identifier and the flow slice identifier includes: The packet is encapsulated using SRv6, and the following content is carried using an IPv6 header and / or a segment routing extension header (SRH) to obtain the SRv6 flow slice; or, the packet is encapsulated using G-SRv6, and the following content is carried using an IPv6 header and / or a segment routing extension header (SRH) to obtain the G-SRv6 flow slice: Flow slice flag information, the identifier of the first network device, the flow identifier and the flow slice identifier, and the EOS flag used to indicate the end of the flow slice; The stream slice flag information is used to indicate the information of the stream slice type encapsulation.

4. The method according to claim 2 or 3, characterized in that, The flow slicing strategy includes related strategies for planning load balancing: Based on the flow identifier and the flow slice identifier, the flow slicing strategy is used to perform load balancing on multiple paths for the multiple flow slices, including: If the load balancing strategy is a Traffic Engineering (TE) strategy, the flow slice identifier is used as a hash perturbation factor. A matching strategy is employed to distribute the load across different segment lists (SLs) according to their weights. Load balancing is then performed on the multiple flow slices based on these multiple SLs. The SLs indicate the load balancing paths. The TE strategy is either an SRv6 TE strategy or a G-SRv6 TE strategy. Alternatively... If the relevant strategy for the planned load balancing is the best-effort (BE) strategy, configure and enable the BE load balancing function, and determine the equivalent load balancing (ECMP) or link aggregation group (LAG) member port load balancing based on the target flow on the basis of the flow slice. The BE strategy is the SRv6 BE strategy or the G-SRv6 BE strategy.

5. The method according to claim 4, characterized in that, The step of load balancing the multiple stream slices based on multiple stream slices includes: For each flow slice of the same target flow, load sharing is performed according to weight, and one SL is selected from multiple SLs to forward the flow slice.

6. The method according to claim 4, characterized in that, The step of load balancing the multiple stream slices based on multiple stream slices includes: If at least one TE policy is nested within the TE policy, the following load balancing operation is performed for the nested TE policy corresponding to the first network device: If the nested TE strategy is an encapsulation mode, a new load balancing segment (SL) for the flow slice is determined according to the flow slicing strategy, and load balancing is performed according to the new SL; wherein, without disrupting the existing flow slice division, the correspondence between nodes corresponding to the flow slices is maintained, and the nodes include the first network device and the adjacent network devices of the first network device; or, If the nested TE strategy is in Insert mode, load balancing is performed based on the currently divided flow slices.

7. The method according to claim 6, characterized in that, The correspondence between the maintenance nodes and the corresponding flow slices includes: Adjust or inherit the stream identifier, stream slice identifier, and EOS flag as needed.

8. The method according to any one of claims 1-3, characterized in that, The flow slice identifier is used by the second network device to parse according to the order of the multiple flow slices.

9. The method according to any one of claims 1-3, characterized in that, The flow slicing policy includes an indication of whether order preservation is required. The indication is used to instruct the second network device whether to perform parsing operations on the received multiple flow slices in the order of the multiple flow slices; wherein, the second network device is a tunnel egress device or an egress device as a TE policy.

10. The method according to claim 2 or 3, characterized in that, The slicing method is a time-based or packet-count-based slicing method. The step of splitting the target stream into multiple stream slices according to the slicing method includes: The target stream is split into multiple stream slices based on time or number of messages.

11. A load-sharing method, characterized in that, Applied to a second network device, the method includes: Receive multiple stream slices on multiple paths; Based on the stream slicing strategy, the received multiple stream slices are parsed.

12. The method according to claim 11, characterized in that, For each flow slice, the IPv6 header and / or SRH of each packet in the flow slice carries the following information: Flow slice flag information, the identifier of the first network device, the flow identifier and the flow slice identifier, and the EOS flag used to indicate the end of the flow slice; The stream slice flag information is used to indicate the information encapsulated in the SRv6 stream slice type.

13. The method according to claim 12, characterized in that, The parsing of the received multiple stream slices includes: The plurality of stream slices are sorted according to the stream slice identifier; Based on the matching strategy, slicing method, IPv6 header and / or the content carried by the SRH, the sorted multiple flow slices are parsed sequentially.

14. The method according to any one of claims 11-13, characterized in that, The stream slicing strategy includes matching strategy, slicing method, and indication information on whether order preservation is required; The step of parsing the received multiple stream slices according to the stream slicing strategy includes: Based on the matching strategy, slicing method, IPv6 header and / or the content carried by the SRH, determine whether to perform parsing operations on the received multiple flow slices in the order of the multiple flow slices by using indication information; If parsing is performed sequentially, the multiple stream slices are sorted, and the sorted stream slices are parsed sequentially; or, If sequential parsing is not required, then the received stream slices are parsed sequentially.

15. A load-sharing method, characterized in that, Applied to intermediate network devices, the method includes: If the intermediate network device acts as a forwarding node, it forwards the received stream slices; or, If the intermediate network device serves as the exit device of the previous TE policy and the entry device of the next TE policy, then the load balancing operation corresponding to the nested TE policy is executed.

16. The method according to claim 15, characterized in that, The load balancing operation corresponding to the nested TE strategy includes: If the nested TE strategy is an encapsulation mode, a new load balancing segment (SL) for the flow slice is determined according to the flow slicing strategy, and load balancing is performed according to the new SL; wherein, without disrupting the existing flow slice division, the correspondence between nodes corresponding to the flow slices is maintained, and the nodes include the intermediate network device and the adjacent network devices of the intermediate network device; or, If the nested TE strategy is in Insert mode, load balancing is performed based on the currently divided flow slices.

17. A load-sharing method, characterized in that, Applied to a controller or orchestrator, the method includes: Determine the stream slicing strategy; Send the flow slicing policy to the first network device and the second network device; The flow slicing strategy is used by the first network device to perform corresponding load balancing, and by the second network device to perform corresponding parsing based on whether there are sorting requirements.

18. A load-sharing device, characterized in that, Applied to a first network device, the device includes: The stream slice determination module is used to group the received target streams according to the stream slice strategy and determine multiple stream slices; wherein, one stream slice corresponds to one stream slice identifier, one target stream corresponds to one stream identifier, or a group of target streams corresponds to one stream identifier; The load balancing module is used to perform load balancing on multiple paths for the multiple flow slices based on the flow identifier and the flow slice identifier, and through the flow slice strategy.

19. A load-sharing device, characterized in that, Applied to a second network device, the device includes: The receiving module is used to receive multiple stream slices on multiple paths; The parsing module is used to parse multiple received stream slices according to the stream slicing strategy.

20. A load-sharing device, characterized in that, Applied to intermediate network devices, the apparatus includes: A forwarding module is used to forward received stream slices when the intermediate network device acts as a forwarding node; or, The load balancing module is used to perform load balancing operations corresponding to nested TE policies when the intermediate network device acts as the egress device of the previous TE policy and the ingress device of the next TE policy.

21. A load-sharing device, characterized in that, Applied to a controller or orchestrator, the device includes: The determination module is used to determine the stream slicing strategy; The sending module is used to send the stream slicing strategy to the first network device and the second network device; The flow slicing strategy is used by the first network device to perform corresponding load balancing, and by the second network device to perform corresponding parsing based on whether there are sorting requirements.

22. An electronic device, comprising: A processor, and a memory communicatively connected to the processor; The memory stores computer-executed instructions; The processor executes computer execution instructions stored in the memory to implement the load sharing method as described in any one of claims 1-17.

23. A computer program product comprising a computer program that, when executed by a processor, implements the load-sharing method according to any one of claims 1-17.