ΤΟ ΠΡΩΤΟΚΟΛΛΟ TCP.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Από Άκρο σε Άκρο Αποφυγή Συμφόρησης
Advertisements

HY-335 : Δίκτυα Υπολογιστών Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο O R E K W N T net works Επίπεδο.
HY-335 : Δίκτυα Υπολογιστών
Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης
1 Basic network tools Layers recap Basic Addressing ping traceroute ipconfig.
Σύνοψη 1 Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή
Επίπεδο μεταφοράς 1 Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο Κεφάλαιa 3.1, 3.2, 3.3, 3.5 των Kurose/Ross.
HY-335 : Δίκτυα Υπολογιστών
HY-335 : Δίκτυα Υπολογιστών Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο O R E K W N T net works Επίπεδο.
ΤCP/IP Τι είναι; Σύντομο Ιστορικό
Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1.
ΚΛΕΙΣΤΑ ΔΙΚΤΥΑ ΟΥΡΩΝ MARKOV 30/05/2011
TCP 1 HY-335 : Δίκτυα Υπολογιστών Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο O R E K W N T net works.
Επίπεδο Μεταφοράς (Transport Layer)
National Technical University of AthensΤεχνολογίες Διαδικτύου Σύνοψη 1Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή 1.2 Πρωτόκολλα TCP/IP Διαστρωμάτωση.
OSI Μοντέλο αναφοράς.
Επίπεδο Μεταφοράς (Transport Layer)
National Technical University of AthensΤεχνολογίες Διαδικτύου Σύνοψη 1Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή 1.2 Πρωτόκολλα TCP/IP Διαστρωμάτωση.
HY-335 : Δίκτυα Υπολογιστών DHCP Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο
HY-335 : Δίκτυα Υπολογιστών Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο O R E K W N T net works Επίπεδο.
ΗΥ Παπαευσταθίου Γιάννης1 Clock generation.
ΗΥ Καλοκαιρινός Γιώργος1 PCI Bus Pin List. ΗΥ Καλοκαιρινός Γιώργος2 Initiator Target.
ΗΥ Καλοκαιρινός Γιώργος1 Bus. ΗΥ Καλοκαιρινός Γιώργος2 MCS51.
6/26/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Asynchronous Circuits.
Διαχείριση Δικτύων Ευφυή Δίκτυα Άσκηση 4: Ανάλυση Δικτυακής Κίνησης – Πρωτοκόλλων - Υπηρεσιών Εργαστήριο Διαχείρισης και Βέλτιστου Σχεδιασμού Δικτύων (NETMODE)
Προσομοίωση Δικτύων 2n Άσκηση Δημιουργία, διαμόρφωση μελέτη επικοινωνιακών ζεύξεων.
Δίκτυα Υπολογιστών II Routing in a (W)LAN Routing in a (W)LAN is based on MAC addresses, never IP addresses. A router (e.g. integrated with an access point)
Προσομοίωση Δικτύων 5η Άσκηση Study of TCP versions over FTP application.
Προσομοίωση Δικτύων 4η Άσκηση Σύνθετες τοπολογίες, διακοπή συνδέσεων, δυναμική δρομολόγηση.
Προσομοίωση Δικτύων 3η Άσκηση Δημιουργία, διαμόρφωση μελέτη σύνθετων τοπολογιών.
TCP/IP Protocol Suite 1 Διάλεξη 2 η Με την ολοκλήρωση της ενότητας θα μπορείτε να: Το μοντέλο OSI και η σουίτα TCP/IP κατανοήσετε την αρχιτεκτονική του.
Δίκτυα Επικοινωνιών Ενότητα # 5: Επίπεδο Δικτύου Διδάσκων: Θεόδωρος Αποστολόπουλος Τμήμα: Πληροφορικής.
Μάθημα 8 Session και Cookies. Session Το HTTP πρωτόκολλο είναι stateless. Άρα το HTTP δεν έχει μνήμη. Αυτό σημαίνει ότι εάν έχω μια μεταβλητή που την.
Βασικές έννοιες και τεχνολογίες δικτύων Ιάκωβος Αλεξανδρής Ηλεκ/γος Μηχ/κος & Μηχ/κος Η/Υ Τεχνικός Υπεύθυνος ΚΕΠΛΗΝΕΤ Χαλκιδικής Cisco CCNA.
Προχωρημένα Θέματα Δικτύων
Μαθαίνω με “υπότιτλους”
User Datagram Protocol (UDP)
Διασύνδεση LAN Γιατί όχι μόνο ένα μεγάλο LAN
Εισαγωγικά Θέματα Διαχείρισης Δικτύων
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΚΑΙ ΔΙΑΣΥΝΔΕΣΗΣ ΔΙΚΤΥΩΝ
Προχωρημένα Θέματα Δικτύων
Διαχείριση Δικτύων - Ευφυή Δίκτυα,
ΤΕΧΝΟΛΟΓΙΑ ΑΤΜ.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Ενότητα 7 : Δίκτυα Υπολογιστών Δρ. Γκόγκος Χρήστος
Πανεπιστήμιο Πελοποννήσου
1η Εργαστηριακή Άσκηση - TCP/IP Όνομα: Σουλιώτη Βασιλική ΑΜ: 691
Ελεγχος συμφορησης δικτυου στο tcp
Διαχείριση Δικτύων - Ευφυή Δίκτυα, 9ο Εξάμηνο,
Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Ρύθμιση Postfix SMTP Server, Courier IMAP, POP3 σε Ubuntu Linux Πανεπιστήμιο Πελοποννήσου Τμήμα Επιστήμης.
IPSec Χαρακτηριστικά Η IPSec (IP Security) προδιαγραφή περιγράφει ένα γενικό πλαίσιο ασφάλειας και καθορίζει μία σειρά από διαδικασίες και πρωτόκολλα,
Ειδικά Θέματα σε Κινητά και Ασύρματα Δίκτυα: 1η εργαστηριακή άσκηση
Διαδίκτυα και το Διαδίκτυο (Internetworking and the Internet)
Τεχνολογία Πολυμέσων Ενότητα # 17: Πρωτόκολλα μετάδοσης
Ενότητα 3: Επίπεδο Μεταφοράς
Μουσενίκας Δημήτριος Βλάχος Χριστόδουλος
Εντολές Δικτύων Command Line.
(ALPHA BANK – EUROBANK – PIRAEUS BANK)
ΕΙΔΙΚΑ ΘΕΜΑΤΑ ΔΙΚΤΥΩΝ Παρουσίαση μαθήματος.
Εισαγωγή Στις Τεχνολογίες Επικοινωνιών
Διαχείριση Δικτύων - Ευφυή Δίκτυα,
Ανάλυση Γεωργικού Οικογενειακού Εισήματος (ΓΟΕ)
ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ
Δίκτυα Επικοινωνιών Ενότητα 5: Επίπεδο Ζεύξης:
Χαρακτηριστικά και Αξιολόγηση Δικτύου για εφαρμογές Πολυμέσων
aka Mathematical Models and Applications
ΕΝΣΤΑΣΕΙΣ ΠΟΙΟΣ? Όμως ναι.... Ένα σκάφος
Χαρακτηριστικά και Αξιολόγηση Δικτύου για εφαρμογές Πολυμέσων
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Baggy Bounds checking by Akritidis, Costa, Castro, and Hand
Μεταγράφημα παρουσίασης:

