Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Peer-To-Peer Networks Αναστάσιος Ιωαννίδης

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Peer-To-Peer Networks Αναστάσιος Ιωαννίδης"— Μεταγράφημα παρουσίασης:

1 Peer-To-Peer Networks Αναστάσιος Ιωαννίδης (aioann@di.uoa.gr)‏

2 2/68 Τι Είναι Τα Δίκτυα P2P (1)‏ Κλασσικό Μοντέλο Eπικοινωνίας Server Client

3 3/68 Τι Είναι Τα Δίκτυα P2P (2)‏ P2P Μοντέλο Επικοινωνίας Client

4 4/68 Χαρακτηριστικά Δικτύων P2P Δεν υπάρχει ακριβής ορισμός Αποκέντρωση, κατανομή ευθύνης Μερική διαθεσιμότητα κόμβων Οι κόμβοι λειτουργούν και ως πελάτες και ως εξυπηρέτες Πλεονασμός παρεχόμενων πληροφοριών και υπηρεσιών Δεν υλοποιούνται απαραίτητα όλα τα χαρακτηριστικά αυτά

5 5/68 Μερικά Ιστορικά Στοιχεία Θεωρία κατανεμημένων αλγορίθμων Napster, η δύναμη της περιφέρειας Gnutella, πραγματική αποκέντρωση KaZaA/Morpheus, μεγάλη κλίμακα Distributed Hashtables (Kad, Overnet)‏

6 6/68 Overlay Networks Εικονικά δίκτυα πάνω από υπάρχοντα Παράδειγμα: Το HTTP πρωτόκολλο συνδέει δύο υπολογιστές χωρίς (σχεδόν) καμμία γνώση των ενδιάμεσων κόμβων Προσαρμογή της τοπολογίας του υπάρχοντος δικτύου Βασικό concept στα P2P δίκτυα

7 7/68 Αλγόριθμοι & Υποδομές P2P Napster/OpenNAP Gnutella/Gnutella2 Freenet FastTrack/OpenFT (WinMX, KaZaA)‏ Chord (TheCircle)‏ Pastry CAN Kad (eMule)‏ Overnet (eDonkey)‏

8 8/68 Αλγόριθμος Napster Κεντρικός server που αποθηκεύει δείκτες σε διαθέσιμα μουσικά κομμάτια Κάθε client που συνδέεται, προσθέτει στη λίστα των διαθεσίμων Οι clients κάνουν ερωτήσεις στον server και λαμβάνουν διευθύνσεις άλλων clients που περιλαμβάνουν τα σχετικά αρχεία Αμεση σύνδεση μεταξύ των clients για τη μεταφορά των αρχείων

9 9/68 Χαρακτηριστικά του Napster Πλεονεκτήματα: –Αμεση σύνδεση με την κοινότητα χρηστών –H ζητούμενη πληροφορία (αν υπάρχει) είναι επίκαιρη και επιστρέφεται άμεσα –Δυνατότητα σύνθετων queries Μειονεκτήματα: –Μοναδικό ευάλωτο σημείο: ο server

10 10/68 Gnutella Η πρώτη απόπειρα για δημιουργία πλήρως κατανεμημένου συστήματος Ιδεώδες η αφαίρεση της εξάρτησης από τον κεντρικό server του Napster Ανταλλαγή και άλλων τύπων αρχείων

11 11/68 Ο Αλγόριθμος του Gnutella (1) (v0.4)‏ Το Gnutella χρησιμοποιεί τα παρακάτω μηνύματα για επικοινωνία μεταξύ των κόμβων: –Ping: Ανακάλυψη νέων κόμβων –Pong: Απάντηση στην αίτηση ping –Query: Αναζήτηση –QueryHit: Απάντηση σε αίτηση αναζήτησης –Push: Για παράκαμψη firewalls

