«Αξιολόγηση της απόδοσης του BitTorrent µε τη χρήση του End Game Mode»



Σχετικά έγγραφα
ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Διπλωματική Εργασία Μεταπτυχιακού Διπλώματος Ειδίκευσης

Το ηλεκτρονικό ταχυδρομείο: Aφορά στην αποστολή και λήψη μηνυμάτων με συγκεκριμένη δομή και με συγκεκριμένα πρωτόκολλα. Ο αποστολέας και ο παραλήπτης

ΠΑΝΕΠΙΣΤΗΜΕΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ ΒΟΛΟΣ 2013 ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ :

Κινητά και Διάχυτα Συστήματα. Ενότητα # 7: Κατανεμημένος καταμερισμός αρχείων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Search and Replication in Unstructured Peer-to-Peer Networks

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Δροµολόγηση (Routing)

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

ιαδίκτυα & Ενδοδίκτυα Η/Υ

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Κεφάλαιο 7.3. Πρωτόκολλο TCP

ΤΕΙ Πειραιά, Τμήμα Ηλεκτρονικής. Δίκτυα P2P. Χαράλαμπος Ζ. Πατρικάκης

Πρωτόκολλα Διαδικτύου

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

7.9 ροµολόγηση. Ερωτήσεις

7.11 Πρωτόκολλα Εφαρµογής Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Broadcast P2P over DVB-T networks

Βασίλειος Κοντογιάννης ΠΕ19

το ιαδίκτυο συνδέει εκατοµµύρια χρήστες αποτελώντας την µεγαλύτερη πηγή πληροφοριών και ανταλλαγής µηνυµάτων στον πλανήτη.

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Περίληψη ιπλωµατικής Εργασίας

SGA Διαχείριση Πρωτόκολλου

7.11 Πρωτόκολλα εφαρµογής

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία ( ) Υπηρεσία FTP (File Transfer Protocol)

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ

Improving the performance of TCP in the case of packet reordering. Στρατάκη Μαρία

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Ανοχή απέναντι σε Σφάλµατα Fault Tolerance

3. Προσομοίωση ενός Συστήματος Αναμονής.

ίκτυα ίκτυο υπολογιστών: Ένα σύνολο από υπολογιστικές συσκευές που συνδέονται µεταξύ τους για σκοπούς επικοινωνίας και χρήσης πόρων. Συνήθως, οι συσκε

Πρωτόκολλα Διαδικτύου

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης. Τμήμα Εφαρμοσμένης Πληροφορικής και Πολυμέσων

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο Φροντιστήριο Ασκήσεις στο TCP

Λουκάς Ελευθέριος

Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών. Κοντοτάσιου Ιωάννα ΑΜ 3125 Μπέσσας Απόστολος ΑΜ 3171

Δρομολόγηση (Routing)

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή σε Έννοιες των Δικτύων Υπολογιστών Κεφάλαιο 2 Αξιοπιστία Κεφάλαιο 3 Αλγόριθμοι Πολλαπλής Πρόσβασης...

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

2 η Σειρά Ασκήσεων Data Link Layer

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

Εργαστήριο Ethereal: ICMP

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Με λίγα λόγια, το TCP/IP καθορίζει τον τρόπο που πακετάρονται και μεταφέρονται τα δεδομένα της σύνδεσής μας.

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

ΚΕΦΑΛΑΙΟ 4. Τεχνική Ανίχνευσης του. Πτυχιακή Εργασία Σελίδα 95

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

Κατανεμημένα Συστήματα

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ , Ελλάδα, Τηλ Φαξ

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

οµήτης παρουσίασης Marzullo και Neiger αλγόριθµος Παράδειγµα Distributed Debugging Εισαγωγικά

7.2 Τεχνολογία TCP/IP

Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών. Κοντοτάσιου Ιωάννα ΑΜ 3125 Μπέσσας Απόστολος ΑΜ 3171

ΘΕΜΑΤΑ ΔΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2008 / 2009

a. b. c. d ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

ΠΟΛΥΜΕΣΑ ΣΤΟ ΙΑ ΙΚΤΥΟ

Σχεδίαση και Ανάπτυξη Ιστότοπων

Ο ΗΓΟΣ ΕΠΙΜΟΡΦΩΤΗ. ηµοτικό ιαδικτυακό Ραδιόφωνο και Τηλεόραση. Y4 ηµιουργία διαδικτυακής ραδιοφωνικής εκποµπής µε τα εργαλεία

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα.

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΘΕΜΑΤΑ ΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2006 / 2007

Τεχνολογία Πολυμέσων. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Α5.1 Εισαγωγή στα Δίκτυα. Α Λυκείου


Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΦΥΛΛΟ ΠΛΗΡΟΦΟΡΙΩΝ. Μονάδες μέτρησης χωρητικότητας μνήμης - Η περιφερειακή μνήμη

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

Πρωτόκολλο ARP. Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901

ΓΡΑΦΕΙΟ ΤΗΛΕΔΙΑΣΚΕΨΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.

Σχεδιασµός βασισµένος σε συνιστώσες

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Peer-to-Peer Technology

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

Transcript:

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥ ΩΝ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ιπλωµατική Εργασία Μεταπτυχιακού ιπλώµατος Ειδίκευσης «Αξιολόγηση της απόδοσης του BitTorrent µε τη χρήση του End Game Mode» Αναστάσιος Κακολύρης Επιβλέπων: Καθηγητής Γεώργιος Ξυλωµένος ΑΘΗΝΑ, ΜΑΙΟΣ 2009 1

... Αναστάσιος Κακολύρης Copyright Αναστάσιος Κακολύρης Με επιφύλαξη παντός δικαιώµατος. All rights reserved. Απαγορεύεται η αντιγραφή, αποθήκευση και διανοµή της παρούσας εργασίας, εξ ολοκλήρου ή τµήµατος αυτής, για εµπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανοµή για σκοπό µη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν µήνυµα. Ερωτήµατα που αφορούν τη χρήση της εργασίας για κερδοσκοπικό σκοπό πρέπει να απευθύνονται προς τον συγγραφέα. Οι απόψεις και τα συµπεράσµατα που περιέχονται σε αυτό το έγγραφο εκφράζουν τον συγγραφέα και δεν πρέπει να ερµηνευθεί ότι αντιπροσωπεύουν τις επίσηµες θέσεις του Οικονοµικού Πανεπιστηµίου Αθηνών. 2

3

Περίληψη To BitTorrent είναι ένα πρωτόκολλο διαµοιρασµού αρχείου peer-to-peer που χρησιµοποιείται για τη διανοµή αρχείων µεγάλου µεγέθους. Στην παρούσα διπλωµατική εργασία χρησιµοποιήσαµε ένα δικό µας module για το BitTorrent το οποίο δηµιουργήθηκε για το περιβάλλον εξοµοίωσης OMNeT++. Ο σκοπός µας είναι να εξετάσουµε το End Game Mode, τη στρατηγική λήψεως αρχείου που χρησιµοποιεί το BitTorrent στο τελεταίο στάδιο, και να δούµε πως αυτό επηρεάζει την απόδοση του module µας. Το End Game Mode αντιµετωπίζει το πρόβληµα των αργών µεταφορών των τελευταίων κοµµατιών των δεδοµένων κατά τη διάρκεια µιας ανταλλαγής µεταξύ κάποιων peers, αφού σε αυτό το στάδιο τα περισσότερα κοµµάτια έχουν ληφθεί, άρα ο βαθµός του παραλληλισµού, δηλαδή η παράλληλη αίτηση του ίδιου piece από όλους τους συνδεδεµένους peers, είναι µικρός. Συνοψίζουµε τον τρόπο λειτουργίας του End Game Mode που έχουµε εφαρµόσει. Εξετάζουµε τους συµβιβασµούς ανάµεσα στην υπερβολική διακίνηση δεδοµένων και την ταχύτερη λήψη του αρχείου εκτελώντας προσοµοιώσεις µε την αλλαγή τριών παραµέτρων του Peer-Wire πρωτοκόλου και θεωρώντας ως συνθήκη εισόδου σε αυτό το mode τη στιγµή που ο αριθµός των blocks που αποµένουν είναι ίσος µε τον αριθµό των blocks που έχουν ζητηθεί. Λέξεις Κλειδιά BitTorrent, end game mode, peer-to-peer, πρωτόκολλο, πρότυπο, υπερβολική διακίνηση, γρήγορη λήψη αρχείου, peer, seeder, piece, block, bitfield, client, εξοµοίωση, duplicates. 4

Abstract BitTorrent is a peer-to-peer file sharing protocol used for distributing large amounts of data. We conducted our research using our full featured and extensible implementation of BitTorrent for the OMNeT++ simulation environment. Our goal is to examine the End Game Mode, the final stage BitTorrent download strategy, and see how it affects the performance of our BitTorrent module. The End Game Mode addresses the problem of slow transfers for the last data blocks of an exchange, since at that stage most pieces have been downloaded, therefore the degree of parallelization is low. We summarize how our implementation of end game mode works. We examine the excessive traffic-fast download completion tradeoff by running simulations and changing one of three Peer-Wire protocol parameters each time. The simulations assumed that the client enters End Game Mode when the number of missing blocks equals the number of requested blocks, meaning that all missing blocks have been requested. Key words BitTorrent, end game mode, peer-to-peer, protocol, module, excessive traffic, fast download completion, peer, seeder, piece, block, bitfield, client, simulation, duplicates. 5

