Skip to content

Measure UDP and TCP connection latency for IPv4 and IPv6 using eBPF and Go

License

Notifications You must be signed in to change notification settings

pouriyajamshidi/flat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

flat

Measure UDP and TCP flow latency for both IPv4 and IPv6 using eBPF.

This repo is the companion to my blog posts about eBPF at https://thegraynode.io/tags/flat/.

flat in action

Running The Program

You can install flat in two ways.

  1. Download the pre-compiled binary
  2. Compile from source

Download The Pre-compiled Binary

wget https://github.com/pouriyajamshidi/flat/releases/latest/download/flat

Then check out the examples.

Compile From Source

Clone the repository:

git clone https://github.com/pouriyajamshidi/flat .

Change directory to flat:

cd flat

While at the root of project directory, to compile the C code and generate the helper functions, run:

go generate ./...

Compile the Go program:

go build -ldflags "-s -w" -o flat cmd/flat.go

Examples

Run it with elevated privileges:

# Replace eth0 with your desired interface name
sudo ./flat -i eth0
# Or
sudo ./flat -i eth0 -ip 1.1.1.1
# Or
sudo ./flat -i eth0 -port 53
# Or
sudo ./flat -i eth0 -ip 1.1.1.1 -port 53

Flags

flat supports four flags at the moment:

flag Description
-i interface to attach the probe to
-ip IP address to filter on (optional)
-port Port number to filter on (optional)
-h Show help message

Acknolegments

Heavily inspired by flowlat.