Multi-core network packet steering: Difference between revisions

Content deleted Content added
FrancioT (talk | contribs)
added citations
FrancioT (talk | contribs)
added citations
Line 4:
As shown, by the figure beside, packets coming into the [[Network_interface_controller|network interface card (NIC)]] are processed and loaded to the receiving queues managed by the cores.
The main objective is being able to leverage all the cores available within the processor to process incoming packets, while also improving performances like [[Latency (engineering)|latency]] and [[Network throughput|throughput]].
<ref name="RSS kernel linux docs">{{Cite web|title=RSS kernel linux docs|url=https://www.kernel.org/doc/html/v5.1/networking/scaling.html#rss-receive-side-scaling|access-date=2025-07-08|website=kernel.org|language=en-US}}</ref><ref name="RFS by redhat">{{Cite web|title=RFS by redhat|url=https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/performance_tuning_guide/network-rfs|access-date=2025-07-08|website=docs.redhat.com|language=en-US}}</ref><ref name="RFS by nvidea">{{Cite web|title=RFS by nvidea|url=https://docs.nvidia.com/networking/display/mlnxofedv23070512/flow+steering|access-date=2025-07-08|website=docs.nvidia.com|language=en-US}}</ref><ref name="RSS overview by microsoft">{{Cite web|title=RSS overview by microsoft|url=https://learn.microsoft.com/en-us/windows-hardware/drivers/network/introduction-to-receive-side-scaling|access-date=2025-07-08|website=learn.microsoft.com|language=en-US}}</ref><ref name="RSS++">{{Cite journal |last=Barbette |first=Tom |last2=Katsikas |first2=Georgios P. |last3=Maguire |first3=Gerald Q. |last4=Kostić |first4=Dejan |date=2019-12-03 |title=RSS++: load and state-aware receive side scaling |url=https://dl.acm.org/doi/10.1145/3359989.3365412 |journal=Proceedings of the 15th International Conference on Emerging Networking Experiments And Technologies |series=CoNEXT '19 |___location=New York, NY, USA |publisher=Association for Computing Machinery |pages=318–333 |doi=10.1145/3359989.3365412 |isbn=978-1-4503-6998-5}}</ref><ref>{{Citation |last=Madden |first=Michael M. |title=Challenges Using the Linux Network Stack for Real-Time Communication |date=2019-01-06 |work=AIAA Scitech 2019 Forum |url=https://arc.aiaa.org/doi/10.2514/6.2019-0503 |access-date=2025-07-10 |series=AIAA SciTech Forum |publisher=American Institute of Aeronautics and Astronautics |doi=10.2514/6.2019-0503 |pages=9-11}}</ref><ref>{{Cite web |last=Herbert |first=Tom |date=2025-02-24 |title=The alphabet soup of receive packet steering: RSS, RPS, RFS, and aRFS |url=https://medium.com/@tom_84912/the-alphabet-soup-of-receive-packet-steering-rss-rps-rfs-and-arfs-c84347156d68 |access-date=2025-07-10 |website=Medium |language=en}}</ref><ref>{{Cite journal |last=Wu |first=Wenji |last2=DeMar |first2=Phil |last3=Crawford |first3=Matt |date=2011-02-01 |title=Why Can Some Advanced Ethernet NICs Cause Packet Reordering? |url=https://ieeexplore.ieee.org/document/5673999/ |journal=IEEE Communications Letters |volume=15 |issue=2 |pages=253–255 |doi=10.1109/LCOMM.2011.122010.102022 |issn=1558-2558}}</ref>
 
== Hardware techniques ==
Line 18:
In this way, packets corresponding to the same flow will be directed to the same receiving queue, without loosing the original order causing an [[Out-of-order delivery|out-of-order delivery]]. Moreover all incoming flows will be [[Load balancing (computing)|load balanced]] across all the available cores thanks to the hash function. <br>
Another important feature introduced by the indirection table is the capability of changing the mapping of flows to the cores without having to change the hash function, but by simply updating the table entries.
<ref>{{Cite web|title=RSS intel doc|url=https://www.intel.com/content/dam/support/us/en/documents/network/sb/318483001us2.pdf|access-date=2025-07-08|website=earn.microsoft.com|language=en-US}}</ref><ref name="RSS overview by microsoft" /><ref>{{Cite web|title=RSS by redhat|url=https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/performance_tuning_guide/network-rss|access-date=2025-07-08|website=docs.redhat.com|language=en-US}}</ref><ref name="RSS kernel linux docs" /><ref>{{Cite web|title=Receive-side scaling enhancements in windows server 2008|url=https://download.microsoft.com/download/a/d/f/adf1347d-08dc-41a4-9084-623b1194d4b2/rss_server2008.docx|access-date=2025-07-08|website=microsoft.com|language=en-US}}</ref><ref name="RSS++" />
 
=== aRFS ===