Bandwidth allocation method, device and system

By using multiple controllers to interact with bandwidth allocation information and congestion information in a distributed system, bandwidth allocation is optimized, and the problems of unfair and inefficient bandwidth allocation in the prior art are solved, and more efficient bandwidth allocation is achieved.

CN115695200BActive Publication Date: 2025-01-10HUAWEI TECH CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202110859240.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-07-28
Publication Date
2025-01-10
Estimated Expiration
2041-07-28

AI Technical Summary

Technical Problem

The existing bandwidth allocation methods have problems of unfairness and inefficiency in distributed system architectures, and it is difficult to achieve fair and accurate allocation of service bandwidth.

Method used

By introducing multiple controllers in a distributed system, using the adjacent relationship between each controller to interact with bandwidth allocation information, the target bandwidth value is determined, and the bandwidth allocation information and congestion information after the end of the previous iteration is optimized. Distribution process to improve bandwidth allocation efficiency.

Benefits of technology

On the premise of ensuring fair and accurate allocation of service bandwidth, bandwidth allocation efficiency is improved, link and port congestion is avoided, and user experience needs are met.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115695200B_ABST
    Figure CN115695200B_ABST
Patent Text Reader

Abstract

The present application provides a bandwidth allocation method. The method can be applied to a distributed system, wherein the distributed system includes N controllers, wherein the N controllers include a first controller and a second controller, wherein N is an integer greater than or equal to 3, and comprises: obtaining first bandwidth allocation information, wherein the first bandwidth allocation information includes a first bandwidth value and a second bandwidth value, wherein the first bandwidth value is a bandwidth value assigned to a first forwarding node in a first subdomain by the first controller after the last round of iterations, and the second bandwidth value is a bandwidth value assigned to a second forwarding node in a second subdomain by the second controller after the last round of iterations, and the first controller is adjacent to the second controller; during this round of iterations, according to the first bandwidth allocation information, determining a target bandwidth value, wherein the target bandwidth value is a bandwidth value occupied by the first controller when the first forwarding node performs service forwarding. The method is conducive to improving bandwidth allocation efficiency under the premise of ensuring fair and accurate allocation of service bandwidth.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of computer communications, and more specifically, to a bandwidth allocation method, device and system. Background Art

[0002] Distributed system architecture (e.g., software defined network (SDN) network or distributed Internet of Things, etc.) has been widely used in the field of communications. When forwarding services based on this distributed system architecture, it is necessary to allocate appropriate bandwidth to all nodes forwarding services to achieve successful forwarding of services. However, the existing bandwidth allocation method has problems of unfairness and low efficiency when allocating bandwidth to all nodes forwarding services in the distributed system architecture.

[0003] Therefore, there is an urgent need for a bandwidth allocation method that can improve bandwidth allocation efficiency while ensuring fair and accurate allocation of service bandwidth. Summary of the invention

[0004] The present application provides a bandwidth allocation method, device and system. The method is conducive to improving bandwidth allocation efficiency while ensuring fair and accurate allocation of service bandwidth.

[0005] In a first aspect, a bandwidth allocation method is provided, which is applied to a distributed system, wherein the distributed system includes N controllers, the N controllers include a first controller and a second controller, and N is an integer greater than or equal to 3, including:

[0006] The first controller obtains first bandwidth allocation information of the service, the first bandwidth allocation information includes a first bandwidth value and a second bandwidth value, the first bandwidth value is a bandwidth value allocated by the first controller to a first forwarding node in a first subdomain after a previous round of iterations, and the second bandwidth value is a bandwidth value allocated by the second controller to a second forwarding node in a second subdomain after a previous round of iterations, and the first controller is adjacent to the second controller;

[0007] During this round of iteration, the first controller determines a target bandwidth value according to the first bandwidth allocation information. The target bandwidth value is a bandwidth value allocated by the first controller to the first forwarding node for service forwarding.

[0008] In the above technical solution, when the first controller determines the target bandwidth allocation value during this round of iteration, it only considers the bandwidth value allocated by the first controller to the first forwarding node for forwarding services in the first subdomain after the previous round of iteration, and the bandwidth value allocated by the controller adjacent to the first controller (for example, the second controller) to the forwarding node (for example, the second forwarding node) for forwarding the service in the subdomain (for example, the second subdomain) managed by it after the previous round of iteration. In this way, the first controller only needs to exchange bandwidth allocation information with the controller adjacent to the first controller. This method is conducive to improving bandwidth allocation efficiency while ensuring fair and accurate allocation of service bandwidth.

[0009] In combination with the first aspect, in some implementations of the first aspect,

[0010] The first bandwidth value is a first preset bandwidth value, and the second bandwidth value is a second preset bandwidth value. The first preset bandwidth value is an initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is an initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

[0011] In the above technical solution, the previous round of iteration process can be understood as the initial bandwidth allocation stage, and the current round of iteration process can be understood as the first bandwidth iteration process.

[0012] In combination with the first aspect, in some implementations of the first aspect,

[0013] The second bandwidth value is determined by the second controller during the previous round of iteration based on the first preset bandwidth value and the second preset bandwidth value, the first preset bandwidth value is the initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is the initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

[0014] In the above technical solution, the previous round of iteration process can be understood as the first iteration process, the current round of iteration process can be understood as the second bandwidth iteration process, and the previous round of iteration process of the first iteration process can be understood as the initial bandwidth allocation stage.

[0015] In combination with the first aspect, in some implementations of the first aspect,

[0016] The first bandwidth allocation information also includes first congestion information, and the first congestion information includes link congestion information where the first forwarding node is located and port congestion information of the first forwarding node when the first forwarding node occupies the first bandwidth value.

[0017] The first controller obtains first bandwidth allocation information of the service, including:

[0018] The first controller receives the first congestion information sent by the first forwarding node.

[0019] In the above technical solution, the first controller will also consider the link congestion information of the first forwarding node where the forwarding service is located and the port congestion information of the first forwarding node when performing this round of iterative calculations, which can avoid link congestion and port congestion and help better meet the user experience related to the service.

[0020] In combination with the first aspect, in some implementations of the first aspect, during this round of iteration, the first controller determines the target bandwidth value according to the first bandwidth allocation information, including:

[0021] During this round of iteration, the first controller determines a third bandwidth value according to the first bandwidth allocation information;

[0022] The first controller determines that a preset condition is satisfied and determines the third bandwidth value as the target bandwidth value.

[0023] In combination with the first aspect, in some implementations of the first aspect, the N controllers include the third controller, the third controller is adjacent to the second controller, and the third controller is different from the first controller,

[0024] The prerequisites include:

[0025] A difference between the third bandwidth value and the first bandwidth value is less than a preset threshold, a difference between the fourth bandwidth value and the second bandwidth value is less than the preset threshold, the fourth bandwidth value is a bandwidth value allocated by the second controller to the second forwarding node for forwarding the service, the fourth bandwidth value is determined by the second controller according to second bandwidth allocation information during this round of iteration, the second bandwidth allocation information includes the second bandwidth value and a sixth bandwidth value, the sixth bandwidth value is a bandwidth value allocated by the third controller to the third forwarding node in the third subdomain after the previous round of iteration ends.

[0026] In combination with the first aspect, in certain implementations of the first aspect, the second bandwidth allocation information also includes second congestion information, which includes link congestion information where the second forwarding node is located and port congestion information of the second forwarding node when the second forwarding node occupies the second bandwidth value.

[0027] In combination with the first aspect, in some implementations of the first aspect, the first forwarding node is a source node of the service, and the method further includes:

[0028] The first controller determines, according to a request message obtained from the first forwarding node, a target path for forwarding the service, wherein the request message is used to request forwarding the service from the first forwarding node to the third forwarding node, and the target path includes the first forwarding node, the second forwarding node, and the third forwarding node;

[0029] The first controller determines first communication delay information according to path information, where the path information represents a path of a service forwarded by a forwarding node in the first subdomain, and the path information includes the target path;

[0030] The first controller determines a first communication mode according to the first communication delay information, wherein the first communication delay information includes a communication delay between the first controller and the second controller, and the first communication mode indicates bandwidth allocation information exchanged between the first controller and the second controller.

[0031] In combination with the first aspect, in certain implementations of the first aspect, the N controllers also include a fourth controller, the first controller is an intermediate controller between the second controller and the fourth controller, the first bandwidth allocation information also includes a seventh bandwidth value, the seventh bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node in the fourth subdomain after the end of the previous round of iterations, the second bandwidth allocation information also includes an eighth bandwidth value, the eighth bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node after the end of the current round of iterations, and the difference between the eighth bandwidth value and the seventh bandwidth value is less than a preset threshold.

[0032] In combination with the first aspect, in some implementations of the first aspect, the method further includes:

[0033] The first controller determines second communication delay information according to the acquired path information, the path information indicating a path of the service forwarded by the forwarding node in the first subdomain, the path information including a target path for forwarding the service, the target path including the first forwarding node, the second forwarding node, and the fourth forwarding node, the second communication delay information including a communication delay between the first controller and the second controller, and a communication delay between the first controller and the fourth controller;

[0034] The first controller determines a second communication mode according to the second communication delay information, wherein the second communication mode indicates that the fourth controller and the first controller exchange bandwidth allocation information, and the first controller and the second controller exchange bandwidth allocation information.

[0035] In a second aspect, a bandwidth allocation device is provided, characterized in that it is applied to a distributed system, the distributed system includes N controllers, the N controllers include a first controller and a second controller, N is an integer greater than or equal to 3, and includes:

[0036] an acquiring unit, configured to acquire first bandwidth allocation information of a service, the first bandwidth allocation information including a first bandwidth value and a second bandwidth value, the first bandwidth value being a bandwidth value allocated by the first controller to a first forwarding node in a first subdomain after a previous round of iterations, the second bandwidth value being a bandwidth value allocated by the second controller to a second forwarding node in a second subdomain after a previous round of iterations, the first controller being adjacent to the second controller;

