[ovs-discuss] discuss Digest, Vol 30, Issue 5

likunyun kunyunli at hotmail.com
Tue Dec 6 15:00:36 UTC 2011


> 1. Some questions about checksum in OVS (likunyun)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Sat, 3 Dec 2011 12:28:32 +0000
> From: likunyun <kunyunli at hotmail.com>
> Subject: [ovs-discuss] Some questions about checksum in OVS
> To: <discuss at openvswitch.org>
> Message-ID: <BLU154-W64AAECD4AB3DC5F2318A00D8B70 at phx.gbl>
> 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 csum 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.
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/ovs-discuss/attachments/20111206/d519a692/attachment-0001.html>


More information about the discuss mailing list