Skip to content

Releases: cilium/pwru

Release v1.0.10

14 Aug 10:47
Compare
Choose a tag to compare

Major Changes

  • Users can now select which SKB/XDP fields to output using --output-{skb,xdp}-metadata #509. For example:
    pwru --filter-trace-xdp --output-xdp-metadata 'xdp->rxq->dev->ifindex' host 1.1.1.1
    ... 1.1.1.1:0->192.168.241.133:0(icmp) bpf_prog_3b185187f1855c4c_dummy[bpf](xdp) ifindex=2
    
  • Added support for tunnel traffic filtering and output #494. For example:
    pwru --filter-func=udp_queue_rcv_skb  'port 8472' --output-tunnel --filter-tunnel-pcap-l3 'port 8080'  --output-tcp-flags
    ...
    172.18.0.5:54806->172.18.0.2:8472(udp) udp_queue_rcv_skb 52:2e:36:8d:11:23 -> ba:44:d8:6c:66:5a 10.244.1.205:36739->10.244.3.122:8080(tcp:SYN)
    
  • pwru now accepts an SKB mark mask via --filter-mark mark[/mask] #471. For example, you can run pwru --filter-mask 0xa00/0xf00.
  • The fast kprobe-multi backend is now supported for tracing kernel modules #470. For example:
    pwru --all-kmods
    ... Attaching kprobes (via kprobe-multi)...
    
  • TCP flags can now be displayed when --output-tcp-flags is set #466. For example:
    pwru --output-tcp-flags 'host 1.1.1.1'
    ...
    ... 192.168.1.165:44884->1.1.1.1:80(tcp:SYN) ip_local_out
    
  • In addition to amd64, pwru is now published for arm64 in the Docker container image #569.
  • pwru is now tested in CI tested on both amd64, but also arm64 #576.
  • pwru can now run on the LoongArch architecture #337.