[0037] The determination unit is used to determine a target bandwidth value according to the first bandwidth allocation information during this round of iterations. The target bandwidth value is a bandwidth value allocated by the first controller to the first forwarding node for service forwarding.

[0038] In conjunction with the second aspect, in some implementations of the second aspect,

[0039] The first bandwidth value is a first preset bandwidth value, and the second bandwidth value is a second preset bandwidth value. The first preset bandwidth value is an initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is an initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

[0040] In conjunction with the second aspect, in some implementations of the second aspect,

[0041] The second bandwidth value is determined by the second controller during the previous round of iteration based on the first preset bandwidth value and the second preset bandwidth value, the first preset bandwidth value is the initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is the initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

[0042] In conjunction with the second aspect, in some implementations of the second aspect,

[0043] The first bandwidth allocation information also includes first congestion information, and the first congestion information includes link congestion information where the first forwarding node is located and port congestion information of the first forwarding node when the first forwarding node occupies the first bandwidth value.

[0044] The first controller obtains first bandwidth allocation information of the service, including:

[0045] The first controller receives the first congestion information sent by the first forwarding node.

[0046] In conjunction with the second aspect, in some implementations of the second aspect,

[0047] The determination unit is also used for:

[0048] During this round of iteration, a third bandwidth value is determined according to the first bandwidth allocation information;

[0049] It is determined that the preset condition is met, and the third bandwidth value is determined as the target bandwidth value.

[0050] In combination with the second aspect, in some implementations of the second aspect, the N controllers include the third controller, the third controller is adjacent to the second controller, and the third controller is different from the first controller,

[0051] The prerequisites include:

[0052] A difference between the third bandwidth value and the first bandwidth value is less than a preset threshold, a difference between the fourth bandwidth value and the second bandwidth value is less than the preset threshold, the fourth bandwidth value is a bandwidth value allocated by the second controller to the second forwarding node for forwarding the service, the fourth bandwidth value is determined by the second controller according to second bandwidth allocation information during this round of iteration, the second bandwidth allocation information includes the second bandwidth value and a sixth bandwidth value, the sixth bandwidth value is a bandwidth value allocated by the third controller to the third forwarding node in the third subdomain after the previous round of iteration ends.

[0053] In conjunction with the second aspect, in some implementations of the second aspect,

[0054] The second bandwidth allocation information also includes second congestion information, and the second congestion information includes link congestion information where the second forwarding node is located and port congestion information of the second forwarding node when the second forwarding node occupies the second bandwidth value.

[0055] In conjunction with the second aspect, in some implementations of the second aspect, the first forwarding node is a source node of the service,

[0056] The determination unit is also used for:

[0057] Determine, according to the request message obtained from the first forwarding node, a target path for forwarding the service, wherein the request message is used to request to forward the service from the first forwarding node to the third forwarding node, and the target path includes the first forwarding node, the second forwarding node, and the third forwarding node;

[0058] Determine first communication delay information according to path information, where the path information represents a path of a service forwarded by a forwarding node in the first subdomain, and the path information includes the target path;

[0059] Determine a first communication mode according to the first communication delay information, the first communication delay information includes a communication delay between the first controller and the second controller, and the first communication mode indicates that the first controller and the second controller exchange bandwidth allocation information allocated to each other;

[0060] The obtaining unit is further configured to obtain the request message from the first forwarding node.

[0061] In conjunction with the second aspect, in some implementations of the second aspect,

[0062] The N controllers also include a fourth controller, the first controller is an intermediate controller between the second controller and the fourth controller, the first bandwidth allocation information also includes a seventh bandwidth value, the seventh bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node in the fourth subdomain after the previous round of iteration ends, the second bandwidth allocation information also includes an eighth bandwidth value, the eighth bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node after the current round of iteration ends, and the difference between the eighth bandwidth value and the seventh bandwidth value is less than a preset threshold.

[0063] In conjunction with the second aspect, in some implementations of the second aspect,

[0064] The determination unit is also used for:

[0065] Determine second communication delay information according to the acquired path information, the path information indicating a path of the service forwarded by the forwarding node in the first subdomain, the path information including a target path for forwarding the service, the target path including the first forwarding node, the second forwarding node, and the fourth forwarding node, the second communication delay information including a communication delay between the first controller and the second controller, and a communication delay between the first controller and the fourth controller;

[0066] Determine a second communication mode according to the second communication delay information, wherein the second communication mode indicates that the fourth controller and the first controller exchange bandwidth allocation information allocated to each other, and the first controller and the second controller exchange bandwidth allocation information allocated to each other;

[0067] The acquisition unit is also used to acquire the path information.

[0068] In a third aspect, a first controller is provided, which has the function of implementing the bandwidth allocation device described in the second aspect. The function can be implemented based on hardware, or can be implemented based on hardware executing corresponding software. The hardware or software includes one or more modules corresponding to the above functions.

[0069] In one possible design, the structure of the first controller includes a processor, which is configured to support the first controller to execute corresponding functions in the above method.

[0070] The first controller may further include a memory, which is coupled to the processor and stores program instructions and data necessary for the first controller.

[0071] In another possible design, the first controller includes: a processor, a transmitter, a receiver, a random access memory, a read-only memory, and a bus. The processor is respectively coupled to the transmitter, the receiver, the random access memory, and the read-only memory through the bus. When the first controller needs to be run, it is started by the basic input / output system solidified in the read-only memory or the bootloader boot system in the embedded system to guide the first controller into a normal operating state. After the first controller enters the normal operating state, the application program and the operating system are run in the random access memory, so that the processor executes the method in the first aspect or any possible implementation of the first aspect.

[0072] According to a fourth aspect, a computer program product is provided, the computer program product comprising: a computer program code, when the computer program code is run on a computer, the computer executes the above-mentioned first aspect or any possible executable method of the first aspect.

[0073] In a fifth aspect, a computer readable medium is provided, the computer readable medium storing program code, when the computer program code is run on a computer, the computer executes the first aspect or any possible method of the first aspect. These computer readable storages include but are not limited to one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), Flash memory, electrically EPROM (EEPROM) and hard drive.

[0074] In a sixth aspect, a chip system is provided, the chip system comprising a processor and a data interface, wherein the processor reads instructions stored in a memory through the data interface to execute the method in the first aspect or any possible implementation of the first aspect. In a specific implementation process, the chip system can be implemented in the form of a central processing unit (CPU), a microcontroller unit (MCU), a microprocessor (MPU), a digital signal processor (DSP), a system on chip (SoC), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), or a programmable logic device (PLD).

[0075] In a seventh aspect, a bandwidth allocation system is provided, the system comprising the bandwidth allocation device in the second aspect or any possible implementation of the second aspect. BRIEF DESCRIPTION OF THE DRAWINGS

[0076] Figure 1 is a schematic diagram of a system architecture 100 applicable to an embodiment of the present application.

[0077] Figure 2 It is a schematic flow chart of a bandwidth allocation method 200 provided in an embodiment of the present application.

[0078] Figure 3 It is a schematic flow chart of a bandwidth allocation method 300 provided in an embodiment of the present application.

[0079] Figure 4 It is a schematic flowchart of the second iteration process in the bandwidth allocation method 300 provided in an embodiment of the present application.

[0080] Figure 5 It is a schematic structural diagram of a bandwidth allocation device 500 provided in an embodiment of the present application.

[0081] Figure 6 It is a hardware structure diagram of a bandwidth allocation device 2000 provided in an embodiment of the present application. DETAILED DESCRIPTION

[0082] The technical solution in this application will be described below in conjunction with the accompanying drawings.

[0083] The terms used in the implementation section of this application are only used to explain the specific embodiments of this application and are not intended to limit this application.

[0084] In this application, the terms "first", "second", "third", etc. are used to distinguish identical or similar items with basically the same effects and functions. There is no logical or temporal dependency between "first", "second" and "third", and no limitation is imposed on the quantity and execution order.

[0085] The present application will present various aspects, embodiments or features around a system that may include multiple devices, components, modules, etc. It should be understood and appreciated that each system may include additional devices, components, modules, etc., and / or may not include all of the devices, components, modules, etc. discussed in conjunction with the figures. In addition, combinations of these schemes may also be used.

[0086] In addition, in the embodiments of the present application, words such as "exemplary" and "for example" are used to indicate examples, illustrations or explanations. Any embodiment or design described as "exemplary" in the present application should not be interpreted as being more preferred or more advantageous than other embodiments or designs. Specifically, the use of the word "exemplary" is intended to present concepts in a concrete way.

[0087] The network architecture and business scenarios described in the embodiments of the present application are intended to more clearly illustrate the technical solutions of the embodiments of the present application, and do not constitute a limitation on the technical solutions provided in the embodiments of the present application. A person of ordinary skill in the art can appreciate that with the evolution of the network architecture and the emergence of new business scenarios, the technical solutions provided in the embodiments of the present application are also applicable to similar technical problems.

[0088] References to "one embodiment" or "some embodiments" etc. described in this specification mean that a particular feature, structure or characteristic described in conjunction with the embodiment is included in one or more embodiments of the present application. Thus, the phrases "in one embodiment", "in some embodiments", "in some other embodiments", "in some other embodiments", etc. that appear at different places in this specification do not necessarily refer to the same embodiment, but mean "one or more but not all embodiments", unless otherwise specifically emphasized in other ways. The terms "including", "comprising", "having" and their variations all mean "including but not limited to", unless otherwise specifically emphasized in other ways.

[0089] In the present application, "at least one" means one or more, and "plurality" means two or more. "And / or" describes the association relationship of associated objects, indicating that three relationships may exist. For example, A and / or B can mean: A exists alone, A and B exist at the same time, and B exists alone, where A and B can be singular or plural. The character " / " generally indicates that the previous and next associated objects are in an "or" relationship. "At least one of the following" or similar expressions refers to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can mean: a, b, c, ab, ac, bc, or abc, where a, b, c can be single or multiple.

