On 12 January 2012 00:35, Ivan Ivanyuk <ivan.ivan...@gmail.com> wrote:
> Hi All,

> I can get about 500Mb/s from virtual machine to external host, but
> only 200Kb/s from any internal PC to the same external host through
> virtual machine router.
> Closest description I found in archives is this:
> http://lists.freebsd.org/pipermail/freebsd-xen/2011-May/000902.html.
> My setup is like this:
> Dom0 is Debian with  xen-hypervisor-4.0-amd64 4.0.1-2.
> DomU is FreeBSD 8.2-RELEASE amd64 XENHVM kernel with "device xenpci" option
> ---------       ---------------       --------------       ---------------
> |Internet|<--->|eth3    vif14.0|<--->|xn0        xn1|<--->|vif14.1
> eth2|<--->|some PC
> ----------     |   inetbr0     |     |   Freebsd    |     |   localbr0    |
>                |     Dom0      |     |     DomU     |     |     Dom0      |
>                ---------------       --------------       ---------------
>                   bridge                                      bridge
> So I can see couple of packets with TCP data from Internets coming to
> eth3, then the same packets are seen on vif14.0. And then on xn0 I see
> only one packet with reassembled TCP payload.
> While these big (2976 bytes, 4464 bytes, 8928 bytes, etc) packets are
> addressed to DomU - all works. When we try to route them elsewhere -
> we get ICMP need fragmentation message sent to origin of these
> packets. That's because original (small) TCP packets have DF flag set.
> And resulting big TCP packet has DF flag as well.
> So it seems to me that something in the chain "vif14.0<->xn0" is
> reassembling TCP packets.
> Is there some sysctl or other settings to control this behavior? (I
> tried turning off all offloads on vif14.0 in Dom0, tried to change
> fragmentation settings in FreeBSD, nothing changed)

 Somewhat successful follow-up:

There is still some occurrences of reordered packets but original
issue was resolved.

 Turned out this mechanism can be turned off by "ifconfig -lro" in
FreeBSD itself.  I'm not sure if turning LRO on virtual driver by
default is good idea at all, but obviously LRO implementation for xn
device doesn't consider DF flag implication on resulting packets.

 I'm not familiar with other LRO algorithms which used in physical
NIC's. Can someone comment if such problem is normal for it?

 And what is your opinion on using tso, rxcsum and txcsum offloads in
virtual envirnoment?

Ivan Ivanyuk
freebsd-xen@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"

Reply via email to