Professional Documents
Culture Documents
CN2019 Chapter3 Transport Layer (VIE Final)
CN2019 Chapter3 Transport Layer (VIE Final)
3-2
Chương 3: Lớp giao vận (vận chuyển)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-3
Chương 3: Các nội dung chính
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.1.1 Mối quan hệ giữa lớp Cấu trúc của segment (gói tin
vận chuyển và lớp mạng tầng vận chuyển)
3.1.2 Khái quát về lớp vận Truyền dữ liệu tin cậy
chuyển của Internet Điều khiển lưu lượng (flow
3.2 Dồn kênh và phân kênh control)
(multiplexing and Quản lý kết nối (connection
demultiplexing) management)
3.3 Vận chuyển không hướng 3.6 Các nguyên tắc của điều khiển
nối: UDP tắc nghẽn
3.4 Các nguyên tắc của việc 3.7 Điều khiển tắc nghẽn của TCP
truyền dữ liệu tin cậy
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-4
3.1 Giới thiệu và các dịch vụ lớp vận chuyển
Các dịch vụ vận chuyển và giao thức
application
Cung cấp sự truyền thông lô-gic transport
network
giữa các tiến trình ứng dụng data link
physical
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 end systems
Bên gửi: chia các bản tin của ứng
dụng thành các phân đoạn -
segments, rồi chuyển chúng xuống
lớp mạng
Bên nhận: ghép các phân đoạn
thành các bản tin, rồi chuyển cho application
transport
lớp ứng dụng network
data link
Có sẵn hơn một giao thức vận physical
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-5
3.1.1 Mối quan hệ giữa lớp vận chuyển và lớp mạng
network
control) data link
physical
Thiết lập kết nối (connection setup)
network
UDP: không tin cậy (unreliable), data link
physical
phân phát không đúng thứ tự network
data link
(unordered delivery) physical
network
Mở rộng không đáng kể dịch vụ vận data link
physical
application
transport
chuyển kiểu “cố gắng tối đa” của IP network
data link network
physical data link
(no-frills extension) physical
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-7
Chương 3: Các nội dung chính
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh Cấu trúc của segment (gói tin
(multiplexing and tầng vận chuyển)
demultiplexing) Truyền dữ liệu tin cậy
Điều khiển lưu lượng (flow
3.3 Vận chuyển không hướng control)
nối: UDP Quản lý kết nối (connection
3.4 Các nguyên tắc của việc management)
truyền dữ liệu tin cậy 3.6 Các nguyên tắc của điều khiển
tắc nghẽn
3.7 Điều khiển tắc nghẽn của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-8
3.2 Dồn kênh và phân kênh
Việc dồn kênh tại sender: Việc phân kênh tại receiver:
Xử lý (handle) dữ liệu từ nhiều Sử dụng thông tin của header để
sockets, bổ sung transport header (sẽ phân phát các segments nhận
được dùng cho việc phân kênh) được tới đúng socket
application
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-9
… 3.2 Dồn kênh và phân kênh
Việc phân kênh thực hiện ntn
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-10
… 3.2 Dồn kênh và phân kênh
Việc phân kênh không hướng nối (Connectionless demultiplexing)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-11
… 3.2 Dồn kênh và phân kênh
Thí dụ về phân kênh không hướng nối
DatagramSocket
DatagramSocket serverSocket = new
DatagramSocket DatagramSocket
mySocket2 = new mySocket1 = new
DatagramSocket (6428); DatagramSocket
(9157); application
(5775);
application application
P1
P3 P4
transport
transport transport
network
network link network
link physical link
physical physical
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-12
… 3.2 Dồn kênh và phân kênh
Phân kênh hướng nối (Connection-oriented demux)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-13
… 3.2 Dồn kênh và phân kênh
Thí dụ về phân kênh hướng nối (Connection-oriented demux)
application
application P4 P5 P6 application
P3 P2 P3
transport
transport transport
network
network link network
link physical link
physical server: IP physical
address B
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-14
… 3.2 Dồn kênh và phân kênh
… Thí dụ về phân kênh hướng nối (Connection-oriented demux)
threaded server
application
application application
P4
P3 P2 P3
transport
transport transport
network
network link network
link physical link
physical server: IP physical
address B
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-15
Chương 3: Các nội dung chính
(Stop CT4, CT5, 27-28/3/2019 )
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh Cấu trúc của segment (gói tin
(multiplexing and tầng vận chuyển)
demultiplexing) Truyền dữ liệu tin cậy
Điều khiển lưu lượng (flow
3.3 Vận chuyển không hướng control)
nối: UDP Quản lý kết nối (connection
3.3.1 Cấu trúc gói tin UDP management)
(UDP Segment Structure)
3.3.2 Tổng kiểm tra UDP
3.6 Các nguyên tắc của điều khiển
(UDP Checksum) tắc nghẽn
3.4 Các nguyên tắc của việc 3.7 Điều khiển tắc nghẽn của TCP
truyền dữ liệu tin cậy
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-16
3.3 Vận chuyển không hướng nối: UDP
Giao thức bản tin người dùng UDP (User Datagram Protocol [RFC 768])
length, in bytes of
32 bits UDP segment,
source port # dest port # including header
length checksum
Tại sao lại phải có UDP?
Không cần thiết lập kết nối
application (làm tăng thêm trễ)
data Đơn giản: không cần trạng
(payload) thái kết nối ở bên sender và
bên receiver
Kích thước header nhỏ
Không có điều khiển tắc
Khuôn dạng gói tin UDP nghẽn: UDP có thể tăng vọt
(UDP segment format) (tốc độ truyền) theo mong
muốn
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-18
3.3.2 Tổng kiểm tra UDP (UDP Checksum)
Mục đích (goal): phát hiện lỗi - “errors” (thí dụ: các bit bị lật 0
thành 1 hoặc ngược lại) trong segment được truyền
Sender: Receiver:
Coi nội dung của Tính checksum của segment
segment, bao gồm cả các nhận được
trường của header như
một dãy các số nguyên Kiểm tra xem nếu checksum
16-bit nó tính được bằng giá trị
trong trường checksum:
Checksum: cộng (one’s
complement sum) nội NO – lỗi bị phát hiện
dung của segment YES – không phát hiện ra
Sender đưa giá trị lỗi. Tuy nhiên có thể vẫn
checksum vào trường có lỗi? More later ….
checksum của gói tin
UDP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-19
… 3.3.2 Tổng kiểm tra UDP (UDP Checksum)
Thí dụ về Internet checksum
wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
Chú ý: Khi cộng hai số, số nhớ (carryout) từ việc cộng các
bit bậc cao nhất cần được cộng vào kết quả (nghĩa là lại cộng
vào bit bậc 0 của kết quả)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-20
Chương 3: Các nội dung chính
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh Cấu trúc của segment (gói tin
(multiplexing and tầng vận chuyển)
demultiplexing) Truyền dữ liệu tin cậy
Điều khiển lưu lượng (flow
3.3 Vận chuyển không hướng control)
nối: UDP Quản lý kết nối (connection
3.4 Các nguyên tắc của việc management)
truyền dữ liệu tin cậy 3.6 Các nguyên tắc của điều khiển
3.4.1 Việc xây dựng giao thức tắc nghẽn
truyền tin cậy
3.4.2 Các giao thức truyền dữ
3.7 Điều khiển tắc nghẽn của TCP
liệu tin cậy kiểu đường ống
3.4.3 Go-Back-N (GBN)
3.4.4 Phát lại có chọn lọc –
SR (Selective Repeat)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-21
3.4 Các nguyên tắc của việc truyền dữ liệu tin cậy
Là quan trọng đối với các lớp ứng dụng, vận chuyển và
liên kết (link)
Trong danh sách Top-10 các chủ đề networking quan trọng!
Các đặc tính của kênh không tin cậy sẽ quyết định (determine) độ phức tạp
của giao thức truyền dữ liệu tin cậy – rdt (reliable data transfer protocol)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-22
… 3.4 Các nguyên tắc của việc truyền dữ liệu tin cậy
Là quan trọng đối với các lớp ứng dụng, vận chuyển và
liên kết (link)
Trong danh sách Top-10 các chủ đề networking quan trọng!
Các đặc tính của kênh không tin cậy sẽ quyết định (determine) độ phức tạp
của giao thức truyền dữ liệu tin cậy – rdt (reliable data transfer protocol)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-23
… 3.4 Các nguyên tắc của việc truyền dữ liệu tin cậy
Là quan trọng đối với các lớp ứng dụng, vận chuyển và
liên kết (link)
Trong danh sách Top-10 các chủ đề networking quan trọng!
Các đặc tính của kênh không tin cậy sẽ quyết định (determine) độ phức tạp
của giao thức truyền dữ liệu tin cậy – rdt (reliable data transfer protocol)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-24
Reliable data transfer: getting started
rdt_send(): được gọi từ bên trên, (thí deliver_data(): được gọi bởi rdt
dụ: bởi app.). Dữ liệu được chuyển đến để để phân phát dữ liệu đến lớp bên trên
phân phát tới lớp bên trên của receiver
send receive
side side
udt_send(): Được gọi bởi rdt, rdt_rcv(): được gọi khi packet đến bên
để truyền packet qua nhận (rcv-side) của kênh (channel)
Kênh không tin cậy đến receiver
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-25
3.4.1 Việc xây dựng giao thức truyền tin cậy
Reliable data transfer: getting started
Chúng ta sẽ:
Phát triển dần dần bên sender, bên receiver của giao thức rdt (reliable data
transfer protocol)
Chỉ xem xét (trường hợp) truyền dữ liệu theo một chiều
Tuy nhiên, thông tin điều khiển sẽ đi theo cả hai chiều!
Sử dụng máy trạng thái hữu hạn (FSM) để đặc tả sender, receiver
Sự kiện (event) gây ra
sự chuyển trạng thái (state)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-26
3.4.1 Việc xây dựng giao thức truyền tin cậy
rdt1.0: reliable transfer over a perfectly reliable channel
sender receiver
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-27
rdt2.0: Kênh truyền có lỗi bit
Kênh truyền bên dưới có thể đảo (flip) các bits trong
packet
checksum để phát hiện các lỗi bit
Câu hỏi đặt ra là: Làm thế nào khôi phục được khỏi
lỗi:
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-28
rdt2.0: channel with bit errors
Kênh truyền bên dưới có thể đảo (flip) các bits trong
packet
checksum để phát hiện các lỗi bit
Câu hỏi đặt ra là: Làm thế nào khôi phục được khỏi
lỗi:
Biên nhận (đúng) - acknowledgements (ACKs): receiver chỉ
ra một cách rõ ràng cho bên sender rằng pkt được nhận OK
Biên nhận (sai) negative acknowledgements (NAKs):
receiver chỉ ra một cách rõ ràng cho bên sender rằng pkt có
errors
Sender truyền lại pkt khi nhận được NAK
Các cơ chế mới trong rdt2.0 (beyond rdt1.0):
Phát hiện lỗi (error detection)
Phản hồi (feedback): bên nhận gửi control msgs (ACK,
NAK) tới bên gửi
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-29
rdt2.0: đặc tả FSM
Giao thức với kênh truyền có lỗi
rdt_send(data)
sndpkt = make_pkt(data, checksum) receiver
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Wait for Wait for rdt_rcv(rcvpkt) &&
call from ACK or udt_send(sndpkt) corrupt(rcvpkt)
above NAK
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-30
rdt2.0: operation with no errors
rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Wait for Wait for rdt_rcv(rcvpkt) &&
call from ACK or udt_send(sndpkt) corrupt(rcvpkt)
above NAK
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-31
rdt2.0: error scenario
rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Wait for Wait for rdt_rcv(rcvpkt) &&
call from ACK or udt_send(sndpkt) corrupt(rcvpkt)
above NAK
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-32
rdt2.0 có một thiếu sót chết người! (Stop CT4,5, 3, 4/4/2019)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-33
rdt2.1: sender, handles garbled ACK/NAKs
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt) rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Wait for Wait for
ACK or
isNAK(rcvpkt) )
call 0 from
NAK 0 udt_send(sndpkt)
above
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt) rdt_rcv(rcvpkt)
&& isACK(rcvpkt) && notcorrupt(rcvpkt)
&& isACK(rcvpkt)
Wait for Wait for
ACK or call 1 from
rdt_rcv(rcvpkt) && NAK 1 above
( corrupt(rcvpkt) ||
isNAK(rcvpkt) ) rdt_send(data)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-34
rdt2.1: receiver, handles garbled ACK/NAKs
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-35
rdt2.1: Thảo luận (discussion)
Sender: Receiver:
Bổ sung trường seq # vào pkt Phải kiểm tra packet nhận
Hai số seq. #’s (0,1) sẽ là đủ. được có phải là lặp hay không
Tại sao? Trạng thái (state) chỉ ra giá trị
Phải kiểm tra gói tin seq# được chờ đợi là 0 hay là 1
ACK/NAK nhận được có bị Chú ý: receiver không thể biết
hỏng không được gói tin ACK/NAK cuối
Số trạng thái gấp đôi (twice cùng bên sender có nhận được
as many states) đúng hay không
Trạng thái (state) phải “nhớ”
pkt “mong chờ” cần phải có seq
# là 0 hay là 1
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-36
rdt2.2: Một giao thức không dùng NAK (NAK-free)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-37
rdt2.2: sender, receiver fragments
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt) rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Wait for Wait for
ACK isACK(rcvpkt,1) )
call 0 from
above 0 udt_send(sndpkt)
sender FSM
fragment rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && && isACK(rcvpkt,0)
(corrupt(rcvpkt) ||
has_seq1(rcvpkt)) Wait for receiver FSM
0 from
udt_send(sndpkt) below fragment
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK1, chksum)
udt_send(sndpkt)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-38
rdt3.0: Các kênh có lỗi và mất mát (errors and loss)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-39
rdt3.0 sender
rdt_send(data)
rdt_rcv(rcvpkt) &&
sndpkt = make_pkt(0, data, checksum) ( corrupt(rcvpkt) ||
udt_send(sndpkt) isACK(rcvpkt,1) )
rdt_rcv(rcvpkt) start_timer
Wait for Wait
for timeout
call 0 from
ACK0 udt_send(sndpkt)
above
start_timer
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt) rdt_rcv(rcvpkt)
&& isACK(rcvpkt,1) && notcorrupt(rcvpkt)
stop_timer && isACK(rcvpkt,0)
stop_timer
Wait Wait for
timeout for call 1 from
udt_send(sndpkt) ACK1 above
start_timer rdt_rcv(rcvpkt)
rdt_send(data)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) || sndpkt = make_pkt(1, data, checksum)
isACK(rcvpkt,0) ) udt_send(sndpkt)
start_timer
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-40
rdt3.0 trong quá trình hoạt động (in action)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-42
Hiệu suất (Performance) của rdt3.0 (Stop CT3, 2/4/2019)
sender receiver
U L/R .008
sender = = = 0.00027
RTT + L / R 30.008
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-44
Giao thức kiểu đường ống (Pipelined protocols)
Pipelining: sender gửi liên tiếp nhiều pkts “in-flight” (trên đường
truyền), mà chưa có biên nhận
Miền số seq# phải được tăng lên
Cần việc nhớ đệm (buffering) tại sender and/or receiver
Hai dạng tổng quát của giao thức kiểu đường ống: Go-Back-N
(GbN; GBN), Selective Repeat (SR)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-45
Pipelining: increased utilization
sender receiver
Bit đầu của pkt được truyền, t = 0
Bit cuối được truyền, t = L / R
U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-46
Pipelined protocols: overview
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-47
Go-Back-N: sender
Trường seq# trong header của pkt dài k-bit
“window” of up to N, consecutive unack’ed pkts allowed
ACK(n): biên nhận tất cả pkts cho đến (kể cả) pkt có seq# = n -“cumulative
ACK”
Có thể nhận được các biên nhận lặp (see receiver)
Timer cho pkt cũ nhất đang ở trên đường truyền (in-flight)
timeout(n): Truyền lại pkt thứ n và các pkt có seq# lớn hơn n trong cửa sổ
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-48
GBN: sender extended FSM
rdt_send(data)
if (nextseqnum < base+N) {
sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum)
udt_send(sndpkt[nextseqnum])
if (base == nextseqnum)
start_timer
nextseqnum++
}
else
refuse_data(data)
base=1
nextseqnum=1
timeout
start_timer
Wait
udt_send(sndpkt[base])
rdt_rcv(rcvpkt) udt_send(sndpkt[base+1])
&& corrupt(rcvpkt) …
udt_send(sndpkt[nextseqnum-1])
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
base = getacknum(rcvpkt)+1
If (base == nextseqnum)
stop_timer
else
start_timer
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-49
GBN: receiver extended FSM
default
udt_send(sndpkt) rdt_rcv(rcvpkt)
&& notcurrupt(rcvpkt)
&& hasseqnum(rcvpkt,expectedseqnum)
expectedseqnum=1 Wait extract(rcvpkt, data)
sndpkt = deliver_data(data)
make_pkt(expectedseqnum, ACK, chksum) sndpkt = make_pkt(expectedseqnum, ACK, chksum)
udt_send(sndpkt)
expectedseqnum++
ACK-only: bao giờ cũng gửi ACK cho pkt đã nhận đúng có seq#
lớn nhất đúng thứ tự (in-order)
Có thể làm sinh ra duplicate ACKs
Chỉ cần nhớ seq# mong đợi (expectedseqnum)
Pkt không đúng thứ tự:
Loại bỏ: không cần nhớ đệm (buffering) tại bên nhận!
Biên nhận lại (re-ACK) pkt có seq# cao nhất đúng thứ tự
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-50
Thí dụ về GBN đang hoạt động (GBN in action)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-51
Selective repeat
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-52
Selective repeat: sender, receiver windows
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-53
Selective repeat
Sender Receiver
Nhận data từ (tầng) trên: pkt n in [rcvbase, rcvbase+N-1]
Nếu có seq# trong cửa sổ để Gửi ACK(n)
dùng, thì gửi pkt Nếu pkt n là không đúng thứ tự:
timeout(n): nhớ đệm (buffer)
Gửi lại pkt n, restart timer Nếu pkt n là đúng thứ tự: thì
phân phát (cũng phân phát cả
ACK(n) in [sendbase,sendbase+N]: các pkts đang được nhớ đệm
Đánh dấu pkt n là đã được nhận nếu đúng thứ tự), tăng (sàn) cửa
if n là số nhỏ nhất trong các pkt sổ lên đến seq# của pkt còn
chưa được biên nhận, thì tăng chưa được biên nhận kế tiếp
sàn (base) cửa sổ lên đến seq# pkt n in [rcvbase-N,rcvbase-1]
còn chưa được biên nhận kế ACK(n)
tiếp
otherwise:
Lờ đi (ignore)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-54
Thí dụ về SR đang hoạt động (Selective repeat in action)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-55
sender window receiver window
Selective repeat: (after receipt) (after receipt)
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh 3.5.1 Kết nối TCP
(multiplexing and 3.5.2 Cấu trúc của segment
demultiplexing) 3.5.3 Ước lượng thời gian khứ
hồi và Timeout
3.3 Vận chuyển không hướng
3.5.4 Truyền dữ liệu tin cậy
nối: UDP
3.5.5 Điều khiển lưu lượng
3.4 Các nguyên tắc của việc 3.5.6 Quản lý kết nối
truyền dữ liệu tin cậy
3.6 Các nguyên tắc của điều khiển
tắc nghẽn
3.7 Điều khiển tắc nghẽn của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-57
3.5.1 Kết nối TCP (Stop CT4,5, 3, 4/4/2019)
TCP: Overview RFCs: 793,1122,1323, 2018, 2581
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-58
3.5.2 Cấu trúc của TCP segment
32 bits
URG: urgent data counting
(generally not used) source port # dest port #
by bytes
sequence number of data
ACK: ACK #
valid acknowledgement number (not segments!)
head not
PSH: push data now len used
UAP R S F receive window
(generally not used) # bytes
checksum Urg data pointer
rcvr willing
RST, SYN, FIN: to accept
options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-59
TCP seq. numbers, ACKs
Sequence numbers: outgoing segment from sender
STT byte trong dòng byte được source port # dest port #
truyền; STT này là của byte đầu tiên sequence number
trong trường data của segment. acknowledgement number
rwnd
STT của byte đầu tiên trong dòng checksum urg pointer
byte – ISN (Initial Sequence
window size
Number) được chọn ngẫu nhiên, N
trong giai đoạn thiết lập kết nối.
Acknowledgements:
Seq# của byte chờ nhận sender sequence number space
Biên nhận kiểu tích lũy (cumulative)
sent sent, not- usable not
Q: Bên receiver xử lý các ACKed yet ACKed but not usable
(“in- yet sent
segments không đúng thứ tự flight”)
ntn? incoming segment to sender
A: Đặc tả TCP không nói về điều source port # dest port #
sequence number
này, để cho người thực hiện acknowledgement number
(implementor) tự quyết. A rwnd
checksum urg pointer
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-60
TCP seq. numbers, ACKs
Host A Host B
User
types
‘C’ Seq=42, ACK=79, data = ‘C’
host ACKs
receipt of
‘C’, echoes
Seq=79, ACK=43, data = ‘C’ back ‘C’
host ACKs
receipt
of echoed
‘C’ Seq=43, ACK=80
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-61
3.5.3 Ước lượng thời gian khứ hồi và Timeout
(TCP round trip time, timeout)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-62
… 3.5.3 Ước lượng thời gian khứ hồi và Timeout
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
Trung bình động có trọng số theo hàm mũ (exponential weighted
moving average)
Ảnh hưởng của mẫu cũ (past sample) giảm theo hàm mũ nhanh chóng
Giá trị điển hình của = 0.125 (=1/8d = 0.001b)
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
350
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
300
RTT (ms)
250
RTT (milliseconds)
200
sampleRTT
150
EstimatedRTT
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconds)
time (seconnds)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-63
… 3.5.3 Ước lượng thời gian khứ hồi và Timeout
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically, = 0.25) (=0.01b)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-64
Chương 3: Các nội dung chính
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh 3.5.1 Kết nối TCP
(multiplexing and 3.5.2 Cấu trúc của segment
demultiplexing) 3.5.3 Ước lượng thời gian khứ
hồi và Timeout
3.3 Vận chuyển không hướng
3.5.4 Truyền dữ liệu tin cậy
nối: UDP
3.5.5 Điều khiển lưu lượng
3.4 Các nguyên tắc của việc 3.5.6 Quản lý kết nối
truyền dữ liệu tin cậy
3.6 Các nguyên tắc của điều khiển
tắc nghẽn
3.7 Điều khiển tắc nghẽn của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-65
3.5.4 Truyền dữ liệu tin cậy
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-66
… 3.5.4 Truyền dữ liệu tin cậy
Các sự kiện tại bên gửi TCP (TCP sender events):
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-67
… 3.5.4 Truyền dữ liệu tin cậy
Bên gửi TCP (đơn giản hóa):
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeout
ACK=100
X
ACK=100
ACK=120
SendBase=120
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-69
… 3.5.4 Truyền dữ liệu tin cậy
… TCP: Các kịch bản truyền lại (retransmission scenarios)
Host A Host B
ACK=100
X
ACK=120
cumulative ACK
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-70
… 3.5.4 Truyền dữ liệu tin cậy
Việc sinh gói tin biên nhận TCP [RFC 1122, RFC 2581]
Sự đến của segment đúng thứ tự với Ngay lập tức gửi 1 biên nhận tích lũy, biên nhận
seq# mong đợi. Có một segment cho tất cả các segment đã nhận đúng thứ tự
khác chưa được biên nhận (ACK
pending)
Sự đến của segment không đúng thứ Ngay lập tức gửi duplicate ACK,
tự với seq# cao hơn giá trị mong đợi. Chỉ ra seq# của byte mong đợi kế tiếp
Khoảng trống seq# được phát hiện
(Gap detected)
Sự đến của segment mà nó lấp đầy Ngay lập tức gửi ACK, với điều kiện là segment
một phần hoặc toàn bộ khoảng trống bắt đầu (starts) ở mép thấp của khoảng trống
(at lower end of gap)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-71
… 3.5.4 Truyền dữ liệu tin cậy
Truyền lại nhanh của TCP (TCP fast retransmit)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-72
… 3.5.4 Truyền dữ liệu tin cậy
… Truyền lại nhanh của TCP (TCP fast retransmit)
Host A Host B
ACK=100
timeout
ACK=100
ACK=100
ACK=100
Seq=100, 20 bytes of data
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh 3.5.1 Kết nối TCP
(multiplexing and 3.5.2 Cấu trúc của segment
demultiplexing) 3.5.3 Ước lượng thời gian khứ
hồi và Timeout
3.3 Vận chuyển không hướng
3.5.4 Truyền dữ liệu tin cậy
nối: UDP
3.5.5 Điều khiển lưu lượng
3.4 Các nguyên tắc của việc 3.5.6 Quản lý kết nối
truyền dữ liệu tin cậy
3.6 Các nguyên tắc của điều khiển
tắc nghẽn
3.7 Điều khiển tắc nghẽn của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-74
3.5.4 Truyền dữ liệu tin cậy
Điều khiển lưu lượng của TCP (TCP flow control)
application
Ứng dụng có thể loại bỏ process
(remove) dữ liệu khỏi
application
TCP socket buffers ….
TCP socket OS
receiver buffers
… chậm hơn so với TCP
receiver đang phân phát
(sender is sending) TCP
code
flow control IP
code
receiver điều khiển sender, sao
cho sender không làm tràn bộ
đệm của receiver bằng việc
truyền quá nhiều, quá nhanh from sender
receiver protocol stack
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-75
… 3.5.4 Truyền dữ liệu tin cậy
… Điều khiển lưu lượng của TCP (TCP flow control)
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh 3.5.1 Kết nối TCP
(multiplexing and 3.5.2 Cấu trúc của segment
demultiplexing) 3.5.3 Ước lượng thời gian khứ
hồi và Timeout
3.3 Vận chuyển không hướng
3.5.4 Truyền dữ liệu tin cậy
nối: UDP
3.5.5 Điều khiển lưu lượng
3.4 Các nguyên tắc của việc 3.5.6 Quản lý kết nối
truyền dữ liệu tin cậy
3.6 Các nguyên tắc của điều khiển
tắc nghẽn
3.7 Điều khiển tắc nghẽn của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-77
3.5.6 Quản lý kết nối (Connection Management)
application application
network network
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-78
… 3.5.6 Quản lý kết nối
Sự bằng lòng thiết lập kết nối (Agreeing to establish a connection)
2-way handshake:
Q: Liệu 2-way handshake
có luôn làm việc (được)
Let’s talk
trên mạng?
ESTAB Độ trễ thay đổi
OK
ESTAB Các messages được truyền
lại (e.g. req_conn(x)) do có
sự mất message
Sắp xếp lại message
choose x
req_conn(x)
Mỗi bên không “nhìn thấy “
ESTAB (see) bên kia
acc_conn(x)
ESTAB
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-79
… 3.5.6 Quản lý kết nối
Sự bằng lòng thiết lập kết nối (Agreeing to establish a connection)
choose x choose x
req_conn(x) req_conn(x)
ESTAB ESTAB
retransmit acc_conn(x) retransmit acc_conn(x)
req_conn(x) req_conn(x)
ESTAB ESTAB
data(x+1) accept
req_conn(x)
retransmit data(x+1)
data(x+1)
connection connection
client x completes server x completes server
client
terminates forgets x terminates forgets x
req_conn(x)
ESTAB ESTAB
data(x+1) accept
half open connection! data(x+1)
(no client!)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-80
… 3.5.6 Quản lý kết nối
Bắt tay 3-bước của TCP (TCP 3-way handshake)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-81
… 3.5.6 Quản lý kết nối
Bắt tay 3-bước của TCP: FSM
closed
Socket connectionSocket =
welcomeSocket.accept();
Socket clientSocket =
SYN(x) newSocket("hostname","port
number");
SYNACK(seq=y,ACKnum=x+1)
create new socket for SYN(seq=x)
communication back to client listen
SYN SYN
rcvd sent
SYNACK(seq=y,ACKnum=x+1)
ESTAB ACK(ACKnum=y+1)
ACK(ACKnum=y+1)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-82
… 3.5.6 Quản lý kết nối
TCP: Việc đóng kết nối
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-83
… 3.5.6 Quản lý kết nối
… TCP: Việc đóng kết nối
LAST_ACK
FINbit=1, seq=y
TIMED_WAIT can no longer
send data
ACKbit=1; ACKnum=y+1
timed wait
for 2*max CLOSED
segment lifetime
CLOSED
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-84
Chương 3: Các nội dung chính
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh 3.5.1 Kết nối TCP
(multiplexing and 3.5.2 Cấu trúc của segment
demultiplexing) 3.5.3 Ước lượng thời gian khứ
hồi và Timeout
3.3 Vận chuyển không hướng
3.5.4 Truyền dữ liệu tin cậy
nối: UDP
3.5.5 Điều khiển lưu lượng
3.4 Các nguyên tắc của việc 3.5.6 Quản lý kết nối
truyền dữ liệu tin cậy
3.6 Các nguyên tắc của điều khiển
tắc nghẽn
3.7 Điều khiển tắc nghẽn của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-85
3.6 Các nguyên tắc của điều khiển tắc nghẽn
(Principles of congestion control)
Congestion:
Nói đơn giản: tắc nghẽn xảy ra khi có quá nhiều nguồn gửi quá
nhiều dữ liệu làm mạng không xử lý được.
(Informally “too many sources sending too much data too fast for network to handle”)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-86
3.6 Các nguyên tắc của điều khiển tắc nghẽn
Nguyên nhân/Giá (causes/costs) của tắc nghẽn: kịch bản 1
Host B
R/2
delay
out
Host A
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-88
3.6 Các nguyên tắc của điều khiển tắc nghẽn
… Nguyên nhân/Giá (causes/costs) của tắc nghẽn: kịch bản 2
R/2
Lý tưởng hóa: bên gửi có
hiểu biết đầy đủ
out
Sender chỉ gửi khi bộ đệm router
có chỗ trống (available)
in R/2
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-89
3.6 Các nguyên tắc của điều khiển tắc nghẽn
… Nguyên nhân/Giá (causes/costs) của tắc nghẽn: kịch bản 2
Lý tưởng hóa: các pkts bị mất đã biết
có thể là bị mất (lost), bị loại bỏ
(dropped) tại router do bộ đệm đã đầy
Sender chỉ gửi lại nếu packet được biết
là bị mất
A no buffer space!
Host B
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-90
3.6 Các nguyên tắc của điều khiển tắc nghẽn
… Nguyên nhân/Giá (causes/costs) của tắc nghẽn: kịch bản 2
Lý tưởng hóa: các pkts bị mất R/2
đã biết có thể là bị mất (lost),
bị loại bỏ (dropped) tại router when sending at R/2,
do bộ đệm đã đầy some packets are
out
retransmissions but
Sender chỉ gửi lại nếu packet asymptotic goodput
được biết là bị mất is still R/2 (why?)
in R/2
Host B
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-91
3.6 Các nguyên tắc của điều khiển tắc nghẽn
… Nguyên nhân/Giá (causes/costs) của tắc nghẽn: kịch bản 2
Thực tế: Có (truyền) lặp
R/2
Các pkts có thể bị mất (lost), bị loại
bỏ (dropped) tại router do bộ đệm when sending at R/2,
đầy some packets are
out
retransmissions
Sender times out sớm, việc gửi hai including duplicated
bản copy, cả hai đều được phân phát that are delivered!
in R/2
in
timeout
copy 'in out
Host B
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-92
3.6 Các nguyên tắc của điều khiển tắc nghẽn
… Nguyên nhân/Giá (causes/costs) của tắc nghẽn: kịch bản 2
Thực tế: Có (truyền) lặp
R/2
Các pkts có thể bị mất (lost), bị
loại bỏ (dropped) tại router do when sending at R/2,
bộ đệm đầy some packets are
out
retransmissions
Sender times out sớm, việc gửi including duplicated
hai bản copy, cả hai đều được that are delivered!
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-93
3.6 Các nguyên tắc của điều khiển tắc nghẽn
Nguyên nhân/Giá (causes/costs) của tắc nghẽn: kịch bản 3
Q: Điều gì xảy ra khi in and in’ tăng lên ?
Bốn senders
Đường truyền đa chặng A: Khi in’ (màu đỏ) tăng lên, tất cả pkts đi
đến (màu blue) tại hàng đợi bên trên bị
(multihop paths)
loại bỏ (dropped), thông lượng của
Có timeout/retransmit (luồng) blue 0
Host A
in : original data out
Host B
'in: original data, plus
retransmitted data
finite shared output
link buffers
Host D
Host C
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-94
3.6 Các nguyên tắc của điều khiển tắc nghẽn
… Nguyên nhân/Giá (causes/costs) của tắc nghẽn: kịch bản 3
C/2
out
in’ C/2
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-95
3.6 Các nguyên tắc của điều khiển tắc nghẽn
Các cách (approaches) giải quyết vấn đề điều khiển tắc nghẽn
Có 2 cách tiếp cận chính đối với điều khiển tắc nghẽn:
Điều khiển tắc nghẽn e2e (End-end congestion control)
Điều khiển tắc nghẽn có sự trợ giúp của mạng: Network-assisted congestion
control
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-96
3.6 Các nguyên tắc của điều khiển tắc nghẽn
Case study: ATM ABR congestion control (skipped)
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-97
3.6 Các nguyên tắc của điều khiển tắc nghẽn
… Case study: ATM ABR congestion control (skipped)
3.1 Giới thiệu và các dịch vụ 3.5 Vận chuyển hướng kết nối:
lớp vận chuyển TCP
3.2 Dồn kênh và phân kênh 3.5.1 Kết nối TCP
(multiplexing and 3.5.2 Cấu trúc của segment
demultiplexing) 3.5.3 Ước lượng thời gian khứ
hồi và Timeout
3.3 Vận chuyển không hướng
3.5.4 Truyền dữ liệu tin cậy
nối: UDP
3.5.5 Điều khiển lưu lượng
3.4 Các nguyên tắc của việc 3.5.6 Quản lý kết nối
truyền dữ liệu tin cậy
3.6 Các nguyên tắc của điều khiển
tắc nghẽn
3.7 Điều khiển tắc nghẽn của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-99
3.7 Điều khiển tắc nghẽn của TCP: AIMD
Tăng theo phép cộng, giảm theo phép nhân (Additive Increase Multiplicative Decrease)
Các giải quyết (approach): sender tăng tốc độ gửi (window size), vừa thăm
dò (probing) dải thông sử dụng được, cho đến khi xảy ra mất gói tin (nhằm
sử dụng hết dải thông khả dụng)
AI (Additive Increase): tăng cwnd thêm 1 MSS (Maximum Segment Size) sau
mỗi khoảng thời gian RTT cho đến khi phát hiện sự mất gói tin
MD (Multiplicative Decrease: giảm cwnd xuống còn một nửa sau sự mất gói tin
AIMD có hành vi
dạng răng cưa:
Thăm dò (probing)
Dải thông
time
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-100
3.7 Điều khiển tắc nghẽn của TCP: chi tiết
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-101
… 3.7 Điều khiển tắc nghẽn của TCP
Khởi động chậm của TCP (TCP Slow Start - SS)
Host A Host B
Khi kết nối bắt đầu, tăng tốc độ
truyền theo kiểu hàm mũ cho đến
khi có sự kiện mất gói tin đầu tiên:
Đầu tiên cwnd = 1 MSS (1 segment)
RTT
Gấp đôi cwnd sau mỗi RTT
(Khi có sự mất gói tin thì) kết thúc
việc tăng cwnd theo mỗi ACK nhận
được.
Chuyển sang thực hiện tránh tắc
nghẽn - CA (Congestion Avoidance)
Tóm tắt: Tốc độ ban đầu là thấp,
nhưng tăng nhanh theo hàm mũ (cơ
số 2)
time
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-102
… 3.7 Điều khiển tắc nghẽn của TCP
Việc phát hiện và phản ứng với mất gói tin của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-103
… 3.7 Điều khiển tắc nghẽn của TCP
Việc chuyển từ SS sang CA của TCP
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-105
… 3.7 Điều khiển tắc nghẽn của TCP
Thông lượng (throughput) TCP
W/2
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-106
… 3.7 Điều khiển tắc nghẽn của TCP
Tương lai của TCP: TCP hoạt động trên các “ống” dài và to
(TCP Futures: TCP over “long, fat pipes”)
1.22 . MSS
TCP throughput =
RTT L
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-107
… 3.7 Điều khiển tắc nghẽn của TCP
Tính công bằng của TCP (TCP Faireness)
Mục tiêu của tính công bằng: Nếu K phiên (session) TCP
chia sẻ cùng một đường truyền cổ chai (bottleneck link)
có bandwidth là R, mỗi phiên cần có tốc độ truyền trung
bình là R/K
TCP connection 1
bottleneck
router
capacity R
TCP connection 2
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-108
… 3.7 Điều khiển tắc nghẽn của TCP
Tại sao TCP là công bằng? (Why is TCP Faire?)
Connection 1 throughput R
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-109
… 3.7 Điều khiển tắc nghẽn của TCP
Tính công bằng (bổ sung)
Tính công bằng và UDP Tính công bằng, các kết nối
(Fairness and UDP) TCP song song
Các ứng dụng multimedia (Fairness, parallel TCP connections)
thường không dùng TCP Ứng dụng có thể mở nhiều kết nối
Vì không muốn tốc độ song song giữa 2 hosts
truyền bị bóp nghẹt do điều
khiển tắc nghẽn Web browsers thường làm việc
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-110
Chương 3: Tóm tắt
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt 3-111
Q&A
Mạng máy tính, Chương 3 Lớp giao vận, HK2 2018-2019. PGS. TS. Nguyễn Đình Việt Ch3-112