mbox series

[net-next,0/7] openvswitch: add drop reasons

Message ID 20230722094238.2520044-1-amorenoz@redhat.com (mailing list archive)
Headers show
Series openvswitch: add drop reasons | expand

Message

Adrián Moreno July 22, 2023, 9:42 a.m. UTC
There is currently a gap in drop visibility in the openvswitch module.
This series tries to improve this by adding a new drop reason subsystem
for OVS.

Apart from adding a new drop reasson subsystem and some common drop
reasons, this series takes Eric's preliminary work [1] on adding an
explicit drop action and integrates it into the same subsystem.

This series also adds some selftests and so it requires [2] to be
applied first.

A limitation of this series is that it does not report upcall errors.
The reason is that there could be many sources of upcall drops and the
most common one, which is the netlink buffer overflow, cannot be
reported via kfree_skb() because the skb is freed in the netlink layer
(see [3]). Therefore, using a reason for the rare events and not the
common one would be even more misleading. I'd propose we add (in a
follow up patch) a tracepoint to better report upcall errors.

[1] https://lore.kernel.org/netdev/202306300609.tdRdZscy-lkp@intel.com/T/
[2] https://lore.kernel.org/all/9375ccbc-dd40-9998-dde5-c94e4e28f4f1@redhat.com/T/ 
[3] commit 1100248a5c5c ("openvswitch: Fix double reporting of drops in dropwatch")

Adrian Moreno (6):
  net: openvswitch: add datapath flow drop reason
  net: openvswitch: add meter drop reason
  net: openvswitch: add misc error drop reasons
  selftests: openvswitch: support key masks
  selftests: openvswitch: add drop reason testcase
  selftests: openvswitch: add explicit drop testcase

Eric Garver (1):
  net: openvswitch: add explicit drop action

 include/net/dropreason.h                      |   6 +
 include/uapi/linux/openvswitch.h              |   2 +
 net/openvswitch/actions.c                     |  40 ++++--
 net/openvswitch/conntrack.c                   |   3 +-
 net/openvswitch/datapath.c                    |  16 +++
 net/openvswitch/drop.h                        |  33 +++++
 net/openvswitch/flow_netlink.c                |   8 +-
 .../selftests/net/openvswitch/openvswitch.sh  |  92 +++++++++++++-
 .../selftests/net/openvswitch/ovs-dpctl.py    | 115 ++++++++++++------
 9 files changed, 267 insertions(+), 48 deletions(-)
 create mode 100644 net/openvswitch/drop.h

Comments

Aaron Conole July 24, 2023, 2:34 p.m. UTC | #1
Adrian Moreno <amorenoz@redhat.com> writes:

> There is currently a gap in drop visibility in the openvswitch module.
> This series tries to improve this by adding a new drop reason subsystem
> for OVS.
>
> Apart from adding a new drop reasson subsystem and some common drop
> reasons, this series takes Eric's preliminary work [1] on adding an
> explicit drop action and integrates it into the same subsystem.
>
> This series also adds some selftests and so it requires [2] to be
> applied first.
>
> A limitation of this series is that it does not report upcall errors.
> The reason is that there could be many sources of upcall drops and the
> most common one, which is the netlink buffer overflow, cannot be
> reported via kfree_skb() because the skb is freed in the netlink layer
> (see [3]). Therefore, using a reason for the rare events and not the
> common one would be even more misleading. I'd propose we add (in a
> follow up patch) a tracepoint to better report upcall errors.

I guess you meant to add RFC tag to this, since it depends on other
series that aren't accepted yet.

If it's okay, I will pull in your patch 5/7 when I re-post my flow
additions series, since it will need to be added there at some point
anyway.

