mirror of
https://github.com/eunomia-bpf/bpf-developer-tutorial.git
synced 2026-02-09 05:14:37 +08:00
56 lines
1.4 KiB
Markdown
56 lines
1.4 KiB
Markdown
---
|
|
layout: post
|
|
title: tc
|
|
date: 2022-10-10 16:18
|
|
category: bpftools
|
|
author: yunwei37
|
|
tags: [bpftools, tc, example]
|
|
summary: a minimal example of a BPF application use tc
|
|
---
|
|
|
|
|
|
`tc` (short for Traffic Control) is an example of handling ingress network traffics.
|
|
It creates a qdisc on the `lo` interface and attaches the `tc_ingress` BPF program to it.
|
|
It reports the metadata of the IP packets that coming into the `lo` interface.
|
|
|
|
```shell
|
|
$ sudo ecli ./package.json
|
|
...
|
|
Successfully started! Please run `sudo cat /sys/kernel/debug/tracing/trace_pipe` to see output of the BPF program.
|
|
......
|
|
```
|
|
|
|
The `tc` output in `/sys/kernel/debug/tracing/trace_pipe` should look
|
|
something like this:
|
|
|
|
```
|
|
$ sudo cat /sys/kernel/debug/tracing/trace_pipe
|
|
node-1254811 [007] ..s1 8737831.671074: 0: Got IP packet: tot_len: 79, ttl: 64
|
|
sshd-1254728 [006] ..s1 8737831.674334: 0: Got IP packet: tot_len: 79, ttl: 64
|
|
sshd-1254728 [006] ..s1 8737831.674349: 0: Got IP packet: tot_len: 72, ttl: 64
|
|
node-1254811 [007] ..s1 8737831.674550: 0: Got IP packet: tot_len: 71, ttl: 64
|
|
```
|
|
|
|
## Compile and Run
|
|
|
|
|
|
|
|
Compile:
|
|
|
|
```console
|
|
docker run -it -v `pwd`/:/src/ yunwei37/ebpm:latest
|
|
```
|
|
|
|
or compile with `ecc`:
|
|
|
|
```console
|
|
$ ecc tc.bpf.c
|
|
Compiling bpf object...
|
|
Packing ebpf object and config into package.json...
|
|
```
|
|
|
|
Run:
|
|
|
|
```console
|
|
sudo ecli ./package.json
|
|
``` |