Назад | Перейти на главную страницу

rx_missed_errors с максимальным размером кольца - пакеты udp

Приложение A отправляет трафик в B через TCP. B с помощью многоадресной рассылки (UDP) отправляет трафик дальше в C. Приложения на D получают эти данные через TCP.

A -> (TCP) -> B -> (UDP) -> C -> (TCP) -> D

A - Windows Server
B - виртуальная машина Linux на хосте ESX
C - виртуальная машина Linux на другом хосте ESX (без нагрузки - только одна виртуальная машина)
D - Windows-клиенты

когда B направляет трафик на C могут наблюдаться множественные отбрасывания из-за характера трафика (пакетов), происходящего на уровне NIC (ixgbe) (rx_missed_errors напрямую соответствуют тому, какое приложение на C наблюдает).

Увеличение размера кольцевого буфера (на C) до максимального значения (4096) делает ситуацию еще хуже.

Все соединения 10G, уровень трафика не превышает 2 Гбит / с (во время пакетов) (проверено с помощью sar -n DEV 1).

Вопросы:

  1. Как я могу измерять пакеты с интервалом менее 1 секунды?

  2. Почему увеличение размера кольца может ухудшить ситуацию?

  3. Есть ли способ замедлить трафик на B, чтобы его можно было обрабатывать на C без сбоев на уровне NIC? (Формирование трафика, изменение размера окна TCP / размера буфера?)

  4. Почему, если я заменяю B хостом Windows, отказов вообще не происходит, как будто пакеты udp формируются более удобоваримым образом.

  5. Как еще я мог подойти, проанализировать эту проблему?

Спасибо