The EDONKEY protocol Ιωάννης Ζιαγκλιαβός Α.Μ.123 Παναγιώτης Κατσίκος Α.Μ.124 Ευφροσύνη Κουρή Α.Μ. 138
Εισαγωγή Ένα από τα πιο δημοφιλή file sharing πρωτόκολλα. Κερδίζει συνεχώς έδαφος στη διακίνηση πληροφορίας μέσω peer to peer συστημάτων, ειδικά στην Ευρώπη Έχει ξεπεράσει το Kazaa σε πλήθος ταυτόχρονων χρηστών και το ιδιαίτερα δημοφιλές BitTorrent στην αναζήτηση μεγάλων αρχείων Χρησιμοποιείται από τον γνήσιο Edonkey 2000 client και τους open source clients mldonkey και Emule Διαφέρει από τη Gnutella, που είναι πλήρως αποκεντρικοποιημένη, γιατί χρησιμοποιεί servers Διαφέρει από το Napster γιατί χρησιμοποιεί παραπάνω από ένα servers που επικοινωνούν μεταξύ τους
Εισαγωγή (2) Ακολουθεί υβριδική αρχιτεκτονική Αποτελείται από Clients και Servers Τους Servers συχνά φιλοξενούν και διαχειρίζονται έμπειροι χρήστες και παίζουν το ρόλο του ευρετηρίου Οι Clients αναλαμβάνουν το downloading και το uploading των δεδομένων Τριών ειδών επικοινωνίες: Client – Server Client – Client Server - Server
Client – Server : Login O Client δημιουργεί μια TCP σύνδεση με το Server που θέλει να συνδεθεί Στέλνει πακέτο με το IP, το username, το port στο οποίο μπορεί να βρεθεί και την έκδοση του πρωτοκόλλου του Ο Server του δίνει high ή low id (όταν o Client βρίσκεται πίσω από firewall) με κριτήριο αν μπορεί να γίνει TCP σύνδεση με το port O Client στέλνει λίστα με τα αρχεία που διαθέτει στο δίκτυο Ο Server επιστρέφει λίστα με τους διαθέσιμους servers
Client – Server : Search Αναζήτηση αρχείων γίνεται πάντα με βάση την εμφάνιση λέξεων – κλειδιών στο περιεχόμενο ή στο τίτλο τους Ο Client στέλνει μήνυμα με Τη συμβολοσειρά προς αναζήτηση Ελάχιστο / μέγιστο μέγεθος αρχείου Το τύπο του αρχείου (ήχου, video κ.τ.λ.) Συνδυασμούς των άνω με χρήση λογικών τελεστών Ο Server απαντά με μήνυμα με τις περιγραφές όλων των αρχείων που πληρούν τα κριτήρια αναζήτησης Στέλνει το όνομα, τη hash value και το μέγεθος κάθε αρχείου και επιπλέον πληροφορίες αν είναι διαθέσιμες
Client – Server : Download Initiation Ο χρήστης αποφασίζει πιο αρχείο θέλει να κατεβάσει Ο Client στέλνει μήνυμα για εύρεση διαθέσιμων πηγών στο Server με τη hash value του ζητούμενου αρχείου Ο Server αναζητά το αρχείο που αντιστοιχεί στη hash value, στις λίστες με τα αρχεία που διαθέτουν οι Clients οι οποίοι συνδέθηκαν μαζί του Απαντά με λίστα από ID / port ζεύγη των Clients που ισχυρίζονται ότι έχουν το αρχείο
Client – Server : Download Initiation (2) Ο Client βλέποντας το ID μπορεί να καταλάβει αν η πηγή έχει firewall (low id) Επιχειρεί σύνδεση με τη πηγή και σε περίπτωση αποτυχίας μπορεί να ζητήσει από το Server να «μεσολαβήσει» ώστε να επιτευχθεί η σύνδεση O Client μπορεί να επιχειρήσει σύνδεση με κάποιο άλλο Server από τη λίστα των διαθέσιμων Server Αναζητήσεις νέων πηγών γίνονται κάθε είκοσι λεπτά με ανάλογη αίτηση
Client – Client : Download Τα αρχεία χωρίζονται σε τμήματα με μέγεθος περίπου 10MB που καλούνται chunks Για να είναι ένα αρχείο διαθέσιμο για download, πρέπει τουλάχιστον ένα chunk να έχει κατέβει επιτυχώς Μόλις ένας Client κατεβάσει έστω και ένα chunk ενός αρχείου τότε αυτό γίνεται αυτόματα διαθέσιμο στο δίκτυο χωρίς άδεια του χρήστη (free riders) Κάθε Client διατηρεί Uploading list με τα αρχεία του που διατίθενται τη κάθε στιγμή και Waiting list με αιτήσεις του για Download που περιμένουν να εξυπηρετηθούν
Client – Client : Download (2) Όταν βρεθεί η πηγή (ένας άλλος Client) ο Client δημιουργεί μια TCP σύνδεση με αυτή Ρωτάει τη πηγή ποια chunks του αρχείου είναι διαθέσιμα χρησιμοποιώντας την hash value του Τελικά, ζητάει από τη πηγή να του στείλει το αρχείο και ξεκινά η μετάδοση Κάθε 40s επαναλαμβάνει την αίτηση για download, αλλιώς χάνεται η σύνδεση και σταματά η μετάδοση. Μπορεί να πραγματοποιηθούν συνδέσεις και μεταδόσεις προς και από περισσότερες από μία πηγές ταυτόχρονα
Server - Server Οι Servers επικοινωνούν μεταξύ τους χρησιμοποιώντας μηνύματα UDP Ενημερώνονται για τους υπόλοιπους διαθέσιμους Servers ανταλλάσοντας λίστες με αυτούς Ανακοινώνουν τη παρουσία τους και ρωτάνε για τη παρουσία των άλλων με ping / pong μηνύματα Τα ping / pong μηνύματα αποτελούν μεγάλο τμήμα της συνολικής κίνησης στο δίκτυο γιατί τα χρησιμοποιούν και οι Clients για να επιβεβαιώσουν την ορθότητα των δικών τους λιστών
Sharing Behavior Η δημοτικότητα ενός αρχείου φαίνεται να αυξάνεται απότομα τις πρώτες μέρες που διατίθεται στο δίκτυο και μετά μειώνεται σταδιακά Η εξάπλωση ενός αρχείου στο δίκτυο εξαρτάται από: Το πλήθος των χρηστών που αρχικά το διαθέτουν Την ταχύτητα σύνδεσης τους Τη πιθανότητα να συνεχίσουν να το μοιράζονται αυτοί που το κατέβασαν επιτυχώς Το μέγεθος του αρχείου Τα μικρά αρχεία (mp3, audio…) εξαπλώνονται πιο εύκολα στο δίκτυο σε αντίθεση με τα πολύ μεγάλα (CD – DVD images…)
Sharing Behavior (2) Οι free riders κυριαρχούν όπως σε όλα τα peer to peer συστήματα Τα περισσότερα αρχεία είναι μικρά σε μέγεθος. Μόνο το 10% έχει μέγεθος μεγαλύτερο από 10MB Ωστόσο, το 50% των αρχείων που διακινούνται είναι αρχεία μεγαλύτερα από 600MB (συχνά divx ταινίες) Αυτό συμβάλλει στην αύξηση των free riders (80% των Clients) γιατί οι χρήστες αποφεύγουν να διαθέτουν στο δίκτυο τα μεγάλα αρχεία όταν ολοκληρωθεί το κατέβασμα
Sharing Behavior (3) Τα αντίγραφα ενός αρχείου εξαπλώνονται κατά μέσο όρο σε πολύ μικρό ποσοστό του δικτύου. Τεχνικές αναζήτησης με πλημμύρα (Gnutella) δε θα απέδιδαν χωρίς μεγάλο αριθμό μηνυμάτων (φόρτος δικτύου) Οι Clients που βρίσκονται κοντά γεωγραφικά ενδιαφέρονται για παρόμοια αρχεία συνήθως Έχει προταθεί να χρησιμοποιηθεί ένα είδος cache τοπικά ώστε να μειώνεται ο φόρτος του δικτύου Η cache προτείνεται να έχει τη μορφή ευρετηρίου αντί να περιέχει δεδομένα ώστε να αποφευχθεί ο κίνδυνος αποθήκευσης παράνομου περιεχομένου
Low ID Hosts Clients που βρίσκονται πίσω από ΝΑΤ ή firewall Αυξάνονται συνεχώς λόγω ζητημάτων ασφαλείας και αύξησης των χρηστών του δικτύου που συνδέονται με υψηλές ταχύτητες Επηρεάζουν αρνητικά την απόδοση του δικτύου γιατί εμποδίζουν τις συνδέσεις προς αυτούς από απομακρυσμένους κόμβους Αποτελούν περίπου το 30% των Clients και συμμετέχουν στο δίκτυο συνήθως με μεγάλο πλήθος αρχείων Πρέπει να ληφθούν υπόψη στο σχεδιασμό νέων δικτύων γιατί η απομάκρυνση τους μειώνει σημαντικά τη διαθεσιμότητα αρκετών αρχείων