Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn
Transport services and protocols
cung cấp truyền thông logic [logical
communication ] giữa các tiến trình
ứng dụng đang chạy trên các host
khác nhau.
Các giao thức vận chuyển chạy trên
các host
Phía gửi: chia message ở tầng
Transport thành các segments,
sau đó gửi các segment này
xuống tầng Network
Phía nhận: ráp các segments
thành các message, sau đó gửi
lên tầng Application
Có nhiều hơn 2 giao thức vận
chuyển để các ứng dụng mạng sd
Internet: TCP và UDP
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn
TCP, bên gửi và bên nhận thiết lập kết nối trước khi trao đổi các segments Khởi tạo các biến của TCP: seq. #s buffers, flow control info (e.g. RcvWindow) client: bên khởi tạo kết nối đến server Socket clientSocket = new Socket("hostname","port number"); server: chờ client liên lạc Socket connectionSocket = welcomeSocket.accept(); Thủ tục “Bắt-tay-3-bước” (three-way handshake) Bước 1: client gửi TCP segment SYN đến server Chỉ định số thứ tự (seq.#) cho SYN segment Không có dữ liệu Bước 2: server nhận segment SYN, và trả lời bằng segment SYNACK server cấp phát vùng buffer Chỉ định số thứ tự (seq.#) cho SYNACK segment Bước 3: client nhận SYNACK, trả lời bằng segment ACK, trong segment này có thể chứa dữ liệu Transport Layer 3-78 TCP Connection Management (cont.) Thủ tục “đóng kết nối” client đóng socket: clientSocket.close(); Bước 1: client gửi segment FIN đến server Bước 2: server nhận FIN, trả lời bằng ACK. Sau đó server báo hiệu đóng kết nối từ phía mình bằng cách gửi FIN. client server close close closed t i m e d w a i t Transport Layer 3-79 TCP Connection Management (cont.) Bước 3: client nhận FIN, trả lời bằng ACK. Vào trạng thái “timed wait”: chờ thêm 1 thời gian (VD 30s) trước khi “đóng” . Trong thời gian này có thể gửi lại ACK nếu ACK đã gửi bị mất. Bước 4: server nhận ACK. Kết nối được đóng. Lưu ý: với một thay đổi nhỏ, server sẽ xử lý được tình huống có nhiều FIN đến đồng thời client server closing closing closed t i m e d w a i t closed Transport Layer 3-80 TCP Connection Management (cont) TCP client lifecycle TCP server lifecycle Transport Layer 3-81 Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP segment structure reliable data transfer flow control connection management 3.6 Principles of congestion control 3.7 TCP congestion control Transport Layer 3-82 Principles of Congestion Control Congestion: Nôm na: “Có quá nhiều máy, gửi quá nhiều dữ liệu, gửi nhanh quá khả năng xử lý của mạng. Khác với flow control! Biểu hiện: Mất gói tin (tràn vùng đệm của router) Kéo dài thời gian (do xếp hàng chờ tại vùng đệm router) Là 1 trong 10 vấn đề được quan tâm nhất! Transport Layer 3-83 Causes/costs of congestion: scenario 1 02 máy gửi, 02 máy nhận Một router với bộ đệm không giới hạn Ko truyền lại gói tin bị hỏng Khi truyền “hết ga”, băng thông có thể được khai thác tối đa nhưng độ trễ rất lớn. Đây là cái giá của sự ùn tắt. unlimited shared output link buffers Host A λin : original data Host B λout Transport Layer 3-84 Causes/costs of congestion: scenario 2 Một router, bộ đệm có kích thước giới hạn Bên gửi truyền lại gói tin bị mất finite shared output link buffers Host A λin : original data Host B λout λ'in : original data, plus retransmitted data Transport Layer 3-85 Causes/costs of congestion: scenario 2 λout=λ’in: tình huống lý tưởng λout< λ’in: truyền lại hiệu quả Việc truyền lại các gói tin bị trễ (nhưng ko phải mất) làm cho λ’in trở nên lớn hơn so với trường hợp truyền lại hiệu quả, với cùng λout “cái giá” của sự ùn tắt: Truyền lại dữ liệu bị mất do tràn bộ đệm Truyền lại ko cần thiết các gói tin mà bên gửi “tưởng bị mất” R/2 R/2 λin λ o u t b. R/2 R/2 λin λ o u t a. R/2 R/2 λin λ o u t c. R/4 R/3 Transport Layer 3-86 Causes/costs of congestion: scenario 3 04 host gửi dữ liệu Tuyến truyền băng qua nhiều router Sử dụng cơ chế timeout/retransmit Q: điều gì sẽ xảy ra khi λin và λ’in gia tăng ? R3 finite shared output link buffers Host A λin : original data Host C λout λ'in : original data, plus retransmitted data Host B Host D R1 R2 R4 Transport Layer 3-87 Causes/costs of congestion: scenario 3 “Cái giá” của sự ùn tắt: Khi 1 gói tin bị mất (do tràn vùng đệm của router), bất kỳ công sức truyền gói tin đó ở các router nằm trước nào cũng là vô ích! H o s t A H o s t B λ o u t Transport Layer 3-88 Approaches towards congestion control end-end congestion control: Tầng mạng ko cung cấp thông tin nào về tình trạng ùn tắt. Các host suy diễn ra sự ùn tắt do quan sát các dấu hiệu mất gói tin và thời gian bị kéo dài. TCP chọn cách tiếp cận này. network-assisted congestion control: Tầng mạng (cụ thể là router) cung cấp thông tin feedback cho các host. Sử dụng 1 bit trong các gói tin để biểu thị trạng thái ùn tắt (VD trong mạng SNA, DECnet, TCP/IP RFC 3168, ATM ABR) Thông tin có thể đến sender bằng 1 trong 2 cách: trực tiếp từ router->sender, gián tiếp router- >reveiver->sender Có 2 cách tiếp cận để kiểm soát ùn tắt: Transport Layer 3-89 Case study: ATM ABR congestion control ABR: available bit rate: “dịch vụ truyền dữ liệu linh hoạt” Nếu đường truyền bên gửi không bị quá tải: Bên gửi nên sử dụng toàn bộ băng thông dự phòng. Ngược lại: Bên gửi điều chỉnh mức độ gửi tối thiểu. RM (resource management) cells: Cell~ Gói tin trong mạng ATM Bên gửi gửi RM cells, đan xen với các data cells. Các switch thiết lập giá trị cho các bit trong gói tin RM (có bàn tay của tầng mạng!) NI bit: no increase in rate (ko ùn tắt) CI bit: congestion indication Bên nhận gửi nguyên RM cells lại cho bên gửi. Bên gửi sẽ biết là có ùn tắt hay không. Transport Layer 3-90 Case study: ATM ABR congestion control two-byte ER (explicit rate) field in RM cell Switch bị ùn tắt, có thể hạ thấp giá trị ER của RM cell khi đi ngang qua switch Theo cách này, ER có thể được đặt thành giá trị nhỏ nhất mà tất cả các switch trên con đường từ nguồn đến đích cho phép. EFCI bit in data cells: set to 1 in congested switch Nếu phần lớn các data cell đi trước RM cell có bit EFCI được bật lên 1, bên nhận sẽ bật CI bit của RM cell đó lên 1 trước khi gửi RM Cell về cho bên gửi, báo hiệu có ùn tắt. Transport Layer 3-91 Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP segment structure reliable data transfer flow control connection management 3.6 Principles of congestion control 3.7 TCP congestion control Transport Layer 3-92 TCP congestion control: Mục tiêu: Trong TCP, bên gửi cần truyền dữ liệu nhanh nhất có thể, nhưng ko được gây ùn tắt mạng Q: làm thế nào để tìm ra mức truyền vừa dưới mức có thể gây ùn tắt. Mỗi bên gửi tự thiết lập tốc độ truyền, dựa trên các dấu hiệu phản hồi: ACK: dấu hiệu này cho biết rằng đã được nhận, chứng tỏ mạng không bị ùn tắt. Do đó bên gửi gia tăng tốc độ truyền. Mất segment: bên gửi giả định rằng nguyên nhân mất là do mạng bị ùn tắt, do đó nó giảm tốc độ truyền. Transport Layer 3-93 TCP congestion control: bandwidth probing Thăm dò băng thông mạng (“probing for bandwidth”): gia tăng tốc độ truyền khi còn nhận được ACK, đến khi có sự kiện mất gói tin xảy ra thì giảm tốc độ truyền. Tiếp tục gia tăng tốc độ truyền khi nhận được ACK và giảm khi thấy mất gói tin (vì bằng thông của mạng có thể thay đổi, phụ thuộc vào các kết nối khác trong mạng) ACKs being received, so increase rate X X X X X loss, so decrease rate s e n d i n g r a t e time Q: how fast to increase/decrease? details to follow TCP’s “sawtooth” behavior Transport Layer 3-94 TCP Congestion Control: details Bên gửi giới hạn tốc độ truyền bằng việc giới hạn lượng dữ liệu chưa- được-xác-nhận: LastByteSent-LastByteAcked ≤ min (cwnd, rwnd) cwnd: congestion window rwnd: receive window Một cách gần đúng: cwnd là thường xuyên thay đổi, phụ thuộc vào mức độ ùn tắt của mạng mà bên gửi “nhận thức” được. Tốc độ truyền = cwnd RTT bytes/sec cwnd bytes RTT ACK(s) TCP Congestion Control: more details Bên gửi giám cwnd khi có sự kiện “mất segment”, xảy ra khi: Đã timeout mà không nhận được phản hồi Giảm cwnd về 1 Nhận được 3 ACK trùng nhau Giảm cwnd một nửa Transport Layer 3-95 Bên gửi tăng cwnd khi nhận được ACK Giai đoạn slow-start Gia tăng theo hàm mũ Giai đoạn tránh tắc nghẽn Gia tăng tuyến tính Transport Layer 3-96 TCP Slow Start Khi kết nối bắt đầu, cwnd = 1 MSS VD: MSS = 500 bytes & RTT = 200 msec =>Tốc độ truyền = 20 kbps Năng lực của đường truyền có thể lớn hơn MSS/RTT rất nhiều lần Có nhu cầu tăng nhanh đến tốc độ truyền phù hợp. Gia tăng tốc độ truyền theo hàm mũ, cho tới khi có sự kiện “mất segment” xảy ra hoặc khi chạm ngưỡng. Gấp đôi cwnd sau mỗi RTT Làm điều này bằng cách tăng cwnd lên 1 sau mỗi lần nhận được ACK. Host A R T T Host B time Transport Layer 3-97 Transitioning into/out of slowstart ssthresh: là biến lưu giá trị ngưỡng của cwnd , do TCP quản lý Khi “mất segment”: đặt ssthresh bằng cwnd/2 ghi nhận lại 1 nửa giá trị cwnd vào thời điểm ùn tắt trước đó Khi cwnd >= ssthresh: chuyển từ slowstart sang giai đoạn tránh ùn tắt. slow start timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0 retransmit missing segment timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0 retransmit missing segment Λ cwnd > ssthresh cwnd = cwnd+MSS dupACKcount = 0 transmit new segment(s),as allowed new ACKdupACKcount++ duplicate ACK Λ cwnd = 1 MSS ssthresh = 64 KB dupACKcount = 0 congestion avoidance Transport Layer 3-98 TCP: congestion avoidance Khi cwnd > ssthresh gia tăng cwnd tuyến tính • Tăng cwnd thêm 1 MSS sau mỗi RTT • Đạt tới điểm ùn tắt khả dĩ chậm hơn slowstart • Cài đặt: với mỗi ACK nhận được cwnd = cwnd + MSS/cwnd ACKs: increase cwnd by 1 MSS per RTT: additive increase loss: cut cwnd in half (non-timeout-detected loss ): multiplicative decrease AIMD AIMD: Additive Increase Multiplicative Decrease Transport Layer 3-99 Summary: congestion control algorithm ssthresh = ? (e,g, 64KB) cwnd = 1 MSS /* slow start or exponential increase */ While (No Packet Loss and cwnd < ssthresh ) { send cwnd TCP segments for each ACK, cwnd = cwnd + 1 MSS } /* congestion avoidance or linear increase */ While (No Packet Loss) { send cwnd TCP segments /* increase cwnd by 1 MSS when cwnd ACKs are received */ for each ACK, cwnd = cwnd + MSS/cwnd } ssthresh = cwnd/2 If (3 Dup ACKs) cwnd = ssthresh; Else If (timeout) cwnd=1 MSS; Transport Layer 3-100 Popular “flavors” of TCP ssthresh ssthresh TCP Tahoe TCP Reno Transmission round c w n d w i n d o w s i z e ( i n s e g m e n t s ) Transport Layer 3-101 TCP congestion control FSM: overview slow start congestion avoidance fast recovery cwnd > ssthresh loss: timeout loss: timeout new ACK loss: 3dupACK loss: 3dupACK loss: timeout Transport Layer 3-102 TCP congestion control FSM: details slow start congestion avoidance fast recovery timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0 retransmit missing segment timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0 retransmit missing segment Λ cwnd > ssthresh cwnd = cwnd+MSS dupACKcount = 0 transmit new segment(s),as allowed new ACK cwnd = cwnd + MSS (MSS/cwnd) dupACKcount = 0 transmit new segment(s),as allowed new ACK. dupACKcount++ duplicate ACK ssthresh= cwnd/2 cwnd = ssthresh + 3 retransmit missing segment dupACKcount == 3 dupACKcount++ duplicate ACK ssthresh= cwnd/2 cwnd = ssthresh + 3 retransmit missing segment dupACKcount == 3 timeout ssthresh = cwnd/2 cwnd = 1 dupACKcount = 0 retransmit missing segment cwnd = cwnd + MSS transmit new segment(s), as allowed duplicate ACK cwnd = ssthresh dupACKcount = 0 New ACK Λ cwnd = 1 MSS ssthresh = 64 KB dupACKcount = 0 Transport Layer 3-103 Summary: TCP Congestion Control Khi cwnd < ssthresh, bên gửi làm việc theo slow- start, cửa sổ cwnd tăng nhanh theo hàm mũ. Khi cwnd >= ssthresh, bên gửi làm việc theo congestion-avoidance, cửa sổ cwnd tăng tuyến tính. Khi nhận được 3 ACK trùng nhau, ssthresh := cwnd/2, cwnd := ssthresh Khi timeout xảy ra, ssthresh := cwnd/2, cwnd := 1 MSS. Transport Layer 3-104 TCP throughput Q: Thông lượng trung bình của TCP là bao nhiêu, tính theo kích thước cửa sổ và RTT? • Bỏ qua giai đoạn slow start Gọi W là kích thước của sổ khi có sự kiện “mất segment”. • Khi kích thước cửa sổ là W, thông lượng là W/RTT • Ngay sau khi mất segment, cửa sổ giảm xuống W/2, thông lượng giảm thành W/2RTT. • Thông lượng trung bình: 0.75 W/RTT Transport Layer 3-105 TCP Futures: TCP over “long, fat pipes” VD: Xét kết nối TCP với segment kích thước 1500 byte, RTT= 100ms, chúng ta muốn thông lượng 10 Gbps trên kết nối TCP này. Cần phải có cửa sổ với kích thước W = 83,333 in- flight segments Thông lượng tính theo tỷ lệ mất gói tin (loss rate L): ➜ L = 2·10-10 Wow Phiên bản mới của TCP dành cho mạng tốc độ cao. LRTT MSS⋅22.1 Transport Layer 3-106 fairness goal: nếu có K phiên truyền TCP chia sẻ cùng một kết nối TCP, mỗi phiên truyền có tốc độ truyền trung bình R/K TCP connection 1 bottleneck router capacity R TCP connection 2 TCP Fairness Transport Layer 3-107 Why is TCP fair? Two competing sessions: Additive increase gives slope of 1, as throughout increases multiplicative decrease decreases throughput proportionally R R equal bandwidth share Connection 1 throughput congestion avoidance: additive increase loss: decrease window by factor of 2 congestion avoidance: additive increase loss: decrease window by factor of 2 Transport Layer 3-108 Fairness (more) Fairness and UDP Các ứng dụng multimedia thường ko sử dụng TCP Ko muốn tốc độ truyền bị hạn chế do cơ chế congestion control Thay bằng UDP: Truyền audio/video ở một tốc độ truyền không đổi, chấp nhận mất gói tin chút đỉnh. Fairness and parallel TCP connections Ko có gì ngăn cản các ứng dụng mở nhiều kết nối song song giữa 2 host. web browsers làm điều này VD: một đường truyền băng thông R đang phục vụ 9 kết nối; Nếu 1 ứd dùng 1 kết nối TCP, nhận được bằng thông R/10 Còn nếu ứd mở cùng lúc 11 kết nối TCPs, nhận được R/2 ! Transport Layer 3-109 Chapter 3: Summary principles behind transport layer services: multiplexing, demultiplexing reliable data transfer flow control congestion control instantiation and implementation in the Internet UDP TCP Next: leaving the network “edge” (application, transport layers) into the network “core”
File đính kèm:
- bai_giang_mang_may_tinh_nang_cao_chapter_3_transport_layer_l.pdf