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

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

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

A - Windows Server
B - Linux VM на хосте ESX
C - Linux VM на другом хосте 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. Как еще я мог подойти, проанализировать эту проблему?

Спасибо

0 ответов

Другие вопросы по тегам