การถอดรหัสและการประกอบ IP ที่แตกเป็นส่วน ๆ: Mylinking™ Network Packet Broker ระบุแพ็กเก็ต IP ที่แตกเป็นส่วน ๆ

การแนะนำ

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

การแยกส่วนและการประกอบใหม่ของ IP

ลิงก์ข้อมูลแต่ละประเภทมีหน่วยการส่งข้อมูลสูงสุด (MTU) ที่แตกต่างกัน ตัวอย่างเช่น ลิงก์ข้อมูล FDDI มี MTU 4352 ไบต์ และลิงก์ Ethernet มี MTU 1500 ไบต์ MTU ย่อมาจาก Maximum Transmission Unit และหมายถึงขนาดแพ็กเก็ตสูงสุดที่สามารถส่งผ่านเครือข่ายได้

FDDI (Fiber Distributed Data Interface) เป็นมาตรฐานเครือข่ายท้องถิ่นความเร็วสูง (LAN) ที่ใช้ใยแก้วนำแสงเป็นสื่อกลางในการส่งข้อมูล หน่วยส่งข้อมูลสูงสุด (MTU) คือขนาดแพ็กเก็ตสูงสุดที่สามารถส่งได้โดยโปรโตคอลเลเยอร์ดาต้าลิงก์ ในเครือข่าย FDDI ขนาดของ MTU คือ 4352 ไบต์ ซึ่งหมายความว่าขนาดแพ็กเก็ตสูงสุดที่สามารถส่งได้โดยโปรโตคอลเลเยอร์ดาต้าลิงก์ในเครือข่าย FDDI คือ 4352 ไบต์ หากแพ็กเก็ตที่จะส่งมีขนาดเกินกว่านี้ จะต้องทำการแฟรกเมนต์แพ็กเก็ตออกเป็นหลายส่วนย่อยที่มีขนาดเหมาะสมกับ MTU เพื่อการส่งและประกอบใหม่ที่ตัวรับ

สำหรับอีเธอร์เน็ต ค่า MTU โดยทั่วไปจะมีขนาด 1500 ไบต์ ซึ่งหมายความว่าอีเธอร์เน็ตสามารถส่งแพ็กเก็ตที่มีขนาดไม่เกิน 1500 ไบต์ได้ หากขนาดแพ็กเก็ตเกินขีดจำกัด MTU แพ็กเก็ตจะถูกแบ่งออกเป็นส่วนย่อยๆ เพื่อส่ง และประกอบใหม่ที่ปลายทาง การประกอบแพ็กเก็ต IP ที่ถูกแบ่งส่วนใหม่นั้นสามารถทำได้โดยโฮสต์ปลายทางเท่านั้น และเราเตอร์จะไม่ดำเนินการประกอบแพ็กเก็ตใหม่

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

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

สมมติว่าผู้ส่งต้องการส่งดาตาแกรมขนาดใหญ่ 4000 ไบต์ผ่านลิงก์อีเธอร์เน็ต ดังนั้นดาตาแกรมจึงจำเป็นต้องถูกแบ่งออกเป็นดาตาแกรมขนาดเล็กสามอันก่อนการส่ง เนื่องจากขนาดของแต่ละดาตาแกรมขนาดเล็กต้องไม่เกินขีดจำกัด MTU ซึ่งคือ 1500 ไบต์ หลังจากได้รับดาตาแกรมขนาดเล็กทั้งสามแล้ว ผู้รับจะประกอบดาตาแกรมเหล่านั้นกลับเข้าเป็นดาตาแกรมขนาดใหญ่ 4000 ไบต์เดิม โดยอ้างอิงจากหมายเลขลำดับและออฟเซ็ตของแต่ละดาตาแกรม

 การแยกส่วนและการประกอบใหม่ของ IP

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

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

Mylinking™ Network Packet Brokerสามารถระบุโปรโตคอลอุโมงค์ชนิดต่างๆ ได้โดยอัตโนมัติ เช่น VxLAN/NVGRE/IPoverIP/MPLS/GRE เป็นต้น โดยสามารถกำหนดได้ตามโปรไฟล์ผู้ใช้ตามลักษณะเฉพาะของกระแสข้อมูลขาออกของอุโมงค์ว่าเป็นภายในหรือภายนอก

○ สามารถจดจำแพ็กเก็ตที่มีป้ายกำกับ VLAN, QinQ และ MPLS ได้

○ สามารถระบุ VLAN ภายในและภายนอกได้

○ สามารถระบุแพ็กเก็ต IPv4/IPv6 ได้

○ สามารถระบุแพ็กเก็ตอุโมงค์ VxLAN, NVGRE, GRE, IPoverIP, GENEVE และ MPLS ได้

○ สามารถระบุแพ็กเก็ต IP ที่ถูกแบ่งส่วนได้ (รองรับการระบุการแบ่งส่วน IP และรองรับการประกอบแพ็กเก็ต IP ที่แบ่งส่วนขึ้นใหม่ เพื่อใช้การกรองคุณลักษณะ L4 กับแพ็กเก็ต IP ที่แบ่งส่วนทั้งหมด รวมถึงการนำนโยบายการส่งออกทราฟฟิกไปใช้)

เหตุใด IP และ TCP จึงถูกแบ่งส่วน?

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

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

