uTP в µTorrent 1.8 и выше: что, зачем, как?

Ответить на тему
 
Автор Сообщение

art_ru ®

Пол: Не указан

Стаж: 16 лет

Сообщений: 484

Откуда: Оттуда =>

Создавать темы 16-Янв-2010 21:22

[Цитировать]

Пара слов про TCP и UDP. Первый расшифровывается как Transmission Control Protocol, или протокол управления потоком. Он удобен тем, что даёт использующей его программе гарантию, что данные дойдут до адресата целыми, полностью и в том порядке, в котором были отправлены. Его использование требует предварительной установки соединения и его закрытия в конце. Этакое создание "трубы" через которую будет идти обмен данными. UDP же не предоставляет никаких гарантий что данные дойдут, или что дойдут в правильном порядке. Он только позволяет переслать небольшой блок данных (датаграмму) от одного адреса другому. Вся работа по проверке доставки, и при необходимости - повторной посылке, ложится на саму программу.
Поскольку торрент-клиент и так этим занимается - это не большая проблема. Дело в том, что посылаемые через TCP-"трубу" данные в процессе разбиваются на куски ("пакеты"), каждый из которых отправляется независимо. При этом один пакет может идти одним маршрутом, другой - другим, последний кусок может прийти первым, первый - вообще по дороге потеряться. Поэтому каждый участник "трубы" (от операционной системы до маршрутизаторов) вынужден хранить у себя буфер, в который собирает отдельные пакеты, проверяя целостность и порядок, и требуя перепосылку если часть пакетов не дошла.
При этом, если посылающий сидит на широком канале, а принимающий - на модеме, то первый сразу отправляет большой блок данных, который может быстро дойти до провайдера второго, и потихоньку просачиваться в модем. В это время первый, не получив подтверждения о получении, перешлёт часть кусков заново. Ещё раз, и ещё, в результате магистраль провайдера оказывается забита этой ненужной перепосылкой. Одна из основных целей uTP - устранить эту лишнюю нагрузку на провайдеров от P2P-трафика.
Латентно uTP появился в µTorrent версии 1.8, но умел принимать только входящие uTP-соединения, инициировать их сам - не умел. Впервые это научилась альфа-версия 1.9, потом стало возможным включить это и в новых версиях 1.8 ключиком bt.transp_disposition. Его значение от версии к версии менялось, но сейчас устаканилось на следующих битовых флагах:
1 - разрешить инициировать исходящие TCP-соединения,
2 - разрешить инициировать исходящие uTP-соединения,
4 - разрешить принимать входящие TCP-соединения,
8 - разрешить принимать входящие uTP-соединения
Таким образом, 13 (1+4+8), значение по умолчанию в последних версиях 1.8, означает возможность принимать все виды соединений, но самостоятельно устанавливать только TCP. 15 (значение по умолчанию в 2.0) разрешает все виды как исходящих так и входящих соединений. Чтобы запретить uTP вообще (если он вызывает какие-либо проблемы) надо поставить 5 (1+4). Стоит ли ставить 15 в 1.8 - вопрос спорный, на официальном форуме пишут что поддержка uTP в версии 2.0 намного лучше, поэтому скорость в 1.8 может быть хуже, чем по TCP.
В версии 2.0 также появилась поддержка UDP-трекеров. Для трекера вообще TCP очень излишний и требует много лишних ресурсов пакетами установки/закрытия соединения, поэтому для открытых трекеров UDP - благо. Например, последнее время трекер anirena очень глючит по TCP и далеко не с первого раза отвечает, DHT там часто запрещён, а UDP-трекер работает прекрасно. Но для закрытых трекеров он не подходит, т.к. не позволяет послать пасскей, чтобы идентифицировать таким образом качающего. Так что нам он не подходит.
Ещё в 2.0 появится метод обхода некоторых NAT (STUN), что поможет соединяться большему числу NAT-страдальцев, хотя будет работать не во всех случаях.
Лично меня из всех новшеств 2.0 больше всего порадовал TCP Rate Control. Он позволяет подстраивать скорость и TCP-соединений так, чтобы они не мешали другим приложениям и минимизировать лишнюю перепосылку пакетов, о которой написано выше. Раньше это достигалось установкой cFos-драйвера, в котором можно было поставить низкий приоритет торренту, высокий - браузеру, а с версией 2.0 этого больше не требуется. Управляется это опцией bt.tcp_rate_control, если вам важнее чтобы торрент не мешает другим интернет-приложениям - его стоит включить, если важна максимальная скорость торрента - есть смысл отключить, на официальном форуме пишут что это иногда скорость увеличивает.
Добавление: в uTP это делается всегда, даже в версии 1.8, а скорость TCP-трафика подстраивается под загрузку канала только в 2.0.
Впрочем, тут есть интересный момент, что с ней или по uTP исходящий канал может забиваться на 95%, а без неё только с TCP - на 100%, но эта разница в 5% может оказаться той самой излишней перепосылкой одних и тех же пакетов, что канал забивает, а реальной пользы не приносит, так что imho не всегда когда канал чуть недозабивается это значит что новая версия хуже.
Ещё в обсуждениях часто мелькает ключ net.calc_overhead. Если он включен, то при настройке скорости учитывается и служебный трафик - запросы блоков, подтверждения, уведомления какие блоки у кого есть и т.п. Если отключен - считаются только сами блоки данных. Поэтому раньше советовали ограничивать исходящий канал в торренте до 80-90% от реального, иначе он весь забивался отправляемыми блоками, и уведомления о получении блоков и запросы новых не успевали проходить, поэтому серьёзно страдала скорость скачивания. Опять же, на широких каналах некоторые пишут что при выключении этой опции скорость чуть выше, но может это глюк бета-версии и в релизе всё будет нормально.
Тут ещё есть такой момент, в котором я не уверен на 100%, но кажется что служебного трафика в uTP больше. Ибо в каждой маленькой датаграмме надо передавать что это за блок, от какого торрента, а по TCP можно посылать большие блоки, не подписывая каждый кусочек. Впрочем, тут будет служебный трафик самого TCP, так что не факт что он сильно "экономичнее".
Ещё нельзя не упомянуть такое явление, как "шейпинг" или "резание" P2P-трафика некоторыми провайдерами. Для России это (пока?) не актуально, а на открытых трекерах, где много пиров со всего мира, скорость по uTP значительно выше.
С другой стороны, не всё сетевое железо - модемы, марштуризаторы - и не весь софт рассчитывался на такое количество UDP-трафика, поэтому у некоторых пользователей с ним возникают глюки. Например со скоростью - когда периодически она вдруг падает до нуля, потом снова восстанавливается, или плавает от нуля до максимума. Видимо где-то в сетевом окружении переполняется некий связанный с UDP буфер, чёрт знает. Опять же, на официальном форуме можно поискать про совместимость с разным софтом и железом в случае проблем.
Другие "продвинутые" опции, на которые можно обратить внимание:
bt.connect_speed - сколько максимум новых соединений можно устанавливать в секунду (стоит увеличить, у меня стоит 80),
net.max_halfopen - про это много писалось, и менять стоит вместе с патчем tcpip.sys, хотя с протоколом uTP это уже не важно.
net.utp_target_delay - это некий целевой "пинг" при подстройке соединений, в некоторых случаях при его увеличение где-то до 400-500 скорость лучше.
peer.disconnect_inactive_interval - через сколько секунд закрывается соединение с пиром, с которым нет обмена данными, актуально больше для открытых трекеров где больше народу и "плохих" пиров, либо на случай сетевых глюков - чтобы быстрее определять разрыв соединения и переустанавливать его. в некоторых случаях имеет смысл понизить до 90-120.-Первоисточник-

