You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This repository contains the first stable version of TCBee and will be improved/refined in the future.
34
+
The current Todo-List includes
35
+
- Documentation for the tools and interfaces
36
+
- Merging tools into a single program
37
+
- Add plugins for the calculation of common TCP congestion metrics
38
+
- Implement InfluxDB interface for faster processing
39
+
- Test and benchmark bottlenecks (eBPF Ringbuf size, File writer, etc.)
40
+
- ...
41
+
42
+
The current version is tested for linux kernel 6.13.6 and may not work on older or newer kernel versions.
43
+
44
+
28
45
## Overview
29
-
This repository contains the source code for a TCP flow analysis and visualization tool that can monitor any number of TCP flows with up to 1.4 Mpps in total. It uses the Rust programming languages and monitors both packet headers with XDP and TC, and kernel metrics using eBPF kernel tracepoints.
46
+
This repository contains the source code for a TCP flow analysis and visualization tool that can monitor any number of TCP flows with up to 1.4 Mpps in total. It uses the Rust programming languages and monitors both packet headers with XDP and TC, and kernel metrics using eBPF.
30
47
31
48
TCBee
32
49
33
50
* provides a command-line program to record flows and track current data rates
34
-
* monitors both packet headers and kernel metrics for TCP flows
51
+
* monitors both packet headers for incoming and outgoing packets
52
+
* hooks onto the linux kernel functions `tcp_sendmsg` and `tcp_recvmsg` to read kernel metrics
35
53
* stores recorded data in a structured flow database
36
-
* provides a simple plugin interface to calculate metrics from recorded data and store the results
54
+
* provides a simple plugin interface to calculate metrics from recorded data and save the results
37
55
* comes with a visualization tool to analyse and compare TCP flow metrics
38
56
* provides a rust library to access flow data for custom visualization tools
39
57
@@ -90,9 +108,10 @@ Or, you can run the compiled version after using `cargo build --release` using:
90
108
91
109
Available flags are:
92
110
-`-q`, `--quiet` run the program without the UI
111
+
-`-p`, `--port` filter streams for remote or local port
93
112
-`f`, `--file` path to store the output (CURRENTLY NOT IMPLEMENTED)
94
113
95
-
TCBee will store the recorded data under `/tmp/` as `.tcp` files. These files contain the packet headers and kernel tracepoint data as raw bytes.
114
+
TCBee will store the recorded data under `/tmp/` as `.tcp` files. These files contain the packet headers and kernel metrics data as raw bytes.
96
115
If you want to read the raw bytes from your own program, take a look at `tcbee/tcbee-common/bindings` to find the appropriate structs (struct names that are written end with `_entry`).
97
116
98
117
### 2. Postprocessing Recorded Data
@@ -105,9 +124,11 @@ Or, you can run the compiled version after using `cargo build --release` using:
105
124
106
125
`sudo target/release/db_backend`
107
126
108
-
Currently, this will generate a db.sqlite file.
127
+
Currently, this will generate a db.sqlite file in the same directory.
109
128
If this file exists, the program will try to write to the same DB and exit as soon as it detects duplicate data.
110
129
In future releases, the DB backend will support both Sqlite and InfluxDB and custom file paths.
130
+
This should also improve performance issues for large traces with a lot of data points.
131
+
111
132
112
133
### 2. Visualizing Data
113
134
@@ -136,11 +157,9 @@ You can generate custom graphs and visualization using your own tools and script
136
157
To that end, you either need to implement access over SQLite or InfluxDB depending on the storage format.
137
158
For a guide on how to read flow data, see `ts-storage/ACCESS.md`.
138
159
139
-
## Citing TCBee
140
-
141
-
If you use TCBee in any of your publications, please cite the following paper:
142
-
143
-
TODO: ARXIV Link
160
+
#### 2d. Accessing the raw data ouput
161
+
TCBee stores the recorded data in raw byte files under `/tmp/*.tcp`.
162
+
If you want to read the raw bytes from your own program, take a look at `tcbee/tcbee-common/bindings` to find the appropriate structs (struct names that are written end with `_entry`).
0 commit comments