Congestion control simulation system, congestion control method and electronic equipment

By introducing programmable congestion control algorithms and custom functions into the congestion control simulation system, the problem of insufficient flexibility in configuration and secondary development of existing systems is solved, and a flexible and customizable congestion control simulation system is realized.

CN119966911APending Publication Date: 2025-05-09CHINA MOBILE (SUZHOU) SOFTWARE TECH CO LTD +1
View PDF 0 Cites 2 Cited by

Patent Information

Application Number
CN202510076210.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-01-17
Publication Date
2025-05-09

AI Technical Summary

Technical Problem

The existing congestion control simulation systems lack flexibility in configuration and secondary development, which is difficult to adapt to the needs of different application scenarios, and it is difficult for users to customize congestion control algorithms.

Method used

A congestion control simulation system is provided, including a receiving module and a sending module, which responds to event information in the congestion control event queue through a programmable congestion control algorithm and adjusts the transmission rate of the sending module. Users can customize congestion control algorithms and flexibly arrange and design algorithms according to different application scenarios.

Benefits of technology

It realizes a low-cost, programmable, and customizable congestion control simulation system, which can meet different business needs and improves the flexibility and adaptability of the system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119966911A_ABST
    Figure CN119966911A_ABST
Patent Text Reader

Abstract

The invention discloses a congestion control simulation system, a congestion control method and electronic equipment, and the system comprises a receiving module which is used for receiving a service data packet transmitted by a transmitting module, generating a congestion notification signal after detecting network congestion, and transmitting the congestion notification signal to the transmitting module; the sending module is used for generating congestion control event information according to the congestion notification signal, writing the congestion control event information into a congestion control event queue, and performing congestion control response on the congestion control event information in the congestion control event queue based on a programmable congestion control algorithm in a code warehouse of the sending module, and the sending rate of the sending module is adjusted.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of computer technology, and in particular to a congestion control simulation system, a congestion control method and electronic equipment. Background Art

[0002] The congestion control simulation system provides a flexible and configurable congestion control mechanism by simulating the network environment and traffic characteristics. In the related art, the most widely used programmable congestion control simulation systems include NS-3 and OMNeT++. For some specific application scenarios or protocols, users may need to develop customized models by themselves, and the congestion control algorithms are mostly integrated at the factory, which makes it difficult for users to flexibly configure or redevelop, making the simulation process more difficult and complicated. Summary of the invention

[0003] In view of this, embodiments of the present invention provide a congestion control method, an electronic device, a program product, and a storage medium.

[0004] The technical solution of the embodiment of the present invention is achieved as follows:

[0005] On the one hand, an embodiment of the present invention provides a congestion control simulation system, the system comprising:

[0006] A receiving module, configured to receive a service data packet sent by the sending module, and to generate a congestion notification signal after detecting network congestion, and to send the congestion notification signal to the sending module;

[0007] A sending module is used to generate congestion control event information according to the congestion notification signal, and write the congestion control event information into a congestion control event queue, and perform congestion control response to the congestion control event information in the congestion control event queue based on a programmable congestion control algorithm in the code repository of the sending module to adjust the sending rate of the sending module.

[0008] In the above solution, the sending module includes:

[0009] A flow database, used to store flow information of each service data flow of the sending module; the flow information includes a historical sending rate of the service data flow by the sending module;

[0010] The sending module is used to determine the adjusted sending rate according to the congestion control algorithm and the flow information, and to update the flow information in the flow database.

[0011] In the above scheme, the simulation system also includes:

[0012] The performance analysis module is used to evaluate the performance of the congestion control algorithm according to the current sending rate of the sending module and the flow information in the flow database.

[0013] In the above scheme, the simulation system also includes:

[0014] A congestion sensing module, configured to receive the data packets sent by the sending module and forward them to the receiving module, and to add a congestion indicator to the received data packets after the congestion sensing module senses network congestion;

[0015] The receiving module is used to detect whether network congestion occurs according to the congestion identifier in the received data packet.

[0016] In the above scheme, the sending module is used to determine the current queue length of the service data packets in the congestion sensing module according to the congestion identifier, and determine the adjusted sending rate according to the set queue length and the current queue length.

[0017] On the other hand, an embodiment of the present invention provides a congestion control method, which is applied to a congestion control simulation system. The method includes:

[0018] receiving a congestion notification signal sent by the receiving module after detecting network congestion;

[0019] generating congestion control event information according to the congestion notification signal, and writing the congestion control event information into a congestion control event queue;

[0020] Congestion control is performed on the congestion control event information in the congestion control event queue based on a programmable congestion control algorithm in the code repository of the sending module, so as to adjust the sending rate of the sending module.

[0021] In the above solution, the programmable congestion control algorithm in the code repository based on the sending module performs congestion control on the congestion control event information in the congestion control event queue, including:

[0022] Determine the current queue length of the service data packet in the congestion sensing module according to the congestion identifier;

[0023] The adjusted sending rate of the sending module is determined according to the set queue length and the current queue length.

[0024] On the other hand, an embodiment of the present application further provides a computer program product, including a computer program, which implements the steps of the above-mentioned congestion control method when executed by a processor.

