capsule-rs / capsule-rs/capsule
Expose `rte_eth_dev_set_mc_addr_list` function into capsule runtime to filter specific MC addresses
- Dominant language
- Rust
- Stars
- 443
- Forks
- 42
- PR merge metrics
- No merged PRs in 30d
Description
## What's desired
We have an application which proxies certain IPV4 multicast inputs to IPV6 DEPI (Downstream External PHY Interface) using DPDK via capsule. For performance reasons, we would like to filter the specific set of multicast addresses we're interested, ideally by DPDK rather than in our application code, for performance reasons. We're using multicast = true which, as you know, means all multicast traffic. DPDK provides the function, `rte_eth_dev_set_mc_addr_list`, which is implemented by the driver we're using. This is publically available in the `capsule-ffi`; however, it takes a `u16` `port_id` and that is not accessible from the capsule lib (PortId is `capsule/core/ffi` crate private and in addition, that struct's `u16` member is private to the core/ffi module.that would like to filter specific sets of multicast addresses).
## Work around / alternatives
We can query for the port id using the rte function to get it from the port name, which we are doing, but an public abstraction in capsule for the mc filter would be great if it makes sense.
Appreciate all that you do. Let me know if you need more information!
Contributor guide
Research direction
Start by locating the existing rte_eth_dev_set_mc_addr_list declaration in capsule-ffi and the private PortId definition in the capsule/core/ffi crate. Trace how port identifiers are exposed to capsule users and define completion as a public abstraction that lets callers configure specific multicast addresses through the supported DPDK driver.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100