All of lore.kernel.org
 help / color / mirror / Atom feed
* AF_XDP socket TX path interact with TC?
@ 2021-10-21 22:41 Jun Hu
  2021-10-25 10:48 ` Toke Høiland-Jørgensen
  0 siblings, 1 reply; 8+ messages in thread
From: Jun Hu @ 2021-10-21 22:41 UTC (permalink / raw)
  To: xdp-newbies

Hi,
I want to put a timestamp in the egress packets, and I want to use
AF_XDP socket for both sending and receiving packets; since a XDP
kernel program only work in ingress direction, I wonder if I could use
a tc kernel program to change a packet sent out via an AF_XDP socket?
I searched around, but couldn't find any direct answer...

HJ

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: AF_XDP socket TX path interact with TC?
  2021-10-21 22:41 AF_XDP socket TX path interact with TC? Jun Hu
@ 2021-10-25 10:48 ` Toke Høiland-Jørgensen
  2021-10-25 18:26   ` Jun Hu
  0 siblings, 1 reply; 8+ messages in thread
From: Toke Høiland-Jørgensen @ 2021-10-25 10:48 UTC (permalink / raw)
  To: Jun Hu, xdp-newbies

Jun Hu <hujun.work@gmail.com> writes:

> Hi,
> I want to put a timestamp in the egress packets, and I want to use
> AF_XDP socket for both sending and receiving packets; since a XDP
> kernel program only work in ingress direction, I wonder if I could use
> a tc kernel program to change a packet sent out via an AF_XDP socket?
> I searched around, but couldn't find any direct answer...

Nope, AF_XDP bypasses the stack completely, so TC won't see the packet
on egress...

-Toke


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: AF_XDP socket TX path interact with TC?
  2021-10-25 10:48 ` Toke Høiland-Jørgensen
@ 2021-10-25 18:26   ` Jun Hu
  2021-10-26 11:08     ` Konrad Zemek
  0 siblings, 1 reply; 8+ messages in thread
From: Jun Hu @ 2021-10-25 18:26 UTC (permalink / raw)
  To: Toke Høiland-Jørgensen; +Cc: xdp-newbies

On Mon, Oct 25, 2021 at 3:48 AM Toke Høiland-Jørgensen <toke@redhat.com> wrote:
>
> Jun Hu <hujun.work@gmail.com> writes:
>
> > Hi,
> > I want to put a timestamp in the egress packets, and I want to use
> > AF_XDP socket for both sending and receiving packets; since a XDP
> > kernel program only work in ingress direction, I wonder if I could use
> > a tc kernel program to change a packet sent out via an AF_XDP socket?
> > I searched around, but couldn't find any direct answer...
>
> Nope, AF_XDP bypasses the stack completely, so TC won't see the packet
> on egress...
>
> -Toke
Ok, thanks for the clarification, I guess I have to wait for the XDP
egress support ...

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: AF_XDP socket TX path interact with TC?
  2021-10-25 18:26   ` Jun Hu
@ 2021-10-26 11:08     ` Konrad Zemek
  2021-10-26 18:34       ` Jun Hu
  0 siblings, 1 reply; 8+ messages in thread
From: Konrad Zemek @ 2021-10-26 11:08 UTC (permalink / raw)
  To: Jun Hu; +Cc: Toke Høiland-Jørgensen, xdp-newbies

On Monday, October 25th, 2021 at 8:26 PM, Jun Hu <hujun.work@gmail.com> wrote:

> On Mon, Oct 25, 2021 at 3:48 AM Toke Høiland-Jørgensen toke@redhat.com wrote:
>
> > Jun Hu hujun.work@gmail.com writes:
> >
> > > Hi,
> > >
> > > I want to put a timestamp in the egress packets, and I want to use
> > >
> > > AF_XDP socket for both sending and receiving packets; since a XDP
> > >
> > > kernel program only work in ingress direction, I wonder if I could use
> > >
> > > a tc kernel program to change a packet sent out via an AF_XDP socket?
> > >
> > > I searched around, but couldn't find any direct answer...
> >
> > Nope, AF_XDP bypasses the stack completely, so TC won't see the packet
> >
> > on egress...
> >
> > -Toke
>
> Ok, thanks for the clarification, I guess I have to wait for the XDP
>
> egress support ...

You can also directly modify the packet that you send out through an AF_XDP socket, before putting it on the outgoing queue. Is there anything specific that you would want to do in an egress-attached BPF program that you would not be able to do in the userspace program that manages your AF_XDP socket?

Konrad

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: AF_XDP socket TX path interact with TC?
  2021-10-26 11:08     ` Konrad Zemek
@ 2021-10-26 18:34       ` Jun Hu
  2021-10-27 11:35         ` Toke Høiland-Jørgensen
  0 siblings, 1 reply; 8+ messages in thread
From: Jun Hu @ 2021-10-26 18:34 UTC (permalink / raw)
  To: Konrad Zemek; +Cc: Toke Høiland-Jørgensen, xdp-newbies