[0025] On the other hand, an embodiment of the present invention provides an electronic device, including a processor and a memory, wherein the processor and the memory are interconnected, wherein the memory is used to store a computer program, the computer program includes program instructions, and the processor is configured to call the program instructions to execute the steps of the congestion control method provided by the embodiment of the present invention.

[0026] On the other hand, an embodiment of the present invention provides a computer-readable storage medium, including: the computer-readable storage medium stores a computer program. When the computer program is executed by a processor, the steps of the congestion control method provided in the embodiment of the present invention are implemented.

[0027] The receiving module in the congestion control simulation system provided in the embodiment of the present application is used to receive the service data packets sent by the sending module, and to generate a congestion notification signal after detecting network congestion, and send the congestion notification signal to the sending module. The sending module is used to generate congestion control event information according to the congestion notification signal, and write the congestion control event information into the congestion control event queue, and perform congestion control response to the congestion control event information in the congestion control event queue based on the programmable congestion control algorithm in the code warehouse to adjust the sending rate of the sending module. The embodiment of the present application does not require users to develop customized models by themselves, and can be applied to a variety of different business scenarios, supports user-defined congestion control algorithms, and users can flexibly arrange and design algorithms according to different application scenarios to achieve low cost, programmability, and customization to meet different business needs. BRIEF DESCRIPTION OF THE DRAWINGS

[0028] Figure 1 is a schematic diagram of a congestion control simulation system provided by an embodiment of the present invention;

[0029] Figure 2 is a schematic diagram of another congestion control simulation system provided by an embodiment of the present invention;

[0030] Figure 3 is a schematic diagram of a congestion control algorithm model provided by an embodiment of the present invention;

[0031] Figure 4 It is a structural schematic diagram of a PID controller provided by an embodiment of the present invention;

[0032] Figure 5 It is a schematic diagram of the framework of a programmable congestion control simulation system PCC-Simulator provided by an embodiment of the present invention;

[0033] Figure 6 is a schematic diagram of a simulation object of a PCC-Simulator simulation system provided by an embodiment of the present invention;

[0034] Figure 7 is a simulation flow chart of a simulation system provided by an embodiment of the present invention;

[0035] Figure 8 It is a schematic diagram of an implementation flow of a congestion control method provided by an embodiment of the present invention;

[0036] Fig. 9 is a schematic diagram of an electronic device provided by an embodiment of the present invention. DETAILED DESCRIPTION

[0037] The following will be combined with the drawings in the embodiments of the present invention to clearly and completely describe the technical solutions in the embodiments of the present invention. Obviously, the described embodiments are part of the embodiments of the present invention, not all of the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of the present invention.

[0038] Traditional congestion control algorithms mostly use static configuration, that is, they control the traffic in the network by manually setting parameters. However, due to the complexity and dynamics of the network environment, statically configured algorithms often cannot adapt to changes in the actual network. Therefore, the development of programmable congestion control simulation systems came into being. The programmable congestion control simulation system provides a flexible and configurable congestion control mechanism by simulating the network environment and traffic characteristics. This system can be adaptively adjusted according to actual conditions to better adapt to changes in the network environment. At the same time, the simulation system can also help researchers evaluate and compare different congestion control algorithms to optimize network performance and service quality.

[0039] In the related technologies, the simulation systems that can be applied to programmable congestion control mainly include NS-3 (network simulator 3), Mininet, OMNeT++ (Objective Modular Network Testbed in C++), Cooja and NetSim. Among them, NS-3 and OMNeT++ are the most widely used.

[0040] NS-3 is a discrete event simulator, an open source project written in C++, and its main operating platform is GUL / Linux (such as Ubuntu, etc.). NS3 is mainly used to simulate computer networks, and can simulate various types and sizes of networks in the real world on a single computer. At the same time, it can also simulate congestion in the network and evaluate and compare congestion control algorithms.

[0041] There are a large number of commonly used models available for calling in NS3. In a .cc file, you can complete the layout of topology, configuration of protocol stack, setting of communication parameters, etc. The system uses the NS-3 open source network simulation framework to build network environments of different scales and topologies, and implements congestion control algorithm-related modules such as rate-based congestion control protocol (Data Center Quantized Congestion Notification, DCQCN) and high-precision congestion control algorithm (High Precision Congestion Control, HPCC). The algorithm performance can be tested and verified in a simulation environment. Using the event tracking capability provided by NS-3, data indicators of the operation process such as delay and packet loss rate can be recorded for subsequent analysis. At the same time, the system provides a customized traffic generation module that can generate network traffic that meets different scenarios for injection, and provides an analysis script based on measured data, which can be compared and verified with the actual network test results.

[0042] OMNeT++ is an open source, component-based, modular open network simulation platform. It is a discrete event simulator with a powerful and complete graphical interface and an embeddable simulation kernel. It can easily define network topology and has programming, debugging and tracing support functions. OMNeT++ is mainly used for simulation of communication networks and distributed systems, and is widely used in the early verification work of communication and distributed system research and development.

[0043] OMNeT++ prefers to build a simulation environment with a clear structure. There are three types of files in the OMNeT++ project: .ned files for configuring topology and connection between models, .ini files for setting parameters, and .h and .cc files for writing your own modules. OMNeT++ encourages you to write the modules you need. OMNeT++ provides a highly free package sending system that can control when any package is sent from a module.

