Skip to content

Commit 85307e9

Browse files
committed
1 parent f30979f commit 85307e9

File tree

73 files changed

+1912
-1246
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1912
-1246
lines changed

archives/index.html

Lines changed: 5 additions & 4 deletions
Large diffs are not rendered by default.

categories/ebpf/index.html

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
<!doctype html><html lang=en dir=auto><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>EBPF | Kerolt's Blog</title><meta name=keywords content><meta name=description content="ExampleSite description"><meta name=author content="Kerolt"><link rel=canonical href=https://kerolt.github.io/categories/ebpf/><meta name=google-site-verification content="NpIO0KEIJS0CPRzTzQCbYQdSRIyb0Lspx"><meta name=yandex-verification content="XYZabc"><meta name=msvalidate.01 content="2300A23B82DB579A2DEA6261191AD771"><link crossorigin=anonymous href=/assets/css/stylesheet.bac160dbfb451d3b958c7b16ede7310831652f1c7b9abec95d519b00de4cd6a5.css integrity="sha256-usFg2/tFHTuVjHsW7ecxCDFlLxx7mr7JXVGbAN5M1qU=" rel="preload stylesheet" as=style><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/lxgw-wenkai-screen-web/style.css><link rel=icon href=https://kerolt.github.io/images/avatar/favicon.png><link rel=icon type=image/png sizes=16x16 href=https://kerolt.github.io/%3Clink%20/%20abs%20url%3E><link rel=icon type=image/png sizes=32x32 href=https://kerolt.github.io/%3Clink%20/%20abs%20url%3E><link rel=apple-touch-icon href=https://kerolt.github.io/%3Clink%20/%20abs%20url%3E><link rel=mask-icon href=https://kerolt.github.io/%3Clink%20/%20abs%20url%3E><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://kerolt.github.io/categories/ebpf/index.xml><link rel=alternate hreflang=en href=https://kerolt.github.io/categories/ebpf/><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js></script><link rel=stylesheet href=https://cdn.jsdelivr.net/gh/fancyapps/[email protected]/dist/jquery.fancybox.min.css><script src=https://cdn.jsdelivr.net/gh/fancyapps/[email protected]/dist/jquery.fancybox.min.js></script><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51)}.list{background:var(--theme)}.list:not(.dark)::-webkit-scrollbar-track{background:0 0}.list:not(.dark)::-webkit-scrollbar-thumb{border-color:var(--theme)}}</style></noscript><meta property="og:url" content="https://kerolt.github.io/categories/ebpf/"><meta property="og:site_name" content="Kerolt's Blog"><meta property="og:title" content="EBPF"><meta property="og:description" content="ExampleSite description"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta property="og:image" content="https://kerolt.github.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://kerolt.github.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E"><meta name=twitter:title content="EBPF"><meta name=twitter:description content="ExampleSite description"></head><body class=list id=top><script>localStorage.getItem("pref-theme")==="dark"?document.body.classList.add("dark"):localStorage.getItem("pref-theme")==="light"?document.body.classList.remove("dark"):window.matchMedia("(prefers-color-scheme: dark)").matches&&document.body.classList.add("dark")</script><header class=header><nav class=nav><div class=logo><a href=https://kerolt.github.io/ accesskey=h title="Kerolt's Blog (Alt + H)">Kerolt's Blog</a><div class=logo-switches><button id=theme-toggle accesskey=t title="(Alt + T)" aria-label="Toggle theme">
22
<svg id="moon" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg>
33
<svg id="sun" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://kerolt.github.io/posts/ title=文章><span>文章</span></a></li><li><a href=https://kerolt.github.io/categories/ title=分类><span>分类</span></a></li><li><a href=https://kerolt.github.io/tags/ title=标签><span>标签</span></a></li><li><a href=https://kerolt.github.io/archives/ title=归档><span>归档</span></a></li><li><a href=https://kerolt.github.io/about/ title=关于我><span>关于我</span></a></li><li><a href=https://kerolt.github.io/search/ title="🔍 (Alt + /)" accesskey=/><span>🔍</span></a></li></ul></nav></header><main class=main><header class=page-header><div class=breadcrumbs><a href=https://kerolt.github.io/>Home</a>&nbsp;»&nbsp;<a href=https://kerolt.github.io/categories/>Categories</a></div><h1>EBPF
4-
<a href=/categories/ebpf/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>TC和XDP</h2></header><div class=entry-content><p>tc 和 XDP 都能对网络数据包进行处理,但它们位于 不同的网络协议栈层次,因此性能、能力和适用场景差别都很大:
5-
项目 作用层级 处理方向 特点 XDP (eXpress Data Path) 驱动层(最早):网络设备驱动入口处(L2 之前) 入站(Ingress) 极快,绕过内核协议栈,可直接丢包/转发 tc (Traffic Control) 内核网络栈层(L3/L4 之后) 入站 + 出站 通常用于带宽控制、QoS、流量整形等 Linux 网络包处理路径 下面这张图能清晰地看到 XDP 和 tc 各自处在什么位置:
6-
+----------------------------------------+ | 用户空间 | | (应用层: Nginx, curl, ping, etc.) | +----------------------------------------+ ▲ │ send()/recv() │ +----------------------------------------+ | 内核网络协议栈 | |----------------------------------------| | L4 (TCP/UDP) | | L3 (IP 路由转发) | | L2 (Ethernet frame 处理) | +----------------------------------------+ ▲ ▲ │ │ tc ingress/qdisc tc egress/qdisc │ │ │ ▼ +----------------------------------------+ | XDP (eXpress Data Path) | | (位于网卡驱动中,最靠近硬件的钩子点) | +----------------------------------------+ ▲ │ NIC 驱动 / DMA 收包 处理路径细节对比 对比项 XDP tc (ingress/egress) 所在层级 NIC 驱动层(比内核协议栈还早) 内核网络栈(L3/L4 层之间) 钩子位置 驱动接收包 → DMA → XDP skb(socket buffer)进入或离开协议栈时 作用方向 仅支持 ingress(入站) 支持 ingress + egress 处理对象 原始数据包(frame) 封装后的 skb 性能 极高(可在百万 pps 级别) 中等(受内核调度和 qdisc 影响) 典型用途 DDoS 防护、早期丢包、快速转发、内核旁路 QoS、流量整形、限速、包分类 可编程性 eBPF 程序(xdp 程序) eBPF 程序(cls_bpf) 返回动作 XDP_PASS、XDP_DROP、XDP_TX、XDP_REDIRECT TC_ACT_OK、TC_ACT_SHOT、TC_ACT_REDIRECT 使用接口 ip link set dev eth0 xdp obj prog.o tc filter add dev eth0 ... bpf obj prog.o 数据处理流程举例 XDP 流程(最早阶段) [网卡接收包] ↓ [XDP 程序执行] ├── XDP_DROP:直接丢包(不进入内核) ├── XDP_PASS:让包进入内核协议栈 ├── XDP_TX:直接从驱动回发 └── XDP_REDIRECT:转发到其他网卡或 AF_XDP socket 典型用途:
7-
...</p></div><footer class=entry-footer><span title='2025-10-29 00:00:00 +0000 UTC'>2025-10-29</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;287 words&nbsp;·&nbsp;Kerolt</footer><a class=entry-link aria-label="post link to TC和XDP" href=https://kerolt.github.io/posts/ebpf/tc%E5%92%8Cxdp/></a></article><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>eBPF中何时使用字节序转换函数</h2></header><div class=entry-content><p>在 eBPF 中,什么时候应该用 bpf_htons、bpf_htonl、bpf_ntohs、bpf_ntohl?
4+
<a href=/categories/ebpf/index.xml title=RSS aria-label=RSS><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" height="23"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></h1></header><article class="post-entry tag-entry"><header class=entry-header><h2 class=entry-hint-parent>eBPF中何时使用字节序转换函数</h2></header><div class=entry-content><p>在 eBPF 中,什么时候应该用 bpf_htons、bpf_htonl、bpf_ntohs、bpf_ntohl?
85
这些 bpf_* 函数是 eBPF 程序中用于字节序转换的辅助函数。它们的作用与标准的 C 库中的 htons、htonl、ntohs、ntohl 类似,但针对 BPF 环境进行了优化或封装。它们用于在主机字节序(Host Byte Order)和网络字节序(Network Byte Order)之间进行转换。
96
简而言之,当在 BPF 程序中处理网络协议头部(如 IP、TCP、UDP)中的多字节字段时,就需要使用这些函数。
107
网络协议标准(例如,IPv4、TCP、UDP)规定所有多字节数值(如端口号、IP 地址、校验和等)都必须以网络字节序(大端序,Big-Endian)传输。

