Προχωρημένα Θέματα Δικτύων Πρόγραμμα Μεταπτυχιακών Σπουδών Τμήμα Πληροφορικής ΑΠΘ Μάθημα: 12 – Peer to Peer Networks
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων P2P δίκτυα - Το πρωτόκολλο ΒitΤorrent Πρόβλημα: Ο όγκος των δεδομένων που διακινούνται μεγαλώνει αλματωδώς P2P networks: Μέθοδος διαμοιρασμού δεδομένων ευρείας κλίμακας Ελάχιστος φόρτος στον διακομιστή – πηγή Αξιοποίηση του upload εύρους ζώνης των downloaders + Ιδανικό για ανταλλαγή μεγάλου όγκου δεδομένων + Redundancy λόγω πολλαπλής διαθεσιμότητας δεδομένων + Ασφάλεια δεδομένων - Εξάρτηση από κεντρικό tracker (υποστηρίζονται όμως πολλαπλοί) - Πρόβλημα η μη-δημοφιλία των διαμοιραζόμενων δεδομένων
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων P2P δίκτυα - Το πρωτόκολλο ΒitΤorrent Λειτουργία 1. Ο χρήστης επιλέγει το/τα αρχεία που θέλει να διαμοιράσει 2. Ο χρήστης δημιουργεί έναν 'torrent descriptor' (*.torrent) που περιέχει πληροφορίες για το αρχείο, τα hashes του αρχείου καθώς τον tracker που συντονίζει τον διαμοιρασμό 3. O χρήστης ξεκινάει το seeding του αρχείου 4. Ο χρήστης στέλνει το torrent (descriptor) αρχείο (μέγεθος ~ 100ΚΒ) στους ενδιαφερόμενους, ή το αναρτά σε κάποια ιστοσελίδα (πχ isohunt). 5. Ο tracker γνωρίζει ανά πάσα στιγμή ποιος κατεβάζει το αρχείο, ποιος το ανεβάζει και ποιος έχει ποια κομμάτια του 6. Οι ενδιαφερόμενοι συνδέονται στον tracker, μαθαίνουν ποιος έχει το αρχείο και συνδέονται για να το κατεβάσουν
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων P2P δίκτυα - Το πρωτόκολλο ΒitΤorrent Διαμοιρασμός δεδομένων 1. Όποιος πάρει το torrent αρχείο συνδέεται στον tracker που του υποδεικνύει το αρχείο 2. Ο tracker του δίνει τη λίστα με τις IP όσων έχουν το αρχείο (αρχικά μόνο ο αρχικός χρήστης το έχει) 3. Ο χρήστης συνδέεται στον αρχικό και αρχίζει να κατεβάζει, ενώ δηλώνει και στον tracker ποια μέρη του αρχείου έχει ήδη κατεβάσει 4. Όταν νέοι χρήστες τρέχουν το torrent αρχείο, ο tracker τους υποδεικνύει να συνδεθούν τυχαία σε όποιον άλλο χρήστη έχει κομμάτια του αρχείου που εκείνοι δεν έχουν ακόμα Oρολογία Seeder → ο χρήστης που έχει ολοκληρώσει το κατέβασμα του αρχείου και το μοιράζει σε άλλους Leecher → o χρήστης που απλώς κατεβάζει και δεν μοιράζει σε κανέναν Peer → όλοι οι χρήστες όσο ανεβάζουν και κατεβάζουν λέγονται peers (κόμβοι) Swarm → το 'σμήνος' όλων των peers Tracker → o κεντρικός συντονιστής που ξέρει την κατάσταση όλων των peers
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων P2P δίκτυα - Το πρωτόκολλο ΒitΤorrent Διαφορά BitTorrent από κλασικό download Το BitTorrent κάνει πολλά μικρά downloads από πολλούς άλλους υπολογιστές σε αντίθεση με ένα κλασικό download που κάνει ένα download από έναν υπολογιστή Σε ένα κλασικό download το αρχείο κατεβαίνει σειριακά από τον server, ενώ στο BitTorrent τα μικρά downloads γίνονται είτε με τυχαία σειρά (για αύξηση πιθανότητας ανταλλαγής δεδομένων), είτε ξεκινώντας από το λιγότερο διαθέσιμο κομμάτι (για να αυξηθεί η διαθεσιμότητά του) Ασφάλεια & Ακεραιότητα Δεδομένων Κάθε διαθέσιμο κομμάτι του αρχείου έχει ένα hash (π.χ. SHA-1) στο torrent αρχείο οπότε οι ενδιάμεσοι peers δεν μπορούν να αλλάξουν τα δεδομένα (χωρίς να γίνει αντιληπτό) πριν τα στείλουν στους επόμενους που θα τα ζητήσουν.
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων P2P δίκτυα - Το πρωτόκολλο ΒitΤorrent H επιλογή των peers Στόχος: Αύξηση διαθεσιμότητας → Κατέβασμα με τυχαία σειρά / rarest first Στόχος: Αύξηση ταχύτητας → Eπιλογή των γρηγορότερων από το swarm Στόχος: Επιβράβευση προσφοράς → Ένας peer στέλνει data μόνο σε peers που στέλνουν και αυτοί data (fair trading) Προβλήματα: → Ιnitiative problem: Δυο peers με καλές ταχύτητες δεν ανταλλάσουν δεδομένα γιατί κανείς δεν κάνει πρώτος το βήμα → New peer problem: Ένας peer που μπήκε τώρα στο swarm δεν έχει ακόμα τι να μοιράσει και οι υπόλοιποι δεν του στέλνουν επειδή δεν μοιράζει Λύση: Optimistic Unchoking → δέσμευση ενός μέρους του bandwidth για αποστολή data σε peers που επιλέγονται τυχαία
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων P2P δίκτυα - Το πρωτόκολλο ΒitΤorrent Πρόβλημα: → Παρόλο που η μεταφορά των δεδομένων δεν γίνεται από έναν server, υπάρχει ένα “Single Point of Failure” στην αρχιτεκτονική → Σε περίπτωση αποτυχίας του κεντρικού tracker όλες οι επικοινωνίες μεταξύ των peers διακόπτονται, αφού οι peers δεν γνωρίζουν ποιοι άλλοι peers έχουν τα κομμάτια που τους λείπουν Λύση Α → Registration του torrent σε πάνω από έναν trackers Λύση Β → Αποκεντρωμένη αρχιτεκτονική χωρίς κεντρικό tracker (αναλύεται παρακάτω)
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων ΒitΤorrent - Δομή δικτύου με μόνιμο κεντρικό tracker Torrent Search Site Torrent File Tracker Peers? Filename? Peer A Peer B Peer C
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων ΒitΤorrent - Αρχιτεκτονική χωρίς μόνιμο κεντρικό tracker Peer Exchange (PEX) → Χρησιμοποιείται από τις περισσότερες BitTorrent υλοποιήσεις – Οι peers ανταλλάζουν μηνύματα απευθείας μεταξύ τους ενημερώνοντας ο ένας τον άλλο σχετικά με τους δικούς του peers – Η μέθοδος αυτή ΔΕΝ μπορεί να βάλει ένα καινούριο peer στο swarm! Distributed Hash Table (DHT) [ Trackerless Torrents ] → H λειτουργία του DHT είναι να βρεί ο client άλλους peers που κατεβάζουν το ίδιο αρχείο, χωρίς να ρωτήσει κάποιον tracker· δηλαδή αποκεντρωμένα. → Κατά την έναρξη, στο DHT ο client συνδέεται στον 'bootstrap node' και αρχίζει να λαμβάνει μηνύματα σχετικά με το DHT network, δηλαδή το ποιοι άλλοι συμμετέχουν στο DHT δίκτυο. Tις πληροφορίες αυτές τις διαθέτει και σε όποιον άλλο peer τον ρωτήσει σχετικά ώστε η πληροφορία να μεταδίδεται από κόμβο σε κόμβο.
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων ΒitΤorrent - Δομή δικτύου χωρίς μόνιμο κεντρικό tracker router.utorrent.com / router.bittorrent.com Torrent Search Site Torrent File Other nodes? Peers? Bootstrap node (some) Peers & Nodes Filename? Peers? Nodes? Peers? Nodes? Peers? Nodes?
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων DHTs – Distributed Hash Tables Tα DHTs είναι αλγόριθμος για αποκεντρωμένο, κατανεμημένο lookup service Mοιάζει με hash table – ζεύγη (key, value) Το key είναι το hash και το value είναι το file name Kάθε κόμβος-μέλος του DHT μπορεί να βρεί το 'value' που αντιστοιχεί σε οποιοδήποτε 'key' H διαφορά είναι ότι ενώ ένα hash είναι εξ'ολοκλήρου στη μνήμη του υπολογιστή, ένα DHT είναι διάσπαρτο σε χιλιάδες ή εκατομμύρια κόμβους στο Internet Σχεδιασμός με έμφαση σε: Αποκέντρωση (decentralization) Οι κόμβοι που απαρτίζουν το σύστημα συντονίζονται χωρίς την ανάγκη κεντρικού συντονιστή Ανοχή σε σφάλματα (fault tolerance) Η λειτουργία διασφαλίζεται και όταν διαρκώς κόμβοι συνδέονται, αποσυνδέονται ή παρουσιάζουν βλάβη Κλιμακωσιμότητα (scalability) Ο σχεδιασμός επιτρέπει την αξιόπιστη λειτουργία και όταν εκατομμύρια κόμβοι είναι συνδεδεμένοι
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων DHTs – Distributed Hash Tables ΔΟΜΗ DHT Keyspace partitioning scheme (αποδίδει σε κάθε κόμβο του DHT ένα μέρος του keyspace) Keyspace (e.g. 160 bit strings) “85fc2d2a3764089191e57cd55 2601278a5985c46” Overlay Network (διασυνδέει τους κόμβους επιτρέποντας να βρεθεί ο κόμβος που βρίσκεται ένα κλειδί) Για να αποθηκευθεί ένα αρχείο με κάποιο filename στο DHT, παράγεται το SHA-1 hash του filename και παράγεται ένα 160-bit key k. Ακολούθως στέλνεται ένα μήνυμα put(k,data) σε οποιονδήποτε κόμβο του DHT, ο οποίος το στέλνει σε κάποιον κόμβο που έχει μικρότερη απόσταση (non geometrical!) μεταξύ του keyspace του και του k Tο μήνυμα πηγαίνει (γίνεται routed) από κόμβο σε κόμβο, πλησιάζοντας το 'k' ώσπου φτάνει στον κόμβο που έχει το keyspace όπου ανήκει το 'k' και αποθηκεύεται. Aποθήκευση Για να ανακτηθεί (download) ένα αρχείο με κάποιο filename στο DHT, παράγεται το SHA-1 hash του filename και παράγεται το 160-bit key k. Ακολούθως στέλνεται ένα μήνυμα get(k) σε οποιονδήποτε κόμβο του DHT, ο οποίος το στέλνει σε κάποιον κόμβο που έχει μικρότερη απόσταση (non geometrical!) μεταξύ του keyspace του και του k Tο μήνυμα πηγαίνει (γίνεται routed) από κόμβο σε κόμβο, πλησιάζοντας το 'k' ώσπου φτάνει στον κόμβο που έχει το keyspace όπου ανήκει το 'k' και εκείνος απαντάει με το ζητούμενο αρχείο. Ανάκτηση
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων ΒitΤorrent - Δομή δικτύου χωρίς μόνιμο κεντρικό tracker με Magnet Links Torrent Search Site router.utorrent.com / router.bittorrent.com Magnet Link Other nodes? Peers? Bootstrap node (some) Peers & Nodes Filename? Peers? Nodes? Peers? Nodes? Peers? Nodes?
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων DHTs – Distributed Hash Tables Magnet Links Tα Magnet Links είναι ένας τρόπος για να ξεκινήσει η λήψη δεδομένων χωρίς να χρειάζεται να κατέβει από κάποιο κεντρικό σημείο το .torrent αρχείο. Ελαττώνεται ο φόρτος στα search engines σε πολύ δημοφιλή torrents Αποκεντρώνει ακόμα περισσότερο το BitTorrent πρωτόκολλο Παράδειγμα: Ε-Donkey2000 magnet link magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1 O client θα συνδεθεί σε κάποιο bootstrap node [router.utorrent.com / router.bittorrent.com], θα ζητήσει το torrent file του οποίου το hash ξέρει από το παραπάνω link, και μετά με DHT θα αρχίσει να συνδέεται σε peers και να λαμβάνει τα data του ζητούμενου αρχείου.
Προχωρημένα Θέματα Δικτύων Ενότητα Δ. Ευελιξία Δικτύων References Kademlia: A Peer-to-peer information system based on the XOR Metric Core Concepts in Peer-to-Peer (P2P) Networking Vulnerabilities of P2P systems and a critical look at their solutions Decentralised Resource Discovery Service for Large Scale Federated Grids