Method and apparatus for priority-based probabilistic packet scheduling

The method addresses the limitation of physical queues in switches by using a single queue with probabilistic packet scheduling and ECN marking/dropping based on priority, enhancing traffic differentiation and prioritization efficiency.

WO2026112756A1PCT designated stage Publication Date: 2026-06-04HUAWEI TECH CO LTD

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
HUAWEI TECH CO LTD
Filing Date
2024-11-26
Publication Date
2026-06-04

AI Technical Summary

Technical Problem

Existing traffic prioritization methods in network switches are limited by the number of physical priority queues, which restricts scheduling flexibility and efficiency, particularly in scenarios requiring multiple priority levels and traffic isolation.

Method used

A method and apparatus for priority-based probabilistic packet scheduling using a single queue, where packet priorities are mapped to random values, and ECN bits are marked or packets are dropped based on queue size and priority, allowing for flexible and efficient traffic differentiation.

Benefits of technology

Enables efficient traffic differentiation and prioritization with an unlimited number of priority levels, improving throughput and reducing congestion by dynamically managing packet marking and dropping based on priority and queue state.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024134410_04062026_PF_FP_ABST
    Figure CN2024134410_04062026_PF_FP_ABST
Patent Text Reader

Abstract

There is provided a method performed at a switch in a computer network for scheduling packets based on an assigned priority in a probabilistic manner. A packet includes priority information in its header. When the packet is received by a switch in the network, its priority is retrieved and mapped to a value within a range for comparison with a random value. The mapped value is compared to the random value and on the basis of that comparison, the packet is either dropped, marked with an ECN bit, or enqueued in normal fashion.
Need to check novelty before this filing date? Find Prior Art

Description

METHOD AND APPARATUS FOR PRIORITY-BASED PROBABILISTIC PACKET SCHEDULING

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] The present application is the first application for this disclosure.

[0003] FIELD OF THE DISCLOSURE

[0004] The present disclosure relates to traffic differentiation and prioritization. Specifically, the present disclosure relates to methods and devices for priority-based probabilistic packet scheduling.BACKGROUND

[0005] Traffic differentiation and prioritization is often required to provide differentiated quality of service between tenants or between flows of the same application. For example, in High Performance Computing (HPC) workloads, the priority of short flows is often greater than the priority of large flows, to minimize average flow completion times. In Large Language Models (LLMs) or Distributed Machine Learning (DML) workloads, traffic prioritization impacts the model convergence, quality, and training pipelining. In particular, the front layers of a DML model are considered more important than the back layers to improve model accuracy. Moreover, when using a hybrid parallelism strategy, the priority of tensor parallelism (TP) or expert parallelism (EP) is higher than the priority of pipeline parallelism (PP) , and the priority of PP is higher than the data parallelism (DP) , in order to improve training efficiency. In long distance data center network (DCN) scenarios, intra-traffic and inter-traffic may have different priority requirements. In multi-application or multi-tenant scenarios, packet prioritization can help reduce the impact of background traffic (such as storage backup) on the main application traffic.

[0006] In the prior art, traffic prioritization or differentiation is achieved via physical priority queues in switches. However, generally, switches provide only up to 8 physical priority queues, which are mostly used for isolation among different tenants or applications. As a result, many of scheduling policies are complex to implement.SUMMARY

[0007] It is an object of the present disclosure to provide an improved traffic differentiation and prioritization method.

[0008] According to a first aspect, there is provided a method for scheduling packets, comprising receiving a packet, retrieving a priority for the packet from a packet header, mapping the priority to a comparison value, the comparison value being between a minimum value and a maximum value, computing a random value between the minimum value and the maximum value, comparing the random value to the comparison value, and marking the packet with an Explicit Congestion Notification (ECN) bit based on the comparing.

[0009] According to an embodiment of the first aspect, the method further comprises determining a current queue size, wherein said marking the packet is performed when the queue size is between a maximum threshold and a minimum threshold.

[0010] According to another embodiment of the first aspect, the method further comprises enqueuing the packet.

[0011] According to yet another embodiment of the first aspect, said mapping the priority maps high priorities to higher values and low priorities to lower values, wherein said marking the packet is performed when the random value is greater than the comparison value.

[0012] According to yet another embodiment of the first aspect, said mapping the priority maps high priorities to lower values and low priorities to higher values, wherein said marking the packet is performed when the random value is less than the comparison value.

