Εργαστήριο 6 ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΔΙΚΤΥΑ Η/Υ TCP : Transmission Control Protocol Μία αξιόπιστη προσανατολισμένη σε σύνδεση υπηρεσία μεταφοράς ρεύματος δεδομένων Στόχος Το εργαστήριο αυτό έχει σχεδιαστεί για να δείξει τους αλγόριθμους ελέγχου συμφόρησης που υλοποιούνται από το Πρωτόκολλο Ελέγχου Μετάδοσης (Transmission Control Protocol (TCP)). Το εργαστήριο περιλαμβάνει έναν αριθμό από σενάρια για να προσομοιώσει τους αλγόριθμους αυτούς. Θα συγκρίνουμε την απόδοση των αλγορίθμων αυτών μέσω της ανάλυσης των αποτελεσμάτων της προσομοίωσης. Περίληψη Το TCP εξασφαλίζει την αξιόπιστη και με σωστή σειρά παράδοση ενός ρεύματος δεδομένων. Διαθέτει έναν μηχανισμό ελέγχου ροής για τα ρεύματα δεδομένων που επιτρέπει στον αποδέκτη να περιορίσει τον όγκο των δεδομένων που επιτρέπεται να μεταδώσει ο αποστολέας τη συγκεκριμένη χρονική στιγμή. Επιπρόσθετα υλοποιεί έναν ιδιαίτερα συντονισμένο μηχανισμό ελέγχου συμφόρησης. Η ιδέα του μηχανισμού αυτού είναι να περιορίζει την ταχύτητα αποστολής των δεδομένων ώστε ο αποστολέας να μην υπερφορτώνει το δίκτυο. Η ιδέα του ελέγχου συμφόρησης του TCP είναι ότι κάθε πηγή μπορεί να προσδιορίσει την χωρητικότητα του δικτύου που είναι διαθέσιμη, ώστε να καθορίζει με ασφάλεια το πλήθος των πακέτων που μπορούν να μεταδοθούν. Το TCP διατηρεί μία μεταβλητή κατάστασης για κάθε σύνδεση, που ονομάζεται congestion window (παράθυρο συμφόρησης), που χρησιμοποιείται από την πηγή για να περιορίσει το πλήθος των δεδομένων που επιτρέπεται να βρίσκονται σε μετάβαση σε μία δεδομένη χρονική στιγμή. 1
Το TCP χρησιμοποιεί έναν μηχανισμό που ονομάζεται προσθετική αύξηση/πολλαπλασιαστική μείωση (additive increase/multiplicative decrease), που μειώνει το παράθυρο συμφόρησης όταν αυξάνεται το επίπεδο της συμφόρησης και το αυξάνει όταν μειώνεται το επίπεδο της συμφόρησης. Το TCP ερμηνεύει τα packet timeouts ως ένδειξη συμφόρησης. Κάθε φορά που συμβαίνει ένα timeout, η πηγή θέτει το παράθυρο συμφόρησης στην ελάχιστη τιμή του ίσο με το μέγιστο μέγεθος ενός TCP τομέα. Αυτή η ραγδαία μείωση του παραθύρου ανταποκρίνεται στο τμήμα της πολλαπλασιαστικής μείωσης του μηχανισμού. Το παράθυρο συμφόρησης δεν επιτρέπεται να πέσει κάτω από το μέγεθος ενός πακέτου (το μέγιστο μέγεθος ενός TCP τομέα, maximum segment size -MSS). Κάθε φορά που η πηγή στέλνει με επιτυχία αριθμό πακέτων ίσο με το τρέχον παράθυρο συμφόρησης, τότε προστίθεται το ισότιμο ενός πακέτου στο παράθυρο συμφόρησης, αυτό αποτελεί το τμήμα της προσθετικής αύξησης του μηχανισμού. Το TCP χρησιμοποιεί έναν μηχανισμό που ονομάζεται αργή αρχή (slow start) για να αυξήσει το παράθυρο συμφόρησης στην αρχή των συνδέσεων ή μετά από συμφόρηση (ο όρος slow start είναι μάλον ατυχής). Αυτό αυξάνει το παράθυρο συμφόρησης εκθετικά, αντί για γραμμικά. Τέλος το TCP χρησιμοποιεί έναν μηχανισμό που ονομάζεται γρήγορη επαναμετάδοση (fast retransmit) και γρήγορη ανάκτηση (fast recovery). Η γρήγορη επαναμετάδοση είναι ένας μηχανισμός που μερικές φορές πυροδοτεί την επαναμετάδοση ενός πακέτου που έχει κοπεί, νωρίτερα από τον κανονικό μηχανισμό timeout. Σε αυτό το εργαστήριο θα αναπτύξουμε ένα δίκτυο που χρησιμοποιεί το TCP ως το end-to-end πρωτόκολλο μετάδοσης και θα αναλύσουμε το μέγεθος του παραθύρου συμφόρησης με διαφορετικούς μηχανισμούς. Διαδικασία 1. Δημιουργία νέου project 1. Ανοίξτε το OPNET IT Guru Academic Edition Επιλέξτε New από το μενού File. 2. Επιλέξτε Project και πατήστε ΟΚ Ονομάστε το project <τα αρχικά σας (στα αγγλικά)>_tcp (π.χ. dp_tcp αν το ονοματεπώνυμο σας είναι Δημήτρης Παπαδόπουλος). Ονομάστε το σενάριο No_Drop και πατήστε ΟΚ. 3. Στο πλαίσιο διαλόγου Startup Wizard: Initial Topology, επιλέξτε Create Empty Scenario πατήστε Next επιλέξτε Choose From Maps από την λίστα Network Scale πατήστε Next Επιλέξτε Europe από την λίστα --> επιλέξτε Next δύο φορές --> πατήστε ΟΚ. 2. Δημιουργία και Διαμόρφωση δικτύου Αρχικοποίηση Δικτύου 1. Το πλαίσιο Object Palette πρέπει να βρίσκεται μπροστά από το παράθυρο του project. Εάν πλαίσιο Object Palette δεν είναι ορατό, μπορείτε να το ανοίξετε 2
επιλέγοντας. Αν το πλαίσιο αυτό δεν είναι σε βολική θέση στην οθόνη, μπορείτε να το μετακινήσετε σέρνοντας το από τον τίτλο και να αλλάξετε το μέγεθός του σέρνοντας μία από τις τέσσερις γωνίες του. Βεβαιωθείτε ότι στο pull-down μενού του πλαισίου Object Palette είναι επιλεγμένο το internet_toolbox. 2. Προσθέστε στον χώρο του project τα εξής αντικείμενα από την παλέτα : Application Config, Profile Config, ένα IP32_Cloud και δύο υποδίκτυα (subnets). a. Για να προσθέσετε ένα αντικείμενο από την παλέτα, κάντε κλικ στο εικονίδιό του στην παλέτα μετακινήστε το ποντίκι σας στον χώρο εργασίας (workspace) πατήστε αριστερό κλικ για να τοποθετήσετε το αντικείμενο. Πατήστε δεξί-κλικ όταν τελειώσετε. 3. Μετονομάστε τα αντικείμενα που προσθέσατε όπως φαίνεται την παρακάτω εικόνα και αποθηκεύστε το project. Το μοντέλλο IP32_Cloud αναπαριστά ένα IP δίκτυο με 32 σειριακές συνδέσεις επιλέγόμενης ταχύτητας, το οποίο προσωμοιώνει IP κίνηση. Πακέτα ΙΡ τα οποία εισέρχονται σε κάποια σειριακή σύνδεση δρομολογούνται στην κατάλληλη σειριακή σύνδεση εξόδου, ανάλογα με την ΙΡ διεύθυνσή τους. Τα πρωτόκολλα RIP ή OSFP μπορούν να χρησιμοποιηθούν για την αυτόματη δημιουργία των πινάκων δρομολόγησης του IP32_Cloud. Το cloud χρειάζεται σταθερό χρόνο για την μεταγωγή κάθε πακέτου, που καθορίζεται από το χαρακτηριστικό Packet Latency. Διαμόρφωση των Εφαρμογών 1. Κάντε δεξί-κλικ στον κόμβο Applications --> Edit Attributes --> Επεκτείνετε τα χαρακτηριστικά του Application Definitions και θέστε το rows σε 1 --> επεκτείνετε την νέα γραμμή --> Ονομάστε την γραμμή FTP_Application. i. Επεκτείνετε την ιεραρχία Description --> Αλλάξτε την γραμμή FTP όπως φαίνεται παρακάτω (θα χρειαστεί να θέσετε το Special Value σε Not Used) : 3
2. Πατήστε δύο φορές OK και μετά αποθηκεύστε το project. Διαμόρφωση των Προφίλ 1. Κάντε δεξί-κλικ στον κόμβο Profiles --> Edit Attributes --> Επεκτείνετε τα χαρακτηριστικά του Profile Configuration και θέστε το rows σε 1. i. Ονομάστε και θέστε τις τιμές των χαρακτηριστικών της γραμμής όπως φαίνεται παρακάτω --> Πατήστε ΟΚ. 4
Διαμόρφωση του υποδικτύου West 1. Κάντε διπλό-κλικ στον κόμβο του υποδικτύου West. Θα δούμε ότι η περιοχή εργασίας είναι κενή. Αυτό σημαίνει ότι το υποδίκτυο δεν περιέχει αντικείμενα. 2. Το πλαίσιο Object Palette πρέπει να βρίσκεται μπροστά από το παράθυρο του project. Εάν πλαίσιο Object Palette δεν είναι ορατό, μπορείτε να το ανοίξετε επιλέγοντας. Βεβαιωθείτε ότι στο pull-down μενού του πλαισίου Object Palette είναι επιλεγμένο το internet_toolbox. 3. Προσθέστε στα εξής αντικείμενα στον χώρο εργασίας : έναν ethernet_server, έναν δρομολογητή ethernet4_slip8_gtwy, και συνδέστε τα με έναν αμφίδρομο 100_BaseT link --> Κλείστε την παλέτα --> Μετονομάστε τα αντικείμενα όπως φαίνεται παρακάτω. 4. Κάντε δεξί-κλικ στον κόμβο Server_West --> Edit Attributes: i. Application: Supported Services --> Θέστε το rows σε 1 --> Θέστε το Name σε FTP_Application --> Πατήστε OK. ii. iii. Θέστε την τιμή του Server Address σε Server_West. Επεκτείνετε την ιεραρχία the TCP Parameters --> Θέστε το Fast Retransmit και το Fast Recovery σε Disabled. 5. Πατήστε OK και μετά αποθηκεύστε το project. Με αυτές τις ενέργειες έχει ολοκληρωθεί η διαμόρφωση του υποδικτύου West. Για να μεταφερθείτε στο προηγούμενο επίπεδο του project, πατήστε το κουμπί Go to next higher level. Διαμόρφωση του υποδικτύου East 1. Κάντε διπλό-κλικ στον κόμβο του υποδικτύου East. Θα δούμε ότι η περιοχή εργασίας είναι κενή. Αυτό σημαίνει ότι το υποδίκτυο δεν περιέχει αντικείμενα. 2. Aνοίξτε την παλέτα επιλέγοντας. Βεβαιωθείτε ότι στο pull-down μενού του πλαισίου Object Palette είναι επιλεγμένο το internet_toolbox. 3. Προσθέστε στα εξής αντικείμενα στον χώρο εργασίας : έναν ethernet_wkstn, έναν δρομολογητή ethernet4_slip8_gtwy, και συνδέστε τα με έναν 5
αμφίδρομο 100_BaseT link --> Κλείστε την παλέτα --> Μετονομάστε τα αντικείμενα όπως φαίνεται παρακάτω. 4. Κάντε δεξί-κλικ στον κόμβο Client_East --> Edit Attributes: i. Επεκτείνετε την ιεραρχία Application: Supported Profiles --> Θέστε το rows σε 1 --> Επεκτείνετε την ιεραρχία του row 0 --> Θέστε το Profile_Name σε FTP_Profile. ii. iii. Θέστε την τιμή του Client Address σε Client_East. Θέστε τα εξής χαρακτηριστικά στο Application: Destination Preferences: rows σε 1 --> Θέστε το Symbolic Name σε FTP Server --> Στο Actual Name --> Θέστε το rows σε 1 --> Στη γραμμή στην στήλη Name εισάγετε το όνομα Server_West. 5. Πατήστε OK τρεις φορές και μετά αποθηκεύστε το project. Με αυτές τις ενέργειες έχει ολοκληρωθεί η διαμόρφωση του υποδικτύου East. Για να μεταφερθείτε στο προηγούμενο επίπεδο του project, πατήστε το κουμπί Go to next higher level. Σύνδεση των υποδικτύων με το IP Cloud 1. Ανοίξτε την παλέτα αντικειμένων. 2. Χρησιμοποιήστε δύο αμφίδρομες συνδέσεις PPP_DS3 για να συνδέσετε το υποδίκτυο East με το IP Cloud και το the West με το the IP Cloud. 3. Θα εμφανιστεί ένα πλαίσιο διαλόγου που ρωτάει με ποιο αντικείμενο του υποδικτύου θα συνδέσει το IP Cloud. Βεβαιωθείτε ότι θα επιλέξετε τους routers. 4. Κλείστε την παλέτα. 6
3. Επιλογή στατιστικών μετρήσεων 1. Κάντε δεξί-κλικ στον Server_West στο υποδίκτυο West και επιλέξτε Choose Individual Statistics από το pop-up μενού. 2. Στο πλαίσιο διαλόγου Choose Results, επιλέξτε τις ακόλουθες μετρήσεις: TCP Connection --> Congestion Window Size (bytes) και Sent Segment Sequence Number. 3. Κάντε δεξί-κλικ στο Congestion Window Size (bytes) --> Επιλέξτε Change Collection Mode --> Στο πλαίσιο διαλόγου επιλέξτε Advanced --> Από το drop-down μενού, επιλέξτε το all values στο Capture mode όπως φαίνεται παρακάτω --> Πατήστε OK. 4. Κάντε δεξί-κλικ στην μέτρηση Sent Segment Sequence Number --> Επιλέξτε Change Collection Mode --> Στο πλαίσιο διαλόγου επιλέξτε Advanced --> Από το drop-down μενού, επιλέξτε το all values στο Capture mode. 5. Πατήστε OK και μετά αποθηκεύστε το project. 6. Μεταφερθείτε στο προηγούμενο επίπεδο με το κουμπί Go to next higher level. 7
4. Διαμόρφωση των παραμέτρων προσομοίωσης Στην συνέχεια θέλουμε να καθορίσουμε τις παραμέτρους της προσομοίωσης : 1. Κάντε κλικ στο κουμπί Configure/Run Simulation 2. Θέστε την διάρκεια στα 10 λεπτά. 3. Πατήστε OK και μετά αποθηκεύστε το project. 5. Αντιγραφή του σεναρίου Στο δίκτυο που μόλις δημιουργήσαμε, υποθέσαμε ότι το δίκτυο είναι τέλειο και δεν απορρίπτει πακέτα. Επίσης απενεργοποιήσαμε την γρήγορη επαναμετάδοση και την γρήγορη ανάκτηση στο TCP. Για να αναλύσουμε την επίδραση των απορριπτόμενων πακέτων και των τεχνικών ελέγχου συμφόρησης θα δημιουργήσουμε δύο πρόσθετα σενάρια. 1. Επιλέξτε Duplicate Scenario από το μενού Scenarios και ονομάστε το Drop_NoFast Πατήστε OK. 2. Στο νέο σενάριο, κάντε δεξί-κλικ στο IP Cloud --> Edit Attributes --> Στο χαρακτηριστικό Packet Discard Ratio δώστε την τιμή 0.05%. 3. Πατήστε OK και μετά αποθηκεύστε το project. 4. Ενώ βρίσκεστε στο Drop_NoFast σενάριο, επιλέξτε Duplicate Scenario από το μενού Scenarios και ονομάστε το νέο σενάριο Drop_Fast. 5. Στο σενάριο Drop_Fast, κάντε δεξί-κλικ στον Server_ West, που βρίσκεται στο υποδίκτυο West --> Edit Attributes --> Επεκτείνετε την ιεραρχία των TCP Parameters --> Ενεργοποιήστε το χαρακτηριστικό Fast Retransmit --> Αναθέστε την τιμή Reno στο χαρακτηριστικό Fast Recovery. 6. Πατήστε OK και μετά αποθηκεύστε το project. 6. Εκτέλεση της προσομοίωσης Για να εκτελεστεί η προσομοίωση και για τα τρία σενάρια: 1. Από το μενού Scenario Επιλέξτε Manage Scenarios. 2. Αλλάξτε την τιμή στην στήλη Results σε <collect> και για τα τρία σενάρια. 8
3. Πατήστε ΟΚ για να εκτελεστούν οι τρεις προσομοιώσεις. Ανάλογα με την ταχύτητα του επεξεργαστή αυτό μπορεί να διαρκέσει μερικά δευτερόλεπτα. 4. Αφού ολοκληρωθούν οι εκτελέσεις της προσομοίωσης πατήστε Close. 5. Αποθηκεύστε το project. 7. Επισκόπηση των αποτελεσμάτων Για να δείτε και να αναλύσετε τα αποτελέσματα εκτελέστε τα εξής : 1. Μεταβείτε στο σενάριο Drop_NoFast και επιλέξτε View Results από το μενού Results. 2. Επεκτείνετε πλήρως την ιεραρχία Object Statistics και επιλέξτε τα εξής δύο αποτελέσματα: Congestion Window Size (bytes) και Sent Segment Sequence Number. 3. Πατήστε το κουμπί Show. Το γράφημα που θα προκύψει πρέπει να είναι όπως το ακόλουθο. 9
4. Για να κάνετε zoom στις λεπτομέρειες του γραφήματος κάντε κλικ και σύρετε το ποντίκι ώστε να σχηματιστεί ένα ορθογώνιο, όπως φαίνεται παραπάνω. 5. Το γράφημα πρέπει να φαίνεται όπως το παρακάτω: 10
6. Προσέξτε ότι το Segment Sequence Number είναι σχεδόν επίπεδο με κάθε πτώση στο παράθυρο συμφόρησης. 7. Κλείστε το πλαίσιο διαλόγου View Results και επιλέξτε το Compare Results από το μενού Result. 8. Επεκτείνετε πλήρως την ιεραρχία Object Statistics όπως φαίνεται και επιλέξτε το εξής αποτέλεσμα: Sent Segment Sequence Number. 9. Πατήστε το κουμπί Show. Αφού μεγενθείνετε το γράφημα, αυτό θα πρέπει να είναι όπως το ακόλουθο. 11
Εργαστήριο 6 ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΔΙΚΤΥΑ Η/Υ TCP : Transmission Control Protocol Μία αξιόπιστη προσανατολισμένη σε σύνδεση υπηρεσία μεταφοράς ρεύματος δεδομένων Ερωτήσεις Ερώτηση 1 Εξηγήστε γιατί το Segment Sequence Number παραμένει σταθερό (όπως έδειξε η οριζόντια γραμμή στα γραφήματα) με κάθε drop στο παράθυρο συμφόρησης. Ερώτηση 2 Αναλύστε τα γραφήματα που συγκρίνουν τους αριθμούς ακολουθίας τομέα (Segment Sequence) από τα τρία σενάρια. Εξηγήστε γιατί το σενάριο Drop_NoFast έχει την μικρότερη αύξηση στους αριθμούς ακολουθίας. Ερώτηση 3 Στο σενάριο Drop_NoFast ανακτήστε τα γραφήματα που συγκρίνουν τους αριθμούς των Sent Segment Sequence με τους αριθμούς των Received Segment ACK για το Server_West. Εξηγήστε το γράφημα. Σημείωση: - Βεβαιωθείτε ότι η τιμή του Capture mode είναι all values στην στατιστική μέτρηση Received Segment ACK Number. Ερώτηση 4 (Bonus) Δημιουργήστε ένα σενάριο αντίγραφο του σεναρίου Drop_Fast. Ονομάστε το Q4_Drop_Fast_Buffer. Στο νέο σενάριο αλλάξτε στον κόμβο Client_East την τιμή του χαρακτηριστικού Receiver Buffer (bytes) σε 65535 to (μία από τις παραμέτρους του TCP Parameters). Δημιουργήστε ένα γράφημα που να δείχνει το πως το Congestion Window Size (bytes) του Server_West επηρεάζεται από την αύξηση στον buffer του παραλήπτη (συγκρίνεται το γράφημα του μεγέθους του παραθύρου συμφόρησης από το σενάριο Drop_Fast με το αντίστοιχο γράφημα από το σενάριο Q4_Drop_Fast_Buffer.) 12