Ευχαριστίες Θα ήθελα να ευχαριστήσω τον επιβλέποντα καθηγητή µου κ. Γεώργιο Ξυλωµένο για την ευκαιρία που µου έδωσε να ασχοληθώ µε το συγκεκριµένο θέµα, την εµπιστοσύνη που µου έδειξε, καθώς επίσης για την πρόθυµη υποστήριξή του σε κάθε ζήτηµα που αφορούσε τη διπλωµατική µου εργασία. Επίσης θα ήθελα να ευχαριστήσω ιδιαίτερα τον κ. Κωνσταντίνο Κατσαρό, υποψήφιο διδάκτορα του τµήµατος Επιστήµης των Υπολογιστών του Οικονοµικού Πανεπιστηµίου Αθηνών, για την αµέριστη συµπαράσταση του στις κάθε είδους δυσκολίες που συνάντησα καθ όλη τη διάρκεια αυτής της εργασίας. Η διαρκής βοήθεια και καθοδήγησή του ήταν απαραίτητη και πολύτιµη. 6

ΠΕΡΙΕΧΟΜΕΝΑ Λίστα ιαγραµµάτων...8 Λίστα Πινάκων...8 Κεφάλαιο 1 Εισαγωγή...10 1.1 File sharing...10 1.2 Peer-to-Peer..10 1.3 οµηµένα και αδόµητα P2P Overlay δίκτυα...11 1.4 P2P Networking...12 Κεφάλαιο 2 BitTorrent πρωτόκολλο..14 2.1 Τι είναι το BitTorrent πρωτόκολλο..14 2.2 Tracker πρωτόκολλο...16 2.3 Peer-Wire πρωτόκολλο...17 Κεφάλαιο 3 Προετοιµασία για µετρήσεις..22 3.1 OMNeT++ - Περγραφή εργαλείου...22 3.2 οµή του Peer-Wire πρωτοκόλλου...22 3.3 Περιγραφή βοηθητικών κλάσεων/αρχείων...23 3.4 Εργαλεία ανάλυσης των αποτελεσµάτων της προσοµοίωσης...23 3.5 Σκοπός των µετρήσεων...24 3.6 Στατιστικά που µετρήθηκαν...25 3.7 Παράµετροι του Peer-Wire πρωτοκόλλου...26 Κεφάλαιο 4 Σενάρια και Αποτελέσµατα...28 4.1 Σενάριο 1 ο...28 4.2 Σενάριο 2 ο...29 4.3 Σενάριο 3 ο...29 4.4 Σενάριο 4 ο...30 4.5 Σενάριο 5 ο...30 4.6 Σενάριο 6 ο...31 4.7 Σενάριο 7 ο...31 4.8 Σενάριο 8 ο...32 4.9 Σενάριο 9 ο...32 4.10 Σενάριο 10 ο...33 4.11 Σενάριο 11 ο...33 4.12 Σενάριο 12 ο...34 4.13 Σενάριο 13 ο...34 4.14 Σενάριο 14 ο...35 4.15 Παρατηρήσεις...36 Κεφάλαιο 5 Συµπεράσµατα και µελλοντική δουλειά....44 5.1 Συµπεράσµατα...44 5.2 Μελλοντική ουλειά...45 Παράρτηµα 46 Βιβλιογραφία.70 7

Λίστα ιαγραµµάτων Γράφηµα 1: Server-based δίκτυο...11 Γράφηµα 2: P2P-based δίκτυο...11 Γράφηµα 3: Στατιστικά στοιχεία της CacheLogic σχετικά µε τη διακίνηση στο διαδίκτυο το έτος 2004...14 Γράφηµα 4: Η αρχιτεκτονική του BitTorrent περιλαµβάνει ένα κεντρικοποιηµένο Tracker και αρχείο.torrent...15 Γράφηµα 5: Απεικόνιση του ολικού χρόνου λήψης συναρτήσει των downloaders για end game mode on/off...36 Γράφηµα 6: Απεικόνιση του ολικού χρόνου λήψης συναρτήσει των peers για end game mode on/off στην περίπτωση που το block έχει µέγεθος 16kb...37 Γράφηµα 7:Απεικόνιση των duplicates συναρτήσει των downloaders στην περίπτωση που end game mode on...37 Γράφηµα 8: Απεικόνιση των Redundant Data συναρτήσει των downloaders...38 Γράφηµα 9: Απεικόνιση της διάρκειας του end game mode συναρτήσει των downloaders...39 Γράφηµα 10: Απεικόνιση του ολικού χρόνου λήψης συναρτήσει του µεγέθους του block για end game mode on/off...40 Γράφηµα 11: Απεικόνιση του ολικού χρόνου λήψης συναρτήσει των peers για end game mode on/off στην περίπτωση που το block έχει µέγεθος 64kb...41 Γράφηµα 12: Απεικόνιση των duplicates συναρτήσει του µεγέθους του block στην περίπτωση που end game mode on...41 Γράφηµα 13: Απεικόνιση των Redundant Data συναρτήσει του µεγέθους του block..42 Γράφηµα 14: Απεικόνιση της διάρκειας του End Game Mode συναρτήσει του µεγέθους του block...43 Λίστα Πινάκων Πίνακας 1: Παράµετροι του Peer-Wire πρωτοκόλλου...26 Πίνακας 2: Σύνολο των blocks που αποµένουν όταν ένας peer µπαίνει σε Endgame Mode για διαφορετικές τιµές στο σύνολο των downloaders...39 Πίνακας 3: Σύνολο των blocks που αποµένουν όταν ένας peer µπαίνει σε Endgame Mode για διαφορετικές τιµές στο µέγεθος του block...43 8

9

Κεφάλαιο 1 Εισαγωγή 1.1 File sharing Ο διαµοιρασµός αρχείου, ή αλλιώς στα αγγλικά file sharing, είναι η διανοµή ή η παροχή πρόσβασης σε ψηφιακά αποθηκευµένη πληροφορία, όπως προγράµµατα Η/Υ, πολυµέσα (εικόνα, ήχος), έγγραφα, ή ηλεκτρονικά βιβλία (e-books). Υπάρχει µια ποικιλία µοντέλων διανοµής, αποθήκευσης, µετάδοσης. Οι κοινές µέθοδοι είναι ο διαµοιρασµός µε τη χρήση κινητών µέσων(όπως CD, DVD, flopy disk, µαγνητικές ταινίες, µνήµες flash), η αποθήκευση σε κεντρικούς servers, hyperlinked έγγραφα στον παγκόσµιο ίστο, και η χρήση κατανεµηµένων peer-to-peer(p2p) δικτύων. Η αυξανόµενη διασηµότητα του mp3 format στα τέλη της δεκαετίας του 90 οδήγησε στην κυκλοφορία και ανάπτυξη του Napster και άλλων προγραµµάτων σχεδιασµένων έτσι ώστε να βοηθάνε στο διαµοιρασµό ηλεκτρονικών αρχείων. Άλλα διάσηµα δίκτυα περιλαµβάνουν το Gnutella, edonkey2000, Kazaa και τέλος το BitTorrent. Πολλά προγράµµατα και υπηρεσίες διαµοιρασµού αρχείου έχουν κλείσει λόγω δικαστικού αγώνα από τις RIAA και MPAA. Στις αρχές του 2000, άρχισαν και οι αγωγές προς φυσικά πρόσωπα που χρησιµοποιούσαν τέτοια προγράµµατα. Αν και υποστηρίζεται ότι η χρήση τέτοιων προγραµµάτων οδήγησε στην πτώση των πωλήσεων copyrighted υλικού, η χρήση τους δεν είναι η πρωταρχική αιτία αυτού του φαινοµένου. Παρά τις αντιδράσεις, ο διαµοιρασµός αρχείων παραµένει ευρύτατα διαδεδοµένος. 1.2 Peer-to-Peer Ένα από τα µοντέλα διαµοιρασµού αρχείου είναι και το λεγόµενο peer-to-peer. Ένα peer-to-peer (ή P2P) δίκτυο υπολογιστών χρησιµοποιεί ποικιλία συνδέσεων µεταξύ των συµµετεχόντων σε ένα δίκτυο και το συνολικό bandwidth των συµµετεχόντων στο δίκτυο αντί να έχουµε ένα κεντρικό server ως παροχέα των υπηρεσιών. Στα παρακάτω δύο γραφήµατα φαίνεται η διαφορά ενός P2P δικτύου και ενός server-based δικτύου. 10

Γράφηµα 1: Server-based δίκτυο Γράφηµα 2: P2P-based δίκτυο Τα P2P δίκτυα τυπικά χρησιµοποιούνται για τη σύνδεση κόµβων µέσω ad-hoc συνδέσεων. Τέτοια δίκτυα είναι χρήσιµα για πολλούς σκοπούς. Όπως ήδη αναφέραµε, ο διαµοιρασµός περιεχοµένου όπως αρχεία ήχου, εικόνας, ή οτιδήποτε άλλου σε ψηφιακή µορφή είναι πολύ κοινός, και δεδοµένα πραγµατικού χρόνου, όπως τηλεφωνία, µεταφέρονται επίσης χρησιµοποιώντας P2P τεχνολογία. Σε ένα καθαρά P2P δίκτυο δεν υπάρχει διαχωρισµός των clients και των servers αλλά όλοι λειτουργούν ως peer κόµβοι, δηλαδή λειτουργούν ταυτόχρονα ως clients και servers προς ολους τους άλλους κόµβους του δικτύου. Αυτό το µοντέλο δικτύου από το client-server µοντέλο όπου η επικοινωνία συνήθως γίνεται προς και από έναν κεντρικό server (βλέπε Γράφηµα 1). Ένα παράδειγµα µεταφοράς αρχείου που δεν είναι P2P είναι ένας ftp server όπου τα προγράµµατα του client και του server είναι διαφορετικά: οι clients ξεκινάνε τα downloads/uploads και οι servers αντιδρούν και εξυπηρετούν τα requests των clients. 1.3 οµηµένα και αδόµητα P2P Overlay δίκτυα Στα δοµηµένα P2P Overlay δίκτυα, το overlay δίκτυο αναθέτει κλειδιά στα δεδοµένα και οργανώνει τους peers του σε ένα γράφο ο οποίος χαρτογραφεί κάθε κλειδί σε έναν peer. Αυτός ο δοµηµένος γράφος έχει ως αποτέλεσµα την αποτελεσµατική ανακάλυψη των δεδοµένων χρησιµοποιώντας τα δοσµένα κλειδιά. Ωστόσο, στην απλή του µορφή, αυτή η κλάση συστηµάτων δεν υποστηρίζει πολύπλοκες επερωτήσεις και είναι απαραίτητο να αποθηκεύουµε ένα αντίγραφο ή ένα pointer σε κάθε δεδοµένο (ή τιµή) στον peer που είναι υπεύθυνος για το κλειδί του 11

