On Fri, Jun 26, 2020 at 4:16 PM Thomas Monjalon <tho...@monjalon.net> wrote: > > 26/06/2020 12:35, Jerin Jacob: > > On Fri, Jun 26, 2020 at 12:59 AM Thomas Monjalon <tho...@monjalon.net> > > wrote: > > > > > > 25/06/2020 19:55, Jerin Jacob: > > > > On Thu, Jun 25, 2020 at 10:20 PM Jiawei Wang <jiaw...@mellanox.com> > > > > wrote: > > > > > > > > > > When using full offload, all traffic will be handled by the HW, and > > > > > directed to the requested vf or wire, the control application loses > > > > > visibility on the traffic. > > > > > So there's a need for an action that will enable the control > > > > > application > > > > > some visibility. > > > > > > > > > > The solution is introduced a new action that will sample the incoming > > > > > traffic and send a duplicated traffic in some predefined ratio to the > > > > > application, while the original packet will continue to the target > > > > > destination. > > > > > > > > > > The packets sampled equals is '1/ratio', if the ratio value be set to > > > > > 1 > > > > > , means that the packets would be completely mirrored. The sample > > > > > packet > > > > > can be assigned with different set of actions from the original > > > > > packet. > > > > > > > > > > In order to support the sample packet in rte_flow, new rte_flow action > > > > > definition RTE_FLOW_ACTION_TYPE_SAMPLE and structure > > > > > rte_flow_action_sample > > > > > > > > Isn't mirroring the packet? How about, RTE_FLOW_ACTION_TYPE_MIRROR > > > > I am not able to understand, Why it is called sample. > > > > > > Sampling is a partial mirroring. > > > > I think, By definition, _sampling_ is the _selection_ of items from a > > specific group. > > I think, _sampling_ is not dictating, what is the real action for the > > "selected" items. > > One can get confused with the selected ones can be for forward, drop > > any other action. > > I see. Good design question (I will let others reply). > > > So IMO, explicit mirror keyword usage makes it is clear. > > > > Some more related questions: > > 1) What is the real use case for ratio? I am not against adding a > > ratio attribute if the MLX hardware supports it. It will be good to > > know the use case from the application perspective? And what basics > > application set ratio != 1? > > If I understand well, some applications want to check, > by picking random packets, that the processing is not failing.
Not clear to me. I will wait for another explanation if any. In what basics application set .1 vs .8? > > > 2) If it is for "rate-limiting" or "policing", why not use rte_mtr > > object (rte_mtr.h) via rte_flow action. > > 3) One of the issue for driver developers and application writers are > > overlapping APIs. This would overlap with rte_eth_mirror_rule_set() > > API. > > > > Can we deprecate rte_eth_mirror_rule_set() API? It will be a pain for > > all to have overlapping APIs. We have not fixed the VLAN filter API > > overlap with rte_flow in ethdev. Its being TODO for multiple releases > > now. > > Ooooooooh yes! > I think flow-based API is more powerful, and should deprecate > old port-based API. +1 from me. it is taking too much effort and time to make support duplicate APIs. > I want to help deprecating such API in 20.11 if possible. Please start that discussion. In this case, it is clear API overlap with rte_eth_mirror_rule_set(). We should not have two separate paths for the same function in the same ethdev library. > > > > Full mirroring is sampling 100% packets (ratio = 1). > > > That's why only one action is enough. > > >