Εργαστήριο 5 ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΔΙΚΤΥΑ Η/Υ OSPF : Open Shortest Path First Στόχος Πρωτόκολλο δρομολόγησης βασισμένο στον αλγόριθμο Κατάστασης Συνδέσμου Ο στόχος του εργαστηρίου είναι να αναπτυχθεί ένα μοντέλο δικτύου με το οποίο θα αναλυθεί η απόδοση του πρωτοκόλλου δρομολόγησης OSPF (Open Shortest Path First). Περίληψη Στο προηγούμενο εργαστήριο αναλύσαμε την λειτουργία και συμπεριφορά του πρωτοκόλλου RIP, το οποίο είναι βασισμένο στον αλγόριθμο διανύσματος-απόστασης. Το πρωτόκολλο OSPF που θα δούμε σε αυτό το εργαστήριο λειτουργεί με βάση τον αλγόριθμο κατάστασης συνδέσμου. Η δρομολόγηση με βάση αυτόν τον αλγόριθμο ανήκει στην δεύτερη βασική κατηγορία των intra-domain πρωτοκόλλων δρομολόγησης. Η βασική ιδέα του αλγόριθμου δρομολόγησης κατάστασης συνδέσμου είναι απλή. Κάθε κόμβος γνωρίζει τους άμεσα συνδεδεμένους γειτονικούς του κόμβους και εάν το σύνολο της γνώσης αυτής μεταδοθεί σε κάθε κόμβο, τότε κάθε κόμβος θα γνωρίζει αρκετές πληροφορίες ώστε να μπορεί να κατασκευάσει τον χάρτη του δικτύου. Από την στιγμή που κάθε κόμβος διαθέτει τον χάρτη του δικτύου μπορεί να επιλέξει την βέλτιστη διαδρομή για κάθε προορισμό. Ο υπολογισμός των βέλτιστων διαδρομών βασίζεται σε έναν αλγόριθμο από την θεωρία των γράφων στον αλγόριθμο του μικρότερου μονοπατιού του Dijkstra. Το OSPF εισάγει ένα πρόσθετο επίπεδο στην δρομολόγηση με το να επιτρέπει ένα domain να τμηματοποιείται σε περιοχές. Αυτό σημαίνει ότι ένας δρομολογητής δεν απαιτείται να γνωρίζει πως να προσπελάσει το κάθε δίκτυο στο domain αυτό, του είναι αρκετό να γνωρίζει το πως θα στείλει πληροφορίες προς την σωστή περιοχή. Με αυτόν τον τρόπο υπάρχει σημαντική μείωση στον όγκο των πληροφοριών που πρέπει να μεταδίδεται και να αποθηκεύεται σε κάθε δρομολογητή. Επιπλέον το OSPF επιτρέπει την ύπαρξη πολλαπλών διαδρομών για έναν προορισμό με το ίδιο κόστος, ώστε να κατανέμεται η κίνηση ομοιόμορφα σε αυτές τις διαδρομές. Σε αυτό το εργαστήριο θα σχεδιάσουμε ένα δίκτυο που χρησιμοποιεί ως πρωτόκολλο δρομολόγησης το OSPF. Θα αναλύσουμε τους πίνακες δρομολόγησης που δημιουργούνται στους δρομολογητές και θα παρατηρήσουμε το πως επηρεάζονται οι διαδρομές με την ενεργοποίηση περιοχών δρομολόγησης και τεχνικές εξισορρόπησης του φόρτου (load balancing). 1
Διαδικασία 1. Δημιουργία νέου project 1. Ανοίξτε το OPNET IT Guru Academic Edition Επιλέξτε New από το μενού File. 2. Επιλέξτε Project και πατήστε ΟΚ Ονομάστε το project <τα αρχικά σας (στα αγγλικά)>_ospf (π.χ. dp_ospf αν το ονοματεπώνυμο σας είναι Δημήτρης Παπαδόπουλος). Ονομάστε το σενάριο No_Areas και πατήστε ΟΚ. 3. Στο πλαίσιο διαλόγου Startup Wizard: Initial Topology, επιλέξτε Create Empty Scenario πατήστε Next επιλέξτε Campus από την λίστα Network Scale πατήστε Next τρείς φορές πατήστε ΟΚ. 2. Δημιουργία και Διαμόρφωση δικτύου Αρχικοποίηση Δικτύου 1. Το πλαίσιο Object Palette πρέπει να βρίσκεται μπροστά από το παράθυρο του project. Εάν πλαίσιο Object Palette δεν είναι ορατό, μπορείτε να το ανοίξετε επιλέγοντας. Αν το πλαίσιο αυτό δεν είναι σε βολική θέση στην οθόνη, μπορείτε να το μετακινήσετε σέρνοντας το από τον τίτλο και να αλλάξετε το μέγεθός του σέρνοντας μία από τις τέσσερις γωνίες του. Επιλέξτε το routers στο pull-down μενού του πλαισίου Object Palette. 2. Προσθέστε στον χώρο του project οκτώ αντικείμενα τύπου slip8_gtwy. a. Για να προσθέσετε ένα αντικείμενο από την παλέτα, κάντε κλικ στο εικονίδιό του στην παλέτα μετακινήστε το ποντίκι σας στον χώρο εργασίας (workspace) πατήστε αριστερό κλικ για να τοποθετήσετε το αντικείμενο. Πατήστε δεξί-κλικ όταν τελειώσετε. 3. Επιλέξτε από την παλέτα διαμόρφωσης το σύνολο αντικειμένων internet_toolbοx. Χρησιμοποιήστε τις συνδέσεις PPP_DS3 για να συνδέσετε του δρομολογητές όπως φαίνεται στην παρακάτω εικόνα. Μετονομάστε τους δρομολογητές όπως φαίνεται την παρακάτω εικόνα. 4. Κλείστε την παλέτα αντικειμένων και αποθηκεύστε το project. 2
Διαμόρφωση του κόστους των Συνδέσεων 1. Στη συνέχεια θέλουμε να προσδιορίσουμε το κόστος των συνδέσεων σύμφωνα με το ακόλουθο γράφημα. 2. Τα μοντέλα δρομολογητών του OPNET για τον υπολογισμό του πραγματικού κόστους διαθέτουν μία παράμετρο που ονομάζεται reference bandwidth, με την χρήση αυτής το κόστος υπολογίζεται ως εξής : Cost = (Reference bandwidth) / (Link bandwidth) Η εξ ορισμού τιμή του reference bandwidth είναι 1,000,000 Kbps. 3. Για παράδειγμα, για να προσδιορίσουμε σε ένα link κόστος 5, η τιμή του Link bandwidth θα είναι 200,000 Kbps. Η τιμή αυτή δεν αντιπροσωπεύει το πραγματικό bandwidth της σύνδεσης με την έννοια της ταχύτητας μετάδοσης, αλλά αποτελεί παράμετρο για τον καθορισμό του κόστους της σύνδεσης. 4. Για να αναθέσετε τα κόστη στις συνδέσεις του δικτύου, εκτελέστε τις ακόλουθες ενέργειες : I. Επιλέξτε όλες τις συνδέσεις του δικτύου που θέλετε να έχουν κόστος 5 στο παραπάνω γράφημα χρησιμοποιώντας το πλήκτρο shift και κάνοντας κλικ πάνω τους. II. Επιλέξτε από το μενού Protocols --> IP --> Routing --> Configure Interface Metric Information. III. Στο πεδίο Bandwidth (Kbps) εισαγάγετε 200000 --> Επιλέξτε το ραδιοπλήκτρο Interfaces across selected links, όπως φαίνεται παρακάτω --> Πατήστε OK. 3
5. Επαναλάβετε το βήμα 4 για όλες τις συνδέσεις με κόστος 10 αλλά θέστε στο πεδίο Bandwidth (Kbps) την τιμή 100,000 Kbps. 6. Επαναλάβετε το βήμα 4 και για όλες τις συνδέσεις με κόστος 20 και τιμή 50,000 Kbps στο πεδίο Bandwidth (Kbps). 7. Αποθηκεύστε το project. Διαμόρφωση των απαιτήσεων κίνησης 1. Επιλέξτε τον RouterA και τον RouterC χρησιμοποιώντας το πλήκτρο shift και κάνοντας κλικ πάνω τους. i. Επιλέξτε από το μενού Protocols --> IP --> Demands --> Create Traffic Demands --> Επιλέξτε το ραδιοπλήκτρο From RouterA όπως φαίνεται στην ακόλουθη εικόνα. --> Πατήστε Create. ii. Θα πρέπει να δείτε μία διακεκομμένη μπλε γραμμή που αναπαριστά την απαίτηση της κίνησης μεταξύ του RouterA και του RouterC. 2. Επιλέξτε τον RouterB και τον RouterH χρησιμοποιώντας το πλήκτρο shift και κάνοντας κλικ πάνω τους. 4
i. Επιλέξτε από το μενού Protocols --> IP --> Demands --> Create Traffic Demands --> Επιλέξτε το ραδιοπλήκτρο From RouterB --> αλλάξτε το χρώμα σε κόκκινο --> Πατήστε Create. Τώρα μπορούμε να δούμε τις γραμμές που αναπαριστούν τις απαιτήσεις κίνησης όπως φαίνεται παρακάτω. 3. Για να κρύψετε αυτές τις γραμμές : Από το μενού View --> Επιλέξτε Demand Objects --> Hide All. 4. Αποθηκεύεστε το project. Διαμόρφωση του πρωτοκόλλου Δρομολόγησης και των Διευθύνσεων 1. Επιλέξτε από το μενού Protocols --> IP --> Routing --> Configure Routing Protocols. 2. Επιλέξτε το checkbox OSPF --> Αποεπιλέξτε το checkbox RIP και το Visualize Routing Domains όπως φαίνεται παρακάτω : 3. Πατήστε OK. 5
4. Επιλέξτε τον RouterA και τον RouterB μόνο --> Επιλέξτε από το μενού Protocols --> IP --> Routing --> Export Routing Table for Selected Routers -- > Πατήστε OK στο πλαίσιο διαλόγου Status Confirm. 5. Επιλέξτε από το μενού Protocols --> IP --> Addressing --> Auto-Assign IP Addresses. 6. Αποθηκεύστε το project. 3. Διαμόρφωση των παραμέτρων προσομοίωσης Στην συνέχεια θέλουμε να καθορίσουμε τις παραμέτρους της προσομοίωσης : 1. Κάντε κλικ στο κουμπί Configure/Run Simulation 2. Θέστε την διάρκεια στα 10 λεπτά. 3. Πατήστε OK και μετά αποθηκεύστε το project. 4. Αντιγραφή του σεναρίου Στο δίκτυο που μόλις δημιουργήσαμε, οι δρομολογητές ανήκουν σε ένα επίπεδο ιεραρχίας (πχ. μία περιοχή). Επίσης δεν ενεργοποιήσαμε load balancing σε κάποια από τις διαδρομές. Στη συνέχεια θα δημιουργήσουμε δύο νέα σενάρια. Το πρώτο νέο σενάριο θα καθορίζει δύο νέες περιοχές, επιπλέον του δικτύου κορμού. Το δεύτερο νέο σενάριο θα καθορίζει load balance για τις απαιτήσεις κίνησης μεταξύ του RouterB και του RouterH. Σενάριο Area 1. Δημιουργήστε ένα νέο σενάριο επιλέγοντας Duplicate Scenario από το μενού Scenarios και δώστε του το όνομα Areas Πατήστε ΟΚ. 2. Καθορισμός της περιοχής 0.0.0.1: i. Επιλέξτε τις τρεις συνδέσεις που συνδέουν τους δρομολογητές RouterA, RouterB, και RouterC χρησιμοποιώντας το πλήκτρο shift και κάνοντας κλικ πάνω τους. ii. Επιλέξτε από το μενού Protocols --> OSPF --> Configure Areas --> Θέστε τις τιμές 0.0.0.1 στο πεδίο Area Identifier, όπως φαίνεται παρακάτω --> Πατήστε OK. 6
iii. Κάντε δεξί-κλικ στον RouterC --> Edit Attributes --> Επεκτείνετε την ιεραρχία OSPF Parameters --> Επεκτείνετε την ιεραρχία Loopback Interfaces --> Επεκτείνετε το row0 --> Θέστε στο χαρακτηριστικό Area ID τιμή 0.0.0.1 --> Πατήστε OK. 3. Καθορισμός της περιοχής 0.0.0.2: i. Κάντε κλικ κάπου μέσα στο project workspace για να αποεπιλέξετε τα links και επαναλάβετε τα βήματα 2-i, 2-ii για τα τρία link που συνδέουν τους RouterF, RouterG, και RouterH αλλά εισάγετε την τιμή 0.0.0.2 στο πεδίο Area Identifier. 4. Για να εμφανιστούν οι περιοχές που δημιουργήθηκαν επιλέξτε από το μενού Protocols --> OSPF --> Visualize Areas --> Πατήστε OK. Το δίκτυο θα πρέπει να φαίνεται όπως παρακάτω με τα διαφορετικά χρώματα να αναπαριστούν την κάθε περιοχή. Σημείωση: - Η περιοχή που δεν καθορίστηκε αποτελεί το δίκτυο κορμού με Area Identifier = 0.0.0.0. Σενάριο Balanced 1. Από το μενού Scenarios --> Switch to Scenario --> Επιλέξτε No_Areas. 2. Επιλέξτε Duplicate Scenario από το μενού Scenarios, και ονομάστε το νέο σενάριο Balanced --> Πατήστε OK. 3. Στο νέο σενάριο, επιλέξτε τον RouterB και τον RouterH χρησιμοποιώντας το πλήκτρο shift και κάνοντας κλικ πάνω τους. 7
4. Επιλέξτε από το μενού Protocols --> IP --> Routing --> Configure Load Balancing Options --> επιλέξτε την επιλογή Packet-Based και το ραδιοπλήκτρο Selected Routers όπως φαίνεται παρακάτω --> Πατήστε OK. 5. Αποθηκεύστε το project. 5. Εκτέλεση της προσομοίωσης Για να εκτελεστεί η προσομοίωση και για τα τρία σενάρια: 1. Από το μενού Scenario Επιλέξτε Manage Scenarios. 2. Αλλάξτε την τιμή στην στήλη Results σε <collect> και για τα τρία σενάρια. 3. Πατήστε ΟΚ για να εκτελεστούν οι τρεις προσομοιώσεις. Ανάλογα με την ταχύτητα του επεξεργαστή αυτό μπορεί να διαρκέσει μερικά δευτερόλεπτα. 4. Αφού ολοκληρωθούν οι εκτελέσεις των προσομοιώσεων πατήστε Close. 5. Αποθηκεύστε το project. 6. Επισκόπηση των αποτελεσμάτων Σενάριο No_Areas: 1. Μεταβείτε στο σενάριο No_Areas. 2. Για να εμφανίσετε την διαδρομή για την κίνηση μεταξύ του RouterA και του RouterC: Επιλέξτε από το μενού Protocols --> IP --> Demands --> Display Routes for Configured Demands --> Επεκτείνετε την ιεραρχία όπως φαίνεται στην 8
παρακάτω εικόνα και επιλέξτε RouterA --> RouterC --> Πηγαίνετε στην στήλη Display και επιλέξτε Yes --> Πατήστε Close. 3. Η διαδρομή θα πρέπει να φαίνεται όπως παρακάτω 4. Επαναλάβετε το βήμα 2 για να δείτε την διαδρομή της κίνησης μεταξύ των RouterB και RouterH. Η διαδρομή είναι όπως φαίνεται παρακάτω. (Σημείωση: Ανάλογα με την σειρά που δημιουργήσατε την τοπολογία του δικτύου, μπορεί να χρησιμοποιηθεί η διαδρομή με το ίδιο κόστος ( equal-cost ), δηλαδή η διαδρομή RouterB-RouterA-RouterD-RouterF-RouterH). Σενάριο Area: 1. Μεταβείτε στο σενάριο Areas. 2. Εμφανίστε την διαδρομή για απαίτηση κίνησης μεταξύ των RouterA και RouterC. Η διαδρομή αυτή είναι όπως παρακάτω: 9
3. Αποθηκεύστε το project Σενάριο Balanced: 1. Μεταβείτε στο σενάριο Balanced. 2. Εμφανίστε την διαδρομή για απαίτηση κίνησης μεταξύ των RouterB και RouterH. Η διαδρομή αυτή είναι όπως παρακάτω: 10
Ερωτήσεις Ερώτηση 1 Εξηγήστε γιατί στα σενάρια Areas και Balanced οι διαδρομές είναι διαφορετικές από την διαδρομή του σεναρίου No_Areas, για το ίδιο ζευγάρι δρομολογητών. Ερώτηση 2 Χρησιμοποιώντας το simulation log, εξετάστε τον πίνακα δρομολόγησης που δημιουργήθηκε στον RouterA σε κάθε ένα από τα τρία σενάρια. Εξηγήστε τις τιμές της στήλης Metric για κάθε διαδρομή. Σημείωση: - Θα χρειαστεί να θέσετε στο καθολικό χαρακτηριστικό IP Interface Addressing Mode την τιμή Auto Addressed/Export και να εκτελέσετε ξανά την προσομοίωση. - Για να δείτε τις IP διευθύνσεις address για όλα τα interfaces, χρειάζεται να ανοίξετε το Generic Data File που περιέχει τις IP διευθύνσεις που σχετίζονται με τα σενάρια. 11
Ερώτηση 3 Το OPNET μας επιτρέπει να εξετάσουμε την link-state database που χρησιμοποιείται από κάθε δρομολογητή για να κατασκευάσει το κατευθυνόμενο γράφημα του δικτύου. Εξετάστε αυτήν την βάση για τον RouterA στο σενάριο No_Areas. Εξηγήστε το πως ο RouterA χρησιμοποιεί την βάση αυτή για να δημιουργήσει τον χάρτη της τοπολογίας του δικτύου και σχεδιάστε τον χάρτη (Αυτός είναι ο χάρτης που θα χρησιμοποιηθεί αργότερα από τον δρομολογητή για να δημιουργήσει το πίνακα δρομολόγησης). Σημείωση: - Για να εξάγετε την link-state database ενός δρομολογητή, κάντε Edit τα χαρακτηριστικά του δρομολογητή και θέστε την παράμετρο Link State Database Export (OSPF Parameters, κάτω από το Processes) σε Once at End of Simulation. - Θα χρειαστεί να δώσετε στο καθολικό χαρακτηριστικό IP Interface Addressing Mode την τιμή Auto Addressed/Export. Αυτό θα μας επιτρέψει να ελέγξουμε το IP διευθύνσεις των interfaces του δικτύου. - Αφού ξαναεκτελέσετε την προσομοίωση μπορείτε να ελέγξετε την link-state database από το ιστορικό αρχείο της προσομοίωσης (simulation log) από το μενού Results. Η link-state database είναι διαθέσιμη στο Classes --> OSPF --> LSDB_Export. Ερώτηση 4 Δημιουργήστε ένα νέο σενάριο αντίγραφο του σεναρίου No_Areas. Ονομάστε το νέο σενάριο Q4_No_Areas_Failure. Σε αυτό το νέο σενάριο προσομοιώστε την πτώση (failure) της σύνδεσης που συνδέει τους RouterD και RotuerE. Η αποτυχία αυτή να ξεκινήσει στα 100 δευτερόλεπτα. Εκτελέστε ξανά την προσομοίωση. Δείξτε το πως η πτώση της σύνδεσης επηρεάζει το περιεχόμενο της βάσης κατάστασης συνδέσμου και τον πίνακα δρομολόγησης του RouterA. (Θα χρειαστεί να απενεργοποιήσετε το καθολικό χαρακτηριστικό OSPF Sim Efficiency. Αυτό θα επιτρέψει το OSPF να ενημερώσει τον πίνακα δρομολόγησης εάν υπάρχει κάποια αλλαγή στο δίκτυο.) 12