Определение самого быстрого однорангового соединения BitTorrent - PullRequest
4 голосов
/ 12 ноября 2010

Как определить, к какому пиру вы подключены, имеет самое быстрое соединение (скорость загрузки)?

Преобладает ли фактическая связь пира, который является самым быстрым, или пир, которому нужно больше всего кусков, заставит его загружать самые быстрые, так как с него загружается меньше людей?

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

Спасибо

1 Ответ

4 голосов
/ 13 ноября 2010

Пинг (эхо-запрос / ответ ICMP) даст вам задержку однорангового узла, но не доступную пропускную способность, которую имеет одноранговый узел.Вам нужна полоса пропускания, поскольку TCP хорошо справляется с задержкой продуктов * и выясняет, как сделать соединение быстрым, даже если он использует спутниковую связь.

Что вы делаете, так это подключаетесь ко всем из них.Подключение 40 пиров не редкость.И тогда вы решаете, что отцепить, основываясь на их текущих ставках по отношению к вам (пока вы не станете сеялкой).Он также должен быть довольно динамичным, поскольку доступная пропускная способность меняется со временем.Лучший совет, который я могу дать, это прочитать

http://www.bittorrent.org/bittorrentecon.pdf

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

Итак: вы хотите измерять пропускную способность, а не задержку.Следовательно, пинг - неподходящий инструмент для работы.Измерение пропускной способности легче всего выполнить, отслеживая скорость, с которой вы отправляете пакеты одноранговому узлу.

Я думаю, что алгоритм удушения / снятия с привязки и выбор равноправных соединений - одна из самых сложных частей, чтобы получить право на клиента,Лучше всего решать ручкой, бумагой и мозгом, а не сидеть перед компьютером и писать код.

...