Ενόη α 4: Μεάδοση δεδομένων ΔΗΟΡΑΤΙΑ από ο σ ρώμα...
TRANSCRIPT
Κάντε κλικ για να ξεκινήσετε
Δίκτυα Υπολογιστών
Ενότητα 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
Περιεχόμενα
6
4.1 Επιδόσεις δικτύου δεδομένων σε επίπεδο μεταφοράς.
4.2 Επίπεδο μεταφοράς δεδομένων (Βασικές αρχές λειτουργίας πρωτοκόλλων μεταφοράς δεδομένων).
4.4 Έλεγχος ροής και συμφόρησης στο TCP (Έλεγχος ροής ανάμεσα στα δύο άκρα, slow start, congestion avoidance, fast retransmit, fast recovery).
4.3 Πρωτόκολλα μεταφοράς διαδικτύου (Transport Control Protocol, User Datagram Protocol)
Προσδοκώμενα Αποτελέσματα
7
Στην ενότητα αυτή θα μάθετε για:
Βασικές αρχές λειτουργίας του στρώματος μεταφοράς στο διαδίκτυο,
Αξιόπιστη και επιβεβαιωμένη μεταφορά δεδομένων, TCP, UDP,
Τα sockets, Τον έλεγχο ροής και συμφόρησης.
8
4.1 Επιδόσεις δικτύου δεδομένων σε επίπεδο μεταφοράς
Όροι
• 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 – Dnod: Καθυστέρηση κομβικής επεξεργασίας – Έλεγχος λαθών σε επίπεδο bit – Καθορισμός ζεύξης εξόδου
• Queuing delay – Dque: Καθυστέρηση αναμονής σε ουρά – Χρόνος αναμονής στη ζεύξη εξόδου για μετάδοση – Εξαρτάται από το επίπεδο συμφόρησης στον δρομολογητή
• Transmission delay – Dtrans: Καθυστέρηση μετάδοσης (=μήκος πακέτου/bitrate) – Χρόνος για να σταλούν bits μέσα στη ζεύξη
• Propagation delay – Dprop: Καθυστέρηση διάδοσης (=μήκος ζεύξης/ταχύτητα διάδοσης στο μέσο) – Χρόνος διάδοσης μέσα στο μέσο
• 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.
• Ο χρόνος μετάδοσης Dtrans του κάθε πακέτου είναι 8320 bits / 10000000 bps = 0,832 ms.
• Ο χρόνος μέσα στον οποίο θα λάβουμε επιβεβαίωση είναι ίσος με RTT = 20ms.
• Άρα ο συνολικός χρόνος για τη μετάδοση του ενός πακέτου είναι 20ms + 0,832 ms = 20,832 ms.
13
Παράδειγμα υπολογισμού επιδόσεων
• Συνυπολογισμός του μηχανισμού ελέγχου ροής:
– Αφού στη μετάδοση πάνω από 6 πακέτων τη φορά φτάνω στο όριο της σύνδεσης, θα έχω μετάδοση της μορφής: 1pct, 2pcts, 4pcts, 8pcts, 1pct, 2pcts, . . .
– Η τελευταία μετάδοση θα στείλει μόνο όσα πακέτα χρειάζεται για να ολοκληρωθεί το αρχείο.
• Ετοιμάζω τον πίνακα περιγραφής της μετάδοσης
14
Γύρος μετάδοσης
Μεταδιδόμενα πακέτα
Μεταδιδόμενα δεδομένα (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
Παράδειγμα υπολογισμού επιδόσεων
• Throughput: 232960 bits / 183,296 ms = 1,271 Mbps
• Goodput: 224000 bits / 183,296 ms = 1,222 Mbps
15
Γύρος μετάδοσης
Μεταδιδόμενα πακέτα
Μεταδιδόμενα δεδομένα (bits)
Σύνολο δεδομένων του αρχείου που μεταδόθηκαν (bits)
Dtrans Dtotal
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
Υπο
λογι
σμ
ός
χρό
νων
Πρακτικός υπολογισμός επιδόσεων
• 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
16
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
Σύνοψη
• Μελετήσαμε:
– Βασικούς όρους που θα χρειαστούμε.
– Παραδείγματα υπολογισμού επιδόσεων.
17
Βασικές αρχές λειτουργίας πρωτοκόλλων μεταφοράς δεδομένων
18
4.2 Επίπεδο μεταφοράς δεδομένων
Υπηρεσίες πρωτοκόλλων μεταφοράς
• Λογική επικοινωνία μεταξύ διαδικασιών/εφαρμογών που τρέχουν σε διαφορετικά τερματικά.
• Εφαρμογή σε επικοινωνία από άκρο σε άκρο (end to end). – Μόνο τα τερματικά συστήματα χρειάζεται να έχουν τα
αντίστοιχα πρωτόκολλα.
• Αντίθετα, το επίπεδο δικτύου υποστηρίζει τη μεταφορά πληροφοριών ανάμεσα σε τερματικά (και όχι διεργασίες).
• Χρησιμοποιεί τις υπηρεσίες του επιπέδου δικτύου όσον αφορά στην επικοινωνία των τερματικών συσκευών, και τις επεκτείνει με επιπλέον λειτουργίες ώστε να εξυπηρετήσει την εκτέλεση διαφορετικών εφαρμογών και διεργασιών πάνω σε αυτά, οι οποίες μπορούν να επικοινωνούν παράλληλα.
19
Πρωτόκολλα επιπέδου μεταφοράς στο διαδίκτυο
• Αξιόπιστη μεταφορά με εγγυήσεις παράδοσης σε σωστή σειρά των δεδομένων: TCP
• Δυνατότητα για: – Έλεγχο συμφόρησης
– Έλεγχο ροής
– Διαχείριση σύνδεσης (εγκατάσταση- απεγκατάσταση)
• Μη υποστήριξη: – Εγγυήσεων εύρους ζώνης
– Εγγυήσεων χρονισμού
– Πολυεκπομπής
• Αναξιόπιστη (“best-effort”) μεταφορά, χωρίς εγγυήσεις παράδοσης δεδομένων σε σωστή σειρά: UDP
• Χωρίς χρήση σύνδεσης.
• Χωρίς δυνατότητα ελέγχου ροής πληροφορίας και έλεγχο συμφόρησης.
• Δυνατότητα και για πολυεκπομπή (unicast + multicast).
20
Δύο βασικά πρωτόκολλα τα οποία υλοποιούν διαφορετικού τύπου υπηρεσίες
application transport network
M P2
application transport network
Πολυπλεξία/Αποπολυπλεξία
21
παραλήπτης
H t
H n
Αποπολυπλεξία (Demultiplexing) • Δυνατότητα παράδοσης
λαμβανόμενων segments στις αντίστοιχες διαδικασίες επιπέδου εφαρμογής
• Μεταβίβαση των segments στο σωστό Socket
segment
segment M
application transport network
P1 M
M M
P3 P4
επικεφαλίδα segment
μήνυμα επιπέδου εφαρμογής
αποστολέας αποστολέας
Πολυπλεξία (Multiplexing) • Δυνατότητα σε πολλές διεργασίες να
μεταδίδουν μηνύματα πάνω από το ίδιο επίπεδο μεταφοράς
• Συλλογή δεδομένων από πολλαπλά sockets, μετάδοση πάνω από το πρωτόκολλο μεταφοράς, με χρήση κατάλληλης επικεφαλίδας
Πολυπλεξία/Αποπολυπλεξία
Μηχανισμός βασισμένος:
• Στη χρήση αριθμών πόρτας (port numbers) και στις διευθύνσεις IP του αποστολέα και του παραλήπτη:
– Χρήση αριθμού πόρτας αποστολέα (source port) και παραλήπτη (destination port) σε κάθε segment.
– Χρήση προκαθορισμένων (μη δεσμευτικών) αριθμών πόρτας για συγκεκριμένες εφαρμογές και πρωτόκολλα (περιγράφονται στα αντίστοιχα RFCs).
• Και στα δύο πρωτόκολλα (TCP-UDP), η ύπαρξη πεδίων source + destination port στην επικεφαλίδα του segment είναι υποχρεωτική.
22
Πολυπλεξία/Αποπολυπλεξία: παράδειγμα
23
Source (IP: C/Port: yyyyy) Dest (IP: B/Port: 80)
Source (IP: A/Port: xxxxx) Dest (IP: B/Port: 80)
Source (IP: B/Port: 80) Dest (IP: C/Port: yyyyy)
Source (IP: Β/Port: 80) Dest (IP: Α/Port: xxxxx)
Ένας υπολογιστής λαμβάνει κάποιο datagram
Κάθε datagram έχει διευθύνσεις source IP address, και destination IP address
Κάθε datagram μεταφέρει 1 segment επιπέδου μεταφοράς
Κάθε segment έχει αριθμούς source port και destination port
Ο υπολογιστής χρησιμοποιεί τo συνδυασμό IP address, port για να στείλει το segment στο αντίστοιχο socket
Αποπολυπλεξία σε ασυνδεσιστρεφή επικοινωνία
24
Client IP:B
P2
client IP: A
P1 P1 P3
server IP: C
SP: 6428
DP: 9157
SP: 9157
DP: 6428
SP: 6428
DP: 5775
SP: 5775
DP: 6428
Datagrams με διαφορετικές source IP addresses και/ή source ports κατευθύνονται στο ίδιο socket
Ένα UDP segment κατευθύνεται στο socket το οποίο αντιστοιχεί στο destination port number
Source Port : παρέχει “διεύθυνση επιστροφής”
Client IP:B
P1
client IP: A
P1 P2 P4
server IP: C
SP: 9157
DP: 80
SP: 9157
DP: 80
P5 P6 P3
D-IP:C
S-IP: A
D-IP:C
S-IP: B
SP: 5775
DP: 80
D-IP:C
S-IP: B
Αποπολυπλεξία σε συνδεσιστρεφή επικοινωνία
25
Χρήση 4δας για ορισμό TCP socket:
Source IP, Source port
Dest IP, Dest port
Δυνατότητα για παράλληλη εξυπηρέτηση πολλών παράλληλων TCP sockets στον ίδιο εξυπηρετητή, για την ίδια εφαρμογή.
Διαφορετικό socket για κάθε συνδεδεμένο client (τι συμβαίνει με την περίπτωση του HTTP;)
Άθροισμα ελέγχου (checksum)
Αποστολέας: • Μεταχειρίζεται τα περιεχόμενα
του segment ως ακολουθία από ακέραιους των 16-bits.
• Συμπλήρωμα ως προς 1 των περιεχομένων του segment.
• Ο αποστολέας βάζει την τιμή του αθροίσματος ελέγχου στο αντίστοιχο πεδίο της UDP επικεφαλίδας.
Παραλήπτης:
• Υπολογίζει το άθροισμα ελέγχου του λαμβανόμενου segment.
• Εξετάζει εάν το άθροισμα ελέγχου που υπολογίζεται ισούται με την τιμή του αντίστοιχου πεδίου:
– ΟΧΙ – ανιχνεύθηκε σφάλμα
– ΝΑΙ – δεν ανιχνεύθηκε σφάλμα. Μπορεί να υπάρχουν σφάλματα παρ’ όλα αυτά;
26
Στόχος: ανίχνευση “σφαλμάτων” π.χ., αντεστραμμένα (flipped) bits, στο segment που μεταδίδεται
Υπολογισμός Internet Checksum (παράδειγμα)
27
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 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
+ 1
συμπλήρωμα κατά 1
Μετάδοση και μηχανισμοί επιβεβαίωσης
28
Μετάδοση χωρίς απώλειες Μετάδοση με απώλειες
(στο μεταδιδόμενο πακέτο δεδομένων)
Αποστολέας Παραλήπτης Αποστολέας Παραλήπτης
. . .
Packet 1
Timeout
Μετάδοση και μηχανισμοί επιβεβαίωσης
29
Μετάδοση με απώλειες (στην επιβεβαίωση)
Αποστολέας Παραλήπτης
Timeout
ACK 1
Επαναμετάδοση
Πρώιμη λήξη χρονιστή
Αποστολέας Παραλήπτης
Timeout
Επαναμετάδοση
A B
Χρόνος Μετάδοσης + Χρόνος Διάδοσης
Δημιουργία ACK
+ Χρόνος Διάδοσης L/Ρυθμό L/Ρυθμό + RTT
Χρήσιμο
Συνολικά
Μετάδοση με χρήση ACK
30
Υπολογισμός ρυθμού μετάδοσης
• Στην περίπτωση επιβεβαιωμένης μετάδοσης, ο πραγματικός ρυθμός μετάδοσης είναι πολύ μικρότερος από το μέγιστο δυνατό.
• Ο λόγος είναι ότι η μετάδοση του επόμενου πακέτου εξαρτάται και από το χρόνο επιβεβαίωσης του προηγούμενου (ή των προηγούμενων).
– U sender= κλάσμα του συνολικού χρόνου που ο αποστολέας είναι απασχολημένος με αποστολή.
31
U sender
= .008
30.008 = 0.00027
microsec
onds
L / R
RTT + L / R =
RTT=30 msec, 1KB pkt κάθε 30 msec -> 33kB/sec ρυθμός σε1 Gbps link
ms8bps10
bits80009
R
Ld trans
Παράδειγμα: 1 Gbps link, καθυστέρηση διάδοσης (Dprop) 15 ms, πακέτα των 1KB και επιβεβαίωση ανά πακέτο, και χωρίς να υπολογίζουμε υπόλοιπες καθυστερήσεις:
Πραγματικός ρυθμός μετάδοσης
Mbps
sdRTT
LR
trans
effect 27,0008,30
bits8000
Pipelining
• O αποστολέας μπορεί να στείλει αρκετά πακέτα παράλληλα, χωρίς να περιμένει επιβεβαίωση για το καθένα – Το εύρος των αριθμών σειράς πρέπει να αυξηθεί (δε μας αρκεί η
αρίθμηση 0 και 1 για τα πακέτα).
– Χρειάζεται αποθήκευση και στα δύο άκρα.
• Δύο περιπτώσεις μηχανισμών επανεκπομπής:
– go-Back-N (επιστροφή πίσω κατά Ν).
– selective repeat (επιλεκτική επανεκπομπή).
32
A B
Χρόνος Μετάδοσης + Χρόνος Διάδοσης
Δημιουργία ACK
L/Ρυθμό + RTT
+ Χρόνος Μετάδοσης
L/Ρυθμό + L/Ρυθμό Χρήσιμο
Συνολικά
Μετάδοση με χρήση ACK (χρήση pipelining)
33
Pipelining: αύξηση ποσοστού χρήσης του δικτύου
34
Μετάδοση 1ου bit πακέτου, t = 0
RTT
Μετάδοση τελευταίου bit, t = L / R
Λήψη 1ου bit πακέτου Λήψη τελευτ. bit 1ου πακ., αποστολή ACK
Λήψη ACK, αποστολή επόμενου πακέτου
t = RTT + L / R
U sender
= .024
30.008 = 0.0008
microsecon
ds
3 * L / R
RTT + L / R =
Τριπλασιασμός ποσοστού χρήσης του δικτύου!
Λήψη τελευτ. bit 2ου πακ., αποστολή ACK Λήψη τελευτ. bit 3ου πακ., αποστολή ACK
Πρωτόκολλα τύπου Pipelined
Go-back-N • Ο αποστολέας μπορεί να
έχει έως N μη επιβεβαιωμένα.
• Ο δέκτης απλώς μεταδίδει συγκεντρωτικά acks. – Αλλιώς πρέπει να αναζητηθεί το
κενό.
• Ο αποστολέας θέτει χρονιστή για το πιο παλιό πακέτο. – Έαν λήξει ο χρονιστής, γίνεται
επανεκπομπή όλων των μη επιβεβαιωμένων.
Επιλεκτική επανάληψη • Ο αποστολέας μπορεί να
έχει έως N μη επιβεβαιωμένα πακέτα στη σειρά (pipeline).
• Ο δέκτης στέλνει μεμονωμένα ack για κάθε πακέτο.
• Ο αποστολέας διαθέτει χρονιστή για κάθε πακέτο. – Όταν αυτός λήξει, τότε έχουμε
επανεκπομπή μόνο του μη επιβεβαιωμένου πακέτου.
35
Go-Back-N
36
• Ύπαρξη παραθύρου στον αποστολέα, το οποίο κρατά έως Ν (σε σειρά) πακέτα τα οποία δεν έχουν ληφθεί επιβεβαιωμένα από τον παραλήπτη.
• Αριθμός σειράς πακέτων στην επικεφαλίδα του πακέτου.
Χρήση συγκεντρωτικού ACK αντί για επιβεβαίωση κάθε πακέτου.
ACK(n): Επιβεβαιώνει όλα τα πακέτα μέχρι και το n ιοστό- “συγκεντρωτικό ACK”.
Χρήση timer για κάθε πακέτο το οποίο μεταδίδεται.
Πιθανότητα λήψης περισσότερων του ενός ACK για ένα πακέτο, και δυνατότητα μετάφρασης του τι συμβαίνει στο δίκτυο ανάλογα με αυτό.
Με τη λήξη του timer για ένα πακέτο (timeout(n)), γίνεται επανεκπομπή του πακέτου και όλων των πακέτων με αριθμό σειράς μεγαλύτερο του n, τα οποία βρίσκονται στο παράθυρο.
Αποστολέας Παραλήπτης
Timeout
Packet 2
Με τη λήξη του χρονιστή για το πακέτο 2, έχουμε επαναμετάδοση όλων των πακέτων που μεταδόθηκαν μετά από αυτό, μαζί με το ίδιο.
Α λήψη μιας διπλής (ή τριπλής επιβεβαίωσης μπορεί να μας δώσει ένδειξη για το ότι υπάρχει πρόβλημα.
Τα πακέτα που λήφθηκαν εκτός σειράς μπορούν να αχρηστευθούν, αφού θα επαναμεταδοθούν
Go-Back-N: Παράδειγμα χρήσης
37
Επιλεκτική Επανάληψη (Selective Repeat)
• Ο παραλήπτης αναγνωρίζει χωριστά όλα τα πακέτα που ελήφθησαν σωστά.
– Αποθηκεύει προσωρινά τα πακέτα, όπως απαιτείται, για την ενδεχόμενη, σε σειρά παράδοση στο ανώτερο επίπεδο.
• Ο αποστολέας ξαναστέλνει μόνο τα πακέτα για τα οποία δεν έλαβε επιβεβαίωση.
– Ύπαρξη χρονιστή στον αποστολέα (sender timer) για κάθε πακέτο που στέλνει.
• Παράθυρο σε αποστολέα και παραλήπτη. – Συγχρονισμός παραθύρων.
– Περιορισμός του πλήθους των πακέτων τα οποία έχουν σταλεί και δεν έχουν επιβεβαιωθεί.
38
Επιλεκτική επανεκπομπή
39
Λειτουργία αποστολέα-παραλήπτη
40
• Με τη λήξη δεδομένων από το παραπάνω επίπεδο, εάν υπάρχει επόμενο διαθέσιμο νούμερο σειράς είναι στο παράθυρο, γίνεται αποστολή με έναρξη του αντίστοιχου timer(n).
• Με τη λήξη χρονιστή για πακέτο n: timeout(n), γίνεται επαναποστολή του πακέτου, και επανεκκίνηση του timer.
• Με τη λήψη ACK(n): – Αν το n είναι μέσα στο
[sendbase,sendbase+N], το πακέτο n καταγράφεται ως επιβεβαιωμένο
– Αν n το μικρότερο, μη επιβεβαιωμένο, πακέτο, προχωράει το παράθυρο.
• Με τη λήψη ενός πακέτου n, εάν αυτό είναι μέσα στο [rcvbase, rcvbase+N-1], τότε γίνεται αποστολή ACK(n), και: – Αν το πακέτο είναι εκτός σειράς,
τότε αποθηκεύεται. – Αν το πακέτο είναι σε σειρά:
έλεγχος για διανομή στο παραπάνω επίπεδο όλων των αποθηκευμένων πακέτων σε σειρά από το πρώτο διαθέσιμο στο παράθυρο.
– Μεταφορά του παραθύρου ώστε η αρχή του να δείχνει στο πρώτο μη επιβεβαιωθέν πακέτο.
Αποστολέας Παραλήπτης
Επιλεκτική επανεκπομπή (selective repeat)
41
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
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
Σύνοψη
• Μελετήσαμε:
– Πρωτόκολλα του Επιπέδου Μεταφοράς
– Πολυπλεξία/ Αποπολυπλεξία
– Μεταδόσεις και μηχανισμούς επιβεβαίωσης
– Πρωτόκολλα τύπου pipelined:
• Go-Back-N
• Επιλεκτική Επανάληψη
42
Transport Control Protocol, User Datagram Protocol
43
4.3 Πρωτόκολλα μεταφοράς διαδικτύου
UDP: User Datagram Protocol - RFC 768
• Το πιο απλό πρωτόκολλο μεταφοράς του Internet.
• Υπηρεσία “best effort”.
• Τα UDP segments μπορεί να: – Χαθούν.
– παραδοθούν εκτός σειράς στην εφαρμογή.
• Ασυνδεσιστρεφές – χωρίς προηγούμενη
επικοινωνία μεταξύ αποστολέα και παραλήπτη.
– κάθε UDP segment αντιμετωπίζεται ανεξάρτητα από τα άλλα.
Πλεονεκτήματα: • Μείωση καθυστερήσεων από
εγκατάσταση σύνδεσης.
• Απλοποίηση λειτουργίας λόγω της μη ανάγκης για κατάσταση σύνδεσης ανάμεσα σε αποστολέα και παραλήπτη.
• ελαφρύ: μικρή επικεφαλίδα.
• Δυνατότητα για αποστολή δεδομένων από εφαρμογή κατά βούληση, χωρίς ρύθμιση για έλεγχο συμφόρησης ή ροής.
44
Χρήση του UDP
• Κατάλληλο για εφαρμογές οι οποίες είναι: – Ανεκτικές στην απώλεια δεδομένων.
– Ευαίσθητες όσον αφορά το ρυθμό λήψης δεδομένων.
• Επιπλέον χρησιμοποιείται σε εφαρμογές όπου θέλουμε να ελαχιστοποιήσουμε το overhead του επιπέδου μεταφοράς: – DNS
– SNMP
• Συχνά χρησιμοποιείται σε εφαρμογές πολυμέσων συνεχούς ροής (streaming multimedia).
• Δυνατότητα αξιόπιστης μεταφοράς δεδομένων πάνω από UDP: αξιόπιστη μεταφορά στο επίπεδο εφαρμογής.
45
Δομή UDP segment
46 Πηγή: http://nmap.org/book/tcpip-ref.html
TCP: (RFCs: 793, 1122, 1323, 2018, 2581)
• Μετάδοση δεδομένων full duplex: διπλοκατευθυντική ροή δεδομένων στην ίδια σύνδεση
• Συνδεσιστρεφές (connection-oriented):
– Χειραψία (ανταλλαγή μηνυμάτων ελέγχου) για αρχικοποίηση κατάστασης αποστολέα, παραλήπτη πριν την ανταλλαγή δεδομένων
– Διαδικασία τερματισμού σύνδεσης
• Ελεγχόμενη ροή: – Ο αποστολέας δεν θα πλημμυρίσει
τον παραλήπτη – Ο αποστολέας θα περιορίσει το
ρυθμό του σε περίπτωση συμφόρησης στο δίκτυo
– Χρήση για μεταφορά δεδομένων από σημείο σε σημείο (point-to-point: ένας αποστολέας, ένας παραλήπτης) και από άκρο σε άκρο (end to end).
• Αξιόπιστη, σε σειρά, μετάδοση δεδομένων.
• Ενταμιευτές σε αποστολέα και παραλήπτη.
• Έλεγχος συμφόρησης και ροής ορίζει μέγεθος παραθύρου αποστολής.
47
48
Δο
μή
TCP
segmen
t
Πηγή: http://nmap.org/book/tcpip-ref.html
TCP: Αποστολή αριθμημένων segments και επιβεβαιώσεις
49
Seq. #’s:
– Δείχνει στον αριθμό του πρώτου byte στο segment
ACKs:
– Αριθμός του seq # του επόμενου byte που αναμένεται
– Συγκεντρωτικά ACKs
Ο χρήστης Πληκτρολογεί ‘C’
Η πλευρά Α επιβεβαιώνει
το ‘C’ που έλαβε ως απάντηση
Η πλευρά Β επιβεβαιώνει τη λήψη του ‘C’, στέλνοντας πίσω ‘C’
Ένα απλό σενάριο telnet
Πλευρά Α Πλευρά Β
TCP Round Trip Time (RTT) και Timeout
Ρύθμιση του χρονιστή για την αποστολή segments:
• Ο χρόνος πρέπει να είναι μεγαλύτερος από το RTT
• Το RTT δεν είναι σταθερό
• Εάν είναι μικρότερος: – πρόωρη λήξη (timeout)
– Ανεπιθύμητες επανεκπομπές
• Εάν είναι πολύ μεγαλύτερος: – Αργή αντίδραση σε προβλήματα
απώλειας segments
Yπολογισμός RTT
• SampleRTT : η τιμή που μετράμε από τη μετάδοση του segment μέχρι τη λήψη του ACK
• Αγνοούνται οι επανεκπομπές
• Το SampleRTT μεταβάλλεται, έτσι ανάγκη για κανονικοποίηση του RTT
• Μέσος όρος από αρκετές πρόσφατες μετρήσεις και όχι το τελευταίο SampleRTT
50
TCP Round Trip Time καιTimeout
EstimatedRTT = (1- α) * EstimatedRTT + α * SampleRTT
• Η επίδραση των παλαιών δειγμάτων μειώνεται εκθετικά (exponential weighted moving average)
• Τυπική τιμή του α: 0.125
51
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RT
T (
mil
lise
con
ds)
SampleRTT Estimated RTT
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: σενάρια επανεκπομπής
55
Επιβεβαιωμένα 90 Bytes
Πλευρά Α Πλευρά Β
Timeout
Επιβεβαιωμένα 90 Bytes
Επιβεβαιωμένα 100 Bytes
Χαμένη επιβεβαίωση
TCP: σενάρια επανεκπομπής
56
Επιβεβαιωμένα 90 Bytes
Πρόωρο timeout
Πλευρά Α Πλευρά Β
Seq
90
Tim
eou
t Επιβεβαιωμένα 100 Bytes
Επιβεβαιωμένα 115 Bytes
Επιβεβαιωμένα 115 Bytes Seq
90
Tim
eou
t
TCP: σενάρια επανεκπομπής
57
Επιβεβαιωμένα 90 Bytes
Συγκεντρωτικό ACK
Πλευρά Α Πλευρά Β
Seq
90
Tim
eou
t Επιβεβαιωμένα 115 Bytes
Timeout
Δημιουργία TCP ACK: Συμπεριφορά του δέκτη
58
Λήψη segment σε σωστή σειρά
με αναμενόμενο seq # και με όλα τα
δεδομένα μέχρι το seq # είναι
επιβεβαιωμένα
Λήψη segment σε σωστή σειρά
με αναμενόμενο seq #. Ένα άλλο
segment όμως έχει ACK να εκκρεμεί
Λήψη segment εκτός σειράς με seq #
μεγαλύτερο από το αναμενόμενο.
Λήψη segment το οποίο γεμίζει
μέρος κενού ή όλο το κενό
Καθυστέρηση για αποστολή ACK και
αναμονή μέχρι 500ms για επόμενο
segment. Αν δεν έρθει, αποστολή ACK
Άμεση αποστολή ενός συγκεντρωτικού
ACK για όλα τα σε σειρά ληφθέντα
segments
Άμεση αποστολή διπλού ACK,
αναφέροντας το seq. # του επόμενου
αναμενόμενου byte
Άμεση αποστολή ACK, εφόσον το
segment ξεκινά από την αρχή του κενού
Γεγονός Ενέργεια
Γρήγορη επανεκπομπή
• Η περίοδος του time-out συνήθως είναι μεγάλη, άρα μεγάλη καθυστέρηση στην επανεκπομπή.
• Αναγνώριση χαμένων segments μέσω διπλών ACKs. – Ο αποστολέας συνήθως
στέλνει πολλά segments το ένα πίσω από το άλλο.
– Αν το segment χαθεί, τότε συνήθως έρχονται διπλά ACKs.
• Αν ο αποστολέας λάβει 3 αντίγραφα από ACK για τα ίδια δεδομένα, υποθέτει ότι το segment μετά τα επιβεβαιωμένα δεδομένα χάθηκε.
• Γρήγορη επανεκπομπή του segment, πριν τη λήξη του χρονιστή.
59
Επαναποστολή μετά από τριπλό αντίγραφο ACK
60
Timeout
Πλευρά Α Πλευρά Β
Διαχείριση σύνδεσης TCP (εγκατάσταση)
• Ο εξυπηρετητής αναμένει κάποια σύνδεση σε συγκεκριμένη πόρτα
• O πελάτης ξεκινά μια σύνδεση με το εξυπηρετητή πριν ξεκινήσει να ανταλλάσσει τμήματα δεδομένων
• Αρχικοποιεί τις μεταβλητές που σχετίζονται με τη μετάδοση: – seq. #s – buffers, πληροφορίες ελέγχου
ροής (π.χ. RcvWindow)
• Χειραψία τριών σταδίων
• Βήμα 1: ο υπολογιστής πελάτης στέλνει τμήμα TCP SYN στον εξυπηρετητή όπου:
– καθορίζει το αρχικό seq # του
– δε στέλνει ακόμα δεδομένα
• Βήμα 2: ο εξυπηρετητής λαμβάνει το SYN, και απαντάει με τμήμα του SYNACK, όπου:
– ορίζει τους buffers
– καθορίζει το αρχικό seq. # του
• Βήμα 3: ο πελάτης λαμβάνει το SYNACK και απαντά με τμήμα ACK , το οποίο:
– μπορεί να περιλαμβάνει δεδομένα
61
Χειραψία 3 σταδίων (3 way handshaking)
62
Αποστολή TCP SYN με επιλογή αρχικού
seq num (x)
Επιλοή αρχικού seq num (y) Και αποστολή TCP SYNACK Σε απάντηση του SYN
Λήψη SYNACK(x) Αποστολή ACK (για το SYNACK) Εδώ ο client μπορεί να αρχίσει
να στέλνει δεδομένα
Λήψη ACK(y) και έναρξη ανταλλαγής δεδομένων
Client
Server
Διαχείριση σύνδεσης TCP (τερματισμός)
• Ο πελάτης ξεκινά τη διαδικασία τερματισμού της σύνδεσης.
• Στέλνει ένα μήνυμα ελέγχου με FIN bit = 1.
• Η λήψη του FIN προκαλεί την αποστολή ενός μηνύματος ελέγχου ACK.
• Επιπλέον, μπορεί να σταλεί και μήνυμα FIN.
• Δυνατότητα για παράλληλη αποστολή FIN και από τις δύο πλευρές.
63
Διαχείριση σύνδεσης TCP (τερματισμός)
• Βήμα 1: ο πελάτης στέλνει μήνυμα ελέγχου TCP FIN στον εξυπηρετητή
• Βήμα 2: ο εξυπηρετητής λαμβάνει το FIN, και απαντάει με ACK. Κλείνει τη σύνδεση, ενώ παράλληλα στέλνει μήνυμα ελέγχου FIN.
• Βήμα 3: ο πελάτης λαμβάνει το FIN, και απαντά με ACK. Ξεκινά ένα χρονιστή, στη λήξη του οποίου θα κλείσει τη σύνδεση. Εάν έως τότε λάβει FIN, θα απαντήσει με ACK
• Βήμα 4: ο εξυπηρετητής, λαμβάνει το ACK. Η σύνδεση κλείνει.
• Βήμα 5: Ο χρονιστής στο πελάτη λήγει και ο πελάτης κλείνει τη σύνδεση
64
Τερματισμός
Τερματισμός
Client
Server
2*m
ax s
egm
ent
lif
etim
e
Έναρξη διαδικασίας τερματισμού
σύνδεσης
Μπορεί μόνο να λάβει μηνύματα και
να επιβεβαιώσει
Αναμονή για τερματισμό server
Μπορεί ακόμα να στείλει δεδομένα
Δεν μπορεί να στείλει δεδομένα
Ενημέρωση για τερματισμό
Διαχείριση Σύνδεσης στο TCP (client)
65
Διαχείριση Σύνδεσης στο TCP (server)
66
Χειρισμός επιβεβαιώσεων και επαναποστολής segments στο TCP
67
• Seq #: – Βyte stream.
– Αριθμός του πρώτου byte στο segment.
• ACKs: – seq # του επόμενουbyte που
αναμένεται.
– Συγκεντρωτικά ACKs.
• Το πρωτόκολλο δεν ορίζει τι γίνεται με τα segments που λαμβάνονται εκτός σειράς
source port # dest port #
sequence number
acknowledgement number
checksum
rwnd
urg pointer
Εξερχόμενο segment (παραλήπτης)
Επιβεβαιωμένα Απεσταλμένα, μη
επιβεβαιωμένα
Διαθέσιμα προς
αποστολή
Μη διαθέσιμα
ακόμα
window size N
Παράθυρο αποστολέα
source port # dest port #
sequence number
acknowledgement number
checksum
rwnd
urg pointer
Εξερχόμενο segment (αποστολέας)
Σύνοψη
• Μελετήσαμε:
– Τα πρωτόκολλα TCP- UDP
– Το TCP Round Trip Time και Timeout.
– Την Αξιόπιστη μεταφορά δεδομένων στο TCP με επαναποστολή πακέτων
• Σενάρια
– Στάδια διαχείρισης μιας TCP σύνδεσης (3-way handshake).
68
Έλεγχος ροής ανάμεσα στα δύο άκρα, slow start, congestion avoidance, fast retransmit, fast recovery
69
4.4 Έλεγχος ροής και συμφόρησης στο TCP
Έλεγχος ροής 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
74
τελευταίο επιβεβαιωμένο byte
Απεσταλμένα και μη επιβεβαιωμένα
bytes
cwnd
Παράθυρο αποστολέα
rate ~ ~ cwnd
RTT bytes/sec
τελευταίο Απεσταλμένο byte
• Ο αποστολέας περιορίζει τη μετάδοσή του μέσω ρύθμισης του cwnd ανάλογα με το πώς αντιλαμβάνεται τη συμφόρηση στο δίκτυο.
• LastByteSent- LastByteAcked <= cwnd. • Μηχανισμός ελέγχου ρυθμού αποστολής:
• αποστολή cwnd bytes, • Αναμονή RTT για επιβεβαίωση (ACKS),
• Επόμενη αποστολή
Έλεγχος συμφόρησης στο TCP (Additive increase, multiplicative decrease)
8 Kbytes
16 Kbytes
24 Kbytes
time
congestion
window
75
Λογική πίσω από το μηχανισμό: αύξηση ρυθμού μετάδοσης (μέγεθος παραθύρου), έλεγχος για διαθέσιμο εύρος, μέχρι να υπάρξει απώλεια
Ο αποστολέας, αυξάνει σιγά σιγά τη δυνατότητα αποστολής του κάθε φορά, ψάχνοντας να βρει τα όριά του όσον αφορά το μέγιστο υποστηριζόμενο ρυθμό μετάδοσης (usable bandwidth)
Αυτό γίνεται με σταδιακή αύξηση κατά 1 MSS του congestion window (cwnd) σε κάθε γύρο αποστολής (άρα κάθε RTT), μέχρι να διαγνώσει κάποια απώλεια. Αυτή οδηγεί σε μία συμπεριφορά η οποία χαρακτηρίζεται ως additive increase.
Μόλις διαγνωσθεί απώλεια, τότε το congestion window (cwnd) μειώνεται στο μισό. Αυτή οδηγεί σε μία συμπεριφορά η οποία χαρακτηρίζεται ως multiplicative decrease.
Εάν κάνουμε το γράφημα της αλλαγής του cwnd, θα δούμε ότι μοιάζει με πριόνι, όπου οι μύτες αντιστοιχούν στα σημεία όπου εμφανίστηκε πρόβλημα, λόγω υπέρβασης του υποστηριζόμενου ρυθμού μετάδοσης.
(cwnd)
Αργή Εκκίνηση (Slow start)
• Εάν η πηγή που μεταδίδει τα δεδομένα αρχίζει να στέλνει segments με μεγάλο ρυθμό, έστω και εάν ο δέκτης από την άλλη πλευρά μπορεί να τα δεχτεί, η κατάσταση του δικτύου δεν εγγυάται ότι θα φθάσουν όλα στον προορισμό τους, λόγω της κατάστασης των ουρών στους ενδιάμεσους δρομολογητές.
• Γι΄ αυτό το λόγο προτάθηκε το slow start το οποίο λειτουργεί στη βάση της παρακολούθησης του ρυθμού με τον οποίο νέα πακέτα μπορούν να εισαχθούν στο δίκτυο, υπολογίζοντας το ρυθμό λήψης των επιβεβαιώσεων και αντιδρώντας σε αυτόν.
• Αυξάνει κατά ένα τον αριθμό των segments που θα φύγουν μαζί στην επόμενη αποστολή για κάθε ACK που θα λάβει. Δηλαδή σε συνθήκες μη συμφόρησης, διπλασιάζει το ρυθμό των segments της επόμενης αποστολής, (για κάθε ACK το οποίο λαμβάνει μεταδίδει δύο segments).
• Θεωρητικά αυτό οδηγεί σε εκθετική αύξηση του ρυθμού αποστολής (αν και στην πράξη μια και η απέναντι πλευρά μπορεί να καθυστερήσει την αποστολή ACK, στέλνοντας ένα ACK για κάθε δύο segments που λαμβάνει, οπότε ο πραγματικός ρυθμός αύξησης είναι μικρότερος).
• Κάποια στιγμή οι ενδιάμεσοι δρομολογητές θα φθάσουν στα όριά τους και θα χαθoύν πακέτα, οπότε και ο αποστολέας θα ειδοποιηθεί γι’ αυτό, ώστε να αλλάξει πολιτική αποστολής segments.
76
Αργή Εκκίνηση (Slow start) εν συντομία
• Όταν ξεκινά η σύνδεση, ο ρυθμός μετάδοσης αυξάνεται εκθετικά μέχρι το πρώτο γεγονός απώλειας:
• Αρχικά cwnd = 1 MSS
• Το cwnd διπλασιάζεται κάθε RTT.
• Αύξηση του cwnd για κάθε ACK που λαμβάνεται.
• Αποτέλεσμα: ο αρχικός ρυθμός είναι αργός αλλά κλιμακώνεται εκθετικά γρήγορα.
77
RT
T
Host B Host A
Αποφυγή Συμφόρησης (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
Host B Host A
tim
eout
Γρήγορη Αναμετάδοση Λειτουργία
80
Γρήγορη Ανάκαμψη (Fast recovery)
• Μετά από την κατάσταση της γρήγορης αναμετάδοσης, αντί για αργή εκκίνηση, ο αποστολέας εισέρχεται στην κατάσταση της γρήγορης ανάκαμψης.
• Αυτό επιτρέπει την αποτελεσματική αντίδραση σε καταστάσεις μέτριας συμφόρησης.
• Η λήψη επιβεβαιώσεων από τον παραλήπτη δείχνει ότι υπάρχει επικοινωνία ανάμεσα στα δύο άκρα (με προβλήματα, αλλά δεν έχει διακοπεί εντελώς). Οπότε δεν υπάρχει λόγος για δραστικά μέτρα μείωσης του ρυθμού.
• Η γρήγορη ανάκαμψη επιτρέπει μια ήπια αντίδραση η οποία μπορεί να αντιμετωπίσει το πρόβλημα, χωρίς να μειώσει κατά πολύ το ρυθμό της επικοινωνίας των δυο άκρων.
81
Co
nge
stio
n w
ind
ow
(i
n s
egm
ents
)
Transmission round
2
8
12 10
6
4
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
16
Triple Duplicate ACK
ssthresh
ssthresh
0
Slow Start
Congestion Avoidance
ssthresh
Time Out
TCP Tahoe
82
Co
nge
stio
n w
ind
ow
(i
n s
egm
ents
)
Transmission round
2
8
12 10
6
4
14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
16
Time Out
Triple Duplicate ACK
ssthresh
ssthresh
ssthresh
0
Slow Start
Congestion Avoidance
Fast Recovery
TCP Reno
83
Δίκαιος διαμοιρασμός πόρων ανάμεσα σε συνδέσεις TCP
Το TCP επιτυγχάνει τη δίκαιη χρήση των δικτυακών πόρων όσον αφορά το ρυθμό μετάδοσης.
Ακόμα και εάν κάποιος έχει καταλάβει όλο το διαθέσιμο ρυθμό μετάδοσης, όταν εμφανιστεί κάποιος άλλος (φυσικά και οι δύο πρέπει να χρησιμοποιούν TCP), ο οποίος θέλει να κάνει χρήση των πόρων, τότε ο πρώτος θα υποχωρήσει σταδιακά, έτσι ώστε να μοιραστούν τους πόρους.
Σε βάθος χρόνου, όλοι θα έχουν το αντίστοιχο μερίδιο χρήσης των πόρων του δικτύου για μετάδοση δεδομένων.
Αυτό μπορεί να δημιουργήσει προβλήματα όμως σε εφαρμογές, μια και δεν μπορούν να ελέγξουν οι ίδιες το ρυθμό αποστολής δεδομένων (π.χ. πολυμέσα, όπου αυτό θα ήταν επιθυμητό).
Το UDP από την άλλη, δεν έχει τέτοιο μηχανισμό.
Τέλος σε επίπεδο εφαρμογής, μπορείς να ξεγελάσεις το TCP (παράλληλες αιτήσεις πάνω από http).
84
Αυτορρύθμιση και δίκαια διανομή πόρων ανάμεσα σε συνδέσεις TCP
• Στόχος: Εάν K συνδέσεις TCP μοιράζονται την ίδια γραμμή επικοινωνίας μεγίστου Bitrate R, η καθεμιά πρέπει να έχει μέσο ρυθμό ίσο με R/K.
• Παράδειγμα: Δύο ανταγωνιστικές σύνοδοι πάνω από TCP:
– Η προσθετική αύξηση δίνει κλίση 1, όπως η ταχύτητα αυξάνει.
– Η πολλαπλασιαστική μείωση γίνεται ανάλογα με το ρυθμό μετάδοσης.
85
R
R
Ισοδύναμος διαμοιρασμός εύρους
Ταχύτητα Σύνδεσης 1
Αποφυγή συμφόρησης: προσθετική αύξηση απώλεια: μείωση παραθύρου με παράγοντα 2
απώλεια: μείωση παραθύρου με παράγοντα 2 Αποφυγή συμφόρησης: προσθετική αύξηση
Αυτορρύθμιση και δίκαια διανομή πόρων ανάμεσα σε συνδέσεις (γενικότερα)
Χρήση του UDP • Οι εφαρμογές πολυμέσων
συχνά δεν χρησιμοποιούν TCP, επειδή δε θέλουν ο ρυθμός μετάδοσης να εξαρτάται από τον έλεγχο συμφόρησης.
• Αντίθετα χρησιμοποιούν UDP, ώστε να μπορούν να αντλούν πληροφορία audio/video από το δίκτυο με σταθερό ρυθμό, ανεχόμενοι την απώλεια πακέτων.
• Το UDP δεν αυτοπεριορίζεται, και σε μία σύνδεση παράλληλα με TCP, θα τείνει να καταλάβει το διαθέσιμο εύρος.
Παράλληλες συνδέσεις TCP • Τίποτα δεν εμποδίζει μία
εφαρμογή από το να ανοίγει παράλληλες συνδέσεις μεταξύ δύο τερματικών.
• Οι φυλλομετρητές δικτύου το κάνουν αυτό.
• Αυτό μπορεί να οδηγήσει σε ανισόρροπη κατανομή πόρων (υπέρ αυτού που έχει περισσότερες συνδέσεις ανοικτές).
86
Μέση τιμή του TCP throughput
• Μέση τιμή του TCP througput ως συνάρτηση του window size και του RTT, σε βάθος χρόνου
• Αγνοούμε το slow start και υποθέτουμε ότι έχουμε πάντα δεδομένα να στείλουμε
• W: μέγεθος παραθύρου σε bytes, τη στιγμή που έχουμε απώλειες (έχουμε γθάσει στα όρια της δυνατότητας μετάδοσης από άκρο σε άκρο)
– Αφού το cwin κυμαίνεται ανάμεσα σε W/2 W,
– Μέση τιμή του TCP throughput = 3/4W για κάθε RTT RTT
87
W
W/2
avg TCP thrοugput = 3 4
W RTT
bytes/sec
Σύνοψη
• Μελετήσαμε:
– Τον έλεγχο ροής στο TCP.
– Τη λειτουργία του ελέγχου συμφόρησης με τεχνικές όπως:
• Αργή εκκίνηση
• Fast Retransmit
• TCP Tahoe
• TCP Reno
88
Σε αυτή την ενότητα μιλήσαμε για:
89
4.1 Επιδόσεις δικτύου δεδομένων σε επίπεδο μεταφοράς.
4.2 Επίπεδο μεταφοράς δεδομένων (Βασικές αρχές λειτουργίας πρωτοκόλλων μεταφοράς δεδομένων).
4.4 Έλεγχος ροής και συμφόρησης στο TCP (Έλεγχος ροής ανάμεσα στα δύο άκρα, slow start, congestion avoidance, fast retransmit, fast recovery).
4.3 Πρωτόκολλα μεταφοράς διαδικτύου (Transport Control Protocol, User Datagram Protocol)
Δίκτυα Υπολογιστών
Ενότητα 4: Μετάδοση δεδομένων
από το στρώμα μεταφοράς
Δρ. Χαράλαμπος Ζ. Πατρικάκης Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ
Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα