Multi-core network packet steering: Difference between revisions

Content deleted Content added
FrancioT (talk | contribs)
added RPS description
FrancioT (talk | contribs)
added RFS description
Line 56:
=== RFS ===
[[File:RFS logic.png|upright=1.7|thumb|diagram showing how the RFS logic distribute each incoming packet to the core running the corresponding application]]
Receive Flow Steering (RFS) upgrades RPS in the same direction as the aRFS hardware solution does.
By routing packet flows to the same CPU core running the consuming application, cache locality can be improved and leveraged, avoiding many misses and reducing the latencies introduced by the retrieval of the data from the [[Memory hierarchy|central memory]]. <br>
To do this, after having computed the hash of the header fields for the current packet, the result is used to index a lookup table.
This table is managed by the scheduler, which updates its entries when the application processes are moved between the cores.
The overall CPU load distribution is balanced as long as the applications in [[User space and kernel space|user-space]] are evenly distributed across the multiple cores.
<ref name="RFS by redhat" />
<ref name="RFS by nvidea" />
<ref>{{Cite web|title=RFS kernel linux docs|url=https://www.kernel.org/doc/html/v5.1/networking/scaling.html#rfs-receive-flow-steering|access-date=2025-07-08|website=kernel.org|language=en-US}}</ref>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=== XPS (in transmission) ===
Line 91 ⟶ 79:
* [[Network interface controller|NIC]]
* [[Data processing unit|SmartNIC]]
* [[packet processing|Packet processing]]
{{div col end}}
== References ==