ΤΟ ΠΡΩΤΟΚΟΛΛΟ TCP

Η Εξέλιξη του TCP

Γενική Περιγραφή Είναι πρωτόκολλο connection-oriented (σύνδεσης) Παρέχει μια αξιόπιστη unicast point-to-point δέσμη bytes από το ένα άκρο στο άλλο πάνω από ένα μη αξιόπιστο δίκτυο Byte Stream Byte Stream TCP TCP Connection-Oriented: Πριν ενα process μιας εφαρμογής αρχίσει να στέλνει δεδομένα σε κάποια άλλη που βρίσκεται σε κα΄ποιον άλλο host, οι δύο εφαρμογές πρέπει να εγκαταστήσουν κάποια σύνδεση αρχικοποιώντας τις παραμέτρους της σύνδεσης IP Internetwork

Connection-Oriented (Δημιουργία Σύνδεσης) Πριν την ανταλλαγή δεδομένων το πρωτόκολλο, TCP εγκαθιστά μια σύνδεση : Η μια TCP οντότητα αναμένει για τη σύνδεση (“server”) Η άλλη TCP οντότητα (“client”) επικοινωνεί με το server Κάθε σύνδεση είναι full duplex Full Duplex: Εάν υπάρχει μια TCP σύνδεση μεταξύ της διεργασίας Α στο host A και της διεργασίας Β σε άλλο host, υπάρχει ταυτόχρονη ροή δεδομένων από το σημείο Β στο σημείο Α.

Υπηρεσία Byte Stream Για τα χαμηλότερα επίπεδα, το TCP χειρίζεται τα δεδομένα σε blocks τα οποία ονομάζονται segments Για τα υψηλότερα επίπεδα,το TCP χειρίζεται τα δεδομένα σαν μια ακολουθία από bytes και δεν προσδιορίζει ‘σύνορα΄μεταξύ των bytes Tα υψηλότερα επίπεδα δεν γνωρίζουν για την αρχή και το τέλος των segments Επίπεδο Εφαρμογής Επίπεδο Εφαρμογής 1. read 40 bytes 1. write 100 bytes 2. read 40 bytes 2. write 20 bytes 3. read 40 bytes queue of queue of TCP bytes to be bytes that Segments TCP transmitted have been received

To Format του Πρωτοκόλλου TCP

Χαρακτηριστικά TCP Επικεφαλίδας Slide 7

Μήκος Επικεφαλίδας To μήκος του πεδίου length είναι 32-bit words Είναι σημαντικό να αναφερθεί οτι το TCP header έχει μεταβλητό μήκος (με ελάχιστο μήκος 20 bytes)

