A ndn congestion control method suitable for changing network topology

By maintaining the variable Y in the NDN network, calculating the congestion level, and adjusting the congestion window and interest packet sending rate, the problem of insufficient bandwidth utilization in existing methods is solved, achieving higher throughput and lower latency.

CN119854215BActive Publication Date: 2025-10-17HARBIN INST OF TECH
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202510069478.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2025-01-16
Publication Date
2025-10-17
Estimated Expiration
2045-01-16

AI Technical Summary

Technical Problem

Existing NDN congestion control methods cannot fully utilize bandwidth resources in scenarios where network conditions change frequently, resulting in low throughput and high latency.

Method used

By maintaining the variable Y to check whether there is a vacancy in the congestion window, the forwarder calculates the congestion level value based on the packet queue occupancy rate and feeds it back to the consumer. The consumer adjusts the congestion window size or the interest packet sending rate based on the congestion level value and utilizes the multipath characteristics to distribute traffic.

Benefits of technology

In scenarios with changing network environments, throughput was increased by 15% and the average latency of data requests was reduced by 11%, achieving lower transmission latency and more efficient bandwidth utilization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119854215B_ABST
    Figure CN119854215B_ABST
Patent Text Reader

Abstract

The application relates to a NDN congestion control method suitable for a changing network topology and relates to the technical field of network communication transmission. The application is aimed at solving the problem that the existing congestion control method cannot fully utilize bandwidth resources, resulting in low throughput and high time delay in the scene where network conditions frequently change. The application comprises the following steps: a consumer sends an interest packet to a forwarder at a set rate within a set congestion window; the forwarder forwards the interest packet to a producer after receiving the interest packet, and the producer generates a data packet and sends the data packet to the forwarder; each forwarder forwards the data packet according to the order in which the data packet reaches the forwarder, updates the congestion value in the data packet, and then sends the data packet containing the queue congestion degree value to the consumer; and the consumer adjusts the congestion window size or the interest packet sending rate according to the congestion degree value in the data packet. The application is used for NDN congestion control.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application relates to the technical field of network communication transmission, in particular to an NDN congestion control method suitable for changing network topology. BACKGROUND

[0002] Named Data Networking (NDN) is a data-centric network protocol. In NDN, the semantics of the network becomes "requesting named data in the network", and data requesters (consumers) and data owners (producers) communicate through requests (interest packets) and responses (data packets). The mechanism of NDN brings flow balance in terms of packet number, i.e. at most one data packet is returned on the reverse path for one interest packet. In NDN, congestion is more likely to occur in the direction of transmitting data packets. From the flow balance in terms of packet number, it can be known that the number of interest packets sent by a forwarder is the same as the number of data packets sent in the opposite direction, and the data packets have a larger size, so the rate of the data packet flow is generally tens to hundreds of times the rate of the interest packet flow. When the speed at which the forwarder receives data packets continuously exceeds the maximum bandwidth limit of the outgoing link, congestion occurs, data packets are queued at the forwarder, a growing queuing delay is generated, and finally packet loss occurs after the queue overflows. Therefore, the current research on data congestion control is the focus of the field.

[0003] The existing NDN congestion control method adopts the ICP method, the ICP method adopts a congestion window to control the sending rate of interest packets, judges congestion through interest packet timeout, and reduces the congestion window to half after the interest packet timeout occurs, and performs linear growth (AIMD) of the congestion window in other cases. In the NDN cache, mobility and other scenarios, the network status changes frequently, and the ICP only judges congestion through timeout. Therefore, the ICP reduces the rate only when the timeout occurs, and the queue of the forwarder on the path has exceeded the maximum limit at the time of the timeout. The ICP keeps the queue at the bottleneck on the path near full occupancy, resulting in a long round-trip time RTT of the ICP method. Therefore, the existing method has a weak perception of network changes, and the round-trip time RTT in the NDN cache, mobility and other scenarios causes insufficient utilization of bandwidth, thereby resulting in low throughput and high latency of the existing method in scenarios where the network status changes frequently. SUMMARY

[0004] The present application aims to solve the problem that the existing congestion control method cannot fully utilize bandwidth resources, resulting in low throughput and high latency in scenarios where the network status changes frequently, and proposes an NDN congestion control method suitable for changing network topology.

[0005] An NDN congestion control method suitable for changing network topology, in particular,

[0006] Step one, check if there is vacancy in the congestion window at time t by using maintenance variable Y, if there is vacancy, execute step two, if there is no vacancy, execute step three;

[0007] Step two,

[0008] The consumer sends interest packets to the forwarder at a set rate within the set congestion window, the forwarder forwards the interest packets to the producer after receiving the interest packets, the producer generates data packets and sends them to the forwarder, and updates the maintenance variable Y=Y+1;

