КАТАЛОГ |
|
 |
|
База знаний: F.A.Q. Почему скорость скачки такая низкая - 1.5-2 Мбит/с? Вероятно
вы проверяли скорость скачивания в 1 поток. (При этом вы могли
заметить, что скорость скачивания каждого пользователя не изменялась при
подключении дополнительных сессий скачивания). Здесь играет роль размер пинга и значение параметра TCP Window операционной системы на вашем компьютере. TCP/IP как известно - протокол с коррекцией ошибок. Каждый пакет содержит в себе контрольную сумму (CRC) данных которые он несет. При создании пакета, хост-источник вычисляет CRC. Хост-получатель - принимает пакет, сравнивает полученные данные и
CRC - если контрольная сумма не верна (пакет пришел с ошибками) - он
перезапрашивает посылку этого пакета, если все верно - он подтверждает
получение и запрашивает следующий. Есественно - что в момент отсылки-получения пакеты
подтверждения/запроса на ретрансляцию - передача данных не ведется, не
ведется она ровно то время которое пакет идет от хоста-назначения к
хосту-источнику (а именно время того самого PING'a) - что _напрямую
влияет на общую скорость потока которую вы получаете_. Для ускорения TCP/IP - существует понятие TCP Window - т.е. передается не 1 пакет за раз, а несколько. Количество пакетов которые передаются за раз, определяется размером TCP Window ("окна" TCP). Формула для получения оптимального размера окна, для конкретных условий сети следующая: размер TCP "окна" (байт) = пропускная способность (бит/c) * задержка (секунд) / 10 скорость 100мбит/c - 125000000 100ms пинг - это 0.1 секунды деление на 10 - чтобы получить размер в байтах (допуская небольшую погрешность) Итого, размер окна для скорости 100 мегабит и пинге 100мс: размер окна = 125000000 * 0.1 / 10 = 1250000 байт Размер окна по умолчанию в линуксе = 131071 байт Как известно, Windows оптмизирован для работы в скоростных сетях с малым размером пинга - LAN сетях. Естественно размер окна согласовывается между обоими сторонами. Значение TCP Window по умолчанию можно изменить в реестре - [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters] Для линукса, мы можем рекомендоваться следующие настройки, для пинга
100ms, чтобы скорость в 1 поток могла достигнуть 400 и более мегабит в
секунду (в зависимости от стороны получателя) на передачу. В /etc/sysctl.conf добавить: net.core.wmem_max = 6553600 net.ipv4.tcp_rmem = 4096 655360 6553600 net.core.rmem_max = 6553600 net.ipv4.tcp_wmem = 4096 655360 6553600 net.ipv4.tcp_window_scaling = 1 C точки зрения объективного качества каналов на 2007 год мы рекомендуем ставить: net.core.wmem_max = 1940160 net.ipv4.tcp_rmem = 4096 194016 1940160 net.core.rmem_max = 1940160 net.ipv4.tcp_wmem = 4096 194016 1940160 net.ipv4.tcp_window_scaling = 1
|
 |
|
|