OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [virtio-comment] [PATCH requirements 5/7] net-features: Add n-tuple receive flow steering requirements


Hi, Parav.

I also did some work on this feature, and I think it would be very useful if we could work on this interface design and VirtIO Spec together!

å 2023/6/2 äå6:03, Parav Pandit åé:
Add virtio net device requirements for receive flow steering.

Signed-off-by: Parav Pandit <parav@nvidia.com>
---
  net-workstream/features-1.4.md | 33 +++++++++++++++++++++++++++++++++
  1 file changed, 33 insertions(+)

diff --git a/net-workstream/features-1.4.md b/net-workstream/features-1.4.md
index fc36f31..41242b4 100644
--- a/net-workstream/features-1.4.md
+++ b/net-workstream/features-1.4.md
@@ -9,6 +9,7 @@ together is desired while updating the virtio net interface.
  1. Device counters visible to the driver
  2. Low latency tx and rx virtqueues for PCI transport
  3. Virtqueue notification coalescing re-arming support
+4. Receive virtqueue n-tuple steering
# 3. Requirements
  ## 3.1 Device counters
@@ -151,3 +152,35 @@ struct vnet_rx_completion {
     coalescing after processing the packets per VQ. This ensures that when
     networking stack decides to poll, no new notifications are generated when
     per VQ notification coalescing is used.
+
+## 3.4 Receive virtqueue n-tuple flow steering (RFS)

I think this abbreviation can be replaced with eg Receive virtqueue n-tuple flow director, RFD? or something else? This allows us to distinguish more clearly from (Accelerated) Recieve Flow Steering, (A)RFS.

ARFS can *automatically* issue RFS rules based on n-tuple rules, and we can still issue n-tuple rules *manually*.
So RFD seems more reasonable than RFS abbreviation, what do you think?:)

+1. The driver should be able to define a receive packet match criteria, an
+   action and a destination for a packet. For example, an ipv4 packet with a
+   multicast address to be steered to the receive vq 0. The second example is
+   ipv4, tcp packet matching a specified IP address and tcp port tuple to
+   steered to receive vq 10.
+2. The match criteria should include exact tuple fields well-defined such as mac
+   address, IP addresses, tcp/udp ports, etc.
+3. The match criteria should also include the field mask.

The mask structure can be considered to reuse the same structure as the key structure.

+4. The match criteria may optionally also include specific packet data offset,
+   length, and matching pattern, which may not be defined in the standard RFC.
+5. Action includes (a) dropping or (b) forwarding the packet.
+6. Destination location is a receive virtqueue index or rss context.

We may have an additional requirement internally, such as specifying the queue id of a certain VF, but we are still aligning this requirement internally, and it may be more reasonable to implement the
work involving device group based on admin vq.

+7. The device should process RFS rules before RSS rules, i.e., when there is a
+   miss on the RFS rule RSS rule applies.
+8. The device should be able to add/remove these rules at a rate of 100K
+   rules/sec.
+9. If multiple rules are programmed which has overlapping attributes for a
+   received packet, the driver to define the location/priority of the rule.

Considering the capabilities similar to some current tools such as ethtool, if it is a simple implementation,
the first match principle can be applied.

+10. The driver should be able to query flow steering table entries programmed in
+    the device by the flow id.
+11. The driver should be able to add the entry for attributes (a) match
+    criteria, (b) action, (c) destination and (d) assign a unique id of 32 bits.
+12. The driver should be able to delete the steering rule entry via a unique id.
+13. The driver should be able to add and delete the steering rules in out of
+    order manner without depending on previous commands.
+14. A group member device should be able to query the attributes of the flow
+    steering that device supports.
+15. The driver and group owner driver should be able to query supported device
+    limits for the steering entries.

Do we want to support some user-defined fields, so that manufacturers can customize the interpretation of some fields.

Thanks!


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]