В чём разница между “пакетными потерями” из “ip -s link” и “потерями сокетов” из “ss -tm”?

Вопрос или проблема

ss -tm показывает детальную информацию о памяти для каждой TCP-сессии. Я обнаружил, что некоторые TCP-сессии отображают sock_drop, вот одна из них:

ESTAB    ***** здесь некоторая незначительная информация ****               
     skmem:(r0,rb3446699,t0,tb87040,f0,w0,o0,bl0,d222)  

d222 в skmem, согласно мануалу, это количество sock_drop.

Но ip -s link (или ifconfig) показывает 0 потерянных пакетов.

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:d9:fb:52 brd ff:ff:ff:ff:ff:ff
    RX:   bytes   packets errors dropped  missed   mcast           
    79371129016 110948258      0       0       0       0 
    TX:   bytes   packets errors dropped carrier collsns           
    78030205763  96204113      0       0       0       0 

Итак, вот мой вопрос: В чем разница между потерянными пакетами, показанными в ip -s link, и sock_drop, показанным в ss -tm? Каковы возможные причины, вызывающие потерю пакетов и sock_drop? Связан ли sock_drop с повторной передачей TCP?

Ответ или решение

Ответ на вопрос о различиях между "packet drops" из команды ip -s link и "socket drops" из команды ss -tm

Разница между "потерями пакетов" (packet drops) из вывода команды ip -s link и "потерями сокетов" (sock drops) из вывода команды ss -tm заключается в разных уровнях, на которых эти потери фиксируются, а также в причинах, их вызывающих.

1. Объяснение packet drops (потери пакетов)

Команда ip -s link предоставляет информацию о состоянии сетевых интерфейсов на уровне канала передачи данных.

  • Потеря пакетов на этом уровне указывает на то, что пакеты не были обработаны сетевым интерфейсом по различным причинам, включая:
    • Переполнение очереди (например, если скорость поступления трафика превышает возможность его обработки).
    • Ошибки на уровне аппаратного обеспечения.
    • Проблемы с драйверами сетевых интерфейсов.

Если в выводе ip -s link указано, что потеря пакетов равна 0, это свидетельствует о том, что сетевой интерфейс способен обрабатывать весь поступающий трафик без задержек и потерь.

2. Объяснение sock drops (потери сокетов)

С другой стороны, команда ss -tm показывает информацию о текущих сокетах TCP, включая использование памяти для каждого соединения.

  • Потеря сокетов (sock_drop) указывает на пакеты, которые были отброшены на уровне стека TCP/IP, потому что:
    • Сокет (или очередь) был переполнен, и пакет не мог быть обработан (причиной может быть, например, превышение накапливаемых последовательностей).
    • Соединение, возможно, было закрыто или недоступно на момент получения пакета.
    • Потеря может быть связана с неправильно настроенными параметрами TCP (например, неэффективные тайм-ауты или размеры окон).

3. Возможные причины потерь

Конфликты и проблемы, вызывающие потери пакетов и сокетов, могут быть разными:

  • Потеря пакетов на уровне сетевого интерфейса:
    • Высокий уровень трафика и переполнение буферов сетевых интерфейсов.
    • Сетевые ошибки, такие как повреждение пакетов.
  • Потеря сокетов на уровне TCP:
    • Проблемы с управлением памятью или настройками сокетов.
    • Недостаток ресурсов, таких как память, для обработки входящих соединений.
    • Неправильно настроенные параметры TCP и потеря пакетов, возникающих из-за переполненных очередей на уровне приложения.

4. Связь между sock_drop и TCP-ретрансляцией

Sock_drop может быть связан с TCP-ретрансляцией. Когда TCP-соединение не может обрабатывать входящие данные из-за переполнения или других проблем, возвращает уведомление об ошибке и инициирует процесс ретрансляции. Это может привести к ненужной задержке и дополнительному бэкенд-трафику.

Таким образом, обе команды предоставляют полезную информацию о состоянии сети, но с разных уровней абстракции: ip -s link демонстрирует состояние на уровне сетевого интерфейса, а ss -tm предоставляет данные о состоянии соединений на уровне приложений и стека TCP/IP.

Оцените материал
Добавить комментарий

Капча загружается...