feat(packetparser): add configurable BPF Ring Buffer support #1981
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.


Description
This PR introduces support for
BPF_MAP_TYPE_RINGBUFin thepacketparserplugin as a configurable alternative toBPF_MAP_TYPE_PERF_EVENT_ARRAY. Ring Buffers offer better performance and memory efficiency, especially on high-core systems, by using a shared buffer across CPUs rather than per-CPU buffers.Changes
enablePacketParserRingBuffer(bool) andpacketParserRingBufferSize(uint32) to the Retina configuration and Helm charts.packetparser.cto conditionally compile withBPF_MAP_TYPE_RINGBUFwhen enabled.packetparser_linux.goto:-DUSE_RING_BUFFERand-DRING_BUFFER_SIZEflags during BPF compilation.ringBufReaderWrapperto adapt thecilium/ebpf/ringbufreader to the existing reader interface.Verification
go test -v ./pkg/plugin/packetparser/...enablePacketParserRingBuffer: true.ringbufusingbpftool.Related Issues/PRs
BPF_MAP_TYPE_RINGBUF) impl in packetparser #1966Checklist
git commit -S -s ...). See this documentation on signing commits.Screenshots (if applicable) or Testing Completed
Additional Notes
Once this PR gets reviewed and merged, I will update the docs accordingly.
Please refer to the CONTRIBUTING.md file for more information on how to contribute to this project.