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] Re: [virtio] [PATCH requirements 6/7] net-features: Add packet timestamp requirements


On Fri, Aug 11, 2023 at 5:28âAM Willem de Bruijn
<willemdebruijn.kernel@gmail.com> wrote:
>
> On Thu, Aug 10, 2023 at 2:56âAM Jason Wang <jasowang@redhat.com> wrote:
> >
> > On Wed, Aug 9, 2023 at 4:47âPM Xuan Zhuo <xuanzhuo@linux.alibaba.com> wrote:
> > >
> > > On Mon, 24 Jul 2023 06:34:20 +0300, Parav Pandit <parav@nvidia.com> wrote:
> > > > Add tx and rx packet timestamp requirements.
> > > >
> > > > Signed-off-by: Parav Pandit <parav@nvidia.com>
> > > > ---
> > > >  net-workstream/features-1.4.md | 26 ++++++++++++++++++++++++++
> > > >  1 file changed, 26 insertions(+)
> > > >
> > > > diff --git a/net-workstream/features-1.4.md b/net-workstream/features-1.4.md
> > > > index d228462..37820b6 100644
> > > > --- a/net-workstream/features-1.4.md
> > > > +++ b/net-workstream/features-1.4.md
> > > > @@ -10,6 +10,7 @@ together is desired while updating the virtio net interface.
> > > >  2. Low latency tx and rx virtqueues for PCI transport
> > > >  3. Virtqueue notification coalescing re-arming support
> > > >  4  Virtqueue receive flow filters (RFF)
> > > > +5. Device timestamp for tx and rx packets
> > > >
> > > >  # 3. Requirements
> > > >  ## 3.1 Device counters
> > > > @@ -280,3 +281,28 @@ struct virtio_net_rff_delete {
> > > >       u8 padding[2];
> > > >       le32 flow_id;
> > > >  };
> > > > +
> > > > +## 3.5 Packet timestamp
> > > > +1. Device should provide transmit timestamp and receive timestamp of the packets
> > > > +   at per packet level when the device is enabled.
> > > > +2. Device should provide the current free running clock in the least latency
> > > > +   possible using an MMIO register read of 64-bit to have the least jitter.

Btw, register is not offered via all transports.

> > > > +3. Device should provide the current frequency and the frequency unit for the
> > > > +   software to synchronize the reference point of software and the device using
> > > > +   a control vq command.
> > > > +
> > > > +### 3.5.1 Transmit timestamp
> > > > +1. Transmit completion must contain a packet transmission timestamp when the
> > > > +   device is enabled for it.
> > > > +2. The device should record the packet transmit timestamp in the completion at
> > > > +   the farthest egress point towards the network.
> > > > +3. The device must provide a transmit packet timestamp in a single DMA
> > > > +   transaction along with the rest of the transmit completion fields.
> > > > +
> > > > +### 3.5.2 Receive timestamp
> > > > +1. Receive completion must contain a packet reception timestamp when the device
> > > > +   is enabled for it.
> > > > +2. The device should record the received packet timestamp at the closet ingress
> > > > +   point of reception from the network.
> > > > +3. The device should provide a receive packet timestamp in a single DMA
> > > > +   transaction along with the rest of the receive completion fields.
> > >
> > >
> > > According to the last discuss, the feature will depend on the new desc
> > > structure.
> > >
> > > I would to know, can we introduce this to the current spec with a simple change?
> > >
> > >  struct vring_used_elem {
> > >         /* Index of start of used descriptor chain. */
> > >         __virtio32 id;
> > >         /* Total length of the descriptor chain which was used (written to) */
> > >         __virtio32 len;
> > >
> > > +       __virtio64 timestamp;
> > >  };
> >
> > I think this could be one way and another proposal from Willem is:
> >
> > https://lists.linuxfoundation.org/pipermail/virtualization/2021-February/052422.html
> >
> > which might be tricky for TX but it's more flexible since it allows
> > timestamps to be done per buffer.
>
> Thanks for looping me in, Jason.
>
> I would separate timestamping data from clock synchronization and
> timestamping control path.
>
>
> For synchronization, a single 64-bit MMIO read is not necessarily the
> fastest when traversing real hardware boundaries, or sufficient. PCIe
> has Precision Time Measurement (PTM) hardware logic to capture
> clock measurement with less uncertainty and possibly latency, for instance.
> Indeed, uncertainty is more important than raw latency.
>
> FWIW, we're also trying to capture similar requires for physical devices
> through the Open Compute Platform NIC Core Offloads effort:
> https://www.opencompute.org/w/index.php?title=Core_Offloads#Timestamping

This is interesting and the whole idea of "NIC Core Offloads" looks
great as well.

>
> Virtio defines both a virtual interface and one that can be supported
> by hardware, so it's not a 1:1 match, but many subtle points probably
> apply to both.

Yeah, I think virito-net may try to align with that.

>
>
> For timestamping, the difficult part is the transmit completion stamp,
> asynchronous with data flow. If this is taken on the device before or
> at the time of queuing the completion to the host, then it can be stored
> in\ the completion descriptor.

Yes, this is the proposal from Xuan actually.

> But if taken at the PHY, say, it is not
> uncommon for this to happen after the completion is written.

This seems the requirement of the this patch which says:

"
 The device should record the packet transmit timestamp in the completion at
 the farthest egress point towards the network.
"

It seems to imply the PHY but with a DMA interface:

"
The device must provide a transmit packet timestamp in a single DMA
transaction along with the rest of the transmit completion fields.
"

Parav, can you clarify? And

> And
> instead a block of dedicated registers is used and the host must poll
> a register. There are examples of these in the Linux device driver
> directory. For virtio, it is probably sufficient to only support the
> first kind.

RIght, for the second, it could be tricky for a virtual environemnt.

>
>
> A third aspect is the control path: querying and configuring hardware
> timestamps (siocgstamp/siosgstamp). If hardware is capable, easiest is
> to just timestamp every packet. Much hardware out there targets low
> rate PTP messages. But a virtualized virtio device could timestamp
> all. In which case this control API can maybe be punted on.
>

That could be one way.

Thanks



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