Thanks for the quick review; I applied this to master.

On Tue, Mar 24, 2015 at 2:56 PM, Pritesh Kothari (pritkoth)
<pritk...@cisco.com> wrote:
> LGTM
>
> Acked-by: Pritesh Kothari <pritesh.koth...@cisco.com>
>
> Regards,
> Pritesh
>
> On Mar 24, 2015, at 12:38 PM, Jesse Gross <je...@nicira.com> wrote:
>
> The kernel module can already support outer UDP checksums for
> Geneve and VXLAN using the standard checksum flag in tunnel
> metadata. This makes userspace aware of the capability so that
> users can enable it on tunnel ports.
>
> There is a complication in that there is no way for userspace to
> probe or detect if the kernel does not support this capability
> in order to warn the user. In this case, connectivity will appear
> to function normally but packets will not be checksum protected.
> This is mainly an issue for VXLAN which has existed in the kernel
> for a some time without checksum support - while there are also
> a few kernel versions that support Geneve only without checksums,
> they are much less common.
>
> There isn't a particularly good solution to the compatibility
> issue without introducing a larger capabilities structure. However,
> UDP checksums are likely to be used only rarely at this point in
> time and the VXLAN spec (where the main problem lies) recommends
> against them. Therefore, this is considered to be an advanced user
> feature and we settle for just documenting the issue.
>
> Signed-off-by: Jesse Gross <je...@nicira.com>
> ---
> FAQ.md               |  9 +++++++++
> NEWS                 |  1 +
> lib/netdev-vport.c   |  3 ++-
> vswitchd/vswitch.xml | 26 +++++++++++++++-----------
> 4 files changed, 27 insertions(+), 12 deletions(-)
>
> diff --git a/FAQ.md b/FAQ.md
> index b112dfb..21d4e7a 100644
> --- a/FAQ.md
> +++ b/FAQ.md
> @@ -207,6 +207,7 @@ A: Support for tunnels was added to the upstream Linux
> kernel module
> |:--------:|:-------------:
> | GRE      |    3.11
> | VXLAN    |    3.12
> +| Geneve   |    3.18
> | LISP     | <not upstream>
>
>    If you are using a version of the kernel that is older than the one
> @@ -216,6 +217,14 @@ A: Support for tunnels was added to the upstream Linux
> kernel module
>    persist after doing this, check to make sure that the module that is
>    loaded is the one you expect.
>
> +### Q: Why are UDP tunnel checksums not computed for VXLAN or Geneve?
> +
> +A: Generating outer UDP checksums requires kernel support that was not
> +   part of the initial implementation of these protocols. If using the
> +   upstream Linux Open vSwitch module, you must use kernel 4.0 or
> +   newer. The out-of-tree modules from Open vSwitch release 2.4 and later
> +   support UDP checksums.
> +
> ### Q: What features are not available when using the userspace datapath?
>
> A: Tunnel virtual ports are not supported, as described in the
> diff --git a/NEWS b/NEWS
> index b8ddc19..9f9dc4c 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -76,6 +76,7 @@ Post-v2.3.0
>    - The default OpenFlow and OVSDB ports are now the IANA-assigned
>      numbers.  OpenFlow is 6653 and OVSDB is 6640.
>    - Support for DPDK vHost.
> +   - Support for outer UDP checksums in Geneve and VXLAN.
>
>
> v2.3.0 - 14 Aug 2014
> diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c
> index 8e1b542..954ab9b 100644
> --- a/lib/netdev-vport.c
> +++ b/lib/netdev-vport.c
> @@ -426,7 +426,8 @@ set_tunnel_config(struct netdev *dev_, const struct smap
> *args)
>     struct netdev_tunnel_config tnl_cfg;
>     struct smap_node *node;
>
> -    has_csum = strstr(type, "gre");
> +    has_csum = strstr(type, "gre") || strstr(type, "geneve") ||
> +               strstr(type, "vxlan");
>     ipsec_mech_set = false;
>     memset(&tnl_cfg, 0, sizeof tnl_cfg);
>
> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
> index e04aefc..81e8b3f 100644
> --- a/vswitchd/vswitch.xml
> +++ b/vswitchd/vswitch.xml
> @@ -2057,24 +2057,28 @@
>
>  </group>
>
> -      <group title="Tunnel Options: gre and ipsec_gre only">
> +      <group title="Tunnel Options: gre, ipsec_gre, geneve, and vxlan">
>         <p>
> -          Only <code>gre</code> and <code>ipsec_gre</code> interfaces
> support
> -          these options.
> +          <code>gre</code>, <code>ipsec_gre</code>, <code>geneve</code>,
> and
> +          <code>vxlan</code> interfaces support these options.
>         </p>
>
>         <column name="options" key="csum" type='{"type": "boolean"}'>
>           <p>
> -            Optional.  Compute GRE checksums on outgoing packets.  Default
> is
> -            disabled, set to <code>true</code> to enable.  Checksums
> present on
> -            incoming packets will be validated regardless of this setting.
> +            Optional.  Compute encapsulation header (either GRE or UDP)
> +            checksums on outgoing packets.  Default is disabled, set to
> +            <code>true</code> to enable.  Checksums present on incoming
> +            packets will be validated regardless of this setting.
>  </p>
>
> -  <p>
> -    GRE checksums impose a significant performance penalty because they
> -    cover the entire packet.  The encapsulated L3, L4, and L7 packet
> -    contents typically have their own checksums, so this additional
> -    checksum only adds value for the GRE and encapsulated L2 headers.
> +          <p>
> +            When using the upstream Linux kernel module, computation of
> +            checksums for <code>geneve</code> and <code>vxlan</code>
> requires
> +            Linux kernel version 4.0 or higher. <code>gre</code> supports
> +            checksums for all versions of Open vSwitch that support GRE.
> +            The out of tree kernel module distributed as part of OVS
> +            can compute all tunnel checksums on any kernel version that it
> +            is compatible with.
>           </p>
>
>           <p>
> --
> 1.9.1
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to