Port Number Το port number προσδιορίζει το τελικό σημείο μιας σύνδεσης Το ζευγάρι <IP address, port number> καθορίζει ένα συγκεκριμένο τελικό σημείο μιας σύνδεσης Δύο ζεύγη <client IP address, client port number> και <server IP address, server port number> προσδιορίζουν μια TCP σύνδεση. TCP IP Εφαρμογή 23 104 80 Ports: 7 16 Παράδειγμα TCP Εφαρμογών Telnet Email Ftp Internet

Sequence Number Έχει μήκος 32 bits Η κλίμακα της SeqNo είναι 0 <= SeqNo <= 232 -1  4.3 Gbyte Το SeqNo προσδιορίζει το πρώτο byte μέσα στο stream H αρχική τιμή του Sequence Number (Initial Sequence Number) καθορίζεται κατά την εγκατάσταση της σύνδεσης Παράδειγμα Μια διεργασία στον host A θέλει να στείλει ένα stream δεδομένων στον host Β δια μέσου μιας TCP σύνδεσης. Πρώτο segment 1000 bytes: Sequence Number= 0 Δεύτερο segment 1000 bytes: Sequence Number=1000 Τρίτο segment 2000 bytes: Sequence Number =2000 Τέταρτο segment 2000 bytes: Sequence Number =4000

Acknowledgment Number (1) Tα acknowledgements στέλνονται σαν piggybacked και είναι συσσωρευτικά (cumulative), Π.χ. ένα segment από το σημείο A στο B μπορεί να περιλαμβάνει ένα acknowledgement για δεδομένα που στάλθηκαν από το σημείο Β στο Α Ένας host ενεργοποιεί τη σημαία “ACK flag” για να στείλει ένα acknowledgement Το AckNo περιλαμβάνει το επόμενο SeqNo που ο host περιμένει να λάβει Παράδειγμα: Το acknowledgement για το segment με Sequence Numbers 0-1500 is AckNo=1501 Παράδειγμα Host Α=>Host Β: 0-535 bytes Host A=>Host B: 900-1000 bytes Host B δεν έχει λάβει τα bytes 536-899 To επόμενο ACK segment από το Host B-Host A: ACK 536

Acknowledgment Number (2) To TCP χρησιμοποιεί το μηχανισμό sliding window (επόμενα slides) για να ελέγξει την ροή της κίνησης από το αποστολέα στον παραλήπτη To TCP χρησιμοποιεί μια παραλλαγή της ολίσθησης παραθύρου Χωρίς χρήση NACKs (Negative ACKnowledgement) Αθροιστικά ACKs Παράδειγμα: Ας υποθέσουμε οτι ο αποστολέας στέλνει 2 segments “1..1500” και “1501..3000”, αλλά ο παραλήπτης λαμβάνει μόνο το δεύτερο segment. Σε αυτή τη περίπτωση, ο παραλήπτη δεν μπορεί να κάνει acknowledge το δεύτερο πακέτο. Μπορεί να στείλει AckNo=1

Μέγεθος Παραθύρου Κάθε πλευρά της σύνδεσης πρέπει να αποστείλει /’διαφημίσει’ το μέγεθος του παραθύρου Το μέγεθος παραθύρου είναι ο μέγιστος αριθμός bytes που ο παραλήπτης μπορεί να αποδεχθεί Το μέγιστο μέγεθος παραθύρου ισούται με 216-1= 65535 bytes

TCP Checksum To TCP checksum καλύπτει τόσο το TCP header όσο και το TCP data

TCP Εφαρμογές

Διαδραστική και Ογκώδη Μεταφορά Δεδομένων Οι εφαρμογές TCP μπορούν να ταξινομηθούν στις παρακάτω κατηγορίες Ογκώδης μεταφορά δεδομένων (bulk data transfer)- ftp, mail Διαδραστική μεταφορά δεδομένων (interactive data transfer) - telnet, rlogin Το πρωτόκολλο TCP έχει τους μηχανισμούς για να χειρισθεί τις εφαρμογές αυτές Για διαδραστική μεταφορά δεδομένων: Μείωση του συνολικού αριθμού των πακέτων Για ογκώδη μεταφορά δεδομένων : Μείωση του συνολικού χρόνου μεταφοράς

Διαδραστική Εφαρμογή: Telnet 1. send character 2. interpret character 3. send echo of character and/or output Host with Telnet client Telnet server Απομακρυσμένες εφαρμογές τερματικών στέλνουν χαρακτήρες σε ένα server. O server μεταφράζει τους χαρακτήρες που λαμβάνει και στέλνει μια απάντηση στο τερματικό. Για κάθε χαρακτήρα, χρησιμοποιούνται τρία πακέτα: Client  Server: Αποστολή χαρακτήρα Server  Client: Echo του χαρακτήρα (or user output) και acknowledgement για το πρώτο πακέτο Client  Server: Το Acknowledgement για το δεύτερο πακέτο

