Congestion control system and method

By designing corresponding modules in user space and kernel space, using event queues and memory mapping relationships, the interaction and control between the network card and the sending end is realized, and the problem of high coupling between the congestion control system and the network card in the prior art is solved. Reduces costs and increases system flexibility.

CN119420700AActive Publication Date: 2025-02-11CHINA TELECOM CLOUD TECH CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202411662858.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-11-20
Publication Date
2025-02-11
Estimated Expiration
2044-11-20

AI Technical Summary

Technical Problem

The degree of coupling between the existing congestion control system and the network card is high, making it difficult to achieve congestion control without relying on hardware improvements.

Method used

A congestion control system is designed, including a congestion control module running in user space and a software and hard interaction module in kernel space. Through event queues and memory mapping relationships, the interaction and control between the network card and the sending end is realized.

Benefits of technology

The degree of coupling between the congestion control system and the network card is reduced, and congestion control is implemented without relying on hardware improvements, reducing costs and improving system flexibility.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119420700A_ABST
    Figure CN119420700A_ABST
Patent Text Reader

Abstract

The invention relates to a congestion control system and method, and relates to the technical field of communication. The system is carried on a sending end and comprises a network card of the sending end, a congestion control module running in a user space of the sending end and a soft and hard interaction module running in a kernel space of the sending end. The network card is used for reporting the monitored congestion event to the congestion control module through the event queue of the sending end; the event queue is created through the soft and hard interaction module; the congestion control module is used for acquiring the congestion event from the event queue, determining a congestion control parameter of the sending end under the congestion event based on the congestion event, and sending the congestion control parameter to the network card; and the network card is also used for controlling the packet sending rate of the sending end based on the congestion control parameter. By adopting the method, the coupling degree between the congestion control system and the network card can be reduced.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of communication technology, and in particular to a congestion control system and method. Background Art

[0002] Congestion control refers to the process of avoiding performance degradation of the communication network by controlling the packet sending rate at the sender.

[0003] In related technologies, congestion control systems are usually installed on network cards and rely on hardware improvements to the network cards. For example, corresponding hardware devices need to be added to the network card to facilitate interaction with the congestion control system, resulting in a high degree of coupling between the congestion control system and the network card. Summary of the invention

[0004] Based on this, it is necessary to provide a congestion control system and method that can reduce the degree of coupling to address the technical problem of the high degree of coupling between the congestion control system and the network card.

[0005] In a first aspect, the present application provides a congestion control system, the system being mounted on a sending end, the system comprising a network card of the sending end, a congestion control module running in a user space of the sending end, and a software-hard interaction module running in a kernel space of the sending end;

[0006] The network card is used to report the monitored congestion event to the congestion control module through the event queue of the sending end; the event queue is created by the software and hardware interaction module;

[0007] The congestion control module is used to obtain the congestion event from the event queue, determine the congestion control parameters of the sending end under the congestion event based on the congestion event, and send the congestion control parameters to the network card;

[0008] The network card is further used to control the packet sending rate of the sending end based on the congestion control parameter.

[0009] In one of the embodiments, the congestion control module is further used to obtain the congestion control parameters of the sending end under the congestion event based on the congestion event and the programmable congestion control algorithm carried, and write the congestion control parameters into the memory mapping address of the network card in the sending end, so as to write the congestion control parameters into the network card memory of the network card through the memory mapping relationship between the network card and the sending end;

[0010] The network card is also used to read the congestion control parameters of the sender from the network card memory.

[0011] In one of the embodiments, the congestion control module is further used to create an event queue of the sending end through the software and hardware interaction module when detecting that the congestion control system is started;

[0012] The software and hardware interaction module is further used to establish a memory mapping relationship between the network card and the sending end after creating the event queue, obtain the memory mapping address of the network card in the sending end, and send the queue information of the event queue to the network card;

[0013] The network card is further used to cache the queue information, and when the congestion event is detected, determine the event queue of the sending end based on the queue information, and report the congestion event to the congestion control module through the event queue.

[0014] In one of the embodiments, the software and hardware interaction module is further used to send a space release instruction to the network card;

[0015] The network card is further used to release the occupied space of the queue information of the event queue under the network card in response to the space release instruction, and report a stop event to the software and hardware interaction module through the event queue;

[0016] The software-hard interaction module is further configured to obtain the stop event from the event queue, and destroy the event queue in response to the stop event.

[0017] In one of the embodiments, the congestion control module is further configured to send a queue destruction instruction to the software-hard interaction module when receiving an exit instruction;

[0018] The software and hardware interaction module is further configured to send the space release instruction to the network card in response to the queue destruction instruction.

[0019] In one of the embodiments, the congestion control module is further configured to re-create the event queue of the sending end through the software-hard interaction module when a restart instruction is received.

[0020] In one of the embodiments, the software-hard interaction module is further used to send the space release instruction to the network card when an abnormal event is detected in the congestion control system.

[0021] In one of the embodiments, the congestion control module is further used to re-create the event queue of the sending end through the software and hardware interaction module after a preset time has passed since the abnormal event occurred.

[0022] In one of the embodiments, the congestion control system further includes an interface encapsulation module running in the user space;

[0023] The interface encapsulation module is used to provide the congestion control module with a calling interface of the software and hardware interaction module; the calling interface at least includes a queue creation interface and a queue destruction interface.

