Практическое правило для требований к пропускной способности восходящего канала TCP

Практическое правило для требований к пропускной способности восходящего канала TCP

В TCP получатель время от времени подтверждает получение отправленных пакетов. Поэтому для достижения определенной полосы пропускания входящего потока всегда требуется минимальная полоса пропускания восходящего потока.

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

решение1

На этот вопрос сложно ответить, потому что это зависит от множества других факторов. Попытка получить очень конкретный ответ будет сложной, и еще сложнее, по крайней мере для меня, попытаться объяснить.

Предположив, что сквозная связь достаточно стабильна для максимального масштабирования окна, мы могли бы сказать, что нам нужен один ACK на каждый максимальный размер окна. Типичный максимальный размер окна составляет 64 КБ, по крайней мере, я думаю, что это значение по умолчанию для Windows... оно задается ключом реестра.

Зная это, теперь нам нужно узнать, каково время круговой передачи, потому что вы получите только один максимальный размер окна данных за каждый RTT; один способ для данных, чтобы добраться до вас и один способ для их подтверждения. Теперь мы будем играть так, как будто мы пытаемся вычислить необходимый восходящий поток для одного сокета TCP через спутник.

RTT = ~500 мс
Максимальный размер окна = 64 КБ

(64КБ * 8)/.5 = Максимальная скорость загрузки составит 1 Мбит/с. Умножение на 8, конечно, должно было превратить наше байтовое значение в биты.

Кстати, часто вы видите, что размер окна называют буфером, а расчет пропускной способности TCP выполняется как (RxBuffer/RTT = Througput). Теперь нам нужно рассчитать восходящий поток. Надеюсь, со всем вышеизложенным ответ очевиден: нам нужно два ACK в секунду, чтобы вернуться к отправителю. Эти ACK составляют 20B + 20B * 8 (заголовок IP + TCP), 320 бит/с каждый. Таким образом, для соединения с 500 мс RTT и максимальным RxBuffer в 64 КБ мы должны ожидать не более 1 Мбит/с загрузки и 640 бит/с выгрузки.

Надеюсь, это хоть как-то направило вас на верный путь. Перечитывая, я сам запутался...

Связанный контент