[0090] The following describes the related technologies of the embodiments of the present application:

[0091] First combine Figure 1 , introduces the system architecture applicable to the embodiments of the present application. Figure 1 1 is a schematic diagram of a system architecture 100 applicable to an embodiment of the present application. Figure 1 As shown, the system architecture 100 includes multiple controllers (i.e., controller j, j=1, 2, 3, 4) and multiple switching devices (i.e., switching devices i, i=1, 2, 3, 4, 5, 6, 7, 8, 9). Some of the multiple controllers can communicate with each other through an east-west interface. For example, controller 1 and controller 2 can communicate with each other through an east-west interface. For another example, controller 3 and controller 4 can communicate with each other through an east-west interface.

[0092] Controller 1 is used to manage switching devices in subdomain 1 (i.e., switching device 1, switching device 2, and switching device 3), controller 2 is used to manage switching devices in subdomain 2 (i.e., switching device 4 and switching device 5), controller 3 is used to manage switching devices in subdomain 3 (i.e., switching device 6, switching device 7, and switching device 8), and controller 4 is used to manage switching devices in subdomain 4 (i.e., switching device 9). Wherein, one controller is used to manage switching devices in one subdomain, which can be understood as that one controller is used to send configuration information to the switching devices in the one subdomain, and the configuration information includes but is not limited to: the bandwidth value occupied by the forwarding service, the forwarded service information, the path of the forwarding service, and the service identity document (ID). Taking the example of controller 1 managing the switching device in subdomain 1, after controller 1 receives a service request from a source node (e.g., a user terminal device), controller 1 can determine a forwarding path for forwarding the service to a destination node according to the service request of the source node (e.g., service priority), and allocate a bandwidth value to the switching device (e.g., switching device 1) in subdomain 1 managed by controller 1 that forwards the service, and allocate the forwarding path and bandwidth value to the switching device in subdomain 1 that forwards the service. The controller communicates with the switching devices in the subdomains it manages through a network communication protocol.

[0093] In the above system architecture 100, the switching devices in different subdomains that forward the same service use the same routing protocol. The routing protocol includes, but is not limited to, the following routing protocols: border gateway protocol (BGP), routing information protocol (RIP), open shortest path first (OSPF). For example, the path for forwarding service 1 includes the following switching devices: switching device 4 and switching device 5 in subdomain 2, and switching device 6 in subdomain 3. Based on this, switching device 4, switching device 5, and switching device 6 can all use the same routing protocol. For another example, the path for forwarding service 1 includes the following switching devices: switching device 3 in subdomain 1, switching device 4 and switching device 5 in subdomain 2, and switching device 6 in subdomain 3. Based on this, switching device 3, switching device 4, switching device 5, and switching device 6 can all use the same routing protocol.

[0094] In the embodiment of the present application, the type of controller is not specifically limited. In some implementations, the controller may be an SDN controller. In other implementations, the controller may be a controller having similar functions to an SDN controller. When the controller is an SDN controller, the controller and the switching devices in the subdomains it manages communicate via the OpenFlow protocol. In the embodiment of the present application, the switching device may be a switch or a router, or the switching device may also be a network device other than a switch or a router having a switching function.

[0095] It should be understood that Figure 1 This is for illustration only and does not constitute any limitation on the system architecture applicable to the embodiments of the present application. Figure 1 The system architecture 100 shown can be a complete distributed system architecture, optionally, Figure 1 The system architecture 100 shown may be a part of a complete distributed system architecture. In this case, the controller 4 may also have one or more downstream controllers, and the controller 1 may also have one or more upstream controllers. For example, the system architecture 100 may also include a smaller number (e.g., 2 or 3) or a larger number (e.g., 10 or 20, etc.) of controllers. Based on this, the network communication topology may also be larger than Figure 1 The network communication topology shown is complex. For example, each subdomain corresponding to each controller of the system architecture 100 may also include a greater number (e.g., 6 or 10, etc.) or a smaller number (e.g., 1) of switches. For example, in some other implementations, the controller 4 may also communicate with the controller 2.

[0096] The embodiment of the present application provides a bandwidth allocation method, which is conducive to improving bandwidth allocation efficiency while ensuring fair and accurate allocation of service bandwidth.

[0097] Combine the following Figure 2 , a bandwidth allocation method provided in an embodiment of the present application is described in detail. Figure 2 2 is a schematic flow chart of a bandwidth allocation method 200 provided in an embodiment of the present application. Figure 2 As shown, the method 200 may include step 210 and step 220, and step 210 and step 220 are described in detail below.

[0098] In the embodiment of the present application, the method 200 may be applied to a distributed system, wherein the distributed system includes N controllers, wherein the N controllers include a first controller and a second controller, and N is an integer greater than or equal to 3. Exemplarily, the architecture of the distributed system may be as described above. Figure 1 System architecture 100 is shown.

[0099] Step 210: The first controller obtains first bandwidth allocation information of the service, where the first bandwidth allocation information includes a first bandwidth value and a second bandwidth value. The first bandwidth value is a bandwidth value allocated to a first forwarding node in a first subdomain by the first controller after a previous round of iterations, and the second bandwidth value is a bandwidth value allocated to a second forwarding node in a second subdomain by the second controller after a previous round of iterations. The second forwarding node is a node that forwards the service, and the first controller is adjacent to the second controller.

[0100] The first forwarding node in the first subdomain managed by the first controller can be a source node for sending services, and the first forwarding node can also be an intermediate node for forwarding services. The second forwarding node in the second subdomain managed by the second controller can be an intermediate node for forwarding services, and the second forwarding node can also be a destination node for receiving services. Among them, one controller manages the forwarding nodes in one subdomain, which can be understood as that the one controller can send configuration information to the forwarding nodes in the one subdomain, and the configuration information includes but is not limited to: the bandwidth value occupied by the forwarding service, the service ID, and the path of the forwarding service.

[0101] In the embodiment of the present application, there is no specific limitation on the first controller being adjacent to the second controller. In one example, the first controller is adjacent to the second controller, and the first controller is the previous hop device of the second controller. Figure 1 For example, the first controller may be controller 1, and the second controller may be controller 2. In another example, the first controller is adjacent to the second controller, and the first controller is the next hop device of the second controller. Figure 1 For example, the first controller may be controller 1, the second controller may be controller 2, the first controller may be controller 2, the second controller may be controller 3, and the first controller may be controller 3, and the second controller may be controller 4. It should be understood that when the first controller is the next hop device of the second controller, the first forwarding node in the first subdomain managed by the first controller is not the source node for sending the service.

[0102] Optionally, in some implementations, when there are two controllers adjacent to the first controller, one of the two controllers is the second controller. In this case, the first controller may also determine the bandwidth information allocated by the first controller to the forwarding nodes of the forwarding services after the end of the current round of iterations based on the bandwidth information allocated by the two controllers to the forwarding nodes of their respective forwarding services after the end of the previous round of iterations, and the bandwidth information allocated by the first controller to the forwarding nodes of the forwarding services after the end of the previous round of iterations. Figure 1For example, the first controller may be controller 2, and the two controllers adjacent to the first controller are controller 1 and controller 3. Based on this, during the current round of iterative calculation, controller 2 may determine the bandwidth information allocated by controller 2 to the forwarding node for the forwarding service after the current round of iteration, based on the bandwidth information allocated by controller 1 to the forwarding node for the forwarding service after the previous round of iteration, the bandwidth information allocated by controller 2 to the forwarding node for the forwarding service, and the bandwidth information allocated by controller 3 to the forwarding node for the forwarding service.

[0103] In an embodiment of the present application, the process of the first controller determining the target bandwidth value of the forwarding service according to the first bandwidth allocation information may include M iterative calculations, where M is an integer greater than or equal to 1. It is understandable that after the last round of iterative calculations, the controller (for example, the first controller) may store the bandwidth allocation result of the last round of iterative calculations locally, so that the bandwidth allocation value after the last round of iterative calculations can be quickly obtained in the next round of iterative calculations. Among them, the bandwidth iteration algorithm is not specifically limited. For example, the bandwidth iteration algorithm may be, but is not limited to: a distributed bandwidth allocation algorithm based on the alternating direction method of multipliers (ADMM), or a distributed bandwidth allocation method based on the method of lagrange multipliers.

[0104] In one example, when the first controller determines that the target bandwidth value of the forwarding service includes only 1 (i.e., M is equal to 1) iterative calculation according to the bandwidth allocation information of the service, the previous round of iteration can be understood as the initialization bandwidth allocation stage. At this time, the first bandwidth value is the first preset bandwidth value, the second bandwidth value is the second preset bandwidth value, the first preset bandwidth value is the initial bandwidth value assigned by the first controller to the first forwarding node to forward the service, and the second preset bandwidth value is the initial bandwidth value assigned by the second controller to the second forwarding node to forward the service. Among them, the size of the first preset bandwidth value and the second preset bandwidth value is not specifically limited. For example, the size of the first preset bandwidth value may be equal to the size of the second preset bandwidth value (for example, equal to zero). For another example, the size of the first preset bandwidth value may not be equal to the size of the second preset bandwidth value. In another example, the first controller determines that the target bandwidth value of the forwarding service includes 2 (i.e., M is equal to 2) iterative calculations according to the bandwidth allocation information of the service. When the first controller determines the target bandwidth value for forwarding the service based on the bandwidth allocation information of the service, including two iterative calculations, the second bandwidth value is determined by the second controller in the previous round of iterations (i.e., the first iteration) based on the first preset bandwidth value and the second preset bandwidth value, the first preset bandwidth value is the initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is the initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service. At this point, the previous round of iterations can be understood as the initialization bandwidth allocation phase. In another example, the first controller determines the target bandwidth value for forwarding the service based on the bandwidth allocation information of the service, including three or more iterative calculations (i.e., M is greater than or equal to 3). The following will combine Figure 3 The process of determining the target bandwidth value of the forwarding service by the first controller according to the bandwidth allocation information of the service including bandwidth allocation of M iterative calculations is specifically introduced, which will not be repeated here.