[0044] In the related art, the shortcomings of the NS-3 simulation system include:

[0045] (1) The structure is chaotic. All configuration information is contained in one file. For large projects, the readability of the ns3 file is very poor.

[0046] (2) NS-3 is mainly based on a command line interface and lacks an intuitive graphical user interface (GUI), which may make the simulation process more difficult and complicated in some cases.

[0047] (3) The main operating platform of NS-3 is GUL / Linux (such as Ubuntu, etc.), which has poor portability and is not convenient for cross-platform use.

[0048] (4) NS-3 provides some common network and communication models. However, for some specific application scenarios or protocols, you may need to develop your own customized models, which may increase the workload and complexity for non-professionals.

[0049] (5) Due to the accuracy and sophistication of NS-3, it requires high computing resources, which may limit its use on some low-end computing devices.

[0050] In the related art, the shortcomings of the OMNeT++ simulation system include:

[0051] (1) The graphical interface of OMNeT++ may have performance problems when processing large-scale network simulations, resulting in slower simulation speeds.

[0052] (2) OMNeT++ is primarily designed for offline simulation and may not be suitable for applications that require real-time or interactive simulation.

[0053] (3) OMNeT++ provides some model libraries (such as INET), but the network types and protocols they cover may not be comprehensive enough. Users may need to write additional models to meet specific needs.

[0054] (4) OMNeT++ has limited statistical analysis capabilities and requires the use of other tools.

[0055] In addition, the Remote Direct Memory Access (RDMA) network card in the related technology usually only supports one congestion control algorithm. A single algorithm is difficult to meet the high-performance business requirements in a variety of different application scenarios. Moreover, since most algorithms are integrated at the factory, it is difficult for users to flexibly configure or redevelop them, which lacks flexibility and universality. Therefore, users are eager to provide a set of programmable congestion control algorithm frameworks and interfaces on the same smart network card or data processing unit (DPU). Users can flexibly arrange and design algorithms according to different application scenarios to achieve low cost, programmability, and customization to meet different business needs.

[0056] In view of the shortcomings of the above-mentioned related technologies, an embodiment of the present invention provides a congestion control simulation system to meet the high-performance service requirements in various application scenarios. In order to illustrate the technical solution of the present invention, a specific embodiment is used for description below.

[0057] refer to Figure 1 , Figure 1 1 is a schematic diagram of a congestion control simulation system provided by an embodiment of the present invention, the simulation system comprising:

[0058] A receiving module, configured to receive a service data packet sent by the sending module, and to generate a congestion notification signal after detecting network congestion, and to send the congestion notification signal to the sending module;

[0059] A sending module is used to generate congestion control event information according to the congestion notification signal, and write the congestion control event information into a congestion control event queue, and perform congestion control response to the congestion control event information in the congestion control event queue based on a programmable congestion control algorithm in the code repository of the sending module to adjust the sending rate of the sending module.

[0060] The congestion control simulation system runs in the electronic device, and the receiving module and the sending module are both software modules in the electronic device. The simulation module can be operated on Mac OS, Windows, Linux, etc. The performance analysis module is similar to the performance analysis part implemented by OMNeT++ and can support cross-platform analysis (the simulation result file format is unique, which is .sca file and .vec file).

[0061] In one embodiment, the simulation object of the receiving module is the receiving end network card, the simulation object of the sending module is the sending end network card, the congestion control event queue and the code warehouse are both located in the sending module, and the programmable congestion control algorithm in the code warehouse is run by the central processing unit (CPU) of the electronic device. Users can customize the congestion control algorithm and develop different congestion control algorithms for different business scenarios, such as congestion control algorithms based on DCQCN, congestion control algorithms based on HPCC, congestion control algorithms based on congestion notification packets (CongestionNotificationPacket, CNP), congestion control algorithms based on round-trip time (Round-Trip Time, RTT), and congestion control algorithms based on packet loss rate.

[0062] The receiving module generates a congestion notification signal after detecting network congestion. For example, if the receiving buffer is full, it is detected as network congestion. For another example, the simulation system also includes a switch, which is responsible for forwarding data packets between the sending module and the receiving module. If the queue length of the switch exceeds the preset queue length, it is detected as network congestion. When the switch detects network congestion, an explicit congestion notification (ECN) can be used to mark the affected data packets. The switch sends the data packets to the receiving module, and the receiving module detects whether network congestion occurs according to the ECN mark in the received data packet.

[0063] After the receiving module detects network congestion, it generates a congestion notification signal and feeds the congestion notification signal back to the sending module. After receiving the congestion notification signal, the sending module generates corresponding congestion control event information according to the situation after the traffic is sent, including the congestion situation, the scope of impact, the cause analysis and other information, and writes the event into the specified congestion control event queue.

[0064] The congestion control event queue sends key events related to network congestion, such as congestion window change events and congestion signal events, to the code warehouse (the core processing center for handling network congestion), thereby triggering the corresponding congestion control algorithm in the code warehouse. The congestion control event queue includes a large amount of event information, and the latest written congestion control event information can be sent to the code warehouse, or the code warehouse can read the latest congestion control event information from the congestion control event queue.

