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
[email protected]
http://openvswitch.org/mailman/listinfo/discuss