δεδοµένου. Παραδείγµατα δοµηµένων P2P Overlay δικτύων είναι: Content Addressable Network (CAN), Tapestry, Chord, Pastry, Kademlia, και Viceroy. Όσων αφορά τα αδόµητα P2P Overlay δίκτυα, τα overlay δίκτυα οργανώνουν τους peers σε έναν τυχαίο γράφο µε επίπεδο ή ιεραρχικό τρόπο (π.χ. Super-Peers layer) και χρησιµοποιούν flooding ή random walks ή expanding-ring Time-To-Live (TTL) search στο γράφο για να ζητήσουν περιεχόµενο που είναι αποθηκευµένο στους overlay peers. Κάθε επισκεπτόµενος peer θα αξιολογήσει την επερώτηση τοπικά στο δικό του περιεχόµενο, και θα υποστηρίζει πολύπλοκες επερωτήσεις. Αυτό είναι αναποτελεσµατικό επειδή επερωτήσεις για περιεχόµενο που δεν είναι πανοµοιότυπες πρέπει να σταλούν σε ένα µεγάλο κοµµάτι από το σύνολο των peers και δεν υπάρχει σύνδεση ανάµεσα στην τοπολογία και στην τοποθεσία των δεδοµένων. Παραδείγµατα αδόµητων P2P Overlay δικτύων είναι: Freenet, Gnutella, FastTrack, KaZaa, BitTorrent, Overnet/eDonkey2000. 1.4 P2P Networking Τα τελευταία χρόνια η p2p δραστηριότητα είναι ένα σηµαντικό και ολοένα αυξανόµενο κοµµάτι της µετάδοσης δεδοµένων στο διαδίκτυο. Οι p2p εφαρµογές ανήκουν ανάµεσα στις πιο διάσηµες εφαρµογές. Τα top 5 downloads στο Sourceforge ήταν p2p εφαρµογές. Ωστόσο, η τεκµηρίωση των χαρακτηριστικών της p2p κυκλοφορίας είναι περιορισµένη. Το P2P Networking αναφέρεται στα εικονικά δίκτυα υπολογιστών που αντικαθιστούν τη σαφή έννοια των server και client κόµβων µε την έννοια των peers. Παρόλες τις τεράστιες διαφορές που υπάρχουν ανάµεσα στους peers σε σχέση µε την επεξεργασία, την ταχύτητα της σύνδεσης, τη σύνθεση του τοπικού δικτύου ή του λειτουργικού συστήµατος, κάθε µέλος του p2p δικτύου έχει την ίδια λειτουργικότητα σε επίπεδο εφαρµογής. Αυτή η λειτουργικότητα των peers έρχεται σε αντίθεση µε τα παραδοσιακά συστήµατα δικτύων όπως το DNS όπου υπάρχει ξεκάθαρη διαφορά ανάµεσα στις λειτουργίες που εκτελούνται από κάθε κόµβο. Η απουσία κεντρικοποιηµένων αρχών στα p2p δίκτυα έχει ως αποτέλεσµα µία ολοκληρωτικά κατανεµηµένη σύνθεση συνδεδεµένων peers. Μερικά p2p δίκτυα έχουν επίσης ένα µικρό σύνολο ειδικών κόµβων που συνήθως διαχειρίζονται τις επερωτήσεις. Η κύρια εφαρµογή τέτοιων δικτύων είναι ο διαµοιρασµός αρχείων ανάµεσα στους χρήστες. Ενώ τα p2p δίκτυα έγιναν διάσηµα µόνο κατά τη διάρκεια των τελευταίων χρόνων, η έννοια του p2p networking παρουσιάστηκε νωρίς στην εξέλιξη των δικτυακών συστηµάτων επικοινωνίας. Στην πραγµατικότητα το ARPANET στα τέλη του 60 και το UseNet στα τέλη του 80 είναι κατά µία έννοια προκάτοχοι των σηµερινών p2p δικτύων. Ήταν κατανεµηµένα, αποκεντρικοποιηµένα δίκτυα που προορίζονταν για µεταφορά και διαµοιρασµό αρχείων ανάµεσα σε ισοδύναµους peers. Με τη δραµατική 12

ανάπτυξη του διαδικτύου στα τέλη του 90, η διασηµότητα του παγκόσµιου ιστού κατά κάποιο τρόπο υποκατέστησε τη χρήση και ανάπτυξη των P2P δικτύων. Ωστόσο, µια σειρά από τεχνολογικά επιτεύγµατα οδήγησαν στην έκρηξη των p2p εφαρµογών. Πρώτον, η κωδικοποίηση του Mpeg Audio Layer-3 (το διάσηµο mp3-1995) το οποίο διευκόλυνε τη συµπίεση µεγάλου όγκου δεδοµένων, το οποίο ακολούθησε η κυκλοφορία των mp3 players τα οποία ήταν διαθέσιµα από το 1997 (winamp). Οι κωδικοποιήσεις που πρόσφεραν σηµαντική µείωση στον όγκο των δεδοµένων εικόνας και ήχου (video) αναπτύχθηκαν επίσης αργότερα (το Divx το 1999). εύτερον, η αύξηση του διαθέσιµου bandwidth στους τελικούς χρήστες µε τις τεχνολογίες ευρυζωνικότητας οι οποίες παρήχαν φθηνή πρόσβαση στο διαδίκτυο υψηλής ταχύτητας. Τρίτον, το καίριο Napster δίκτυο το οποίο εµφανίστηκε το 1999 και έφερε την επανάσταση στο διαµοιρασµό των αρχείων. Αν και το Napster ήταν τεχνολογικά ένα υβριδικό p2p δίκτυο παρά ένα καθαρά p2p δίκτυο αφού διατήρησε την έννοια ενός server για την ευρετηρίαση του περιεχοµένου που υπάρχει στους peers. Από τον ερχοµό και την επακόλουθη φθορά της υπηρεσίας του Napster, αναπτύχθηκαν δωδεκάδες διαφορετικά p2p δίκτυα, τα οποία υποστηρίζουν εκατοµµύρια χρηστών και δισεκατοµµύρια µεταφορές αρχείων. Οι p2p εφαρµογές έχουν αναπτυχθεί σε σηµείο ώστε να είναι ένα σηµαντικό και κυρίαρχο κοµµάτι της κυκλοφορίας στο διαδίκτυο. Συνεισφέρουν σηµαντικά στην ολική κυκλοφορία δεδοµένων στο διαδίκτυο και στα χαρακτηριστικά απόδοσης. Ωστόσο, µέχρι τώρα γίνανε λίγες προσπάθειες για να χαρακτηριστεί η p2p κυκλοφορία. Μέχρι τώρα η κοινότητα της ανάλυσης και µοντελοποίησης τείνει να παραµελεί την p2p κυκλοφορία και να θεωρεί ότι ακολουθεί τη γενική συµπεριφορά του άλλου είδους κυκλοφορίας, αν και τα περισσότερα p2p δίκτυα λειτουργούν πάνω σε nonstandard, συνήθως custom designed proprietary πρωτόκολλα. Ως αποτέλεσµα, ο χαρακτηρισµός της p2p κυκλοφορίας είναι προβληµατικός. Επιπλέον, τα πρόσφατα p2p δίκτυα τείνουν να καµουφλάρουν σκόπιµα την κυκλοφορία δεδοµένων για να παρακάµπτουν πιθανά τείχη προστασίας (firewalls) όπως επίσης και νοµικά θέµατα που επιβάλλονται από την RIAA (Recording Industry Association of America). Η πρώτη γενιά της p2p κυκλοφορίας ταξινοµήθηκε σχετικά εύκολα εξαιτίας της χρήσης καλά προσδιορισµένης θύρας ειδική για κάθε δίκτυο. Ωστόσο, ένας αυξανόµενος αριθµός p2p εφαρµογών έχουν την ικανότητα να χρησιµοποιούν οποιαδήποτε θύρα, ακόµα και τη θύρα 80, η οποία παραδοσιακά χρησιµοποιείται στην κυκλοφορία στο διαδίκτυο. Υπάρχουν επίσης p2p εφαρµογές που υποστηρίζουν κρυπτογράφηση, και περισσότερες που υπόσχονται πως θα το υποστηρίξουν στο µέλλον. 13

