Network troubleshooting

Posted on May 21, 2025

Troubleshooting сети

В статье опыт который понадобится для поиска проблем

Mikrotik

  • Проверь настройки конекшн трекера
  • Проверь настройки ip settings
  • Проверь mtu, особенно если есть pppoe, l2tp, ipsec. Попробуй занизить MTU и оценить качество работы сети.

Анализ дампов

Есть 3 типа ретрансмиссий (повторных передач пакетов):

  • Обычные - возникают по тайм-ауту (когда отправитель не получил ack вовремя) и пакет действительно не дошел
  • Spurious Ложные - возникают по тайм-ауту (когда отправитель не получил ack вовремя) но пакет на самом деле дошел
  • Fast Быстрые - возникают когда получатель отправляет 3 ACK и тем самым сообщает что пакет не дошел

Чтобы посмотреть обычные повторные отправки пакетов

tcp.analysis.retransmission

Retransmissions (ретрансмиссии) в TCP возникают, когда отправитель не получает подтверждение (ACK) о доставке пакета в течение заданного времени.

Повторная отправка происходит когда в

  • Retransmissions возникают из-за потерь пакетов, перегрузки сети или задержек.
  • Если их много, это может указывать на проблемы с сетью.

Можно использовать tshark для удобного подсчета

tshark -r file.pcap -Y "tcp.analysis.retransmission" | wc -l

Что такое Spurious Retransmission?

Ложная ретрансмиссия, это ситуация, когда:

  1. Отправитель думает, что пакет потерян (не получил ACK вовремя).
  2. Отправляет пакет повторно.
  3. Но на самом деле первый пакет не терялся — просто ACK задержался.
tcp.analysis.spurious_retransmission

Fast Retransmission

Получатель отправляет повторные ACK (дубликаты), если получает пакет с номером сегмента, превышающим ожидаемый. Если отправитель получает 3 одинаковых ACK → считает пакет утерянным и ретранслирует его без ожидания RTO.

Чтобы посмотреть:

tcp.analysis.duplicate_ack && tcp.analysis.fast_retransmission

Zero Window

Получатель сообщает отправителю: «У меня нет места в буфере, останови передачу! Если окно долго не увеличивается — соединение может разорваться. Причины:

  1. Приложение-получатель перегружено:
    • Не успевает читать данные из буфера (например, сервер «завис»).
  2. Маленький размер буфера TCP:
    • Настроено слишком мало памяти (net.ipv4.tcp_rmem в Linux).
  3. Сетевые задержки:
    • ACK с новым размером окна не доходит вовремя. Диагностика:
tcp.window_size == 0

ICMP-ошибки (например, Fragmentation Needed):

Как увидеть?

icmp.type == 3 && icmp.code == 4

Большие задержки между пакетами

tcp.time_delta > 1

Как избежать фрагментации?

MSS Clamping (на роутере) Роутер подменяет MSS в SYN-пакетах, чтобы клиент и сервер сразу согласовали правильный размер:

  • Пример для MikroTik:

/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=1360 passthrough=yes

Проверка: Запустите в Wireshark фильтр: Чтобы посмотреть какой MSS согласовали участники

tcp.flags.syn == 1 and tcp.options.mss