Bài giảng Nhập môn mạng máy tính - Chương 3: Tầng Transport
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
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn mạng máy tính - Chương 3: Tầng Transport", để 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 Nhập môn mạng máy tính - Chương 3: Tầng Transport
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) ... 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_nhap_mon_mang_may_tinh_chuong_3_tang_transport.pdf