Giáo trình Mạng máy tính - Chương 4: Giao thức TCP - Nguyễn Hồng Sơn
Tóm tắt giải thuật kiểm soát nghẽn của
TCP
Khi CongWin < Threshold, máy phát chạy slowstart , cửa sổ tăng nhanh theo hàm mũ.
Khi CongWin > Threshold, máy phát chạy theo
congestion-avoidance, cửa sổ tăng tuyến tính.
Khi có 3 ACK trùng nhau, gán ngưỡng bằng 1/2 cửa
sổ hiện hành và gán lại cửa sổ bằng ngưỡng (=1/2 cửa
sổ hiện hành.
Khi có timeout gán ngưỡng bằng CongWin/2 và gán
lại CongWin = 1 MSS.
46 trang |
Chia sẻ: thucuc2301 | Lượt xem: 1403 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Mạng máy tính - Chương 4: Giao thức TCP - Nguyễn Hồng Sơn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Chương 4
Giao thức TCP
Chương 4-Giao thức TCP 3-2
NỘI DUNG
r Tổng quan Giao thức truyền tải hướng kết nối, TCP
m Cấu trúc segment
r Truyền tải số liệu tin cậy
r Điều khiển luồng (flow control)
r Quản lý liên kết
r Kiểm soát nghẽn
r Kiểm soát nghẽn TCP
Chương 4-Giao thức TCP 3-3
Tổng quan TCP
r Song công hoàn toàn:
m Luồng số liệu chạy trên cả
hai chiều của cùng kết nối
r Kết nối có hướng
(connection-oriented):
m Bắt tay thông qua tra đổi
thông điệp điều khiển
r Điều khiển luồng:
m Máy phát không làm tràn
bộ đệm máy thu
r RFCs: 793, 1122, 1323, 2018,
2581
r point-to-point:
m Một truyền và một thu
r Tin cậy, giữ đúng thứ tự
r Cơ chế ống dẫn (pipeline):
m Kiểm soát nghẽn và điều
khiển luồng, cài đặt cửa sổ
r Sử dụng bộ đệm truyền và
nhận
socket
door
TCP
bộ đệm truyền
TCP
bộ đệm thu
socket
door
segment
Ứng dụng
ghi data
Ưng dụng
đọc data
Chương 4-Giao thức TCP 3-4
Cấu trúc TCP segment
source port # dest port #
32 bits
Số liệu của ứng dụng
(chiều dài thay đổi)
sequence number
acknowledgement number
Receive window
Urg data pointerchecksum
FSRPAU
head
len
not
used
Options (chiều dài thay đổi)
URG: urgent data,
báo có data khẩn
trong segment được chỉ
ra bởi data pointer
ACK: ACK #
là hợp lệ
PSH: chuyển data
lên trên ngay
RST, SYN, FIN:
Thiết lập kết nối
Số byte (# bytes)
Máy thu sẵn sàng nhận
Đếm theo byte
số liệu
Internet
checksum
(như UDP)
Chương 4-Giao thức TCP 3-5
Chỉ số tuần tự và báo nhận ACK
TCP xem toàn bộ khối số liệu là một dòng các byte liên tục
Chỉ số tuần tự trong mỗi segment là thứ tự trong dòng byte của
byte đầu tiên trong phần data của segment
Chỉ số báo nhận ACK trong segment là chỉ số tuần tự của byte kế
tiếp trong dòng byte mà máy gửi segment này đang chờ.
Chương 4-Giao thức TCP 3-6
Ví dụ ứng dụng Telnet
Khái niệm:
r Piggyback
r Cumulative ACK
Client Server
Seq=42,
ACK=79,
data
=
‘C’
S e q = 7 9
, A C K =
4 3 , d a t
a = ‘ C ’
Seq=43,
ACK=80
User
Gõ ký tự
‘C’
Nhận 'C' và
phản hồi
với data
trống
Nhận 'C' và
truyền lại ‘C’
timeGiả sử client bắt đầu với tuần tự 42
Server bắt đầu với tuần tự 79
Chương 4-Giao thức TCP 3-7
Tham số RTT và Timeout (1)
Giá trị timeout?
r Phải lớn hơn thời gian
hành trình RTT (round
trip time)
m RTT thay đổi
r Quá ngắn?
r Quá dài?
Tính RTT?
r Đo lường thời gian từ khi truyền
segment đến khi nhận ACK
r Thời gian này thay đổi--> trung
bình
Chương 4-Giao thức TCP 3-8
Tham số RTT và Timeout (2)
EstimatedRTT = (1- α)*EstimatedRTT + α*SampleRTT
r Exponential weighted moving average
r Ảnh hưởng của mẫu quá khứ giảm nhanh theo hàm mũ
r Giá trị tiêu biểu là: α = 0.125
Chương 4-Giao thức TCP 3-9
Ví dụ
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)
R
T
T
(
m
i
l
l
i
s
e
c
o
n
d
s
)
SampleRTT Estimated RTT
Chương 4-Giao thức TCP 3-10
Tham số RTT và Timeout (3)
Cài đặt timeout
r EstimtedRTT cộng với “gia số an toàn”
m EstimatedRTT thay đổi nhiều -> gia số lớn hơn
r Trước hết xác định độ lệch của mẫu so với EstimatedRTT:
TimeoutInterval = EstimatedRTT + 4*DevRTT
DevRTT = (1-β)*DevRTT +
β*|SampleRTT-EstimatedRTT|
(giá trị tiêu biểu β = 0.25)
Sau đó gán giá trị timeout interval:
Chương 4-Giao thức TCP 3-11
NỘI DUNG
r Tổng quan Giao thức truyền tải hướng kết nối, TCP
m Cấu trúc segment
r Truyền tải số liệu tin cậy
r Điều khiển luồng (flow control)
r Quản lý liên kết
r Kiểm soát nghẽn
r Kiểm soát nghẽn TCP
Chương 4-Giao thức TCP 3-12
Truyền số liệu tin cậy
r TCP thực hiện dịch vụ
truyền số liệu tin cậy ngay
trên dịch vụ chuyển
datagram không bảo đảm IP
r Các segment được chuyển
theo cơ chế ống dẫn
(Pipeline)
r Dùng báo nhận kiểu tích lũy
đại diện (cumulative ack)
r TCP dùng một bộ định thời
truyền lại
r Việc truyền lại được
kích hoạt bởi:
m Sự kiện timeout
m Nhận ack trùng
Chương 4-Giao thức TCP 3-13
Các sự kiện phía TCP sender
Nhận data từ ứng dụng:
r Tạo segment với chỉ số
tuần tự kế tiếp (seq #)
r Khởi động timer nếu
chưa chạy (như cho
segment cũ nhất chưa
có báo nhận)
r Khoảng thời gian
timeout được gán:
TimeOutInterval
timeout:
r Truyền lại segment gây
ra timeout
r Khởi động lại timer
Nhận ACK:
r Nếu ack cho các
segment cũ chưa có
báo nhận
m Cập nhật
m Khởi động timer nếu còn
segment đang đợi
Chương 4-Giao thức TCP 3-14
Các kịch bản truyền lại
Host A
Seq=100,
20
bytes
data
A C K
=
1 0 0
time Timeout sớm
Host B
Seq=92,
8
bytes
data
A C K
= 1 2 0
Seq=92,
8
bytes
data
S
e
q
=
9
2
t
i
m
e
o
u
t
A C K
= 1 2 0
Host A
Seq=92,
8
bytes
data
A C K = 1
0 0
loss
t
i
m
e
o
u
t
Mất ACK
Host B
X
Seq=92,
8
bytes
data
A C K = 1
0 0
time
S
e
q
=
9
2
t
i
m
e
o
u
t
SendBase
= 100
SendBase
= 120
SendBase
= 120
Sendbase
= 100
Chương 4-Giao thức TCP 3-15
Kịch bản truyền lại (2)
Host A
Seq=92,
8
bytes
data
A C K = 1
0 0
loss
t
i
m
e
o
u
t
ACK tích lũy đại diện
Host B
X
Seq=100,
20
bytes
data
A C K = 1
2 0
time
SendBase
= 120
Chương 4-Giao thức TCP 3-16
Phát sinh ACK
Sự kiện tại máy thu
Segment đến đúng thứ tự với chỉ
số mong đợi. Tất cả data đến chỉ
số này đều đã được báo nhận
Segment đến đúng thứ tự với chỉ
số mong đợi. Một segment khác
đang được xúc tiến báo nhận
Segment đến không đúng thứ tự
với chỉ số lớn hơn chỉ số mong
đợi. Phát hiện mất segment
Segment đến bổ sung vào một
phần hay toàn bộ số bị mất
Hành vi tại máy thu
Chậm ACK. Đợi segment kế trong
500ms. Nếu không có segment kế,
gửi ACK
Gửi ngay một ACK đại diện báo
nhận cho cả hai một lúc
Gửi ngay ACK trùng chỉ số để chỉ ra
byte đang đợi kế tiếp
Gửi ngay ACK,báo chờ segment với
byte bắt đầu tại chỗ thiếu đầu tiên
Đặc tả theo RFC 1122, RFC 2581
Chương 4-Giao thức TCP 3-17
Truyền lại nhanh (Fast Retransmit)
r Khoảng time out tương
đối dài:
m Chậm truyền lại segment
bị mất
r Phát hiện mất segment
qua ACK trùng.
m Sender gửi nhiều
segment liên tiếp
m Nếu segment bị mất sẽ
có nhiều ACK trùng.
r Nếu máy phát nhận 3
ACK trùng cho cùng
data, xem như segmnet
kế tiếp đã bị mất:
m Truyền lại nhanh : truyền
lại trước khi timer hết
hạn
Chương 4-Giao thức TCP 3-18
Host A
t
i
m
e
o
u
t
Host B
time
X
Truyền
lại
lần
2
Truyền lại sau khi nhận ba ACK trùng
Chương 4-Giao thức TCP 3-19
sự kiện: nhận ACK , với giá trị ACK cho y
if (y > SendBase) {
SendBase = y
if (có các segment vẫn chưa được báo nhận)
start timer
}
else {
tăng số đếm ACK nhận cho y
if (nếu số đếm ACK nhận cho y = 3) {
truyền lại segment với số tuần tự y
}
Giải thuật truyền lại nhanh:
Một ACK trùng cho
segment được báo nhận
Truyền lại nhanh
Chương 4-Giao thức TCP 3-20
NỘI DUNG
r Tổng quan Giao thức truyền tải hướng kết nối, TCP
m Cấu trúc segment
r Truyền tải số liệu tin cậy
r Điều khiển luồng (flow control)
r Quản lý liên kết
r Kiểm soát nghẽn
r Kiểm soát nghẽn TCP
Chương 4-Giao thức TCP 3-21
Điều khiển luồng (Flow Control
r Máy thu có bộ đệm
thu:
r Điều chỉnh tốc độ phù
hợp: tốc độ truyền và
tốc độ lấy data
r Quá trình ứng dụng có
thể chậm lấy data từ bộ
đệm thu để xử lý
làm nhiệm vụ không để cho
máy phát làm tràn bộ đệm
thu vì truyền quá nhiều, quá
nhanh
Điều khiển luồng
Data
từ
IP
Quá trình
ứng dụng
Data trong
bộ đệmVùng trống
Chương 4-Giao thức TCP 3-22
Hoạt động điều khiển luồng
(giả sử máy thu loại bỏ các
segment không đúng thứ
tự)
r Khoảng trống trong bộ đệm
= RcvWindow
= RcvBuffer-[LastByteRcvd -
LastByteRead]
r Máy thu quảng cáo
khoảng trống bằng cách
gắn giá trị RcvWindow
trong segment
r Máy phát giới hạn số
data chưa báo nhận
trong phạm vi
RcvWindow
m Đảm bảo máy thu không
bị tràn
Data
từ
IP
Quá trình
ứng dụng
Data trong
bộ đệmVùng trống
Chương 4-Giao thức TCP 3-23
NỘI DUNG
r Tổng quan Giao thức truyền tải hướng kết nối, TCP
m Cấu trúc segment
r Truyền tải số liệu tin cậy
r Điều khiển luồng (flow control)
r Quản lý liên kết
r Kiểm soát nghẽn
r Kiểm soát nghẽn TCP
Chương 4-Giao thức TCP 3-24
Quản lý liên kết TCP (1/5)
Nhắc lại: máy phát và máy
thu tạo cầu nối trước
khi truyền data
r Khởi tạo các biến:
m seq. #s
m buffers, flow control (ví
dụ RcvWindow)
Bắt tay ba bước:
Bước 1: client gửi TCP SYN
segment đến server
m Chỉ ra seq # ban đầu
m Không có data
Bước 2: server nhận SYN, phản
hồi SYNACK segment
m server cấp phát bộ đệm
m Chỉ ra seq # ban đầu
Bước 3: client nhận SYNACK,
phản hồi ACK segment, có thể
chứa data
Chương 4-Giao thức TCP 3-25
Quản lý liên kêt TCP (2/5): Bắt tay ba
bước
Chương 4-Giao thức TCP 3-26
Quản lý liên kết TCP(3/5)
Thủ tục hủy kết nối:
Step 1: client gửi TCP FIN
đến server
Step 2: server nhận FIN,
phản hồi ACK. Tiến hành
đóng kết nối và gửi FIN.
client
FIN
server
A C K
ACK
F I N
close
close
closed
t
i
m
e
d
w
a
i
t
Chương 4-Giao thức TCP 3-27
Quản lý liên kết (4/5)
Step 3: client nhận FIN,
phản hồi ACK.
m Vào trạng thái “timed
wait” - gửi ACK cho
server (báo nhận FIN)
Step 4: server nhận ACK,
cắt kết nối thực sự.
client
FIN
server
A C K
ACK
F I N
closing
closing
closed
t
i
m
e
d
w
a
i
t
closed
Chương 4-Giao thức TCP 3-28
Quản lý liên kết TCP (5/5)
Chu kỳ của TCP client
Chu kỳ của
TCP server
Chương 4-Giao thức TCP 3-29
NỘI DUNG
r Tổng quan Giao thức truyền tải hướng kết nối, TCP
m Cấu trúc segment
r Truyền tải số liệu tin cậy
r Điều khiển luồng (flow control)
r Quản lý liên kết
r Kiểm soát nghẽn
r Kiểm soát nghẽn TCP
Chương 4-Giao thức TCP 3-30
Kiểm soát nghẽn
Hiện tượng nghẽn:
r Thông thường: “quá nhiều nguồn gửi quá nhiều data
và quá nhanh vào mạng, quá khả năng chịu đựng”
r Một khía cạnh khác biệt với điều khiển luồng, điều
khiển luồng chỉ giải quyết phần ngọn!
r Các biểu hiện của nghẽn:
m Mất gói (bộ đệm tại node bị tràn)
m Quá trễ (xếp hàng dài trong bộ đệm tại node)
r Một trong 10 vấn đề hàng đầu của mạng!
Chương 4-Giao thức TCP 3-31
Nguyên nhân và phí tổn: kịch bản 1
r hai sender, hai
receiver
r Một router, bộ
đệm vô hạn
r Không truyền lại
r Quá trễ khi
nghẽn
r Tối đa thông
lượng
Bộ đệm đầu ra không
giới hạn
Host A
λin : số liệu nguồn
Host B
λout
Chương 4-Giao thức TCP 3-32
Nguyên nhân và phí tổn: kịch bản 2
r Một router, bộ đệm hữu hạn
r sender truyền lại gói bị mất
Bộ đệm hữu hạn
Host A λin : số liệu nguồn
Host B
λout
λ'in : số liệu nguồn+ data truyền lại
Chương 4-Giao thức TCP 3-33
Nguyên nhân và phí tổn: kịch bản 2
r Luôn luôn:
r Chỉ truyền lại khi mất:
r Truyền lại các gói trễ (không mất) làm cho tải đầu vào lớn hơn
so với truyền lại khi mất có cùng
λin λout= λin λout>
λin
λ
out
Phí tổn do nghẽn:
r Truyền lại quá nhiều
r Truyền lại không cần thiết: liên kết mang quá nhiều bản sao của
gói
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
Chương 4-Giao thức TCP 3-34
Nguyên nhân và phí tổn: kịch bản 3 (1/2)
r Bốn sender
r Các đường đi qua nhiều node
r timeout/truyền lại
λinĐiều gì xảy ra khi
và gia tăng?λin
Bộ đệm hữu hạn
Host A λin : data nguồn
Host B
λout
λ'in : data nguồn + data
truyền lại
Chương 4-Giao thức TCP 3-35
Nguyên nhân và phí tổn: kịch bản 3
(2/2)
Phí tổn khác:
r Khi gói bị hủy, bất kỳ dung lượng truyền lên nào cho
gói đều là lãng phí!
H
o
s
t
A
H
o
s
t
B
λ
o
u
t
Chương 4-Giao thức TCP 3-36
Các giải pháp
End-end congestion
control:
r Không có phản hồi tường
minh từ mạng
r Các host xét triệu chứng
mất gói và trễ
r TCP dùng cách này
Network-assisted
congestion control:
r Các router thông báo cho
host
m Bit chỉ định nghẽn
(SNA, DECbit, TCP/IP
ECN, ATM)
m Tốc độ nào sender nên
truyền vào lúc nào
Chương 4-Giao thức TCP 3-37
NỘI DUNG
r Tổng quan Giao thức truyền tải hướng kết nối, TCP
m Cấu trúc segment
r Truyền tải số liệu tin cậy
r Điều khiển luồng (flow control)
r Quản lý liên kết
r Kiểm soát nghẽn
r Kiểm soát nghẽn TCP
Chương 4-Giao thức TCP 3-38
Kiểm soát nghẽn trong TCP
8 Kbytes
16 Kbytes
24 Kbytes
time
congestion
window
r Giải pháp: tăng tốc độ truyền (window size), thăm dò băng thông
hữu dụng cho đến khi xảy ra mất gói
m additive increase: tăng CongWin lên 1 MSS sau mỗi RTT
(nhận được báo nhận) cho đến khi phát hiện mất data
m multiplicative decrease: giảm cửa sổ đi một nửa CongWin khi
thấy mất data
timec
o
n
g
e
s
t
i
o
n
w
i
n
d
o
w
s
i
z
e
Thăm dò băng thông
Chương 4-Giao thức TCP 3-39
Chi tiết kiểm soát nghẽn trong TCP
r Máy phát giới hạn truyền theo:
LastByteSent-LastByteAcked
≤ CongWin
r Sơ bộ,
r CongWin là động,thay đổi theo
tình trạng nghẽn của mạng (hàm
số của nghẽn)
Nhận thức nghẽn:
r Sự kiện mất= timeout
hay 3 ack trùng
r Máy phát giảm tốc
(CongWin) sau một sự
kiện mất
Ba cơ chế:
m AIMD: additive
increase-multiplicative
decrease
m slow start
m Đàm phán sau các sự
kiện timeout
rate =
CongWin
RTT
Bytes/sec
Chương 4-Giao thức TCP 3-40
TCP Slow Start (1/2)
r Khi bắt đầu, CongWin = 1
MSS
m Ví dụ: MSS = 500 bytes
và RTT = 200 msec
m Tốc độ khởi động = 20
kbps
r Băng thông khả dụng có
lẻ lớn hơn nhiều so với
MSS/RTT
m Muốn nhanh chóng đạt tốc
độ cao nhất có thể
Chương 4-Giao thức TCP 3-41
TCP Slow Start (2/2)
r Gia tăng tốc độ nhanh
chóng theo hàm mũ cho
đến khi phát hiện sự
kiện mất data đầu tiên:
m Gấp đôi CongWin sau
mỗi RTT
m Được thực hiện sau mỗi
lần nhận ACK
r Tóm lại: tốc độ ban đầu
chậm nhưng tăng nhanh
theo hàm mũ
Host A
1 segment
R
T
T
Host B
time
2 segments
4 segments
Chương 4-Giao thức TCP 3-42
Hiệu chỉnh (1/2)
r Sau 3 ACK trùng:
m CongWin giảm 1/2
m Sau đó window tăng tuyến
tính
r Sau sự kiện timeout:
m CongWin = 1 MSS;
m window tăng theo hàm mũ
m Đến ngưỡng (Threshold) sẽ
tăng tuyến tính
3 ACK trùng có lẻ mạng còn
có khả năng chuyển phát
segment
timeout tín hiệu của tình
trạng nghẽn
Lý do
Hiệu chỉnh cửa sổ nghẽn và tốc độ tăng kích thước
tùy theo triệu chứng (sự kiện chỉ thị) nghẽn
Chương 4-Giao thức TCP 3-43
Hiệu chỉnh (2/2)
Câu hỏi đặt ra: khi
nào nên chuyển từ
tăng theo hàm mũ
sang tăng theo
tuyến tính?
Khi CongWin đạt 1/2
giá trị của nó trước
khi có timeout xảy
ra
Thực hiện:
r Dùng ngưỡng (Threshold)
r Khi có sự kiện nghẽn, gán
Threshold = CongWin/2
(giá trị cửa sổ nghẽn hiện
hành ngay trước khi có
timeout)
Chương 4-Giao thức TCP 3-44
Tóm tắt giải thuật kiểm soát nghẽn của
TCP
r Khi CongWin < Threshold, máy phát chạy slow-
start , cửa sổ tăng nhanh theo hàm mũ.
r Khi CongWin > Threshold, máy phát chạy theo
congestion-avoidance, cửa sổ tăng tuyến tính.
r Khi có 3 ACK trùng nhau, gán ngưỡng bằng 1/2 cửa
sổ hiện hành và gán lại cửa sổ bằng ngưỡng (=1/2 cửa
sổ hiện hành.
r Khi có timeout gán ngưỡng bằng CongWin/2 và gán
lại CongWin = 1 MSS.
Chương 4-Giao thức TCP 3-45
Chương 4-Giao thức TCP 3-46
HẾT CHƯƠNG 4
Các file đính kèm theo tài liệu này:
- mmt_ch4_5944_2005052.pdf