Я пытаюсь улучшить пропускную способность TCP через «сеть с высокой задержкой» между компьютерами Linux.
Я поставил tcp_mem
, tcp_wmem
и tcp_rmem
к «8192 7061504 7061504».
Я установил rmem_max
, wmem_max
, rmem_default
и wmem_default
в «7061504».
Я установил netdev_max_backlog
и txqueuelen
10000.
Я установил tcp_congestion_control
«масштабируемый».
Я использую «nist» (cnistnet) для имитации задержки в 100 мс, а BW, которого я достигаю, составляет около 200 Мбит / с (без задержки я достигаю около 790 Мбит / с).
Я использую iperf для выполнения тестов и TCPTrace для анализа результатов, и вот что я получил:
На стороне получателя:
максимальный выигрыш adv: 5294720 байт
avg win adv: 5273959 байтов
sack отправлено pkts: 0
На стороне отправителя:
фактические байты данных: 3085179704
байты данных rexmt: 9018144
макс. Owin: 5294577 байт
avg owin: 3317125 байт
RTT min: 19,2 мс
RTT max: 218,2 мс
RTT avg: 98,0 мс
Почему я достигаю только 200 Мбит / с? Я подозреваю, что «owin» имеет какое-то отношение к этому, но я не уверен (эти результаты теста 2 минуты. Тест 1 минуты имел «avg owin» 1552900)…
Неправильно ли ожидать, что пропускная способность будет почти 790 Мбит / с, даже если задержка составляет 100 мс?
(Я попытался использовать большие числа в конфигурациях окна, но это, похоже, не дало эффекта)