Рейтинг:2

балансировка нагрузки по одному сетевому адаптеру для преодоления ограничения на количество подключений

флаг ru

У меня странная установка, когда интернет-провайдер обеспечивает очень быстрое соединение (10 Гбит/с), но ограничивает каждое соединение до 50 Мбит/с. Это нормально для многопоточных приложений, где я могу просто увеличить количество потоков. Но хотелось бы решить эту проблему и для однопоточных приложений.Я использую Linux, и это весь TCP-трафик (должен быть) — мне кажется, что есть хороший способ сделать это с помощью iptables, но это немного не в моих силах. Я ограничен одной сетевой картой на устройстве. Есть ли способ сделать балансировщик нагрузки, который просто создает несколько подключений через один и тот же сетевой адаптер, а затем перебирает пакеты? (В основном я уже делаю это в программном обеспечении для многопоточных приложений... но хочу сделать это на уровне ОС).

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

https://en.wikipedia.org/wiki/Пропускная способность-delay_product

Nonny Moose avatar
флаг gb
Они сказали, почему они это сделали?
флаг ru
Это размещенная среда — вы можете получить доступ к своим серверам через общедоступный Интернет относительно дешево. Но наша организация выбрала темное волокно. Мы фактически платим за 10 Гбит/с. Так что я могу получить 10 Гбит/с... с миллионом потоков. Я думаю, что интернет-провайдер не осознавал, сколько людей выберет темное волокно, поэтому они недооценили его в течение длительного времени ... и теперь им приходится ограничивать скорость людей для каждого соединения (не нарушая их общий лимит скорости, за который мы заплатили. .это в контракте). Все это очень дорого .. пытаемся оправдать наши деньги :)
Рейтинг:2
флаг ru

Я не думаю, что есть смысл.

Конечно, вы можете использовать несколько исходных IP-адресов (будь то с нескольких хостов, нескольких сетевых адаптеров или даже с одного сетевого адаптера), но опять же, вы, скорее всего, настроите NAT все из них на общедоступный IPv4-адрес, который у вас есть, так что нет никакой разницы с улица. Вы также можете просто использовать несколько потоков.

Но, очевидно, вы можете просто попробовать привязать несколько исходных IP-адресов к одному сетевому адаптеру, а не к нему.

флаг ru
Спасибо за быстрый ответ - я попытаюсь создать группу IP-адресов на своем хосте (тот же сетевой адаптер), затем использовать iptables для циклического перебора с ними ... и затем NAT на другом конце (все на том же хосте). Возможно, это каким-то образом обманет систему, заставив ее думать, что это отдельные соединения. Я не уверен, КАК они отслеживают ... но это может быть точно такой же источник и точно такой же пункт назначения ... пока он находится в другом потоке, он получает свою собственную пропускную способность!
Zac67 avatar
флаг ru
Скорее всего, все, что вам нужно, — это несколько потоков/сокетов. Добавление разных IP-адресов *до* NAT не может иметь большого значения (если только они не требуются для того, чтобы приложение использовало ECMP).
Рейтинг:1
флаг br

Это можно ограничить двумя способами: для каждой виртуальной машины или для каждой виртуальной сетевой карты. Если это касается каждой виртуальной машины, вы ничего не можете сделать, кроме как пригрозить перейти к другому провайдеру или фактически сменить провайдера, очевидно, что первое может не сработать. Если это для каждого vNIC, вы можете либо добавить больше самостоятельно, если это возможно, либо снова попросить провайдера добавить их, и снова, если они откажутся угрожать уйти.

В конце концов, у вас есть бизнес-потребность, которая, похоже, не удовлетворяется вашим провайдером, поэтому будьте готовы заплатить немного больше, чтобы получить то, что вам нужно.

флаг ru
Большое спасибо за быстрый ответ - это действительно странно. Они каким-то образом отслеживают каждое соединение, а затем ограничивают его, но им все равно, полностью ли идентичны источник и пункт назначения. Мой многопоточный код буквально делает одно и то же параллельно (тот же источник, то же место назначения - в данном случае через HTTPS, но пробовал другие, и это не имеет значения). Думаю, мне интересно, есть ли способ абстрагировать это на уровень ОС, чтобы каждое TCP-соединение превращалось в... скажем... 50 из них... вместо того, чтобы переделывать каждую часть программного обеспечения для этого внутри.
флаг ru
Другими словами... это не для каждой виртуальной машины или для каждого vNIC... это определенно для каждого соединения... Я просто не уверен, КАК это отслеживается и есть ли элегантный способ обойти это :) Нам гарантируется определенная скорость (это темное волокно).. см. мой комментарий к другому плакату выше.. но они ограничивают нашу скорость для каждого соединения, я думаю, чтобы избежать перегрузки. Я протестировал точно такую ​​же настройку с другим интернет-провайдером, который не ограничивает количество потоков (у нас есть дублирующие интернет-провайдеры… резервные центры обработки данных… и т. д.), и это примерно в 50 раз быстрее на поток.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.