[0065] Users can customize the congestion control algorithm, and the sending module responds to the congestion control event according to the selected congestion control algorithm. The congestion control algorithm receives the event and its corresponding context information (current RTT, number of packets, etc.), and performs appropriate congestion control responses, such as increasing / decreasing the sending rate. The sending module schedules the traffic according to the adjusted sending rate to deal with network congestion.

[0066] In one embodiment, the simulation of the sender mainly includes a traffic generator, a scheduler, a congestion control event queue and a computing core. The traffic generator is used to generate service traffic sent to the sender, and the scheduler is responsible for ensuring the quality of service (QoS) and updating the traffic rate. The main functions include QoS management, traffic control, scheduling algorithm and queue management. The computing core includes a congestion control algorithm defined by parameters and objects, queue statistics, a computing core and a general logic for receiving events and sending results.

[0067] The receiving module in the congestion control simulation system provided in the embodiment of the present application is used to receive the service data packets sent by the sending module, and to generate a congestion notification signal after detecting network congestion, and send the congestion notification signal to the sending module. The sending module is used to generate congestion control event information according to the congestion notification signal, and write the congestion control event information into the congestion control event queue, and perform congestion control response to the congestion control event information in the congestion control event queue based on the programmable congestion control algorithm in the code warehouse to adjust the sending rate of the sending module. The embodiment of the present application does not require users to develop customized models by themselves, and can be applied to a variety of different business scenarios, supports user-defined congestion control algorithms, and users can flexibly arrange and design algorithms according to different application scenarios to achieve low cost, programmability, and customization to meet different business needs.

[0068] In one embodiment, the sending module includes:

[0069] A flow database, used to store flow information of each service data flow of the sending module; the flow information includes a historical sending rate of the service data flow by the sending module;

[0070] The sending module is used to determine the adjusted sending rate according to the congestion control algorithm and the flow information, and to update the flow information in the flow database.

[0071] There can be multiple service data flows between the sending module and the receiving module, and the sending rate of the sending module for each service data flow can be adjusted. It should be understood that the switch is responsible for forwarding data packets between the sending module and the receiving module, and the queue length of the switch is related to the sending rate of the sending module. The queue length of the switch refers to the number of data packets stored in the buffer set by the switch to prevent network congestion when processing data packets. If the sending rate is too fast, the queue length of the switch will exceed the threshold, thereby causing network congestion. In order to keep the queue length of the switch within a reasonable range, it is necessary to control the sending rate of the sending module.

[0072] The flow database stores the historical sending rate of the sending module for each service data flow. The sending module determines the adjusted sending rate based on the historical sending rate, that is, increases / decreases the sending rate based on the historical sending rate. After the sending module adjusts the sending rate, the sending module updates the flow information in the flow database, that is, writes the adjusted sending rate into the flow database.

[0073] like Figure 2 As shown, in one embodiment, the simulation system further includes:

[0074] The performance analysis module is used to evaluate the performance of the congestion control algorithm according to the current sending rate of the sending module and the flow information in the flow database.

[0075] Among them, the performance analysis module is used to evaluate the performance of the congestion control algorithm and evaluate the performance of the congestion control algorithm in the network. For example, the performance of the congestion control algorithm can be evaluated based on the current sending rate and the historical sending rate. The evaluation indicators include throughput, delay, and packet loss rate. By comparing the performance indicators of different congestion control algorithms under different network conditions, the advantages and disadvantages of various algorithms can be evaluated, and the algorithm that best suits the current network environment can be selected. The performance of various algorithms in terms of throughput, delay, and packet loss rate can be compared to evaluate their impact on network performance.

[0076] In one embodiment, the simulation system further includes:

[0077] A congestion sensing module, configured to receive the data packets sent by the sending module and forward them to the receiving module, and to add a congestion indicator to the received data packets after the congestion sensing module senses network congestion;

[0078] The receiving module is used to detect whether network congestion occurs according to the congestion identifier in the received data packet.

[0079] Among them, the simulation object of the congestion perception module is the switch, which is responsible for forwarding data packets between the sending module and the receiving module. When the current queue length of the switch is greater than the set queue length, the switch adds a congestion mark (such as an ECN mark) to the received data packet. When the receiving module detects that the received data packet carries a congestion mark, it detects that network congestion has occurred.

[0080] In one embodiment, the sending module is used to determine the current queue length of the service data packets in the congestion sensing module according to the congestion identifier, and determine the adjusted sending rate according to the set queue length and the current queue length.

[0081] After receiving a data packet with a congestion identifier, the receiving module sends a congestion notification signal to the sending module. The sending module generates congestion control event information according to the congestion notification signal. The congestion control event information includes information such as the congestion identifier.

[0082] The receiving module can send a congestion notification signal each time it receives a data packet with a congestion identifier, so that the sending module generates a congestion control event information. The number of congestion control event information indicates the number of data packets carrying the congestion identifier. The receiving module can calculate the probability of data packets carrying the congestion identifier in the switch queue based on the number of data packets carrying the congestion identifier, thereby deriving the current queue length of the switch.