[0013] According to yet another embodiment of the first aspect, the comparison value is multiplied by a maximum probability.

[0014] According to yet another embodiment of the first aspect, the method further comprises when the current queue size is greater than the maximum threshold, dropping the packet or enqueuing the packet based on the comparing.

[0015] According to yet another embodiment of the first aspect, the method further comprises when the current queue size is less than the minimum threshold, enqueuing the packet.

[0016] According to yet another embodiment of the first aspect, computing the random value uses a random number generator configured to provide an even distribution.

[0017] According to yet another embodiment of the first aspect, computing the random value uses a random number generator configured to provide a custom distribution.

[0018] According to yet another embodiment of the first aspect, the method is performed by a switch in a network, wherein the switch comprises a single queue.

[0019] According to yet another embodiment of the first aspect, the method is performed by a switch in a network, wherein the switch comprises multiple queues.

[0020] According to a second aspect, there is provided a switch comprising a processor and a communications subsystem, wherein the switch is configured to perform the method of any embodiment of the first aspect.

[0021] According to a third aspect, there is provided a computer readable medium having stored thereon executable code for execution by a switch, the executable code comprising instructions for performing the method of any embodiment of the first aspect.

[0022] According to a fourth aspect, there is provided a method comprising receiving a packet, retrieving a priority for the packet from a packet header, mapping the priority to a comparison value, the comparison value being between a minimum value and a maximum value, computing a random value between the minimum value and the maximum value, comparing the random value to the comparison value, and dropping the packet or enqueuing the packet based on the comparing.

[0023] According to an embodiment of the fourth aspect, the method further comprises determining a current queue size, wherein said dropping the packet is performed when the queue size is greater than a maximum threshold.

[0024] According to another embodiment of the fourth aspect, said mapping the priority maps high priorities to higher values and low priorities to lower values wherein said dropping the packet is performed when the random value is greater than the comparison value.

[0025] According to another embodiment of the fourth aspect, said mapping the priority maps high priorities to lower values and low priorities to higher values wherein said dropping the packet is performed when the random value is less than the comparison value.

[0026] According to another embodiment of the fourth aspect, when the current queue size is between a minimum threshold and the maximum threshold, marking the packet with an Explicit Congestion Notification (ECN) bit based on the comparing.

[0027] According to another embodiment of the fourth aspect, when the current queue size is less than a minimum threshold, enqueuing the packet.

[0028] According to another embodiment of the fourth aspect, computing the random value uses a random number generator configured to provide an even distribution.

[0029] According to another embodiment of the fourth aspect, computing the random value uses a random number generator configured to provide a custom distribution.

[0030] According to another embodiment of the fourth aspect, the method is performed by a switch in a network, wherein the switch comprises a single queue.

[0031] According to another embodiment of the fourth aspect, the method is performed by a switch in a network, wherein the switch comprises multiple queues.

[0032] According to a fifth aspect, there is provided a switch comprising a processor and a communications subsystem, wherein the switch is configured to perform the method of any embodiment of the fourth aspect.

[0033] According to a sixth aspect, there is provided a computer readable medium having stored thereon executable code for execution by a switch, the executable code comprising instructions for performing the method of any embodiment of the fourth aspect.BRIEF DESCRIPTION OF THE DRAWINGS

[0034] FIG. 1A illustrates a packet prioritization using multiple queues according to the prior art.

[0035] FIG. 1B illustrates an ECN mechanism according to the prior art.

[0036] FIG. 2A is a graph illustrating the behavior of the prior art ECN mechanism.

[0037] FIG. 2B is a graph illustrating the behavior of an ECN mechanism according to at least some embodiments of the present disclosure.

[0038] FIG. 3 is a cartesian graph showing a relationship between probability and priority according to at least some embodiments of the present disclosure.

[0039] FIG. 4 is a flow chart of a method for marking a packet with an ECN bit according to at least some embodiments of the present disclosure.

[0040] FIG. 5 is a flow chart of a method for dropping a packet according to at least some embodiments of the present disclosure.

[0041] FIG. 6 illustrates how queue size at a switch affects the treatment of a packet according to at least some embodiments of the present disclosure.

[0042] FIG. 7 illustrates a flow chart for a method of processing a packet at a switch according to at least some embodiments of the present disclosure.

[0043] FIG. 8 is a graph illustrating results of simulations using the methods of the present disclosure.

