Yes, you can work around the bug by patching the tun driver or
extracting a newer version from the Linux source tree.
But the problem remains: The OpenVPN install document specifically
tells you to install a broken version of the tun driver.
From http://openvpn.net/install.html:
* Linux 2.2 or Solaris:
You should obtain
version 1.1 of the TUN/TAP driver from
http://vtun.sourceforge.net/tun/
and follow the installation instructions.
The OpenVPN install.html document is broken and should be fixed. It
should tell you to patch the driver or go find a replacement for it.
Unfortunately, OpenVPN doesn't seem to have a formal bug reporting
mechanism. That's why I posted my message.
-jeff stearns
On Dec 27, 2005, at 4:20 AM, Erich Titl wrote:
Hi
Jeff Stearns wrote:
If you use OpenVPN on Linux 2.2 or 4 2.4 or Solaris, you may be
suffering from a bug which causes connections to hang under heavy
load.
The symptoms are very similar to the MTU problems discussed frequently
in these mailing lists. But it turns out that this bug is not caused
by
MTU problems. It's a bug in the tun/tap driver.
I looked into tun 1.15 which I believe is fixed in this aspect
...
unsigned int mask = POLLOUT | POLLWRNORM;
if (!tun)
return -EBADFD;
DBG(KERN_INFO "%s: tun_chr_poll\n", tun->name);
poll_wait(file, &tun->read_wait, wait);
if (skb_queue_len(&tun->readq))
mask |= POLLIN | POLLRDNORM;
return mask;
...
so the solution might be to use a more recent tun driver. I believe
this
is now part of the official kernel distribution.
cheers
Erich