|
30 | 30 | <p>Enabling high-performance edge applications with OpenStack, OVS, and SmartNICs<p/>
|
31 | 31 | <aside class="notes">
|
32 | 32 | Thank you, Daniel, for the introduction.
|
33 |
| -<br><br>How many people heard about smartNICs |
| 33 | +<br><br>How many people heard about |
| 34 | +<br>smartNICs |
34 | 35 | <br>XDP?
|
35 | 36 | <br>BPF?
|
36 | 37 | <br>Openstack?
|
|
455 | 456 |
|
456 | 457 | </font>
|
457 | 458 | <aside class="notes">
|
458 |
| -To check if XDP it is enabled in the kernel, it's as simple as grepping for it in the kernel config file |
| 459 | +To check if XDP is enabled in the kernel, it's as simple as grepping for it in the kernel config file |
459 | 460 | <br>
|
460 | 461 | <br>
|
461 | 462 | The Linux kernel configuration item CONFIG_XDP_SOCKETS:
|
|
468 | 469 | </p>
|
469 | 470 | <aside class="notes">
|
470 | 471 |
|
471 |
| -So XDP is a hook in the Linux kernel, not a kernel bypass but a bypass of the network stack. It is a programale layer in the kernel network stack. |
| 472 | +So XDP is a hook in the Linux kernel, not a kernel bypass but a bypass of the network stack in the linux kernel. It is a programmable layer in the kernel network stack. |
472 | 473 | <br>
|
473 |
| -XDP operates directly on the packet buffer. |
474 |
| -20 or 25 years ago |
475 |
| - (packets are moved into sockets , decision taken 20 years ago, and this is not the fastest way) |
| 474 | +XDP operates at the same level as DPDK, directly on the packet buffers, operating on the packet before it is moved to socket buffer. |
| 475 | +The network stack in the kernel is conceived to be slow. There was a decision taken 20 or 25 years go, that packets should be delivered into sockets. |
| 476 | +This is not the fastest way, maybe you don't need to deliver all packets to sockets, think if you need to drop some of these packets for instance. |
476 | 477 | <br>
|
477 | 478 | <br>
|
478 |
| -DPDK steals the whole NIC, we dont do that with XDP , not taking the whole NIC. |
479 |
| -<br> |
480 |
| -a filter on receive but zero copy to user space |
| 479 | +While DPDK steals the whole NIC from linux kernel, XDP does not still the NIC from the server. In XDP we put in a filter per receive queue, make decisions on the packets with zero copy to userspace. This way all the fun features in kernel are available. |
481 | 480 | <br>
|
482 | 481 | <br>
|
483 |
| -XDP can be used in two ways: |
| 482 | +XDP can be used in two modes: native mode, generic (SKB) mode |
484 | 483 | <br>
|
485 |
| -Native mode XDP , a driver hook , before memory allocation , small no of instructions executed before we start processing packets |
| 484 | +Native mode XDP (process packet right after DMA, just before SKB allocation), a driver hook , before memory allocation , small no of instructions executed before we start processing packets |
486 | 485 | <br>
|
487 |
| -limited number of drivers that support XDP |
| 486 | +Limited because we need support for XDP in the driver, but higher performance mode. |
488 | 487 | <br>
|
489 | 488 | <br>
|
490 |
| -generic mode |
| 489 | +Generic mode |
491 | 490 | <br>
|
492 |
| -works on any net device , driver independent , but larger number of instructions executed which mean lower performance than native mode, when it comes to packet processing |
| 491 | +IT happens after DMA and SKB allocation, it means a larger number of instructions is executed before doing something with that packet, so this means significantly lower performance than native mode. |
| 492 | +Works on any NIC device, driver independent. |
493 | 493 | <br>
|
494 | 494 | <br>
|
495 |
| -dataplane which is inside the kernel |
| 495 | +You can look at XDP and BPF with a dataplane/controlplane approach. |
| 496 | +XDP is the dataplane which is inside the kernel |
| 497 | + |
496 | 498 | <br>
|
497 |
| -control plane in user space which is done from eBPF, userspace load eBPF program , everything goes through the BPF-syscall |
| 499 | +BPF is the control plane in user space, userspace load eBPF program. |
498 | 500 | <br>
|
499 |
| -the Native way is the way to go , using the XDP driver hook |
500 | 501 | <br>
|
501 |
| - |
| 502 | +(spanning tree daemon uses BPF to filter only BPDUs are comming on that socket) |
502 | 503 |
|
503 | 504 | </aside>
|
504 | 505 | </section>
|
|
0 commit comments