Παράδειγμα Χρησιμοποιώντας το tcpdump λαμβάνουμε την ακολουθία Θα περιμέναμε να λάβουμε την ακολουθία Τι έχει συμβεί? Καθυστέρηση της μετάδοσης ενός ACK

Καθυστερημένα Acknowledgments To TCP μπορεί να καθυστερήσει τη μετάδοση των ACKs μέχρι 200ms Στην περίπτωση που υπάρχουν δεδομένα προς μετάδοση μέσα στο χρονικό αυτό περιορισμό, τα ACKs μπορεί να γίνουν piggybacked σε ένα data segment. Καθυστερημένα ACKs εξηγούν γιατί τα ACK καθώς επίσης και το ‘echo’ των χαρακτήρων αποστέλλονται στο ίδιο segment.

Παράδειγμα: Telnet Session σε Απομακρυσμένο Host pithon.cs.eap.gr dias.icsd.aegean.gr This is the output of typing 7 characters : Time 16.401963:Pithon  Dias: Push, SeqNo 1:2(1), AckNo 2 Time 16.481929:Dias  Pithon: Push, SeqNo 2:3(1), AckNo 2 Time 16.482154:Pithon  Dias: Push, SeqNo 2:3(1), AckNo 3 Time 16.559447:Dias  Pithon: Push, SeqNo 3:4(1), AckNo 3 Time 16.559684:Pithon  Dias: Push, SeqNo 3:4(1), AckNo 4 Time 16.640508: Dias  Pithon: Push, SeqNo 4:5(1), AckNo 4 Time 16.640761:Pithon  Dias: Push, SeqNo 4:8(4), AckNo 5 Time 16.728402: Dias  Pithon: Push, SeqNo 5:9(4), AckNo 8

Παρατηρήσεις (1) Η μετάδοση των segments ακολουθεί μια διαφορετική μορφή, π.χ., υπάρχουν μόλις 2 πακέτα ανα χαρακτήρα Τα καθυστερημένα acknowledgment δεν φαίνονται Ο λόγος είναι οτι υπάρχουν δεδομένα στο Pithon έτοιμα προς μετάδοση όταν το ACK φθάνει.

Παρατηρήσεις (2) Παρατήρηση: Ο Pithon δεν έχει ποτέ πολλαπλά segments που είναι σε εκκρεμότητα (unacknowledged) Υπάρχουν λιγότερες μεταδόσεις από τους χαρακτήρες. Αυτό συμβαίνει λόγω της χρήσης του Nagle’s Αλγόριθμου: Αντιμετώπιση του “small packet problem” Κάθε TCP σύνδεση μπορεί να έχει MONO ένα μικρό segment (1-byte) segment σε εκκρεμότητα για το οποίο δεν έχει αποσταλεί το acknowledgement Υλοποίηση: Αποστολή ενός byte και αποθήκευση σε buffer όλων των ακόλουθων bytes μέχρι τη λήψη του acknowledgement. Στη συνέχεια αποστέλλονται όλα τα bytes του buffer σε ένα απλό segment. Ο αλγόριθμος του Nagle’s ελαχιστοποιεί τον αριθμό segments μικρού μεγέθους. Ο αλγόριθμος αυτός μπορεί να απενεργοποιηθεί.

What is Flow/Congestion/Error Control ? Flow Control: Algorithms to prevent that the sender overruns the receiver with information? Congestion Control: Algorithms to prevent that the sender overloads the network Error Control: Algorithms to recover or conceal the effects from packet losses  The goal of each of the control mechanisms are different.  But the implementation is combined

TCP Flow Control

Μηχανισμός TCP Flow Control (1) Πρόβλημα: Ένας γρήγορος Αποστολέας μπορεί να υπερχειλίσει τον Παραλήπτη Απώλειες Πακέτων: Μη απαραίτητες αναμεταδόσεις Πιθανές Λύσεις: Ο Αποστολέας μεταδίδει σε ρυθμό που έχει γίνει μια ‘διαπραγμάτευση’ Ο Αποστολέας περιορίζεται σε ένα παράθυρο από τα πακέτα που δεν έχει γίνει acknowledged To TCP υλοποιεί μηχανισμό sliding window flow control Το Flow control διαφέρει από το congestion control

Μηχανισμός TCP Flow Control (2) window Αποστολέας Sent but not acked Not yet sent Sequence numbers Next to be sent Μεταβλητές Last Byte Sent και Last Byte Acked Last Byte Sent-Last Byte Acked ≤ RecvWindow

Παράδειγμα Μηχανισμού Sliding Window (1) Ο Αποστολέας μπορεί να στείλει τα Sequence Numbers 6, 7, 8

