[ovs-dev] [PATCH] gre: strip gre-tso offload flags

wenxu wenxu at ucloud.cn
Mon Jan 8 02:47:19 UTC 2018


At 2018-01-06 02:23:52, "Gregory Rose" <gvrose8192 at gmail.com> wrote:
>On 12/28/2017 8:45 PM, wenxu at ucloud.cn wrote:
>> From: wenxu <wenxu at ucloud.cn>
>>
>> if the gro enable, ipgre receive a gre-tso package. After pop
>> the gre-tunnel the encapsulation and GSO_ENCAP flags should be
>> striped. or the packet encap again and will be dropped in
>> ovs_iptunnel_handle_offloads
>>
>> Signed-off-by: wenxu <wenxu at ucloud.cn>
>> ---
>>   datapath/linux/compat/ip_gre.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/datapath/linux/compat/ip_gre.c b/datapath/linux/compat/ip_gre.c
>> index 03c5435..94fdaa9 100644
>> --- a/datapath/linux/compat/ip_gre.c
>> +++ b/datapath/linux/compat/ip_gre.c
>> @@ -140,6 +140,8 @@ static int ipgre_rcv(struct sk_buff *skb, const struct tnl_ptk_info *tpi)
>>   		__be64 tun_id;
>>   		int err;
>>   
>> +		if (iptunnel_pull_offloads(skb))
>> +			return PACKET_REJECT;
>>   
>>   		skb_pop_mac_header(skb);
>>   		flags = tpi->flags & (TUNNEL_CSUM | TUNNEL_KEY);
>
>Wenxu,
>
>I see to patches in the dev list that appear to be identical but this 
>one has the later timestamp so I'll
>respond to this one.
>
>The patch looks simple enough itself but can you explain how to trigger 
>the bug so that I can test

>this fix?






server1:  ipaddr on eth2 172.168.0.1/24
ovs-vsctl add br br0
ovs-vsctl add-port br0 gre1 -- set in gre1 type=gre options:local_ip=172.168.0.1 options:remote_ip=172.168.0.7 options:key=1000
ifconfig br0 10.0.0.1/24 up
permanent the ip neigh 10.0.0.2


server2:ipaddr on eth2 172.168.0.2/24
ovs-vsctl add br br0
ovs-vsctl add-port br0 gre1 -- set in gre1 type=gre options:local_ip=172.168.0.2 options:remote_ip=172.168.0.7 options:key=1000
ifconfig br0 10.0.0.2/24 up
permanent the ip neigh 10.0.0.1


server: gateway
ip addr on eth2 172.168.0.7/24
ethtool eth2 gro on


ovs-vsctl add br br0
ovs-vsctl add-port br0 gre1 -- set in gre1 type=gre options:local_ip=flow options:remote_ip=flow options:key=1000


flows:
in_port=gre1,ip,nw_dst=10.0.0.1,actions=set_field:172.168.0.7->tun_src,set_field:172.168.0.1->tun_dst,output:IN_PORT
in_port=gre1,ip,nw_dst=10.0.0.2,actions=set_field:172.168.0.7->tun_src,set_field:172.168.0.2->tun_dst,output:IN_PORT


iperf  bettwen 10.0.0.1 and 10.0.0.2, the performance is so bad, most of the packet drop on  gre_sys of gateway
Disable gateway gro of eth2 'ethtool -K eth2 gro off ' , there is no drop


When packet encap again and will be dropped in ovs_iptunnel_handle_offloads
 if (likely(!skb_is_encapsulated(skb))) {
        skb_reset_inner_headers(skb);
        skb->encapsulation = 1;
    } else if (skb_is_gso(skb)) {
        err = -ENOSYS;
//drop in here 
        goto error;
    }   


>
>Thanks,
>
>- Greg


More information about the dev mailing list