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

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 1

Trang 1

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 2

Trang 2

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 3

Trang 3

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 4

Trang 4

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 5

Trang 5

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 6

Trang 6

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 7

Trang 7

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 8

Trang 8

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 9

Trang 9

Bài giảng Mạng máy tính nâng cao - Chapter 3: Transport Layer - Lê Ngọc Sơn trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 111 trang xuanhieu 7140
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

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:

  • pdfbai_giang_mang_may_tinh_nang_cao_chapter_3_transport_layer_l.pdf