Skip to content

Commit 8c887bc

Browse files
committed
update README and man for nettrace
With the feature we add recently, the README and man should be updated as well. Signed-off-by: Menglong Dong <imagedong@tencent.com>
1 parent 111ab20 commit 8c887bc

3 files changed

Lines changed: 156 additions & 33 deletions

File tree

README.md

Lines changed: 57 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,38 @@
1818

1919
`nettrace`是一款基于eBPF的集网络报文跟踪(故障定位)、网络故障诊断、网络异常监控于一体的网络工具集,旨在能够提供一种更加高效、易用的方法来解决复杂场景下的网络问题。目前,其实现的功能包括:
2020

21-
- 报文生命周期跟踪:跟踪网络报文从进入到内核协议栈到释放/丢弃的过程中在内核中所走过的路径,实现报文整个生命周期的监控,并采集生命周期各个阶段的事件、信息。通过观察报文在内核中的路径,对于有一定内核协议栈经验的人来说可以快速、有效地发现网络问题。
21+
- 网络报文跟踪:跟踪网络报文从进入到内核协议栈到释放/丢弃的过程中在内核中所走过的路径,实现报文整个生命周期的监控,并采集生命周期各个阶段的事件、信息。通过观察报文在内核中的路径,对于有一定内核协议栈经验的人来说可以快速、有效地发现网络问题。
2222
- 网络故障诊断:将以往的经验集成到工具的知识库,通过知识匹配的方式来主动诊断当前网络故障,给出诊断结果以及修复建议。该功能入手简单、易用性强,无需过多的网络经验即可进行网络问题定位。
2323
- 网络异常监控:常态化地部署到生产环境中,主动地发现、上报环境上的网络异常。
2424
- `droptrace`:用于跟踪、监控系统中的丢包事件的工具,点击[这里](docs/droptrace.md)查看详情介绍。该功能已被遗弃,可以使用`nettrace --drop`实现相同的功能。
2525

2626
## 二、安装方法
2727

28-
nettrace是采用C语言编写的基于eBPF(libbpf)的命令行工具,在使用和安装时可以用编译好的RPM包和二进制程序。需要注意的是,github上发布的RPM和二进制程序都是基于TencentOS(5.4.119内核版本)编译的,对于不支持CORE的其他版本的内核,最好下载源码编译后使用,以防止数据结构不兼容的问题。
28+
nettrace是采用C语言编写的基于eBPF(libbpf)的命令行工具,在使用和安装时可以用编译好的RPM包和二进制程序。
2929