[0105] Optionally, in some other implementations, the first bandwidth allocation information in the above step 210 may also include first congestion information, and the first congestion information includes link congestion information of the first forwarding node when the first forwarding node occupies the first bandwidth value and port congestion information of the first forwarding node. Based on this, the first controller also needs to obtain the first congestion information from the first forwarding node. Among them, the link where the first forwarding node is located can be understood as the link where the first forwarding node is connected to the second forwarding node, and at this time the second forwarding node occupies the second bandwidth value, and the link congestion information represents the difference between the bandwidth value upper limit of the link between the first forwarding node and the second forwarding node and the first bandwidth value. It can be understood that when the difference is equal to zero, it means that the link between the first forwarding node and the second forwarding node is not congested. Among them, the port congestion information of the first forwarding node can be understood as that when the first forwarding node occupying the first bandwidth value forwards the service to the second forwarding node occupying the second bandwidth value, there is a traffic overflow at the port of the first forwarding node, and there is a packet loss phenomenon of the data packet corresponding to the service. Exemplarily, the first congestion information can be expressed as {ID of the first forwarding node, congestion value of link 1, overflow value of port 1}, link 1 is the link between the first forwarding node and the second forwarding node, and port 1 is the port through which the first forwarding node forwards services to the second forwarding node.

[0106] Step 220: During this round of iteration, the first controller determines a target bandwidth value according to the first bandwidth allocation information. The target bandwidth value is a bandwidth value allocated by the first controller to the first forwarding node for service forwarding.

[0107] In the above step 220, during this round of iteration, the first controller determines the target bandwidth value according to the first bandwidth allocation information, including:

[0108] During this round of iteration, the first controller determines a third bandwidth value according to the first bandwidth allocation information;

[0109] The first controller determines that the preset condition is satisfied and determines the third bandwidth value as the target bandwidth value.

[0110] Among them, satisfying the preset conditions may include: the difference between the third bandwidth value and the first bandwidth value is less than the preset threshold, the difference between the fourth bandwidth value and the second bandwidth value is less than the preset threshold, the fourth bandwidth value is the bandwidth value occupied by the second controller when allocating services to the second forwarding node, the fourth bandwidth value is determined by the second controller according to the second bandwidth allocation information during this round of iteration, the second bandwidth allocation information includes the second bandwidth value and the sixth bandwidth value, the sixth bandwidth value is the bandwidth value allocated by the third controller to the third forwarding node in the third subdomain after the previous round of iteration. The N controllers include the third controller, the third controller is adjacent to the second controller, and the third controller is different from the first controller. In the above text, Figure 1For example, the first controller may be controller 2, the second controller may be controller 3, and the third controller may be controller 4. For another example, the third controller may be controller 1, the second controller may be controller 2, and the first controller may be controller 3.

[0111] Optionally, the second bandwidth allocation information further includes second congestion information, and the second congestion information includes link congestion information of the second forwarding node when the second forwarding node occupies the second bandwidth value and port congestion information of the second forwarding node. The description of the link congestion information included in the second congestion information is similar to the description of the port congestion information, which can be referred to in the description principle of the first congestion information in step 210, and will not be repeated here.

[0112] Optionally, after the above step 220, the first controller may also send the determined target bandwidth value to the first forwarding node through the southbound interface, so that the first forwarding node occupies the target bandwidth value to forward services.

[0113] Optionally, before the above step 210 and the above step 220, each controller in the distributed system can also determine the communication mode between the controllers corresponding to the forwarding nodes of the forwarding service according to the target path and communication delay information of the forwarding service. The following specifically introduces the method for the first controller to determine the first communication mode.

[0114] In some implementations, the first forwarding node is a source node of the service, and the first controller performs the following operations to determine the first communication mode:

[0115] The first controller determines a target path for forwarding the service according to a request message obtained from the first forwarding node, where the request message is used to request forwarding the service from the first forwarding node to the third forwarding node, and the target path is a path from the first subdomain to the third subdomain, and the second subdomain is included between the first subdomain and the third subdomain;

[0116] The first controller determines first communication delay information according to path information, where the path information represents a path of a service forwarded by a forwarding node in the first subdomain, and the path information includes a target path;

[0117] The first controller determines a first communication mode according to first communication delay information, the first communication delay information includes a communication delay between the first controller and the second controller, and the first communication mode indicates bandwidth allocation information exchanged between the first controller and the second controller.

[0118] The first controller determines the first communication delay information according to the path information, which may include but is not limited to the following steps:

[0119] The first controller determines a first controller set and a second controller set according to the path information, wherein any controller included in the first controller set is a previous-hop controller of the first controller, and any controller included in the second controller set is a next-hop controller of the first controller;

[0120] The first controller communicates with each controller included in the first controller set and communicates with each controller included in the second controller set to obtain first communication delay information.

[0121] It can be understood that when the forwarding node in the first subdomain is also used to forward other services except the above-mentioned services, the above-mentioned path information can also include forwarding paths for forwarding other services except the above-mentioned services. The above-mentioned request message may include but is not limited to the following information: priority of the service, first forwarding node information and third forwarding node information. Among them, the first forwarding node information is not limited to: first forwarding node ID, first controller ID that manages the first forwarding node. The third forwarding node information is not limited to: third forwarding node ID, third controller ID that manages the third forwarding node. Exemplarily, the format of the above-mentioned request message can be: {((service priority), first forwarding node ID, first controller ID), (third forwarding node ID, third controller ID)}. The above-mentioned target path is a cross-domain path. Exemplarily, the format of the target path can be {(service ID, first forwarding node ID, first controller ID), (second forwarding node ID, second controller ID), (third forwarding node ID, third controller ID)}, wherein the service ID is the ID assigned to the service by the first controller (for example but not limited to, according to the priority of the service). The above-mentioned first communication delay information can be the communication delay obtained by the first controller and the second controller through the east-west interface and the detection signal. Exemplarily, the first controller can obtain the controller information located upstream of the first controller (for example, but not limited to, controller ID) and the controller information located downstream of the first controller through the path information of all services flowing through the first subdomain. The first controller can obtain the above-mentioned first communication mode using the shortest path algorithm based on the communication delay between the controller upstream of it and the communication delay between the controller downstream of it. The format of the above-mentioned first communication mode can be expressed as: {(controller ID corresponding to the forwarding node of the forwarding service, controller ID corresponding to the destination node of the forwarding service), (first hop controller ID, ..., last hop controller ID)}. Based on this, the first communication mode can be: {(first controller ID, second controller ID), (second controller ID)}. The above-mentioned first communication mode indicates that the first controller and the second controller exchange bandwidth allocation information allocated to each other. It can be understood that the first controller can obtain the bandwidth allocation information of the forwarding node of the forwarding service in the second subdomain allocated by the second controller from the second controller. Similarly, the second controller can obtain the bandwidth allocation information of the forwarding node of the forwarding service in the first subdomain allocated by the first controller from the first controller.

[0122] Optionally, the first communication delay information may further include a communication delay between the first controller and a third controller, where the third controller is adjacent to the first controller and the third controller is different from the second controller.

[0123] Optionally, a user terminal device (eg, a personal computer or a smart phone, etc.) may be a source node of the above service, based on which the first controller may obtain a request message for the service from the user terminal device.

[0124] In some other implementations, the N controllers further include a fourth controller, the first controller is an intermediate controller between the second controller and the fourth controller, the first bandwidth allocation information further includes a seventh bandwidth value, the seventh bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node in the fourth subdomain after the last round of iteration, the second bandwidth allocation information further includes an eighth bandwidth value, the eighth bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node after the current round of iteration, and the difference between the eighth bandwidth value and the seventh bandwidth value is less than a preset threshold. Figure 3 The process of bandwidth allocation described in this example is specifically introduced and will not be repeated here. In this implementation, the first controller can determine the first communication mode by performing the following operations:

[0125] The first controller determines second communication delay information according to the acquired path information, where the path information indicates a path of the service forwarded by the forwarding node in the first subdomain, the path information includes a target path of the forwarded service, the target path includes the first forwarding node, the second forwarding node, and the fourth forwarding node, and the second communication delay information includes a communication delay between the first controller and the second controller, and a communication delay between the first controller and the fourth controller;

[0126] The first controller determines a second communication mode according to the second communication delay information, wherein the second communication mode indicates that the fourth controller and the first controller exchange bandwidth allocation information allocated to each other, and the first controller and the second controller exchange bandwidth allocation information allocated to each other.

[0127] It is understandable that when the forwarding node in the first subdomain is also used to forward other services except the above services, the above path information may also include forwarding paths for forwarding other services except the above services. When the path information only includes the target path, the first controller is also used to obtain the target path from the fourth controller before determining the second communication delay information based on the acquired path information.

[0128] Optionally, in some implementations, the second communication mode is the shortest communication path from the fourth controller to the second controller. Figure 1Taking the system architecture 100 shown as an example, the fourth controller may be controller 2, the first controller may be controller 3, and the second controller may be controller 4. The forwarding nodes of the fourth subdomain managed by the fourth controller are used for forwarding services, and the number of forwarding nodes of the forwarding services included in the fourth subdomain is not specifically limited. For example, at least one forwarding node of the forwarding nodes of the fourth subdomain managed by the fourth controller may be a source node of the forwarding service. For another example, all forwarding nodes of the forwarding nodes of the fourth subdomain managed by the fourth controller may also be intermediate nodes of the forwarding service.

