یک تونل انتقال‌های بزرگ را رها می‌کند اما پینگ را عبور می‌دهد، بنابراین توصیه سریع می‌رسد: MTU را پایین بیاورید. این اصلاح گاهی کار می‌کند و بعد روی هر پروفایلی در هر شبکه‌ای اعمال می‌شود. همان‌جا است که یک تعمیر هدفمند به یک مالیات دائمی بر کارایی تبدیل می‌شود. مقایسه‌ای که باید انجام شود میان محدودیت واقعی مسیر و هزینه کوچک کردن هر بسته به زیر آن است.

وقتی MTU را پایین می‌آورید واقعاً چه چیزی کوچک می‌شود

هر بسته پیش از داده‌های شما سرآیند حمل می‌کند. در مسیر اترنت 1500 بایتی، IPv4 و TCP 40 بایت مصرف می‌کنند و 1460 را برای بار مفید باقی می‌گذارند؛ کپسوله‌سازی سرآیندهای بیرونی IP، UDP و تونل را روی آن اضافه می‌کند، پس بودجه بار مفید درونی دوباره پایین می‌آید. پایین آوردن MTU رابط آن بودجه را آگاهانه کوچک می‌کند.

هزینه با تعداد بسته‌ها متناسب است، نه با تعداد بایت‌ها. همان فایل که به بسته‌های بیشتری تقسیم شود به وقفه‌های بیشتر، تصمیم‌های مسیریابی بیشتر و پردازش بیشتری به ازای هر بسته روی هر دستگاهی در طول مسیر نیاز دارد. روی مسیریابی که از پیش به حد بسته در ثانیه‌اش نزدیک است، این یک کندی واقعی است نه خطای گرد کردن. این هزینه حتی وقتی خود انتقال موفق می‌شود هم دیده می‌شود.

به همین دلیل MTU کوچک‌تر یک دور زدن محدودیت است، نه بهینه‌سازی عمومی. این کار در برابر مسیری که نمی‌تواند قاب بزرگ‌تر را حمل کند قابلیت اطمینان می‌خرد و برای هر بسته‌ای که به آن کوچک‌سازی نیاز نداشت سربار می‌گیرد.

چه زمانی MTU کوچک‌تر اصلاح درست است

نشانه کلاسیک مشخص است: دست‌دهی TCP کامل می‌شود، پاسخ‌های کوچک می‌رسند و یک دانلود بزرگ متوقف یا بازنشانی می‌شود. پینگ با بیت «قطعه‌قطعه نکن» در 1472 بایت شکست می‌خورد در حالی که پینگ 1400 بایتی موفق می‌شود، که به مسیری اشاره دارد که نمی‌تواند بسته تمام‌اندازه را حمل کند و پیام ICMP که به فرستنده می‌گفت کوچک کند را تحویل نمی‌دهد.

کشف MTU مسیر به همان پیام‌های ICMP نیاز به قطعه‌قطعه وابسته است. وقتی دیوار آتش آن‌ها را می‌اندازد، فرستنده بسته بزرگ را مکرراً دوباره امتحان می‌کند و اتصال معلق به نظر می‌رسد. پایین آوردن MTU در سمت تونل از تکرار جلوگیری می‌کند، و این یک تعمیر مشروع برای آن شبکه است.

فناوری‌های دسترسی هم محدودیت‌های خودشان را تحمیل می‌کنند: PPPoE معمولاً روی 1492 محدود می‌شود، بعضی مسیرهای موبایل و DSL پایین‌ترند، و تونل‌های تودرتو سربار را دو بار کم می‌کنند. مسیر واقعی را اندازه بگیرید نه اینکه عددی را از یک راهنما کپی کنید، و به یاد داشته باشید که IPv6 در هر پیوندی که آن را حمل می‌کند حداقل 1280 بایت MTU می‌خواهد، چنان‌که RFC 8200 مشخص می‌کند.

پیش از تغییر یکی، سه کنترل را مقایسه کنید