Διαχείριση του TCP Παραθύρου Ο Παραλήπτης στέλνει δύο παραμέτρους στον αποστολέα Η ερμηνεία των δύο παραμέτρων Είμαι έτοιμος να λάβω δεδομένα με SeqNo=AckNo, AckNo+1, AckNo+2,…,AckNo+Win-1 O παραλήπτης μπορεί να κάνει acknowledge τα δεδομένα data χωρίς το ‘Άνοιγμα’ του TCP Παραθύρου Ο παραλήπτης μπορεί να μεταβάλει το μέγεθος του παραθύρου χωρίς να κάνει acknowledge τα δεδομένα

Παράδειγμα Μηχανισμού Sliding Window (2) Μετάδοση ενός byte (SeqNo=6) και λήψη ενός acknowledgement (AckNo=5, Win=4)

Άνοιγμα του TCP Παραθύρου Λήψη του Acknowledgement το οποίο έχει σαν αποτέλεσμα τη μεγέθυνση του παραθύρου από τα δεξιά Ο Παραλήπτης μεγαλώνει το παράθυρο όταν αδειάζει ο TCP Buffer

Σμίκρυνση του TCP Παραθύρου Λήψη του Acknowledgement το οποίο έχει σαν αποτέλεσμα τη σμίκρυνση του παραθύρου από τα δεξιά

Παράδειγμα Sliding Window

Αθροιστικά Acknowledgements 40 39 38 37 33 34 35 36 41 40 39 38 34 35 36 37 i data i ack

Καθυστερημένα Acknowledgements Ένα νέο πακέτο λαμβάνεται Λήξη προθεσμίας του χρονόμετρου (τυπική τιμή 200 ms typical) Μείωση της κίνησης των ack traffic Δεν δημιουργείται νέο ack με τη λήψη του πακέτου 36, αλλά με τη λήψη του πακέτου 37 40 39 38 37 33 35 41 40 39 38 35 37

Διπλά Acknowledgements out-of-order segment φθάνει στον Παραλήπτη 40 39 37 38 36 34 42 41 Διπλό ack για τη λήψη του 36

H Απόδοση του TCP σε συνάρτηση με το Μηχανισμό Sliding Window Το μέγεθος του παραθύρου περιορίζει το μέγεθος των δεδομένων που πρέπει να αποσταλούν ανά RTT Throughput <= Window / RTT

Ιδανικό Μέγεθος Παραθύρου Ιδανικό Μέγεθος Παραθύρου = Καθυστέρηση * Εύρος Ζώνης Τι Συμβαίνει εάν Μέγεθος Παραθύρου < Καθυστέρηση * Εύρος Ζώνης Ανεπάρκεια (wasted Εύρος Ζώνης) Τι Συμβαίνει εάν Μέγεθος Παραθύρου > Καθυστέρηση * Εύρος Ζώνης Αναμονή των πακέτων στους ενδιάμεσους δρομολογητές Αυξανόμενο RTT λόγω της καθυστέρησης στις ουρές αναμονής Απώλειες Πακέτων

Χρόνος Αναμετάδοσης To χρονικό διάστημα μεταξύ των προσπαθειών επαναμετάδοσης σε δευτερόλεπτα: 1.03, 3, 6, 12, 24, 48, 64, 64, 64, 64, 64, 64, 64. Κάθε φορά ο χρόνος επαναμετάδοσης διπλαδιάζεται (Εκθετικός Backoff Αλγόριθμος) Ο Timer δεν αυξάνει πέρα από τα 64 δευτερόλεπτα TCP σταματά μετά από την 13η προσπάθεια και 9 λεπτά.

Μηχανισμοί TCP Congestion Control

H Έννοια της Συμφόρησης (1) 10 Mbps 100 Mbps 1.5 Mbps Διαφορετικές πηγές συναγωνίζονται για τους πόρους του δικτύου Γιατί αυτό είναι πρόβλημα ? Πηγές δεν γνωρίζουν για την διαθεσιμότητα των πόρων Οι πηγές δεν γνωρίζουν για την ύπαρξη άλλων πηγών Αποτελέσματα: Χαμένα πακέτα (υπερχείλιση των ενταμιευτών στους δρομολογητές) Μεγάλες καθυστερήσεις (αναμονή στις ουρές των ενταμιευτών στους δρομολογητές) Μείωση της ρυθμοαπόδοσης στο σύνδεσμο που υπάρχει συμφόρηση

Ορισμός της Συμφόρησης Ορισμός: Αύξηση του δικτυακού φορτίου => Μείωση της χρήσιμης πληροφορίας που μεταφέρεται Πολλές Αιτίες Επαναμετάδοση πακέτων Κλασική περίπτωση συμφόρησης congestion collapse Πακέτα τα οποία δεν παραλήφθηκαν από τον Παραλήπτη

