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)