12 12/68 Ο Αλγόριθμος του Gnutella (2)‏ Κάθε κόμβος επικοινωνεί άμεσα με ένα μικρό σύνολο άλλων κόμβων Οταν ένας κόμβος δέχεται ένα Ping ή ένα Query, το στέλνει σε όλους τους κόμβους που γνωρίζει Κάθε μήνυμα έχει και ένα πεδίο TTL, το οποίο μειώνεται σε κάθε προώθηση

13 13/68 Ο Αλγόριθμος του Gnutella (3)‏ Αρχικοποίηση: Για να συνδεθεί ένας κόμβος στο δίκτυο του Gnutella, θα πρέπει να γνωρίζει έναν ή περισσότερους κόμβους που είναι ήδη στο δίκτυο Ο κόμβος λαμβάνει τη λίστα των «γειτονικών» του κόμβων με το Ping

14 14/68 Χαρακτηριστικά του Gnutella (1)‏ Κάθε αίτηση (είτε Ping είτε Query) αποτελεί ένα broadcast προς ένα μεγάλο μέρος του δικτύου Ακόμη και αν η ζητούμενη πληροφορία είναι διαθέσιμη στο δίκτυο, υπάρχει περίπτωση να μην βρεθεί Ο χειρισμός της εισόδου & εξόδου των κόμβων από το δίκτυο δεν αποτελεί ιδιαίτερη περίπτωση

15 15/68 Χαρακτηριστικά του Gnutella (2)‏ Το scalability του Gnutella περιορίζεται σε δίκτυα της τάξεως των δεκάδων χιλιάδων κόμβων Με μερικές απλές τροποποιήσεις του αλγορίθμου ή της υλοποίησης, μπορούμε να έχουμε μέχρι 500.000 κόμβους

16 16/68 Freenet (1)‏ Ενα P2P δίκτυο για την ελεύθερη ανταλλαγή πληροφοριών Στόχοι: –Προστασία των προσωπικών δεδομένων του χρήστη –Προστασία των υπαρχόντων δεδομένων από διαγραφή –Υψηλή διαθεσιμότητα και αξιοπιστία –Αποτελεσματική διαχείριση αποθηκευτικού χώρου και αναζήτησης

17 17/68 Freenet (2)‏ Τα αρχεία δεν παραμένουν απαραίτητα στο σύστημα του χρήστη, αλλά εισάγονται στο δίκτυο, με ένα αναγνωριστικό κλειδί Βασική διαφορά με Napster και Gnutella: Το Freenet προσφέρει υπηρεσίες αποθήκευσης αρχείων αντί για υπηρεσίες διαμοιρασμού αρχείων

18 18/68 Αναζήτηση στο Freenet Κάθε κόμβος επικοινωνεί άμεσα με ένα μικρό σύνολο άλλων κόμβων Για μια αναζήτηση κλειδιού, η ερώτηση μεταφέρεται προς τον κόμβο που έχει παρόμοια κλειδιά, κ.ο.κ. Εάν μια διαδρομή αναζήτησης αποτύχει, ερωτάται ο αμέσως επόμενος κόμβος με παρόμοια κλειδιά (backtracking)‏

19 19/68 Νέα Αρχεία στο Freenet (1)‏ Η αναζήτηση με βάση την ομοιότητα των κλειδιών είναι γενικά επιτυχής λόγω της εισαγωγής αρχείων με έναν αντίστοιχο μηχανισμό Τα δεδομένα που αποθηκεύει κάθε κόμβος είναι κρυπτογραφημένα και δεν μπορούν να αναγνωσθούν άμεσα (αλλά μέσω κάποιας αναζήτησης)‏

20 20/68 Νέα Αρχεία στο Freenet (2)‏ Η διαδικασία εισαγωγής αρχείων εμπεριέχει τον κίνδυνο υπερφόρτωσης του χώρου αποθήκευσης Το Freenet αντιμετωπίζει το πρόβλημα με τη διαγραφή αρχείων τα οποία έχουν καιρό να ζητηθούν

