MTU Path Discovery & Fragmentation Analyzer

body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 0; } .calc-container { max-width: 1000px; margin: 20px auto; padding: 20px; } .calc-header { margin-bottom: 30px; padding: 25px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); color: white; } .calc-header h2 { margin-top: 0; color: white; font-size: 28px; margin-bottom: 10px; } .calc-header p { margin: 10px 0 20px 0; opacity: 0.95; font-size: 15px; } .preset-section { margin: 20px 0; } .preset-label { display: block; margin-bottom: 10px; font-weight: 600; font-size: 14px; } .preset-buttons { display: flex; gap: 10px; flex-wrap: wrap; } .preset-btn { padding: 10px 16px; background: rgba(255,255,255,0.15); color: white; border: 2px solid rgba(255,255,255,0.3); border-radius: 6px; cursor: pointer; font-size: 13px; font-weight: 600; transition: all 0.2s ease; white-space: nowrap; } .preset-btn:hover { background: rgba(255,255,255,0.25); border-color: rgba(255,255,255,0.5); transform: translateY(-2px); } .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 20px; } .input-group { display: flex; flex-direction: column; } .input-group label { margin-bottom: 8px; font-weight: 600; font-size: 14px; color: rgba(255,255,255,0.95); } .input-group input, .input-group select { padding: 14px; font-size: 16px; border: 2px solid rgba(255,255,255,0.3); border-radius: 6px; font-family: 'Courier New', monospace; background: rgba(255,255,255,0.95); transition: all 0.3s ease; } .input-group input:focus, .input-group select:focus { outline: none; border-color: #4CAF50; background: white; box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.1); } .button-group { display: flex; gap: 10px; margin-top: 15px; } .btn { padding: 10px 20px; border: none; border-radius: 6px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.2); } .btn-primary { background: #4CAF50; color: white; } .btn-primary:hover { background: #45a049; transform: translateY(-1px); box-shadow: 0 4px 8px rgba(0,0,0,0.3); } .btn-secondary { background: rgba(255,255,255,0.2); color: white; border: 1px solid rgba(255,255,255,0.3); } .btn-secondary:hover { background: rgba(255,255,255,0.3); } .encap-stack { margin-top: 15px; min-height: 50px; } .encap-layer { background: rgba(255,255,255,0.15); padding: 10px 15px; margin-bottom: 8px; border-radius: 6px; border-left: 4px solid #4CAF50; display: flex; justify-content: space-between; align-items: center; color: white; } .encap-layer .name { font-weight: 600; } .encap-layer .overhead { background: #4CAF50; color: white; padding: 4px 12px; border-radius: 20px; font-weight: bold; font-size: 12px; margin-right: 10px; } .encap-layer .remove-btn { background: #dc3545; color: white; border: none; padding: 4px 10px; border-radius: 4px; cursor: pointer; font-size: 12px; } .section { margin-bottom: 30px; background: white; border: 1px solid #e0e0e0; border-radius: 8px; padding: 20px; box-shadow: 0 2px 4px rgba(0,0,0,0.05); } .section h3 { margin-top: 0; margin-bottom: 20px; color: #333; border-left: 5px solid #667eea; padding-left: 15px; font-size: 20px; } .result-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; } .result-card { background: linear-gradient(135deg, #4CAF50 0%, #45a049 100%); color: white; padding: 20px; border-radius: 8px; text-align: center; transition: transform 0.2s ease; } .result-card:hover { transform: translateY(-2px); } .result-card.warning { background: linear-gradient(135deg, #ffc107 0%, #ff9800 100%); color: #000; } .result-card.error { background: linear-gradient(135deg, #dc3545 0%, #c82333 100%); } .result-card.neutral { background: linear-gradient(135deg, #6c757d 0%, #5a6268 100%); } .result-label { font-size: 14px; opacity: 0.9; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 1px; } .status-text { font-size: 11px; opacity: 0.8; font-weight: normal; text-transform: capitalize; } .result-value { font-size: 42px; font-weight: bold; margin: 10px 0; font-family: 'Courier New', monospace; } .result-detail { font-size: 13px; opacity: 0.9; } /* Packet Visualization */ .packet-diagram { margin: 20px 0; } .packet { border: 2px solid #667eea; border-radius: 8px; margin-bottom: 15px; overflow: hidden; animation: fadeIn 0.5s ease; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .packet-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 10px 15px; font-weight: bold; display: flex; justify-content: space-between; align-items: center; } .packet-body { padding: 15px; background: #f8f9fa; } .packet-section { display: flex; margin-bottom: 8px; border-left: 3px solid #667eea; padding-left: 10px; } .packet-section-label { font-weight: bold; min-width: 150px; color: #555; } .packet-section-value { font-family: 'Courier New', monospace; color: #333; } .fragment-visual { display: flex; gap: 10px; margin: 20px 0; flex-wrap: wrap; } .fragment-box { flex: 1; min-width: 200px; border: 2px solid #17a2b8; border-radius: 6px; padding: 15px; background: white; position: relative; } .fragment-box::before { content: attr(data-fragment); position: absolute; top: -12px; left: 10px; background: #17a2b8; color: white; padding: 2px 10px; border-radius: 10px; font-size: 11px; font-weight: bold; } /* PMTUD Flowchart */ .flowchart { margin: 20px 0; } .flow-node { background: white; border: 2px solid #667eea; border-radius: 8px; padding: 20px; margin: 15px auto; max-width: 600px; position: relative; cursor: pointer; transition: all 0.3s ease; } .flow-node:hover { box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3); transform: scale(1.02); } .flow-node.decision { background: #fff3cd; border-color: #ffc107; } .flow-node.success { background: #d4edda; border-color: #28a745; } .flow-node.problem { background: #f8d7da; border-color: #dc3545; } .flow-node-title { font-weight: bold; font-size: 16px; margin-bottom: 10px; color: #333; } .flow-node-content { color: #555; line-height: 1.6; } .flow-options { display: flex; gap: 10px; margin-top: 15px; } .flow-btn { flex: 1; padding: 10px; border: 2px solid #667eea; background: white; border-radius: 6px; cursor: pointer; font-weight: 600; transition: all 0.2s ease; } .flow-btn:hover { background: #667eea; color: white; } .flow-arrow { text-align: center; color: #667eea; font-size: 24px; margin: 10px 0; } .solution-box { background: #d1ecf1; border-left: 4px solid #17a2b8; padding: 15px; border-radius: 6px; margin-top: 15px; } .solution-box h4 { margin-top: 0; color: #0c5460; } .solution-box code { background: #2d2d2d; color: #f8f8f2; padding: 2px 6px; border-radius: 3px; font-family: 'Courier New', monospace; } .alert { padding: 15px 20px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid; } .alert-info { background: #d1ecf1; border-color: #17a2b8; color: #0c5460; } .alert-warning { background: #fff3cd; border-color: #ffc107; color: #856404; } .alert-danger { background: #f8d7da; border-color: #dc3545; color: #721c24; } .data-row { display: flex; margin: 12px 0; padding: 10px; background: #f8f9fa; border-radius: 4px; border-left: 3px solid #667eea; } .data-label { font-weight: bold; color: #555; min-width: 200px; flex-shrink: 0; } .data-value { color: #333; font-family: 'Courier New', monospace; } .hidden { display: none; } /* Encapsulation Stack Builder */ .stack-builder { background: white; border: 2px solid #dee2e6; border-radius: 8px; padding: 20px; margin: 20px 0; } .stack-builder h4 { margin-top: 0; margin-bottom: 15px; color: #333; } .stack-container { min-height: 100px; border: 2px dashed #dee2e6; border-radius: 8px; padding: 10px; background: #f8f9fa; } .stack-empty { text-align: center; padding: 40px 20px; color: #6c757d; font-style: italic; } .stack-layer { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 15px; border-radius: 8px; margin-bottom: 10px; cursor: move; transition: all 0.2s ease; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .stack-layer:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0,0,0,0.15); } .stack-layer.dragging { opacity: 0.5; cursor: grabbing; } .layer-info { flex: 1; display: flex; align-items: center; gap: 15px; } .drag-handle { font-size: 20px; cursor: grab; user-select: none; } .drag-handle:active { cursor: grabbing; } .layer-name { font-weight: 600; font-size: 16px; } .layer-overhead { display: flex; align-items: center; gap: 10px; } .overhead-value { font-family: 'Courier New', monospace; font-size: 18px; font-weight: bold; background: rgba(255,255,255,0.2); padding: 4px 12px; border-radius: 4px; min-width: 60px; text-align: center; } .overhead-edit { display: none; } .overhead-value.editing { display: none; } .overhead-value.editing + .overhead-edit { display: block; } .overhead-edit input { width: 60px; padding: 4px 8px; border: 2px solid white; border-radius: 4px; font-family: 'Courier New', monospace; font-size: 16px; text-align: center; } .layer-actions { display: flex; gap: 8px; } .layer-btn { background: rgba(255,255,255,0.2); border: 1px solid rgba(255,255,255,0.3); color: white; padding: 6px 12px; border-radius: 4px; cursor: pointer; transition: all 0.2s ease; font-size: 14px; } .layer-btn:hover { background: rgba(255,255,255,0.3); } .layer-btn:focus { outline: none; box-shadow: 0 0 0 2px rgba(255,255,255,0.5); } .effective-mtu-display { background: linear-gradient(135deg, #4CAF50 0%, #45a049 100%); color: white; padding: 20px; border-radius: 8px; margin-top: 15px; text-align: center; font-size: 18px; font-weight: 600; } .effective-mtu-display.warning { background: linear-gradient(135deg, #ffc107 0%, #ff9800 100%); } .effective-mtu-display.error { background: linear-gradient(135deg, #dc3545 0%, #c82333 100%); } .mtu-value-large { font-size: 36px; font-family: 'Courier New', monospace; margin: 10px 0; } .preset-badge { background: rgba(102, 126, 234, 0.1); border: 2px solid #667eea; color: #667eea; padding: 10px 15px; border-radius: 8px; margin-top: 15px; display: flex; justify-content: space-between; align-items: center; } .add-layer-section { margin-top: 20px; padding: 15px; background: #f8f9fa; border-radius: 8px; border: 1px solid #dee2e6; } @media (max-width: 768px) { .input-grid { grid-template-columns: 1fr; } .preset-buttons { flex-direction: column; } .preset-btn { width: 100%; } .result-grid { grid-template-columns: 1fr; } .fragment-visual { flex-direction: column; } /* Minimum touch target size for mobile accessibility */ .btn, button, .preset-btn, .layer-btn { min-height: 44px; min-width: 44px; } } @media (max-width: 600px) { .input-grid { grid-template-columns: 1fr; gap: 12px; } .calc-header h2 { font-size: 22px; } .calc-header p { font-size: 14px; } .btn { width: 100%; padding: 10px 16px; } .preset-buttons { flex-direction: column; } .preset-btn { width: 100%; padding: 10px 12px; } .fragment-box { margin-bottom: 10px; } .flow-node { max-width: 100%; margin: 10px auto; } .flow-node-title { font-size: 15px; } } @media (max-width: 480px) { .calc-header { padding: 15px; margin-bottom: 20px; } .calc-header h2 { font-size: 20px; } .preset-buttons { gap: 8px; } .preset-btn { font-size: 12px; padding: 8px 12px; } .input-grid { gap: 10px; } .btn { font-size: 14px; padding: 10px 12px; } .flow-node { padding: 12px; } .flow-node-title { font-size: 14px; } .flow-node-content { font-size: 13px; } code { font-size: 12px; } .packet-section-label { font-size: 12px; } .packet-section-value { font-size: 12px; } }

📦 Аналізатор виявлення та фрагментації шляху MTU

Обчислюйте ефективний MTU після накладних витрат на інкапсуляцію, візуалізуйте фрагментацію та вирішуйте проблеми з PMTUD

Попередній значок (відображається, коли попередні налаштування активні) Конструктор стека інкапсуляції

🏗️ Стек інкапсуляції(Перетягніть, щоб змінити порядок)

Немає доданих шарів інкапсуляції. Додайте шар нижче, щоб побачити, як він впливає на MTU.
Ефективний дисплей MTU
MTU ефективного корисного навантаження
1500
байтів, доступних для даних
Додати розділ шару
Елементи керування сеансом
Не збережено
Відновити банер Як користуватися панеллю
📖 Як користуватися цим інструментом
  • Швидкий старт:Натисніть кнопку попереднього налаштування (Інтернет, PPPoE, Azure тощо), щоб завантажити типові сценарії
  • Спеціальний розрахунок:Встановіть базовий MTU та додайте шари інкапсуляції по одному
  • Результати:Перегляньте ефективне корисне навантаження MTU, рекомендований TCP MSS і розподіл накладних витрат
  • Фрагментація:Якщо MTU < 1500, автоматично з’являється візуальна діаграма фрагментації
  • Усунення несправностей:Використовуйте блок-схему PMTUD для діагностики проблем виявлення Path MTU
  • Вплив на продуктивність:Калькулятор втрати пропускної здатності показує реальну вартість фрагментації
Результати MTU

Результати розрахунку MTU

MTU ефективного корисного навантаження
1500
байтів, доступних для даних
Загальні накладні витрати
0
споживаних байт
Рекомендований TCP MSS
1460
MTU - 40 (заголовки IP+TCP)
Базовий MTU: 1500 байт
Накладні витрати на інкапсуляцію: 0 байт
Ефективний MTU: 1500 байт
Заголовки IP + TCP: 40 байт (20 IP + 20 TCP)
Максимальне корисне навантаження TCP: 1460 байт
Ефективність: 97,3%
Візуалізація фрагментації Калькулятор втрати пропускної здатності (функція P0)

💸 Калькулятор втрати пропускної здатності

ℹ️ Вплив на продуктивність:Обчисліть реальну вартість фрагментації пропускної здатності вашої мережі.
Інтерактивний засіб усунення несправностей PMTUD

🔍 Інтерактивний засіб усунення несправностей Path MTU Discovery (PMTUD).

ℹ️ Інтерактивна блок-схема:Щоб усунути проблеми з PMTUD, клацніть наведені нижче кроки діагностики.
🚀 Початок: у вас втрата пакетів або низька продуктивність?
Натисніть, щоб почати процес діагностики. Ми розглянемо систематичні кроки з усунення несправностей.
Приклади конфігурації

🔧 Приклади конфігурації

ℹ️ TCP MSS Clamping:Налаштуйте їх на маршрутизаторах, щоб запобігти фрагментації.
! Cisco IOS/IOS-XE
interface GigabitEthernet0/0
ip tcp adjust-mss 1460
! Ялівець ЮНОС
set interfaces ge-0/0/0 unit 0 family inet mtu 1500
set interfaces ge-0/0/0 unit 0 family inet tcp-mss 1460
# Linux iptables
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1460
Аналіз Jumbo Frame

🚀 Аналіз великих кадрів

ℹ️ Великі кадри:Більші розміри MTU підвищують пропускну здатність для мереж зберігання даних і центрів обробки даних.
Стандартна ефективність рами: 97,3% (1460/1500)
Рама Jumbo (9000 MTU): ККД 99,6% (8960/9000)
Кількість кадрів на ГБ (поточна): ~731 000 кадрів
Кількість кадрів на ГБ (Jumbo 9000): ~119 000 кадрів (84% зменшення)
Економія процесора (Jumbo проти стандартного): ~84% менше переривань

Рекомендації:

  • Стандарт 1500 MTU:Інтернет, загальні кампусні мережі, змішане середовище
  • Baby Jumbos (2000):Metro Ethernet, деякі мережі MPLS
  • Рамки Jumbo (9000):iSCSI, NFS, сервер-сервер, структури центру обробки даних
  • Super Jumbos (9216):Мережі зберігання даних, центр обробки даних 10GbE+