Κεφάλαιο 2 BitTorrent πρωτόκολλο 2.1 Τι είναι το BitTorrent πρωτόκολλο To BitTorrent είναι ένα peer-to-peer πρωτόκολλο διαµοιρασµού αρχείου που χρησιµοποιείται για τη διανοµή µεγάλου µεγέθους αρχείων. Το BitTorrent είναι ένα από τα πιο κοινά πρωτόκολλα για τη διακίνηση µεγάλου µεγέθους αρχείων, και σύµφωνα µε την CacheLogic το 2004 αποτελούσε το 30% της συνολικής διακίνησης στο διαδίκτυο όπως φαίνεται και στο παρακάτω σχήµα. Γράφηµα 3: Στατιστικά στοιχεία της CacheLogic σχετικά µε τη διακίνηση στο διαδίκτυο το έτος 2004 Το πρωτόκολλο αρχικά λειτουργεί όταν ένας παροχέας του αρχείου διαθέσει το αρχείο (ή τα αρχεία) του στο δίκτυο. Αυτός ονοµάζεται seeder και επιτρέπει στους άλλους, οι οποίοι ονοµάζονται peers, να συνδεθούν και να κατεβάσουν το αρχείο. Ο κάθε peer που κατεβάζει το αρχείο το διαθέτει και στους άλλους peers για να το κατεβάσουν. Αυτή η τεχνική της ταυτόχρονης λήψης περιεχοµένου από πολλαπλούς peers ενώ ταυτόχρονα στέλνοντας περιεχόµενο σε πολλαπλούς άλλους peers ονοµάζεται swarming. Καθώς περισσότεροι peers µπαίνουν στο swarm, η πιθανότητα µιας επιτυχηµένης λήψης αυξάνεται. Αφότου κάποιος peer κατεβάσει επιτυχώς το αρχείο, αρκετοί συνεχίζουν να το διαθέτουν και στους άλλους, και έτσι προστίθενται και αυτοί στον αριθµό των seeders. Κάποιοι peers συνηθίζουν να λαµβάνουν το αρχείο χωρίς να το διαθέτουν και σε άλλους. Αυτή η συµπεριφορά ονοµάζεται free-riding και αντιµετωπίζεται από το BitTorrent. Όταν ένας host θέλει να διανείµει ένα σύνολο αρχείων µέσω του BitTorrent οργανώνει όλα τα αρχεία σε µια ακολουθία από bytes, µοιράζει λογικά την την 14

ακολουθία σε ισοµεγέθη κοµµάτια (pieces) και υπολογίζει µια hash τιµή για το καθένα. Στη συνέχεια, εντοπίζεται ένας server, ο οποίος προτίθεται να είναι ο διαµεσολαβητής της ανταλλαγής των αρχείων. Αυτός ο server ονοµάζεται tracker (βλέπε Γράφηµα 4). Τα metadata και συµπληρωµατικές πληροφορίες όπως hash τιµές, µέγεθος του piece, µέγεθος του αρχείου, διεύθυνση του tracker κ.ο.κ, καταγράφονται σε ένα αρχείο µε τυχαίο όνοµα που παίζει το ρόλο της περιγραφής του περιεχοµένου. Αυτό το metafile όπως ονοµάζεται µπορεί µετά να διανεµηθεί στο διαδίκτυο έτσι ώστε µηχανές αναζήτησεις να ταιριάξουν επερωτήσεις χρηστών µε τα ονόµατα των metafiles. Το BitTorrent κόβει τα αρχεία σε κοµµάτια (pieces) σταθερού µεγέθους (για παράδειγµα, 256 Kbytes) έτσι ώστε να παρακολουθεί το περιεχόµενο του κάθε peer. Κάθε downloader peer ανακοινώνει σε όλους τους peers του τα pieces που έχει, και χρησιµοποιεί SHA1 για να κάνει hash όλα τα pieces που περιλαµβάνονται στο.torrent αρχείο. Όταν ένας peer λάβει ένα piece και ελέγξει ότι η hash τιµή ταιριάζει, ανακοινώνει ότι έχει το piece σε όλους τους peers του. Αυτό το κάνει για να επιβεβαιώσει την ακεραιότητα των δεδοµένων. Οι συνδέσεις των peers είναι συµµετρικές. Τα µηνύµατα που στέλνονται και στις δύο κατευθύνσεις είναι τα ίδια, και τα δεδοµένα µπορούν να κυκλοφορούν σε οποιαδήποτε κατεύθυνση. Όταν δεδοµένα µεταδίδονται, οι downloader peers κρατάνε αρκετά requests (για κοµµάτια δεδοµένων) σε ουρά αµέσως για να έχουν καλή απόδοση στο TCP. Αυτό είναι γνωστό ως pipelining. Τα requests που δεν µπορούν αµέσως να αποθηκευτούν στο TCP buffer µπαίνουν στην ουρά στη µνήµη αντί να αποθηκευτούν σε ένα επιπέδου εφαρµογής buffer δικτύου, έτσι ώστε να µπορούν όλα να σβηστούν όταν συµβεί κάποιο µπλοκάρισµα (choke) ενός peer. Γράφηµα 4: Η αρχιτεκτονική του BitTorrent περιλαµβάνει ένα κεντρικοποιηµένο Tracker και αρχείο.torrent 15

Ένας BitTorrent client είναι οποιοδήποτε πρόγραµµα που εφαρµόζει το BitTorrent πρωτόκολλο. Κάθε client είναι ικανός να ετοιµάσει, ζητήσει, και µεταδώσει οποιοδήποτε τύπο αρχείου σε ένα δίκτυο, χρησιµοποιώντας το πρωτόκολλο. Ένας peer είναι οποιοσδήποτε ηλεκτρονικός υπολογιστής που τρέχει ένα στιγµιότυπο του client. Αν και τα δύο εν τέλει µεταφέρουν αρχεία σε ένα δίκτυο, η λήψη ενός αρχείου στο BitTorrent διαφέρει από ένα κλασικό full-file HTTP request, σε διάφορα θεµελιώδη σηµεία: Το BitTorrent στέλνει πολλά µικρά requests για δεδοµένα µέσω διαφορετικών TCP sockets, ενώ οι web browsers τυπικά στέλνουν µόνο ένα HTTP GET request µέσω ενός TCP socket. Το BitTorrent «κατεβάζει» ένα αρχείο µε τη random ή rarest first πολιτική το οποίο εξασφαλίζει υψηλή διαθεσιµότητα, ενώ το HTTP «κατεβάζει» µε επακόλουθο τρόπο. Αυτές οι διαφορές επιτρέπουν στο BitTorrent να επιτυγχάνει πολύ χαµηλότερο κόστος για τον παροχέα του περιεχοµένου, µεγαλύτερο redundancy και περισσότερη αντοχή στην κατάχρηση ή στα flash crowds από ένα τυπικό HTTP server. Ωστόσο, αυτή η προστασία έχει κάποιο κόστος: απαιτείται χρόνος για τα downloads να φτάσουν σε full download speed επειδή µπορεί να χρειαστεί αρκετός χρόνος για να γίνουν συνδέσεις µε αρκετούς peers, και απαιτείται χρόνος για ένα peer να λάβει επαρκή δεδοµένα για να γίνει ένας αποτελεσµατικός uploader. Γι αυτό το λόγο, ένα τυπικό BitTorrent download θα αυξηθεί σταδιακά σε ταχύτητα, και µετά θα αρχίσει να πέφτει προς το τέλος της λήψης του αρχείου. Αυτό έρχεται σε αντίθεση µε έναν HTTP server στον οποίο, ενώ είναι περισσότερο ευάλωτος στο overload και στην κατάχρηση, η ταχύτητα αυξάνεται πολύ γρήγορα και παραµένει σταθερή καθόλη τη διάρκεια της λήψης. 2.2 Tracker πρωτόκολλο Ένα από τα πρωτόκολλα που εφαρµόσαµε και το οποίο αποτελεί κοµµάτι του BitTorrent πρωτοκόλλου είναι το Tracker πρωτόκολλο. Τυπικά, για τη διανοµή ενός αρχείου µε το BitTorrent αρχικά δηµοσιοποιούµε το.torrent metafile σε ιστοσελίδες µέσω των οποίων διανέµεται στους διάφορους peers. Όπως προείπαµε το metafile αυτό περιέχει τη διεύθυνση του tracker, το µέγεθος του αρχείου, το µέγεθος του piece, και τις τιµές hash για τα pieces του αρχείου. Οι trackers είναι υπεύθυνοι να βοηθήσουν τους peers να ανακαλύψουν ο ένας τον άλλον έτσι ώστε να δηµιουργήσουν ένα swarm. Κατά τη διάρκεια της λήψης ενός αρχείου, κάθε client επικοινωνεί µε τον tracker και δηµοσιοποιεί τα ολικά bytes που έχει λάβει και έχει διαθέσει, καθώς επίσης και την IP 16