Full Changelog

  • README: Mention that debugfs is optional by @brb in #447
  • build(deps): bump golang.org/x/net from 0.28.0 to 0.30.0 by @dependabot[bot] in #443
  • Dockerfile: build arm64 variants by @akerouanton in #449
  • build(deps): bump golang.org/x/sync from 0.8.0 to 0.9.0 by @dependabot[bot] in #454
  • build(deps): bump golang.org/x/sys from 0.26.0 to 0.27.0 by @dependabot[bot] in #456
  • build(deps): bump actions/checkout from 4.2.1 to 4.2.2 by @dependabot[bot] in #446
  • bpf: Remove OUTPUT_SKB&HAS_KPROBE_MULTI macros by @Asphaltt in #455
  • Ensure fentry and kprobe programs share the maps by @jschwinger233 in #459
  • Fix tracing tc-bpf with --filter-track-skb-by-stackid by @Asphaltt in #452
  • Collect and output skb->cb when --filter-trace-tc by @jschwinger233 in #461
  • Add --output-skb-cb by @brb in #465
  • build(deps): bump golang.org/x/net from 0.30.0 to 0.32.0 by @dependabot[bot] in #463
  • build(deps): bump actions/setup-go from 5.0.2 to 5.2.0 by @dependabot[bot] in #467
  • build(deps): bump golang.org/x/sync from 0.9.0 to 0.10.0 by @dependabot[bot] in #473
  • build(deps): bump actions/upload-artifact from 4.4.3 to 4.5.0 by @dependabot[bot] in #472
  • Support --filter-mark mark/[/mask] by @rgo3 in #471
  • build(deps): bump golang.org/x/net from 0.32.0 to 0.33.0 by @dependabot[bot] in #474
  • Enable kprobe-multi for kmods by default by @rgo3 in #470
  • build(deps): bump github.com/vishvananda/netns from 0.0.4 to 0.0.5 by @dependabot[bot] in #475
  • build(deps): bump golang.org/x/arch from 0.11.0 to 0.13.0 by @dependabot[bot] in #478
  • build(deps): bump golang.org/x/net from 0.33.0 to 0.34.0 by @dependabot[bot] in #479
  • gh/workflows: Fix fetching pwru logs by @brb in #375
  • gh/workflows: Bump LVH images by @brb in #440
  • Bump cilium/ebpf to 0.17.1 by @brb in #481
  • Events from kprobe.multi have eventTypeKprobeMulti set in .type by @jschwinger233 in #477
  • gh/workflows: Add --backend=kprobe-multi test by @brb in #482
  • cleanup: setting LogSize is deprecated/unused. by @tommyp1ckles in #487
  • build(deps): bump github.com/cheggaaa/pb/v3 from 3.1.5 to 3.1.6 by @dependabot[bot] in #490
  • Output TCP flags alongside tuple by @Asphaltt in #466
  • gh/workflows: Set up traffic before running pwru by @brb in #493
  • build(deps): bump github.com/cilium/ebpf from 0.17.1 to 0.17.2 by @dependabot[bot] in #495
  • Fix broken --filter-trace-xdp caused by go-ebpf v0.17.1 by @Asphaltt in #484
  • Add dummy --filter-track-{tc,xdp} tests by @brb in #492
  • build(deps): bump github.com/spf13/pflag from 1.0.5 to 1.0.6 by @dependabot[bot] in #496
  • build(deps): bump golang.org/x/sync from 0.10.0 to 0.11.0 by @dependabot[bot] in #500
  • build(deps): bump golang.org/x/sys from 0.29.0 to 0.30.0 by @dependabot[bot] in #501
  • build(deps): bump golang.org/x/arch from 0.13.0 to 0.14.0 by @dependabot[bot] in #504
  • build(deps): bump golang.org/x/net from 0.34.0 to 0.35.0 by @dependabot[bot] in #505
  • build(deps): bump github.com/cilium/ebpf from 0.17.2 to 0.17.3 by @dependabot[bot] in #506
  • Add LoongArch support by @chenhengqi in #337
  • CI: Fix Failures: Bump LVM action version to latest release. by @tommyp1ckles in #511
  • Support outputting and filtering by vxlan/geneve tunnel data by @tommyp1ckles in #494
  • deps: Bump github.com/cheggaaa/pb/v3 from 3.1.6 to 3.1.7 by @brb in #512
  • Move static variables of big size to percpu array by @jschwinger233 in #503
  • chore: Configure Renovate by @renovate[bot] in #515
  • chore(deps): update actions/download-artifact digest to 95815c3 by @renovate[bot] in #521
  • chore(deps): update actions/checkout digest to 85e6279 by @renovate[bot] in #517
  • chore(deps): update actions/create-release digest to 4c11c9f - autoclosed by @renovate[bot] in #520
  • renovate: Run go mod tidy by @brb in #524
  • fix(deps): update github.com/cloudflare/cbpfc digest to ff978e9 by @renovate[bot] in #526
  • chore(deps): update actions/setup-go digest to dca8468 by @renovate[bot] in #522
  • fix(deps): update module golang.org/x/net to v0.36.0 [security] by @renovate[bot] in #516
  • fix(deps): update module golang.org/x/sys to v0.31.0 by @renovate[bot] in #532
  • chore(deps): update dependency go to v1.24.2 by @renovate[bot] in #528
  • chore(deps): update docker.io/library/golang docker tag to v1.24.2 by @renovate[bot] in #529
  • renovate: Run on Fri and group all deps by @brb in #535
  • Remove dependabot.yml by @brb in #536
  • Introduce two enhancements for func IP by @Asphaltt in #468
  • go.mod: Bump to 1.24.1 by @brb in #538
  • fix(deps): update all dependencies by @renovate[bot] in #537
  • pwru: Add --output-skb-metadata and --output-xdp-metadata by @Asphaltt in #509
  • fix(deps): update all dependencies by @renovate[bot] in #542
  • Support output tuple for 802.1Q by @chenhengqi in #544
  • fix(deps): update all dependencies by @renovate[bot] in #547
  • fix(deps): update all dependencies by @renovate[bot] in #550
  • Move Contributing to a separate file by @xmulligan in #510
  • renovate: Try to fix go mod tidy issues by @brb in #553
  • renovate: Fix syntax by @brb in #555
  • Compile libpcap with --disable-protochain by @jschwinger233 in #558
  • Add percpu buffer flag by @AdvH039 in #552
  • chore(deps): update all dependencies by @renovate[bot] in #556
  • renovate: Run go mod vendor by @brb in #561
  • renovate: Fix syntax error by @brb in #563
  • ci: add workflow to validate renovate config by @tklauser in #564
  • renovate: Try go mod vendor/tidy for the group by @brb in #565
  • renovate: Allow go.sum updates by @brb in #567
  • vendor: Switch to rtnetlink@v2 by @brb in #568
  • fix(deps): update all go dependencies main by @renovate[bot] in #566
  • ci: release workfl...
