BCC源码内容概览(3)

接前一篇文章:BCC源码内容概览(2)

本文参考官网中的Contents部分的介绍。

BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。

跟踪(Tracing)

examples目录下的文件:

  • examples/tracing/task_switch.py

从PIDs切换出和切换到的任务切换计数。

  • examples/tracing/tcpv4connect.py

跟踪TCP IPv4活动连接。

bcc/examples/tracing/tcpv4connect_example.txt文件内容如下:

Demonstrations of tcpv4connect.py, the Linux eBPF/bcc version.


This example traces the kernel function performing active TCP IPv4 connections
(eg, via a connect() syscall; accept() are passive connections). Some example
output (IP addresses changed to protect the innocent):

# ./tcpv4connect.py
PID    COMM         SADDR            DADDR            DPORT
1479   telnet       127.0.0.1        127.0.0.1        23  
1469   curl         10.201.219.236   54.245.105.25    80  
1469   curl         10.201.219.236   54.67.101.145    80  

This output shows three connections, one from a "telnet" process and two from
"curl". The output details shows the source address, destination address,
and destination port. This traces attempted connections: these may have failed.

The overhead of this tool should be negligible, since it is only tracing the
kernel function performing a connect. It is not tracing every packet and then
filtering.

This is provided as a basic example of TCP tracing. See tools/tcpconnect for a
more featured version of this example (a tool).
  • examples/tracing/trace_fields.py

打印跟踪事件中的字段的简单示例。

  • examples/tracing/undump.py

转储UNIX套接字包。

bcc/examples/tracing/tundump_example.txt文件内容如下:

扫描二维码关注公众号,回复: 16836951 查看本文章
Demonstrations of undump.py, the Linux eBPF/bcc version.

This example trace the kernel function performing receive AP_UNIX socket
packet. Some example output:

Terminal 1, UNIX Socket Server:

```
$ nc -lU /var/tmp/dsocket
# receive from Client
Hello, World
abcdefg
```

Terminal 2, UNIX socket Client:

```
$ nc -U /var/tmp/dsocket
# Input some lines
Hello, World
abcdefg
```

Terminal 3, receive tracing:

```
$ sudo python undump.py -p 49264
Tracing PID=49264 UNIX socket packets ... Hit Ctrl-C to end

# Here print bytes of receive
PID 49264 Recv 13 bytes
   48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 0a
PID 49264 Recv 8 bytes
   61 62 63 64 65 66 67 0a
```

This output shows two packet received by PID 49264(nc -lU /var/tmp/dsocket),
`Hello, World` will be parsed as `48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 0a`, the
`0a` is `Enter`. `abcdefg` will be parsed as `61 62 63 64 65 66 67 0a`.

猜你喜欢

转载自blog.csdn.net/phmatthaus/article/details/133158025
今日推荐