[0083] If the sending rate is too fast, the queue length of the switch will exceed the threshold, causing network congestion. In order to keep the queue length of the switch within a reasonable range, it is necessary to control the sending rate of the sending module. The adjustment amount of the sending rate can be calculated based on the current queue length and the set queue length. Among them, the set queue length is the reasonable length of the switch queue.

[0084] In one embodiment, a congestion control algorithm is provided, which reconstructs the ECN signal based on a first-order low-pass filter and adjusts the speed through a proportional, integral and differential (PID) controller, such as Figure 3As shown, the congestion control algorithm model includes: an ECN reconstructor (such as a Kalman filter) and a PID controller. The ECN reconstructor is used to count the values ​​of the ECN mark in the ECN information. The ECN mark value is 1, indicating network congestion; the ECN mark value is 0, indicating that the network is unobstructed. By counting the number of ECN information with an ECN mark value of 1 and determining the proportion of ECN information with an ECN mark value of 1 in the queue, the current queue length of the switch can be determined.

[0085] The ECN reconstructor is implemented through a first-order low-pass filter, which expands the 1-bit ECN information to 32 bits. The iterative formula is as follows:

[0086] y(n)=(alpha*x(n)+(128-alpha)*y(n-1)) / 128 (1)

[0087] Among them, x(n) is the input ECN information, y(n) is the current queue length of the switch, the configuration range of alpha is 0 to 128, and y(n-1) is the output result of the previous filter.

[0088] When the status of the filter is 0, it indicates the initial state and the group has not been used. When the status is 1, it means that the group is enabled and has not received any congestion status. After receiving the first congestion status, the filter result is directly assigned. When the status is 2, the group is enabled and has received a congestion status. If a congestion status is received again, a new filter result needs to be calculated together with the previous filter result.

[0089] The reconstructed ECN information is fed back to the PID controller to obtain the sending rate that needs to be adjusted by the sender. The basic structure of the PID controller is as follows: Figure 4 As shown in the figure, the input of the PID controller is the actual switch queue length and the expected switch queue length. The PID controller is mainly composed of a proportional link, a differential link, and an integral link. The proportional link coefficient K1 determines the feedback bandwidth, and the integral link coefficient K2 determines the convergence time of the static error. The time domain expression of the PID controller is as follows:

[0090] u=K1·e(t)+K2·∫e(t)dt (2)

[0091] The sending rate is determined through the proportional link, the differential link and the integral link, the network load is adjusted according to the sending rate, and the actual switch queue length is determined again.

[0092] This embodiment uses a first-order low-pass filter to expand the original 1-bit ECN information to 32-bit, thereby improving the detection accuracy. At the same time, the alpha coefficient of the filter enables the detection device to adapt to different noise characteristics, which is particularly suitable for the complex traffic characteristics of cloud data centers. Due to the improvement in detection accuracy, the system design has gotten rid of the original time-triggered mechanism of Additive Increase Multiplicative Decrease (AIMD), and PID control can be used, which greatly reduces the difficulty of adjusting system parameters and has better system robustness and stability. Compared with in-band telemetry solutions that can achieve the same detection accuracy, the congestion control process of this embodiment generates less network bandwidth overhead, which is significant for cloud service providers in that it reduces the overall network construction cost.

[0093] like Figure 5 As shown, an embodiment of the present application provides a framework diagram of a programmable congestion control simulation system PCC-Simulator, including a receiving end, a sending end, a congestion control event queue, a code repository, a Flows database, and a performance analysis tool.

[0094] After the receiver detects the network congestion signal, it will generate a congestion control event notification. This event notification will be sent to the sender through feedback. After receiving this event notification, the sender will insert it into the congestion control event queue. After receiving the congestion control signal, the sender generates the corresponding report content according to the situation after the traffic is sent, including the congestion situation, the scope of impact, the cause analysis and other information, and sends the event to the specified congestion control event queue. The congestion control event queue sends key events related to network congestion, such as congestion window change events and congestion signal events, to the code repository, thereby triggering the corresponding congestion control algorithm in the code repository. When the congestion control algorithm receives the event and its corresponding context information (current RTT, number of packets, etc.), it will make appropriate congestion control responses, such as increasing / decreasing the sending rate. The congestion control algorithm processes the corresponding time and updates the current flow database and the current rate of the flow. The sender schedules the traffic according to the current rate to cope with network congestion, and feeds back the current rate information and flow information to the performance analysis tool for performance evaluation.

[0095] Among them, the use of command line interface in the simulation operation phase solves the performance problem that the graphical interface of OMNeT++ may have when processing large-scale network simulation. In the simulation result analysis phase, in addition to using performance evaluation scripts, a graphical user interface can also be used to make up for the limited statistical analysis function in the NS-3 system and provide visualization.

[0096] This embodiment divides the system into two modules: congestion control simulation and performance evaluation. While achieving the best simulation efficiency, it also takes into account the visual performance analysis interface and enriches the performance analysis scripts, including flow completion time, bandwidth, latency, queue depth, etc.

[0097] Among them, the context mapping options supported by this embodiment are:

[0098] Source QP (Source Query Port) and Source VF (Source Virtual Function): can identify the message flow from the same source virtual function.

[0099] Destination IP and source VF: You can analyze the traffic characteristics of the source virtual function connected to a target host, etc.