On Tue, Oct 26, 2021 at 4:08 AM Konrad Zemek <konrad@zemek.io> wrote:
>
> On Monday, October 25th, 2021 at 8:26 PM, Jun Hu <hujun.work@gmail.com> wrote:
>
> > On Mon, Oct 25, 2021 at 3:48 AM Toke Høiland-Jørgensen toke@redhat.com wrote:
> >
> > > Jun Hu hujun.work@gmail.com writes:
> > >
> > > > Hi,
> > > >
> > > > I want to put a timestamp in the egress packets, and I want to use
> > > >
> > > > AF_XDP socket for both sending and receiving packets; since a XDP
> > > >
> > > > kernel program only work in ingress direction, I wonder if I could use
> > > >
> > > > a tc kernel program to change a packet sent out via an AF_XDP socket?
> > > >
> > > > I searched around, but couldn't find any direct answer...
> > >
> > > Nope, AF_XDP bypasses the stack completely, so TC won't see the packet
> > >
> > > on egress...
> > >
> > > -Toke
> >
> > Ok, thanks for the clarification, I guess I have to wait for the XDP
> >
> > egress support ...
>
> You can also directly modify the packet that you send out through an AF_XDP socket, before putting it on the outgoing queue. Is there anything specific that you would want to do in an egress-attached BPF program that you would not be able to do in the userspace program that manages your AF_XDP socket?
>
> Konrad

Yes, that's what I am doing right now, however ideally I want to add a
timestamp to the packet as close as it egress the NIC; since AF_XDP
doesn't have access to hardware timestamp, that's why I was searching
for an alternative solution.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: AF_XDP socket TX path interact with TC?
  2021-10-26 18:34       ` Jun Hu
@ 2021-10-27 11:35         ` Toke Høiland-Jørgensen
  2021-10-27 14:03           ` Jesper Dangaard Brouer
  0 siblings, 1 reply; 8+ messages in thread
From: Toke Høiland-Jørgensen @ 2021-10-27 11:35 UTC (permalink / raw)
  To: Jun Hu, Konrad Zemek; +Cc: xdp-newbies, Jesper Brouer

Jun Hu <hujun.work@gmail.com> writes:

> On Tue, Oct 26, 2021 at 4:08 AM Konrad Zemek <konrad@zemek.io> wrote:
>>
>> On Monday, October 25th, 2021 at 8:26 PM, Jun Hu <hujun.work@gmail.com> wrote:
>>
>> > On Mon, Oct 25, 2021 at 3:48 AM Toke Høiland-Jørgensen toke@redhat.com wrote:
>> >
>> > > Jun Hu hujun.work@gmail.com writes:
>> > >
>> > > > Hi,
>> > > >
>> > > > I want to put a timestamp in the egress packets, and I want to use
>> > > >
>> > > > AF_XDP socket for both sending and receiving packets; since a XDP
>> > > >
>> > > > kernel program only work in ingress direction, I wonder if I could use
>> > > >
>> > > > a tc kernel program to change a packet sent out via an AF_XDP socket?
>> > > >
>> > > > I searched around, but couldn't find any direct answer...
>> > >
>> > > Nope, AF_XDP bypasses the stack completely, so TC won't see the packet
>> > >
>> > > on egress...
>> > >
>> > > -Toke
>> >
>> > Ok, thanks for the clarification, I guess I have to wait for the XDP
>> >
>> > egress support ...
>>
>> You can also directly modify the packet that you send out through an
>> AF_XDP socket, before putting it on the outgoing queue. Is there
>> anything specific that you would want to do in an egress-attached BPF
>> program that you would not be able to do in the userspace program
>> that manages your AF_XDP socket?
>>
>> Konrad
>
> Yes, that's what I am doing right now, however ideally I want to add a
> timestamp to the packet as close as it egress the NIC; since AF_XDP
> doesn't have access to hardware timestamp, that's why I was searching
> for an alternative solution.

Cc. Jesper, as I believe timestamps is one of his initial use cases for
xdp-hints (hardware metadata).

-Toke


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: AF_XDP socket TX path interact with TC?
  2021-10-27 11:35         ` Toke Høiland-Jørgensen
@ 2021-10-27 14:03           ` Jesper Dangaard Brouer
  2021-10-27 15:48             ` Jun Hu
  0 siblings, 1 reply; 8+ messages in thread
From: Jesper Dangaard Brouer @ 2021-10-27 14:03 UTC (permalink / raw)
  To: Toke Høiland-Jørgensen, Jun Hu, Konrad Zemek
  Cc: brouer, xdp-newbies, xdp-hints, Freysteinn Alfredsson



