Σύστηµα Προσοµοίωσης ικτύου για Aλγόριθµους Οµότιµων (peer-to-peer) Kόµβων.
|
|
- Ευμελια Αλεξίου
- 10 χρόνια πριν
- Προβολές:
Transcript
1 ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟ ΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Σύστηµα Προσοµοίωσης ικτύου για Aλγόριθµους Οµότιµων (peer-to-peer) Kόµβων. Μαρία Η. Κατσούφη Επιβλέπων: Ευστάθιος Χατζηευθυµιάδης, Επ. Καθηγητής ΕΚΠΑ ΑΘΗΝΑ ΕΚΕΜΒΡΙΟΣ 2005
2 Μαρία Η. Κατσούφη 1
3 ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Σύστηµα Προσοµοίωσης ικτύου για αλγόριθµους Οµότιµων (peer-to-peer) κόµβων Μαρία Η. Κατσούφη Α.Μ.:1206 ΕΠΙΒΛΕΠΩΝ: Χατζηευθυµιάδης Ευστάθιος, Επ. Καθηγητής ΕΚΠΑ Μαρία Η. Κατσούφη 2
4 Περίληψη Τα P2P συστήµατα έχουν αναδειχθεί τα τελευταία χρόνια σε ένα σηµαντικό κοινωνικό και τεχνολογικό φαινόµενο. Κάποια από αυτά είναι το Gnutella, το Gnutella2, το Chord και το CAN, που εξαιτίας της ανοικτής αρχιτεκτονικής τους και της επεκτασιµότητάς τους, αποτελούν ένα πολύ ενδιαφέρον αντικείµενο µελέτης. Τα συστήµατα αυτά, όπως και πολλές άλλες P2P εφαρµογές, σχηµατίζουν στο επίπεδο εφαρµογής, ένα εικονικό δίκτυο (overlay network) µε δικούς τους µηχανισµούς δροµολόγησης και αναζήτησης. Το σύστηµα που υλοποιήθηκε είναι µία πλατφόρµα για τη µελέτη τέτοιων συστηµάτων ως προς τους µηχανισµούς αυτούς. ΘΕΜΑΤΙΚΗ ΠΕΡΙΟΧΗ: Peer-to-peer συστήµατα. ΛΕΞΕΙΣ ΚΛΕΙ ΙΑ: peer-to-peer συστήµατα, προσοµοίωση, αλγόριθµος CAN, αλγόριθµος Chord, αλγόριθµοςgnutella. Μαρία Η. Κατσούφη 3
5 Ευχαριστίες Θα ήθελα να ευχαριστήσω τους ανθρώπους που µε διάφορους τρόπους µε βοήθησαν στην εκπόνηση αυτής της εργασίας: Τον επιβλέποντα καθηγητή κ. Ευστάθιο Χατζηευθυµιάδη και κυρίως τον Τάσο Ιωαννίδη που µου έδωσε την δυνατότητα να ασχοληθώ µε το θέµα των Peer-to-Peer δικτύων και µε καθοδήγησε- µε µεγάλη υποµονήσε όλη την διάρκεια της εργασίας µου. Τη συµφοιτητρια και φίλη µου Ειρήνη για τη συµπαράσταση της και τέλος, τον πατέρα µου, που µε τα πολύ εύστοχα σχόλιά του µε βοήθησε αποφασιστικά σε αρκετές φάσεις της εργασίας µου. Μαρία Η. Κατσούφη 4
6 Περιεχόµενα Περίληψη...3 Ευχαριστίες...4 Περιεχόµενα Εισαγωγή Το P2P Mοντέλο Eπικοινωνίας Συστήµατα P2P... 9 Πλεονεκτήµατα P2P συστηµάτων...9 Μειονεκτήµατα P2P συστηµάτων...10 Βασικές λειτουργίες των P2P συστηµάτων Το Πρόβληµα Της Αναζήτηςης Στα P2P Συστήµατα P2P Αλγόριθµοι Gnutella...12 Gnutella Chord...21 CAN...26 Συγκριτική Παρουσίαση Προσοµοίωση Συστήµατα και Μοντέλα Τα Είδη Μοντέλων Προσοµοίωσης Ο Μηχανισµός Εξέλιξης του Χρόνου Συστατικά ενός Μοντέλου Προσοµοίωσης ιακριτών Γεγονότων ηµιουργία Τυχαίων Τιµών από Πιθανοτικές Κατανοµές: Η κατανοµή Poisson35 3 Ο ορισµός του προβλήµατος Προηγούµενες Μελέτες Προηγούµενες Μελέτες Συστηµάτων µε Προσοµοίωση LS...39 P2PSim...40 The Query Cycle Simulator...40 SimP PLP2P Περιγραφή Συστήµατος Αρχιτεκτονική Συστήµατος Περιγραφή Επιπέδου Routing and Searching Περιγραφή Επιπέδου Communications and Messaging Μοντελοποίηση Κόµβων Παράδειγµα Λειτουργίας Του Συστήµατος Σύγκριση Συστηµάτων Προσοµοίωσης Πειράµατα - Κατανοµές Σκοπός Των Πειραµάτων Περιγραφή ιαδικασίας - Συµπεράσµατα Επίλογος/ Mελλοντικές επεκτάσεις Παράρτηµα Α: Interfaces...57 Μαρία Η. Κατσούφη 5
7 7. Παράρτηµα Β: Χρήσιµοι Ορισµοί Αναφορές...65 Μαρία Η. Κατσούφη 6
8 1 Εισαγωγή 1.1 Το P2P Mοντέλο Eπικοινωνίας Στην client-server αρχτιτεκτονική, ένας κόµβος του δικτύου µπορεί να έχει ρόλο server ή client. Ο server είναι αυτός που παρέχει κάποια υπηρεσία µέσω του δικτύου ενώ ο client είναι αυτός που ζητά και λαµβάνει την υπηρεσία αυτή. Το µοντέλο αυτό παρουσιάζει κάποια µειονεκτήµατα. Για παράδειγµα, αν κάποιος από τους servers για κάποιο λόγο δεν µπορεί να παρέχει τις υπηρεσίες του (π.χ. αν δεχτεί επίθεση, παρουσιάσει κάποια βλάβη ή δεχτεί περισσότερες αιτήσεις από αυτές που µπορεί να εξυπηρετήσει) τότε η υπηρεσία που προσέφερε δε θα είναι διαθέσιµη στο δίκτυο µέχρι να αποκατασταθεί το πρόβληµα. Το P2P µοντέλο επικοινωνίας είναι µια εναλλακτική προσέγγιση του κλασικού µοντέλου επικοινωνίας Client-Server. Εφαρµόζεται πάνω στην υπάρχουσα υποδοµή, δηλαδή, θα µπορούσαµε να πούµε ότι τα δύο µοντέλα συνυπάρχουν και αλληλοσυµπληρώνονται. Στις επόµενες παραγράφους ακολουθεί η περιγραφή των βασικών αρχών και χαρακτηριστικών του P2P µοντέλου επικοινωνίας Βασικές Aρχές Mοντέλου! Overlay Network: Βασική ιδέα στο Peer to Peer (P2P) µοντέλο είναι η δηµιουργία ενός εικονικού δικτύου πάνω από το υπάρχον. Το δίκτυο αυτό το ονοµάζουµε Overlay Network (Εικόνα 1). ηλαδή, οι κόµβοι που συµµετέχουν ήδη στο δίκτυο, µπορούν µέσω κάποιας εφαρµογής να συµµετέχουν και σε ένα P2P δίκτυο, µε σκοπό την απευθείας ανταλλαγή δεδοµένων, το διαµοιρασµό πόρων και, γενικά, την ασφαλή µεταξύ τους επικοινωνία. Το Overlay δίκτυο Το δίκτυο Εικόνα 1: Overlay Network Στην Εικόνα 1, στο κάτω επίπεδο απεικονίζεται το δίκτυο (π.χ. το internet). Κάποιοι από τους κόµβους που είναι συνδεδεµένοι στο δίκτυο επιλέγουν να συνδεθούν και να σχηµατίσουν και ένα άλλο δίκτυο (Overlay Network), ενώ εξακολουθούν να είναι συνδεδεµένοι µε το αρχικό. Μαρία Η. Κατσούφη 7
9 ! Client και Server: Στην Client Server αρχιτεκτονική ο ρόλος του server, δηλαδή ενός συστήµατος που πρέπει να είναι πάντα διαθέσιµο για να εξυπηρετεί τις αιτήσεις που δέχεται, έχει ανατεθεί σε συγκεκριµένους κόµβους. Ένας client απλά συνδέεται µε αυτούς και ζητά τις υπηρεσίες που προσφέρουν. Στο P2P µοντέλο όµως οι ρόλοι του client και του server δεν είναι τόσο διακριτοί. Στην πραγµατικότητα, ένας κόµβος (peer), που συνδέεται σε ένα P2P δίκτυο, µπορεί να είναι συγχρόνως client, αλλά και server για άλλους κόµβους του δικτύου. ηλαδή, µπορεί συγχρόνως και να ζητά και να παρέχει υπηρεσίες µε τρόπο αυτόνοµο, χωρίς εξάρτηση από κάποιον κεντρικό server. Η βασική ιδέα είναι οποιαδήποτε επικοινωνία ανάµεσα σε δύο peers να γίνεται µε άµεση µεταξύ τους σύνδεση. Ωστόσο, δεν αποκλείεται να προβλέπεται από ένα P2P πρωτόκολλο η µεσολάβηση κάποιου ενδιάµεσου, µε σκοπό την βελτίωση της απόδοσης Άλλα χαρακτηριστικά:! Αποκέντρωση Κατανοµή ευθύνης: Με την κατάργηση του κεντρικού server που κρατάει και διαχειρίζεται όλη την πληροφορία, επιτυγχάνεται ένα είδος αποκέντρωσης και κατανοµής της ευθύνης σε όλους τους κόµβους που συµµετέχουν στο P2P δίκτυο. Κάθε κόµβος είναι υπεύθυνος για την αποθήκευση µιας «ποσότητας» δεδοµένων και την προσφορά κάποιας υπηρεσίας σε σχέση µε τα δεδοµένα αυτά. Ο τρόπος µε τον οποίο γίνεται η κατανοµή αυτή καθορίζεται από το εκάστοτε P2P σύστηµα.! ιαθεσιµότητα πόρων: Σε αντίθεση µε το client-server µοντέλο στο οποίο υπάρχει σαφής δαχωρισµός µεταξύ αυτών που διαθέτουν τους πόρους (servers) και αυτών που τους καταναλώνουν (clients), στο P2P µοντέλο επικοινωνίας οι πόροι των περιφερειακών κόµβων γίνονται διαθέσιµοι προς χρήση από κάθε άλλο κόµβο που είναι συνδεδεµένος µε το P2P δίκτυο. Με αυτόν τον τρόπο γίνεται δυνατή η αξιοποίηση των πόρων όλων των συνδεδεµένων κόµβων. Παράλληλα, κάθε κόµβος έχει δυνατότητα πρόσβασης σε πόρους που σε άλλη περίπτωση πολύ δυσκολα θα µπορούσε να έχεί.! Ετερογένεια: Οι κόµβοι που συµµετέχουν σε ένα P2P δίκτυο έχουν διαφορετικά χαρακτηριστικά µεταξύ τους. ιαφέρουν σε υπολογιστική ισχή, σε διάθεση αποθηκευτικού χώρου, ταχύτητα σύνδεσης, καθώς και στο «ποσό» της πληροφορίας που αποφασίζουν να µοιραστούν µε τους υπόλοιπους κόµβους. Παρά την ετερογένεια αυτή, οι κόµβοι που συνδέονται σε ένα P2P δίκτυο θεωρούνται γενικά ισότιµοι, εκτός και αν ορίζεται κάτι διαφορετικό από το σύστηµα για την βελτίωση της απόδοσης του συστήµατος.! Μερική διαθεσιµότητα κόµβων: Οι κόµβοι δεν είναι συνεχώς συνδεδεµένοι στο P2P δίκτυο. Ανά πάσα στιγµή, κόµβοι συνδέονται και αποσυνδέονται. Το σύστηµα θα πρέπει να εγγυάται τη συνδεσµικότητα σε επίπεδο εφαρµογής. ηλαδή, ένα P2P σύστηµα δε θα πρέπει να καταρρέει σε περίπτωση που κάποιος/κάποιοι κόµβοι αποσυνδέονται, αλλά να εξακολουθεί να παρέχει υπηρεσίες στους υπόλοιπους συνδεδεµένους κόµβους.! Πλεονασµός παρεχόµενων υπηρεσιών και πληροφοριών: Κάθε κόµβος που συνδέεται στο P2P σύστηµα προσφέρει κάποια πληροφορία. Συνήθως περισσότεροι από έναν κόµβοι προσφέρουν την ίδια πληροφορία. ηλαδή Μαρία Η. Κατσούφη 8
10 περισσότεροι από έναν κόµβοι προσφέρουν την ίδια υπηρεσία. Για παράδειγµα, κάποιοι από τους χρήστες µπορεί να µοιράζονται ένα συγκεκριµένο µουσικό αρχείο. Στην περίπτωση αυτή, ένας κόµβος-χρήστης που ψάχνει το αρχείο αυτό µπορεί να το βρει σε περισσότερους από έναν κόµβους και να επιλέξει από ποιον θα το κατεβάσει, δηλαδή ποιανού την υπηρεσία θα χρησιµοποιήσει. Τα παραπάνω χαρακτηριστικά δεν εµφανίζονται συγχρόνως σε όλα τα P2P συστήµατα Συστήµατα P2P Γενικά, τα συστήµατα διαµοιρασµού περιεχοµένου [11] αποτελούνται από ένα µεγάλο πλήθος υπολογιστικών κόµβων, που µπορούν να προσφέρουν πόρους (resources) (υπολογιστικούς και αποθηκευτικούς) και περιεχόµενο (π.χ. κείµενα) στο σύστηµα. Έτσι, οι κόµβοι-χρήστες µπορούν να προσφέρουν περιεχόµενο στην υπόλοιπη κοινότητα των κόµβων, ενώ επιπλέον επιτρέπουν τη χρήση των δικών τους πόρων για αποθήκευση περιεχοµένου άλλων χρηστών, καθώς και την πρόσβαση σε αυτό από άλλα µέλη της κοινότητας. εδοµένων αυτών των χαρακτηριστικών, ο κεντρικός έλεγχος της πληροφορίας σε εξειδικευµένους κόµβους δεν είναι επιθυµητός, για την αποφυγή κεντρικών σηµείων αποτυχίας (central points of failure) και συµφόρησης (performance bottlenecks), καθώς και για την προστασία της ανωνυµίας των χρηστών. Ως αποτέλεσµα όλων αυτών, το P2P (peer-to-peer) µοντέλο για την κατασκευή κατανεµηµένων συστηµάτων γίνεται τελευταία ιδιαίτερα δηµοφιλές. Τα P2P συστήµατα αποτελούνται από ένα σύνολο αυτόνοµων κόµβων (peers/nodes), που µπορούν να συνεργάζονται µεταξύ τους συγκεντρώνοντας όλους τους διαθέσιµους πόρους τους µε σκοπό να παράσχουν υπηρεσίες ή να διαχειριστούν συνεργατικά µεγάλες υπολογιστικές εργασίες. Πλεονεκτήµατα P2P συστηµάτων! Οι απαιτήσεις για να ξεκινήσει και να αναπτυχθεί ένα τέτοιο σύστηµα είναι χαµηλές καθώς δεν απαιτείται καµία διοικητική ή οικονοµική συµφωνία µεταξύ παροχέα και χρήστη (server και client), σε αντίθεση µε τα κεντρικοποιηµένα στυστήµατα.! Προσφέρουν έναν τρόπο αξιοποίησης της υπολογιστικής και αποθηκευτικής δυνατότητας των υπολογιστών που είναι συνδεδεµένοι στο internet.! Η αποκεντρωµένη και κατανεµηµένη φύση των P2P συστηµάτων τα καθιστά περισσότερο ανθεκτικά σε σφάλµατα ή επιθέσεις. Έτσι, µπορούν να θεωρηθούν ιδανικά για µακροπρόθεσµη αποθήκευση δεδοµένων ή µακροσκελείς υπολογισµούς. Μαρία Η. Κατσούφη 9
11 Μειονεκτήµατα P2P συστηµάτων! Η αποκέντρωση και η κατανοµή της ευθύνης, όπως αναφέρθηκε στην παραπάνω παράγραφο, είναι ένα από τα πλεονεκτήµατα των P2P συστηµάτων. Ωστόσο, η έλλειψη ενός κεντρικού σηµείου ελέγχου εκτός από θετικό στοιχείο µπορεί να θεωρηθεί και αρνητικό. Σε ένα P2P δίκτυο, µπορεί για παράδειγµα να διακινείται ανεξέλεγκτα πληροφορία, το περιεχόµενο της οποίας συχνά είναι παράνοµο.! Σε ένα P2P δίκτυο δεν είναι δυνατό να δοθούν εγγυήσεις για την ποιότητα υπηρεσιών (Quality of Service) που παρέχονται. Βασικές λειτουργίες των P2P συστηµάτων Σε ένα P2P σύστηµα κόµβοι συνδέονται και σχηµατίζουν σε επίπεδο εφαρµογής ένα ιδεατό δίκτυο, το P2P δίκτυο. Ενας κόµβος συνδέεται (Join) στο σύστηµα µέσω κάποιας P2P εφαρµογής οπότε και κάνει διαθέσιµους κάποιους από τους πόρους του. Από τη στιγµή αυτή µπορεί να υποβάλλει αιτήσεις αναζήτησης (Lookup) για κάποια πληροφορία αλλά και να προσφέρει τις υπηρεσίες του σε άλλους κόµβους, όπως π.χ να απαντήσει σε κάποια δική τους αίτηση αναζήτησης. Παράλληλα, κάθε κόµβος εφαρµόζει εναν µηχανισµό σταθεροποίησης (Stabilize). Με αυτόν τον τρόπο ενηµερώνει τους υπόλοιπους συνδεδεµένους κόµβους για την ύπαρξή του και συγχρόνως ενηµερώνεται και αυτός για το ποιοι κόµβοι είναι συνδεδεµένοι στο δίκτυο. Τέλος, κάθε κόµβος όταν ολοκληρώσει όσα ήθελε να κάνει, αποσυνδέεται από το σύστηµα. Σηµειώνουµε ότι υπάρχει και η περίπτωση της «βίαιης» αποσύνδεσης του κόµβου, η οποία δε γίνεται κατόπιν δικής του επιλογής, αλλά λόγω κάποιου άλλου εξωτερικού γεγονότος. Από την παραπάνω περιγραφή, την οποία θα µπορούσαµε να ονοµάσουµε και «κύκλο ζωής» ενός P2P κόµβου, φαίνονται και οι βασικές λειτουγίες ενός P2P αλγορίθµου. Συνοπτικά, οι λειτουργίες αυτές είναι οι εξής:! Join: Έτσι ονοµάζεται η λειτουργία αρχικοποίησης µε την οποία ένας κόµβος συνδέεται µε ένα P2P δίκτυο.! Lookup: Έτσι ονοµάζεται η λειτουργία αναζήτησης δεδοµένων.! Stabilize: Έτσι ονοµάζεται η λειτουργία µε την οποία ένας κόµβος ενηµερώνεται για τους γειτονικούς του κόµβους. Καθώς οι κόµβοι συνεχώς συνδέονται και αποσυνδέονται, συνεχώς πρέπει να ανανεώνονται και οι πληροφορίες που χρειάζεται κάθε κόµβος προκειµένου να διασφαλίζεται η ορθότητα του αποτελέσµατος της αναζήτησης. Η Stabilize έχει ιδιαίτερη σηµασία καθώς είναι η λειτουργία που εξασφαλίζει το αναλλοίωτο ενός P2P συστήµατος. ηλαδή, φροντίζει ώστε το κάθε σύστηµα να διατηρεί κάποια χαρακτηριστικά χωρίς τα οποία δεν είναι δυνατό να λειτουργήσει σωστά. Για παράδειγµα, στο Chord η Stabilize φροντίζει κάθε κόµβος να γνωρίζει πάντα τον επόµενο και τον προηγούµενό του, καθώς µόνο έτσι είναι δυνατό να γίνει αναζήτηση.! Disconnect/ Depart: Έτσι ονοµάζεται η αποσύνδεση ενός κόµβου από το P2P δίκτυο. Κάποια συστήµατα ορίζουν ειδικές διαδικασίες που λαµβάνουν χώρα µε Μαρία Η. Κατσούφη 10
12 την αποσύνδεση ενός κόµβου, ενώ κάποια άλλα θεωρούν, κατά κάποιο τρόπο, τη λειτουργία αυτή σαν µέρος της Stabilize. Κάθε P2P σύστηµα ορίζει τους δικούς του κανόνες για τον τρόπο µε τον οποίο πραγµατοποιούνται οι παραπάνω λειτουργίες. 1.3 Το Πρόβληµα Της Αναζήτηςης Στα P2P Συστήµατα Το πρόβληµα της αναζήτηςης (Lookup) [7] ορίζεται ώς εξής: Με δεδοµένο ότι ένα πακέτο δεδοµένων Χ είναι αποθηκευµένο σε κάποιους κόµβους του συστήµατος, βρες αυτό το Χ. Το πρόβληµα αυτό είναι κοινό σε όλα τα P2P συστήµατα. Ο τρόπος µε τον οποίο επιλέγεται να αντιµετωπιστεί ορίζει και κάποιες κατηγορίες στις οποίες θα µπορούσαµε να εντάξουµε τα P2P συστήµατα. 1) Αναζήτηση µε τη βοήθεια κεντρικού server: Στην προσέγγιση αυτή η αναζήτηση γίνεται µε τη βοήθεια ενός κεντρικού server. Αυτός λειτουργεί σαν µία βάση δεικτών που αντιστοιχεί τα διαθέσιµα δεδοµένα στους κόµβους στους οποίους υπάρχουν. Ωστόσο, η εξάρτησή του συστήµατος από κεντρικούς servers το καθιστούν ευάλωτο καθώς, σε περίπτωση επίθεσης σε αυτούς, καταρρέει και όλο το υπόλοιπο P2P σύστηµα. Ένα τέτοιο παράδειγµα είναι το Napster που ήταν και το πρώτο P2P σύστηµα, που παρουσιάστηκε και χρησιµοποιήθηκε ευρέως για την ανταλλαγή µουσικών αρχείων. 2) Προσέγγιση µε broadcast: Σ αυτήν την περίπτωση, δεν υπάρχει κανένα είδος ιεραρχίας. Κατά την αναζήτηση, όλοι οι κόµβοι θεωρούνται ισότιµοι και αυτοοργανώνονται. Η αναζήτηση γίνεται µε broadcasting. Έστω για παράδειγµα ότι ένας κόµβος Α ψάχνει για το X. Τότε, στέλνει µία αίτηση αναζήτησης σε όλους τους γείτονικούς του κόµβους και αυτοί µε τη σειρά τους σε όλους τους γειτονικούς τους κόµβους κ.ο.κ. Η προσέγγιση αυτή, λόγω του µεγάλου πλήθους µηνυµάτων που εισάγει στο δίκτυο δηµιουργεί µεγάλο φόρτο και καταναλώνει πολύτιµο εύρος ζώνης (bandwidth) περιορίζοντας τις δυνατότητες κλιµάκωσης (scaling) του συστήµατος. Παράδειγµα τέτοιου συστήµατος είναι το Gnutella. 3) Περιορισµένο broadcasting Μερική Ιεραρχία: Αυτό το σχήµα, για να περιορίσει την κίνηση που προκαλεί το broacasting, θεωρεί δύο κατηγορίες κόµβων: τους κοινούς κόµβους και τους supernodes. Με κάθε supernode συνδέονται απλοί κόµβοι. Σε γενικές γραµµές, η βασική ιδέα στην οποία βασίζεται η αναζήτηση είναι ότι µία αίτηση αναζήτησης που υποβάλλει ένας απλός κόµβος στέλνεται µόνο στους κόµβους που είναι συνδεδεµένοι στο ίδιο supernode. Παράδειγµα τέτοιων συστηµάτων είναι το FastTrack, το Gnutella2 και άλλα. 4) Distributed Hash Table (DHT) - οµηµένοι Αλγόριθµοι: Αυτή η κατηγορία αποτελεί τη «νέα γενιά» αλγορίθµων. Ένας πίνακας κατακερµατισµού (Hash Table) αποθηκεύει ζευγάρια της µορφής (κλειδί, τιµή), και η ανάκτηση µιας αποθηκευµένης τιµής γίνεται µε βάση το κλειδί. Ένας κατανεµηµένος πίνακας κατακερµατισµού (DHT) κάνει ότι κάνει και ένας πίνακας κατακερµατισµού, µε τη διαφορά ότι ο πίνακας δε βρίσκεται σε έναν κόµβο, αλλά είναι κατανεµηµένος σε όλους τους κόµβους του δικτύου. ηλαδή, σε κάθε κόµβο αποθηκεύονται Μαρία Η. Κατσούφη 11
13 ζευγάρια (κλειδί, τιµή). Η αναζήτηση µιας τιµής γίνεται µε βάση ένα κλειδί. Παραδείγµατα συστηµάτων που βασίζονται σε DHT είναι το Chord, CAN, το Kademlia και άλλα. 1.4 P2P Αλγόριθµοι Ακολουθεί η παρουσίαση κάποιων χαρακτηριστικών P2P αλγόριθµων: Gnutella Το Gnutella [4, 5, 12], είναι ένα κατανεµηµένο σύστηµα για αναζήτηση και διαµοιρασµό πληροφορίας. Η αρχιτεκτονική του βασίζεται στην σύνδεση πολλών ανεξάρτητων κόµβων. Οι κόµβοι αυτοί συνδέονται µεταξύ τους µε TCP συνδέσεις και είναι όλοι ισότιµοι. Κάθε κόµβος προσφέρει κάθε είδος και όσα αρχεία επιθυµεί ο χρήστης. Αυτά γίνονται διαθέσιµα σε οποιονδήποτε συνδεθεί στο P2P δίκτυο. Κάθε κόµβος είναι συγχρόνως και server και client, και γι αυτό ονοµάζεται servent. Κάθε κόµβος συνδέεται απευθείας µε ένα σύνολο κόµβων (γειτονικοί κόµβοι), οι οποίοι θα λέµε ότι απέχουν από αυτόν ένα hop. Μηνύµατα Το πρωτόκολλο Gnutella ορίζει τον τρόπο µε τον οποίο επικοινωνούν οι servents µεσω του δικτύου. Συγκεκριµένα, ορίζονται πέντε είδη µηνυµάτων τα οποία ανταλλάσσονται προκειµένου να γίνουν οι βασικές λειτουργίες που γίνονται σε ένα P2P σύστηµα. Κατηγορίες Μηνυµάτων Τα µηνύµατα που ανταλλάσσονται µπορούν να υπαχθούν στις παρακάτω κατηγορίες:! Μηνύµατα Σύνδεσης Ping - Pong o Ping: Ένα µήνυµα ping αποτελείται µόνο από επικεφαλίδα. o Pong: Περιέχει επικεφαλίδα, ενώ στο κυρίως µήνυµα περιλαµβάνονται πληροφορίες όπως η IP διεύθυνση και το port του κόµβου που το στέλνει καθώς και τον αριθµό και το συνολικό µέγεθος των αρχείων που µοιράζεται.! Μηνύµατα Αναζήτησης o Query: Το µήνυµα αυτό αποτελείται από επικεφαλίδα και το κυρίως µήνυµα στο οποίο περιλαµβάνονται τα κριτήρια της αναζήτησης, καθώς και η ελάχιστη ταχύτητα µε την οποία ο παραλήπτης πρέπει να απαντήσει. o QueryHit: Στέλνεται σαν απάντηση σε ένα Query. Στην επικεφαλίδα, το ID του µηνύµατος πρέπει να είναι ίδιο µε αυτό του Query στο οποίο απαντά. Το κυρίως µήνυµα περιλαµβάνει την IP διεύθυνση, το port και την ταχύτητα του κόµβου που στέλνει το µήνυµα. Επιπλέον, περιλαµβάνει πληροφορίες για το αρχείο που του ζητήθηκε, όπως το όνοµα, το µέγεθος και ένα αναγνωριστικό του αρχείου. Τέλος, περιέχεται και ένα αναγνωριστικό που καθορίζει µοναδικά τον κόµβο-αποστολέα µέσα στο δίκτυο, που χρησιµοποιείται για το Push.(βλ.: Μηνύµατα για τη Μεταφορά Αρχείων: push). Μαρία Η. Κατσούφη 12
14 ! Μηνύµατα για τη Μεταφορά Αρχείων o Push: Τα µηνύµατα Push διαχειρίζονται θέµατα firewall. Συγκεκριµένα, αν ο κόµβος που έστειλε το QueryHit και έχει το ζητούµενο αρχείο βρίσκεται πίσω από firewall, τότε ο κόµβος που έστειλε το Query δεν µπορεί να δηµιουργήσει σύνδεση µε αυτόν και να κατεβάσει το αρχείο. Σ αυτήν την περίπτωση στέλνει ένα µήνυµα Push, προκειµένου να δηµιουργήσει ο άλλος µία TCP σύνδεση µαζί του και να µπορέσει έτσι να κατεβάσει το αρχείο. Περιλαµβάνει ένα αναγνωριστικό, που καθορίζει µοναδικά τον κόµβο-αποστολέα µέσα στο δίκτυο (που λαµβάνεται από το QueryHit), το αναγνωριστικό του αρχείου που θέλουµε να κατεβάσουµε, και την IP διεύθυνση και το port του κόµβου που στέλνει το Push. (Σηµειώνουµε ότι ένας κόµβος απαντάει σε ένα µήνυµα Push µόνο αν το αναγνωριστικό του κόµβου που περιλαµβάνεται στο Push και αυτού που περιλαµβάνεται στο QueryHit ταυτίζονται). Παρατηρήσεις:! Τα µηνύµατα Pong, QueryHit και Push ακολουθούν πάντα την ίδια διαδροµή µε τα αντίστοιχα αρχικά Ping, Query και Get. Αυτό εγγυάται ότι µόνο οι servents από τους οποίους πέρασαν τα αρχικά µηνύµατα θα δούν τις απαντήσεις. Έτσι, αν για παράδειγµα ένας servent δεχτεί ένα µήνυµα QueryHit µε ID = n, χωρίς όµως να έχει προηγουµένως λάβει ένα Query µε ID = n, θα πρέπει να απορρίψει το µήνυµα αυτό.! Ένας servent θα προωθήσει ένα εισερχόµενο µήνυµα, ένα Ping για παράδειγµα, σε όλους τους γείτονές του εκτός από αυτόν που του έστειλε το µήνυµα.! Αν ένας servent δεχτεί δύο φορές το ίδιο µήνυµα, δεν το προωθεί ξανά για λόγους οικονοµίας bandwidth. Τα παραπάνω επιτυγχάνονται ως εξής: Όπως αναφέρθηκε και προηγουµένως (βλ. Κατηγορίες µηνυµάτων), στα µηνύµατα Query και Pong δεν περιλαµβάνεται καµία διεύθυνση κόµβου παρά µόνο ένα αναγνωριστικό µηνύµατος (ID µηνύµατος). Κάθε κόµβος αποθηκεύει σε έναν πίνακα δροµολόγησης, µε κλειδί το αναγωριστικό αυτό, τη σύνδεση από την οποία έφτασε το αντίστοιχο µήνυµα. Με αυτόν τον τρόπο παρέχεται και µια σχετική ανωνυµία, καθώς σε αυτό το επίπεδο οι κόµβοι δε γνωριζουν καµία διεύθυνση. Επίσης, µε τη χρήση αυτών των πινάκων αποφεύγεται η προώθηση µηνυµάτων που έχουν ήδη προωθηθεί. Συγκεκριµένα, αν το ID ενός µηνύµατος που φτάνει σε έναν κόµβο υπάρχει ήδη στον πίνακα δεν ξαναστέλνεται. Τέλος, µε τον τρόπο αυτό, οι απαντήσεις των µηνυµάτων µπορούν να ακολουθήσουν την αντίστροφη διαδροµή: κάθε φορά ελέγχεται από ποια σύνδεση είχε προέλθει το αρχικό µήνυµα και προωθείται εκεί. οµή µηνυµάτων Επικεφαλίδα µηνυµάτων Byte Πεδίο ID Μηνύµατος PayLoad Μηνύµατος TTL Hops Payload Length Εικόνα 2: Επικεφαλίδα Μηνύµατος στο Gnutella Μαρία Η. Κατσούφη 13
15 ID Μηνύµατος: Αποτελείται από 16 bytes και ορίζει µοναδικά το µήνυµα στο δίκτυο. ηλαδή, δύο servents δεν µπορούν να παράγουν µηνύµατα µε το ίδιο ID (για κάποιο λογικό χρονικό διάστηµα). Αντίστοιχα, ένας servent δεν πρέπει να παράγει ένα µήνυµα µε το ίδιο ID. PayLoad Μηνύµατος: Ορίζεται το είδος του µηνύµατος, δηλαδή αν θα είναι για παράδειγµα ένα Query ή ένα Ping. TTL (Time To Live): Υποδεικνύει τον αριθµό των δροµολογήσεων του µηνύµατος πριν αποµακρυνθεί από το δίκτυο. Κάθε servent από τον οποίο περνάει το µήνυµα, µειώνει την τιµή του πεδίου κατά ένα και το προωθεί στον επόµενο κόµβο. Όταν η τιµή του µηδενιστεί, το µήνυµα «απορροφάται» από το δίκτυο, δηλαδή, σταµατάει να προωθείται. Αυτό το πεδίο αποτελεί ουσιαστικά το µηχανισµό που εγγυάται την απόδοση του δικτύου περιορίζοντας κατά το δυνατό το φόρτο του δικτύου. Η αρχική του τιµή πρέπει να είναι τέτοια, ώστε να εγγυάται την απόδοση και συγχρόνως να αυξάνει την πιθανότητα εύρεσης του αρχείου. Μια ενδεικτική τιµή είναι το 7. Hops: Το πεδίο αυτό δηλώνει από πόσους servents έχει περάσει το µήνυµα. Το πεδίο αυτό συνδέεται µε το TTL πεδίο µε τη σχέση TTL(0) = TTL(i) + Hops(i), όπου TTL(i) και Hops(i) είναι οι τιµές των πεδίων όταν το µήνυµα έχει φτάσει στο Hop i. Κάθε servent από τον οποίο περνάει το µήνυµα, αυξάνει την τιµή του πεδίου κατά ένα και το προωθεί στον επόµενο κόµβο. Payload Length: Το µέγεθος του µηνύµατος. Περιλαµβάνεται στην επικεφαλίδα, έτσι ώστε ο servent που λαµβάνει το µήνυµα να ξέρει πότε θα λάβει το τελευταίο πακέτο. Σώµα µηνύµατος Το σώµα του µηνύµατος περιλαµβάνει το port και την IP διεύθυνση του κόµβου καθώς και άλλες πληροφορίες, ανάλογα µε το είδος του µηνύµατος. Για παράδειγµα, ένα Pong µήνυµα περιέχει το συνολικό αριθµό των αρχείων που µοιράζεται ο κόµβος, καθώς και το συνολικό µέγεθος των αρχείων αυτών. Βασικές λειτουργίες στο Gnutella Συνοπτικά, οι βασικές λειτουργίες του Gnutella είναι οι εξής: Λειτουργία Join Lookup Stabilize Έξοδος Κόµβου Περιγραφή Σύνδεση κόµβου µε το δίκτυο Αναζήτηση Ανακάλυψη νέων κόµβων Αποσύνδεση από το δίκτυο Ακολουθεί η περιγραφή των βασικών λειτουργιών του Gnutella: Join: Μπορούµε να θεωρήσουµε ότι η Join [13] χωρίζεται σε δύο φάσεις: Στη Bootstrap και στην Initial Stabilization. Για να συνδεθεί ένας κόµβος Α µε το Gnutella θα πρέπει σε πρώτη φάση να γνωρίζει έναν ή περισσότερους κόµβους, που είναι ήδη συνδεδεµένοι στο δίκτυο, ώστε να συνδεθεί µε αυτούς, και µέσω αυτών και µε το υπόλοιπο δίκτυο. Οι κόµβοι αυτοί είναι σχεδόν πάντα διαθέσιµοι και του στέλνουν µία λίστα µε διευθύνσεις Μαρία Η. Κατσούφη 14
16 κόµβων που είναι συνδεδεµένοι. Σε δεύτερη φάση, αφού ο κόµβος έχει συνδεθεί µε το δίκτυο, στέλνει µήνυµατα ping για να ενηµερώσει τους υπόλοιπους κόµβους για την ύπαρξη του. Όταν ένας κόµβος λάβει ένα µήνυµα ping, το µεταβιβάζει στους γείτονές του και στέλνει σαν απάντηση ένα µήνυµα pong. Έτσι ο Α αυξάνει την πληροφορία του για τους κόµβους που είναι συνδεδεµένοι στο δίκτυο και µπορεί να συνδεθεί απευθείας µε αυτούς. Hotcache Server π.χ gnutellahosts.com Ζητά και παίρνει ένα σύνολο διαθέσιµων κόµβων! Σύνδεση µε το δίκτυο ίκτυο Gnutella Servent A Εικόνα 3: Join στο Gnutella [22] ίκτυο Gnutella N 1 PING 2 PONG Servent p Εικόνα 4: Initial Stabilization Stabilize [13] Servent p2 Lookup: Η αναζήτηση γίνεται µε την αποστολή ενός Query σε όλους του γείτονες του κόµβου (broadcast). Κάθε ένας από αυτούς ελέγχει αν διαθέτει τη ζητούµενη πληροφορία. Αν την έχει, τότε απαντάει στέλνοντας ένα QueryHit µήνυµα στον αποστολέα του Query. Παράλληλα, προωθεί το Query στους υπόλοιπους γείτονες του και αυτοί στους δικούς τους. Κάθε κόµβος από τον οποίο περνάει το µήνυµα µειώνει το TTL του µηνύµατος. Το µήνυµα προωθείται µέχρι να µηδενιστεί το TTL του. Μαρία Η. Κατσούφη 15
17 Εικόνα 5: Lookup P: Peer Q: Query R: QueryHit D: Download [2] Stabilize: Κάθε κόµβος, άπαξ και συνδεθεί µε το δίκτυο, στέλνει περιοδικά µηνύµατα Ping για να ανακαλύψει νέους κόµβους που συνδέθηκαν στο δίκτυο και να «δηλώσει» ότι είναι ακόµα συνδεδεµένος. Αυτό γίνεται και πάλι µε broadcast. Αν δε λάβει απάντηση Pong από κάποιον κόµβο, τότε συµπεραίνει ότι ο κόµβος αυτός αποσυνδέθηκε. Disconnect/ Depart: Ο χειρισµός της εξόδου των κόµβων από το δίκτυο δεν αποτελεί ιδιαίτερη περίπτωση. Απλά, όταν ένας κόµβος αποσυνδέεται από το δίκτυο κρατάει µία λίστα µε τους κόµβους µε τους οποίους ήταν συνδεδεµένος για να τη χρησιµοποιήσει την επόµενη φορά που θα συνδεθεί. Συνολική αποτίµηση Gnutella Το Gnutella είναι ένα πολύ απλό και ανθεκτικό σύστηµα που µπορεί να προσαρµόζεται δυναµικά στην συνεχή είσοδο και έξοδο κόµβων από το δίκτυο. Οι δυνατότητες κλιµάκωσής του είναι της τάξης των δεκάδων χιλιάδων κόµβων, αλλά µε µικρές τροποποιήσεις µπορεί να φτάσει τους 500,000 κόµβους. Ωστόσο, παρουσιάζει κάποια βασικά µειονεκτήµατα. Ένα από αυτά είναι ότι µε το να στέλνονται οι αιτήσεις αναζήτησης σε όλους τους γειτονικούς κόµβους δηµιουργείται πολύ µεγάλος φόρτος. Μάλιστα, η κίνηση που παράγεται από ένα Query µεγαλώνει εκθετικά, όσο σπανιότερο είναι αυτό που ψάχνουµε. Επίσης, καθώς δεν επιβάλλεται η συνεισφορά δεδοµένων από τους χρήστες του συστήµατος, το µεγαλύτερο ποσοστό χρηστών επιλέγει να µη συνεισφέρει πληροφορία και να παρατηρείται το φαινόµενο των free-riders, δηλαδή κόµβων που χρησιµοποιούν το δίκτυο χωρίς να προσφέρουν καθόλου. Ακόµα, στο Gnutella δεν µπορούν να δοθούν εγγυήσεις για το χρόνο απόκρισης σε µία αίτηση αναζήτησης, αλλά ούτε και για την εύρεση του αρχείου, αν αυτό υπάρχει. ηλαδή, ένα αρχείο µπορεί, παρόλο που υπάρχει στο δίκτυο, να µη βρεθεί. Τέλος, η τοπολογία του δικτύου που σχηµατίζεται είναι άγνωστη. Ωστόσο, πολλοί υποστηρίζουν ότι έχει power law χαρακτηριστικά. Gnutella2 Το Gnutella2 [6] είναι ένα κατανεµηµένο σύστηµα για αναζήτηση και διαµοιρασµό πληροφορίας. Η αρχιτεκτονική του βασίζεται στην σύνδεση πολλών ανεξάρτητων κόµβων. Οι κόµβοι αυτοί συνδέονται µεταξύ τους µε TCP ή UDP συνδέσεις, ανάλογα µε το είδος των πακέτων που πρόκειται να µεταφερθούν. Σε αντίθεση µε το Gnutella, οι Μαρία Η. Κατσούφη 16
18 κόµβοι δεν είναι όλοι ισότιµοι µεταξύ τους. Υπάρχουν δύο ειδών κόµβοι: οι κόµβοι-hubs και οι κόµβοι-φύλλα (Εικόνα 6). Και οι δύο κόµβοι προσφέρουν κάθε είδος και όση ποσότητα αρχείων επιθυµούν. Εικόνα 6: Gnutella2 Κόµβοι-φύλλα: Σε αυτήν την κατηγορία ανήκουν οι περισσότεροι κόµβοι που συνδέονται µε το δίκτυο. Θεωρούνται ότι βρίσκονται «στην άκρη» του δικτύου. Χαρακτηρίζονται από περιορισµένο bandwidth, CPU και RAM, χαµηλό ή απρόβλεπτο χρόνο παραµονής στο δίκτυο και αδυναµία να υποστηρίξουν πολλές συνδέσεις TCP ή UDP. Οι κόµβοι αυτοί συνδέονται µε 3 κόµβους-hubs. Θα µπορούσαµε να πούµε ότι είναι σαν τους κόµβους του Gnutella. Κόµβοι-hubs: Σε αυτήν την κατηγορία ανήκουν κόµβοι, που πληρούν κάποιες προϋποθέσεις και αναλαµβάνουν επιπλέον ευθύνες. Τα κριτήρια επιλογής τους είναι τα εξής: Κατάλληλο λειτουργικό σύστηµα που να µπορεί να υποστηρίξει µεγάλο αριθµό sockets, να είναι διαθέσιµοι για τουλάχιστον 2 ώρες, να έχουν επαρκές bandwidth, CPU και RAM και να µπορούν να υποστηρίξουν πολλές TCP ή UDP συνδέσεις. Οι κόµβοι αυτοί συνδέονται και µεταξύ τους σχηµατίζοντας ένα δίκτυο από hubs το οποίο ονοµάζουµε hub cluster. Κάθε hub συνδέεται µε 5 έως 30 άλλους hubs, ανάλογα µε το µέγεθος του δικτύου. Οι κόµβοι-hubs που ανήκουν στο ίδιο hub cluster, κρατάνε διάφορα στοιχεία ο ένας για τον άλλον και ανταλλάσσουν συνεχώς πληροφορίες σχετικά µε το φόρτο του δικτύου καθώς και άλλα χρήσιµα στατιστικά. Σε κάθε hub συνδέονται 300 µε 500 κόµβοι-φύλλα (ανάλογα µε τις δυνατότητες του). Ένα hub cluster είναι η µικρότερη περιοχή στην οποία µπορεί να γίνει αναζήτηση. Οι κόµβοι hubs επιφορτίζονται µε κάποιες επιπλέον ευθύνες:! Κρατάνε πληροφορίες για τα γειτονικά τους hubs µέσα στο hub-cluster και για τα γειτονικά hub-clusters και ενηµερώνουν τους γείτονές τους για αλλαγές.! ιατηρούν έναν πίνακα δροµολόγησης που αντιστοιχεί τα GUID των κόµβων σε TCP συνδέσεις.! Κρατάνε ένα Query Hash Table για κάθε φύλλο αλλά και κάθε hub µε το οποίο συνδέεται, έτσι ώστε να διαχειρίζονται έξυπνα τις αιτήσεις αναζήτησης (queries). Ένα Query Hash Table είναι ένας πίνακας που περιέχει πληροφορίες Μαρία Η. Κατσούφη 17
19 για το τι δεν έχει ένας κόµβος (ή οι απόγονοι του). Με αυτόν τον τρόπο µια αίτηση αναζήτησης δεν προωθείται σε κόµβους στους οποίους ξέρουµε ότι δεν υπάρχει αυτό που ψάχνουµε, και έτσι µειώνεται το κόστος αναζήτης.! Κρατάνε ένα Συγκεντρωτικό (Aggregate) Query Hash Table στο οποίο αποθηκεύονται τα περιεχόµενα του ίδιου αλλά και όλων των κόµβων-φύλλων (όχι των hubs) που είναι συνδεδεµένοι µε αυτόν (µέσω των Query Hash Tables των κόµβων φύλλων), ώστε να να είναι σε θέση να παρέχουν πληροφορίες για το περιεχόµενο των φύλλων τους στους γειτονικούς hubs. Με τους πίνακες αυτούς, γίνεται ένα αποτελεσµατικό φιλτράρισµα των αιτήσεων, ώστε να µην προωθούνται σε κόµβους στους οποίους ξέρουµε ότι δεν θα πάρουµε αποτέλεσµα. Κάθε φορά που γίνεται κάποια αλλαγή στο περιεχόµενο του ίδιου του κόµβου ή των φύλλων του, ο πίνακας αυτός πρέπει να δηµιουργείται ξανά.! Παρακολουθούν και αποφασίζουν αν κάποιος κόµβος-hub πρέπει να υποβαθµιστεί σε κόµβο-φύλλο. Τέλος, κάθε κόµβος Gnutella2 έχει ένα Known Hub Cache στο οποίο κρατάει πληροφορίες (διεύθυνση κόµβου, χρόνο τελευταίας εµφάνισης και άλλα) για όλους τους κόµβους-hub που ξέρει. Χρησιµοποιείται σε διάφορες περιπτώσεις, όπως για παράδειγµα στην αναζήτηση. Το Hub Cluster Cache κρατάει πληροφορίες για τους γειτονικούς hubs και τους γείτονες των γειτονικών hubs, δηλαδή για κάθε hub που βρίσκεται από ένα έως δύο hops µακρυά. Είναι χρήσιµο κυρίως στους κόµβους hubs ενώ στους κόµβους-φύλλα έχει ρόλο καθαρά πληροφοριακό. Κατηγορίες µηνυµάτων - πακέτων Το πρωτόκολλο Gnutella2 ορίζει τον τρόπο µε τον οποίο επικοινωνούν οι κόµβοι µεταξύ τους. Τα πακέτα αυτά µπορούν να υπαχθούν στις παρακάτω κατηγορίες:! Μηνύµατα Σύνδεσης o Ping /PI: Ένα πακέτο ping στέλνεται προκειµένου να διαπιστωθεί αν ο παραλήπητης του είναι ακόµα συνδεδεµένος και µπορεί να λάβει δεδοµένα, αλλά και αν ο ίδιος ο αποστολέας µπορεί να λάβει δεδοµένα µέσω UDP από κάποιον µε τον οποίο δεν είναι συνδεδεµένος. Στο σώµα του µηνύµατος, ανάλογα µε το σκοπό για τον οποίο αποστέλλονται, µπορεί να περιέχονται κάποια πακέτα, ή τίποτα. o Pong /PO: Ένα Pong στέλνεται ώς απάντηση σε ένα Ping. Στο σώµα του µηνύµατος µπορεί να περιέχονται κάποια πακέτα, ανάλογα µε το σκοπό για τον οποίο αποστέλλονται.! Μηνύµατα Αναζήτησης o Gnutella2 Query /Q2: Με την αποστολή ενός τέτοιου πακέτου ξεκινά µία αναζήτηση. Περιέχει πληροφορίες, όπως τα κριτήρια της αναζήτησης, το GUID του αποστολέα, στοιχεία για αυθεντικοποίηση και άλλα. Όταν λαµβάνεται ένα τέτοιο πακέτο, γίνεται καταρχήν ο έλεγχος για αυθεντικοποίηση, και στη συνέχεια, αν ο παραλήπητης είναι φύλλο ή το έλαβε µέσω UDP, το προωθεί σε όλους τους κόµβους που είναι συνδεδεµένοι µε αυτόν. Αν ο παραλήπτης είναι hub, το προωθεί µόνο στα φύλλα που είναι συνδεδεµένα µε αυτόν. Μαρία Η. Κατσούφη 18
20 o Query Acknowledgement /QA: Όταν ένας κόµβος λάβει ένα /Q2, στέλνει ένα /QA για να ενηµερώσει τον αποστολέα ότι η αίτησή του έφτασε σε ένα hub και προωθείται. Επιπλέον, περιλαµβάνει µία λίστα µε τους άµεσα γειτονικούς κόµβους hubs στους οποίους προωθήθηκε η αρχική αίτηση (ώστε να µην ξαναερωτηθούν), αλλά και τους κόµβους-hubs δεύτερου βαθµού. Με αυτόν τον τρόπο αυξάνεται και η γνώση τoυ αποστολέα για τους hubs που µπορεί να ρωτήσει στο µέλλον, αν θέλει να συνεχίσει την αναζήτηση. o QueryHit /QH2: Στο πακέτο αυτο περιλαµβάνονται αποτελέσµατα, καθώς και όλες οι απαραίτητες πληροφορίες για να κατεβάσει το αρχείο. Περιλαµβάνει πάντα το πακέτο /GU το οποίο περιέχει το GUID του κόµβου στον οποίο βρίσκεται το αποτέλεσµα, το πακέτο /NA (Node Address) που περιέχει τη διεύθυνση του κόµβου, και άλλα προαιρετικά πακέτα.! Μηνύµατα για τη Μεταφορά Αρχείων Push: Τα µηνύµατα push διαχειρίζονται θέµατα firewall.! Μηνύµατα για Ασφάλεια κατά την αναζήτηση o Query Key Request /QKR: Ένας κόµβος Α, πριν στείλει ένα /Q2 σε έναν κόµβο- hub, του στέλνει ένα /QKR. Ζητά δηλαδή ένα κλειδί (query key)το οποίο θα σχετίζεται µόνο µε τον ίδιο (µε τη διεύθυνσή του) και τον κόµβο hub. o Query Key Answer /QKA: Όταν ένας hub λάβει ένα /QKR απαντάει µε ένα /QKA. Στο πακέτο αυτό περιλαµβάνεται το query key. Ο Α θα το συµπεριλάβει στο /Q2. Όταν ο hub λαµβάνει ένα /Q2 ελέγχει το query key. Αν αυτό ταιριάζει µε αυτό που είχε στείλει, απαντάει. ιαφορετικά απορρίπτει το µήνυµα. Με αυτόν τον τρόπο µειώνεται η κίνηση που προκαλείται από µία αίτηση αναζήτησης, καθώς απαντάει µόνο ο hub στον οποίο προοριζόταν η αίτηση.! Μηνύµατα Ενηµέρωσης o Local Node Informarion /LNI: Κόµβοι οι οποίοι συνδέονται µε TCP στέλνουν ένα τέτοιο πακέτο για να ενηµερώσουν ο ένας τον άλλο για αλλαγές. Τα πακέτα-παιδιά που µπορεί να περιλαµβάνει είναι /GU για να ενηµερώσει για αλλαγή στο GUID του, /NA (Node Address) για αλλαγή στη διεύθυνση, /HS (Hub Status) που αποστέλεται µόνο µεταξύ hubs και ενηµερώνει για την κατάσταση του αποστολέα-hub, και άλλα. o Known Hub List /KHL: Στέλνεται σε τακτά χρονικά διαστήµατα µέσω TCP µεταξύ hubs ή µεταξύ hubs και φύλλων (και αντίστροφα), για να έχουν όλοι όσοι συµµετέχουν στο cluster µία ενηµερωµένη εικόνα του. o Query Hash Tables /QHT: Στέλνεται όταν αλλάζει ο Συγκεντρωτικός Πίνακας ή ένα Query Hash Table. Όταν ένα hub λάβει ένα τέτοιο πακέτο πρέπει να ενηµερώσει τους πίνακες του και να το προωθήσει στους γειτονικούς hubs του cluster του. οµή Πακέτων-Μηνυµάτων Τα πακέτα στο Gnutella2 έχουν δενδρική µορφή. Κάθε πακέτο µπορεί να περιλαµβάνει δεδοµένα ή/και άλλα πακέτα-παιδιά. Μαρία Η. Κατσούφη 19
21 Ε π ι κ ε φ α λ ί δ α (12 Bytes) Byte ελέγχου Μήκος Όνοµα πακέτου εδοµένα ή/ και πακέτα-παιδιά Εικόνα 7: Επικεφαλίδα Μηνυµάτων στο Gnutella2 Κάθε πακέτο περιλαµβάνει:! Επικεφαλίδα o Byte Ελέγχου: (1 Byte) Έχει πάντα µή µηδενική τιµή. Όταν είναι 0 υποδεικνύει το τέλος µιας ροής πακέτων. o Μήκος: (0-3 Bytes) Πρόκειται για το συνολικό µέγεθος των δεδοµένων του πακέτου. ηλαδή, στην τιµή του περιλαµβάνεται και το µέγεθος των πακέτων-παιδιών (αν υπάρχουν), αλλά όχι της επικεφαλίδας. o Όνοµα πακέτου: (1-8 Bytes) Για παράδειγµα /Q2, όταν πρόκειται για µια αίτηση αναζήτησης.! Σώµα o εδοµένα: Τα δεδοµένα που περιέχονται στο πακέτο. Υπάρχουν µόνο όταν το Byte Ελέγχου είναι διαφορετικό του 0. o Πακέτα-παιδιά: Έχουν την ίδια ακριβώς δοµή µε τα γονικά πακέτα. Βασικές λειτουργίες στο Gnutella2 Οι βασικές λειτουργίες στο Gnutella2 γίνονται ως εξής: Join: Έστω ότι ο κόµβος Α θέλει να συνδεθεί στο δίκτυο. ηµιουργεί µία TCP σύνδεση µε κάποιον γνωστό hub και στη συνέχεια ακολουθεί µια διαδικασία handshake 3 βηµάτων. Σηµειώνουµε ότι η διαδικασία είναι ίδια µε αυτή του πρωτοκόλλου Gnutella 0.6. Αρχικά, ο Α στέλνει ένα GNUTELLA CONNECT/0.6 πακέτο το οποίο περιλαµβάνει διάφορες πληροφορίες, όπως τη διεύθυνσή του και αν µπορεί να λειτουργήσει σαν hub ή απλό φύλλο. Ο hub απαντάει στον Α µε ένα πακέτο στο οποίο του λέει αν µπορεί να τον δεχτεί, καθώς και το αν θα τον συνδέσει σαν φύλλο ή hub. Στο τρίτο βήµα ο Α απαντάει αν αποδέχεται τη σύνδεση αυτή. Lookup: Η αναζήτηση γίνεται και εδώ µε την αποστολή ενός Query (/Q2), µε τη διαφορά ότι αυτό δεν προωθείται συνεχώς µέσα στο δίκτυο σε βάθος που καθορίζει το TTL, όπως στο Gnutella, καθώς στο Gnutella2 δεν υπάρχει TTL. Θα µπορούσαµε να πούµε ότι είναι σαν να κάνουµε αναζήτηση στο Gnutella µε TTL= 2. ηλαδή το Query προωθείται µόνο στον κόµβο-hub και στους κόµβους-φύλλα που ανήκουν στον hub αυτό. Έστω για παράδειγµα ότι ο κόµβος-φύλλο Α θέλει να υποβάλλει ένα Query. Επιλέγει έναν κόµβο-hub µε τον οποίο είναι συνδεδεµένος (από τη Known hub Cache), ο οποίος δεν έχει ερωτηθεί ακόµα στα πλαίσια αυτής της αναζήτησης και µε τον οποίο δεν έχει επικοινωνήσει πρόσφατα (έστω Η) και του στέλνει το (keyed) Query ( καθώς έχει προηγηθεί η ανταλλαγή µηνυµάτων /QKR- /QKA). Ο Η, µόλις το λάβει, το εξετάζει ώς προς την εγκυρότητά του και απαντά στον Α µε ένα QureyAcknowledgment (/QA). Το µήνυµα αυτό περιλαµβάνει µία λίστα µε τους γειτονικούς κόµβους-hubs του Η, οι οποίοι «ψάχτηκαν», και µία µε τους κόµβους-hubs που βρίσκονται 2 hops µακριά από τον Η και οι οποίοι δεν «ψάχτηκαν» σε αυτήν τη φάση. Ο Α προσθέτει την πρώτη λίστα στους Μαρία Η. Κατσούφη 20
22 κόµβους που δεν πρέπει να ξαναψάξει και τη δεύτερη στη Known Hub Cache (για µελλοντική χρήση). Εν τω µεταξύ, ο Η εξετάζει το Query για να ελέγξει αν το έχει λάβει ξανά στο παρελθόν. Αν το έχει ξαναλάβει, το απορρίπτει. ιαφορετικά, κοιτά το Query Hash Table για να βρει ποιοι κόµβοι θα µπορούσαν να ικανοποιήσουν το Query και τους το προωθεί. Παράλληλα, εξετάζει και ο ίδιος τοπικά το Query για να δει αν µπορεί να απαντήσει. Αν το έχει, επιστρέφει το αποτέλεσµα. Το ίδιο κάνουν και οι κόµβοι-φύλλα. Αυτοί µπορούν να επιλέξουν αν θα στείλουν οι ίδιοι απευθείας την απάντηση ή θα επιφορτίσουν τον H να το κάνει. Οι υπόλοιποι κόµβοι-hubs του cluster εξετάζουν αν έχουν ξαναλάβει το Query. Αν όχι, κοιτούν το Query Hash Table τους για να βρούν ποιοι κόµβοι-φύλλα θα µπορούσαν να ικανοποιήσουν το Query και το προωθούν σε αυτούς. εν στέλνουν QureyAcknowledgment, ούτε προωθούν το Query στους γειτονικούς τους κόµβους-hubs. Οι κόµβοι-φύλλα και ο κόµβος-hub στέλνουν τα αποτελέσµατά τους. Ο Α παίρνει τις απαντήσεις και αποφασίζει αν θα συνεχίσει να ψάχνει (και πέρα από το hub cluster) αξιοποιώντας τις πληροφορίες για νέους hubs που συνέλλεξε. Αποδεικνύεται ότι η πολυπλοκότητα της αναζήτησης στο Gnutella2 είναι O( n ). Stabilize: Όταν ένας κόµβος δεν έχει λάβει για κάποιο διάστηµα κάποιο έγκυρο πακέτο από έναν κόµβο µε τον οποίο είναι συνδεδεµένος, ενεργοποιεί έναν keep- alive µηχανισµό στέλνοντάς του ένα Ping. Αν δε λάβει ένα απαντητικό µήνυµα Pong µέσα σε κάποιο χρονικό διάστηµα, κλείνει τη σύνδεση του. Παράλληλα, κάθε κόµβος στέλνει περιοδικά πακέτα /LNI (Local Node Information, /QHT (Query Hash Tables) και /KHL(Known Hub List). Οπότε, σε περίπτωση που κάποιος κόµβος αποσυνδεθεί, οι υπόλοιποι κόµβοι δε θα λάβουν από αυτόν πακέτα, και συνεπώς, δεν θα περιλαµβάνονται πληροφορίες για αυτόν στις ενηµερωµένες λίστες τους. Disconnect/ Depart: Όπως αναφέρθηκε και στη Stabilize, όταν ένας κόµβος αποσυνδεθεί, θα σταµατήσει να στέλνει πληροφορίες στους γειτονικούς του κόµβους, οπότε και θα σταµατήσει να περιλαµβάνεται στις λίστες µε τους διαθέσιµους κόµβους. Chord Το σύστηµα Chord [8] παρέχει µια κατανεµηµένη υπηρεσία εντοπισµού, η οποία επιτρέπει στις εφαρµογές την εισαγωγή, τον εντοπισµό και τη διαγραφή τιµών, χρησιµοποιώντας κλειδιά. Ανήκει στη «νέα γενιά» αλγορίθµων, µε πραγµατικά κατανεµηµένη αναζήτηση, καθώς υλοποιεί έναν Κατανεµηµένο Πίνακα Κατακερµατισµού (Distributed Hash Τable). Κάθε κόµβος που συµµετέχει στο Chord χαρακτηρίζεται από ένα κλειδί που προκύπτει µε κατακερµατισµό (hashing) του ζευγαριού (IP address, port) µε τον αλγόριθµο SHA-1. SHA-1 π. χ. ( , 6362) nodeid = 62 Ένα αντίστοιχο κλειδί δηµιουργείται και για κάθε πακέτο δεδοµένων. π. χ. key = A keyid = 62 Μαρία Η. Κατσούφη 21
23 Κάθε κόµβος διατηρεί έναν πίνακα δροµολόγησης (finger table) µε τις εξής πληροφορίες: τη διεύθυνση του προηγούµενου και του επόµενου κόµβου, που είναι και η πιο σηµαντική, καθώς και µία λίστα δεικτών προς επόµενους κόµβους. Κάθε καταχώρηση i του πίνακα περιέχει το αναγνωριστικό του πρώτου κόµβου, s, που διαδέχεται τον n σε απόσταση τουλάχιστον 2 i-1 πάνω στον αναγνωριστικό κύκλο (mod 2 m ), για 1 i m και έναν δείκτη στον προηγούµενο κόµβο. Επιπλέον, κρατάει και µία λίστα µε τους successors του, µήκους r = logn, όπου N το πλήθος των συνδεδεµένων κόµβων στο σύστηµα. Ο καταµερισµός των πακέτων στους κόµβους που συµµετέχουν στο δίκτυο γίνεται ώς εξής: Οι κόµβοι ανάλογα µε το κλειδί τους διατάσσονται σε ένα δακτύλιο. Ενα πακέτο δεδοµένων ανήκει σε ένα κόµβο, αν και µόνο αν το κλειδί του είναι µεγαλύτερο ή ίσο του κλειδιού του κόµβου και δεν υπάρχει άλλος κόµβος µε ενδιάµεσό τους κλειδί. Όπως αναφέρθηκε και παραπάνω, η i-οστή καταχώρηση του πίνακα ενός κόµβου n περιέχει το αναγνωριστικό του πρώτου κόµβου, s, που διαδέχεται τον n σε απόσταση τουλάχιστον 2 i-1 στον δακτύλιο. Ο κόµβος s (successor) αναφέρεται ως ο i-οστός δείκτης (finger) του κόµβου n. ηλαδή ισχύει s=successor(n+2 i-1 ) ενώ συµβολίζεται και µε n.finger[i].node.οπότε ο successor(k) είναι υπεύθυνος για το k. Τα παραπάνω φαίνονται στο παρακάτω σχήµα (Εικόνα 8). Εικόνα 8: ακτύλιος του Chord για τους κόµβους 0,1,3 ` Στην Εικόνα 8 παρουσιάζεται ένας δακτύλιος µε 3 κόµβους (m=3): 0, 1, 3. Σύµφωνα µε τα παραπάνω, θα ισχύει ότι successor(1)= 1,οπότε το κλειδί (keyid) µε τιµή 1 θα εντοπιζόταν στον κόµβο 1. Αντίστοιχα, το κλειδί µε τιµή 2 θα εντοπιζόταν στον 3 και το 6 στον 0. Με αυτή την προσέγγιση κάθε κόµβος αποθηκεύει πληροφορία για ένα µικρό αριθµό άλλων κόµβων, ενώ η πληροφορία που διατηρείται για άλλους κόµβους µειώνεται εκθετικά σε σχέση µε την απόσταση του από τους κόµβους αυτούς (δηλαδή κρατάει περισσότερες πληροφορίες για τους κοντινούς κόµβους). Αποδεικνύεται ότι αν έχουµε ένα σύνολο Ν κόµβων και Κ κλειδιών, ο κάθε κόµβος είναι υπεύθυνος για το πολύ (1+e)K/N κλειδιά, όπου e= O(logN). Το µέγεθος του κλειδιού πρέπει να είναι τέτοιο ώστε η πιθανότητα δύο κλειδιά να αντιστοιχούν στον ίδιο κόµβο να είναι πολύ µικρή. Μαρία Η. Κατσούφη 22
24 Στη συνέχεια παρουσιάζονται βασικές λειτουργίες του Chord. Συνοπτικά είναι οι εξής: Πίνακας 1: Βασικές Λειτουργίες Chord Λειτουργία Περιγραφή insert(key, value) Εισάγει το (key, value) σε r κόµβους lookup(key) Επιστρέφει την τιµή που σχετίζεται µε το κλειδί update(key, newval) Εισάγει το (key, newval) σε r κόµβους join(n) Συνδέει έναν νέο κόµβο µε τον κόµβο n (Join) leave() Αποσυνδέεται από το Chord Stabilize() Περιοδική ενηµέρωση προηγούµενου κόµβου Αναλυτικότερα: Insert: Όταν καλείται η insert(key, value), το ζευγάρι (κλειδί, τιµή) αποθηκεύεται σε r επιλεγµένους κόµβους. Η τιµή του r είναι µία παράµετρος του συστήµατος και καθορίζει τον επιθυµητό βαθµό πλεονασµού σε αυτό. Lookup: Με την κλήση της lookup(key) εντοπίζεται το ζευγάρι (κλειδί, τιµή) σε έναν κόµβο και επιστρέφεται η αντίστοιχη τιµή. Η αναζήτηση γίνεται µε χρήση της λίστας δεικτών. Αν ο τρέχων κόµβος έχει το κλειδί, το επιστρέφει. ιαφορετικά, βρίσκει τον κόµβο που είναι πλησιέστερα (αλλά πριν) από το δεδοµένο κλειδί από τη λίστα δεικτών του και του προωθεί την ερώτηση (αναδροµικά). Το πλήθος των µηνυµάτων που ανταλλάσσονται είναι O(log n). Ακολουθεί ο ψευδοκώδικας για τη lookup. // ask node n to find id s successor n. find_ successor (id) n = find_ predecessor (id); return n. successor; // ask node n to find id s predecessor n.find_ predecessor(id) n =_n; while (id (n, n. successor) n = n. closest_ preceding_ finger (id); return n0; // return closest finger preceding id n.closest_ preceding _finger(id) for i = m downto 1 if (finger[i].node (n, id)) return finger[i].node; return n; Μαρία Η. Κατσούφη 23
25 find_ successor: Βρίσκει τον αµέσως προηγούµενο κόµβο p από αυτόν που περιέχει το ζητούµενο id. Ο successor του p είναι αυτός που περιέχει το id. find_ predecessor: όταν ο n καλεί την find_ predecessor, ρωτάει µια σειρά κόµβων κατά µήκος του κύκλου. Έστω ότι ρωτάει τον n. Αν το ζητούµενο id πέφτει ανάµεσα στο id του n και του successor n, τότε επιστρέφεται το n. ιαφορετικά, ο n ρωτά τον n για τον κοντινότερο στο ζητούµενο id κόµβο που ξέρει. # Παράδειγµα lookup: Έστω ότι ο κόµβος µε nodeid= 3 ψάχνει για το keyιd=1. Όπως φαίνεται και στην Εικόνα 9, το 1 βρίσκεται στο κυκλικό διάστηµα [7, 3). Άρα ο 3 ελέγχει την τρίτη καταχώρηση του πίνακα δροµολόγησής του που του υποδεικνύει τον κόµβο 0. Επειδή το 0 προηγείται του 1, ο 3 θα ζητήσει από τον 0 να βρει τον successor του 1. Ο 0 βρίσκει από τον πίνακα δροµολόγησής του ότι ο successor του 1 είναι ο ίδιος ο 1, οπότε και το επιστρέφει. Εικόνα 9: Πίνακες ροµολόγησης - Finger Tables Update: Η ενηµέρωση του ζευγαριού (κλειδί, τιµή) γίνεται µε την update(key, value), αλλά µόνο από το δηµιουργό του συγκεκριµένου κλειδιού. Παρατηρούµε ότι η λειτουργία της διαγραφής ενός ζευγαριού πραγµατοποιείται µε χρήση της update. Join: Για την εισαγωγή ενός κόµβου στο σύστηµα. Ο νέος κόµβος συνδέεται µε έναν κόµβο του δικτύου. Αυτός, τον ενηµερώνει για το ποιος είναι ο επόµενός του. Στη συνέχεια ο νέος κόµβος καλεί τη Stabilize η οποία θα του χτίσει τη λίστα δεικτών του και θα ενηµερώσει τους υπόλοιπους για την ύπαρξή του. Ο αριθµός των κόµβων που χρειάζεται να ενηµερωθούν σε µια εισαγωγή είναι Ο(logn) ενώ για την εύρεση και την ενηµέρωσή τους απαιτείται (log 2 n). Σηµειώνουµε ότι, µε κάποιες τροποποιήσεις, ο χρόνος αυτός µπορεί να µειωθεί σε O(logn). Ακολουθεί ο ψευδοκώδικας για τη Join. // node n joins the network // node n is an arbitrary node in the network Μαρία Η. Κατσούφη 24
26 n.join(n ) predecessor = nil; successor = n.find_ successor(n); Leave (Disconnect/ Depart): Για την έξοδο ενός κόµβου από το δίκτυο. ιακρίνουµε δύο περιπτώσεις: Η πρώτη είναι η έξοδος ενός κόµβου λόγω αποτυχίας, και η άλλη, η ηθεληµένη έξοδος από το δίκτυο. Την πρώτη περίπτωση θεωρούµε ότι τη διαχειρίζεται η stabilize, όπως περιγράφεται παρακάτω, µε τη διατήρηση της λίστας µε successors. Στη δεύτερη περίπτωση, ο κόµβος που φεύγει µπορεί να µεταφέρει τα κλειδιά του στον επόµενό του, ή να ενηµερώσει τον προηγούµενό του για τον νέο επόµενο. Τα κλειδιά που µεταφέρονται είναι Ο(1/n). Stabilize: Σκοπός της λειτουργίας αυτής είναι να κρατά ενηµερωµένους τους δείκτες προς τους successors. Η ορθότητα των δεικτών αυτών εγγυάται την ορθότητα των πινάκων δροµολόγησης, και συνεπώς, και της lookup. Αν µια lookup γίνει αµέσως µετά από µία join η οποία επηρέασε κάποιους κόµβους του δακτυλίου, 3 πράγµατα µπορούν να συµβούν. Πρώτο και συνηθέστερο είναι οι δείκτες των κόµβων που εµπλέκονται στη lookup να είναι πρόσφατα ενηµερωµένοι και η lookup να βρει τον σωστό successor. εύτερη περίπτωση είναι οι δείκτες προς τους successors να είναι ανακριβείς. Σε αυτήν την περίπτωση η lookup δίνει σωστά αποτελέσµατα, αλλά χρειάζεται περισσότερο χρόνο. Η τελευταία περίπτωση είναι όταν οι κόµβοι που επηρεάστηκαν από την join έχουν λανθασµένους δείκτες προς τους successors, ή τα κλειδιά δεν έχουν ακόµα µεταφερθεί στους νέους κόµβους. Σε αυτήν την περίπτωση, η lookup ενδέχεται να δώσει λάθος αποτέλεσµα, δηλαδή να µη βρίσκει το ζητούµενο αρχείο, ενώ αυτό υπάρχει στο δίκτυο. Επίσης, µε τη stabilize το δίκτυο µαθαίνει για τους νέους κόµβους που συνδέονται. Κάθε κόµβος καλεί περιοδικά τη stabilize. Έστω ότι ο n καλεί την stabilize. Γίνονται τα εξής: ρωτά τον successor του n για τον successor του προηγούµενού του, έστω p, και αποφασίζει αν ο p πρέπει να είναι ο successor του n. Αυτό θα συνέβαινε αν ο p είχε µόλις συνδεθεί (join). Η stabilize ενηµερώνει επίσης τον successor του n για την ύπαρξη του n, δίνοντάς του τη δυνατότητα να αλλάξει τον προηγούµενό του σε n. Ο successor το κάνει αυτό µόνο αν αυτός είναι ο κοντινότερος προηγούµενος που γνωρίζει. Σε περίπτωση που δύο κόµβοι πιστεύουν ότι έχουν τον ίδιο successor, s, κάθε ένας από αυτούς θα ενηµερώσει σχετικά τον s, και αυτός θα κρίνει ποιος από τους δύο είναι πιο κοντα για να γίνει ο successor του. Αυτός που βρισκόταν πιο µακρυά θα µάθει για το ποιος είναι τελικά ο successor του s, όταν θα επικοινωνήσει µε τον s. Επίσης, καλείται και η fix_ fingers(), η οποία για τους νέους κόµβους αρχικοποιεί τον πίνακα δροµολόγησης, και για τους υπάρχοντες, φροντίζει να συµπεριλάβουν και τους καινούργιους κόµβους στους πίνακες τους. Τέλος, η stabilize ενηµερώνει τη λίστα µε τους successors του κόµβου. Έτσι, αν ένας κόµβος n αντιληφθεί ότι ο successor του αποσυνδέθηκε µπορεί να τον αντικαταστήσει µε τον πρώτο successor από αυτή τη λίστα µε τους successors. Σταδιακά, η stabilize θα διορθώνει και τους πίνακες δροµολόγησης, αλλά και τις λίστες µε τους successors, ώστε να δίνουν σωστές πληροφορίες. # Παράδειγµα Stabilize Έστω ότι ο n συνδέεται µε το δίκτυο και το ID του κυµαίνεται από n p έως n s. O n θα θεωρήσει τον n s για successor του. Στη συνέχεια ο n s θα ειδοποιηθεί από τον n, οπότε θα κάνει τον n προηγούµενό του. Όταν ο n p τρέξει αργότερα τη Μαρία Η. Κατσούφη 25
27 stabilize, θα ρωτήσει τον n s για τον προηγούµενό του (που τώρα είναι ο n). Ο n p θα θεωρήσει τον n σαν successor του. Τέλος, ο n p θα ενηµερώσει τον n ότι αυτός είναι τώρα ο προηγούµενός του. Ακολουθεί ο ψευδοκώδικας της stabilize // periodically verify n s immediate successor, // and tell the successor about n. n.stabilize() x = successor. predecessor; if (x (n, successor)) successor = x; successor. notify(n); // n thinks it might be our predecessor. n.notify(n ) if (predecessor is nil or n (predecessor, n)) predecessor = n ; // periodically refresh finger table entries. n.fix_ fingers() i = random index > 1 into finger[]; finger[i].node = find_ successor(finger[i].start); Τέλος, ο χρόνος που απαιτείται για την ανακάλυψη του successor ενός κόµβου αλλά και για την ενηµέρωση του πίνακα δροµολόγησής του είναι O(log 2 n). Συνολική Αποτίµηση Το µοντέλο που παρέχεται από το Chord είναι ανθεκτικό στις αποτυχίες, καθώς αρκεί ένας µόνο κόµβος από τους r που αποθηκεύουν κάθε κλειδί να είναι διαθέσιµος και ενεργός. Επίσης, αν υποθέσουµε ότι έχουµε ένα δίκτυο µε n κόµβους, εγγυάται ότι αν υπάρχει η τιµή που ψάχνουµε θα την εντοπίσει και µάλιστα σε χρόνο O(logn). Η εισαγωγή (Join) και η έξοδος (Leave) ενός κόµβου γίνεται µε ανταλλαγή O(log 2 n) µηνυµάτων. Επιπλέον, επιτυγχάνει εξισορρόπηση φορτίου, καθώς για την ανάθεση των κλειδιών στους κόµβους χρησιµοποιείται ένας consistent hashing αλγόριθµος, ενώ όταν ένας κόµβος συνδέεται ή αποσυνδέεται από το δίκτυο, µόνο ένας µικρός αριθµός ζευγαριών (κλειδί, τιµή) πρέπει να µετακινηθεί. Ακόµα, το Chord έχει µεγάλο scalability και µπορεί να υποστηρίξει εκατοµµύρια κόµβους. Τέλος, η τοπολογία του δικτύου που σχηµατίζεται χαρακτηρίζεται ως τοπολογία πλέγµατος (grid). CAN Στο Content - Addressable Network CAN [9] ορίζεται ένας d διάστατος χώρος συντεταγµένων ο οποίος «διπλώνει» σχηµατίζοντας ένα d- torus (Εικόνα 10). Ο χώρος Μαρία Η. Κατσούφη 26
28 αυτός χωρίζεται σε ζώνες οι οποίες µοιράζονται δυναµικά σε όλους τους κόµβους που συνδέονται στο δίκτυο. ηλαδή, σε κάθε κόµβο αντιστοιχεί και µία περιοχή του χώρου αυτού. Για να αποθηκευτεί σε έναν κόµβο ένα ζευγάρι της µορφής (κλειδί, τιµή), υπολογίζεται το σηµείο P= Hash(κλειδί). Το σηµείο αυτό θα ανήκει σε µια ζώνη D του χώρου συντεταγµένων. Τότε, το ζευγάρι (κλειδί, τιµή) θα αποθηκευτεί στον κόµβο που αντιστοιχεί στην ζώνη αυτή. Στην Εικόνα 11 φαίνεται ένας δισδιάστατος χώρος [0,1] x [0, 1]. ο οποίος έχει χωριστεί σε 5 ζώνες καθώς στο δίκτυο είναι συνδεδεµένοι 5 κόµβοι. Επίσης φαίνονται και οι συντεταγµένες κάθε ζώνης. Για λόγους απλότητας ο χώρος φαίνεται επίπεδος και όχι όπως είναι πραγµατικά. Εικόνα 10: Torus - ο χώρος συντεταγµένων [9] Εικόνα 11: ισδιάστατος χώρος χωρισµένος σε 5 ζώνες [9] Ο πίνακας δροµολόγησης, που δηµιουργεί και διατηρεί κάθε κόµβος, κρατάει τις συντεταγµένες της ζώνης του, τις IP διευθύνσεις των κόµβων µε τις ζώνες των οποίων συνορεύει η δική του ζώνη, καθώς και τις συντεταγµένες των γειτονοκών του ζωνών. Εφόσον ο πίνακας δροµολόγησης κάθε κόµβου περιλαµβάνει πληροφορίες µόνο για τους γειτονικούς κόµβους, η διατήρησή τους απαιτεί µόνο Ο(d). Ακολουθεί η περιγραφή των βασικών λειτουργιών για το CAN. Συνοπτικά έχουµε τις εξής λειτουργίες: Μαρία Η. Κατσούφη 27
29 Πίνακας 2: Βασικές λειτουργίες CAN Λειτουργία Περιγραφή Bootstrap Σύνδεση κόµβου µε το δίκτυο Join Aνάθεση ζώνης Έξοδος κόµβου Αποσύνδεση κόµβου συγχώνευση ζώνης Lookup(key, value) Αναζήτηση του (key, value) Stabilize Περιοδική ενηµέρωση γειτονικών ζωνών Αναλυτικότερα: Lookup: Η αναζήτηση κάποιας πληροφορίας που αντιστοιχεί στο σηµειο P γίνεται ως εξής: αν το P ανήκει στην ζώνη του τρέχοντος κόµβου, τότε επιστρέφεται το (κλειδί, τιµή), ή λάθος, σε περίτωση που δεν υπάρχει. ιαφορετικά, η αίτηση προωθείται στη γειτονική ζώνη της οποίας οι συντεταγµένες είναι πιο κοντά στις συντεταγµένες του P. Το µέσο µήκος µονοπατιού αναζήτησης είναι dn 1/d hops, δηλαδή είναι O(n 1/d ), όπου n το πλήθος των κόµβων και d το πλήθος των γειτόνων. Στην Εικόνα 12b φαίνεται η αναζήτηση για το κλειδί που αντιστοιχεί στο σηµείο (0,8, 0.9), δηλαδή lookup(0.8, 0.9), που ξεκινά από τον κόµβο µε συντεταγµένες (0.0, 0.5, 0.5). Σηµειώνουµε ότι υπάρχουν πολλά εναλλακτικά µονοπάτια µεταξύ δύο σηµείων, οπότε σε περίπτωση που αποσυνδεθεί ο κοντινότερος γειτονικός κόµβος, ακολουθείται το αµέσως κοντινότερο µονοπάτι. Εικόνα 12α: ισδιάστατος χώρος αναζήτησης Εικόνα12b: lookup(0.8, 0.9) [9] Bootstrap- Join: Στην περίπτωση του CAN, οι δύο αυτές λειτουργίες θεωρούµε ότι γίνονται µαζί. Συγκεκριµένα, για να συνδεθεί ένας κόµβος στο CAN πρέπει να γνωρίζει την IP διεύθυνση ενός κόµβου που είναι ήδη συνδεδεµένος στο δίκτυο. Οι διευθύνσεις αυτές µπορούν για παράδειγµα σε ένα site. Έστω N1 ο κόµβος που πρόκειται να εισαχθεί και έστω ότι γνωρίζει µια τέτοια διεύθυνση. Ονοµάζουµε τον γνωστό κόµβο που ανήκει ήδη στο CAN Ν2. ιαλέγουµε τυχαία ένα σηµείο P στο χώρο, που ανήκει στην ζώνη του Μαρία Η. Κατσούφη 28
30 N3. Ο Ν2 στέλνει µία αίτηση JOIN για το P. Ο Ν3 διαιρεί την ζώνη του στα δύο και στέλνει τα ζευγάρια (κλειδί, τιµή) που αντιστοιχούν στο ένα από τα δύο τµήµατα στον Ν1. Ο Ν1 ενηµερώνεται για το ποιες είναι οι γειτονικές του ζώνες από τον Ν3. Επίσης, ο Ν3 ενηµερώνει τους υπόλοιπους γείτονες για τις αλλαγές. Η εισαγωγή ενός κόµβου επηρεάζει µονο Ο(d) κόµβους. Στην Εικόνα 13α, φαίνεται ο χώρος συντεταγµένων πριν την εισαγωγή του κόµβου 7. Το σύνολο των γειτονικών κόµβων του 1 είναι το {2, 3, 4, 5} και του 7 το {}. Στην Εικόνα 13b, φείνεται ο χώρος µετά την είσοδο του 7. Το σύνολο των γειτονικών κόµβων του 1 είναι τώρα το {2, 3, 4, 7} και του 7 το {1, 2, 4, 5}. Εικόνα 13α: Πριν την εισαγωγή του κόµβου 7 του κόµβου 7 [9] Εικόνα 13b: Μετά την εισαγωγή Έξοδος Κόµβου (Explicit departure): Ο κόµβος που αποχωρεί παραδίδει την ζώνη του σε κάποιον άλλο µε την προϋπόθεση ότι προκύπτει µία έγκυρη ζώνη, ή συγχωνεύεται µε µία µικρότερη. Stabilize: Περιοδικά, µεταξύ των γειτονικών κόµβων, ανταλλάσσονται ενηµερωτικά (update) µηνύµατα. Σε περίπτωση που ένας κόµβος σταµατήσει να λαµβάνει τα µηνύµατα αυτά από κάποιο γείτονά του, ένας µηχανισµός (TAKEOVER) αναλαµβάνει να συγχωνεύσει τη ζώνη µε κάποια µικρότερη. Έστω, για παράδειγµα, ότι ο Κ αποσυνδέθηκε. Τότε, µόλις οι γειτονικοί του κόµβοι το καταλάβουν, ξεκινούν από έναν timer. Οι timers αυτοί είναι ανεξάρτητοι µεταξύ τους και αρχικοποιούνται σε µια τιµή ανάλογη προς το µέγεθος της ζώνης τους. Ο πρώτος timer που λήγει στέλνει ένα TAKEOVER µήνυµα. Όταν ένας κόµβος λάβει ένα τέτοιο µήνυµα ακυρώνει τον δικό του timer, ή αν η δική του ζώνη είναι µικρότερη, απαντάει µε το δικό του TAKEOVER. Με αυτόν τον τρόπο επιλέγεται ο κόµβος µε τη µικρότερη ζώνη. Ο µηχανισµός που περιγράφηκε παραπάνω µπορεί να αναθέσει σε έναν κόµβο περισσότερες από µία ζώνες. Ιδανικά, επιδιώκεται µία 1-1 αντιστοιχία κόµβων και ζωνών έτσι ώστε να περιορίζεται κατα το δυνατόν ο κατακερµατισµός του χώρου συντεταγµένων. Αυτό προσπαθεί να επιτύχει ένας µηχανισµός επανανάθεσης (reassignment) που δρα παράλληλα. Ο µηχανισµός αυτός λειτουργεί σε γενικές γραµµές ως εξής: Έστω ότι έχουµε τον κόµβο Ι. Τότε γίνονται τα εξής: 1) Έστω d k η διάσταση/συντεταγµένη κατά την οποία έγινε η τελευταία διχοτόµηση της ζώνης του Ι. Μαρία Η. Κατσούφη 29
31 2) Ο Ι βρίσκει από τον πίνακα δροµολόγησής του έναν γειτονικό κόµβο ως προς τη συντεταγµένη/ διάσταση d k, έστω J, η ζώνη του οποίου είναι το άλλο µισό της ζώνης του Ι πριν από αυτή την τελευταία διχοτόµηση. 3) Αν το µέγεθος της ζώνης του Ι ισούται µε αυτό του J, τότε οι I και J είναι ένα ζευγάρι «δίδυµων κόµβων» (sibling nodes) και οι ζώνες τους µπορούν να συνδυαστούν. 4) Αν το µέγεθος της ζώνης του J είναι µικρότερο από αυτό του Ι, τότε ο J ξεκινάει να κάνει την ίδια διαδικασία. 5) Η διαδικασία αυτή συνεχίζεται µέχρι να βρεθεί ένα ζευγάρι δίδυµων κόµβων. Προτεινόµενες Βελτιώσεις Προτείνονται διάφοροι τρόποι για τη βελτίωση της απόδοσης του CAN, και ως προς το µήκος του µονοπατιού αναζήτησης, και ως προς τη βελτίωση της διαθεσιµότητας των δεδοµένων. Για παράδειγµα, µε την θεώρηση ενός πολυδιάστατου χώρου συντεταγµένων, αποδεικνύεται ότι µειώνεται το µήκος του µονοπατιού αναζήτησης χωρίς να επιβαρύνονται σηµαντικά οι πίνακες δροµολόγησης. Για την αύξηση της διαθεσιµότητας των δεδοµένων θεωρούµε ότι υπάρχουν πολλοί ανεξάρτητοι χώροι συντεταγµένων (realities), οπότε ένα ζευγάρι (κλειδί, τιµή) αποθηκεύεται σε περισσότερους από έναν κόµβους. Συνολική αποτίµηση Το CAN εγγυάται ότι αν υπάρχει η τιµή που ψάχνουµε θα την εντοπίσει σε χρόνο Ο(n 1/d ). O χρόνος αυτός µπορεί να µειωθεί περεταίρω αν θέσουµε d=logn/2 οπότε γίνεται O(logn) όπου n ο αριθµός των κόµβων στο δίκτυο. Επιπλέον, καθώς χρησιµοποιεί hashing για την ανάθεση των ζευγαριών (κλειδί, τιµή) στους κόµβους, επιτυγχάνει εξισορρόπηση φορτίου ενώ µε κάποιες βελτιώσεις επιτυγχάνει και µεγάλη διαθεσιµότητα δεδοµένων. Η εισαγωγή και η έξοδος ενός κόµβου γίνεται σε σταθερό χρόνο, ενώ οι πίνακες δροµολόγησης κρατούν πληροφορίες µόνο για τους d γειτονικούς κόµβους. Τέλος, είναι ανθεκτικό σε επιθέσεις και έχει µεγάλο scalability, καθώς µπορεί να υποστηρίξει τη σύνδεση εκατοµµυρίων κόµβων και η τοπολογία του δικτύου που σχηµατίζεται είναι τοπολογία πλέγµατος. Συγκριτική Παρουσίαση Στους παρακάτω πίνακες, παρουσιάζονται συγκριτικά διάφορα χαρακτηριστικά των αλγορίθµων Gnutella, Gnutella2, Chord και CAN. Πίνακας 3: Χαρακτηριστικά P2P Συστηµάτων Gnutella Gnutella2 Chord CAN Προσαρµοστικότητα # # # # Εγγύηση εύρεσης δεδοµένων - - # # Scalability µέτριο καλό πολύ καλό πολύ καλό Εξισορρόπηση Φορτίου - - # # Ανθεκτικότητα σε Denial of Service (DoS) - - # # Μαρία Η. Κατσούφη 30
32 Όπως φαίνεται στον Πίνακα 3 και οι τέσσερεις αλγόριθµοι παρουσιάζουν µεγάλη προσαρµοστικότητα στις αλλαγές του δικτύου. Ωστόσο, οι αλγόριθµοι Chord και CAN, σε αντίθεση µε τους αλγόριθµους Gnutella και Gnutella2, εγγυώνται την εύρεση των δεδοµένων, την εξισορρόπηση του φορτίου του P2P δικτύου, ενώ παρουσιάζουν και ανθεκτικότητα σε επιθέσεις DoS. Τέλος, το Chord και το CAN µπορούν να υποστηρίξουν πολλούς κόµβους, σε αντίθεση µε το Gnutella2 που έχει πιο περιορισµένες δυνατότητες, και το Gnutella που έχει ακόµα λιγότερες. Πίνακας 4: Χαρακτηριστικά P2P Συστηµάτων Gnutella Gnutella2 Chord CAN Τοπολογία power law power law grid (δακτύλιος) grid (torus) Αποθήκευση Αυθαίρετη αυθαίρετη hashing hashing δεδοµένων ροµολόγηση µηνυµάτων Broadcasting περιορισµένο broadcasting απευθείας απευθείας Στον Πίνακα 4 οι τέσσερις αλγόριθµοι συγκρίνονται ως προς την τοπολογία του P2P δικτύου που σχηµατίζεται, καθώς και τους µηχανισµούς αποθήκευσης και δροµολόγησης που χρησιµοποιούν. Στο Gnutella και στο Gnutella2 η τοπολογία που παρατηρείται παρουσιάζει power law χαρακτηριστικά, ενώ στο Chord και στο CAN είναι grid. Ειδικότερα στο Chord σχηµατίζεται ένας δακτύλιος και στο CAN ένα torus. Η αποθήκευση των δεδοµένων στο Gnutella και στο Gnutella2 χαρακτηρίζεται στον πίνακα ως «αυθαίρετη» [16]. ηλαδή, δε γίνεται µε κάποιο µηχανισµό αλλά κάθε κόµβος αποθηκεύει τα δικά του δεδοµένα. Αντίθετα, στο Chord και στο CAN η αποθήκευση γίνεται µε κατακερµατισµό και κάθε κόµβος αποθηκεύει κάποια δεδοµένα, όχι κατ ανάγκη αυτά που µοιράζεται. Τέλος, η δροµολόγηση των µηνυµάτων στο Gnutella γίνεται µε broadcasting και στο Gnutella2 µε περιορισµένο broadcasting (στέλνονται µόνο στους κόµβους που ανήκουν στο ίδιο hub cluster). Στο Chord και στο CAN ένα µήνυµα στέλνεται απευθείας ακολουθώντας κάποιο µονοπάτι, όπως αυτό προκύπτει από τους πίνακες δροµολόγησης. Πίνακας 5: Πολυπλοκότητες Βασικών Λειτουργιών Gnutella Gnutella2 Chord CAN Stabilize O(n) Ο(1) O(log 2 n) O(1) Lookup O(n) Ο( n ) O(logn) Ο(n 1/d ) Join Ο(n) Ο(1) O(log 2 n) O(1) Στον Πίνακα 5 παρουσιάζονται οι πολυπλοκότητες των βασικών λειτουργιών των τεσσάρων αλγορίθµων, θεωρώντας ότι έχουµε ένα δίκτυο µε n κόµβους. Το Gnutella2 και το CAN έχουν την πιο «απλή» Stabilize καθώς αυτή πραγµατοποιείται σε σταθερό χρόνο. Τη µεγαλύτερη πολυπλοκότητα παρουσιάζει η Stabilize του Gnutella καθώς, στη χειρότερη περίπτωση, θα πρέπει να στείλει Ο(n) µηνύµατα. Όσα ισχύουν για τη Stabilize ισχύουν και για τη Join. Την πιο αποτελεσµατική Lookup έχει το Chord. Ωστόσο, η αναζήτηση του CAN, µε κάποιες βελτιώσεις-επεκτάσεις µπορεί να γίνει εξίσου αποτελεσµατική, δηλαδή O(logn). Μαρία Η. Κατσούφη 31
33 2 Προσοµοίωση 2.1 Συστήµατα και Μοντέλα Ένα σύστηµα ορίζεται ως µία συλλογή οντοτήτων που ενεργούν και αλληλεπιδρούν, µε στόχο κάποιο λογικό τερµατισµό. Στην πράξη, η έννοια του συστήµατος εξαρτάται από τους στόχους της εκάστοτε µελέτης [15]. Ορίζουµε την κατάσταση ενός συστήµατος ως τη συλλογή των µεταβλητών που είναι απαραίτητες για την περιγραφή του σε µια χρονική στιγµή, σε σχέση πάντοτε µε το περιβάλλον στόχους του. Τα συστήµατα µπορούν να είναι διακριτά (discrete) ή συνεχή (continuous). ιακριτό σύστηµα είναι αυτό στο οποίο οι µεταβλητές κατάστασης µπορούν να αλλάξουν σε διακεκριµένες στιγµές του χρόνου. Συνεχές είναι το σύστηµα του οποίου οι µεταβλητές κατάστασης αλλάζουν συνεχώς στο χρόνο. Λίγα συστήµατα στην πράξη είναι εξ ολοκλήρου διακριτά ή συνεχή, αλλά επειδή συνήθως µία από τις δύο ιδιότητες κυριαρχεί, µπορούµε τις περισσότερες φορές να χαρακτηρίσουµε το σύστηµα ως διακριτό ή συνεχές. Κατά τη διάρκεια της ζωής ενός συστήµατος, παρουσιάζεται η ανάγκη µελέτης του, ώστε να αποκτήσουµε γνώση για τις σχέσεις µεταξύ των διαφόρων τµηµάτων του, ή για να προβλέψουµε την απόδοσή του κάτω από νέες ή ειδικές συνθήκες. Παρακάτω, παρουσιάζονται διάφοροι τρόποι µε τους οποίους µπορεί να µελετηθεί ένα σύστηµα.! Πείραµα µε το Πραγµατικό Σύστηµα ή Πείραµα µε Μοντέλο του Συστήµατος: Σε αυτή την περίπτωση, απαιτείται να έχουµε φυσική πρόσβαση στο σύστηµα. Αυτό ενδέχεται να είναι δαπανηρό ή ακόµα και µή εφικτό στην περίπτωση στην οποία το σύστηµα δεν έχει ακόµα ολοκληρωθεί. Ωστόσο, στην περίπτωση που είναι δυνατή η εφαρµογή του τρόπου αυτού, τα αποτελέσµατα είναι ακριβή και δεν µπορούν να αµφισβητηθούν.! Φυσικό Μοντέλο ή Μαθηµατικό Μοντέλο: Ένα µαθηµατικό µοντέλο αναπαριστά το σύστηµα µε βάση λογικές και ποσοτικές σχέσεις, οι οποίες χειριζόµενες και µεταβαλλόµενες κατάλληλα, επιτρέπουν να δούµε πώς αντιδρά το µοντέλο, και κατά συνέπεια, πώς θα αντιδρούσε το σύστηµα, υπό την προϋπόθεση πάντα ότι το µαθηµατικό µοντέλο είναι έγκυρο.! Αναλυτική Λύση ή Προσοµοίωση: Από τη στιγµή που έχει δηµιουργηθεί ένα µαθηµατικό µοντέλο, θα πρέπει να εξετασθεί ο τρόπος χρήσης του, ώστε να µπορεί να απαντήσει στα ερωτήµατα που µας ενδιαφέρουν για το σύστηµα, που υποτίθεται ότι αντιπροσωπεύει. Αν το µοντέλο είναι αρκετά απλό, τα ερωτήµατα αυτά µπορούν σχετικά εύκολα να απαντηθούν. Στις περισσότερες περιπτώσεις, όµως, η διαδικασία αυτή είναι αρκετά πολύπλοκη και απαιτεί µεγάλη υπολογιστική ισχύ. Όταν υπάρχει αναλυτική λύση για ένα µαθηµατικό µοντέλο και είναι υπολογιστικά εφικτή, συνήθως την προτιµούµε από την προσοµοίωση. Τα περισσότερα συστήµατα όµως είναι πολύπλοκα και τα µαθηµατικά µοντέλα που τα αναπαριστούν δεν έχουν αναλυτική λύση. Στην περίπτωση αυτή το µοντέλο πρέπει να µελετηθεί µε τη χρήση προσοµοίωσης, δηλαδή µε την εκτέλεση αριθµητικών πειραµάτων στο µοντέλο για τις εισόδους (δεδοµένα) που µας ενδιαφέρουν, για να δούµε πώς αυτά επηρεάζουν τις εξόδους (µέτρα απόδοσης) του συστήµατος. Η προσοµοίωση είναι επίσης πολύ χρήσιµη στις περιπτώσεις που µπορούµε να πάρουµε µόνο προσεγγιστική αναλυτική Μαρία Η. Κατσούφη 32
34 λύση, οπότε θέλουµε να επιβεβαιώσουµε την προσέγγιση, να βρούµε το σχετικό λάθος κ.λ.π.[15] 2.2 Τα Είδη Μοντέλων Προσοµοίωσης. Τα Μοντέλα Προσοµοίωσης µπορούν να κατηγοριοποιηθούν µε βάση τέσσερις διαφορετικές έννοιες: Στατικά ή υναµικά Μοντέλα Προσοµοίωσης: Ένα στατικό µοντέλο προσοµοίωσης, αναπαριστά ένα σύστηµα σε µία συγκεκριµένη χρονική στιγµή, ή αναπαριστά ένα σύστηµα στο οποίο ο χρόνος δεν έχει σηµασία. Αντίθετα, ένα δυναµικό µοντέλο προσοµοίωσης αναπαριστά ένα σύστηµα, όπως αυτό εξελίσσεται µε την πάροδο του χρόνου. Ντετερµινιστικά ή Στοχαστικά Μοντέλα Προσοµοίωσης: Αν ένα µοντέλο προσοµοίωσης δεν περιλαµβάνει στοχαστικά (δηλαδή "τυχαία") τµήµατα, ονοµάζεται ντετερµινιστικό. Στα ντετερµινιστικά µοντέλα, για δεδοµένη είσοδο, η έξοδος είναι καθορισµένη. Όµως, πολλά συστήµατα πρέπει να χρησιµοποιήσουν στοχαστικά µοντέλα προσοµοίωσης, δηλαδή µοντέλα που θα έχουν τουλάχιστον ορισµένα τµήµατα µε "τυχαία" είσοδο. Αυτο-οδηγούµενα ή Ιχνο-οδηγούµενα Μοντέλα Προσοµοίωσης: Σε ένα αυτοοδηγούµενο (self-driven) µοντέλο, υπάρχει µία εσωτερική πηγή τυχαίων αριθµών. Οι τυχαίοι αριθµοί οδηγούν τα τµήµατα του µοντέλου, δηλαδή χρησιµοποιούνται για τον προσδιορισµό των στιγµών εµφανίσεως των γεγονότων του συστήµατος. Το βασικό χαρακτηριστικό του αυτο-οδηγούµενου µοντέλου είναι ότι αποτελεί ένα αυτάρκες µοντέλο το οποίο δεν χρειάζεται εξωτερικές εισόδους για να λειτουργήσει. Αντίθετα, ένα ιχνο-οδηγούµενο (trace-driven) µοντέλο καθοδηγείται από ακολουθίες εισόδου που προέρχονται από δεδοµένα (trace data) που έχουν δηµιουργηθεί από τη λειτουργία ενός πραγµατικού συστήµατος. Τέτοια δεδοµένα µπορούν να παραχθούν στα περισσότερα υπολογιστικά συστήµατα που διαθέτουν ενσωµατωµένα προγράµµατα ιχνηλάτησης (tracing programs) που παρακολουθούν και καταγράφουν τις δραστηριότητες του συστήµατος. Τα ιχνο-οδηγούµενα µοντέλα έχουν ορισµένα πλεονεκτήµατα, όπως το γεγονός ότι αποφεύγονται οι δυσκολίες της πιθανοτικής ανάλυσης που χρειάζεται για τη χρήση κατανοµών στην περιγραφή των εισόδων του µοντέλου, και επίσης το γεγονός ότι τα µοντέλα αυτά είναι εύκολο να επιβεβαιωθούν. Το πρόβληµα µε τα ιχνο-οδηγούµενα µοντέλα είναι το µικρό εύρος εφαρµογών που µπορούν να αντιµετωπίσουν. Οι εφαρµογές αυτές πρακτικά περιορίζονται σε υπολογιστικά συστήµατα και µάλιστα µόνο για τη µελέτη µετατροπών σε ένα σύστηµα που ήδη λειτουργεί [15]. Συνεχή ή ιακριτά Μοντέλα Προσοµοίωσης: Οι ορισµοί των συνεχών και διακριτών µοντέλων προσοµοίωσης, είναι ανάλογοι µε τους ορισµούς των συνεχών και διακριτών συστηµάτων που αναφέρθηκαν στην ενότητα 2.1. Πάντως, πρέπει να σηµειωθεί ότι ένα διακριτό µοντέλο δεν χρησιµοποιείται µόνο για την αναπαράσταση ενός διακριτού συστήµατος, και ένα διακριτό σύστηµα δεν αναπαρίσταται µόνο από ένα διακριτό µοντέλο προσοµοίωσης. Η απόφαση για τη χρήση ενός διακριτού ή ενός συνεχούς µοντέλου για ένα συγκεκριµένο σύστηµα, εξαρτάται από τους ιδιαίτερους στόχους της µελέτης. Μαρία Η. Κατσούφη 33
35 Τα µοντέλα προσοµοίωσης που θα µας απασχολήσουν στη συνέχεια, θα είναι διακριτά, δυναµικά, στοχαστικά και αυτο-οδηγούµενα και θα ονοµάζονται Μοντέλα Προσοµοίωσης ιακριτών Γεγονότων (discrete event simulation models). 2.3 Ο Μηχανισµός Εξέλιξης του Χρόνου Λόγω του δυναµικού χαρακτήρα των µοντέλων προσοµοίωσης διακριτών γεγονότων, πρέπει να έχουµε τη δυνατότητα αποθήκευσης της τρέχουσας τιµής του προσοµοιωµένου χρόνου, ενώ χρειαζόµαστε και ένα µηχανισµό αύξησής του από µία τιµή σε µία άλλη. Η µεταβλητή του µοντέλου προσοµοίωσης που µας δίνει την τρέχουσα τιµή του χρόνου, ονοµάζεται ρολόι προσοµοίωσης (simulation clock). Έχουν επικρατήσει δύο βασικές µέθοδοι για την εξέλιξη του ρολογιού προσοµοίωσης: Η Εξέλιξη µε βάση το Χρόνο του Εποµένου Γεγονότος (next-event time advance) και η Εξέλιξη Σταθερής Αύξησης του Χρόνου (fixed-increment time advance).! Εξέλιξη µε βάση το Χρόνο του Εποµένου Γεγονότος: Στη µέθοδο εξέλιξης µε βάση το χρόνο του εποµένου γεγονότος, το ρολόι προσοµοίωσης αρχικοποιείται στο µηδέν, ενώ καθορίζονται και οι στιγµές εµφάνισης των µελλοντικών γεγονότων. Το ρολόι αυξάνει στο χρόνο εµφάνισης του πιο κοντινού στο µέλλον, από τα γεγονότα αυτά. Τη στιγµή αυτή η κατάσταση του συστήµατος ενηµερώνεται ώστε να λάβει υπόψη της το γεγονός που εµφανίστηκε, ενώ ενηµερώνεται επίσης η γνώση µας για τις χρονικές στιγµές εµφάνισης των µελλοντικών γεγονότων. Στη συνέχεια, το ρολόι αυξάνει, ώστε να δείχνει τη στιγµή εµφάνισης του νέου, πιο κοντινού στο µέλλον γεγονότος, η κατάσταση του συστήµατος ενηµερώνεται, καθορίζονται οι χρονικές στιγµές εµφάνισης των µελλοντικών γεγονότων κ.ο.κ. Η διαδικασία αυτή εξέλιξης του ρολογιού προσοµοίωσης από το ένα γεγονός στο άλλο, συνεχίζεται µέχρι να ικανοποιηθεί κάποια προκαθορισµένη συνθήκη τερµατισµού της προσοµοίωσης. Αφού όλες οι αλλαγές κατάστασης γίνονται µόνο στις χρονικές στιγµές εµφάνισης των γεγονότων, οι ενδιάµεσες ανενεργοί περίοδοι δεν λαµβάνονται υπόψη και το ρολόι µετακινείται αυτόµατα στη στιγµή εµφάνισης του εποµένου γεγονότος.! Εξέλιξη Σταθερής Αύξησης του Χρόνου: Στη µέθοδο εξέλιξης σταθερής αύξησης του χρόνου, το ρολόι προσοµοίωσης εξελίσσεται µε σταθερές αυξήσεις ακριβώς t µονάδων χρόνου κάθε φορά. Μετά από κάθε ενηµέρωση του ρολογιού, γίνεται ένας έλεγχος για να εξακριβωθεί εάν θα έπρεπε να έχουν εµφανισθεί κάποια γεγονότα κατά το προηγούµενο χρονικό διάστηµα t. Αν εµφανίσθηκαν γεγονότα στο διάστηµα αυτό, θεωρούµε ότι αυτά εµφανίζονται στο τέλος του χρονικού διαστήµατος και η κατάσταση του συστήµατος ενηµερώνεται κατάλληλα. 2.4 Συστατικά ενός Μοντέλου Προσοµοίωσης ιακριτών Γεγονότων Τα περισσότερα µοντέλα προσοµοίωσης διακριτών γεγονότων που χρησιµοποιούν τη µέθοδο εξέλιξης µε βάση το χρόνο του εποµένου γεγονότος, περιλαµβάνουν τα παρακάτω τµήµατα: Μαρία Η. Κατσούφη 34
36 ! Κατάσταση Συστήµατος (system state): Η συλλογή των µεταβλητών κατάστασης που είναι απαραίτητες για την περιγραφή του συστήµατος σε µία χρονική στιγµή.! Ρολόι Προσοµοίωσης (simulation clock): Μία µεταβλητή που περιέχει την τρέχουσα τιµή του προσοµοιωµένου χρόνου.! Λίστα Γεγονότων (event list): Μία λίστα που περιέχει την επόµενη χρονική στιγµή εµφάνισης κάθε τύπου γεγονότος.! Μετρητές Στατιστικών (statistical counters): Μεταβλητές που χρησιµοποιούνται για την αποθήκευση στατιστικών µετρήσεων της απόδοσης του συστήµατος.! Ρουτίνα Αρχικοποίησης (initialization routine): Ένα υποπρόγραµµα που αρχικοποιεί το µοντέλο προσοµοίωσης τη χρονική στιγµή µηδέν.! Ρουτίνα Χρονισµού (timing routine): Ένα υποπρόγραµµα που αναγνωρίζει το επόµενο γεγονός από τη λίστα γεγονότων και ακολούθως αυξάνει το ρολόι προσοµοίωσης στη χρονική στιγµή που το γεγονός αυτό θα εµφανισθεί.! Ρουτίνες Γεγονότων (event routines): Υποπρογράµµατα που ενηµερώνουν την κατάσταση συστήµατος όταν εµφανίζεται ένα συγκεκριµένο είδος γεγονότος (υπάρχει µία τέτοια ρουτίνα για κάθε είδος γεγονότος).! Ρουτίνες Βιβλιοθήκης (library routines): Σύνολο υποπρογραµµάτων που δηµιουργούν τυχαίες εµφανίσεις τιµών από πιθανοτικές κατανοµές, που έχουν ορισθεί ως µέρος του µοντέλου προσοµοίωσης.! Γεννήτρια Αναφορών (report generator): Υποπρόγραµµα που υπολογίζει εκτιµήσεις των επιθυµητών µέτρων απόδοσης από τους µετρητές στατιστικών και παράγει αναφορές όταν τελειώσει η εκτέλεση του προσοµοιωτή.! Κυρίως Πρόγραµµα (main program): Το πρόγραµµα που καλεί τη ρουτίνα χρονισµού για να καθοριστεί το επόµενο γεγονός, και στη συνέχεια µεταφέρει τον έλεγχο στην αντίστοιχη ρουτίνα γεγονότος για να ενηµερωθεί κατάλληλα η κατάσταση του συστήµατος. Ελέγχει επίσης αν πρέπει να τερµατιστεί η προσοµοίωση και καλεί τότε τη γεννήτρια αναφορών. 2.5 ηµιουργία Τυχαίων Τιµών από Πιθανοτικές Κατανοµές: Η κατανοµή Poisson Προκειµένου να υλοποιηθεί µια προσοµοίωση µε τη χρήση τυχαίων εισόδων (όπως οι χρόνοι µεταξύ διαδοχικών αφίξεων), πρέπει να καθορίσουµε τις πιθανοτικές κατανοµές που τις περιγράφουν. Η προσοµοίωση εξελίσσεται µε τη δηµιουργία και χρήση τυχαίων τιµών από τις κατανοµές αυτές. Στη συνέχεια θα ασχοληθούµε µε την κατανοµή Poisson. Η κατανοµή Poisson χρησιµοποιείται στη µοντελοποίηση του αριθµού εµφανίσεων γεγονότων κατά τη διάρκεια µιας συγκεκριµένης περιόδου. Στην περίπτωσή µας, µας ενδιαφέρει να µοντελοποιήσουµε το ρυθµό υποβολής αιτήσεων αναζήτησης κατά τη διάρκεια ζωής ενός κόµβου. Αυτό το µοντελοποιούµε µε τη βοήθεια της κατανοµής Poisson [1]. x Η κατανοµή Poisson έχει συνάρτηση πυκνότητας πιθανότητας f ( x) = λe λ. Σε χρονικό διάστηµα Τ οι αφίξεις ακολουθούν την κατανοµή Poisson και η πιθανότητα για k αφίξεις σε Τ (sec) δίνεται από τη σχέση Μαρία Η. Κατσούφη 35
37 k ( λτ) e P( k) = P[ k _ αφ ίξεις _ σε _ Τsec] = k! Η συνάρτηση κατανοµής της είναι F( x) = P( X x) = xi x λτ p( x ) = i xi x x ( λτ) e x! Αποδεικνύεται ότι όταν οι αφίξεις ακολουθούν την κατανοµή Poisson, τα χρονικά διαστήµατα µεταξύ αφίξεων είναι τυχαίες µεταβλητές που ακολουθούν εκθετική κατανοµή. Η συνάρτηση πυκνότητας πιθανότητας της εκθετικής κατανοµής δίνεται από x β τον τύπο f ( x) = 1 e όπου β η µέση τιµή. Εποµένως ο µέσος χρόνος µεταξύ β διαδοχικών αφίξεων δίνεται από τη σχέση 1 E ( τ ) = τf ( τ ) dτ = λ 0 Ο αλγόριθµος για τη δηµιουργία τυχαίων τιµών από την κατανοµή Poisson(λ), βασίζεται στη σχέση µεταξύ των κατανοµών Poisson(λ) και expo(1/λ) και είναι ο εξής: Θέσε = λ p e, q = 1, και N = ηµιούργησε ένα U N + 1 ~ U (0,1) και αντικατάστησε το q µε το qu N + 1. Αν q < p, επίστρεψε το X = N και τερµάτισε. Αλλιώς πήγαινε στο Βήµα Αντικατάστησε το i µε Ν+1 και πήγαινε πίσω στο Βήµα 2. Η ορθότητα του αλγορίθµου αποδεικνύεται, παρατηρώντας ότι αν: i Y 1 < i+ 1 j j= 1 j= 1 Y j λτ X = i, αν και µόνο όπου Y j = ( 1/ λ)lnu j ~ expo(1/ λ) και τα Y j είναι ανεξάρτητα µεταξύ τους. ηλαδή, i { i : Y j 1} X = max, έτσι ώστε η X ~ Poisson( λ). j = 1. Μαρία Η. Κατσούφη 36
38 3 Ο ορισµός του προβλήµατος Η ευρεία αποδοχή που γνωρίζει το P2P µοντέλο επικοινωνίας µέσω κυρίως των εφαρµογών διαµοιρασµού αρχείων, καθιστά απαραίτητη τη µελέτη των P2P πρωτοκόλλων. 3.1 Προηγούµενες Μελέτες Για το σκοπό αυτό έχουν εργαστεί πολλοί και µε διάφορους τρόπους. Παρακάτω παρουσιάζονται επιγραµµατικά κάποιες από αυτές τις µελέτες. Στο [2] αντικείµενο µελέτης είναι το Napster και το Gnutella. Για κάθε ένα από τα δύο συστήµατα δηµιουργήθηκε ένας crawler. Σκοπός του είναι η ανακάλυψη όσο το δυνατόν περισσότερων συνδεδεµένων κόµβων και η συγκέντρωση στοιχείων για αυτούς. Για το Napster, επειδή δεν είναι δυνατή η απευθείας πρόσβαση στους κεντρικούς servers για τη συλλογή στοιχείων των συνδεδεµένων χρηστών, ο crawler υποβάλλει αιτήσεις για διάφορα δηµοφιλή αρχεία. Για κάθε κόµβο που απαντά, ρωτάει τον κεντρικό server προκειµένου να πάρει στοιχεία, όπως το bandwidth, τον αριθµό, τα ονόµατα και το µέγεθος των αρχείων που µοιράζεται, τον αριθµό των αρχείων που κατεβάζει (download) ή που κάποιος άλλος κατεβάζει από αυτόν (upload) εκείνη τη στιγµή, την IP διεύθυνση και άλλα. Για το Gnutella, ο crawler εκµεταλλεύεται τα ping-pong µηνύµατα. Αρχικά, συνδέεται µε έναν γνωστό κόµβο και αρχίζει να στέλνει ping µηνύµατα µε µεγάλο TTL σε άλλους γνωστούς κόµβους. Από τα pong που λαµβάνει µαθαίνει για άλλους κόµβους. Τα pong µηνύµατα περιέχουν διάφορα στοιχεία που µας ενδιαφέρουν, όπως την IP διεύθυνση, τον αριθµό των διαµοιραζόµενων αρχείων και άλλα. Από την επεξεργασία των στοιχείων που συγκεντρώθηκαν προέκυψαν διάφορα στατιστικά που χαρακτηρίζουν κυρίως τους χρήστες των εφαρµογών αυτών και λιγότερο το P2P δίκτυο αυτό καθεαυτό. Στο [10] χρησιµοποιείται το NetFlow της Cisco για τη συγέντρωση δεδοµένων από δροµολογητές κατά µήκος ενός ISP backbone. Για κάθε ροή (δηλαδή για κάθε ακολουθία πακέτων µεταξύ µιας πηγής και ενός προορισµού) κρατάει στοιχεία όπως: την IP διεύθυνση, network prefix και AS (Autonomus System). Τα συστήµατα που µελετώνται είναι το Gnutella, το FastTrack και το DirectConnect. Τα στοιχεία συγκεντρώνονται, στέλνονται µε UDP και αποθηκεύονται. Από την ανάλυσή τους προκύπτουν στοιχεία και για την κίνηση που προκαλείται από τις P2P εφαρµογές, αλλά και από το υπόλοιπο δίκτυο. Επίσης, επειδή δεν είναι απαραίτητη η γνώση των πρωτοκόλλων που µελετώνται, µπορούν να συγκεντρωθούν στοιχεία και για πρωτόκολλα τα οποία δεν είναι ανοιχτά (open source) όπως για παράδειγµα το FastTrack. Τα στοιχεία αναφέρονται σε µεγάλα χρονικά διαστήµατα και χωρίς να επηρεάζουν τους κόµβους του δικτύου, αλλά συγκεντρώνονται από ένα µικρό τµήµα δροµολογητών. Στο [3] µελετάται το Gnutella 0.6. Η διάταξη που χρησιµοποιείται φαίνεται στην Εικόνα 14 και σε γενικές γραµµές είναι η εξής: Τοποθετείται ένας κόµβος Gnutella σε ένα τοπικό δίκτυο (LRZ domain), µε δηµόσιο IP, ο οποίος άλλοτε λειτουργεί σαν φύλλο και άλλοτε σαν ultrapeer. Επίσης, τοποθετείται και ένας καταγραφέας πακέτων (Packet Logger) στον κεντρικό µεταγωγέα του δικτύου (Main Switch of the LAN). Μαρία Η. Κατσούφη 37
39 Εικόνα 14: ιάταξη µετρήσεων [3] Στην Εικόνα 15 παρουσιάζονται τα αποτελέσµατα που συγκεντρώθηκαν από µετρήσεις οι οποίες έγιναν για το Gnutella 0.6. Οι δύο πρώτες στήλες παρουσιάζουν την κίνηση πριν ξεκινήσει η P2P εφαρµογή, στις δύο επόµενες, ενώ έχει ξεκινήσει και στις δύο τελευταίες, ενώ έχει σταµατήσει. Όπως µπορούµε να δούµε, όσο τρέχει η P2P εφαρµογή, το µεγαλύτερο µέρος της κίνησης προκαλείται από αυτή και όχι από το HTTP ή το TCP. Εικόνα 15: Μετρήσεις για το Gnutella 0.6 [3] Μαρία Η. Κατσούφη 38
Συστήματα Peer To Peer (P2P Systems) Γαλάνης Δημήτριος Παπαδημητρίου Χριστίνα
Συστήματα Peer To Peer (P2P Systems) Γαλάνης Δημήτριος Παπαδημητρίου Χριστίνα Τα Peer-To-Peer προσελκύουν το ενδιαφέρον Ακαδημαϊκά Προσπάθειες International Workshop on P2P Computing Global and P2P Computing
7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ
Ερωτήσεις 7.3 Πρωτόκολλο TCP 1. Τι είναι το τµήµα (segment) στο πρωτόκολλο TCP; Από ποια µέρη αποτελείται; 2. Για ποιο σκοπό χρησιµοποιείται ο Αριθµός ειράς στην επικεφαλίδα ενός segment TCP; 3. την περίπτωση
Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που
7.7 Πρωτόκολλο ARP 1 ύο είδη διευθύνσεων: MAC - IP Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που µπορεί
Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών. Κοντοτάσιου Ιωάννα ΑΜ 3125 Μπέσσας Απόστολος ΑΜ 3171
Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών Κοντοτάσιου Ιωάννα ΑΜ 35 Μπέσσας Απόστολος ΑΜ 37 Σκοπός της άσκησης Ο σκοπός της άσκησης είναι η δημιουργία ενός ομότιμου δικτύου διαμοιρασμού βιβλιογραφικών
7.9 ροµολόγηση. Ερωτήσεις
7.9 ροµολόγηση Ερωτήσεις 1. Να δώσετε τον ορισµό της δροµολόγησης; 2. Από τι εξαρτάται η χρονική στιγµή στην οποία λαµβάνονται οι αποφάσεις δροµολόγησης; Να αναφέρετε ποια είναι αυτή στην περίπτωση των
7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ
Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.5 Πρωτόκολλο IP 38. Τι είναι το πρωτόκολλο ιαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναµα
Peer-to-Peer Technology
Peer-to-Peer Technology Συστήµατα Peer to Peer Καταργούν την αρχιτεκτονική Client-Server Στηρίζονται στην οµότιµη και εθελοντική συµπεριφορά των διαφόρων κόµβων Client Server Συστήµατα Peer to Peer Καταργούν
Search and Replication in Unstructured Peer-to-Peer Networks
Search and Replication in Unstructured Peer-to-Peer Networks Presented in P2P Reading Group in 11/10/2004 Abstract: Τα µη-κεντρικοποιηµένα και µη-δοµηµένα Peer-to-Peer δίκτυα όπως το Gnutella είναι ελκυστικά
Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών. Κοντοτάσιου Ιωάννα ΑΜ 3125 Μπέσσας Απόστολος ΑΜ 3171
Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών Κοντοτάσιου Ιωάννα ΑΜ 35 Μπέσσας Απόστολος ΑΜ 37 Το πρόβλημα των αναφορών Κάθε ερευνητική εργασία απαιτείται να αναφέρει τις βιβλιογραφικές αναφορές της. Ο
Κατανεμημένα Συστήματα. Συστήματα Peer-to-Peer (P2P)
Κατανεμημένα Συστήματα Συστήματα Peer-to-Peer (P2P) Κωνσταντίνος Αντωνής 2011 Σκοπός Τα P2P είναι κατανεμημένες αρχιτεκτονικές που σχεδιάζονται με σκοπό τη διαμοίραση πόρων (περιεχομένου, αποθηκευτικού
Κινητά και Διάχυτα Συστήματα. Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Κινητά και Διάχυτα Συστήματα Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του
ιαδίκτυα & Ενδοδίκτυα Η/Υ
ιαδίκτυα & Ενδοδίκτυα Η/Υ ΙΑ ΙΚΤΥΑΚΗ ΛΕΙΤΟΥΡΓΙΑ (Kεφ. 16) ΠΡΩΤΟΚΟΛΛΑ ΡΟΜΟΛΟΓΗΣΗΣ Αυτόνοµα Συστήµατα Πρωτόκολλο Συνοριακών Πυλών OSPF ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΟΛΟΚΛΗΡΩΜΕΝΩΝ ΥΠΗΡΕΣΙΩΝ (ISA) Κίνηση ιαδικτύου Προσέγγιση
Εργαστήριο 4 Πρωτόκολλα Δρομολόγησης
Εργαστήριο 4 Πρωτόκολλα Δρομολόγησης. Εισαγωγή Η παρούσα εργαστηριακή άσκηση έχει ως σκοπό την εξοικείωση με τα πρωτόκολλα δρομολόγησης τα οποία χρησιμοποιούνται στα Ad-Hoc δίκτυα, καθώς και την συγκριτική
ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων
ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων Μαρία Ι. Ανδρέου ΗΜΥ417, ΗΜΥ 663 Κατανεµηµένα Συστήµατα Χειµερινό Εξάµηνο 2006-2007 Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο
Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ
Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.1.1. Γενικές Αρχές 1. Τι ονοµάζεται επικοινωνιακό υποδίκτυο και ποιο είναι το έργο του; Το σύνολο όλων των ενδιάµεσων κόµβων που εξασφαλίζουν την επικοινωνία µεταξύ
Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα
1 Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα εύκολη, τη στιγμή που γνωρίζουμε ότι ένα σύνθετο δίκτυο
ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ
ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ 1 o ΔΙΑΓΩΝΙΣΜΑ ΘΕΜΑ 1 ο Α) Ποια είναι τα βασικά στοιχεία, τα οποία χαρακτηρίζουν το ISDN; Η ψηφιακή μετάδοση. Όλα τα σήματα μεταδίδονται σε ψηφιακή μορφή απ' άκρη σ' άκρη του δικτύου,
Δροµολόγηση (Routing)
Δροµολόγηση (Routing) Περίληψη Flooding Η Αρχή του Βέλτιστου και Δυναµικός Προγραµµατισµός Dijkstra s Algorithm Αλγόριθµοi Δροµολόγησης Link State Distance Vector Δροµολόγηση σε Κινητά Δίκτυα Δροµολόγηση
ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία
ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-
Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι
Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Σημειώσεις μαθήματος: Χρήσιμοι Σύνδεσμοι http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/
Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές
Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη
Διπλωματική Εργασία. Ανάπτυξη και Πειραματισμός Αλγορίθμων Αναζήτησης Πόρων σε Διομότιμα Συστήματα (Peer-to-Peer networks)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Τμήμα Εφαρμοσμένης Πληροφορικής και Πολυμέσων Διπλωματική Εργασία Ανάπτυξη και Πειραματισμός Αλγορίθμων Αναζήτησης Πόρων σε Διομότιμα Συστήματα (Peer-to-Peer networks)
Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112
Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Πλωτάρχης Γ. ΚΑΤΣΗΣ ΠΝ Γιατί χρησιµοποιούµε δίκτυα? Δίκτυο Σύνολο Η/Υ και συσκευών Συνδεδεµένα µε κάποιο µέσο Stand-alone
ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.
ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ 2016 Γ Τάξη Ε.Π.Α.Λ. ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις και δίπλα το γράµµα Σ, αν είναι σωστή, ή το γράµµα
Απαντήσεις. Απάντηση. Απάντηση
6 η σειρά ασκήσεων Άλκης Γεωργόπουλος Α.Μ. 39 Αναστάσιος Κοντογιώργης Α.Μ. 43 Άσκηση 1. Απαντήσεις Η αλλαγή ενός ρολογιού προς τα πίσω µπορεί να προκαλέσει ανεπιθύµητη συµπεριφορά σε κάποια προγράµµατα.
Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων
Κ Σ Ι Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων Παναγιώτα Παναγοπούλου Άσκηση 1. Υποθέστε ότι οι διεργασίες ενός σύγχρονου κατανεμημένου συστήματος έχουν μοναδικές ταυτότητες (UIDs), γνωρίζουν ότι είναι συνδεδεμένες
ιαδίκτυα & Ενδοδίκτυα Η/Υ
ιαδίκτυα & Ενδοδίκτυα Η/Υ (Kεφ. 10) ΡΟΜΟΛΟΓΗΣΗ Χαρακτηριστικά Στρατηγικές ροµολόγησης Παραδείγµατα Βιβλίο Μαθήµατος: Επικοινωνίες Υπολογιστών & εδοµένων, William Stallings, 6/e, 2000. ΕΥ - κεφ.10 (2/3)
Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Δρομολόγηση
Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Δρομολόγηση Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών Διαφάνεια 1 Δρομολόγηση Εισαγωγή Ιεραρχική δρομολόγηση
Improving the performance of TCP in the case of packet reordering. Στρατάκη Μαρία
Improving the performance of TCP in the case of packet reordering Στρατάκη Μαρία Γενικές Πληροφορίες για το TCP/IP TCP (Transmission Control Protocol) IP (Internet Protocol) Χωρίζουν τα δεδομένα σε τμήματα
ιαχείριση εδομένων σε Συστήματα Ομότιμων Κόμβων
Εισαγωγή ιαχείριση εδομένων σε Συστήματα Ομότιμων Κόμβων Μεγάλος αριθμός από κόμβους (συνήθως υπολογιστές στην «άκρη» του διαδικτύου) Συμμετέχουν στον υπολογισμό Προσφέροντας πόρους (π.χ., μουσικά αρχεία)
a. b. c. d ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ
7.7 Πρωτόκολλο Μέχρι τώρα έχουμε αναφέρει, ότι, για να μεταδοθούν τα αυτοδύναμα πακέτα στο φυσικό μέσο, πρέπει αυτά να μετατραπούν σε πακέτα φυσικού δικτύου (π.χ. Ethernet). Όμως, δεν έχει ειπωθεί τίποτε
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26 Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.: 43 Άσκηση 3 Μια αξιόπιστη multicast υπηρεσία επιτρέπει σε έναν
ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ
Το πρωτόκολλο Διαδικτυου (Internet Protocol, ) είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/. Η λειτουργία του βασίζεται στην ιδέα των αυτοδύναμων πακέτων (datagrams), τα οποία μεταφέρονται
ιαδίκτυα & Ενδοδίκτυα Η/Υ
ιαδίκτυα & Ενδοδίκτυα Η/Υ ΠΡΩΤΟΚΟΛΛΑ ΙΑ ΙΚΤΥΩΣΗΣ (Kεφ. 15) IPV6 ΠΟΛΛΑΠΛΗ ΑΠΟΣΤΟΛΗ ΙΡ ΠΡΟΒΛΗΜΑΤΑ επί του κεφ. 15 Βιβλίο Μαθήµατος: Επικοινωνίες Υπολογιστών & εδοµένων, William Stallings, 6/e, 2000. ΕΥ -
ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων
ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και
Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Διπλωματική Εργασία με θέμα: Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού Καραγιάννης Ιωάννης Α.Μ.
Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap
Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...
Εγχειρίδιο Φοιτητών. 1. Εισαγωγή
Εγχειρίδιο Φοιτητών 1. Εισαγωγή Η ηλεκτρονική πλατφόρµα «e-class», αποτελεί ένα ολοκληρωµένο σύστηµα Ασύγχρονης Τηλεκπαίδευσης. Στόχος της είναι παροχή υποδοµών εκπαίδευσης και κατάρτισης ανεξάρτητα από
ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ Βελώνης Γεώργιος ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ. Μάθημα 2ο. Βελώνης Γεώργιος - 1ο Τ.Ε.Ε. Κατερίνης. Καθηγητής Πληροφορικής ΠΕ20 2-1
ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ Βελών ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ Μάθημα 2ο Βελών - 1ο Τ.Ε.Ε. Κατερίν Καθηγητής Πληροφορικής ΠΕ20 2-1 Τεχνολογίες Μεταγωγής Δεδομένων Δίκτυα Μεταγωγής Βελών Βελών Δίκτυα Μεταγωγής Δίκτυα Μεταγωγής
Βασικές έννοιες. Κατανεμημένα Συστήματα 1
Βασικές έννοιες Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Ορισμός κατανεμημένου συστήματος Ένα σύστημα από ξεχωριστές ενεργές οντότητες (ονομάζονται «κόμβοι» ή «διεργασίες») που εκτελούνται ταυτόχρονα/ανεξάρτητα
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Δέυτερη Προγραμματιστική Εργασία Προθεσμία παράδοσης: 19/6/2017 1. Γενική Περιγραφή Στην δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε
Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο
Πρωτόκολλα Διαδικτύου Μέρος 2ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Internet Protocol (IP) Στο επίπεδο δικτύου της τεχνολογίας TCP/IP, συναντάμε το πρωτόκολλο IP. Η λειτουργία του IP βασίζεται αποκλειστικά
ΤΕΙ Κρήτης, Παράρτηµα Χανίων
ΠΣΕ, Τµήµα Τηλεπικοινωνιών & ικτύων Η/Υ Εργαστήριο ιαδίκτυα & Ενδοδίκτυα Η/Υ ( ηµιουργία συστήµατος µε ροint-tο-ροint σύνδεση) ρ Θεοδώρου Παύλος Χανιά 2003 Περιεχόµενα 1 ΕΙΣΑΓΩΓΗ...2 2 ΤΟ ΚΑΝΑΛΙ PΟINT-TΟ-PΟINT...2
7.5 Πρωτόκολλο IP. & Ερωτήσεις
7.5 Πρωτόκολλο IP & Ερωτήσεις 1. ε ποιο επίπεδο του μοντέλου TCP/IP ανήκει το IP πρωτόκολλο; Εξασφαλίζει αξιόπιστη μετάδοση, και αν όχι ποιο πρωτόκολλο είναι υπεύθυνο για την αξιοπιστία; 2. Τι χρειάζεται
3.2 Το αυτοδύναμο πακέτο IP (datagram) Δομή πακέτου
3.2 Το αυτοδύναμο πακέτο IP (datagram) Δομή πακέτου 1 / 54 Το πρωτόκολλο Διαδικτύου (Internet Protocol -IP) ενθυλακώνει τα πακέτα δεδομένων που του προωθούνται από το ανώτερο επίπεδο σε αυτοδύναμα πακέτα
ΚΕΦΑΛΑΙΟ 4. Τεχνική Ανίχνευσης του. Πτυχιακή Εργασία Σελίδα 95
ΚΕΦΑΛΑΙΟ 4 Τεχνική Ανίχνευσης του ICMP Echo Spoofing Πτυχιακή Εργασία Σελίδα 95 Περιεχόμενα ΕΙΣΑΓΩΓΗ 98 ΜΕΡΟΣ Α: Έλεγχος του Icmp Echo Reply Πακέτου 103 A.1. Ανίχνευση του spoofed Icmp Echo Request Πακέτου.
Εκλογήαρχηγού. Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου. Κατανεµηµένα Συστήµατα 06-1
Εκλογήαρχηγού Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου Κατανεµηµένα Συστήµατα 06- Εισαγωγή Πρόβληµα: επιλογή µίας διεργασίας από το σύνολο εν αρκεί να αυτοανακηρυχθεί
Εγχειρίδιο Χρήστη - Μαθητή
Εγχειρίδιο Χρήστη - Μαθητή 1. Εισαγωγή Η ηλεκτρονική πλατφόρµα «e-class», αποτελεί ένα ολοκληρωµένο σύστηµα Ασύγχρονης Τηλεκπαίδευσης. Στόχος της είναι παροχή υποδοµών εκπαίδευσης και κατάρτισης ανεξάρτητα
Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.
ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ / Γ- ΕΠΑ.Λ. ΗΜΕΡΟΜΗΝΙΑ: 21-02- 2016 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ-Α.ΚΑΤΡΑΚΗ ΘΕΜΑ Α. A1. Να γράψετε το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη
Πρωτόκολλα Διαδικτύου
Πρωτόκολλα Διαδικτύου Ερωτήσεις Ασκήσεις Επικοινωνίες Δεδομένων Μάθημα 3 ο Ερωτήσεις 1. Τι είναι το intranet και ποια τα πλεονεκτήματα που προσφέρει; 2. Τι δηλώνει ο όρος «TCP/IP»; 3. Να αναφέρετε τα πρωτόκολλα
Ομότιμα συστήματα p2p systems ΠΡΙΝΕΑ ΜΑΡΙΑ 10 ΕΞΑΜΗΝΟ
Ομότιμα συστήματα p2p systems ΠΡΙΝΕΑ ΜΑΡΙΑ 10 ΕΞΑΜΗΝΟ ΠΕΡΙΛΗΨΗ P2P Εναλλακτική λύση των παραδοσιακών συστημάτων κεντρικών Η/Υ Κυριότερα συστήματα:napster κ Gnutella Μελέτη μέτρησης συστημάτων (μέτρηση
ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 15 Οκτωβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης:
Συνεχής ροή πολυµέσων
Συνεχής ροή πολυµέσων Εισαγωγή ικτυακά πρωτόκολλα Πολυµέσα και δίκτυα Συνεχής ροή Ροή από εξυπηρετητές ιστοσελίδων Ροή από εξυπηρετητές µέσων Πρωτόκολλο RTSP Πρωτόκολλο RTP οµή πακέτων RTP Πρωτόκολλο RTCP
ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα.
ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΘΕΜΑ Α ΚΥΡΙΑΚΗ 04/05/2014- ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΟΚΤΩ (8) ΕΚΦΩΝΗΣΕΙΣ Α1. Να χαρακτηρίσετε
Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP);
7.5. Πρωτόκολλο IP Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναμα πακέτα που μεταφέρονται ανεξάρτητα
Δίκτυα ΙΙ Τομέας Πληροφορικής,
Δίκτυα ΙΙ Τομέας Πληροφορικής, Γ τάξης ΕΠΑ.Λ. Απαντήσεις στις ερωτήσεις του σχ. βιβλίου ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Γ ΤΑΞΗ ΕΠΑ.Λ. Δίκτυα ΙΙ Τομέας Πληροφορικής, Γ τάξης ΕΠΑ.Λ. ΑΠΑΝΤΗΣΕΙΣ 6ου Κεφαλαίου Δίκτυα Η/Υ
Δρομολόγηση (Routing)
Δρομολόγηση (Routing) Περίληψη Flooding Η Αρχή του Βέλτιστου και Δυναμικός Προγραμματισμός ijkstra s Algorithm Αλγόριθμοi Δρομολόγησης Link State istance Vector Δρομολόγηση σε Κινητά Δίκτυα Δρομολόγηση
IRC Share. Πρόγραµµα ανταλλαγής αρχείων χωρίς την ύπαρξη εξυπηρετητών. Ανώτατο Τεχνολογικό Εκπαιδευτικό Ίδρυµα Κρήτης
IRC Share Πρόγραµµα ανταλλαγής αρχείων χωρίς την ύπαρξη εξυπηρετητών Ανώτατο Τεχνολογικό Εκπαιδευτικό Ίδρυµα Κρήτης Τµήµα Εφαρµοσµένης Πληροφορικής και Πολυµέσων Πτυχιακή εργασία από: Παπαδόπουλος Φώτης
ΘΕΜΑΤΑ ΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2006 / 2007
ΘΕΜΑΤΑ ΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2006 / 2007 Επιβλέπων : Επικ. Καθηγητής Σπύρος ενάζης Για περισσότερες πληροφορίες σχετικά µε τις παρακάτω διπλωµατικές εργασίες να επικοινωνήσετε µε τον Σπύρο ενάζη (sdena@ece.upatras.gr)
ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)
ΕΡΓΑΣΙΑ (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών) Τίτλος: Εφαρμογή Διαδικτύου Ηλεκτρονικού Καταστήματος Ζητούμενο: Να αναπτυχθεί web εφαρμογή,
Πανεπιστήµιο Ιωαννίνων Σχολή Θετικών Επιστηµών Τµήµα Πληροφορικής
Πανεπιστήµιο Ιωαννίνων Σχολή Θετικών Επιστηµών Τµήµα Πληροφορικής Topics in Database Systems: Data Management in Peer-to-Peer Systems Άρθρο Βιβλιογραφικής Επισκόπησης Χριστοδουλίδου Μαρία Ιωάννινα, 17
Εκλογή αρχηγού σε σύγχρονο δακτύλιο: Οι αλγόριθμοι LCR και HS. 1 Ο αλγόριθμος LCR (Le Lann, Chang, and Roberts)
Κ Σ Ι Εκλογή αρχηγού σε σύγχρονο δακτύλιο: Οι αλγόριθμοι LCR και HS Παναγιώτα Παναγοπούλου 1 Ο αλγόριθμος LCR (Le Lann, Chang, and Roberts) Ο αλγόριθμος LCR είναι ένας αλγόριθμος εκλογής αρχηγού σε ένα
ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ
Όπως έχουμε ήδη αναφέρει, τα δίκτυα τεχνολογίας / χρησιμοποιούν διεύθυνση 32 bits, προκειμένου να δρομολογήσουν ένα αυτοδύναμο πακέτο στο προορισμό του. Κατά σύμβαση έχει επικρατήσει οι διευθύνσεις να
Κατανεμημένα Συστήματα. Javascript LCR example
Κατανεμημένα Συστήματα Javascript LCR example Javascript JavaScript All JavaScript is the scripting language of the Web. modern HTML pages are using JavaScript to add functionality, validate input, communicate
ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ
ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Για να διεκπεραιωθεί η μεταφορά των πακέτων από την πηγή στον προορισμό μεταξύ των κόμβων του επικοινωνιακού υποδικτύου απαιτείται η
Κατανεμημένα Συστήματα. Ενότητα # 2: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Κατανεμημένα Συστήματα Ενότητα # 2: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα.
Δίκτυα ΙΙ. Κεφάλαιο 7
Δίκτυα ΙΙ Κεφάλαιο 7 Στο κεφάλαιο αυτό παρουσιάζεται ο τρόπος επικοινωνίας σε ένα δίκτυο υπολογιστών. Το κεφάλαιο εστιάζεται στο Επίπεδο Δικτύου του OSI (το οποίο είδατε στο μάθημα της Β Τάξης). Οι βασικές
SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ
Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ
Περίληψη ιπλωµατικής Εργασίας
Περίληψη ιπλωµατικής Εργασίας Θέµα: Εναλλακτικές Τεχνικές Εντοπισµού Θέσης Όνοµα: Κατερίνα Σπόντου Επιβλέπων: Ιωάννης Βασιλείου Συν-επιβλέπων: Σπύρος Αθανασίου 1. Αντικείµενο της διπλωµατικής Ο εντοπισµός
Εγχειρίδιο Φοιτητών. 1. Εισαγωγή
Εγχειρίδιο Φοιτητών 1. Εισαγωγή Η ηλεκτρονική πλατφόρµα «e-class», αποτελεί ένα ολοκληρωµένο σύστηµα Ασύγχρονης Τηλεκπαίδευσης. Στόχος της είναι παροχή υποδοµών εκπαίδευσης και κατάρτισης ανεξάρτητα από
Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε
Οµοφωνία σε σύστηµα µε αϖοτυχίες διεργασιών Παναγιώτα Φατούρου Κατανεµηµένα Συστήµατα 1 Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν
ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ
Ημέχρι τώρα περιγραφή των πρωτοκόλλων TCP/IP αποδεικνύει, ότι το πρωτόκολλο IP είναι υπεύθυνο για τη μεταφορά των αυτοδύναμων πακέτων στον προορισμό, που δηλώνεται από τη διεύθυνση προορισμού, αλλά δεν
Εγχειρίδιο Φοιτητών. 1. Εισαγωγή
Εγχειρίδιο Φοιτητών 1. Εισαγωγή Η ηλεκτρονική πλατφόρµα «e-class», αποτελεί ένα ολοκληρωµένο σύστηµα Ασύγχρονης Τηλεκπαίδευσης. Στόχος της είναι παροχή υποδοµών εκπαίδευσης και κατάρτισης ανεξάρτητα από
Σκοπιµότητα των firewalls
Σκοπιµότητα των firewalls Παρέχουν προστασία των εσωτερικών δικτύων από απειλές όπως: Μη εξουσιοδοτηµένη προσπέλαση των δικτυακών πόρων: όταν επίδοξοι εισβολείς προσπαθούν να εισχωρήσουν στο δίκτυο και
Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε
Οµοφωνία σε σύγχρονο σύστηµα µε αϖοτυχίες κατάρρευσης διεργασιών Παναγιώτα Φατούρου Κατανεµηµένος Υπολογισµός 1 Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash
Τεχνολογίες ιαδικτύου
Τεχνολογίες ιαδικτύου Εισαγωγή Αρχιτεκτονική, Πρωτόκολλα και Πρότυπα Βασικών Υπηρεσιών Ιστορικά Στοιχεία ARPANET Ο «παππούς» των δικτύων Αναπτύχθηκε από την DARPA στα τέλη του 60 Το 83 διασπάται σε MILNET
Περίληψη. Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων.
Τοπικά Δίκτυα Περίληψη Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων. Αναµεταδότες, Γέφυρες, Μεταγωγείς, δροµολογητές και Πύλες (repeaters, hubs, bridges, switches, routers,
Λύσεις Παλιών Θεµάτων. Συστήµατα Παράλληλης Επεξεργασίας, 9ο εξάµηνο Υπεύθ. Καθ. Νεκτάριος Κοζύρης
Λύσεις Παλιών Θεµάτων Συστήµατα Παράλληλης Επεξεργασίας, 9ο εξάµηνο Υπεύθ. Καθ. Νεκτάριος Κοζύρης Θέµα Φεβρουάριος 2003 1) Έστω ένας υπερκύβος n-διαστάσεων. i. Να βρεθεί ο αριθµός των διαφορετικών τρόπων
Δίκτυα Υπολογιστών Ενότητα 7: Internet Control Message Protocol - ICMP
Δίκτυα Υπολογιστών Ενότητα 7: Internet Control Message Protocol - ICMP Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
HΥ463 - Συστήματα Ανάκτησης Πληροφοριών Information Retrieval (IR) Systems. Μέρος Γ Συστήματα Ομοτίμων (Peer-to-Peer Systems) και Ανάκτηση Πληροφοριών
Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Άνοιξη 007 HΥ463 - Συστήματα Ανάκτησης Πληροφοριών Information Retrieval (IR) Systems Γιάννης Τζίτζικας ιάλεξη : 17b Ημερομηνία : 30-5-007 Μέρος Γ Συστήματα
Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή
Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή 8.1 Τακτική σάρωση (Polling) Ας υποθέσουμε ότι έχουμε ένα πληκτρολόγιο συνδεδεμένο σε ένα υπολογιστικό σύστημα. Το πληκτρολόγιο είναι μια μονάδα εισόδου.
ΔΡΟΜΟΛΟΓΗΣΗ ΠΑΚΕΤΩΝ. Η δρομολόγηση των πακέτων μπορεί να γίνει είτε κάνοντας χρήση ασυνδεσμικής υπηρεσίας είτε συνδεσμοστρεφούς υπηρεσίας.
ΕΠΙΠΕΔΟ ΔΙΚΤΥΟΥ Το επίπεδο δικτύου ασχολείται με τη μεταφορά πακέτων από την προέλευσή τους μέχρι τον προορισμό τους. Επιλέγει τις κατάλληλες διαδρομές από τους διάφορους δρομολογητές ώστε ένα πακέτο να
Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?
Μετάδοση Δεδομένων Δίκτυα Υπολογιστών 68 Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της Απάντηση : Στα δίκτυα μεταγωγής κυκλώματος (circuit switching networks), η μετάδοση των
Βασικές έννοιες. Κατανεμημένα Συστήματα 1
Βασικές έννοιες Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Ορισμός κατανεμημένου συστήματος Ένα σύστημα από ξεχωριστές ενεργές οντότητες (ονομάζονται «κόμβοι» ή «διεργασίες») που εκτελούνται ταυτόχρονα/ανεξάρτητα
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΔΙΔΑΚΤΙΚΗΣ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
ΤΜΗΜΑ ΔΙΔΑΚΤΙΚΗΣ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΚΑΤΕΥΘΥΝΣΗ : ΨΗΦΙΑΚΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ & ΔΙΚΤΥΑ Διπλωματική Εργασία Μελέτη των Μηχανισμών ασφάλειας που εφαρμόζονται
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016
Τεχνολογία Πολυμέσων. Ενότητα # 16: Πολυεκπομπή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Τεχνολογία Πολυμέσων Ενότητα # 16: Πολυεκπομπή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα.
Κατανεμημένα Συστήματα Ασκήσεις.
Κατανεμημένα Συστήματα Ασκήσεις 2016-2017 http://www.cslab.ece.ntua.gr/courses/distrib Άσκηση 1 3 διεργασίες, η P1, η P2 και η P3 στέλνουν μεταξύ τους multicast μηνύματα. Σε περίπτωση που θέλουμε να εξασφαλίσουμε:
7.6 ιευθυνσιοδότηση. Ερωτήσεις
7.6 ιευθυνσιοδότηση Ερωτήσεις 1. Να εξηγήσετε τους όρους διεύθυνση, όνοµα και διαδροµή στην τεχνολογία TCP/IP και να εξηγήσετε πώς σχετίζονται αυτοί µεταξύ τους. 2. Τι είναι η φυσική διεύθυνση ή διεύθυνση
Κινητά και Διάχυτα Συστήματα. Ενότητα # 5: Κατανεμημένοι πίνακες κατακερματισμού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής
Κινητά και Διάχυτα Συστήματα Ενότητα # : Κατανεμημένοι πίνακες κατακερματισμού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του
Αντί προλόγου. 1. Τι είναι το Twitter;
Περιεχόµενα Αντί προλόγου...7 Πώς να χρησιµοποιήσετε το βιβλίο...13 Κεφάλαιο 1: Πώς δηµιουργώ τον λογαριασµό µου στο Twitter;...15 Κεφάλαιο 2: Πώς µπορώ να συνδεθώ και να αποσυνδεθώ από το Twitter;...37
Επίπεδο Δικτύου: Διαδικτύωση
Επίπεδο Δικτύου: Διαδικτύωση Μάθημα «Δίκτυα Υπολογιστών» Τμήμα Πληροφορικής Οικονομικό Πανεπιστήμιο Αθηνών Εαρινό Εξάμηνο 2013-14 Γεώργιος Ξυλωμένος Γεώργιος Δ. Σταμούλης Βασίλειος Σύρης Εισαγωγή Υπάρχει
Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
ΡΟΜΟΛΟΓΗΣΗ ΣΕ ΥΠΕΡΚΕΙΜΕΝΑ ΙΚΤΥΑ ROUTING IN OVERLAY NETWORKS
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ TΟΜΕΑΣ ΕΠΙΚΟΙΝΩΝΙΩΝ, ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΡΟΜΟΛΟΓΗΣΗ ΣΕ ΥΠΕΡΚΕΙΜΕΝΑ ΙΚΤΥΑ ROUTING IN OVERLAY NETWORKS
Διάρθρωση. Δίκτυα Υπολογιστών I Δίκτυα Μεταγωγής και Διαδίκτυα: Μέρος Β. Διάρθρωση. Αναγκαιότητα της διευθυνσιοδότησης. Ευάγγελος Παπαπέτρου
Δίκτυα Υπολογιστών I Δίκτυα Μεταγωγής και Διαδίκτυα: Μέρος Β Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων 2 Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) MYY703: Δίκτυα Υπολογιστών I 1
ιαδίκτυα και το ιαδίκτυο (Internetworking and the Internet)
ιαδίκτυα και το ιαδίκτυο (Internetworking and the Internet) Περίληψη Πως τα διάφορα δίκτυα διαφέρουν µεταξύ τους Πως συνδέονται ανοµοιογενή δίκτυα µεταξύ τους Εικονικά κυκλώµατα συνδεδεµένα σε σειρά ιαδικτύωση
ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET
ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 4: Τεχνικές Μετάδοσης ΜΕΤΑΓΩΓΗ Τεχνική µεταγωγής ονομάζεται ο τρόπος µε τον οποίο αποκαθίσταται η επικοινωνία ανάµεσα σε δύο κόµβους με σκοπό την
Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε
Οµοφωνία σε σύστηµα µε αϖοτυχίες κατάρρευσης διεργασιών Παναγιώτα Φατούρου Κατανεµηµένα Συστήµατα 1 Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες
Κατανεμημένα Συστήματα Ι
Κατανεμημένα Συστήματα Ι Εκλογή αρχηγού και κατασκευή BFS δένδρου σε σύγχρονο γενικό δίκτυο Παναγιώτα Παναγοπούλου Περίληψη Εκλογή αρχηγού σε γενικά δίκτυα Ορισμός του προβλήματος Ο αλγόριθμος FloodMax