اینترنت وصل است، ping جواب میدهد، سایتهای سبک باز میشوند؛ اما بعضی صفحهها نیمهکاره میمانند، ایمیل با پیوست ارسال نمیشود، VPN وصل میشود ولی ترافیکی از آن رد نمیشود. این علائم تقریباً همیشه یک اسم دارند: مشکل MTU. خبر خوب این است که با یک ping ساده از روتر یا سوئیچ لایه ۳ سیسکو، میتوانید حداکثر MTU مسیر تا هر مقصدی را اندازه بگیرید و مشکل را پیدا کنید.
در این مطلب MTU و MSS ، Path MTU Discovery و دلیل شکستن آن، روش اندازهگیری MTU مسیر با ping در IOS ، مقادیر رایج (PPPoE ، GRE ، IPsec) و راهحلها روی روتر سیسکو را مرور میکنیم.

MTU در یک نگاه
| MTU | بزرگترین بسته IP که بدون تکه شدن از یک لینک عبور میکند؛ اترنت ۱۵۰۰ بایت |
| MSS | بزرگترین داده TCP در یک segment ؛ معمولاً MTU منهای ۴۰ بایت |
| PMTUD | کشف کوچکترین MTU مسیر با بیت DF و پیام ICMP «Fragmentation Needed» |
| علت رایج خرابی | بستن کامل ICMP در فایروالها (سیاهچاله PMTUD) |
| ابزار اندازهگیری | ping … size … df-bit و Extended Ping با Sweep |
| راهحل رایج روی روتر | ip tcp adjust-mss و ip mtu روی اینترفیس یا تانل |
فهرست مطالب
MTU ، MSS و Fragmentation
MTU (Maximum Transmission Unit) بزرگترین اندازه بسته IP است که یک لینک میتواند منتقل کند. در اترنت ۱۵۰۰ بایت است. هر جا لایهای به بسته اضافه شود (PPPoE ، VLAN ، GRE ، IPsec ، MPLS) ، فضای مفید کم میشود:
| نوع اتصال | سربار | MTU مؤثر IP | MSS متناظر |
|---|---|---|---|
| اترنت ساده | — | 1500 | 1460 |
| PPPoE (ADSL ، VDSL ، FTTH) | 8 بایت | 1492 | 1452 |
| GRE | 24 بایت | 1476 | 1436 |
| GRE + IPsec | بسته به الگوریتم | سیسکو 1400 را پیشنهاد میکند | 1360 |
اگر بستهای بزرگتر از MTU لینک بعدی باشد، روتر یا آن را تکه (Fragment) میکند، که کند و پرهزینه است، یا اگر بیت DF (Don’t Fragment) روشن باشد، آن را دور میریزد و یک پیام ICMP نوع ۳ کد ۴ (Fragmentation Needed) با MTU مجاز به فرستنده برمیگرداند.
Path MTU Discovery و سیاهچاله آن
سیستمعاملهای امروزی بستههای TCP را با بیت DF میفرستند و منتظرند اگر جایی از مسیر MTU کوچکتر بود، پیام ICMP بگیرند و اندازه بسته را کم کنند. به این سازوکار Path MTU Discovery (PMTUD) میگویند.
مشکل از جایی شروع میشود که یک مدیر شبکه به خیال امنیت، همه ICMP را روی فایروال یا روتر ببندد. در این حالت بسته بزرگ دور ریخته میشود، پیام ICMP به فرستنده نمیرسد و فرستنده بارها همان بسته بزرگ را دوباره میفرستد. نتیجه همان علائم آشناست: ping (که بسته کوچک است) کار میکند، اتصال TCP برقرار میشود، اما به محض اینکه داده بزرگ جابهجا شود، ارتباط میخوابد. این را PMTUD Black Hole مینامند.
اندازهگیری MTU مسیر با ping روی روتر سیسکو
ایده ساده است: بستههای ICMP با اندازههای مختلف و بیت DF روشن میفرستیم؛ بزرگترین اندازهای که جواب میگیرد، MTU مسیر است. توجه کنید در IOS ، عدد size کل اندازه بسته IP است (با هدرها).
R1# ping 8.8.8.8 size 1500 df-bit Type escape sequence to abort. Sending 5, 1500-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds: Packet sent with the DF bit set M.M.M Success rate is 0 percent (0/5) R1# ping 8.8.8.8 size 1492 df-bit !!!!! Success rate is 100 percent (5/5)
حرف M یعنی روتری در مسیر پیام «Fragmentation Needed» برگردانده؛ یعنی MTU مسیر از ۱۵۰۰ کمتر است. نقطه (.) یعنی جوابی نیامد؛ ممکن است ICMP در مسیر بسته باشد.
برای پیدا کردن عدد دقیق، از Extended Ping با قابلیت Sweep استفاده کنید که اندازه را خودکار بالا میبرد:
R1# ping Protocol [ip]: Target IP address: 8.8.8.8 Repeat count [5]: 1 Datagram size [100]: Timeout in seconds [2]: 1 Extended commands [n]: y Source address or interface: GigabitEthernet0/0/0 Type of service [0]: Set DF bit in IP header? [no]: yes Validate reply data? [no]: Data pattern [0x0000ABCD]: Loose, Strict, Record, Timestamp, Verbose[none]: Sweep range of sizes [n]: y Sweep min size [36]: 1450 Sweep max size [18024]: 1510 Sweep interval [1]: 1 Sending 61, [1450..1510]-byte ICMP Echos to 8.8.8.8, timeout is 1 seconds: Packet sent with the DF bit set !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!MMMMMMMMMMMMMMMMMM Success rate is 70 percent (43/61)
در این نمونه ۴۳ بسته اول (۱۴۵۰ تا ۱۴۹۲ بایت) جواب گرفتهاند؛ پس MTU مسیر ۱۴۹۲ است، دقیقاً همان مقدار رایج PPPoE. از ویندوز هم میتوانید همین آزمایش را با ping -f -l 1464 8.8.8.8 انجام دهید (در ویندوز عدد -l فقط داده است و ۲۸ بایت هدر به آن اضافه میشود).
راهحل روی روتر سیسکو
۱) تنظیم MSS ؛ مؤثرترین راه
با ip tcp adjust-mss ، روتر در بستههای شروع اتصال TCP (SYN) که از آن عبور میکنند، مقدار MSS را کم میکند؛ یعنی دو طرف از همان ابتدا بستههای کوچکتر میفرستند و به PMTUD نیازی نیست:
interface Dialer1 description PPPoE to ISP ip mtu 1492 ip tcp adjust-mss 1452 ! interface Tunnel0 ip mtu 1400 ip tcp adjust-mss 1360 tunnel path-mtu-discovery
این دستور فقط روی TCP اثر دارد. برای UDP (مثل بعضی VPNها و صدا) باید MTU خود برنامه یا تانل را تنظیم کنید.
۲) تنظیم MTU اینترفیس
ip mtu اندازه بسته IP روی اینترفیس را تعیین میکند و روتر برای بستههای بزرگتر پیام PMTUD میفرستد. دستور mtu (بدون ip) اندازه فریم لایه ۲ است و روی سوئیچها با system mtu تنظیم میشود؛ این دو را قاطی نکنید.
۳) PMTUD روی ترافیک خود روتر
ip tcp path-mtu-discovery
این دستور برای اتصالهای TCP خود روتر (مثل نشستهای BGP) PMTUD را فعال میکند تا بهروزرسانیهای بزرگ BGP در مسیرهای با MTU کمتر گیر نکنند.
پرسشهای متداول
MTU اینترنت PPPoE من چند است؟
معمولاً ۱۴۹۲؛ با ping sweep مطمئن شوید. MSS را روی ۱۴۵۲ بگذارید.
ping جواب نمیدهد (نقطه) نه M ؛ یعنی چه؟
یا مقصد به ping جواب نمیدهد یا جایی در مسیر ICMP بسته است. با یک مقصد دیگر یا با اندازه کوچک امتحان کنید.
Jumbo Frame کمک میکند؟
در دیتاسنتر و بین سرورها و storage بله؛ در مسیر اینترنت نه، چون MTU اینترنت ۱۵۰۰ است. برای شبکههای VXLAN ، MTU underlay باید بزرگتر باشد؛ ببینید آشنایی با سیسکو VXLAN.
منابع رسمی
- Resolve IPv4 Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPsec
- RFC 1191 – Path MTU Discovery
مطالب مرتبط: سیسکو GRE چیست و کانفیگ روتر سیسکو PPPoE Dialer.
مشاوره با AKA NET
برای عیبیابی مشکلات MTU ، VPN و کندی ارتباطات روی شبکههای سیسکو با آکانت (AKA NET) تماس بگیرید.
تلفن: 09121308444 | ایمیل: aka@aka.ir | aka.ir
Good
بازتاب: آموزش پیدا کردن Max MTU توسط روتر سیسکو – Cisco Router MTU Discovery | مرکز آموزش یوسرور - هاست اشتراکی - سرور مجای با کیفیت
با تشکر. مفید بود.