Se pare că este aceeași sau cel puțin o problemă similară descrisă de Dropbox (https://dropbox.tech/infrastructure/boosting-dropbox-upload-speed).
Din câte am înțeles (te rog să mă corectezi!) Când Linux Gateway folosește multi-queue NIC cu Wireguard, se întâmplă o mulțime de reordonări ale pachetelor și se pare că Windows 10 nu se poate descurca prea bine.
Reordonarea pachetului determină cumva Windows 10 să încetinească viteza de trimitere, așteptând o confirmare după aproape fiecare pachet de date trimis, în loc să trimită mai multe pachete și să accepte ack-uri selective.
Din păcate, am uitat să fac capturi de ecran ale sesiunilor Wireshark pe care le-am analizat, dar a fost foarte bine vizibil că la descărcare, gazda Windows a primit de obicei în jur de 10-20 de pachete de date tcp înainte de a trimite un ack. Dar la încărcare am primit o confirmare TCP pentru fiecare pachet de date trimis.
Soluția pentru a remedia acest lucru este de a dezactiva multiqueuing pe gazda Linux.
ethtool -L PHYSICAL_LOCAL_INTERFACE combinat 1
ethtool -L PHYSICAL_NETWORK_INTERFACE combinat 1
Pentru a vedea dacă a fost aplicat se poate folosi
ethtool -l INTERFACENAME
Parametri de canal pentru INTERFACENAME:
Maxime prestabilite:
RX: 0
TX: 0
Altele: 1
Combinat: 63
Setări hardware curente:
RX: 0
TX: 0
Altele: 1
Combinat: 1
Ultima linie ar trebui să fie 1. Comanda de mai sus o setează doar temporar, pentru a o face persistentă, instrumentele specifice distribuției trebuie utilizate.
Pentru Debian ar putea fi ceva de genul acesta:
cat /etc/network/interfaces
INTERFATA automata
iface INTERFACE inet static
adresa IPADDR
mască de rețea Mască de rețea
gateway GATEWAY
# Aceasta este linia relevantă
post-up ethtool -L INTERFACE combinat 1
Acest lucru poate crea un blocaj dacă gateway-ul nu are un procesor puternic. Folosim procesoare AMD EPYC 7262 cu 8 nuclee și obținem până și descărcare completă de 1 Gbit cu utilizarea de ~70% a unui nucleu.