[0100] Destination IP, SPORT (source port) and source VF.

[0101] Destination IP, source IP, SPORT, DPORT (destination port), Transport.

[0102] In one embodiment, the PCC-Simulator simulation system involved in the embodiment of the present application has an object to be simulated such as Figure 6 As shown. The simulation of the network module in this embodiment includes the Host, the NetSwitch switch and the NetQueue network queue. NetSwitch is similar to a simple forwarding bridge, which forwards data packets from one port to another to achieve communication between different devices. NetQueue is used to indicate congestion points and notification points, which helps to monitor and manage congestion in the network.

[0103] The simulation of the Host in this embodiment includes four parts. The traffic generator is used to generate service traffic sent to the sender, and the Scheduler is responsible for ensuring the quality of service (QoS) and updating the traffic rate. The main functions include QoS management, traffic control, scheduling algorithms, and queue management. The parameterized computing core includes algorithms defined by parameters and objects, queuepair statistics, computing cores, and general logic for receiving events and sending results.

[0104] This implementation integrates the traffic generator, scheduler, congestion control queue events and parameterized computing core into the Host module, which is transparent to the upper layer. That is, developers only need to design the algorithm and the corresponding parameters and select the traffic scenario to be simulated, without the need to manually design and configure the traffic scenario before simulation like other simulation systems.

[0105] It can meet the needs of both offline simulation and real-time simulation, and provide coarse-grained and fine-grained simulation modes for different levels of computing devices.

[0106] Figure 7 This is a simulation flow chart of a simulation system provided by an embodiment of the present application. First, the simulation system needs to declare or use an existing topology model and a traffic model. Describe the algorithm parameters in the algorithm parameter file, describe the context information in the algorithm xml file, write the algorithm in the algorithm .c file, and compile the PCCSim library function to generate the debug.so file of the algorithm. Then, modify the PCCSim.ini file to include the new congestion control algorithm, and modify the PCCSim.ned file to configure the connection relationship between the topology and the model. Finally, generate the PCC Simulation simulation file. Then, PCC Simulation runs in the sim directory and generates .sca and .vec file parsing results (results) in the sim / results directory. Finally, the parsing result file is analyzed by the performance analysis tool.

[0107] The code files involved in this embodiment mainly include .ini files, .c / .h files, .ned files, etc. Since these files have a wide range of applications and support, they can be easily run and transplanted on different operating systems and computer architectures. If accuracy and meticulousness are required, a vec file can be set and generated through the ini file; if not, or only an average value is required, only an sca file can be generated.

[0108] The embodiment of the present application also provides two additional macros ADD_ALGO_DELAY(delay_ns) and PCC_PRINT(...). ADD_ALGO_DELAY is used to add additional delay to the CC algorithm code so that the accurate delay (or approximate delay) can be incorporated into the simulation model. At the same time, the parameter simulator applies the collected total delay to the algorithm execution path. PCC_PRINT prints debugging information if the algorithm runs in debug mode. In the release version of the code, the MACRO is converted to NOP and can be easily enabled from the simulator's ini file.

[0109] The present application embodiment provides a rich set of predefined traffic model configurations, as shown in Table 1 below:

[0110]

[0111] Table 1

[0112] In addition to the predefined traffic configuration types, users can also combine the types in Table 1 according to their needs to form more complex and realistic traffic scenarios.

[0113] The embodiment of the present application provides a rich set of predefined traffic model configurations, and supports users to combine the types in Table 1 according to their needs to form more complex and realistic traffic scenarios. It supports applications for offline simulation, real-time or interactive simulation. If accuracy and detail are required, a vec file can be set and generated through an ini file.

[0114] refer to Figure 8 , Figure 8 1 is a schematic diagram of an implementation flow of a congestion control method provided by an embodiment of the present invention, which is applied to a congestion control simulation system, and specifically to a sending module in the congestion control simulation system. The congestion control method includes:

[0115] S801, receiving a congestion notification signal sent by the receiving module after detecting network congestion.

[0116] After the receiving module detects network congestion, it generates a congestion notification signal and feeds the congestion notification signal back to the sending module.

[0117] S802: Generate congestion control event information according to the congestion notification signal, and write the congestion control event information into a congestion control event queue.

[0118] After receiving the congestion notification signal, the sending module generates corresponding congestion control event information according to the situation after the traffic is sent, including the congestion situation, impact range, cause analysis and other information, and writes the event into the specified congestion control event queue.

[0119] S803: Perform congestion control on the congestion control event information in the congestion control event queue based on a programmable congestion control algorithm in the code repository of the sending module to adjust the sending rate of the sending module.

[0120] Users can customize the congestion control algorithm, and the sending module responds to the congestion control event according to the selected congestion control algorithm. The congestion control algorithm receives the event and its corresponding context information (current RTT, number of packets, etc.), and performs appropriate congestion control responses, such as increasing / decreasing the sending rate. The sending module schedules the traffic according to the adjusted sending rate to deal with network congestion.

[0121] In one embodiment, the programmable congestion control algorithm in the code repository based on the sending module performs congestion control on the congestion control event information in the congestion control event queue, including:

[0122] Determine the current queue length of the service data packet in the congestion sensing module according to the congestion identifier;