Перевод/расшифровка вкладки дополнительно

• gui.compat_diropen использовать другое диалоговое окно для выбора папок на диске; для тех, у кого проблемы с диалоговым окном по умолчанию
• net.bind_ip если у вас в системе несколько сетевых адаптеров, то укажите здесь IP адрес адаптера, который µT должен использовать для входящих соединений
• net.outgoing_ip если у вас в системе несколько сетевых адаптеров, то укажите здесь IP адрес адаптера, который µT должен использовать для исходящих соединений
• net.outgoing_port заставляет µT использовать только этот порт для исходящих соединений (обычно этот порт выбирается случайно для каждого соединения). Только для Windows 2000 и выше. Иногда настройка может не работать корректно. Эта настройка должна использоваться только в исключительных случаях. Может быть использована для уменьшения количества NAT трансляций и таким образом предотвращения зависания некоторых моделей маршрутизаторов. Может быть использована для решения NAT проблемы входящих соединений в некоторых видах NAT
• net.low_cpu слегка уменьшает использование процессора. Для очень быстрых каналов выключение этой опции может слегка увеличить скорости
• net.max_halfopen как много полуоткрытых соединений µT может иметь одновременно. Это значение не должно быть выше 8 на непропатченной Windows XP SP2.
• net.wsaevents если у вас странные проблемы с файерволом, можно попробовать подкрутить эту настройку - уменьшать значение по единичке и смотреть, будет ли разница
• ipfilter.enable разрешить использование файла блокировки IP адресов ipfilter.dat
• dht.rate (байт/с) контролирует как много трафика может использовать DHT. -1 означает авторегулировку: ваша максимальная скорость отдачи / 16, но не меньше 512 и не больше 8192 байт/с
• rss.update_interval интервал обновления RSS в минутах. 5 минут для значений менее 5.
• gui.update_rate интервал обновления интерфейса программы в миллисекундах, минимум 500мс
• gui.delete_to_trash перемещать удалённые файлы в корзину. Опцию можно также активировать если сделать клик правой кнопкой мыши на кнопке удаления задания и выбрать «Move to trash if possible»
• gui.default_del_action устанавливает режим удаления задания, используемый по умолчанию. Эту настройку лучше изменять так: клик правой кнопкой мыши на кнопке удаления задания, удерживая shift выбрать режим по умолчанию
• gui.bypass_search_redirect при использовании поля поиска в окне µT переходить на поисковые сайты напрямую, таким образом не показывая рекламу с сайта search.utorrent.com
• queue.dont_count_slow_dl/ul при подсчёте «активных» заданий не учитывать задания со скоростью скачивания или отдачи меньше чем 1кбайт/с
• queue.prio_no_seeds при сидировании давать приоритет заданиям, на раздаче которых нет других сидов
• bt.scrape_stopped разрешить scrape для полностью остановленных заданий
• bt.compact_allocation при скачивании создавать файлы на диске как в языке Python для того, чтобы сэкономить место. Нельзя использовать совместно с опцией «partfile». Эта возможность может работать некорректно, если вы получаете сообщение «Element not found», то это как раз тот случай
• bt.enable_tracker разрешает встроенный трекер с адресом http://ваш_IP:порт/announce
• bt.multiscrape разрешает multi-scrape — посылание infohash сразу нескольких торрентов в одном scrape запросе. Нет необходимости менять эту опцию, поскольку µT сам автоматически определяет когда трекер не поддерживает multi-scrape
• bt.send_have_to_seed разрешает посылание «have» сообщений (о том, что у вас появился новый кусок) сидам
• bt.set_sockbuf отладочная опция для автоопределения размера TCP буфера (so_sndbuf) и регулирования его в зависимости от вашей скорости отдачи. Она не регулирует его основываясь задержке (latency)
• bt.connect_speed контролирует количество соединений в секунду, которые устанавливает µT
• bt.prio_first_last_piece пытаться в первую очередь скачать первый и последний кусок каждого файла
• bt.allow_same_ip разрешать несколько соединений с одного IP адреса, по умолчанию такое не разрешается как защита от нечестных личеров
• bt.no_connect_to_services не устанавливать соединения с клиентами, использующими порты прослушивания 25 или 110. Включайте, если ваш антивирус недоволен, и вы не хотите выключать в нём автопроверку почты
• bt.transp_disposition контролирует какой транспорт должен использоваться для исходящих соединений (это значит, что он не фильтрует входящих соединений). Допустимые значения параметра:
    1 : разрешить инициировать исходящие TCP-соединения.
    2 : разрешить инициировать исходящие uTP-соединения.
    4 : разрешить принимать входящие TCP-соединения.
    8 : разрешить принимать входящие uTP-соединения