[0024] In a second aspect, the present application further provides a congestion control method, which is applied to a congestion control system mounted on a sending end, wherein the congestion control system includes a network card of the sending end, a congestion control module running in a user space of the sending end, and a software and hardware interaction module running in a kernel space of the sending end, and the method includes:

[0025] The monitored congestion event is reported to the congestion control module through the event queue of the network card and the sending end; the event queue is created by the software and hardware interaction module;

[0026] Determining congestion control parameters of the transmitting end under the congestion event through the congestion control module and the congestion event;

[0027] Sending the congestion control parameter to the network card through the congestion control module;

[0028] The packet sending rate of the sending end is controlled by the network card and the congestion control parameters.

[0029] In the above-mentioned congestion control system and method, the congestion control module runs in the user space of the sending end, and can realize the congestion event interaction with the network card of the sending end through the event queue created by the software and hardware interaction module running in the kernel space of the sending end, and can control the packet sending rate of the sending end through the congestion control parameter interaction with the network card of the sending end; the above-mentioned system can realize congestion control of the sending end without relying on the hardware improvement of the network card, thereby reducing the coupling degree between the congestion control system and the network card. BRIEF DESCRIPTION OF THE DRAWINGS

[0030] In order to more clearly illustrate the technical solutions in the embodiments of the present application or related technologies, the drawings required for use in the embodiments of the present application or related technical descriptions will be briefly introduced below. Obviously, the drawings described below are only some embodiments of the present application. For ordinary technicians in this field, other related drawings can be obtained based on these drawings without paying creative work.

[0031] FIG1 is a schematic diagram of a congestion control system in one embodiment;

[0032] FIG2 is a timing diagram of a congestion control process in one embodiment;

[0033] FIG3 is a timing diagram of a congestion control process in another embodiment;

[0034] FIG4 is a timing diagram of starting an initialization process in one embodiment;

[0035] FIG5 is a timing diagram of a space release process in one embodiment;

[0036] FIG6 is a timing diagram of a space release process under an exit process in one embodiment;

[0037] FIG7 is a timing diagram of a space release process in a crash exit process in one embodiment;

[0038] FIG8 is a schematic flow chart of a congestion control method in one embodiment;

[0039] FIG9 is a schematic diagram of a programmable congestion control framework in one embodiment;

[0040] FIG10 is a timing diagram of starting the initialization process in another embodiment;

[0041] FIG11 is a timing diagram of a congestion control process in yet another embodiment;

[0042] FIG12 is a timing diagram of an exit process in another embodiment;

[0043] FIG13 is a timing diagram of a crash exit process in another embodiment;

[0044] FIG. 14 is a diagram showing the internal structure of a computer device in one embodiment. DETAILED DESCRIPTION

[0045] In order to make the purpose, technical solution and advantages of the present application more clearly understood, the present application is further described in detail below in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are only used to explain the present application and are not used to limit the present application.

[0046] It should be noted that the user information (including but not limited to user device information, user personal information, etc.) and data (including but not limited to data used for analysis, stored data, displayed data, etc.) involved in this application are all information and data authorized by the user or fully authorized by all parties, and the collection, use and processing of relevant data must comply with relevant regulations.

[0047] As shown in Figure 1, the congestion control system provided by the embodiment of the present application is mounted on the sending end, which is the sending device of the communicating parties; wherein the sending end can be a DPU (Data Processing Unit) or a CPU (Central Processing Unit).

[0048] Referring to FIG. 1 , the congestion control system is divided into a hardware part and a software part. The hardware part is the network card 102 at the sending end, and the software part runs in the operating system at the sending end, including a congestion control module 104 running in the user space at the sending end and a hardware-software interaction module 106 running in the kernel space at the sending end.

[0049] The network card may be a smart network card or a DPU network card.

[0050] In the operating system, the memory area is usually divided into two blocks: user space and kernel space. User space refers to the memory area allocated by the operating system for ordinary user programs, and kernel space refers to the memory area used by the kernel of the operating system itself.

[0051] Specifically, the network card 102 is used to report the monitored congestion event to the congestion control module 104 through the event queue of the sending end. The event queue is created by the software and hardware interaction module 106.

[0052] The congestion control module 104 is used to obtain congestion events from the event queue, determine congestion control parameters of the sender under the congestion event based on the congestion event, and send the congestion control parameters to the network card 102 .

[0053] The network card 102 is also used to control the packet sending rate of the sending end based on the congestion control parameters.

[0054] Referring to FIG. 1 , the congestion control system further includes an interface encapsulation module 108 and an application program module 110 running in the user space of the sending end.

[0055] The interface encapsulation module 108 is used to provide the congestion control module 104 with a calling interface of the software and hardware interaction module 106 . The congestion control module 104 calls the software and hardware interaction module 106 through the calling interface provided by the interface encapsulation module 108 .

[0056] The application module 110 is used to provide the user with the application of the congestion control system; based on the application module 110, the user can start, restart, exit, and perform other operations on the congestion control system.

[0057] In an exemplary embodiment, as shown in FIG2 , a congestion control process of the congestion control system shown in FIG1 is provided. In this embodiment:

[0058] The network card is used to report the monitored congestion events to the congestion control module through the event queue of the sending end.

