Slave Packet Engine NIC Emulation for Multi-Core Transmission
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In multi-core systems, non-master cores lack information about data packet transmission status and cannot monitor their own transmission statistics since these tasks are handled by a master core, leading to inefficiencies in data handling and statistics management.
Innovation Solution
Each packet engine emulates a NIC by using a local software-implemented transmission queue to track packet status, with pointers and descriptors allowing slave packet engines to monitor their own statistics and maintain local records of data transmission, even though the master core handles the actual queue transmissions.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If a master core handles all queue transmissions in a multi-core system, then transmission status information is centralized and easy to manage, but slave cores cannot monitor their own transmission statistics and must make separate copies of data
Solution Approach 1:
The patent divides the centralized transmission management into separate segments: the master core maintains the actual device queue, while each slave core maintains a local software-implemented transmission queue as a representation of the device queue. This segmentation allows slave cores to independently track transmission status without interfering with the master core's centralized management.
Solution Approach 2:
The patent creates software copies of transmission queue status information in each slave core's local memory. Instead of slave cores making copies of actual data packets, they maintain copies of transmission status descriptors that reflect the state of packets in the device queue. These local copies enable slave cores to monitor their own statistics independently.
2Loss of information
If slave packet engines make separate copies of data to track transmission status, then they can monitor their own statistics, but data handling efficiency decreases due to additional memory operations
Solution Approach 1:
The patent optimizes the copying approach by having slave cores copy only transmission status descriptors (metadata) rather than actual data packets. Each descriptor contains information about packet status, position in queue, and transmission state. This minimal copying approach enables statistics tracking while minimizing memory operation overhead.
Solution Approach 2:
The local software-implemented transmission queue serves multiple functions: it acts as a cache for transmission status information, enables independent statistics monitoring for each slave core, and provides a mechanism for tracking packet state without requiring slave cores to access shared memory frequently. This multi-functionality improves efficiency by consolidating multiple needs into a single data structure.
3Measurement precision
If slave packet engines access shared data structures to monitor transmission status, then they can obtain accurate statistics, but cache invalidations increase reducing system performance
Solution Approach 1:
The patent segments transmission status information into slave-specific local copies rather than requiring all cores to access a single shared data structure. Each slave core has its own local transmission queue that mirrors the relevant portion of the device queue state. This segmentation eliminates the need for frequent cache invalidations when the master core updates transmission status.
Solution Approach 2:
The slave cores pre-fetch and store transmission status descriptors in their local memory before the master core processes transmissions. By maintaining local copies of status information in advance, slave cores can monitor their statistics without needing to access shared data structures during transmission operations, thereby avoiding cache invalidation overhead.
Data Source
AI summary
Emulating a NIC for packet transmission on hardware RSS unaware NICs in a multi-core system enables each of a plurality of slave packet engines to emulate a NIC for packet transmissions locally even though the actual NIC transmissions from the queue are handled by a master packet engine only. Each slave packet engine treats a local software-implemented transmission queue as a device queue and uses the local queue to keep track of status of data from the packet engine in the device output queue, handled by the master packet engine on behalf of the slave packet engines. As the master packet engine transmits the data from the queue and the status of the queue changes, the master packet engine and the slave packet engines may use pointers to keep track of which data packets are transmitted, which data packets are drained and which data packets are still in the queue.


