ดูเหมือนว่าจะเป็นปัญหาเดียวกันหรืออย่างน้อยก็คล้ายกันตามที่อธิบายโดย Dropbox (https://dropbox.tech/infrastructure/boosting-dropbox-upload-speed).
เท่าที่ฉันเข้าใจ (โปรดแก้ไขฉันด้วย!) เมื่อ Linux Gateway ใช้ NIC แบบหลายคิวด้วย Wireguard การจัดลำดับแพ็คเกจใหม่จำนวนมากจะเกิดขึ้นและเห็นได้ชัดว่า Windows 10 ไม่สามารถจัดการได้ดีเช่นกัน
การจัดลำดับแพ็คเกจใหม่ทำให้ Windows 10 ชะลอความเร็วในการส่งโดยการรอ ack หลังจากแพ็กเก็ตข้อมูลที่ส่งเกือบทุกแพ็กเก็ต แทนที่จะส่งหลายแพ็กเก็ตและยอมรับ acks แบบเลือก
ฉันเสียใจที่ลืมสร้างภาพหน้าจอของเซสชัน Wireshark ที่ฉันวิเคราะห์ไว้ แต่เห็นได้ชัดว่าเมื่อดาวน์โหลด โฮสต์ Windows มักจะมีแพ็คเก็ตข้อมูลประมาณ 10-20 tcp ก่อนที่จะส่ง ack แต่เมื่ออัปโหลดฉันได้รับ TCP ack สำหรับแต่ละแพ็คเกจข้อมูลที่ส่ง
วิธีแก้ไขคือปิดใช้งานหลายคิวบนโฮสต์ Linux
ethtool -L PHYSICAL_LOCAL_INTERFACE รวมกัน 1
ethtool -L PHYSICAL_NETWORK_INTERFACE รวมกัน 1
เพื่อดูว่ามันถูกนำไปใช้หรือไม่
ethtool -l INTERFACENAME
พารามิเตอร์ช่องสำหรับ INTERFACENAME:
ค่าสูงสุดที่ตั้งไว้ล่วงหน้า:
RX: 0
เท็กซัส: 0
อื่นๆ: 1
รวม: 63
การตั้งค่าฮาร์ดแวร์ปัจจุบัน:
RX: 0
เท็กซัส: 0
อื่นๆ: 1
รวม: 1
บรรทัดสุดท้ายควรเป็น 1 คำสั่งด้านบนจะตั้งค่านี้ชั่วคราวเท่านั้น เพื่อให้เครื่องมือเฉพาะของ distro ใช้งานได้อย่างต่อเนื่อง
สำหรับ Debian อาจเป็นดังนี้:
แมว /etc/network/interfaces
INTERFACE อัตโนมัติ
iface INTERFACE inet คงที่
ที่อยู่ IPADDR
เน็ตมาสก์ NETMASK
เกตเวย์ GATEWAY
#นี่คือบรรทัดที่เกี่ยวข้อง
post-up ethtool -L INTERFACE รวมกัน 1
สิ่งนี้อาจสร้างปัญหาคอขวดหากเกตเวย์ไม่มี CPU ที่แข็งแกร่ง เราใช้โปรเซสเซอร์ AMD EPYC 7262 8-Core และรับการอัพและดาวน์โหลด 1Gbit เต็มรูปแบบโดยใช้ ~70% ของหนึ่งคอร์