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.
                                          
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to