It took a while, but I finally got this reviewed. Looks good to me,
Acked-by: Mark Michelson <mmich...@redhat.com> On 3/29/19 1:53 PM, nusid...@redhat.com wrote:
From: Numan Siddique <nusid...@redhat.com> This is an RFC series to address the MTU issues for OVN reported here [1]. To address this issue, a new OVS action - check_pkt_larger is added. A new datapath action is also added - check_pkt_len. v4 -> v5 ------ * Addressed the review comments for patch 2 - " ovn: Add a new OVN field icmp4.frag_mtu" * Added a new patch - patch 3 to add a new action - "icmp4_error" which is same as icmp4 but it also includes the original IP datagram when it injects the ICMPv4 packet. v3 -> v4 -------- * In v4, I have separated the datapath patch and it is submitted separately here addressing the review comments - https://patchwork.ozlabs.org/patch/1046370/ * This patch series has now 4 patches. * Addressed the review comments. * Added tests and documentation * I have also pushed these patches to my github repo - https://github.com/numansiddique/ovs/tree/ovn_mtu_fix/rfc_v4_p5_with_ovs_dp This also has patch to support 'check_pkt_len' in the ovs in-kernel datapath code If some one is interested to try this out without compiling net-next tree can use this. v2 --> v3 --------- In v2, the check_pkt_len implementation in odp-execute.c (in p2) was missing, which is added in v3. ---------------------------------------- v1 of RFC included patches for datapath and OVS. This v2 series also includes the corresponding OVN changes. In v1, check_pkt_len datapath action was implemented as - check_pkt_len(pkt_len, condition, userspace action if condition matches) Eg. check_pkt_len( > 1500 ? userspace(pid=<PID>,slow_path(check_pkt_len)) If the packet length is greater than 1500 bytes, send it to userspace. In v2 a different approach is taken - check_pkt_len(> pkt_len ? (set of action to apply) : (another set of actions to apply)) Eg. check_pkt_len(> 1500 ? (2): (3)) If the packet length is greater than 1500, output to port 2, else output to port 3. ovs-vswitchd is modified accordingly. The ovs action - check_pkt_larger is unchanged. It looks like - check_pkt_larger(pkt_len)->REGISTER_BIT. Eg. check_pkt_larger(1500)->NXM_NX_REG0[0] If the packet is larger than 1500 bytes, REG0[0] will be set to 1. More details in the patches. If the approach seems reasonable, I will submit the datapath patch first to net-dev ML first. [1] - https://mail.openvswitch.org/pipermail/ovs-discuss/2018-July/047039.html Numan Siddique (5): Add a new OVS action check_pkt_larger ovn: Add a new OVN field icmp4.frag_mtu ovn: Add a new OVN action 'icmp4_error' ovn: Support OVS action 'check_pkt_larger' in OVN ovn: Generate ICMPv4 packet in router pipeline for larger packets NEWS | 2 + .../linux/compat/include/linux/openvswitch.h | 22 ++ include/openvswitch/ofp-actions.h | 19 ++ include/ovn/actions.h | 42 +++- include/ovn/automake.mk | 3 +- include/ovn/expr.h | 5 + {ovn/lib => include/ovn}/logical-fields.h | 39 ++++ lib/dpif-netdev.c | 1 + lib/dpif.c | 1 + lib/odp-execute.c | 72 +++++++ lib/odp-util.c | 86 ++++++++ lib/ofp-actions.c | 121 ++++++++++- lib/ofp-parse.c | 10 + lib/ovs-actions.xml | 31 +++ ofproto/ofproto-dpif-ipfix.c | 1 + ofproto/ofproto-dpif-sflow.c | 1 + ofproto/ofproto-dpif-xlate.c | 131 ++++++++++++ ofproto/ofproto-dpif.c | 43 ++++ ofproto/ofproto-dpif.h | 5 +- ovn/controller/lflow.c | 1 + ovn/controller/lflow.h | 2 +- ovn/controller/pinctrl.c | 109 +++++++++- ovn/lib/actions.c | 121 ++++++++++- ovn/lib/automake.mk | 1 - ovn/lib/expr.c | 17 +- ovn/lib/logical-fields.c | 36 +++- ovn/northd/ovn-northd.8.xml | 83 +++++++- ovn/northd/ovn-northd.c | 94 +++++++- ovn/ovn-sb.xml | 41 +++- ovn/utilities/ovn-trace.c | 34 ++- tests/odp.at | 5 + tests/ofp-actions.at | 6 + tests/ofproto-dpif.at | 162 ++++++++++++++ tests/ovn.at | 200 ++++++++++++++++++ tests/test-ovn.c | 2 +- 35 files changed, 1520 insertions(+), 29 deletions(-) rename {ovn/lib => include/ovn}/logical-fields.h (73%)
_______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev