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

