utah distributed systems meetup and reading group - kademlia · kademlia utah distributed systems...
Post on 18-Jan-2020
2 Views
Preview:
TRANSCRIPT
Kademlia
Utah Distributed Systems Meetup andReading Group - Kademlia
JT Olds
Space MonkeyVivint R&D
January 20, 2015
Kademlia
Outline
1 Introduction
2 Kademlia Basics
3 Routing Table
4 Protocol
5 Field notes
Kademlia
Introduction
Outline
1 Introduction
2 Kademlia Basics
3 Routing Table
4 Protocol
5 Field notes
Kademlia
Introduction
Introduction
1 Introduction
Kademlia
Introduction
Distributed Hash TablesWhy?What options are out there?
Kademlia
Introduction
Distributed Hash TablesWhy?What options are out there?
Kademlia
Introduction
Distributed Hash TablesWhy?What options are out there?
Kademlia
Kademlia Basics
Outline
1 Introduction
2 Kademlia Basics
3 Routing Table
4 Protocol
5 Field notes
Kademlia
Kademlia Basics
Kademlia Basics
2 Kademlia BasicsIdsDistance
Kademlia
Kademlia Basics
Ids
Kademlia Basics
2 Kademlia BasicsIdsDistance
Kademlia
Kademlia Basics
Ids
Ids
Every node in the network gets a unique, random id of thesame length (160 bits).
00111010001...1100100101111
Values also get ids of the same length.
Kademlia
Kademlia Basics
Distance
Kademlia Basics
2 Kademlia BasicsIdsDistance
Kademlia
Kademlia Basics
Distance
Distance
Every node id has a defined distance from every othernode and value id.We store values on the nearest k nodes.
Kademlia
Kademlia Basics
Distance
Distance
Every node id has a defined distance from every othernode and value id.We store values on the nearest k nodes.
Kademlia
Kademlia Basics
Distance
Distance
Every node id has a defined distance from every othernode and value id.We store values on the nearest k nodes.
Kademlia
Kademlia Basics
Distance
Interlude about metrics
1 d(x , y) ≥ 02 d(x , y) = 0 ⇐⇒ x = y3 d(x , y) = d(y , x)4 d(x , z) ≤ d(x , y) + d(y , z)
Kademlia
Kademlia Basics
Distance
Interlude about metrics
1 d(x , y) ≥ 02 d(x , y) = 0 ⇐⇒ x = y3 d(x , y) = d(y , x)4 d(x , z) ≤ d(x , y) + d(y , z)
Kademlia
Kademlia Basics
Distance
Interlude about metrics
1 d(x , y) ≥ 02 d(x , y) = 0 ⇐⇒ x = y3 d(x , y) = d(y , x)4 d(x , z) ≤ d(x , y) + d(y , z)
Kademlia
Kademlia Basics
Distance
Interlude about metrics
1 d(x , y) ≥ 02 d(x , y) = 0 ⇐⇒ x = y3 d(x , y) = d(y , x)4 d(x , z) ≤ d(x , y) + d(y , z)
Kademlia
Kademlia Basics
Distance
Interlude about metrics
1 d(x , y) ≥ 02 d(x , y) = 0 ⇐⇒ x = y3 d(x , y) = d(y , x)4 d(x , z) ≤ d(x , y) + d(y , z)
Kademlia
Kademlia Basics
Distance
Interlude: Standard distance metric
1 |x − y | ≥ 02 |x − y | = 0 ⇐⇒ x = y3 |x − y | = |y − x |4 |x − z| ≤ |x − y |+ |y − z|
Kademlia
Kademlia Basics
Distance
Interlude: Standard distance metric
1 |x − y | ≥ 02 |x − y | = 0 ⇐⇒ x = y3 |x − y | = |y − x |4 |x − z| ≤ |x − y |+ |y − z|
Kademlia
Kademlia Basics
Distance
Interlude: Standard distance metric
1 |x − y | ≥ 02 |x − y | = 0 ⇐⇒ x = y3 |x − y | = |y − x |4 |x − z| ≤ |x − y |+ |y − z|
Kademlia
Kademlia Basics
Distance
Interlude: Standard distance metric
1 |x − y | ≥ 02 |x − y | = 0 ⇐⇒ x = y3 |x − y | = |y − x |4 |x − z| ≤ |x − y |+ |y − z|
Kademlia
Kademlia Basics
Distance
Interlude: Standard distance metric
1 |x − y | ≥ 02 |x − y | = 0 ⇐⇒ x = y3 |x − y | = |y − x |4 |x − z| ≤ |x − y |+ |y − z|
Kademlia
Kademlia Basics
Distance
Interlude: XOR metric
1 x ⊕ y ≥ 02 x ⊕ y = 0 ⇐⇒ x = y3 x ⊕ y = y ⊕ x4 x ⊕ z ≤ x ⊕ y + y ⊕ z
Kademlia
Kademlia Basics
Distance
Interlude: XOR metric
1 x ⊕ y ≥ 02 x ⊕ y = 0 ⇐⇒ x = y3 x ⊕ y = y ⊕ x4 x ⊕ z ≤ x ⊕ y + y ⊕ z
Kademlia
Kademlia Basics
Distance
Interlude: XOR metric
1 x ⊕ y ≥ 02 x ⊕ y = 0 ⇐⇒ x = y3 x ⊕ y = y ⊕ x4 x ⊕ z ≤ x ⊕ y + y ⊕ z
Kademlia
Kademlia Basics
Distance
Interlude: XOR metric
1 x ⊕ y ≥ 02 x ⊕ y = 0 ⇐⇒ x = y3 x ⊕ y = y ⊕ x4 x ⊕ z ≤ x ⊕ y + y ⊕ z
Kademlia
Kademlia Basics
Distance
Interlude: XOR metric
1 x ⊕ y ≥ 02 x ⊕ y = 0 ⇐⇒ x = y3 x ⊕ y = y ⊕ x4 x ⊕ z ≤ x ⊕ y + y ⊕ z
Why?
Kademlia
Kademlia Basics
Distance
Interlude: XOR metric
1 x ⊕ y ≥ 02 x ⊕ y = 0 ⇐⇒ x = y3 x ⊕ y = y ⊕ x4 x ⊕ z ≤ x ⊕ y + y ⊕ z
Why? Because:a⊕ b ≤ a + bx ⊕ z = (x ⊕ y)⊕ (y ⊕ z)so (x ⊕ y)⊕ (y ⊕ z) ≤ x ⊕ y + y ⊕ z
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
id euclidian xor101 0 0000 5 5001 4 4010 3 7011 2 6100 1 1101 0 0110 1 3111 2 2
Kademlia
Kademlia Basics
Distance
000 001 010 011 100 101 110 111
Kademlia
Kademlia Basics
Distance
000 001 010 011 100 101 110 111
Kademlia
Kademlia Basics
Distance
000 001 010 011 100 101 110 111
Kademlia
Kademlia Basics
Distance
000 001 010 011 100 101 110 111
Kademlia
Kademlia Basics
Distance
000 001 010 011 100 101 110 111
Kademlia
Kademlia Basics
Distance
......
......
......
......
bn−1 = 1
...
b2 = 1
b1 = 0
b0 = 1
· · ·
0 2n − 1
Kademlia
Kademlia Basics
Distance
Space of 160−bit numbers
0
0
0
0
0
00
00
0
0
0
00
0
1
1
1
1 1
1
1
1 1
1
1
1 1
1
111
00...0011...11
0
0
����� ¤����7¢�� ����� � ¢ � ��� ¢w¡�� G¡����m¤��� �ï���âP£���� �w ���� �! ��L �� �"�#�½£�¢w � � � ��$ � �%� ���� � '&�&(&��� ��)�� G¡��!�m¤�*'¡ ¢!�+�!,V¢-�`�R��� �! ��.½�ã G¡����V� ��� /� � £0� � �)�)� �� � 1&(&2& �3.ã�G �½¢!,4�,¢]£5� � G¢w£f f¤
1
2
3
4
0
0
0
0
0
0
0
00
00
0
0
0
00
0
1
1
1
1 1
1
1
1 1
1
1
1 1
1
111
00...0011...11 Space of 160−bit numbers
����� ¤06%�87'�[£f¢V ��� � ¢ � �%� ���%� � ¯�:92;1¤8<=�&¡��� �� � � �%� �> � (�@?ã¡���ACB ��� A � �ã�� �� �� �)�)�D � ��E?ã¡���A�B � � �%�Ú��.ã£N£5�&�¯� � ,4�!���+���I¢w¡ �C��� � ��$�¢ � �GF). �I¡�� ��� � £H�#�m�(�I¡á¢ � �£5���m�(�I¡ � �)�)�V�f¤'��� �3� ��� �]�(� � �I� � J� � 2��?�¡��!?�¡��&�(� � ¯�� �� �1�(?ã¢w£5�3��$K�!L�M�N�� � O9P;,�5Q¢ � �1��� �� ��R� �! (� �/���S�4�%. ?��K£5� � ,4�I¡ � �* 2�, �� �* G¢w¡ � �I � �)�)��¤4TK�!���! U �� � ����.ã�G G¡ ¢V (�V:W�X �I�&�¯�G¢ � �&��1¢�� �R�%� � � ¤8�K� �OA�¡i�G V:W�XY� �^ (� � �%� � � Qã¢��á��I¢�� �D� � �! � 2� � � ¤[Z).½���(�!F). � � V:W�X ��¢V¡��1 2� � �%� �&��¡��& (.�¡ � �!���)�L ��)�\?ã¡��!, � �4.�� VOW�X ¤
Kademlia
Kademlia Basics
Distance
Distance
Every node id has a defined distance from every othernode and value id.We store values on the nearest k nodes.
Kademlia
Routing Table
Outline
1 Introduction
2 Kademlia Basics
3 Routing Table
4 Protocol
5 Field notes
Kademlia
Routing Table
Routing Table
3 Routing TableBucketsReplacement Cache
Kademlia
Routing Table
Buckets
Routing Table
3 Routing TableBucketsReplacement Cache
Kademlia
Routing Table
Buckets
1 0 1 1 · · · 0
entry 1: id, ip, portentry 2: id, ip, port...entry k : id, ip, port
Kademlia
Routing Table
Buckets
1 0 1 1 · · · 0
entry 1: id, ip, portentry 2: id, ip, port...entry k : id, ip, port
Kademlia
Routing Table
Buckets
1 0 1 1 · · · 0
entry 1: id, ip, portentry 2: id, ip, port...entry k : id, ip, port
Kademlia
Routing Table
Buckets
Space of 160−bit numbers
0
0
0
0
0
00
00
0
0
0
00
0
1
1
1
1 1
1
1
1 1
1
1
1 1
1
111
00...0011...11
0
0
����� ¤����7¢�� ����� � ¢ � ��� ¢w¡�� G¡����m¤��� �ï���âP£���� �w ���� �! ��L �� �"�#�½£�¢w � � � ��$ � �%� ���� � '&�&(&��� ��)�� G¡��!�m¤�*'¡ ¢!�+�!,V¢-�`�R��� �! ��.½�ã G¡����V� ��� /� � £0� � �)�)� �� � 1&(&2& �3.ã�G �½¢!,4�,¢]£5� � G¢w£f f¤
1
2
3
4
0
0
0
0
0
0
0
00
00
0
0
0
00
0
1
1
1
1 1
1
1
1 1
1
1
1 1
1
111
00...0011...11 Space of 160−bit numbers
����� ¤06%�87'�[£f¢V ��� � ¢ � �%� ���%� � ¯�:92;1¤8<=�&¡��� �� � � �%� �> � (�@?ã¡���ACB ��� A � �ã�� �� �� �)�)�D � ��E?ã¡���A�B � � �%�Ú��.ã£N£5�&�¯� � ,4�!���+���I¢w¡ �C��� � ��$�¢ � �GF). �I¡�� ��� � £H�#�m�(�I¡á¢ � �£5���m�(�I¡ � �)�)�V�f¤'��� �3� ��� �]�(� � �I� � J� � 2��?�¡��!?�¡��&�(� � ¯�� �� �1�(?ã¢w£5�3��$K�!L�M�N�� � O9P;,�5Q¢ � �1��� �� ��R� �! (� �/���S�4�%. ?��K£5� � ,4�I¡ � �* 2�, �� �* G¢w¡ � �I � �)�)��¤4TK�!���! U �� � ����.ã�G G¡ ¢V (�V:W�X �I�&�¯�G¢ � �&��1¢�� �R�%� � � ¤8�K� �OA�¡i�G V:W�XY� �^ (� � �%� � � Qã¢��á��I¢�� �D� � �! � 2� � � ¤[Z).½���(�!F). � � V:W�X ��¢V¡��1 2� � �%� �&��¡��& (.�¡ � �!���)�L ��)�\?ã¡��!, � �4.�� VOW�X ¤
Kademlia
Routing Table
Buckets
V ��.� ��� � �¢w�����3$ �P¡�¢ � �%� �3 /�)�m�(�392; � �/M�M½¤¶¤ M-M
00...0011...11 Space of 160−bit ID numbers
01
00
1
1
1
1
0
0
0
1
����� ¤�� ��� ,4����.� � � � �-$}¢á¡���.� ��� � G¢V�����>��,4�I¡� � �I�m¤89 �C� � ¢����#��Q3¢ � �%� �>��¢P��¢]� ��� � �����N���.�£0���I 5Qw¢P�����)�� �>��� �� �� (��?á¡��4.� ���)� G¢w�C���m¤��7�p �� ����N���.�£0���I ¯��A ��� Qm (� ����.ã£����I � �m�(�Y¡ ¢ � � �á£0��,4�I¡i�* �� � � �)�)�����/9P; ¡���? �I¢w (�!�C��� �(?�� � ¯� ��� 2�% P �������.ã£����I ¯�f¤
e~Mme~EdDiO FI×ÃH�D�F&Z�M1Ñ[FVe�ORQ&H�D�EdѽFIT #]T�QmZmDfe�éK_ÕEdÑíÒ�HdDiå�ë�õ&õ�óVÞ��(WVDiH�M1T�QmZmD'éK_�E�ÑLÒ�H�D å�ëõ&õ�ó+é�Q&S[×ÃZ�Ñ[FNWVDpFIT�D�ORÒmE�M #PÙ�Ô�S½ÓGU&D E�_ÕTwEdQ�éKÑ�_ÃÓGÑ � edÑ�Q&S�×`Z�Ô�Dp_ÃT[e~D�H~E�D�Z�Ø�M&DiE � ñ e#Ô[S[ÓGU&DiEHdDißàHdDfe~ÑRé�Q&S�×`Z,Q&T�×ÃM7T[QIEd_ÕßàM�#,QIß�EdÑ�D^T�QmZmD�e�Þ&Ð�Q'FNW&QV_ÃZ'EdÑ�_`e(Ò[HdQVÔ�×ÕD�O%Ø&Ö�F&ZmD�OR×Õ_`F�T�QmZmD�eU&DiD�Ò]F&×Õ×2WNF&×Õ_`Z%Ó QVTVEGF&Ó E�eA_ÃT%FYedS�ÔmE�HdD�D�QIß+e~_ÃaiD�FIEA×ÃD�FVe�E #áT�QmZmDfeiØmD�W&D�T]_Õß3EdÑ�_`eKH�D�ìwS�_ÃHdDfee~Ò�×Ã_ÕE~Ed_ÃT�æ�Ô[S[ÓGU&DiE�e+_ÃTYéKÑ�_`ÓGÑ7E�Ñ�D�T�QmZmDVñ e(QXéKT,ä�\ ZmQPD�e+T[QIEpH�D�ed_ÃZ�D&Þ&ò3_Ãæ&S�H�D��*_Õ×Ã×ÃS[e�E�H�FIEdDfeEdÑ�Dfe~D�F&Z[Zm_�E�_ÕQVT[FI×ãedÒ�×Õ_ÕE�e�Þ��ÄÑ�D�T � H�D ßàH�D�edÑ�D�epEdÑ�D�edÒ�×Ã_�EKÔ�S[ÓGUVD EGeiØmFI×Ã×ãT�QmZmD�e�éK_ÕEdÑ]Ò�H�D å�ëõ&õ�ó*éK_Ã×Õ×#×ÃD�F&HdT%FIÔ�Q&S�EA_ÕE�Þ
��� � � � ��� 4��� ���l������ �� "�(�(e��d� �Ð2QáDiT[edS�H�D�EdÑ[D'Ò�DiHGe~_`e�E�DiT[ÓiD'Q&ßpU&D�MVÙzWXFI×ÃS�D�Ò[F&_ÕHGe�Ø[T�QmZmDfe�O7S[e�E�Ò�DiH�_ÕQmZm_`ÓiF&×Õ×ÃMáH�DiÒ[S�Ô�×Ã_ÃedÑU&DiMme�Þ[þ�EdÑ�D�HdéK_`e~DVØ&E�é�Q,Ò�Ñ�DiT[Q&ORDiT[F7OYFNMYÓiFIS½e~D*×ÕQPQVUwS[Ò[e}ßàQ&H�WNF&×Õ_`ZáU&DiMmepEdQ,ßFI_Ã×�ÞPò3_ÃH�e~E�Øe~QVO,D*QIß�EdÑ�D #1T�QmZmDfepE�Ñ[FXE�_ÃT�_ÕEd_`FI×Ã×ÕM1æ&D EKF,U&D�MVÙzWXFI×ÃS�D*Ò[FI_ÃHAéKÑ�DiT]_�EK_`eAÒ�S�Ô�×Ã_`e~Ñ�DfZ]ORFNM×ÕDfFNW&D�E�Ñ�D7T[D E�é�Q&H�U�ÞãöPD�ÓiQ&T[Z#ؽT�D�é T�QmZmD�e^OYFNM#��Q&_ÃT�EdÑ�D,T�DiE�é}QVHdU]éK_�E�Ñíä�\*e^Ói×ÕQwe~D�H�E�Qe~QVO,D,Ò�S�Ô[×Õ_`e~Ñ[D�Z U&DiM%E�Ñ[FIT EdÑ[DYT�QmZmD�e*Q&T�éKÑ�_`ÓGÑLE�Ñ�DRU&DiMwÙzWXFI×ÃS�D7Ò½FI_ÃH*éAF&e*QVHd_Ãæ&_ÃT[FI×Ã×ÃMÒ�S�Ô�×Ã_ÃedÑ�DfZ�ÞVä�T1Ô½Q&EdÑ1Ó�F&edD�e�ØIEdÑ[D�T�QmZmDfe(éK_ÕEdÑ1F�UVDiMwÙzWNF&×ÕS[D�Ò[FI_ÃHpO7S[e~EpHdD�Ò�S�Ô�×Ã_`e~Ñ�_ÕE�edQ'FVeQ&T[ÓiD�F&æVF&_ÕTáEdQRDiT½e~S�H�D�_�E�_`eKFNWXFI_Ã×ÃF&Ô�×ÃD*QVT1E�Ñ�D #áT�QmZmD�eKÓi×ÕQwe~Dfe�EAE�Q7E�Ñ�D�U&D�M&Þ
Ð2Q³ÓiQ&ORÒ½D�T[e�FXEdD%ßàQVH�T�QmZmDfeY×ÕDfFNWP_ÕT�æ�E�Ñ�DLT�DiE�é}QVHdUãØ(Ö�F&Z�DiOR×Õ_`F�H�DiÒ�S�Ô[×Õ_`e~Ñ[D�eYDfF&ÓGÑU&DiMwÙzWXFI×ÃS�DLÒ[F&_ÕHáQ&T[ÓiDíFITÄÑ�QVS�HfÞ}÷ T[F�� �ÃW&D%_ÃORÒ�×ÕD�ORDiTwE�FIEd_ÃQ&T Q&ß�EdÑ�_`eáe~EdHGFXE�DiæVMÚé�Q&S�×`ZHdDfìVS[_ÕH�DRORF&TPMLORD�e�edF&æ&D�e sÄD�F&ÓGÑíQIßAS�Ò�EdQ # T�QmZmD�e'e�E�Q&H�_ÕT�æ%F%U&D�MwÙ�WXFI×ÃS�D,Ò[FI_ÃH�é�Q&S�×`ZÒ½D�H~ßàQVHdO F,T�QmZmD�×ÃQPQ&UPS�ÒáßàQ&×Ã×ÕQXé�D�Z1ÔwM #��ïó ) +.-5/10áÿ�C�ç�eADiWVDiH�MYÑ�Q&S[H�Þmò�QVH~E�S�T[FIEdDi×ÃM&ØEdÑ�D^HdD�Ò�S�Ô�×Ã_ÃedÑ�_ÃT�æ�Ò�H�QmÓ Dfede}ÓiFITYÔ�D�Ñ[D�FNWP_Õ×ÃM,Q&ÒmE�_ÕOR_ÃaiD�Z#Þwò3_ÃH�e~E�ØVéKÑ�DiT1F'T�QmZmD�H�D�ÓiDi_ÃW&D�epF) +.-5/10�ÿ�CAç ßàQ&H+F�æV_ÕWVDiT7U&DiMwÙzWXFI×ÃS�D(Ò[F&_ÕHfØN_�E+F&e�e~S[O,Dfe�EdÑ�DAÿ�C�ç�é�FVe�F&×ÃedQ�_`ededS�DfZ�EdQ^EdÑ[D
Kademlia
Routing Table
Replacement Cache
Routing Table
3 Routing TableBucketsReplacement Cache
Kademlia
Routing Table
Replacement Cache
1 0 1 1 · · · 0
entry 1: id, ip, portentry 2: id, ip, port...entry k : id, ip, port
replacement 1: id, ip, portreplacement 2: id, ip, port
Kademlia
Routing Table
Replacement Cache
�
��� �
��� �
��� �
��� �
r
� ����� r ���� r ��� ���� ������
����� ¤��%� W ¡��P��¢w� � � � P�>��$ã¡����ᢠ���C��� � � � � ��� ��¢ � �P �� �I¡ � ��.�¡K¢P�(¢/$ . � £f � � � ��$ . ?� � �I�m¤��� �� �¢-B � ��¡���?ã¡��&�(� � G�=� ��� .½ (�&�f¤1��� ���á¢�B � �7��� �! ��� �� �á �� �I$c¡ ¢P£� � � � ��$ � �%� �&� (��¢w ��G G¢��4�!� � � � ��� �1¢w ���I¢P�G � � ��� .½ (�&�� ���¢w �¢-�`�(���G G¢��4�!� � � � ��� �1¢w :�#�&¢w�G � �� ���� ��� .½ (�&�f¤
�ÄÑ�DiTYF�Ö�F&Z�DiOR×Õ_`F*T�QmZmD�H�D�ÓiDi_ÃW&D�e�F&TwM7ORD�e�edF&æ&D�ÛàH�D�ìwS�Dfe�E(QVH+HdD�Ò�×ÕM�Ý�ßàH�Q&O FIT�Q&EdÑ�D�HT�QmZmD&Øf_�E�S�ÒãZ�FXE�D�e�EdÑ[D}FIÒ[Ò�HdQVÒ�H�_ÃFIEdD #wÙzÔ�S[ÓGUVD E�ßàQ&H#E�Ñ�DAe~D�T[ZmDiHfñ e2T�QmZmD}ä�\'ÞNäzß�E�Ñ�D}edDiT½Zm_ÕT[æT�QmZmD�FI×ÃHdDfF&ZmMRD ëm_`e�EGe�_ÕT1EdÑ�D�H�D�Ó _ÃÒ�_ÃDiTwE�ñ e�#wÙzÔ�S[ÓGU&DiE�ØwEdÑ[D*H�D�Ói_ÕÒ[_ÕD�TVEAORQXW&Dfep_ÕEAEdQ7EdÑ�D*E�F&_Õ×QIß�EdÑ[D^×Ã_Ãe~E�Þwäzß#E�Ñ�D�T�QmZmD^_Ãe}T�Q&EAF&×ÕH�D�FVZmM'_ÃT�E�Ñ�D^F&Ò�Ò�H�Q&Ò�H�_ÃFIEdD #PÙ�Ô�S½ÓGU&D E�FIT[ZRE�Ñ�D�Ô[S[ÓGU&DiEÑ[F&e*ßàD�é}D�H�EdÑ[F&T�# D�TVE�Hd_ÃD�e�ØãEdÑ[DiT�EdÑ�DYH�D�Ói_ÕÒ[_ÕD�TVE���S½e�E�_ÃT[edDiHdE�e*EdÑ[DYT�Dié e~D�T[ZmD�H�FXE�EdÑ[DE�FI_Ã×pQ&ßAEdÑ�Dá×Õ_`e�EfÞ2äzßKE�Ñ�D1FIÒ[Ò�HdQVÒ�H�_ÃFIEdD #wÙzÔ�S[ÓGUVD E�_`e�ßàS�×Ã×cØ3Ñ�QXé�DiWVDiHfØãEdÑ�D�T�EdÑ�D1HdDfÓ _ÃÒ�_ÕD�TwEÒ�_ÕT[æVeAE�Ñ�D #wÙzÔ�S[ÓGUVD Efñ eA×ÃD�FVe�EdÙ�H�D�ÓiDiTwEd×ÃMáedDiD�T]T[QPZ�D�EdQ1Z�D�Ó _`ZmD�éKÑ[FIE�EdQáZmQ[Þ�äzß+E�Ñ�D�×ÃD�FVe�EdÙHdDfÓ DiTwE�×ÕM1edDiD�TáT[QPZ�D�ßFI_Ã×ÃeAE�QRHdDfe~Ò�Q&T[Z#Ø�_�E�_`eADiWP_`Ó¯E�D�ZáßàHdQVO EdÑ[D #wÙ�Ô[S[ÓGU&DiEKF&T[ZáEdÑ�D�T[Diée~D�T[ZmDiH*_ÃT[e~D�H~E�D�ZLFIE�E�Ñ�D�EGFI_Ã×cÞ2þ�EdÑ[DiH�éK_ÃedD&ؽ_�ß(E�Ñ�D,×ÕDfF&e~E~ÙzHdDfÓ DiTwE�×ÕM]e~D�DiTLT�QmZmD,H�D�edÒ½QVT[Z�e�Ø_�E�_`eKORQXW&DfZYEdQRE�Ñ�D�E�F&_Õ×�Q&ß�E�Ñ�D�×Ã_Ãe~E�Ø[F&T[Z1EdÑ�D�T�D�é�edDiT½ZmDiHfñ eAÓiQ&TwE�FVÓ¯EK_Ãe�Zm_Ãe�ÓiF&H�Z�D�Z�Þ
#wÙ�Ô[S[ÓGU&DiE�e^D âãD�Ó¯E�_ÕWVDi×ÃM%_ÕORÒ�×ÃDiORDiTwE�Fá×ÕDfF&e~E~ÙzHdDfÓ DiTwE�×ÕM%e~D�DiT DiWP_ÃÓ Ed_ÃQ&T Ò½QV×Õ_`Ó MVØ�Dië�Ó DiÒ�EEdÑ[FIE�×Ã_ÕWVD^T[QPZ�D�e�FIH�D�T�D�W&DiH�H�DiORQXW&DfZ,ßàHdQVO EdÑ�D*×Õ_`e~E�ÞmÐAÑ�_`e}Ò[HdDißàDiH�DiT[ÓiD�ßàQ&H�Q&×`Z1ÓiQ&TwE�FVÓ¯EGe_Ãe�Z�Hd_ÃW&D�T ÔPMíQVS�H'F&T[FI×ÃMme~_`e*QIß\�*TwS�EdDi×Ã×`F]EdHGF&Ó D�Z[FXE�F%ÓiQ&×Ã×ÕDfÓ¯EdDfZ�ÔwM�ömFIH�Q&_ÃS�D E�Þ�FI×�Þ � � ��Þò�_Ãæ&S[HdD��^edÑ�QXé�e2EdÑ�D�Ò½D�H�ÓiDiTwE�F&æ&D}QIß1�*TPSmE�Di×Ã×ÃF^T�QmZmD�e2EdѽFXE(e�EGFNM�Q&T�×Ã_ÕT[D}FIT[QIEdÑ[DiH3Ñ�Q&S�H+FVeF�ßàS[T[Ó¯E�_ÕQVT,Q&ß�ÓiS�HdH�DiTwE�S�ÒmE�_ÕORD&ÞVÐAÑ�DK×ÕQVT�æ&D�H+F�T�QmZmDKѽF&e3Ô½D�DiTRS�Ò#ØIEdÑ�DAORQ&H�DA×Õ_ÃU&D�×ÕM�_ÕE(_ÃeEdQ*HdD�ORF&_ÕT7S�Ò7F&T�QIE�Ñ�DiH3Ñ�QVS�H�Þ���M�U&D�DiÒ�_ÃT�æ^EdÑ�D�Q&×`ZmD�e~E�×Õ_ÃW&DAÓ QVTVEGF&Ó E�e3FIH�Q&S�T[Z#Ø�#wÙzÔ�S[ÓGUVD EGeORFIëm_ÕOR_ÃaiD*EdÑ�D�Ò[HdQVÔ[FIÔ�_Ã×Ã_�E�MYE�Ñ[FXEKE�Ñ�D�T�QmZmDfe�EdÑ�D�MáÓ QVTwE�FI_ÃT]éK_Õ×Ã×#H�DiOYFI_ÃTáQVT�×Ã_ÕT�DVÞ
÷ e~DfÓ Q&T½Z1Ô�DiT�Diå�E�Q&ß #wÙzÔ�S[ÓGUVD EGeA_ÃeAE�Ñ[FXEKE�Ñ�DiMáÒ�H�QXWw_`ZmD�H�D�ed_Ãe~E�F&T[Ó D*EdQ�ÓiDiHdE�F&_ÕT%\�QPöFXE~EGF&ÓGUme�Þ�þ^T[D*Ó�FIT�T�Q&EAê[S[edÑáT�QmZmDfeiñmH�Q&S�Ed_ÃT�æ,e~E�FIEdD*ÔPMYê[QPQmZm_ÕT[æ7E�Ñ�D�e~Mme~EdD�O5éK_�E�ÑáT[DiéT�QmZmD�e�ÞwÖ�FVZmDiOR×Ã_ÃF�T[QPZ�D�e}éK_Õ×Ã×½QVT�×ÃM7_ÃT[edDiHdE(EdÑ�D^T�DiéÄT[QPZ�D�e}_ÕTYE�Ñ�D #PÙ�Ô�S½ÓGU&D EGe+éKÑ�D�T�Q&×`ZT�QmZmD�eA×ÃD�FNWVD^E�Ñ�D�edMPe~EdD�O%Þ
����� �bg cd�F��(��g��@��a �ia'� a �ÐAÑ�DáÖ�FVZmDiOR×Ã_ÃF�Ò[HdQ&EdQmÓ QV×}Ó QVT[ed_Ãe~E�e'QIßAßàQ&S�HRÿ�CAç�e�2"!$#&%('(Ø*),+.-(/10�Ø"23#&%.4 %(-54(0�Ø3F&T[Z26#&%(4 73859;:.0�ÞVÐAÑ�D�!<#&%('Lÿ�C�çÚÒ�H�Q&Ô�D�e(F�T[QPZ�DKEdQ'edDiD�_�ß#_ÕE}_`e(QVT�×Õ_ÃT�DVÞ3),+1-5/10,_ÃT[e�E�HdS½Ó¯E�eF7T[QPZ�D�EdQYe�E�Q&H�D�F]øU&D�M !dWXFI×ÃS�D�ù�Ò[F&_ÕHAßàQVHK×ÃFIEdDiHKH�D E�Hd_ÃDiWXF&×cÞ
26#&%(4 %(-(450]E�F&U&Dfe�FLófô&õIÙ�Ô�_ÕE�ä�\ F&e^FITíF&HdæVS�ORDiTwE�Þ�ÐAÑ�D'H�D�Ói_ÕÒ�_ÃDiTwE*QIßpFYE�Ñ�D7ÿ�C�çHdDiEdS�H�T[e�øàä�C FVZ�ZmH�D�e�e! �^\^C Ò�Q&HdE�!�è�QmZmD�ä�\�ù}EdH�_ÕÒ�×ÃD�e�ßàQVHAEdÑ�D #1T�QmZmDfeA_�E�UPT�QXé�eAFIÔ�Q&S�E
Kademlia
Protocol
Outline
1 Introduction
2 Kademlia Basics
3 Routing Table
4 Protocol
5 Field notes
Kademlia
Protocol
Protocol
4 ProtocolEndpointsLookupsMaintenance
Kademlia
Protocol
Endpoints
Protocol
4 ProtocolEndpointsLookupsMaintenance
Kademlia
Protocol
Endpoints
Node endpoints
Ping
Store
FindNode
FindValue
Kademlia
Protocol
Endpoints
Node endpoints
Ping
Store
FindNode
FindValue
Kademlia
Protocol
Endpoints
Node endpoints
Ping
Store
FindNode
FindValue
Kademlia
Protocol
Endpoints
Node endpoints
Ping
Store
FindNode
FindValue
Kademlia
Protocol
Endpoints
Node endpoints
Ping
Store
FindNode
FindValue
Kademlia
Protocol
Lookups
Protocol
4 ProtocolEndpointsLookupsMaintenance
Kademlia
Protocol
Lookups
Lookups
Kick off α workersAs long as a k -close node is uncontacted, contact, andadd results.
Kademlia
Protocol
Lookups
Lookups
Kick off α workersAs long as a k -close node is uncontacted, contact, andadd results.
Kademlia
Protocol
Lookups
Lookups
Kick off α workersAs long as a k -close node is uncontacted, contact, andadd results.
Kademlia
Protocol
Lookups
Space of 160−bit numbers
0
0
0
0
0
00
00
0
0
0
00
0
1
1
1
1 1
1
1
1 1
1
1
1 1
1
111
00...0011...11
0
0
����� ¤����7¢�� ����� � ¢ � ��� ¢w¡�� G¡����m¤��� �ï���âP£���� �w ���� �! ��L �� �"�#�½£�¢w � � � ��$ � �%� ���� � '&�&(&��� ��)�� G¡��!�m¤�*'¡ ¢!�+�!,V¢-�`�R��� �! ��.½�ã G¡����V� ��� /� � £0� � �)�)� �� � 1&(&2& �3.ã�G �½¢!,4�,¢]£5� � G¢w£f f¤
1
2
3
4
0
0
0
0
0
0
0
00
00
0
0
0
00
0
1
1
1
1 1
1
1
1 1
1
1
1 1
1
111
00...0011...11 Space of 160−bit numbers
����� ¤06%�87'�[£f¢V ��� � ¢ � �%� ���%� � ¯�:92;1¤8<=�&¡��� �� � � �%� �> � (�@?ã¡���ACB ��� A � �ã�� �� �� �)�)�D � ��E?ã¡���A�B � � �%�Ú��.ã£N£5�&�¯� � ,4�!���+���I¢w¡ �C��� � ��$�¢ � �GF). �I¡�� ��� � £H�#�m�(�I¡á¢ � �£5���m�(�I¡ � �)�)�V�f¤'��� �3� ��� �]�(� � �I� � J� � 2��?�¡��!?�¡��&�(� � ¯�� �� �1�(?ã¢w£5�3��$K�!L�M�N�� � O9P;,�5Q¢ � �1��� �� ��R� �! (� �/���S�4�%. ?��K£5� � ,4�I¡ � �* 2�, �� �* G¢w¡ � �I � �)�)��¤4TK�!���! U �� � ����.ã�G G¡ ¢V (�V:W�X �I�&�¯�G¢ � �&��1¢�� �R�%� � � ¤8�K� �OA�¡i�G V:W�XY� �^ (� � �%� � � Qã¢��á��I¢�� �D� � �! � 2� � � ¤[Z).½���(�!F). � � V:W�X ��¢V¡��1 2� � �%� �&��¡��& (.�¡ � �!���)�L ��)�\?ã¡��!, � �4.�� VOW�X ¤
Kademlia
Protocol
Maintenance
Protocol
4 ProtocolEndpointsLookupsMaintenance
Kademlia
Protocol
Maintenance
Maintenance
Bucket refreshesNeighbor republishingOwner republishing
Kademlia
Protocol
Maintenance
Maintenance
Bucket refreshesNeighbor republishingOwner republishing
Kademlia
Protocol
Maintenance
Maintenance
Bucket refreshesNeighbor republishingOwner republishing
Kademlia
Protocol
Maintenance
Maintenance
Bucket refreshesNeighbor republishingOwner republishing
Kademlia
Field notes
Outline
1 Introduction
2 Kademlia Basics
3 Routing Table
4 Protocol
5 Field notes
Kademlia
Field notes
Field notes
5 Field notesSpace Monkey Differences
Kademlia
Field notes
Space Monkey Differences
Field notes
5 Field notesSpace Monkey Differences
Kademlia
Field notes
Space Monkey Differences
Address updates are not bidirectional.Data is mutable.No hot caching.No neighbor republishing.SSL identification proofs.Namespaces.
Kademlia
Field notes
Space Monkey Differences
Address updates are not bidirectional.Data is mutable.No hot caching.No neighbor republishing.SSL identification proofs.Namespaces.
Kademlia
Field notes
Space Monkey Differences
Address updates are not bidirectional.Data is mutable.No hot caching.No neighbor republishing.SSL identification proofs.Namespaces.
Kademlia
Field notes
Space Monkey Differences
Address updates are not bidirectional.Data is mutable.No hot caching.No neighbor republishing.SSL identification proofs.Namespaces.
Kademlia
Field notes
Space Monkey Differences
Address updates are not bidirectional.Data is mutable.No hot caching.No neighbor republishing.SSL identification proofs.Namespaces.
Kademlia
Field notes
Space Monkey Differences
Address updates are not bidirectional.Data is mutable.No hot caching.No neighbor republishing.SSL identification proofs.Namespaces.
Kademlia
Conclusion
Shameless plug
Kademlia
Conclusion
Shameless plug
Space Monkey!
Distributed Hash TablesConsensus algorithmsReed SolomonMonitoring and sooo much dataSecurity and cryptography engineering
Kademlia
Conclusion
Shameless plug
Space Monkey!
Come work with us!
top related