διεύθυνσή του, την TCP θύρα, πληροφορίες αναγνώρισης κ.ο.κ. Ας σηµειώσουµε ότι οι περισσότερες από τις πληροφορίες που ανακοινώνει ο client εξυπηρετούν στατιστικούς σκοπούς και µόνο η IP διεύθυνση και η TCP θύρα ενός client είναι σηµαντικές για τον tracker. Με αυτόν τον τρόπο όλο και περισσότεροι peers ανακαλύπτουν αυξανόµενα υποσύνολα του swarm. 2.3 Peer-Wire πρωτόκολλο Το δεύτερο πρωτόκολλο που εφαρµόσαµε, το οποίο αποτελεί και αυτό κοµµάτι του BitTorrent πρωτοκόλλου και το οποίο χρησιµοποιήθηκε για τις µετρήσεις, είναι το Peer-Wire πρωτόκολλο. Το πρωτόκολλο αυτό παρέχει τον πυρήνα της λειτουργικότητας του BitTorrent, δηλαδή, την αλληλεπίδραση µε τους peers. Στη συνέχεια θα εξηγήσουµε µε λίγα λόγια πως λειτουργεί το peer-wire πρωτόκολλο και θα αναλύσουµε σύντοµα τις στρατηγικές λήψεως ενός αρχείου εστιάζοντας στην στρατηγική του τελευταίου σταδίου την οποία αφορά η συγκεκριµένη διπλωµατική, το End Game Mode. Γενική επισκόπηση του Peer-Wire πρωτοκόλλου Αφού ο client επικοινωνήσει µε τον tracker, στη συνέχεια προσπαθεί να δηµιουργήσει TCP συνδέσεις µε τους peers που έλαβε ως απάντηση από τον tracker. Όταν πραγµατοποιηθεί η σύνδεση, οι δύο peers ανταλλάσσουν HANDSHAKE µηνύµατα έτσι ώστε να επιβεβαιώσουν ότι όντως ενδιαφέρονται για το ίδιο torrent metafile. Μετά τα HANDSHAKE µηνύµατα γίνεται ανταλλαγή BITFIELD µηνυµάτων τα οποία περιέχουν το bitfield του κάθε client, δηλαδή το bitmap που δείχνει την διαθεσιµότητα κάθε piece στον client. Σύµφωνα µε αυτή την πληροφορία ένας client µπορεί να αποφασίσει αν ενδιαφέρεται για ένα ή περισσότερα pieces ενός άλλου peer. Ας σηµειώσουµε εδώ ότι στην δικιά µας εφαρµογή αυτή η ανταλλαγή µηνυµάτων αποφεύγεται στην περίπτωση που ο peer δεν έχει κανένα piece αφού θα είχε ως αποτέλεσµα την ανταλλαγή άχρηστης πληροφορίας. Γι αυτό το λόγο αποστέλεται ένα NOT INTERESTED µήνυµα στον peer για να επισηµάνει την έλλειψη ενδιαφέροντος για τα δεδοµένα του. Αν και σε αυτό το στάδιο ένας client γνωρίζει για ποιους peers ενδιαφέρεται, δεν µπορεί να ζητήσει δεδοµένα µέχρι ο peer να του το επιτρέψει στέλνοντας ένα UNCHOKE µήνυµα. Αυτό σηµαίνει ότι κάθε client είναι εξ ορισµού µπλοκαρισµένος, ή όπως αλλιώς θα λέγαµε σε ορολογία του BitTorrent, «πνιγµένος» (chocked) από τον συγκεκριµένο peer, σύµφωνα µε κριτήρια που είναι ενσωµατωµένα στον choking αλγόριθµο του πρωτοκόλλου. 17

Όταν ένας client γίνει unchoke από ένα peer, αρχίζει να στέλνει REQUEST µηνύµατα, καθένα από τα οποία ζητάει ένα συγκεκριµένο block του επιλεγµένου piece. Ο peer στέλνει τα ζητούµενα δεδοµένα χρησιµοποιώντας PIECE µηνύµατα. Με την ολοκλήρωση της λήψης του αρχείου, ο client ενηµερώνει µε HAVE µηνύµατα τους peers µε τους οποίους έχει συνδεθεί. Αυτοί οι peers ενηµερώνουν το bitfield για εκείνο τον client. Μετά µπορεί να εκφράσουν το ενδιαφέρον τους για το piece µε ένα INTERESTED µήνυµα. Στρατηγική λήψεως ενός piece Αυτή η στρατηγική αναφέρεται στη δυνατότητα των clients να λάβουν τα pieces σε τυχαία σειρά. Εµείς εφαρµόσαµε τις δύο επικρατέστερες στρατηγικές λήψεως ενός piece, τις Rarest First και Random First. Η Rarest First επιλέγει εκείνα τα pieces που εµφανίζονται λιγότερο συχνά στο σύνολο των συνδεδεµένων peers σε έναν client. Αυτή η επιλογή του piece γίνεται τυχαία ανάµεσα στα λιγότερο κοινά pieces για να αποφευχθεί πολλοί peers να συγκλίνουν στο ίδιο piece. Με αυτόν τον τρόπο οι peers λαµβάνουν pieces που οι περισσότεροι από τους άλλους peers πιθανόν να θέλουν, µε αποτέλεσµα να διευκολύνεται η ανταλλαγή των δεδοµένων. Ωστόσο, τα σπάνια pieces υπάρχουν σε ελάχιστους peers και είναι πιθανόν το µπλοκάρισµα ενός client να ακυρώσει τη λήψη του piece. Αυτό έχει ως αποτέλεσµα οι clients, που δεν έχουν pieces στην κατοχή τους, να περιµένουν για ένα βέλτιστο unchoking από έναν peer που έχει το συγκεκριµένο σπάνιο piece. Η στρατηγική Random First αποφεύγει αυτό το πρόβληµα επιλέγοντας ένα τυχαίο piece το οποίο είναι περισσότερο πιθανό να είναι διαθέσιµο από πολλούς peers και έτσι η απόφαση να γίνει choke ένας client να µην έχει τόσο αρνητικά αποτελέσµατα. Queueing Όπως αναφέρθηκε παραπάνω, τα REQUEST µηνύµατα αφορούν συγκεκριµένα blocks ενός piece. Τα µεγέθη των pieces ποικίλουν από 256kb µέχρι 1mb ή και περισσότερο. Σε περίπτωση που ένας client γίνει choked θα οδηγούσε σε περιττές αναµεταδόσεις πακέτων. Γι αυτό το λόγο χρησιµοποιούµε ένα queueing policy για αυτά τα requests, ειδάλλως θα είχαµε να αντιµετωπίσουµε καθυστερήσεις στις µεταδόσεις των πακέτων. Στο policy που εφαρµόσαµε ο χρήστης έχει τη δυνατότητα να καθορίσει το ακριβές µέγεθος του queue. Ο client µπορεί να στείλει σε έναν peer µέχρι ένα συγκεκριµένο αριθµό από REQUEST µηνύµατα για blocks. Μόλις λάβει ένα PIECE µήνυµα, ο client µπορεί να στείλει το επόµενο REQUEST µήνυµα. Στην υλοποίησή µας τα blocks ζητούνται από τους clients µε µια σειρά αλληλουχίας µέσα στο piece. Όταν ένα piece έχει ζητηθεί στο σύνολό του, αν η request queue δεν είναι γεµάτη, ο client επιλέγει ένα άλλο επιθυµητό piece από το bitfield ενός peer σύµφωνα και µε την 18

στρατηγική λήψης ενός piece και ξεκινάει να στέλνει REQUEST µηνύµατα για τα blocks του. Choking αλγόριθµος Το µπλοκάρισµα (choking) των clients γίνεται για διάφορους λόγους. Ο έλεγχος συµφόρησης TCP συµπεριφέρεται πολύ φτωχά όταν στέλνουµε πάνω από πολλαπλές συνδέσεις ταυτόχρονα. Επίσης, το choking των clients επιτρέπει στον κάθε peer να χρησιµοποιήσει έναν tit-for-tat αλγόριθµο για να εξασφαλίσει ότι έχουν ένα λογικό download rate. O choking αλγόριθµος που θα περιγράψουµε παρακάτω είναι αυτός που χρησιµοποιούµε στην υλοποίησή µας. Υπάρχουν διάφορα κριτήρια τα οποία πρέπει να τηρεί ένας καλός choking αλγόριθµος. Πρέπει να ορίσει ως όριο ένα συγκεκριµένο αριθµό ταυτόχρονων uploads για καλή TCP απόδοση. Πρέπει να αποφύγει το γρήγορο choking/unchoking, το οποίο είναι γνωστό και ως fibrillation. Οι peers πρέπει να κάνουν unchoke τους clients που έχουν τα καλύτερα upload rates (reciprocation). Τέλος, πρέπει να δοκιµάζει αχρησιµοποίητες συνδέσεις κάθε λίγο για να δει αν είναι καλύτερες από τις τρέχουσες, γνωστό και ως αισιόδοξο (optimistic) unchoking. Ο τρέχων choking αλγόριθµος αποφεύγει το fibrillation αλλάζοντας τους choked peers µία φορά κάθε δέκα δευτερόλεπτα. Το reciprocation και το ανώτατο όριο των uploads πετυχαίνεται κάνοντας unchoke τους τέσσερις peers που έχουν το καλύτερο upload rate και ενδιαφέρονται. Αυτό µεγιστοποιεί το download rate του client. Αυτοί οι τέσσερις peers ονοµάζονται downloaders, επειδή ενδιαφέρονται να λάβουν δεδοµένα από τον client. Οι peers που έχουν καλύτερο upload rate (σε σύγκριση µε τους downloaders) αλλά δεν ενδιαφέρονται γίνονται choked. Αν ενδιαφερθούν, ο downloader µε το χειρότερο upload rate γίνεται choked. Αν ένας client έχει ολόκληρο το αρχείο, χρησιµοποιεί το upload rate του παρά το download rate για να αποφασίσει ποιους peers θα κάνει unchoke. Όσων αφορά το αισιόδοξο unchoking, οποιαδήποτε στιγµή υπάρχει ένας µοναδικός peer ο οποίος είναι unchoked ανεξάρτητα από το upload rate του (αν ενδιαφέρεται, τότε υπολογίζεται ως ένας από τους τέσσερις downloaders). Ποιος peer γίνεται αισιόδοξα unchoked αποφασίζεται κάθε 30 δευτερόλεπτα. Super Seeding Το super seeding είναι ένα χαρακτηριστικό ιδιαίτερα χρήσιµο για τη διανοµή περιεχοµένου καθώς βοηθάει τον αρχικό seeder του αρχείου να αποφύγει την υπερβολική κατανάλωση bandwidth. Ο super seeder δεν πληροφορεί τους peers του ότι έχει διαθέσιµα όλα τα pieces, αλλά µεταµφιέζεται σε ένα συνηθισµένο client. Όταν συνδεθεί µε ένα peer, ο seeder αρχικά παριστάνει πως δεν έχει κανένα piece και µόνο µετά τον ενηµερώνει για τη διαθεσιµότητα ενός piece µε ένα HAVE µήνυµα. Αυτό θα 19

