Demonstrations of tcptracer, the Linux eBPF/bcc version.


This tool traces the kernel function performing TCP connections (eg, via a
connect() or accept() syscalls) and closing them (explicitly or if the process
dies). Some example output (IP addresses are fake):

```
# ./tcptracer
Tracing TCP established connections. Ctrl-C to end.
T  PID    COMM             IP SADDR            DADDR            SPORT  DPORT
C  28943  telnet           4  192.168.1.2      192.168.1.1      59306  23
C  28818  curl             6  [::1]            [::1]            55758  80
X  28943  telnet           4  192.168.1.2      192.168.1.1      59306  23
A  28817  nc               6  [::1]            [::1]            80     55758
X  28818  curl             6  [::1]            [::1]            55758  80
X  28817  nc               6  [::1]            [::1]            80     55758
A  28978  nc               4  10.202.210.1     10.202.109.12    8080   59160
X  28978  nc               4  10.202.210.1     10.202.109.12    8080   59160
```

This output shows three connections, one outgoing from a "telnet" process, one
outgoing from "curl" to a local netcat, and one incoming received by the "nc"
process. The output details show the kind of event (C for connection, X for
close and A for accept), PID, IP version, source address, destination address,
source port and destination port.

The -t option prints a timestamp column:

```
# ./tcptracer -t
Tracing TCP established connections. Ctrl-C to end.
TIME(s)  T  PID    COMM             IP SADDR            DADDR            SPORT  DPORT
0.000    C  31002  telnet           4  192.168.1.2      192.168.1.1      42590  23
3.546    C    748  curl             6  [::1]            [::1]            42592  80
4.294    X  31002  telnet           4  192.168.1.2      192.168.1.1      42590  23
```


The --cgroupmap option filters based on a cgroup set. It is meant to be used
with an externally created map.

# ./tcptracer --cgroupmap /sys/fs/bpf/test01

For more details, see docs/special_filtering.md
