Re: [PATCH v7 net-next 00/16] ipv6: Enable GUEoIPv6 and more fixes for v6 tunneling

2016-05-20 Thread David Miller
From: Tom Herbert 
Date: Wed, 18 May 2016 09:06:08 -0700

> This patch set:
>   - Fixes GRE6 to process translate flags correctly from configuration
>   - Adds support for GSO and GRO for ip6ip6 and ip4ip6
>   - Add support for FOU and GUE in IPv6
>   - Support GRE, ip6ip6 and ip4ip6 over FOU/GUE
>   - Fixes ip6_input to deal with UDP encapsulations
>   - Some other minor fixes

Series applied, thanks Tom.


Re: [PATCH v7 net-next 00/16] ipv6: Enable GUEoIPv6 and more fixes for v6 tunneling

2016-05-18 Thread Tom Herbert
On Wed, May 18, 2016 at 10:32 AM, Alexander Duyck
 wrote:
> On Wed, May 18, 2016 at 9:06 AM, Tom Herbert  wrote:
>> This patch set:
>>   - Fixes GRE6 to process translate flags correctly from configuration
>>   - Adds support for GSO and GRO for ip6ip6 and ip4ip6
>>   - Add support for FOU and GUE in IPv6
>>   - Support GRE, ip6ip6 and ip4ip6 over FOU/GUE
>>   - Fixes ip6_input to deal with UDP encapsulations
>>   - Some other minor fixes
>>
>> v2:
>>   - Removed a check of GSO types in MPLS
>>   - Define GSO type SKB_GSO_IPXIP6 and SKB_GSO_IPXIP4 (based on input
>> from Alexander)
>>   - Don't define GSO types specifically for IP6IP6 and IP4IP6, above
>> fix makes that unnecessary
>>   - Don't bother clearing encapsulation flag in UDP tunnel segment
>> (another item suggested by Alexander).
>>
>> v3:
>>   - Address some minor comments from Alexander
>>
>> v4:
>>   - Rebase on changes to fix IP TX tunnels
>>   - Fix MTU issues in ip4ip6, ip6ip6
>>   - Add test data for above
>>
>> v5:
>>   - Address feedback from Shmulik Ladkani regarding extension header
>> code that does not return next header but in instead relies
>> on returning value via nhoff. Solution here is to fix EH
>> processing to return nexthdr value.
>>   - Refactored IPv4 encaps so that we won't need to create
>> a ip6_tunnel_core.c when adding encap support IPv6.
>>
>> v6:
>>   - Fix build issues with regard to new GSO constants
>>   - FIx MTU calculation issues ip6_tunnel.c pointed out byt ALex
>>   - Add encap_hlen into headroom for GREv6 to work with FOU/GUE
>>
>> v7:
>>   - Added skb_set_inner_ipproto to ip4ip6 and ip6ip6
>>   - Clarified max_headroom in ip6_tnl_xmit
>>   - Set features for IPv6 tunnels
>>   - Other cleanup suggested by Alexander
>>   - Above fixes throughput performance issues in ip4ip6 and ip6ip6,
>> updated test results to reflect that
>>
>> Tested: Various cases of IP tunnels with netperf TCP_STREAM and TCP_RR.
>>
>> - IPv4/GRE/GUE/IPv6 with RCO
>>   1 TCP_STREAM
>> 6616 Mbps
>>   200 TCP_RR
>> 1244043 tps
>> 141/243/446 90/95/99% latencies
>> 86.61% CPU utilization
>>
>> - IPv6/GRE/GUE/IPv6 with RCO
>>   1 TCP_STREAM
>> 6940 Mbps
>>   200 TCP_RR
>> 1270903 tps
>> 138/236/440 90/95/99% latencies
>> 87.51% CPU utilization
>>
>>  - IP6IP6
>>   1 TCP_STREAM
>> 5307 Mbps
>>   200 TCP_RR
>> 498981 tps
>> 388/498/631 90/95/99% latencies
>> 19.75% CPU utilization (1 CPU saturated)
>>
>>  - IP6IP6/GUE with RCO
>>   1 TCP_STREAM
>> 5575 Mbps
>>   200 TCP_RR
>> 1233818 tps
>> 143/244/451 90/95/99% latencies
>> 87.57 CPU utilization
>>
>>  - IP4IP6
>>   1 TCP_STREAM
>> 5235 Mbps
>>   200 TCP_RR
>> 763774 tps
>> 250/318/466 90/95/99% latencies
>> 35.25% CPU utilization (1 CPU saturated)
>>
>>  - IP4IP6/GUE with RCO
>>   1 TCP_STREAM
>> 5337 Mbps
>>   200 TCP_RR
>> 1196385 tps
>> 148/251/460 90/95/99% latencies
>> 87.56 CPU utilization
>>
>>  - GRE with keyid
>>   200 TCP_RR
>> 744173 tps
>> 258/332/461 90/95/99% latencies
>> 34.59% CPU utilization (1 CPU saturated)
>>
>>
>> Tom Herbert (16):
>>   gso: Remove arbitrary checks for unsupported GSO
>>   net: define gso types for IPx over IPv4 and IPv6
>>   ipv6: Fix nexthdr for reinjection
>>   ipv6: Change "final" protocol processing for encapsulation
>>   net: Cleanup encap items in ip_tunnels.h
>>   fou: Call setup_udp_tunnel_sock
>>   fou: Split out {fou,gue}_build_header
>>   fou: Support IPv6 in fou
>>   ip6_tun: Add infrastructure for doing encapsulation
>>   fou: Add encap ops for IPv6 tunnels
>>   ip6_gre: Add support for fou/gue encapsulation
>>   ip6_tunnel: Add support for fou/gue encapsulation
>>   ipv6: Set features for IPv6 tunnels
>>   ip6ip6: Support for GSO/GRO
>>   ip4ip6: Support for GSO/GRO
>>   ipv6: Don't reset inner headers in ip6_tnl_xmit
>>
>>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c  |   5 +-
>>  drivers/net/ethernet/broadcom/bnxt/bnxt.c |   5 +-
>>  drivers/net/ethernet/intel/i40e/i40e_main.c   |   3 +-
>>  drivers/net/ethernet/intel/i40e/i40e_txrx.c   |   3 +-
>>  drivers/net/ethernet/intel/i40evf/i40e_txrx.c |   3 +-
>>  drivers/net/ethernet/intel/i40evf/i40evf_main.c   |   3 +-
>>  drivers/net/ethernet/intel/igb/igb_main.c |   3 +-
>>  drivers/net/ethernet/intel/igbvf/netdev.c |   3 +-
>>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   3 +-
>>  drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c |   3 +-
>>  include/linux/netdev_features.h   |  12 +-
>>  include/linux/netdevice.h |   4 +-
>>  include/linux/skbuff.h|   4 +-
>>  include/net/fou.h  

