الشبكات / المتقدم: السياسة والأدلة والسعة والتصميم المرن / الدرس 15
فهم MTU و ICMP واكتشاف المسار
احسب ميزانيات الأحجام مع تمييز حد المسار و MSS وتجزئة IPv4 وسلوك اكتشاف IPv6.
في هذه الصفحة
أهداف الدرس
- تمييز MTU الواجهة والمسار وحمولة النقل وكلفة التغليف.
- شرح التجزئة وفشل الاكتشاف بنماذج غير متصلة محدودة.
سم حد الحزمة قبل طرح البايتات
تحدد MTU الواجهة حد الحزمة عندها، ويقيد المسار وصلات اتجاه معين. تختلف حمولة التطبيق وبيانات TCP وطول IP وإشغال الإطار. تضيف الأنفاق رؤوساً فتقل ميزانية الداخل. لا يثبت حجم الواجهة قبول كل المحطات له، وقد تتغير المسارات والتغليف؛ فنجاح حجم سابق دليل لسياقه لا حد عالمي دائم.
استخدم رؤوساً معلنة لا معادلة MSS عامة
تصف MSS أقصى بيانات مقطع يعلنها المستقبل، ويخضع الإرسال أيضاً للمسار والبروتوكول. يفترض الحساب كلفة نفق ثمانين بايتاً ورؤوس IP و TCP الأساسية فقط. تغير الخيارات وامتدادات IPv6 والأنفاق والتأطير الحساب. تخص MSS بروتوكول TCP ولا تحكم رسائل UDP مباشرة. قد يفيد خفضها تصميماً معيناً ولا يعوض الاكتشاف الصحيح عموماً.
underlay_mtu = 1500
tunnel_overhead = 80
inner_mtu = underlay_mtu - tunnel_overhead
print(f'inner_mtu={inner_mtu}')
for family, ip_header in (('IPv4', 20), ('IPv6', 40)):
print(f'{family}_tcp_payload={inner_mtu - ip_header - 20}')
inner_mtu=1420
IPv4_tcp_payload=1380
IPv6_tcp_payload=1360
تبلغ الميزانية 1420، ويتبقى 1380 أو 1360 بالرؤوس المحددة. هي نتائج افتراضات ثابتة لا إعدادات واجهة أوقياس مسار أوقيم MSS عامة.
تختلف أدوار موجهات IPv4 و IPv6 في التجزئة
قد يجزئ IPv4 الحزمة حيث يسمح، وتُقاس الإزاحة بوحدات ثمانية بايتات وتحاذي القطع غير النهائية ذلك. إذا منع DF التجزئة لزم التعامل مع الحجم الزائد. لا تجزئ موجهات IPv6 الحزم الممررة؛ يتولى المصدر الحجم وتجزئته وفق قواعده. يخص النموذج IPv4 مع غياب DF ورأس عشرين بايتاً، وليس مولد حزم أومحرك إعادة تجميع.
mtu, header, remaining = 1500, 20, 3000
capacity = ((mtu - header) // 8) * 8
offset_bytes = 0
while remaining:
data_bytes = min(capacity, remaining)
remaining -= data_bytes
print(f'offset={offset_bytes // 8} data={data_bytes} mf={int(remaining > 0)}')
offset_bytes += data_bytes
offset=0 data=1480 mf=1
offset=185 data=1480 mf=1
offset=370 data=40 mf=0
تصير الحمولة 3000 قطعاً1480 و 1480 و 40 بإزاحات 0 و 185 و 370. يحتاج كل جزء رأسه أيضاً. لا تُرسل أجزاء، وتحتاج الخيارات وإعادة التجميع إلى فهم إضافي.
تحمل أخطاء ICMP معلومات مسار مفيدة
يستخدم PMTUD التقليدي رسائل ICMP ذات الصلة بالحجم، ومنها Packet Too Big في IPv6. قد يحذف منع ICMP كله المعلومة فتنجح الصغائر وتتعطل النقلات الكبيرة. تختلف ردود Echo؛ فلا يثبت فشلها حجب أخطاء الحجم. قد يستخدم اكتشاف طبقة التقسيم فحوصاً وتأكيداً واعيين بالنقل ضمن حدود بروتوكوله لا إرسالاً كبيراً متكرراً عشوائياً.
العرض الحساس للحجم فرضية تحتاج دليلاً
قد يوحي التعطل الكبير بمشكلة حجم أواكتشاف، وقد تنتجه حدود التطبيق والازدحام والوسطاء والفقد. قارن افتراضات التقسيم والنفق والاتجاه والأخطاء ونقطة الرصد. قد يغير التفريغ أحجام سجل المضيف عن السلك؛ فلا يعني السجل الكبير مخالفة فعلية. يتطلب الفحص الحي تصريحاً مستقلاً؛ وهنا نحسب فقط دون فحص واجهة أومسار أوجدار أوطرف.
الأخطاء الشائعة وإصلاحها
طرح أربعين دائماً لتحويل MTU إلى MSS
- لماذا يحدث؟
- عُمم افتراض رأسي IPv4 و TCP لكل عائلة وتغليف.
- كيف تصلحه؟
- احصر الرؤوس الداخلية والخارجية قبل الحساب.
- كيف تتجنب تكراره؟
- سم كل حجم بحده البروتوكولي وافتراضاته.
منع ICMP كله لعدم الحاجة إلى Echo
- لماذا يحدث؟
- اعتُبرت Echo وأخطاء الشبكة اللازمة شيئاً واحداً.
- كيف تصلحه؟
- حدد سياسة مراجعة للأخطاء المطلوبة والتحقق منها.
- كيف تتجنب تكراره؟
- راجع الاكتشاف وإشارات الفشل قبل تغيير الترشيح.
تطبيق نموذج تجزئة IPv4 على IPv6 الممرر
- لماذا يحدث؟
- لم تفصل مسؤوليات المصدر والموجه.
- كيف تصلحه؟
- استخدم قواعد العائلة ورد المسار الصحيحين.
- كيف تتجنب تكراره؟
- اجعل حالات قبول IPv4 و IPv6 صريحة.
اختبر فهمك
1. ما حمولة TCP الأساسية لمسار IPv6 معلن بحجم 1280؟
اعرض الحل المشروح
مع رأس IPv6 أربعين و TCP عشرين تكون الميزانية 1220. تحتاج الامتدادات والخيارات حساباً مستقلاً. لا يكتشف الحساب مساراً أويفرض MSS المعلنة أوتغيير مضيف.
2. لماذا لا يستبعد نجاح طلب صغير مشكلة PMTUD؟
اعرض الحل المشروح
قد يلائم الحد الأصغر دون أخطاء حجم. وقد يختبر الرد الكبير حداً أواتجاهاً آخر. احفظ الفرق فرضية واطلب دليلاً مصرحاً بدلاً من عد كل فشل كبير خطأ ICMP.
أهم ما تعلمته
- تقيس MTU و MSS والتأطير والحمولة حدوداً مختلفة.
- احفظ رد المسار المطلوب وطبق قواعد العائلة الصحيحة.