Tầng giao vận 1
Nhắc ại về kiến trúc phân tầng Appication (HTTP, Mai, ) Transport (UDP, TCP ) Network (IP, ICMP ) Dataink (Ethernet, ADSL ) Physica (bits ) Hỗ trợ các ứng dụng trên mạng Truyền dữ iệu giữa các ứng dụng Chọn đường và chuyển tiếp gói tin giữa các máy, các mạng Hỗ trợ việc truyền thông cho các thành phần kế tiếp trên cùng 1 mạng Truyền và nhận dòng bit trên đường truyền vật ý 2
Tổng quan về tầng giao vận (1) Cung cấp phương tiện truyền giữa các ứng dụng cuối Bên gửi: Nhận dữ iệu từ ứng dụng Đặt dữ iệu vào các đoạn tin và chuyển cho tầng mạng Nếu dữ iệu quá ớn, nó sẽ được chia àm nhiều phần và đặt vào nhiều đoạn tin khác nhau Bên nhận: Nhận các đoạn tin từ tầng mạng Tập hợp dữ iệu và chuyển ên cho ứng dụng appication transport network data ink physica appication transport network data ink physica 3
Tổng quan về tầng giao vận (2) Được cài đặt trên các hệ thống cuối Không cài đặt trên các routers, switches Hai dạng dịch vụ giao vận Tin cậy, hướng iên kết, e.g TCP Không tin cậy, không iên kết, e.g. UDP appication transport network data ink physica network data ink physica network data ink physica network data ink physica network data ink physica network data ink physica network data ink physica appication transport network data ink physica 4
Tại sao ại cần 2 oại dịch vụ? Các yêu cầu đến từ tầng ứng dụng à đa dạng Các ứng dụng cần dịch vụ với 100% độ tin cậy như mai, web Sử dụng dịch vụ của TCP Các ứng dụng cần chuyển dữ iệu nhanh, có khả năng chịu ỗi, e.g. VoIP, Video Streaming Sử dụng dịch vụ của UDP 5
Ứng dụng và dịch vụ giao vận Ứng dụng e-mai remote termina access Web fie transfer streaming mutimedia Internet teephony Giao thức ứng dụng SMTP Tenet HTTP FTP giao thức riêng (e.g. ReaNetworks) giao thức riêng (e.g., Vonage,Diapad) Giao thức giao vận TCP TCP TCP TCP TCP or UDP thường à UDP 6
Các chức năng chung Dồn kênh/phân kênh Mã kiểm soát ỗi 7
Dồn kênh/phân kênh - Mux/Demux Giao thức ứng dụng HTTP FTP Chat HTTP FTP Chat Mutipexing Giao thức giao vận Demutipexing Giao thức tầng mạng 8
Mux/Demux hoạt động ntn? Tại tầng mạng, gói tin IP được định danh bởi địa chỉ IP Để xác định máy trạm Làm thế nào để phân biệt các ứng dụng trên cùng một máy? Sử dụng số hiệu cổng (16 bits) Mỗi tiến trình ứng dụng được gán 1 cổng Socket: Một cặp địa chỉ IP và số hiệu cổng 32 bits source port # dest port # other header fieds appication data (message) TCP/UDP segment format 9
Checksum Phát hiện ỗi bit trong các đoạn tin/gói tin Nguyên ý giống như checksum (16 bits) của giao thức IP Ví dụ: 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 Tổng Checksum 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 10
UDP User Datagram Protoco Tổng quan Khuôn dạng gói tin 11
Giao thức dạng Best effort Vì sao cần UDP? Không cần thiết ập iên kết (tăng độ trễ) Đơn giản: Không cần ưu ại trạng thái iên kết ở bên gửi và bên nhận Phần đầu đoạn tin nhỏ Không có quản ý tắc nghẽn: UDP cứ gửi dữ iệu nhanh nhất, nhiều nhất nếu có thể UDP có những chức năng cơ bản gì? Dồn kênh/phân kênh Phát hiện ỗi bit bằng checksum 12
Khuôn dạng bức tin (datagram) UDP sử dụng đơn vị dữ iệu gọi à datagram (bức tin) Độ dài toàn bộ bức tin tính theo byte 32 bits source port # dest port # ength Appication data (message) checksum Khuôn dạng đơn vị dữ iệu của UDP 13
Các vấn đề của UDP Không có kiểm soát tắc nghẽn Làm Internet bị quá tải Không bảo đảm được độ tin cậy Các ứng dụng phải cài đặt cơ chế tự kiểm soát độ tin cậy Việc phát triển ứng dụng sẽ phức tạp hơn 14
Khái niệm về truyền thông tin cậy 15
Kênh có ỗi bit, không bị mất tin Phát hiện ỗi? Checksum Làm thế nào để báo cho bên gửi? ACK (acknowedgements): NAK (negative acknowedgements): te sender that pkt has error Phản ứng của bên gửi? Truyền ại nếu à NAK 16
Hoạt động Sender Receiver send pkt0 pkt0 rcv ACK send pkt1 pkt1 ACK pkt1 is OK NAK pkt1 is corrupted rcv NAK resend pkt1 pkt1 Time Time 17
Lỗi ACK/NAK Cần truyền ại Xử ý việc ặp gói tin ntn? Thêm Seq.# send pkt0 rcv ACK send pkt1 Sender pkt0 pkt1 ACK ACK Receiver pkt0 is OK pkt1 is OK rcv sth corrupted! resend pkt1 Time pkt1 rcv pkt1 dupicate, Time discard it 18
Giải pháp không dùng NAK Sender Receiver send pkt0 pkt0 rcv ACK0 send pkt1 pkt1 ACK0 pkt0 is OK rcv ACK1 send pkt0 pkt0 ACK1 pkt1 is OK ACK1 pkt0 is corrupted rcv ACK1 resend pkt0 pkt0 Time Time 19
Kênh có ỗi bit và mất gói tin Dữ iệu và ACK có thể bị mất Nếu không nhận được ACK? Truyền ại như thế nào? Timeout! Thời gian chờ à bao âu? Ít nhất à 1 RTT (Round Trip Time) Mỗi gói tin gửi đi cần 1 timer Nếu gói tin vẫn đến đích và ACK bị mất? Dùng số hiệu gói tin 20
Minh họa 21
Minh họa 22
Truyền theo kiểu pipeine 1 data pkt Data pkts Sender Receiver Sender Receiver ACK ACKs 23
So sánh hiệu quả sender stop-and-wait sender Pipeine receiver 0 L / R L / R RTT RTT RTT + L / R RTT + L / R time L: Size of data pkt R: Link bandwidth RTT: Round trip time Performance = L / R time RTT + L / R time Performance = 3 * L / R time RTT + L / R 24
TCP Transmission Contro Protoco Cấu trúc đoạn tin TCP Quản ý iên kết Kiểm soát uồng Kiểm soát tắc nghẽn 25
Tổng quan về TCP Giao thức hướng iên kết Bắt tay ba bước Giao thức truyền dữ iệu theo dòng byte, tin cậy Sử dụng vùng đệm Truyền theo kiểu pipeine Tăng hiệu quả Kiểm soát uồng Bên gửi không àm quá tải bên nhận (thực tế: quá tải) Kiểm soát tắc nghẽn Việc truyền dữ iệu không nên àm tắc nghẽn mạng (thực tế: uôn có tẵc nghẽn) 26
Khuôn dạng đoạn tin - TCP segment URG: Dữ iệu khẩn ACK: ACK # PSH: Chuyển dữ iệu ngay RST, SYN, FIN: Ký hiệu cho các gói tin đặc biệt 32 bits source port # dest port # head en sequence number acknowedgement number not used U A P R S F checksum Receive window appication data (variabe ength) Urg data pnter Options (variabe ength) - Dùng để truyền dữ iệu tin cậy - Tính theo bytes - Số ượng bytes có thế nhận - Điều khiển uồng 27
TCP cung cấp dịch vụ tin cậy ntn? Kiểm soát dữ iệu đã được nhận chưa: Seq. # Ack Chu trình àm việc của TCP: Thiết ập iên kết Bắt tay ba bước Truyền/nhận dữ iệu Đóng iên kết 28
Cơ chế báo nhận trong TCP Seq. #: Số hiệu của byte đầu tiên của đoạn tin trong dòng dữ iệu ACK: Số hiệu byte đầu tiên mong muốn nhận từ đối tác Ngầm xác nhận đã nhận tốt các byte trước đó. User types C host ACKs receipt of echoed C Host A Host B Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 simpe tenet scenario host ACKs receipt of C, echoes back C time 29
Thiết ập iên kết TCP : Giao thức bắt tay 3 bước A SYN ACK ACK/SYN B Bước 1: A gửi SYN cho B chỉ ra giá trị khởi tạo seq # của A không có dữ iệu Bước 2: B nhận SYN, trả ời bằng SYNACK B khởi tạo vùng đệm chỉ ra giá trị khởi tạo seq. # của B Bước 3: A nhận SYNACK, trả ời ACK, có thể kèm theo dữ iệu 30
Ví dụ về việc đóng iên kết Bước 1: Gửi FIN cho B Bước 2: B nhận được FIN, trả ời ACK, đồng thời đóng iên kết và gửi FIN. Bước 3: A nhận FIN, trả ời ACK, vào trạng thái chờ. Bước 4: B nhận ACK. đóng iên kết. Lưu ý: Cả hai bên đều có thể chủ động đóng iên kết cosing timed wait cosed A FIN ACK FIN ACK B cosing cosed 31
Chu trình sống của TCP (đơn giản hóa) Wait 30 sec. CLOSED Cient appication Initiates a TCP connection Send SYN Receive ACK Send nothing CLOSED Server appication Creates a isten socket TIME_WAIT SYN_SENT LAST_ACK LISTEN Receive FIN Send ACK Receive SYN/ACK Send ACK Send FIN Receive SYN Send SYN/ACK FIN_WAIT_2 ESTABLISHED CLOSE_WAIT SYN_RCVD Receive ACK Send nothing FIN_WAIT_1 Send FIN Receive FIN Send ACK ESTABLISHED Receive ACK Send nothing Cient appication Initiates cose connection 32
Kiểm soát uồng 33
Kiểm soát uồng (1) A B A B Chậm Quá tải 34
Kiểm soát uồng (2) Điều khiển ượng dữ iệu được gửi đi Bảo đảm rằng hiệu quả à tốt Không àm quá tải các bên Các bên sẽ có cửa sổ kiểm soát Rwnd: Cửa sổ nhận CWnd: Cửa sổ kiểm soát tắc nghẽn Lượng dữ iệu gửi đi phải nhỏ hơn min(rwnd, Cwnd) 35
Kiểm soát uồng trong TCP Kích thước vùng đệm trống = Rwnd = RcvBuffer-[LastByteRcvd - LastByteRead] 36
Trao đổi thông tin về Rwnd A data ACK (rwnd = 100) data B Bên nhận sẽ báo cho bên gửi biết Rwnd trong các đoạn tin Bên gửi đặt kích thước cửa sổ gửi theo Rwnd 37
Điều khiển tắc nghẽn trong TCP 38
Tổng quan về tắc nghẽn Khi nào tắc nghẽn xảy ra? Quá nhiều cặp gửi-nhận trên mạng Truyền quá nhiều àm cho mạng quá tải Hậu quả của việc nghẽn mạng Mất gói tin Thông ượng giảm, độ trễ tăng Tình trạng của mạng sẽ trở nên tồi tệ hơn. Congestion occur 39
TCP Kiểm soát tắc nghẽn Chiến ược cơ bản Trạm đầu cuối gửi các gói tin TCP vào trong mạng và các trạm này điều chỉnh theo tình trạng mạng quan sát được. ACK được sử dùng để điều hòa tốc độ gửi dữ iệu của các trạm đầu cuối TCP Computer Networks: TCP Congestion Contro 40
AIMD (Additive Increase / Mutipicative Decrease) Mỗi trạm nguồn TCP quản ý một biến CongestionWindow (cwnd) Mỗi trạm nhận TCP quản ý một biến ReceiveWindow à kích thước vùng đệm của trạm nhận. MaxWindow :: min (CongestionWindow, ReceiveWindow) EffectiveWindow = MaxWindow (LastByteSent -LastByteAcked) cwnd được thiết ập dựa vào quan sát về mức độ tắc nghẽn: Dấu hiệu không tường minh: ượng gói rớt. Dấu hiệu tường minh: gói điều khiển thông báo tình trạng tắc nghẽn Computer Networks: TCP Congestion Contro 41
Additive Increase (AI) Additive Increase à phản ứng tăng tốc độ truyền theo cấp số cộng (trong giai đoạn chống tắc nghẽn). Thông thường additive increase được định nghĩa bằng tham số α (mặc định α = 1). Mỗi RTT tăng cửa sổ tắc nghẽn ân một ượng cố định Tăng cửa sổ tắc nghẽn thêm tương đương 1 gói tin. Computer Networks: TCP Congestion Contro 42
Source Destination Tăng thêm 1 gói mỗi RTT Additive Increase Computer Networks: TCP Congestion Contro 43
Mutipicative Decrease (MD) * Giả thiết cơ bản: * Mỗi gói bị mất hoặc timeout xảy ra tại bên gửi à do tắc nghẽn tại môt router. Mutipicative decrease được định nghiã bằng tham số β (mặc định β = 0.5) Mutipicative Decrease Với mỗi ần timeout TCP giảm kích thước cửa sổ tắc nghẽn cwnd đi một hệ số nhân β. cwnd không nhỏ hơn kích thước 1 gói. Computer Networks: TCP Congestion Contro 44
AIMD (Additive Increase / Mutipicative Decrease) It has been shown that AIMD is a necessary condition for TCP congestion contro to be stabe. Because the simpe CC mechanism invoves timeouts that cause retransmissions, it is important that hosts have an accurate timeout mechanism. Timeouts set as a function of average RTT and standard deviation of RTT. However, TCP hosts ony sampe round-trip time once per RTT using coarse-grained cock. Computer Networks: TCP Congestion Contro 45
70 60 50 40 30 20 10 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 Time (seconds) 10.0 Kiểu răng cưa của TCP Computer Networks: TCP Congestion Contro 46
Cơ chế Sow Start (1) Tăng tuyến tính có thể mất nhiều thời gian để kết nối TCP đạt tốc độ. Kỹ thuật sow start được giới thiệu trong TCP Tahoe Ý tưởng cơ bản Đặt cwnd bằng 1 MSS (Maximum segment size) Tăng cwnd ên 1 mỗi khi nhận được ACK Cửa sổ được tăng gấp đôi sau mỗi RTT Bắt đầu thấp, nhưng tăng theo hàm mũ Tăng cho đến một ngưỡng: ssthresh Sau đó, TCP chuyển sang trạng thái tránh tắc nghẽn 47
Source Destination Sow Start Add one packet per ACK Figure 6.10 Sow Start Computer Networks: TCP Congestion Contro 48
Tránh tắc nghẽn - Congestion avoidance ý tưởng cơ bản Tăng cwnd theo cấp số cộng sau khi nó đạt tới ssthresh Khi bên gửi nhận được ACK Tăng cwnd thêm 1 MSS RTT Host A Host B one segment two segments three segments time 49
ssthresh Computer Networks: TCP Congestion Contro 50
Xử ý tắc nghẽn TCP Tahoe (1) Giảm tốc độ gửi Phát hiện tắc nghẽn? Nếu như phải truyền ại Có thể suy ra à mạng tắc nghẽn Khi nào thì phải truyền ại? Timeout! Cùng một gói tin số hiệu gói tin trong ACK 51
Xử ý tắc nghẽn TCP Tahoe khi timeout (2) Khi có timeout của bên gửi TCP đặt ngưỡng xuống còn một nửa giá trị hiện tại của cwnd TCP đặt cwnd về 1 MSS TCP chuyển về sow start 52
Fast Retransmit Timeout được tính căn cứ RTT, RTT được đo 1 ần. Giá trị RTT thay đổi à timeout không chính xác. Fast retransmit được thêm vào TCP Tahoe để giải quyết. Coi việc nhận được dupicate ACKs à biểu hiện mất gói tin Fast Retransmit Khi nhận được 3 ACK trùng nhau, TCP gửi ại các gói bị mất. Computer Networks: TCP Congestion Contro 53
Sender Packet 1 Packet 2 Packet 3 Packet 4 Receiver ACK 1 ACK 2 Packet 5 Packet 6 Retransmit packet 3 ACK 2 ACK 2 ACK 2 ACK 6 Fast Retransmit Based on three dupicate ACKs Fast Retransmit Computer Networks: TCP Congestion Contro 54
Fast Retransmit Nếu nhận được 3 ACK giống nhau TCP đặt ngưỡng xuống còn một nửa giá trị hiện tại của cwnd TCP Reno: đặt cwnd về giá trị hiện tại của ngưỡng cũ, congestion avoidance TCP Tahoe: đặt cwnd =1, sowstart 55
70 60 50 40 30 20 10 1.0 2.0 3.0 4.0 5.0 6.0 7.0 Time (seconds) Figure 6.13 TCP Fast Retransmit Trace Computer Networks: TCP Congestion Contro 56
Fast Recovery Fast recovery sử dụng trong TCP Reno. Ý tưởng chính: fast retransmit khi nhận được ACKs giống nhau Quay ại với giai đoạn congestion avoidance (TCP Tahoe quay ại sowstart) cho đến khi nhận được ACK cho tất cả các gói đã gửi Nếu timout: quay về sowstart Fast Recovery Sau Fast Retransmit, giảm cwnd đi ½ và bắt đầu tăng cửa sổ tuyến tính Computer Networks: TCP Congestion Contro 57
Kiểm soát tắc nghẽn TCP Reno cwnd 22 20 18 16 Threshod=16 Timeout Threshod is set to haf of cwnd (20) And sow start starts 14 12 10 8 6 SS AI Threshod=10 SS AI 3 ACKs Threshod is set to haf of cwnd (12) And additive increase starts Threshod=6 4 AI 2 Step 58
TCP Tahoe vs Reno TCP Tahoe: Sow start, congestion avoidance Timeout: Sowstart. Fast retransmit nếu nhận được 3 ACK trùng nhau: giảm cwnd =1, TCP Reno: bắt đầu sow start mới với ssthresod bằng ½ cwnd cũ. Sow start Congestion avoidance Timeout: sow start Fast Recovery nếu nhận được 3 ACK trùng nhau: giảm cwnd đi ½ Đặt ssthresod =cwnd mới à bỏ qua sow start Thực hiện Congestion Computer avoidance. Networks: TCP Congestion Contro 59
Nhiều biến thể TCP khác TCP New Reno Sau ACK trùng ặp, gửi thêm 1 gói ở cuối cửa sổ gửi. Điều chỉnh timeout Gây nhiều gói chưa được ACK trong chuỗi gửi Cho tốc độ gửi cao hơn TCP Tahoe và Reno TCP SACK requires sender and receiver both to support TCP SACK possibe state machine is compex. TCP Vegas adjusts window size based on difference between expected and actua RTT. TCP Cubic Computer Networks: TCP Congestion Contro 60
Bài tập Giả sử cần truyền 1 fie Kích thước O =100KB trên kết nối TCP S à kích thước mỗi gói TCP, S = 536 byte RTT = 100 ms. Giả sử cửa sổ tắc nghẽn của TCP à cố định với kích thước W. Hỏi thời gian chờ đợi ít nhất để truyền hết fie à bao nhiêu? Nếu tốc độ đường truyền à R = 10 Mbit/s; R= 100 Mbits/s. 61
Bài tập Giả sử cần truyền 1 fie Kích thước O =100KB trên kết nối TCP S à kích thước mỗi gói TCP, S = 536 byte RTT = 100 ms. Giả sử cửa sổ tắc nghẽn của TCP hoạt đông theo cơ chế sow-start, chưa tính đến giai đoạn congestion avoidance. Cửa sổ đạt đến giá trị bao nhiêu thì truyền hết fie. Hỏi thời gian chờ đợi ít nhất để truyền hết fie à bao nhiêu? Nếu R = 10 Mbit/s; R= 100 Mbits/s. 62
Bài tập 3 người 1 nhóm 1. Trình bày tìm hiểu về cơ chế kiểm soát tắc nghẽn trong các phiên bản TCP New Reno, TCP SACK, TCP Vegas, TCP Cubic. So sánh với TCP Tahoe và TCP Reno. 2. Trình bày tìm hiểu về IPv6: cơ chế đánh địa chỉ, cơ chế chuyển tiếp. 3. Tìm hiểu về mạng thông tin quang không dây (FSO). 4. TÌm hiểu mạng truy nhập sử dụng công nghệ GPON. 5. Tìm hiểu về SDN, thiết ập thử nghiệm mạng SDN sử dụng Mininet và controer Opendayight. 6. Tìm hiểu về SDN, thiết ập thử nghiệm mạng SDN sử dụng Mininet và controer NOX hoặc controer khác. Báo cáo 15/4, nộp báo cáo + trình bày 15 phút/ nhóm 63