[0059] Specifically, in the congestion control system, there is an event queue at the sending end. Referring to FIG2 , the network card monitors whether there is a congestion event in the communication network. When a congestion event is detected, the network card writes the detected congestion event into the event queue at the sending end to report the congestion event to the congestion control module. The congestion event carries corresponding event information.

[0060] In specific applications, the event queue is created through the software and hardware interaction module.

[0061] In actual applications, the network card monitors whether there is a congestion event in the communication network based on the message type and special fields of the packets sent and received by the sender.

[0062] The congestion control module is used to obtain congestion events from the event queue, determine congestion control parameters of the sender under the congestion event based on the congestion event, and send the congestion control parameters to the network card.

[0063] The congestion control parameters at least include a target packet sending rate of the sender under a congestion event.

[0064] Specifically, referring to FIG. 2 , the congestion control module takes out the congestion event from the event queue, performs congestion control calculation on the congestion event, determines the congestion control parameters of the sender under the congestion event, and then sends the congestion control parameters to the network card.

[0065] In practical applications, there is a congestion control algorithm on the congestion control module. The congestion control module inputs the congestion event into the congestion control algorithm to calculate the target packet sending rate of the sender under the congestion event, and then writes the calculated target packet sending rate into the network card.

[0066] In practical applications, congestion control parameters also include the ci pointer (current index pointer, used to point to the node currently being processed in the queue) of the event queue.

[0067] The network card is also used to control the packet sending rate of the sender based on congestion control parameters.

[0068] Among them, there is a communication protocol in the network card, and the communication protocol is used to control the sending and receiving of the sending end.

[0069] Specifically, referring to FIG. 2 , the network card adjusts the packet sending rate of the sender based on the target packet sending rate in the congestion control parameters, so that the sender sends packets at the target packet sending rate, thereby avoiding further aggravation of the congestion of the communication network and degradation of the performance of the communication network.

[0070] In the related art, the congestion control system is usually installed on the network card and depends on the hardware improvement of the network card. For example, it is necessary to add corresponding hardware devices in the network card to facilitate interaction with the congestion control system, which leads to a high degree of coupling between the congestion control system and the network card. For example, when using the network card produced by manufacturer A, only the congestion control system installed on the network card of manufacturer A can be used, and the congestion control system cannot be replaced or modified. In the above congestion control system, the congestion control module runs in the user space of the sender. Through the event queue created by the software and hardware interaction module running in the kernel space of the sender, the congestion event interaction with the network card of the sender can be realized. Through the congestion control parameter interaction with the network card of the sender, the packet sending rate of the sender can be controlled; the above system can realize congestion control of the sender without relying on the hardware improvement of the network card, thereby reducing the coupling degree between the congestion control system and the network card.

[0071] In addition, since this embodiment can implement the congestion control system without relying on hardware improvements to the network card, the congestion control cost is also reduced.

[0072] In an exemplary embodiment, as shown in FIG3 , another congestion control process of the congestion control system is also provided. In this embodiment:

[0073] The congestion control module is also used to obtain the congestion control parameters of the sending end under the congestion event based on the congestion event and the programmable congestion control algorithm carried, and write the congestion control parameters into the memory mapping address of the network card in the sending end, so as to write the congestion control parameters into the network card memory of the network card through the memory mapping relationship between the network card and the sending end.

[0074] Among them, the memory mapping relationship between the network card and the sender refers to the mapping relationship between the network card memory of the network card and the sender memory of the sender; in a specific application, the congestion control system establishes a memory mapping relationship between the network card and the sender through a software and hardware interaction module, maps the network card memory of the network card to the sender memory of the sender, and obtains the memory mapping address of the network card in the sender. Through the memory mapping relationship between the network card and the sender, the data written to the memory mapping address will be automatically written into the network card memory.

[0075] Specifically, the congestion control module is equipped with a programmable congestion control algorithm; the network card has a memory mapping address in the sending end. Referring to FIG3, the congestion control module inputs the congestion event into the programmable congestion control algorithm to calculate the target packet sending rate of the sending end under the congestion event, and obtains the congestion control parameters of the sending end under the congestion event. Then, the congestion control module writes the congestion control parameters into the memory mapping address of the network card in the sending end, so as to write the congestion control parameters into the network card memory of the network card through the memory mapping relationship between the network card and the sending end.

[0076] In specific applications, the congestion control system can select different programmable congestion control algorithms to be installed on the congestion control module according to actual needs.

[0077] The network card is also used to read the congestion control parameters of the sender from the network card memory.

[0078] Specifically, referring to Figure 3, the network card reads the congestion control parameters calculated by the congestion control module from the network card memory, and adjusts the packet sending rate of the sender based on the target packet sending rate in the congestion control parameters, so that the sender sends packets at the target packet sending rate, avoiding further aggravation of the congestion of the communication network and degradation of the performance of the communication network.

[0079] In this embodiment, the congestion control module runs in the user space of the sending end. Through the event queue created by the software and hardware interaction module running in the kernel space of the sending end, it can realize the congestion event interaction with the network card of the sending end. Through the congestion control parameter interaction with the network card of the sending end, it can control the packet sending rate of the sending end. The above system can realize congestion control of the sending end without relying on the hardware improvement of the network card, thereby reducing the coupling degree between the congestion control system and the network card.

