Δίκτυα Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 4: Μετάδοση δεδομένων από το στρώμα μεταφοράς Δρ. Χαράλαμπος Ζ. Πατρικάκης Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε Κάντε κλικ για να ξεκινήσετε
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Ευχαριστίες Στην ανάπτυξη του υλικού βοήθησαν οι συνεργάτες του εργαστηρίου Δημήτρης Κόγιας, Μάνος Μιχαηλίδης και οι φοιτητές Λάζαρος Τουμανίδης, Στέφανος Μπογδάνης, Γιώργος Μπελτάος, Γιώργος Τσούκας. 4
Βιβλιογραφία James F. Kurose - Keith W. Ross, Δικτύωση Υπολογιστών, εκδ. Γκιούρδας. Tanenbaum, Wetherall, Δίκτυα Υπολογιστών, Εκδ. Κλειδάριθμος. Douglas E. Comer, Δίκτυα και διαδίκτυα υπολογιστών και εφαρμογές τους στο Internet, Κλειδάριθμος. Monteiro, J. M., Cruz, R. S., Patrikakis, C. Z., Papaoulakis, N. C., Calafate, C. T., & Nunes, M. S. (2013). Peer-to-Peer Video Streaming. In R. Farrugia, & C. Debono (Eds.), Multimedia Networking and Coding (pp. 254-313). Hershey, PA: Information Science Reference. doi:10.4018/978-1-4666-2660-7.ch010. Charalampos Z. Patrikakis, Angelos- Christos Anadiotis, Penetrating with DDoS Attacks, (διαθέσιμο στο διαδίκτυο: http://pentestmag.com), PenTest Magazine, vol2 no 5, Aug 2012, pp [16-22]. Pendegraft, N. (2003). The TCP/IP Game. In T. McGill (Ed.), Current Issues in IT Education (pp. 117-124). Hershey, PA: IRM Press. doi:10.4018/978-1- 93177-753-7.ch009. Τμήμα των σημειώσεων είναι βασισμένο σε συνοδευτικό υλικό του βιβλίου των James F. Kurose - Keith W. Ross, Computer Networking, Pearson publications 5
Περιεχόμενα 4.1 Επιδόσεις δικτύου δεδομένων σε επίπεδο μεταφοράς. 4.2 Επίπεδο μεταφοράς δεδομένων (Βασικές αρχές λειτουργίας πρωτοκόλλων μεταφοράς δεδομένων). 4.3 Πρωτόκολλα μεταφοράς διαδικτύου (Transport Control Protocol, User Datagram Protocol) 4.4 Έλεγχος ροής και συμφόρησης στο TCP (Έλεγχος ροής ανάμεσα στα δύο άκρα, slow start, congestion avoidance, fast retransmit, fast recovery). 6
Προσδοκώμενα Αποτελέσματα Στην ενότητα αυτή θα μάθετε για: Βασικές αρχές λειτουργίας του στρώματος μεταφοράς στο διαδίκτυο, Αξιόπιστη και επιβεβαιωμένη μεταφορά δεδομένων, TCP, UDP, Τα sockets, Τον έλεγχο ροής και συμφόρησης. 7
4.1 Επιδόσεις δικτύου δεδομένων σε επίπεδο μεταφοράς 8
Όροι Bitrate (Bandwidth): Ρυθμαπόδοση (Εύρος ζώνης) Η μέγιστη ταχύτητα αποστολής δεδομένων από τον αποστολέα Υπολογίζεται συνήθως σε bits per second (bps) Throughput: Απόδοση (=data transferred/time) Η μέγιστη δυνατότητα ροής δεδομένων ανάμεσα στις δύο άκρες της σύνδεσης, με συνυπολογισμό της επιβάρυνσης των επιπλέον πληροφοριών του δικτύου Υπολογίζεται σε bits ή Bytes per second (bps/bps) Goodput: Πραγματική απόδοση (=throughput overhead/time) Η πραγματική απόδοση, που αντιστοιχεί στη μεταφορά μόνο των χρήσιμων δεδομένων για την εφαρμογή Υπολογίζεται με αφαίρεση του χρόνου που χρειάστηκε για τη μεταφορά των επιπλέον πληροφοριών του δικτύου, από το συνολικό χρόνο μεταφοράς δεδομένων πάνω από το δίκτυο Υπολογίζεται σε bits ή Bytes per second (bps/bps) Overhead: Επιβάρυνση πληροφοριών πρωτοκόλλων δικτύου (=δεδομένα για μετάδοση επικεφαλίδων + δεδομένα για αναμετάδοση πληροφορίας) Επιπλέον πληροφορίες που μεταδόθηκαν στο δίκτυο, για τις ανάγκες των πρωτοκόλλων επικοινωνίας και για αναμετάδοση πληροφοριών Υπολογίζεται σε bits ή Bytes 9
Όροι Processing delay D nod : Καθυστέρηση κομβικής επεξεργασίας Έλεγχος λαθών σε επίπεδο bit Καθορισμός ζεύξης εξόδου Queuing delay D que : Καθυστέρηση αναμονής σε ουρά Χρόνος αναμονής στη ζεύξη εξόδου για μετάδοση Εξαρτάται από το επίπεδο συμφόρησης στον δρομολογητή Transmission delay D trans : Καθυστέρηση μετάδοσης (=μήκος πακέτου/bitrate) Χρόνος για να σταλούν bits μέσα στη ζεύξη Propagation delay D prop : Καθυστέρηση διάδοσης (=μήκος ζεύξης/ταχύτητα διάδοσης στο μέσο) Χρόνος διάδοσης μέσα στο μέσο Round Trip Time RTT: Χρόνος απόκρισης Ο χρόνος που κάνει ένα πακέτο πρακτικά μηδενικού μήκους για να φθάσει από τη μία άκρη της σύνδεσης και πίσω Συνήθως μετριέται σε milliseconds (ms) 10
Υπολογισμός επιδόσεων Η θεωρητική μέγιστη ταχύτητα επικοινωνίας (bitrate) είναι αυτή που μπορεί να υποστηρίξει ο αποστολέας. Περιορισμοί από δίκτυο και κόμβους, και από πρωτόκολλα και επαναμεταδόσεις. Εισαγωγή επιπλέον δεδομένων και καθυστερήσεων. Συμψηφισμός καθυστερήσεων σε επίπεδο δικτύου για υπολογισμό επιδόσεων (RTT). 11
Παράδειγμα υπολογισμού επιδόσεων Έστω ότι έχουμε την επικοινωνία δύο τερματικών (Α Β)πάνω από το δίκτυο, με τα εξής χαρακτηριστικά: Bitrate της σύνδεσης του τερματικού Α στο δίκτυο : 10Mbps Μέσο RTT ανάμεσα στα δύο τερματικά 20 ms Overhead ανά πακέτο: 40 Βytes Μέγεθος μηνύματος εφαρμογής 1ΚΒ Μηχανισμό ελέγχου ροής ο οποίος βασισμένος στην τεχνική του Pipelining: Διπλασιάζει το πλήθος των πακέτων σε κάθε μετάδοση κάθε φορά που παίρνουμε επιβεβαίωση λήψης Εάν διαγνώσει πρόβλημα, ρίχνει τη μετάδοση στο ένα πακέτο και ξεκινά από την αρχή Παραδοχές: Μηδενικός χρόνος μετάδοσης του ACK Μηδενικές απώλειες πληροφορίας και στις δύο κατευθύνσεις 1K = 1000, 1M = 1000000, 1 Byte = 8 bits Όταν μεταδοθούν πάνω από 6 πακέτα μαζί, φτάνουμε στο όριο της σύνδεσης, και έτσι πρέπει να ξεκινήσουμε πάλι από το ένα πακέτο στην επόμενη μετάδοση (στους υπολογισμούς μας θα αγνοήσουμε τον όγκο της επαναμεταδιδόμενης πληροφορίας για λόγους απλοποίησης των αποτελεσμάτων) Θα υπολογίσουμε τις επιδόσεις του δικτύου για μετάδοση αρχείου 28ΚΒ = 224Κb 12
Παράδειγμα υπολογισμού επιδόσεων Για κάθε πακέτο το οποίο στέλνουμε στο δίκτυο από το τερματικό A προς το Β, έχουμε: Δεδομένα = 1ΚΒ = 1000 Χ 8 bits = 8000 bits. Επιπλέον έχουμε την προσθήκη του overhead: 40 X 8 bits = 320 bits Συνολικά λοιπόν, για κάθε μήνυμα του 1ΚΒ, μεταδίδουμε 8000+320= 8320 bits. Ο χρόνος μετάδοσης D trans του κάθε πακέτου είναι 8320 bits / 10000000 bps = 0,832 ms. Ο χρόνος μέσα στον οποίο θα λάβουμε επιβεβαίωση είναι ίσος με RTT = 20ms. Άρα ο συνολικός χρόνος για τη μετάδοση του ενός πακέτου είναι 20ms + 0,832 ms = 20,832 ms. 13
Παράδειγμα υπολογισμού επιδόσεων Συνυπολογισμός του μηχανισμού ελέγχου ροής: Αφού στη μετάδοση πάνω από 6 πακέτων τη φορά φτάνω στο όριο της σύνδεσης, θα έχω μετάδοση της μορφής: 1pct, 2pcts, 4pcts, 8pcts, 1pct, 2pcts,... Η τελευταία μετάδοση θα στείλει μόνο όσα πακέτα χρειάζεται για να ολοκληρωθεί το αρχείο. Ετοιμάζω τον πίνακα περιγραφής της μετάδοσης Γύρος μετάδοσης Μεταδιδόμενα πακέτα Μεταδιδόμενα δεδομένα (bits) Σύνολο δεδομένων του αρχείου που μεταδόθηκαν (bits) 1 1 8320 8000 2 2 16640 8000+16000=24000 Ξανά από την αρχή 3 4 33280 24000+32000=56000 4 8 66560 56000+64000=120000 5 1 8320 120000+8000=128000 6 2 16640 128000+16000=144000 7 4 33280 144000+32000=176000 8 6 49920 224000=176000+48000 (=6pkts) Σύνολο: 232960 bits 14
Υπολογισμός χρόνων Παράδειγμα υπολογισμού επιδόσεων Γύρος μετάδοσης Μεταδιδόμενα πακέτα Μεταδιδόμενα δεδομένα (bits) Σύνολο δεδομένων του αρχείου που μεταδόθηκαν (bits) D trans D total 1 1 8320 8000 0,832 ms 20,832 ms 2 2 16640 8000+16000=24000 1,664 ms 21,664 ms 3 4 33280 24000+32000=56000 3,328 ms 23,328 ms 4 8 66560 56000+64000=120000 6,656 ms 26,656 ms 5 1 8320 120000+8000=128000 0,832 ms 20,832 ms 6 2 16640 128000+16000=144000 1,664 ms 21,664 ms 7 4 33280 144000+32000=176000 3,328 ms 23,328 ms 8 6 49920 224000=176000+48000 (=6pkts) 4,992 ms 24,992 ms Σύνολο: 232960 bits 183,296 ms Throughput: 232960 bits / 183,296 ms = 1,271 Mbps Goodput: 224000 bits / 183,296 ms = 1,222 Mbps 15
Πρακτικός υπολογισμός επιδόσεων Framework for TCP Throughput Testing RFC6349 Μέγεθος ελάχιστου απαιτούμενου παραθύρου TCP RWND (minimum required TCP RWND size) Bandwidth-Delay Product (BDP) = Bandwidth (bps) X RTT (sec) Minimum required TCP RWND = BDP / 8 Link Speed (Mbps) RTT (ms) BDP (bits) Minimum Required TCP RWND (KBytes) 1,536 20,00 30,720 3,84 1,536 50,00 76,800 9,60 1,536 153,600 19,20 100,00 44,210 10,00 442,100 55,26 44,210 15,00 663,150 82,89 44,210 25,00 1,105,250 138,16 100,000 1,00 100,000 12,50 100,000 2,00 200,000 25,00 100,000 5,00 500,000 62,50 1,000,000 0,10 100,000 12,50 1,000,000 0,50 500,000 62,50 1,000,000 1,00 1,000,000 125,00 10,000,000 0,05 500,000 62,50 10,000,000 0,30 3,000,000 375,00 16
Σύνοψη Μελετήσαμε: Βασικούς όρους που θα χρειαστούμε. Παραδείγματα υπολογισμού επιδόσεων. 17
4.2 Επίπεδο μεταφοράς δεδομένων Βασικές αρχές λειτουργίας πρωτοκόλλων μεταφοράς δεδομένων 18
Υπηρεσίες πρωτοκόλλων μεταφοράς Λογική επικοινωνία μεταξύ διαδικασιών/εφαρμογών που τρέχουν σε διαφορετικά τερματικά. Εφαρμογή σε επικοινωνία από άκρο σε άκρο (end to end). Μόνο τα τερματικά συστήματα χρειάζεται να έχουν τα αντίστοιχα πρωτόκολλα. Αντίθετα, το επίπεδο δικτύου υποστηρίζει τη μεταφορά πληροφοριών ανάμεσα σε τερματικά (και όχι διεργασίες). Χρησιμοποιεί τις υπηρεσίες του επιπέδου δικτύου όσον αφορά στην επικοινωνία των τερματικών συσκευών, και τις επεκτείνει με επιπλέον λειτουργίες ώστε να εξυπηρετήσει την εκτέλεση διαφορετικών εφαρμογών και διεργασιών πάνω σε αυτά, οι οποίες μπορούν να επικοινωνούν παράλληλα. 19
Πρωτόκολλα επιπέδου μεταφοράς στο διαδίκτυο Δύο βασικά πρωτόκολλα τα οποία υλοποιούν διαφορετικού τύπου υπηρεσίες Αξιόπιστη μεταφορά με εγγυήσεις παράδοσης σε σωστή σειρά των δεδομένων: TCP Δυνατότητα για: Έλεγχο συμφόρησης Έλεγχο ροής Διαχείριση σύνδεσης (εγκατάσταση- απεγκατάσταση) Μη υποστήριξη: Εγγυήσεων εύρους ζώνης Εγγυήσεων χρονισμού Πολυεκπομπής Αναξιόπιστη ( best-effort ) μεταφορά, χωρίς εγγυήσεις παράδοσης δεδομένων σε σωστή σειρά: UDP Χωρίς χρήση σύνδεσης. Χωρίς δυνατότητα ελέγχου ροής πληροφορίας και έλεγχο συμφόρησης. Δυνατότητα και για πολυεκπομπή (unicast + multicast). 20
Πολυπλεξία/Αποπολυπλεξία Πολυπλεξία (Multiplexing) Δυνατότητα σε πολλές διεργασίες να μεταδίδουν μηνύματα πάνω από το ίδιο επίπεδο μεταφοράς Συλλογή δεδομένων από πολλαπλά sockets, μετάδοση πάνω από το πρωτόκολλο μεταφοράς, με χρήση κατάλληλης επικεφαλίδας επικεφαλίδα segment segment μήνυμα επιπέδου εφαρμογής H t M H n segment P1 M application transport network P3 Αποπολυπλεξία (Demultiplexing) Δυνατότητα παράδοσης λαμβανόμενων segments στις αντίστοιχες διαδικασίες επιπέδου εφαρμογής Μεταβίβαση των segments στο σωστό Socket παραλήπτης M M application transport network P4 M P2 application transport network αποστολέας αποστολέας 21
Πολυπλεξία/Αποπολυπλεξία Μηχανισμός βασισμένος: Στη χρήση αριθμών πόρτας (port numbers) και στις διευθύνσεις IP του αποστολέα και του παραλήπτη: Χρήση αριθμού πόρτας αποστολέα (source port) και παραλήπτη (destination port) σε κάθε segment. Χρήση προκαθορισμένων (μη δεσμευτικών) αριθμών πόρτας για συγκεκριμένες εφαρμογές και πρωτόκολλα (περιγράφονται στα αντίστοιχα RFCs). Και στα δύο πρωτόκολλα (TCP-UDP), η ύπαρξη πεδίων source + destination port στην επικεφαλίδα του segment είναι υποχρεωτική. 22
Πολυπλεξία/Αποπολυπλεξία: παράδειγμα Ένας υπολογιστής λαμβάνει κάποιο datagram Κάθε datagram έχει διευθύνσεις source IP address, και destination IP address Κάθε datagram μεταφέρει 1 segment επιπέδου μεταφοράς Κάθε segment έχει αριθμούς source port και destination port Ο υπολογιστής χρησιμοποιεί τo συνδυασμό IP address, port για να στείλει το segment στο αντίστοιχο socket Source (IP: A/Port: xxxxx) Dest (IP: B/Port: 80) Source (IP: Β/Port: 80) Dest (IP: Α/Port: xxxxx) Source (IP: C/Port: yyyyy) Dest (IP: B/Port: 80) Source (IP: B/Port: 80) Dest (IP: C/Port: yyyyy) 23
Αποπολυπλεξία σε ασυνδεσιστρεφή επικοινωνία Datagrams με διαφορετικές source IP addresses και/ή source ports κατευθύνονται στο ίδιο socket Ένα UDP segment κατευθύνεται στο socket το οποίο αντιστοιχεί στο destination port number Source Port : παρέχει διεύθυνση επιστροφής P2 P3 P1 SP: 6428 DP: 9157 SP: 6428 DP: 5775 client IP: A SP: 9157 DP: 6428 server IP: C SP: 5775 DP: 6428 Client IP:B 24
Αποπολυπλεξία σε συνδεσιστρεφή επικοινωνία Χρήση 4δας για ορισμό TCP socket: Source IP, Source port Dest IP, Dest port Δυνατότητα για παράλληλη εξυπηρέτηση πολλών παράλληλων TCP sockets στον ίδιο εξυπηρετητή, για την ίδια εφαρμογή. Διαφορετικό socket για κάθε συνδεδεμένο client (τι συμβαίνει με την περίπτωση του HTTP;) P1 P4 P5 P6 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 client IP: A DP: 80 S-IP: A D-IP:C server IP: C DP: 80 S-IP: B D-IP:C Client IP:B 25
Άθροισμα ελέγχου (checksum) Στόχος: ανίχνευση σφαλμάτων π.χ., αντεστραμμένα (flipped) bits, στο segment που μεταδίδεται Αποστολέας: Μεταχειρίζεται τα περιεχόμενα του segment ως ακολουθία από ακέραιους των 16-bits. Συμπλήρωμα ως προς 1 των περιεχομένων του segment. Ο αποστολέας βάζει την τιμή του αθροίσματος ελέγχου στο αντίστοιχο πεδίο της UDP επικεφαλίδας. Παραλήπτης: Υπολογίζει το άθροισμα ελέγχου του λαμβανόμενου segment. Εξετάζει εάν το άθροισμα ελέγχου που υπολογίζεται ισούται με την τιμή του αντίστοιχου πεδίου: ΟΧΙ ανιχνεύθηκε σφάλμα ΝΑΙ δεν ανιχνεύθηκε σφάλμα. Μπορεί να υπάρχουν σφάλματα παρ όλα αυτά; 26
Υπολογισμός Internet Checksum (παράδειγμα) αναδίπλωση 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 + 1 άθροισμα συμπλήρωμα κατά 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 checksum 27
Μετάδοση και μηχανισμοί επιβεβαίωσης Αποστολέας Παραλήπτης Αποστολέας Παραλήπτης Packet 1... Timeout Μετάδοση χωρίς απώλειες Μετάδοση με απώλειες (στο μεταδιδόμενο πακέτο δεδομένων) 28
Μετάδοση και μηχανισμοί επιβεβαίωσης Αποστολέας Παραλήπτης Αποστολέας Παραλήπτης Timeout Timeout ACK 1 Επαναμετάδοση Επαναμετάδοση Μετάδοση με απώλειες (στην επιβεβαίωση) Πρώιμη λήξη χρονιστή 29
Μετάδοση με χρήση ACK A B Δημιουργία ACK Χρήσιμο L/Ρυθμό Χρόνος Μετάδοσης + Χρόνος Διάδοσης + Χρόνος Διάδοσης Συνολικά L/Ρυθμό + RTT 30
Υπολογισμός ρυθμού μετάδοσης Στην περίπτωση επιβεβαιωμένης μετάδοσης, ο πραγματικός ρυθμός μετάδοσης είναι πολύ μικρότερος από το μέγιστο δυνατό. Ο λόγος είναι ότι η μετάδοση του επόμενου πακέτου εξαρτάται και από το χρόνο επιβεβαίωσης του προηγούμενου (ή των προηγούμενων). U sender= κλάσμα του συνολικού χρόνου που ο αποστολέας είναι απασχολημένος με αποστολή. U sender = R Παράδειγμα: 1 Gbps link, καθυστέρηση διάδοσης (D prop ) 15 ms, πακέτα των 1KB και επιβεβαίωση ανά πακέτο, και χωρίς να υπολογίζουμε υπόλοιπες καθυστερήσεις: d trans R L 10 RTT=30 msec, 1KB pkt κάθε 30 msec -> 33kB/sec ρυθμός σε1 Gbps link L / R RTT + L / R = 8000bits bps 9.008 30.008 8ms Πραγματικός ρυθμός μετάδοσης RTT L effect 0, 27 d trans 8000bits 30,008s = 0.00027 microsec Mbps 31
Pipelining O αποστολέας μπορεί να στείλει αρκετά πακέτα παράλληλα, χωρίς να περιμένει επιβεβαίωση για το καθένα Το εύρος των αριθμών σειράς πρέπει να αυξηθεί (δε μας αρκεί η αρίθμηση 0 και 1 για τα πακέτα). Χρειάζεται αποθήκευση και στα δύο άκρα. Δύο περιπτώσεις μηχανισμών επανεκπομπής: go-back-n (επιστροφή πίσω κατά Ν). selective repeat (επιλεκτική επανεκπομπή). 32
Μετάδοση με χρήση ACK (χρήση pipelining) A B Δημιουργία ACK Χρήσιμο L/Ρυθμό + L/Ρυθμό + Χρόνος Μετάδοσης Χρόνος Μετάδοσης + Χρόνος Διάδοσης Συνολικά L/Ρυθμό + RTT 33
Pipelining: αύξηση ποσοστού χρήσης του δικτύου Μετάδοση 1 ου bit πακέτου, t = 0 Μετάδοση τελευταίου bit, t = L / R RTT Λήψη ACK, αποστολή επόμενου πακέτου t = RTT + L / R Λήψη 1 ου bit πακέτου Λήψη τελευτ. bit 1 ου πακ., αποστολή ACK Λήψη τελευτ. bit 2 ου πακ., αποστολή ACK Λήψη τελευτ. bit 3 ου πακ., αποστολή ACK Τριπλασιασμός ποσοστού χρήσης του δικτύου! U sender = 3 * L / R RTT + L / R =.024 30.008 = 0.0008 microsecon 34
Πρωτόκολλα τύπου Pipelined Go-back-N Ο αποστολέας μπορεί να έχει έως N μη επιβεβαιωμένα. Ο δέκτης απλώς μεταδίδει συγκεντρωτικά acks. Αλλιώς πρέπει να αναζητηθεί το κενό. Ο αποστολέας θέτει χρονιστή για το πιο παλιό πακέτο. Έαν λήξει ο χρονιστής, γίνεται επανεκπομπή όλων των μη επιβεβαιωμένων. Επιλεκτική επανάληψη Ο αποστολέας μπορεί να έχει έως N μη επιβεβαιωμένα πακέτα στη σειρά (pipeline). Ο δέκτης στέλνει μεμονωμένα ack για κάθε πακέτο. Ο αποστολέας διαθέτει χρονιστή για κάθε πακέτο. Όταν αυτός λήξει, τότε έχουμε επανεκπομπή μόνο του μη επιβεβαιωμένου πακέτου. 35
Go-Back-N Ύπαρξη παραθύρου στον αποστολέα, το οποίο κρατά έως Ν (σε σειρά) πακέτα τα οποία δεν έχουν ληφθεί επιβεβαιωμένα από τον παραλήπτη. Αριθμός σειράς πακέτων στην επικεφαλίδα του πακέτου. Χρήση συγκεντρωτικού ACK αντί για επιβεβαίωση κάθε πακέτου. ACK(n): Επιβεβαιώνει όλα τα πακέτα μέχρι και το n ιοστό- συγκεντρωτικό ACK. Χρήση timer για κάθε πακέτο το οποίο μεταδίδεται. Πιθανότητα λήψης περισσότερων του ενός ACK για ένα πακέτο, και δυνατότητα μετάφρασης του τι συμβαίνει στο δίκτυο ανάλογα με αυτό. Με τη λήξη του timer για ένα πακέτο (timeout(n)), γίνεται επανεκπομπή του πακέτου και όλων των πακέτων με αριθμό σειράς μεγαλύτερο του n, τα οποία βρίσκονται στο παράθυρο. 36
Go-Back-N: Παράδειγμα χρήσης Αποστολέας Παραλήπτης Με τη λήξη του χρονιστή για το πακέτο 2, έχουμε επαναμετάδοση όλων των πακέτων που μεταδόθηκαν μετά από αυτό, μαζί με το ίδιο. Α λήψη μιας διπλής (ή τριπλής επιβεβαίωσης μπορεί να μας δώσει ένδειξη για το ότι υπάρχει πρόβλημα. Τα πακέτα που λήφθηκαν εκτός σειράς μπορούν να αχρηστευθούν, αφού θα επαναμεταδοθούν Timeout Packet 2 37
Επιλεκτική Επανάληψη (Selective Repeat) Ο παραλήπτης αναγνωρίζει χωριστά όλα τα πακέτα που ελήφθησαν σωστά. Αποθηκεύει προσωρινά τα πακέτα, όπως απαιτείται, για την ενδεχόμενη, σε σειρά παράδοση στο ανώτερο επίπεδο. Ο αποστολέας ξαναστέλνει μόνο τα πακέτα για τα οποία δεν έλαβε επιβεβαίωση. Ύπαρξη χρονιστή στον αποστολέα (sender timer) για κάθε πακέτο που στέλνει. Παράθυρο σε αποστολέα και παραλήπτη. Συγχρονισμός παραθύρων. Περιορισμός του πλήθους των πακέτων τα οποία έχουν σταλεί και δεν έχουν επιβεβαιωθεί. 38
Επιλεκτική επανεκπομπή 39
Λειτουργία αποστολέα-παραλήπτη Αποστολέας Με τη λήξη δεδομένων από το παραπάνω επίπεδο, εάν υπάρχει επόμενο διαθέσιμο νούμερο σειράς είναι στο παράθυρο, γίνεται αποστολή με έναρξη του αντίστοιχου timer(n). Με τη λήξη χρονιστή για πακέτο n: timeout(n), γίνεται επαναποστολή του πακέτου, και επανεκκίνηση του timer. Με τη λήψη ACK(n): Αν το n είναι μέσα στο [sendbase,sendbase+n], το πακέτο n καταγράφεται ως επιβεβαιωμένο Αν n το μικρότερο, μη επιβεβαιωμένο, πακέτο, προχωράει το παράθυρο. Παραλήπτης Με τη λήψη ενός πακέτου n, εάν αυτό είναι μέσα στο [rcvbase, rcvbase+n-1], τότε γίνεται αποστολή ACK(n), και: Αν το πακέτο είναι εκτός σειράς, τότε αποθηκεύεται. Αν το πακέτο είναι σε σειρά: έλεγχος για διανομή στο παραπάνω επίπεδο όλων των αποθηκευμένων πακέτων σε σειρά από το πρώτο διαθέσιμο στο παράθυρο. Μεταφορά του παραθύρου ώστε η αρχή του να δείχνει στο πρώτο μη επιβεβαιωθέν πακέτο. 40
Επιλεκτική επανεκπομπή (selective repeat) Αποστολέας Παραλήπτης 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 Timeout 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 41
Σύνοψη Μελετήσαμε: Πρωτόκολλα του Επιπέδου Μεταφοράς Πολυπλεξία/ Αποπολυπλεξία Μεταδόσεις και μηχανισμούς επιβεβαίωσης Πρωτόκολλα τύπου pipelined: Go-Back-N Επιλεκτική Επανάληψη 42
4.3 Πρωτόκολλα μεταφοράς διαδικτύου Transport Control Protocol, User Datagram Protocol 43
UDP: User Datagram Protocol - RFC 768 Το πιο απλό πρωτόκολλο μεταφοράς του Internet. Υπηρεσία best effort. Τα UDP segments μπορεί να: Χαθούν. παραδοθούν εκτός σειράς στην εφαρμογή. Ασυνδεσιστρεφές χωρίς προηγούμενη επικοινωνία μεταξύ αποστολέα και παραλήπτη. κάθε UDP segment αντιμετωπίζεται ανεξάρτητα από τα άλλα. Πλεονεκτήματα: Μείωση καθυστερήσεων από εγκατάσταση σύνδεσης. Απλοποίηση λειτουργίας λόγω της μη ανάγκης για κατάσταση σύνδεσης ανάμεσα σε αποστολέα και παραλήπτη. ελαφρύ: μικρή επικεφαλίδα. Δυνατότητα για αποστολή δεδομένων από εφαρμογή κατά βούληση, χωρίς ρύθμιση για έλεγχο συμφόρησης ή ροής. 44
Χρήση του UDP Κατάλληλο για εφαρμογές οι οποίες είναι: Ανεκτικές στην απώλεια δεδομένων. Ευαίσθητες όσον αφορά το ρυθμό λήψης δεδομένων. Επιπλέον χρησιμοποιείται σε εφαρμογές όπου θέλουμε να ελαχιστοποιήσουμε το overhead του επιπέδου μεταφοράς: DNS SNMP Συχνά χρησιμοποιείται σε εφαρμογές πολυμέσων συνεχούς ροής (streaming multimedia). Δυνατότητα αξιόπιστης μεταφοράς δεδομένων πάνω από UDP: αξιόπιστη μεταφορά στο επίπεδο εφαρμογής. 45
Δομή UDP segment Πηγή: http://nmap.org/book/tcpip-ref.html 46
TCP: (RFCs: 793, 1122, 1323, 2018, 2581) Μετάδοση δεδομένων full duplex: διπλοκατευθυντική ροή δεδομένων στην ίδια σύνδεση Συνδεσιστρεφές (connectionoriented): Χειραψία (ανταλλαγή μηνυμάτων ελέγχου) για αρχικοποίηση κατάστασης αποστολέα, παραλήπτη πριν την ανταλλαγή δεδομένων Διαδικασία τερματισμού σύνδεσης Ελεγχόμενη ροή: Ο αποστολέας δεν θα πλημμυρίσει τον παραλήπτη Ο αποστολέας θα περιορίσει το ρυθμό του σε περίπτωση συμφόρησης στο δίκτυo Χρήση για μεταφορά δεδομένων από σημείο σε σημείο (point-to-point: ένας αποστολέας, ένας παραλήπτης) και από άκρο σε άκρο (end to end). Αξιόπιστη, σε σειρά, μετάδοση δεδομένων. Ενταμιευτές σε αποστολέα και παραλήπτη. Έλεγχος συμφόρησης και ροής ορίζει μέγεθος παραθύρου αποστολής. 47
Πηγή: http://nmap.org/book/tcpip-ref.html 48Δομή TCP segment
TCP: Αποστολή αριθμημένων segments και επιβεβαιώσεις Seq. # s: ACKs: Δείχνει στον αριθμό του πρώτου byte στο segment Αριθμός του seq # του επόμενου byte που αναμένεται Συγκεντρωτικά ACKs Πλευρά Α Ο χρήστης Πληκτρολογεί C Η πλευρά Α επιβεβαιώνει το C που έλαβε ως απάντηση Πλευρά Β Η πλευρά Β επιβεβαιώνει τη λήψη του C, στέλνοντας πίσω C Ένα απλό σενάριο telnet 49
TCP Round Trip Time (RTT) και Timeout Ρύθμιση του χρονιστή για την αποστολή segments: Ο χρόνος πρέπει να είναι μεγαλύτερος από το RTT Το RTT δεν είναι σταθερό Εάν είναι μικρότερος: πρόωρη λήξη (timeout) Ανεπιθύμητες επανεκπομπές Εάν είναι πολύ μεγαλύτερος: Αργή αντίδραση σε προβλήματα απώλειας segments Yπολογισμός RTT SampleRTT : η τιμή που μετράμε από τη μετάδοση του segment μέχρι τη λήψη του ACK Αγνοούνται οι επανεκπομπές Το SampleRTT μεταβάλλεται, έτσι ανάγκη για κανονικοποίηση του RTT Μέσος όρος από αρκετές πρόσφατες μετρήσεις και όχι το τελευταίο SampleRTT 50
RTT (milliseconds) TCP Round Trip Time καιtimeout EstimatedRTT = (1- α) * EstimatedRTT + α * SampleRTT Η επίδραση των παλαιών δειγμάτων μειώνεται εκθετικά (exponential weighted moving average) Τυπική τιμή του α: 0.125 350 RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 300 250 200 150 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) SampleRTT Estimated RTT 51
TCP Round Trip Time και Timeout Υπολογισμός του timeout: EstimatedRTT συν ένα περιθώριο ασφάλειας. Μεγάλη διακύμανση στο EstimatedRTT -> μεγάλύτερο περιθώριο ασφάλειας. DevRTT: Εκτίμηση του πόσο το SampleRTT αποκλίνει από το EstimatedRTT: DevRTT = (1-β) * DevRTT + β * SampleRTT-EstimatedRTT (τυπικά, β = 0.25) TimeoutInterval = EstimatedRTT + 4*DevRTT 52
Αξιόπιστη μεταφορά δεδομένων στο TCP TCP παρέχει υπηρεσία αξιόπιστης μεταφοράς δεδομένων πάνω από την αναξιόπιστη υπηρεσία μεταφοράς δεδομένων του IP. pipelined segments. Αθροιστικά acks. Το TCP χρησιμοποιεί μοναδικό χρονιστή επανεκπομπής. Οι επανεκπομπές προκαλούνται από : Λήξη χρονιστή (timeout) Διπλά acks Ας θεωρήσουμε έναν απλοποιημένο αποστολέα TCP και : Ας αγνοήσουμε τα διπλά acks Ας αγνοήσουμε και τον έλεγχο ροής και τον έλεγχο συμφόρησης 53
Λειτουργία αποστολέα στο TCP Λήψη δεδομένων από επίπεδο εφαρμογής: Δημιουργία segment με seq # (αριθμός τύπου byte-stream number) που αντιστοιχεί στο πρώτο data byte στο segment. Εκκίνηση του χρονιστή (εάν δεν τρέχει ήδη) για το πιο παλιά απεσταλμένο segment. Χρόνος λήξης: ΤimeOutInterval Timeout: Eπανεκπομπή του segment που προκάλεσε το timeout. Επανεκκίνηση του χρονιστή. Λήψη Ack : Αν αναφέρεται σε προηγούμενα μη επιβεβαιωμένα segments, επιβεβαίωση όσων μπορούν να επιβεβαιωθούν. Επανεκκίνηση χρονιστή εάν απομένουν και άλλα. 54
TCP: σενάρια επανεκπομπής Πλευρά Α Πλευρά Β Επιβεβαιωμένα 90 Bytes Timeout Επιβεβαιωμένα 90 Bytes Επιβεβαιωμένα 100 Bytes Χαμένη επιβεβαίωση 55
Seq 90 Timeout Seq 90 Timeout TCP: σενάρια επανεκπομπής Επιβεβαιωμένα 90 Bytes Πλευρά Α Πλευρά Β Επιβεβαιωμένα 100 Bytes Επιβεβαιωμένα 115 Bytes Επιβεβαιωμένα 115 Bytes Πρόωρο timeout 56
Seq 90 Timeout TCP: σενάρια επανεκπομπής Επιβεβαιωμένα 90 Bytes Πλευρά Α Πλευρά Β Timeout Επιβεβαιωμένα 115 Bytes Συγκεντρωτικό ACK 57
Δημιουργία TCP ACK: Συμπεριφορά του δέκτη Γεγονός Ενέργεια Λήψη segment σε σωστή σειρά με αναμενόμενο seq # και με όλα τα δεδομένα μέχρι το seq # είναι επιβεβαιωμένα Λήψη segment σε σωστή σειρά με αναμενόμενο seq #. Ένα άλλο segment όμως έχει ACK να εκκρεμεί Λήψη segment εκτός σειράς με seq # μεγαλύτερο από το αναμενόμενο. Καθυστέρηση για αποστολή ACK και αναμονή μέχρι 500ms για επόμενο segment. Αν δεν έρθει, αποστολή ACK Άμεση αποστολή ενός συγκεντρωτικού ACK για όλα τα σε σειρά ληφθέντα segments Άμεση αποστολή διπλού ACK, αναφέροντας το seq. # του επόμενου αναμενόμενου byte Λήψη segment το οποίο γεμίζει μέρος κενού ή όλο το κενό Άμεση αποστολή ACK, εφόσον το segment ξεκινά από την αρχή του κενού 58
Γρήγορη επανεκπομπή Η περίοδος του time-out συνήθως είναι μεγάλη, άρα μεγάλη καθυστέρηση στην επανεκπομπή. Αναγνώριση χαμένων segments μέσω διπλών ACKs. Ο αποστολέας συνήθως στέλνει πολλά segments το ένα πίσω από το άλλο. Αν το segment χαθεί, τότε συνήθως έρχονται διπλά ACKs. Αν ο αποστολέας λάβει 3 αντίγραφα από ACK για τα ίδια δεδομένα, υποθέτει ότι το segment μετά τα επιβεβαιωμένα δεδομένα χάθηκε. Γρήγορη επανεκπομπή του segment, πριν τη λήξη του χρονιστή. 59
Επαναποστολή μετά από τριπλό αντίγραφο ACK Πλευρά Α Πλευρά Β Timeout 60
Διαχείριση σύνδεσης TCP (εγκατάσταση) Ο εξυπηρετητής αναμένει κάποια σύνδεση σε συγκεκριμένη πόρτα O πελάτης ξεκινά μια σύνδεση με το εξυπηρετητή πριν ξεκινήσει να ανταλλάσσει τμήματα δεδομένων Αρχικοποιεί τις μεταβλητές που σχετίζονται με τη μετάδοση: seq. #s buffers, πληροφορίες ελέγχου ροής (π.χ. RcvWindow) Χειραψία τριών σταδίων Βήμα 1: ο υπολογιστής πελάτης στέλνει τμήμα TCP SYN στον εξυπηρετητή όπου: καθορίζει το αρχικό seq # του δε στέλνει ακόμα δεδομένα Βήμα 2: ο εξυπηρετητής λαμβάνει το SYN, και απαντάει με τμήμα του SYNACK, όπου: ορίζει τους buffers καθορίζει το αρχικό seq. # του Βήμα 3: ο πελάτης λαμβάνει το SYNACK και απαντά με τμήμα ACK, το οποίο: μπορεί να περιλαμβάνει δεδομένα 61
Χειραψία 3 σταδίων (3 way handshaking) Client Server Αποστολή TCP SYN με επιλογή αρχικού seq num (x) Επιλοή αρχικού seq num (y) Και αποστολή TCP SYNACK Σε απάντηση του SYN Λήψη SYNACK(x) Αποστολή ACK (για το SYNACK) Εδώ ο client μπορεί να αρχίσει να στέλνει δεδομένα Λήψη ACK(y) και έναρξη ανταλλαγής δεδομένων 62
Διαχείριση σύνδεσης TCP (τερματισμός) Ο πελάτης ξεκινά τη διαδικασία τερματισμού της σύνδεσης. Στέλνει ένα μήνυμα ελέγχου με FIN bit = 1. Η λήψη του FIN προκαλεί την αποστολή ενός μηνύματος ελέγχου ACK. Επιπλέον, μπορεί να σταλεί και μήνυμα FIN. Δυνατότητα για παράλληλη αποστολή FIN και από τις δύο πλευρές. 63
Διαχείριση σύνδεσης TCP (τερματισμός) 2*max segment lifetime Βήμα 1: ο πελάτης στέλνει μήνυμα ελέγχου TCP FIN στον εξυπηρετητή Βήμα 2: ο εξυπηρετητής λαμβάνει το FIN, και απαντάει με ACK. Κλείνει τη σύνδεση, ενώ παράλληλα στέλνει μήνυμα ελέγχου FIN. Βήμα 3: ο πελάτης λαμβάνει το FIN, και απαντά με ACK. Ξεκινά ένα χρονιστή, στη λήξη του οποίου θα κλείσει τη σύνδεση. Εάν έως τότε λάβει FIN, θα απαντήσει με ACK Βήμα 4: ο εξυπηρετητής, λαμβάνει το ACK. Η σύνδεση κλείνει. Βήμα 5: Ο χρονιστής στο πελάτη λήγει και ο πελάτης κλείνει τη σύνδεση Έναρξη διαδικασίας τερματισμού σύνδεσης Μπορεί μόνο να λάβει μηνύματα και να επιβεβαιώσει Αναμονή για τερματισμό server Client Server Ενημέρωση για τερματισμό Μπορεί ακόμα να στείλει δεδομένα Δεν μπορεί να στείλει δεδομένα Τερματισμός Τερματισμός 64
Διαχείριση Σύνδεσης στο TCP (client) 65
Διαχείριση Σύνδεσης στο TCP (server) 66
Χειρισμός επιβεβαιώσεων και επαναποστολής segments στο TCP Seq #: Βyte stream. Αριθμός του πρώτου byte στο segment. ACKs: seq # του επόμενουbyte που αναμένεται. Συγκεντρωτικά ACKs. Εξερχόμενο segment (αποστολέας) source port # dest port # sequence number acknowledgement number rwnd checksum urg pointer window size N Παράθυρο αποστολέα Το πρωτόκολλο δεν ορίζει τι Επιβεβαιωμένα Απεσταλμένα, Διαθέσιμα μη προς επιβεβαιωμένα αποστολή γίνεται με τα segments που λαμβάνονται εκτός σειράς source port # dest port # Εξερχόμενο segment (παραλήπτης) sequence number acknowledgement number rwnd checksum Μη διαθέσιμα ακόμα urg pointer 67
Σύνοψη Μελετήσαμε: Τα πρωτόκολλα TCP- UDP Το TCP Round Trip Time και Timeout. Την Αξιόπιστη μεταφορά δεδομένων στο TCP με επαναποστολή πακέτων Σενάρια Στάδια διαχείρισης μιας TCP σύνδεσης (3-way handshake). 68
4.4 Έλεγχος ροής και συμφόρησης στο TCP Έλεγχος ροής ανάμεσα στα δύο άκρα, slow start, congestion avoidance, fast retransmit, fast recovery 69
Έλεγχος ροής TCP Η διαδικασία της εφαρμογής μπορεί να διαβάζει αργά. Ο δέκτης της TCP σύνδεσης έχει έναν receive buffer. Υπηρεσία συγχρονισμού: συντονίζει το ρυθμό αποστολής, με το ρυθμό αδειάσματος του buffer στο δέκτη. 70
Έλεγχος ροής TCP (λειτουργία) Ελεύθερος χώρος στο buffer: RcvWindow = RcvBuffer-[LastByteRcvd - LastByteRead] (τα segments εκτός σειράς αγνοούνται) Ο δέκτης διαφημίζει το διαθέσιμο χώρο, συμπεριλαμβάνοντας την τιμή του RcvWindow στα segments. Ο αποστολέας περιορίζει τα με επιβεβαιωμένα δεδομένα στο RcvWindow. Έτσι έχουμε την εγγύηση ότι ο receive buffer δε θα γεμίσει. 71
Αρχές Ελέγχου Συμφόρησης Συμφόρηση: συμβαίνει όταν πάρα πολλές πηγές στέλνουν μεγάλο όγκο δεδομένων και με μεγάλο ρυθμό, ώστε το δίκτυο να μη μπορεί να τα διαχειριστεί. Δεν έχει σχέση με τη ροή των δεδομένων από άκρο σε άκρο, άρα και με τον έλεγχο ροής που αναφέρθηκε. Τρόποι εμφάνισης: Χαμένα πακέτα (υπερχείλιση buffer στους διακομιστές). Μεγάλες καθυστερήσεις (αναμονή στην ουρά για δρομολογητές buffers). 72
Προσεγγίσεις για έλεγχο συμφόρησης Δύο διαδεδομένες προσεγγίσεις για τον έλεγχο συμφόρησης: Έλεγχος συμφόρησης από άκρο σε άκρο: Χωρίς πληροφόρηση από το δίκτυο. Συμφόρηση ως συμπέρασμα των παρατηρούμενων απωλειών στο τελικό σύστημα, και των καθυστερήσεων. Προσέγγιση που υιοθετεί το TCP. Έλεγχος συμφόρησης υποστηριζόμενος από το δίκτυο: Οι διακομιστές παρέχουν αναφορά στα τελικά συστήματα. Μοναδιαίο bit υποδεικνύει συμφόρηση (SNA, DECbit, TCP/IP ECN, ATM). Σαφής ρυθμός με τον οποίο πρέπει να συμμορφωθεί ο αποστολέας. 73
Λογική λειτουργίας ελέγχου συμφόρησης στο TCP Ο αποστολέας περιορίζει τη μετάδοσή του μέσω ρύθμισης του cwnd ανάλογα με το πώς αντιλαμβάνεται τη συμφόρηση στο δίκτυο. LastByteSent- LastByteAcked <= cwnd. Μηχανισμός ελέγχου ρυθμού αποστολής: αποστολή cwnd bytes, Αναμονή RTT για επιβεβαίωση (ACKS), Επόμενη αποστολή rate ~ cwnd RTT bytes/sec Παράθυρο αποστολέα cwnd τελευταίο τελευταίο επιβεβαιωμένο byte Απεσταλμένο byte Απεσταλμένα και μη επιβεβαιωμένα bytes 74
Έλεγχος συμφόρησης στο TCP (Additive increase, multiplicative decrease) Λογική πίσω από το μηχανισμό: αύξηση ρυθμού μετάδοσης (μέγεθος παραθύρου), έλεγχος για διαθέσιμο εύρος, μέχρι να υπάρξει απώλεια Ο αποστολέας, αυξάνει σιγά σιγά τη δυνατότητα αποστολής του κάθε φορά, ψάχνοντας να βρει τα όριά του όσον αφορά το μέγιστο υποστηριζόμενο ρυθμό μετάδοσης (usable bandwidth) Αυτό γίνεται με σταδιακή αύξηση κατά 1 MSS του congestion window (cwnd) σε κάθε γύρο αποστολής (άρα κάθε RTT), μέχρι να διαγνώσει κάποια απώλεια. Αυτή οδηγεί σε μία συμπεριφορά η οποία χαρακτηρίζεται ως additive increase. Μόλις διαγνωσθεί απώλεια, τότε το congestion window (cwnd) μειώνεται στο μισό. Αυτή οδηγεί σε μία συμπεριφορά η οποία χαρακτηρίζεται ως multiplicative decrease. Εάν κάνουμε το γράφημα της αλλαγής του cwnd, θα δούμε ότι μοιάζει με πριόνι, όπου οι μύτες αντιστοιχούν στα σημεία όπου εμφανίστηκε πρόβλημα, λόγω υπέρβασης του υποστηριζόμενου ρυθμού μετάδοσης. congestion window 24 Kbytes (cwnd) 16 Kbytes 8 Kbytes time 75
Αργή Εκκίνηση (Slow start) Εάν η πηγή που μεταδίδει τα δεδομένα αρχίζει να στέλνει segments με μεγάλο ρυθμό, έστω και εάν ο δέκτης από την άλλη πλευρά μπορεί να τα δεχτεί, η κατάσταση του δικτύου δεν εγγυάται ότι θα φθάσουν όλα στον προορισμό τους, λόγω της κατάστασης των ουρών στους ενδιάμεσους δρομολογητές. Γι αυτό το λόγο προτάθηκε το slow start το οποίο λειτουργεί στη βάση της παρακολούθησης του ρυθμού με τον οποίο νέα πακέτα μπορούν να εισαχθούν στο δίκτυο, υπολογίζοντας το ρυθμό λήψης των επιβεβαιώσεων και αντιδρώντας σε αυτόν. Αυξάνει κατά ένα τον αριθμό των segments που θα φύγουν μαζί στην επόμενη αποστολή για κάθε ACK που θα λάβει. Δηλαδή σε συνθήκες μη συμφόρησης, διπλασιάζει το ρυθμό των segments της επόμενης αποστολής, (για κάθε ACK το οποίο λαμβάνει μεταδίδει δύο segments). Θεωρητικά αυτό οδηγεί σε εκθετική αύξηση του ρυθμού αποστολής (αν και στην πράξη μια και η απέναντι πλευρά μπορεί να καθυστερήσει την αποστολή ACK, στέλνοντας ένα ACK για κάθε δύο segments που λαμβάνει, οπότε ο πραγματικός ρυθμός αύξησης είναι μικρότερος). Κάποια στιγμή οι ενδιάμεσοι δρομολογητές θα φθάσουν στα όριά τους και θα χαθoύν πακέτα, οπότε και ο αποστολέας θα ειδοποιηθεί γι αυτό, ώστε να αλλάξει πολιτική αποστολής segments. 76
RTT Αργή Εκκίνηση (Slow start) εν συντομία Όταν ξεκινά η σύνδεση, ο ρυθμός μετάδοσης αυξάνεται εκθετικά μέχρι το πρώτο γεγονός απώλειας: Αρχικά cwnd = 1 MSS Το cwnd διπλασιάζεται κάθε RTT. Αύξηση του cwnd για κάθε ACK που λαμβάνεται. Αποτέλεσμα: ο αρχικός ρυθμός είναι αργός αλλά κλιμακώνεται εκθετικά γρήγορα. Host A Host B 77
Αποφυγή Συμφόρησης (Congestion avoidance) Μετά από τη κατάσταση του slow start, και εφόσον δεν υπάρχει ένδειξη για συμφόρηση, ο αποστολέας εισέρχεται στην κατάσταση του Congestion avoidance. Αυτό συμβαίνει όταν ο ρυθμός αποστολής των segments φτάσει στο ssthreshold (= ή το μισό του cwnd πριν την αναφορά του τελευταίου προβλήματος, ή εάν είμαστε στην αρχή 65535 bytes). Κατά την κατάσταση του congestion avoidance, το cwnd αυξάνεται κατά segsize*segsize/cwnd κάθε φορά που λαμβάνεται ένα ACK, όπου: segsize είναι το μέγεθος του segment σε bytes. cwnd είναι το μέγιστο πλήθος δεδομένων των segments που μπορούν να μεταδοθούν, είναι και αυτό υπολογισμένο σε bytes. Ο ρυθμός αύξησης είναι τώρα γραμμικός (σε κάθε γύρο, το πολύ να σταλεί ένα παραπάνω segment σε σχέση με τον προηγούμενο, ανεξάρτητα από το πόσα ACKs λήφθηκαν μέσα στο τελευταίο RTT. 78
Γρήγορη Αναμετάδοση (Fast retransmit) Στην περίπτωση που κάποιο segment φθάσει εκτός σειράς, τότε έχουμε την αποστολή διπλού ACK (επανεπιβεβαίωση του τελευταίου segment το οποίο λήφθηκε με σωστή σειρά). Η απέναντι πλευρά καταλαβαίνει με αυτό τον τρόπο ότι κάποιο segment λήφθηκε εκτός σειράς. Δε γνωρίζει όμως τι συμβαίνει (αλλαγή σειράς παράδοσης ή απώλεια segment); Αναμονή και για άλλα διπλά ACKs. Εάν αυτά είναι ένα ή δύο, τότε απλά χάθηκε κάποιο segment, ή έγινε λήψη εκτός σειράς. Εάν είναι τρία ή περισσότερα, τότε είναι μια ισχυρή ένδειξη για απώλεια segment και ο αποστολέας προχωρά σε αποστολή του υποτιθέμενα χαμένου segment, χωρίς να περιμένει τη λήξη του αντίστοιχου χρονιστή. 79
Γρήγορη Αναμετάδοση Λειτουργία timeout Host A Host B 80
Γρήγορη Ανάκαμψη (Fast recovery) Μετά από την κατάσταση της γρήγορης αναμετάδοσης, αντί για αργή εκκίνηση, ο αποστολέας εισέρχεται στην κατάσταση της γρήγορης ανάκαμψης. Αυτό επιτρέπει την αποτελεσματική αντίδραση σε καταστάσεις μέτριας συμφόρησης. Η λήψη επιβεβαιώσεων από τον παραλήπτη δείχνει ότι υπάρχει επικοινωνία ανάμεσα στα δύο άκρα (με προβλήματα, αλλά δεν έχει διακοπεί εντελώς). Οπότε δεν υπάρχει λόγος για δραστικά μέτρα μείωσης του ρυθμού. Η γρήγορη ανάκαμψη επιτρέπει μια ήπια αντίδραση η οποία μπορεί να αντιμετωπίσει το πρόβλημα, χωρίς να μειώσει κατά πολύ το ρυθμό της επικοινωνίας των δυο άκρων. 81
Congestion window (in segments) TCP Tahoe 16 Triple Duplicate ACK 14 1 2 10 8 ssthresh ssthresh Time Out 6 ssthresh 4 Slow Start 2 Congestion Avoidance 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Transmission round 82
Congestion window (in segments) TCP Reno 16 Triple Duplicate ACK 14 1 2 10 8 ssthresh ssthresh Time Out 6 ssthresh 4 Slow Start 2 Congestion Avoidance 0 Fast Recovery 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Transmission round 83
Δίκαιος διαμοιρασμός πόρων ανάμεσα σε συνδέσεις TCP Το TCP επιτυγχάνει τη δίκαιη χρήση των δικτυακών πόρων όσον αφορά το ρυθμό μετάδοσης. Ακόμα και εάν κάποιος έχει καταλάβει όλο το διαθέσιμο ρυθμό μετάδοσης, όταν εμφανιστεί κάποιος άλλος (φυσικά και οι δύο πρέπει να χρησιμοποιούν TCP), ο οποίος θέλει να κάνει χρήση των πόρων, τότε ο πρώτος θα υποχωρήσει σταδιακά, έτσι ώστε να μοιραστούν τους πόρους. Σε βάθος χρόνου, όλοι θα έχουν το αντίστοιχο μερίδιο χρήσης των πόρων του δικτύου για μετάδοση δεδομένων. Αυτό μπορεί να δημιουργήσει προβλήματα όμως σε εφαρμογές, μια και δεν μπορούν να ελέγξουν οι ίδιες το ρυθμό αποστολής δεδομένων (π.χ. πολυμέσα, όπου αυτό θα ήταν επιθυμητό). Το UDP από την άλλη, δεν έχει τέτοιο μηχανισμό. Τέλος σε επίπεδο εφαρμογής, μπορείς να ξεγελάσεις το TCP (παράλληλες αιτήσεις πάνω από http). 84
Αυτορρύθμιση και δίκαια διανομή πόρων ανάμεσα σε συνδέσεις TCP Στόχος: Εάν K συνδέσεις TCP μοιράζονται την ίδια γραμμή επικοινωνίας μεγίστου Bitrate R, η καθεμιά πρέπει να έχει μέσο ρυθμό ίσο με R/K. Παράδειγμα: Δύο ανταγωνιστικές σύνοδοι πάνω από TCP: Η προσθετική αύξηση δίνει κλίση 1, όπως η ταχύτητα αυξάνει. Η πολλαπλασιαστική μείωση γίνεται ανάλογα με το ρυθμό μετάδοσης. R Ισοδύναμος διαμοιρασμός εύρους Αποφυγή συμφόρησης: προσθετική αύξηση απώλεια: μείωση παραθύρου με παράγοντα 2 απώλεια: μείωση παραθύρου με παράγοντα 2 Αποφυγή συμφόρησης: προσθετική αύξηση Ταχύτητα Σύνδεσης 1 R 85
Αυτορρύθμιση και δίκαια διανομή πόρων ανάμεσα σε συνδέσεις (γενικότερα) Χρήση του UDP Οι εφαρμογές πολυμέσων συχνά δεν χρησιμοποιούν TCP, επειδή δε θέλουν ο ρυθμός μετάδοσης να εξαρτάται από τον έλεγχο συμφόρησης. Αντίθετα χρησιμοποιούν UDP, ώστε να μπορούν να αντλούν πληροφορία audio/video από το δίκτυο με σταθερό ρυθμό, ανεχόμενοι την απώλεια πακέτων. Το UDP δεν αυτοπεριορίζεται, και σε μία σύνδεση παράλληλα με TCP, θα τείνει να καταλάβει το διαθέσιμο εύρος. Παράλληλες συνδέσεις TCP Τίποτα δεν εμποδίζει μία εφαρμογή από το να ανοίγει παράλληλες συνδέσεις μεταξύ δύο τερματικών. Οι φυλλομετρητές δικτύου το κάνουν αυτό. Αυτό μπορεί να οδηγήσει σε ανισόρροπη κατανομή πόρων (υπέρ αυτού που έχει περισσότερες συνδέσεις ανοικτές). 86
Μέση τιμή του TCP throughput Μέση τιμή του TCP througput ως συνάρτηση του window size και του RTT, σε βάθος χρόνου Αγνοούμε το slow start και υποθέτουμε ότι έχουμε πάντα δεδομένα να στείλουμε W: μέγεθος παραθύρου σε bytes, τη στιγμή που έχουμε απώλειες (έχουμε γθάσει στα όρια της δυνατότητας μετάδοσης από άκρο σε άκρο) W Αφού το cwin κυμαίνεται ανάμεσα σε W/2 W, Μέση τιμή του TCP throughput = 3/4W για κάθε RTT RTT W/2 avg TCP thrοugput = 3 4 W RTT bytes/sec 87
Σύνοψη Μελετήσαμε: Τον έλεγχο ροής στο TCP. Τη λειτουργία του ελέγχου συμφόρησης με τεχνικές όπως: Αργή εκκίνηση Fast Retransmit TCP Tahoe TCP Reno 88
Σε αυτή την ενότητα μιλήσαμε για: 4.1 Επιδόσεις δικτύου δεδομένων σε επίπεδο μεταφοράς. 4.2 Επίπεδο μεταφοράς δεδομένων (Βασικές αρχές λειτουργίας πρωτοκόλλων μεταφοράς δεδομένων). 4.3 Πρωτόκολλα μεταφοράς διαδικτύου (Transport Control Protocol, User Datagram Protocol) 4.4 Έλεγχος ροής και συμφόρησης στο TCP (Έλεγχος ροής ανάμεσα στα δύο άκρα, slow start, congestion avoidance, fast retransmit, fast recovery). 89
Δίκτυα Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 4: Μετάδοση δεδομένων από το στρώμα μεταφοράς Δρ. Χαράλαμπος Ζ. Πατρικάκης Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε