เวอร์ชั่นสั้น
เครือข่ายในบ้านของฉันเป็นกิกะบิตบริสุทธิ์พร้อมอุปกรณ์ที่รองรับจัมโบ้เฟรมสูงสุดอย่างน้อย ~ 9000 ไบต์ การเพิ่มการตั้งค่าเฟรมจัมโบ้ MTU บน Synology เป็น 6000 (ไบต์) เพิ่มประสิทธิภาพ (การเขียน 810Mbps และการอ่าน 945Mbps) การตั้งค่าเป็น 7000 จะทำลายประสิทธิภาพการอ่านเท่านั้น (ซึ่งจะลดลงจนถึง 4Mbps) ประสิทธิภาพการเขียนยังคงรวดเร็ว
นี่เป็นสิ่งที่คาดไม่ถึงเนื่องจากปัญหากรอบจัมโบ้ส่วนใหญ่ไม่มีทิศทางที่เกี่ยวข้องกับพวกเขาและโดยปกติแล้วจะเป็นทั้งหมดหรือไม่มีอะไรเลย (แพ็คเก็ตจะถูกทิ้งที่สวิตช์ ดูเหมือนจะไม่มีการกระจายตัวของ IP ใด ๆเกิดขึ้น แต่เลเยอร์ TCP ไม่มีความสุขจริงๆ สิ่งที่อาจทำให้เกิดพฤติกรรมไม่สมมาตร / ไม่สม่ำเสมอนี้และฉันจะแก้ไขปัญหานี้อย่างไรเพื่อสนับสนุนอุปกรณ์ 9000 เต็ม MTU ทั้งหมดที่ฉันควรสนับสนุน
รุ่นยาว
นี่คือบันทึกย่อที่แก้ไขแล้วของฉันในขณะที่พยายามคิดออก
ไคลเอนต์
ตัวควบคุมตระกูล Realtek PCIe GBE RTL8167
จัมโบ้เฟรม: 9KB MTU
$ netsh interface ipv4 show subinterfaces
MTU MediaSenseState Bytes In Bytes Out Interface
------ --------------- --------- --------- -------------
9198 1 32501506 11275394 Local Area Connection
(ปรากฏ 9198 ไม่รวมส่วนหัว 14 ไบต์อีเธอร์เน็ต)
$ ping -l 1500 -f 192.168.1.84
(สังเกตกับ Wireshark ทำงานบนไคลเอ็นต์; ทุกขนาดมีขนาดลวดไบต์)
[9213, ∞] ไม่ได้ส่งโดยโฮสต์ (จะต้อง fragmenting)
[9019, 9212] ส่ง แต่ไม่มีการตอบสนอง
[9015, 9018] การแยกส่วนการตอบสนอง IP
[42, 9014 ] ไม่มีการจัดเรียง IP
[0, 41]? (ไม่สามารถสร้างได้เนื่องจากส่วนหัว eth + IP + ICMP = 14 + 20 + 8 = 42 ไบต์)
เราเตอร์ (ส่วนสวิตช์)
Asus RT-AC68U - เฟิร์มแวร์ 3.0.0.4.378_4585
เปิดใช้งานเฟรมจัมโบ้: "เปิดใช้งาน"
ไม่สามารถหาขนาดเฟรมจัมโบ้ที่รองรับได้จริงดูเหมือนจะมีอย่างน้อย 9000
มันแยกส่วนการร้องขอ ping จากไคลเอนต์ที่ 1514 bytes (แต่การกระตุกเราเตอร์อาจทำให้เกิดการทำงานของเราเตอร์ WAN แทนการทำงานของสวิตช์ LAN หรือไม่)
สวิตช์ที่ไม่มีการจัดการ
TP-LINK TL-SG1008D
จัมโบ้เฟรม (แผ่นข้อมูลจำเพาะ): 9KB (เว็บไซต์ของพวกเขาบอกว่า 15KB แต่ดูเหมือนอุปกรณ์อื่น)
เซิร์ฟเวอร์
Synology DS1815 + - DSM 5.2-5565 อัปเดต 1
กรอบจัมโบ้: 9000
แพ็คเก็ตที่อ่านไฟล์จาก Synology
ถึงขนาดไคลเอ็นต์ : ส่วนใหญ่เป็น 9014 ไบต์ (ทั้งสองทิศทาง)
แฟล็ก IP: ไม่แยกส่วน
Wireshark ที่ค้นพบ: TCP Spurious Retransmission, TCP เซ็กเมนต์ก่อนหน้านี้ไม่ถูกจับ, TCP หมดเวลาสั่งซื้อ และปกติ (9014 ไบต์) แพ็คเก็ตแพ็คเก็ต
SMB2-over-NetBIOS- โพรโทคอลอ่านตอบสนองความยาวอ่าน: 65,536 (~ 8 TCP เซ็กเมนต์)
$ ifconfig
bond0 Link encap:Ethernet HWaddr --:FF
inet addr:192.168.1.84 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addrs: --/64 Scope:Link, --/64 Scope:Global, --/64 Scope:Global
UP BROADCAST RUNNING MASTER MULTICAST MTU:9000 Metric:1
RX packets:lots errors:85 dropped:0 overruns:0 frame:85
TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:237 GiB TX bytes:117 GiB
eth2 Link encap:Ethernet HWaddr --:00
UP BROADCAST RUNNING SLAVE MULTICAST MTU:9000 Metric:1
RX packets:lots errors:19 dropped:0 overruns:0 frame:19
TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:236 GiB TX bytes:83 GiB
eth3 Link encap:Ethernet HWaddr --FF
UP BROADCAST RUNNING SLAVE MULTICAST MTU:9000 Metric:1
RX packets:lots errors:66 dropped:0 overruns:0 frame:66
TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1 GiB TX bytes:33 GiB
eth2 และ eth3 ถูกผูกมัดโดยใช้ Adaptive Load Balancing (ไม่รองรับสวิตช์)
$ ping -c 5 -s 1500 192.168.1.82
(สังเกตได้จาก Wireshark ทำงานบนไคลเอนต์ทุกขนาดเป็นขนาดสายไบต์)
[9019, ∞] ส่งคำขอ, ส่งคำตอบ, ไม่ได้รับการตอบสนอง
[9015, 9018] คำขอ IP ที่อยู่อย่างกระจัดกระจาย (อาจมีการแยกส่วนโดย Synology ตัวเลือกไม่มีส่วนดังนั้นจึงยากที่จะบอก)
[60, 9014] IP ที่ไม่มีการจัดเรียง
[0, 59]? (ไม่สามารถสร้างได้เนื่องจาก busybox ping กำหนดอย่างน้อย 18 ไบต์พร้อมส่วนหัว 42 ไบต์)
อื่น ๆ ข้อมูล
- การเปลี่ยนไคลเอนต์ MTU เป็น 8KB ไม่ได้ช่วยอะไร
- ความเร็วในการอ่านของเซิร์ฟเวอร์ลดลงจากหน้าผาเมื่อเปลี่ยน MTU ของเซิร์ฟเวอร์จาก 6000 (ดีมาก, 945Mbps) เป็น 7000 (แย่มาก, 4Mbps)
- ความเร็วในการเขียนของเซิร์ฟเวอร์โดยทั่วไปจะไม่ได้รับผลกระทบจากการตั้งค่าเซิร์ฟเวอร์ MTU ทั้งหมด (อยู่ระหว่าง 700 และ 825 Mbps เสมอ)
- Synology มีเครือข่ายที่ถูกผูกมัด (2 จาก 4 พอร์ต)
- สายเคเบิลทั้งหมด Cat6 หรือ Cat5e