github.com/cilium/cilium@v1.16.2/Documentation/bpf/resources.rst (about) 1 .. only:: not (epub or latex or html) 2 3 WARNING: You are looking at unreleased Cilium documentation. 4 Please use the official rendered version released here: 5 https://docs.cilium.io 6 7 .. _bpf_users: 8 9 Further Reading 10 =============== 11 12 Mentioned lists of docs, projects, talks, papers, and further reading 13 material are likely not complete. Thus, feel free to open pull requests 14 to complete the list. 15 16 Kernel Developer FAQ 17 -------------------- 18 19 Under ``Documentation/bpf/``, the Linux kernel provides two FAQ files that 20 are mainly targeted for kernel developers involved in the BPF subsystem. 21 22 * **BPF Devel FAQ:** this document provides mostly information around patch 23 submission process as well as BPF kernel tree, stable tree and bug 24 reporting workflows, questions around BPF's extensibility and interaction 25 with LLVM and more. 26 27 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/bpf/bpf_devel_QA.rst 28 29 .. 30 31 * **BPF Design FAQ:** this document tries to answer frequently asked questions 32 around BPF design decisions related to the instruction set, verifier, 33 calling convention, JITs, etc. 34 35 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/bpf/bpf_design_QA.rst 36 37 Projects using BPF 38 ------------------ 39 40 The following list includes a selection of open source projects making 41 use of BPF respectively provide tooling for BPF. In this context the eBPF 42 instruction set is specifically meant instead of projects utilizing the 43 legacy cBPF: 44 45 **Tracing** 46 47 * **BCC** 48 49 BCC stands for BPF Compiler Collection and its key feature is to provide 50 a set of easy to use and efficient kernel tracing utilities all based 51 upon BPF programs hooking into kernel infrastructure based upon kprobes, 52 kretprobes, tracepoints, uprobes, uretprobes as well as USDT probes. The 53 collection provides close to hundred tools targeting different layers 54 across the stack from applications, system libraries, to the various 55 different kernel subsystems in order to analyze a system's performance 56 characteristics or problems. Additionally, BCC provides an API in order 57 to be used as a library for other projects. 58 59 https://github.com/iovisor/bcc 60 61 .. 62 63 * **bpftrace** 64 65 bpftrace is a DTrace-style dynamic tracing tool for Linux and uses LLVM 66 as a back end to compile scripts to BPF-bytecode and makes use of BCC 67 for interacting with the kernel's BPF tracing infrastructure. It provides 68 a higher-level language for implementing tracing scripts compared to 69 native BCC. 70 71 https://github.com/ajor/bpftrace 72 73 .. 74 75 * **perf** 76 77 The perf tool which is developed by the Linux kernel community as 78 part of the kernel source tree provides a way to load tracing BPF 79 programs through the conventional perf record subcommand where the 80 aggregated data from BPF can be retrieved and post processed in 81 perf.data for example through perf script and other means. 82 83 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/perf 84 85 .. 86 87 * **ply** 88 89 ply is a tracing tool that follows the 'Little Language' approach of 90 yore, and compiles ply scripts into Linux BPF programs that are attached 91 to kprobes and tracepoints in the kernel. The scripts have a C-like syntax, 92 heavily inspired by DTrace and by extension awk. ply keeps dependencies 93 to very minimum and only requires flex and bison at build time, only libc 94 at runtime. 95 96 https://github.com/wkz/ply 97 98 .. 99 100 * **systemtap** 101 102 systemtap is a scripting language and tool for extracting, filtering and 103 summarizing data in order to diagnose and analyze performance or functional 104 problems. It comes with a BPF back end called stapbpf which translates 105 the script directly into BPF without the need of an additional compiler 106 and injects the probe into the kernel. Thus, unlike stap's kernel modules 107 this does neither have external dependencies nor requires to load kernel 108 modules. 109 110 https://sourceware.org/git/gitweb.cgi?p=systemtap.git;a=summary 111 112 .. 113 114 * **PCP** 115 116 Performance Co-Pilot (PCP) is a system performance and analysis framework 117 which is able to collect metrics through a variety of agents as well as 118 analyze collected systems' performance metrics in real-time or by using 119 historical data. With pmdabcc, PCP has a BCC based performance metrics 120 domain agent which extracts data from the kernel via BPF and BCC. 121 122 https://github.com/performancecopilot/pcp 123 124 .. 125 126 * **Weave Scope** 127 128 Weave Scope is a cloud monitoring tool collecting data about processes, 129 networking connections or other system data by making use of BPF in combination 130 with kprobes. Weave Scope works on top of the gobpf library in order to load 131 BPF ELF files into the kernel, and comes with a tcptracer-bpf tool which 132 monitors connect, accept and close calls in order to trace TCP events. 133 134 https://github.com/weaveworks/scope 135 136 .. 137 138 **Networking** 139 140 * **Cilium** 141 142 Cilium provides and transparently secures network connectivity and load-balancing 143 between application workloads such as application containers or processes. Cilium 144 operates at Layer 3/4 to provide traditional networking and security services 145 as well as Layer 7 to protect and secure use of modern application protocols 146 such as HTTP, gRPC and Kafka. It is integrated into orchestration frameworks 147 such as Kubernetes. BPF is the foundational part of Cilium that operates in 148 the kernel's networking data path. 149 150 https://github.com/cilium/cilium 151 152 .. 153 154 * **Suricata** 155 156 Suricata is a network IDS, IPS and NSM engine, and utilizes BPF as well as XDP 157 in three different areas, that is, as BPF filter in order to process or bypass 158 certain packets, as a BPF based load balancer in order to allow for programmable 159 load balancing and for XDP to implement a bypass or dropping mechanism at high 160 packet rates. 161 162 https://suricata.readthedocs.io/en/suricata-5.0.2/capture-hardware/ebpf-xdp.html 163 164 https://github.com/OISF/suricata 165 166 .. 167 168 * **systemd** 169 170 systemd allows for IPv4/v6 accounting as well as implementing network access 171 control for its systemd units based on BPF's cgroup ingress and egress hooks. 172 Accounting is based on packets / bytes, and ACLs can be specified as address 173 prefixes for allow / deny rules. More information can be found at: 174 175 http://0pointer.net/blog/ip-accounting-and-access-lists-with-systemd.html 176 177 https://github.com/systemd/systemd 178 179 .. 180 181 * **iproute2** 182 183 iproute2 offers the ability to load BPF programs as LLVM generated ELF files 184 into the kernel. iproute2 supports both, XDP BPF programs as well as tc BPF 185 programs through a common BPF loader backend. The tc and ip command line 186 utilities enable loader and introspection functionality for the user. 187 188 https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/ 189 190 .. 191 192 * **p4c-xdp** 193 194 p4c-xdp presents a P4 compiler backend targeting BPF and XDP. P4 is a domain 195 specific language describing how packets are processed by the data plane of 196 a programmable network element such as NICs, appliances or switches, and with 197 the help of p4c-xdp P4 programs can be translated into BPF C programs which 198 can be compiled by clang / LLVM and loaded as BPF programs into the kernel 199 at XDP layer for high performance packet processing. 200 201 https://github.com/vmware/p4c-xdp 202 203 .. 204 205 **Others** 206 207 * **LLVM** 208 209 clang / LLVM provides the BPF back end in order to compile C BPF programs 210 into BPF instructions contained in ELF files. The LLVM BPF back end is 211 developed alongside with the BPF core infrastructure in the Linux kernel 212 and maintained by the same community. clang / LLVM is a key part in the 213 toolchain for developing BPF programs. 214 215 https://llvm.org/ 216 217 .. 218 219 * **libbpf** 220 221 libbpf is a generic BPF library which is developed by the Linux kernel 222 community as part of the kernel source tree and allows for loading and 223 attaching BPF programs from LLVM generated ELF files into the kernel. 224 The library is used by other kernel projects such as perf and bpftool. 225 226 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/lib/bpf 227 228 .. 229 230 * **bpftool** 231 232 bpftool is the main tool for introspecting and debugging BPF programs 233 and BPF maps, and like libbpf is developed by the Linux kernel community. 234 It allows for dumping all active BPF programs and maps in the system, 235 dumping and disassembling BPF or JITed BPF instructions from a program 236 as well as dumping and manipulating BPF maps in the system. bpftool 237 supports interaction with the BPF filesystem, loading various program 238 types from an object file into the kernel and much more. 239 240 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/bpf/bpftool 241 242 .. 243 244 * **cilium/ebpf** 245 246 ``cilium/ebpf`` (ebpf-go) is a pure Go library that provides utilities for 247 loading, compiling, and debugging eBPF programs. It has minimal external 248 dependencies and is intended to be used in long-running processes. 249 250 Its ``bpf2go`` utility automates away compiling eBPF C programs and embedding 251 them into Go binaries. 252 253 It implements attaching programs to various kernel hooks, as well as kprobes 254 and uprobes for tracing arbitrary kernel and user space functions. It also 255 features a complete assembler that allows constructing eBPF programs at 256 runtime using Go, or modifying them after they've been loaded from an ELF 257 object. 258 259 https://github.com/cilium/ebpf 260 261 .. 262 263 * **ebpf_asm** 264 265 ebpf_asm provides an assembler for BPF programs written in an Intel-like assembly 266 syntax, and therefore offers an alternative for writing BPF programs directly in 267 assembly for cases where programs are rather small and simple without needing the 268 clang / LLVM toolchain. 269 270 https://github.com/Xilinx-CNS/ebpf_asm 271 272 .. 273 274 XDP Newbies 275 ----------- 276 277 There are a couple of walk-through posts by David S. Miller to the xdp-newbies 278 mailing list (http://vger.kernel.org/vger-lists.html#xdp-newbies), which explain 279 various parts of XDP and BPF: 280 281 4. May 2017, 282 BPF Verifier Overview, 283 David S. Miller, 284 https://www.spinics.net/lists/xdp-newbies/msg00185.html 285 286 3. May 2017, 287 Contextually speaking..., 288 David S. Miller, 289 https://www.spinics.net/lists/xdp-newbies/msg00181.html 290 291 2. May 2017, 292 bpf.h and you..., 293 David S. Miller, 294 https://www.spinics.net/lists/xdp-newbies/msg00179.html 295 296 1. Apr 2017, 297 XDP example of the day, 298 David S. Miller, 299 https://www.spinics.net/lists/xdp-newbies/msg00009.html 300 301 BPF Newsletter 302 -------------- 303 304 Alexander Alemayhu initiated a newsletter around BPF roughly once per week 305 covering latest developments around BPF in Linux kernel land and its 306 surrounding ecosystem in user space. 307 308 All BPF update newsletters (01 - 12) can be found here: 309 310 https://cilium.io/blog/categories/technology/5/ 311 312 And for the news on the latest resources and developments in the eBPF world, 313 please refer to the link here: 314 315 https://ebpf.io/blog 316 317 Podcasts 318 -------- 319 320 There have been a number of technical podcasts partially covering BPF. 321 Incomplete list: 322 323 5. Feb 2017, 324 Linux Networking Update from Netdev Conference, 325 Thomas Graf, 326 Software Gone Wild, Show 71, 327 https://blog.ipspace.net/2017/02/linux-networking-update-from-netdev.html 328 https://www.ipspace.net/nuggets/podcast/Show_71-NetDev_Update.mp3 329 330 4. Jan 2017, 331 The IO Visor Project, 332 Brenden Blanco, 333 OVS Orbit, Episode 23, 334 https://ovsorbit.org/#e23 335 https://ovsorbit.org/episode-23.mp3 336 337 3. Oct 2016, 338 Fast Linux Packet Forwarding, 339 Thomas Graf, 340 Software Gone Wild, Show 64, 341 https://blog.ipspace.net/2016/10/fast-linux-packet-forwarding-with.html 342 https://www.ipspace.net/nuggets/podcast/Show_64-Cilium_with_Thomas_Graf.mp3 343 344 2. Aug 2016, 345 P4 on the Edge, 346 John Fastabend, 347 OVS Orbit, Episode 11, 348 https://ovsorbit.org/#e11 349 https://ovsorbit.org/episode-11.mp3 350 351 1. May 2016, 352 Cilium, 353 Thomas Graf, 354 OVS Orbit, Episode 4, 355 https://ovsorbit.org/#e4 356 https://ovsorbit.org/episode-4.mp3 357 358 Blog posts 359 ---------- 360 361 The following (incomplete) list includes blog posts around BPF, XDP and related projects: 362 363 34. May 2017, 364 An entertaining eBPF XDP adventure, 365 Suchakra Sharma, 366 https://suchakra.wordpress.com/2017/05/23/an-entertaining-ebpf-xdp-adventure/ 367 368 33. May 2017, 369 eBPF, part 2: Syscall and Map Types, 370 Ferris Ellis, 371 https://ferrisellis.com/posts/ebpf_syscall_and_maps/ 372 373 32. May 2017, 374 Monitoring the Control Plane, 375 Gary Berger, 376 https://www.firstclassfunc.com/2018/07/monitoring-the-control-plane/ 377 378 31. Apr 2017, 379 USENIX/LISA 2016 Linux bcc/BPF Tools, 380 Brendan Gregg, 381 http://www.brendangregg.com/blog/2017-04-29/usenix-lisa-2016-bcc-bpf-tools.html 382 383 30. Apr 2017, 384 Liveblog: Cilium for Network and Application Security with BPF and XDP, 385 Scott Lowe, 386 https://blog.scottlowe.org/2017/04/18/black-belt-cilium/ 387 388 29. Apr 2017, 389 eBPF, part 1: Past, Present, and Future, 390 Ferris Ellis, 391 https://ferrisellis.com/posts/ebpf_past_present_future/ 392 393 28. Mar 2017, 394 Analyzing KVM Hypercalls with eBPF Tracing, 395 Suchakra Sharma, 396 https://suchakra.wordpress.com/2017/03/31/analyzing-kvm-hypercalls-with-ebpf-tracing/ 397 398 27. Jan 2017, 399 Golang bcc/BPF Function Tracing, 400 Brendan Gregg, 401 http://www.brendangregg.com/blog/2017-01-31/golang-bcc-bpf-function-tracing.html 402 403 26. Dec 2016, 404 Give me 15 minutes and I'll change your view of Linux tracing, 405 Brendan Gregg, 406 http://www.brendangregg.com/blog/2016-12-27/linux-tracing-in-15-minutes.html 407 408 25. Nov 2016, 409 Cilium: Networking and security for containers with BPF and XDP, 410 Daniel Borkmann, 411 https://opensource.googleblog.com/2016/11/cilium-networking-and-security.html 412 413 24. Nov 2016, 414 Linux bcc/BPF tcplife: TCP Lifespans, 415 Brendan Gregg, 416 http://www.brendangregg.com/blog/2016-11-30/linux-bcc-tcplife.html 417 418 23. Oct 2016, 419 DTrace for Linux 2016, 420 Brendan Gregg, 421 http://www.brendangregg.com/blog/2016-10-27/dtrace-for-linux-2016.html 422 423 22. Oct 2016, 424 Linux 4.9's Efficient BPF-based Profiler, 425 Brendan Gregg, 426 http://www.brendangregg.com/blog/2016-10-21/linux-efficient-profiler.html 427 428 21. Oct 2016, 429 Linux bcc tcptop, 430 Brendan Gregg, 431 http://www.brendangregg.com/blog/2016-10-15/linux-bcc-tcptop.html 432 433 20. Oct 2016, 434 Linux bcc/BPF Node.js USDT Tracing, 435 Brendan Gregg, 436 http://www.brendangregg.com/blog/2016-10-12/linux-bcc-nodejs-usdt.html 437 438 19. Oct 2016, 439 Linux bcc/BPF Run Queue (Scheduler) Latency, 440 Brendan Gregg, 441 http://www.brendangregg.com/blog/2016-10-08/linux-bcc-runqlat.html 442 443 18. Oct 2016, 444 Linux bcc ext4 Latency Tracing, 445 Brendan Gregg, 446 http://www.brendangregg.com/blog/2016-10-06/linux-bcc-ext4dist-ext4slower.html 447 448 17. Oct 2016, 449 Linux MySQL Slow Query Tracing with bcc/BPF, 450 Brendan Gregg, 451 http://www.brendangregg.com/blog/2016-10-04/linux-bcc-mysqld-qslower.html 452 453 16. Oct 2016, 454 Linux bcc Tracing Security Capabilities, 455 Brendan Gregg, 456 http://www.brendangregg.com/blog/2016-10-01/linux-bcc-security-capabilities.html 457 458 15. Sep 2016, 459 Suricata bypass feature, 460 Eric Leblond, 461 https://www.stamus-networks.com/blog/2016/09/28/suricata-bypass-feature 462 463 14. Aug 2016, 464 Introducing the p0f BPF compiler, 465 Gilberto Bertin, 466 https://blog.cloudflare.com/introducing-the-p0f-bpf-compiler/ 467 468 13. Jun 2016, 469 Ubuntu Xenial bcc/BPF, 470 Brendan Gregg, 471 http://www.brendangregg.com/blog/2016-06-14/ubuntu-xenial-bcc-bpf.html 472 473 12. Mar 2016, 474 Linux BPF/bcc Road Ahead, March 2016, 475 Brendan Gregg, 476 http://www.brendangregg.com/blog/2016-03-28/linux-bpf-bcc-road-ahead-2016.html 477 478 11. Mar 2016, 479 Linux BPF Superpowers, 480 Brendan Gregg, 481 http://www.brendangregg.com/blog/2016-03-05/linux-bpf-superpowers.html 482 483 10. Feb 2016, 484 Linux eBPF/bcc uprobes, 485 Brendan Gregg, 486 http://www.brendangregg.com/blog/2016-02-08/linux-ebpf-bcc-uprobes.html 487 488 9. Feb 2016, 489 Who is waking the waker? (Linux chain graph prototype), 490 Brendan Gregg, 491 http://www.brendangregg.com/blog/2016-02-05/ebpf-chaingraph-prototype.html 492 493 8. Feb 2016, 494 Linux Wakeup and Off-Wake Profiling, 495 Brendan Gregg, 496 http://www.brendangregg.com/blog/2016-02-01/linux-wakeup-offwake-profiling.html 497 498 7. Jan 2016, 499 Linux eBPF Off-CPU Flame Graph, 500 Brendan Gregg, 501 http://www.brendangregg.com/blog/2016-01-20/ebpf-offcpu-flame-graph.html 502 503 6. Jan 2016, 504 Linux eBPF Stack Trace Hack, 505 Brendan Gregg, 506 http://www.brendangregg.com/blog/2016-01-18/ebpf-stack-trace-hack.html 507 508 1. Sep 2015, 509 Linux Networking, Tracing and IO Visor, a New Systems Performance Tool for a Distributed World, 510 Suchakra Sharma, 511 https://thenewstack.io/comparing-dtrace-iovisor-new-systems-performance-platform-advance-linux-networking-virtualization/ 512 513 5. Aug 2015, 514 BPF Internals - II, 515 Suchakra Sharma, 516 https://suchakra.wordpress.com/2015/08/12/bpf-internals-ii/ 517 518 4. May 2015, 519 eBPF: One Small Step, 520 Brendan Gregg, 521 http://www.brendangregg.com/blog/2015-05-15/ebpf-one-small-step.html 522 523 3. May 2015, 524 BPF Internals - I, 525 Suchakra Sharma, 526 https://suchakra.wordpress.com/2015/05/18/bpf-internals-i/ 527 528 2. Jul 2014, 529 Introducing the BPF Tools, 530 Marek Majkowski, 531 https://blog.cloudflare.com/introducing-the-bpf-tools/ 532 533 1. May 2014, 534 BPF - the forgotten bytecode, 535 Marek Majkowski, 536 https://blog.cloudflare.com/bpf-the-forgotten-bytecode/ 537 538 Books 539 ----- 540 541 BPF Performance Tools (Gregg, Addison Wesley, 2019) 542 543 Talks 544 ----- 545 546 The following (incomplete) list includes talks and conference papers 547 related to BPF and XDP: 548 549 46. July 2021, 550 eBPF & Cilium Office Hours episode 13: XDP Hands-on Tutorial, with Liz Rice, 551 https://www.youtube.com/watch?v=YUI78vC4qSQ&t=300s 552 553 45. June 2021, 554 eBPF & Cilium Office Hours episode 9: XDP and Load Balancing, 555 with Daniel Borkmann, 556 https://www.youtube.com/watch?v=OIyPm6K4ooY&t=308s 557 558 44. May 2017, 559 PyCon 2017, Portland, 560 Executing python functions in the linux kernel by transpiling to bpf, 561 Alex Gartrell, 562 https://www.youtube.com/watch?v=CpqMroMBGP4 563 564 43. May 2017, 565 gluecon 2017, Denver, 566 Cilium + BPF: Least Privilege Security on API Call Level for Microservices, 567 Dan Wendlandt, 568 http://gluecon.com/#agenda 569 570 42. May 2017, 571 Lund Linux Con, Lund, 572 XDP - eXpress Data Path, 573 Jesper Dangaard Brouer, 574 http://people.netfilter.org/hawk/presentations/LLC2017/XDP_DDoS_protecting_LLC2017.pdf 575 576 41. May 2017, 577 Polytechnique Montreal, 578 Trace Aggregation and Collection with eBPF, 579 Suchakra Sharma, 580 https://hsdm.dorsal.polymtl.ca/system/files/eBPF-5May2017%20(1).pdf 581 582 40. Apr 2017, 583 DockerCon, Austin, 584 Cilium - Network and Application Security with BPF and XDP, 585 Thomas Graf, 586 https://www.slideshare.net/ThomasGraf5/dockercon-2017-cilium-network-and-application-security-with-bpf-and-xdp 587 588 39. Apr 2017, 589 NetDev 2.1, Montreal, 590 XDP Mythbusters, 591 David S. Miller, 592 https://netdevconf.info/2.1/slides/apr7/miller-XDP-MythBusters.pdf 593 594 38. Apr 2017, 595 NetDev 2.1, Montreal, 596 Droplet: DDoS countermeasures powered by BPF + XDP, 597 Huapeng Zhou, Doug Porter, Ryan Tierney, Nikita Shirokov, 598 https://netdevconf.info/2.1/slides/apr6/zhou-netdev-xdp-2017.pdf 599 600 37. Apr 2017, 601 NetDev 2.1, Montreal, 602 XDP in practice: integrating XDP in our DDoS mitigation pipeline, 603 Gilberto Bertin, 604 https://netdevconf.info/2.1/slides/apr6/bertin_Netdev-XDP.pdf 605 606 36. Apr 2017, 607 NetDev 2.1, Montreal, 608 XDP for the Rest of Us, 609 Andy Gospodarek, Jesper Dangaard Brouer, 610 https://netdevconf.info/2.1/slides/apr7/gospodarek-Netdev2.1-XDP-for-the-Rest-of-Us_Final.pdf 611 612 35. Mar 2017, 613 SCALE15x, Pasadena, 614 Linux 4.x Tracing: Performance Analysis with bcc/BPF, 615 Brendan Gregg, 616 https://www.slideshare.net/brendangregg/linux-4x-tracing-performance-analysis-with-bccbpf 617 618 34. Mar 2017, 619 XDP Inside and Out, 620 David S. Miller, 621 https://raw.githubusercontent.com/iovisor/bpf-docs/master/XDP_Inside_and_Out.pdf 622 623 33. Mar 2017, 624 OpenSourceDays, Copenhagen, 625 XDP - eXpress Data Path, Used for DDoS protection, 626 Jesper Dangaard Brouer, 627 http://people.netfilter.org/hawk/presentations/OpenSourceDays2017/XDP_DDoS_protecting_osd2017.pdf 628 629 32. Mar 2017, 630 source{d}, Infrastructure 2017, Madrid, 631 High-performance Linux monitoring with eBPF, 632 Alfonso Acosta, 633 https://www.youtube.com/watch?v=k4jqTLtdrxQ 634 635 31. Feb 2017, 636 FOSDEM 2017, Brussels, 637 Stateful packet processing with eBPF, an implementation of OpenState interface, 638 Quentin Monnet, 639 https://archive.fosdem.org/2017/schedule/event/stateful_ebpf/ 640 641 30. Feb 2017, 642 FOSDEM 2017, Brussels, 643 eBPF and XDP walkthrough and recent updates, 644 Daniel Borkmann, 645 http://borkmann.ch/talks/2017_fosdem.pdf 646 647 29. Feb 2017, 648 FOSDEM 2017, Brussels, 649 Cilium - BPF & XDP for containers, 650 Thomas Graf, 651 https://archive.fosdem.org/2017/schedule/event/cilium/ 652 653 28. Jan 2017, 654 linuxconf.au, Hobart, 655 BPF: Tracing and more, 656 Brendan Gregg, 657 https://www.slideshare.net/brendangregg/bpf-tracing-and-more 658 659 27. Dec 2016, 660 USENIX LISA 2016, Boston, 661 Linux 4.x Tracing Tools: Using BPF Superpowers, 662 Brendan Gregg, 663 https://www.slideshare.net/brendangregg/linux-4x-tracing-tools-using-bpf-superpowers 664 665 26. Nov 2016, 666 Linux Plumbers, Santa Fe, 667 Cilium: Networking & Security for Containers with BPF & XDP, 668 Thomas Graf, 669 https://www.slideshare.net/ThomasGraf5/clium-container-networking-with-bpf-xdp 670 671 25. Nov 2016, 672 OVS Conference, Santa Clara, 673 Offloading OVS Flow Processing using eBPF, 674 William (Cheng-Chun) Tu, 675 http://www.openvswitch.org/support/ovscon2016/7/1120-tu.pdf 676 677 24. Oct 2016, 678 One.com, Copenhagen, 679 XDP - eXpress Data Path, Intro and future use-cases, 680 Jesper Dangaard Brouer, 681 http://people.netfilter.org/hawk/presentations/xdp2016/xdp_intro_and_use_cases_sep2016.pdf 682 683 23. Oct 2016, 684 Docker Distributed Systems Summit, Berlin, 685 Cilium: Networking & Security for Containers with BPF & XDP, 686 Thomas Graf, 687 https://www.slideshare.net/Docker/cilium-bpf-xdp-for-containers-66969823 688 689 22. Oct 2016, 690 NetDev 1.2, Tokyo, 691 Data center networking stack, 692 Tom Herbert, 693 https://netdevconf.info/1.2/session.html?tom-herbert 694 695 21. Oct 2016, 696 NetDev 1.2, Tokyo, 697 Fast Programmable Networks & Encapsulated Protocols, 698 David S. Miller, 699 https://netdevconf.info/1.2/session.html?david-miller-keynote 700 701 20. Oct 2016, 702 NetDev 1.2, Tokyo, 703 XDP workshop - Introduction, experience, and future development, 704 Tom Herbert, 705 https://netdevconf.info/1.2/session.html?herbert-xdp-workshop 706 707 19. Oct 2016, 708 NetDev1.2, Tokyo, 709 The adventures of a Suricate in eBPF land, 710 Eric Leblond, 711 https://netdevconf.info/1.2/slides/oct6/10_suricata_ebpf.pdf 712 713 18. Oct 2016, 714 NetDev1.2, Tokyo, 715 cls_bpf/eBPF updates since netdev 1.1, 716 Daniel Borkmann, 717 http://borkmann.ch/talks/2016_tcws.pdf 718 719 17. Oct 2016, 720 NetDev1.2, Tokyo, 721 Advanced programmability and recent updates with tc’s cls_bpf, 722 Daniel Borkmann, 723 http://borkmann.ch/talks/2016_netdev2.pdf 724 https://netdevconf.info/1.2/papers/borkmann.pdf 725 726 16. Oct 2016, 727 NetDev 1.2, Tokyo, 728 eBPF/XDP hardware offload to SmartNICs, 729 Jakub Kicinski, Nic Viljoen, 730 https://netdevconf.info/1.2/papers/eBPF_HW_OFFLOAD.pdf 731 732 15. Aug 2016, 733 LinuxCon, Toronto, 734 What Can BPF Do For You?, 735 Brenden Blanco, 736 https://events.static.linuxfound.org/sites/events/files/slides/iovisor-lc-bof-2016.pdf 737 738 14. Aug 2016, 739 LinuxCon, Toronto, 740 Cilium - Fast IPv6 Container Networking with BPF and XDP, 741 Thomas Graf, 742 https://www.slideshare.net/ThomasGraf5/cilium-fast-ipv6-container-networking-with-bpf-and-xdp 743 744 13. Aug 2016, 745 P4, EBPF and Linux TC Offload, 746 Dinan Gunawardena, Jakub Kicinski, 747 https://de.slideshare.net/Open-NFP/p4-epbf-and-linux-tc-offload 748 749 12. Jul 2016, 750 Linux Meetup, Santa Clara, 751 eXpress Data Path, 752 Brenden Blanco, 753 https://www.slideshare.net/IOVisor/express-data-path-linux-meetup-santa-clara-july-2016 754 755 11. Jul 2016, 756 Linux Meetup, Santa Clara, 757 CETH for XDP, 758 Yan Chan, Yunsong Lu, 759 https://www.slideshare.net/IOVisor/ceth-for-xdp-linux-meetup-santa-clara-july-2016 760 761 10. May 2016, 762 P4 workshop, Stanford, 763 P4 on the Edge, 764 John Fastabend, 765 https://schd.ws/hosted_files/2016p4workshop/1d/Intel%20Fastabend-P4%20on%20the%20Edge.pdf 766 767 9. Mar 2016, 768 Performance @Scale 2016, Menlo Park, 769 Linux BPF Superpowers, 770 Brendan Gregg, 771 https://www.slideshare.net/brendangregg/linux-bpf-superpowers 772 773 8. Mar 2016, 774 eXpress Data Path, 775 Tom Herbert, Alexei Starovoitov, 776 https://raw.githubusercontent.com/iovisor/bpf-docs/master/Express_Data_Path.pdf 777 778 7. Feb 2016, 779 NetDev1.1, Seville, 780 On getting tc classifier fully programmable with cls_bpf, 781 Daniel Borkmann, 782 http://borkmann.ch/talks/2016_netdev.pdf 783 https://netdevconf.info/1.1/proceedings/papers/On-getting-tc-classifier-fully-programmable-with-cls-bpf.pdf 784 785 6. Jan 2016, 786 FOSDEM 2016, Brussels, 787 Linux tc and eBPF, 788 Daniel Borkmann, 789 http://borkmann.ch/talks/2016_fosdem.pdf 790 791 5. Oct 2015, 792 LinuxCon Europe, Dublin, 793 eBPF on the Mainframe, 794 Michael Holzheu, 795 https://events.static.linuxfound.org/sites/events/files/slides/ebpf_on_the_mainframe_lcon_2015.pdf 796 797 4. Aug 2015, 798 Tracing Summit, Seattle, 799 LLTng's Trace Filtering and beyond (with some eBPF goodness, of course!), 800 Suchakra Sharma, 801 https://raw.githubusercontent.com/iovisor/bpf-docs/master/ebpf_excerpt_20Aug2015.pdf 802 803 3. Jun 2015, 804 LinuxCon Japan, Tokyo, 805 Exciting Developments in Linux Tracing, 806 Elena Zannoni, 807 https://events.static.linuxfound.org/sites/events/files/slides/tracing-linux-ezannoni-linuxcon-ja-2015_0.pdf 808 809 2. Feb 2015, 810 Collaboration Summit, Santa Rosa, 811 BPF: In-kernel Virtual Machine, 812 Alexei Starovoitov, 813 https://events.static.linuxfound.org/sites/events/files/slides/bpf_collabsummit_2015feb20.pdf 814 815 1. Feb 2015, 816 NetDev 0.1, Ottawa, 817 BPF: In-kernel Virtual Machine, 818 Alexei Starovoitov, 819 https://netdevconf.info/0.1/sessions/15.html 820 821 0. Feb 2014, 822 DevConf.cz, Brno, 823 tc and cls_bpf: lightweight packet classifying with BPF, 824 Daniel Borkmann, 825 http://borkmann.ch/talks/2014_devconf.pdf 826 827 Further Documents 828 ----------------- 829 830 - Dive into BPF: a list of reading material, 831 Quentin Monnet 832 (https://qmonnet.github.io/whirl-offload/2016/09/01/dive-into-bpf/) 833 834 - XDP - eXpress Data Path, 835 Jesper Dangaard Brouer 836 (https://prototype-kernel.readthedocs.io/en/latest/networking/XDP/index.html)