• Numan Siddique's avatar
    net: openvswitch: Add a new action check_pkt_len · 4d5ec89f
    Numan Siddique authored
    This patch adds a new action - 'check_pkt_len' which checks the
    packet length and executes a set of actions if the packet
    length is greater than the specified length or executes
    another set of actions if the packet length is lesser or equal to.
    
    This action takes below nlattrs
      * OVS_CHECK_PKT_LEN_ATTR_PKT_LEN - 'pkt_len' to check for
    
      * OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER - Nested actions
        to apply if the packet length is greater than the specified 'pkt_len'
    
      * OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL - Nested
        actions to apply if the packet length is lesser or equal to the
        specified 'pkt_len'.
    
    The main use case for adding this action is to solve the packet
    drops because of MTU mismatch in OVN virtual networking solution.
    When a VM (which belongs to a logical switch of OVN) sends a packet
    destined to go via the gateway router and if the nic which provides
    external connectivity, has a lesser MTU, OVS drops the packet
    if the packet length is greater than this MTU.
    
    With the help of this action, OVN will check the packet length
    and if it is greater than the MTU size, it will generate an
    ICMP packet (type 3, code 4) and includes the next hop mtu in it
    so that the sender can fragment the packets.
    
    Reported-at:
    https://mail.openvswitch.org/pipermail/ovs-discuss/2018-July/047039.htmlSuggested-by: default avatarBen Pfaff <blp@ovn.org>
    Signed-off-by: default avatarNuman Siddique <nusiddiq@redhat.com>
    CC: Gregory Rose <gvrose8192@gmail.com>
    CC: Pravin B Shelar <pshelar@ovn.org>
    Acked-by: default avatarPravin B Shelar <pshelar@ovn.org>
    Tested-by: default avatarGreg Rose <gvrose8192@gmail.com>
    Reviewed-by: default avatarGreg Rose <gvrose8192@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4d5ec89f
flow_netlink.c 91.4 KB