[0123] The adjusted sending rate of the sending module is determined according to the set queue length and the current queue length.

[0124] Among them, the simulation object of the congestion perception module is the switch, which is responsible for forwarding data packets between the sending module and the receiving module. When the current queue length of the switch is greater than the set queue length, the switch adds a congestion mark (such as an ECN mark) to the received data packet. When the receiving module detects that the received data packet carries a congestion mark, it detects that network congestion has occurred.

[0125] After receiving a data packet with a congestion identifier, the receiving module sends a congestion notification signal to the sending module. The sending module generates congestion control event information according to the congestion notification signal. The congestion control event information includes information such as the congestion identifier.

[0126] The receiving module can send a congestion notification signal each time it receives a data packet with a congestion identifier, so that the sending module generates a congestion control event information. The number of congestion control event information indicates the number of data packets carrying the congestion identifier. The receiving module can calculate the probability of data packets carrying the congestion identifier in the switch queue based on the number of data packets carrying the congestion identifier, thereby deriving the current queue length of the switch.

[0127] If the sending rate is too fast, the queue length of the switch will exceed the threshold, causing network congestion. In order to keep the queue length of the switch within a reasonable range, it is necessary to control the sending rate of the sending module. The adjustment amount of the sending rate can be calculated based on the current queue length and the set queue length. Among them, the set queue length is the reasonable length of the switch queue.

[0128] The set queue length and the current queue length may be input into the PID controller to obtain the sending rate output by the PID controller.

[0129] It should be understood that the order of execution of the steps in the above embodiment does not necessarily mean the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiment of the present invention.

[0130] It should be understood that when used in this specification and the appended claims, the terms "include" and "comprises" indicate the presence of described features, integers, steps, operations, elements and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or combinations thereof.

[0131] It should be noted that the technical solutions described in the embodiments of the present invention can be arbitrarily combined without conflict.

[0132] In addition, in the embodiments of the present invention, "first", "second", etc. are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence.

[0133] In actual application, the sending module and the receiving module can be implemented by a processor in an electronic device, such as a central processing unit (CPU), a digital signal processor (DSP), a microcontroller unit (MCU) or a programmable gate array (FPGA).

[0134] Based on the hardware implementation of the above-mentioned simulation system, and in order to implement the method of the embodiment of the present application, the embodiment of the present application also provides an electronic device. Fig. 9 A schematic diagram of the hardware structure of an electronic device provided in an embodiment of the present application is shown in FIG. Fig. 9 As shown, the electronic device includes:

[0135] Communication interface 901, capable of exchanging information with other devices such as network devices;

[0136] The processor 902 is connected to the communication interface 901 to implement information exchange with other devices and is used to execute the method provided by one or more technical solutions when running a computer program. The computer program is stored in the memory 903.

[0137] Of course, in actual application, the various components in the electronic device are coupled together through the bus system 904. It can be understood that the bus system 904 is used to realize the connection and communication between these components. In addition to the data bus, the bus system also includes a power bus, a control bus, and a status signal bus. However, for the sake of clarity, Fig. 9 Various buses are labeled as bus system 904.

[0138] The memory 903 in the embodiment of the present application is used to store various types of data to support the operation of the computer device. Examples of such data include: any computer program used to operate on the electronic device.

[0139] It can be understood that the memory 903 can be a volatile memory or a non-volatile memory, and can also include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a magnetic random access memory (FRAM), a flash memory, a magnetic surface memory, an optical disk, or a compact disc read-only memory (CD-ROM); the magnetic surface memory can be a disk memory or a tape memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example but not limitation, many forms of RAM are available, such as static random access memory (SRAM), synchronous static random access memory (SSRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), direct memory bus random access memory (DRRAM). The memory described in the embodiments of the present application is intended to include but is not limited to these and any other suitable types of memory.

[0140] The method disclosed in the above embodiment of the present application can be applied to a processor or implemented by a processor. The processor may be an integrated circuit chip with signal processing capabilities. In the implementation process, each step of the above method can be completed by an integrated logic circuit of hardware in the processor or an instruction in the form of software. The above processor may be a general-purpose processor, a DSP, or other programmable logic devices, discrete gates or transistor logic devices, discrete hardware components, etc. The processor can implement or execute the various methods, steps and logic block diagrams disclosed in the embodiments of the present application. The general-purpose processor may be a microprocessor or any conventional processor, etc. In combination with the steps of the method disclosed in the embodiment of the present application, it can be directly embodied as a hardware decoding processor to execute, or it can be executed by a combination of hardware and software modules in the decoding processor. The software module can be located in a storage medium, which is located in a memory, and the processor reads the program in the memory and completes the steps of the above method in combination with its hardware.

[0141] Optionally, when the processor 902 executes the program, it implements the corresponding processes implemented by the electronic device in each method of the embodiments of the present application, which will not be described in detail here for the sake of brevity.

[0142] In an exemplary embodiment, the present application also provides a storage medium, namely a computer storage medium, specifically a computer-readable storage medium, for example, including a first memory storing a computer program, and the computer program can be executed by a processor of a computer device to complete the steps of the aforementioned method. The computer-readable storage medium can be a memory such as FRAM, ROM, PROM, EPROM, EEPROM, Flash Memory, magnetic surface storage, optical disk, or CD-ROM.

