2011-09-28 3 views
4

누군가가 본선 DHT의 사양에 대한 설명을 명확히 할 수 있습니까?Mainline DHT 부트 스트랩 프로세스

첫 번째 노드를 라우팅 테이블에 삽입 할 때 노드가 DHT에서 가장 가까운 노드를 찾도록 시도해야합니다. find_node 메시지를 더 가깝고 더 가깝게 발견 할 때까지 find_node 메시지를 발행하여이를 수행합니다.

"더 가깝게 찾을 수 없을 때까지"는 무엇을 의미합니까?

내 프로그램이 find_node 메시지를 보내기 시작할 때 노드 집합이 비어 있습니다. find_node 메시지에 대한 각 응답은 약 8 dht 노드를 반환합니다. 내 프로그램에서 목록에 수집합니다.

언제 내 프로그램이 노드 메시지를 찾지 못하게해야합니까?

나는 이미 수집 된 노드의 목록에있는 모든 요소가 dht 노드 집합을 수신 할 때 전송을 중단해야한다고 생각합니까?

맞습니까?

미리 감사드립니다.

답변

6

메인 라인 DHT는 kademlia 구현입니다. 자세한 내용은 the paper을 참조하십시오.

받는 노드 8 개에서 자신의 ID와 가까운 노드 ID로 정렬 한 다음 find_node을 3 개의 상위 노드 (가장 가까운 3 개의 노드)에 보냅니다. 그런 다음 8 x 3 개의 노드를 추가로 수신하고 노드 목록에 노드를 삽입하고 노드가 얼마나 가까운 지 주문하십시오. 받은 노드가 이미 목록에 올 때까지 메시지를 3 개의 최상위 노드 (메시지를 이미 보낸 사람은 무시)로 계속 보내십시오. 즉 종료 조건은 사용자가 가장 가까운 모든 8 개 노드 (목록 상단)에 메시지를 보냈다는 것입니다.

논문에서 설명한 것처럼 거리 메트릭은 XOR입니다. 노드 ID가 다른 노드와 얼마나 멀리 떨어져 있는지 계산하려면 node-IDs를 XOR하십시오. 결과가 낮을수록 노드가 서로 가깝습니다.

실생활에서는 주어진 시간에 3 개의 미해결 요청을 유지하고 시간 초과를 통해 일시적으로 더 많은 미해결 요청을 열어서이 작업을 조금 더 정교하게 수행 할 수 있습니다.

관련 문제