[0129] In an embodiment of the present application, the communication delay between any two controllers mentioned above should not be greater than the preset bandwidth iteration update interval. For example, the communication delay between the first controller and the second controller mentioned above is not greater than the preset bandwidth iteration update interval. When there is a communication delay between the two controllers that is greater than the preset bandwidth iteration update interval, an alarm prompt can be issued to increase the bandwidth iteration update interval, or at least one of the two controllers can be set as a relay controller. A controller is set as a relay controller, which can be understood as a controller used to forward bandwidth allocation information for services that do not flow through the subdomain managed by the controller. For example, a distributed system includes controller 1, controller 2 and controller 3, controller 2 is a relay controller between controller 1 and controller 3, and controller 1 is assigned to forwarding node 1 of subdomain 1 to forward service 1 when occupying bandwidth value 1. At this time, controller 2 can forward information about the bandwidth value 1 occupied by forwarding node 1 when forwarding service 1 to controller 3, and the forwarding node in subdomain 2 managed by controller 2 is not used to forward service 1, and controller 2 is not used to allocate bandwidth value of forwarding service 1 to forwarding nodes in subdomain 2.

[0130] In the embodiment of the present application, the controller (e.g., the first controller, the second controller, the third controller, the fourth controller) described in the method 200 may be, but is not limited to, an SDN controller. When the controller described in the method 200 is an SDN controller, the switch interacting with the controller may communicate based on the OpenFlow protocol.

[0131] It should be understood that the above Figure 2The method 200 shown is only for illustration and does not constitute any limitation on the bandwidth allocation method provided in the embodiment of the present application. For example, the above method 200 is also applicable to a distributed system architecture including only two controllers. The above method 200 is introduced by taking a forwarding node including a forwarding service in a subdomain managed by each controller as an example. Optionally, a subdomain managed by each controller may also include a greater number (for example, 2 or more) of forwarding nodes for forwarding services. For example, the above method 200 is introduced by taking the allocation of bandwidth for one service as an example. Optionally, the above method 200 may also allocate bandwidth for two or more services at the same time.

[0132] In the above technical solution, when the first controller determines the target bandwidth allocation value during this round of iteration, it only considers the bandwidth value of the first forwarding node that the first controller allocates to the forwarding service in the first subdomain after the previous round of iteration, and the bandwidth value of the forwarding node (for example, the second forwarding node) that forwards the service in the subdomain (for example, the second subdomain) managed by the controller adjacent to the first controller (for example, the second controller) after the previous round of iteration. In this way, the first controller only needs to exchange bandwidth allocation information with the controller adjacent to the first controller. This method is conducive to improving bandwidth allocation efficiency while ensuring fair and accurate allocation of service bandwidth. In addition, during this round of iteration, the first controller also considers the first congestion information when determining the target bandwidth value, which is conducive to better satisfying user experience.

[0133] Combine the following Figure 3 Taking the above method 200 in which the first subdomain includes 1 forwarding node for forwarding the target service, the second subdomain includes 2 forwarding nodes for forwarding the target service, and the third subdomain includes 1 forwarding node for forwarding the target service as an example, a specific example of the bandwidth allocation method provided in an embodiment of the present application is introduced. Figure 3 The examples are only intended to help those skilled in the art understand the embodiments of the present application, and are not intended to limit the embodiments of the present application to the specific numerical values ​​or specific scenarios illustrated. Figure 3 Obviously, various equivalent modifications or changes can be made, and such modifications and changes also fall within the scope of the embodiments of the present application. Figure 3 The bandwidth allocation for one service is introduced as an example. Figure 3 The described method can also allocate bandwidth for two or more services, and the source nodes of the two or more services can be located in the same subdomain or in different subdomains.

[0134] Figure 3 3 is a schematic flow chart of a bandwidth allocation method 300 provided in an embodiment of the present application. Figure 3As shown, the method 300 may include steps 310 to 380, and steps 310 to 380 are described in detail below.

[0135] In the embodiment of the present application, method 300 is based on Figure 1 The example in which the switching device 3 in the subdomain 1 sends a request message for service 1 to the controller 1 is used for description. The request message is used for requesting to forward service 1 to the switching device 6 in the subdomain 6 through the switching device 3 .

[0136] In step 310, controller 1 receives a request message for service 1 sent by switching device 4, and allocates path 1 for service 1 according to the request message. The request message is used to request that service 1 be forwarded to switching device 6 in subdomain 6 through switching device 3. Path 1 includes switching device 3, switching device 4, switching device 5 and switching device 6.

[0137] The request message may include the priority information of service 1, the ID of switching device 3, the ID of controller 1, the ID of switching device 6, and the ID of controller 3. In one example, the format of the request message may be: {((priority of service 1), ID of switching device 4, ID of controller 1), (ID of switching device 6, ID of controller 3)}.

[0138] Path 1 includes switching device 3, switching device 4, switching device 5 and switching device 6. That is, path 1 of forwarding service 1 is a path with switching device 3 in subdomain 1 as the source node, switching device 4 and switching device 5 in subdomain 2 as the intermediate nodes, and switching device 6 in subdomain 3 as the destination node.

[0139] After executing the above step 310, controller 1 may send path 1 to controllers corresponding to the switching devices included in path 1, namely, controller 2 and controller 3. Accordingly, controller 2 and controller 3 may obtain path 1.

[0140] Step 320 , controller 1 determines communication mode 1 based on acquired communication delay information 1 , controller 2 determines communication mode 2 based on acquired communication delay information 2 , and controller 3 determines communication mode 3 based on acquired communication delay information 3 .