πείσει τον client να προσπαθήσει να κατεβάσει µόνο αυτό το piece. Όταν ο client λάβει το piece, ο seeder δε θα τον ενηµερώσει για άλλα pieces µέχρι να δει ότι το piece που έστειλε προηγουµένως υπάρχει τουλάχιστον σε έναν από τους άλλους clients. Μέχρι τότε, ο client δε θα έχει πρόσβαση σε κανένα άλλο από τα pieces του seeder, µε αποτέλεσµα να µη χαραµίσει το bandwidth του seeder. To module µας εφαρµόζει το χαρακτηριστικό αυτό σε όλους τους clients, αλλά το ενεργοποιεί µόνο στον αρχικό seeder γιατί ενώ βοηθάει στην διανοµή σπάνιων pieces επειδή πειριορίζει την επιλογή των pieces από τους clients, περιορίζει επίσης την ικανότητα αυτών των clients να κατεβάσουν δεδοµένα για pieces τα οποία έχουν ήδη µερικώς λάβει. Anti-snubbing Περιστασιακά ένας peer θα µπλοκαριστεί από όλους τους peers από τους οποίους κατέβαζε δεδοµένα. Σε τέτοιες περιπτώσεις συνήθως θα συνεχίζει να έχει χαµηλά download rates έως ότου το αισιόδοξο unchoke να βρει καλύτερους peers. Για να µετριάσουµε αυτό το πρόβληµα, όταν περνάει παραπάνω από ένα λεπτό χωρίς να πάρουµε piece από κάποιο peer, το BitTorrent υποθέτει ότι σνοµπάρεται (snubbed) από το συγκεκριµένο peer και δεν του δίνει δεδοµένα εκτός και είναι αισιόδοξο unchoke. Αυτό συχνά οδηγεί σε περισσότερα από ένα ταυτόχρονα αισιόδοξα unchoke, πράγµα που προκαλεί γρηγορότερη ανάκαµψη στα download rates. End Game Mode Τα downloads στο BitTorrent πραγµατοποιούνται σύµφωνα µε έναν αριθµό στρατηγικών, ή όπως αλλιώς θα λέγαµε σύµφωνα µε κάποια στάδια. Η εκκίνηση της λήψης ενός torrent έχει µία στρατηγική, η οµαλή λειτουργία έχει άλλη στρατηγική και τέλος για τη λήψη των τελευταίων εναποµείναντων pieces υπάρχει ακόµα µία στρατηγική. Το όνοµα της τελευταίας αυτής στρατηγικής είναι End Game Mode. Όταν η λήψη ενός αρχείου είναι σχεδόν ολοκληρωµένη δηλαδή βρισκόµαστε στο στάδιο που τα περισσότερα pieces έχουν ληφθεί, υπάρχει µία τάση τα τελευταία blocks να λαµβάνονται πολύ αργά. Για να το επιταχύνουµε αυτό, ο client στέλνει REQUEST µηνύµατα για όλα τα blocks που δεν έχει σε όλους τους peers του που δεν τον µπλοκάρουν (στη δικιά µας εφαρµογή του End Game Mode τα REQUEST µηνύµατα δε στέλνονται σε όλους του peers αφού αν ένας peer µπλοκάρει τον client θα ακυρώσει απλά το request). Για να µη γίνει αναποτελεσµατικό και χάσουµε σε bandwidth, ο client στέλνει επίσης ένα CANCEL µήνυµα σε όλους τους άλλους κάθε φορά που λαµβάνει ένα block. Είναι πιο «οικονοµικό» να στείλουµε ένα CANCEL µήνυµα παρά να λάβουµε ολόκληρο το block και απλά να το απορρίψουµε. Το πότε πρέπει ένας client να µπει σε End Game Mode είναι υπο συζήτηση. Στο δικό µας BitTorrent module, ο client µπαίνει σε End Game Mode όταν ο αριθµός των 20

εναποµείναντων blocks ισούται µε τον αριθµό των ζητούµενων blocks, που σηµαίνει πως όλα τα εναποµείναντα blocks έχουν ζητηθεί. Ωστόσο, υπάρχει και µια δεύτερη προσέγγιση που είναι υπο συζήτηση. Ένας client µπαίνει σε End Game Mode όταν ο αριθµός των εναποµείναντων blocks είναι µικρότερος από τον αριθµό των blocks που βρίσκονται υπο µεταφορά και όχι περισσότερο από 20. Φαίνεται να έχει συµφωνηθεί ότι είναι καλή ιδέα να διατηρούµε τον αριθµό των εκκρεµών blocks χαµηλό (1 ή 2 blocks) έτσι ώστε να µειώσουµε το overhead, και αν ζητηθούν τυχαία blocks υπάρχει χαµηλότερη πιθανότητα να λάβει ένας client πολλαπλά αντίγραφα του ίδιου block. 21

Κεφάλαιο 3 Προετοιµασία για τις µετρήσεις 3.1 OMNeT++ - Περιγραφή του εργαλείου Το OMNeT++ είναι ένα πακέτο προσοµοίωσης διακριτών γεγονότων βασισµένο στη γλώσσα C++. Αρχικός τοµέας εφαρµογών του OMNeT++ είναι η προσοµοίωση δικτυών υπολογιστών και άλλων κατανεµηµένων συστηµάτων. Επιτρέπει σχεδίαση αρθρωτών µοντέλων προσοµοίωσης, τα οποία µπορούν να συνδυαστούν και να επαναχρησιµοποιηθούν. Είναι επίσης κατάλληλο για προσοµοίωση σύνθετων συστηµάτων όπως τους κόµβους ιαδικτύου και τη δυναµική των πρωτοκόλλων TCP/IP µε τρόπο πολύ ρεαλιστικό. Το OMNeT++ τρέχει εξίσου καλά σε Linux, Unix, αλλά και σε Win32 πλατφόρµες. Για την εκπόνηση της διπλωµατικής αυτής χρησιµοποιήθηκε εγκατάσταση του OMNeT++ σε Linux περιβάλλον. Το µοντέλο του OMNeT++ περιλαµβάνει: Τη γλώσσα NED (.ned αρχεία) που περιγράφει την τοπολογία. Ο χρήστης καθορίζει τη δοµή του µοντέλου (τις ενότητες και τη διασύνδεσή τους) µε τη χρησιµοποίηση της γλώσσας περιγραφής τοπολογίας (NED). Τους ορισµούς των µηνυµάτων (.msg αρχεία). Ο προγραµµατιστής µπορεί να ορίσει διάφορους τύπους µηνυµάτων και να προσθέσει πεδία δεδοµένων σε αυτά. Τα αρχεία από τις απλές ενότητες τα οποία είναι αρχεία µε κατάληξη.cc/.h. 3.2 οµή του Peer-Wire πρωτοκόλλου To Peer-Wire πρωτοκόλλο που χρησιµοποιήσαµε για τις µετρήσεις αποτελείται από δύο βασικά modules: BTPeerWireBase και BTPeerWireClientHandlerBase. Το κύριο σηµείο συντονισµού για τον BitTorrent client είναι το BTPeerWireBase module, το οποίο κληρονοµεί το INET TCPSrvHostApp. Η κλάση BTPeerWireClientHandlerBase, που κληρονοµεί το INET TCPServerThreadBase, είναι υπεύθυνη για να χειρίζεται τις επικοινωνίες µε έναν peer. Αυτό σηµαίνει ότι όλες οι ανταλλαγές peer-wire µηνυµάτων µεταξύ των peers διαχειρίζονται από στιγµιότυπα αυτής της κλάσης. Ο περισσότερος κώδικας που γράφτηκε υπάρχει µέσα στις δύο αυτές κλάσεις. Όλος ο κώδικας µε λεπτοµέρεια και σχολιασµό βρίσκεται στο Παράρτηµα. 22

3.3 Περιγραφή βοηθητικών κλάσεων/αρχείων Για να διευκολύνουµε τη συλλογή των στατιστικών χρησιµοποιήσαµε το BTStatistics module, το οποίο είναι ένα απλό module υπεύθυνο για τη συλλογή γενικών στατιστικών, δηλαδή στατιστικών που δεν µπορούν να συλλεχθούν αυτόνοµα από τον κάθε BitTorrent host. Ένα αρχείο το οποίο συνδέεται µε το BtStatistics module και στο οποίο ορίζονται τα µηνύµατα, είναι το BTStatisticsMsg.msg. Σε αυτό ορίζουµε διάφορους τύπους µηνυµάτων, προσθέτωντας στα πεδία τους τις αντίστοιχες µεταβλητές. Κάθε τύπος µηνύµατος που ορίζουµε αφορά και µία µέτρηση γενικού στατιστικού. Μια επίσης βοηθητική κλάση είναι και η BTUtils η οποία χρησιµοποιείται για διαχείριση της πληροφορίας κατάστασης του πρωτοκόλλου. Οι βασικές βοηθητικές κλάσεις/αρχεία είναι αυτές που αναφέραµε, αν και έχουµε χρησιµοποιήσει και κάποια αρχεία απλά για δήλωση κάποιων µεταβλητών και τίποτα παραπάνω (για περισσότερες λεπτοµέρειες στον κώδικα βλέπε Παράρτηµα). Στην επόµενη ενότητα θα αναλύσουµε τα στατιστικά που µετράµε και το λόγο για τον οποίο επιλέξαµε τα συγκεκριµένα. 3.4 Εργαλεία ανάλυσης των αποτελεσµάτων της προσοµοίωσης Στο τέλος κάθε εξοµοίωσης τα αποτελέσµατα καταγράφονται σε δύο µορφές αρχείων, ένα vector αρχείο και ένα scalars αρχείο µε καταλήξεις.vec και.sca αντίστοιχα. Vector αρχεία Τα vector αρχεία είναι µια σειρά από δεδοµένα µε timestamps. Τα vectors µπορούν να χρησιµοποιηθούν για την καταγραφή end-to-end καθυστερήσεων, round trip times πακέτων, queue lengths, queueing times, link utilitization, τον αριθµό των dropped πακέτων, κτλπ. οτιδήποτε δηλαδή είναι χρήσιµο για να έχουµε µια πλήρη εικόνα του τι συνέβει στο µοντέλο κατά τη διάρκεια εκτέλεσης της προσοµοίωσης. Τα vectors καταγράφονται από απλά modules, από coutvector αντικείµενα. Αφού τα vectors συνήθως καταγράφουν ένα µεγάλο όγκο δεδοµένων, στο omnetpp.ini µπορείτε να απενεργοποιήσετε τα vectors ή να ορίσετε ένα χρονικό διάστηµα καταγραφής. Όλα τα coutvector γράφουν στο ίδιο αρχείο. 23