[0044] FIG. 9A is a graph illustrating results of a simulation using the methods of the present disclosure.

[0045] FIG. 9B is a graph illustrating results of a simulation using the methods of the present disclosure.

[0046] FIG. 9C is a graph illustrating results of a simulation using the methods of the present disclosure.

[0047] FIG. 9D is a graph illustrating results of a simulation using the methods of the present disclosure.

[0048] FIG. 9E is a graph illustrating results of a simulation using the methods of the present disclosure.

[0049] FIG. 9F is a graph illustrating results of a simulation using the methods of the present disclosure.

[0050] FIG. 9G is a graph illustrating results of a simulation using the methods of the present disclosure.

[0051] FIG. 9H is a graph illustrating results of a simulation using the methods of the present disclosure.

[0052] FIG. 10A is a bar graph comparing performance of different approaches for packet prioritization.

[0053] FIG. 10B is a bar graph comparing performance of different approaches for packet prioritization.

[0054] FIG. 10C is a bar graph comparing performance of different approaches for packet prioritization.

[0055] FIG. 11 is a block diagram of computing device according to at least one embodiment of the present disclosure.DETAILED DESCRIPTION

[0056] The present disclosure seeks to provide an improved solution for packet prioritization and differentiation using a single physical queue.

[0057] Traditional prioritization mechanisms leverage physical queues to schedule or prioritize packets inside switches. At the sending end-host, the packets are tagged with priority information. At the switch, the priority is achieved by controlling the packet dequeue order. The packets are enqueued in the physical queues based on priority values and the packets in the highest priority queue are dequeued before the packets in the lower priority queues. While this mechanism is efficient, the switches can only support up to eight priority levels, which limits the scheduling ability of the switches.

[0058] Such prior art approaches are illustrated in FIG. 1A. Specifically, as seen in FIG. 1A, an input stream 101 is received by an input port 102 of a switch. Input stream comprises a plurality of packets, each tagged with a priority level (shown as a number) by their respective senders. After being received by input port 102, each packet is assigned a queue 103 based on their priority level, and each packet is sent out through output port 104 based on which queue they have been assigned to.

[0059] Some prior art solutions attempt to control the mapping of flows on these priority queues (e.g., PIAS, PASE) .

[0060] Others proposed to implement many priority levels using a single priority queue. For example, PIFO proposes a push in first out mechanism to control packet dequeue ordering in the switches based on some criteria. Similarly, pFabric schedules packets in the switches based on the flow size information carried in the packet headers.

[0061] Still others achieve prioritization through controlling which packets are enqueued in the switch buffers. For example, AIFO proposes a mechanism to control the packet enqueuing (or admission) in the switches based on a rank calculated based on the packet properties. Aeolus uses the Explicit Congestion Notification (ECN) bit to decide if a packet should be enqueued or dropped at the switch queue. Packets whose ECN bit is not set are dropped if the queue size at the switch is larger than a threshold.

[0062] The present disclosure seeks to provide an improved prioritization method which overcomes drawbacks of prior art methods, and specifically, the limited number of priority levels, and the hardware requirements of single queue solutions.

[0063] The present disclosure provides a solution for packet prioritization which may implement multiple priority levels using a single queue. The proposed solution may work with Remote Direct Memory Access (RDMA) and Transmission Control Protocol (TCP) , and other similar congestion control mechanisms that use ECN. For example, the proposed solution may be implemented with Data Center TCP (DCTCP) or Data Center Quantized Congestion Notification (DCQCN) schemes.

[0064] The proposed solution may also be combined with load balancing schemes (e.g., REPS. PLB) to change the path of low priority flows, based on the ECN feedback.

[0065] The proposed solution is especially suited for Data Center Networks (DCNs) where packet scheduling or traffic differentiation is required. The target scenarios are applications requiring multiple priority support, traffic isolation, and multi-tenant DML clusters, among many others.

[0066] The prioritization mechanism of the present disclosure is best suited in scenarios where, either one or more of the following properties hold, 1) the network switches have shallow buffers, and 2) the end-host implements Fast Converging congestion control, and / or 3) ECN aware load balancing is used at the end-host. All these conditions are fairly common in modern datacenters. The effect of these properties is that prioritization is controlled by which packets are enqueued or dropped by the switch, not by the ordering in which they leave the switch.