[0141] Before the above step 320, controller k is also used to obtain communication delay information k (k=1, 2, 3). The communication delay information k (k=1, 2, 3) includes the communication delay between the previous hop controller of controller k and controller k, and the communication delay between the next hop controller of controller k and controller k. The communication delay information k can be obtained by controller k and a controller adjacent to controller k through an east-west interface. There is no specific limitation on the way in which controller k obtains the previous hop controller and the next hop controller of controller k. In some implementations, controller k can determine the previous hop controller and the next hop controller of controller k based on path information, and the path information represents the path information of the service forwarded by the forwarding node in the subdomain managed by controller k, and the path information includes but is not limited to path 1. That is, when the forwarding node in the subdomain managed by controller k is also used to forward other services in addition to the service, the path information can also include path 2, which is the path for forwarding other services in addition to the service. Path 2 can be determined by controller k, and path 2 can also be determined by a controller adjacent to controller k. It is understandable that when the controller k (for example, Figure 1 When the controller 1 in the example does not have a previous-hop controller, the communication delay k acquired by the controller k includes the communication delay between the next-hop controller of the controller k and the controller k; when the controller k (for example, Figure 1 When there is no next-hop controller in controller 4), the communication delay k obtained by controller k includes the communication delay between the previous-hop controller of controller k and controller k.

[0142] In the above step 320, communication delay information 1 may include: communication delay between controller 1 and controller 2, and communication delay between controller 1 and controller 3. Communication delay information 2 may include: communication delay between controller 2 and controller 1, and communication delay between controller 2 and controller 3. Communication delay information 3 may include: communication delay between controller 3 and controller 1, communication delay between controller 3 and controller 2, and communication delay between controller 3 and controller 4. Communication mode 1 indicates that controller 1 and controller 2 exchange allocated bandwidth allocation information. Communication mode 2 indicates that controller 2 and controller 1 exchange allocated bandwidth allocation information, and controller 2 and controller 3 exchange allocated bandwidth allocation information. Communication mode 3 indicates that controller 3 and controller 2 exchange allocated bandwidth allocation information.

[0143] In step 330 , controller 1 allocates an initial bandwidth value of 1 to switching device 3 , controller 2 allocates an initial bandwidth value of 2 to switching device 4 , allocates an initial bandwidth value of 3 to switching device 5 , and controller 3 allocates an initial bandwidth value of 4 to switching device 6 .

[0144] There is no limitation on the values ​​of initial bandwidth value 1, initial bandwidth value 2, initial bandwidth value 3 and initial bandwidth value 4. For example, the values ​​of initial bandwidth value 1, initial bandwidth value 2, initial bandwidth value 3 and initial bandwidth value 4 may be the same. For another example, the values ​​of initial bandwidth value 1, initial bandwidth value 2, initial bandwidth value 3 and initial bandwidth value 4 may be different.

[0145] After the initial bandwidth allocation, bandwidth iterative calculation begins. The bandwidth iterative calculation may include M iterations, where M is an integer greater than or equal to 1. The first iteration is described below, and the first iteration includes steps 340 to 370.

[0146] Step 340 : Controller 1 obtains bandwidth allocation information 1 , controller 2 obtains bandwidth allocation information 2 , and controller 3 obtains bandwidth allocation information 3 .

[0147] The above-mentioned bandwidth allocation information 1 may include: congestion information 1, initial bandwidth value 1 allocated by controller 1 to switching device 3, initial bandwidth value 2 allocated to switching device 4 and initial bandwidth value 3 allocated to switching device 5 obtained from controller 2. Among them, congestion information 1 includes link congestion information between switching device 3 occupying initial bandwidth value 1 and switching device 4 occupying initial bandwidth value 2, and port congestion (also known as overflow) information when switching device 3 occupying initial bandwidth value 1 sends information to switching device 4 occupying initial bandwidth value 2. In this solution, controller 1 can obtain the initial bandwidth allocation value sent by controller 2 adjacent to it.

[0148] The above-mentioned bandwidth allocation information 2 may include: congestion information 2, initial bandwidth value 2 allocated to switching device 4 and initial bandwidth value 3 allocated to switching device 5 by controller 2, initial bandwidth value 4 allocated to switching device 6 obtained from controller 3, and initial bandwidth value 1 allocated to switching device 3 obtained from controller 1. The congestion information 2 may include the following information: link congestion information between switching device 4 occupying initial bandwidth value 2 and switching device 3 occupying initial bandwidth value 1, port congestion (also known as overflow) information when switching device 4 occupying initial bandwidth value 2 receives information sent by switching device 2 occupying initial bandwidth value 1, link congestion information between switching device 5 occupying initial bandwidth value 3 and switching device 6 occupying initial bandwidth value 3, and port congestion (also known as overflow) information when switching device 4 occupying initial bandwidth value 3 sends information to switching device 6 occupying initial bandwidth value 4. In this solution, controller 2 may obtain the initial bandwidth allocation value sent by controller 1 adjacent to it, and the initial bandwidth allocation value sent by controller 3 adjacent to controller 2.

[0149] The above-mentioned bandwidth allocation information 3 may include: congestion information 3, initial bandwidth value 4 allocated by controller 3 to switching device 6, initial bandwidth value 2 allocated to switching device 4 and initial bandwidth value 3 allocated to switching device 5 obtained from controller 2. Congestion information 3 includes: link congestion information between switching device 5 occupying initial bandwidth value 3 and switching device 6 occupying initial bandwidth value 3, and port congestion (also known as overflow) information when switching device 6 occupying initial bandwidth value 4 receives information sent by switching device 4 occupying initial bandwidth value 3. In this solution, controller 3 can obtain the initial bandwidth allocation value sent by controller 2 adjacent to it.

[0150] Step 350, the first iteration, controller 1 determines to allocate bandwidth value 1 to switching device 3 based on bandwidth allocation information 1, controller 2 determines to allocate bandwidth value 2 to switching device 4 and bandwidth value 3 to switching device 5 based on bandwidth allocation information 2, and controller 3 determines to allocate bandwidth value 4 to switching device 6 based on bandwidth allocation information 3.

[0151] The above iteration algorithm is not specifically limited. For example, the controller 1 may use the ADMM iteration algorithm to determine to allocate the bandwidth value 1 to the switching device 3 according to the bandwidth allocation information 1 .

[0152] It is understandable that after controller 1 determines to allocate bandwidth value 1 to switching device 3, controller 1 will also update the locally stored information that controller 1 allocates initial bandwidth value 1 to switching device 3 to controller 1 allocating bandwidth value 1 to switching device 3. Similarly, controller 2 and controller 3 will also update the corresponding bandwidth allocation information after determining to allocate bandwidth values. That is, after step 350, the bandwidth value allocated to switching device 3 obtained from controller 1 is bandwidth value 1, the bandwidth value allocated to switching device 4 obtained from controller 2 is bandwidth value 2, and the bandwidth value allocated to switching device 5 is bandwidth value 3, and the bandwidth value allocated to switching device 6 obtained from controller 3 is bandwidth value 4.

[0153] Step 360, determining whether preset condition 1 is satisfied.

[0154] Among them, satisfying preset condition 1 includes: the difference between bandwidth value 1 and initial bandwidth value 1 is less than a preset threshold, the difference between bandwidth value 2 and initial bandwidth value 2 is less than a preset threshold, the difference between bandwidth value 3 and initial bandwidth value 4 is less than a preset threshold, and the difference between bandwidth value 4 and initial bandwidth value 4 is less than a preset threshold.

[0155] In the above step 360, determining whether the preset condition is met includes:

[0156] If the preset condition is met, step 370 is executed after step 360;

[0157] If the preset condition is not met, step 380 is executed after step 360 .

[0158] In step 370 , controller 1 allocates bandwidth value 1 to switching device 3 , controller 2 allocates bandwidth value 2 to switching device 4 and allocates bandwidth value 3 to switching device 5 , and controller 3 allocates bandwidth value 4 to switching device 6 .

[0159] Among them, bandwidth value 1 is the bandwidth value occupied by switching device 3 when forwarding service 1, bandwidth value 2 is the bandwidth value occupied by switching device 4 when forwarding service 1, bandwidth value 3 is the bandwidth value occupied by switching device 5 when forwarding service 1, and bandwidth value 5 is the bandwidth value occupied by switching device 6 when forwarding service 1.

[0160] In the above step 370, the controller may send the bandwidth value to the switching device in the subdomain it manages through the southbound interface.

[0161] Step 380, the Mth iteration, determines that the preset condition M is met, controller 1 allocates the bandwidth value after the Mth iteration to switching device 3, controller 2 allocates the bandwidth value after the Mth iteration to switching device 4 and switching device 5, and controller 3 allocates the bandwidth value after the Mth iteration to switching device 6, where M is an integer greater than or equal to 2.

[0162] In the above step 380, satisfying the preset condition M includes but is not limited to: the difference between the bandwidth value allocated to switching device 3 after the Mth iteration of controller 1 and the bandwidth value allocated to switching device 3 after the M-1th iteration of controller 1 is less than a preset threshold, the difference between the bandwidth value allocated to switching device 4 after the Mth iteration of controller 2 and the bandwidth value allocated to switching device 4 after the M-1th iteration of controller 2 is less than the preset threshold, the difference between the bandwidth value allocated to switching device 5 after the Mth iteration of controller 2 and the bandwidth value allocated to switching device 5 after the M-1th iteration of controller 2 is less than the preset threshold, and the difference between the bandwidth value allocated to switching device 6 after the Mth iteration of controller 3 and the bandwidth value allocated to switching device 6 after the M-1th iteration of controller 3 is less than the preset threshold.

[0163] In the embodiment of the present application, the calculation principle of each iteration is the same as the calculation principle of the first iteration (ie, the method described in steps 340 to 370). Figure 4 , the second iteration process is illustrated by example. For the sake of brevity, the remaining M-2 iteration processes after the first iteration are not described one by one. Figure 4 As shown, the second iteration process includes steps 410 to 440, and steps 410 to 440 are described in detail below.

[0164] Step 410 : Controller 1 obtains bandwidth allocation information 4 , controller 2 obtains bandwidth allocation information 5 , and controller 3 obtains bandwidth allocation information 4 .

[0165] The bandwidth allocation information 4 may include the following information: congestion information 4, bandwidth value 1 allocated by controller 1 to switching device 3 after the first iteration, and bandwidth value 2 allocated by controller 2 to switching device 4 and bandwidth value 3 allocated to switching device 5 after the first iteration, obtained from controller 2. Congestion information 4 may include the following information: link congestion information between switching device 3 occupying bandwidth value 1 and switching device 4 occupying bandwidth value 2, and port congestion (also called overflow) information when switching device 3 occupying bandwidth value 1 sends information to switching device 4 occupying bandwidth value 2.

[0166] The bandwidth allocation information 5 may include the following information: congestion information 5, bandwidth value 2 allocated to switching device 4 and bandwidth value 3 allocated to switching device 5 by controller 2 after the first iteration, bandwidth value 1 allocated to switching device 3 by controller 1 after the first iteration, and bandwidth value 4 allocated to switching device 6 by controller 3 after the first iteration. The congestion information 5 may include the following information: link congestion information between switching device 4 occupying bandwidth value 2 and switching device 3 occupying bandwidth value 1, port congestion (also known as overflow) information when switching device 4 occupying bandwidth value 2 receives information sent by switching device 2 occupying bandwidth value 1, link congestion information between switching device 5 occupying bandwidth value 3 and switching device 6 occupying bandwidth value 3, and port congestion (also known as overflow) information when switching device 4 occupying bandwidth value 3 sends information to switching device 6 occupying bandwidth value 4.

[0167] The bandwidth allocation information 6 may include the following information: congestion information 6, bandwidth value 4 allocated to switching device 6 by controller 3 after the first iteration, and bandwidth value 2 allocated to switching device 4 and bandwidth value 3 allocated to switching device 5 by controller 2 after the first iteration. The congestion information 3 may include the following information: link congestion information between switching device 5 occupying bandwidth value 3 and switching device 6 occupying bandwidth value 3, and port congestion (also called overflow) information when switching device 6 occupying bandwidth value 4 receives information sent by switching device 4 occupying bandwidth value 3.

[0168] Step 420, controller 2 determines to allocate bandwidth value 5 to switching device 3 based on bandwidth allocation information 4, controller 2 determines to allocate bandwidth value 6 to switching device 4 and bandwidth value 7 to switching device 5 based on bandwidth allocation information 5, and controller 3 determines to allocate bandwidth value 8 to switching device 6 based on bandwidth allocation information 6.

[0169] The principle of the controller allocating bandwidth values ​​to the switching device according to the bandwidth allocation information in step 420 is the same as the principle described in the above step 350, and will not be repeated here.

[0170] Step 430, determining whether preset condition 2 is met.

[0171] Among them, satisfying preset condition 2 includes: the difference between bandwidth value 5 and bandwidth value 1 is less than the preset threshold, the difference between bandwidth value 6 and bandwidth value 2 is less than the preset threshold, the difference between bandwidth value 7 and bandwidth value 3 is less than the preset threshold, and the difference between bandwidth value 8 and bandwidth value 4 is less than the preset threshold.

[0172] In the above step 430, determining whether the preset condition is met includes:

[0173] If the preset condition is met, step 440 is executed after step 430;

[0174] If the preset condition is not met, step 450 is continued after step 430, that is, the third iteration, the fourth iteration, ..., the Mth iteration are performed, where M is an integer greater than or equal to 3.

[0175] In step 440 , controller 1 allocates bandwidth value 5 to switching device 3 , controller 2 allocates bandwidth value 6 to switching device 4 and allocates bandwidth value 7 to switching device 5 , and controller 3 allocates bandwidth value 8 to switching device 6 .

[0176] Among them, bandwidth value 5 is the bandwidth value occupied by switching device 3 when forwarding service 1, bandwidth value 6 is the bandwidth value occupied by switching device 4 when forwarding service 1, bandwidth value 7 is the bandwidth value occupied by switching device 5 when forwarding service 1, and bandwidth value 8 is the bandwidth value occupied by switching device 6 when forwarding service 1.

[0177] It can be understood that when the controller 1 in the method 300 is used as the fourth controller in the method 200, the controller 2 can be used as the first controller in the method 200, and the controller 3 can be used as the second controller in the method 200. When the controller 1 is used as the first controller in the method 200, the controller 2 can be used as the second controller in the method 200, and the controller 3 can be used as the third controller in the method 200.

[0178] Above Figure 3 and Figure 4 The bandwidth method described is only for illustration and does not constitute any limitation on the bandwidth allocation method provided in the embodiment of the present application. Figures 1 to 4 , describes in detail the bandwidth allocation method provided by the embodiment of the present application, and will now be combined with Figure 5 and Figure 6, describes in detail the embodiments of the device of the present application. The description of the method embodiment corresponds to the description of the device embodiment, so the parts not described in detail can refer to the previous method embodiment.

[0179] Figure 5 : is a schematic structural diagram of a bandwidth allocation device 500 provided in an embodiment of the present application. The device 500 is applied to a distributed system, the distributed system includes N controllers, the N controllers include a first controller and a second controller, N is an integer greater than or equal to 3, including:

[0180] An acquiring unit 510 is configured to acquire first bandwidth allocation information of a service, the first bandwidth allocation information including a first bandwidth value and a second bandwidth value, the first bandwidth value being a bandwidth value allocated by the first controller to a first forwarding node in a first subdomain after a previous round of iterations, and the second bandwidth value being a bandwidth value allocated by the second controller to a second forwarding node in a second subdomain after a previous round of iterations, and the first controller is adjacent to the second controller;

[0181] The determination unit 520 is used to determine a target bandwidth value according to the first bandwidth allocation information during this round of iterations. The target bandwidth value is a bandwidth value allocated by the first controller to the first forwarding node for service forwarding.

[0182] Optionally, in some implementations, the first bandwidth value is a first preset bandwidth value, and the second bandwidth value is a second preset bandwidth value.

[0183] Optionally, in some implementations, the second bandwidth value is determined by the second controller during the previous round of iterations based on the first preset bandwidth value and the second preset bandwidth value, the first preset bandwidth value is the initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is the initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

[0184] Optionally, in some implementations, the first bandwidth allocation information further includes first congestion information, where the first congestion information includes link congestion information where the first forwarding node is located and port congestion information of the first forwarding node when the first forwarding node occupies the first bandwidth value.

[0185] The first controller obtains first bandwidth allocation information of the service, including:

[0186] The first controller receives the first congestion information sent by the first forwarding node.

[0187] Optionally, in some implementations, the determining unit is further configured to:

[0188] During this round of iteration, a third bandwidth value is determined according to the first bandwidth allocation information;

[0189] It is determined that the preset condition is met, and the third bandwidth value is determined as the target bandwidth value.

[0190] Optionally, in some implementations, the N controllers include the third controller, the third controller is adjacent to the second controller, and the third controller is different from the first controller, and the satisfying the preset condition includes:

[0191] A difference between the third bandwidth value and the first bandwidth value is less than a preset threshold, a difference between the fourth bandwidth value and the second bandwidth value is less than the preset threshold, the fourth bandwidth value is a bandwidth value allocated by the second controller to the second forwarding node for forwarding the service, the fourth bandwidth value is determined by the second controller according to second bandwidth allocation information during this round of iteration, the second bandwidth allocation information includes the second bandwidth value and a sixth bandwidth value, the sixth bandwidth value is a bandwidth value allocated by the third controller to the third forwarding node in the third subdomain after the previous round of iteration ends.

[0192] Optionally, in some implementations, the second bandwidth allocation information also includes second congestion information, where the second congestion information includes link congestion information where the second forwarding node is located and port congestion information of the second forwarding node when the second forwarding node occupies the second bandwidth value.

[0193] Optionally, in some implementations, the first forwarding node is a source node of the service.

[0194] The determination unit is also used for:

[0195] Determine, according to the request message obtained from the first forwarding node, a target path for forwarding the service, wherein the request message is used to request to forward the service from the first forwarding node to the third forwarding node, and the target path includes the first forwarding node, the second forwarding node, and the third forwarding node;

[0196] Determine first communication delay information according to path information, where the path information represents a path of a service forwarded by a forwarding node in the first subdomain, and the path information includes the target path;

[0197] Determine a first communication mode according to the first communication delay information, the first communication delay information includes a communication delay between the first controller and the second controller, and the first communication mode indicates that the first controller and the second controller exchange bandwidth allocation information allocated to each other;

[0198] The acquiring unit is further configured to acquire the request message from the first forwarding node.

[0199] Optionally, in some implementations, the N controllers also include a fourth controller, the first controller is an intermediate controller between the second controller and the fourth controller, the first bandwidth allocation information also includes a seventh bandwidth value, the seventh bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node in the fourth subdomain after the end of the previous round of iterations, the second bandwidth allocation information also includes an eighth bandwidth value, the eighth bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node after the end of the current round of iterations, and the difference between the eighth bandwidth value and the seventh bandwidth value is less than a preset threshold.

[0200] Optionally, in some implementations,

[0201] The determination unit is also used for:

[0202] Determine second communication delay information according to the acquired path information, the path information indicating a path of the service forwarded by the forwarding node in the first subdomain, the path information including a target path for forwarding the service, the target path including the first forwarding node, the second forwarding node, and the fourth forwarding node, the second communication delay information including a communication delay between the first controller and the second controller, and a communication delay between the first controller and the fourth controller;

[0203] Determine a second communication mode according to the second communication delay information, wherein the second communication mode indicates that the fourth controller and the first controller exchange bandwidth allocation information allocated to each other, and the first controller and the second controller exchange bandwidth allocation information allocated to each other;

[0204] The acquisition unit is also used to acquire the path information.

[0205] Figure 6 It is a hardware structure diagram of a bandwidth allocation device 2000 provided in an embodiment of the present application. Figure 6 The bandwidth allocation device 2000 shown can execute the bandwidth allocation method described in the above embodiment (ie, the above method 200 or the above method 300).

[0206] like Figure 6As shown, the first controller 2000 includes a processor 2001, a memory 2002, an interface 2003 and a bus 2004. The interface 2003 can be implemented wirelessly or wired, and can be a network card. The processor 2001, the memory 2002 and the interface 2003 are connected via a bus 2004. The interface 2003 can specifically include a transmitter and a receiver, which are used by the first controller to implement the above-mentioned transmission and reception. The processor 2001 is used to perform the processing performed by the first controller in the above-mentioned embodiment. The memory 2002 includes an operating system 20021 and an application 20022, which are used to store programs, codes or instructions. When the processor or hardware device executes these programs, codes or instructions, the processing process involving BFIR in the method embodiment can be completed. Optionally, the memory 2002 can include a read-only memory (ROM) and a random access memory (RAM). The ROM includes a basic input / output system (BIOS) or an embedded system; the RAM includes an application and an operating system. When the first controller 2000 needs to be run, it is started by the BIOS solidified in the ROM or the bootloader boot system in the embedded system, and the first controller 2000 is guided into a normal operating state. After the first controller 2000 enters a normal operating state, the application program and the operating system in the RAM are run, thereby completing the processing process involving the first controller 2000 in the method embodiment. Figure 6 Only a simplified design of the first controller 2000 is shown. In practical applications, the first controller may include any number of interfaces, processors or memories.

[0207] The embodiment of the present application also provides a computer-readable medium, which stores a program code, and when the computer program code is run on a computer, the computer executes the method executed by the first controller. These computer-readable storages include but are not limited to one or more of the following: read-only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), Flash memory, electrically EPROM (EEPROM) and hard drive.

