การดักจับบนโฮสต์อาจแสดงแพ็กเก็ต 64 KB บนอินเทอร์เฟซที่มี MTU 1420 และข้อสรุปที่ชัดเจนคืออุโมงค์เพิกเฉยต่อขีดจำกัดขนาดของตน ข้อสรุปนั้นมักผิด จุดดักจับบนโฮสต์อยู่ภายในเส้นทางการประมวลผล ซึ่งการแบ่งส่วน การรวมกลุ่ม และงาน checksum อาจยังไม่เกิดขึ้น อ่านตำแหน่งของผู้สังเกตก่อนอ่านขนาดแพ็กเก็ต

ตำแหน่งที่คุณดักจับเปลี่ยนสิ่งที่คุณเห็น

offload การส่งช่วยให้สแตกส่งหน่วยขนาดใหญ่ให้อุปกรณ์เครือข่าย ซึ่งจะตัดเป็นชิ้นขนาดสายในภายหลัง การรวมกลุ่มขาเข้าทำตรงกันข้ามบนเส้นทางขาเข้า โดยรวมส่วนก่อนที่ผู้สังเกตฝั่งโฮสต์จะเห็น การดักจับจึงบันทึกมุมมองภายในของโฮสต์ ณ จุดนั้น ไม่จำเป็นต้องเป็นเฟรมบนลิงก์ กลไกทั้งสองขึ้นกับอุปกรณ์และเส้นทาง

ethtool -k eth0 | grep -E 'tso|gso|gro'

ดักจับที่จุดที่สอง ควรเป็นตัวรับอิสระหรือกระจก ก่อนถือว่าขนาดเป็นความผิดพลาด หากหน่วยขนาดใหญ่ปรากฏเฉพาะบนโฮสต์ที่ส่ง สายอาจไม่เคยพามันเลย สองจุดสังเกตแข็งแกร่งกว่าไฟล์เดียว โดยเฉพาะเมื่อคำถามคืออะไรออกจากเครื่องจริง ๆ

แยกอินเทอร์เฟซภายในและภายนอก

อุโมงค์เพิ่มอินเทอร์เฟซของตนเอง และ มุมมองภายนอกและภายในต่างกันในการห่อหุ้มและการประมวลผล การดักจับบนอุปกรณ์อุโมงค์แสดงแพ็กเก็ตภายใน ส่วนการดักจับบนอะแดปเตอร์จริงแสดงแพ็กเก็ตภายนอก ขนาด ที่อยู่ และสถานะ checksum อาจต่างกันด้วยเหตุผลที่ไม่เกี่ยวข้องกับความผิดพลาดใด ๆ

บันทึกว่าอินเทอร์เฟซใดสร้างไฟล์ใด ขนาดที่เห็นบนอุปกรณ์อุโมงค์อธิบายแพ็กเก็ตภายใน ไม่ใช่เฟรมที่อะแดปเตอร์ส่งออกไปในที่สุด การผสมทั้งสองในการวิเคราะห์เดียวคือวิธีที่ความต่างของการห่อหุ้มปกติกลายเป็นปริศนา

คำเตือน checksum ก็ขึ้นกับตำแหน่งเช่นกัน

การดักจับฝั่งส่งอาจแสดงฟิลด์ checksum ก่อนที่ฮาร์ดแวร์จะเติมค่า ซึ่งสร้างคำเตือนที่ไม่มีตัวรับใดจะเห็นเลย นี่เป็นหลักฐานที่ต่างจากการที่โฮสต์ระยะไกลปฏิเสธแพ็กเก็ตที่เสียหาย ทิศทางและจุดดักจับเป็นตัวกำหนดว่าคุณมีแบบไหน

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

ปิด offload เฉพาะเป็นการทดสอบที่ควบคุมได้

การปิด offload เปลี่ยนประสิทธิภาพและการประมวลผลแพ็กเก็ต จึงไม่ใช่การตอบสนองแรกต่อการแสดงขนาดที่แปลก หากคุณทดสอบ ให้เปลี่ยนการตั้งค่าเพียงอย่างเดียวและบันทึกค่าฐานก่อน การรันที่เปลี่ยน MTU กฎไฟร์วอลล์ และโปรไฟล์ไคลเอนต์ด้วยไม่สามารถระบุผลลัพธ์ให้ offload ได้ คืนค่าการตั้งค่าภายหลัง

ethtool -K eth0 tso off gro off
ping -M do -s 1400 example.com

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

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

บทความที่เกี่ยวข้อง