On 5/13/24 13:10, Adrian Moreno wrote:
> 
> 
> On 5/13/24 12:44 PM, Eelco Chaudron wrote:
>>
>>
>> On 13 May 2024, at 9:01, Adrian Moreno wrote:
>>
>>> On 5/10/24 12:06 PM, Eelco Chaudron wrote:
>>>> On 24 Apr 2024, at 21:53, Adrian Moreno wrote:
>>>>
>>>>> This simple program reads from psample and prints the packets to stdout.
>>>>> It's useful for quickly collecting sampled packets.
>>>>
>>>> See some comments below, did not review the actual sample application in 
>>>> detail.
>>>>
>>>> //Eelco
>>>>
>>>>> Signed-off-by: Adrian Moreno <amore...@redhat.com>
>>>>> ---
>>>>>    Documentation/automake.mk           |   1 +
>>>>>    Documentation/conf.py               |   2 +
>>>>>    Documentation/ref/index.rst         |   1 +
>>>>>    Documentation/ref/ovs-psample.8.rst |  47 ++++
>>>>>    include/linux/automake.mk           |   1 +
>>>>>    include/linux/psample.h             |  64 ++++++
>>>>>    rhel/openvswitch-fedora.spec.in     |   2 +
>>>>>    rhel/openvswitch.spec.in            |   1 +
>>>>>    utilities/automake.mk               |   9 +
>>>>>    utilities/ovs-psample.c             | 330 ++++++++++++++++++++++++++++
>>>>>    10 files changed, 458 insertions(+)
>>>>>    create mode 100644 Documentation/ref/ovs-psample.8.rst
>>>>>    create mode 100644 include/linux/psample.h
>>>>>    create mode 100644 utilities/ovs-psample.c
>>>>>
>>>>> diff --git a/Documentation/automake.mk b/Documentation/automake.mk
>>>>> index 47d2e336a..c22facfd6 100644
>>>>> --- a/Documentation/automake.mk
>>>>> +++ b/Documentation/automake.mk
>>>>> @@ -165,6 +165,7 @@ RST_MANPAGES = \
>>>>>           ovs-l3ping.8.rst \
>>>>>           ovs-parse-backtrace.8.rst \
>>>>>           ovs-pki.8.rst \
>>>>> + ovs-psample.8.rst \
>>>>>           ovs-tcpdump.8.rst \
>>>>>           ovs-tcpundump.1.rst \
>>>>>           ovs-test.8.rst \
>>>>> diff --git a/Documentation/conf.py b/Documentation/conf.py
>>>>> index 15785605a..75efed2fc 100644
>>>>> --- a/Documentation/conf.py
>>>>> +++ b/Documentation/conf.py
>>>>> @@ -134,6 +134,8 @@ _man_pages = [
>>>>>         u'convert "tcpdump -xx" output to hex strings'),
>>>>>        ('ovs-test.8',
>>>>>         u'Check Linux drivers for performance, vlan and L3 tunneling 
>>>>> problems'),
>>>>> +    ('ovs-psample.8',
>>>>> +     u'Print packets sampled by psample'),
>>>>>        ('ovs-vlan-test.8',
>>>>>         u'Check Linux drivers for problems with vlan traffic'),
>>>>>        ('ovsdb-server.7',
>>>>> diff --git a/Documentation/ref/index.rst b/Documentation/ref/index.rst
>>>>> index 03ada932f..d1076435a 100644
>>>>> --- a/Documentation/ref/index.rst
>>>>> +++ b/Documentation/ref/index.rst
>>>>> @@ -46,6 +46,7 @@ time:
>>>>>       ovs-pki.8
>>>>>       ovs-sim.1
>>>>>       ovs-parse-backtrace.8
>>>>> +   ovs-psample.8
>>>>>       ovs-tcpdump.8
>>>>>       ovs-tcpundump.1
>>>>>       ovs-test.8
>>>>> diff --git a/Documentation/ref/ovs-psample.8.rst 
>>>>> b/Documentation/ref/ovs-psample.8.rst
>>>>> new file mode 100644
>>>>> index 000000000..c849c83d8
>>>>> --- /dev/null
>>>>> +++ b/Documentation/ref/ovs-psample.8.rst
>>>>> @@ -0,0 +1,47 @@
>>>>> +==========
>>>>> +ovs-sample
>>>>
>>>> Interesting, here you call it all ovs-sample here, which is like ;)
>>>
>>> Yes, at the begining I called it ovs-sample as I thought to make some 
>>> generic tool, but since it ended up being very psample-specific I added the 
>>> "p" (and missed this one).
>>>
>>>>
>>>> You could add options like —local-kernel --local-userspace (--ipfix, 
>>>> --sflow) and it will eventually work on each datapath.
>>
>>>
>>> You mean implementing an IPFIX and sFlow collector?
>>>
>> ?
>>>> If you want to keep this a separate psample utility, I would not have ovs 
>>>> in the name, as it's rather general and not OVS specific. Maybe just 
>>>> psample/psample_mon, as we also have nlmon.
>>>>
>>>
>>> Well, the way the cookie is decoded into observation_domain_id and 
>>> observation_point_id is ovs-specific.
>>>
>>> In fact, for the next iteration of the series I will remove the filtering 
>>> API since its getting removed from the kernel series as well and add some 
>>> kind of BPF code that does the filtering. Also I was  considering looking 
>>> into the OVSDB to ensure that we filter on groups configured in it or else 
>>> we could wrongly interpet a sampled packet that comes from some other 
>>> subsystem.
>>
>> I would prefer to have this as an ova-sample application, which can be 
>> extended with other sample methods as we see fit. So when we added userspace 
>> support we can add it here. If we find someone crazy enough to do a simple 
>> IPFIX and/or sFlow collector it can be added too.
>>
>> So my request would be to remove the (p) from ovs-psample, and have a switch 
>> to select --psample (the only supported (MANDATORY) option for now).
>>
> 
> Oh, ok. Now I undestand, thank you. We want to leave room for the userspace 
> implementation. Will do.

FYI, we do have sflow and netflow basic collectors in tests/test-sflow.c and
tests/test-netflow.c.

And I'm not convinced we should maintain an actual collector for any of these.
It's not OVS'es job as a project.  Like we're not shipping nlmon, we probably
shouldn't ship psample or any other collector.  But we can and should have basic
implementations for testing purposes in tests/test-psample.c for example.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to