3. Ευχαριστίες
Θεωρούμε ειλικρινή υποχρέωση μας, να
εκφράσουμε τις ευχαριστίες μας, στον
επόπτη και καθηγητή μας Δρ. Νικόλαο
Ευθιμιόπουλο, για την ευκαιρία που μας
έδωσε να ασχοληθούμε με ένα τόσο
ενδιαφέρον θέμα το οποίο μας δίδαξε πόσο
αναγκαίο είναι το επάγγελμα μας καθώς
επίσης και για την πολύτιμη καθοδήγηση
και βοήθεια που μας προσέφερε όλο αυτό το
διάστημα, για την σωστή εκπόνηση της
παρούσας πτυχιακής εργασίας.
Τέλος θα θέλαμε να ευχαριστήσουμε και
τους λοιπούς καθηγητές μας, καθώς
συνέβαλαν και εκείνοι με τις γνώσεις που
μας έχουν μεταλαμπαδεύσει κατά τη
διάρκεια της φοίτησης μας, στην σωστή
διαμόρφωση του εν λόγω θέματος.
3
5. Περίληψη
Περιληπτικά, στη συγκεκριμένη εργασία μελετήθηκε με την μέθοδο των
προσομοιώσεων ένα διομότιμο σύστημα σύγχρονου διαμοιρασμού αντικειμένων.
Επιπλέον μελετήθηκε το περιβάλλον και οι συνθήκες λειτουργίας ενός τέτοιου
συστήματος. καθώς και τα χαρακτηριστικά του. Αποτέλεσμα της μελέτης αυτής είναι
η εξαγωγή συμπερασμάτων σχετικά με τις απαιτήσεις που πρέπει να πληρούνται κατά
τη δημιουργία ενός διομότιμου συστήματος σύγχρονου διαμοιρασμού αντικειμένων
και οι τεχνικοί στόχοι που πρέπει αυτό να ικανοποιεί. Με αυτά τα κριτήρια βγήκαν
και συμπεράσματα για την εύρυθμη λειτουργία ενός τέτοιου συστήματος.
Για την λειτουργία ενός τέτοιου συστήματος ορίζονται οι ακόλουθες απαιτήσεις:
Μεγιστοποίηση της χρήσης από το σύστημα του διαθέσιμου εύρους ζώνης των
συμμετεχόντων κόμβων. Φυσικά, οι κόμβοι έχουν ετερογενείς τιμές του
διαθέσιμου εύρους ζώνης και, μάλιστα, με μεγάλη διασπορά.
Ελαχιστοποίηση της καθυστέρησης από τη στιγμή δημιουργίας ενός αντικειμένου
μέχρι τον διαμοιρασμό του σε κάθε συμμετέχοντα κόμβο.
Ομοιόμορφη διαρκής κατανομή του συνολικού εύρους ζώνης του συστήματος
στους συμμετέχοντες κόμβους.
Ανεκτικότητα του συστήματος στη δυναμική συμπεριφορά των χρηστών που
προκαλείται από εισόδους και εξόδους των χρηστών στο σύστημα σε μη
προκαθορισμένες χρονικές στιγμές.
Ικανότητα κλιμάκωσης του συστήματος σε αριθμό συμμετεχόντων χρηστών κάτι
που επάγει την κατανεμημένη διαχείριση του συστήματος.
Προσαρμογή του σχεδιαζόμενου συστήματος στην κίνηση του δικτύου στο οποίο
αυτό επικάθεται και ανεκτικότητά του στις μεταβολές του εύρους ζώνης των
συμμετεχόντων κόμβων.
Ελαχιστοποίηση του φορτίου το οποίο εισάγει η λειτουργία του συστήματος στο
δίκτυο.
5
7. Abstract
Peer-to-peer live streaming is a network application, where peers (users)
contribute their upload bandwidth for the real time distribution of a video stream. The
objective of this work is the optimization of this data diffusion with a distributed and
self-organized architecture. Peers have heterogeneous and dynamic uploading
bandwidth. This fact combined with the characteristics of the topology of the
underlying network and the dynamic traffic conditions e.g. latency create a volatile
and complex environment for P2P live streaming delivery, which strongly affect the
success of a P2P system measured by a number of performance metrics.
The first important factor is the uploading bandwidth utilization that corresponds
to the ability of the system to exploit as much as possible of the overall uploading
bandwidth of the participating peers. The maximization of the upload bandwidth
utilization increases the video playback delivery rate and ensures the stability of the
distribution. Equally important parameter is the setup time defined as the time interval
between the generation of a block from an origin server and its delivery to every peer
in the system.
Furthermore, a P2P live streaming system has to remain stable and its delivery rate
must remain high in a dynamic environment, where peers arrive and depart
randomly. .Finally, fairness among nodes indicates the ability of the system to
distribute continuously and uniformly the aggregate uploading bandwidth to the
participating peers. This ensures that every peer will acquire a percentage of blocks
above a critical threshold for an “affordable” video playback regardless the aggregate
uploading bandwidth is not sufficient for the complete delivery of the video stream.
7
9. Περιγραφή Εργασίας
Για τη λειτουργία του προτεινόμενου συστήματος απαιτείται η δημιουργία ενός
γράφου διασύνδεσης. Ως γράφος διασύνδεσης ορίζεται ο γράφος που προκύπτει αν
κάθε κόμβος συνδεθεί με ένα μικρό υποσύνολο των συμμετεχόντων κόμβων που
ονομάζονται και γείτονες του κόμβου. Για την ικανοποίηση των προαναφερθεισών
απαιτήσεων. μελετήθηκαν τα χαρακτηριστικά του γράφου διασύνδεσης και προέκυψε
ότι κάθε κόμβος: α) πρέπει να έχει γείτονες με όσο το δυνατόν μικρότερη δικτυακή
καθυστέρηση μεταξύ τους, β) πρέπει να έχει αριθμό εξερχόμενων συνδέσεων
ανάλογο με το εύρος ζώνης του, γ) οι συνδέσεις αυτές πρέπει να κατανέμονται
ομοιόμορφα στους συμμετέχοντες κόμβους για την ικανοποίηση των αναγκών όλων
των κόμβων, δ) οι κόμβοι με σχετικά μεγάλο εύρος ζώνης πρέπει να ομαδοποιούνται
στο γράφο με σκοπό την γρήγορη αρχικά διάχυση του αντικειμένου και ε) ο γράφος
διασύνδεσης πρέπει να αναδιατάσσεται δυναμικά έτσι ώστε να διατηρεί τις ιδιότητες
αυτές στο δυναμικό δικτυακό περιβάλλον που επικάθεται και για δυναμική
συμπεριφορά των συμμετεχόντων κόμβων.
Για την ικανοποίηση αυτών των τεχνικών στόχων αναπτύχθηκε μία δομή του
γράφου που ικανοποιεί αυτά τα χαρακτηριστικά. Η βελτιστοποίηση του γράφου
γίνεται μέσω αλγορίθμων κατά την λειτουργία των οποίων κάθε κόμβος επιλέγει
περιοδικά ένα τυχαίο κόμβο ο οποίος είναι γείτονάς του στον γράφο διασύνδεσης.
Μεταξύ των δύο αυτών κόμβων εκτελείται ανακατανομή των γειτόνων τους με σκοπό
την εξισορρόπηση του αριθμού των γειτόνων που κάθε ένας από αυτούς διαθέτει.
αλλά και την ελαχιστοποίηση της μέσης καθυστέρησης που έχουν αθροιστικά οι
κόμβοι από τους γείτονές τους. Οι αλλαγές στον γράφο διασύνδεσης που προκύπτουν
από κάθε εκτέλεση του αλγορίθμου αυτού μεταβάλλουν και τους γείτονες ενός
υποσυνόλου κόμβων εκτός των δύο συμμετεχόντων στον αλγόριθμο εναλλαγής. Οι
αλλαγές αυτές επιφέρουν άλλες αλλαγές με την σειρά τους και έτσι προκύπτει τελικά
ένας γράφος διασύνδεσης όπου κάθε κόμβος έχει τον προκαθορισμένο αριθμό
γειτόνων και. παράλληλα. ελαχιστοποιείται το άθροισμα των μέσων δικτυακών
καθυστερήσεων που έχουν οι συμμετέχοντες κόμβοι με τους γείτονές τους.
9
10. Για τον διαμοιρασμό του αντικειμένου ο δημιουργός του το τεμαχίζει σε τεμάχια
(μπλοκ). Τα τεμάχια προωθούνται σε ένα πολύ μικρό σύνολο κόμβων και αποτελούν
τις λογικές μονάδες δεδομένων που ανταλλάσσονται μεταξύ των κόμβων. Σκοπός
είναι ο διαμοιρασμός του κάθε τεμαχίου σε κάθε κόμβο μέσα σε ένα προκαθορισμένο
χρονικό διάστημα. Για την ανταλλαγή τεμαχίων μεταξύ των γειτόνων του γράφου
διασύνδεσης του προς διαμοιρασμού αντικειμένου μεταξύ των συμμετεχόντων
κόμβων αναπτύχθηκε ένας Κατανεμημένος Χρονοπρογραμματιστής Ανταλλαγής
Τεμαχίων (ΚΧΑΤ).
Τεχνικοί στόχοι της ανάπτυξης του ΚΧΑΜ αποτέλεσαν α) ο χρονισμός
διαπραγμάτευσης αποστολής τεμαχίων μεταξύ κάθε αποστολέα και παραλήπτη, β) η
γρήγορη διάδοση πρόσφατα παραγόμενων τεμαχίων και σπάνιων σε μία γειτονία του
γράφου διασύνδεσης (τεμάχια που δημιουργήθηκαν μεταγενέστερα από άλλα
ευνοούνται από το χρονοπρογραμματιστή αρχικά για την επιτυχή και γρήγορη
διάδοσή τους σε μία κρίσιμη μάζα από κόμβους), γ) η τροφοδότηση όλων των
κόμβων με ομοιόμορφο και σταθερό ρυθμό, δ) η προτεραιότητα σε κόμβους με
μεγάλο εύρος ζώνης, ε) η αποφυγή μετάδοσης του ίδιου τεμαχίου από δύο αποστολείς
προς τον ίδιο παραλήπτη και στ) η αποφυγή μιας κατάστασης όπου αποστολέας και
παραλήπτης δεν έχουν τεμάχια προς ανταλλαγή.
Ο χρονισμός του ΚΧΑΜ που αναπτύχθηκε αποτελείται από τρείς φάσεις. Στην
πρώτη φάση που εκτελείται περιοδικά από κάθε αποστολέα εκδίδεται και
αποστέλλεται στους πιθανούς παραλήπτες ένα σύνολο από «κουπόνια» μεγέθους
ανάλογου με το εύρος ζώνης του αποστολέα. Στη δεύτερη φάση ο εκάστοτε
παραλήπτης ζητά προκαταβολικά ένα τεμάχιο στην περίπτωση που επιλεγεί από τον
αποστολέα για μετάδοση τεμαχίου. Στην τρίτη φάση ο αποστολέας επιλέγει τον
παραλήπτη ακριβώς πριν την μετάδοση κάθε τεμαχίου και αποστέλλει το τεμάχιο που
έχει ζητηθεί.
Ο αλγόριθμος ο οποίος προτείνεται για τη δημιουργία κουπονιών έχει ως στόχο
τη μεγιστοποίηση της χρήσης του εύρους ζώνης όλων των κόμβων και την
ικανοποίηση των αναγκών κάθε συμμετέχοντα κόμβου. Είναι αυτός που, στην ουσία,
καθορίζει τις ροές δεδομένων μεταξύ των γειτόνων του γράφου διασύνδεσης. Η
χρησιμότητά του αναδεικνύεται σε περιπτώσεις όπου ο ρυθμός αναπαραγωγής του
προς διαμοιρασμό αντικειμένου είναι παρόμοιος με το μέσο εύρος ζώνης του
10
11. συστήματος. Οι απαιτήσεις του αλγορίθμου ζήτησης τεμαχίων μοντελοποιούνται
μέσω της γραμμικής βελτιστοποίησης και διασφαλίζεται η γρήγορη και
αποτελεσματική διάχυση των τεμαχίων ελαχιστοποιώντας την ύπαρξη ανενεργών
πόρων. Τέλος, ο αλγόριθμος επιλογής γείτονα είναι αυτός που ρυθμίζει την
ομοιόμορφη κατανομή του εύρους ζώνης στους συμμετέχοντες κόμβους, αλλά και
δίνει προτεραιότητα στους κόμβους με μεγάλο εύρος ζώνης έτσι ώστε να επιτευχθεί ο
γρήγορος διαμοιρασμός κάθε τεμαχίου και η ελαχιστοποίηση της καθυστέρησης του
συστήματος.
11
17. ΚΕΦΑΛΑΙΟ 1 Διομότιμα Συστήματα Peer to Peer
Στο κεφάλαιο 1 παρουσιάζουμε την ιστορία των Peer to Peer δικτύων, τον λόγο
δημιουργίας τους και το τι υπήρχε πριν από αυτά. Γίνεται αναφορά σε δημοφιλή Peer
to Peer συστήματα που είτε υπάρχουν και λειτουργούν τώρα είτε όχι, καθώς και στις
δυσκολίες που συνάντησαν κατά την διάρκεια της ζωής τους. Εξηγείται τέλος το πώς
αυτά τα συστήματα επηρέασαν την μετέπειτα πορεία και ανάπτυξη των δικτύων Peer
to Peer.
Eισαγωγή
Ο όρος Peer to Peer δημιουργήθηκε για να περιγράψει τα δίκτυα εκείνα τα οποία
έχουν την απαίτηση οι χρήστες τους να μοιράζονται με τα υπόλοιπα μέλη του δικτύου
τα αρχεία τους, τους υπολογιστικούς τους πόρους ή οτιδήποτε άλλο απαιτηθεί για
κάποιο κοινό σχέδιο.
Πριν δημιουργηθεί αυτός ο όρος και εφαρμοστεί στην πράξη, οι χρήστες του
Internet αλληλεπιδρούσαν μεταξύ τους μεν αλλά με δύσχρηστους και αργούς τρόπους
όπως πχ με τα mail και μέσω ομάδων συζητήσεων( Usenet, newsgroups). Μπορούσαν
να στείλουν ο ένας στον άλλο αρχεία χωρίς να γίνεται έλεγχος των συναλλαγών
αυτών από κάποιον κεντρικό φορέα. Δεν μπορούσαν όμως να συζητήσουν σε
πραγματικό χρόνο πάνω σε αυτά, να τα οργανώσουν σε κατηγορίες ή να σημειώνουν
σχόλια πάνω σε αυτά. Η εισαγωγή αυτού του τρόπου αλληλεπίδρασης στο διαδίκτυο
θα βελτίωνε τον τρόπο με τον οποίο οι χρήστες επικοινωνούσαν μεταξύ τους.
Αν και ο όρος αυτός υπάρχει εδώ και λίγο καιρό ο τρόπος λειτουργίας του και η
αρχιτεκτονική του υπάρχουν εδώ και πολλά χρόνια. Στην πραγματικότητα η
αρχιτεκτονική αυτή είναι η παλαιότερη στον κόσμο των επικοινωνιών. Τα τηλέφωνα
και το τηλεφωνικό δίκτυο είναι Peer to Peer.
Το ίδιο ισχύει και για την αρχική υλοποίηση του Usenet και για το IP routing. Το
τελευταίο μάλιστα ακόμα και τώρα είναι Peer to Peer αν και δημιουργήθηκαν πολύ
μεγαλύτερα σημεία πρόσβασης σε σχέση με τα υπόλοιπα. Το Internet στην αρχική
του μορφή, δηλ. στην μορφή που είχε μέχρι και την δεκαετία του 1980 ήταν και αυτό
Peer to Peer αφού κάθε τελικός κόμβος στο δίκτυο ήταν και Client και Server σε
αντίθεση με το ιεραρχικό μοντέλο που επικρατεί στην δημοφιλέστερη σημερινή
εφαρμογή(www).
Οι αρχικές εφαρμογές Peer to Peer δημιουργήθηκαν για ένα αποκλειστικά πολιτικό
σκοπό: Την αποφυγή της λογοκρισίας. Οι δημιουργοί των εφαρμογών αυτών
βοήθησαν πολύ στην ανάπτυξη του. Η συνέχεια ήταν το να διαχωριστεί το φυσικό
17
18. στρώμα από το εικονικό. Το να μπορεί κάποιος να διαβάσει αρχεία χωρίς να γνωρίζει
το Domain Name του υπολογιστή που περιέχει το αρχείο αυτό.
Λόγω της ευρύτατης διάδοσής τους( κυρίως στον τομές του File Sharing) έχει γίνει
προφανές ότι με την αποκεντρωμένη δομή τους τα δίκτυα p2p μπορούν να οδηγήσουν
σε επαναστατικές εφαρμογές και να χρησιμοποιηθούν σε περιπτώσεις όπου η
ιεραρχική προσέγγιση είναι απλά αδύνατη.
Οι πρώτες εφαρμογές Peer to Peer
Όπως αναφέρθηκε και παραπάνω οι πρώτες εφαρμογές Peer to Peer ήταν το
Usenet και το DNS.
Το Usenet εισήγαγε το μη κεντρικό σύστημα διαχείρισης που κατά μεγάλο βαθμό
υιοθέτησαν οι σύγχρονες εφαρμογές Peer to Peer όπως το Gnutella και Freenet.
Επειδή μάλιστα το Usenet υπάρχει από το 1979 η αρχιτεκτονική του αποτελεί de
facto πρότυπο για πολλές εφαρμογές.
Συγκεκριμένα στο Usenet δεν υπάρχει μία κεντρική υπηρεσία που να ελέγχει το
σύστημα ειδήσεων. Η προσθήκη μίας νέας ομάδας συζητήσεων αποτελεί ευθύνη μίας
διαφανούς δημοκρατικής διαδικασίας.
Χρησιμοποιώντας την ομάδα συζητήσεων news.admin καθένας που έχει
λογαριασμό email μπορεί να στείλει με email την ψήφο του για το αν δέχεται την
εισαγωγή της νέας ομάδας η όχι. Στο Usenet όμως υπάρχει και μία θεμελιωμένη
μορφή αναρχίας. Αυτή είναι η ιεραρχία alt.* και η οποία μπορεί να παρακάμπτει την
διαδικασία που αναφέρθηκε παραπάνω για την εισαγωγή νέας ομάδας. Καθένας
μπορεί να εισάγει νέα ομάδα κάτω από αυτή την ιεραρχία χωρίς να πρέπει να γίνει
ψηφοφορία στο news.admin. Από την άλλη κάθε διαχειριστής που δεν επιθυμεί την
πρόσβαση στην ιεραρχία αυτή μπορεί να κόψει την πρόσβαση.
Στα πρώτα χρόνια λειτουργίας του Usenet μία νέα ομάδα συζητήσεων μπορούσε
να συνδεθεί με το υπόλοιπο δίκτυο με το να συνδεόταν με έναν τουλάχιστον server
ειδήσεων(-συζητήσεων). Έτσι κάθε server μπορούσε να έχει πρόσβαση σε όλα τα
μηνύματα αφού συνδεόταν με τους υπόλοιπους. Σήμερα όμως μιας και υπάρχει
τρομακτική αύξηση τόσο στις ομάδες όσο και στα μηνύματα οι servers δεν κρατάνε
όλα τα μηνύματα. Κάθε διαχειριστής αποφασίζει ποιες ομάδες θα έχει και για πόση
χρονική διάρκεια θα κρατάει τα μηνύματα στη μνήμη του σε αντίθεση για
παράδειγμα με το Freenet που θα δούμε αργότερα στο ίδιο κεφάλαιο στο οποίο οι
διαχειριστές δεν έχουν έλεγχο του περιεχομένου που διακινούν οι διακομιστές τους.
Οι εξυπηρετητές των ομάδων συζητήσεων συνδέονται μεταξύ τους με παρόμοιο
τρόπο με αυτόν τον Peer to Peer δικτύων. Ένας εξυπηρετητής συνδέεται με κάποιους
άλλους εξυπηρετητές. Αυτοί οι εξυπηρετητές συνδέονται με την σειρά τους με
18
19. κάποιους άλλους και αυτό συνεχίζεται σε όλο το δίκτυο των εξυπηρετητών. Όταν
ένας πελάτης συνδεδεμένος κάνει αίτηση για μήνυμα στον εξυπηρετητή που είναι
συνδεδεμένος, ο εξυπηρετητής ελέγχει αν έχει το μήνυμα στην μνήμη του. Αν δεν το
έχει τότε προωθεί την αίτηση στους άλλους εξυπηρετητές που είναι συνδεδεμένος. Αν
και αυτοί δεν έχουν το μήνυμα τότε η αίτηση προωθείται εκ νέου. Αυτό συνεχίζεται
μέχρι να βρεθεί το μήνυμα και το περιεχόμενό του.
Ένα σημαντικό πλεονέκτημα στο πρωτόκολλο ομάδων συζητήσεων NNTP που
πρέπει να ακολουθηθεί και από τα άλλα Peer to Peer συστήματα είναι το εξής. Τα
μηνύματα περιέχουν και μία επικεφαλίδα “Path” στην οποία περιέχουν τις μεταδόσεις
τους από ένα εξυπηρετητή σε άλλον.
Έτσι αν ένας εξυπηρετητής Β αιτείται ενός μηνύματος στον εξυπηρετητή Α και ο Α
διαπιστώσει πως το μήνυμα περιέχει στην επικεφαλίδα “Path” τον εξυπηρετητή Β,
τότε δεν στέλνει το μήνυμα στον Β. Με τον τρόπο αυτό αποφεύγεται η πλημμύρα που
προκαλείται από επαναλαμβανόμενα μηνύματα σε αντίθεση με το σύστημα Gnutella
το οποίο θα αναλυθεί αργότερα.
Ένα παράδειγμα του τρόπου σύνδεσης των διαφόρων εξυπηρετητών είναι αυτός
που φαίνεται στο επόμενο παράδειγμα:
Στην ομάδα συζητήσεων comp.lang.c++ στο νήμα(thread): “NULL” o χρήστης με
το ψευδώνυμο Agent Mulder έστειλε ένα μήνυμα του οποίου η επικεφαλίδα “Path”
περιέχει την εξής διαδρομή:
Path:news.ntua.gr!news.grnet.gr!irazu.switch.ch!switch.ch!news.tele.dk!
news.tele.dk!small.news.tele.dk!newsfeed.icl.net!newsfeed.fjserv.net!skynet.be!
skynet.be!newshub1.home.nl!home.nl!not-for-mail
Βλέπουμε πως κάποιος συνδεδεμένος στον εξυπηρετητή Νέων του Εθνικού
Μετσόβιου Πολυτεχνείου βλέπει μηνύματα που δεν περιέχονται σε αυτόν τον
εξυπηρετητή αλλά σε κάποιον του εξωτερικού. Είναι προφανής η λειτουργία και η
ομότιμη σύνδεση των διαφόρων εξυπηρετητών.
Σύγχρονες εφαρμογές Peer to Peer
Ο όρος Peer to Peer έχει έρθει για να εφαρμοστεί σε δίκτυα τα οποία περιμένουν
από τους τελικούς τους χρήστες να συνεισφέρουν αρχεία, υπολογιστικό χρόνο και
άλλους πόρους για κάποιο κοινό οργανωμένο σχέδιο (shared project). Ακόμα πιο
ενδιαφέρουσα από τα τεχνικά θεμέλια του συστήματος είναι οι κοινωνικές
προοπτικές: με διάφορους τρόπους επιστρέφουν περιεχόμενο, αποτελέσματα και
έλεγχο σε κανονικούς χρήστες. Στα ελληνικά ο όρος αποδίδεται συνήθως σαν
«διομότιμα υπολογιστικά συστήματα».
Βάσει του ορισμού αυτού από τις σύγχρονες εφαρμογές Peer to Peer είναι οι:
19
20. Napster(μέχρι τον τερματισμό της λειτουργίας του λόγω μηνύσεων από την RIAA-
ένωση δισκογραφικών εταιριών Αμερικής ), ICQ , Jabber, Popular Power,
SETI@Home, Mixmaster Remailer, Gnutella, Freenet, Red Power , Publius, Free
Haven. Αντίθετα γνωστές εφαρμογές που δεν ικανοποιούν τον ορισμό αυτό είναι τα
emails και τα Dynamic DNS.
Napster
Το Napster αποτέλεσε ένα φαινόμενο. Ήταν η πρώτη δημοφιλής εφαρμογή Peer to
Peer. Μέσα σε 16 μήνες λειτουργίας ξεπέρασε σε αριθμό χρηστών, από το Hotmail
μέχρι τον πρωτοπόρο των Peer to Peer εφαρμογών το ICQ. Ήταν η πρώτη εφαρμογή
που δημιουργήθηκε για να λύσει ένα πρόβλημα - το πρόβλημα του μοιράσματος
αρχείων – ενώ οι τεχνολογικές λύσεις που εφάρμοσε ήταν βγαλμένες μέσα από τις
ανάγκες της εφαρμογής και όχι το αντίθετο. Αυτές οι τεχνολογικές καινοτομίες και το
πώς αυτές οδήγησαν στην γρήγορη διάδοση και ανάπτυξή του θα γίνουν κατανοητές
στις επόμενες παραγράφους.
Αρχικά το Napster κατάφερε και ξεπέρασε τον σκόπελο που έβαλαν οι μεγάλες
φίρμες στην διάδοση των αρχείων μέσω του κλασσικού τρόπου από τα site.
Δημιούργησε ένα μη “ιστοσελιδικό” τρόπο διάδοσης των αρχείων. Το Napster
κατανόησε τα πλεονεκτήματα καθενός από τα κεντρικά και αποκεντρωμένα
συστήματα λειτουργίας. Αφενός η χρήση των κεντρικών συστημάτων βοηθάει στη
δημιουργία μηχανής αναζήτησης, καθώς και στην προσθήκη και διαγραφή αρχείων.
Αφετέρου η χρήση αποκεντρωμένων λύνει τα προβλήματα διατήρησης των αρχείων
αφού εισάγει τον τρόπο αποθήκευσης μέσα στους σκληρούς δίσκους των χρηστών
που συνδέονται με το δίκτυο. Το Napster διατηρεί στους κεντρικούς υπολογιστές τη
λίστα με τα αρχεία που έχει κάθε χρήστης που είναι συνδεδεμένος στο δίκτυό του.
Όταν ένας χρήστης συνδέεται στο δίκτυο τότε το πρόγραμμα-πελάτης που είναι
εγκατεστημένο στον υπολογιστή του ενημερώνει τον εξυπηρετητή για τα αρχεία δηλ.
τα τραγούδια που διατηρεί ο χρήστης.
Παρομοίως όταν ένας χρήστης φεύγει ο εξυπηρετητής ενημερώνεται κατάλληλα.
Όταν ένας χρήστης ζητήσει ένα αρχείο τότε ο εξυπηρετητής ψάχνει μέσω της
μηχανής αναζήτησης που διατηρεί για τους χρήστες που έχουν το συγκεκριμένο
αρχείο και ενημερώνει τον χρήστη. Από κει και πέρα τον έλεγχο αναλαμβάνει το
πρόγραμμα που είναι εγκατεστημένο στον χρήστη. Το πρόγραμμα αναλαμβάνει την
επικοινωνία με τους άλλους χρήστες για να αρχίσει η διαδικασία αντιγραφής του
αρχείου. Δηλ. το σύστημα ξεκινάει σαν κεντρικό στην πορεία όμως γίνεται
αποκεντρωμένο.
Το Napster με τον τρόπο που λειτουργεί οδηγεί στην πλήρη εκμετάλλευση των
πόρων των χρηστών. Αφενός το να παίρνει κάποιος αρχεία μουσικής ή άλλου είδους
από κάποιον άλλο δεν διαγράφει τα αρχεία από τον σκληρο δίσκο του χρήστη από
20
21. όπου προήλθαν τα αρχεία αλλά στην πραγματικότητα αυξάνει τους πόρους στο
δίκτυο του Napster αφού ο νέος χρήστης φιλοξενεί ένα εναλλακτικό αντίγραφο.
Ακόμα και αν ο χρήστης που παίρνει αρχεία δεν μοιράζεται τα δικά του η λήψη
αρχείων από αυτόν δεν έχει πρακτικό κόστος αφού το αρχείο δεν χάνεται.
Αφετέρου άλλοι σημαντικοί πόροι όπως το εύρος ζώνης του δικτύου και οι κύκλοι
λειτουργίας του επεξεργαστή δεν αντιγράφονται αλλά αναπληρώνονται. Αυτοί οι
πόροι δεν μπορούν ούτε να εξαντληθούν ούτε να διατηρηθούν για μελλοντική χρήση.
Αν δεν καταναλωθούν μέσα σε συγκεκριμένο χρονικό διάστημα χάνονται αλλά
αμέσως αναπληρώνονται. Εξαιτίας αυτών των οικονομικών χαρακτηριστικών, η
εκμετάλλευση του αχρησιμοποίητου εύρους και της ανενεργής μονάδας επεξεργασίας
για την διάδοση των αρχείων μουσικής σημαίνει για την πλευρά του χρήστη
δημιουργία πρόσθετης μουσικής με σχεδόν μηδαμινό κόστος γι αυτόν. Απασχολεί
τους πόρους που αναφέρθηκαν για τους οποίους ο χρήστης έχει ήδη πληρώσει αλλά
δεν χρησιμοποιεί πλήρως.
Από τον τρόπο λειτουργίας του το Napster έγινε το πρωταρχικό παράδειγμα στον
τρόπο που μπορεί να χρησιμοποιήσει κανείς την τεράστια δύναμη των υπολογιστών
που συνδέονται στο Internet τα τελευταία 5 χρόνια. Εκμεταλλεύτηκε τις ταχύτατες
συνδέσεις πολλών υπολογιστών στον κόσμο καθώς και την υπολογιστική τους ισχύ
για να διαδίδονται μουσικά αρχεία δωρεάν και χωρίς να τα χάνει ο χρήστης που τα
μοιράζεται.
SETI@home
Το SETI@home αποτελεί την πρώτη σπουδαία προσπάθεια του να εκμεταλλευθεί
η μεγάλη υπολογιστική ισχύς των υπολογιστών στον κόσμο όταν αυτοί παραμένουν
ανοιχτοί αλλά ανενεργοί.
Το SETI@home είναι ένα σχέδιο επιστημόνων ανακάλυψης εξωγήινης
νοημοσύνης. Δεν αποτελεί το πρώτο σχέδιο όμως. Υπάρχουν ήδη αρκετά στον κόσμο.
Όλα όμως έχουν μια ουσιαστική διαφορά από το SETI@home. Χρησιμοποιούν
πανάκριβους τόσο στην αγορά όσο και στην συντήρηση υπερυπολογιστές. Επίσης
απαιτούν την παρουσία πολλών και εξειδικευμένων ατόμων για την ανάλυση των
αποτελεσμάτων των υπολογιστών. Το SETI@home για οικονομικούς λόγους κυρίως
αποφάσισε να απευθυνθεί στον κόσμο. Συγκεκριμένα πολλοί χρήστες αφήνουν τους
υπολογιστές ανοικτούς για αρκετή ώρα χωρίς να λειτουργεί στο 100% ο κεντρικός
επεξεργαστής. Έτσι δημιούργησε ένα Screen Saver που όταν ο χρήστης σταματούσε
να εργάζεται, θα ετίθετο σε λειτουργία και θα επεξεργαζόταν διάφορα δεδομένα.
Τα δεδομένα αυτά είναι σήματα που λαμβάνονται από μία τεράστια κεραία-
τηλεσκόπιο η οποία ήδη χρησιμοποιούταν σε παρόμοιο πρόγραμμα και στη συνέχεια
αποθηκεύονται σε κασέτες χωρητικότητας 35Gb. Ο τρόπος δειγματοληψίας των
δεδομένων επέτρεπε σε μία κασέτα να χωράει δεδομένα 16 ωρών περίπου. Κάθε
21
22. βδομάδα 10 κασέτες περίπου αποστέλλονται στο Berkeley την έδρα του
SETI@home, και αφού κατηγοριοποιηθούν αποθηκεύονται. Στη συνέχεια τα
δεδομένα επεξεργάζονται από ένα ισχυρό υπολογιστή για να αποσταλούν στους
εγγεγραμμένους χρήστες. Τα δεδομένα χωρίζονται σε μικρά κομμάτια για να μπορούν
να τα λάβουν και χρήστες με μικρές ταχύτητες.
Το πρόγραμμα του χρήστη δηλ. το Screen Saver αφού λάβει τα δεδομένα κλείνει
την σύνδεση και τα επεξεργάζεται για όσο καιρό χρειαστεί-από λεπτά μέχρι μέρες.
Αφού τα επεξεργαστεί στη συνέχεια εγκαθιστά νέα σύνδεση, αποστέλλει τα
αποτελέσματα και λαμβάνει νέα δεδομένα για επεξεργασία. Η επεξεργασία
περιλαμβάνει τον έλεγχο κάποιων προϋποθέσεων στην συχνότητα του σήματος. Αν το
σήμα ξεπεράσει κάποια όρια τότε αποστέλλεται στον κεντρικό υπολογιστή για να
αποθηκευθούν σε βάση δεδομένων. Για διάφορους λόγους ο υπολογιστής ελέγχει την
ακρίβεια των αποτελεσμάτων.
Η καλή λειτουργία του σχεδίου δεν βασίστηκε μόνο στον εθελοντισμό των
χρηστών ανά τον κόσμο αλλά και στην ευγενική χορηγία διαφόρων μεγάλων εταιριών
που προμήθευσε το κεντρικό σύστημα με διάφορα μηχανήματα. Είναι προφανές πως
για ένα τόσο φιλόδοξο εγχείρημα χρειάζεται και η συνδρομή εταιριών. Παρόλα αυτά
το σύστημα που δημιουργήθηκε αποτελεί τον πιο ισχυρό υπολογιστή στον κόσμο με
μηδαμινό κόστος σε σύγκριση με τον 2ο ταχύτερο. Ο πιο ισχυρός υπερυπολογιστής
όταν ξεκίνησε το εγχείρημα ήταν ο ASCI White με κόστος 110 εκατομμύρια δολάρια
και επεξεργαστική ισχύ 12,3 TFLOPS. Αντίθετα το σύστημα του SETI@home
κοστίζει 500.000 δολάρια σαν αγορά και 200.000 δολάρια ανά έτος για την
συντήρηση. Οι υπολογιστές των χρηστών δεν λαμβάνονται υπόψη στο κόστος γιατί
αυτοί υπήρχαν ήδη πριν το πρόγραμμα και θα υπάρχουν και μετά. Η επεξεργαστική
ισχύς ανέρχεται στα 20 TFLOPS. Το πρόγραμμα ενώ προγραμματίστηκε να
λειτουργεί από το 1998 έως το 2000 τελικά είχε τόση επιτυχία που συνεχίζει μέχρι
σήμερα.
Το Seti@home είναι ιδιαίτερα ενδιαφέρον γιατί αποτελεί το πρώτο παράδειγμα
υπολογιστικού δικτύου P2P (P2P computing system).
Mixmaster Remailers
Οι Remailers είναι μία από τις παλιότερες εφαρμογές Peer to Peer αλλά αντέχουν
ακόμα. Αφενός γιατί συνεχώς βοηθούν τους δημιουργούς Peer to Peer καθώς
δημιουργούν νέες εφαρμογές και αφετέρου γιατί η παρουσία τους εξυπηρετεί τους
ανθρώπους οι οποίοι επιθυμούν την ανωνυμία των διαδικτυακών τους επικοινωνιών.
Ό,τι μήνυμα στέλνει κάποιος σε ομάδα συζητήσεων ή ότι email στέλνει σε
κάποιον/ους , αυτό διατηρεί στις επικεφαλίδες του όλους τους υπολογιστές από όπου
έχει περάσει. Λόγω του γεγονότος αυτού κάποιος θα μπορούσε να βρει ότι ένα email
το έστειλε ένας χρήστης που επιθυμεί την ανωνυμία του. Η χρήση καλών δικτύων
22
23. Remailer όμως κάνει την διαδικασία ανεύρεσης του χρήστη που έστειλε μήνυμα
μεγαλύτερη και δυσκολότερη, αφού το μήνυμα επαναπροωθείται ανώνυμα από τον
έναν Remailer στον άλλον μέχρι τον τελικό αποδέκτη.
Η πιο πρόσφατη έκδοση Remailers είναι οι Mixmaster Remailers που επίσης είναι
γνωστοι ως Type 2 Remailers. Αυτοί είναι μία αναβαθμισμένη έκδοση των type 1
Remailers οι οποίοι είχαν κάποια κενά ασφαλείας.
Οι Remailers εν συντομία λειτουργούν ως εξής. Αρχικά διατηρούν κάθε μήνυμα
που τους αποστέλλεται για κάποια ώρα για να αποφύγουν αυτούς που
παρακολουθούν την κίνηση των μηνυμάτων. Επίσης οι χρήστες κρυπτογραφούν τα
μηνύματα με τα δημόσια κλειδιά των παραληπτών για να αποφύγουν τον έλεγχο από
κακόβουλους διαχειριστές Remailers καθώς και για να είναι σίγουροι πως οι
ενδιάμεσοι υπολογιστές δεν διαβάζουν τα μηνύματα. Ο Remailer όμως μπορεί να
γνωρίζει τον αποστολέα και τον παραλήπτη. Για να μην γίνεται αυτό
χρησιμοποιούνται πολλοί Remailers μεταξύ του αποστολέα και του παραλήπτη με
παράλληλη κρυπτογράφηση με την τεχνική του Onion Routing. Αυτή η τεχνική
επιτρέπει σε κάθε Remailer να γνωρίζει μόνο τον προηγούμενο κόμβο στην διαδρομή
του μηνύματος. Επίσης όλα τα μηνύματα που φεύγουν από τον Remailer έχουν το
ίδιο μέγεθος για να μπερδεύουν τους επιτιθέμενους καθώς και διαφορετική σειρά
αναχώρησης από αυτή της άφιξης.
Publius
Η αρχιτεκτονική του Internet δεν επιτρέπει την ανώνυμη έκδοση κειμένων ή την
προστασία από την λογοκρισία. Τα εκδοθέντα κείμενα έχουν συνήθως ένα URL που
επιτρέπει σε κάποιον να βρει την αρχική διεύθυνση στο Internet που δημοσιεύτηκε
και κατά συνέπεια αυτόν που το δημοσίευσε. Υπάρχουν όμως κάποιοι λόγοι για τους
οποίους κάποιοι θα ήθελαν να δημοσιεύσουν τα κείμενα ανώνυμα. Ένας από αυτούς
είναι για παράδειγμα οι πολιτικές διαφωνίες ή ο φόβος για τις αποδοκιμασίες που
μπορεί να υποστεί ο συγγραφέας.
Το Publius είναι ένα σύστημα βασισμένο στο Web για την έκδοση κειμένων ή
άλλων αρχείων το οποίο είναι σχεδιασμένο έτσι ώστε να αποφεύγει τον έλεγχο και
την λογοκρισία. Ένα αρχείο δημοσιευμένο στο Publius αντιγράφεται σε πολλούς
διακομιστές έτσι ώστε να είναι δύσκολο σε κάποιον είτε άτομο είτε οργανωμένη
ομάδα να διαγράψει το αρχείο αυτό. Η αντιγραφή αυτή σε πολλαπλούς διακομιστές
προστατεύει και από μία διαδεδομένη μορφή επίθεσης σε διακομιστές την Distributed
denial of service που έχει χρησιμοποιηθεί κατά κόρον για να καταστεί ένα αρχείο μη
προσπελάσιμο. Ένα άλλο σημαντικό χαρακτηριστικό του Publius είναι πως δεν
απαιτεί από κάποιον που εκδίδει ένα αρχείο να βάλει δώσει στοιχεία που να συνδέουν
το αρχείο με κάποιον συγκεκριμένο υπολογιστή.
23
24. Ο σχεδιασμός του Publius είναι τέτοιος έτσι ώστε να διευκολύνει τους απλούς
χρήστες. Ιστοσελίδες γραμμένες σε Html, εικόνες ή οποιαδήποτε άλλα αρχεία
μπορούν να δημοσιευθούν στο σύστημα. Τα αρχεία που δημοσιεύονται με το Publius
μπορούν να προσπελασθούν από οποιονδήποτε browser σε συνδυασμό με την χρήση
ενός Http Proxy που τρέχει είτε τοπικά είτε απομακρυσμένα. Και αυτό διότι
αποκτούν URL που τοποθετείται στον browser ή ενσωματώνεται σε hyperlink.
To Publius δεν είναι 100% σύστημα Peer to Peer. Ωστόσο έχει κάποια
πλεονεκτήματα λόγω ακριβώς του γεγονότος αυτού, σε σχέση με συστήματα όπως το
Gnutella. Ένα από αυτά είναι το ότι αν κάποιος εκδότης ενημερώσει ήδη
δημοσιευμένο υλικό τότε όταν κάποιος προσπαθήσει να προσπελάσει αυτό το υλικό
σίγουρα θα προσπελάσει την νέα εκδοχή. Επίσης το σύστημα επιτρέπει μόνο στον
δημιουργό του υλικού να ανανεώσει το περιεχόμενο του υλικού ή να το διαγράψει.
Με αυτόν τον τρόπο αποκλείει την περίπτωση παραποίησης του υλικού.
Η αρχιτεκτονική του βασίζεται στην κρυπτογράφηση για να αποφευχθεί η
πρόσβαση από τους διαχειριστές και κατά συνέπεια η λογοκρισία να είναι λιγότερη
πιθανή. Η κρυπτογράφηση γίνεται με ένα κλειδί το οποίο χωρίζεται σε πολλά
κομμάτια. Η ανάγνωση του αρχείου μπορεί όμως να γίνει με λίγα από αυτά τα
κομμάτια και όχι απαραίτητα με όλα. Ο εκδότης δημοσιεύει το υλικό του σε πολλούς
διακομιστές αλλά με διαφορετικό κομμάτι του κλειδιού. Έτσι ακόμα και αν κλείσουν
πολλοί διακομιστές πάλι θα είναι προσβάσιμο. Ο εκδότης μόνο έχει την διεύθυνση
URL του υλικού του και αυτός αποφασίζει τι θα το κάνει. Μπορεί για παράδειγμα να
το δημοσιεύσει σε ομάδες συζητήσεων. Στη συνέχεια για την αποκρυπτογράφηση του
υλικού απαιτείται η πρόσβαση σε τόσους διακομιστές όσους έχει ορίσει ο
δημιουργός. Αν είναι προσβάσιμοι τότε μπορεί να αποκρυπτογραφηθεί. Αλλιώς δεν
γίνεται. Με αυτόν τον τρόπο εξασφαλίζεται τόσο η ύπαρξη του υλικού αφού είναι
δύσκολο να λογοκριθεί όσο και η απομόνωσή του όταν έχει περιεχόμενο πχ.
ρατσιστικό. Μπορούν οι διακομιστές δηλ. αν διαπιστώσουν ότι το περιεχόμενο δεν
είναι πρέπον να συμφωνήσουν να το διαγράψουν και να μην είναι δυνατή η
πρόσβαση.
Gnutella
Το Gnutella είναι και αυτό ένα δίκτυο Peer to Peer πλήρως σύμφωνο με τον
ορισμό που είχε δοθεί στις πρώτες σελίδες. Αυτό γίνεται γιατί η λειτουργία του δεν
βασίζεται στην τοπολογία των καλωδίων και των routers διότι η συμμετοχή τους
μπορεί να αλλάζει από λεπτό σε λεπτό. Το Gnutella δημιουργεί ένα εικονικό δίκτυο
πάνω από το πραγματικό.
Σε αντίθεση με το Internet όπου κάθε κόμβος έχει μια καλά ορισμένη διεύθυνση,
το Gnutella δεν δίνει ονόματα με σημασία στους κόμβους. Μάλιστα το Gnutella με
τις σύγχρονες εφαρμογές του κρύβει από τον χρήστη του, το στρώμα του Internet που
24
25. βρίσκεται από κάτω του. Καθένας μπορεί να βρει αυτό που θέλει πληκτρολογώντας
μία λέξη κλειδί και περιμένοντας τις απαντήσεις. Στο σχήμα 1.1 μπορούμε να δούμε
πώς συνδέονται κόμβοι στο δίκτυο.
Σχήμα1.1. Σύνδεση κόμβων στο δίκτυο
Το Gnutella διαφοροποιείται από το Napster σε πολύ σημαντικό βαθμό στο ότι δεν
βασίζεται σε κάποιο κεντρικό φορέα για την λειτουργία του. Το Napster αρχικά
λειτουργεί με το να συνδεθεί ο χρήστης στον κεντρικό υπολογιστή www.napster.com.
Αντίθετα ο χρήστης του Gnutella συνδέεται σε ένα κόμβο από αυτούς που διατηρεί
στην μνήμη του. Από την στιγμή που συνδέεται, είναι πια μέσα στο δίκτυο και μπορεί
να επικοινωνεί με άλλους κόμβους-χρήστες
Από την στιγμή που συνδέεται στο δίκτυο του Gnutella ο χρήστης μπορεί να ψάξει
για οτιδήποτε θέλει μέσα στους άλλους κόμβους που επικοινωνεί. Για παράδειγμα
μπορεί να ψάξει για μία συγκεκριμένη συνταγή. Βάζει τις λέξεις κλειδιά που τον
ενδιαφέρουν και περιμένει να του απαντήσουν οι άλλοι κόμβοι. Ανάμεσα στις
απαντήσεις που παίρνει, διαλέγει αυτή που θέλει και την κατεβάζει στον υπολογιστή
του. Στο επόμενο σχήμα μπορούμε ένα παράδειγμα λειτουργίας.
25
26. Σχήμα 1.2. Αίτηση και απάντηση σε δίκτυο Gnutella
Πρέπει να τονισθεί ότι το Gnutella δεν θέτει κάποιον περιορισμό ως προς το είδος
των αιτήσεων και των αποκρίσεων. Η αίτηση μπορεί να είναι πχ ένα όνομα αρχείου ή
ένα πρόγραμμα σε Java, οπότε η απόκριση θα είναι το αρχείο ή η έξοδος της
εκτέλεσης του προγράμματος αντίστοιχα. Συνεπώς το Gnutella δεν είναι απλή
εφαρμογή, αλλά πλατφόρμα πάνω στην οποία μπορούν να «χτισθούν» διάφορες
εφαρμογές p2p, μεταξύ των οποίων και εφαρμογές κατανεμημένων εφαρμογών.
Η αποκεντρωμένη λειτουργία του Gnutella έχει το σημαντικό πλεονέκτημα της
ανοχής του σε απώλειες κόμβων. Κάθε κόμβος του Gnutella μπορεί να δράσει ως
πύλη σύνδεσης με το δίκτυο και θεωρητικά κανένας δεν παίζει σημαντικότερο ρόλο
από τους άλλους. Δεν υπάρχει συνεπώς κάποιος κεντρικός κόμβος που αν πάψει να
λειτουργεί σταματάει να λειτουργεί και όλο το δίκτυο. Ωστόσο η δυναμική δομή έχει
και μειονεκτήματα, αφού είναι εντελώς απρόβλεπτο το πώς θα εξελιχθεί όσο
λειτουργεί το δίκτυο και νέοι κόμβοι προστίθενται ή αφαιρούνται σε τυχαία σημεία
του. Δεν είναι καθόλου σπάνιο ένας κόμβος να επιλέγεται ως πύλη στο δίκτυο από
πάρα πολλούς νεοεισερχόμενους ομότιμούς του, με αποτέλεσμα να δημιουργείται μια
κεντροποιημένη και αναποτελεσματική νησίδα στο δυναμικό δίκτυο.
26
27. Συμπεράσματα
Τα δίκτυα Peer to Peer Μπορούν να χωρισθούν σε 3 κατηγορίες. Τα κεντρικώς
ελεγχόμενα, τα ιεραρχικά και τα αποκεντρωμένα.
Στην πρώτη κατηγορία ανήκουν εφαρμογές όπως το Napster και το SETI@home.
Ο συγχρονισμός μεταξύ των κόμβων γίνεται μέσω κεντρικών Servers άσχετα αν στην
συνέχεια οι κόμβοι επικοινωνούν μεταξύ τους για την ανταλλαγή πληροφοριών.
Στο ιεραρχικό σύστημα ανήκει το DNS. Σε αυτό υπάρχουν διάφορα επίπεδα
συντονιστών. Αν κάποιοι κόμβοι που θέλουν να επικοινωνήσουν ανήκουν στo ίδιο
domain τότε μεσολαβεί ένας τοπικός συντονιστής που είναι υπεύθυνος για το domain
αυτό. Αν όμως ανήκουν σε διαφορετικά domain τότε μεσολαβεί συντονιστής
υψηλότερου επιπέδου.
Τέλος στο αποκεντρωμένο σύστημα ανήκει το Gnutella. Σε αυτό δεν μεσολαβεί
κανένας συντονιστής αλλά οι πελάτες αναλαμβάνουν τον συντονισμό και την
διαχείριση της επικοινωνίας τους. Αυτό σημαίνει πως αρκετές φορές κάποιοι κόμβοι
προωθούν μηνύματα σε κόμβους για λογαριασμό άλλων κόμβων.
Η παρούσα διπλωματική εργασία εστιάζει αποκλειστικά στα δυναμικά
αποκεντρωμένα ομότιμα υπολογιστικά συστήματα, όπου το φορτίο του δικτύου είναι
σχετικά υψηλό και οι πιθανότητες ένας κόμβος να συναλλαγή πολλές φορές με
κάποιον άλλον είναι σχετικά υψηλές.
27
29. ΚΕΦΑΛΑΙΟ 2. ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΚΤΥΩΝ ΣΤΟ OPNET
Modeller.
To OPNET Modeller, αποτελεί ένα εξειδικευμένο εργαλείο στο χώρο των
επικοινωνιών, που προσφέρει τη δυνατότητα με τη βοήθεια ενός γραφικού
περιβάλλοντος να μοντελοποιηθούν και να προσομοιωθούν διάφορα είδη δικτύων.
Στην παρούσα εργασία χρησιμοποιείται το OPNET Modeller 14.0, το οποίο περιέχει
έτοιμα μοντέλα δικτύων . Η γλώσσα προγραμματισμού που χρησιμοποιείται (και για
την κατασκευή νέων μοντέλων) είναι η Proto C, μια παραλλαγή της γλώσσας C, η
οποία μπορεί να χρησιμοποιεί και έτοιμες συναρτήσεις από τον πυρήνα (Kernel) του
OPNET.
Για την κατασκευή της δομής ενός δικτύου, ακολουθείται αυστηρά η παρακάτω
ιεραρχία τριών επιπέδων:
Μοντέλο Δικτύου (Project Editor)
Μοντέλο Κόμβων (Node Editor)
Μοντέλο Επεξεργασίας (Process Editor)
Τα αντικείμενα που ανήκουν στο μοντέλο δικτύου περιγράφονται από αντικείμενα
που ανήκουν στο μοντέλο κόμβων, ενώ αυτά που ανήκουν στο μοντέλο κόμβων
περιγράφονται από αντικείμενα που ανήκουν στο μοντέλο επεξεργασίας. Ένα
παράδειγμα αυτής της ιεραρχίας φαίνεται παρακάτω:
29
30. Σχήμα 2.1: Ιεραρχική δομή μοντελοποίησης στο OPNET
2.1. Μοντέλο Δικτύου
Το Μοντέλο Δικτύου (Project Editor), αποτελεί την κύρια πλατφόρμα εργασίας για
την κατασκευή και προσομοίωση ενός δικτύου. Από εδώ μπορούμε να κτίσουμε ένα
μοντέλο δικτύου, χρησιμοποιώντας τα έτοιμα μοντέλα (π.χ. ένα Τοπικό Δίκτυο
(LAN), ένα Μητροπολιτικό Δίκτυο (MAN) ή ένα δίκτυο με δύο υπολογιστές κ.τ.λ.)
που υπάρχουν στη βιβλιοθήκη του OPNET, να επιλέξουμε στατιστικά στοιχεία για το
δίκτυο, να τρέξουμε μια προσομοίωση και να δούμε τα αποτελέσματα. Επίσης
μπορούμε να φτιάξουμε τα μοντέλα δικτύου και επεξεργασίας, να κατασκευάσουμε
μοντέλα για πακέτα που στέλνονται, να κατασκευάσουμε φίλτρα και παραμέτρους
στα οποία μπορούμε να έχουμε πρόσβαση από το μοντέλο επεξεργασίας.
Πιο κάτω φαίνεται το προφίλ του μοντέλου δικτύου που εμείς χρησιμοποιήσαμε
για τις προσομοιώσεις μας:
30
31. Σχήμα 2.2. Μπάρα εργαλείων του Μοντέλου Δικτύου.
Παλέτα αντικειμένων (object palette):
Ανοίγοντας την παλέτα αντικειμένων, μπορούμε να ανασύρουμε κάποιο έτοιμο
μοντέλο αντικειμένου του OPNET, π.χ. ένα server, ένα δίκτυο υπολογιστών, μια
σύνδεση καλωδίου μεταξύ δύο υπο δικτύων. Μπορούμε επίσης με την επιλογή
“διαμόρφωση παλέτας” (configure palette), να δημιουργήσουμε μια παλέτα που θα
περιέχει μόνο τα αντικείμενα που θα χρειαστούμε ή ακόμα και να τροποποιήσουμε
κάποια από αυτά έτσι ώστε να έχουν τα επιθυμητά χαρακτηριστικά.
Επαλήθευση συνδέσεων (verify links):
Με αυτή την επιλογή, γίνεται έλεγχος αν οι συνδέσεις που υπάρχουν ανάμεσα στα
διάφορα αντικείμενα λειτουργούν σωστά. Αν κάποια σύνδεση δε λειτουργεί,
εμφανίζεται σχετικό μήνυμα για να μπορέσουμε να τη διορθώσουμε.
Κατάργηση αντικειμένων (fail selected objects):
31
32. Επιλέγοντας κάποια αντικείμενα που υπάρχουν στην επιφάνεια εργασίας και με
την επιλογή αυτή, μπορούμε να καταργήσουμε τη λειτουργία τους, δηλαδή η
προσομοίωση θα “τρέξει” σαν αυτά να μην υπάρχουν καθόλου.
Ανάκτηση αντικιμένων (recover selected objects):
Επαναφέρει αντικείμενα που είχαν καταργηθεί προηγουμένως.
Επαναφορά στο υποδίκτυο του προηγούμενου επιπέδου (go to parent subnet):
Αν θελήσουμε να δούμε τα επιμέρους αντικείμενα ενός υπο δικτύου, μπορούμε με
διπλή επιλογή του (double click), να εισέλθουμε στο ακριβώς πιο κάτω επίπεδο. Για
παράδειγμα για ένα από τα τοπικά δίκτυα του σχήματος 3.1.2, με διπλή επιλογή
βλέπουμε τα αντικείμενα που το αποτελούν (router και office_lan). Στη συνέχεια με
την επιλογή “επαναφορά στο υπο δίκτυο του προηγούμενου επιπέδου”,
επανερχόμαστε στο προηγούμενο επίπεδο. Για να μπούμε πιο βαθιά στην ιεραρχική
δομή, με διπλή επιλογή κάποιου από τα αντικείμενα του δευτέρου επιπέδου στο
μοντέλο δικτύου (π.χ. Router), μπαίνουμε στο μοντέλο κόμβων και από εκεί στο
μοντέλο επεξεργασίας. Αυτά όμως λειτουργούν σε ξεχωριστά παράθυρα και η
επιλογή “επαναφορά στο υπο δίκτυο του προηγούμενου επιπέδου”, δεν ισχύει.
Εστίαση σε ορθογώνιο (zoom to rectangle):
Με την επιλογή αυτή, η επιφάνεια εργασίας, εστιάζει σε ένα ορθογώνιο κομμάτι
που επιλέγουμε.
Εστίαση στο προηγούμενο (zoom to previous):
Η εστίαση επαναφέρεται.
Διαμόρφωση/τρέξιμο προσομοίωσης ξεχωριστών γεγονότων (configure/run
discrete event simulation, DES):
Με την επιλογή αυτή, ανοίγουμε ένα παράθυρο, όπου επιλέγουμε τις παραμέτρους
της προσομοίωσης, όπως είναι η διάρκεια, τα στατιστικά στοιχεία που θα συλλέξουμε
και ο σπόρος (seed) που αφορά την τυχαιότητα κάποιων συναρτήσεων. Από εδώ
μπορούμε επίσης να ορίσουμε τα είδη των εξερχόμενων στατιστικών (π.χ. report,
32
33. animation) και άλλα χαρακτηριστικά της προσομοίωσης. Με την επιλογή “τρέξιμο”
(run), η προσομοίωση αρχίζει.
Παρατήρηση αποτελεσμάτων (view results):
Εδώ μπορούμε να ορίσουμε τα χαρακτηριστικά που μας ενδιαφέρει να δούμε με το
πέρας της προσομοίωσης, καθώς και σε ποιες συνδέσεις (π.χ. στο σχήμα 3.1.2 μπορεί
να μας ενδιαφέρουν τα χαρακτηριστικά μόνο μιας εκ των τεσσάρων συνδέσεων
μεταξύ των τοπικών δικτύων). Έτσι βλέπουμε γραφικές παραστάσεις που αφορούν τα
επιλεχθέντα χαρακτηριστικά. Επειδή μια προσομοίωση μπορεί να τρέξει παράλληλα
για διαφορετικά σενάρια, από εδώ επιλέγουμε για ποια από αυτά θέλουμε να δούμε
τα αποτελέσματα καθώς μπορεί να γίνει και σύγκρισή τους στην ίδια γραφική
παράσταση.
Απόκρυψη/παρατήρηση γραφικών παραστάσεων (hide/show graph panels):
Με το πέρας της προσομοίωσης, αν ανοίξουμε μερικά παράθυρα γραφικών
παραστάσεων για να παρατηρήσουμε κάποια χαρακτηριστικά, με την επιλογή αυτή
μπορούμε να τα αποκρύψουμε και στη συνέχεια να τα επαναφέρουμε.
2.2. Μοντέλο Κόμβων
Τα αντικείμενα του Μοντέλου Κόμβων (Node Editor), περιγράφουν την
συμπεριφορά των αντίστοιχων κόμβων δικτύου και μοντελοποιούν τις εσωτερικές
τους λειτουργίες όπως δημιουργία δεδομένων, αποθήκευση κ.τ.λ. Η συμπεριφορά
κάθε αντικειμένου του δικτύου περιγράφεται από διάφορα “στοιχεία” (modules), τα
οποία συνδέονται μεταξύ τους με “συνδέσεις πακέτων” (packet streams) ή
“στατιστικά καλώδια” (statistic wires).
Στη μπάρα εργαλείων (toolbar), που βρίσκεται στο πάνω μέρος του παραθύρου,
όπως και στο μοντέλο δικτύου, υπάρχουν οι πιο κάτω επιλογές, τις οποίες επεξηγούμε
στη συνέχεια:
33
34. Σχήμα 2.3. Μπάρα εργαλείων του Μοντέλου Κόμβων
Δημιουργία επεξεργαστή (create processor):
Σε αυτή την επιλογή μπορούμε να δημιουργήσουμε ένα επεξεργαστή στην
επιφάνεια εργασίας. Ο επεξεργαστής αποτελεί ένα “στοιχείο”, που μπορεί να
επιτελέσει διάφορους σκοπούς όπως για παράδειγμα δημιουργία και καταστροφή
πακέτων, επεξεργασία πακέτων κλπ.
Δημιουργία “στοιχείου” ουράς (create queue):
Δημιουργούμε ένα “στοιχείο” ουράς, όπου μπορεί να αποθηκευτεί ένας αριθμός
πακέτων και να προγραμματιστεί η μετάδοσή τους. Επίσης μπορούν να οριστούν
τύποι πακέτων που το στοιχείο αυτό μπορεί να ανακτήσει, ενώ τα υπόλοιπα πακέτα
απορρίπτονται.
Δημιουργία σύνδεσης πακέτων (create packet stream):
Με την επιλογή αυτή δημιουργούμε μια σύνδεση πακέτου μεταξύ δύο
“στοιχείων”. Η σύνδεση πακέτου αποτελεί τη διαδρομή που ακολουθεί το κάθε
πακέτο από “στοιχείο” σε “στοιχείο”, μέσα σε ένα αντικείμενο δικτύου, για
επεξεργασία.
Δημιουργία στατιστικού καλωδίου (create statistic wire):
Ένα στατιστικό καλώδιο ακολουθεί την ίδια διαδρομή με μια σύνδεση πακέτων
αλλά κατά την αντίθετη κατεύθυνση. Ουσιαστικά, υλοποιεί την αμφίδρομη
επικοινωνία που υπάρχει σε ένα αντικείμενο δικτύου καθώς “τρέχει” τη στοίβα
πρωτοκόλλων από πάνω προς τα κάτω και αντίστροφα.
Δημιουργία λογικού συνδέσμου πομπού/δέκτη (create logical Tx/Rx association):
Με αυτή την επιλογή, δημιουργούμε μια λογική σύνδεση μεταξύ δύο στοιχείων
πομπού (transmitter, Tx) και δέκτη (receiver, Rx). Κατά τη διάρκεια της
προσομοίωσης, πακέτα τα οποία στέλνονται σε κάποιο αντικείμενο δικτύου,
παραλαμβάνονται από το “στοιχείο” του δέκτη. Στη συνέχεια στέλνονται προς τα
πάνω, στα υπόλοιπα στοιχεία για επεξεργασία (στοίβα πρωτοκόλλων) και ακολούθως,
34
35. στην αντίθετη διαδρομή προς τα κάτω καταλήγοντας στο “στοιχείο” του πομπού.[50]
Αυτή η λογική σύνδεση μεταξύ πομπού και δέκτη, αναπαρίσταται με ένα λογικό
σύνδεσμο Tx/Rx.
Δημιουργία δέκτη σημείου σε σημείο (create point-to-point receiver):
Δημιουργούμε ένα “στοιχείο” δέκτη, για συνδέσεις σημείο σε σημείο.
Δημιουργία πομπού σημείου σε σημείο (create point-to-point transmitter):
Δημιουργούμε ένα “στοιχείο” πομπού, για συνδέσεις σημείο σε σημείο.
Δημιουργία δέκτη για πολλαπλές συνδέσεις(create bus receiver):
Δημιουργούμε ένα “στοιχείο” δέκτη, για πολλαπλές συνδέσεις.
Δημιουργία πομπού για πολλαπλές συνδέσεις(create bus transmitter):
Δημιουργούμε ένα “στοιχείο” πομπού, για πολλαπλές συνδέσεις.
Δημιουργία “στοιχείου” εξωτερικού συστήματος (create external system module):
Με την επιλογή αυτή, μπορούμε να δημιουργήσουμε ένα “στοιχείο”, το οποίο δεν
ανήκει κατ’ ανάγκη στο συγκεκριμένο αντικείμενο δικτύου και μπορεί να λειτουργεί
ξεχωριστά.
2.3. Μοντέλο Επεξεργασίας
Το Μοντέλο Επεξεργασίας (Process Editor), αναπαρίσταται με διαγράμματα
πεπερασμένων καταστάσεων (finite state machines - FSMs) που ελέγχουν την
εσωτερική λειτουργικότητα των αντικειμένων στο μοντέλο κόμβων.Τα διαγράμματα
αυτά δημιουργούνται από εικόνες που αντιπροσωπεύουν καταστάσεις (states) και
γραμμές (transitions) που αντιπροσωπεύουν μεταβάσεις μεταξύ αυτών των
καταστάσεων. Κάθε κατάσταση χαρακτηρίζεται από τις λειτουργίες εισόδου (enter
execution) – οι οποίες περιγράφονται σε κώδικα της γλώσσας C και γράφονται στο
πάνω μισό κομμάτι της εικόνας μιας κατάστασης- και τις λειτουργίες εξόδου (exit
35
36. execution) – οι οποίες γράφονται στο κάτω μισό κομμάτι. “Αναδυόμενα” παράθυρα
εμφανίζονται με διπλή επιλογή για κάθε κομμάτι, όπου μπορούμε να γράψουμε τον
κώδικα.
Οι καταστάσεις επίσης χαρακτηρίζονται σε “εξαναγκασμένες” (forced, πράσινο
χρώμα) και “μη-εξαναγκασμένες” (unforced, κόκκινο χρώμα), ανάλογα με το αν
θέλουμε μια κατάσταση να μεταβαίνει στην επόμενη χωρίς κανένα περιορισμό ή όχι
αντίστοιχα. Συνθήκες μετάβασης μπορούν επίσης να οριστούν στις γραμμές
μετάβασης για να ορίσουν περιορισμούς για τη μετάβαση από την μια κατάσταση
στην άλλη.
Αυτά φαίνονται στο σχήμα που ακολουθεί:
Σχήμα 2.3. Μοντέλο Επεξεργασίας
36
37. Όπως και στα προηγούμενα μοντέλα, στη μπάρα εργαλείων (toolbar), που
βρίσκεται στο πάνω μέρος του παραθύρου, υπάρχουν οι πιο κάτω επιλογές, τις οποίες
επεξηγούμε στη συνέχεια:
Σχήμα 2.4: Μπάρα εργαλείων του Μοντέλου Επεξεργασίας
Δημιουργία κατάστασης (create state):
Με την επιλογή αυτή, μπορούμε να δημιουργήσουμε μια κατάσταση. Η
κατάσταση αυτή, αποτελεί ένα κομμάτι της όλης διαδικασίας που εκτελείται σε ένα
“στοιχείο” του Μοντέλου Κόμβων. Με επιλογή του δεξιού κουμπιού του “mouse”
του υπολογιστή, εμφανίζεται η επιλογή για να μετατρέψουμε μια κατάσταση από
“εξαναγκασμένη” σε “μη-εξαναγκασμένη” και το αντίθετο. Στο πάνω μισό κομμάτι
της κατάστασης, όπως αναφέραμε και προηγουμένως, γράφονται οι συναρτήσεις που
θα εκτελεστούν κατά την είσοδο στην κατάσταση ενώ στο κάτω μισό κομμάτι
γράφονται οι συναρτήσεις που θα εκτελεστούν κατά την έξοδο από την κατάσταση.
Οι συναρτήσεις αυτές μπορεί να γράφονται εξ’ ολοκλήρου μέσα στην κατάσταση ή
να καλούνται με συγκεκριμένες παραμέτρους, ανατρέχοντας στο “κομμάτι
συναρτήσεων” (function block), για να βρουν τον κώδικα της συγκεκριμένης
συνάρτησης.
Δημιουργία μετάβασης (create transition):
Από εδώ μπορούμε να δημιουργήσουμε μια γραμμή μετάβασης από μια
κατάσταση σε μια άλλη. Οι μεταβάσεις ακολουθούν συγκεκριμένη κατεύθυνση (δεν
είναι αμφίδρομες). Επίσης ορίζονται συνθήκες μετάβασης για το πότε και κάτω από
ποιες προϋποθέσεις μια συγκεκριμένη μετάβαση θα συμβεί.
Καθορισμός αρχικής κατάστασης (set initial state):
Κάθε διαδικασία που περιγράφεται στο μοντέλο επεξεργασίας, πρέπει να έχει μια
αρχική κατάσταση, δηλαδή μια κατάσταση που θα εκτελεστεί πρώτη κατά την έναρξη
37
38. της διαδικασίας. Στην αρχική κατάσταση, αρχικοποιούνται παράμετροι, δίνονται
αρχικές τιμές σε μεταβλητές που χρειάζεται να έχουν συγκεκριμένη τιμή σε κάθε
εκτέλεση της διαδικασίας καθώς ανακτώνται και παράμετροι από το προηγούμενο
επίπεδο (Μοντέλο Κόμβων), που θα χρησιμοποιηθούν.
Μορφοποίηση μεταβλητών της διαδικασίας (edit state variables):
Στο παράθυρο που “αναδύεται” με αυτή την επιλογή, δηλώνονται όλες οι
μεταβλητές που χρησιμοποιούνται στον κώδικα που περιγράφει τις διάφορες
συναρτήσεις της διαδικασίας. Για κάθε μεταβλητή, επιλέγεται
ένας συγκεκριμένος τύπος (π.χ. int, double, float, char) καθώς επίσης μπορούν να
γραφούν και σχόλια για το τι αντιπροσωπεύει η κάθε μία από αυτές. Οι μεταβλητές
που δηλώνονται εδώ κρατούν την τιμή τους κάθε φορά που “τρέχει” η διαδικασία.
Μορφοποίηση προσωρινών μεταβλητών (edit temporary variables):
Εδώ δηλώνονται βοηθητικές μεταβλητές, οι οποίες χάνουν την τιμή που έχουν
μετά το τέλος της διαδικασίας και την επόμενη φορά που αυτή θα “τρέξει” χρειάζεται
να αρχικοποιηθούν ξανά.
Μορφοποίηση κομματιού επικεφαλίδας (edit header block):
Στο παράθυρο που “αναδύεται” με αυτή την επιλογή, δηλώνονται όλα τα
εξωτερικά αρχεία που θα χρησιμοποιηθούν καθώς και οι έτοιμες βιβλιοθήκες της C
που χρειάζονται στον κώδικα (με include). Επίσης μπορούν να δηλωθούν μεταβλητές
με σταθερές τιμές καθώς και αναγνωριστικά διακοπών (interrupts) που θα συμβούν
στη διαδικασία (με define).
Μορφοποίηση κομματιού συναρτήσεων (edit function block):
Εδώ γράφονται όλες οι συναρτήσεις που θα χρησιμοποιηθούν στην εκτέλεση της
διαδικασίας. Οι μεταβλητές που αυτές χρησιμοποιούν, δηλώνονται είτε στην αρχή
κάθε συνάρτησης είτε στις μεταβλητές της διαδικασίας (state variables). Ο κώδικας
που γράφεται είναι σε γλώσσα C αλλά χρησιμοποιούνται και έτοιμες συναρτήσεις
που προσφέρει ο πυρήνας του OPNET. Αυτές οι συναρτήσεις αφορούν κυρίως
38
39. ανάκτηση και μεταφορά παραμέτρων ανάμεσα στα διάφορα επίπεδα, συλλογή
στατιστικών στοιχείων, διακοπές κ.ά..
Μορφοποίηση διαγνωστικού κομματιού (edit diagnostic block):
Εδώ συνήθως γράφονται συναρτήσεις που αφορούν την επικοινωνία της
προσομοίωσης με τον έξω κόσμο κατά τη διάρκεια που αυτή εκτελείται. Για
παράδειγμα οι συναρτήσεις αυτές τυπώνουν μηνύματα και τιμές παραμέτρων και
μεταβλητών.
Μορφοποίηση κομματιού τερματισμού (edit termination block):
Εδώ συνήθως γράφονται συναρτήσεις που αφορούν τον τερματισμό της
διαδικασίας.
Μετατροπή κώδικα μοντέλου επεξεργασίας (compile process model):
Με την επιλογή αυτή γίνεται το compilation του μοντέλου επεξεργασίας.
Συντακτικά λάθη που εμφανίζονται στον κώδικα, λανθασμένη χρησιμοποίηση
ονομάτων μεταβλητών ή μη σωστή ανάκληση μνήμης, οδηγούν σε σφάλμα κατά την
μετατροπή του κώδικα.
39
40. ΚΕΦΑΛΑΙΟ 3. Σύστημα κατανεμημένου Διαμοιρασμού
ΣΚΔ
Σε αυτό το κεφάλαιο περιγράφω το πρόβλημα του σύγχρονου κατανεμημένου
διαμοιρασμού βίντεο σε πραγματικό χρόνο. Αρχικά ορίζεται το πρόβλημα και οι
απαιτήσεις που υπάρχουν από ένα τέτοιο σύστημα. Έπειτα αναλύεται η
αρχιτεκτονική επίλυσής του και δίνονται οι τεχνικοί στόχοι που πρέπει να
επιτευχθούν για την δημιουργία ενός τέτοιου συστήματος.
Το κεφάλαιο αυτό χωρίζεται σε δύο ενότητες. Στην πρώτη περιγράφονται απαιτήσεις
από τον γράφο διαμοιρασμού, σχετική εργασία με το συγκριμένο πρόβλημα και
αναλύεται εκτενώς και αξιολογείται το σύστημα που αναπτύχθηκε. Στην δεύτερη
περιγράφεται το πρόβλημα δημιουργίας κατανεμημένου χρονοπρογραμματιστη
ανταλλαγής τεμαχίων δεδομένων (p2p block scheduler). Επίσης αναλύονται οι
τεχνικοί στόχοι που ένα τέτοιο σύστημα πρέπει να ικανοποιεί και περιγράφεται η
σχετική εργασία με το πρόβλημα αυτό. Τέλος αναλύεται εκτενώς ο
χρονοπρογραμματιστής που αναπτύχθηκε και αξιολογείται εκτενώς ενώ παράλληλα
αναλύονται οι επιδόσεις και τα χαρακτηριστικά συνολικά του προτεινόμενου
συστήματος.
Αρχικά κρίνω σημαντικό να ορισθεί το πρόβλημα του σύγχρονου διαμοιρασμού
πολυμέσων ανεξαρτήτως από την αρχιτεκτονική που θα ακολουθηθεί και από τεχνικά
χαρακτηριστικά του δικτύου ή/και των υπολογιστικών συσκευών. Σε πραγματικό
χρόνο σε ένα κόμβο του δικτύου δημιουργείται ένα αντικείμενο πολυμέσων που
μπορεί να είναι ένα βίντεο, ένα ηχητικό αντικείμενο κ.α. Σαν παραδείγματα θα
μπορούσαν να αναφερθούν η ζωντανή λήψη ενός αθλητικού γεγονότος, μιας
συναυλίας μουσικής, μιας συνέντευξης. Το αντικείμενο πληροφορίας αυτό επιθυμούν
να λαμβάνουν ένα σύνολο χρηστών που αντιστοιχούν σε δικτυακούς κόμβους. Οι
απαιτήσεις των χρηστών είναι:
Δυναμική σύνδεση. Η εισαγωγή και αποχώρηση από την παραλαβή όποια
στιγμή αυτοί επιθυμούν.
40
41. Μικρή καθυστέρηση. Η ελαχιστοποίηση του χρονικού διαστήματος από την
στιγμή δημιουργίας κάθε στιγμιότυπου του αντικειμένου πολυμέσων μέχρι
τον διαμοιρασμό του σε κάθε συμμετέχοντα χρήστη.
Ποιοτική λήψη. Η μεγιστοποίηση της ποιότητας του αντικειμένου όσον
αφορά τα χαρακτηριστικά της εικόνας ή/και του ήχου που διαμοιράζεται.
Σταθερότητα. Η αδιάλειπτη λειτουργία του συστήματος και η σταθερότητά
του.
Ευελιξία παραγωγής υλικού. Η ικανότητα του χρήστη να μπορεί ο ίδιος να
αποτελεί αυτός διαμοιραστή υλικού.
Κόστος συστήματος. Η ελαχιστοποίηση του κόστους του συστήματος.
Στο πρώτο κεφάλαιο αναφέρθηκαν αρχιτεκτονικές διαμοιρασμού περιεχομένου στο
διαδίκτυο στο κεφάλαιο αναλύεται η προτεινόμενη διομότιμη αρχιτεκτονική
διαμοιρασμού.
Σαν μια αρχική συνοπτική περιγραφή χωρίς βλάβη της γενικότητας σε κάθε σύστημα
κατανεμημένου σύγχρονου διαμοιρασμού πολυμέσων σε πραγματικό χρόνο (ΣΚΔ)1
μία πηγή (π.χ. ένας εξυπηρετητής) δημιουργεί ένα συρμό από τεμάχια ενός
αντικειμένου πολυμέσων το οποίο έχει ρυθμό παραγωγής δεδομένων μ bits ανά
δευτερόλεπτο. Κάθε δευτερόλεπτο διαιρείται σε ένα σύνολο από τεμάχια πλήθους
Nb. Έτσι λοιπόν τα τεμάχια δημιουργούνται με συχνότητα 1/Nb και το μέγεθος του
κάθε ενός είναι Lb=1/Nb bit. Αυτά στέλνονται σε ένα μικρό υποσύνολο των
συμμετεχόντων χρηστών (ακόμα και σε έναν). Συνεπώς κάθε χρήστης ανταλλάσει τα
τεμάχια αυτά με τους γείτονές του στον γράφο διαμοιρασμού με την χρήση ενός
δυναμικού κατανεμημένου χρονοπρογραμματιστή ανταλλαγής με σκοπό την λήψη
κάθε ενός από κάθε χρήστη- κόμβο μέσα σε ένα προκαθορισμένο χρονικό διάστημα
από την δημιουργία του.
1
Στην διεθνή βιβλιογραφία αναφέρεται σαν “p2p live streaming system” και από δω και στο εξής θα
αποκαλείται σύστημα κατανεμημένου διαμοιρασμού (ΣΚΔ) προς χάριν συντομίας.
41
42. Σχήμα 3.1 Στιγμιότυπο της κατάστασης του πίνακα περιεχομένων ενός
κόμβου
Για την επίτευξη αυτού του στόχου κάθε κόμβος διατηρεί και ανταλλάσει με τους
γείτονές του ένα πίνακα περιεχομένων τεμαχίων. Στο σημείο αυτό ορίζω σαν χρόνο
στησίματος (setup time) ts, και αποτελεί μία ακόμα παράμετρο του συστήματός, το
χρονικό διάστημα που μεσολαβεί από την δημιουργία ενός τεμα;χίου μέχρι τον
διαμοιρασμό του σε κάθε συμμετέχοντα κόμβο του συστήματος. Στον πίνακα
περιεχομένων τεμαχίων κάθε κόμβου βρίσκονται τα τεμάχια που δημιουργήθηκαν τα
τελευταία ts δευτερόλεπτα. Το πλήθος αυτών των τεμαχίων, και άρα το μέγεθος του
πίνακα, είναι Nb*ts. Κάθε τεμάχιο φυσικά μπορεί να βρίσκεται σε δύο καταστάσεις:
παρόν (που σημαίνει ότι έχει ληφθεί), απουσιάζον (που σημαίνει ότι δεν έχει
παραλειφθεί ακόμα). Για την ομαλή λειτουργία του χρονοπρογραμματιστή
ανταλλαγής κάθε κόμβος κάθε φορά που παραλαμβάνει ένα τεμάχιο ενημερώνει τους
κόμβους με τους οποίους συνδέεται στον γράφο διασύνδεσης για την κατάσταση του
πίνακα περιεχομένων τεμαχίων που διαθέτει. Στο Σχήμα 3.1 εικονίζεται ένα
στιγμιότυπο της κατάστασης του πίνακα περιεχομένων ενός κόμβου.
Συνοπτικά για την επίτευξη των απαιτήσεων στα ΣΚΔ όπως προαναφέρθηκαν οι
τεχνικοί στόχοι που πρέπει καλυφθούν είναι :η επίτευξη ενός υψηλού βαθμό χρήσης
του διαθέσιμου εύρους ζώνης των κόμβων που συμμετέχουν σε αυτό, ο γρήγορος
42