Dynamic Sub-Queue Hashing for Head-of-Line Blocking Avoidance
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Network packet forwarding devices face head of line (HOL) blocking issues due to 'bursty' traffic and large packets, which degrade the quality of service for other flows within the same class, potentially violating service agreements and causing application-level problems.
Innovation Solution
Implementing a sub-queuing scheme in switches and routers that dynamically creates sub-queues when a regular queue exceeds a threshold, using a hashing mechanism to distribute packets across these sub-queues, ensuring in-order delivery within flows while minimizing resource usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If packets are assigned to queues at the input port based on class of service, then quality of service for different classes is maintained, but head of line blocking occurs within the same class degrading service quality
Solution Approach 1:
The patent divides a single queue for a class of service into multiple sub-queues. When head of line blocking is detected in one sub-queue, packets from other sub-queues can be transmitted, preventing the blocking effect from affecting the entire class of service. This segmentation allows independent management of packet flows within the same service class.
Solution Approach 2:
The patent dynamically creates and manages sub-queues based on traffic conditions. Sub-queues are activated when needed and can be dynamically assigned to different packet flows, allowing the system to adapt to changing traffic patterns and prevent head of line blocking without permanent structural changes.
2Reliability
If multiple queues are used to prevent head of line blocking, then service quality is improved, but device complexity and resource consumption increase
Solution Approach 1:
The patent merges multiple sub-queues into a single logical queue structure that shares common management resources. The sub-queues use shared data structures and management mechanisms, reducing the overall complexity compared to completely independent queues while still providing the benefits of segmented packet handling.
Solution Approach 2:
The patent creates a multi-functional queue system where sub-queues can serve different packet flows within the same class of service. The same queue management infrastructure handles multiple sub-queues, making the system universally applicable to various traffic patterns without requiring separate management systems for each queue.
3Productivity
If sub-queues are dynamically created to handle congested queues, then head of line blocking is reduced, but resource usage increases
Solution Approach 1:
The patent dynamically allocates memory resources for sub-queues based on actual traffic demands. Sub-queues are created and destroyed as needed, allowing the system to optimize memory usage by activating additional queue structures only when traffic patterns require them, rather than maintaining fixed memory allocations.
Solution Approach 2:
The patent recovers memory resources by destroying sub-queues when they are no longer needed. When traffic conditions improve or sub-queues become dormant, their memory allocations are released and made available for other uses, preventing permanent resource consumption while maintaining productivity benefits.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
An apparatus and related methods are provided to greatly reduce the negative impact of head of line (HOL) blocking. At a device (e.g., switch, router, etc.) configured to forward packets in a network, new packets that are to be forwarded from the device to other devices in the network are stored in a memory of the device. Entries are added to a queue link list for the at least one queue as new packets are added to the at least one queue. A detection is made when the at least one queue exceeds a threshold indicative of head of line blocking. For new packets that are to be added to the at least one queue, entries are added to a sub-queue link list for the plurality of sub-queues such that packets are assigned to different ones of a plurality of sub-queues when the at least one queue exceeds the threshold. Packets are output from the memory for the plurality of sub-queues according to the sub-queue link list.