categories/ebpf/index.xml

Lines changed: 1 addition & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -11,135 +11,8 @@
1111
</image>
1212
<generator>Hugo -- 0.152.2</generator>
1313
<language>en</language>
14-
<lastBuildDate>Wed, 29 Oct 2025 00:00:00 +0000</lastBuildDate>
14+
<lastBuildDate>Thu, 23 Oct 2025 00:00:00 +0000</lastBuildDate>
1515
<atom:link href="https://kerolt.github.io/categories/ebpf/index.xml" rel="self" type="application/rss+xml" />
16-
<item>
17-
<title>TC和XDP</title>
18-
<link>https://kerolt.github.io/posts/ebpf/tc%E5%92%8Cxdp/</link>
19-
<pubDate>Wed, 29 Oct 2025 00:00:00 +0000</pubDate>
20-
<guid>https://kerolt.github.io/posts/ebpf/tc%E5%92%8Cxdp/</guid>
21-
<description>&lt;p&gt;&lt;strong&gt;&lt;code&gt;tc&lt;/code&gt;&lt;/strong&gt;&lt;strong&gt;&lt;code&gt;XDP&lt;/code&gt;&lt;/strong&gt; 都能对网络数据包进行处理,但它们位于 &lt;strong&gt;不同的网络协议栈层次&lt;/strong&gt;,因此性能、能力和适用场景差别都很大:&lt;/p&gt;
22-
&lt;table&gt;
23-
&lt;thead&gt;
24-
&lt;tr&gt;
25-
&lt;th&gt;项目&lt;/th&gt;
26-
&lt;th&gt;作用层级&lt;/th&gt;
27-
&lt;th&gt;处理方向&lt;/th&gt;
28-
&lt;th&gt;特点&lt;/th&gt;
29-
&lt;/tr&gt;
30-
&lt;/thead&gt;
31-
&lt;tbody&gt;
32-
&lt;tr&gt;
33-
&lt;td&gt;&lt;strong&gt;XDP (eXpress Data Path)&lt;/strong&gt;&lt;/td&gt;
34-
&lt;td&gt;&lt;strong&gt;驱动层(最早)&lt;/strong&gt;:网络设备驱动入口处(L2 之前)&lt;/td&gt;
35-
&lt;td&gt;入站(Ingress)&lt;/td&gt;
36-
&lt;td&gt;极快,绕过内核协议栈,可直接丢包/转发&lt;/td&gt;
37-
&lt;/tr&gt;
38-
&lt;tr&gt;
39-
&lt;td&gt;&lt;strong&gt;tc (Traffic Control)&lt;/strong&gt;&lt;/td&gt;
40-
&lt;td&gt;&lt;strong&gt;内核网络栈层(L3/L4 之后)&lt;/strong&gt;&lt;/td&gt;
41-
&lt;td&gt;入站 + 出站&lt;/td&gt;
42-
&lt;td&gt;通常用于带宽控制、QoS、流量整形等&lt;/td&gt;
43-
&lt;/tr&gt;
44-
&lt;/tbody&gt;
45-
&lt;/table&gt;
46-
&lt;h2 id=&#34;linux-网络包处理路径&#34;&gt;Linux 网络包处理路径&lt;/h2&gt;
47-
&lt;p&gt;下面这张图能清晰地看到 &lt;code&gt;XDP&lt;/code&gt;&lt;code&gt;tc&lt;/code&gt; 各自处在什么位置:&lt;/p&gt;
48-
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; +----------------------------------------+
49-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | 用户空间 |
50-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | (应用层: Nginx, curl, ping, etc.) |
51-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; +----------------------------------------+
52-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
53-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; │ send()/recv()
54-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
55-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; +----------------------------------------+
56-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | 内核网络协议栈 |
57-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; |----------------------------------------|
58-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | L4 (TCP/UDP) |
59-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | L3 (IP 路由转发) |
60-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | L2 (Ethernet frame 处理) |
61-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; +----------------------------------------+
62-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; ▲ ▲
63-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; │ │
64-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; tc ingress/qdisc tc egress/qdisc
65-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; │ │
66-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; │ ▼
67-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; +----------------------------------------+
68-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | XDP (eXpress Data Path) |
69-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; | (位于网卡驱动中,最靠近硬件的钩子点) |
70-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; +----------------------------------------+
71-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
72-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
73-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; NIC 驱动 / DMA 收包
74-
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
75-
&lt;h2 id=&#34;处理路径细节对比&#34;&gt;处理路径细节对比&lt;/h2&gt;
76-
&lt;table&gt;
77-
&lt;thead&gt;
78-
&lt;tr&gt;
79-
&lt;th&gt;对比项&lt;/th&gt;
80-
&lt;th&gt;&lt;strong&gt;XDP&lt;/strong&gt;&lt;/th&gt;
81-
&lt;th&gt;&lt;strong&gt;tc (ingress/egress)&lt;/strong&gt;&lt;/th&gt;
82-
&lt;/tr&gt;
83-
&lt;/thead&gt;
84-
&lt;tbody&gt;
85-
&lt;tr&gt;
86-
&lt;td&gt;&lt;strong&gt;所在层级&lt;/strong&gt;&lt;/td&gt;
87-
&lt;td&gt;NIC 驱动层(比内核协议栈还早)&lt;/td&gt;
88-
&lt;td&gt;内核网络栈(L3/L4 层之间)&lt;/td&gt;
89-
&lt;/tr&gt;
90-
&lt;tr&gt;
91-
&lt;td&gt;&lt;strong&gt;钩子位置&lt;/strong&gt;&lt;/td&gt;
92-
&lt;td&gt;驱动接收包 → DMA → XDP&lt;/td&gt;
93-
&lt;td&gt;skb(socket buffer)进入或离开协议栈时&lt;/td&gt;
94-
&lt;/tr&gt;
95-
&lt;tr&gt;
96-
&lt;td&gt;&lt;strong&gt;作用方向&lt;/strong&gt;&lt;/td&gt;
97-
&lt;td&gt;仅支持 ingress(入站)&lt;/td&gt;
98-
&lt;td&gt;支持 ingress + egress&lt;/td&gt;
99-
&lt;/tr&gt;
100-
&lt;tr&gt;
101-
&lt;td&gt;&lt;strong&gt;处理对象&lt;/strong&gt;&lt;/td&gt;
102-
&lt;td&gt;原始数据包(frame)&lt;/td&gt;
103-
&lt;td&gt;封装后的 skb&lt;/td&gt;
104-
&lt;/tr&gt;
105-
&lt;tr&gt;
106-
&lt;td&gt;&lt;strong&gt;性能&lt;/strong&gt;&lt;/td&gt;
107-
&lt;td&gt;极高(可在百万 pps 级别)&lt;/td&gt;
108-
&lt;td&gt;中等(受内核调度和 qdisc 影响)&lt;/td&gt;
109-
&lt;/tr&gt;
110-
&lt;tr&gt;
111-
&lt;td&gt;&lt;strong&gt;典型用途&lt;/strong&gt;&lt;/td&gt;
112-
&lt;td&gt;DDoS 防护、早期丢包、快速转发、内核旁路&lt;/td&gt;
113-
&lt;td&gt;QoS、流量整形、限速、包分类&lt;/td&gt;
114-
&lt;/tr&gt;
115-
&lt;tr&gt;
116-
&lt;td&gt;&lt;strong&gt;可编程性&lt;/strong&gt;&lt;/td&gt;
117-
&lt;td&gt;eBPF 程序(xdp 程序)&lt;/td&gt;
118-
&lt;td&gt;eBPF 程序(cls_bpf)&lt;/td&gt;
119-
&lt;/tr&gt;
120-
&lt;tr&gt;
121-
&lt;td&gt;&lt;strong&gt;返回动作&lt;/strong&gt;&lt;/td&gt;
122-
&lt;td&gt;XDP_PASS、XDP_DROP、XDP_TX、XDP_REDIRECT&lt;/td&gt;
123-
&lt;td&gt;TC_ACT_OK、TC_ACT_SHOT、TC_ACT_REDIRECT&lt;/td&gt;
124-
&lt;/tr&gt;
125-
&lt;tr&gt;
126-
&lt;td&gt;&lt;strong&gt;使用接口&lt;/strong&gt;&lt;/td&gt;
127-
&lt;td&gt;&lt;code&gt;ip link set dev eth0 xdp obj prog.o&lt;/code&gt;&lt;/td&gt;
128-
&lt;td&gt;&lt;code&gt;tc filter add dev eth0 ... bpf obj prog.o&lt;/code&gt;&lt;/td&gt;
129-
&lt;/tr&gt;
130-
&lt;/tbody&gt;
131-
&lt;/table&gt;
132-
&lt;h2 id=&#34;数据处理流程举例&#34;&gt;数据处理流程举例&lt;/h2&gt;
133-
&lt;h3 id=&#34;xdp-流程最早阶段&#34;&gt;XDP 流程(最早阶段)&lt;/h3&gt;
134-
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[网卡接收包]
135-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
136-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[XDP 程序执行]
137-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; ├── XDP_DROP:直接丢包(不进入内核)
138-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; ├── XDP_PASS:让包进入内核协议栈
139-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; ├── XDP_TX:直接从驱动回发
140-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; └── XDP_REDIRECT:转发到其他网卡或 AF_XDP socket
141-
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;典型用途:&lt;/strong&gt;&lt;/p&gt;</description>
142-
</item>
14316
<item>
14417
<title>eBPF中何时使用字节序转换函数</title>
14518
<link>https://kerolt.github.io/posts/ebpf/ebpf%E4%B8%AD%E4%BD%95%E6%97%B6%E4%BD%BF%E7%94%A8%E5%AD%97%E8%8A%82%E5%BA%8F%E8%BD%AC%E6%8D%A2%E5%87%BD%E6%95%B0/</link>

0 commit comments

Comments
 (0)