Добрый день, форумчане!Требуется ваша помощь в таком вопросе:
Ассиметрия TCP трафика на вход и исход.
Дано:
1. Сервер в России (Сервер А)
На сервер дается канал 1Гбит/с без каких-либо ограничений.
Установлен Debian 9.
2. Удаленный сервер в Германии на площадке у крупного провайдера (Сервер B).
На сервер дается канал 1Гбит/с без каких-либо ограничений.
ОС Linux, дистрибутив и версия ядра неизвестна.
Трасса между серверами в обе стороны одинакова.
Требуется:
Получить между серверами А и B максимально возможный канал связи по ширине.
(А -> B) с помощью iperf3 получаем в один поток 700-900 Мбит/с.
(B -> A) с помощью iperf3 получаем в один поток 35-50 Мбит/с.
Если использовать несколько потоков (около 20), то канал (B -> A) можно загрузить до 500 Мбит/с,
в один же поток в пиках до 70 Мбит/с.
Кроме того, первые несколько порций данных передавались со скоростью выше 100Мбит/с, затем скорость падала.
С обеих сторон менялись сервера (помогали провайдеры), использовались и сервера с подключением 10 Гбит/с, и обычные ПК. Во всех случаях результат был одинаковым, как описан выше.
Внутри сети провайдера в Германии и России с помощью iperf получали между серверами симметричные 900Мбит/с.
На мой взгляд проблема выглядит либо как работа шейпера, либо проблема с очередями или размером TCP окна со стороны сервера в России.
Но, непонятно, как в этом случае получали почти полный 1Гбит/с между нашим сервером и сервером провайдера.
Пробовали настраивать размер очереди на сетевом интерфейсе, увеличивали размер TCP окна - совершенно безрезультатно. Единственный "результат" получили, когда запретили динамически увеличивать окно - получили на канале 15 Мбит/с вместо уже привычных 50.
Буду благодарен за советы.