2.8Kпросмотров
17 февраля 2025 г.
📷 ФотоScore: 3.1K
Готовлюсь к внутреннему митапу с докладом о потерях сетевого трафика: как их диагностировать и устранять. В основе GIF-анимация, иллюстрирующая путь и остановки входящего сетевого пакета в ядре Linux. Очереди в ядре Linux RX queue. Первая остановка: очередь сетевой карты (см. ethtool -l eth0) QDisc. Приоритизация, модификация и многое другое возможны с помощью дисциплины очередей. Calico, Cilium и подобные ребята перехватывает пакеты именно здесь (eBPF) Input Packet Queue. Очередь перед стеком протоколов. 📍Для новых соединений SYN queue. Очередь, где SYN-сегменты дожидаются ACK; Accept queue. Приложение через accept()подтверждает, что соединение установлено - зеленый свет для обмена данными. 📍Для уже установленных соединений Out Of Order queue. При нарушении очередности (sequence number больше ожидаемого), пакет помещается в нее, до восстановления правильного порядка;
* Recv queue. TCP-буфер сокета, из него приложение читает данные системным вызовом read(). ———
Подробнее я описывал весь процесс в двух частях: один, два. P.S. Кстати, поддержать канал теперь можно на Бусти или просто донатом! #network #tcp #kernel