Флаги можно комбинировать. Таким образом, 13 (1+4+8), значение по умолчанию в последних версиях 1.8.Х, означает возможность принимать все виды соединений, но самостоятельно устанавливать только TCP. 15 (значение по умолчанию в 1.9\2.0) разрешает все виды как исходящих так и входящих соединений. Чтобы запретить uTP вообще (если он вызывает какие-либо проблемы) надо поставить 5 (1+4).
• peer.lazy_bitfield общаться с другими клиентами немного по-другому, иногда помогает против некоторых интернет провайдеров, которые специально препятствуют сидированию
• peer.resolve_country использовать DNSBL сервис для показа флагов стран в списке пиров. Нельзя использовать одновременнно с файлом flags.conf
• peer.disconnect_inactive отключаться от неактивных пиров после определённого периода времени (300 секунд по умолчанию). Однако клиент не будет отключаться, если общее число пиров в трое меньше максимального количества соединений на задание
• peer.disconnect_inactive_interval интервал времени в секундах для предыдущей опции, значения меньше 300 игнорируются
• diskio.flush_files закрывать file handles каждую минуту. Такое поведение может иногда наблюдаемый эффект некорректного поведения системного кэша Windows, в результате чего случаются утечки памяти
• diskio.sparse_files резервировать места под файлы ровно столько, сколько необходимо, работает только на NTFS диске, увеличивает фрагментацию
• diskio.use_partfile использовать «partfile» для хранения кусков данных, частично принадлежащих файлам, которые вы выбрали «Не скачивать». Это поведение по умолчанию, и если вы поставите эту опцию в false, то µT придётся некоторые файлы «Не скачивать» создавать на диске целиком
• diskio.smart_hash вычислять контрольную сумму данных прямо в памяти, вместо того, чтобы записывать данные на диск, считывать, и затем вычислять контрольную сумму. Должно уменьшить количество считываний с диска
• diskio.coalesce_writes пытаться минимизировать количество вызовов к WriteFile. Может помочь добиться немного меньшего количества записей на диск, но за счёт использования дополнительных ресурсов памяти и процессора
-Скачать с официального сайта
[Профиль] [ЛС]