[0208] The embodiment of the present application also provides a chip system, which includes: at least one processor, at least one memory and an interface circuit, the interface circuit is responsible for the information exchange between the chip system and the outside world, the at least one memory, the interface circuit and the at least one processor are interconnected through a line, and the at least one memory stores instructions; the instructions are executed by the at least one processor to perform the operations involving the first controller in the methods described in the above various aspects. In the specific implementation process, the chip system can be implemented in the form of a central processing unit (CPU), a microcontroller unit (MCU), a microprocessor (MPU), a digital signal processor (DSP), a system on chip (SoC), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA) or a programmable logic device (PLD).

[0209] The embodiment of the present application further provides a computer program product, which includes a series of instructions. When the instructions are executed, the above method 200 or method 300 is executed.

[0210] The embodiment of the present application further provides a bandwidth allocation system, including the above-mentioned bandwidth allocation device 500.

[0211] Those of ordinary skill in the art will appreciate that the units and algorithm steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Professional and technical personnel can use different methods to implement the described functions for each specific application, but such implementation should not be considered to be beyond the scope of this application.

[0212] Those skilled in the art can clearly understand that, for the convenience and brevity of description, the specific working processes of the systems, devices and units described above can refer to the corresponding processes in the aforementioned method embodiments and will not be repeated here.

[0213] In the several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of the units is only a logical function division. There may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.

[0214] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment.

[0215] In addition, each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.

[0216] If the functions are implemented in the form of software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application can be essentially or partly embodied in the form of a software product that contributes to the prior art. The computer software product is stored in a storage medium and includes several instructions for a computer device (which can be a personal computer, a server, or a network device, etc.) to perform all or part of the steps of the methods described in each embodiment of the present application. The aforementioned storage medium includes: various media that can store program codes, such as a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk or an optical disk.

[0217] The above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any person skilled in the art who is familiar with the present technical field can easily think of changes or substitutions within the technical scope disclosed in the present application, which should be included in the protection scope of the present application. Therefore, the protection scope of the present application should be based on the protection scope of the claims.

Claims

