|
353 | 353 | <p>Kernel bypass with DPDK</p>
|
354 | 354 | <aside class="notes">
|
355 | 355 | To get better performance, one can choose to bypass the kernel, fully or partially.
|
356 |
| -There are several kernel bypass options like: |
357 |
| -DPDK, (that would be the poster child of kernel bypass) |
358 |
| -Snabbswitch, |
359 |
| -PF_RING, |
360 |
| -Netmap. (I am personally more familiar with DPDK.) |
361 |
| - |
362 |
| - |
363 |
| -With kernel bypass, we move the NIC to the user-space. |
364 |
| -If the NIC is managed in the user-space, it means we skip things like context switching, networking layer processing, interrupts that happen in the kernel aka IRQ storms and do the packet-processing in the user-space. |
365 |
| -This is relevant at 10Gbps already. EPC today saturates 200Gbps already. |
366 |
| - |
367 |
| -NUMA awareness together with CPU isolation needs to be considered as well if we need high performance. |
368 |
| -Remember this is particularly interesting when using smartNICs, with a dual socket system using one smartNIC plugged in on PCIe slot, corresponding to one NUMA socket. |
369 |
| - |
| 356 | +<br><br>There are several kernel bypass options like: |
| 357 | +<br>DPDK, (that would be the poster child of kernel bypass) |
| 358 | +<br>Snabbswitch, |
| 359 | +<br>PF_RING, |
| 360 | +<br>Netmap. (I am personally more familiar with DPDK.) |
| 361 | +<br><br>With kernel bypass, we move the NIC to the user-space. |
| 362 | +<br>If the NIC is managed in the user-space, it means we skip things like context switching, networking layer processing, interrupts that happen in the kernel, IRQ storms and do the packet-processing in the user-space. |
| 363 | +<br><br>This is relevant at 10Gbps already. EPC today saturates 200Gbps already. |
| 364 | + |
| 365 | +<br><br>NUMA awareness together with CPU isolation needs to be considered as well if we need high performance. |
| 366 | +<br><br> |
370 | 367 | Moving to userspace means losing the abstraction level the kernel provides for e.g. hw resources, it means you need to load own driver.
|
371 |
| -Moving to userspace means the kernel space is skipped together with the good stuff too like networking functionality that needs to be reimplemented now. (like the whole TCP stack) |
372 |
| - |
| 368 | +<br>Moving to userspace means the kernel space is skipped together with the good stuff too like networking functionality that needs to be reimplemented now. |
373 | 369 | </aside>
|
374 | 370 | </section>
|
375 | 371 |
|
|
405 | 401 | <p>XDP and eBPF</p>
|
406 | 402 | <aside class="notes">
|
407 | 403 |
|
408 |
| -Another way to achieve high performance would be partially bypassing the Linux kernel, for example using XDP. |
| 404 | +Another way to achieve high performance would be partially bypassing the Linux kernel, for example using XDP. Well I don't fully agree XDP is really "partial" kernel bypass. |
409 | 405 | <br>
|
410 | 406 | <br>
|
411 | 407 | XDP (eXpress Data Path) is a component in the kernel that can be used for fast packet processing. It is an eBPF (I'll get back to eBPF in a jiffy) based high performance data path merged in the Linux kernel.
|
|
0 commit comments