[0080] In an exemplary embodiment, as shown in FIG4 , a startup initialization process of a congestion control system is also provided. In this embodiment:

[0081] The congestion control module is also used to create an event queue of the sending end through the software and hardware interaction module when it is detected that the congestion control system is started.

[0082] Specifically, referring to Figure 4, when the congestion control module detects that the congestion control system mounted on the sending end is started, the congestion control module sends a queue creation instruction to the software and hardware interaction module through the interface encapsulation module. After receiving the queue creation instruction, the software and hardware interaction module creates an event queue for the sending end.

[0083] The software and hardware interaction module is also used to establish a memory mapping relationship between the network card and the sending end after creating the event queue, obtain the memory mapping address of the network card in the sending end, and send the queue information of the event queue to the network card.

[0084] Specifically, referring to FIG4 , after the software and hardware interaction module creates the event queue of the sender, it establishes a memory mapping relationship between the network card and the sender, maps the network card memory of the network card to the sender memory of the sender, and obtains the memory mapping address of the network card in the sender. Based on the above process, the information interaction between the congestion control module and the network card (including but not limited to congestion time reporting and sending congestion control parameters) can be carried out in a kernel by pass manner; at the same time, the software and hardware interaction module sends the queue information of the event queue, including but not limited to the queue address, queue depth, queue node size, etc. of the event queue to the network card.

[0085] The network card is also used to cache queue information. When a congestion event is detected, the event queue of the sender is determined based on the queue information, and the congestion event is reported to the congestion control module through the event queue.

[0086] Specifically, referring to FIG. 4 , after receiving the queue information, the network card creates a text for caching the queue information, and then, when a congestion event is detected, determines the event queue of the sender based on the queue information, and reports the congestion event to the congestion control module through the event queue.

[0087] In this embodiment, when the congestion control system detects startup, it implements operations such as event queue creation and mapping relationship establishment through information interaction between various modules, automatically enters the congestion control process, and implements congestion control on the sending end.

[0088] In an exemplary embodiment, as shown in FIG5 , a space release process of a congestion control system is also provided. In this embodiment:

[0089] The software and hardware interaction module is also used to send space release instructions to the network card.

[0090] Specifically, referring to FIG5 , the soft-hard interaction module sends a space release instruction to the network card when receiving an exit instruction sent by the congestion control module or when detecting an abnormal event in the congestion control system, such as a partial collapse of the congestion control system.

[0091] The network card is further used to release the space occupied by the queue information of the event queue under the network card in response to the space release instruction, and report the stop event to the software and hardware interaction module through the event queue.

[0092] 5, after the network card receives the space release instruction sent by the software and hardware interaction module, it releases the space occupied by the queue information of the event queue of the sender under the network card, for example, deletes the document used to cache the queue information, and reports the stop event to the software and hardware interaction module through the event queue.

[0093] In a specific application, after receiving the space release instruction, the network card may also clear the congestion control parameters in the mapping address of the sender under the network card and reclaim the mapping address.

[0094] The software and hardware interaction module is further used to obtain a stop event from the event queue and destroy the event queue in response to the stop event.

[0095] Specifically, referring to FIG. 5 , the software-hard interaction module takes out the stop event from the event queue, and destroys the event queue of the sending end after taking out the stop event.

[0096] In a specific application, after determining that the soft-hard interaction module destroys the event queue of the sender, the congestion control module will close the congestion control system on the sender to exit the congestion control system.

[0097] In this embodiment, the congestion control system can trigger space release when it is necessary to end the congestion control process, and implement operations such as space release and queue destruction through information interaction between various modules to end the congestion control process.

[0098] In an exemplary embodiment, as shown in FIG6 , the space release process of the congestion control system includes a space release process under the exit process. In this embodiment:

[0099] The congestion control module is also used to send a queue destruction instruction to the software and hardware interaction module when receiving an exit instruction.

[0100] Specifically, referring to FIG6 , when the user needs to exit the congestion control system, an exit instruction is sent to the congestion control module through the application module; upon receiving the exit instruction, the congestion control module sends a queue destruction instruction to the software-hard interaction module through the interface encapsulation module.

[0101] The software and hardware interaction module is also used to send a space release instruction to the network card in response to the queue destruction instruction.

[0102] Specifically, referring to FIG. 6 , after receiving the queue destruction, the software and hardware interaction module sends a space release instruction to the network card.

[0103] In this embodiment, the congestion control system can trigger space release and end the congestion control process when the user needs to exit.

[0104] In an exemplary embodiment, referring to FIG. 6 , there is a restart process after the space release process shown in FIG. 6 . In this embodiment:

[0105] The congestion control module is also used to re-create the event queue of the sending end through the software and hardware interaction module when a restart instruction is received.

[0106] Specifically, referring to Figure 6, when the user needs to restart the congestion control system, a restart instruction will be sent to the congestion control module through the application module; when the congestion control module receives the restart instruction, it enters the startup initialization process shown in Figure 4, and creates the event queue of the sending end again through the software and hardware interaction module.

[0107] In this embodiment, when the user needs to restart, the congestion control system can implement operations such as event queue creation and mapping relationship establishment through information interaction between various modules, re-enter the congestion control process, and implement congestion control on the sending end.