[0067] The present solution comprises two main mechanisms: 1) probabilistic ECN marking of the packets based on the priority field in the packet header and state of the queue in the switch, and 2) probabilistic packet drop based on the priority field in the packet header and state of the queue in the switch.

[0068] With traditional ECN mechanisms, such as Weighted Random Early Detection (WRED) , a packet header contains two ECN bits which are marked based on the egress queue size, in case of congestion. As shown in FIG. 1B, in traditional ECN mechanisms, a packet 111 is marked with an ECN bit with a certain probability when traveling from source to destination, if the size of egress queue 112 is between Kmin and Kmax. If the size of egress queue 112 is greater than Kmax, rank-based packet drop may be used. If the size of egress queue 112 is less than Kmin, the switch behaves normally. In at least some embodiments, the threshold Kmax for marking a packet with an ECN bit may not be the same as the threshold Kmax for dropping packets.

[0069] The ECN information is carried in the packet header to the destination. The destination device copies the ECN information from the data packet to the acknowledgement packets and sends it back to the source which reduces its packet transmission rate proportional the number of ECN marked packets. In other implementations, a switch may send the ECN information directly to the source via a custom packet or marking and ACK packet going towards the source.

[0070] The present disclosure extends the existing mechanisms by considering the packet priority information in addition to the queue size. By considering the packet priority information, an unlimited number of priority levels may theoretically be achieved.

[0071] Reference is made to FIG. 2A which shows a graph of the behavior of a prior art ECN marking mechanism. Specifically, as seen in FIG. 2A, as the size of the queue increases from Kmin to Kmax, the probability of a packet being marked increases from 0 to a maximum probability Pmax.

[0072] Reference is made to FIG. 2B which shows a graph of the behavior of an ECN marking mechanism according to at least some embodiments of the present disclosure. As seen in FIG. 2B, packets with different priorities have different probabilities of being marked with an ECN bit for a given queue size.

[0073] According to at least some embodiments of the present disclosure, each packet arriving at the switch carriers a priority field in its header. The priority field is generally 3 bits to accommodate 8 priority levels corresponding to 8 queues at the switch, however, the present disclosure is not so limited and the priority field may be any number of bits. Packet priority may be tagged at the end-host generating the packet or in-network. According to at least some embodiments, the existing DSCP or Virtual Local Area Network (VLAN) priority fields may be used. In at least some other embodiments, a custom priority field may be used.

[0074] PRIORITY-AWARE ECN MARKING

[0075] According to at least some embodiments of the present disclosure, ECN marking may be based on a priority assigned to a packet. The priority may be used with a probabilistic approach such that high-priority packets are less likely to get marked with an ECN bit, whereas low-priority packets are more likely to get marked with an ECN bit.

[0076] Different functions may be used to make a decision as to whether to mark a packet with an ECN bit, to achieve different functionality. According to at least one embodiment, the following inequation is used: R<f (P) *Pmax

[0077] where R is a random number generated by a random number generator, f is a function for mapping the priority value to an appropriate range for the random number generator, P is the priority value for the packet, and Pmax is the maximum probability of setting the ECN bit. If the above inequation is true, the packet may be marked with an ECN bit.

[0078] FIG. 3 shows an example relationship between the priority of a packet and the probability of that packet being marked with an ECN bit. FIG. 3 assumes the convention that a lower priority number indicates a higher priority, but the present disclosure is not limited in this respect.

[0079] As seen in FIG. 3, higher priority packets have a lower probability of being marked with an ECN bit. Moreover, as the priority of the packet is lower, the chance of the packet being marked with an ECN bit increases at an accelerating rate. According to at least some embodiments, this procedure for deciding whether to mark a packet with an ECN bit is only performed when the queue size is within a certain range.

[0080] Reference is now made to FIG. 4, which illustrates a method for marking a packet with an ECN bit according to at least some embodiments of the present disclosure.

[0081] As seen in FIG. 4, the method starts at block 400 and proceeds to block 410 where a packet is received. The method then proceeds to block 420 to determine if the queue size is between Kmin and Kmax. Kmin and Kmax are constant values that govern at which queue size packets are marked with an ECN bit, and may be set by an administrator.

[0082] If the queue size is between Kmin and Kmax, the method proceeds to block 430 where a random number between Rmin and Rmax is generated, and the packet’s priority is mapped using a mapping function, to a value between Rmin and Rmax, to produce a comparison value. In at least some embodiments, this comparison value may then be multiplied by Pmax. The comparison value is then compared to the random number, and if the comparison value is less than the random number, the packet is marked with an ECN bit at block 440, and the method ends at block 460.