21 21/68 Χαρακτηριστικά του Freenet Διατήρηση της ανωνυμίας του εισαγωγέα και του παραλήπτη Καλό scalability Μεγάλος χρόνος αναζήτησης, χωρίς εγγυήσεις επιτυχίας ακόμη και αν υπάρχει η πληροφορία Ευαισθησία στην άμετρη εισαγωγή αρχείων στο δίκτυο

22 22/68 FastTrack Από τα πρώτα εμπορικά (κλειστά) δίκτυα P2P Χρησιμοποιεί την ιδέα του Supernode και την αυτοοργάνωση των κόμβων σε τέτοιου είδους δίκτυα Τόσο ο αλγόριθμος όσο και το δίκτυο είναι «κλειστά» για open-source developers (για την ανάπτυξη των clients υπογράφονται ειδικές συμφωνίες)‏

23 23/68 οpenFT To openFT αποτελεί την open-source έκδοση των ιδεών του FastTrack Χρησιμοποιεί διαμοιρασμό αρχείων και δεν προσφέρει ανωνυμία Κάθε κόμβος που εισάγεται στο σύστημα, λαμβάνει μέσω άλλων κόμβων τη διεύθυνση (τουλάχιστον) ενός Supernode, με τον οποίο συνδέεται

24 24/68 Ο Αλγόριθμος του οpenFT (1)‏ Ο νέος κόμβος ανεβάζει τη λίστα με τα αρχεία τα οποία κάνει διαθέσιμα στους άλλους στον Supernode O Supernode αναλαμβάνει να στείλει τη λίστα αυτή στους άλλους Supernodes Ερωτήσεις του κόμβου για αρχεία κατευθύνονται στον Supernode, o οποίος εξετάζει τις εσωτερικές του λίστες για να απαντήσει

25 25/68 Ο Αλγόριθμος του οpenFT (2)‏ Βασική διαφορά με δίκτυα τύπου Napster: Ο Supernode δεν ορίζεται στατικά, αλλά επιλέγεται από τους υπάρχοντες κόμβους του δικτύου Ο αλγόριθμος επιλογής βασίζεται στους πόρους κάθε κόμβου (αποθηκευτικός χώρος, ταχύτητα σύνδεσης) και γίνεται με μια διαδικασία ψηφοφορίας

26 26/68 Ο Αλγόριθμος του οpenFT (2)‏ Ο Supernode δεν αποτελεί μοναδικό σημείο αδυναμίας, καθώς η απομάκρυνσή του προκαλεί την (πιθανή) εκλογή ενός νέου Supernode Κανείς κόμβος δεν συνδέεται υπό μοναδικό Supernode, αλλά με όσους περισσότερους μπορεί Ο αλγορίθμος βρίσκεται σε διαρκή εξέλιξη και ανάπτυξη, και πολλές λεπτομέρειες του δεν είναι καλά τεκμηριωμένες

27 27/68 Χαρακτηριστικά του οpenFT Ο αλγόριθμος φαίνεται να έχει καλές δυνατότητες scalability, με δυνατότητα υποστήριξης εκατοντάδων χιλιάδων κόμβων Πολλές φορές τα στοιχεία των Supernodes δεν είναι σωστά ενημερωμένα Η αναζήτηση δεν προσφέρει εγγυήσεις χρονικές ή εντοπισμού της πληροφορίας, ακόμη και αν αυτή υπάρχει στο δίκτυο

28 28/68 Chord (1)‏ Ανήκει στη «νέα» γενιά αλγορίθμων, με πραγματικά κατανεμημένη αναζήτηση Το Chord υλοποιεί ένα Distributed Hashtable (DH), προσφέροντας μία βασική συνάρτηση, τη lookup Hashtable: Οι πληροφορίες αποθηκεύονται μαζί με το κλειδί αναζήτησης Distributed: Η αποθήκευση γίνεται σε περισσότερους από ένα κόμβους

