Skip to content

Commit 38d5f37

Browse files
author
Moritz Flüchter
committed
Update README for public repo
1 parent 0fc159a commit 38d5f37

File tree

1 file changed

+30
-11
lines changed

1 file changed

+30
-11
lines changed

README.md

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
<div align="center">
22
<img src="./imgs/tcbee.png" height=150/>
3+
4+
<h6 style="font-size: 8px; margin-left: 200px; margin-top: -30px;">Bee SVG by <a href="https://www.freepik.com/free-vector/cute-bee-insect-animal_136484149.htm#fromView=keyword&page=1&position=2&uuid=42f2e8ed-fa2c-47d9-9793-a1b088c1266d&query=Bees+Svg+File">Freepic</a> </h6>
5+
36
<h2>TCBee: A High-Performance and Extensible Tool For TCP Flow Analysis Using eBPF </h2>
47

58
![image](https://img.shields.io/badge/licence-Apache%202.0-blue) ![image](https://img.shields.io/badge/lang-rust-darkred) ![image](https://img.shields.io/badge/v-0.1.0-yellow) [![TCBee build](https://github.com/uni-tue-kn/TCBee/actions/workflows/tcbee.yml/badge.svg)](https://github.com/uni-tue-kn/TCBee/actions/workflows/tcbee.yml)
69

710
</div>
811

12+
- [Disclaimer](#disclaimer)
913
- [Overview](#overview)
1014
- [Architecture](#architecture)
1115
- [1. Record](#1-record)
@@ -19,21 +23,35 @@
1923
- [2a. Using TCBee-Viz](#2a-using-tcbee-viz)
2024
- [2b. Using the rust ts-storage library](#2b-using-the-rust-ts-storage-library)
2125
- [2c. Using custom scripts and programs](#2c-using-custom-scripts-and-programs)
22-
- [Citing TCBee](#citing-tcbee)
26+
- [2d. Accessing the raw data ouput](#2d-accessing-the-raw-data-ouput)
2327
- [Preview of TCBee](#preview-of-tcbee)
2428
- [Recording TCP Flows](#recording-tcp-flows)
2529
- [Visualizing CWND Size](#visualizing-cwnd-size)
2630
- [Visualizing Multiple Flows](#visualizing-multiple-flows)
2731

32+
## Disclaimer
33+
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+
2845
## 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.
3047

3148
TCBee
3249

3350
* 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
3553
* 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
3755
* comes with a visualization tool to analyse and compare TCP flow metrics
3856
* provides a rust library to access flow data for custom visualization tools
3957

@@ -90,9 +108,10 @@ Or, you can run the compiled version after using `cargo build --release` using:
90108

91109
Available flags are:
92110
- `-q`, `--quiet` run the program without the UI
111+
- `-p`, `--port` filter streams for remote or local port
93112
- `f`, `--file` path to store the output (CURRENTLY NOT IMPLEMENTED)
94113

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.
96115
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`).
97116

98117
### 2. Postprocessing Recorded Data
@@ -105,9 +124,11 @@ Or, you can run the compiled version after using `cargo build --release` using:
105124

106125
`sudo target/release/db_backend`
107126

108-
Currently, this will generate a db.sqlite file.
127+
Currently, this will generate a db.sqlite file in the same directory.
109128
If this file exists, the program will try to write to the same DB and exit as soon as it detects duplicate data.
110129
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+
111132

112133
### 2. Visualizing Data
113134

@@ -136,11 +157,9 @@ You can generate custom graphs and visualization using your own tools and script
136157
To that end, you either need to implement access over SQLite or InfluxDB depending on the storage format.
137158
For a guide on how to read flow data, see `ts-storage/ACCESS.md`.
138159

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`).
144163

145164
## Preview of TCBee
146165

0 commit comments

Comments
 (0)