กล่าวอีกนัยหนึ่ง ในการเชื่อมต่อเครือข่ายจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง หากเลเยอร์การขนส่งทำการแบ่งข้อมูล เลเยอร์ IP จะไม่ทำการแบ่งข้อมูล หากไม่มีการแบ่งข้อมูลในเลเยอร์การขนส่ง การแบ่งข้อมูลก็อาจเกิดขึ้นได้ในเลเยอร์ IP

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

ถ้า TCP เกิดการแตกตัวเป็นส่วนๆ แล้วเลเยอร์ IP จะไม่เกิดการแตกตัวเป็นส่วนๆ ด้วยหรือ?

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

หากเราสามารถกำหนดค่า MTU ขั้นต่ำตลอดทั้งลิงก์และส่งข้อมูลที่ความยาวนั้นได้ จะไม่มีการแบ่งส่วนข้อมูลเกิดขึ้นไม่ว่าข้อมูลจะถูกส่งไปยังโหนดใดก็ตาม ค่า MTU ขั้นต่ำตลอดทั้งลิงก์นี้เรียกว่า Path MTU (PMTU) เมื่อแพ็กเก็ต IP มาถึงเราเตอร์ หากค่า MTU ของเราเตอร์น้อยกว่าความยาวของแพ็กเก็ตและแฟล็ก DF (Do not Fragment) ถูกตั้งค่าเป็น 1 เราเตอร์จะไม่สามารถแบ่งส่วนแพ็กเก็ตได้และทำได้เพียงทิ้งแพ็กเก็ตนั้น ในกรณีนี้ เราเตอร์จะสร้างข้อความแสดงข้อผิดพลาด ICMP (Internet Control Message Protocol) ที่เรียกว่า "Fragmentation Needed But DF Set" ข้อความแสดงข้อผิดพลาด ICMP นี้จะถูกส่งกลับไปยังที่อยู่ต้นทางพร้อมกับค่า MTU ของเราเตอร์ เมื่อผู้ส่งได้รับข้อความแสดงข้อผิดพลาด ICMP พวกเขาสามารถปรับขนาดแพ็กเก็ตตามค่า MTU เพื่อหลีกเลี่ยงสถานการณ์การแบ่งส่วนข้อมูลที่ถูกห้ามอีกครั้ง

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

ความเข้าใจพื้นฐานเกี่ยวกับ IPv6

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

เมื่อพูดถึง IPv6 นอกจากจะมีพื้นที่แอดเดรสมากขึ้นแล้ว ยังนำมาซึ่งความปลอดภัยและความสามารถในการขยายขนาดที่ดีกว่า ซึ่งหมายความว่า IPv6 สามารถมอบประสบการณ์การใช้งานเครือข่ายที่ดีกว่าเมื่อเทียบกับ IPv4

แม้ว่า IPv6 จะมีมานานแล้ว แต่การใช้งานทั่วโลกยังค่อนข้างช้า สาเหตุหลักเป็นเพราะ IPv6 ต้องใช้งานร่วมกับเครือข่าย IPv4 ที่มีอยู่เดิม ซึ่งต้องมีการเปลี่ยนผ่านและย้ายระบบ อย่างไรก็ตาม ด้วยจำนวนที่อยู่ IPv4 ที่เริ่มหมดลงและความต้องการ IPv6 ที่เพิ่มขึ้นเรื่อยๆ ผู้ให้บริการอินเทอร์เน็ตและองค์กรต่างๆ จึงค่อยๆ นำ IPv6 มาใช้ และค่อยๆ ตระหนักถึงการทำงานแบบ dual-stack ของ IPv6 และ IPv4

สรุป

ในบทนี้ เราได้ศึกษาเจาะลึกถึงวิธีการทำงานของการแบ่งส่วนและการประกอบแพ็กเก็ต IP ลิงก์ข้อมูลแต่ละลิงก์มีค่า Maximum Transmission Unit (MTU) ที่แตกต่างกัน เมื่อขนาดของแพ็กเก็ตเกินขีดจำกัด MTU การแบ่งส่วนแพ็กเก็ต IP จะแบ่งแพ็กเก็ตออกเป็นส่วนย่อยๆ หลายส่วนเพื่อส่ง และประกอบส่วนย่อยเหล่านั้นกลับเป็นแพ็กเก็ตที่สมบูรณ์อีกครั้งโดยกลไกการประกอบแพ็กเก็ต IP หลังจากถึงปลายทางแล้ว จุดประสงค์ของการแบ่งส่วนแพ็กเก็ต TCP คือการทำให้เลเยอร์ IP ไม่ต้องทำการแบ่งส่วนแพ็กเก็ตอีกต่อไป และจะส่งเฉพาะข้อมูลขนาดเล็กที่ถูกแบ่งส่วนไปแล้วเมื่อมีการส่งซ้ำ เพื่อปรับปรุงประสิทธิภาพและความน่าเชื่อถือในการส่ง อย่างไรก็ตาม อาจมีอุปกรณ์เลเยอร์เครือข่ายอื่นๆ ตลอดลิงก์การขนส่งที่มีค่า MTU น้อยกว่าของผู้ส่ง ดังนั้นแพ็กเก็ตจะยังคงถูกแบ่งส่วนอีกครั้งที่เลเยอร์ IP ของอุปกรณ์เหล่านั้น จึงควรหลีกเลี่ยงการแบ่งส่วนแพ็กเก็ตที่เลเยอร์ IP ให้มากที่สุด โดยเฉพาะอย่างยิ่งในอุปกรณ์ระดับกลางของลิงก์


วันที่โพสต์: 7 สิงหาคม 2568