Контроль перевантаженості TCP для мережі з низькою затримкою 10GbE -> 1GbE?


11

У мене є сервер з підключенням 10GbE до комутатора, і 10 клієнтів, що мають підключення 1GbE до того ж комутатора.

Запускаючи nuttcp паралельно на кожному з клієнтів, я можу одночасно передавати на сервер 10 потоків TCP даних на близькій швидкості проводів (тобто просто соромлячись 100 мегабайт в секунду від усіх 10 клієнтів одночасно).

Однак, коли я повертаю напрямок і надсилаю дані з сервера клієнтам - тобто 10 TCP-потоків, по одному йдемо до кожного клієнта - TCP ретрансляції зростає, а продуктивність падає до 30, 20 або навіть 10 мегабайт в секунду на кожного клієнта. Я хочу підняти ці цифри, оскільки ця схема трафіку є репрезентативною для певних програм, які мене цікавлять.

Я переконався, що мій сервер здатний наситити 10GbE посилання, виконавши той же експеримент над підключенням 10GbE до аналогічного сервера. Я переконався, що в жодному з моїх портів немає помилок.

Нарешті, коли я насильно затискаю (обмежую) розмір вікна TCP приймача, я можу отримати пропускну здатність дещо вище (30-40 мегабайт / с); і якщо я зафіксую це вкрай низько, я можу отримати ретрансляцію до нуля (при пропускній здатності смішно низькою).

Таким чином, я досить впевнений, що я перебільшую буфери в своєму комутаторі, в результаті чого пакет втрачається через перевантаженість. Однак я подумав, що контроль над перевантаженнями TCP повинен був вирішити це непогано, зрештою стабілізуючись на чомусь вище 50% швидкості проводу.

Тож перше моє запитання дуже просте: Який алгоритм контролю перевантаженості TCP був би найкращим для моєї ситуації? Їх є багато, але вони, як правило, орієнтовані на втрачені мережі або мережі з високою затримкою з високою пропускною здатністю або бездротові мережі ... Жодна з них не стосується моєї ситуації.

Друге питання: чи можна ще щось спробувати?


1
Було б корисно дізнатися, яка модель комутатора. Різні перемикачі по-різному обробляють чергу і допоможуть звузити рішення.
scottm32768

2
Також різні комутатори мають різний розмір буфера, тому знання моделі комутатора допоможе усунути апаратні проблеми з вашої проблеми.
cpt_fink

1
Також, моделі NIC, драйвери, версія Linux, ядро, дистрибутив і т. Д. Мої відповіді для NIC Myricom або Solarflare з Cisco 4900M були б іншими, ніж комутатор Dell Powerconnect та Intel NIC.
ewwhite

Відповіді:


2
  1. Вам потрібно алгоритм, коли розмір вікна різко не зменшується при падінні пакету. Це різке падіння розміру вікна призводить до раптового падіння пропускної здатності з трафіком TCP.

  2. Якщо ваш комутатор і ваш сервер підтримують управління потоком, спробуйте ввімкнути управління потоком. Наскільки добре це працює, майже повністю залежить від кремнію та мікропрограмного забезпечення Switch. В основному, комутатор виявить загрозу виходу на порту, який підключений до клієнта, визначить, звідки беруться пакети, і відправить кадри управління потоком з вхідного порту (тобто назад на сервер). Якщо сервер розуміє кадри управління потоком, це знизить швидкість передачі. Якщо все працює добре, ви отримаєте оптимальну пропускну здатність з практично нульовими падіннями пакетів, що виникають у вихідному буфері комутатора.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.