Isn't this how tcpdump/ngrep/gopacket work? For parsing the HTTP protocol, I find netpeek effective [1] https://github.com/darshanime/netpeek
tcpdump only uses BPF, not eBPF. BPF is a simpler language that, among other things, is guaranteed to run in finite time because it doesn't have backward jumps, and has limitations on program size (4096 instructions). (The "e" in eBPF stands for "extended", as it extends BPF to remove those limitations, among other changes.) It compiles your filter expression into a series of instructions, using libpcap. For instance…
Application Traffic with eBPF
11–20 of 20 posts
Re: Application Traffic with eBPF
#12For those interested, you can also take a look at our open-source project DeepFlow - https://deepflow.io - https://github.com/deepflowio/deepflow We use eBPF to achieve non-intrusive (we call it `zero-code`) observability without modifying any application code, and have implemented three core features: Universal Map, Distributed Tracing, and Continuous Profiling. Yes, we have implemented *Distributed* tracing using e…
I have to say I find projects that talk about generic concepts (observability, tracing, eBPF), but then when you dig in the docs it's 100% Kubernetes-specific, to be highly misleading. Not everyone uses Kubernetes, and distributed tracing is a good thing to have regardless of the underlying platform.
As in https://www.cncf.io/
Re: Application Traffic with eBPF
#13Earlier quoted context omitted.
I have to say I find projects that talk about generic concepts (observability, tracing, eBPF), but then when you dig in the docs it's 100% Kubernetes-specific, to be highly misleading. Not everyone uses Kubernetes, and distributed tracing is a good thing to have regardless of the underlying platform.
"Cloud Native" == Kubernetes As in https://www.cncf.io/
Re: Application Traffic with eBPF
#14Earlier quoted context omitted.
"Cloud Native" == Kubernetes As in https://www.cncf.io/
Yeah, no. Cloud-native used to mean something even before Kubernetes became mainstream, and technically the CNCF isn't about Kubernetes only, which is why KubeCon and CloudNativeCon are separate events (held together, but separate). Just going to their website shows me two case studies, one is around Kubernetes (Spotify), the other around Vitess (Slack) and has nothing to do with k8s.
I don't recall people throwing Cloud Native as a term before k8s or outside that space. Google trends seems to confirm they emerged at the same time:
https://trends.google.com/trends/explore?date=all&q=Cloud%20...
Re: Application Traffic with eBPF
#15Earlier quoted context omitted.
tcpdump only uses BPF, not eBPF. BPF is a simpler language that, among other things, is guaranteed to run in finite time because it doesn't have backward jumps, and has limitations on program size (4096 instructions). (The "e" in eBPF stands for "extended", as it extends BPF to remove those limitations, among other changes.) It compiles your filter expression into a series of instructions, using libpcap. For instance…
eBPF are still verified for completion, not just BPF. This is not relaxed in eBPF.
Meanwhile, the verification that an eBPF program terminates is dependent on the correctness of the verifier, and similarly there's no guarantee that a program with appropriately-bounded complexity will be accepted by the verifier.
To be clear: I'm not trying to throw shade at the verifier; to the contrary, I think it's an impressive piece of software. But there's a difference between being able to prove in one sentence that a program always terminates, and needing to rely on the correctness of some verification software.
Re: Application Traffic with eBPF
#16For those interested, you can also take a look at our open-source project DeepFlow - https://deepflow.io - https://github.com/deepflowio/deepflow We use eBPF to achieve non-intrusive (we call it `zero-code`) observability without modifying any application code, and have implemented three core features: Universal Map, Distributed Tracing, and Continuous Profiling. Yes, we have implemented *Distributed* tracing using e…
For distributed tracing, how is deepflow able to correlate an inbound request (eg. client call) with an outbound request (eg. 3rd party API call required to service client call) without being inside the business logic?
Re: Application Traffic with eBPF
#17Isn't this how tcpdump/ngrep/gopacket work? For parsing the HTTP protocol, I find netpeek effective [1] https://github.com/darshanime/netpeek
tcpdump only uses BPF, not eBPF. BPF is a simpler language that, among other things, is guaranteed to run in finite time because it doesn't have backward jumps, and has limitations on program size (4096 instructions). (The "e" in eBPF stands for "extended", as it extends BPF to remove those limitations, among other changes.) It compiles your filter expression into a series of instructions, using libpcap. For instance…
Re: Application Traffic with eBPF
#18Earlier quoted context omitted.
Yeah, no. Cloud-native used to mean something even before Kubernetes became mainstream, and technically the CNCF isn't about Kubernetes only, which is why KubeCon and CloudNativeCon are separate events (held together, but separate). Just going to their website shows me two case studies, one is around Kubernetes (Spotify), the other around Vitess (Slack) and has nothing to do with k8s.
Kubernetes heavily dominates there though. I don't recall people throwing Cloud Native as a term before k8s or outside that space. Google trends seems to confirm they emerged at the same time: https://trends.google.com/trends/explore?date=all&q=Cloud%20...
I recall hearing cloud native compared to lift and shift regarding migrating to AWS ~2012-2013.
Re: Application Traffic with eBPF
#19Earlier quoted context omitted.
tcpdump only uses BPF, not eBPF. BPF is a simpler language that, among other things, is guaranteed to run in finite time because it doesn't have backward jumps, and has limitations on program size (4096 instructions). (The "e" in eBPF stands for "extended", as it extends BPF to remove those limitations, among other changes.) It compiles your filter expression into a series of instructions, using libpcap. For instance…
Could you recommend any book/article/video about how eBPF works? - I got a bit interested in this topic but couldn't find anything technical.
Re: Application Traffic with eBPF
#20Earlier quoted context omitted.
For distributed tracing, how is deepflow able to correlate an inbound request (eg. client call) with an outbound request (eg. 3rd party API call required to service client call) without being inside the business logic?
Our paper provides some explanations: https://dl.acm.org/doi/10.1145/3603269.3604823