MTU، MSS و قطعه‌قطعه شدن کنترل‌های متفاوتی در لایه‌های متفاوت‌اند، و تغییر کنترل اشتباه نشانه را سر جایش باقی می‌گذارد.

ControlLayerWhat it changesWhere it misleads
Interface MTUIP linkLargest frame the interface will sendPenalizes every protocol, not just the one that failed
TCP MSS clampTCPSegment size advertised in the handshakeLeaves UDP and QUIC untouched
DF and fragmentationIPWhether a router may split a packetCan break path MTU discovery and security assumptions
Tunnel overheadEncapsulationInner MTU after outer headersMismatch shows up only for large inner packets

محدود کردن MSS اغلب کم‌تهاجمی‌ترین تعمیر است چون فقط روی TCP اثر می‌گذارد و رابط را برای ترافیک دیگر آزاد می‌گذارد. MTU پایین‌تر رابط گسترده‌تر و ساده‌تر برای استدلال است، به همین دلیل روی روترهای خانگی رایج است، اما هزینه مشکل یک پروتکل را از همه پروتکل‌ها می‌گیرد.

خاموش کردن رفتار «قطعه‌قطعه نکن» نشانه را با اجازه دادن به قطعه‌قطعه شدن پنهان می‌کند، و معمولاً تأخیر را بدتر می‌کند در حالی که بازخوردی را که اندازه درست را پیدا می‌کرد می‌شکند. از آن به عنوان راه‌حل دائمی بپرهیزید.

مبادله را اندازه بگیرید نه یک عدد

محدودیت مسیر را با یک کاوشگر «قطعه‌قطعه نکن» پیدا کنید، از بالا شروع کنید و پایین بیایید تا پاسخ برسد:

ping -M do -s 1472 203.0.113.10
ping -M do -s 1400 203.0.113.10
tracepath 203.0.113.10

سپس کار واقعی را در هر دو تنظیم مقایسه کنید: همان انتقال فایل، همان نقطه پایانی و همان شبکه. زمان تکمیل و ارسال‌های مجدد را ثبت کنید، برای نمونه با nstat -az TcpRetransSegs، و اگر تونل روی یک روتر کوچک پایان می‌یابد پردازنده دستگاه را زیر نظر بگیرید. یک آزمون مصنوعی کوتاه پهنای باند ممکن است توقفی را از دست بدهد که فقط پس از چند مگابایت پدیدار می‌شود.

شمارنده‌های بسته پس از کاهش بالا می‌روند چون همان انتقال اکنون بسته‌های بیشتری مصرف می‌کند. این انتظار می‌رود و شاهدی بر پهنای باند بیشتر نیست. داده‌های کامل‌شده کاربرد، تعداد ارسال‌های مجدد و پاسخ‌گویی را مقایسه کنید، نه فقط نرخ بسته را.

تغییر را مرحله‌ای اعمال کنید و آن را محدود نگه دارید

مقدار اولیه را ثبت کنید، یک کنترل را تغییر دهید و پیش از دائمی کردن آن اندازه‌گیری را تکرار کنید. اگر شواهد سودی نشان نداد، مقدار پیشین را با همان فرمان رابطی که برای تنظیم آن به کار بردید بازگردانید:

ip link set dev wg0 mtu 1420
ip link set dev wg0 mtu 1500

نتیجه را به همان شبکه‌ای محدود کنید که به آن نیاز داشت. پروفایلی که باید روی Wi-Fi یک هتل، هات‌اسپات موبایل و LAN یک دفتر کار کند نباید پایین‌ترین مقداری را که هر یک از آن‌ها می‌خواهد به ارث ببرد، مگر اینکه کلاینت نتواند مسیر را تشخیص دهد.

مقدار درست بزرگ‌ترین MTUی است که روی مسیر دوام می‌آورد، نه کوچک‌ترین مقداری که نشانه را از میان برمی‌دارد. مسیر، نتیجه کاوشگر و بازگردانی را مستند کنید و هرگاه شبکه دسترسی تغییر کرد تنظیم را بازبینی کنید.

مقالات مرتبط