29 29/68 Chord (2)‏ Το πρόβλημα της κατανομής είναι απλό για σταθερούς κόμβους Το Chord λύνει το ίδιο πρόβλημα για δυναμικά δίκτυα Η λύση βασίζεται στην ιδέα του consistent hashing: Οταν αλλάζουν οι κόμβοι, οι κατανομές δεδομένων σε κόμβους θα πρέπει να μένουν λίγο-πολύ σταθερές

30 30/68 Ο Αλγόριθμος του Chord (1)‏ Κάθε κόμβος αποκτά και ένα μοναδικό ID, το οποίο προκύπτει από το hashing του ζευγαριού (IP address, port)‏ To hashing γίνεται με τον αλγόριθμο SHA-1, ο οποίος δίνει 160 bit κλειδιού Ενα πακέτο δεδομένων (πχ αρχείο) αποκτά και αυτό ένα τέτοιο κλειδί με χρήση και πάλι του SHA-1

31 31/68 Ο Αλγόριθμος του Chord (2)‏ Οι κόμβοι, ανάλογα με το κλειδί τους, διατάσσονται σε ένα δακτύλιο: 5 6 20 8 22 30 37 42 0

32 32/68 Ο Αλγόριθμος του Chord (3)‏ Ενα πακέτο δεδομένων ανήκει σε ένα κόμβο, εάν και μόνο εάν το κλειδί του είναι μεγαλύτερο ή ίσο του κλειδιού του κόμβου, και δεν υπάρχει άλλος κόμβος με ενδιάμεσο τους κλειδί

33 33/68 Υλοποίηση του Chord (1)‏ Κάθε κόμβος διατηρεί τις παρακάτω πληροφορίες: –Τη διεύθυνση του επόμενου κόμβου –Τη διεύθυνση του προηγούμενου κόμβου –Τη λίστα δεικτών Η λίστα δεικτών περιέχει στη θέση i την διεύθυνση του κόμβου που απέχει από το δείκτη κατά 2 i Η λίστα δεικτών, για κλειδιά 160 bits, περιέχει συνεπώς 160 θέσεις Μόνο η διεύθυνση του επόμενου κόμβου είναι σημαντικό να είναι σωστή, οι άλλες είναι βοηθητικές

34 34/68 Υλοποίηση του Chord (2)‏ Αναζήτηση κόμβου με χρήση της λίστας δεικτών: –Εάν εχεις το κλειδί, επέστρεψέ το –Βρές τον κόμβο που είναι πλησιέστερα (αλλά πριν) από το δεδομένο κλειδί από τη λίστα δεικτών –Προώθησε την ερώτηση στον κόμβο αυτό (αναδρομικά)‏ Πλήθος μηνυμάτων: O(log n)‏

