When you "enable" tx checksum on the vm you are actually enabling "tx checksum 
offloading". That is the vm delegates this to the switch. OVS doesn't so your 
syn is dropped by the receiver. 

On 14/12/2011, at 3:52 PM, Jesse Gross <[email protected]> wrote:

> 2011/12/7 likunyun <[email protected]>:
>> 
>> 
>>> From: [email protected]
>>> Date: Tue, 6 Dec 2011 09:52:46 -0800
>>> Subject: Re: [ovs-discuss] discuss Digest, Vol 30, Issue 5
>>> To: [email protected]
>>> CC: [email protected]
>> 
>>> 
>>> 2011/12/6 likunyun <[email protected]>:
>>>>> 1. Some questions about checksum in OVS (likunyun)
>>>>> 
>>>>> 
>>>>> ----------------------------------------------------------------------
>>>>> 
>>>>> Message: 1
>>>>> Date: Sat, 3 Dec 2011 12:28:32 +0000
>>>>> From: likunyun <[email protected]>
>>>>> Subject: [ovs-discuss] Some questions about checksum in OVS
>>>>> To: <[email protected]>
>>>>> Message-ID: <[email protected]>
>>>>> Content-Type: text/plain; charset="gb2312"
>>>>> 
>>>>> 
>>>>> Hello,
>>>>> 
>>>>> Recently I did the rate test about open vswitch based on xen. When I
>>>>> did
>>>>> the test about VM-to-Native,there are some problem.
>>>>> VM could ping the Native.
>>>>> When VM sends UDP packet to Native(A computer without virtualization),
>>>>> VM
>>>>> sends millions packet but Native only get 200 packets.
>>>>> When VM sends TCP packet to Native, netperf can't establish the
>>>>> connection
>>>>> .
>>>>> 
>>>>> I enabled netdevice's tx csu m in VM, and also enabled the physical
>>>>> netdevice's tx csum in dom0.
>>>>> When I disable the netdevice's tx csum in VM. It works,Native can get
>>>>> packets normally.
>>>>> 
>>>>> When VM sends UDP packets(64byte), I fetched the skb before it was been
>>>>> sent into net device driver.
>>>>> I found :
>>>>> skb->ip_summed =3
>>>>> skb->csum_offset = 0
>>>>> skb->csum_start = 6
>>>>> Normally skb->csum_start should be 0x34 and skb->csum_offset shou be
>>>>> 0x6
>>>>> 
>>>>> I found the fuction set_skb_csum_pointers() in datapath/checksum.c line
>>>>> 253:
>>>>> void set_skb_csum_pointers(struct sk_buff *skb, u16 csum_start, u16
>>>>> csum_offset)
>>>>> {
>>>>> OVS_CB(skb)->csum_start = csum_start;
>>>>> skb->csum = csum_offset;
>>>>> }
>>>>> When I changed the function like below, It works,Native can get packets
>>>>> normally.:
>>>>> void set_skb_csum_pointers(struct sk_buff *skb, u16 csum_start, u16
>>>>> csum_offset)
>>>>> {
>>>>> OVS_CB(skb)->csum _start = csum_start;
>>>>> skb->csum_start = csum_start;
>>>>> skb->csum_offset = csum_offset;
>>>>> }
>>>>> 
>>>>> Are there somebody meet this problem? Is the change reasonable?
>>>>> And I am newly about ovs, How does OVS_CB(skb)->csum_start workes in
>>>>> OVS ?
>>>>> 
>>>>> Test Information:
>>>>> openvswitch: 1.2.2
>>>>> VM:suse11-64
>>>>> tool: netperf 2.4.5
>>>>> Dom0 Kernel: linux-2.6.36
>>>>> net device: intel 82599
>>>>> net device driver: ixgbe-3.3.8
>>>>> 
>>>>> Thanks.
>>>> 
>>>> I confirmed the condition ,I am so sorry that I had made a  mistake.
>>>> Dom0 kernel's version is 2.6.32.36 ,not 2.6.36.
>>>> proto_data_valid is been defined in struct sk_buff in kernel 2.6.32.36.
>>> 
>>> Is this a distribution kernel or is there some place where I can find
>>> the kernel source for it?
>> Kernel is got from SLES 11-SP1.
>> address:
>> https://nu.novell.com/repo/$RCE/SLES11-SP1-Update/sle-11-x86_64/rpm/src
>> source file :   kernel-source-2.6.32.36-0.5.2.src.rpm
> 
> The URL that you provided requires a username and password to login.
> _______________________________________________
> discuss mailing list
> [email protected]
> http://openvswitch.org/mailman/listinfo/discuss
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to