Scalar στατιστικά Όπως προείπαµε τα vectors καταγράφουν την προσωρινή συµπεριφορά της εκτέλεσης της προσοµοίωσης. Ωστόσο, για να συγκρίνουµε τη συµπεριφορά του µοντέλου µε διάφορες παραµέτρους, τα scalar στατιστικά είναι περισσότερο χρήσιµα. Τα αποτελέσµατα καταγράφονται µε κλήσεις της recordscalar(), η οποία καλείται συνήθως στις µεθόδους finish() των modules (βλέπε BTStatistics.cc στο Παράρτηµα). Κάθε κλήση της recordscalar() δηµιουργεί µια scalar γραµµή στο αρχείο. Αν γίνει χρήση cstatistic υποκλάσεων όπως η cstddev, τότε µε κλήση των recordscalar() µεθόδων τους, θα παράγουν αρκετές γραµµές: mean, standard deviation, κτλπ. Επιπροσθέτως, µπορεί να γίνει η καταγραφή των αποτελεσµάτω πολλών προσοµοιώσεων σε ένα µόνο αρχείο. Αυτό διευκολύνει τη σύγκριση τους, δηµιουργώντας x-y διαγράµµατα, ραβδογράµµατα κτλπ. 3.5 Σκοπός των µετρήσεων Στο End Game Mode υπάρχει το tradeoff excessive traffic vs fast download completion. Με τον όρο excessive traffic εννοούµε την υπερβολική µεταφορά από blocks µε αποτέλεσµα τη λήψη πολλών διπλών blocks (duplicates). Μέσω των µετρήσεων προσπαθούµε να δείξουµε τι κερδίζουµε µε τη χρήση του End Game Mode και τι χάνουµε, και να καταλήξουµε σε ένα συµπέρασµα για το αν το End Game Mode είναι τελικά αποδοτικό. Το µέγεθος που µας δείχνει αν έχουµε κέρδος από τη χρήση του είναι ο χρόνος λήψεως (download time) ενώ το µέγεθος που µας δείχνει αν χάνουµε είναι τα duplicates που τυχόν λαµβάνει ο κάθε peer. Αυτό που χάνει ουσιαστικά ένας peer µε τα διπλά blocks που λαµβάνει είναι bandwidth. Είτε µπορεί να κατεβάσει ένα αρχείο γρήγορα αλλά µε σπατάλη bandwidth είτε µπορεί να λάβει περισσότερα duplicates αλλά µε επίπτωση στο χρόνο λήψης. 24

3.6 Στατιστικά που µετρήθηκαν Πριν τρέξω κάποια σενάρια και βγάλω κάποια συµπεράσµατα µε χρήση διαγραµµάτων χρειάστηκε να µετρήσω κάποια στατιστικά τα οποία παραθέτω ονοµαστικά παρακάτω: Normal requests για ένα block που έστειλε ο κάθε peer Normal requests για ένα block που έλαβε ο κάθε peer Normal blocks που έστειλε ο κάθε peer Normal blocks που έλαβε ο κάθε peer End game requests για ένα block που έστειλε ο κάθε peer End game requests για ένα block που έλαβε ο κάθε peer End game blocks που έστειλε ο κάθε peer End game blocks που έλαβε ο κάθε peer End game blocks που ελήφθησαν από κάθε peer αλλά έστειλε µόνο ο BThostSeeder End game blocks που έστειλε ο BThostSeeder ιάρκεια του download όταν ένας peer είναι σε end game mode Remaining blocks τη στιγµή που ένας peer µπαίνει σε end game mode Τα διπλά blocks (duplicates) τα υπολογίζω ως εξής: Normal blocks που έλαβε ο κάθε peer + End game blocks που έλαβε ο κάθε peer Συνολικός αριθµός blocks. Λέγωντας συνολικό αριθµό blocks εννοούµε το σύνολο των blocks από τα οποία αποτελείται ένα αρχείο. ηλαδή αν το αρχείο είναι 10mb και το µέγεθος του block είναι 16kb τότε το σύνολο των blocks από τα οποία αποτελείται το αρχείο των 10mb είναι (10x1024)/16 = 640 blocks. 25

3.7 Παράµετροι του Peer-Wire πρωτοκόλλου Στο κεφάλαιο 2 µιλήσαµε για τα πιο σηµαντικά χαρακτηριστικά του peer-wire πρωτοκόλλου και τα οποία υλοποιήσαµε στο BitTorrent module µας. Στον παρακάτω πίνακα φαίνονται όλες οι παράµετροι αυτών των χαρακτηριστικών µε τις default τιµές τους. Πίνακας 1: Παράµετροι του Peer-Wire πρωτοκόλλου Για τα σενάρια αποφασίσαµε να πειράξουµε τις τιµές των παραµέτρων end game mode (true/false), downloaders και block size. Στα σενάρια κάθε φορά πειράζαµε την τιµή µιας παραµέτρου αφήνωντας όλες τις άλλες στις default τιµές τους. Όσον αφορά το µέγεθος του αρχείου και το συνολικό αριθµό των peers που θα µπουν στο δίκτυο για να πάρουν το αρχείο, καταλήξαµε σε 15 peers και το µέγεθος του αρχείου υποθέτουµε πως είναι 20MΒytes. Το µέγεθος του piece το θέσαµε στα 256Kbyte όπως αναφέρει και το BitTorrent Specification. Τον αριθµό των optimistically unchoked 26

peers τον αφήσαµε ίσο µε 1 σε όλα τα σενάρια γιατί θεωρήσαµε ότι η αλλαγή της τιµής θα επηρέαζε περισσότερο το πρωτόκολλο παρά το end game mode. Για τους downloaders αποφασίσαµε να εξετάσουµε τις τιµές 4, 6, 8 και 10 ενώ για το µέγεθος του block τις τιµές 16, 32, 64 και 128. Τα κριτήρια που µας οδήγησαν στην επιλογή των δύο αυτών παραµέτρων είναι ότι η αύξηση των downloaders αυξάνει τον βαθµό του παραλληλισµού, την παράλληλη αίτηση για τα ίδια δεδοµένα. Αυτό βέβαια έχει θετικά (πιθανόν να βρεθεί πιο γρήγορα κάθε block) και αρνητικά αποτελέσµατα (πιθανόν να έχουµε περισσότερα duplicates). Όσων αφορά το µέγεθος του block, αυτό για το οποίο είµαστε σίγουροι είναι όσα περισσότερα είναι τα blocks για µεταφορά αυξάνει την επιβάρυνση από τις αιτήσεις που στέλνει ο κάθε peer για κάθε block. ηλαδή αν έχουµε blocks των 16Kbytes το καθένα αυτό θα είχε ως αποτέλεσµα το αρχείο να χωρίζεται σε µεγάλο αριθµό από blocks σε αντίθεση µε το αν έχουµε blocks των 128Kbytes το καθένα. Αλλά υπάρχει µεγάλη διαφορά αν έχουµε duplicates των 16Kbytes και duplicates των 128Kbytes. Προφανώς αν έχουµε duplicates των 128Kbytes αυξάνει την επιβάρυνση στο bandwidth, χάνουµε δηλαδή περισσότερο σε bandwidth. To µέγεθος του block έχει και αυτό τα θετικά του και τα αρνητικά του και αυτό θέλουµε να δούµε µε το τρέξιµο των σεναρίων, πώς δηλαδή επηρεάζει τον παραλληλισµό. 27

Κεφάλαιο 4 Σενάρια και Αποτελέσµατα Σε αυτό το κεφάλαιο θα παρουσιάσουµε τα σενάρια που τρέξαµε µε τις αλλαγές των αντίστοιχων παραµέτρων σε κάθε σενάριο όπως προαναφέραµε στην ενότητα 3.7 του κεφαλαίου 3. Σε κάθε σενάριο παραθέτουµε έναν πίνακα µε τα στοιχεία του κάθε σεναρίου όπως ο αριθµός των downloaders, το µέγεθος του block κτλπ. Το κάθε σενάριο το τρέξαµε µε 4 διαφορετικές seed τιµές. Οι seed τιµές έχουν να κάνουν µε το που µπαίνει ο κάθε peer, δηλαδή σε ποια θέση στο δίκτυο βρίσκεται κάθε φορά. Κάθε φορά που αλλάζει η τιµή του seed οι peers µπαίνουν σε διαφορετικές θέσεις στο δίκτυο (η κατανοµή τους στο δίκτυο είναι διαφορετική) και οι αποστάσεις µεταξύ τους αλλάζουν. Αυτό το κάναµε για να έχουµε µεγαλύτερη ακρίβεια στα τελικά αποτελέσµατα. Αφότου πήραµε τις average τιµές για κάθε seed value τις προσθέσαµε και τις διαιρέσαµε µε το 4 για να βρούµε τις τελικές average τιµές τις οποίες παραθέτω παρακάτω σε κάθε σενάριο. Στο τέλος καταλήγουµε στα τελικά αποτελέσµατα µετά την εξέταση των 14 σεναρίων µε το σχεδιασµό των αντίστοιχων διαγραµµάτων. Να αναφέρουµε επίσης ότι στο δίκτυο υπάρχει ένας seeder µόνο, δηλαδή εξ αρχής υπάρχει ένας peer που έχει όλο το αρχείο. Όταν ένας peer τελειώνει το download ενός αρχείου τότε βγαίνει από το δίκτυο και δε γίνεται seeder(timetoseed(sec) = 0). 4.1 Σενάριο 1 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 16 Αριθµός των downloaders 4 Αριθµός των optunchokedpeers 1 End Game Mode true Ολική διάρκεια λήψης = 257,8869648 seconds ιάρκεια του End Game Mode = 1,65681670917 seconds Αριθµός των blocks που αποµένουν όταν ενεργοποιείται το End Game Mode = 4,95 blocks Αριθµός των normal blocks που ελήφθησαν = 1278,45 blocks 28