[0083] If at block 420 it is found that the queue size is not between Kmin and Kmax, or if at block 430 it is found that the comparison value is greater than the random number, the method proceeds to block 450 where the packet is not marked with an ECN bit, and the method ends at block 460.

[0084] PRIORITY-AWARE PACKET DROP

[0085] According to at least some embodiments of the present disclosure, a switch may drop a packet based on the priority level assigned to the packet. The priority may be used with a probabilistic approach such that high-priority packets are less likely to get dropped, whereas low-priority packets are more likely to get dropped.

[0086] Different functions may be used to make a decision as to whether to drop a packet, to achieve different functionality. According to at least one embodiment, the following inequation is used: R<f (P) Pmax

[0087] where R is a random number generated by a random number generator, f is a function for mapping the priority value to an appropriate range for the random number generator, P is the priority value for the packet, and Pmax is the maximum probability of dropping the packet. If the above inequation is true, the packet may be dropped.

[0088] Using the above inequation, a behavior such as that illustrated in FIG. 3 may be achieved. Specifically, higher priority packets have a lower probability of being dropped, and as the priority of the packet is lower, the chance of the packet being dropped increases at an accelerating rate. According to at least some embodiments, this procedure for deciding whether to drop a packet is only performed when the queue size is above a certain threshold. As will be appreciated, the random number may be generated at any step, and a previously generated random number may be reused.

[0089] Reference is now made to FIG. 5, which illustrates a method for dropping a packet according to at least some embodiments of the present disclosure.

[0090] As seen in FIG. 5, the method starts at block 500 and proceeds to block 510 where a packet is received. The method then proceeds to block 520 to determine if the queue size is greater than Kmax. Kmax is a constant value that governs at which queue size packets are dropped, and may be set by an administrator. The value for Kmax may be the same value used for Kmax in the method of FIG. 4, discussed above, or it may be different.

[0091] If the queue size greater than Kmax, the method proceeds to block 530 where a random number between Rmin and Rmax is generated, and the packet’s priority is mapped using a mapping function, to a value between Rmin and Rmax, to obtain a comparison value. The comparison value is then compared to the random number, and if the comparison value is less than the random number, the packet is dropped at block 540, and the method ends at block 560.

[0092] If at block 520 it is found that the queue size is not greater than Kmax, or if at block 530 it is found that the comparison value is greater than the random number, the method proceeds to block 550 where the packet is not dropped, and the method ends at block 560.

[0093] COMBINED METHOD

[0094] According to at least some embodiments, a switch may perform both priority-based ECN marking and priority-based packet drop together.

[0095] As seen in FIG. 6, when a packet 601 arrives at the switch, if the size of queue 602 is greater than Kmax, packet 601 is subjected to probability-based packet drop. If the size of queue 602 is between Kmin and Kmax, packet 601 is subjected to probability-based ECN marking. If the size of queue 602 is less than Kmin, packet 601 is treated normally.

[0096] Reference is made to FIG. 7, which shows a flow chart for a combined method according to at least some embodiments of the present disclosure.

[0097] As seen in FIG. 7, the method starts at block 700 and proceeds to block 710 where a packet is received. The method then proceeds to block 720 to check if the size of the queue is greater than Kmax. If the size of the queue is greater than Kmax, the method proceeds to block 730 to compute a random number (or reuse a previously generated random number) and to compare the random number to a mapping of the packet’s priority. If the random number is less than the mapped priority, the packet is dropped at block 740, and the method ends at block 780. Otherwise, the packet is not dropped and the method ends at block 780.

[0098] If at block 720 it was found that the size of the queue is less than Kmax, the method proceeds to block 750 to check if the size of the queue is greater than Kmin. If the size of the queue is greater than Kmin, the method proceeds to block 760 to compute a random number, to map the packet’s priority to a mapped value, and to multiply the mapped value by Pmax tp obtain a comparison value. The comparison value is then compared to the random number. If the comparison value is greater than the random number, the method proceeds to block 770 where the packet is marked with an ECN bit, and the method ends at block 780. Otherwise, the method ends at block 780.

[0099] As will be appreciated by those skilled in the art, when a packet is not dropped and the method ends, the packet is enqueued at the switch. The switch may only comprise a single queue, according to at least some embodiments of the present disclosure.

