System Modifications
Default Behavior
Retis avoids making system changes such as:- Loading kernel modules
- Mounting filesystems
- Changing system configuration
- Adding firewall rules
Notable Examples
nft Module
nft Module
The
nft (nftables) module requires a specific nftables rule to be present.Impact: Without this rule, no nft events will be reported.Workaround: Either:- Use
--allow-system-changesflag (see below) - Manually configure the required nftables rule
tracefs
tracefs
The
tracefs filesystem is not mounted by default on all systems.Impact: While not mandatory, tracefs access helps Retis better determine:- Available tracepoints
- Traceable kernel functions
- Available event fields
- Use
--allow-system-changesflag (see below) - Manually mount tracefs:
Allowing System Changes
Use the--allow-system-changes flag to permit Retis to make necessary modifications:
See
retis collect --help for details about what changes may be applied.Packet Path Coverage
Locally Generated Traffic
Some parts of the path for locally generated traffic cannot be traced because they occur beforesk_buff allocation.
Examples:
- Socket system calls (
socket(),bind(),connect()) - Data staging before packet creation
- Some early protocol processing
sk_buffallocation points- Protocol transmit functions that work with
sk_buff
Impact
You may miss events for:- Application-level network operations
- Early packet creation stages
- Some loopback/local delivery paths
strace, perf) for application-level visibility.
Profile Combination
Issue
Profiles can specify overlapping or conflicting configuration:- Duplicate probe specifications
- Incompatible filter expressions
- Overlapping collector configurations
Workaround
Instead of combining profiles, create a custom profile or specify options manually:Filtering and Tracking
Filter Visibility Requirement
Filtering and tracking only work if a packet is seen at least once in a form where it can be matched against the filter.
skb:consume_skb with a filter on the original address won’t generate events.
consume_skb, the packet’s source address has already been translated. The filter looking for 10.0.0.1 doesn’t match the translated address.
Solution: Include probes where the packet appears in its original form:
Filter Size Limit
As explained in the filtering documentation, filters are compiled to eBPF instructions. Impact: Very complex filters may exceed the instruction limit:- Simplify the filter expression
- Split into multiple collection runs
- Use post-processing filters (Python, jq) instead
eBPF Limitations
Kernel Version Requirements
Retis requires modern eBPF features:- BPF Type Format (BTF)
- CO-RE (Compile Once - Run Everywhere)
- Modern BPF helpers
Verifier Constraints
The eBPF verifier may reject certain operations:- Very deep stack traces
- Complex packet parsing
- Large data structures
Performance Considerations
High Traffic Impact
Recommendations:-
Use filters to reduce event volume:
-
Limit collection time:
-
Use specific probes instead of wildcards:
Event Loss
Under extreme load, events may be lost due to ring buffer overflow. Indicators:- Gaps in tracking sequences
- Warning messages during collection
- Increase ring buffer size (if supported)
- Use more aggressive filtering
- Reduce probe count
Data File Compatibility
Version Compatibility
Event file format may change between Retis versions. Recommendation: Use the same Retis version for collection and analysis:Platform Support
Architecture
Retis is primarily developed and tested on x86_64. Other architectures (ARM64, etc.) may have:- Limited testing
- Architecture-specific issues
- Missing features
Kernel Configuration
Retis requires specific kernel features:CONFIG_BPF=yCONFIG_BPF_SYSCALL=yCONFIG_DEBUG_INFO_BTF=y- Tracepoint support
Getting Help
If you encounter limitations not listed here:- Check the GitHub Issues
- Review the compatibility documentation
- Ask in the community channels
- File a new issue with:
- Retis version (
retis --version) - Kernel version (
uname -r) - Reproduction steps
- Error messages
- Retis version (
See Also
- Filtering Guide - Understanding filter limitations
- Compatibility - Kernel and platform compatibility
- Performance Tuning - Optimizing collection
