- Notifications
You must be signed in to change notification settings - Fork2
RTCAgent is an eBPF powered HEP Agent for HOMER/HEPIC
License
sipcapture/rtcagent
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation

RTCagent is an HEP/eBPF powered observability tool for VoIP/WebRTC Applications.
RTCAgent is anext-generationHEP Agent developed using the latesteBPF technologies.
RTCAgent greatly differs from any other previous HEP Agent in several ways:
- Unlikenative agents, it does not require any code modifications or patches
- Unlikepassive agents, it does not require access to network interfaces and packets
- Unlikeany other agent, it traces functions used forsending/receiving data
The result is a new, lightweight and portable HEP Agent able to mirror SIP packets through eBPF hooks
from the core of supported applications bypassing manual code integrations, network encryption and complexity.

Download anamd64/x86
static build ofrtcagent
and use it immediately on modern kernels.
curl -fsSL github.com/sipcapture/rtcagent/releases/latest/download/rtcagent -O&& chmod +x rtcagent
Prefer using packages? Get the latestdeb and rpm releases foramd64/x86
NAME:rtcagent - Capture and debug RTC Projects.USAGE:rtcagent [flags]COMMANDS:helpHelp about any commandfreeswitchcapture SIP messages from freeswitch (libsofia): t_port, su_recvkamailiocapture SIP messages from kamailio: recv_msg, udp_send, tcp_send. opensipscapture SIP messages from v: recv_msg, udp_send, tcp_send.tcprttshow tcp rtt stats monitorshow advanced monitor statisticsDESCRIPTION:RTCAgent is a tool that can capture and trace SIP packets using eBPF hooks and HEPUsage: rtcagent <command> -hOPTIONS: -d, --debug[=false]enable debug logging -h, --help[=false]help for rtcagent -P, --hep-port="9060"hep port - default 9060 -S, --hep-server=""hep server to duplicate: i.e. 10.0.0.1 -T, --hep-transport="udp"hep transport default udp. Can be udp, tcp, tls --hex[=false]print byte strings as hex encoded strings -l, --log-file=""-l save the packets to file --nosearch[=false]no lib search -p, --pid=0if pid is 0 then we target all pids -u, --uid=0if uid is 0 then we target all users -v, --version[=false]version for rtcagent
Compatible with Linux/Android kernel versions >=x86_64 5.x, >=aarch64 5.5.
Linux only. Does not support Windows and macOS.
- golang 1.18 or newer
- clang 9.0 or newer
- cmake 3.18.4 or newer
- clang backend: llvm 9.0 or newer
- kernel config:CONFIG_DEBUG_INFO_BTF=y
If you are using Ubuntu 20.04 or later versions, you can use a single command to complete the initialization of the compilation environment.
/bin/bash -c"$(curl -fsSL https://raw.githubusercontent.com//sipcapture/rtcagent/master/builder/init_env.sh)"
In addition to the software listed in the 'Toolchain Version' section above, the following software is also required for the compilation environment. Please install before proceeding.
- linux-tools-common
- linux-tools-generic
- pkgconf
- libelf-dev
Clone the repository code and compile
git clone git@github.com:/sipcapture/rtcagent.gitcd rtcagentmakebin/rtcagent
RTCAgent support BTF disabled with commandmake nocore
to compile at 2022/04/17 and can run on Linux systems that do not support BTF.
make nocorebin/rtcagent --help
Runrtcagent
on a native host attaching to a local binary target
./rtcagent kamailio -T udp -P 9060 -S $HOMER -m /usr/sbin/kamailio
./rtcagent opensips -T tcp -P 9061 -S $HOMER -m /usr/sbin/opensips
./rtcagent freeswitch -T udp -P 9060 -S $HOMER -m /usr/sbin/freeswitch
Runrtcagent
as a priviledged container on your host attaching to a local binary target
rtcagent: privileged: true pid: host image: ghcr.io/sipcapture/rtcagent container_name: rtcagent restart: unless-stopped volumes: - /sys/fs/cgroup:/host/sys/fs/cgroup:ro - /sys/kernel/debug:/sys/kernel/debug:rw command: --cgroupfs-root=/host/sys/fs/cgroup
Runrtcagent
as a priviledged container attached to a target container via docker volume mounts
rtcagent: privileged: true image: ghcr.io/sipcapture/rtcagent container_name: rtcagent restart: unless-stopped volumes: - $(docker inspect --format="{{.GraphDriver.Data.MergedDir}}" kamailio)/usr/sbin/kamailio:/kamailio:ro command: /rtcagent kamailio -m /kamailio depends_on: - kamailio
rtcagent: privileged: true image: ghcr.io/sipcapture/rtcagent container_name: rtcagent restart: unless-stopped volumes: - $(docker inspect --format="{{.GraphDriver.Data.MergedDir}}" opensips)/usr/sbin/opensips:/opensips:ro command: /rtcagent opensips -m /opensips depends_on: - opensips
RTCAgent is inspired by Cilum, Odigos, eCapture and the many eBPF guides, libraries and implementations.
About
RTCAgent is an eBPF powered HEP Agent for HOMER/HEPIC
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Contributors4
Uh oh!
There was an error while loading.Please reload this page.