Read more

Release v1.0.9

24 Oct 15:48
Compare
Choose a tag to compare

We are pleased to release the 1.0.9 version of pwru.

The major changes include:

  • Fixed libpcap filtering for tracing XDP programs (--filter-trace-xdp) #439.
  • Added drop reasons when sk_skb_reason_drop() is called #430.

Functional changes:

Dependency changes:

  • 8a4dd24 - build(deps): bump actions/checkout from 4.1.7 to 4.2.1
  • 925df0e - build(deps): bump golang.org/x/sys from 0.24.0 to 0.26.0
  • c7c2ed7 - build(deps): bump actions/upload-artifact from 4.3.6 to 4.4.3
  • 82dbbf3 - build(deps): bump golang.org/x/arch from 0.8.0 to 0.11.0

Release v1.0.8

13 Sep 09:45
Compare
Choose a tag to compare

We are pleased to release the 1.0.8 version of pwru.

The major changes include:

  • pwru is now able to trace BPF helpers (#390). To enable it, set --filter-track-bpf-helpers. In addition, when it is set together with --output-caller, it can be used to roughly trace BPF tailcalls. For example:
# pwru --output-caller --output-tuple --filter-track-bpf-helpers
...
10.244.1.141:45000->10.244.3.20:8080(tcp) bpf_map_lookup_elem          bpf_prog_5fd02288bd4a682e_tail_ipv4_ct_egress[bpf]
10.244.1.141:45000->10.244.3.20:8080(tcp) array_map_update_elem        bpf_prog_5fd02288bd4a682e_tail_ipv4_ct_egress[bpf]
10.244.1.141:45000->10.244.3.20:8080(tcp) trie_lookup_elem             bpf_prog_4f62c9416e340c61_tail_handle_ipv4_cont[bpf]
10.244.1.141:45000->10.244.3.20:8080(tcp) percpu_array_map_lookup_elem bpf_prog_4f62c9416e340c61_tail_handle_ipv4_cont[bpf]
10.244.1.141:45000->10.244.3.20:8080(tcp) __htab_map_lookup_elem       bpf_prog_4f62c9416e340c61_tail_handle_ipv4_cont[bpf]
...
  • Fix tracking of sk_buff built from xdp_md when --filter-track-skb is used (#410).

Functional changes:

Dependency changes:

  • 5b08f7c - build(deps): bump golang.org/x/net from 0.27.0 to 0.28.0
  • 332cff1 - build(deps): bump actions/upload-artifact from 4.3.5 to 4.3.6
  • 325cab1 - build(deps): bump golang.org/x/sync from 0.7.0 to 0.8.0
  • d7cc422 - build(deps): bump actions/upload-artifact from 4.3.4 to 4.3.5
  • e510628 - build(deps): bump golang.org/x/sys from 0.22.0 to 0.23.0
  • c0806cf - build(deps): bump github.com/cilium/ebpf from 0.15.0 to 0.16.0
  • 6d10c6f - build(deps): bump golang.org/x/sys from 0.23.0 to 0.24.0
  • ce305f0 - build(deps): bump actions/setup-go from 5.0.1 to 5.0.2
  • f23574b - build(deps): bump cilium/little-vm-helper from 0.0.18 to 0.0.19

Release v1.0.7

10 Jul 16:05
Compare
Choose a tag to compare

We are pleased to release the 1.0.7 version of pwru.

The major changes include:

  • pwru is now able to trace XDP programs (#339). To enable it, use the --filter-trace-xdp flag. For example:
# pwru --filter-trace-xdp --output-tuple 'tcp and port 80 and host 100.64.0.101'
<..>
SKB                CPU PROCESS          TUPLE FUNC
0xffff97de3826d2c0 2   ~m-agent:2825426 100.64.0.101:80->172.20.0.2:45509(tcp) cil_xdp_entry(xdp)
0xffff97ddbf541840 2   ~m-agent:2825426 100.64.0.101:80->172.20.0.2:44879(tcp) cil_xdp_entry(xdp)
0xffff97df1390b000 3   ~m-agent:2825426 100.64.0.101:80->172.20.0.2:44879(tcp) cil_xdp_entry(xdp)
  • The MTU, which is printed when using --output-meta, can show modifications due to route MTU, XFRM policies, etc (#388).
  • The new --output-skb-shared-info can be used to show skb_shared_info (#364).
  • Improved tracking of SKBs when --filter-track-skb is used. For example, pwru is able to trace packets after they have been handled by XDP progs attached to veth (#384, #391, #397).

Functional changes:

Dependency changes:

  • 063d67b - build(deps): bump actions/download-artifact from 4.1.7 to 4.1.8
  • 489330c - build(deps): bump actions/upload-artifact from 4.3.3 to 4.3.4
  • d5956c1 - build(deps): bump golang.org/x/net from 0.26.0 to 0.27.0
  • adb9cb1 - build(deps): bump golang.org/x/sys from 0.21.0 to 0.22.0
  • 7bacf08 - build(deps): bump golang.org/x/net from 0.25.0 to 0.26.0
  • 1a5a781 - build(deps): bump cilium/little-vm-helper from 0.0.17 to 0.0.18
  • 27f4cbe - build(deps): bump github.com/jsimonetti/rtnetlink from 1.4.1 to 1.4.2
  • 734d7f7 - build(deps): bump golang.org/x/net from 0.24.0 to 0.25.0
  • cfb0851 - build(deps): bump actions/checkout from 4.1.4 to 4.1.6
  • a576523 - build(deps): bump actions/setup-go from 5.0.0 to 5.0.1
  • a9236c7 - build(deps): bump golang.org/x/sys from 0.19.0 to 0.20.0
  • 836fa22 - build(deps): bump actions/checkout from 4.1.2 to 4.1.4
  • 23ced3e - build(deps): bump actions/download-artifact from 4.1.5 to 4.1.7
  • 42cfb38 - build(deps): bump github.com/tklauser/ps from 0.0.2 to 0.0.3

Release v1.0.6

24 Apr 14:14
Compare
Choose a tag to compare

We are pleased to release the 1.0.6 version of pwru.

The major changes include:

  • pwru can track non-skb functions specified via --filter-non-skb-funcs (#355). For example, one can use pwru --filter-non-skb-funcs='xfrm_state_look_at,xfrm_state_lookup,xfrm_state_lookup_byaddr,xfrm_state_lookup_byspi' to enrich IPsec packet traces.
  • Added tracing of skb's even if they were kfree-d (#354). By specifying --filter-track-skb-by-stackid, one can trace packets if they were freed, and then rebuilt (e.g., L2 bridge traffic).
  • pwru is now able to output in JSON (#285). For example:
# pwru --output-tuple --output-meta --output-json 'host 1.1.1.1' | jq .
<..>
{
  "skb": "0xffff8fad947baf00",
  "cpu": 10,
  "process": "/usr/lib/firefox/firefox:1416291",
  "func": "kfree_skbmem",
  "iface": "0",
  "proto": 2048,
  "len": 94,
  "tuple": {
    "saddr": "1.1.1.1",
    "daddr": "192.168.1.159",
    "sport": 53,
    "dport": 34815,
    "proto": 17
  }
}
  • (De)attaching kprobes got ~1.2 times faster (#277).

Functional changes:

Dependency changes:

  • 133b041 - build(deps): bump actions/upload-artifact from 4.3.1 to 4.3.3
  • 5c2c5b3 - build(deps): bump github.com/cilium/ebpf from 0.14.0 to 0.15.0
  • edaa366 - build(deps): bump actions/download-artifact from 4.1.4 to 4.1.5
  • 5a9c525 - build(deps): bump golang.org/x/sync from 0.6.0 to 0.7.0
  • a591840 - build(deps): bump github.com/cilium/ebpf from 0.13.2 to 0.14.0
  • 43200e2 - build(deps): bump golang.org/x/net from 0.21.0 to 0.24.0
  • 0a9e2d1 - build(deps): bump cilium/little-vm-helper from 0.0.16 to 0.0.17
  • c825d7f - build(deps): bump actions/checkout from 4.1.1 to 4.1.2
  • 4ca5c81 - build(deps): bump golang.org/x/sys from 0.17.0 to 0.18.0
  • e2d32b2 - build(deps): bump actions/download-artifact from 4.1.3 to 4.1.4
  • 17830c3 - build(deps): bump actions/download-artifact from 4.1.2 to 4.1.3
  • 97398fc - build(deps): bump golang.org/x/sync from 0.3.0 to 0.6.0
  • fa55033 - build(deps): bump github.com/cilium/ebpf from 0.13.0 to 0.13.2
  • 18c7bdf - build(deps): bump actions/upload-artifact from 4.3.0 to 4.3.1
  • 9e40901 - build(deps): bump actions/download-artifact from 4.1.1 to 4.1.2
  • 732586d - build(deps): bump golang.org/x/net from 0.20.0 to 0.21.0
  • b8c253d - build(deps): bump github.com/cheggaaa/pb/v3 from 3.1.4 to 3.1.5
  • 5d8da3d - build(deps): bump github.com/jsimonetti/rtnetlink from 1.4.0 to 1.4.1
  • b1a5273 - build(deps): bump actions/upload-artifact from 4.0.0 to 4.3.0
  • 2172e77 - build(deps): bump actions/download-artifact from 4.1.0 to 4.1.1
  • 587aa49 - build(deps): bump golang.org/x/net from 0.19.0 to 0.20.0
  • 4aceb7f - build(deps): bump actions/upload-artifact from 3.1.3 to 4.0.0
  • 50bd586 - build(deps): bump golang.org/x/sys from 0.15.0 to 0.16.0

Release v1.0.5

20 Dec 14:15
Compare
Choose a tag to compare

We are pleased to release the 1.0.5 version of pwru.

The major changes include:

  • Fix loading on >= the 6.6 kernel when there are multiple functions with the same name (#302, #284).

Functional changes:

Dependency changes:

  • d86733b - build(deps): bump github.com/jsimonetti/rtnetlink from 1.3.5 to 1.4.0
  • c5ae578 - build(deps): bump actions/setup-go from 4.1.0 to 5.0.0
  • 0d23d55 - build(deps): bump cilium/little-vm-helper from 0.0.12 to 0.0.13
  • 4e5205c - build(deps): bump golang.org/x/net from 0.17.0 to 0.19.0

Release v1.0.4

31 Oct 09:01
Compare
Choose a tag to compare

We are pleased to release the 1.0.4 version of pwru.

The major changes include:

  • pwru is able to show TC BPF programs execution when --filter-trace-tc is set (#271). For example:
    0xffff91d7c885f0e8      5   [curl(261789)]  cil_from_container netns=... mark=0x0 iface=11(lxc9376ae2995cc)
    
    shows execution of the Cilium's cil_from_container BPF program.
  • Fixed outputing of network interface and process name (#279, #280). The latter gives better insight which user or kernel process handles a packet. For example:
    0xffffa0fbe16e1500     15 [kworker/15:3-wg-crypt-cilium_wg0(82260)] ....
    
    shows a kernel thread handling WireGuard encryption for cilium_wg0 device.
  • The packet tracing is extended to support skb_clone() and skb_copy when --filter-trace-skb is set (#275). This is useful to trace packets which get modified and no longer match given filters (e.g., after SNAT, tunnel encapsulation, encryption, etc).

Functional changes:

Dependency changes:

  • d6d604d - build(deps): bump github.com/cilium/ebpf from 0.12.0 to 0.12.2
  • 514bedf - build(deps): bump actions/checkout from 4.1.0 to 4.1.1
  • 3abc99e - build(deps): bump golang.org/x/net from 0.15.0 to 0.17.0

Release v1.0.3

28 Sep 12:26
Compare
Choose a tag to compare

We are pleased to release the 1.0.3 version of pwru.

The major changes include:

  • Added support for L2 filters. For example, to filter ARP replies you can run pwru 'arp and arp[6:2] == 2' (#255).
  • Added --filter-ifname which allows users to select which device packets should be filtered. The option can be used with --filter-netns which was changed to accept either inode number (inode:) or a file path to a network namespace. For example, to filter only eth0 packets in the 42 pid's network namespace you can run pwru --filter-iface eth0 --filter-netns /proc/42/ns/net (#257).
  • The --output-meta was extended to print a network interface name. For example, iface=3(wlan0) (#259).

Functional changes:

Dependency changes:

  • 7849235 - build(deps): bump actions/checkout from 4.0.0 to 4.1.0 dependabot[bot]
  • df2c42a - build(deps): bump actions/upload-artifact from 3.1.2 to 3.1.3 dependabot[bot]
  • b781f31 - build(deps): bump golang.org/x/tools from 0.12.0 to 0.13.0 dependabot[bot]

Release v1.0.2

05 Sep 08:53
Compare
Choose a tag to compare

We are pleased to release the 1.0.2 version of pwru.

This release fixes the bug in the v1.0.1 pwru due to invalid byte code produced by libpcap.a when compiled with LLVM 13 (#245):

Failed to inject filter ebpf for kprobe_skb_2: register r8 used twice

Functional changes:

  • 908776a - gh/workflows: Use "make release" to build pwru for testing (@brb)
  • 50c2e2f - make: Use LLVM 15 for release builds (@brb)

Dependency changes:

  • 80d7973 - build(deps): bump actions/checkout from 3.6.0 to 4.0.0
  • cea9128 - build(deps): bump golang.org/x/sys from 0.11.0 to 0.12.0

Release v1.0.1

04 Sep 10:03
Compare
Choose a tag to compare

We are pleased to release the 1.0.1 version of pwru.

The major changes include:

  • When --filter-track-skb is used, stop tracking a packet once it hits kfree_skbmem. This significantly helps to reduce pwru output volume.

Functional changes:

Dependency changes:

  • bdfbfbe - build(deps): bump actions/checkout from 3.5.3 to 3.6.0
  • 44708d3 - build(deps): bump actions/setup-go from 4.0.1 to 4.1.0
  • ad4c372 - build(deps): bump golang.org/x/tools from 0.11.0 to 0.12.0
  • 8d5ffa2 - build(deps): bump cilium/little-vm-helper from 0.0.11 to 0.0.12
  • 10e84a2 - build(deps): bump cilium/little-vm-helper from 0.0.7 to 0.0.11