35 35/68 Υλοποίηση του Chord (3)‏ Εισαγωγή νέου κόμβου –Πάρε ένα κόμβο του δικτύου –Ζήτησέ του τον επόμενο από εσένα κόμβο –Ζήτησέ του να χτίσει τη λίστα δεικτών σου –Μετέφερε τα κλειδιά του προηγούμενου που σου ανήκουν Σταθεροποίηση (ενημέρωση του προηγουμένου κόμβου –Πραγματοποιείται σε τακτά χρονικά διαστήματα από κάθε κόμβο –Ο κάθε κόμβος ελέγχει τον προηγούμενο του επομένου του Πλήθος μηνυμάτων εισαγωγής: O (log 2 n)‏

36 36/68 Υλοποίηση του Chord (4)‏ Η έξοδος κόμβου αντιμετωπίζεται με τη διατήρηση αντιγράφων ενός κλειδιού, εκτός από τον υπεύθυνο κόμβο και στους προηγούμενούς του.

37 37/68 Χαρακτηριστικά του Chord Εγγυημένος εντοπισμός δεδομένων σε χρόνο O(log n), εάν υπάρχει Η εισαγωγή νέου κόμβου απαιτεί την ανταλλαγή μέχρι Ο(log 2 n) μηνυμάτων Ισοκατανομή των δεδομένων σε όλους τους κόμβους λόγω του SHA-1 Scalable για εκατομμύρια κόμβους Δεν γίνεται διάκριση μεταξύ των διαθέσιμων πόρων των κόμβων, θεωρούνται όλοι ισοδύναμοι

38 38/68 Kademlia Βελτιωμένη έκδοση σε σχέση με το Chord, όπου η μετρική βασίζεται στο XOR και όχι την αριθμητική διαφορά των κόμβων Επεκτείνει τη λίστα δεικτών ώστε να έχει περισσότερες επιλογές κόμβων στην αναζήτηση Κόστος εισόδου νέου κόμβου: O(log n)‏ Κόστος αναζήτησης κόμβου: O(log n)

39 39/68 Kademlia Κάθε κόμβος στο Kademlia έχει ένα μοναδικό ID μεγέθους 160 bit Κάθε κόμβος διατηρεί μια λίστα από 160 “κουβάδες” (k-buckets), στους οποίους καταχωρούνται κόμβοι που απέχουν συγκεκριμένη απόσταση Αν x,y είναι δύο Ids, η απόσταση μεταξύ τους ορίζεται ως: d(x,y) = x XOR y

40 40/68 k-buckets Κάθε κουβάς κρατάει μια λίστα με μέχρι k κόμβους (IP, Port, ID)‏ Οταν ένας κόμβος δέχεται ένα οποιοδήποτε μήνυμα από άλλο κόμβο, ενημερώνει το k- bucket Το σύστημα προτιμά τους κόμβους οι οποίοι είναι πιο παλιοί

41 41/68 Μηνύματα Στο Kademlia Υπάρχουν τέσσερα μηνύματα: –PING –STORE –FIND_NODE –FIND_VALUE

42 42/68 Είσοδος νέου κόμβου Για την είσοδο σε ένα δίκτυο Kademlia, ένας κόμβος (νέος) αρκεί να ξέρει τα IP, port ενός άλλου κόμβου‏ (παλιός) που είναι ήδη στο δίκτυο Ο νέος κόμβος υπολογίζει για τον εαυτό του ένα ID (συνήθως το hash του IP, port) O νέος κόμβος ζητάει από τον παλιό να κάνει μια αναζήτηση του ID νέου κόμβου στο δίκτυο, προκαλώντας μια σειρά από μηνύματα που γεμίζουν τα k-buckets των κόμβων που είναι ήδη στο δίκτυο (μεταξύ του bootstrap node και του νέου node) O νέος κόμβος ενημερώνει τα δικά του k-buckets, κάνοντας μια αναζήτηση για ένα τυχαίο ID για κάθε θέση k-bucket εκτός της δικής του Ο νέος κόμβος δημοσιεύει τα δεδομένα που έχει στο δίκτυο σε τακτά χρονικά διαστήματα

43 43/68 Παράδειγμα Αναζήτησης 1 1 0 0 0 1 1 11 0 0 0 10 Α ΒΒC D E

44 44/68 Παράδειγμα Αναζήτησης  A [0111]  [00xx] → B  [010x] → C  B [0011]  [1xxx] → D  C [0100]  D [1101]  [10xx] → E  E [1010]  Η αναζήτηση ξεκινά από τον κόμβο Α  Αναζητούμε δεδομένα με κλειδί [1011]

45 45/68 Αναζήτηση Κόμβου Εστω οτι ο κόμβος Α γνωρίζει τους κόμβους B και C, ο κόμβος B γνωρίζει τον D και ο D γνωρίζει τον E Ο Α αναζητεί τον Ε και ρωτά τους πιο κοντινούς (B), ο οποίος βρίσκει τον D και τέλος από τον D βρίσκεται ο Ε

46 46/68 BitTorrent Δημιουργήθηκε το 2002 από τον Bram Cohen Σε αντίθεση με τους προηγούμενους αλγορίθμους, δεν ασχολείται με την αναζήτηση δεδομένων, αλλά μόνο με τη μεταφορά τους Βελτιστοποιημένος αλγόριθμος για τη μεταφορά πολύ μεγάλου όγκου δεδομένων

47 47/68 BitTorrent - Ορολογία Peer – Κόμβος με τον οποίο συνεργαζόμαστε για το κατέβασμα του αρχείου Client – Το δικό μας πρόγραμμα (ένας client είναι peer για τους άλλους) Swarm – To σύνολο των εταίρων Tracker – Ο κόμβος που συντονίζει τη διαδικασία επικοινωνίας μεταξύ των peers Seeder – Peer που έχει ολόκληρο το αρχείο Leecher – Peer που δεν έχει το πλήρες αρχείο

48 48/68 BitTorrent – Διαδικασία παροχής Για να γίνει διαθέσιμο ένα αρχείο μέσω bittorrent, ο παροχέας κάνει την εξής προετοιμασία: 1.Από το αρχείο (ή ένα σύνολο αρχείων), παράγει ένα αρχείο.torrent, το οποίο γίνεται διαθέσιμο μέσω ενός web server 2.Αρχίζει την εκτέλεση ενός tracker, ο οποίος θα διαχειρίζεται τη διαδικασία μεταφοράς

49 49/68 BitTorrent – Αρχείο.torrent Κάθε αρχείο το οποίο διαμοιράζεται, χωρίζεται σε κομμάτια, συνήθως 256, 512 ή 1024KB Για κάθε κομμάτι καταγράφεται στο αρχείο.torrent το SHA-1 hash του περιεχομένου του, ώστε να είναι δυνατή η επιβεβαίωση της ορθότητάς του Για κάθε αρχείο, αποθηκεύεται επίσης και το συνολικό MD5 hash του Κάθε.torrent αρχείο μπορεί να υποστηρίξει ένα ή περισσότερα αρχεία προς λήψη

50 50/68 BitTorrent – Διαδικασία πελάτη Για να παραλάβει ένα αρχείο μέσω bittorrent, ο πελάτης κάνει τα εξής βήματα: 1.Εκτελεί το bittorrent client 2.Δίνει το αρχείο.torrent (άμεσα ή σα link) 3.Περιμένει ως ότου όλο το αρχείο να παραληφθεί 4.Τερματίζει το client όποτε επιθυμεί, το οποίο συνεχίζει να λειτουργεί ανεβάζοντας τμήματα του αρχείου.

51 51/68 BitTorrent – Μεταφορά 1/9

52 52/68 BitTorrent – Μεταφορά 2/9

53 53/68 BitTorrent – Μεταφορά 3/9

54 54/68 BitTorrent – Μεταφορά 4/9

55 55/68 BitTorrent – Μεταφορά 5/9

56 56/68 BitTorrent – Μεταφορά 6/9

57 57/68 BitTorrent – Μεταφορά 7/9

58 58/68 BitTorrent – Μεταφορά 8/9

59 59/68 BitTorrent – Μεταφορά 9/9

60 60/68 BitTorrent – Πρωτόκολλο Tracker Ο tracker είναι ένας απλός HTTP/HTTPS server ο οποίος δέχεται αιτήσεις HTTP Get, στις οποίες απαντά με μια λίστα από peers. Η διεύθυνση στην οποία απαντάει ο tracker υπάρχει μέσα στο αρχείο.torrent Το αρχείο.torrent γίνεται διαθέσιμο από πηγή εκτός πρωτοκόλλου (πχ μέσω κάποιας web σελίδας)

61 61/68 BitTorrent – Πρωτόκολλο Tracker O client στέλνει ένα request στον tracker. Μεταξύ των άλλων, περιλαμβάνονται τα εξής στοιχεία: –IP Address, Port: Πως οι peers θα έρθουν σε επαφή με τον συγκεκριμένο client –Numwant: To πλήθος των επιθυμητών peers –Uploaded, downloaded, left: Μετρικές μεταφοράς

62 62/68 BitTorrent – Πρωτόκολλο Tracker O tracker απαντά στον client με τα εξής στοιχεία μεταξύ άλλων: –Αιτιολογία σε περίπτωση αποτυχίας –Λίστα από peers (IP, ports) –Ελάχιστος χρόνος μεταξύ αιτήσεων ενημέρωσης (o client στέλνει περιοδικά requests στον tracker για να ενημερωθεί για νέους peers)

63 63/68 BitTorrent – Πρωτόκολλο Peer O client δημιουργεί μια σύνδεση TCP με κάθε έναν από τους peers, η οποία έχει τα εξής χαρακτηριστικά: –am_choking: Ο client “κόβει” τον peer –am_interested: O client ενδιαφέρεται για data του peer –peer_choking –peer_interested Κάθε peer ξεκινάει μια σύνδεση σαν (not interested, choked)

64 64/68 BitTorrent – Πρωτόκολλο Peer To πρώτο μήνυμα που ανταλλάσσεται είναι το handshake (από τον client στον peer): –Δηλώνει ποιός είναι ο client και ποιό είναι το αρχείο που ενδιαφέρει Αλλα μηνύματα: –Keep-alive –Choke –Unchoke –Interested –Not Interested

65 65/68 BitTorrent – Πρωτόκολλο Peer Bitfield: Ενα bit array που δηλώνει ποιά κομμάτια είναι διαθέσιμα και ποιά όχι. Είναι το πρώτο μήνυμα μετά το handshake που ανταλλάσσεται Have: Οταν ο client παραλάβει και ελέγξει ένα νέο κομμάτι, το ανακοινώνει στους peers Request: Αίτηση για ένα συγκεκριμένο κομμάτι Piece: Τα data ενός κομματιού, απάντηση στο request Cancel: Ακύρωση ενός request

66 66/68 BitTorrent – Αλγόριθμοι Ο client χρησιμοποιεί tit-for-tat για να επιλέξει ποιούς peers θα εξυπηρετήσει και θα τους κάνει unchoke Υπάρχει πάντα ένα τυχαίο πλήθος από peers τους οποίους ένας client κάνει unchoke ανεξέρτητα, προκειμένου να μην έχουμε deadlocks Προτείνεται η υλοποίηση κάθε client να φροντίζει ώστε να έχει πάντα μερικά requests σε εκκρεμότητα για κάθε peer για να μην υπάρχει επιβάρυνση λόγω μεγάλου round-trip time μεταξύ Request και Piece

67 67/68 BitTorrent – Αλγόριθμοι Ο client επιλέγει ποιά κομμάτια θα κατεβάσει, προτιμώντας πρώτα τα πιο σπάνια (μαζί με ένα random factor) Προς το τέλος της λήψης, ο client στέλνει requests για όλα τα κομμάτια που του λείπουν προς όλους τους peers. Για να μην υπερφορτωθεί το σύστημα, φροντίζει να στείλει επίσης και cancel μηνύματα για όσα κομμάτια ολοκληρώνονται

68 68/68 Some References (papers, www)  CAN  A scalable content-addressable network  Chord  Chord - A Scalable Peer-to-peer Lookup Service for Internet Applications  Kademlia  Kademlia - A Peer-to-peer Information System Based on the XOR Metric  Gnutella  The Gnutella Protocol Specification v0.4  OpenFT  http://gift.sourceforge.net http://gift.sourceforge.net  Bittorrent  http://wiki.theory.org/BitTorrentSpecification, http://bittorrent.org http://wiki.theory.org/BitTorrentSpecification


Κατέβασμα ppt "Peer-To-Peer Networks Αναστάσιος Ιωαννίδης"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google