[0009] At the same time of checking if there is vacancy in the congestion window, each forwarder forwards the data packets in the order of the data packets reaching the forwarder, and updates the congestion value in the data packets, until the Nth forwarder receives the data packets with the congestion value and updates the congestion value, and then sends the data packets containing the queue congestion degree value to the consumer;

[0010] Wherein, N is the total number of forwarders;

[0011] The consumer obtains the data packets containing the queue congestion degree value, adjusts the congestion window size or the interest packet sending rate according to the congestion degree value in the data packets, and updates the maintenance variable Y=Y-1;

[0012] When t+1 time arrives, let t=t+1, and return to execute step one;

[0013] The update of the maintenance variable Y is based on the Y updated last time;

[0014] Step three, each forwarder forwards the data packets in the order of the data packets reaching the forwarder, and updates the congestion value in the data packets, until the Nth forwarder receives the data packets with the congestion value and updates the congestion value, and then sends the data packets containing the queue congestion degree value to the consumer;

[0015] The consumer obtains the data packets containing the queue congestion degree value, adjusts the congestion window size or the interest packet sending rate according to the congestion degree value in the data packets, and updates the maintenance variable Y=Y-1;

[0016] When t+1 time arrives, let t=t+1, and return to execute step one.

[0017] Further, the step one is to check if there is vacancy in the congestion window at time t by using maintenance variable Y, which is to judge if Y is less than the set congestion window size, if Y is less than the set congestion window size, it means that there is vacancy in the congestion window, otherwise, it means that there is no vacancy in the congestion window.

[0018] Further, the step two, the forwarder receives the interest packet and forwards the interest packet to the producer, specifically: if the forwarder has one interface for forwarding the interest packet, the current interface is used to forward the data packet; if the forwarder has multiple interfaces for forwarding the interest packet, the ratio of the congestion degree value of each interface of the forwarder to the number of interest packets forwarded by the interface is used as the ratio of the number of interest packets forwarded by the interface.

[0019] The congestion degree value of each interface of the forwarder is obtained by the following method:

[0020]

[0021] occupancy j,i is the queue occupancy rate of the i-th interface of the j-th forwarder, low_factor is the preset minimum threshold of the queue occupancy rate, and high_factor is the preset maximum threshold of the queue occupancy rate.

[0022] Further, the queue occupancy rate occupancy j,i of the i-th interface of the j-th forwarder is obtained by the following method:

[0023]

[0024] queue_size j,i is the queue size of the i-th interface of the j-th forwarder, and queue_capacity j,i is the maximum capacity of the queue of the i-th interface of the j-th forwarder.

[0025] Further, each forwarder forwards the data packet in the order in which the data packet reaches the forwarder, and updates the congestion value in the data packet until the N-th forwarder receives the data packet with the congestion value and updates the congestion value, and then sends the data packet containing the queue congestion degree value to the consumer, specifically:

[0026] A1, initialize the forwarder interface index j = 1;

[0027] A2, obtain the queue congestion degree value of the j-th forwarder interface, then add the queue congestion degree value of the forwarder interface to the data packet, and send the data packet with the added queue congestion degree value to the j+1-th forwarder, and the j+1-th forwarder updates the congestion degree value in the data packet:

[0028] A2-1, the j-th forwarder receives the data packet, obtains the interface index i corresponding to the interest packet entering the forwarder, and then obtains the queue congestion degree value of the i-th interface of the j-th forwarder;

[0029] A2-2, add the queue congestion degree value of the jth forwarder interface to the data packet, and send the data packet with the added queue congestion degree value to the j+1th forwarder;

[0030] A2-3, after the j+1th forwarder receives the data packet containing the queue congestion degree value, update the queue congestion value in the data packet, specifically:

[0031] Firstly, the j+1th forwarder obtains the queue congestion degree value congestion_level j,i in the data packet containing the queue congestion degree value.

[0032] Then, obtain the port label i' of the j+1th forwarder through which the current data packet corresponding to the interest packet enters, and obtain the queue congestion degree value congestion_level j+1,i' of the queue corresponding to the i'th port of the j+1th forwarder.

[0033]

[0034]

[0035] occupancy j+1,i' is the queue occupancy rate of the i'th interface of the j+1th forwarder, queue_size j+1,i' is the queue size of the i'th interface of the j+1th forwarder, queue_capacity j+1,i' is the maximum capacity of the queue of the i'th interface of the j+1th forwarder, low_factor is the preset minimum threshold of the queue occupancy rate, and high_factor is the preset maximum threshold of the queue occupancy rate.

[0036] Finally, obtain the link congestion degree value cong_level j,i using the queue congestion degree value congestion_level j+1,i' of the i'th interface of the jth forwarder and the queue congestion degree value congestion_level of the i'th interface of the j+1th forwarder, and update the queue congestion degree value in the data packet as the queue congestion degree value.