P_Karlo

Пол: Не указан

Стаж: 15 лет

Сообщений: 418

Откуда: Курск

Создавать темы 17-Янв-2010 12:47 (спустя 15 часов)

[Цитировать]

спасибо огромное, art_ru, за информацию! мне она очень пригодилась)
[Профиль] [ЛС]

chelovek_dobra

Пол: Не указан

Стаж: 15 лет

Сообщений: 98

Откуда: ЦЕНТР

Создавать темы 18-Янв-2010 18:26 (спустя 1 день 5 часов)

[Цитировать]

спасибо
[Профиль] [ЛС]

gloomzz

Пол: Не указан

Стаж: 15 лет

Сообщений: 748

Создавать темы 20-Янв-2010 02:07 (спустя 1 день 7 часов)

[Цитировать]

Было на загрузке 16 раздач с нэта, качалось только 2 и то кое как, хоть и сиды были на других. Почитал эту статью изменил пару значений и опа, сразу все 16 закачек начали качаться, плюс куча раздач начали раздаваться !!! utorrent 1.8.5
[Профиль] [ЛС]

Angmar

Пол: Не указан

Стаж: 16 лет

Сообщений: 448

Создавать темы 20-Янв-2010 03:38 (спустя 1 час 30 минут)

[Цитировать]

gloomzz, ну дык измененные настройки в студию =)
[Профиль] [ЛС]

gloomzz

Пол: Не указан

Стаж: 15 лет

Сообщений: 748

Создавать темы 20-Янв-2010 15:29 (спустя 11 часов)

[Цитировать]

Angmar
bt.transp_disposition 15
bt.connect_speed 80
peer.disconnect_inactive_interval 100
utorrent 1.85.17414-сейчас мудрил с версиями юторрента, остался на 1.8.5
Сейчас не особо конечно скорость, но вот ночью как поменял все значения, сразу же скорость отдачи подскочила в общем до 500кб и начали раздаваться старые раздачи с приличной скоростью.
[Профиль] [ЛС]

yurok

Пол: Не указан

Стаж: 16 лет

Сообщений: 298

Создавать темы 28-Фев-2010 21:29 (спустя 1 месяц 8 дней)

[Цитировать]

есть мнение, что UDP не айсь...
http://rutracker.org/forum/viewtopic.php?t=2783331
http://www.webplanet.ru/news/research/2008/12/02/torrent_udp.html
[Профиль] [ЛС]
Показать сообщения:    
Ответить на тему

Текущее время: 21-Ноя 12:16

Часовой пояс: UTC + 3



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