Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΤΟ ΠΡΩΤΟΚΟΛΛΟ TCP."— Μεταγράφημα παρουσίασης:

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

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

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

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

5 Υπηρεσία 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

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

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

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

9 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 Ftp Internet

10 Sequence Number Έχει μήκος 32 bits Η κλίμακα της SeqNo είναι
0 <= SeqNo <=  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

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

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

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

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

15 TCP Εφαρμογές

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

17 Διαδραστική Εφαρμογή: 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 για το δεύτερο πακέτο

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

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

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

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

22 Παρατηρήσεις (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 μικρού μεγέθους. Ο αλγόριθμος αυτός μπορεί να απενεργοποιηθεί.

23 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

24 TCP Flow Control

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

26 Μηχανισμός 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

43 Έλεγχος των απωλειών Πακέτων στο 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.

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

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

46 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)

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

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

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

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

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

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

53 Παράδειγμα με το 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

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

55 Παράδειγμα Γρήγορη Αναμετάδοση
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

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

57 Συνδυασμός των 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 φάση

58 Παράδειγμα: Συνδυασμός των 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

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

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

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

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

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

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


Κατέβασμα ppt "ΤΟ ΠΡΩΤΟΚΟΛΛΟ TCP."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google