[0143] In the several embodiments provided in the present application, it should be understood that the disclosed devices, computer equipment and methods can be implemented in other ways. 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 can be integrated into another system, or some features can be ignored or not executed. In addition, the coupling, direct coupling, or communication connection between the components shown or discussed can be through some interfaces, and the indirect coupling or communication connection of the devices or units can be electrical, mechanical or other forms.

[0144] The units described above as separate components may or may not be physically separated, and the components displayed 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 present embodiment.

[0145] In addition, all functional units in the embodiments of the present application may be integrated into one processing unit, or each unit may be a separate unit, or two or more units may be integrated into one unit; the above-mentioned integrated units may be implemented in the form of hardware or in the form of hardware plus software functional units.

[0146] A person of ordinary skill in the art can understand that: all or part of the steps of implementing the above-mentioned method embodiment can be completed by hardware related to program instructions, and the aforementioned program can be stored in a computer-readable storage medium, which, when executed, executes the steps of the above-mentioned method embodiment; and the aforementioned storage medium includes: various media that can store program codes, such as mobile storage devices, ROM, RAM, disks or optical disks.

[0147] Alternatively, if the above-mentioned integrated unit of the present application is implemented in the form of a software function module and sold or used as an independent product, it can also be stored in a computer-readable storage medium. Based on such an understanding, the technical solution of the embodiment of the present application can be essentially or partly embodied in the form of a software product that contributes to the relevant technology. The computer software product is stored in a storage medium, including several instructions to enable a computer device (which can be a personal computer, electronic device, or network device, etc.) to execute all or part 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 mobile storage devices, ROM, RAM, magnetic disks or optical disks.

[0148] In an exemplary embodiment, the embodiment of the present application further provides a computer program product, including a computer program, which can be executed by the processor 902 of the electronic device to complete the steps described in the congestion control method in the embodiment of the present application.

[0149] It should be noted that: "first", "second", etc. are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence.

[0150] In addition, the technical solutions described in the embodiments of the present application can be combined arbitrarily without conflict.

[0151] The above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any technician familiar with the 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 congestion control simulation system, characterized in that: The simulation system comprises: A receiving module, configured to receive a service data packet sent by the sending module, and to generate a congestion notification signal after detecting network congestion, and to send the congestion notification signal to the sending module; A sending module is used to generate congestion control event information according to the congestion notification signal, and write the congestion control event information into a congestion control event queue, and perform congestion control response to the congestion control event information in the congestion control event queue based on a programmable congestion control algorithm in the code repository of the sending module to adjust the sending rate of the sending module.

2. The simulation system according to claim 1, characterized in that: The sending module comprises: A flow database, used to store flow information of each service data flow of the sending module; the flow information includes a historical sending rate of the service data flow by the sending module; The sending module is used to determine the adjusted sending rate according to the congestion control algorithm and the flow information, and to update the flow information in the flow database.

3. The simulation system according to claim 2, characterized in that: The simulation system also includes: The performance analysis module is used to evaluate the performance of the congestion control algorithm according to the current sending rate of the sending module and the flow information in the flow database.

4. The simulation system according to claim 1, characterized in that: The simulation system also includes: A congestion sensing module, configured to receive the data packets sent by the sending module and forward them to the receiving module, and to add a congestion indicator to the received data packets after the congestion sensing module senses network congestion; The receiving module is used to detect whether network congestion occurs according to the congestion identifier in the received data packet.

5. The simulation system according to claim 4, characterized in that: The sending module is used to determine the current queue length of the service data packets in the congestion sensing module according to the congestion identifier, and determine the adjusted sending rate according to the set queue length and the current queue length.

6. A congestion control method, applied to the congestion control simulation system according to any one of claims 1 to 5, characterized in that: The method comprises: receiving a congestion notification signal sent by the receiving module after detecting network congestion; generating congestion control event information according to the congestion notification signal, and writing the congestion control event information into a congestion control event queue; Congestion control is performed on the congestion control event information in the congestion control event queue based on a programmable congestion control algorithm in the code repository of the sending module, so as to adjust the sending rate of the sending module.

7. The method according to claim 6, characterized in that The programmable congestion control algorithm in the code repository based on the sending module performs congestion control on the congestion control event information in the congestion control event queue, including: Determine the current queue length of the service data packet in the congestion sensing module according to the congestion identifier; The adjusted sending rate of the sending module is determined according to the set queue length and the current queue length.

8. A computer program product, comprising a computer program, characterized in that When the computer program is executed by a processor, the steps of the congestion control method according to any one of claims 6 to 7 are implemented.

9. An electronic device comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, characterized in that: When the processor executes the computer program, the steps of the congestion control method according to any one of claims 6 to 7 are implemented.

10. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores a computer program, wherein the computer program includes program instructions, and when the program instructions are executed by a processor, the processor is caused to perform the steps of the congestion control method according to any one of claims 6 to 7.

Citation Information

Cited By

  • Method and device for accurately relieving host congestion based on DPU

    CN122372504A

  • A method and device for accurately alleviating host congestion based on DPU

    CN122372504B