โอเคฉันเพิ่งแก้ไขปัญหาจัมโบ้เฟรมระหว่าง Xserves ไม่กี่เครื่อง, Netgear GSM7224 และ Drobo B800i มันกลับกลายเป็นว่า Xserves (Mac OS X 10.6.8 Server) และ Drobo B800i ยอมรับ MTU ในหน่วยไบต์ตามปกติ (1,500-9,000) แต่ Netgear ดูเหมือนจะต้องการรวมถึงส่วนหัว / ส่วนท้ายอีเธอร์เน็ต (รถพ่วง) ) และในที่สุดฉันก็ลงเอยด้วย Xserves & Drobo ที่กำหนดค่าด้วย MTU ที่ 9000 และพอร์ต Netgear ที่ตั้งค่าเป็น MTU ที่ 9216
ฉันใช้คำสั่งต่อไปนี้สำหรับการทดสอบและตรวจสอบ MTU ระหว่าง Xserves ทั้งสองเหนือ Netgear (หมายเหตุ: นี่คือคำสั่ง Mac OS X, Windows และ Linux แตกต่างกัน):
ping -D -s <mtu> <ip_address>
traceroute -F <ip_address> <mtu>
การใช้งานของอดีตถูกบันทึกไว้ในman
หน้าเป็น "ระบุจำนวนไบต์ข้อมูลที่จะส่งเริ่มต้นคือ 56 ซึ่งแปลเป็น 64 ไบต์ข้อมูล ICMP เมื่อรวมกับ 8 ไบต์ของข้อมูลส่วนหัว ICMP" ในการทดสอบฉันพบว่าping -D 1472 <ip_address>
มันเทียบเท่า MTU 1500 เนื่องจากข้อมูลส่วนหัวของ ICMP 8 ไบต์และส่วนหัว IP 20 ไบต์ (ดูที่นี่และสิ่งนี้ ) ทั้งหมดนั้นสมเหตุสมผล
ตอนนี้ทำไมคำสั่งเทียบเท่าสำหรับ 9000 MTU ping -D -s 8164 <ip_address>
? ฉันได้ตรวจสอบแล้วว่านี่เป็นข้อ จำกัด ก่อนที่ฉันจะได้รับข้อผิดพลาด "sendto: ข้อความยาวเกินไป" แต่ด้วยว่า 9000 MTU ทำงานได้อย่างถูกต้องเหมือนใช้traceroute -F <ip_address> 9000
งานได้และtraceroute -F <ip_address> 9001
ไม่ทำงาน ดังนั้นทำไม 8164 ฉันคาดว่าจะได้ 8972 (MTU - 28 bytes เหมือนกับ 1500 MTU)
นอกจากนี้ทำไมต้อง 9216 MTU สำหรับ Netgear ฉันนับ 42 ไบต์สำหรับส่วนหัว MAC & ethernet (inc. CRC) บวก 20 ส่วนหัว IP (ซึ่งควรกินเข้าไปใน MTU)
ฉันเป็นสนิมในคณิตศาสตร์นี้และรู้ว่าฉันเพิ่งจะหายไปบางสิ่งบางอย่าง