30-
### 2.1 RPM安装
30+
## 2.1 系统要求
31+
32+
**注意**:对于支持BTF特性(内核版本 >= 5.3,并且配置了`CONFIG_DEBUG_INFO_BTF=y`内核配置项)的内核,可以直接下载[releases](https://github.com/OpenCloudOS/nettrace/releases)中编译好的`nettrace-xxx-1.btf.x86_64.rpm``nettrace-xxx-1.btf.x86_64.deb`安装包进行安装使用,或者下载包含了二进制程序的`nettrace-xxx-1.btf.tar.bz2`压缩包;对于不支持BTF的低版本的内核,需要在对应的系统上手动编译后才能使用。
33+
34+
### 2.2 RPM/DEB安装
3135

3236
对于TencentOS系统,可以直接使用yum命令来进行在线安装:
3337

3438
```shell
3539
sudo yum install nettrace
3640
```
3741

38-
也可以直接从[releases](https://github.com/OpenCloudOS/nettrace/releases)中下载对应的RPM安装包,手动进行安装。
42+
也可以直接从[releases](https://github.com/OpenCloudOS/nettrace/releases)中下载对应的RPM/DEB安装包,手动进行安装。
3943

40-
### 2.2 二进制下载
44+
### 2.3 二进制下载
4145

42-
直接从[releases](https://github.com/OpenCloudOS/nettrace/releases)下载编译好的二进制包也是可以的,[releases](https://github.com/OpenCloudOS/nettrace/releases)中的`tar.bz2`格式的压缩包即为二进制程序。由于里面的工具采用的都是静态编译的方式,因此在内核版本支持的情况下,都是可以直接下载解压后运行的。再次提醒:对于不支持`CO-RE`模式的非`TencentOS`的内核版本,最好在对应的环境上编译后使用。
46+
直接从[releases](https://github.com/OpenCloudOS/nettrace/releases)下载编译好的二进制包也是可以的,[releases](https://github.com/OpenCloudOS/nettrace/releases)中的`tar.bz2`格式的压缩包即为二进制程序。由于里面的工具采用的都是静态编译的方式,因此在内核版本支持的情况下,都是可以直接下载解压后运行的。**再次提醒**:对于不支持BTF的内核版本,最好在对应的环境上编译后使用。
4347

44-
### 2.3 手动编译
48+
### 2.4 手动编译
4549

4650
下面来介绍下如何在Centos、ubuntu等环境上进行nettrace工具的手动编译和安装。本工具目前在4.14/4.15/5.4/5.10/5.18等版本的内核上均进行过适配和测试,更低版本的内核暂未进行适配。
4751

48-
#### 2.3.1 依赖安装
52+
#### 2.4.1 依赖安装
4953

5054
本工具在编译的时候依赖于`libelf``libbpf``bpftool`组件,`clang``gcc`编译工具。其中,bpftool二进制程序已经直接预编译好放到源码包的script目录中,因此可以不安装。但是对于版本较高的内核,请尽量从软件仓库安装该工具。
5155

@@ -59,7 +63,7 @@ sudo yum install nettrace
5963
sudo apt install libelf-dev libbpf-dev linux-headers-`uname -r` clang llvm gcc linux-tools-`uname -r` linux-tools-generic
6064
```
6165

62-
注意:如果当前发行版(如ubuntu16,ubuntu18)不支持libbpf-dev,请按照下文提示手动按照libbpf-0.2版本。同时,clang版本要在10+(低版本的测试有问题,暂时还没搞定),ubuntu18+直接安装clang-10 llvm-10即可,ubuntu16需要按照[这里](https://segmentfault.com/a/1190000040827790)的教程安装更新版本的clang。
66+
注意:如果当前发行版(如ubuntu16,ubuntu18)不支持libbpf-dev,请按照下文提示手动安装libbpf-0.2版本。同时,clang版本要在10+(低版本的测试有问题,暂时还没搞定),ubuntu18+直接安装clang-10 llvm-10即可,ubuntu16需要按照[这里](https://segmentfault.com/a/1190000040827790)的教程安装更新版本的clang。
6367

6468
##### centos
6569

@@ -78,7 +82,7 @@ cd libbpf-0.2/src
7882
make install
7983
```
8084

81-
#### 2.3.2 编译
85+
#### 2.4.2 编译
8286

8387
直接下载nettrace的源码即可进行编译安装:
8488

@@ -88,6 +92,14 @@ cd nettrace
8892
make all
8993
```
9094

95+
**注意**:对于不支持BTF的5.X版本的内核,在编译的时候需要加参数`COMPAT=1`,如下所示(4.X版本的内核会自动启用该参数):
96+
97+
```shell
98+
make COMPAT=1 all
99+
```
100+
101+
启用该参数,eBPF程序会以BPF_PROBE_READ的方式来读取数据;否则,eBPF程序会以BPF_CORE_READ的方式来读取。
102+
91103
也可以单独编译其中的某个子工具,例如只编译nettrace命令:
92104

93105
```shell
@@ -113,19 +125,12 @@ make VMLINUX=/home/ubuntu/kernel/vmlinux all
113125
make BPFTOOL=/usr/lib/linux-tools/5.15.0-43-generic/bpftool all
114126
```
115127

116-
需要注意,对于低版本的内核(4.x),在编译的时候需要加参数`COMPAT=1`,如下所示:
117-
```shell
118-
make COMPAT=1 all
119-
```
120-
121-
该参数会强制启用内联函数的方式,会使得编译出来的二进制程序变大,但是没办法,低版本的内核必须要用内核函数的方式才能加载。
122-
123128
同时,对于`ubuntu 16.04/ubuntu 18.04`系统,其内核似乎存在BUG,即其使用的内核版本实际为4.15.18,uname看到的却是4.15.0。这导致了加载eBPF程序的时候内核版本不一致,无法加载。因此对于这种情况,可以使用KERN_VER参数来手动指定内核版本(计算方式为:`(4<<16) + (15<<8) + 18`):
124129
```shell
125-
make COMPAT=1 KERN_VER=266002 all
130+
make KERN_VER=266002 all
126131
```
127132

128-
#### 2.3.3 打包
133+
#### 2.4.3 打包
129134

130135
使用命令`make rpm`可制作rpm包;使用命令`make pack`可制作二进制包(二进制程序打包到压缩包中,默认存放路径为output文件夹)。
131136

@@ -152,6 +157,7 @@ Usage:
152157
-t, --trace enable trace group or trace
153158
--ret show function return value
154159
--detail show extern packet info, such as pid, ifname, etc
160+
--date print timestamp in date-time format
155161
--basic use 'basic' trace mode, don't trace skb's life
156162
--diag enable 'diagnose' mode
157163
--diag-quiet only print abnormal packet
@@ -169,6 +175,7 @@ Usage:
169175
- `t/trace`:要启用的跟踪模块,默认启用所有
170176
- `ret`:跟踪和显示内核函数的返回值
171177
- `detail`:显示跟踪详细信息,包括当前的进程、网口和CPU等信息
178+
- `date`:以时间格式打印(以2022-10-24 xx:xx:xx.xxxxxx格式打印),而不是时间戳
172179
- `basic`:启用`basic`跟踪模式。默认情况下,启用的是生命周期跟踪模式。启用该模式后,会直接打印出报文所经过的内核函数/tracepoint。
173180
- `diag`:启用诊断模式
174181
- `diag-quiet`:只显示出现存在问题的报文,不显示正常的报文
@@ -395,7 +402,7 @@ end trace...
395402
396403
从这里的日志可以看出,在报文经过iptables的filter表的forward链的时候,发生了丢包。在诊断结果里,会列出所有的异常事件,一个报文跟踪可能会命中多条诊断结果。这里的诊断建议是让用户检查iptables中的规则是否存在问题。
397404
398-
其中,`kfree_skb`这个跟踪点是对`drop reason`内核特性(详见droptrace中的介绍)做了适配的,可以理解为将droptrace的功能集成到了这里的诊断结果中,这里可以看出其给出的对包原因是`NETFILTER_DROP`。
405+
其中,`kfree_skb`这个跟踪点是对`drop reason`内核特性(详见[droptrace](docs/droptrace.md)中的介绍)做了适配的,可以理解为将droptrace的功能集成到了这里的诊断结果中,这里可以看出其给出的对包原因是`NETFILTER_DROP`。
399406
400407
#### 3.2.2 netfilter支持
401408
@@ -537,3 +544,33 @@ format:
537544
538545
print fmt: "skbaddr=%p protocol=%u location=%p reason: %s", REC->skbaddr, REC->protocol, REC->location, __print_symbolic(REC->reason, { 1, "NOT_SPECIFIED" }, { 2, "NO_SOCKET" }, { 3, "PKT_TOO_SMALL" }, { 4, "TCP_CSUM" }, { 5, "SOCKET_FILTER" }, { 6, "UDP_CSUM" }, { 7, "NETFILTER_DROP" }, { 8, "OTHERHOST" }, { 9, "IP_CSUM" }, { 10, "IP_INHDR" }, { 11, "IP_RPFILTER" }, { 12, "UNICAST_IN_L2_MULTICAST" }, { 13, "XFRM_POLICY" }, { 14, "IP_NOPROTO" }, { 15, "SOCKET_RCVBUFF" }, { 16, "PROTO_MEM" }, { 17, "TCP_MD5NOTFOUND" }, { 18, "TCP_MD5UNEXPECTED" }, { 19, "TCP_MD5FAILURE" }, { 20, "SOCKET_BACKLOG" }, { 21, "TCP_FLAGS" }, { 22, "TCP_ZEROWINDOW" }, { 23, "TCP_OLD_DATA" }, { 24, "TCP_OVERWINDOW" }, { 25, "TCP_OFOMERGE" }, { 26, "TCP_RFC7323_PAWS" }, { 27, "TCP_INVALID_SEQUENCE" }, { 28, "TCP_RESET" }, { 29, "TCP_INVALID_SYN" }, { 30, "TCP_CLOSE" }, { 31, "TCP_FASTOPEN" }, { 32, "TCP_OLD_ACK" }, { 33, "TCP_TOO_OLD_ACK" }, { 34, "TCP_ACK_UNSENT_DATA" }, { 35, "TCP_OFO_QUEUE_PRUNE" }, { 36, "TCP_OFO_DROP" }, { 37, "IP_OUTNOROUTES" }, { 38, "BPF_CGROUP_EGRESS" }, { 39, "IPV6DISABLED" }, { 40, "NEIGH_CREATEFAIL" }, { 41, "NEIGH_FAILED" }, { 42, "NEIGH_QUEUEFULL" }, { 43, "NEIGH_DEAD" }, { 44, "TC_EGRESS" }, { 45, "QDISC_DROP" }, { 46, "CPU_BACKLOG" }, { 47, "XDP" }, { 48, "TC_INGRESS" }, { 49, "UNHANDLED_PROTO" }, { 50, "SKB_CSUM" }, { 51, "SKB_GSO_SEG" }, { 52, "SKB_UCOPY_FAULT" }, { 53, "DEV_HDR" }, { 54, "DEV_READY" }, { 55, "FULL_RING" }, { 56, "NOMEM" }, { 57, "HDR_TRUNC" }, { 58, "TAP_FILTER" }, { 59, "TAP_TXFILTER" }, { 60, "ICMP_CSUM" }, { 61, "INVALID_PROTO" }, { 62, "IP_INADDRERRORS" }, { 63, "IP_INNOROUTES" }, { 64, "PKT_TOO_BIG" }, { 65, "MAX" })
539546
```
547+
548+
该模式下使用的效果与原先的`droptrace`完全相同,如下所示:
549+
550+
```shell
551+
nettrace --drop
552+
begin trace...
553+
[142.097193] TCP: 162.241.189.135:57022 -> 172.27.0.6:22 seq:299038593, ack:3843597961, flags:AR, reason: NOT_SPECIFIED, tcp_v4_rcv+0x81
554+
[142.331798] TCP: 162.241.189.135:57022 -> 172.27.0.6:22 seq:299038593, ack:3843597961, flags:A, reason: NOT_SPECIFIED, tcp_v4_do_rcv+0x83
555+
[142.331857] TCP: 162.241.189.135:57022 -> 172.27.0.6:22 seq:299038593, ack:3843597961, flags:AP, reason: NOT_SPECIFIED, tcp_v4_do_rcv+0x83
556+
[146.136576] TCP: 127.0.0.1:43582 -> 127.0.0.1:9999 seq:3819454691, ack:0, flags:S, reason: NO_SOCKET, tcp_v4_rcv+0x81
557+
[146.220414] TCP: 169.254.0.138:8186 -> 172.27.0.6:40634 seq:8486084, ack:2608831141, flags:A, reason: TCP_INVALID_SEQUENCE, tcp_validate_incoming+0x126
558+
[146.533728] TCP: 127.0.0.1:36338 -> 127.0.0.1:56100 seq:1110580666, ack:1951926207, flags:A, reason: TCP_INVALID_SEQUENCE, tcp_validate_incoming+0x126
559+
[147.255946] TCP: 20.44.10.122:443 -> 192.168.255.10:42878 seq:2950381253, ack:211751623, flags:A, reason: NOT_SPECIFIED, tcp_rcv_state_process+0xe9
560+
```
561+
562+
同样可以使用`man dropreason`命令来查看对应的丢包原因的详细解释。对于不支持`skb drop reason`特性的内核,该模式下将不会打印丢包原因字段,效果如下所示:
563+
564+
```shell
565+
nettrace --drop
566+
begin trace...
567+
[2016.965295] TCP: 162.241.189.135:45432 -> 172.27.0.6:22 seq:133152310, ack:2529234288, flags:AR, tcp_v4_rcv+0x50
568+
[2017.201315] TCP: 162.241.189.135:45432 -> 172.27.0.6:22 seq:133152310, ack:2529234288, flags:A, tcp_v4_do_rcv+0x70
569+
[2019.041344] TCP: 176.58.124.134:37441 -> 172.27.0.6:443 seq:1160140493, ack:0, flags:S, tcp_v4_rcv+0x50
570+
[2021.867340] TCP: 127.0.0.1:34936 -> 127.0.0.1:9999 seq:1309795878, ack:0, flags:S, tcp_v4_rcv+0x50
571+
[2024.997146] TCP: 162.241.189.135:46756 -> 172.27.0.6:22 seq:1304582308, ack:1354418612, flags:AR, tcp_v4_rcv+0x50
572+
[2025.235953] TCP: 162.241.189.135:46756 -> 172.27.0.6:22 seq:1304582308, ack:1354418612, flags:A, tcp_v4_do_rcv+0x70
573+
[2025.235967] TCP: 162.241.189.135:46756 -> 172.27.0.6:22 seq:1304582308, ack:1354418612, flags:AP, tcp_v4_do_rcv+0x70
574+
```
575+
576+

script/zh_CN/nettrace.8

Lines changed: 55 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,28 @@ nettrace \- Linux系统下的网络报文跟踪、网络问题诊断工具
5252
\fB\fC\-\-detail\fR
5353
显示跟踪详细信息,包括当前的进程、网口和CPU等信息
5454
.TP
55+
\fB\fC\-\-date\fR
56+
以时间格式打印(以2022\-10\-24 xx:xx:xx.xxxxxx格式打印),而不是时间戳
57+
.TP
5558
\fB\fC\-\-basic\fR
5659
启用\fB\fCbasic\fR跟踪模式。默认情况下,启用的是生命周期跟踪模式。启用该模式后,会直接打印
5760
出报文所经过的内核函数/tracepoint
5861
.TP
59-
\fB\fC\-\-intel\fR
62+
\fB\fC\-\-diag\fR
6063
启用诊断模式
6164
.TP
62-
\fB\fC\-\-intel\-quiet\fR
65+
\fB\fC\-\-diag\-quiet\fR
6366
只显示出现存在问题的报文,不显示正常的报文
6467
.TP
65-
\fB\fC\-\-intel\-keep\fR
66-
持续跟踪。\fB\fCintel\fR模式下,默认在跟踪到异常报文后会停止跟踪,使用该参数后,会持续跟踪下去。
68+
\fB\fC\-\-diag\-keep\fR
69+
持续跟踪。\fB\fCdiag\fR模式下,默认在跟踪到异常报文后会停止跟踪,使用该参数后,会持续跟踪下去。
6770
.TP
6871
\fB\fC\-\-hooks\fR
6972
打印netfilter上的钩子函数
7073
.TP
74+
\fB\fC\-\-drop\fR
75+
进行系统丢包监控,取代原先的\fB\fCdroptrace\fR
76+
.TP
7177
\fB\fC\-v\fR
7278
显示程序启动的日志信息
7379
.TP
@@ -86,7 +92,7 @@ nettrace \- Linux系统下的网络报文跟踪、网络问题诊断工具
8692
\fInettrace \-p icmp \-s 192.168.1.8 \-\-detail\fP
8793
.SS 诊断模式
8894
.PP
89-
使用方式与上面的一致,加个\fB\fCintel\fR参数即可使用诊断模式。上文的生命周期模式对于使用者的
95+
使用方式与上面的一致,加个\fB\fCdiag\fR参数即可使用诊断模式。上文的生命周期模式对于使用者的
9096
要求比较高,需要了解内核协议栈各个函数的用法、返回值的意义等,易用性较差。诊断模式是在
9197
生命周期模式的基础上,提供了更加丰富的信息,使得没有网络开发经验的人也可进行复杂
9298
网络问题的定位和分析。
@@ -103,11 +109,11 @@ nettrace \- Linux系统下的网络报文跟踪、网络问题诊断工具
103109
.RE
104110
.PP
105111
如果当前报文存在\fB\fCERROR\fR,那么工具会给出一定的诊断修复建议,并终止当前诊断操作。通过添
106-
\fB\fCintel\-keep\fR可以在发生\fB\fCERROR\fR事件时不退出,继续进行跟踪分析。下面是发生异常时的日志:
112+
\fB\fCdiag\-keep\fR可以在发生\fB\fCERROR\fR事件时不退出,继续进行跟踪分析。下面是发生异常时的日志:
107113
.PP
108114
.RS
109115
.nf
110-
\&./nettrace \-p icmp \-\-intel \-\-saddr 192.168.122.8
116+
\&./nettrace \-p icmp \-\-diag \-\-saddr 192.168.122.8
111117
begin trace...
112118
***************** ffff889fb3c64f00 ***************
113119
[4049.295546] [__netif_receive_skb_core] ICMP: 192.168.122.8 \-> 10.123.119.98 ping request, seq: 0
@@ -157,7 +163,45 @@ end trace...
157163
适配的,可以理解为将droptrace的功能集成到了这里的诊断结果中,这里可以看出其给出的丢包
158164
原因是\fB\fCNETFILTER_DROP\fR。因此,可以通过一下命令来监控内核中所有的丢包事件以及丢包原因:
159165
.PP
160-
\fInettrace \-t kfree_skb \-\-intel \-\-intel\-keep\fP
166+
\fInettrace \-t kfree_skb \-\-diag \-\-diag\-keep\fP
167+
.SS 丢包监控
168+
.PP
169+
使用命令\fB\fCnettrace \-\-drop\fR可以对系统中的丢包事件进行监控,对于支持内核特性
170+
\fB\fCskb drop reason\fR的内核,这里还会打印出丢包原因。可以通过查看
171+
\fB\fC/tracing/events/skb/kfree_skb/format\fR来判断当前系统是否支持该特性。
172+
.PP
173+
该模式下使用的效果与原先的\fB\fCdroptrace\fR完全相同,如下所示:
174+
.PP
175+
.RS
176+
.nf
177+
nettrace \-\-drop
178+
begin trace...
179+
[142.097193] TCP: 162.241.189.135:57022 \-> 172.27.0.6:22 seq:299038593, ack:3843597961, flags:AR, reason: NOT_SPECIFIED, tcp_v4_rcv+0x81
180+
[142.331798] TCP: 162.241.189.135:57022 \-> 172.27.0.6:22 seq:299038593, ack:3843597961, flags:A, reason: NOT_SPECIFIED, tcp_v4_do_rcv+0x83
181+
[142.331857] TCP: 162.241.189.135:57022 \-> 172.27.0.6:22 seq:299038593, ack:3843597961, flags:AP, reason: NOT_SPECIFIED, tcp_v4_do_rcv+0x83
182+
[146.136576] TCP: 127.0.0.1:43582 \-> 127.0.0.1:9999 seq:3819454691, ack:0, flags:S, reason: NO_SOCKET, tcp_v4_rcv+0x81
183+
[146.220414] TCP: 169.254.0.138:8186 \-> 172.27.0.6:40634 seq:8486084, ack:2608831141, flags:A, reason: TCP_INVALID_SEQUENCE, tcp_validate_incoming+0x126
184+
[146.533728] TCP: 127.0.0.1:36338 \-> 127.0.0.1:56100 seq:1110580666, ack:1951926207, flags:A, reason: TCP_INVALID_SEQUENCE, tcp_validate_incoming+0x126
185+
[147.255946] TCP: 20.44.10.122:443 \-> 192.168.255.10:42878 seq:2950381253, ack:211751623, flags:A, reason: NOT_SPECIFIED, tcp_rcv_state_process+0xe9
186+
.fi
187+
.RE
188+
.PP
189+
同样可以使用\fB\fCman dropreason\fR命令来查看对应的丢包原因的详细解释。对于不支持
190+
\fB\fCskb drop reason\fR特性的内核,该模式下将不会打印丢包原因字段,效果如下所示:
191+
.PP
192+
.RS
193+
.nf
194+
nettrace \-\-drop
195+
begin trace...
196+
[2016.965295] TCP: 162.241.189.135:45432 \-> 172.27.0.6:22 seq:133152310, ack:2529234288, flags:AR, tcp_v4_rcv+0x50
197+
[2017.201315] TCP: 162.241.189.135:45432 \-> 172.27.0.6:22 seq:133152310, ack:2529234288, flags:A, tcp_v4_do_rcv+0x70
198+
[2019.041344] TCP: 176.58.124.134:37441 \-> 172.27.0.6:443 seq:1160140493, ack:0, flags:S, tcp_v4_rcv+0x50
199+
[2021.867340] TCP: 127.0.0.1:34936 \-> 127.0.0.1:9999 seq:1309795878, ack:0, flags:S, tcp_v4_rcv+0x50
200+
[2024.997146] TCP: 162.241.189.135:46756 \-> 172.27.0.6:22 seq:1304582308, ack:1354418612, flags:AR, tcp_v4_rcv+0x50
201+
[2025.235953] TCP: 162.241.189.135:46756 \-> 172.27.0.6:22 seq:1304582308, ack:1354418612, flags:A, tcp_v4_do_rcv+0x70
202+
[2025.235967] TCP: 162.241.189.135:46756 \-> 172.27.0.6:22 seq:1304582308, ack:1354418612, flags:AP, tcp_v4_do_rcv+0x70
203+
.fi
204+
.RE
161205
.SS netfilter支持
162206
.PP
163207
网络防火墙是网络故障、网络不同发生的重灾区,因此\fB\fCnetfilter\fR工具对\fB\fCnetfilter\fR提供了
@@ -171,7 +215,7 @@ end trace...
171215
.PP
172216
.RS
173217
.nf
174-
\&./nettrace \-p icmp \-\-intel \-\-saddr 192.168.122.8 \-\-hooks
218+
\&./nettrace \-p icmp \-\-diag \-\-saddr 192.168.122.8 \-\-hooks
175219
begin trace...
176220
***************** ffff889faa054500 ***************
177221
[5810.702473] [__netif_receive_skb_core] ICMP: 192.168.122.8 \-> 10.123.119.98 ping request, seq: 943
@@ -221,7 +265,7 @@ end trace...
221265
丢包的所有的钩子函数,这里只有\fB\fCiptables\fR一个钩子函数。
222266
.SH REQUIREMENTS
223267
.PP
224-
内核需要支持CONFIG\fIBPF, CONFIG\fPKPROBE功能
268+
内核需要支持\fB\fCCONFIG_BPF\fR, \fB\fCCONFIG_KPROBE\fR, \fB\fCCONFIG_DEBUG_INFO_BTF\fR(可选)功能
225269
.SH OS
226270
.PP
227271
Linux
@@ -231,4 +275,4 @@ Menglong Dong
231275
.SH SEE ALSO
232276
.PP
233277
.BR nettrace-legacy (8),
234-
.BR droptrace (8)
278+
.BR dropreason (8)

0 commit comments

Comments
 (0)