[0108] In an exemplary embodiment, as shown in FIG7 , the space release process of the congestion control system includes a space release process under the crash exit process. In this embodiment:

[0109] The software and hardware interaction module is also used to send a space release instruction to the network card when an abnormal event is detected in the congestion control system.

[0110] Specifically, referring to FIG7 , when the software-hard interaction module detects an abnormal event in the congestion control system, for example, a partial crash of the congestion control system, especially a partial crash of the software running in the user space of the sending end, the module sends a space release instruction to the network card.

[0111] In this embodiment, the software-hard interaction module sends a space release instruction when an abnormal event occurs in the congestion control system, thereby triggering space release in the case of a partial collapse of the congestion control system and ending the congestion control process.

[0112] In an exemplary embodiment, as shown in FIG7 , there is a self-restart process after the space release process shown in FIG7 . In this embodiment:

[0113] The congestion control module is also used to re-create the event queue of the sending end through the software and hardware interaction module after a preset time of the abnormal event.

[0114] Specifically, referring to Figure 7, since the space release process shown in Figure 7 is the space release process under the crash exit process, the congestion control module will restart the congestion control system after a preset time after the abnormal event occurs, and enter the startup initialization process shown in Figure 4, and create the event queue of the sending end again through the software and hardware interaction module.

[0115] In this embodiment, the congestion control module can automatically restart the congestion control system when the congestion control process ends due to an abnormal crash, and through information interaction between various modules, it can implement operations such as event queue creation and mapping relationship establishment, and re-enter the congestion control process to achieve congestion control of the sending end.

[0116] In an exemplary embodiment, referring to FIG. 1 , the congestion control system further includes an interface encapsulation module running in a user space.

[0117] The interface encapsulation module is used to provide the congestion control module with a calling interface of the software and hardware interaction module; the calling interface at least includes a queue creation interface and a queue destruction interface.

[0118] Furthermore, the calling interface may also include an event acquisition interface and a parameter sending interface.

[0119] The congestion control module is also used to create an interface through the queue of the interface encapsulation module and call the software and hardware interaction module to create an event queue of the sending end.

[0120] For example, in the startup initialization process, the congestion control module sends a queue creation instruction to the software and hardware interaction module through the queue creation interface of the interface encapsulation module to call the software and hardware interaction module to create an event queue of the sending end.

[0121] The congestion control module is also used to call the software and hardware interaction module through the queue destruction interface of the interface encapsulation module to destroy the event queue of the sending end.

[0122] For example, in the space release process under the exit process, the congestion control module sends a queue destruction instruction to the software and hardware interaction module through the queue destruction interface of the interface encapsulation module to call the software and hardware interaction module to destroy the event queue of the sender.

[0123] The congestion control module is further used to obtain congestion events from the event queue created by the software and hardware interaction module through the event acquisition interface of the interface encapsulation module.

[0124] The congestion control module is also used to send the congestion control parameters to the network card through the parameter sending interface of the interface encapsulation module based on the memory mapping relationship created by the software and hardware interaction module.

[0125] In this embodiment, the interface encapsulation module running in the user space can provide the congestion control module with a calling interface of the software and hardware interaction module, so that the congestion control module can call various functions of the software and hardware interaction module.

[0126] Based on the same inventive concept, the embodiment of the present application also provides a congestion control method applied to the above congestion control system. The implementation scheme for solving the problem provided by the method is similar to the implementation scheme recorded in the above system, so the specific limitations in one or more congestion control method embodiments provided below can refer to the limitations on the congestion control system above, and will not be repeated here.

[0127] In an exemplary embodiment, as shown in FIG8 , a congestion control method is provided. This embodiment is illustrated by applying the method to a congestion control system mounted on a transmitting end. As shown in FIG1 , the congestion control system includes a network card of the transmitting end, a congestion control module running in the user space of the transmitting end, and a soft-hard interaction module running in the kernel space of the transmitting end. It can be understood that the transmitting end may be, but not limited to, a server or terminal having a CPU or a DPU, or a system including a server and a terminal; wherein the server may be an independent physical server, or a server cluster or a distributed system consisting of multiple physical servers, or a cloud server providing cloud computing services; the terminal may be, but not limited to, various personal computers, laptops, smart phones, tablet computers, Internet of Things devices, and portable wearable devices, and the Internet of Things devices may be smart speakers, smart TVs, smart air conditioners, smart car-mounted devices, projection devices, etc. Portable wearable devices may be smart watches, smart bracelets, head-mounted devices, etc. The head-mounted device may be a virtual reality (VR) device, an augmented reality (AR) device, smart glasses, etc. In this embodiment, the method includes a congestion control process, including the following steps:

[0128] Step S802: Report the monitored congestion event to the congestion control module through the event queue of the network card and the sending end.

[0129] Among them, the event queue is created through the software and hardware interaction module.

[0130] Specifically, in the congestion control system, there is an event queue at the sending end. Referring to FIG2 , the network card monitors whether there is a congestion event in the communication network. When a congestion event is detected, the network card writes the detected congestion event into the event queue at the sending end to report the congestion event to the congestion control module. The congestion event carries corresponding event information.

[0131] Step S804: Determine the congestion control parameters of the sending end under the congestion event through the congestion control module and the congestion event.

[0132] Specifically, referring to FIG. 2 , the congestion control module takes out a congestion event from the event queue, performs congestion control calculation on the congestion event, and determines the congestion control parameters of the sender under the congestion event.

