Bài giảng Mạng máy tính - Chương 3: Tầng Transport - Nguyễn Duy
Các giao thức và dịch vụ
tầng Transport
Quản lý truyền thông logic giữa
các tiến trình ứng dụng đang chạy
trên có host khác nhau
Các giao thức protocols chạy trên
các hệ thống đầu cuối
Phía gửi: chia nhỏ các thông
điệp (message) ứng dụng thành
các segments, sau đó chuyển
các segments này cho tầng
network
Phía nhận: tái kết hợp các
segments thành các thông điệp
(message), các thông điệp này
được chuyển lên tầng
Application
Có nhiều hơn 1 giao thức tầng
transport dành cho các ứng dụng
Internet: TCP và UDP
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chương 3: Tầng Transport - Nguyễn Duy", để 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 - Chương 3: Tầng Transport - Nguyễn Duy
Tầng Transport 3-1
Chương 3
Tầng Transport
Computer
Networking: A Top
Down Approach
6th edition
Jim Kurose, Keith Ross
Addison-Wesley
March 2012
A note on the use of these ppt slides:
We’re making these slides freely available to all (faculty, students, readers).
They’re in PowerPoint form so you see the animations; and can add, modify,
and delete slides (including this one) and slide content to suit your needs.
They obviously represent a lot of work on our part. In return for use, we only
ask the following:
v If you use these slides (e.g., in a class) that you mention their source
(after all, we’d like people to use our book!)
v If you post any slides on a www site, that you note that they are adapted
from (or perhaps identical to) our slides, and note our copyright of this
material.
Thanks and enjoy! JFK/KWR
All material copyright 1996-2012
J.F Kurose and K.W. Ross, All Rights Reserved
Tầng Transport 3-2
Chương 3: Tầng Transport
Mục tiêu:
v Hiểu về các nguyên lý
đằng sau các dịch vụ
tầng transport:
§ multiplexing/
demultiplexing
§ Truyền dữ liệu tin cậy
§ Điều khiển luồng (flow
control)
§ Điều khiển tắt nghẽn
(congestion control)
v Tìm hiểu về các giao
thức tầng transport
trên Internet:
§ UDP: vận chuyển phi
kết nối
§ TCP: vận chuyển tin cậy
hướng kết nối
(connection-oriented
reliable transport)
§ Điều khiển tắt nghẽn
TCP
Tầng Transport 3-3
Chương 3: Nội dung
3.1 các dịch vụ tầng
Transport
3.2 multiplexing và
demultiplexing
3.3 vận chuyển phi
kết nối: UDP
3.4 các nguyên lý
truyền dữ liệu tin
cậy
3.5 vận chuyển hướng
kết nối: TCP
§ Cấu trúc segment
§ Truyền dữ liệu tin cậy
§ Điều khiển luồng (flow
control)
§ Quản lý kết nối
3.6 các nguyên lý về
điều khiển tắc nghẽn
3.7 điều khiển tắc nghẽn
TCP
Tầng Transport 3-4
Các giao thức và dịch vụ
tầng Transport
v Quản lý truyền thông logic giữa
các tiến trình ứng dụng đang chạy
trên có host khác nhau
v Các giao thức protocols chạy trên
các hệ thống đầu cuối
§ Phía gửi: chia nhỏ các thông
điệp (message) ứng dụng thành
các segments, sau đó chuyển
các segments này cho tầng
network
§ Phía nhận: tái kết hợp các
segments thành các thông điệp
(message), các thông điệp này
được chuyển lên tầng
Application
v Có nhiều hơn 1 giao thức tầng
transport dành cho các ứng dụng
§ Internet: TCP và UDP
application
transport
network
data link
physical
application
transport
network
data link
physical
Tầng Transport 3-5
Tầng Transport với tầng network
v Tầng network:
truyền thông
logic giữa các
host
v Tầng transport :
truyền thông
logic giữa các
tiến trình
§ Dựa vào và tăng
cường các dịch
vụ tầng network
12 đứa trẻ ở nhà Ann gửi
những bức thư đến 12
đứa trẻ ở nhà Bill:
v hosts = nhà
v Các tiến trình
(processes) = những
đứa trẻ
v Thông điệp tầng ứng
dụng = các bức thư
trong các phong bì
v Giao thức tầng
transport = Ann and Bill
v Giao thức tầng
network= dịch vụ bưu
điện
Tình huống tương tự:
Tầng Transport 3-6
Các giao thức tầng transport trên
Internet
v Tin cậy, truyền theo
thứ tự (TCP)
§ Điền khiển tắt nghẽn
§ Điều khiển luồng
§ Thiết lập kết nối
v Không tin cậy, truyền
không theo thứ tự:
UDP
§ Không rườm rà, mở rộng
“nổ lực tốt nhất” (best-
effort) của IP
v Không có các dịch vụ:
§ Bảo đảm độ trễ
§ Bảo đảm băng thông
application
transport
network
data link
physical
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
Tầng Transport 3-7
Chương 3 Nội dung
3.1 các dịch vụ tầng
Transport
3.2 multiplexing và
demultiplexing
3.3 vận chuyển phi
kết nối: UDP
3.4 các nguyên lý
truyền dữ liệu tin
cậy
3.5 vận chuyển hướng
kết nối: TCP
§ Cấu trúc segment
§ Truyền dữ liệu tin cậy
§ Điều khiển luồng (flow
control)
§ Quản lý kết nối
3.6 các nguyên lý về
điều khiển tắc nghẽn
3.7 điều khiển tắc nghẽn
TCP
Tầng Transport 3-8
Multiplexing/demultiplexing
tiến trình
socket
sử dụng thông tin trong
header để chuyển segment
vừa nhận vào đúng socket
demultiplexing tại bên nhận: xử lý dữ liệu từ nhiều
socket, thêm thông tin
header về tầng transport
vào segment (được sử
dụng sau cho
demultiplexing)
multiplexingtại bên gửi:
transport
application
physical
link
network
P2 P1
transport
application
physical
link
network
P4
transport
application
physical
link
network
P3
Tầng Transport 3-9
demultiplexing làm việc như thế nào
v host nhận các khung dữ
liệu (datagram) IP
§ Mỗi khung dữ liệu có địa
chỉ IP nguồn và đích
§ Mỗi khung dữ liệu mang
một segment tầng
transport
§ Mỗi segment có số port
nguồn và đích
v host dùng các địa chỉ IP
và số port để gởi
segment đến socket
thích hợp
Số port nguồn Số port đích
32 bits
application
data
(payload)
other header fields
Định dạng segment TCP/UDP
Tầng Transport 3-10
Demultiplexing không kết nối
v Ôn lại: socket đã tạo có số
port của host cục bộ
(host-local port #) :
DatagramSocket mySocket1
= new DatagramSocket(12534);
v Khi host nhận
segment UDP :
§ Kiểm tra số port đích
trong segment
§ Đưa segment UDP đến
socket có số port đó
v Ôn lại: khi tạo khung
dữ liệu (datagram) để
gởi vào đến socket UDP
socket, phải xác định
§ Địa chỉ IP đích
§ Số port đích
Các khung dữ liệu IP
với số cùng số port
đích, nhưng khác địa
chỉ IP nguồn và/hoặc
khác số port nguồn sẽ
được chuyển đến cùng
socket tại máy đích
Tầng Transport 3-11
Demultiplexing không kết nối:
ví dụ
DatagramSocket
serverSocket = new
DatagramSocket
(6428);
transport
application
physical
link
network
P3
transport
application
physical
link
network
P1
transport
application
physical
link
network
P4
DatagramSocket
mySocket1 = new
DatagramSocket
(5775);
DatagramSocket
mySocket2 = new
DatagramSocket
(9157);
Port nguồn: 9157
Port đích: 6428
Port nguồn: 6428
Port đích: 9157
Port nguồn: ?
Port đích: ?
Port nguồn: ?
Port đích: ?
Tầng Transport 3-12
Demux hướng kết nối
v Socket TCP được
xác định bởi 4 yếu
tố:
§ Địa chỉ ip nguồn
§ Số port nguồn
§ Địa chỉ IP đích
§ Số port đích
v demux: nơi nhận
dùng tất cả 4 giá trị
trên để điều hướng
segment đến socket
thích hợp
v host server có thể
hổ trợ nhiều socket
TCP đồng thời:
§ Mỗi socket được xác
định bởi bộ 4 của nó
v Các web server có
các socket khác nhau
cho mỗi kết nối từ
client
§ Kết nối HTTP không
bền vững sẽ có socket
khác nhau cho mỗi yêu
cầu
Tầng Transport 3-13
Demultiplexing hướng kết nối: ví dụ
transport
application
physical
link
network
P3
transport
application
physical
link
P4
transport
application
physical
link
network
P2
IP nguồn,port: A,9157
IP đích, port: B,80
Địa chỉ IP nguồn,port: B,80
Địa chỉ IP đích,port: A,9157 host: địa chỉ IP A
host: địa
chỉ IP C
network
P6 P5
P3
IP nguồn,port: C,5775
IP đích,port: B,80
IP nguồn,port: C,9157
IP đích,port: B,80
Ba segment, tất cả được đưa đến địa chỉ IP: B,
Port đích: 80 được demultiplex đến các socket khác nhau
server:
địa chỉ IP
B
Tầng Transport 3-14
Demultiplexing hướng kết nối: ví dụ
transport
application
physical
link
network
P3
transport
application
physical
link
transport
application
physical
link
network
P2
IP nguồn,port: A,9157
IP đích, port: B,80
IP nguồn,port: B,80
IP đích,port: A,9157
host: địa
chỉ IP A
host: địa
chỉ IP C
server:
địa chỉ IP
B
network
P3
IP nguồn,port: C,5775
IP đích,port: B,80
IP nguồn,port: C,9157
IP đích,port: B,80
P4
threaded server
Tầng Transport 3-15
Chương 3 Nội dung
3.1 các dịch vụ tầng
Transport
3.2 multiplexing và
demultiplexing
3.3 vận chuyển phi
kết nối: UDP
3.4 các nguyên lý
truyền dữ liệu tin
cậy
3.5 vận chuyển hướng
kết nối: TCP
§ Cấu trúc segment
§ Truyền dữ liệu tin cậy
§ Điều khiển luồng (flow
control)
§ Quản lý kết nối
3.6 các nguyên lý về
điều khiển tắc nghẽn
3.7 điều khiển tắc nghẽn
TCP
Tầng Transport 3-16
UDP: User Datagram Protocol [RFC 768]
v Connectionless (phi kết nối):
§ Không bắt tay giữa bên
nhận và bên gửi
§ Mỗi segment UDP được
xử lý độc lập
§ Không có cơ chế khôi phục
các segment bị mất
§ Các segment có thể đến
bên nhận không đúng thứ
tự do các segment không
được đánh số thứ tự
trước khi gởi
§ Không có khả năng điều
khiền luồng dữ liệu gởi
(flow control)
v Ứng dụng UDP:
§ Các ứng dụng đa
phương tiện trực
t u y ế n ( c h ị u m ấ t
mát(loss tolerant),
(cần tốc độ) (rate
sensitive) )
§ DNS
§ SNMP
v Truyền tin cậy trên
UDP:
§ Thêm độ tin cậy tại
tầng application
§ Phục hồi lỗi tại các
ứng dụng cụ thể!
Tầng Transport 3-17
UDP: segment header
Số port nguồn Số port đích
32 bits
Dữ liệu
ứng dụng
(payload)
Định dạng segment UDP
length checksum
Độ dài được tính
bằng byte của
segment UDP, bao
gồm cả header
v Không thiết lập kết nối (cái
mà có thể gây ra độ trễ)
v Đơn giản: không trạng thái
kết nối tại nơi gửi và nhận
v Kích thước header nhỏ
v Không điều khiển tắt nghẽn:
UDP có thể gửi dữ liệu
nhanh như mong muốn
Tại sao có UDP?
Tầng Transport 3-18
UDP checksum
bên gửi:
v Xét nội dung của
segment, bao gồm các
trường của header, là
chuỗi các số nguyên
16-bit
v checksum: bổ sung
(tổng bù 1) của các
nội dung segment
v Bên gửi đặt giá trị
checksum vào trường
checksum UDP
bên nhận:
v Tính toán checksum của
segment đã nhận
v Kiểm tra giá trị trên có bằng
với giá trị trong trường
checksum hay không:
§ NO – có lỗi xãy ra
§ YES – không có lỗi. Nhưng
có thể còn lỗi khác nữa
không? Xem phần sau.
Mục tiêu: dò tìm “các lỗi” (các bit cờ được
bật) trong các segment đã được truyền
Tầng Transport 3-19
Internet checksum: ví dụ
Ví dụ: cộng 2 số nguyên 16 bit
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
bit dư
tổng
checksum
Lưu ý: khi cộng các số, bit nhớ ở phía cao nhất cần
được thêm vào kết quả
Tầng Transport 3-20
Chương 3 Nội dung
3.1 các dịch vụ tầng
Transport
3.2 multiplexing và
demultiplexing
3.3 vận chuyển phi
kết nối: UDP
3.4 các nguyên lý
truyền dữ liệu tin
cậy
3.5 vận chuyển hướng
kết nối: TCP
§ Cấu trúc segment
§ Truyền dữ liệu tin cậy
§ Điều khiển luồng (flow
control)
§ Quản lý kết nối
3.6 các nguyên lý về
điều khiển tắc nghẽn
3.7 điều khiển tắc nghẽn
TCP
Tầng Transport 3-21
Các nguyên lý truyền dữ liệu tin cậy
v Quan trọng trong các tầng application,
transport và link
§ Top 10 danh sách các chủ đề mạng quan trọng
v Các đặc điểm của kênh truyền không tin cậy sẽ xác
định sự phức tạp của giao thức truyền dữ liệu
(data transfer protocol) (rdt)
Tầng Transport 3-22
v Các đặc điểm của kênh truyền không tin cậy sẽ xác
định sự phức tạp của giao thức truyền dữ liệu
(data transfer protocol) (rdt)
Các nguyên lý truyền dữ liệu tin
cậy
v quan trọng trong các tầng application,
transport và link
§ Top 10 danh sách các chủ đề mạng quan trọng
Transport Layer 3-23
v Các đặc điểm của kênh truyền không tin cậy sẽ xác
định sự phức tạp của giao thức truyền dữ liệu data
transfer protocol (rdt)
v quan trọng trong các tầng application,
transport và link
§ Top 10 danh sách các chủ đề mạng quan trọng
Các nguyên lý truyền dữ liệu tin
cậy
Tầng Transport 3-24
Truyền dữ liệu tin cậy: bắt đầu
Bên
gửi
Bên
nhận
rdt_send(): được gọi bởi tầng trên,
(tầng applicaiton). Chuyển dữ liệu
cần truyền đến lớp cao hơn ở bên
nhận
udt_send(): được gọi bởi rdt,
để truyền các gói trên kênh
không tin cậy đến nơi nhận
rdt_rcv(): được gọi khi gói dữ liệu
đến kênh của bên nhận
deliver_data(): được gọi bởi rdt
để chuyển dữ liệu đến tầng cao
hơn
Tầng Transport 3-25
Chúng ta sẽ:
v Từng bước phát triển truyền dữ liệu tin cậy
(rdt) bên phía người gửi và nhận
v Chỉ xem xét chuyển dữ liệu theo 1 hướng
§ Nhưng điều khiển thông tin sẽ theo cả 2 hướng!
v Sử dụng finite state machines (FSM) để xác
định bên gửi và nhận
trạng
thái
1
trạng
thái 2
Sự kiện gây ra trạng thái truyền
Các hành động được thực hiện trên
chuyển trạng thái
Trạng thái: khi ở “trạng
thái” này thì trạng
thái kế tiếp được xác
định duy nhất bởi sự
kiện kế tiếp
Sự kiện
Các hành động
Truyền dữ liệu tin cậy: bắt đầu
Tầng Transport 3-26
rdt1.0: truyền tin cậy trên 1 kênh tin cậy
v Kênh cơ bản tin cậy hoàn toàn (underlying channel
perfectly reliable)
§ không có bit lỗi
§ không mất mát gói
v Các FSMs riêng biệt cho bên gửi và nhận:
§ Bên gửi gửi dữ liệu vào kênh cơ bản (underlying channel)
§ Bên nhận đọc dữ liệu từ kênh cơ bản (underlying
channel)
chờ gọi
từ tầng
trên packet = make_pkt(data)
udt_send(packet)
rdt_send(data)
extract (packet,data)
deliver_data(data)
chờ gọi
từ tầng
dưới
rdt_rcv(packet)
bên gửi bên nhận
Tầng Transport 3-27
v Kênh cơ bản có thể đảo các bit trong packet
§ checksum để kiểm tra các lỗi
v Câu hỏi: làm sao khôi phục các lỗi:
§ acknowledgements (ACKs): receiver explicitly
tells sender that pkt received OK
§ negative acknowledgements (NAKs): receiver
explicitly tells sender that pkt had errors
§ sender retransmits pkt on receipt of NAK
v new mechanisms in rdt2.0 (beyond rdt1.0):
§ error detection
§ receiver feedback: control msgs (ACK,NAK)
rcvr->sender
rdt2.0: kênh với các lỗi
Làm thế nào để con người phục hồi
“lỗi” trong cuộc trò chuyện?
Tầng Transport 3-28
v Kênh cơ bản có thể đảo các bit trong packet
§ checksum để kiểm tra các lỗi
v Câu hỏi: làm sao khôi phục các lỗi:
§ acknowledgements (ACKs): bên nhận thông báo rõ
ràng cho bên gửi rằng packet được nhận thành
công (OK)
§ negative acknowledgements (NAKs): bên nhận
thông báo rõ ràng cho bên gửi rằng packet đã bị
lỗi
• Bên gửi truyền lại gói nào được xác nhận là NAK
v Các cơ chế mới trong rdt2.0 (sau rdt1.0):
§ Phát hiện lỗi
§ Phản hồi: các thông điệp điều khiển (ACK,NAK)
từ bên nhận đến bên gửi
rdt2.0: kênh với các lỗi
Tầng Transport 3-29
rdt2.0: đặc điểm kỹ thuật FSM
Chờ gọi
từ tầng
trên
sndpkt = make_pkt(data, checksum)
udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
udt_sen ... biến thiên
v Các thông điệp được
truyền lại (như
req_conn(x)) vì mất thông
điệp
v Sắp xếp lại thông điệp
v Không thể “thấy” phía bên
kia
Bắt tay 2-way:
Let’s talk
OK
ESTAB
ESTAB
choose x
req_conn(x)
ESTAB
ESTAB
acc_conn(x)
Đồng ý thiết lập kết nối
Tầng Transport 3-79
Đồng ý thiết lặp kết nối
Các tình huống thất bại khi bắt tay 2-way:
retransmit
req_conn(x)
ESTAB
req_conn(x)
Kết nối mở một nữa!
(không có client!)
client
terminates
server
forgets x
connection
x completes
retransmit
req_conn(x)
ESTAB
req_conn(x)
data(x+1)
retransmit
data(x+1)
accept
data(x+1)
choose x
req_conn(x)
ESTAB
ESTAB
acc_conn(x)
client
terminates
ESTAB
choose x
req_conn(x)
ESTAB
acc_conn(x)
data(x+1) accept
data(x+1)
connection
x completes server
forgets x
Tầng Transport 3-80
TCP bắt tay 3-way
SYNbit=1, Seq=x
Chọn số thứ tự ban đầu, x
Gửi TCP SYN msg
ESTAB
SYNbit=1, Seq=y
ACKbit=1; ACKnum=x+1
Chọn số thứ tự ban đầu, y
gửi TCP SYNACK
msg, acking SYN
ACKbit=1, ACKnum=y+1
SYNACK(x) vừa được nhận
cho hay server vẫn còn sống;
send ACK for SYNACK;
this segment may contain
client-to-server data
ACK(y) vừa được nhận
cho hay client vẫn sống
SYNSENT
ESTAB
SYN RCVD
Trạng thái client
LISTEN
Trạng thái server
LISTEN
Tầng Transport 3-81
TCP bắt tay 3-way: FSM
closed
Λ
listen
SYN
rcvd
SYN
sent
ESTAB
Socket clientSocket =
newSocket("hostname","port
number");
SYN(seq=x)
Socket connectionSocket =
welcomeSocket.accept();
SYN(x)
SYNACK(seq=y,ACKnum=x+1)
Tạo socket mới để giao tiếp
ngược lại với client
SYNACK(seq=y,ACKnum=x+1)
ACK(ACKnum=y+1)
ACK(ACKnum=y+1)
Λ
Tầng Transport 3-82
TCP: đóng kết nối
v Mỗi bên client và server sẽ đóng kết nối
bên phía của nó
§ Gởi TCP segment với FIN bit = 1
v Phản hồi bằng ACK cho FIN vừa được nhận
§ Khi nhận FIN, ACK có thể được kết hợp với
FIN của nó
v Các trao đổi FIN đồng thời có thể được
vận dụng
Tầng Transport 3-83
FIN_WAIT_2
CLOSE_WAIT
FINbit=1, seq=y
ACKbit=1; ACKnum=y+1
ACKbit=1; ACKnum=x+1
Chờ server
đóng
Vẫn có thể
gửi dữ liệu
Có thể không còn
gửi dữ liệu
LAST_ACK
CLOSED
TIMED_WAIT
timed wait
for 2*max
segment lifetime
CLOSED
TCP: đóng kết nối
FIN_WAIT_1 FINbit=1, seq=x Có thể không
còn gửi nhưng
vẫn còn nhận
dữ liệu
clientSocket.close()
Trạng thái client
Trạng thái server
ESTAB ESTAB
Tầng Transport 3-84
Chương 3 Nội dung
3.1 các dịch vụ tầng
Transport
3.2 multiplexing và
demultiplexing
3.3 vận chuyển phi
kết nối: UDP
3.4 các nguyên lý
truyền dữ liệu tin
cậy
3.5 vận chuyển hướng
kết nối: TCP
§ Cấu trúc segment
§ Truyền dữ liệu tin cậy
§ Điều khiển luồng (flow
control)
§ Quản lý kết nối
3.6 các nguyên lý về
điều khiển tắc nghẽn
3.7 điều khiển tắc nghẽn
TCP
Tầng Transport 3-85
Tắt nghẽn:
v “nguồn gửi quá nhiều dữ liệu với tốc độ quá
nhanh đến mạng để được xử lý”
v Khác với điều khiển luồng (flow control)!
v Các biểu hiện:
§ Mất gói (tràn bộ đệm tại các router)
§ Độ trễ lớn (xếp hàng trong các bộ đệm
của router)
v 1 trong 10 vấn đề khó khăn!
Các nguyên lý điều khiển tắt
nghẽn (congestion control)
Tầng Transport 3-86
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 1
v 2 gửi, 2 nhận
v 1 router, các bộ đệm
không giới hạn
v Khả năng của đường
link đầu ra: R
v Không truyền lại
v Thông lượng lớn nhất
của mỗi kết nối: R/2
Bộ đệm của đường
link đầu ra được chia
sẽ không giới hạn
Host A
dữ liệu gốc: λin
Host B
thông lượng: λout
R/2
R/2
λ o
ut
λin R/2
de
la
y
λin
v Độ trễ lớn khi tốc độ
đến, λin, vượt tới capacity
Tầng Transport 3-87
v 1 router, các bộ đệm có giới hạn
v bên gửi truyền lại các packet bị time-out
§ application-layer input = application-layer output: λin = λout
§ transport-layer input bao gồm việc truyền lại: λ'in
Bộ đệm đường link
đầu ra được chia sẽ
giới hạn
Host A
λin : data gốc
Host B
λout λ'in: data gốc, cộng với
dữ liệu được truyền lại
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 2
λin
Tầng Transport 3-88
Lý tưởng hóa: kiến thức
hoàn hảo
v Bên gửi chỉ gửi khi bộ
nhớ đệm của router sẵn
sàng
Bộ nhớ đệm đường
link đầu ra được chia
sẽ giới hạn
λin : data gốc λout λ'in: data gốc, cộng với
dữ liệu được truyền lại
copy
free buffer space!
R/2
R/2
λ o
ut
λin
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 2
Host B
A
Tầng Transport 3-89
λin : data gốc λout λ'in: data gốc, cộng với
dữ liệu được truyền lại
copy
Không còn bộ nhớ đệm!
Lý tưởng hóa: các packet bị mất
được biết đến có thể bị mất
hoặc bị loại bỏ tại router bởi vì
bộ nhớ đệm bị đầy
v Bên gửi chỉ gởi lại packet được
biết đến (known packet) đã bị
mất
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 2
A
Host B
Tầng Transport 3-90
λin : data gốc λout λ'in: data gốc, cộng với
dữ liệu được truyền lại
còn bộ nhớ đệm!
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 2
Lý tưởng hóa: các packet bị
mất được biết đến có thể bị
mất hoặc bị loại bỏ tại
router bởi vì bộ nhớ đệm bị
đầy
v Bên gửi chỉ gởi lại packet
được biết đến (known
packet) đã bị mất
R/2
R/2 λin
λ o
ut
Khi gửi tại R/2, một
số packet được
truyền lại, nhưng
tiệm cân goodput vẫn
là R/2 (tại sao?)
A
Host B
Tầng Transport 3-91
A
λin λout λ'in copy
Còn bộ nhớ đệm!
timeout
R/2
R/2 λin
λ o
ut
Khi gửi tại R/2, một
số packet được
truyền lại, bao gồm
packet bị trùng mà
đã được gửi đi!
Host B
Thực tế: trùng lặp
v Các packet có thể bị mất , bị bỏ
tại router bởi vì bộ nhớ đệm
đầy
v Thời gian time out bên gửi hết
sớm, gởi 2 bản giống nhau, cả 2
đều được gửi đi
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 2
Tầng Transport 3-92
R/2
λ o
ut
Khi gửi tại R/2, một
số packet được
truyền lại, bao gồm
packet bị trùng mà
đã được gửi đi!
“chi phí” của tắc nghẽn:
v Cần nhiều băng thông cho việc truyền lại
v Truyền lại không cần thiết: đường link mang nhiều
bản sao của packet
§ Giảm goodput
R/2 λin
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 2
Thực tế: trùng lặp
v Các packet có thể bị mất , bị bỏ
tại router bởi vì bộ nhớ đệm
đầy
v Thời gian time out bên gửi hết
sớm, gởi 2 bản giống nhau, cả 2
đều được gởi đi
Tầng Transport 3-93
v 4 người gởi
v Các đường qua nhều hop
v timeout/truyền lại
Hỏi: cái gì xảy ra khi λin và
λ'in tăng?
finite shared output
link buffers
Host A λout
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 3
Host B
Host C
Host D
λin : data gốc
λ'in: data gốc, cộng với
dữ liệu được truyền lại
A: khi λ'in màu đỏ tăng, tất cả
packet màu xanh đến tại hàng đợi
phía trên bị loại bỏ, thông lượng
màu xanh -> 0
Tầng Transport 3-94
“Chi phí” khác của tắt nghẽn
v Khi packet bị loại bỏ, bất kỳ “khả năng
truyền upstream được sủ dụng cho packet
đó đều bị lãng phí!”
Nguyên nhân/Chi phí của tắc nghẽn:
tình huống 3
C/2
C/2
λ o
ut
λin’
Tầng Transport 3-95
Các phương pháp tiếp cận đối với
điều khiển tắt nghẽn
2 phương pháp tiếp cận:
Điều khiển tắt
nghẽn end-end :
v Không phản hồi rõ
ràng từ mạng
v Tắt nghẽn được suy
ra từ việc quan sát hệ
thống đầu cuối có
mất mát hoặc bị trễ
v Tiếp cận được thực
hiện bởi TCP
Điều khiển tắt
nghẽn có sự hổ
trợ của mạng
(network-
assisted) :
v Các router cung cấp
phản hồi đến các hệ
thống đầu cuối
§ Bit đơn chỉ ra tắt
nghẽn (SNA, DECbit,
TCP/IP ECN, ATM)
§ Tốc độ sẽ gửi của
người gửi được xác
định rõ ràng
Tầng Transport 3-96
Case study: điều khiển tắt nghẽn
ATM ABR
ABR: available bit
rate:
v “dịch vụ mềm dẻo”
v Nếu đường đi của
bên gửi “chưa hết:
§ Bên gửi sẽ dùng
băng thông sẵn
sàng
v Nếu đường đi của
bên gửi bị tắt nghẽn:
§ Bên gửi sẽ điều
tiết với tốc độ tối
thiểu được bảo
đảm
Các cell RM (resource
management):
v Được gởi bởi bên gửi,
được xen kẽ với các cell
dữ liệu
v Các bit trong RM cell
được thiết lập bởi các by
switch (“network-
assisted”)
§ NI bit: không tăng tốc
độ (tắt nghẽn nhẹ)
§ CI bit: tắt nghẽn rõ rệt
v Các cell RM được trả về
bên gửi từ bên nhận với
nguyên vẹn các bit
Tầng Transport 3-97
Case study: điều khiển tắt nghẽn
ATM ABR
v Trường 2 byte ER (tốc độ tường minh) trong cell
RM
§ Switch bị tắt nghẽn có thể có giá trị ER thấp hơn trong
cell
§ Do đó, tốc độ gửi của bên gửi được hổ trợ tối đa trên
đường đi
v Bit EFCI bit trong cell dữ liệu: được thiết lặp đến 1
trong switch bị tắt nghẽn
RM cell data cell
Tầng Transport 3-98
Chương 3 Nội dung
3.1 các dịch vụ tầng
Transport
3.2 multiplexing và
demultiplexing
3.3 vận chuyển phi
kết nối: UDP
3.4 các nguyên lý
truyền dữ liệu tin
cậy
3.5 vận chuyển hướng
kết nối: TCP
§ Cấu trúc segment
§ Truyền dữ liệu tin cậy
§ Điều khiển luồng (flow
control)
§ Quản lý kết nối
3.6 các nguyên lý về
điều khiển tắc nghẽn
3.7 điều khiển tắc nghẽn
TCP
Tầng Transport 3-99
TCP điều khiển tắt nghẽn: additive increase,
multiplicative decrease
v Hướng tiếp cận: bên gửi tăng tốc độ truyền (kích
thước cửa sổ), thăm dò băng thông có thể sử dụng,
cho đến khi mất mát gói xảy ra
§ additive increase: tăng cwnd bởi 1 MSS mỗi RTT cho
đến khi mất gói xảy ra
§ multiplicative decrease: giảm một nữa cwnd sau khi
mất gói xảy ra
cw
nd
: T
C
P
se
nd
er
co
ng
es
tio
n
w
in
do
w
s
iz
e
AIMD saw tooth
behavior: thăm dò
băng thông
additively increase window size
. Cho đến khi mất gói xảy ra
(thì giảm một nữa kích thước cửa sổ)
time
Tầng Transport 3-100
TCP điều khiển tắt nghẽn: chi
tiết
v Bên gửi giới hạn truyền
tải:
v cwnd thay đổi, chức năng
nhận biết tắt nghẽn trên
mạng
TCP tốc độ gửi:
v Ước lượng: gửi các
byte cwnd, đợi ACK
trong khoảng thời
gian RTT, sau đó gởi
thêm các byte
last byte
ACKed sent, not-
yet ACKed
(“in-
flight”)
last byte
sent
cwnd
LastByteSent-
LastByteAcked
< cwnd
sender sequence number space
rate ~ ~
cwnd
RTT
bytes/sec
Tầng Transport 3-101
TCP Slow Start
v Khi kết nối bắt đầu,
tăng tốc độ theo cấp số
nhân cho đến sự kiện
mất gói đầu tiên xảy ra:
§ initially cwnd = 1 MSS
§ Gấp đôi cwnd mỗi RTT
§ Được thực hiện bằng
cách tăng cwnd cho mỗi
ACK nhận được
v Tóm lại: tốc độ ban đầu
chậm, nhưng nó sẽ tăng
lên theo cấp số nhân
Host A
one segment
R
TT
Host B
time
two segments
four segments
Tầng Transport 3-102
TCP: phát hiện, phản ứng khi
mất gói
v Mất gói được chỉ ra bởi timeout:
§ cwnd được thiết lặp 1 MSS;
§ Sau đó kích thước cửa sổ sẽ tăng theo cấp số
nhân (như trong slow start) đến ngưỡng, sau đó
sẽ tăng tuyến tính
v Mất gói được xác định bởi 3 ACK trùng nhau: TCP
RENO
§ Các ACK trùng lặp chỉ ra khả năng truyền của
mạng
§ cwnd bị cắt một nữa sau đó tăng theo tuyến tính
v TCP luôn luôn thiết lặp cwnd bằng 1 (timeout hoặc
3 ack trùng nhau)
Tầng Transport 3-103
Hỏi: khi nào tăng cấp
số nhân nên
chuyển qua tuyến
tính?
Trả lời: khi cwnd
được 1/2 giá trị
của nó trước thời
gian timeout.
Thực hiện:
v ssthresh thay đổi
v Khi mất gói, ssthresh
được thiết lặp về chỉ
1/2 của cwnd trước
khi mất gói
TCP: chuyển từ slow start qua
CA
Tầng Transport 3-104
Tóm tắt: TCP điều khiển tắt nghẽn
timeout
ssthresh = cwnd/2
cwnd = 1 MSS
dupACKcount = 0
Truyền lại segmentt thiếu
Λ
cwnd > ssthresh
congestion
avoidance
cwnd = cwnd + MSS (MSS/cwnd)
dupACKcount = 0
Truyền segment(s) mới, khi được phép
new ACK .
dupACKcount++
duplicate ACK
fast
recovery
cwnd = cwnd + MSS
Truyền segment(s) mới, khi được phép
duplicate ACK
ssthresh= cwnd/2
cwnd = ssthresh + 3
Truyền lại segmentt thiếu
dupACKcount == 3
timeout
ssthresh = cwnd/2
cwnd = 1
dupACKcount = 0
Truyền lại segmentt thiếu
ssthresh= cwnd/2
cwnd = ssthresh + 3
Truyền lại segmentt thiếu
dupACKcount == 3 cwnd = ssthresh dupACKcount = 0
New ACK
slow
start
timeout
ssthresh = cwnd/2
cwnd = 1 MSS
dupACKcount = 0
Truyền lại segmentt thiếu
cwnd = cwnd+MSS
dupACKcount = 0
Truyền segment(s) mới, khi được phép
new ACK dupACKcount++
ACK trùng
Λ
cwnd = 1 MSS
ssthresh = 64 KB
dupACKcount = 0
New
ACK!
New
ACK!
New
ACK!
Tầng Transport 3-105
TCP thông lượng (throughtput)
v Thông lượng trung bình của TCP như là chức năng
của kích thước cửa sổ và RTT?
§ Bỏ qua slow start, giả sử dữ liệu luôn luôn được gởi
v W: kích thước cửa sổ (được đo bằng byte) khi mất gói xảy
ra
§ Kích thước cửa sổ trung bình (# in-flight bytes) là ¾ W
§ Thông lượng trung bình là 3/4W mỗi RTT
W
W/2
avg TCP thruput = 3 4
W
RTT bytes/sec
Tầng Transport 3-106
TCP tương lai: TCP qua “ống lớn và dài”
v Ví dụ: segment 1500 byte, 100ms RTT,
muốn thông lượng 10 Gbps
v Kích thước cửa sổ yêu cầu W = 83,333
segment trên đường truyền
v Thông lượng trong các trường hợp mất gói,
L [Mathis 1997]:
➜ để đạt thông lượng 10 Gbps, cần thì lệ mất gói
là L = 2·10-10 – một tỷ lệ mất gói rất nhỏ!
v Phiên bản mới của TCP cho tốc độ cao
TCP throughput = 1.22
. MSS
RTT L
Tầng Transport 3-107
Mục tiêu công bằng: nếu có K session TCP
chia sẽ cùng đường link bị bóp cổ chai của
băng thông R, thì mỗi phiên nên có tốc độ
trung bình là R/K
Kết nối TCP 1
Router cổ chai
Khả năng R
TCP Công bằng
Kết nối TCP 2
Tầng Transport 3-108
Tại sao TCP là công bằng?
2 session cạnh tranh nhau:
v additive increase cho độ dốc tăng 1, khi thông lượng tăng
v multiplicative decrease giảm thông lượng tương úng
R
R
Chia sẽ băng thông bằng nhau
Connection 1 throughput
C
on
ne
ct
io
n
2
th
ro
ug
hp
ut
Tránh tắt nghẽn: additive increase
Mất gói: giảm một nữa kích thước cửa sổ
Tránh tắt nghẽn: additive increase
Mất gói: giảm một nữa kích thước cửa sổ
Tầng Transport 3-109
Công bằng (tt)
TCP và UDP
v Nhiều ứng dụng
thường không dùng
TCP
§ Không muốn tốc độ
bị điều tiết do điều
khiển tắt nghẽn
v Thay bằng dùng
UDP:
§ Truyền audio/video
với tốc độ ổn định,
chịu được mất gói
Các kết nối TCP song song
v ứng dụng có thể mở
nhiều kết nối song song
giữa 2 host
v Trình duyệt web làm
điều này
v Ví dụ: đường link với
tốc độ R hỗ trợ 9 kết
nối:
§ ứng dụng mới yêu cầu 1 TCP, có
tốc độ R/10
§ ứng dụng mới yêu cầu 11 TCPs,
có tốc độ R/2
Tầng Transport 3-110
Chương 3: Tóm tắt
v Các nguyên lý của các dịch vụ
tầng transport layer :
§ multiplexing, demultiplexing
§ Truyền dữ liệu tin cậy
§ Điều khiển luồng (flow
control)
§ Điều khiển tắt nghẽn
(congestion control)
v Khởi tạo và thực hiện trên
Internet
§ UDP
§ TCP
Kế tiếp:
v Tìm hiểu xong
các vấn đề mạng
“biên” (các tầng
application,
transport)
v Chuẩn bị vào
phần mạng “lõi”
File đính kèm:
bai_giang_mang_may_tinh_chuong_3_tang_transport_nguyen_duy.pdf

