Network troubleshooting
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?
Ложная ретрансмиссия, это ситуация, когда:
- Отправитель думает, что пакет потерян (не получил ACK вовремя).
- Отправляет пакет повторно.
- Но на самом деле первый пакет не терялся — просто ACK задержался.
tcp.analysis.spurious_retransmission
Fast Retransmission
Получатель отправляет повторные ACK (дубликаты), если получает пакет с номером сегмента, превышающим ожидаемый. Если отправитель получает 3 одинаковых ACK → считает пакет утерянным и ретранслирует его без ожидания RTO.
Чтобы посмотреть:
tcp.analysis.duplicate_ack && tcp.analysis.fast_retransmission
Zero Window
Получатель сообщает отправителю: «У меня нет места в буфере, останови передачу! Если окно долго не увеличивается — соединение может разорваться. Причины:
- Приложение-получатель перегружено:
- Не успевает читать данные из буфера (например, сервер «завис»).
- Маленький размер буфера TCP:
- Настроено слишком мало памяти (net.ipv4.tcp_rmem в Linux).
- Сетевые задержки:
- 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