[0100] Moreover, it will be appreciated that the comparisons between random numbers and mapped priority values is done in order to achieve a certain probability of packets being dropped, or marked with an ECN bit. The present disclosure illustrates some inequations used to achieve this behavior, but the present disclosure is not intended to be limited in this respect.

[0101] The above methods therefore allow to control traffic flows. In a first example, an application may produce distinct data flows, each with different priority levels, to produce the desired amount of respective traffic for each data flow.

[0102] According to at least some embodiments, the switch may be configured to affect how different packet priorities are handled. For example, in some embodiments, the random number generator may produce an even distribution, such that the random number generator is equally likely to produce any value between Rmin and Rmax. In at least some embodiments, the switch may be configured to produce different distributions, such that the random number generator is more likely to produce values closer to Rmin than Rmax, or vice versa. This may be performed by modifying the random number generator, or by mapping values produced by the random number generator to a custom distribution.

[0103] Moreover, according to at least some embodiments of the present disclosure, the present method may be combined with multiple queues. In such embodiments, packets may be dropped or marked according to the present disclosure, and the non-dropped packets may be enqueued in a queue corresponding to their priority level.

[0104] SIMULATION RESULTS

[0105] Reference is made to FIG. 8, which illustrates some results of the implementation of the methods described herein. The results shown in FIG. 8 were obtained by setting up 2 TofinoTM P4 switches on a 10 Gbps link, with Kmin and Kmax set at 100 and 500, respectively. The priority for flow 2 is set so that packets for flow 2 are always marked with an ECN bit (assuming the queue size is between Kmin and Kmax) , in all tests. The probability for flow 1 packets to be marked (assuming the queue size is between Kmin and Kmax) is indicated on the X axis.

[0106] As seen in FIG. 8, when both probabilities are set to 100, such that both flows 1 and 2 are treated the same way, the throughput for both flows are roughly the same. However, when the probability for flow 1 is set to 80, the throughput for flow 1 is marginally increased over the throughput for flow 2. When the probability for flow 1 is set to 50, the throughput for flow 1 is roughly twice the throughput for flow 2. When the probability for flow 1 is set to 20, the throughput for flow 1 is roughly 5 times the throughput for flow 2. When the probability for flow 1 is set to 1, almost all of the traffic is from flow 1 and only a tiny fraction of the traffic is from flow 2.

[0107] FIGs. 9A to 9H show the results of other simulations. These simulations were run over a dumbbell topology, with a 10 Gbps link, with Kmin and Kmax set at 10 and 100, respectively.

[0108] In FIG. 9A, service 1 has packets with a priority set to 0, and service 2 has packets with a priority set to 10.

[0109] In FIG. 9B, service 1 has packets with a priority set to 10, and service 2 has packets with a priority set to 0.

[0110] In FIG. 9C, both services 1 and 2 have packets with a priority set to 10.

[0111] In FIG. 9D, service 1 has packets with a priority set to 8, and service 2 has packets with a priority set to 1.

[0112] In FIG. 9E, service 1 has packets with a priority set to 0, and service 2 has packets with a priority set to 10.

[0113] In FIG. 9F, service 1 has packets with a priority set to 10, and service 2 has packets with a priority set to 0.

[0114] In FIG. 9G, service 1 has packets with a priority set to 4, and service 2 has packets with a priority set to 2.

[0115] In FIG. 9H, service 1 has packets with a priority set to 6, and service 2 has packets with a priority set to 3.

[0116] Reference is now made to FIGs. 10A to 10C, which show bar graphs comparing the performance of the methods of the present disclosure, as compared to prior art methods. In FIGs. 10A to 10C, the method of the present disclosure is labeled as Probabilistic Priority-Based Packet Scheduling (PPPS) . FIGs. 10A to 10C show the results of simulations that ran on a Leaf-Spine topology, with 9 leaf switches and 4 spine switches, where each leaf switch has 16 10Gbps downlinks for 144 hosts, and 4 40Gbps uplinks to the spine, at loads of 50%, 60%, 70%, 80%, and 90%.

[0117] FIGs. 10A to 10C show the average Flow Completion Time (FCT) for different methods, including a single queue method, the method of the present disclosure, a multi-queue method, the method of the present disclosure with multiple queues, and a Shortest Remaining Processing Time (SRPT) scheme, namely pFabric. In FIG. 10A, the flow size was less than 100KB, in FIG. 10B, the flow size was between 100KB and 10MB, and in FIG. 10C, the flow size was greater than 10MB.