Προσέγγιση στην Συμφόρηση Δύο Προσεγγίσεις για να Επιλυθεί το Πρόβλημα της Συμφόρησης End-end Έλεγχος Συμφόρησης: Δεν υπάρχει μηχανισμός feedback από το δίκτυο Η συμφόρηση εξάγεται από τις παρατηρήσεις των τελικών χρηστών: απώλειες-πακέτων, καθυστέρηση Η προσέγγιση ακολουθείται από το TCP Μηχανισμός με την παροχή βοήθειας από το δίκτυο: Οι δρομολογητές παρέχουν feedback στους τελικούς χρήστες Χρήση ενός bit σαν ένδειξη της συμφόρησης (SNA, DECbit, TCP/IP ECN, ATM) Explicit rate sender should send at Πρόβλημα: αύξηση της πολυπλοκότητας στους δρομολογητές

Έλεγχος των απωλειών Πακέτων στο TCP Timeout του χρονομέτρη αναμετάδοσης (RTO – Retransmission Timeout) Διπλά acknowledgements Αck Fast Retransmit: TCP may generate an immediate acknowledgment (a duplicate ACK) when an out- of-order segment is received. This duplicate ACK should not be delayed. The purpose of this duplicate ACK is to let the other end know that a segment was received out of order, and to tell it what sequence number is expected.

Ανίχνευση Λαθών Χρησιμοποιώντας το RTO Σε οποιαδήποτε χρονική στιγμή, ο TCP αποστολέας θέτει το χρονομέτρη αναμετάδοσης για κάθε πακέτο που αποστέλλεται στον Παραλήπτη Εάν το acknowledgement δεν ληφθεί εντός των ορίων του χρονομέτρη, τότε το πακέτο θεωρείται ότι έχει χαθεί Το RTO υπολογίζεται δυναμικά

Υπολογισμός του RTO RTO = mean + 4 * Τυπική Απόκλιση Τυπική Απόκλιση s : s = average of (sample – mean) Χρήση της Μέσης Απόκλισης d = average of |sample – mean| Η μέση απόκλιση είναι πιο συντηρητική από οτι η τυπική απόκλιση d >= s Μεγάλες Διακυμάνσεις στο RTT αυξάνουν την απόκλιση=> το RTO μεγαλώνει Το RTO διπλασιάζεται σε κάθε timeout

TCP Μηχανισμοί Συμφόρησης (1) To TCP υλοποιεί μηχανισμούς συμφόρησης στον αποστολέα Το TCP ‘μεταφράζει΄ τις απώλειες πακέτων σαν σημάδι συμφόρηση και μειώνει τον ρυθμό μετάδοσης πακέτων Οι απώλειες πακέτων δεν είναι σημάδι συμφόρησης σε όλα τα δίκτυα Π.χ. ασύρματα δίκτυα Ο Αποστολέας χρησιμοποιεί δύο παραμέτρους Congestion Window (Παράθυρο Συμφόρησης-cwnd) H παράμετρος Congestion Window (cwnd) βάζει ένα περιορισμό στο ρυθμό μετάδοσης του ΤCP αποστολέα προς το δίκτυο. Last Byte Sent- Last Byte Acked ≤ min (cwnd, rcv win) Slow-Start Threshold Value (ssthresh) Η παράμετρος Slow Start threshold (ssthresh) υπολογίζει το μέγεθος παραθύρου για το οποίο θα τερματιστεί η φάση της Αργής Έναρξης. H παράμετρος Congestion Window (cwnd) βάζει ένα περιορισμό στο ρυθμό μετάδοσης του ΤCP αποστολέα προς το δίκτυο. Η παράμετρος Slow Start threshold (ssthresh) υπολογίζει το μέγεθος παραθύρου για το οποίο θα τερματιστεί η φάση της Αργής Έναρξης. Η τιμή αυτή αρχικά παίρνει μεγάλες τιμές (65Κbytes)

TCP Μηχανισμοί Συμφόρησης (2) O μηχανισμός συμφόρησης λειτουργεί με δύο τρόπους Φάση Αργής Έναρξη (Slow Start cwnd < ssthresh) Φάση Αποφυγή Συμφόρησης (Congestion Avoidance cwnd >= ssthresh) H παράμετρος Congestion Window (cwnd) βάζει ένα περιορισμό στο ρυθμό μετάδοσης του ΤCP αποστολέα προς το δίκτυο. Η παράμετρος Slow Start threshold (ssthresh) υπολογίζει το μέγεθος παραθύρου για το οποίο θα τερματιστεί η φάση της Αργής Έναρξης. Η τιμή αυτή αρχικά παίρνει μεγάλες τιμές (65Κbytes)

Slow Start Αρχική Τιμή: Cwnd=1 MSS (Maximum Segment Size) Παράδειγμα: MSS=500 bytes, RTT=200msecs=>Ρυθμός Μετ.=20 Kbps O Παραλήπτης στέλνει ένα Acknowledgment για κάθε segment Κάθε φορά που ένα ACK λαμβάνεται από τον αποστολέα, τότε το congestion window αυξάνεται H αύξηση του παραθύρου cwnd είναι εκθετική

Παράδειγμα Slow Start (1) To μέγεθος του παραθύρου αυξάνεται εκθετικά Για κάθε ACK, το cwnd αυξάνεται κατά 1 ανεξάρτητα από τον αριθμό των segments που έχουν γίνει acknowledged To TCP ελαττώνει τον ρυθμό αύξησης του cwnd όταν ισχύει η σχέση cwnd > ssthresh

