|
29 | 29 | <section><p><b>In the NIC of time</b></p>
|
30 | 30 | <p>Enabling high-performance edge applications with OpenStack, OVS, and SmartNICs<p/>
|
31 | 31 | <aside class="notes">
|
32 |
| - Thank you, Daniel, for the (nice? warm?) introduction. |
| 32 | +Thank you, Daniel, for the introduction. |
| 33 | +<br><br>How many people heard about smartNICs |
| 34 | +<br>XDP? |
| 35 | +<br>BPF? |
| 36 | +<br>Openstack? |
33 | 37 | </aside>
|
34 | 38 | </section>
|
35 | 39 | <!–– Slide1 ––>
|
|
64 | 68 | </section>
|
65 | 69 | <!–– Slide5 ––>
|
66 | 70 | <section>
|
67 |
| - <tr> |
68 |
| - <th><img src="pics/slide5_erlang.jpg" width=44% height=44%></th> |
69 |
| - <th><img src="pics/slide5_bluetooth.png" width=25% height=25%></th> |
70 |
| - </tr> |
71 | 71 | <tr>
|
72 | 72 | <p>
|
73 | 73 | <th>40% of all mobile traffic data</th>
|
74 |
| - </p> |
| 74 | + </p> |
| 75 | + |
| 76 | + </tr> |
| 77 | + <tr> |
| 78 | + <th><img src="pics/slide5_erlang.jpg" width=25% height=25%></th> |
75 | 79 | </tr>
|
76 | 80 | <aside class="notes">
|
77 | 81 | If you don't mind, I'd like to tell you a few things about Ericsson. We're NOT making phones! as most of the people think ....
|
|
426 | 430 | <aside class="notes">
|
427 | 431 |
|
428 | 432 | Another way to achieve high performance would be partially bypassing the Linux kernel, for example using XDP.
|
429 |
| -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 explaining what eBPF is) based high performance data path merged in the Linux kernel. |
430 |
| -XDP (eXpress Data Path) is shipped with the kernel since version 4.8 and it is enabled by default, with CONFIG_BPF_SYSCALL. |
| 433 | +<br> |
| 434 | +<br> |
| 435 | +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. |
| 436 | +<br> |
| 437 | +<br> |
| 438 | +XDP is shipped with the kernel since version 4.8 and it is enabled by default, with CONFIG_BPF_SYSCALL. |
431 | 439 |
|
432 | 440 | </aside>
|
433 | 441 | </section>
|
|
448 | 456 | </font>
|
449 | 457 | <aside class="notes">
|
450 | 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 | +<br> |
| 460 | +<br> |
451 | 461 | The Linux kernel configuration item CONFIG_XDP_SOCKETS:
|
452 | 462 | </aside>
|
453 | 463 | </section>
|
|
457 | 467 | <img src="pics/kernel-diag-ascii.svg" width=35% height=35%>
|
458 | 468 | </p>
|
459 | 469 | <aside class="notes">
|
460 |
| -PICTURE OF XDP |
461 |
| - |
462 |
| -So XDP is a hook in the Linux kernel, not a kernel bypass but a bypass of the network stack |
463 |
| -XDP operates directly on the packet buffer. (packets are moved into sockets , decision taken 20 years ago, and this is not the fastest way) |
464 | 470 |
|
| 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 | +<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) |
| 476 | +<br> |
| 477 | +<br> |
465 | 478 | DPDK steals the whole NIC, we dont do that with XDP , not taking the whole NIC.
|
| 479 | +<br> |
466 | 480 | a filter on receive but zero copy to user space
|
467 |
| - |
468 |
| - |
| 481 | +<br> |
| 482 | +<br> |
469 | 483 | XDP can be used in two ways:
|
470 |
| -first mode |
| 484 | +<br> |
471 | 485 | Native mode XDP , a driver hook , before memory allocation , small no of instructions executed before we start processing packets
|
| 486 | +<br> |
472 | 487 | limited number of drivers that support XDP
|
473 |
| - |
474 |
| -second mode |
| 488 | +<br> |
| 489 | +<br> |
475 | 490 | generic mode
|
| 491 | +<br> |
476 | 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
|
477 |
| - |
| 493 | +<br> |
| 494 | +<br> |
478 | 495 | dataplane which is inside the kernel
|
| 496 | +<br> |
479 | 497 | control plane in user space which is done from eBPF, userspace load eBPF program , everything goes through the BPF-syscall
|
480 |
| - |
481 |
| -the Native way is the way to go |
482 |
| -XDP driver hook |
| 498 | +<br> |
| 499 | +the Native way is the way to go , using the XDP driver hook |
| 500 | +<br> |
483 | 501 |
|
484 | 502 |
|
485 | 503 | </aside>
|
|
0 commit comments