[0133] Step S806: Send the congestion control parameters to the network card through the congestion control module.

[0134] Specifically, the congestion control module sends the congestion control parameters to the network card.

[0135] Step S808, controlling the packet sending rate of the sending end through the network card and congestion control parameters.

[0136] Specifically, referring to FIG. 2 , the network card adjusts the packet sending rate of the sender based on the target packet sending rate in the congestion control parameters, so that the sender sends packets at the target packet sending rate, thereby avoiding further aggravation of the congestion of the communication network and degradation of the performance of the communication network.

[0137] In the above congestion control method, the congestion control module runs in the user space of the sending end. Through the event queue created by the software and hardware interaction module running in the kernel space of the sending end, the congestion event interaction with the network card of the sending end can be realized. Through the congestion control parameter interaction with the network card of the sending end, the packet sending rate of the sending end can be controlled. The above system can realize congestion control of the sending end without relying on hardware improvements to the network card, thereby reducing the degree of coupling between the congestion control system and the network card.

[0138] In an exemplary embodiment, the above step S804 determines the congestion control parameters of the sending end under the congestion event through the congestion control module and the congestion event, and specifically includes the following contents: obtaining the congestion control parameters of the sending end under the congestion event through the programmable congestion control algorithm and congestion event carried by the congestion control module.

[0139] The above step S806, sending the congestion control parameters to the network card through the congestion control module, specifically includes the following contents: writing the congestion control parameters into the memory mapping address of the network card in the sending end, so as to write the congestion control parameters into the network card memory of the network card through the memory mapping relationship between the network card and the sending end.

[0140] Before the above step S808, in which the packet sending rate of the sender is controlled by the network card and the congestion control parameter, the following contents are specifically included: the congestion control parameter of the sender is read from the network card memory by the network card.

[0141] In an exemplary embodiment, the congestion control method provided by the present application further includes starting an initialization process, including the following steps:

[0142] When it is detected that the congestion control system is started, an event queue of the sending end is created through the congestion control module and the soft-hard interaction module.

[0143] After the event queue is created, a memory mapping relationship between the network card and the sending end is established, the memory mapping address of the network card in the sending end is obtained, and the queue information of the event queue is sent to the network card.

[0144] Through the network card, the queue information is cached. When a congestion event is detected, the event queue of the sender is determined based on the queue information, and the congestion event is reported to the congestion control module through the event queue.

[0145] In an exemplary embodiment, the congestion control method provided by the present application further includes a space release process, including the following steps:

[0146] Send a space release instruction to the network card through the software and hardware interaction module.

[0147] The space occupied by the queue information of the event queue under the network card is released through the network card and the space release instruction, and the stop event is reported to the software and hardware interaction module through the network card and the event queue.

[0148] The stop event is obtained from the event queue through the software and hardware interaction module, and the event queue is destroyed in response to the stop event.

[0149] In an exemplary embodiment, before the above step sends a space release instruction to the network card through the software and hardware interaction module, the following content is specifically included: when an exit instruction is received, a queue destruction instruction is sent to the software and hardware interaction module through the congestion control module.

[0150] The above steps send a space release instruction to the network card through the software and hardware interaction module, and specifically also include the following content: sending a space release instruction to the network card through the software and hardware interaction module and the queue destruction instruction.

[0151] In an exemplary embodiment, after the above steps of obtaining a stop event from the event queue through the software and hardware interaction module and destroying the event queue in response to the stop event, the following steps are specifically included:

[0152] When a restart instruction is received, the event queue of the sender is created again through the congestion control module and the software-hard interaction module.

[0153] In an exemplary embodiment, the above steps send a space release instruction to the network card through the software and hardware interaction module, and specifically also include the following content: when an abnormal event is detected in the congestion control system, a space release instruction is sent to the network card through the software and hardware interaction module.

[0154] In an exemplary embodiment, after the above steps of obtaining a stop event from the event queue through the software and hardware interaction module and destroying the event queue in response to the stop event, the following steps are specifically included:

[0155] After a preset time when an abnormal event occurs, the event queue of the sending end is created again through the congestion control module and the soft-hard interaction module.

[0156] In an exemplary embodiment, the congestion control system also includes an interface encapsulation module running in the user space; the interface encapsulation module is used to provide a calling interface of the software and hardware interaction module to the congestion control module; the calling interface includes at least a queue creation interface and a queue destruction interface.

[0157] The congestion control module calls the software and hardware interaction module through the calling interface provided by the interface encapsulation module.

[0158] In order to more clearly illustrate the congestion control system provided by the embodiment of the present application, the congestion control system is specifically described below with a specific embodiment, but it should be understood that the embodiment of the present application is not limited thereto. In one exemplary embodiment, the present application also provides a programmable congestion control framework as shown in Figure 9, which specifically includes the following contents:

[0159] Referring to Figure 9, the programmable congestion control framework provided in this embodiment includes a software side and a hardware side, and specifically includes the following six components: an application module ccpf (congestion control programmable frame) - configuration tool, a congestion control module ccpf-dev, an interface encapsulation module ccpf-users, a software-hardware interaction module ccpf-kernel, a processing module command in the network card hardware, and an engine module ccpf engine in the network card hardware.