1. A bandwidth allocation method, characterized in that: Applied to a distributed system, the distributed system includes N controllers, the N controllers include a first controller and a second controller, N is an integer greater than or equal to 3, including: The first controller acquires first bandwidth allocation information of a service, the first bandwidth allocation information including a first bandwidth value and a second bandwidth value, the first bandwidth value being a bandwidth value allocated by the first controller to a first forwarding node in a first subdomain after a previous round of iterations, the second bandwidth value being a bandwidth value allocated by the second controller to a second forwarding node in a second subdomain after a previous round of iterations, and the first controller is adjacent to the second controller; During this round of iteration, the first controller determines a target bandwidth value according to the first bandwidth allocation information, where the target bandwidth value is a bandwidth value allocated by the first controller to the first forwarding node for service forwarding; The first bandwidth allocation information further includes first congestion information, wherein the first congestion information includes link congestion information where the first forwarding node is located and port congestion information of the first forwarding node when the first forwarding node occupies the first bandwidth value. The first controller obtains first bandwidth allocation information of the service, including: The first controller receives the first congestion information sent by the first forwarding node.

2. The method according to claim 1, characterized in that: The first bandwidth value is a first preset bandwidth value, and the second bandwidth value is a second preset bandwidth value. The first preset bandwidth value is an initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is an initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

3. The method according to claim 1, characterized in that The second bandwidth value is determined by the second controller during the previous round of iterations based on the first preset bandwidth value and the second preset bandwidth value, the first preset bandwidth value is the initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is the initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

4. The method according to any one of claims 1 to 3, characterized in that: In the current round of iteration, the first controller determines the target bandwidth value according to the first bandwidth allocation information, including: During the current round of iteration, the first controller determines a third bandwidth value according to the first bandwidth allocation information; The first controller determines that a preset condition is satisfied and determines the third bandwidth value as the target bandwidth value.

5. The method according to claim 4, characterized in that The N controllers include a third controller, the third controller is adjacent to the second controller, and the third controller is different from the first controller, The preset conditions are met as follows: The difference between the third bandwidth value and the first bandwidth value is less than a preset threshold, and the difference between the fourth bandwidth value and the second bandwidth value is less than the preset threshold. The fourth bandwidth value is a bandwidth value allocated by the second controller to the second forwarding node for forwarding the service. The fourth bandwidth value is determined by the second controller according to second bandwidth allocation information during the current round of iteration. The second bandwidth allocation information includes the second bandwidth value and a sixth bandwidth value. The sixth bandwidth value is a bandwidth value allocated by the third controller to the third forwarding node in the third subdomain after the previous round of iteration.

6. The method according to claim 5, characterized in that The second bandwidth allocation information further includes second congestion information, where the second congestion information includes link congestion information where the second forwarding node is located and port congestion information of the second forwarding node when the second forwarding node occupies the second bandwidth value.

7. The method according to claim 5 or 6, characterized in that: The first forwarding node is a source node of the service, and the method further includes: The first controller determines, according to a request message obtained from the first forwarding node, a target path for forwarding the service, wherein the request message is used to request that the service be forwarded from the first forwarding node to the third forwarding node, and the target path includes the first forwarding node, the second forwarding node, and the third forwarding node; The first controller determines first communication delay information according to path information, the path information indicating a path of a service forwarded by a forwarding node in the first subdomain, the path information including the target path; The first controller determines a first communication mode according to the first communication delay information, where the first communication delay information includes a communication delay between the first controller and the second controller, and the first communication mode indicates bandwidth allocation information exchanged between the first controller and the second controller.

8. The method according to any one of claims 1 to 3, characterized in that: The N controllers also include a fourth controller, the first controller is an intermediate controller between the second controller and the fourth controller, the first bandwidth allocation information also includes a seventh bandwidth value, the seventh bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node in the fourth subdomain after the previous round of iterations, the second bandwidth allocation information also includes an eighth bandwidth value, the eighth bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node after the current round of iterations, and the difference between the eighth bandwidth value and the seventh bandwidth value is less than a preset threshold.

9. The method according to claim 8, characterized in that The method further comprises: The first controller determines second communication delay information according to the acquired path information, the path information indicating a path of the service forwarded by the forwarding node in the first subdomain, the path information including a target path for forwarding the service, the target path including the first forwarding node, the second forwarding node, and the fourth forwarding node, the second communication delay information including a communication delay between the first controller and the second controller, and a communication delay between the first controller and the fourth controller; The first controller determines a second communication mode according to the second communication delay information, wherein the second communication mode indicates that the fourth controller and the first controller exchange bandwidth allocation information allocated to each other, and the first controller and the second controller exchange bandwidth allocation information allocated to each other.

10. A bandwidth allocation device, characterized in that: Applied to a distributed system, the distributed system includes N controllers, the N controllers include a first controller and a second controller, N is an integer greater than or equal to 3, including: an acquiring unit, configured to acquire first bandwidth allocation information of a service, the first bandwidth allocation information comprising a first bandwidth value and a second bandwidth value, the first bandwidth value being a bandwidth value allocated by the first controller to a first forwarding node in a first subdomain after a previous round of iterations, the second bandwidth value being a bandwidth value allocated by the second controller to a second forwarding node in a second subdomain after a previous round of iterations, the first controller being adjacent to the second controller; a determining unit, configured to determine, during this round of iteration, a target bandwidth value according to the first bandwidth allocation information, where the target bandwidth value is a bandwidth value allocated by the first controller to the first forwarding node for service forwarding; The first bandwidth allocation information further includes first congestion information, wherein the first congestion information includes link congestion information where the first forwarding node is located and port congestion information of the first forwarding node when the first forwarding node occupies the first bandwidth value. The acquisition unit is specifically used for: The first congestion information sent by the first forwarding node is received.

11. The device according to claim 10, characterized in that The first bandwidth value is a first preset bandwidth value, and the second bandwidth value is a second preset bandwidth value. The first preset bandwidth value is an initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is an initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

12. The device according to claim 10, characterized in that The second bandwidth value is determined by the second controller during the previous round of iterations based on the first preset bandwidth value and the second preset bandwidth value, the first preset bandwidth value is the initial bandwidth value assigned by the first controller to the first forwarding node for forwarding the service, and the second preset bandwidth value is the initial bandwidth value assigned by the second controller to the second forwarding node for forwarding the service.

13. The device according to any one of claims 10 to 12, characterized in that The determining unit is further configured to: During the current round of iteration, determining a third bandwidth value according to the first bandwidth allocation information; It is determined that a preset condition is met, and the third bandwidth value is determined as the target bandwidth value.

14. The device according to claim 13, characterized in that The N controllers include a third controller, the third controller is adjacent to the second controller, and the third controller is different from the first controller, The preset conditions are met as follows: The difference between the third bandwidth value and the first bandwidth value is less than a preset threshold, and the difference between the fourth bandwidth value and the second bandwidth value is less than the preset threshold. The fourth bandwidth value is a bandwidth value allocated by the second controller to the second forwarding node for forwarding the service. The fourth bandwidth value is determined by the second controller according to second bandwidth allocation information during the current round of iteration. The second bandwidth allocation information includes the second bandwidth value and a sixth bandwidth value. The sixth bandwidth value is a bandwidth value allocated by the third controller to the third forwarding node in the third subdomain after the previous round of iteration.

15. The device according to claim 14, characterized in that The second bandwidth allocation information further includes second congestion information, where the second congestion information includes link congestion information where the second forwarding node is located and port congestion information of the second forwarding node when the second forwarding node occupies the second bandwidth value.

16. The device according to claim 14 or 15, characterized in that The first forwarding node is a source node of the service, The determining unit is further configured to: Determine, according to a request message obtained from the first forwarding node, a target path for forwarding the service, wherein the request message is used to request that the service be forwarded from the first forwarding node to the third forwarding node, and the target path includes the first forwarding node, the second forwarding node, and the third forwarding node; determining first communication delay information according to path information, wherein the path information represents a path of a service forwarded by a forwarding node in the first subdomain, and the path information includes the target path; determining a first communication mode according to the first communication delay information, wherein the first communication delay information includes a communication delay between the first controller and the second controller, and the first communication mode indicates that the first controller and the second controller exchange bandwidth allocation information allocated to each other; The obtaining unit is further configured to obtain the request message from the first forwarding node.

17. The device according to any one of claims 10 to 12, characterized in that The N controllers also include a fourth controller, the first controller is an intermediate controller between the second controller and the fourth controller, the first bandwidth allocation information also includes a seventh bandwidth value, the seventh bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node in the fourth subdomain after the previous round of iterations, the second bandwidth allocation information also includes an eighth bandwidth value, the eighth bandwidth value is the bandwidth value allocated by the fourth controller to the fourth forwarding node after the current round of iterations, and the difference between the eighth bandwidth value and the seventh bandwidth value is less than a preset threshold.

18. The device according to claim 17, characterized in that The determining unit is further configured to: determining second communication delay information according to the acquired path information, the path information indicating a path of a service forwarded by a forwarding node in the first subdomain, the path information including a target path for forwarding the service, the target path including the first forwarding node, the second forwarding node, and the fourth forwarding node, the second communication delay information including a communication delay between the first controller and the second controller, and a communication delay between the first controller and the fourth controller; Determine a second communication mode according to the second communication delay information, wherein the second communication mode indicates that the fourth controller and the first controller exchange bandwidth allocation information allocated to each other, and the first controller and the second controller exchange bandwidth allocation information allocated to each other; The acquiring unit is further configured to acquire the path information.

19. A computer-readable storage medium, characterized in that: Used to store computer instructions, when the computer instructions are executed, the method according to any one of claims 1 to 9 is implemented.

20. A bandwidth allocation system, characterized in that: Comprising a device as claimed in any one of claims 10 to 18.

Citation Information

Patent Citations

  • Inter-domain SDN traffic engineering

    CN105960783A