update
This commit is contained in:
481
terminal/ebpf2
Normal file
481
terminal/ebpf2
Normal file
@@ -0,0 +1,481 @@
|
||||
[38;5;12m [39m[38;2;255;187;0m[1m[4mAwesome eBPF [0m[38;5;14m[1m[4m![0m[38;2;255;187;0m[1m[4mAwesome[0m[38;5;14m[1m[4m (https://awesome.re/badge.svg)[0m[38;2;255;187;0m[1m[4m (https://github.com/sindresorhus/awesome)[0m
|
||||
|
||||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mA curated list of awesome projects related to eBPF.[39m
|
||||
|
||||
[38;5;12mBPF,[39m[38;5;12m [39m[38;5;12mas[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12m_Berkeley[39m[38;5;12m [39m[38;5;12mPacket[39m[38;5;12m [39m[38;5;12mFilter_,[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12min-kernel[39m[38;5;12m [39m[38;5;12mvirtual[39m[38;5;12m [39m[38;5;12mmachine[39m[38;5;12m [39m[38;5;12mrunning[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mpassed[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12muser[39m[38;5;12m [39m[38;5;12mspace.[39m[38;5;12m [39m[38;5;12mInitially[39m[38;5;12m [39m[38;5;12mimplemented[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mBSD,[39m[38;5;12m [39m[38;5;12mthen[39m[38;5;12m [39m[38;5;12mLinux,[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12m(now[39m[38;5;12m [39m[38;5;12mlegacy)[39m[38;5;12m [39m[38;5;12m"classic[39m[38;5;12m [39m[38;5;12mBPF"[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mcBPF[39m[38;5;12m [39m[38;5;12mmachine[39m[38;5;12m [39m[38;5;12mwould[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mtools[39m[38;5;12m [39m[38;5;12mlike[39m[38;5;12m [39m[38;5;12mtcpdump[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m
|
||||
[38;5;12mfiltering[39m[38;5;12m [39m[38;5;12mpackets[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mkernel[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mavoid[39m[38;5;12m [39m[38;5;12museless[39m[38;5;12m [39m[38;5;12mcopies[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12muser[39m[38;5;12m [39m[38;5;12mspace.[39m[38;5;12m [39m[38;5;12mMore[39m[38;5;12m [39m[38;5;12mrecently,[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12minfrastructure[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mLinux[39m[38;5;12m [39m[38;5;12mhas[39m[38;5;12m [39m[38;5;12mbeen[39m[38;5;12m [39m[38;5;12mcompletely[39m[38;5;12m [39m[38;5;12mreworked[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mgave[39m[38;5;12m [39m[38;5;12mlife[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12m"extended[39m[38;5;12m [39m[38;5;12mBPF",[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12meBPF,[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12mgained[39m[38;5;12m [39m[38;5;12mnew[39m[38;5;12m [39m[38;5;12mfeatures[39m[38;5;12m [39m[38;5;12m(safety[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mtermination[39m[38;5;12m [39m
|
||||
[38;5;12mchecks,[39m[38;5;12m [39m[38;5;12mJIT-compiling[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mprograms,[39m[38;5;12m [39m[38;5;12mpersistent[39m[38;5;12m [39m[38;5;12mmaps,[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mstandard[39m[38;5;12m [39m[38;5;12mlibrary,[39m[38;5;12m [39m[38;5;12mhardware[39m[38;5;12m [39m[38;5;12moffload[39m[38;5;12m [39m[38;5;12msupport,[39m[38;5;12m [39m[38;5;12metc.)[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mnow[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mmany[39m[38;5;12m [39m[38;5;12mtasks.[39m[38;5;12m [39m[38;5;12mProcessing[39m[38;5;12m [39m[38;5;12mpackets[39m[38;5;12m [39m[38;5;12mat[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mvery[39m[38;5;12m [39m[38;5;12mlow[39m[38;5;12m [39m[38;5;12mlevel[39m[38;5;12m [39m[38;5;12m(XDP),[39m[38;5;12m [39m[38;5;12mtracing[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmonitoring[39m[38;5;12m [39m[38;5;12mevents[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12msystem,[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12menforcing[39m[38;5;12m [39m
|
||||
[38;5;12maccess[39m[38;5;12m [39m[38;5;12mcontrol[39m[38;5;12m [39m[38;5;12mover[39m[38;5;12m [39m[38;5;12mcgroups[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12mbut[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mfew[39m[38;5;12m [39m[38;5;12mexamples[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mbrings[39m[38;5;12m [39m[38;5;12mperformance,[39m[38;5;12m [39m[38;5;12mprogrammability[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mflexibility.[39m
|
||||
|
||||
[38;5;12mRecently,[39m[38;5;12m [39m[38;5;14m[1mCilium[0m[38;5;12m [39m[38;5;12m(https://cilium.io)[39m[38;5;12m [39m[38;5;12mlaunched[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mgreat[39m[38;5;12m [39m[38;5;12mwebsite[39m[38;5;12m [39m[38;5;12mabout[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mcalled[39m[38;5;12m [39m[38;5;14m[1mebpf.io[0m[38;5;12m [39m[38;5;12m(https://ebpf.io/).[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12mserves[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12msimilar[39m[38;5;12m [39m[38;5;12mpurpose[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mthis[39m[38;5;12m [39m[38;5;12mlist,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;14m[1man[0m[38;5;14m[1m [0m[38;5;14m[1mintroduction[0m[38;5;14m[1m [0m[38;5;14m[1mto[0m[38;5;14m[1m [0m[38;5;14m[1meBPF[0m[38;5;12m [39m[38;5;12m(https://ebpf.io/what-is-ebpf)[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mlinks[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;14m[1mrelated[0m[38;5;14m[1m [0m[38;5;14m[1mprojects[0m[38;5;12m [39m
|
||||
[38;5;12m(https://ebpf.io/projects).[39m
|
||||
|
||||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mNote:[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12mexciting[39m[38;5;12m [39m[38;5;12mpiece[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mtechnology,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mits[39m[38;5;12m [39m[38;5;12mecosystem[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mconstantly[39m[38;5;12m [39m[38;5;12mevolving.[39m[38;5;12m [39m[38;5;12mWe'd[39m[38;5;12m [39m[38;5;12mlove[39m[38;5;12m [39m[38;5;12mhelp[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12m_you_[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mkeep[39m[38;5;12m [39m[38;5;12mthis[39m[38;5;12m [39m[38;5;12mawesome[39m[38;5;12m [39m[38;5;12mlist[39m[38;5;12m [39m[38;5;12mup[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mdate,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mimprove[39m[38;5;12m [39m[38;5;12mits[39m[38;5;12m [39m[38;5;12msignal-to-noise[39m[38;5;12m [39m[38;5;12mratio[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12manyway[39m[38;5;12m [39m[38;5;12mwe[39m[38;5;12m [39m[38;5;12mcan.[39m[38;5;12m [39m[38;5;12mPlease[39m[38;5;12m [39m[38;5;12mfeel[39m[38;5;12m [39m[38;5;12mfree[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mleave[39m[38;5;12m [39m[38;5;14m[1many[0m[38;5;14m[1m [0m
|
||||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;14m[1mfeedback[0m[38;5;12m [39m[38;5;12m(https://github.com/zoidbergwill/awesome-ebpf/issues).[39m
|
||||
|
||||
[38;2;255;187;0m[4mContents[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mReference Documentation[0m[38;5;12m (#reference-documentation)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mArticles and Presentations[0m[38;5;12m (#articles-and-presentations)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mTutorials[0m[38;5;12m (#tutorials)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mExamples[0m[38;5;12m (#examples)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1meBPF Workflow: Tools and Utilities[0m[38;5;12m (#ebpf-workflow-tools-and-utilities)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mProjects Related to eBPF[0m[38;5;12m (#projects-related-to-ebpf)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1meBPF in Security[0m[38;5;12m (#ebpf-in-security)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mThe Code[0m[38;5;12m (#the-code)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mDevelopment and Community[0m[38;5;12m (#development-and-community)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mOther Lists of Resources on eBPF[0m[38;5;12m (#other-lists-of-resources-on-ebpf)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mAcknowledgement[0m[38;5;12m (#acknowledgement)[39m
|
||||
|
||||
[38;2;255;187;0m[4mReference Documentation[0m
|
||||
|
||||
[38;2;255;187;0m[4meBPF Essentials[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mebpf.io[0m[38;5;12m (https://ebpf.io/) - A gateway to discover all the basics of eBPF, including a listing of the main related projects and of community resources.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mCilium's BPF and XDP Reference Guide[0m[38;5;12m (http://docs.cilium.io/en/latest/bpf/) - In-depth documentation about most features and aspects of eBPF.[39m
|
||||
|
||||
[38;2;255;187;0m[4mKernel Documentation[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mBPF Documentation[0m[38;5;12m (https://www.kernel.org/doc/html/latest/bpf/index.html) - Index for BPF-related documentation coming with the Linux kernel.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mlinux/Documentation/networking/filter.rst[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/filter.rst)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mspecification[39m[38;5;12m [39m[38;5;12m(somewhat[39m[38;5;12m [39m[38;5;12moutdated;[39m[38;5;12m [39m[38;5;12minformation[39m[38;5;12m [39m[38;5;12mshould[39m[38;5;12m [39m[38;5;12mstill[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mvalid,[39m[38;5;12m [39m[38;5;12mbut[39m[38;5;12m [39m[38;5;12mnot[39m[38;5;12m [39m
|
||||
[38;5;12mexhaustive).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mBPF Design Q&A[0m[38;5;12m (https://www.kernel.org/doc/html/latest/bpf/bpf_design_QA.html) - Frequently Asked Questions on the decisions behind the BPF infrastructure.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mHOWTO interact with BPF subsystem[0m[38;5;12m (https://www.kernel.org/doc/html/latest/bpf/bpf_devel_QA.html) - Frequently Asked Questions about contributing to eBPF development.[39m
|
||||
|
||||
[38;2;255;187;0m[4mManual Pages[0m
|
||||
|
||||
[38;5;12m- [39m[48;5;235m[38;5;249m[1mbpf(2)[0m[38;5;12m (http://man7.org/linux/man-pages/man2/bpf.2.html) - Manual page about the [39m[48;5;235m[38;5;249mbpf()[49m[39m[38;5;12m system call, used to manage BPF programs and maps from userspace.[39m
|
||||
[38;5;12m- [39m[48;5;235m[38;5;249m[1mtc-bpf(8)[0m[38;5;12m (http://man7.org/linux/man-pages/man8/tc-bpf.8.html) - Manual page about using BPF with tc, including example commands and samples of code.[39m
|
||||
[38;5;12m- [39m[48;5;235m[38;5;249m[1mbpf-helpers(7)[0m[38;5;14m[1m man page[0m[38;5;12m (http://man7.org/linux/man-pages/man7/bpf-helpers.7.html) - Description of the in-kernel helper functions forming the BPF standard library.[39m
|
||||
|
||||
[38;2;255;187;0m[4mOther[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mIO Visor's Unofficial eBPF spec[0m[38;5;12m (https://github.com/iovisor/bpf-docs/blob/master/eBPF.md) - Summary of eBPF syntax and operation codes.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mJesper Dangaard Brouer's documentation[0m[38;5;12m (https://prototype-kernel.readthedocs.io/en/latest/bpf/index.html) - Work in progress, contributions welcome.[39m
|
||||
[38;5;12m- Emails from David Miller to the [39m[38;5;14m[1mxdp-newbies[0m[38;5;12m (http://vger.kernel.org/vger-lists.html#xdp-newbies) mailing list:[39m
|
||||
|
||||
[38;5;12m - [39m[38;5;14m[1mbpf.h and you...[0m[38;5;12m (https://www.spinics.net/lists/xdp-newbies/msg00179.html)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mContextually speaking...[0m[38;5;12m (https://www.spinics.net/lists/xdp-newbies/msg00181.html)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mBPF Verifier Overview[0m[38;5;12m (https://www.spinics.net/lists/xdp-newbies/msg00185.html)[39m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mList of BPF features per kernel version[0m[38;5;12m (https://github.com/iovisor/bcc/blob/master/docs/kernel-versions.md)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mA List of Research Papers[0m[38;5;12m (https://pchaigno.github.io/bpf/2025/01/07/research-papers-bpf.html)[39m
|
||||
|
||||
[38;2;255;187;0m[4mArticles and Presentations[0m
|
||||
|
||||
[38;2;255;187;0m[4mGeneric eBPF Presentations and Articles[0m
|
||||
|
||||
[38;5;12mIf you are new to eBPF, you may want to try the links described as "introductions" in this section.[39m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mA brief introduction to XDP and eBPF[0m[38;5;12m (https://blogs.igalia.com/dpino/2019/01/07/introduction-to-xdp-and-ebpf/) - An accessible introduction providing context, history, and details about the functioning of eBPF.[39m
|
||||
[38;5;12m- An eBPF Overview - Blog series by Adrian Ratiu, covering many aspects of the eBPF infrastructure:[39m
|
||||
|
||||
[38;5;12m - [39m[38;5;14m[1mPart 1: Introduction[0m[38;5;12m (https://www.collabora.com/news-and-blog/blog/2019/04/05/an-ebpf-overview-part-1-introduction/)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mPart 2: Machine & Bytecode[0m[38;5;12m (https://www.collabora.com/news-and-blog/blog/2019/04/15/an-ebpf-overview-part-2-machine-and-bytecode/)[39m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mFerris Ellis's blog posts about eBPF[0m[38;5;12m (https://ferrisellis.com/tags/ebpf/) - They have a few posts about eBPF:[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mPart 1: Past, Present, and Future[0m[38;5;12m (https://ferrisellis.com/content/ebpf_past_present_future/)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mPart 2: Syscall and Map Types[0m[38;5;12m (https://ferrisellis.com/content/ebpf_syscall_and_maps/)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mA BPF reference guide[0m[38;5;12m (https://github.com/iovisor/bcc/blob/master/docs/reference_guide.md) - About BPF C and bcc Python helpers, from bcc repository.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mMaking the Kernel's Networking Data Path Programmable with BPF and XDP[0m[38;5;12m (http://schd.ws/hosted_files/ossna2017/da/BPFandXDP.pdf) - A set of slides covering all the basics about eBPF and XDP (mostly for network processing).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mThe BSD Packet Filter[0m[38;5;12m (https://speakerdeck.com/tuxology/the-bsd-packet-filter) - An introduction mostly covering the tracing aspects.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mBPF: tracing and more[0m[38;5;12m (http://www.slideshare.net/brendangregg/bpf-tracing-and-more) - An introduction mostly covering the tracing aspects.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLinux BPF Superpowers[0m[38;5;12m (http://www.slideshare.net/brendangregg/linux-bpf-superpowers) - An introduction mostly covering the tracing aspects, first part with flame graphs.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mIO Visor[0m[38;5;12m (https://www.socallinuxexpo.org/sites/default/files/presentations/Room%20211%20-%20IOVisor%20-%20SCaLE%2014x.pdf) - Also introduces [39m[38;5;14m[1mIO Visor project[0m[38;5;12m (https://www.iovisor.org/).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mBPF -- in-kernel virtual machine[0m[38;5;12m (http://vger.kernel.org/netconf2015Starovoitov-bpf_collabsummit_2015feb20.pdf) - Presentation by the author of eBPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mExtending extended BPF[0m[38;5;12m (https://lwn.net/Articles/603983/) - A blog post from 2014 on the development of BPF and demonstrating what can be done with it, using an example of stateful socket filtering by attaching an eBPF program to a socket.[39m
|
||||
[38;5;12m- Greg Marsden made some documentation about eBPF:[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mA Tour of Program Types[0m[38;5;12m (https://blogs.oracle.com/linux/notes-on-bpf-1) - A description of all existing hooks for BPF program types, and of their interest.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mBPF helper functions[0m[38;5;12m (https://blogs.oracle.com/linux/notes-on-bpf-2) - A review of the kernel functions that can be called from within eBPF programs.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mCommunicating with Userspace[0m[38;5;12m (https://blogs.oracle.com/linux/notes-on-bpf-3) - How BPF communicates with userspace - BPF maps, perf events, bpf_trace_printk.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mBuilding BPF Programs[0m[38;5;12m (https://blogs.oracle.com/linux/notes-on-bpf-4) - Setting up your environment to build BPF programs.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mThe BPF Bytecode and the BPF Verifier[0m[38;5;12m (https://blogs.oracle.com/linux/notes-on-bpf-5) - How does BPF ensure that programs are safe?[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mUsing BPF to do Packet Transformation[0m[38;5;12m (https://blogs.oracle.com/linux/notes-on-bpf-6) - One eBPF usage about packet transformation.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLinux Kernel Observability through eBPF[0m[38;5;12m (https://sematext.com/blog/linux-kernel-observability-ebpf/) - A blog post covering the basics of eBPF as well as code samples in Go on how to build and load a minimal eBPF program into the kernel.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1meBPF - From a Programmer's Perspective[0m[38;5;12m (https://www.researchgate.net/publication/349173667_eBPF_-_From_a_Programmer's_Perspective) - A short paper describing the fundamentals of eBPF and how to get started with writing eBPF programs.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mCloudflare's blog posts on eBPF[0m[38;5;12m (https://blog.cloudflare.com/tag/ebpf/) - Different blog posts about networking use cases and low-level aspects of eBPF.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mLinux[0m[38;5;14m[1m [0m[38;5;14m[1mExtended[0m[38;5;14m[1m [0m[38;5;14m[1mBPF[0m[38;5;14m[1m [0m[38;5;14m[1m(eBPF)[0m[38;5;14m[1m [0m[38;5;14m[1mTracing[0m[38;5;14m[1m [0m[38;5;14m[1mTools[0m[38;5;12m [39m[38;5;12m(https://www.brendangregg.com/ebpf.html)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mAn[39m[38;5;12m [39m[38;5;12min-depth[39m[38;5;12m [39m[38;5;12mcollection[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12minformation[39m[38;5;12m [39m[38;5;12maround[39m[38;5;12m [39m[38;5;12mexamples[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mperformance[39m[38;5;12m [39m[38;5;12manalysis[39m[38;5;12m [39m[38;5;12mtools[39m[38;5;12m [39m[38;5;12musing[39m[38;5;12m [39m[38;5;12meBPF.[39m[38;5;12m [39m[38;5;12mContains[39m[38;5;12m [39m[38;5;12malso[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12msection[39m[38;5;12m [39m[38;5;12mat[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mend[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mpage[39m[38;5;12m [39m[38;5;12mabout[39m[38;5;12m [39m[38;5;12mother[39m[38;5;12m [39m
|
||||
[38;5;12mresources.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mBeginner's guide to eBPF[0m[38;5;12m (https://github.com/lizrice/ebpf-beginners) - A set of live-coding talks and the accompanying code examples, introducing eBPF programming using a variety of libraries and program types.[39m
|
||||
|
||||
[38;2;255;187;0m[4mBPF Internals[0m
|
||||
|
||||
[38;5;12m- Daniel Borkmann has made several presentations and papers covering the internals of eBPF, in particular about its use with tc.[39m
|
||||
|
||||
[38;5;12m - [39m[38;5;14m[1meBPF and XDP walkthrough and recent (2017) updates[0m[38;5;12m (https://fosdem.org/2017/schedule/event/ebpf_xdp/)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mAdvanced programmability and recent updates with tc's cls_bpf[0m[38;5;12m (http://netdevconf.org/1.2/session.html?daniel-borkmann) - Details on eBPF, its use for tunneling and encapsulation, direct packet access, and more.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mcls_bpf/eBPF updates since netdev 1.1[0m[38;5;12m (http://netdevconf.org/1.2/slides/oct5/07_tcws_daniel_borkmann_2016_tcws.pdf) - Part of [39m[38;5;14m[1mthis tc workshop[0m[38;5;12m (http://netdevconf.org/1.2/session.html?jamal-tc-workshop).[39m
|
||||
[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mOn[0m[38;5;14m[1m [0m[38;5;14m[1mgetting[0m[38;5;14m[1m [0m[38;5;14m[1mtc[0m[38;5;14m[1m [0m[38;5;14m[1mclassifier[0m[38;5;14m[1m [0m[38;5;14m[1mfully[0m[38;5;14m[1m [0m[38;5;14m[1mprogrammable[0m[38;5;14m[1m [0m[38;5;14m[1mwith[0m[38;5;14m[1m [0m[38;5;14m[1mcls_bpf[0m[38;5;12m [39m[38;5;12m(http://www.netdevconf.org/1.1/proceedings/slides/borkmann-tc-classifier-cls-bpf.pdf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mIntroduction[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12meBPF,[39m[38;5;12m [39m[38;5;12mincluding[39m[38;5;12m [39m[38;5;12mseveral[39m[38;5;12m [39m[38;5;12mfeatures[39m[38;5;12m [39m[38;5;12m(map[39m[38;5;12m [39m[38;5;12mmanagement,[39m[38;5;12m [39m[38;5;12mtail[39m[38;5;12m [39m[38;5;12mcalls,[39m[38;5;12m [39m[38;5;12mverifier).[39m[38;5;12m [39m[38;5;12mThe[39m[38;5;12m [39m[38;5;12mfull[39m
|
||||
[38;5;12mpaper[39m[38;5;12m [39m[38;5;14m[1mis[0m[38;5;14m[1m [0m[38;5;14m[1malso[0m[38;5;14m[1m [0m[38;5;14m[1mavailable[0m[38;5;14m[1m [0m[38;5;14m[1mhere[0m[38;5;12m [39m[38;5;12m(http://www.netdevconf.org/1.1/proceedings/papers/On-getting-tc-classifier-fully-programmable-with-cls-bpf.pdf).[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mLinux tc and eBPF[0m[38;5;12m (https://archive.fosdem.org/2016/schedule/event/ebpf/attachments/slides/1159/export/events/attachments/ebpf/slides/1159/ebpf.pdf)[39m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mIO Visor blog[0m[38;5;12m (https://www.iovisor.org/resources/blog)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLinux Networking Explained[0m[38;5;12m (http://www.slideshare.net/ThomasGraf5/linux-networking-explained) - Linux networking internals, with a part about eBPF.[39m
|
||||
|
||||
[38;2;255;187;0m[4mKernel Tracing[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mFull-system[0m[38;5;14m[1m [0m[38;5;14m[1mdynamic[0m[38;5;14m[1m [0m[38;5;14m[1mtracing[0m[38;5;14m[1m [0m[38;5;14m[1mon[0m[38;5;14m[1m [0m[38;5;14m[1mLinux[0m[38;5;14m[1m [0m[38;5;14m[1musing[0m[38;5;14m[1m [0m[38;5;14m[1meBPF[0m[38;5;14m[1m [0m[38;5;14m[1mand[0m[38;5;14m[1m [0m[38;5;14m[1mbpftrace[0m[38;5;12m [39m[38;5;12m(https://www.joyfulbikeshedding.com/blog/2019-01-31-full-system-dynamic-tracing-on-linux-using-ebpf-and-bpftrace.html)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mdetailed[39m[38;5;12m [39m[38;5;12mintroduction[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mtracing[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12meBPF,[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mlisting[39m[38;5;12m [39m[38;5;12mthe[39m
|
||||
[38;5;12mavailable[39m[38;5;12m [39m[38;5;12mtrace[39m[38;5;12m [39m[38;5;12mpoints[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mrunning[39m[38;5;12m [39m[38;5;12mbpftrace[39m[38;5;12m [39m[38;5;12mprograms.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mMeet-cute between eBPF and Kernel Tracing[0m[38;5;12m (http://www.slideshare.net/vh21/meet-cutebetweenebpfandtracing) - Kprobes, uprobes, ftrace.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLinux Kernel Tracing[0m[38;5;12m (http://www.slideshare.net/vh21/linux-kernel-tracing) - Systemtap, Kernelshark, trace-cmd, LTTng, perf-tool, ftrace, hist-trigger, perf, function tracer, tracepoint, kprobe/uprobe, and more.[39m
|
||||
[38;5;12m- Brendan Gregg's blog, and in particular [39m[38;5;14m[1mLinux BPF Superpowers[0m[38;5;12m (http://www.brendangregg.com/blog/2016-03-05/linux-bpf-superpowers.html) article.[39m
|
||||
|
||||
[38;2;255;187;0m[4mXDP[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mThe eXpress Data Path[0m[38;5;12m (https://blogs.igalia.com/dpino/2019/01/10/the-express-data-path/) - A very accessible introduction to XDP, providing sample code to show how to process packets.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mAll[39m[38;5;12m [39m[38;5;12mXDP[39m[38;5;12m [39m[38;5;12mdetails[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mtechnical[39m[38;5;12m [39m[38;5;12mpaper:[39m[38;5;12m [39m[38;5;14m[1mThe[0m[38;5;14m[1m [0m[38;5;14m[1meXpress[0m[38;5;14m[1m [0m[38;5;14m[1mData[0m[38;5;14m[1m [0m[38;5;14m[1mPath:[0m[38;5;14m[1m [0m[38;5;14m[1mFast[0m[38;5;14m[1m [0m[38;5;14m[1mProgrammable[0m[38;5;14m[1m [0m[38;5;14m[1mPacket[0m[38;5;14m[1m [0m[38;5;14m[1mProcessing[0m[38;5;14m[1m [0m[38;5;14m[1min[0m[38;5;14m[1m [0m[38;5;14m[1mthe[0m[38;5;14m[1m [0m[38;5;14m[1mOperating[0m[38;5;14m[1m [0m[38;5;14m[1mSystem[0m[38;5;14m[1m [0m[38;5;14m[1mKernel[0m[38;5;12m [39m[38;5;12m(https://github.com/tohojo/xdp-paper),[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mToke[39m[38;5;12m [39m[38;5;12mHøiland-Jørgensen,[39m[38;5;12m [39m[38;5;12mJesper[39m[38;5;12m [39m[38;5;12mDangaard[39m[38;5;12m [39m[38;5;12mBrouer,[39m[38;5;12m [39m[38;5;12mDaniel[39m[38;5;12m [39m[38;5;12mBorkmann,[39m[38;5;12m [39m[38;5;12mJohn[39m[38;5;12m [39m
|
||||
[38;5;12mFastabend,[39m[38;5;12m [39m[38;5;12mTom[39m[38;5;12m [39m[38;5;12mHerbert,[39m[38;5;12m [39m[38;5;12mDavid[39m[38;5;12m [39m[38;5;12mAhern[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mDavid[39m[38;5;12m [39m[38;5;12mMiller,[39m[38;5;12m [39m[38;5;12mall[39m[38;5;12m [39m[38;5;12mbeing[39m[38;5;12m [39m[38;5;12messential[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mXDP[39m[38;5;12m [39m[38;5;12mcontributors.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mWork-in-progress documentation for XDP[0m[38;5;12m (https://prototype-kernel.readthedocs.io/en/latest/networking/XDP/index.html)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mBPF and XDP Reference Guide[0m[38;5;12m (http://docs.cilium.io/en/latest/bpf/) - Guide from the Cilium project.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mXDP Project overview[0m[38;5;12m (https://www.iovisor.org/technology/xdp)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1meXpress Data Path (XDP)[0m[38;5;12m (https://github.com/iovisor/bpf-docs/raw/master/Express_Data_Path.pdf) - The first presentation about XDP.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mBoF - What Can BPF Do For You?[0m[38;5;12m (https://events.linuxfoundation.org/sites/events/files/slides/iovisor-lc-bof-2016.pdf)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1meXpress Data Path[0m[38;5;12m (http://www.slideshare.net/IOVisor/express-data-path-linux-meetup-santa-clara-july-2016) - Contains some benchmark results obtained with the mlx4 driver.[39m
|
||||
[38;5;12m- Jesper Dangaard Brouer has several sets of slides describing the internals of XDP:[39m
|
||||
|
||||
[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mXDP[0m[38;5;14m[1m [0m[38;5;14m[1m−[0m[38;5;14m[1m [0m[38;5;14m[1meXpress[0m[38;5;14m[1m [0m[38;5;14m[1mData[0m[38;5;14m[1m [0m[38;5;14m[1mPath,[0m[38;5;14m[1m [0m[38;5;14m[1mIntro[0m[38;5;14m[1m [0m[38;5;14m[1mand[0m[38;5;14m[1m [0m[38;5;14m[1mfuture[0m[38;5;14m[1m [0m[38;5;14m[1muse-cases[0m[38;5;12m [39m[38;5;12m(http://people.netfilter.org/hawk/presentations/xdp2016/xdp_intro_and_use_cases_sep2016.pdf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mLinux[39m[38;5;12m [39m[38;5;12mKernel's[39m[38;5;12m [39m[38;5;12mfight[39m[38;5;12m [39m[38;5;12magainst[39m[38;5;12m [39m[38;5;12mDPDK.[39m[38;5;12m [39m[38;5;12mFuture[39m[38;5;12m [39m[38;5;12mplans[39m[38;5;12m [39m[38;5;12m(as[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mthis[39m[38;5;12m [39m[38;5;12mwriting)[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mXDP[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mcomparison[39m[38;5;12m [39m
|
||||
[38;5;12mwith[39m[38;5;12m [39m[38;5;12mDPDK.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mNetwork Performance Workshop[0m[38;5;12m (http://netdevconf.org/1.2/session.html?jesper-performance-workshop) - Additional hints about XDP internals and expected evolution.[39m
|
||||
[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mXDP[0m[38;5;14m[1m [0m[38;5;14m[1m–[0m[38;5;14m[1m [0m[38;5;14m[1meXpress[0m[38;5;14m[1m [0m[38;5;14m[1mData[0m[38;5;14m[1m [0m[38;5;14m[1mPath,[0m[38;5;14m[1m [0m[38;5;14m[1mUsed[0m[38;5;14m[1m [0m[38;5;14m[1mfor[0m[38;5;14m[1m [0m[38;5;14m[1mDDoS[0m[38;5;14m[1m [0m[38;5;14m[1mprotection[0m[38;5;12m [39m[38;5;12m(http://people.netfilter.org/hawk/presentations/OpenSourceDays2017/XDP_DDoS_protecting_osd2017.pdf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mDetails[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12muse[39m[38;5;12m [39m[38;5;12mcases[39m[38;5;12m [39m[38;5;12mabout[39m[38;5;12m [39m[38;5;12mXDP,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mbenchmark[39m[38;5;12m [39m[38;5;12mresults,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m[38;5;12msnippets[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m
|
||||
[38;5;12mbenchmarking[39m[38;5;12m [39m[38;5;12mas[39m[38;5;12m [39m[38;5;12mwell[39m[38;5;12m [39m[38;5;12mas[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mbasic[39m[38;5;12m [39m[38;5;12mDDoS[39m[38;5;12m [39m[38;5;12mprotection[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12meBPF/XDP[39m[38;5;12m [39m[38;5;12m(based[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12mIP[39m[38;5;12m [39m[38;5;12mblacklisting[39m[38;5;12m [39m[38;5;12mscheme).[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mMemory vs. Networking, Provoking and fixing memory bottlenecks[0m[38;5;12m (http://people.netfilter.org/hawk/presentations/MM-summit2017/MM-summit2017-JesperBrouer.pdf) - Advanced details about current memory issues faced by XDP developers.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mXDP for the Rest of Us[0m[38;5;12m (http://netdevconf.org/2.1/session.html?gospodarek) - How to get started with eBPF and XDP for normal humans. Also summarized by Julia Evans on [39m[38;5;14m[1mher blog[0m[38;5;12m (http://jvns.ca/blog/2017/04/07/xdp-bpf-tutorial/).[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mXDP now with REDIRECT[0m[38;5;12m (http://people.netfilter.org/hawk/presentations/LLC2018/XDP_LLC2018_redirect.pdf) - Update on XDP, and in particular on the redirect actions.[39m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mXDP workshop -- Introduction, experience, and future development (Video)[0m[38;5;12m (http://netdevconf.org/1.2/session.html?herbert-xdp-workshop)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mHigh Speed Packet Filtering on Linux[0m[38;5;12m (https://cdn.shopify.com/s/files/1/0177/9886/files/phv2017-gbertin.pdf) - About packet filtering on Linux, DDoS protection, packet processing in the kernel, kernel bypass, XDP and eBPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mHow to drop 10 million packets per second[0m[38;5;12m (https://blog.cloudflare.com/how-to-drop-10-million-packets/) - Cloudflare's blog post talking about their move to using XDP for packet filtering.[39m
|
||||
|
||||
[38;2;255;187;0m[4mAF_XDP[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mAF_XDP[0m[38;5;12m (https://www.kernel.org/doc/html/latest/networking/af_xdp.html) - Kernel documentation on the AF_XDP address family.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mFast Packet Processing in Linux with AF_XDP[0m[38;5;12m (https://archive.fosdem.org/2018/schedule/event/af_xdp/)[39m
|
||||
|
||||
[38;2;255;187;0m[4mbpfilter[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mWhy[0m[38;5;14m[1m [0m[38;5;14m[1mis[0m[38;5;14m[1m [0m[38;5;14m[1mthe[0m[38;5;14m[1m [0m[38;5;14m[1mkernel[0m[38;5;14m[1m [0m[38;5;14m[1mcommunity[0m[38;5;14m[1m [0m[38;5;14m[1mreplacing[0m[38;5;14m[1m [0m[38;5;14m[1miptables[0m[38;5;14m[1m [0m[38;5;14m[1mwith[0m[38;5;14m[1m [0m[38;5;14m[1mBPF?[0m[38;5;12m [39m[38;5;12m(https://cilium.io/blog/2018/04/17/why-is-the-kernel-community-replacing-iptables/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mblog[39m[38;5;12m [39m[38;5;12mpost[39m[38;5;12m [39m[38;5;12mby[39m[38;5;12m [39m[38;5;12mCilium[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mmotivations[39m[38;5;12m [39m[38;5;12mbehind[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mbpfilter,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mcouple[39m[38;5;12m [39m[38;5;12mexamples[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mlinks[39m[38;5;12m [39m
|
||||
[38;5;12mto[39m[38;5;12m [39m[38;5;12mother[39m[38;5;12m [39m[38;5;12mprojects[39m[38;5;12m [39m[38;5;12musing[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mbpfilter.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbpfilter: Linux firewall with eBPF sauce[0m[38;5;12m (https://qmo.fr/docs/talk_20180316_frnog_bpfilter.pdf) - Slides from a talk by Quentin Monnet with a background on eBPF and comparing bpfilter to iptables.[39m
|
||||
|
||||
[38;2;255;187;0m[4mBTF[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mBPF Type Format (BTF)[0m[38;5;12m (https://www.kernel.org/doc/html/latest/bpf/btf.html) - Kernel documentation about BTF, explaining how to use it.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mEnhancing the Linux kernel with BTF type information[0m[38;5;12m (https://facebookmicrosites.github.io/bpf/blog/2018/11/14/btf-enhancement.html) - A description of the work done with BTF to provide debugging information for BPF programs.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mWhat is BTF (BPF Type Format)[0m[38;5;12m (https://cloudchirp.substack.com/p/what-is-btf-bpf-type-format) - A community-authored newsletter enriched with useful code illustrations and hands-on examples.[39m
|
||||
|
||||
[38;2;255;187;0m[4mcBPF[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mThe BSD Packet Filter: A New Architecture for User-level Packet Capture[0m[38;5;12m (http://www.tcpdump.org/papers/bpf-usenix93.pdf) - The original paper about (classic) BPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mThe FreeBSD manual page about BPF[0m[38;5;12m (https://www.freebsd.org/cgi/man.cgi?query=bpf&sektion=4)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLinux' packet mmap(2), BPF, and Netsniff-NG[0m[38;5;12m (http://borkmann.ch/talks/2013_devconf.pdf)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mtc and cls bpf: lightweight packet classifying with BPF[0m[38;5;12m (http://borkmann.ch/talks/2014_devconf.pdf)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mIntroducing Cloudflare's BPF Tools[0m[38;5;12m (https://blog.cloudflare.com/introducing-the-bpf-tools/) - Usage of BPF bytecode with the [39m[48;5;235m[38;5;249mxt_bpf[49m[39m[38;5;12m module for iptables.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLibpcap filters syntax[0m[38;5;12m (http://biot.com/capstats/bpf.html)[39m
|
||||
|
||||
[38;2;255;187;0m[4mHardware Offload[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1meBPF/XDP hardware offload to SmartNICs[0m[38;5;12m (http://netdevconf.org/1.2/session.html?jakub-kicinski) - Hardware offload for eBPF with TC or XDP (Linux kernel 4.9+), introduced by Netronome.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mComprehensive XDP offload---Handling the edge cases[0m[38;5;12m (https://www.netdevconf.org/2.2/session.html?viljoen-xdpoffload-talk) - An update on the topic above.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mhBPF - eBPF in hardware[0m[38;5;12m (https://github.com/rprinz08/hBPF) - An eBPF CPU written for FPGAs.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mOpenCSD eBPF SSD offloading[0m[38;5;12m (https://github.com/Dantali0n/qemu-csd) - Computational Storage simulation (QEMU) platform with FUSE LFS filesystem for Zoned Namespaces NVMe SSDs using uBPF for compute kernel offloading, all in userspace.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mDelilah: eBPF-offload on Computational Storage[0m[38;5;12m (https://dl.acm.org/doi/pdf/10.1145/3592980.3595319) - Delilah is a Computational Storage Processor (CSP) built for eBPF offload to storage devices.[39m
|
||||
|
||||
[38;2;255;187;0m[4mTutorials[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mbcc Reference Guide[0m[38;5;12m (https://github.com/iovisor/bcc/blob/master/docs/reference_guide.md) - Many incremental steps to start using bcc and eBPF, mostly centered on tracing and monitoring.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbcc Python Developer Tutorial[0m[38;5;12m (https://github.com/iovisor/bcc/blob/master/docs/tutorial_bcc_python_developer.md) - Comes with bcc, but targets the Python bits across seventeen "lessons".[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mBuilding[0m[38;5;14m[1m [0m[38;5;14m[1mBPF[0m[38;5;14m[1m [0m[38;5;14m[1mapplications[0m[38;5;14m[1m [0m[38;5;14m[1mwith[0m[38;5;14m[1m [0m[38;5;14m[1mlibbpf-bootstrap[0m[38;5;12m [39m[38;5;12m(https://nakryiko.com/posts/libbpf-bootstrap/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mHelps[39m[38;5;12m [39m[38;5;12mgenerate[39m[38;5;12m [39m[38;5;12mminimal[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12madvanced[39m[38;5;12m [39m[38;5;12mtemplates[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mbootstrap[39m[38;5;12m [39m[38;5;12myour[39m[38;5;12m [39m[38;5;12mown[39m[38;5;12m [39m[38;5;12mapplications[39m[38;5;12m [39m[38;5;12m(kernel[39m[38;5;12m [39m[38;5;12mside[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12muser[39m[38;5;12m [39m[38;5;12mspace[39m[38;5;12m [39m[38;5;12mmanagement[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mmaps[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mprograms)[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m
|
||||
[38;5;12mfeatures[39m[38;5;12m [39m[38;5;12mlike[39m[38;5;12m [39m[38;5;12mCO-RE,[39m[38;5;12m [39m[38;5;12mglobal[39m[38;5;12m [39m[38;5;12mvariables,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mring[39m[38;5;12m [39m[38;5;12mbuffer.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mHow[0m[38;5;14m[1m [0m[38;5;14m[1mI[0m[38;5;14m[1m [0m[38;5;14m[1mended[0m[38;5;14m[1m [0m[38;5;14m[1mup[0m[38;5;14m[1m [0m[38;5;14m[1mwriting[0m[38;5;14m[1m [0m[38;5;14m[1mopensnoop[0m[38;5;14m[1m [0m[38;5;14m[1min[0m[38;5;14m[1m [0m[38;5;14m[1mpure[0m[38;5;14m[1m [0m[38;5;14m[1mC[0m[38;5;14m[1m [0m[38;5;14m[1musing[0m[38;5;14m[1m [0m[38;5;14m[1meBPF[0m[38;5;12m [39m[38;5;12m(https://bolinfest.github.io/opensnoop-native/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mthorough[39m[38;5;12m [39m[38;5;12mwalk-through[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mhow[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mwrite[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mprograms,[39m[38;5;12m [39m[38;5;12mfirst[39m[38;5;12m [39m[38;5;12musing[39m[38;5;12m [39m[38;5;12monly[39m[38;5;12m [39m[38;5;12mbpf()[39m[38;5;12m [39m[38;5;12msyscall,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mthen[39m[38;5;12m [39m[38;5;12mlibbpf[39m[38;5;12m [39m[38;5;12mlibrary,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mreproducible[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m
|
||||
[38;5;12mexamples.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLinux Tracing Workshops Materials[0m[38;5;12m (https://github.com/goldshtn/linux-tracing-workshop) - Involves the use of several BPF tools for tracing.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mTracing a packet journey using Linux tracepoints, perf and eBPF[0m[38;5;12m (https://blog.yadutaf.fr/2017/07/28/tracing-a-packet-journey-using-linux-tracepoints-perf-ebpf/) - Troubleshooting ping requests and replies with perf and bcc programs.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mOpen NFP platform[0m[38;5;12m (https://open-nfp.org/dataplanes-ebpf/technical-papers/) - Operated by Netronome: some tutorials for network-related eBPF use cases, including an eBPF Offload Starting Guide.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mXDP for the Rest of Us[0m[38;5;12m (http://netdevconf.org/2.1/session.html?gospodarek) - First edition of a workshop to get started with XDP.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mXDP for the Rest of Us[0m[38;5;12m (https://www.netdevconf.org/2.2/session.html?gospodarek-xdp-workshop) - Second edition, with new contents.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLoad XDP programs using the ip (iproute2) command[0m[38;5;12m (https://medium.com/@fntlnz/load-xdp-programs-using-the-ip-iproute2-command-502043898263)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mXDP Hands-On Tutorial[0m[38;5;12m (https://github.com/xdp-project/xdp-tutorial) - A progressive (three levels of difficulty) tutorial to learn how to process packets with XDP.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mAll your tracing are belong to BPF[0m[38;5;12m (https://blog.trailofbits.com/2021/11/09/all-your-tracing-are-belong-to-bpf/) - A step-by-step walkthrough to integrate tracing capabilities in your C++ applications with the LLVM libraries.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mFirewalling with BPF/XDP: Examples and Deep Dive[0m[38;5;12m (https://arthurchiao.art/blog/firewalling-with-bpf-xdp/) - A simple guide to build basic firewalls with TC and XDP.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mA[0m[38;5;14m[1m [0m[38;5;14m[1mDeep[0m[38;5;14m[1m [0m[38;5;14m[1mDive[0m[38;5;14m[1m [0m[38;5;14m[1minto[0m[38;5;14m[1m [0m[38;5;14m[1meBPF:[0m[38;5;14m[1m [0m[38;5;14m[1mWriting[0m[38;5;14m[1m [0m[38;5;14m[1man[0m[38;5;14m[1m [0m[38;5;14m[1mEfficient[0m[38;5;14m[1m [0m[38;5;14m[1mDNS[0m[38;5;14m[1m [0m[38;5;14m[1mMonitoring.[0m[38;5;12m [39m[38;5;12m(https://medium.com/@nurkholish.halim/a-deep-dive-into-ebpf-writing-an-efficient-dns-monitoring-2c9dea92abdf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mdetailed[39m[38;5;12m [39m[38;5;12mexplanation[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mmethods[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mcapture[39m[38;5;12m [39m[38;5;12mDNS[39m[38;5;12m [39m[38;5;12mrequests[39m[38;5;12m [39m[38;5;12mat[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m
|
||||
[38;5;12msocket[39m[38;5;12m [39m[38;5;12mfilter[39m[38;5;12m [39m[38;5;12mlayer.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1meBPF[0m[38;5;14m[1m [0m[38;5;14m[1mDeveloper[0m[38;5;14m[1m [0m[38;5;14m[1mTutorial[0m[38;5;14m[1m [0m[38;5;14m[1m-[0m[38;5;14m[1m [0m[38;5;14m[1mLearn[0m[38;5;14m[1m [0m[38;5;14m[1meBPF[0m[38;5;14m[1m [0m[38;5;14m[1mby[0m[38;5;14m[1m [0m[38;5;14m[1mexamples[0m[38;5;12m [39m[38;5;12m(https://eunomia.dev/tutorials/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mStart[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mbasics[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mprogress[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12madvanced[39m[38;5;12m [39m[38;5;12mtopics[39m[38;5;12m [39m[38;5;12musing[39m[38;5;12m [39m[38;5;12m20+[39m[38;5;12m [39m[38;5;12mhands-on[39m[38;5;12m [39m[38;5;12mtutorials[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mexamples.[39m[38;5;12m [39m[38;5;12mCovers[39m[38;5;12m [39m[38;5;12mperformance,[39m[38;5;12m [39m[38;5;12mnetworking,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12msecurity[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mlibbpf[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m
|
||||
[38;5;12mCO-RE.[39m[38;5;12m [39m[38;5;12mAvailable[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mChinese[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mEnglish.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mCatch Performance Regressions in eBPF[0m[38;5;12m (https://bencher.dev/docs/explanation/talks/#linuxcon-2023-12-may-23) - A step-by-step guide to benchmarking both the client and kernel eBPF code written in Rust.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLoops and Iterators in eBPF[0m[38;5;12m (https://cloudchirp.substack.com/p/loops-and-iterators-in-ebpf) - Newsletter about all the ways to loop and iterate in eBPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mWhat Insights Can eBPF Provide into Real-Time SSL/TLS Encrypted Traffic and How?[0m[38;5;12m (https://cloudchirp.substack.com/p/what-insights-can-ebpf-provide-into) - A step-by-step guide how eBPF can observe encrypted network traffic.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mCan eBPF Detect Redis Message Patterns Before They Become Problems?[0m[38;5;12m (https://cloudchirp.substack.com/p/can-ebpf-detect-redis-message-patterns) - A step-by-step guide how eBPF can observe Redis communication between client and server.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mTransparent Proxy Implementation using eBPF and Go[0m[38;5;12m (https://cloudchirp.substack.com/p/transparent-proxy-implementation) - A step-by-step guide on how to implement a transparent proxy using eBPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1meBPF-Powered Load Balancing[0m[38;5;12m (https://cloudchirp.substack.com/p/ebpf-powered-load-balancing-for-so_reuseport) - Learn how eBPF can infer custom load-balancing for services listening on the same port, through the SO_REUSEPORT TCP option.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mUnit Testing eBPF Programs[0m[38;5;12m (https://ebpfchirp.substack.com/p/unit-testing-ebpf-programs) - Learn how you can unit test your eBPF programs using libbpf.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mAccelerating Local Socket Communication using eBPF[0m[38;5;12m (https://cloudchirp.substack.com/p/optimizing-local-socket-communication) - Learn how eBPF can speed-up local socket communication up to 30%.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mWriting[0m[38;5;14m[1m [0m[38;5;14m[1ma[0m[38;5;14m[1m [0m[38;5;14m[1mbasic[0m[38;5;14m[1m [0m[38;5;14m[1mcontinuous[0m[38;5;14m[1m [0m[38;5;14m[1mprofiler[0m[38;5;12m [39m[38;5;12m(https://blog.maxgio.me/posts/unleashing-power-frame-pointers-writing-simple-continuous-profiler/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mstep-by-step[39m[38;5;12m [39m[38;5;12mguide[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mwrite[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12mappliation[39m[38;5;12m [39m[38;5;12mcontinuous[39m[38;5;12m [39m[38;5;12mprofiler[39m[38;5;12m [39m[38;5;12mleveraging[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12minstrumentation,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12ma[39m
|
||||
[38;5;12mcomplete[39m[38;5;12m [39m[38;5;12mproject[39m[38;5;12m [39m[38;5;12mas[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mreference.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mInspektor Gadget - Hello world gadget[0m[38;5;12m (https://inspektor-gadget.io/docs/latest/gadget-devel/hello-world-gadget) - An introductory guide to writing image-based eBPF gadgets and sharing them via OCI registries.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mInspektor Gadget - Hello world gadget with Wasm[0m[38;5;12m (https://inspektor-gadget.io/docs/latest/gadget-devel/hello-world-gadget-wasm) - An introductory guide to writing image-based eBPF gadgets and performing post-processing with WASM.[39m
|
||||
|
||||
[38;2;255;187;0m[4mExamples[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mlinux/samples/bpf/[0m[38;5;12m (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/samples/bpf) - In the kernel tree: some sample eBPF programs.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mlinux/tools/testing/selftests/bpf[0m[38;5;12m (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/testing/selftests/bpf) - In the kernel tree: Linux BPF selftests, with many eBPF programs.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mprototype-kernel/kernel/samples/bpf[0m[38;5;12m [39m[38;5;12m(https://github.com/netoptimizer/prototype-kernel/tree/master/kernel/samples/bpf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mJesper[39m[38;5;12m [39m[38;5;12mDangaard[39m[38;5;12m [39m[38;5;12mBrouer's[39m[38;5;12m [39m[38;5;12mprototype-kernel[39m[38;5;12m [39m[38;5;12mrepository[39m[38;5;12m [39m[38;5;12mcontains[39m[38;5;12m [39m[38;5;12msome[39m[38;5;12m [39m[38;5;12madditional[39m[38;5;12m [39m[38;5;12mexamples[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mcan[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mcompiled[39m[38;5;12m [39m[38;5;12moutside[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m
|
||||
[38;5;12mkernel[39m[38;5;12m [39m[38;5;12minfrastructure.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1miproute2/examples/bpf/[0m[38;5;12m (https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/tree/examples/bpf) - Some networking programs to attach to the TC interface.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mNetronome sample network applications[0m[38;5;12m (https://github.com/Netronome/bpf-samples/) - Provides basic but complete examples of eBPF applications also compatible with hardware offload.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbcc/examples[0m[38;5;12m (https://github.com/iovisor/bcc/tree/master/examples) - Examples coming along with the bcc tools, mostly about tracing.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbcc/tools[0m[38;5;12m (https://github.com/iovisor/bcc/tree/master/tools) - These tools themselves can be seen as example use cases for BPF programs, mostly for tracing and monitoring. bcc tools have been packaged for some Linux distributions.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mMPLSinIP sample[0m[38;5;12m (https://github.com/fzakaria/eBPF-mpls-encap-decap) - A heavily commented sample demonstrating how to encapsulate & decapsulate MPLS within IP. The code is commented for those new to BPF development.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mebpf-samples[0m[38;5;12m (https://github.com/vbpf/ebpf-samples) - A collection of compiled (as ELF object files) samples gathered from several projects, primarily intended to serve as test cases for user space verifiers.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mebpf-kill-example[0m[38;5;12m (https://github.com/niclashedam/ebpf-kill-example) - A fully documented and tested example of an eBPF probe that logs all force-kills and prints them out in user-space.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mredbpf examples[0m[38;5;12m (https://github.com/foniod/redbpf/tree/main/examples) - Example programs for using RedBPF to write eBPF programs in Rust.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mXDP/TC-eBPF example[0m[38;5;12m (https://github.com/netfoundry/zfw) - Program that uses XDP/TC-eBPF to provide statefull firewalling and socket redirection.[39m
|
||||
|
||||
[38;2;255;187;0m[4meBPF Workflow: Tools and Utilities[0m
|
||||
|
||||
[38;2;255;187;0m[4mbcc[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mbcc[0m[38;5;12m (https://github.com/iovisor/bcc/) - Framework and set of tools - One way to handle BPF programs, in particular for tracing and monitoring. Also includes some utilities that may help inspect maps or programs on the system.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mLua front-end for BCC[0m[38;5;12m (https://github.com/iovisor/bcc/tree/master/src/lua) - Another alternative to C, and even to most of the Python code used in bcc.[39m
|
||||
|
||||
[38;2;255;187;0m[4miproute2[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1miproute2[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/pub/scm/network/iproute2/iproute2.git)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mPackage[39m[38;5;12m [39m[38;5;12mcontaining[39m[38;5;12m [39m[38;5;12mtools[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mnetwork[39m[38;5;12m [39m[38;5;12mmanagement[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mLinux.[39m[38;5;12m [39m[38;5;12mIn[39m[38;5;12m [39m[38;5;12mparticular,[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12mcontains[39m[38;5;12m [39m[48;5;235m[38;5;249mtc[49m[39m[38;5;12m,[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mmanage[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mfilters[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mactions,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[48;5;235m[38;5;249mip[49m[39m[38;5;12m,[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mmanage[39m[38;5;12m [39m[38;5;12mXDP[39m[38;5;12m [39m[38;5;12mprograms.[39m[38;5;12m [39m
|
||||
[38;5;12mMost[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m[38;5;12mrelated[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mlib/bpf.c.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1miproute2-next[0m[38;5;12m (https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git) - The development tree, synchronised with net-next.[39m
|
||||
|
||||
[38;2;255;187;0m[4mLLVM[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mLLVM[0m[38;5;12m (https://llvm.org/) - Contains several tools used in eBPF workflows. Snapshots of the latest versions for Ubuntu/Debian can be retrieved from [39m[38;5;14m[1mhere[0m[38;5;12m (http://apt.llvm.org/).[39m
|
||||
|
||||
[38;5;12m - clang is used to compile C to eBPF object file under the ELF format (clang v3.7.1+). The BPF backend was added with [39m[38;5;14m[1mthis commit[0m[38;5;12m (https://reviews.llvm.org/D6494).[39m
|
||||
[38;5;12m - llvm-objdump is used to dump the content of an object file in human-readable format, possibly with the initial C source code (llvm-objdump v4.0+).[39m
|
||||
[38;5;12m - llvm-mc is used to compile from LLVM intermediate representation to eBPF object file, so that one can compile from C to eBPF assembly, tinker with assembly, then compile to ELF file.[39m
|
||||
|
||||
[38;2;255;187;0m[4mlibbpf[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mlibbpf[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/tree/tools/lib/bpf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mC[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mhandling[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12mobjects[39m[38;5;12m [39m[38;5;12m(programs[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmaps),[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmanipulating[39m[38;5;12m [39m[38;5;12mELF[39m[38;5;12m [39m[38;5;12mobject[39m[38;5;12m [39m[38;5;12mfiles[39m[38;5;12m [39m[38;5;12mcontaining[39m[38;5;12m [39m[38;5;12mthem.[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mshipped[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mkernel[39m[38;5;12m [39m[38;5;12mand[39m
|
||||
[38;5;14m[1mmirrored[0m[38;5;14m[1m [0m[38;5;14m[1mon[0m[38;5;14m[1m [0m[38;5;14m[1mGitHub[0m[38;5;12m [39m[38;5;12m(https://github.com/libbpf/libbpf).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mlibbpf-bootstrap[0m[38;5;12m (https://github.com/libbpf/libbpf-bootstrap) - Scaffolding for BPF application development with libbpf and BPF CO-RE.[39m
|
||||
|
||||
[38;2;255;187;0m[4mGo libraries[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mcilium/ebpf[0m[38;5;12m (https://github.com/cilium/ebpf) - Pure-Go library to read, modify and load eBPF programs and attach them to various hooks in the Linux kernel.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mlibbpfgo[0m[38;5;12m (https://github.com/aquasecurity/libbpfgo) - eBPF library for Go, powered by libbpf.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mgobpf[0m[38;5;12m (https://github.com/iovisor/gobpf) - Go bindings for BCC for creating eBPF programs.[39m
|
||||
|
||||
[38;2;255;187;0m[4mAya[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1maya[0m[38;5;12m [39m[38;5;12m(https://github.com/aya-rs/aya)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mpure[39m[38;5;12m [39m[38;5;12mRust[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mwriting,[39m[38;5;12m [39m[38;5;12mloading,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmanaging[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mobjects,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mfocus[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mdeveloper[39m[38;5;12m [39m[38;5;12mexperience[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12moperability.[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12msupports[39m[38;5;12m [39m[38;5;12mwriting[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mRust[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mdistributing[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m[38;5;12mover[39m[38;5;12m [39m
|
||||
[38;5;12mcrates.io[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mshare[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12mbetween[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mprograms.[39m[38;5;12m [39m[38;5;12mAya[39m[38;5;12m [39m[38;5;12mdoes[39m[38;5;12m [39m[38;5;12mnot[39m[38;5;12m [39m[38;5;12mdepend[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mlibbpf.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1maya-template[0m[38;5;12m (https://github.com/aya-rs/aya-template) - Templates for writing BPF applications in Aya that can be used with [39m[48;5;235m[38;5;249m[1mcargo generate[0m[38;5;12m (https://github.com/cargo-generate/cargo-generate).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mEbpfguard[0m[38;5;12m (https://github.com/deepfence/ebpfguard) - Rust library for writing Linux security policies using eBPF.[39m
|
||||
|
||||
[38;2;255;187;0m[4mzbpf[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mzbpf[0m[38;5;12m (https://github.com/tw4452852/zbpf) - A pure Zig framework for writing cross platform eBPF programs, powered by libbpf and Zig toolchain.[39m
|
||||
|
||||
[38;2;255;187;0m[4meunomia-bpf[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1meunomia-bpf[0m[38;5;12m [39m[38;5;12m(https://github.com/eunomia-bpf/eunomia-bpf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mcompilation[39m[38;5;12m [39m[38;5;12mframework[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mruntime[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mbuild,[39m[38;5;12m [39m[38;5;12mdistribute,[39m[38;5;12m [39m[38;5;12mdynamically[39m[38;5;12m [39m[38;5;12mload,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mrun[39m[38;5;12m [39m[38;5;12mCO-RE[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mapplications[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mmultiple[39m[38;5;12m [39m[38;5;12mlanguages[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mWebAssembly.[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12msupports[39m[38;5;12m [39m[38;5;12mwriting[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m
|
||||
[38;5;12mkernel[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m[38;5;12monly[39m[38;5;12m [39m[38;5;12m(to[39m[38;5;12m [39m[38;5;12mbuild[39m[38;5;12m [39m[38;5;12msimple[39m[38;5;12m [39m[38;5;12mCO-RE[39m[38;5;12m [39m[38;5;12mlibbpf[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mapplications),[39m[38;5;12m [39m[38;5;12mwriting[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mkernel[39m[38;5;12m [39m[38;5;12mpart[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mboth[39m[38;5;12m [39m[38;5;12mBCC[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mlibbpf[39m[38;5;12m [39m[38;5;12mstyles,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mwriting[39m[38;5;12m [39m[38;5;12muserspace[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mmultiple[39m[38;5;12m [39m[38;5;12mlanguages[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mWASM[39m[38;5;12m [39m[38;5;12mmodule[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mdistributing[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12msimple[39m[38;5;12m [39m[38;5;12mJSON[39m[38;5;12m [39m[38;5;12mdata[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mWASM[39m[38;5;12m [39m[38;5;12mOCI[39m[38;5;12m [39m[38;5;12mimages.[39m[38;5;12m [39m
|
||||
[38;5;12mThe[39m[38;5;12m [39m[38;5;12mruntime[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mbased[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mlibbpf[39m[38;5;12m [39m[38;5;12monly[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mprovides[39m[38;5;12m [39m[38;5;12mCO-RE[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mBCC-style[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mwithout[39m[38;5;12m [39m[38;5;12mdepending[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mLLVM[39m[38;5;12m [39m[38;5;12mlibrary.[39m
|
||||
|
||||
[38;2;255;187;0m[4moxidebpf[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1moxidebpf[0m[38;5;12m [39m[38;5;12m(https://github.com/redcanaryco/oxidebpf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mpure[39m[38;5;12m [39m[38;5;12mRust[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mmanaging[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mprograms,[39m[38;5;12m [39m[38;5;12mdesigned[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12msecurity[39m[38;5;12m [39m[38;5;12muse[39m[38;5;12m [39m[38;5;12mcases.[39m[38;5;12m [39m[38;5;12mThe[39m[38;5;12m [39m[38;5;12mfeatureset[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mmore[39m[38;5;12m [39m[38;5;12mlimited[39m[38;5;12m [39m[38;5;12mthan[39m[38;5;12m [39m[38;5;12mother[39m[38;5;12m [39m[38;5;12mlibraries[39m[38;5;12m [39m[38;5;12mbut[39m[38;5;12m [39m[38;5;12memphasizes[39m[38;5;12m [39m[38;5;12mstability[39m[38;5;12m [39m[38;5;12macross[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mwide[39m[38;5;12m [39m[38;5;12mrange[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mkernels[39m[38;5;12m [39m
|
||||
[38;5;12mand[39m[38;5;12m [39m[38;5;12mbackwards-compatible[39m[38;5;12m [39m[38;5;12mcompile-once-run-most-places.[39m
|
||||
|
||||
[38;2;255;187;0m[4mbpftool and Other Tools from the Kernel Tree[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mbpftool[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/tree/tools/bpf/bpftool)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mAlso[39m[38;5;12m [39m[38;5;12msome[39m[38;5;12m [39m[38;5;12mother[39m[38;5;12m [39m[38;5;12mtools[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mkernel[39m[38;5;12m [39m[38;5;12mtree,[39m[38;5;12m [39m[38;5;12munder[39m[38;5;12m [39m[38;5;14m[1mlinux/tools/net/[0m[38;5;12m [39m
|
||||
[38;5;12m(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/net?h=v4.14)[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mversions[39m[38;5;12m [39m[38;5;12mearlier[39m[38;5;12m [39m[38;5;12mthan[39m[38;5;12m [39m[38;5;12m4.15,[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;14m[1mlinux/tools/bpf/[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/tree/tools/bpf)[39m[38;5;12m [39m[38;5;12mafter[39m[38;5;12m [39m[38;5;12mthat:[39m
|
||||
|
||||
[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[48;5;235m[38;5;249m[1mbpftool[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/tree/tools/bpf/bpftool)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mgeneric[39m[38;5;12m [39m[38;5;12mutility[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mcan[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12minteract[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmaps[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12muserspace,[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mexample[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mshow,[39m[38;5;12m [39m[38;5;12mdump,[39m[38;5;12m [39m[38;5;12mload,[39m[38;5;12m [39m[38;5;12mdisassemble,[39m[38;5;12m [39m[38;5;12mpin[39m[38;5;12m [39m
|
||||
[38;5;12mprograms,[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mshow,[39m[38;5;12m [39m[38;5;12mcreate,[39m[38;5;12m [39m[38;5;12mpin,[39m[38;5;12m [39m[38;5;12mupdate,[39m[38;5;12m [39m[38;5;12mdelete[39m[38;5;12m [39m[38;5;12mmaps,[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mattach[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mdetach[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mcgroups.[39m
|
||||
[38;5;12m - [39m[48;5;235m[38;5;249m[1mbpf_asm[0m[38;5;12m (https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/tree/tools/bpf/bpf_asm.c) - A minimal cBPF assembler.[39m
|
||||
[38;5;12m - [39m[48;5;235m[38;5;249m[1mbpf_dbg[0m[38;5;12m (https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/tree/tools/bpf/bpf_dbg.c) - A small debugger for cBPF programs.[39m
|
||||
[38;5;12m - [39m[48;5;235m[38;5;249m[1mbpf_jit_disasm[0m[38;5;12m (https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/tree/tools/bpf/bpf_jit_disasm.c) - A disassembler for both BPF flavors and could be highly useful for JIT debugging.[39m
|
||||
|
||||
[38;2;255;187;0m[4mUser Space eBPF[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1muBPF[0m[38;5;12m (https://github.com/iovisor/ubpf/) - Written in C. Contains an interpreter, a JIT compiler for x86_64 architecture, an assembler and a disassembler.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mA[0m[38;5;14m[1m [0m[38;5;14m[1mgeneric[0m[38;5;14m[1m [0m[38;5;14m[1mimplementation[0m[38;5;12m [39m[38;5;12m(https://github.com/YutaroHayakawa/generic-ebpf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mWith[39m[38;5;12m [39m[38;5;12msupport[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mFreeBSD[39m[38;5;12m [39m[38;5;12mkernel,[39m[38;5;12m [39m[38;5;12mFreeBSD[39m[38;5;12m [39m[38;5;12muser[39m[38;5;12m [39m[38;5;12mspace,[39m[38;5;12m [39m[38;5;12mLinux[39m[38;5;12m [39m[38;5;12mkernel,[39m[38;5;12m [39m[38;5;12mLinux[39m[38;5;12m [39m[38;5;12muser[39m[38;5;12m [39m[38;5;12mspace[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmacOS[39m[38;5;12m [39m[38;5;12muser[39m[38;5;12m [39m[38;5;12mspace.[39m[38;5;12m [39m[38;5;12mUsed[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;14m[1mVALE[0m[38;5;14m[1m [0m[38;5;14m[1msoftware[0m[38;5;14m[1m [0m[38;5;14m[1mswitch[0m[38;5;12m [39m
|
||||
[38;5;12m(https://www.unix.com/man-page/freebsd/4/vale/)'s[39m[38;5;12m [39m[38;5;14m[1mBPF[0m[38;5;14m[1m [0m[38;5;14m[1mextension[0m[38;5;14m[1m [0m[38;5;14m[1mmodule[0m[38;5;12m [39m[38;5;12m(https://github.com/YutaroHayakawa/vale-bpf).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mrbpf[0m[38;5;12m (https://github.com/qmonnet/rbpf) - Written in Rust. Interpreter for Linux, macOS and Windows, and JIT-compiler for x86_64 under Linux.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mPREVAIL[0m[38;5;12m (https://github.com/vbpf/ebpf-verifier) - A user space verifier for eBPF [39m[38;5;14m[1musing an abstract interpretation layer[0m[38;5;12m (https://elazarg.github.io/pldi19main-final.pdf), with support for loops.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1moster[0m[38;5;12m (https://github.com/grantseltzer/oster) - Written in Go. A tool for tracing execution of Go programs by attaching eBPF to uprobes.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mwachy[0m[38;5;12m (https://rubrikinc.github.io/wachy/) - A tracing profiler that aims to make eBPF uprobe-based debugging easier to use. This is done by displaying traces in a UI next to the source code and allowing interactive drilldown analysis.[39m
|
||||
|
||||
[38;2;255;187;0m[4meBPF on Other Platforms[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1meBPF for Windows[0m[38;5;12m (https://github.com/microsoft/ebpf-for-windows) - This project is a work-in-progress that allows using existing eBPF toolchains and APIs familiar in the Linux ecosystem to be used on top of Windows.[39m
|
||||
|
||||
[38;2;255;187;0m[4mTesting in Virtual Environments[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mA Vagrant setup[0m[38;5;12m (https://github.com/iovisor/xdp-vagrant) - To easily test XDP. Less useful now that generic XDP (driver-independant, mostly for testing) exists.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbcc in a Docker container[0m[38;5;12m (https://github.com/zlim/bcc-docker)[39m
|
||||
|
||||
[38;2;255;187;0m[4mProjects Related to eBPF[0m
|
||||
|
||||
[38;2;255;187;0m[4mNetworking[0m
|
||||
|
||||
[38;5;12m- P4 has some interactions with eBPF:[39m
|
||||
|
||||
[38;5;12m - [39m[38;5;14m[1mP4 on the Edge[0m[38;5;12m (https://schd.ws/hosted_files/2016p4workshop/1d/Intel%20Fastabend-P4%20on%20the%20Edge.pdf) - P4 with eBPF to create high-performance programmable switches.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mOvS Orbit episode (#11), called P4 on the Edge[0m[38;5;12m (https://ovsorbit.org/#e11) - Related to the former item. Audio interview of John Fastabend by Ben Pfaff, one of the core maintainers of Open vSwitch.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mP4, EBPF and Linux TC Offload[0m[38;5;12m (https://open-nfp.org/m/documents/Open_NFP_P4_EBPF_Linux_TC_Offload_FINAL_5JHLETS.pdf) - P4 with some elements related to eBPF hardware offload on Netronome's NFP (Network Flow Processor) architecture.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mOld documentation for P4 usage with eBPF[0m[38;5;12m (https://github.com/iovisor/bcc/tree/master/src/cc/frontends/p4) - From bcc repository; deprecated by the P4_16 backend linked below.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mP4_16 backend for eBPF[0m[38;5;12m (https://github.com/p4lang/p4c/blob/master/backends/ebpf/README.md)[39m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mCilium[0m[38;5;12m [39m[38;5;12m(https://cilium.io/)[39m[38;5;12m [39m[38;5;12mproject[39m[38;5;12m [39m[38;5;12m([39m[38;5;14m[1mGitHub[0m[38;5;14m[1m [0m[38;5;14m[1mrepository[0m[38;5;12m [39m[38;5;12m(https://github.com/cilium/cilium))[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mtechnology[39m[38;5;12m [39m[38;5;12mrelying[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mXDP[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mprovide[39m[38;5;12m [39m[38;5;12m"fast[39m[38;5;12m [39m[38;5;12min-kernel[39m[38;5;12m [39m[38;5;12mnetworking[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12msecurity[39m[38;5;12m [39m[38;5;12mpolicy[39m[38;5;12m [39m[38;5;12menforcement[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mcontainers[39m[38;5;12m [39m[38;5;12mbased[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m
|
||||
[38;5;12mgenerated[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mfly".[39m[38;5;12m [39m[38;5;12mMany[39m[38;5;12m [39m[38;5;12mpresentations[39m[38;5;12m [39m[38;5;12mavailable[39m[38;5;12m [39m[38;5;12m(with[39m[38;5;12m [39m[38;5;12moverlap):[39m
|
||||
|
||||
[38;5;12m - [39m[38;5;14m[1mCilium: Networking & Security for Containers with BPF & XDP[0m[38;5;12m (http://www.slideshare.net/ThomasGraf5/clium-container-networking-with-bpf-xdp) - Also featuring a load balancer use case[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mCilium: Networking & Security for Containers with BPF & XDP[0m[38;5;12m (http://www.slideshare.net/Docker/cilium-bpf-xdp-for-containers-66969823) - [39m[38;5;14m[1mvideo[0m[38;5;12m (https://www.youtube.com/watch?v=TnJF7ht3ZYc&list=PLkA60AVN3hh8oPas3cq2VA9xB7WazcIgs)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mCilium: Fast IPv6 container Networking with BPF and XDP[0m[38;5;12m (http://www.slideshare.net/ThomasGraf5/cilium-fast-ipv6-container-networking-with-bpf-and-xdp)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mCilium: BPF & XDP for containers[0m[38;5;12m (https://fosdem.org/2017/schedule/event/cilium/)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mOvS Orbit episode (#4)[0m[38;5;12m (https://ovsorbit.benpfaff.org/) - Interview of Thomas Graf by Ben Pfaff.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mA generic introduction to Cilium[0m[38;5;12m (https://opensource.googleblog.com/2016/11/cilium-networking-and-security.html)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mA podcast interviewing Thomas Graf[0m[38;5;12m (http://blog.ipspace.net/2016/10/fast-linux-packet-forwarding-with.html) - Ivan Pepelnjak interviewing Thomas, October 2016, on eBPF, P4, XDP and Cilium.[39m
|
||||
|
||||
[38;5;12m- Open vSwitch (OvS), and its related project Open Virtual Network (OVN, an open source network virtualization solution) are considering using eBPF at various level:[39m
|
||||
|
||||
[38;5;12m - [39m[38;5;14m[1mOffloading OVS Flow Processing using eBPF[0m[38;5;12m (http://openvswitch.org/support/ovscon2016/7/1120-tu.pdf)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mCoupling the Flexibility of OVN with the Efficiency of IOVisor[0m[38;5;12m (http://openvswitch.org/support/ovscon2016/7/1245-bertrone.pdf)[39m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mKatran[0m[38;5;12m (https://code.fb.com/open-source/open-sourcing-katran-a-scalable-network-load-balancer/) - A layer 4 load-balancer based on XDP, open-sourced by Facebook.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mXDP in practice: integrating XDP in our DDoS mitigation pipeline[0m[38;5;12m (http://netdevconf.org/2.1/session.html?bertin) - Protection against DDoS with XDP at Cloudflare.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mDroplet: DDoS countermeasures powered by BPF + XDP[0m[38;5;12m (http://netdevconf.org/2.1/session.html?zhou) - Protection against DDoS with XDP at Facebook.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mDPDK has a poll-mode driver (PMD) based on AF_XDP[0m[38;5;12m (https://dpdkuserspace2018.sched.com/event/G45Z/dpdk-pmd-for-afxdp)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mCETH for XDP[0m[38;5;12m (http://www.slideshare.net/IOVisor/ceth-for-xdp-linux-meetup-santa-clara-july-2016) - Common Ethernet Driver Framework for faster network I/O, a technology initiated by Mellanox.[39m
|
||||
[38;5;12m- Suricata, an open source intrusion detection system, [39m[38;5;14m[1mrelies on eBPF components[0m[38;5;12m (https://www.stamus-networks.com/2016/09/28/suricata-bypass-feature/) for its "capture bypass" features:[39m
|
||||
|
||||
[38;5;12m - [39m[38;5;14m[1m"eBPF and XDP" section of Suricata documentation[0m[38;5;12m (http://suricata.readthedocs.io/en/latest/capture-hardware/ebpf-xdp.html?highlight=XDP#ebpf-and-xdp)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mSEPTun-Mark-II[0m[38;5;12m (https://github.com/pevma/SEPTun-Mark-II) - Extreme Performance Tuning guide - Mark II.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mA blog post introducing the feature[0m[38;5;12m (https://www.stamus-networks.com/2016/09/28/suricata-bypass-feature/)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mThe adventures of a Suricate in eBPF land[0m[38;5;12m (http://netdevconf.org/1.2/slides/oct6/10_suricata_ebpf.pdf)[39m
|
||||
[38;5;12m - [39m[38;5;14m[1meBPF and XDP seen from the eyes of a meerkat[0m[38;5;12m (https://www.slideshare.net/ennael/kernel-recipes-2017-ebpf-and-xdp-eric-leblond)[39m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mProject[0m[38;5;14m[1m [0m[38;5;14m[1mCalico[0m[38;5;12m [39m[38;5;12m(https://projectcalico.docs.tigera.io/about/about-calico)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mCalico[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12mopen[39m[38;5;12m [39m[38;5;12msource[39m[38;5;12m [39m[38;5;12mnetworking[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mnetwork[39m[38;5;12m [39m[38;5;12msecurity[39m[38;5;12m [39m[38;5;12msolution[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mcontainers,[39m[38;5;12m [39m[38;5;12mvirtual[39m[38;5;12m [39m[38;5;12mmachines,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mnative[39m[38;5;12m [39m[38;5;12mhost-based[39m[38;5;12m [39m[38;5;12mworkloads.[39m[38;5;12m [39m[38;5;12mCalico's[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mdata[39m[38;5;12m [39m[38;5;12mplane[39m[38;5;12m [39m[38;5;12mdelivers[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m
|
||||
[38;5;12mlow[39m[38;5;12m [39m[38;5;12mlatency,[39m[38;5;12m [39m[38;5;12mhigh[39m[38;5;12m [39m[38;5;12mthroughput[39m[38;5;12m [39m[38;5;12mdata[39m[38;5;12m [39m[38;5;12mplane[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mrich[39m[38;5;12m [39m[38;5;12mnetwork[39m[38;5;12m [39m[38;5;12msecurity[39m[38;5;12m [39m[38;5;12mpolicy[39m[38;5;12m [39m[38;5;12mmodel.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mEnabling eBPF data plane with Calico[0m[38;5;12m (https://projectcalico.docs.tigera.io/maintenance/ebpf/enabling-bpf)[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mmerbridge[0m[38;5;12m [39m[38;5;12m(https://github.com/merbridge/merbridge/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mUse[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mspeed[39m[38;5;12m [39m[38;5;12mup[39m[38;5;12m [39m[38;5;12myour[39m[38;5;12m [39m[38;5;12mService[39m[38;5;12m [39m[38;5;12mMesh.[39m[38;5;12m [39m[38;5;12mMerbridge[39m[38;5;12m [39m[38;5;12mreplaces[39m[38;5;12m [39m[38;5;12miptables[39m[38;5;12m [39m[38;5;12mrules[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mintercept[39m[38;5;12m [39m[38;5;12mtraffic.[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12malso[39m[38;5;12m [39m[38;5;12mcombines[39m[38;5;12m [39m[38;5;12mmsg_redirect[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mreduce[39m[38;5;12m [39m[38;5;12mlatency[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mshortened[39m[38;5;12m [39m[38;5;12mdatapath[39m[38;5;12m [39m[38;5;12mbetween[39m[38;5;12m [39m
|
||||
[38;5;12msidecars[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mservices.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mPcapPlusPlus[0m[38;5;12m [39m[38;5;12m(https://pcapplusplus.github.io/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mAn[39m[38;5;12m [39m[38;5;12mopen-source[39m[38;5;12m [39m[38;5;12mC++[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mcapturing,[39m[38;5;12m [39m[38;5;12mparsing[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mcrafting[39m[38;5;12m [39m[38;5;12mnetwork[39m[38;5;12m [39m[38;5;12mpackets.[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12mfeatures[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mC++[39m[38;5;12m [39m[38;5;12minterface[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mcreating[39m[38;5;12m [39m[38;5;12mAF_XDP[39m[38;5;12m [39m[38;5;12msockets,[39m[38;5;12m [39m[38;5;12mmaking[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12measy[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;14m[1msend[0m[38;5;14m[1m [0m[38;5;14m[1mand[0m[38;5;14m[1m [0m[38;5;14m[1mreceive[0m[38;5;14m[1m [0m[38;5;14m[1mpackets[0m[38;5;14m[1m [0m[38;5;14m[1mthrough[0m[38;5;14m[1m [0m[38;5;14m[1mthem[0m[38;5;12m [39m
|
||||
[38;5;12m(https://pcapplusplus.github.io/docs/next/features#af_xdp-support-beta).[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mApFree[0m[38;5;14m[1m [0m[38;5;14m[1mWiFiDog[0m[38;5;12m [39m[38;5;12m(https://github.com/liudf0716/apfree-wifidog)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mhigh[39m[38;5;12m [39m[38;5;12mperformance[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mlightweight[39m[38;5;12m [39m[38;5;12mcaptive[39m[38;5;12m [39m[38;5;12mportal[39m[38;5;12m [39m[38;5;12msolution[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mwireless[39m[38;5;12m [39m[38;5;12mnetworks.[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12mleverages[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mtraffic[39m[38;5;12m [39m[38;5;12mcontrol[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mdeep[39m[38;5;12m [39m[38;5;12mpacket[39m[38;5;12m [39m[38;5;12minspection[39m[38;5;12m [39m[38;5;12mcapabilities,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mplans[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m
|
||||
[38;5;12mgradually[39m[38;5;12m [39m[38;5;12mreplace[39m[38;5;12m [39m[38;5;12mnftables[39m[38;5;12m [39m[38;5;12mfirewall[39m[38;5;12m [39m[38;5;12mfunctionality[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12meBPF-based[39m[38;5;12m [39m[38;5;12msolutions.[39m
|
||||
|
||||
[38;2;255;187;0m[4mObservability[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mInKeV: In-Kernel Distributed Network Virtualization for DCN[0m[38;5;12m (https://github.com/iovisor/bpf-docs/blob/master/university/sigcomm-ccr-InKev-2016.pdf)[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mDEEP-mon[0m[38;5;12m [39m[38;5;12m(https://www.slideshare.net/necstlab/deepmon-dynamic-and-energy-efficient-power-monitoring-for-containerbased-infrastructures)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mHelps[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mmeasuring[39m[38;5;12m [39m[38;5;12mpower[39m[38;5;12m [39m[38;5;12mconsumption[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mservers[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12muses[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12min-kernel[39m[38;5;12m [39m[38;5;12maggregation[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m
|
||||
[38;5;12mdata.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mpixie[0m[38;5;12m (https://github.com/pixie-io/pixie) - Observability for Kubernetes using eBPF. Features include protocol tracing, application profiling, and support for distributed bpftrace deployments.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mSkyWalking[0m[38;5;14m[1m [0m[38;5;14m[1mRover[0m[38;5;12m [39m[38;5;12m(https://github.com/apache/skywalking-rover)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mApache[0m[38;5;14m[1m [0m[38;5;14m[1mSkyWalking[0m[38;5;12m [39m[38;5;12m(https://skywalking.apache.org/)[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12mopen-source[39m[38;5;12m [39m[38;5;12mApplication[39m[38;5;12m [39m[38;5;12mPerformance[39m[38;5;12m [39m[38;5;12mMonitoring[39m[38;5;12m [39m[38;5;12m(APM)[39m[38;5;12m [39m[38;5;12mplatform[39m[38;5;12m [39m[38;5;12mspecially[39m[38;5;12m [39m[38;5;12mdesigned[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mdistributed[39m[38;5;12m [39m[38;5;12msystems[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m
|
||||
[38;5;12mmicroservices,[39m[38;5;12m [39m[38;5;12mcloud-native[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mcontainer-based[39m[38;5;12m [39m[38;5;12m(Kubernetes)[39m[38;5;12m [39m[38;5;12marchitectures.[39m[38;5;12m [39m[38;5;12mSkyWalking[39m[38;5;12m [39m[38;5;12mRover[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12meBPF-based[39m[38;5;12m [39m[38;5;12mprofiler[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmetrics[39m[38;5;12m [39m[38;5;12mcollector[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mC,[39m[38;5;12m [39m[38;5;12mC++,[39m[38;5;12m [39m[38;5;12mGolang,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mRust[39m[38;5;12m [39m[38;5;12mapplications.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mparca-agent[0m[38;5;12m (https://github.com/parca-dev/parca-agent) - eBPF based always-on continuous profiler for analysis of CPU and memory usage, down to the line number and throughout time.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mrbperf[0m[38;5;12m (https://github.com/javierhonduco/rbperf) - Sampling profiler and tracer for Ruby.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mHubble[0m[38;5;12m (https://github.com/cilium/hubble) - Network, service and security observability for Kubernetes using eBPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mCaretta[0m[38;5;12m (https://github.com/groundcover-com/caretta) - Instant Kubernetes service dependency map generated by eBPF, right to a Grafana instance.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mDeepFlow[0m[38;5;12m (https://github.com/deepflowio/deepflow) - Instant observability for cloud-native and AI applications based on eBPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mCoroot[0m[38;5;12m (https://github.com/coroot/coroot) - Coroot is an open-source APM & Observability tool, a DataDog and NewRelic alternative.[39m
|
||||
|
||||
[38;2;255;187;0m[4mSecurity[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mFalco[0m[38;5;12m (https://falco.org/) - A cloud-native runtime security project used as a Kubernetes threat detection engine.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mSysmon for Linux[0m[38;5;12m (https://github.com/Sysinternals/SysmonForLinux) - A security monitoring tool. It depends on [39m[38;5;14m[1mSysinternalsEBPF[0m[38;5;12m (https://github.com/Sysinternals/SysinternalsEBPF).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mRed Canary Linux Agent[0m[38;5;12m (https://redcanary.com/blog/ebpf-for-security) - Red Canary has started to incorporate eBPF to their Linux security sensor.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mTracee[0m[38;5;12m (https://github.com/aquasecurity/tracee) - A runtime security and forensics tool for Linux which uses eBPF technology to trace the system and applications at runtime, and analyze collected events to detect suspicious behavioral patterns.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mredcanary-ebpf-sensor[0m[38;5;12m [39m[38;5;12m(https://github.com/redcanaryco/redcanary-ebpf-sensor)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mset[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mgather[39m[38;5;12m [39m[38;5;12msecurity[39m[38;5;12m [39m[38;5;12mrelevant[39m[38;5;12m [39m[38;5;12mevent[39m[38;5;12m [39m[38;5;12mdata[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mLinux[39m[38;5;12m [39m[38;5;12mkernel.[39m[38;5;12m [39m[38;5;12mThe[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12mcombined[39m[38;5;12m [39m[38;5;12minto[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12msingle[39m[38;5;12m [39m[38;5;12mELF[39m[38;5;12m [39m[38;5;12mfile[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12mindividual[39m[38;5;12m [39m
|
||||
[38;5;12mprobes[39m[38;5;12m [39m[38;5;12mcan[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mselectively[39m[38;5;12m [39m[38;5;12mloaded,[39m[38;5;12m [39m[38;5;12mdepending[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mrunning[39m[38;5;12m [39m[38;5;12moperating[39m[38;5;12m [39m[38;5;12msystem[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mkernel[39m[38;5;12m [39m[38;5;12mversion.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbpflock - Lock Linux machines[0m[38;5;12m (https://github.com/linux-lock/bpflock) - An eBPF driven security tool for locking and auditing Linux machines.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mTetragon[0m[38;5;12m (https://github.com/cilium/tetragon) - Kubernetes-aware, eBPF-based security observability and runtime enforcement.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mharpoon[0m[38;5;12m (https://github.com/alegrey91/harpoon) - Trace syscalls from user-space functions, by using eBPF.[39m
|
||||
|
||||
[38;2;255;187;0m[4mTools[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mply[0m[38;5;12m (https://wkz.github.io/ply/) - A small but flexible open source dynamic tracer for Linux, with features similar to the bcc tools, but with a simpler language inspired by awk and DTrace.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbpftrace[0m[38;5;12m (https://bpftrace.org/) - A tool for tracing with its own high-level tracing language. It is flexible enough to be envisioned as a Linux replacement for DTrace and SystemTap.[39m
|
||||
[38;5;12m - [39m[38;5;14m[1mbpftrace Cheat Sheet[0m[38;5;12m (https://www.brendangregg.com/BPF/bpftrace-cheat-sheet.html) - Summary and cheat sheet for programming in bpftrace. Contains information about syntax, probe types, variables and functions.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mkubectl trace[0m[38;5;12m (https://github.com/iovisor/kubectl-trace) - A kubectl plug-in for executing bpftrace programs in a Kubernetes cluster.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1minspektor-gadget[0m[38;5;12m (https://inspektor-gadget.io) - A collection tools and framework for data collection and system inspection on Kubernetes clusters and Linux hosts using eBPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbpfd[0m[38;5;12m (https://github.com/genuinetools/bpfd) - Framework for running BPF programs with rules on Linux as a daemon. Container aware.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mBPFd[0m[38;5;12m (https://github.com/joelagnel/bpfd) - A distinct BPF daemon, trying to leverage the flexibility of the bcc tools to trace and debug remote targets, and in particular devices running with Android.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1madeb[0m[38;5;12m (https://github.com/joelagnel/adeb) - A Linux shell environment for using tracing tools on Android with BPFd.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mgreggd[0m[38;5;12m (https://github.com/olcf/greggd) - System daemon to compile and load eBPF programs into the kernel, and forward program output to socket for metric aggregation.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mFUSE[0m[38;5;12m (https://events.linuxfoundation.org/wp-content/uploads/2017/11/When-eBPF-Meets-FUSE-Improving-Performance-of-User-File-Systems-Ashish-Bijlani-Georgia-Tech.pdf) - Considers using eBPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mupf-bpf[0m[38;5;12m (https://github.com/navarrothiago/upf-bpf) - An in-kernel solution based on XDP for 5G UPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mredbpf[0m[38;5;12m (https://github.com/foniod/redbpf) - Tooling and framework to write eBPF code in Rust efficiently.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mebpf-explorer[0m[38;5;12m (https://github.com/ebpfdev/explorer) - A web interface to explore system's maps and programs.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mebpfmon[0m[38;5;12m (https://github.com/redcanaryco/ebpfmon) - A TUI (terminal user interface) application for real time monitoring of eBPF programs.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mbpfman[0m[38;5;12m (https://github.com/bpfman/bpfman) - An eBPF Manager for Linux and Kubernetes. Includes a built-in program loader that supports program cooperation for XDP and TC programs, as well as deployment of eBPF programs from OCI images.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mptcpdump[0m[38;5;12m (https://github.com/mozillazg/ptcpdump) - A process-aware, eBPF-based tcpdump-like tool.[39m
|
||||
|
||||
[38;5;12m [39m[38;2;255;187;0m[1m[4meBPF in Security[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mEmbrace[0m[38;5;14m[1m [0m[38;5;14m[1mThe[0m[38;5;14m[1m [0m[38;5;14m[1mRed:[0m[38;5;14m[1m [0m[38;5;14m[1mOffensive[0m[38;5;14m[1m [0m[38;5;14m[1mBPF![0m[38;5;12m [39m[38;5;12m(https://embracethered.com/blog/tags/ebpf)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mA[39m[38;5;12m [39m[38;5;12mseries[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mposts[39m[38;5;12m [39m[38;5;12maround[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mintroduction[39m[38;5;12m [39m[38;5;12minto[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mfocus[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12moffensive[39m[38;5;12m [39m[38;5;12msetting,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12malso[39m[38;5;12m [39m[38;5;12mhow[39m[38;5;12m [39m[38;5;12mits[39m[38;5;12m [39m[38;5;12mmisuse[39m[38;5;12m [39m[38;5;12mcan[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mdetected.[39m[38;5;12m [39m[38;5;12mPosts[39m[38;5;12m [39m[38;5;12minclude[39m[38;5;12m [39m[38;5;12mdiscussions[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m
|
||||
[38;5;12mrootkit[39m[38;5;12m [39m[38;5;12mcapabilities[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12meBPF,[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12mtracing[39m[38;5;12m [39m[38;5;12mtype[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mneeded[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mdifferent[39m[38;5;12m [39m[38;5;12muse[39m[38;5;12m [39m[38;5;12mcases.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1meBPF: Block Linux Fileless Payload "Malware" Execution with BPF LSM[0m[38;5;12m (https://djalal.opendz.org/post/ebpf-block-linux-fileless-payload-execution-with-bpf-lsm/) - Blog post about how BPF can help detection and blocking fileless malware.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mBlackhat[0m[38;5;14m[1m [0m[38;5;14m[1m2021:[0m[38;5;14m[1m [0m[38;5;14m[1mWith[0m[38;5;14m[1m [0m[38;5;14m[1mFriends[0m[38;5;14m[1m [0m[38;5;14m[1mLike[0m[38;5;14m[1m [0m[38;5;14m[1meBPF,[0m[38;5;14m[1m [0m[38;5;14m[1mWho[0m[38;5;14m[1m [0m[38;5;14m[1mNeeds[0m[38;5;14m[1m [0m[38;5;14m[1mEnemies?[0m[38;5;12m [39m[38;5;12m(https://www.blackhat.com/us-21/briefings/schedule/#with-friends-like-ebpf-who-needs-enemies-23619)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mTalk[39m[38;5;12m [39m[38;5;12mabout[39m[38;5;12m [39m[38;5;12man[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mrootkit[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mhow[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mcapabilities[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mcould[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mabused.[39m[38;5;12m [39m[38;5;12mThe[39m[38;5;12m [39m
|
||||
[38;5;12mrootkit[39m[38;5;12m [39m[38;5;12mwas[39m[38;5;12m [39m[38;5;12malso[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mobject[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mtalk[39m[38;5;12m [39m[38;5;12mat[39m[38;5;12m [39m[38;5;12mDefcon,[39m[38;5;12m [39m[38;5;14m[1meBPF,[0m[38;5;14m[1m [0m[38;5;14m[1mI[0m[38;5;14m[1m [0m[38;5;14m[1mthought[0m[38;5;14m[1m [0m[38;5;14m[1mwe[0m[38;5;14m[1m [0m[38;5;14m[1mwere[0m[38;5;14m[1m [0m[38;5;14m[1mfriends[0m[38;5;14m[1m [0m[38;5;14m[1m![0m[38;5;12m [39m[38;5;12m(https://defcon.org/html/defcon-29/dc-29-speakers.html#fournier).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mebpfkit[0m[38;5;12m (https://github.com/Gui774ume/ebpfkit) - A rootkit that leverages multiple eBPF features to implement offensive security techniques.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mebpfkit-monitor[0m[38;5;12m (https://github.com/Gui774ume/ebpfkit-monitor) - An utility to statically analyze eBPF bytecode or monitor suspicious eBPF activity at runtime. It was specifically designed to detect ebpfkit.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mBad BPF[0m[38;5;12m (https://github.com/pathtofile/bad-bpf) - A collection of malicious eBPF programs that make use of eBPF's ability to read and write user data in between the usermode program and the kernel.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mTripleCross[0m[38;5;12m (https://github.com/h3xduck/TripleCross) - A Linux eBPF rootkit with a backdoor, C2, library injection, execution hijacking, persistence and stealth capabilities.[39m
|
||||
|
||||
[38;2;255;187;0m[4mThe Code[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mlinux/include/linux/bpf.h[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/bpf.h)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;14m[1mlinux/include/uapi/bpf.h[0m[38;5;12m [39m
|
||||
[38;5;12m(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/bpf.h):[39m[38;5;12m [39m[38;5;12mdefinitions[39m[38;5;12m [39m[38;5;12mrelated[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12meBPF,[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mrespectively[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mkernel[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12minterface[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12muserspace[39m[38;5;12m [39m[38;5;12mprograms.[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mlinux/include/linux/filter.h[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/filter.h)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;14m[1mlinux/include/uapi/filter.h[0m[38;5;12m [39m
|
||||
[38;5;12m(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/filter.h):[39m[38;5;12m [39m[38;5;12minformation[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mrun[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mthemselves.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mlinux/kernel/bpf/[0m[38;5;12m (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf) - This directory contains most of BPF-related code. In particular, those files are worth of interest:[39m
|
||||
|
||||
[38;5;12m - [39m[48;5;235m[38;5;249m[1msyscall.c[0m[38;5;12m (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/syscall.c) - Different operations permitted by the system call, such as program loading or map management.[39m
|
||||
[38;5;12m - [39m[48;5;235m[38;5;249m[1mcore.c[0m[38;5;12m (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/core.c) - BPF interpreter.[39m
|
||||
[38;5;12m - [39m[48;5;235m[38;5;249m[1mverifier.c[0m[38;5;12m (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/verifier.c) - BPF verifier.[39m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mlinux/net/core/filter.c[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/core/filter.c)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mFunctions[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12mhelpers[39m[38;5;12m [39m[38;5;12mrelated[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mnetworking[39m[38;5;12m [39m[38;5;12m(TC,[39m[38;5;12m [39m[38;5;12mXDP[39m[38;5;12m [39m[38;5;12metc.);[39m[38;5;12m [39m[38;5;12malso[39m[38;5;12m [39m[38;5;12mcontains[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mcode[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mmigrate[39m[38;5;12m [39m[38;5;12mcBPF[39m[38;5;12m [39m[38;5;12mbytecode[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12m(all[39m[38;5;12m [39m
|
||||
[38;5;12mcBPF[39m[38;5;12m [39m[38;5;12mprograms[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12mtranslated[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12meBPF[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mrecent[39m[38;5;12m [39m[38;5;12mkernels).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mlinux/kernel/trace/bpf_trace.c[0m[38;5;12m (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/kernel/trace/bpf_trace.c) - Functions and eBPF helpers related to tracing and monitoring (kprobes, tracepoints, etc.).[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mThe[39m[38;5;12m [39m[38;5;12mJIT[39m[38;5;12m [39m[38;5;12mcompilers[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12munder[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mdirectory[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mtheir[39m[38;5;12m [39m[38;5;12mrespective[39m[38;5;12m [39m[38;5;12marchitectures,[39m[38;5;12m [39m[38;5;12msuch[39m[38;5;12m [39m[38;5;12mas[39m[38;5;12m [39m[38;5;12mfile[39m[38;5;12m [39m[38;5;14m[1mlinux/arch/x86/net/bpf_jit_comp.c[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/net/bpf_jit_comp.c)[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mx86\.[39m[38;5;12m [39m[38;5;12mException[39m[38;5;12m [39m
|
||||
[38;5;12mis[39m[38;5;12m [39m[38;5;12mmade[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mJIT[39m[38;5;12m [39m[38;5;12mcompilers[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mhardware[39m[38;5;12m [39m[38;5;12moffload,[39m[38;5;12m [39m[38;5;12msitting[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mtheir[39m[38;5;12m [39m[38;5;12mdrivers,[39m[38;5;12m [39m[38;5;12msuch[39m[38;5;12m [39m[38;5;12mas[39m[38;5;12m [39m[38;5;14m[1mlinux/drivers/net/ethernet/netronome/nfp/bpf/jit.c[0m[38;5;12m [39m
|
||||
[38;5;12m(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/netronome/nfp/bpf/jit.c)[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mNetronome[39m[38;5;12m [39m[38;5;12mNFP.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mlinux/net/sched/[0m[38;5;12m (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/sched) - and in particular in files [39m[48;5;235m[38;5;249mact_bpf.c[49m[39m[38;5;12m (action) and [39m[48;5;235m[38;5;249mcls_bpf.c[49m[39m[38;5;12m (filter): code related to BPF actions and filters with TC.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mlinux/kernel/seccomp.c[0m[38;5;12m (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/kernel/seccomp.c)[39m
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mlinux/net/core/dev.c[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/core/dev.c)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mcontains[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mfunction[39m[38;5;12m [39m[48;5;235m[38;5;249mdev_change_xdp_fd()[49m[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mcalled[39m[38;5;12m [39m[38;5;12mthrough[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mNetlink[39m[38;5;12m [39m[38;5;12mcommand[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mhook[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mXDP[39m[38;5;12m [39m[38;5;12mprogram[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mdevice,[39m[38;5;12m [39m[38;5;12mafter[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mhas[39m[38;5;12m [39m[38;5;12mbeen[39m
|
||||
[38;5;12mloaded[39m[38;5;12m [39m[38;5;12minto[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mkernel[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12muser[39m[38;5;12m [39m[38;5;12mspace.[39m[38;5;12m [39m[38;5;12mThis[39m[38;5;12m [39m[38;5;12mfunction[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mturns[39m[38;5;12m [39m[38;5;12muses[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mcallback[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mrelevant[39m[38;5;12m [39m[38;5;12mdriver.[39m
|
||||
|
||||
[38;2;255;187;0m[4mDevelopment and Community[0m
|
||||
|
||||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mThe[0m[38;5;14m[1m [0m[38;5;14m[1mbpf-next[0m[38;5;14m[1m [0m[38;5;14m[1mtree[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mBPF[39m[38;5;12m [39m[38;5;12mpatches[39m[38;5;12m [39m[38;5;12mland[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mthis[39m[38;5;12m [39m[38;5;12mtree.[39m[38;5;12m [39m[38;5;12mIt[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mregularly[39m[38;5;12m [39m[38;5;12mmerged[39m[38;5;12m [39m[38;5;12minto[39m[38;5;12m [39m[38;5;14m[1mnet-next[0m[38;5;12m [39m[38;5;12m(https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git),[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12mis[39m[38;5;12m [39m[38;5;12mitself[39m[38;5;12m [39m
|
||||
[38;5;12mmerged[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12meach[39m[38;5;12m [39m[38;5;12mrelease[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mLinus'[39m[38;5;12m [39m[38;5;12mtree.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mKernel documentation[0m[38;5;12m (https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/tree/Documentation/bpf/bpf_devel_QA.rst) - About contributions to BPF.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mThe netdev mailing list[0m[38;5;12m (http://lists.openwall.net/netdev/) - Mailing list for Linux kernel networking stack development. All patches are sent there for review and inclusion.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mXDP-newbies[0m[38;5;12m (http://vger.kernel.org/vger-lists.html#xdp-newbies) - A mailing list specially dedicated to XDP programming (both for architecture or for asking for help).[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mIO Visor mailing list[0m[38;5;12m (http://lists.iovisor.org/pipermail/iovisor-dev/) - BPF is at the heart of the project, and is regularly discussed on the mailing list.[39m
|
||||
[38;5;12m- [39m[38;5;14m[1m@IOVisor Twitter account[0m[38;5;12m (https://twitter.com/IOVisor)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mThe XDP Collaboration Project[0m[38;5;12m (https://github.com/xdp-project/xdp-project) - A GitHub repository with notes and ideas regarding the future evolutions of XDP.[39m
|
||||
|
||||
[38;2;255;187;0m[4mOther Lists of Resources on eBPF[0m
|
||||
|
||||
[38;5;12m- [39m[38;5;14m[1mIO Visor's bcc documentation[0m[38;5;12m (https://github.com/iovisor/bcc/tree/master/docs)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mIO Visor's bpf-docs repository[0m[38;5;12m (https://github.com/iovisor/bpf-docs/)[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mDive into BPF: A List of Reading Material[0m[38;5;12m (https://qmonnet.github.io/whirl-offload/2016/09/01/dive-into-bpf/)[39m
|
||||
|
||||
[38;2;255;187;0m[4mAcknowledgement[0m
|
||||
|
||||
[38;5;12mThank you to Quentin Monnet and Daniel Borkmann for their original work on [39m[38;5;14m[1mDive into BPF: A List of Reading Material[0m[38;5;12m (https://qmonnet.github.io/whirl-offload/2016/09/01/dive-into-bpf/) which became the basis for this list.[39m
|
||||
|
||||
[38;2;255;187;0m[4mContributing[0m
|
||||
|
||||
[38;5;12mContributions welcome! Read the [39m[38;5;14m[1mcontribution guidelines[0m[38;5;12m (contributing.md) first.[39m
|
||||
|
||||
[38;2;255;187;0m[4mLicense[0m
|
||||
|
||||
[38;5;14m[1m![0m[38;5;12mCC0[39m[38;5;14m[1m (http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)[0m[38;5;12m (http://creativecommons.org/publicdomain/zero/1.0)[39m
|
||||
|
||||
[38;5;12mTo the extent possible under law, zoidbergwill has waived all copyright and related or neighboring rights to this work.[39m
|
||||
|
||||
[38;5;12mebpf Github: https://github.com/zoidbergwill/awesome-ebpf[39m
|
||||
Reference in New Issue
Block a user