Kademlia Kademlia — это реализация распределённой хеш-таблицы для одноранговых компьютерных сетей, разработанная Petar Maymounkov и David Mazières. Протокол Kademlia определяет структуру сети, регулирующей связь между узлами, и способ обмена информацией в ней. Узлы сети, работающей по протоколу Kademlia, сообщаются благодаря транспортному уровню UDP. Узлы Kademlia хранят данные посредством распределённых хеш-таблиц (DHT). В итоге над существующей LAN/WAN (как интернет) создаётся новая виртуальная или оверлейная сеть, в которой каждый узел обозначается специальным номером («Node ID»). Этот номер также выполняет и другие функции.
Узел, который хочет присоединиться к сети, обязан пройти «загрузочную» процедуру (bootstrap proccess). В этот момент узел должен знать адрес другого узла (полученный от пользователя или взятый из списка), который уже входит в оверлейную сеть. Если подключаемый узел ещё не входил в эту сеть, то происходит расчет случайного значения ID, которое ещё не принадлежит никакому узлу. ID используется до момента выхода из сети.
Алгоритм Kademlia базируется на расчете расстояния по Хэммингу между узлами путем применения операции исключающее ИЛИ к ID этих узлов.
Эта «дистанция» не имеет никакого отношения к географическому положению. К примеру, узлы из Германии и Австралии могут быть «соседними» в оверлейной сети.
Информация в Kademlia хранится в так называемых «значениях» (values). Каждое «значение» привязано к «ключу» (key).
При поиске ключа алгоритм исследует сеть в несколько шагов. Каждый шаг приближает к искомому узлу до полного нахождения «значения» либо до отсутствия таких узлов. Количество контактируемых узлов зависит от размера сети логарифмически: при увеличении количества участников (number of participants) вдвое количество запросов увеличится всего на один.
Использование в файлообменных сетях
Задача хранения индексов файлов в сети Kad раскладывается на всех участников сети. Если узел хочет расшарить файл, он обрабатывает его, получая хэш, который идентифицирует этот файл в сети. Затем узел ищет несколько узлов, ID которых близки к хэшу (размеры хешей и узлов должны совпадать), при этом на эти узлы отдается информация об адресе этого узла. Клиент при поиске ищет ID узла, который имеет наименьшую дистанцию к хэшу файла и извлекает из него адреса узлов, которые имеют этот файл. Контакты, хранимые в сети, всегда находятся в постоянном изменении, так как узлы постоянно подключаются и отключаются. Для отказоустойчивости эти контакты реплицируются по нескольким узлам.
Поиск осуществляется по ключевым словам. Имя файла разбивается на составные части. Каждое ключевое слово хэшируется и сохраняется в сети аналогично файловому хэшу, вместе с соответствующим файлом и хэшем файла. Ищущий узел выбирает одно из ключевых слов, соединяется с узлом, чей ID самый близкий к хэшу ключа и запрашивает с него список файлов для этого ключа. Так как каждый файл в списке имеет свой хэш, имя файла легко вычисляется.
Клиенты файлообменных сетей, использующие различные вариации протокола Kademlia
Протокол Kad, используемый в клиентах eMule, aMule, MLDonkey и др.
Azureus DHT — в клиенте Azureus сети BitTorrent
Mainline DHT — в большинстве клиентов сети BitTorrent
В клиенте RevConnect сети Direct Connect
Протокол Overnet — в закрытом ныне клиенте eDonkey2000
Ссылки
Российский сайт сети Kad Network
F.A.Q. по протоколу Kademlia
См. также в других словарях:
Kademlia — is a distributed hash table for decetralized peer to peer computer etworks desiged by Petar Maymoukov ad David Mazières [ [http://pdos.csail.mit.edu/~petar/papers/maymoukov-kademlia-lcs.pdf Kademlia: A Peer to peer iformatio… (Wikipedia)
Kademlia — ist ei Techik für Peer to Peer Netze, welches eie verteilte Hashtabelle implemetiert, also Iformatioe i eiem verteilte Netzwerk speichert. Kademlia legt ur Art ud Aufbau des Netzes fest. Es wurde vo Petar Maymoukov ud… (Deutsch Wikipedia)
Peer-to-peer — "For other uses of the term see Peer-to-peer (disambiguatio)":"For peer-to-peer etworks used for file sharig see File sharig"A peer to peer (or P2P) computer etwork uses diverse coectivity betwee participats i a etwork ad the… (Wikipedia)
Application Layer — The Applicatio Layer is the seveth level of the seve-layer OSI model, ad the top layer of the TCP/IP model. It iterfaces directly to ad performs commo applicatio services for the applicatio processes; it also issues requests to the…
Distributed hash table — s (DHTs) are a class of decetralized distributed systems that provide a lookup service similar to a hash table: ("ame", "value") pairs are stored i the DHT, ad ay participatig ode ca efficietly retrieve the value…
BitTorrent (protocol) — BitTorret is a peer-to-peer file sharig protocol used to distribute large amouts of data. The iitial distributor of the complete file or collectio acts as the first "seed". Each peer who dowloads the data also uploads them to other peers.…
Chord (distributed hash table) — Chord is oe of the origial distributed hash table protocols. Chord is beig developed at MIT ad the curret Chord source code ca be dowloaded ad used uder the MIT Licese.Overview Usig the Chord lookup protocol, ode keys are arraged…
Overnet — Overet was a decetralized peer-to-peer computer etwork, usually used for sharig large files (e.g., movies ad CD images). Overet implemets the Kademlia algorithm. I late 2006, Overet ad all Overet-owed resources were take dow as a…
I2P — Ifobox Software ame I2P logo captio developer I2P developers latest_release_versio 0.6.4 latest_release_date release date 2008 10 6 operatig_system Cross-platform gere Overlay etwork licese Free/Ope Source -…
KAD — Acroym of Korea adoptee Short for Kad Network - file sharig etwork used by millios of people. Short for Kademlia - a peer to peer overlay system. Short for Ket Auto Developmets - a compay resposible for some of the fastest Mii's i…