Haohao Lee
2018-11-06 08:33:38 UTC
Hi Xen folks,
Background:
I am a Windows application developer. We developed an application which
modifies packets and rejects them back into the network stack to do some
network proxy transparently.
We achieved this by using WinDivert (https://reqrypt.org/windivert.html)
that is a tool/driver allows user-mode applications to capture/modify/drop
network packets sent to/from the Windows network stack.
Our app worked well on physical Windows machines but on Xen virtual
machines we encountered a problem.
Problem:
- Everything works well before we start our app.
- Network traffic is blocked after the app is started, even a single SYN
packet couldn't be sent out.
Workaround:
If we disable the checksum offload in Xen Net Driver, everything starts to
work again.
Testing Environment:
Xen Virtual Machine: Windows 7 Sp1 x64 with latest updates
Xen Net Driver: Driver version 3.0.144.590 xennet.sys version 2.3.0.144
I have a couple of questions:
1. Is this a problem of WinDivert driver or Xen Net driver from your
perspective?
2. If this belongs to Xen Net driver, does the latest driver fix this?
3. I found many articles on the Internet which teach people to disable
checksum offload (and other kinds of offload) for Xen virtual machines,
e.g. some tutorials from AWS. Why is this option ON by default if it
shouldn't be, or is there any introduction about the context why it is ON
by default? I know what TCP/IP checksum is, but in virtual machine context,
I have no idea if it is necessary or not.
Any comment or suggestion is appreciated.
Thanks
Hao
Background:
I am a Windows application developer. We developed an application which
modifies packets and rejects them back into the network stack to do some
network proxy transparently.
We achieved this by using WinDivert (https://reqrypt.org/windivert.html)
that is a tool/driver allows user-mode applications to capture/modify/drop
network packets sent to/from the Windows network stack.
Our app worked well on physical Windows machines but on Xen virtual
machines we encountered a problem.
Problem:
- Everything works well before we start our app.
- Network traffic is blocked after the app is started, even a single SYN
packet couldn't be sent out.
Workaround:
If we disable the checksum offload in Xen Net Driver, everything starts to
work again.
Testing Environment:
Xen Virtual Machine: Windows 7 Sp1 x64 with latest updates
Xen Net Driver: Driver version 3.0.144.590 xennet.sys version 2.3.0.144
I have a couple of questions:
1. Is this a problem of WinDivert driver or Xen Net driver from your
perspective?
2. If this belongs to Xen Net driver, does the latest driver fix this?
3. I found many articles on the Internet which teach people to disable
checksum offload (and other kinds of offload) for Xen virtual machines,
e.g. some tutorials from AWS. Why is this option ON by default if it
shouldn't be, or is there any introduction about the context why it is ON
by default? I know what TCP/IP checksum is, but in virtual machine context,
I have no idea if it is necessary or not.
Any comment or suggestion is appreciated.
Thanks
Hao