[0118] The above functionality may be implemented on any one or combination of computing devices. FIG. 11 is a block diagram of a computing device 1100 that may be used for implementing the devices and methods disclosed herein. Specific devices may utilize all of the components shown, or only a subset of the components, and levels of integration may vary from device to device. Furthermore, a device may contain multiple instances of a component, such as multiple processing units, processors, memories, transmitters, receivers, etc. The computing device 1100 may comprise a processor 1110, memory 1120, a mass storage device 1140, and peripherals 1130. Peripherals 1130 may comprise, amongst others one or more input / output devices, such as a speaker, microphone, mouse, touchscreen, keypad, keyboard, printer, display, network interfaces, and the like. Communications between processor 1110, memory 1120, mass storage device 1140, and peripherals 1130 may occur through one or more buses 1150.

[0119] The bus 1150 may be one or more of any type of several bus architectures including a memory bus or memory controller, a peripheral bus, video bus, or the like. The processor 1110 may comprise any type of electronic data processor. The memory 1120 may comprise any type of system memory such as static random-access memory (SRAM) , dynamic random-access memory (DRAM) , synchronous DRAM (SDRAM) , read-only memory (ROM) , a combination thereof, or the like. In an embodiment, the memory 1120 may include ROM for use at boot-up, and DRAM for program and data storage for use while executing programs.

[0120] The mass storage device 1140 may comprise any type of storage device configured to store data, programs (e.g. instructions or code) , and other information and to make the data, programs, and other information accessible via the bus. The mass storage device 1140 may comprise, for example, one or more of a solid-state drive, hard disk drive, a magnetic disk drive, an optical disk drive, or the like. The memory 1120 or mass storage 1140 may store instructions, which when executed by a processor or processing unit, cause or configure the computing device 1100 to perform any of the methods described herein.

[0121] Computing device 1100 may further comprise a communications subsystem 1160 for communicating with other computing devices or for connecting computing device 1100 to a computer network. Communications subsystem 1160 may comprise one or more network interfaces (not shown) , which may comprise wired links, such as an Ethernet cable or the like, and / or wireless links to access nodes or different networks. The network interface allows the processing unit to communicate with remote units via the networks. For example, the network interface may provide wireless communication via one or more transmitters / transmit antennas 1170 and one or more receivers / receive antennas 1170. In an embodiment, the processing unit is coupled to a local-area network or a wide-area network, for data processing and communications with remote devices, such as other processing units, the Internet, remote storage facilities, or the like.

[0122] Computing device may further comprise a power source 1180.

[0123] The present disclosure may be implemented on a computing device such as exemplary computing device 1100. Computing device 1100 may be a network element of a telecommunications network, such that the network element may be connected to other network elements of the telecommunication network, where all network elements form the telecommunication network. The network element may also receive communications from client devices connected to the telecommunication network and provide services to such client devices.

[0124] Through the descriptions of the preceding embodiments, the teachings of the present disclosure may be implemented by using hardware only or by using a combination of software and hardware. Software or other computer executable instructions for implementing one or more embodiments, or one or more portions thereof, may be stored on any suitable computer readable storage medium. The computer readable storage medium may be a tangible or in transitory / non-transitory medium such as optical (e.g., CD, DVD, Blu-Ray, etc. ) , magnetic, hard disk, volatile or non-volatile, solid state, or any other type of storage medium known in the art.

[0125] Additional features and advantages of the present disclosure will be appreciated by those skilled in the art.

[0126] The structure, features, accessories, and alternatives of specific embodiments described herein and shown in the Figures are intended to apply generally to all of the teachings of the present disclosure, including to all of the embodiments described and illustrated herein, insofar as they are compatible. In other words, the structure, features, accessories, and alternatives of a specific embodiment are not intended to be limited to only that specific embodiment unless so indicated.

[0127] Moreover, the previous detailed description is provided to enable any person skilled in the art to make or use one or more embodiments according to the present disclosure. Various modifications to those embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the teachings provided herein. Thus, the present methods, systems, and or devices are not intended to be limited to the embodiments disclosed herein. The scope of the claims should not be limited by these embodiments, but should be given the broadest interpretation consistent with the description as a whole. Reference to an element in the singular, such as by use of the article "a" or "an" is not intended to mean "one and only one" unless specifically so stated, but rather "one or more" . All structural and functional equivalents to the elements of the various embodiments described throughout the disclosure that are known or later come to be known to those of ordinary skill in the art are intended to be encompassed by the elements of the claims.