[0037] A3, judge whether j+1 is equal to the total number of forwarders N, if j+1=N, then forward the data packet with the added queue congestion value to the consumer; otherwise, let j=j+1, and return to A2.

[0038] Further, the link congestion degree value cong_level is specifically:

[0039] cong_level = max(congestion_level j+1,i' , min(congestion_level j,i ))

[0040] wherein, cong_level is the link congestion level value.

[0041] Further, the consumer acquires the data packet containing the queue congestion level value, and adjusts the congestion window size according to the congestion level value in the data packet, while updating the maintenance variable Y = Y-1, specifically:

[0042] B1, the consumer acquires the queue congestion level value in the data packet containing the queue congestion level value;

[0043] B2, if the queue congestion level value is greater than 0, then step B3 is executed; otherwise, step B5 is executed;

[0044] B3, the time difference A between the current time and the last congestion window reduction time is acquired, if the time difference A is greater than an RTT time B, then step B4 is executed, otherwise, step B6 is executed;

[0045] wherein, RRT time represents the round-trip transmission delay;

[0046] B4, cwnd = cwnd / (cong_level+1) is set to update the congestion window size, the updated congestion window is taken as the set congestion window, and the current congestion window reduction time is recorded, and then B6 is executed;

[0047] wherein, cwnd is the congestion window size;

[0048] B5, cwnd = cwnd+1 / cwnd is set to update the congestion window size, the updated congestion window is taken as the set congestion window, and then B6 is executed;

[0049] B6, the interest packet corresponding to the current data packet is deleted from the congestion window, and then the maintenance variable Y = Y-1 is updated.

[0050] Further, the RTT time = the time when the consumer receives the data packet - the time when the consumer sends the corresponding interest packet.

[0051] Further, the consumer acquires the data packet containing the queue congestion level value, and adjusts the interest packet sending rate according to the congestion level value in the data packet, while updating the maintenance variable Y = Y-1, specifically:

[0052] C1, the consumer acquires the queue congestion level value in the data packet containing the queue congestion level value;

[0053] C2, if the queue congestion degree is equal to 0, C3 is executed, if the congestion degree is greater than a preset congestion threshold, C4 is executed, otherwise, C5 is executed;

[0054] The preset congestion threshold is a value between 0 and 1.

[0055] C3, clearing all values in the time window used for estimating RTProp of the BBR state machine, inserting the RTT time into the time window, the BBR state machine outputs an updated interest packet sending rate and an updated congestion window, the updated interest packet sending rate is set as the set interest packet sending rate, the updated congestion window is set as the set congestion window, and then C5 is executed;

[0056] The RTT time = the time when the consumer receives the data packet - the time when the consumer sends the corresponding interest packet;

[0057] C4, clearing all values in the time window used for estimating BtlBW of the BBR state machine, inserting the transmission rate deliveryRate into the time window, the BBR state machine outputs an updated interest packet sending rate and an updated congestion window, the updated interest packet sending rate is set as the set interest packet sending rate, the updated congestion window is set as the set congestion window, and then C5 is executed;

[0058] Wherein, BtlBW is a link bottleneck bandwidth.

[0059] C5, deleting the interest packet corresponding to the current data packet from the congestion window, and then updating the maintenance variable Y = Y - 1.

[0060] Further, the transmission rate deliveryRate = data packet size / (the time when the consumer receives the data packet - the time when the consumer receives the last data packet).

[0061] The application has the following beneficial effects:

[0062] The application depicts the congestion degree as a number between 0 and 1 according to the occupancy rate of the data packet queue, which enables the network node to more accurately understand the real congestion condition of the network and adjust the sending rate accordingly, avoiding the congestion and ensuring that the sending rate is not excessively reduced. The application feeds back the congestion degree value to the consumer through the data packet sending path, which reduces the overhead required for feedback. After receiving the data packet with the congestion degree value, the consumer reduces the congestion window size or adjusts the consumer sending rate according to the congestion degree value. The application only allows the congestion window to be reduced once within an RTT time, avoiding unnecessary reduction of the overall throughput. The application takes the minimum congestion degree value in the multiple upstream paths as the congestion degree value of the upstream, and the consumer adjusts the rate according to the value, which can fully utilize the bandwidth and reduce the delay. Therefore, the application can reduce the delay while improving the throughput. The application can make the data request in the network not congested, fully utilize the network bandwidth and multi-path characteristics, and achieve lower transmission delay. In a network topology with variable network environment, the application can enable the consumer to quickly adapt to network changes, make the consumer's sending behavior consistent with the new network condition, reduce the impact of data flow on the new bottleneck, and according to the experiment, the application can increase the average throughput by 15% and reduce the average delay of data request by 11%. BRIEF DESCRIPTION OF DRAWINGS

[0063] Figure 1 Flowchart for forwarder processing

[0064] Figure 2 Graph of congestion window reduction rate changing with congestion degree value

[0065] Figure 3 Flowchart for consumer processing

[0066] Figure 4 Graph of congestion degree changing with queue occupancy rate DETAILED DESCRIPTION

[0067] Embodiment one: the specific process of the NDN congestion control method suitable for variable network topology is as follows:

[0068] Step one: at time t, check whether there is a vacancy in the congestion window by using the maintenance variable Y. If there is a vacancy, execute step two; if there is no vacancy, execute step three.

[0069] The specific process of checking whether there is a vacancy in the congestion window is to determine whether Y is less than the set congestion window size. If Y is less than the set congestion window size, it indicates that there is a vacancy in the congestion window, otherwise, it indicates that there is no vacancy in the congestion window.

[0070] The maintenance variable Y is the number of interest packets sent by the consumer but not responded by data packets.

[0071] The update of the variable Y is updated again based on the Y after the last update; whether there is vacancy in the congestion window is checked at any time according to a preset frequency, and the checking of the vacancy in the congestion window and the execution of steps two and three are parallel processes and do not affect each other, and the checking of the vacancy in the congestion window does not stop the other processes being carried out;

[0072] Step two,

[0073] The consumer sends the interest packet to the forwarder at a set rate within a set congestion window, the forwarder forwards the interest packet to the producer after receiving the interest packet, the producer generates the data packet and sends it to the forwarder, and the variable Y is updated as Y=Y+1;

[0074] If there are multiple interfaces of the forwarder available for forwarding the interest packet, the ratio of the congestion degree value of each interface of the forwarder to the number of interest packets to be forwarded is taken as the ratio of the number of interest packets to be forwarded;

[0075] The congestion degree value of each interface of the forwarder is obtained by the following method:

[0076]

[0077]

[0078] occupancy j,i is the queue occupancy rate of the i th interface of the j th forwarder, queue_size j,i is the queue size of the i th interface of the j th forwarder, queue_capacity j,i is the maximum capacity of the queue of the i th interface of the j th forwarder, low_factor is a preset minimum threshold of the queue occupancy rate, and high_factor is a preset maximum threshold of the queue occupancy rate;

[0079] While checking whether there is vacancy in the congestion window, each forwarder forwards the data packet in the order in which the data packet reaches the forwarder, and updates the congestion value in the data packet until the N th forwarder receives the data packet with the congestion value and updates the congestion value, and then sends the data packet containing the queue congestion degree value to the consumer, specifically:

[0080] A1, initialize the index of the forwarder j=1;

[0081] A2, obtain the queue congestion degree value of the i th interface of the j th forwarder, then add the queue congestion degree value of the i th interface of the j th forwarder to the data packet, and send the data packet with the added queue congestion degree value to the j+1 th forwarder, and the j+1 th forwarder updates the congestion degree value in the data packet, specifically:

[0082] A2-1, the jth forwarder obtains the interface index i of the forwarder through which the current data packet corresponding to the interest packet enters the forwarder after receiving the data packet, and then obtains the queue congestion degree value of the jth forwarder interface i;

[0083] A2-2, the queue congestion degree value of the jth forwarder interface is added to the data packet, and the data packet with the added queue congestion degree value is sent to the j+1th forwarder;

[0084] A2-3, the j+1th forwarder updates the queue congestion value in the data packet after receiving the data packet containing the queue congestion degree value, specifically:

[0085] Firstly, the j+1th forwarder obtains the queue congestion degree value congestion_level j,i in the data packet containing the queue congestion degree value.

[0086] Then, the port index i' of the j+1th forwarder through which the current data packet corresponding to the interest packet enters the forwarder is obtained in the PIT, and the queue congestion degree value congestion_level j+1,i' of the queue corresponding to the j+1th forwarder port i' is obtained.

[0087]

[0088] occupancy j+1,i' is the queue occupancy rate of the j+1th forwarder i' interface, queue_size j+1,i' is the queue size of the j+1th forwarder i' interface, queue_capacity j+1,i' is the maximum capacity of the queue of the j+1th forwarder i' interface, low_factor is the preset minimum threshold of the queue occupancy rate, and high_factor is the preset maximum threshold of the queue occupancy rate.

[0089] Finally, the link congestion degree value cong_level is obtained by using the queue congestion degree value congestion_level j,i of the jth forwarder interface i and the queue congestion degree value congestion_level j+1,i' of the j+1th forwarder i' interface, and the link congestion degree value is used as the queue congestion degree value and the queue congestion degree value in the data packet is updated.

[0090] The link congestion degree value cong_level is obtained by the following method:

[0091] cong_level=max(congestion_level j+1,i'min(congestion_level j,i ))

[0092] wherein, cong_level is the link congestion degree value;

[0093] A3, if j+1=N, the data packet with the added queue congestion value is forwarded to the consumer; otherwise, j=j+1, and return to A2;

[0094] The consumer obtains the data packet containing the queue congestion degree value, adjusts the congestion window size or the interest packet sending rate according to the congestion degree value in the data packet, and updates the maintenance variable Y=Y-1.

[0095] When t+1 arrives, t=t+1, and return to step one.

[0096] Step three, each forwarder forwards the data packet according to the order in which the data packet reaches the forwarder, and updates the congestion value in the data packet until the Nth forwarder receives the data packet with the congestion value and updates the congestion value, and then sends the data packet containing the queue congestion degree value to the consumer;

[0097] The consumer obtains the data packet containing the queue congestion degree value, adjusts the congestion window size or the interest packet sending rate according to the congestion degree value in the data packet, and updates the maintenance variable Y=Y-1.

[0098] When t+1 arrives, t=t+1, and return to step one.

[0099] In this step, when congestion occurs, the queue overflows, and the occupancy rate of the queue can reflect the congestion degree of the link to a certain extent. The forwarder adopts the tail queue, if the speed of receiving the message is continuously greater than the carrying capacity of the sending link, the message will be queued in the queue at the bottleneck, and finally the queue is full, resulting in the loss of subsequent messages. The queue occupancy rate reflects the queuing situation of the data packet, and can reflect the congestion degree of the link. In order to more accurately describe the congestion of the network, the congestion degree of the forwarder is described by a numerical value. The existing congestion control method divides the congestion into two values, which can only indicate whether the congestion occurs or not, and cannot accurately reflect the actual situation of the network. According to the queue occupancy rate of the data packet, the congestion degree is described as a number between 0 and 1 in the present application, which can make the network node more accurately understand the real congestion situation of the network, and adjust the sending rate accordingly, avoid the occurrence of congestion, and also ensure that the sending rate will not be excessively reduced. The change of the congestion degree with the queue occupancy rate is shown in Figure 4 Figure 1 ​As shown, in order to make the congestion degree value calculation method tolerate certain traffic burst, a lower limit threshold of queue occupancy rate is set, and the queue occupancy condition below the threshold is not responded. When the queue occupancy rate is below the threshold low_factor, the congestion degree value is 0. In order to speed up the congestion response speed and adjust the rate to avoid congestion before congestion occurs, an upper limit threshold of queue occupancy rate is set. When the queue occupancy rate is higher than the threshold high_factor, the congestion degree value is 1. A forwarder often has multiple network interfaces, and for each forwarding interface, the forwarder will maintain the maximum carrying capacity and the current queue size of the outgoing queue, and calculate the congestion degree value. The forwarder of the present application maintains its own congestion state, realizes the respective congestion degree value calculation of multiple outgoing interfaces, and avoids the mutual influence between outgoing links.

[0100] In NDN, data packets are always transmitted to consumers along the reverse path of the interest packet, providing a natural feedback path. After calculating the congestion degree value, the forwarder will attach it to the data packet and feedback to the consumer direction, which can reduce the overhead required for feedback. In the case of only one NDN data transmission link, the queue of the bottleneck node on the path is always the highest occupancy rate among all nodes on the path. Therefore, the message will accumulate at the bottleneck, and the congestion degree value at the bottleneck will be the largest. The congestion degree value at the bottleneck is fed back to the consumer as the congestion degree value of the link. If there are multiple upstream paths that can forward the interest packet, the forwarder can decide how to forward according to certain strategies. By using multiple upstream paths, the dispersion of traffic can be achieved to avoid excessive pressure on a certain link, and at the same time, greater throughput can be achieved. In order to better utilize the multi-path feature of NDN, the present application designs a multi-path interest packet flow distribution mechanism. The forwarder will receive congestion degree value feedback from multiple upstream links, and dynamically adjust the proportion of forwarding interest packets to each upstream link according to the proportion of congestion degree value. When receiving an interest packet, the forwarding proportion of each upstream link is determined to decide which link to forward the interest packet. In order to enable the consumer to fully utilize the multi-path bandwidth, the forwarder will take the minimum congestion degree value in the multiple upstream paths as the congestion degree value of the upstream. When there are multiple upstream links available, if the congestion degree value of a certain link is smaller, it means that the link can carry more traffic, i.e. the upstream of the forwarder can carry more traffic. Therefore, the minimum congestion degree value in the multiple available upstream links represents the congestion degree of the entire upstream, and the consumer can fully utilize the bandwidth by adjusting the rate according to the value. After obtaining the congestion degree value of the upstream link, the forwarder compares it with the congestion degree value of the outgoing link, and puts the larger congestion degree value into the data packet. The minimum congestion degree of the available upstream link can represent the overall congestion degree of the upstream, and each forwarder takes the maximum value of the upstream congestion degree and the outgoing link congestion degree, which can enable the consumer to always obtain the congestion degree of the bottleneck link on the entire path.

[0101] In this step, the congestion window size or the interest packet sending rate is adjusted according to the demand by experience. If a lower delay is desired, the step of adjusting the interest packet sending rate is performed. If a greater throughput is desired, the step of adjusting the congestion window size is performed.

[0102] Specific implementation two: the consumer obtains a data packet containing a queue congestion level value, and adjusts the congestion window size according to the congestion level value in the data packet, while updating the maintenance variable Y=Y-1, specifically as follows:

[0103] B1, the consumer obtains the queue congestion level value in the data packet containing the queue congestion level value;

[0104] B2, if the queue congestion level value is greater than 0, B3 is performed; otherwise, B5 is performed;

[0105] B3, the time difference A between the current time and the last congestion window reduction time is obtained. If the time difference A is greater than an RTT time B, B4 is performed; otherwise, B6 is performed.

[0106] RTT time = the time when the consumer receives the data packet - the time when the consumer sends the corresponding interest packet;

[0107] Wherein, RRT time represents the round-trip transmission delay;

[0108] B4, cwnd=cwnd / (cong_level+1) is set to update the congestion window size, and the current congestion window reduction time is recorded. The updated congestion window is set as the set congestion window, and then B6 is performed.

[0109] Wherein, cwnd is the congestion window size;

[0110] B5, cwnd=cwnd+1 / cwnd is set to update the congestion window size. The updated congestion window is set as the set congestion window, and then B6 is performed.

[0111] B6, the interest packet corresponding to the current data packet is deleted from the congestion window, and then the maintenance variable Y=Y-1 is updated.

[0112] The maintenance variable Y is the number of interest packets sent by the consumer but not received in response to the data packet.

[0113] In this step, a dynamic congestion window is maintained, and the number of interest packets sent by the consumer but not satisfied cannot exceed the maximum limit of the congestion window at any time. By adjusting the size of the congestion window, the number of interest packets sent by the consumer to the network can be adjusted, and the sending rate of the consumer can be controlled. After the consumer receives the data packet with the congestion degree value, the window will be reduced according to the congestion degree value. The window reduction rate changes with the congestion degree value as shown in Figure 2 To prevent the consumer from reducing the window every time a data packet arrives, this step adopts a conservative loss recovery strategy, which allows only one window reduction in an RTT time, avoiding unnecessary reduction of the overall throughput.

[0114] Specific implementation three: the consumer obtains a data packet containing a queue congestion degree value, adjusts the interest packet sending rate of the consumer according to the congestion degree value in the data packet, and updates the maintained variable Y=Y-1, which is specifically:

[0115] C1, the consumer obtains the queue congestion degree value in the data packet containing the queue congestion degree value;

[0116] C2, if the queue congestion degree is equal to 0, C3 is executed, if the congestion degree is greater than a preset congestion threshold (a value close to 1, such as 0.9), C4 is executed, otherwise C5 is executed;

[0117] The preset congestion threshold is a value between 0 and 1;

[0118] C3, clear all values in the time window used by the BBR state machine to estimate RTProp, insert the RTT time into the time window, and the BBR state machine outputs the updated interest packet sending rate and the updated congestion window. The updated congestion window is used as the set congestion window, and then C5 is executed;

[0119] RTT time=the time when the consumer receives the data packet-the time when the consumer sends the corresponding interest packet;

[0120] Wherein, RRT time represents the round-trip transmission delay, and RTProp is the round-trip propagation delay;

[0121] C4, clear all values in the time window used by the BBR state machine to estimate BtlBW, insert the transmission rate deliveryRate into the time window, and the BBR state machine outputs the updated interest packet sending rate and the updated congestion window. The updated congestion window is used as the set congestion window, and then C5 is executed;

[0122] Transmission rate dliveryRate=data packet size / (time when the consumer receives the data packet-time when the consumer receives the last data packet)

[0123] where BtlBW is the link bottleneck bandwidth.

[0124] C5, remove the interest packet corresponding to the current data packet from the congestion window, and then update the maintenance variable Y = Y-1;

[0125] The maintenance variable Y is the number of interest packets sent by the consumer but no data packet response is received.

[0126] In this step, the BBR state machine estimates two parameters, RTProp: round-trip propagation delay, and BtlBW: link bottleneck bandwidth. The BBR state set maintains all transmission delays RTT in a time window from the current time to a certain time in the past, and uses the minimum RTT in the window as the estimated value of RTProp. At the same time, the BBR state set also maintains another data transmission rate deliveryRate in a time window from the current time to another time in the past, and uses the maximum transmission rate RTT in the window as the estimated value of BtlBW, as shown in Figure 3 .

[0127] Embodiment: In order to verify the beneficial effects of the present application, the following experiments are carried out:

[0128] This embodiment implements and tests the congestion control method proposed in the present application on the simulation platform ndn-SIM. The queue occupancy rate of the forwarder is obtained using the interface provided by NFD. The multi-path forwarding strategy proposed in the present application has no special requirements for the congestion control method used by the consumer. In the test, the consumers using ICP and BBR methods can both improve the bandwidth utilization through the multi-path forwarding strategy of the present application, and the consumer rate adjustment method proposed in the present application can achieve better results.

[0129] This embodiment uses ndn-SIM to build a topology for testing, and the consumer requests a file from the producer. The ability of the method proposed in the present application to avoid congestion, the utilization of bandwidth, the ability to cope with network changes, and fairness are tested respectively. The congestion control method can effectively avoid congestion, achieve a throughput close to the bottleneck bandwidth, and an average delay close to the propagation delay. According to the experimental results, the average throughput increases by 15%, and the average delay of data requests can be reduced by 11%.

Claims

1. A congestion control method for NDN with changing network topology. NDN is a named data network, which is characterized by The specific process of the method is: Step 1: At time t, use the maintenance variable Y to check whether there is a vacancy in the congestion window. If there is a vacancy, execute step 2; if there is no vacancy, execute step 3; At time t, the maintenance variable Y is used to check whether there is a vacancy in the congestion window. Specifically, the following steps are performed: determining whether Y is less than the set congestion window size. If Y is less than the set congestion window size, it means that there is a vacancy in the congestion window; otherwise, it means that there is no vacancy in the congestion window. Step 2: The consumer sends an interest packet to the forwarder at a set rate within the set congestion window. After receiving the interest packet, the forwarder forwards the interest packet to the producer. The producer generates a data packet and sends it to the forwarder, and updates the maintenance variable Y = Y + 1. After receiving the interest packet, the forwarder forwards the interest packet to the producer. Specifically, if the forwarder has one interface for forwarding the interest packet, the current interface is used to forward the data packet; if the forwarder has multiple interfaces for forwarding the interest packet, the ratio of the congestion level value of each interface of the forwarder is used as the ratio of the number of forwarded interest packets; The congestion level of each interface on the forwarder is determined by: Among them, occupancy j,i is the queue occupancy rate of the i-th interface of the j-th forwarder, low_factor is the preset minimum queue occupancy threshold, high_factor is the preset maximum queue occupancy threshold, queue_size j,i is the queue size of the i-th interface of the j-th forwarder, queue_capacity j,i is the maximum capacity of the queue on the i-th interface of the j-th forwarder; While checking whether there is a vacancy in the congestion window, each forwarder forwards the data packets in the order in which the data packets arrive at the forwarder, and updates the congestion value in the data packets at the same time, until the Nth forwarder receives the data packet with the congestion value and updates the congestion value, and then sends the data packet containing the queue congestion value to the consumer; Each forwarder forwards the data packets in the order in which the data packets arrive at the forwarder, and updates the congestion value in the data packets at the same time, until the Nth forwarder receives the data packet with the congestion value and updates the congestion value, and then sends the data packet containing the queue congestion value to the consumer, specifically: A1. Initialize the forwarder interface number j = 1; A2. Obtain the queue congestion level value of the j-th forwarder interface, then add the queue congestion level value of the forwarder interface to the data packet. The data packet with the added queue congestion level value is sent to the j+1-th forwarder. The j+1-th forwarder updates the congestion level value in the data packet: A2-1. After receiving the data packet, the j-th forwarder obtains the interface number i of the forwarder through which the interest packet corresponding to the current data packet enters, and then obtains the queue congestion level value of the interface i of the j-th forwarder; A2-2. Add the queue congestion level value corresponding to the j-th forwarder interface to the data packet, and send the data packet with the added queue congestion level value to the j+1-th forwarder. A2-3. After receiving the data packet containing the queue congestion value, the j+1th forwarder updates the queue congestion value in the data packet as follows: First, the j+1th forwarder obtains the queue congestion level value congestion_level in the data packet containing the queue congestion level value j,i ; Then, in the PIT, get the port number i' where the interest packet corresponding to the current data packet enters the j+1th forwarder, and get the congestion level value congestion_level of the queue corresponding to the port i' of the j+1th forwarder. j+1,i' : Among them, occupancy j+1,i' is the queue occupancy of the i'th interface of the j+1th forwarder, queue_size j+1,i' is the queue size of the i'th interface of the j+1th forwarder, queue_capacity j+1,i' is the maximum load capacity of the queue on the i'th interface of the j+1th forwarder, low_factor is the preset minimum queue occupancy threshold, and high_factor is the preset maximum queue occupancy threshold; Finally, the congestion level of the queue of the j-th forwarder interface i is used j,i and congestion_level of the queue at the i'th interface of the j+1th forwarder j+1,i' Obtain the link congestion level value cong_level, use the link congestion level value as the queue congestion level value, and update the queue congestion level value in the data packet; The link congestion level value cong_level is specifically: cong_level=max(congestion_level j+1,i' ,min(congestion_level j,i )) Among them, cong_level is the link congestion level value; A3. Determine whether j+1 is equal to the total number of forwarders N. If j+1=N, forward the data packet added to the queue congestion value to the consumer; otherwise, set j=j+1 and return to A2. Where N is the total number of transponders; The consumer obtains a data packet containing the queue congestion value, and adjusts the congestion window size or the interest packet sending rate according to the congestion value in the data packet, while updating the maintenance variable Y = Y-1; The consumer obtains a data packet containing a queue congestion value, adjusts the congestion window size according to the congestion value in the data packet, and updates the maintenance variable Y=Y-1, specifically: B1. The consumer obtains the queue congestion level value from the data packet containing the queue congestion level value; B2. If the queue congestion value is greater than 0, execute step B3; otherwise, execute step B5; B3. Obtain the time difference A between the current time and the last congestion window reduction time. If the time difference A is greater than the RTT time B, execute step B4; otherwise, execute step B6. Among them, RRT time represents the round-trip transmission delay; B4. Set cwnd = cwnd / (cong_level + 1) to update the congestion window size, use the updated congestion window as the set congestion window, record the current congestion window reduction time, and then execute B6. Among them, cwnd is the congestion window size; B5. Set cwnd = cwnd + 1 / cwnd to update the congestion window size, use the updated congestion window as the set congestion window, and then execute B6. B6. Delete the interest packet corresponding to the current data packet from the congestion window, and then update the maintenance variable Y = Y-1; When time t+1 is reached, set t=t+1 and return to step 1; Step 3: Each forwarder forwards the data packets in the order in which they arrive at the forwarder, and updates the congestion value in the data packets at the same time, until the Nth forwarder receives the data packet with the congestion value and updates the congestion value, and then sends the data packet containing the queue congestion value to the consumer; The consumer obtains a data packet containing the queue congestion value, and adjusts the congestion window size or the interest packet sending rate according to the congestion value in the data packet, while updating the maintenance variable Y = Y-1; When time t+1 is reached, set t=t+1 and return to step 1.

2. The NDN congestion control method applicable to changing network topology according to claim 1, characterized in that: The RTT time = the time when the consumer receives the data packet - the time when the consumer sends the corresponding interest packet.

3. The NDN congestion control method applicable to changing network topology according to claim 1, characterized in that: The consumer obtains a data packet containing the queue congestion value, adjusts the interest packet sending rate according to the congestion value in the data packet, and updates the maintenance variable Y = Y-1, specifically: C1. The consumer obtains the queue congestion level value in the data packet containing the queue congestion level value; C2: If the queue congestion level is equal to 0, execute C3; if the congestion level is greater than the preset congestion threshold, execute C4; otherwise, execute C5; The preset congestion threshold is a value between 0 and 1; C3. Clear all values ​​in the time window used by the BBR state machine to estimate RTProp, insert the RTT time into the time window, and the BBR state machine outputs the updated Interest packet sending rate and the updated congestion window. The updated Interest packet sending rate is used as the set Interest packet sending rate, and the updated congestion window is used as the set congestion window, and then execute C5. The RTT time = the time when the consumer receives the data packet - the time when the consumer sends the corresponding interest packet; C4. Clear all values ​​within the time window used by the BBR state machine to estimate BtlBW, insert the transmission rate deliveryRate into the time window, and the BBR state machine outputs the updated Interest packet sending rate and the updated congestion window. The updated Interest packet sending rate is used as the set Interest packet sending rate, and the updated congestion window is used as the set congestion window, and then execute C5. Among them, BtlBW is the link bottleneck bandwidth; C5. Delete the interest packet corresponding to the current data packet from the congestion window, and then update the maintenance variable Y = Y-1.

4. The NDN congestion control method applicable to changing network topology according to claim 3, characterized in that: The delivery rate deliveryRate = data packet size / (time the consumer receives the data packet - time the consumer receives the last data packet).

Citation Information

Patent Citations

  • Self-adaptive congestion control method based on deep learning in information center network

    CN107634911A

  • Method for balancing network load of data center

    CN114448899A