Giáo trình Mạng máy tính - Chương 5: Giao thức TCP/UDP - Nguyễn Hữu Thanh
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Mạng máy tính - Chương 5: Giao thức TCP/UDP - Nguyễn Hữu Thanh", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
giao_trinh_mang_may_tinh_chuong_5_giao_thuc_tcpudp_nguyen_hu.pdf
Nội dung text: Giáo trình Mạng máy tính - Chương 5: Giao thức TCP/UDP - Nguyễn Hữu Thanh
- Chương 5. Giao thức TCP/UDP PGS. TS. Nguyễn Hữu Thanh Bộ môn Kỹ thuật thông tin Viện Điện tử - Viễn thông ĐHBK Hà Nội Email: thanhnh@mail.hut.edu.vn Nội dung Giới thiệu chung UDP TCP Chức năng TCP Điều khiển luồng và chống tắc nghẽn trong TCP 1
- Đặt vấn đề Ứng dụng trên mạng: Đa dạng Yêu cầu khác nhau về mặt chất lượng: ◊ Ứng dụng thời gian thực: trễ nhỏ ◊ Ứng dụng truyền số liệu (truyền file, web, email .v.v.): độ tin cậy cao, xác suất mất gói hoặc lôi gói phải ~ 0% Giới thiệu Nhiều ứng dụng tại 1 máy trạm cùng chia sẻ đường truy nhập Internet Mạng Internet: UDP Chức năng chính: định tuyến (routing) và chuyển tiếp (forwarding) Truyền tin không tin cậy TCP ◊ Không có cơ chế đảm bảo thứ tự gói ◊ Không có cơ chế đảm bảo gói sẽ được truyền đến nơi nhận Chông tắc nghẽn Vấn đề: làm thế nào để truyền nhiều ứng dụng với các yêu cầu khác nhau trên giao thức IP không tin cậy, độc lập với ứng dụng? CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 3 Đặt vấn đề (tiếp ) Cần các chức năng bổ sung giữa “Application” và “Internetwork” Mô hình Internet Ứng dụng truyền thông: Giới thiệu http, SIP, H.323, RTP, FTP, Application truyền file, ứng dụng thời gian thực, web, email, SMTP, POP, SNMP .v.v. VoIP .v.v. UDP Host-to-Host ??? TCP Định tuyến và chuyển tiếp, IP, ICMP, routing protocols Internetwork truyền tin không tin cậy Chông tắc nghẽn Điều khiển truy nhập Network Access kênh, biến đổi dòng IEEE 802.x bit theo kênh vật lý CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 4 2
- Chức năng của lớp Host-to-Host Lớp host-to-host thực hiện các chức năng bổ sung giữa “application” và Giới thiệu “internetwork” UDP Ghép nhiều luồng dữ liệu trên một thiết bị đầu cuối để truyền trên mạng IP TCP Tăng độ tin cậy của luồng thông tin Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 5 Chức năng của lớp Host-to-Host (tiếp ) Máy trạm Router Máy trạm Application Application Giới thiệu Thông tin giữa 2 lớp cùng cấp UDP Host-to-Host Host-to-Host TCP Internetwork Internetwork Internetwork Chông tắc Network Network Network nghẽn Access Access Access CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 6 3
- Chức năng của lớp Host-to-Host (tiếp ) Tại sao các chức năng của host-to-host lại được thực hiện ở thiết bị đầu cuối? Giới thiệu Router chỉ thực hiện các chức năng định tuyến và chuyển tiếp UDP Router không cần lưu giữ trạng thái của một luồng dữ liệu (flow state) TCP nâng cao hiệu năng của router Chông tắc các chức năng khác được đưa ra “rìa” của nghẽn mạng CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 7 Cơ chế ghép kênh Chức năng ghép kênh: Chia nhỏ dữ liệu của người sử dụng thành các segment lớp host-to-host Ghép nhiều luồng dữ liệu lớp ứng dụng vào để truyền trên mạng IP FTP HTTP Chat FTP HTTP Chat Giới thiệu Application application-layer protocols UDP TCP Host2Host multiplexing TCP/UDP demultiplexing Chông tắc Internetwork nghẽn Network Access CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 8 4
- Cơ chế ghép kênh (tiếp ) Phương pháp ghép kênh: Mỗi ứng dụng (hay tiến trình) có một Giới thiệu địa chỉ cổng (port number) khác nhau Địa chỉ cổng: 16 bit UDP Các ứng dụng trao đổi dữ liệu qua TCP “socket”. Mỗi socket được phân biệt qua 2 tham số: Chông tắc nghẽn ◊Địa chỉ port ◊Địa chỉ IP CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 9 Cơ chế ghép kênh (tiếp ) Một số cổng điển hình: 0 – 1023: cổng mặc định định nghĩa bởi IANA ◊ FTP: 20, TCP ◊ SSH: 22, TCP/UDP ◊ Telnet: 23, TCP Giới thiệu ◊ SMTP: 25, TCP App1 App2 App3 ◊ DNS: 53, TCP/UDP ◊ HTTP: 80, TCP/UDP Application UDP Từ 1024: do người sử dụng tự định nghĩa socket 1 socket 2 socket 3 TCP Socket được quản lý bởi Host-to-host hệ điều hành Có thể tạo, trao đổi dữ liệu Chông tắc qua socket thông qua các nghẽn API của HĐH CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 10 5
- Cơ chế tăng độ tin cậy Độ tin cậy: Kiểm tra và chống lỗi: thêm các mã Giới thiệu kiểm tra lỗi phần dữ liệu (CRC .v.v.) ◊ARQ (auto-repeat request) UDP ◊FEC (forwarding error correction) Chống tắc nghẽn TCP Câu hỏi: Chông tắc nghẽn Sự khác nhau giữa ARQ và FEC? Trong giao thức IP có kiểm tra và chống lỗi không? Ở đâu? CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 11 Cơ chế tăng độ tin cậy (tiếp ) ARQ: Trao đổi dữ liệu thông qua cơ chế: gửi – phúc đáp Phân loại: ◊ Stop-and-Wait Giới thiệu ◊ Go-Back-N ◊ Selective Repeat UDP Chức năng: ◊ Phát hiện lỗi gói ◊ Phát hiện mất gói TCP ◊ Sắp xếp thứ tự gói ◊ Điều khiển luồng: điều chỉnh kích thước cửa số trượt Chông tắc Câu hỏi: nghẽn Phân biệt các cơ chế Stop-and-Wait, Go-Back-N, Selective Repeat? Tham khảo tài liệu môn “Cơ sở mạng thông tin” CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 12 6
- Cơ chế tăng độ tin cậy (tiếp ) ARQ - Stop and Wait: p1 p1 p tp 1 mất gói Giới thiệu RTT ts lỗi ACK1 NACK1 p p 1 timeout UDP 0 t p1 ACK ACK1 TCP 0 ACK1 Chông tắc nghẽn a) Không lỗi b) Lỗi gói c) Mất gói CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 13 Cơ chế tăng độ tin cậy (tiếp ) ARQ - Go-Back-N: “Cumulative feedback” W=3 – kích thước cửa sổ mất gói p1 p1 p1 p2 p2 p2 p p p Giới thiệu 3 3 3 l ỗ ACK2 i ACK4 g ó ACK2 UDP i p2 p p 4 p3 2 p5 p p3 TCP 4 p6 p4 Chông tắc nghẽn a) Không lỗi b) Lỗi gói c) Mất gói CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 14 7
- Cơ chế tăng độ tin cậy (tiếp ) ARQ - Selective Repeat mất gói p1 p1 p1 p2 p2 p2 p p p Giới thiệu 3 3 3 l ỗ 1 2 ACK NACK i ACK4 g 4 ó p4 ACK3 UDP NACK i p2 p4 p4 p2 p5 p5 p5 TCP p6 Chông tắc nghẽn a) Không lỗi b) Lỗi gói c) Mất gói CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 15 Cơ chế tăng độ tin cậy (tiếp ) Điều khiển luồng trong ARQ: Để thay đổi tốc độ truyền: Giới thiệu ◊ Thay đổi kích thước cửa sổ trượt W ◊ Thay đổi thời gian ACK để điều chỉnh RTT UDP Nhận xét: ARQ không thích hợp cho các dịch vụ thời gian TCP thực: ◊ RTT lớn Chông tắc nghẽn ◊ Băng thông của luồng dữ liệu bị giới hạn bởi W ARQ được áp dụng trong TCP CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 16 8
- Cơ chế tăng độ tin cậy (tiếp ) Câu hỏi: Tính hiệu suất kênh truyền trong “Stop- Giới thiệu and-Wait”, “Go-Back-N” và “Selective Repeat” khi: UDP ◊Kênh truyền lý tưởng TCP ◊Kênh chịu xác suất mất gói là Pe Tham khảo bài giảng môn “Cơ sở Chông tắc nghẽn mạng thông tin” CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 17 Cơ chế tăng độ tin cậy (tiếp ) FEC: Bên phát không phát lại gói Giới thiệu Bên thu có chức năng: ◊Kiểm tra lỗi UDP ◊Nếu phát hiện gói lỗi: – Bên thu sửa lỗi (xác định vị trí bit lỗi) TCP – Nếu lỗi không sửa được: hủy gói Chông tắc Nhận xét: nghẽn ◊FEC thích hợp cho các dịch vụ thời gian thực CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 18 9
- Giao thức UDP UDP – User Datagram Protocol RFC 768 Gói tin UDP – UDP datagram Đặc điểm: Giới thiệu Sử dụng cơ chế không liên kết (connectionless): không cần thiết lập một phiên truyền giữa nguồn – đích UDP là giao thức không tin cậy UDP ◊ Không có phúc đáp (ACK) ◊ Không cơ chế tự động phát lại ◊ Kiểm tra lỗi (checksum): chỉ kiểm tra phần đầu khung (header), TCP không có kiểm tra lỗi phần dữ liệu ◊ Không có cơ chế phát hiện gói mất, gói đến không đúng thứ tự Chông tắc ◊ Không có cơ chế điều khiển luồng UDP có thể gửi dữ liệu nghẽn nhanh và nhiều nhất có thể Chức năng cơ bản của UDP là gì? CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 19 Giao thức UDP (tiếp ) Chức năng chính của UDP: Ghép/tách kênh A1 A2 B1 B2 App App App App Giới thiệu Port UDP OS UDP TCP Chông tắc nghẽn UDP IP CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 20 10
- Giao thức UDP (tiếp ) Cấu trúc gói UDP SRC port DST port Giới thiệu checksum length Chỉ bảo vệ Kích thước phần header phần data theo byte UDP DATA TCP UDP được dùng cho ứng dụng gì? Chông tắc Các ứng dụng không cần độ tin cậy cao nghẽn Các phiên truyền ngắn, thiết lập kết nối hướng liên kết theo kiểu TCP đem lại hiệu suất thấp Các ứng dụng thời gian thực CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 21 Giao thức TCP TCP – Transmission Control Protocol RFC 793, 1122, 1323, 2018, 2581 Đặc điểm: Hướng liên kết (connection-oriented) ◊ Thiết lập kết nối: “3-way handshake” – thiết lập kết nối 3 bước ◊ Huỷ bỏ kết nối: “2-way handshake” – huỷ bỏ kết nối 2 bước Giới thiệu Client – server: client thiết lập kết nối TCP là giao thức truyền tin cậy: ◊ Cơ chế phúc đáp (ACK) khi nhận được dữ liệu UDP ◊ Mã chống lỗi để bảo vệ dữ liệu ◊ Số thự tự (sequence number) để phát hiện gói mất và gói không đúng thứ tự TCP ◊ Cơ chế timeout (sau một thời gian bên phát không nhật được ACK) để gửi lại dữ liệu ◊ Cơ chế sắp xếp lại thứ tự gói ở đầu thu Chông tắc ◊ Cơ chế điều khiển luồng sử dụng cửa sổ trượt nghẽn ◊ Cơ chế chống tắc nghẽn để chia sẻ băng thông giữa nhiều nguồn dữ liệu CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 22 11
- Hướng liên kết Không liên kết ở lớp Internetwork, hướng liên kết trên lớp Host-to-Host Giới thiệu R2 UDP A B TCP R1 R3 Chông tắc nghẽn R4 CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 23 Hướng liên kết (tiếp ) Thiết lập kết nối: 3-way handshake Bước 1: A gửi SYN cho B ◊ chỉ ra giá trị khởi tạo seq # của A Client A Server B Giới thiệu ◊ không có dữ liệu (chủ động) (thụ động) Bước 2: B nhận SYN, trả lời Syn bằng SYN/ACK UDP ◊ B khởi tạo vùng đệm ◊ chỉ ra giá trị khởi tạo seq. # Syn + Ack của B TCP Bước 3: A nhận SYN/ACK, Ack trả lời ACK, có thể kèm theo Chông tắc dữ liệu nghẽn Ghi chú: phiên truyền TCP là phiên song công (số liệu truyền theo 2 hướng) CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 24 12
- Hướng liên kết (tiếp ) Huỷ bỏ kết nối: 2-way handshake Bước 1: Gửi FIN cho B Bước 2: B nhận được Client A Server B Giới thiệu FIN, trả lời ACK, đồng thời đóng liên kết và gửi Fin FIN. UDP Bước 3: A nhận FIN, trả (Data +) Ack lời ACK, vào trạng thái “chờ”. TCP Fin Bước 4: B nhận ACK. đóng liên kết. Ack Chông tắc nghẽn Ghi chú: cả client hoặc server đều có thể yêu cầu huỷ bỏ kết nối CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 25 TCP data segment Dữ liệu lớp ứng dụng được đóng gói vào các “TCP segment” MSS (Maximum Segment Size): chiều dài tối đa cho phép của 1 TCP segment Byte 0 Byte 1 Byte 2 Byte 3 Gửi Byte 80 Giới thiệu UDP TCP segment TCP TCP segment Chông tắc nghẽn Byte 0 Byte 1 Byte 2 Byte 3 Byte 80 Nhận CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 26 13
- Bản tin TCP 0 15 31 Src port Dst port Sequence Number Giới thiệu ACK Sequence Number Flags HLEN RSVD Receive Window Size UDP 4 6 RST ACK FIN SYN URG PSH Checksum Urg Pointer TCP (TCP Options) Chông tắc nghẽn TCP Data CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 27 Ý nghĩa các trường Source/Destination Port: địa chỉ cổng Checksum: mã chống lỗi – cho cả Giới thiệu TCP header và phần dữ liệu UDP Receive Window Size (RWND): kích thước cửa sổ trượt bên nhận chỉ TCP ra lượng dữ liệu tối đa bên thu có thể Chông tắc nghẽn tiếp nhận điều khiển luồng CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 28 14
- Sequence Number Sequence Number: số thứ tự TCP segment ISN (initial sequence number) Gửi Giới thiệu Sequence UDP TCP number = số TCP Data HDR STT ACK = thứ tự byte byte tiếp theo đầu bên thu đợi TCP nhận TCP Chông tắc TCP Data HDR nghẽn Nhận CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 29 Sequence Number (tiếp ) Sequence number: Số thứ tự byte đầu tiên của 1 segment Giới thiệu sequence number của TCP segment Được tính bằng byte UDP TCP Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 30 15
- Initial Sequence Number ISN – giá trị thứ tự khởi tạo Được thiết lập trong giai đoạn bắt tay 3 bước để khởi tạo kết nối Giới thiệu Client A Server B Syn +ISNA UDP Syn + Ack +ISNB TCP Ack Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 31 Cửa sổ trượt trong TCP Vấn đề: Một kết nối TCP có thể gửi bao nhiêu Giới thiệu gói dữ liệu liên tiếp qua mạng? Khi lỗi xảy ra, TCP truyền lại gói thế UDP nào? Sử dụng cơ chế “selective repeat” TCP hay “Go-Back-N”? Làm cách nào để TCP không làm tràn Chông tắc nghẽn bộ đệm bên thu? CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 32 16
- Cửa sổ trượt trong TCP (tiếp ) Kích thước cửa sổ Dữ liệu Giới thiệu Dữ liệu đã gửi Dữ liệu đã gửi Dữ liệu được Dữ liệu chưa được và nhận được ACK và chưa nhận phép gửi phép gửi UDP được ACK Kích thước cửa sổ phải điều chỉnh cho phù hợp với bộ đệm TCP của bên thu Kích thước cửa sổ tối đa bên thu cho phép sẽ được gửi cho Chông tắc bên phát RWND trong trường Receive Window Size (thông nghẽn thường từ 4kB – 8kB) Cơ chế truyền lại trong TCP: Go-Back-N CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 33 Cửa sổ trượt trong TCP (tiếp ) Round-trip time Round-trip time (RTT) Window Size Window Size ??? Window Size Phát (A) Giới thiệu UDP Thu (B) ACK ACK ACK (1) RTT > Window size (2) RTT = Window size TCP Lựa chọn kích thước cửa sổ: Chông tắc nghẽn RTT > Window Size: hiệu suất kênh truyền thấp RTT= Window Size: hiệu suất kênh 100% CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 34 17
- Cơ chế truyền lại Round-trip time (RTT) Retransmission TimeOut (RTO) Guard Band Phát (A) Estimated RTT Data1 Data2 Giới thiệu ACK ACK Thu (B) UDP TCP sử dụng đồng hồ timeout để truyền lại Sau khoảng thời gian RTO>RTT, nếu không nhận được gói truyền lại TCP RTO là giá trị thay đổi, thích ứng với trạng thái kênh. Nguyên nhân: Chông tắc Tắc nghẽn, đường đi thay đổi RTT thay đổi RTO cũng thay đổi nghẽn theo Câu hỏi: Giá trị RTO được tính thế nào? Nếu RTO quá lớn/quá bé thì sao? CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 35 Cơ chế truyền lại (tiếp ) Ước lượng giá trị RTO: Vấn đề: ◊ Nếu giá trị RTO quá lớn: trễ truyền lại lớn ◊ Nếu giá trị RTO quá nhỏ: phát trùng gói không cần thiết Thuật toán ước lượng RTO – sử dụng phương pháp Giới thiệu “trung bình cửa sổ trượt theo trọng số mũ” (Exponential Weighted Moving Average - EWMA) ◊ Gọi: UDP – – trọng số thuật toán EWMA (0 ≤ ≤ 1, thông thường =0,125) – k – số bước lặp TCP – EstimatedRTT: giá trị RTT ước lượng theo EWMA – SampleRTT: giá trị RTT đo được tại bước k ◊ Thuật toán: Chông tắc nghẽn 1. EstimatedRTTk= EstimatedRTTk-1 + (1 - ) SampleRTT 2. RTO = 2 * EstimatedRTT CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 36 18
- Cơ chế truyền lại (tiếp ) RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 350 300 Giới thiệu 250 UDP RTT (milliseconds) RTT 200 TCP 150 Chông tắc nghẽn 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) SampleRTT Estimated RTT CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 37 Cơ chế truyền lại (tiếp ) Trong thuật toán trên nh ì Giả thiết: Phương sai b của giá trị RTT là hằng Phương sai số trung ế tăng nhanh Trong thực tế: Tr khi tải Giới thiệu tăng ◊ Chiều dài hàng đợi của router tăng dần khi tải tăng UDP Tải tới hàng đợi router ◊ Phương sai của RTT t tăng nhanh khi tải ấ su tăng c á TCP ◊ Phân bố xác suất của X RTT không xác định Chông tắc Yêu cầu: nghẽn Phương Ước lượng RTT chính sai xác để tránh ước lượng sai RTO kỳ vọng RTT CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 38 19
- Cơ chế truyền lại (tiếp ) Thuật toán ước lượng RTO mới: Cho phép đánh giá cả phương sai của RTT Giới thiệu 1. EstimatedRTTk = EstimatedRTTk-1 + (1 - ) SampleRTT 2. Differencek = (1 - )*Differencek-1 + *|SampleRTT - EstimatedRTTk| 3. RTO = * EstimatedRTT + *Difference UDP k k 0,125; 1; 4; 0,25 TCP Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 39 Cơ chế truyền lại (tiếp ) Host A Host B Host A Host B Truyền lại Truyền lại Giới thiệu RTT sai RTT sai UDP TCP Thuật toán Karn: Vấn đề: Khi truyền lại thì RTT được ước lượng thế nào Chông tắc cho chính xác? nghẽn Giải pháp: ◊ Không cập nhật giá trị EstimatedRTT ◊ RTOk=2 * RTOk-1 CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 40 20
- Tắc nghẽn trong Internet Tắc nghẽn trong mạng thường xuyên xảy ra và không thể tránh được Giới thiệu Tắc nghẽn xảy ra ở nhiều cấp độ khác nhau (mức gói, mức luồng .v.v.) UDP Bên phát TCP phải có khả năng phát hiện TCP tắc nghẽn và giảm tắc nghẽn (giảm kích thước cửa sổ trượt) Chông tắc nghẽn Router cũng có thể giảm tốc độ luồng TCP bằng cách tăng trễ hàng đợi (khi tải tăng) CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 41 Tắc nghẽn trong Internet (tiếp ) Tắc nghẽn xảy ra khi tải tới nút mạng tăng ( 100%) A (t) H1 1 10Mb/s D(t) Giới thiệu R1 H 1.5Mb/s 3 H2 A2(t) UDP 100Mb/s A1(t) Atotal(t) D(t) A2(t) TCP X(t) A2(t) A1(t) Chông tắc X(t) nghẽn D(t) Cumulative bytes t CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 42 21
- Tắc nghẽn trong Internet (tiếp ) Các cấp độ của tắc nghẽn Mức người sử Giới thiệu dụng: quá nhiều người truy nhập trong giờ cao điểm 7:00 8:00 9:00 UDP Mức luồng: các luồng dữ liệu chiếm TCP trọn dung lượng kênh đầu ra 1s 2s 3s Chông tắc nghẽn Mức gói: 2 gói xung đột tại router 100µs 200µs 300µs CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 43 Tắc nghẽn trong Internet (tiếp ) Tắc nghẽn và trễ: RTT bao gồm: Giới thiệu ◊ Trễ lan truyền (propagation delay) ◊ Trễ hàng đợi (queue delay) UDP Thông thường trễ hàng đợi đóng vai trò quyết định đến RTT TCP Trễ hàng đợi phụ thuộc vào chiều dài hàng đợi tải tăng thì trễ tăng. Khi tắc nghẽn xảy ra Chông tắc nghẽn trễ hàng đợi lớn RTT là đại lượng được sử dụng để ước lượng tắc nghẽn trong mạng (TD: ping) CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 44 22
- Tránh tắc nghẽn trong Internet TD: 2 luồng dữ liệu đến router A1(t) R1 ? A2(t) Giới thiệu Chính sách Từ chối một luồng UDP Đệm một luồng trong bộ đệm cho TCP đến khi luồng kia được phục vụ xong Chuyển thời gian phục vụ một luồng Chông tắc tới thời điểm muộn hơn nghẽn Yêu cầu các luồng giảm tốc độ CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 45 Tránh tắc nghẽn trong Internet (tiếp ) Nhận xét: tắc nghẽn không thể tránh khỏi Cơ chế hợp kênh thống kê trong chuyển mạch Giới thiệu gói cho phép sử dụng kênh truyền hiệu quả bộ đệm thường xuyên bị đầy UDP Nếu bộ đệm rỗng trễ nhỏ, mạng không bị tắc nghẽn. Nhưng: hiệu suất sử dụng kênh TCP thấp Nếu bộ đệm luôn đầy trễ lớn, tắc nghẽn. Chông tắc nghẽn Nhưng: hiệu suất sử dụng kênh cao Tắc nghẽn thế nào là vừa phải? CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 46 23
- Tải, trễ và hiệu năng Quan hệ giữa tải và Gọi P là một tham số trễ: đơn giản để đánh giá Tải: L (bit/s) hiệu năng mạng, với: Giới thiệu Trễ: D (s) P=L/D P càng lớn càng tốt UDP Hiệu năng nh ì TCP b Chông tắc trung ễ nghẽn Tr Tải “Tải tối ưu” Tải CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 47 Chống tắc nghẽn trong TCP Yêu cầu: TCP phải ước lượng Giới thiệu chính xác băng Băng thông thông còn thừa Băng thông UDP Thay đổi tốc độ còn thừa C phát theo tình TCP trạng kênh: ◊ Tăng tốc độ phát Chông tắc khi còn băng thông nghẽn ◊ Khi tắc nghẽn xảy t ra giảm tốc độ phát CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 48 24
- Chống tắc nghẽn trong TCP (tiếp ) Bên phát TCP thay đổi tốc độ bằng việc thay đổi kích thước cửa sổ Giới thiệu Window=min{ReceiveWindow, CongestionWindow} UDP RWND bên thu CWND bên phát TCP “cwnd” hoạt động theo cơ chế: Chông tắc Tăng kích thước cửa sổ theo cấp số cộng nghẽn Giảm kích thước cửa sổ theo cấp số nhân CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 49 Chống tắc nghẽn trong TCP (tiếp ) Các trạng thái của 1 luồng TCP: “slow start”: ◊ Khi mới khởi tạo luồng Giới thiệu ◊ Kích thước cwnd tăng theo hàm mũ cho đến mức ngưỡng ssthresh UDP Tránh tắc nghẽn: ◊ Từ mức ssthresh, kích thước cửa sổ tăng thêm một TCP MSS (maximum segment size) sau mỗi chu kỳ RTT kích thước cửa sổ tăng tuyến tính đến khi phát hiện tắc nghẽn Chông tắc nghẽn Phát hiện tắc nghẽn: ◊ Tắc nghẽn xảy ra khi gói tin bị mất TCP giảm kích thước cửa sổ xuông một nửa. CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 50 25
- “Slow Start” Mục đích: cho phép phiên TCP tăng tốc độ nhanh chóng sau khi thiết lập kết nối Nguyên tắc: Giới thiệu cwnd = 1 (MSS) Tăng cwnd 1 đơn vị mỗi khi nhận được ACK kích thước cwnd tăng theo cấp số nhân UDP 1 2 4 8 Src TCP D Chông tắc D A D D A A D D D nghẽn A A A A Dest CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 51 Tránh tắc nghẽn Tránh tắc nghẽn – congestion avoidance Nguyên tắc: Sau khi kích thước cwnd đạt đến giá trị ssthresh, kết nối TCP chuyển sang chế độ tránh tắc nghẽn Giới thiệu cwnd tăng một đơn vị (01 MSS) sau một RTT không có gói lỗi cwnd tăng tuyến tính UDP 1 2 3 4 Src TCP D D A A D D D A A A Chông tắc D A nghẽn Dest CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 52 26
- Phát hiện tắc nghẽn Vấn đề: Làm sao để phát hiện tắc nghẽn? Giới thiệu Khi xảy ra mất gói hàng đợi tại các nút trung gian bị tràn tắc nghẽn UDP xảy ra TCP TCP chuyển sang trạng thái phát hiện tắc nghẽn khi mất gói xảy ra: Chông tắc nghẽn Không nhận được ACK (timeout) Nhận được 3 ACK trùng yêu cầu phát lại CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 53 Phát hiện tắc nghẽn (tiếp ) Khi timeout (không nhận được ACK) TCP đặt ngưỡng ssthresh xuống còn một nửa Giới thiệu giá trị hiện tại của cwnd TCP đặt cwnd về 1 MSS UDP TCP chuyển về trạng thái slow start Nếu nhận được 3 ACK trùng TCP TCP đặt ngưỡng ssthresh xuống còn một nửa Chông tắc giá trị hiện tại của cwnd nghẽn TCP đặt cwnd bằng ½ giá trị hiện tại TCP chuyển về trạng thái tránh tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 54 27
- Phát hiện tắc nghẽn (tiếp ) Nhận xét: cửa sổ cwnd có dạng răng cưa cwnd 22 Giới thiệu 20 Timeout 18 16 Threshold=16 Threshold is set to half of cwnd (20) UDP And slow start starts 14 12 3 ACKs TCP 10 SS Threshold=10 Threshold is set to half of cwnd (12) 8 AI And additive increase starts 6 SS Chông tắc AI Threshold=6 nghẽn 4 2 AI Time CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 55 Thông lượng của phiên TCP Trong một chu kỳ RTT: số byte phiên TCP gửi là cwnd Giới thiệu Gọi R – thông lượng phiên TCP UDP R=cwnd/RTT Câu hỏi: TCP Dạng lưu lượng một phiên TCP có tuân Chông tắc nghẽn theo dạng răng cưa không? CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 56 28
- Thông lượng của phiên TCP (tiếp ) Giới thiệu UDP TCP Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 57 Thông lượng của phiên TCP (tiếp ) Nhận xét: Dạng lưu lượng TCP không nhất thiết có dạng răng cưa. Như trong hình trước, lưu lượng là Giới thiệu hằng số. Nguyên nhân: UDP Nếu độ lớn của bộ đệm tại router đủ lớn: ◊ Số gói đến router tăng kích thước bộ đệm tăng RTT tăng tỷ lệ với cwnd TCP lưu lượng TCP là hằng số Chông tắc Có 2 cách tránh tắc nghẽn: nghẽn 1. Đệm gói đến để tăng RTT 2. Huỷ gói để giảm kích thước cửa sổ cwnd CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 58 29
- Tính công bằng của TCP Mục tiêu: Nếu có n luồng TCP chia sẻ kênh truyền có Giới thiệu dung lượng C mỗi luồng được chia sẻ băng thông C/n UDP TCP 1 TCP Chông tắc C nghẽn R TCP 2 CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 59 Tính công bằng của TCP (tiếp ) TCP cho phép chia sẻ băng thông công bằng Xét 2 luồng TCP chia sẻ băng thông C. C Điểm chia sẻ công bằng Giới thiệu 2 UDP ng ồ loss: decrease window by factor of 2 lu congestion avoidance: additive increase ng TCP ợ loss: decrease window by factor of 2 lư congestion avoidance: additive increase Chông tắc nghẽn Thông Thông lượng luồng 1 C CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 60 30
- Tính công bằng của TCP (tiếp ) TCP công bằng đến đâu? Các ứng dụng có thể mở song song Giới thiệu nhiều luồng TCP ◊Web browser UDP ◊Flashget TD: TCP ◊một liên kết dung lượng C phục vụ 10 luồng TCP mỗi luồng nhận băng thông trung Chông tắc nghẽn bình là C/10 ◊ứng dụng mới mở thêm 10 luồng TCP ứng dụng đó nhận được băng thông C/2 CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 61 Đồng bộ giữa nhiều luồng TCP Vấn đề: Khi truyền nhiều luồng TCP với cùng thời gian bắt đầu và RTT RTT A Giới thiệu B C D UDP Luồng A N RTT TCP Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 62 31
- Đồng bộ giữa nhiều luồng TCP (tiếp ) Băng thông tổng cộng Giới thiệu f(RTT) UDP trung bình TCP Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 63 Đồng bộ giữa nhiều luồng TCP (tiếp ) Nếu thay đổi thời gian bắt đầu giữa các luồng (không đồng bộ) băng thông tổng hợp ít dao động hơn Giới thiệu Nguồn A N RTT UDP TCP Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 64 32
- Đồng bộ giữa nhiều luồng TCP (tiếp ) Băng thông tổng hợp Giới thiệu N RTT Trung bình UDP TCP Chông tắc nghẽn CHƯƠNG 5 – UDP/TCP PGS. TS. Nguyễn Hữu Thanh 65 Tài liệu tham khảo Internetworking with TCP/IP, Vol 1, Douglas Comer, Prentice Hall Computer Karn, Phil; Craig Partridge, "Improving Round- Trip Time Estimates in Reliable Transport Protocols“, ACM SIGCOMM '87. pp. 2–7 Computer Networks, Nick McKeown, Stanford University Networking: a top-down approach featuring the Internet, James F. Kurose, Keith W. Ross, Addison Wesley, 4thed, 2006 Một số tài liệu và bài giảng khác trên Internet 33



