Warn about performance if using TAP-Windows >=9.21.
Testing has revealed that the newer series of Windows TAP drivers (i.e. 9.0.0.21 and later, also known as NDIS6, tap-windows6) suffer from serious performance issues in the write path. Write operations seems to take a very long time to complete, resulting in massive packet loss even for throughputs as low as 10 Mbit/s. I've made some attempts to alleviate the problem using parellelism. By using custom code that allows up to 256 write operations at the same time the results are much better, but it's still about 2 times worse than the traditional 9.0.0.9 driver. We need to investigate more and file a bug against tap-windows6, but in the mean time, let's inform the user that he might not want to use the latest drivers.
This commit is contained in:
parent
0f328d9d28
commit
0c010ff9fe
1 changed files with 9 additions and 1 deletions
|
@ -182,8 +182,16 @@ static bool setup_device(void) {
|
|||
DWORD len;
|
||||
if(!DeviceIoControl(device_handle, TAP_IOCTL_GET_VERSION, &info, sizeof info, &info, sizeof info, &len, NULL))
|
||||
logger(DEBUG_ALWAYS, LOG_WARNING, "Could not get version information from Windows tap device %s (%s): %s", device, iface, winerror(GetLastError()));
|
||||
else
|
||||
else {
|
||||
logger(DEBUG_ALWAYS, LOG_INFO, "TAP-Windows driver version: %lu.%lu%s", info[0], info[1], info[2] ? " (DEBUG)" : "");
|
||||
|
||||
/* Warn if using >=9.21. This is because starting from 9.21, TAP-Win32 seems to use a different, less efficient write path. */
|
||||
if(info[0] == 9 && info[1] >= 21)
|
||||
logger(DEBUG_ALWAYS, LOG_WARNING,
|
||||
"You are using the newer (>= 9.0.0.21, NDIS6) series of TAP-Win32 drivers. "
|
||||
"Using these drivers with tinc is not recommanded as it can result in poor performance. "
|
||||
"You might want to revert back to 9.0.0.9 instead.");
|
||||
}
|
||||
}
|
||||
|
||||
/* Get MAC address from tap device */
|
||||
|
|
Loading…
Reference in a new issue