[0160] (1) ccpf-configuration tool: located in the user space of the operating system, an independent executable program that uses short-link TCP (Transmission Control Protocol) messages to send instructions to the congestion control module ccpf-dev.

[0161] (2) ccpf-dev: Located in user space, it is an independent service program that starts automatically when the computer is powered on. During the initialization process, the interface provided by ccpf-user is called to send instructions to ccpf-kernel to create an event queue. After the initialization process is completed, ccpf-dev takes out the congestion event from the event queue, inputs the congestion event into the programmable congestion control algorithm (carried in ccpf-dev), obtains the return result of the programmable congestion control algorithm, and sends the result to the ccpf engine. It can receive instructions sent by the ccpf-configuration tool and switch to different processes.

[0162] (3) ccpf-users: Located in user space, driver program. Encapsulates the program for user space to interact with ccpf-kernel and provides an interface to ccpf-dev. ccpf-dev only sees the functional interface, such as creating event queues, destroying event queues, getting congestion events, and sending congestion control parameters.

[0163] (4) ccpf-kernel: A dynamic library located in the kernel space of the operating system. ccpf-kernel mainly completes the operations of the control plane, such as allocating physical memory when creating an event queue, sending the first address of the physical memory to the hardware network card, sending instructions to the hardware network card to create text to save event queue information, and mapping the memory space of the hardware network card to the virtual memory of the user space.

[0164] (5) Command: This module is already included in the hardware network card and receives commands from the ccpf-kernel. It needs to be expanded by software to add processing types related to this framework.

[0165] (6) ccpf engine: a module obtained by software expansion of command in the hardware network card. In the process of sending and receiving packets, it extracts congestion events according to the packet type and changes in special fields of the packet, writes them into the event queue, and realizes the extraction and upload of congestion events. It uses the rate obtained by the programmable congestion control algorithm to accurately control the packet sending rate.

[0166] As shown in Figure 10, this is the startup initialization process of this framework.

[0167] FIG11 shows the congestion control process of this framework.

[0168] FIG12 shows the exit process of this framework.

[0169] FIG13 shows the crash exit process of this framework.

[0170] In this embodiment, firstly, the framework moves the main body of the framework to the software side, thereby reducing the design and implementation complexity and commercial cost of the hardware network card. Secondly, the framework software side ensures high reliability and maximizes congestion control performance.

[0171] It should be understood that, although the various steps in the flowcharts involved in the above-mentioned embodiments are displayed in sequence according to the indication of the arrows, these steps are not necessarily executed in sequence according to the order indicated by the arrows. Unless there is a clear explanation in this article, the execution of these steps does not have a strict order restriction, and these steps can be executed in other orders. Moreover, at least a part of the steps in the flowcharts involved in the above-mentioned embodiments can include multiple steps or multiple stages, and these steps or stages are not necessarily executed at the same time, but can be executed at different times, and the execution order of these steps or stages is not necessarily to be carried out in sequence, but can be executed in turn or alternately with other steps or at least a part of the steps or stages in other steps.

[0172] In an exemplary embodiment, a computer device is provided, which is equipped with a congestion control system. The computer device may be a server, and its internal structure diagram may be shown in FIG14. The computer device includes a processor, a memory, an input / output interface (Input / Output, referred to as I / O) and a communication interface. The processor, the memory and the input / output interface are connected via a system bus, and the communication interface is connected to the system bus via the input / output interface. The processor of the computer device is used to provide computing and control capabilities. The memory of the computer device includes a non-volatile storage medium and an internal memory. The non-volatile storage medium stores an operating system, a computer program and a database. The internal memory provides an environment for the operation of the operating system and the computer program in the non-volatile storage medium. The database of the computer device is used to store communication data. The input / output interface of the computer device is used to exchange information between the processor and an external device. The communication interface of the computer device is used to communicate with an external terminal through a network connection. When the computer program is executed by the processor, a congestion control method is implemented.

[0173] Those skilled in the art will understand that the structure shown in FIG. 14 is merely a block diagram of a partial structure related to the scheme of the present application, and does not constitute a limitation on the computer device to which the scheme of the present application is applied. The specific computer device may include more or fewer components than shown in the figure, or combine certain components, or have a different arrangement of components.

[0174] In an exemplary embodiment, a computer device is further provided, including a memory and a processor, wherein a computer program is stored in the memory, and the processor implements the steps in the above-mentioned method embodiments when executing the computer program.

[0175] In an exemplary embodiment, a computer-readable storage medium is provided, on which a computer program is stored. When the computer program is executed by a processor, the steps in the above-mentioned method embodiments are implemented.

[0176] In an exemplary embodiment, a computer program product is provided, including a computer program, and when the computer program is executed by a processor, the steps in the above method embodiments are implemented.