Φάση Αποφυγή Συμφόρησης (Congestion Avoidance) H φάση congestion avoidance ξεκινάει εάν το cwnd έχει φθάσει στην τιμή ssthresh Εάν cwnd ≥ ssthresh τότε για κάθε λαμβανόμενο ACK πακέτο, το cwnd αυξάνεται ως ακολούθως cwnd = cwnd + 1/ [cwnd] [cwnd] είναι ο μεγαλύτερος ακέραιος μικρότερος από το cwnd To cwnd αυξάνεται κατά ένα, μόνο εάν όλα τα cwnd segments έχουν γίνει acknowledged

Παράδειγμα Αποφυγής Συμφόρησης Θεωρούμε οτι ssthresh = 8 Roundtrip times

Χειρισμός των Timeouts To TCP μεταφράζει το timeout σαν ένα σήμα συμφόρησης. Όταν αυτό συμβαίνει ο αποστολέας εκτελεί τα παρακάτω Το cwnd παίρνει την τιμή 1 Το ssthresh ισούται με την τρέχουσα τιμή του congestion window διαιρεμένη με το 2=> ssthressh = cwnd / 2 Εισαγωγή στη φάση Αργής Έναρξης

Παράδειγμα με το Timeouts After timeout cwnd = 20 Φάση 4 Φάση 2 Φάση 3 ssthresh = 10 Φάση 1 ssthresh = 8 Φάση1 : Αργή Έναρξη (cwnd < ssthesh) Φάση 2: Αποφυγή Συμφόρησης (time=18 sec) timeout Φάση 3: Aργή Έναρξη (ssthresh=cwnd=20/2=10), cwnd=1

Γρήγορη Αναμετάδοση (Fast Retransmit) Εάν τρία ή περισσότερα ACKs λαμβάνονται στη σειρά για την ίδια ακολουθία, ο TCP αποστολέας θεωρεί οτι το segment έχει χαθεί Στην συνέχεια το TCP εκτελεί επαναμετάδοση του ΄θεωρούμενου΄ χαμένου segment χωρίς να αναμένει να συμβεί το timeout Φάση Αργής Έναρξης ssthresh = cwnd/2 cwnd=1

Παράδειγμα Γρήγορη Αναμετάδοση 14 1 ack 0 ack 28 2 1-2 29-30 ack 1-2 ack 29-30 4 3-6 ack 3-6 Ενέργειες μετά το dupacks για το πακέτο 13: 1. On 3rd dupack 13 =>Γρήγορη Αναμετ. 2. ssthresh = 15/2 = 7 3. cwnd = 1, retransmit 14 4. Ο Παραλήπτης cached 15-28, acks 28 5. cwnd++ Εισαγωγή σε slow start 6. Στο πακέτο 35 Εισαγωγή σε Αποφ. Συμφ. 8 7-14 ack 7-13 15 15-28 14 dupack-13 1

Περίπτωση Όμοιες επιβεβαιώσεις Όταν ο αποστολέας λάβει όμοιες επιβεβαιώσεις – duplicate ACKs - (χωρίς να μεσολαβεί μεταξύ τους άλλο πακέτο) θέτει σε λειτουργία τον αλγόριθμο Ταχείας Επανεκπομπής (Fast Retransmit) Ο αλγόριθμος αυτός προβλέπει ότι με τη λήψη της 3ης όμοιας επιβεβαιωσης ο αποστολέας θα αναμεταδώσει το ζητούμενο πακέτο (segment) χωρίς να περιμένει τη λήξη του Retransmission Timer. Εάν στη συνέχεια πάρει n διαδοχικές όμοιες ACKs, τότε ξέρει ότι ο παραλήπτης πήρε n segments μετά το χαμένο πακέτο Μετά την αναμετάδοση του «χαμένου» πακέτου, ο αποστολέας ενεργοποιεί τον αλγόριθμο Ταχείας Ανάρρωσης (Fast Recovery) μέχρι να λάβει μια νέα επιβεβαίωση ACK, ο οποίος οδηγεί σε αύξηση του cwnd. Ο συνδυασμός των δυο αυτών αλγορίθμων αποτελείται από τα εξής βήματα

