DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jeremy Spewock <jspewock@iol.unh.edu>
To: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
Cc: Honnappa.Nagarahalli@arm.com, thomas@monjalon.net,
	 wathsala.vithanage@arm.com, probb@iol.unh.edu,
	paul.szczepanek@arm.com,  yoan.picchi@foss.arm.com,
	lylavoie@iol.unh.edu, ferruh.yigit@amd.com,
	 andrew.rybchenko@oktetlabs.ru, dev@dpdk.org
Subject: Re: [PATCH v6 3/7] dts: add optional packet filtering to scapy sniffer
Date: Mon, 8 Jan 2024 11:39:24 -0500	[thread overview]
Message-ID: <CAAA20UQkfBMJOTia-1VEiEOfOnUan03mq3B5PP00JBUcOx5Ncg@mail.gmail.com> (raw)
In-Reply-To: <CAOb5WZbGnQjNrtfgwdy0x-zeZtH2Bd4ue9xwU1dt0+qk4AGafw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4398 bytes --]

On Mon, Jan 8, 2024 at 7:01 AM Juraj Linkeš <juraj.linkes@pantheon.tech>
wrote:

> On Wed, Jan 3, 2024 at 11:33 PM <jspewock@iol.unh.edu> wrote:
> >
> > From: Jeremy Spewock <jspewock@iol.unh.edu>
> >
> > Added the options to filter out LLDP and ARP packets when
> > sniffing for packets with scapy. This was done using BPF filters to
> > ensure that the noise these packets provide does not interfere with test
> > cases.
> >
> > Signed-off-by: Jeremy Spewock <jspewock@iol.unh.edu>
> > ---
> >  dts/framework/test_suite.py                   | 15 +++++++++--
> >  dts/framework/testbed_model/tg_node.py        | 14 ++++++++--
> >  .../traffic_generator/__init__.py             |  7 ++++-
> >  .../capturing_traffic_generator.py            | 22 ++++++++++++++-
> >  .../testbed_model/traffic_generator/scapy.py  | 27 +++++++++++++++++++
> >  5 files changed, 79 insertions(+), 6 deletions(-)
> >
>
> <snip>
>
> > diff --git
> a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
> b/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
> > index 0246590333..c1c9facedd 100644
> > ---
> a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
> > +++
> b/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
> <snip>
> > @@ -26,6 +27,19 @@ def _get_default_capture_name() -> str:
> >      return str(uuid.uuid4())
> >
> >
> > +@dataclass(slots=True)
>
> This should also be frozen. If we need a different filter, it's better
> to create a new object I think.
>
> > +class PacketFilteringConfig:
> > +    """The supported filtering options for
> :class:`CapturingTrafficGenerator`.
> > +
> > +    Attributes:
> > +        no_lldp: If :data:`True`, LLDP packets will be filtered out
> when capturing.
> > +        no_arp: If :data:`True`, ARP packets will be filtered out when
> capturing.
> > +    """
> > +
> > +    no_lldp: bool = True
> > +    no_arp: bool = True
> > +
> > +
> >  class CapturingTrafficGenerator(TrafficGenerator):
> >      """Capture packets after sending traffic.
> >
> <snip>
> > diff --git a/dts/framework/testbed_model/traffic_generator/scapy.py
> b/dts/framework/testbed_model/traffic_generator/scapy.py
> > index 5b60f66237..505de0be94 100644
> > --- a/dts/framework/testbed_model/traffic_generator/scapy.py
> > +++ b/dts/framework/testbed_model/traffic_generator/scapy.py
> <snip>
> > @@ -260,11 +263,34 @@ def _send_packets(self, packets: list[Packet],
> port: Port) -> None:
> >          packets = [packet.build() for packet in packets]
> >          self.rpc_server_proxy.scapy_send_packets(packets,
> port.logical_name)
> >
> > +    def _create_packet_filter(self, filter_config:
> PacketFilteringConfig) -> str:
> > +        """Combines filter settings from `filter_config` into a BPF
> that scapy can use.
> > +
> > +        Scapy allows for the use of Berkeley Packet Filters (BPFs) to
> filter what packets are
> > +        collected based on various attributes of the packet.
> > +
> > +        Args:
> > +            filter_config: Config class that specifies which filters
> should be applied.
> > +
> > +        Returns:
> > +            A string representing the combination of BPF filters to be
> passed to scapy. For
> > +            example:
> > +
> > +            "ether[12:2] != 0x88cc && ether[12:2] != 0x0806"
> > +        """
> > +        bpf_filter: list[str] = []
>
> The type hint here is not needed, so let's make this consistent with
> the rest of the code - we don't specify local type hints if they're
> not necessary.
>

Good catch, this might have been left over from when I was experimenting
with formatting the filters, I'll remove it.


>
> > +        if filter_config.no_arp:
> > +            bpf_filter.append("ether[12:2] != 0x0806")
> > +        if filter_config.no_lldp:
> > +            bpf_filter.append("ether[12:2] != 0x88cc")
> > +        return " && ".join(bpf_filter)
> > +
> >      def _send_packets_and_capture(
> >          self,
> >          packets: list[Packet],
> >          send_port: Port,
> >          receive_port: Port,
> > +        filter_config: PacketFilteringConfig,
> >          duration: float,
> >          capture_name: str = _get_default_capture_name(),
> >      ) -> list[Packet]:
>

[-- Attachment #2: Type: text/html, Size: 5922 bytes --]

  reply	other threads:[~2024-01-08 16:39 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-18 18:12 [PATCH v4 0/7] dts: Port scatter suite over jspewock
2023-12-18 18:12 ` [PATCH v4 1/7] dts: add required methods to testpmd_shell jspewock
2023-12-19 16:45   ` Juraj Linkeš
2023-12-21 19:37     ` Jeremy Spewock
2024-01-03 11:10       ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 2/7] dts: allow passing parameters into interactive apps jspewock
2023-12-19 16:50   ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2023-12-19 16:54   ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 4/7] dts: add pci addresses to EAL parameters jspewock
2023-12-19 16:55   ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 5/7] dts: allow configuring MTU of ports jspewock
2023-12-19 16:58   ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 6/7] dts: add scatter to the yaml schema jspewock
2023-12-19 16:59   ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 7/7] dts: add scatter test suite jspewock
2023-12-19 17:29   ` Juraj Linkeš
2023-12-21 21:47     ` Jeremy Spewock
2024-01-03 11:14       ` Juraj Linkeš
2024-01-03 22:12 ` [PATCH v5 0/7] dts: Port scatter suite over jspewock
2024-01-03 22:12   ` [PATCH v5 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-01-03 22:12   ` [PATCH v5 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-01-03 22:12   ` [PATCH v5 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-01-03 22:12   ` [PATCH v5 4/7] dts: add pci addresses to EAL parameters jspewock
2024-01-03 22:12   ` [PATCH v5 5/7] dts: allow configuring MTU of ports jspewock
2024-01-03 22:12   ` [PATCH v5 6/7] dts: add scatter to the yaml schema jspewock
2024-01-03 22:12   ` [PATCH v5 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-01-03 22:31   ` [PATCH v6 0/7] dts: Port scatter suite over jspewock
2024-01-03 22:32     ` [PATCH v6 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-01-08 11:34       ` Juraj Linkeš
2024-01-08 16:36         ` Jeremy Spewock
2024-01-09 11:54           ` Juraj Linkeš
2024-01-09 14:31             ` Jeremy Spewock
2024-01-03 22:32     ` [PATCH v6 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-01-08 11:52       ` Juraj Linkeš
2024-01-08 16:37         ` Jeremy Spewock
2024-01-03 22:32     ` [PATCH v6 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-01-08 12:01       ` Juraj Linkeš
2024-01-08 16:39         ` Jeremy Spewock [this message]
2024-01-08 16:40           ` Jeremy Spewock
2024-01-03 22:32     ` [PATCH v6 4/7] dts: add pci addresses to EAL parameters jspewock
2024-01-08 14:59       ` Juraj Linkeš
2024-01-03 22:32     ` [PATCH v6 5/7] dts: allow configuring MTU of ports jspewock
2024-01-08 15:00       ` Juraj Linkeš
2024-01-03 22:32     ` [PATCH v6 6/7] dts: add scatter to the yaml schema jspewock
2024-01-08 15:01       ` Juraj Linkeš
2024-01-03 22:32     ` [PATCH v6 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-01-08 15:47       ` Juraj Linkeš
2024-01-08 16:53         ` Jeremy Spewock
2024-01-09 15:36     ` [PATCH v7 0/7] dts: Port scatter suite over jspewock
2024-01-09 15:36       ` [PATCH v7 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-01-10 13:18         ` Juraj Linkeš
2024-01-10 14:09           ` Jeremy Spewock
2024-01-09 15:36       ` [PATCH v7 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-01-09 15:36       ` [PATCH v7 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-01-09 15:36       ` [PATCH v7 4/7] dts: add pci addresses to EAL parameters jspewock
2024-01-09 15:36       ` [PATCH v7 5/7] dts: allow configuring MTU of ports jspewock
2024-01-09 15:36       ` [PATCH v7 6/7] dts: add scatter to the yaml schema jspewock
2024-01-09 15:36       ` [PATCH v7 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-01-10 13:16         ` Juraj Linkeš
2024-01-10 14:09           ` Jeremy Spewock
2024-01-10 13:22       ` [PATCH v7 0/7] dts: Port scatter suite over Juraj Linkeš
2024-01-10 14:42       ` [PATCH v8 " jspewock
2024-01-10 14:42         ` [PATCH v8 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-01-10 14:42         ` [PATCH v8 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-01-10 14:42         ` [PATCH v8 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-01-10 14:42         ` [PATCH v8 4/7] dts: add pci addresses to EAL parameters jspewock
2024-01-10 14:42         ` [PATCH v8 5/7] dts: allow configuring MTU of ports jspewock
2024-01-10 14:42         ` [PATCH v8 6/7] dts: add scatter to the yaml schema jspewock
2024-01-10 14:42         ` [PATCH v8 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-01-11 10:07         ` [PATCH v8 0/7] dts: Port scatter suite over Juraj Linkeš
2024-02-21  3:34         ` Patrick Robb
2024-03-07 15:00         ` Thomas Monjalon
2024-03-11 14:15           ` Jeremy Spewock
2024-03-11 15:43         ` [PATCH v9 " jspewock
2024-03-11 15:43           ` [PATCH v9 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-03-11 15:44           ` [PATCH v9 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-03-11 15:44           ` [PATCH v9 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-03-11 15:44           ` [PATCH v9 4/7] dts: add pci addresses to EAL parameters jspewock
2024-03-11 15:44           ` [PATCH v9 5/7] dts: allow configuring MTU of ports jspewock
2024-03-11 15:44           ` [PATCH v9 6/7] dts: add scatter to the yaml schema jspewock
2024-03-11 15:44           ` [PATCH v9 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-03-15 17:41           ` [PATCH v9 0/7] dts: Port scatter suite over Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAAA20UQkfBMJOTia-1VEiEOfOnUan03mq3B5PP00JBUcOx5Ncg@mail.gmail.com \
    --to=jspewock@iol.unh.edu \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@amd.com \
    --cc=juraj.linkes@pantheon.tech \
    --cc=lylavoie@iol.unh.edu \
    --cc=paul.szczepanek@arm.com \
    --cc=probb@iol.unh.edu \
    --cc=thomas@monjalon.net \
    --cc=wathsala.vithanage@arm.com \
    --cc=yoan.picchi@foss.arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).