PDA

Επιστροφή στο Forum : Info: Λίγες τεχνικές πληροφορίες για το Kademlia



cosmos
18-03-04, 11:13
Οι πληροφορίες είναι for the technically-inclined, αλλά είναι ενδιαφέρουσες. Εξηγούν κάποια πράγματα αν θέλετε.

Kademlia ονομάζεται ένα P2P δίκτυο στο "χαρτί", που προέκυψε ως ερευνητική προσπάθεια. Περιγράφεται στο link
ed2k://|file|Kademlia.-.A.Peer.to.Peer.Information.System.pdf|81047|B96817E90CDD4CCC4CD56E5FDC3899E7|/

Είναι διανεμημένο δίκτυο, δε χρειάζεται κάποιο κεντρικό server για τη λειτουργία του. Απλά χρειάζεται κάποιο node (client δλδ) για να πάρετε τις επαφές του. Τόσο το Overnet όσο και το "Kademlia" των νέων emule αποτελούν υλοποιήσεις του πρωτοκόλλου. Είναι όμως ασύμβατες μεταξύ τους και φυσικά έχουν και κάποιες διαφοροποιήσεις σε σχέση με το αρχικό άρθρο.

Η λειτουργία μέσες άκρες έχει ως εξής: με το που ξεκινάει ένα node, παίρνει μία ταυτότητα, έναν αριθμό 160 bit. Εν συνεχεία ανακοινώνει την ύπαρξή του στο δίκτυο και δημιουργεί μία λίστα συστημάτων. Στη λίστα καταγράφεται το Node id. Φυσικά για κάθε node στη λίστα, κρατιέται και η διεύθυνση και τα σχετικά ports.

Στο δίκτυο ED2K δηλώνουμε κατά τη σύνδεση με το server ποια αρχεία έχουμε. Στο Kademlia το αντίστοιχο γίνεται ως εξής:

Δημιουργούμε μία ταυτότητα 160bit (όσο και η "διεύθυνση" ενός node) για κάθε μας αρχείο.
Για κάθε αρχείο βλέπουμε την ταυτότητα και συνδεόμαστε με έναν αριθμό nodes από τη λίστα επαφών μας, που έχουν node id "κοντά" στην ταυτότητα του αρχείου. Πλέον οι node ids που θα επιλεγεί θα έχουν την πληροφορία ότι εμείς έχουμε το ζητούμενο αρχείο! Αυτή η διαδικασία επαναλαμβάνεται ώσπου να καταχωρηθούν όλα τα αρχεία σε αντίστοιχα συστήματα.
Επίσης για κάθε αρχείο δημιουργούμε 160bit τιμές που αντιστοιχούν στις λέξεις κλειδιά με τις οποίες θα μπορούσε να αναζητήσει κανείς το συγκεκριμένο αρχείο και τις αποθηκεύουμε και αυτές στους nodes των οποίων το id είναι πλησιέστερα στις 160bit αναπαραστάσεις των λέξεων κλειδιών


Η αναζήτηση για ένα αρχείο γίνεται ως εξής: πρώτα σχηματίζουμε 160bit ταυτότητες των λέξεων κλειδιών που εισάγουμε προς αναζήτηση και μετά "ρωτάμε" από τη λίστα με τα nodes μας αυτά που έχουν node id κοντά στην 160bit τιμή των λέξεων που αναζητούμε.

Το σύστημα είναι σαφώς έξυπνο και σχεδιασμένο να είναι fault-tolerant. Είναι φανερό λ.χ. ότι:

Όπως εμείς αποθηκεύουμε πληροφορία αρχείων και αντίστοιχων λέξεων κλειδιών σε άλλα nodes, έτσι αποθηκεύονται και σε μας πληροφορίες. Πληροφορίες που έχουν id "κοντά" στο δικό μας id.
Όπως εμείς ρωτάμε άλλα nodes, έτσι και άλλοι ρωτάνε σε μας.
Αν κάποιος έχει αποθηκεύσει σε μας κάποιες πληροφορίες και δούμε κάποια στιγμή ότι υπάρχει ενεργό σύστημα του οποίου το id είναι πιο κοντά από το δικό μας για συγκεκριμένα αρχεία λέξεις κλειδιά που έχουν αποθηκευτεί σε μας, αντιγράφουμε τις πληροφορίες και σε αυτούς.
Τέλος είναι φανερό ότι το μεγαλύτερο overhead του Kademlia είναι στην εκκίνηση όπου πρέπει να βρούμε nodes πρώτα και να αποθηκεύσουμε για κάθε αρχείο μας στους σχετικούς nodes τις πληροφορίες.


Αυτά τα ολίγα...

alfa156
11-02-06, 16:32
το node id είναι hash ή κάνω λάθος? Τι νόημα έχει το "κοντά στο δικό μας"? Τι προσφέρει?

cosmos
13-02-06, 15:07
Νομίζω είναι hash κάποιας μορφής. Τώρα το τι προσφέρει, αν το έχω καταλάβει καλά, είναι ότι ψάχνοντας με λέξη κλειδί Α με hash ΧΧΧΧΧΧΧΧΧΧΧΧ, δε χρειάζεται να ξέρεις κάποιο συγκεκριμένο server για ψάξιμο, αλλά ψάχνεις σε nodes που έχουν hash (περίπου) το XXXXXXXXXXXX. Σε αυτούς τους nodes αποθηκεύονται τριάδες ip/tcp port/udp port των υπολογιστών που έχουν το αρχείο Α.

Οπότε κάθε υπολογιστής που συμμετέχει στο Kad, γίνεται μηχανή αναζήτησης (δλδ εξυπηρετεί ερωτήσεις του παραπάνω τύπου) στην οποία αποθηκεύονται κλειδιά/hashes και αντίστοιχες τριάδες υπολογιστών.

msid
13-02-06, 16:38
Εδώ (http://pdos.csail.mit.edu/~petar/) θα βρείς περαιτέρω πληροφορίες για το Kadmelia.

@ ADSLgr.com All rights reserved.