[0128] Furthermore, nothing herein is intended as an admission of prior art or of common general knowledge. Furthermore, citation or identification of any document in this application is not an admission that such document is available as prior art, or that any reference forms a part of the common general knowledge in the art. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims.

[0129] In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.

Claims

1.A method for scheduling packets, comprising:receiving a packet;retrieving a priority for the packet from a packet header;mapping the priority to a comparison value, the comparison value being between a minimum value and a maximum value;computing a random value between the minimum value and the maximum value;comparing the random value to the comparison value; andmarking the packet with an Explicit Congestion Notification (ECN) bit based on the comparing.2.The method of claim 1, further comprising:determining a current queue size;wherein said marking the packet is performed when the queue size is between a maximum threshold and a minimum threshold.3.The method of claim 1 or claim 2, further comprising enqueuing the packet.4.The method of any one of claims 1 to 3, wherein said mapping the priority maps high priorities to higher values and low priorities to lower values; andwherein said marking the packet is performed when the random value is greater than the comparison value.5.The method of any one of claims 1 to 3, wherein said mapping the priority maps high priorities to lower values and low priorities to higher values; andwherein said marking the packet is performed when the random value is less than the comparison value.6.The method of any one of claims 1 to 5, wherein the comparison value is multiplied by a maximum probability.7.The method of claim 2, further comprising when the current queue size is greater than the maximum threshold, dropping the packet or enqueuing the packet based on the comparing.8.The method of claim 2, further comprising when the current queue size is less than the minimum threshold, enqueuing the packet.9.The method of any one of claims 1 to 8, wherein said computing the random value uses a random number generator configured to provide an even distribution.10.The method of any one of claims 1 to 8, wherein said computing the random value uses a random number generator configured to provide a custom distribution.11.The method of anyone of claims 1 to 10, performed by a switch in a network, wherein the switch comprises a single queue.12.The method of anyone of claims 1 to 10, performed by a switch in a network, wherein the switch comprises multiple queues.13.A switch comprising:a processor; anda communications subsystem;wherein the switch is configured to perform the method of any one of claims 1 to 12.14.A computer readable medium having stored thereon executable code for execution by a processor of a switch, the executable code comprising instructions for performing the method of any one of claims 1 to 12.15.A method for scheduling packets, comprising:receiving a packet;retrieving a priority for the packet from a packet header;mapping the priority to a comparison value, the comparison value being between a minimum value and a maximum value;computing a random value between the minimum value and the maximum value;comparing the random value to the comparison value; anddropping or enqueuing the packet based on the comparing.16.The method of claim 15, further comprising:determining a current queue size;wherein said dropping the packet is performed when the queue size is greater than a maximum threshold.17.The method of claim 15 or claim 16, wherein said mapping the priority maps high priorities to higher values and low priorities to lower values; andwherein said dropping the packet is performed when the random value is greater than the comparison value.18.The method of claim 15 or claim 16, wherein said mapping the priority maps high priorities to lower values and low priorities to higher values; andwherein said dropping the packet is performed when the random value is less than the comparison value.19.The method of claim 16, wherein when the current queue size is between a minimum threshold and the maximum threshold, marking the packet with an Explicit Congestion Notification (ECN) bit based on the comparing.20.The method of claim 16, wherein when the current queue size is less than a minimum threshold, enqueuing the packet.21.The method of any one of claims 15 to 20, wherein said computing the random value uses a random number generator configured to provide an even distribution.22.The method of any one of claims 15 to 20, wherein said computing the random value uses a random number generator configured to provide a custom distribution.23.The method of any one of claims 15 to 22, performed by a switch in a network, wherein the switch comprises a single queue.24.The method of any one of claims 15 to 22, performed by a switch in a network, wherein the switch comprises multiple queues.25.A switch comprising:a processor; anda communications subsystem;wherein the switch is configured to perform the method of any one of claims 15 to 24.26.A computer readable medium having stored thereon executable code for execution by a processor of a switch, the executable code comprising instructions for performing the method of any one of claims 15 to 24.