On 27/10/2021 13.35, Toke Høiland-Jørgensen wrote:
> Jun Hu <hujun.work@gmail.com> writes:
> 
>> On Tue, Oct 26, 2021 at 4:08 AM Konrad Zemek <konrad@zemek.io> 
>> wrote:
>>> 
>>> On Monday, October 25th, 2021 at 8:26 PM, Jun Hu 
>>> <hujun.work@gmail.com> wrote:
>>> 
>>>> On Mon, Oct 25, 2021 at 3:48 AM Toke Høiland-Jørgensen 
>>>> toke@redhat.com wrote:
>>>> 
>>>>> Jun Hu hujun.work@gmail.com writes:
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> I want to put a timestamp in the egress packets, and I
>>>>>> want to use
>>>>>> 
>>>>>> AF_XDP socket for both sending and receiving packets;
>>>>>> since a XDP
>>>>>> 
>>>>>> kernel program only work in ingress direction, I wonder if 
>>>>>> I could use
>>>>>> 
>>>>>> a tc kernel program to change a packet sent out via an 
>>>>>> AF_XDP socket?
>>>>>> 
>>>>>> I searched around, but couldn't find any direct answer...
>>>>> 
>>>>> Nope, AF_XDP bypasses the stack completely, so TC won't see 
>>>>> the packet
>>>>> 
>>>>> on egress...
>>>>> 
>>>>> -Toke
>>>> 
>>>> Ok, thanks for the clarification, I guess I have to wait for 
>>>> the XDP
>>>> 
>>>> egress support ...
>>> 
>>> You can also directly modify the packet that you send out
>>> through an AF_XDP socket, before putting it on the outgoing
>>> queue. Is there anything specific that you would want to do in
>>> an egress-attached BPF program that you would not be able to do
>>> in the userspace program that manages your AF_XDP socket?
>>> 
>>> Konrad
>> 
>> Yes, that's what I am doing right now, however ideally I want to 
>> add a timestamp to the packet as close as it egress the NIC; since 
>> AF_XDP doesn't have access to hardware timestamp, that's why I was 
>> searching for an alternative solution.
> 
> Cc. Jesper, as I believe timestamps is one of his initial use cases 
> for xdp-hints (hardware metadata).

Correct, Toke.  I have a use-case/customer that want timestamps working
with AF_XDP.
And yes the plan is to leverage XDP-hints (via XDP metadata area) to
expose/export these different packet timestamps.

I have two use-case for timestamps:
  (1) RX-timestamping.
  (2) TX-launch-time.

This week, I have promised to implement a software version of (1)
RX-timestamping, where XDP will add ktime into the metadata area and
AF_XDP userspace program will consume this.  It is rather trivial to do,
but I want extend it and use it to build a flexible BTF-info variant
on-top (which doesn't requires any kernel changes).
The goal is to get the hardware RX-timestamp, via changing the NIC
driver to populate the XDP-hints in metadata areas (from
HW-RX-descriptor).  Again using BTF to describe XDP-hints contents, then
AF_XDP userspace prog can hopefully use the same code to find and
extract members related to the HW
RX-timestamp.

For (2) TX-launch-time, as you mention XDP is missing an egress hook or
queueing layer.  Thus, there are some kernel work a-head.  Toke and a 
PhD stud is looking into this area.
As discussed/described before on xdp-hints mailing list[1] (cc'ed), in
this step it is the AF_XDP program that updates the XDP-hints area
before sending it, and the (non-existing XDP egress) driver hook moves 
requested LaunchTime into the HW-TX-descriptor.


  [1] 
https://lists.xdp-project.net/postorius/lists/xdp-hints.xdp-project.net/

What is your use-case for adding a TX-timestamp to the packet?

--Jesper


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: AF_XDP socket TX path interact with TC?
  2021-10-27 14:03           ` Jesper Dangaard Brouer
@ 2021-10-27 15:48             ` Jun Hu
  0 siblings, 0 replies; 8+ messages in thread
From: Jun Hu @ 2021-10-27 15:48 UTC (permalink / raw)
  To: Jesper Dangaard Brouer
  Cc: Toke Høiland-Jørgensen, Konrad Zemek, brouer,
	xdp-newbies, xdp-hints, Freysteinn Alfredsson

> What is your use-case for adding a TX-timestamp to the packet?
>
> --Jesper
my use case is rather simple, I want to use AF_XDP for traffic tester
type of application, essentially, this application generates testing
traffic, egress via NIC-1, goes into a DUT, and DUT forward the
traffic back into NIC-2, the application need to measure the DUT's
forwarding latency for each packet, so it needs to know the timestamp
of test traffic TX on NIC-1 and RX on NIC-2

                  +-----+
|---------------- | DUT |----------------|
|                 +-----+                |
|                                        |
|          +-------------------+         |
|  <-----  |                   |  <----  |
+----------|NIC-1        NIC-2 |---------+
           |                   |
           +-------------------+

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-10-27 15:49 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-21 22:41 AF_XDP socket TX path interact with TC? Jun Hu
2021-10-25 10:48 ` Toke Høiland-Jørgensen
2021-10-25 18:26   ` Jun Hu
2021-10-26 11:08     ` Konrad Zemek
2021-10-26 18:34       ` Jun Hu
2021-10-27 11:35         ` Toke Høiland-Jørgensen
2021-10-27 14:03           ` Jesper Dangaard Brouer
2021-10-27 15:48             ` Jun Hu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.