Αριθµός των end game blocks που ελήφθησαν = 4,316666667 blocks Αριθµός των διπλών blocks(duplicates/redundant data) = 2,766666667 blocks 4.2 Σενάριο 2 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 16 Αριθµός των downloaders 6 Αριθµός των optunchokedpeers 1 End Game Mode true Ολική διάρκεια λήψης = 240,1887296 seconds ιάρκεια του End Game Mode = 1,684388241 seconds Αριθµός των blocks που αποµένουν όταν ενεργοποιείται το End Game Mode = 5,116666667 blocks Αριθµός των normal blocks που ελήφθησαν = 1279,316667 blocks Αριθµός των end game blocks που ελήφθησαν = 3,066666667 blocks Αριθµός των διπλών blocks(duplicates/redundant data) = 2,383333667 blocks 4.3 Σενάριο 3 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 16 Αριθµός των downloaders 8 Αριθµός των optunchokedpeers 1 End Game Mode true Ολική διάρκεια λήψης = 250,7836085 seconds ιάρκεια του End Game Mode = 1,737993919 seconds Αριθµός των blocks που αποµένουν όταν ενεργοποιείται το End Game Mode = 5,183333333 blocks 29

Αριθµός των normal blocks που ελήφθησαν = 1278,716667 blocks Αριθµός των end game blocks που ελήφθησαν = 5,4 blocks Αριθµός των διπλών blocks(duplicates/redundant data) = 4,116667 blocks 4.4 Σενάριο 4 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 32 Αριθµός των downloaders 4 Αριθµός των optunchokedpeers 1 End Game Mode true Ολική διάρκεια λήψης = 242,4101845 seconds ιάρκεια του End Game Mode = 3,026560476 seconds Αριθµός των blocks που αποµένουν όταν ενεργοποιείται το End Game Mode = 5,233333333 blocks Αριθµός των normal blocks που ελήφθησαν = 638,7833333 blocks Αριθµός των end game blocks που ελήφθησαν = 4,216666667 blocks Αριθµός των διπλών blocks(duplicates/redundant data) = 2,999999967 blocks 4.5 Σενάριο 5 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 64 Αριθµός των downloaders 4 Αριθµός των optunchokedpeers 1 End Game Mode true Ολική διάρκεια λήψης = 244,7272726 seconds ιάρκεια του End Game Mode = 4,889015814 seconds Αριθµός των blocks που αποµένουν όταν ενεργοποιείται το End Game Mode = 3,216666667 blocks Αριθµός των normal blocks που ελήφθησαν = 319,05 blocks 30

Αριθµός των end game blocks που ελήφθησαν = 2,8 blocks Αριθµός των διπλών blocks(duplicates/redundant data) = 1,85 blocks 4.6 Σενάριο 6 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 16 Αριθµός των downloaders 4 Αριθµός των optunchokedpeers 1 End Game Mode false Ολική διάρκεια λήψης = 255,3240839 seconds 4.7 Σενάριο 7 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 16 Αριθµός των downloaders 6 Αριθµός των optunchokedpeers 1 End Game Mode false Ολική διάρκεια λήψης = 241,1822564 seconds 31

4.8 Σενάριο 8 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 16 Αριθµός των downloaders 8 Αριθµός των optunchokedpeers 1 End Game Mode false Ολική διάρκεια λήψης = 246,0666645 seconds 4.9 Σενάριο 9 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 32 Αριθµός των downloaders 4 Αριθµός των optunchokedpeers 1 End Game Mode false Ολική διάρκεια λήψης = 242,0811127 seconds 32

4.10 Σενάριο 10 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 64 Αριθµός των downloaders 4 Αριθµός των optunchokedpeers 1 End Game Mode false Ολική διάρκεια λήψης = 252,5147975 seconds 4.11 Σενάριο 11 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 128 Αριθµός των downloaders 4 Αριθµός των optunchokedpeers 1 End Game Mode true Ολική διάρκεια λήψης = 235,5492824 seconds ιάρκεια του End Game Mode = 8,231790399 seconds Αριθµός των blocks που αποµένουν όταν ενεργοποιείται το End Game Mode = 2,91547619 blocks Αριθµός των normal blocks που ελήφθησαν = 159,2821429 blocks Αριθµός των end game blocks που ελήφθησαν = 2,707142857 blocks Αριθµός των διπλών blocks(duplicates/redundant data) = 1,989285757 blocks 33

4.12 Σενάριο 12 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block (Kbyte) 128 Αριθµός των downloaders 4 Αριθµός των optunchokedpeers 1 End Game Mode false Ολική διάρκεια λήψης = 238,4084166 seconds 4.13 Σενάριο 13 ο Αριθµός των peers 15 Μέγεθος αρχείου (Mbyte) 20 Μέγεθος του piece (Kbyte) 256 Μέγεθος του block(kbyte) 16 Αριθµός των downloaders 10 Αριθµός των optunchokedpeers 1 End Game Mode true Ολική διάρκεια λήψης = 249,9604877 seconds ιάρκεια του End Game Mode = 1,571144435 seconds Αριθµός των blocks που αποµένουν όταν ενεργοποιείται το End Game Mode = 5,2 blocks Αριθµός των normal blocks που ελήφθησαν = 1278,416667 blocks Αριθµός των end game blocks που ελήφθησαν = 5,366666667 blocks Αριθµός των διπλών blocks(duplicates/redundant data) = 3,783333667 blocks 34

4.14 Σενάριο 14 ο Αριθµός των peers 15 Μέγεθος αρχείου(mbyte) 20 Μέγεθος του piece(kbyte) 256 Μέγεθος του block(kbyte) 16 Αριθµός των downloaders 10 Αριθµός των optunchokedpeers 1 End Game Mode false Ολική διάρκεια λήψης = 249,7708338 seconds 35

4.15 Παρατηρήσεις Σε αυτή την ενότητα θα παρουσιάσουµε τα αποτελέσµατα µε διαγραµµατική απεικόνιση καταλήγοντας µετά από διάφορες παρατηρήσεις στα αντίστοιχα συµπεράσµατα. Ξεκινάµε πρώτα αναλύοντας την απόδοση ανάλογα µε τον αριθµό των downloaders και στη συνέχεια ανάλογα µε το µέγεθος του block. Γράφηµα 5: Απεικόνιση του ολικού χρόνου λήψης συναρτήσει των downloaders για end game mode on/off. Παρατηρώντας το γράφηµα 5 βλέπουµε ότι µε ενεργοποιηµένο το end game mode οι µέσοι όροι των χρόνων λήψης είναι µεγαλύτεροι από ότι µε απενεργοποιηµένο το end game mode. Μια πιθανή εξήγηση είναι ότι λόγω του πολύ µικρού µεγέθους του block (default: 16kb), αυξάνεται ο αριθµός των requests που πρέπει να σταλούν κατά τη διάρκεια του end game mode µε αποτέλεσµα να χάνουµε σε bandwidth. Επίσης παρατηρούµε ότι υπάρχει γενικά µια µείωση του ολικού χρόνου λήψης αν έχουµε περισσότερους downloaders από 4 (default). Ως γνωστόν οι τεσσερις downloaders είναι 4 peers οι οποίοι έχουν το καλύτερο upload rate και τους οποίους κάνει unchoke 36

ο client για να µεγιστοποιήσει το download rate του και κατά συνέπεια να µειώσει το συνολικό χρόνο λήψης του αρχείου. Η µείωση στο χρόνο λήψης φαίνεται πολύ έντονα όταν γίνονται unchoke 6 downloaders αντί για 4. Βέβαια στη συνέχεια αρχίζει και αυξάνει πάλι ο χρόνος λήψης και αυτό γιατί µπορεί κάποιος/οι από τους 8 ή 10 downloaders να έχουν χαµηλό upload rate µε αποτέλεσµα να επηρεάζουν αρνητικά το download rate των peers που κατεβάζουν pieces από αυτούς. Βέβαια µε την αύξηση των downloaders υπάρχει µεγαλύτερη πιθανότητα ένας peer να λάβει duplicates κατά τη διάρκεια του end game mode και αυτό φαίνεται καθαρά στο γράφηµα 7 παρακάτω. Γράφηµα 6: Απεικόνιση του ολικού χρόνου λήψης συναρτήσει των peers για end game mode on/off στην περίπτωση που το block έχει µέγεθος 16kb. Στο γράφηµα 6 απεικονίζονται αναλυτικά οι χρόνοι λήψης του κάθε peer για end game mode on/off στην περίπτωση που το µέγεθος του block είναι πολύ µικρό (default:16kb) για να δούµε µε µεγαλύτερη λεπτοµέρεια αυτό που παρατηρήσαµε στο γράφηµα 5. 37