บางครั้งเราอาจเจอปัญหาในการใช้งาน Application ไม่เสถียร, ช้าบ้าง , Page มาไม่ครบบ้าง

ปัญหาส่วนหนึ่งที่เจอก็จะเป็นเรื่อง MTU เป็นหลัก เดี๋ยวเรามาทำความเข้าใจเรื่อง MTU และ MSS กันสักนิดครับ เผื่อเป็นแนวทางแก้ไขปัญหาที่เกิดขึ้นในระบบเครือข่ายเราได้ 


MTU คือขนาดแพ็กเก็ต IP สูงสุดสำหรับลิงก์ที่กำหนด แพ็คเก็ตที่ใหญ่กว่า MTU จะแยกส่วน ณ จุดที่พบว่า MTU ที่ต่ำกว่าและประกอบขึ้นอีกครั้งลงที่โซ่

หากไม่ต้องการการแตกแฟรกเมนต์คุณต้องตรวจสอบ MTU ที่แต่ละ hop หรือใช้โปรโตคอลตัวช่วยสำหรับ ( Path MTU Discovery )

โปรดทราบว่า IPv6 ไม่สนับสนุนการกระจายตัวของแพ็กเก็ตโดยเราเตอร์ดังนั้น PMTUD กับ ICMPv6 จึงเป็นสิ่งจำเป็นหากคุณไม่ต้องการที่จะสูญเสียแพ็กเก็ตเนื่องจาก MTU ขนาดเล็ก ปลายทางสามารถแตกแฟรกเมนต์ได้ แต่ไม่ใช่เราเตอร์นอกจากนี้ IPv6 ยังมี MTU ขั้นต่ำที่สูงกว่ามาก

MSS คือขนาดเซ็กเมนต์ TCP สูงสุด ซึ่งแตกต่างจาก MTU แพ็คเก็ตที่เกิน MSS นั้นไม่ได้แยกส่วน โดยทั่วไป MSS จะตัดสินใจในการจับมือสามทาง TCP แต่การตั้งค่าบางอย่างอาจให้เส้นทางที่การตัดสินใจโดย MSS ยังคงมีขนาดใหญ่เกินไปนำไปสู่แพ็กเก็ตที่ถูกทิ้ง MSS ไม่ได้ต่อรองแพ็กเก็ตต่อแพ็คเก็ต แต่สำหรับเซสชัน TCP ที่สมบูรณ์และไม่คำนึงถึงส่วนหัว TCP / IP

เมื่อใช้ PPPoE ค่าใช้จ่ายทั้งหมดหมายความว่าคุณต้องลด MSS ระหว่างทางโดยปกติจะระบุไว้ในเราเตอร์ที่พบ chokepoint ซึ่งจะแทนที่ MSS ของการผ่านการจับมือ threeway ด้วยค่าที่ถูกต้องถ้าสูงกว่า PPPoE เพียงเพิ่ม 8 ไบต์ (6 ไบต์ PPPoE + 2 ไบต์ PPP) ที่ด้านบนของทุกอย่าง (IP + TCP) และตั้งใจให้รันผ่านอีเทอร์เน็ตที่ 1500 ไบต์ MTU ดังนั้น 1492 MSS จะกำหนดค่าเพื่อให้ผ่านได้

IP สแต็คของคุณจะตัดข้อมูลที่จะส่งไปยัง MSS วางไว้ในเซ็กเมนต์ TCP จากนั้นวางในแพ็กเก็ต IP หนึ่งแพ็กเกจ (ขึ้นอยู่กับว่าใหญ่กว่าการตั้งค่า MTU ในระบบ) ก่อนที่จะส่ง เราเตอร์ระดับกลางสามารถตัดทิ้งได้หากมี MTU ที่ต่ำกว่า แต่พวกมันมีผลกับ IP Packet เท่านั้นไม่เล่นในเซ็กเมนต์ / ส่วนหัว TCP

 ซึ่งเราสามารถสรุปได้ว่า  MTU จะประกอบไปด้วย 2 ส่วนหลักคือ MSS ( THE MAXIMUM SEGMENT SIZE ) และ RWIN ( THE TCP RECEIVE WINDOW ) พอเทียบเคียงได้ว่า เปรียบเหมือน TCP/IP เป็นตัวจัดการส่งผ่านข้อมูลต่างๆไม่ว่าจะเป็นอีเมล์หรือเวบเพจ มันก็จะต้องทําการแบ่งย่อยข้อมูล ออกเป็นชิ้นเล็กๆ (Packet) แล้วจากนั้น จับมาใส่ในซอง (Envelope) ซึ่งจะมีที่อยู่บ่งบอกไว้ว่าจะนําไปส่งที่ใด ดังนั้นสามารถเปรียบเทียบได้ว่า

- MSS คือ ขนาดของข้อมูลชิ้นเล็กๆที่อยู่ในซอง
- MTU คือ ขนาดของซอง ซึ่งต้องใหญ่กว่าข้อมูลชิ้นเล็กๆที่อยู่ในซอง
- RWIN คือ ขนาดของกล่องรับจดหมาย ที่ทําการรับจดหมายเข้ามา


การปรับ MTU , MSS ที่ไม่เหมาะสมจะทำให้เราสูญเสียความเร็วในการใช้งานระบบ ได้ ดังนั้นเราจะทราบได้อย่างไรว่าเท่าไหร่ถึงจะเหมาะสม  โดยเราสามารถทำการทดสอบหรือหาค่า MTU ที่เหมาะสม โดยใช้คำสั่ง

ping www.google.com -f -l xxxx ที่ xxxx คือขนาดแพ็คเก็ตที่สามารถใช้ในการตรวจสอบที่ดีที่สุด MTU สำหรับการเชื่อมต่อของคุณ เช่น 

Windows :
ping www.hotmail.com -F -l 1500 

Mac OS x :
ping -s -D 1500 www.google.com

Linux :
ping -M do -s 1500 www.google.com

Note :
- ค่าปกติของ MTU ในเราเตอร์เท่ากับ 1500

- การทดสอบ เริ่มต้น ให้ทำการลดขนาด แพ็คเก็ตจาก 1500 จนกว่าคุณจะพบขนาด ใหญ่ที่สุดๆ ที่ใช้ได้ เช่น ลดมาถึง 1492 แล้ว ping ไม่ error


เมื่อได้ค่าก่อน error ที่ใช้ได้แล้วนั้น ให้ทำการเพิ่ม โดยต้องบวกเพิ่มอีก 28 โดยจะเป็นค่า Header ของ IP , ICMP เราก็จะได้ MTU ที่เหมาะสม 

ตัวอย่างเช่นถ้า ขนาด แพ็คเก็ต ที่ใหญ่ที่สุด จากการทดสอบ ping เป็น 1462 เราจะต้องเพิ่มอีก 28 โดยแพ็กเกตทั้งหมด จะเท่ากับ MTU=1490 ซึ่ง เป็นค่าที่ ดีที่สุด MTU 

ส่วน MSS นั้น เราสามารถเอาค่า MTU - 40 ก็จะได้ค่าที่สอดคล้องกัน เช่น

MTU = 1490
MSS = 1490 - 40

หวังว่าคงจะมีประโยชน์นะครับ ส่วนใครที่ไม่อยากทดสอบ สามารถหาค่าโดยตรงตามที่ ISP กำหนดไว้ด้านล่าง นำไปใช้งานได้เลยนะครับ