[0177] A person of ordinary skill in the art can understand that all or part of the processes in the above-mentioned embodiment method can be completed by instructing the relevant hardware through a computer program, and the computer program can be stored in a non-volatile computer-readable storage medium. When the computer program is executed, it can include the processes of the embodiments of the above-mentioned methods. Among them, any reference to the memory, database or other medium used in the embodiments provided in the present application can include at least one of non-volatile memory and volatile memory. Non-volatile memory can include read-only memory (ROM), magnetic tape, floppy disk, flash memory, optical memory, high-density embedded non-volatile memory, resistive random access memory (ReRAM), magnetic random access memory (MRAM), ferroelectric random access memory (FRAM), phase change memory (PCM), graphene memory, etc. Volatile memory can include random access memory (RAM) or external cache memory, etc. As an illustration and not limitation, RAM can be in various forms, such as static random access memory (SRAM) or dynamic random access memory (DRAM). The database involved in each embodiment provided in this application may include at least one of a relational database and a non-relational database. Non-relational databases may include distributed databases based on blockchains, etc., but are not limited to this. The processor involved in each embodiment provided in this application may be a general-purpose processor, a central processing unit, a graphics processor, a digital signal processor, a programmable logic device, a data processing logic device based on quantum computing, an artificial intelligence (AI) processor, etc., but are not limited to this.

[0178] The technical features of the above embodiments may be combined arbitrarily. To make the description concise, not all possible combinations of the technical features in the above embodiments are described. However, as long as there is no contradiction in the combination of these technical features, they should be considered to be within the scope of this application.

[0179] The above-described embodiments only express several implementation methods of the present application, and the descriptions thereof are relatively specific and detailed, but they cannot be understood as limiting the scope of the present application. It should be pointed out that, for a person of ordinary skill in the art, several variations and improvements can be made without departing from the concept of the present application, and these all belong to the protection scope of the present application. Therefore, the protection scope of the present application shall be subject to the attached claims.

Claims

1. A congestion control system, characterized in that: The system is mounted on the sending end, and the system includes a network card of the sending end, a congestion control module running in the user space of the sending end, and a software and hardware interaction module running in the kernel space of the sending end; The network card is used to report the monitored congestion event to the congestion control module through the event queue of the sending end; the event queue is created by the software and hardware interaction module; The congestion control module is used to obtain the congestion event from the event queue, determine the congestion control parameters of the sending end under the congestion event based on the congestion event, and send the congestion control parameters to the network card; The network card is further used to control the packet sending rate of the sending end based on the congestion control parameter.

2. The system according to claim 1, characterized in that The congestion control module is further used to obtain congestion control parameters of the sending end under the congestion event based on the congestion event and the programmable congestion control algorithm carried, and write the congestion control parameters into the memory mapping address of the network card in the sending end, so as to write the congestion control parameters into the network card memory of the network card through the memory mapping relationship between the network card and the sending end; The network card is also used to read the congestion control parameters of the sender from the network card memory.

3. The system according to claim 1, characterized in that The congestion control module is further configured to create an event queue of the sending end through the software and hardware interaction module when detecting that the congestion control system is started; The software and hardware interaction module is further used to establish a memory mapping relationship between the network card and the sending end after creating the event queue, obtain the memory mapping address of the network card in the sending end, and send the queue information of the event queue to the network card; The network card is further used to cache the queue information, and when the congestion event is detected, determine the event queue of the sending end based on the queue information, and report the congestion event to the congestion control module through the event queue.

4. The system according to claim 1, characterized in that The software and hardware interaction module is further used to send a space release instruction to the network card; The network card is further used to release the occupied space of the queue information of the event queue under the network card in response to the space release instruction, and report a stop event to the software and hardware interaction module through the event queue; The software-hard interaction module is further configured to obtain the stop event from the event queue, and destroy the event queue in response to the stop event.

5. The system according to claim 4, characterized in that The congestion control module is further configured to send a queue destruction instruction to the software and hardware interaction module when receiving an exit instruction; The software and hardware interaction module is further configured to send the space release instruction to the network card in response to the queue destruction instruction.

6. The system according to claim 5, characterized in that The congestion control module is further configured to re-create the event queue of the sending end through the software-hardware interaction module when a restart instruction is received.

7. The system according to claim 4, characterized in that The software-hardware interaction module is further configured to send the space release instruction to the network card when an abnormal event is detected in the congestion control system.

8. The system according to claim 7, characterized in that The congestion control module is further configured to re-create the event queue of the sending end through the software and hardware interaction module after a preset time has passed since the abnormal event occurred.

9. The system according to any one of claims 1 to 8, characterized in that: The congestion control system further comprises an interface encapsulation module running in the user space; The interface encapsulation module is used to provide the congestion control module with a calling interface of the software and hardware interaction module; the calling interface at least includes a queue creation interface and a queue destruction interface.

10. A congestion control method, characterized in that: The method is applied to a congestion control system mounted on a sending end, the congestion control system comprising a network card of the sending end, a congestion control module running in a user space of the sending end, and a software and hardware interaction module running in a kernel space of the sending end, and comprising: The monitored congestion event is reported to the congestion control module through the event queue of the network card and the sending end; the event queue is created by the software and hardware interaction module; Determining congestion control parameters of the transmitting end under the congestion event through the congestion control module and the congestion event; Sending the congestion control parameter to the network card through the congestion control module; The packet sending rate of the sending end is controlled by the network card and the congestion control parameters.

Citation Information

Patent Citations

  • Software and hardware collaborative programmable congestion control system and method

    CN117834532A

  • Network congestion control method and network equipment

    CN118631738A

  • Congestion control state information processing method and device, chip, network interface card, equipment, storage medium and program product

    CN118972329A

  • Method for processing data access requests, and associated entity, computer program and storage medium

    WO2023180148A1