Re: [PATCH v7 net-next 00/16] ipv6: Enable GUEoIPv6 and more fixes for v6 tunneling

2016-05-18 Thread Alexander Duyck
On Wed, May 18, 2016 at 9:06 AM, Tom Herbert  wrote:
> This patch set:
>   - Fixes GRE6 to process translate flags correctly from configuration
>   - Adds support for GSO and GRO for ip6ip6 and ip4ip6
>   - Add support for FOU and GUE in IPv6
>   - Support GRE, ip6ip6 and ip4ip6 over FOU/GUE
>   - Fixes ip6_input to deal with UDP encapsulations
>   - Some other minor fixes
>
> v2:
>   - Removed a check of GSO types in MPLS
>   - Define GSO type SKB_GSO_IPXIP6 and SKB_GSO_IPXIP4 (based on input
> from Alexander)
>   - Don't define GSO types specifically for IP6IP6 and IP4IP6, above
> fix makes that unnecessary
>   - Don't bother clearing encapsulation flag in UDP tunnel segment
> (another item suggested by Alexander).
>
> v3:
>   - Address some minor comments from Alexander
>
> v4:
>   - Rebase on changes to fix IP TX tunnels
>   - Fix MTU issues in ip4ip6, ip6ip6
>   - Add test data for above
>
> v5:
>   - Address feedback from Shmulik Ladkani regarding extension header
> code that does not return next header but in instead relies
> on returning value via nhoff. Solution here is to fix EH
> processing to return nexthdr value.
>   - Refactored IPv4 encaps so that we won't need to create
> a ip6_tunnel_core.c when adding encap support IPv6.
>
> v6:
>   - Fix build issues with regard to new GSO constants
>   - FIx MTU calculation issues ip6_tunnel.c pointed out byt ALex
>   - Add encap_hlen into headroom for GREv6 to work with FOU/GUE
>
> v7:
>   - Added skb_set_inner_ipproto to ip4ip6 and ip6ip6
>   - Clarified max_headroom in ip6_tnl_xmit
>   - Set features for IPv6 tunnels
>   - Other cleanup suggested by Alexander
>   - Above fixes throughput performance issues in ip4ip6 and ip6ip6,
> updated test results to reflect that
>
> Tested: Various cases of IP tunnels with netperf TCP_STREAM and TCP_RR.
>
> - IPv4/GRE/GUE/IPv6 with RCO
>   1 TCP_STREAM
> 6616 Mbps
>   200 TCP_RR
> 1244043 tps
> 141/243/446 90/95/99% latencies
> 86.61% CPU utilization
>
> - IPv6/GRE/GUE/IPv6 with RCO
>   1 TCP_STREAM
> 6940 Mbps
>   200 TCP_RR
> 1270903 tps
> 138/236/440 90/95/99% latencies
> 87.51% CPU utilization
>
>  - IP6IP6
>   1 TCP_STREAM
> 5307 Mbps
>   200 TCP_RR
> 498981 tps
> 388/498/631 90/95/99% latencies
> 19.75% CPU utilization (1 CPU saturated)
>
>  - IP6IP6/GUE with RCO
>   1 TCP_STREAM
> 5575 Mbps
>   200 TCP_RR
> 1233818 tps
> 143/244/451 90/95/99% latencies
> 87.57 CPU utilization
>
>  - IP4IP6
>   1 TCP_STREAM
> 5235 Mbps
>   200 TCP_RR
> 763774 tps
> 250/318/466 90/95/99% latencies
> 35.25% CPU utilization (1 CPU saturated)
>
>  - IP4IP6/GUE with RCO
>   1 TCP_STREAM
> 5337 Mbps
>   200 TCP_RR
> 1196385 tps
> 148/251/460 90/95/99% latencies
> 87.56 CPU utilization
>
>  - GRE with keyid
>   200 TCP_RR
> 744173 tps
> 258/332/461 90/95/99% latencies
> 34.59% CPU utilization (1 CPU saturated)
>
>
> Tom Herbert (16):
>   gso: Remove arbitrary checks for unsupported GSO
>   net: define gso types for IPx over IPv4 and IPv6
>   ipv6: Fix nexthdr for reinjection
>   ipv6: Change "final" protocol processing for encapsulation
>   net: Cleanup encap items in ip_tunnels.h
>   fou: Call setup_udp_tunnel_sock
>   fou: Split out {fou,gue}_build_header
>   fou: Support IPv6 in fou
>   ip6_tun: Add infrastructure for doing encapsulation
>   fou: Add encap ops for IPv6 tunnels
>   ip6_gre: Add support for fou/gue encapsulation
>   ip6_tunnel: Add support for fou/gue encapsulation
>   ipv6: Set features for IPv6 tunnels
>   ip6ip6: Support for GSO/GRO
>   ip4ip6: Support for GSO/GRO
>   ipv6: Don't reset inner headers in ip6_tnl_xmit
>
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c  |   5 +-
>  drivers/net/ethernet/broadcom/bnxt/bnxt.c |   5 +-
>  drivers/net/ethernet/intel/i40e/i40e_main.c   |   3 +-
>  drivers/net/ethernet/intel/i40e/i40e_txrx.c   |   3 +-
>  drivers/net/ethernet/intel/i40evf/i40e_txrx.c |   3 +-
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c   |   3 +-
>  drivers/net/ethernet/intel/igb/igb_main.c |   3 +-
>  drivers/net/ethernet/intel/igbvf/netdev.c |   3 +-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   3 +-
>  drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c |   3 +-
>  include/linux/netdev_features.h   |  12 +-
>  include/linux/netdevice.h |   4 +-
>  include/linux/skbuff.h|   4 +-
>  include/net/fou.h |  10 +-
>  include/net/inet_common.h |   5 +
>  include/net/ip6_tunnel.h  |  58 +++
>  include/net/ip_tunnels.h  |  76 +++--
>