Συνδυασμός των 2 αλγορίθμων Με τη λήψη της 3ης όμοιας επιβεβαίωσης (ACK) το ssthresh τίθεται σε τιμή όχι μεγαλύτερη από όσο ορίζει η σχέση ssthresh = max(FlightSize /2, 2*MSS) FlightSize = amount of data that has been sent but not yet acked (RFC 2581). Αναμεταδίδεται το «χαμένο» πακέτο και cwnd = ssthresh + 3*MSS. Τα τρία επιπλέον πακέτα (segments) στη νέα τιμή του παραθύρου αντιστοιχούν στις τρεις όμοιες επιβεβαιώσεις (ACKs) που προκάλεσαν την αναμετάδοση. Για κάθε όμοια 2πλή ACK που λαμβάνεται στη συνέχεια το cwnd αυξάνεται κατά MSS. Αν η τιμή του cwnd το επιτρέπει, μεταδίδεται ένα πακέτο. Όταν ληφθεί νέα επιβεβαίωση (στην πράξη η επιβεβαίωση για το «χαμένο» πακέτο) Ουσιαστικά επιβεβαιώνονται όλα τα segments που στάλθηκαν πριν μπει στη φάση Fast Recovery ο αποστολέας (υποθέτοντας ότι δεν χάθηκαν περισσότερα segments). cwnd = ssthresh και η φάση της Ταχείας Ανάρρωσης τελειώνει Συνεχίζει σε congestion avoidance φάση

Παράδειγμα: Συνδυασμός των 2 αλγορίθμων Ο αποστολέας είναι στη φάση του Slow Start: Αρχικά cnwd = 8 Για κάθε επιβεβαίωση που παίρνει, αυξάνει το cnwd κατά 1 Άρα από cnwd = 8, μετά την ack7-13, γίνεται cnwd = 15 Ενέργειες μετά τις διπλές επιβεβαιώσεις για το πακέτο 14 που χάθηκε Μετά την 3η duplicate ACK, enter fast retransmit Τίθεται ssthresh = cwnd = 15/2=7 Επαναμετάδοση του 14 Παραλαβή της 4ης dup_ACK θέτει το cnw = 11 Μέτα την 14η dup_ACK, cnw=21, και στέλνονται τα 29-34 Μετά την επιβεβαίωση για το 28, βγαίνουμε από το fast recovery Τίθεται το cwnd = 7 Συνέχεια με Congestion Avoidance Slow Start Fast Retransmit Fast Recovery

Πολλές παραλλαγές-εξελίξεις του TCP TCP Tahoe (1988, FreeBSD 4.3 Tahoe) TCP Reno (1990, FreeBSD 4.3 Reno) New Reno (1996) TCP VEGAS

TCP Tahoe Αργής Έναρξης (Slow Start) Αποφυγή Συμφόρησης (Congestion Avoidance) Γρήγορης Αναμετάδοσης (Fast Retransmit)

TCP Reno Χρησιμοποιεί όλους τους μηχανισμούς του Tahoe Duplicate ACKs Γρήγορη Επαναμετάδοση Γρήγορη Ανάκαμψη Timeout Retransmit/Επαναμετάδοση Αργή Έναρξη/Slow Start To TCP Reno βελτιώνει την απόδοση του TCP σε σχέση με την έκδοση Tahoe όταν ένα απλό πακέτο απορρίπτεται σε ένα RTT

New-Reno TCP Το New-Reno TCP είναι μια παραλλαγή του Reno TCP που διαφοροποιείται μόνο στον τρόπο που τερματίζεται η φάση της Ταχείας Ανάρρωσης Συγκεκριμένα εισάγεται η έννοια της Μερικής Επιβεβαίωσης (Partial ACK). Ιδέα του New Reno Χρήση των partial ACK για παραμονή στο fast recovery και διόρθωση σε περίπτωση που χάθηκαν περισσότερα segments πριν την είσοδο στη φάση του fast retransmit

Μερική Επιβεβαίωση (Partial ACK) Μερική Επιβεβαίωση (Partial ACK) ονομάζεται κάθε επιβεβαίωση (ACK) που επιβεβαιώνει μέρος μόνο από τα δεδομένα που είχαν μεταδοθεί όταν ξεκίνησε η Ταχεία Επανεκπομπή Στο New-Reno TCP, η Μερική Επιβεβαίωση (partial ACK) εκλαμβάνεται ως ένδειξη ότι το επόμενο από αυτό που επιβεβαιώνεται πακέτο επίσης χάθηκε και επομένως δεν λήγει η φάση της Ταχείας Ανάρρωσης. Με τη λήψη της Μερικής Επιβεβαίωσης (partial ACK) ο αποστολέας θα αναμεταδώσει αμέσως το ζητούμενο πακέτο. Η Ταχεία Ανάρρωση θα ολοκληρωθεί μόνο όταν επιβεβαιωθούν όλα τα δεδομένα που είχαν ήδη μεταδοθεί όταν ξεκίνησε η Ταχεία Επανεκπομπή

TCP VEGAS Στη φάση congestion avoidance cwnd = (actual rate)x(base RTT) + 2 πακέτα Σε κάθε RTT, προσαρμόζεται το cwnd κατά 1 πακέτο εάν αυτό είναι απαραίτητο με βάση το παραπάνω τύπο Κατά τη διάρκεια της αργής έναρξης Για την ελάττωση της υπέρβασης, το cwnd αυξάνεται κάθε RTT Εξαγωγή από τη φάση της αργής έναρξης όταν cwnd > (actual rate)x(baseRTT) + 1 πακέτο