Software Switch NIC Buffering for Bandwidth Bottlenecks
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Software-based network switches in access networks face limitations in switching capacity due to high system bus bandwidth consumption from frequent data packet transfers between the Network Interface Card (NIC), RAM, and CPU, leading to bottlenecks and increased capital and operational expenditures.
Innovation Solution
Storing incoming data packets in a local buffer within the NIC, selectively extracting and storing header fields in another buffer, assigning a common identifier, and allowing direct access and modification of these fields by the CPU for processing, thereby reducing the need for extensive system bus usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If data packets are frequently transferred from NIC to RAM and then to CPU through the system bus in software-based switches, then packet processing can be performed, but system bus bandwidth is considerably consumed leading to limited switching capacity
Solution Approach 1:
The patent segments the data packet into two parts: header fields and payload. Only the header fields are transferred to the CPU for processing, while the payload remains in the NIC's local buffer. This segmentation reduces the amount of data transferred over the system bus from the entire packet to just the header portion, significantly lowering bandwidth consumption while maintaining processing capability.
Solution Approach 2:
The patent extracts only the necessary header fields from the complete data packet and transfers them to the CPU. The header fields contain the essential information needed for switching decisions (such as destination address, protocol type), while the payload is excluded from the transfer. This extraction approach minimizes system bus usage while preserving the functionality needed for packet routing.
2Adaptability or versatility
If general-purpose hardware is used for software-based switching, then flexibility and ease of implementation are improved, but switching capacity is limited due to system bus bandwidth constraints
Solution Approach 1:
The patent introduces a new dimension of operation by enabling the NIC to perform header field extraction and processing independently of the CPU. This creates a parallel processing dimension where the NIC handles data preparation and the CPU handles decision-making, allowing the system to achieve higher switching capacities while maintaining software-based flexibility. The NIC's local buffer and DMA capabilities are utilized to bypass the system bus bottleneck.
3Reliability
If complete data packets are transferred from NIC to CPU for processing, then accurate packet handling is achieved, but system bus bandwidth is excessively consumed
Solution Approach 1:
The patent applies local quality by assigning different processing modes to different parts of the data packet. The header fields are extracted and transferred to the CPU for accurate processing, while the payload remains in the NIC's local buffer and is handled by the NIC's DMA engine. This differentiated approach ensures that the critical header information receives CPU attention for accurate routing decisions, while the bulk payload is efficiently transferred without consuming excessive bus bandwidth.
Data Source
AI summary
This disclosure relates to a method of improving switching capacity in a software-based network switch. The method may involve storing a data packet in a first local buffer, storing one or more header fields of the data packet in a second local buffer. A common identifier may be assigned to the data packet stored in the first local buffer and the one or more header fields stored in the second local buffer. The one or more header fields may be directly sent from the NIC to the CPU for the data packet processing. At least one header field of the one or more header fields may be modified by the CPU. Further, the one or more header fields may be overwritten with the at least one modified header field in the data packet stored in the first local buffer of the NIC based on the common identifier.


