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. The datapath patch is submitted here to get feedback before submitting to the kernel net-dev ML. 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 Datapath patch ------------- Numan Siddique (1): datapath: Add a new action check_pkt_len include/uapi/linux/openvswitch.h | 25 ++++- net/openvswitch/actions.c | 55 +++++++++- net/openvswitch/flow_netlink.c | 175 +++++++++++++++++++++++++++++++ 3 files changed, 253 insertions(+), 2 deletions(-) OVS patches ----------- Numan Siddique (4): Add a new OVS action check_pkt_larger ovn: Add a new OVN field icmp4.frag_mtu ovn: Support OVS action 'check_pkt_larger' in OVN ovn: Generate ICMPv4 packet in router pipeline for larger packets .../linux/compat/include/linux/openvswitch.h | 30 ++- include/openvswitch/ofp-actions.h | 18 ++ include/ovn/actions.h | 33 ++- include/ovn/automake.mk | 3 +- include/ovn/expr.h | 5 + {ovn/lib => include/ovn}/logical-fields.h | 41 ++++ lib/dpif-netdev.c | 1 + lib/dpif.c | 1 + lib/odp-execute.c | 4 + lib/odp-util.c | 36 ++++ lib/ofp-actions.c | 98 ++++++++- lib/ofp-parse.c | 10 + ofproto/ofproto-dpif-ipfix.c | 1 + ofproto/ofproto-dpif-sflow.c | 1 + ofproto/ofproto-dpif-xlate.c | 108 ++++++++++ ofproto/ofproto-dpif.c | 47 +++++ ofproto/ofproto-dpif.h | 5 +- ovn/controller/lflow.c | 1 + ovn/controller/lflow.h | 2 +- ovn/controller/pinctrl.c | 38 +++- ovn/lib/actions.c | 188 ++++++++++++++--- 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 | 91 ++++++++- ovn/ovn-sb.xml | 32 +++ ovn/utilities/ovn-trace.c | 9 +- tests/ovn.at | 193 +++++++++++++++++- tests/test-ovn.c | 2 +- 30 files changed, 1072 insertions(+), 63 deletions(-) rename {ovn/lib => include/ovn}/logical-fields.h (71%) -- 2.20.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev