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 τις πληροφορίες.
Αυτά τα ολίγα...
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 τις πληροφορίες.
Αυτά τα ολίγα...