> [1] https://lore.kernel.org/netdev/202306300609.tdRdZscy-lkp@intel.com/T/
> [2] https://lore.kernel.org/all/9375ccbc-dd40-9998-dde5-c94e4e28f4f1@redhat.com/T/ 
> [3] commit 1100248a5c5c ("openvswitch: Fix double reporting of drops in dropwatch")
>
> Adrian Moreno (6):
>   net: openvswitch: add datapath flow drop reason
>   net: openvswitch: add meter drop reason
>   net: openvswitch: add misc error drop reasons
>   selftests: openvswitch: support key masks
>   selftests: openvswitch: add drop reason testcase
>   selftests: openvswitch: add explicit drop testcase
>
> Eric Garver (1):
>   net: openvswitch: add explicit drop action
>
>  include/net/dropreason.h                      |   6 +
>  include/uapi/linux/openvswitch.h              |   2 +
>  net/openvswitch/actions.c                     |  40 ++++--
>  net/openvswitch/conntrack.c                   |   3 +-
>  net/openvswitch/datapath.c                    |  16 +++
>  net/openvswitch/drop.h                        |  33 +++++
>  net/openvswitch/flow_netlink.c                |   8 +-
>  .../selftests/net/openvswitch/openvswitch.sh  |  92 +++++++++++++-
>  .../selftests/net/openvswitch/ovs-dpctl.py    | 115 ++++++++++++------
>  9 files changed, 267 insertions(+), 48 deletions(-)
>  create mode 100644 net/openvswitch/drop.h
Adrián Moreno July 26, 2023, 8:34 a.m. UTC | #2
On 7/24/23 16:34, Aaron Conole wrote:
> Adrian Moreno <amorenoz@redhat.com> writes:
> 
>> There is currently a gap in drop visibility in the openvswitch module.
>> This series tries to improve this by adding a new drop reason subsystem
>> for OVS.
>>
>> Apart from adding a new drop reasson subsystem and some common drop
>> reasons, this series takes Eric's preliminary work [1] on adding an
>> explicit drop action and integrates it into the same subsystem.
>>
>> This series also adds some selftests and so it requires [2] to be
>> applied first.
>>
>> A limitation of this series is that it does not report upcall errors.
>> The reason is that there could be many sources of upcall drops and the
>> most common one, which is the netlink buffer overflow, cannot be
>> reported via kfree_skb() because the skb is freed in the netlink layer
>> (see [3]). Therefore, using a reason for the rare events and not the
>> common one would be even more misleading. I'd propose we add (in a
>> follow up patch) a tracepoint to better report upcall errors.
> 
> I guess you meant to add RFC tag to this, since it depends on other
> series that aren't accepted yet.
> 

Yep, sorry I should have added RFC tag.

> If it's okay, I will pull in your patch 5/7 when I re-post my flow
> additions series, since it will need to be added there at some point
> anyway.
> 

Sure, please go ahead.

>> [1] https://lore.kernel.org/netdev/202306300609.tdRdZscy-lkp@intel.com/T/
>> [2] https://lore.kernel.org/all/9375ccbc-dd40-9998-dde5-c94e4e28f4f1@redhat.com/T/
>> [3] commit 1100248a5c5c ("openvswitch: Fix double reporting of drops in dropwatch")
>>
>> Adrian Moreno (6):
>>    net: openvswitch: add datapath flow drop reason
>>    net: openvswitch: add meter drop reason
>>    net: openvswitch: add misc error drop reasons
>>    selftests: openvswitch: support key masks
>>    selftests: openvswitch: add drop reason testcase
>>    selftests: openvswitch: add explicit drop testcase
>>
>> Eric Garver (1):
>>    net: openvswitch: add explicit drop action
>>
>>   include/net/dropreason.h                      |   6 +
>>   include/uapi/linux/openvswitch.h              |   2 +
>>   net/openvswitch/actions.c                     |  40 ++++--
>>   net/openvswitch/conntrack.c                   |   3 +-
>>   net/openvswitch/datapath.c                    |  16 +++
>>   net/openvswitch/drop.h                        |  33 +++++
>>   net/openvswitch/flow_netlink.c                |   8 +-
>>   .../selftests/net/openvswitch/openvswitch.sh  |  92 +++++++++++++-
>>   .../selftests/net/openvswitch/ovs-dpctl.py    | 115 ++++++++++++------
>>   9 files changed, 267 insertions(+), 48 deletions(-)
>>   create mode 100644 net/openvswitch/drop.h
>