Di ều khiển tác nghẽn được sử dụng để đảm bảo mạng là một khối thốngnhất không thể được yêu cầu truyền quá số lượng dữ liệu hơn là nó có khả năng xử lý : ■ Truy cậ p m ạng network access
Trang 2Điều khiển tắc nghẽn T C P Trang 2
NỘI DƯNG
M Ở Đ Ầ U 4
CH Ư ƠN G 1 : G IÓ I T H IỆ U C H U N G 6
1.1 Điều khiển lưu lượng số liệu trong Internet 6
1.1.1 Giới thiệu chung về m ạng In te r n e t 6
1-1.2 Điều khiển lưu lượng và tắc nghẽn số liệu trên mạng TTMT 10
1 1.3 Điểu khiển lưu lượng và tắc nghẽn số liệu T C P trong m ạng In tern et.14 Cơ ch ế cửa sổ đ ộng 16
Cơ c h ế phát lại thích n g h i 16
C ơ c h ế điều khiển tắc nghẽn dữ liệu 17
1.2 Phân tích đánh giá hiộu suất 18
1.2.1 Sự cần thiết 18
1.2.2 C ác phương p h á p 18
1.2 Mô phỏng máy tính 19
Hệ thống mô phỏng N S 19
CHƯƠNG 2 : C Á C T H U Ậ T T O Á N Đ IỀ U K H IE N t ắ c n g h ẽ n T C P 2 2 2.1 Một số định nghĩa và khái niộm quan trọng 23
2.2 Các thuật toán điếu khiển tắc nghẽn 24
2.2.1 Các thuật toán “ K hởi động ch ậm ” và “Tránh tắc n ghẽn” 25
“Khởi động ch ậm ” 25
“Tránh tắc nghẽn” 2 9 Kết hợp “Khởi động ch ậm ” và “Tránh tắc nghẽn” 32
Trang 32 2 2 C ác thuật toán “Phát lại nhanh” và “ Hồi phục nhanh” 38
“ Phát lại nhanh” 38
“H ồi phục nhanh” 4 0 K ết hợp “ Phát lại nhanh” và “ H ồi phục nhanh” 41
CH Ư Ơ N G 3 : H IỆ U SU Ấ T C Á C T H U Ậ T T O Á N Đ lỀ ư K H IE N t ắ c n g h ẽ n S Ố L IỆ U T C P T A H O E , R E N O , N E W -R E N O V À S A C K 43
3.1 Điều khiển tắc nghẽn số liệu T C P 44
3 1 1 C ác phiên bản điều khiển tắc nghẽn số liệu T C P 4 4 3 1 2 T ah o e T C P 4 6 3 1 3 R en o T C P 4 9 3 1 4 N ew -R eno T C P 5 2 3 1 5 SA C K T C P 55
3.2 Mô phỏng 60
3 2 1 K ịch bản m ô p h ỏ n g 6 0 3 2 2 M ột gói dữ liệu bị m ấ t 61
3 2 3 Ba gói dữ liệu bị m ấ t 65
3.3 Kết quả mô phỏng 69
K Ế T L U Ậ N 73
Bảng một số từ viết tắt 78
Tài liệu tham khảo 80
Phụ lụ c 82
Nguyễn Hoàng Linh
Trang 4Điều khiển tắc nghẽn T C P Trang 4
R en o và SA C K TCP.
Bài luận văn được ch ia thành 3 chương
Chương I giới thiệu tóm tắt những nội dung chính củ a luận văn, những vấn
đề mà chúng ta sẽ trình bày ch i tiết ở c á c chương sau Chương này giới thiệu tổng quan về Internet, về cấu trúc m ạng Internet và bộ g iao thức T C P /IP cũng như về điều khiển lau iượng số liệu trên Internet Q ua đó nêu lên sự cần thiết việc so sánh, đánh giá hiệu suất củ a cá c thuật toán điều khiển tắc nghẽn số liệu
TC P thông qua m ột hệ chương trình m ô phỏng m áy tính
Trang 5Điều khiển tắc nghẽn T C P Trang 5
Chương II trình bày chi tiết nguyên tắc hoạt động của bốn thuật toán điều khiển tắc nghẽn số liệu TC P Cụ thể là các thuật toán “K h ở i độn g ch ậ m”,
“Tránh tắc nghẽn ”, “P hắt lạ i nhanh ” và “Phục h ồ i nhanh
Chương III giới thiệu bốn thuật toán điều kh iển tắc nghẽn s ố liệu TCP tổng
th ể T ahoe-, R eno-, N ew -R eno-, và SA C K -T C P và cá c nguyên tắc hoạt động của chúng Bốn thuật toán tổng thể này được mô phỏng thông qua H ệ chương trình M ô p h ỏn g N S để so sánh và đánh giá hiệu suất của chúng
Cuối cùng là phần K ết luận tóm tắt kết quả mà luận văn đã đạt được
Nguyễn Hoàng Linh
Trang 6Đ iều khiển tắc nghẽn T C P Trang 6
CHUƠNG1
G IỚ I T H IÊ U C H U N G
1.1 Điẻu khiển lưu lượng số liệu trong Internet
1.1.1 Giới thiêu chung vể mạng Internet
Từ một dự án nghiên cứu và phát triển m ạng T T M T (m ạng T T M T ) dựa trên côn g nghệ chuyển m ạch gói giữa những năm 6 0 củ a B ộ quốc phòng M ỹ, ngày nay Internet đã trở thành m ạng củ a c á c m ạng T T M T toàn cầu, được kết nối với nhau dựa trên cơ sở bộ giao thức trao đổi dừ liệu T C P /IP (Transm ission Control Protocol / Internet P ro to co l), đáp ứng ngàv càn g phong phú cá c dịch vụ thông tin liên lạc của xã hội, tiến tới trở thành hạ tầng thông tin liên lạc duy nhất hiện nay trên th ế giới
Sau đây là một số m ố c lịch sử phát triển quan trọng củ a Internet :
■ 1969 : Đưa vào sử dụng thử nghiệm m ạng T T M T c ó tên A P A R N E T trên cơ
sở công nghệ chuyển m ạch gói
■ 1977 : Thử nghiệm thành cô n g việc kết nối ba m ạng T T M T của ba trường đại học lớn ở Mỹ thông qua giao thức TC P/IP
■ 1986 : V iệ c đưa vào sử dụng m ạng N S F N E T - m ạng xương sống Internet tốc
độ cao (45 M bit/s) - phục vụ ch o việc nghiên cứu và giảng dạy đã có ảnh hưởng tích cực đến sự phát triển mạnh m ẽ củ a Internet trong cộng đồng
Trang 7Điều khiển tắc nghẽn T C P Trang 7
■ 1990-1991 : Internet được thương mại hoá với sự ra đời của tổ chức khuyến khích phát triển và sử dụng Internet “ Internet S o ciety ” và bắt đầu thời kỳ phát triển bùng nổ của Internet Từ đây Internet trở thành mạng T T M T toàncầu
* 1997 : Đ ã có hơn 1 0 0 0 0 0 mạng TTMT được kết nối trong Internet với hơn
15 triệu m áy chủ và 5 0 triệu người sử dụng
Những nhân tô' chính thúc đẩy sự phát triển của Internet (thực chất là việc
m ở rộng m ạng thông qua cá c kết nối cá c máy tính và c á c m ạng máy tính với nhau trên c ơ sở bộ giao thức trao đổi dữ liệu T C P / IP) :
■ Với việc sử dụng bộ giao thức T C P/IP trong hệ điều hành U N IX để thực hiện trao đổi dữ liệu giữa các tiến trình trên m ột máy và giữa các máy được kết nối trong mạng U N IX là hệ điều hành được sử dụng rông rãi từ năm
1983 trong các trường đại học và c á c viện nghiên cứu ở M ỹ
■ Kỹ thuật vi xử lý và cá c m áy tính cá c nhân PC ra đời vào những năm 1980 ngày càng được hoàn thiện và nâng cao vé công suất tính toán và tiện lợi cho người sử dụng đã rút ngắn khoảng cách giữa người dùng và máy tính, máy tính ngày càng thâm nhập sâu vào cá c lĩnh vực của đời sống xã hội và thúc đẩy nhu cầu kết nối máy tính và mạng máy tính
■ N FSN E T , mạng xương sống Internet ra đời năm 1986 ở M ỹ với tốc độ truy nhập đường trục là 4 5 M bit/s, đã nâng cao c ơ bản về giải thông và chất lượng truy cập mạng, đáp ứng nhu cầu trao đổi thông tin trong cộng đồng
%
neười sử dụng
Internet phát triển với tốc độ nhanh chóng như vậy do bởi kiến trúc đơn giản
và linh hoạt của mạng Tương tự như mô hình kết nối m ở c á c hệ thống tính toán ISO /O SI B ộ giao thức trao đổi dữ liệu Internet bao gồm hai phần chính: các giao thức tạo thành hệ thống truyền dẫn và các giao thức hỗ trợ ứng dụng
Nguyễn Hoàng Linh
Trang 8Điều khiển tắc nghẽn TCP Trang 8
Token
Physical Coax, Twisted Pairs, Fiber Optic, WMess
F T P - F ile Transfer Protocol
H TTP - H yperText Transfer Protocol
SM TP - Simple M ail Transfer Protocol
D N S - Dom ain Name System TCP - Transm ision Control Protocol
U D P - U ser Datagram Protocol
SL IP - Serial Line Internet Protocol ppp - Point to Point protocol
Hình 1.1 Bộ giao thức trên mạng Internet
K hác với mô hình IO S/O SI, tầng liên mạng Internet sử dụng giao thức kết nối mạng “không liên kết” (connectionless) IP (Internet Protocol) tạo thành hạt nhân hoạt động của hệ thống truyền dẫn Internet Cùng với cá c thuật toán định tuyến tầng liên mạng IP cho phép kết nối m ột cách linh hoạt c á c loại mạng vật
lý khác nhau như : Ethenet, Token R ing, X 2 5 dựa trên địa chỉ IP (bao gồm địa chỉ phân m ạng IP và địa chỉ của thiết bị cuối thuộc phân m ạng đó) G iao thức lièn mạng IP bao gồm các chức năng chính sau :
■ Đ ịnh nghĩa cấu trúc gói dữ liệu là đơn vị cơ sở của dữ liệu được trao đổi trên Internet
■ Đ ịnh nghĩa phương thức đánh địa chỉ IP
Trang 9Điều khiển tắc nghẽn T C P Trang 9
■ Truyền dữ liệu giữa mức vận chuyển và mức truy nhập mạng (A ccess Network)
■ Đ ịnh tuyến đường đi của các gói dữ liệu trong mạng
■ Thực hiện việc phân mảnh (fragm entation) và hợp nhất (reassem bly) các gói dữ liệu và nhúng / tách chúng trong cá c gói dữ liệu ở mức liên kết
G iao thức trao đổi dữ liệu “có liên kết” (connection - oriented) T C P (T ransm ision Control Protocol) được sử dụng ở tầng vận chuyển (transport layer) để đảm bảo tin cậy và chính xác việc trao đổi dữ liệu giữa hai thực thể cuối trong m ạng dựa trên kiến trúc kết nối “không liên k ết” ở tầng liên mạng IP
G iao thức T C P phải quản lý đúng số tuần tự tính theo byte của dòng dữ liệu, phải tối ưu hoá khả năng giải thông của mạng bầng cách giám sát và điều khiển lưu lượng của dữ liệu từ thực thể gửi tới thực thể nhận Cụ thể T C P phải làm những công việc sau :
■ Đ ối th oại k h i thu p h át : M ỗi khi gửi m ột gói dữ liệu, bên nhận phải thông báo nhận đúng theo một khoảng thời gian nhất định Nếu không, gói dữ liệu được co i là nhận sai và được phát lại
■ K iểm tra d ữ liệu thu, p h ất : Dữ liệu gửi được kiểm tra bằng m ột thuật toánqui định Byte kiểm tra (checksu m ) được gửi cùng với dữ liệu phát và được
so sánh với byte kiểm tra tính lại khi thu Trong trường hợp sai lệch có nghĩa
là có lỗi đã xảy ra trên đường truyền, thực thể nhận thông báo kết quả nhận cho thực thể gửi và yêu cầu phát lại
■ K iểm tra s ố tuần tự : Do các gói T C P được chuyển thành các gói IP và cácgói IP c ó thể đến đích không theo thứ tự phát (IP là giao thức không có kếtnối - con n ection less) nên thực thể T C P nhận phải lập lại trật tự các gói dữ liệu thu được và huỷ bỏ các gói dữ liệu trùng lặp khi cần và chuyển cá c gói
dữ liệu đó theo đúng trật tự phát cho cá c ứng dụng
■ Đ iều k h iển lưu lượng : M ỗi thực thể của kết nối T C P đều có một vùng đệm hạn chế T hự c thể T C P nhận chỉ cho phép thực thể phát gửi m ột lượng dữ
Nguyễn Hoàng Linh
Trang 10Điều khiển tắc nghẽn T C P Trang 10
liệu đủ với vùng đệm thu củ a mình Đ iều này ch o phép ngăn cản thực thể
T C P gửi phát nhanh, làm tràn vùng đệm củ a thực thể T C P nhận chậm
C ác giao thức hỗ trợ ứng dụng như truy cập từ xa (T eln et), truyền tệp (F T P ), dịch vụ W orld W ide W e b (H T T P ), thư điện tử (S M T P ), dịch vụ tên miền (D N S) không ch ỉ tích hợp c á c dịch vụ củ a c á c tầng chứ c năng như tầng phiên (sessio n ), tầng thể hiện (p resen tation ), và tầng ứng dụng (application) trong một thực thể thống nhất m à còn được cài đặt phổ biến như là những bộ phận cấu thành của c á c hệ điểu hành thông dụng như U N IX (củ a nhiều nhà cung cấp khác nhau), W ind ow s 9 X /N T , N ovell N etw are
Chi tiết về bộ g iao thức T C P /IP cũng như m ộ t số g iao thức điều khiển và nhất là giao thức T C P được trình bày chi tiết trong [L o i9 9 , S te94, Pos81 ]
1.1.2 Điều khiển lưu lượng và tắc nghẽn số liệu trên mạng TTMT
Như đă trình bày ở trên, m ạng T T M T đầu tiên trên th ế giới là mạng
A P A R N E T được thiết k ế và xây dựng trên c ơ sở cô n g nghệ chuyển mạch gói
Kỹ thuật chuyển m ạch gói ch o phép chuyển tiếp dữ liệu giữa cá c thiết bị cuối trôn cơ sở ch ia chúng thành c á c gói có độ dài thay đổi và chuyển dữ liệu qua
cá c đoạn đường khác nhau trong hệ thống truyền dẫn Đ ặ c trưng của công nghệ chuyển m ạch gói là :
■ Dữ liệu được chu yển tiếp trên c ơ sở c á c gói c ó độ dài khác nhau
* Phần tiêu đề (header) chứ a c á c dữ liệu điều khiển cần thiết ch o việc chọn đường và chuyển tiếp ch ín h x á c đến địa ch ỉ đích Hệ chuyển m ạch nhận toàn
bộ gói dữ liệu, lưu trữ tạm thời trong bộ nhớ đệm để phân tích dữ liệu điều khiển, chọn đường và thực hiện chuyển tiếp K ỹ thuật này còn được gọi là
"lưu và ch u y ển " (store-and -forw ard )
Trang 11Điều khiển tắc nghẽn T C P Trang 11
■ Công nghệ chu yển m ạch gói có cả hướng kết nối (connection oriented) trên
c ơ sở c á c kênh truyền dẫn ảo và không hướng kết nối (connection less) trên
c ơ sở cá c gói dữ liệu độc lập (datagram )
M ạng chuyển mạnh gói bắt nguồn từ hiệu quả củ a việc ch ia xẻ tài nguyên
m ạng cho những người sử dụng khác nhau M ột kết nối mạng có thể được sử dụng cho việc truyền dữ liệu giữa nhiều cặp nút m ạng nguổn/đích khác nhau
T ro n ? trường hợp này thì cả dung lượng vùng đệm củ a nút cũng như bộ vi xử lý trung tâm C PU đểu được chia x ẻ để điều tiết cá c thiết bị truyền thông của các cặp nút m ạng này Nói chính x á c là việc ch ia xẻ tài nguyên mạng là một đặc tính đặc trưng củ a m ạng chuyển m ạnh gói, và do đó nó có thể dẫn đến những vấn đề tắc nghẽn trên mạng
Chúng ta có thể hiểu vấn đề đơn giản như sau : tắc nghẽn xuất hiện khi mà tổng các yêu cầu vé tài nguyên vượt quá khả năng cho phép T a lấy một ví dụ : giao thông trên đường ca o tố c ở những g iờ ca o điểm C ó những thời điểm lưu lượng xe cộ vượt quá giới hạn m à đường cao tốc ch o phép gây hậu quả tắc nghẽn giao thông T ron g m ột số trường hợp thì việc nâng cấp và m ở rộng đường
xá không phải là m ột giải pháp kinh tế, bằng chứng là tại những giờ không cao điểm thì đường ca o tốc lại không được sử dụng hết cô n g suất G iải pháp này chỉ
có hiệu quả khi c á c g iờ cao điểm kéo dài suốt trong m ột ngày M ạng máy tính cũng giống như hệ thống đường cao tố c, v iệc lập chương trình tổng thể cho những nhu cầu được ch ia xẻ là không khả thi Chính vì lẽ đó m à chúng ta phải đương đầu với những vấn để tắc nghẽn trên m ạng và làm th ế nào để giảm đến mức tối thiểu tác động xấu này
Để làm được việc đó, m ạng được thiết k ế và xử lý theo cách khả năng xảy
ra tắc nghẽn thấp Như đã nó ở trên, m ục đích xây dựng m ột mạng không tắc nghẽn, phần nhiểu không thể thực hiện được Hiện tại chúng thường được xây
Nguyễn Hoàng Linh
Trang 12Điều khiển tắc nghẽn T C P Trang 12
dựng theo chi ều hướng thiết k ế cá c thủ tục ch o phép hê thống khôi phục từ một trạng thái đã bị tắc nghẽn
Hình ỉ.2 : Thông lượng mạng ỉầ một hàm của Tải đề xuất
Hình 1.2 m ô tả hành vi chung củ a th ôn g lư ợng m ạng, đó là tốc độ m à tại đó mạng chuyển giao những gói dữ liệu như là m ột hàm củ a tải đ ề xuất hoặc tốc
độ m à ở đó những gói dữ liệu (m ới và phát lạ i) được đưa vào mạng Trong điều kiện lý tưởng, m ạng phải chuyển giao tất cả c á c gói dữ liệu được yêu cầu chừng nào m à tải để xuất ở dưới mức khả năng ch o phép củ a m ạng K hi nào tải đề xuất vượt quá khả năng đó, m ạng phải tiếp tục chu yển giao cá c gói dữ liệu với đúng khả năng của nó Đ ường co n g được gán nhãn id e a l (lý tưởng) phản ánh khả năng này
Trong thực tế, nếu m ạng không được điều khiển, m ạng sẽ chuyển giao tất cả
tải đ ề xuất (ứng với trường hợp lý tưởng) chỉ ch o những gía trị của tải đ ề xuất
dưới m ột mức nhất định K hi tải đ ề xu ất tăng bên ngoài điểm này, thông lượng thực tế (m ặc dù vẫn còn tăng như là m ột hàm củ a tải đ ề xuất ) bắt đầu đi trệch khỏi đường “ lý tưởng“ T ron g khi tải đ ề xu ất tăng thêm nữa trong một mạng không có điều khiển, thông lượng bắt đầu giảm (xem Hình 1.2) Lưu lượng
m ạnc đề xuất càng lớn, nó sẽ chu yển g iao dữ liệu càn g nhỏ
Trang 13Điều khiển tắc nghẽn T C P Trang 13
Những thủ tục diều kh iển lưu lượng và tắc nghẽn s ố liệu được sử dụng để đảm bảo m ột nút mạng nguồn không làm tràn một nút m ạng đích với quá lun lượng mà nó cho phép (có thể xử lý) Sau đây là tóm tắt việc phân loại điều khiển lưu lượng và tắc nghẽn số liệu trong mạng T T M T nói chung :
Đ iéu khiển lưu lương
■ E n d -to-en d : đảm bảo m ột máy chủ (host) nguồn gửi cá c gói dữ liệu tới máy chủ đích với tốc độ không vượt quá tốc độ mà máy chủ đích nhận c á c gói dữ liệu đó
■ H op -by -h op : điểu khiển tốc độ lưu lượng dữ liệu được thực hiện giữa hai nút liên tiếp nhau trên đường từ m ột máy chủ nguồn tới m ột máy chủ đích
Di ều khiển tác nghẽn được sử dụng để đảm bảo mạng là một khối thốngnhất không thể được yêu cầu truyền quá số lượng dữ liệu hơn là nó có khả năng
xử lý :
■ Truy cậ p m ạng (network access) : C ác thủ tục này được sử dụng để điều khiển tổng lưu lượng mà m ột máy chủ có thể đưa vào mạng con (subnetw ork)
* Cấp p h át vùng đệm (bu ffer allocation) : Các thủ tục cấp phát vùng đệm được
sử dụng chuyên biệt cho việc bảo vệ dung lượng bộ đệm của một nút chuyển tiếp (có nghĩa ngăn ngừa trạng thái b ế tắc)
Thường thì cá c thủ tục điều khiển lưu lượng được sử dụng để trợ giúp cho các thủ tục điều khiển tắc nghẽn và ngược lại
Nguyễn Hoàng Linh
Trang 14Điều khiển tắc nghẽn TCP Trang 14
1.1.3 Điều khiển tắc nghẽn số liệu TCP trong mạng Internet
V iệc điều khiển lưu lượng và tắc nghẽn trên mạng Internet về nguyên tắc cũng giống như các mạng dựa trên cơ sở chuyển mạch gói như đã mô tả ở trên
T heo Hình 1.2, dung lượng của một hệ thống truyền dẫn là khả năng vận chuyển dữ liệu trên hệ thống truyền dẫn đó Trong trường hợp lý tưởng (không
có lỗi truyền dẫn), lưu lượng dữ liệu thực sự chuyển qua hệ thống truyền dẫn, còn gọi là thông lượng (throughput), tăng tuyến tính với lưu lượng dữ liệu chuyển vào hệ thống truyền dẫn, còn gọi là tải để suất (offered load) cho đến khi đạt được dung lượng cực đại của chính hệ thống truyền dẫn đó Hệ thống truyền dẫn ở đây chính là Hệ thống trung gian (Interm ediate Subsystem ) được
m ô tả trong trong Hình 1.3
Hình Ị 3 : Môi trường cơ ch ế cửa sổ hoạt động
Trên thực tế, do ảnh hưởng của cá c điều kiện môi trường, dẫn đến lỗi truyền dẫn và các biện pháp truyền lại để khắc phục lỗi Lưu lượng dữ liệu thực sự được chuyển qua hệ thống truyền dẫn, với cá c kỹ thuật điều khiển lưu lượng tối
ưu, chỉ có thể tiệm cận khả năng vận chuyển lý tưởng của hệ thống truyền dẫn (Hình 1.2) Nếu không có kỹ thuật điều khiển lưu lượng dữ liệu tốt, khi lưu lượng chuyển vào hệ thống truyền dẫn thì có thể xảy ra trường hợp lỗi truyền dẫn tăng (do tràn bộ đệm thu trong các hệ chuyển m ạch dẫn đến mất cả gói dữ liệu chẳng hạn), dữ liệu phải được phát lại nhanh, khiến lưu lượng dữ liệu thực
sự được chuyển qua hệ thống truyền dẫn giảm nhanh chóng : hiện tượng tắc nehẽn dữ liệu xuất hiện Trường hợp xấu nhất có thể xảy ra là hệ thống truyền
Trang 15Điéu khiển tắc nghẽn TCP Trang 15
dẫn bị sụp đổ hoàn toàn; không một gói dữ liệu nào được thực sự chuyển qua hệ
th ốn s truyền dẫn
M ột số nguyên nhân chính dưới đây làm dữ liệu chuyển tiếp bị mất, buộc
c á c thực thể giao thức ở mức tương ứng phải kích hoạt việc xử lý lỗi bằng cách phát lại dữ liệu bị mất, dẫn đến hiện tượng tắc nghẽn dữ liệu như mô tả ở trên
■ Công suất tính toán của hệ thống chuyển m ạch không đáp ứng được yêu cầu nhận, phân tích, quyết định và chuyển tiếp dữ liệu khi lưu lượng dữ liệu cần được chuyển tiếp trong mạng tăng
■ Dữ liệu ở nhiều kênh vào cùng được chuyển tiếp tới m ột kênh ra
■ Dung lượng bộ đệm thu nhỏ không đủ để lưu giữ tạm thời cá c gói dữ liệu trước khi có quyết định chuyển tiếp
Đ ể khắc phục, người ta đề ra cá c biện pháp hạn c h ế lưu lượng dữ liệu cần chuyển tiếp, phù hợp với khả năng xử lý và chuyển tiếp củ a hệ thống truyềndẫn:
■ Cung cấp đủ dung lượng bộ nhớ đệm cho cá c hệ thống chuyển m ạch
* Phân chia bộ nhớ đệm hợp lý cho các kênh vào/ra Cho phép loại bỏ sớm dữliệu vào khi không có khả năng lưu giữ tạm thời và xử lý
■ Hạn ch ế lưu lượng dữ liệu ở ngay đầu vào của hệ thống truyền dẫn
■ Đ iều khiển lưu lượng dữ liệu (ví dụ bằng c ơ c h ế cửa sổ) để tránh xảy ra mất
dữ liệu, ngăn chặn khả năng xảy ra hiện tượng tắc nghẽn dữ liệu
Nội đung của bài luận văn này chỉ tập chung vào m ột số thuật toán điều khiển tắc nghẽn số liệu của giao thức T C P trong mạng Internet Sau đây chúng
ta sẽ trình bày các cơ ch ế điều khiển lưu lượng và tắc nghẽn số liệu của TCP
Nguyễn Hoàne Linh
Trang 16Điều khiển tắc nghẽn T C P Trang 16
Cơ chế cửa sổ động
C ơ c h ế cửa sổ là m ột trong c á c phương pháp điều khiển lưu lượng và tắc nghẽn dữ liệu trong m ạng T T M T Đ ộ lớn cử a sổ chính bằng số lượng gói dữ liệu được gửi liên tục m à không cần ch ờ thông báo trả lời về kết quả cá c gói dữ liệu đó V í dụ nếu độ lớn cửa sổ w = 3 thì sau khi gửi 3 gói dữ liệu liên tiếp nhau, thực thể gửi phải ch ờ trả lời về kết quả nhận 3 gói dữ liệu nói trên, trước khi gửi 3 gói dữ liệu tiếp theo
Đ ộ lớn cửa sổ quyết định hiệu suất trao đổi dữ liệu trong m ạng Nếu chọn độ lớn cửa sổ ca o thì có thể gửi được nhiều dữ liệu trong cù n g m ột đơn vị thời gian
M ột khi việc truyền dữ liệu có lỗi, rõ ràng trong trường hợp này dữ liệu gửi lại lớn và do đó hiệu quả sử dụng đường truyền thấp
G iao thức T C P ch o phép thay đổi độ lớn cửa sổ m ột cách động, phụ thuộc vào độ lớn bộ đệm thu của thực thể nhận TC P Đ ể thực hiện cơ ch ế cửa sổ động,
Cơ chế phát lại thích nghi
Đ ể đảm bảo kiểm tra phát hiện và khắc phục lỗi trong việc trao đổi dữ liệu qua mạng diện rộng, được kết nối từ nhiều m ạng k h ác nhau, T C P phải có cơ
ch ế đồng hồ kiểm tra phát (tim e-o u t) và cơ c h ế phát lại (retransm ission) mểm dẻo thay đổi phụ thuộc vào thời gian trễ thực củ a m ôi trường truyền dẫn cụ thể Thời gian trễ toàn phần R T T (round-trip tim e), được x á c định từ thời điểm phát
Trang 17Điểu khiển tắc nghẽn TC P Trang 17
tác (Hì nh 1.4), là yếu tô' quyết định giá trị của đồng hồ kiểm tra phát T oul Rõ ràng T iml phải lớn hơn hoặc bằng R T T
C ơ c h ế phát lại thích nghi dựa trên việc xác định thời gian trễ toàn phần R T T theo thời gian Bằng việc sử dụng các hàm xác định thời gian của hệ điều hành, hoàn toàn xác định được R T T của một kết nối TC P tại cá c m ốc thời gian nhất định [JA C 8 8 ],
Cơ chế điều khiển tắc nghẽn dữ liệu
Hiện tượng tắc nghẽn dữ liệu thể hiện trước hết ở việc gia tăng thời gian trẻ của dữ liệu khi chuyển qua mạng Đ ể hạn c h ế vấn để này, người ta điều khiển lưu lượng dữ liệu trao đổi dựa trên việc thay đổi độ lớn cửa sổ phát Có 4 quá trình để điểu khiển tấc nghẽn dữ liệu : "K hởi động chậm " (slow start), "Tránh tắc nghẽn" (congestion avoidance), "Phát lại nhanh" (fast retransm it), "Phục hổi nhanh" (fast recovery) V iệc nghiên cứu, phân tích và mô tả thuật toán các quá trình này là một phần nội dung chính của bài luận văn và được trình bày chi tiết troníĩ chương 2
Data
RTT
Hình ỉ.4 : Thời gian trễ toàn phần RTT
Nguyễn Hoàng Linh
Trang 18Điều khiển tắc nghẽn T C P Trang 18
1.2 Phân tích đánh giá hiệu suất
ý tưởng của việc đạt được sự ổn định của m ạng bởi sự bắt buộc kết nối tuân theo nguyên tắc b ả o toàn c ấ c g ó i d ữ liệu. Chúng ta sẽ ch ỉ ra cá c thuật toán bắt nguồn từ nguyên lý này và tác động của nó đối với v iệc giải quyết vấn đề tắc nghẽn trên m ạng như th ế nào
hệ m ô phỏng m ạng m áy tính c ó tên N S, sẽ được giới thiệu ở phần sau Sau khi bốn thuật toán c ơ sở điều khiển tắc nghẽn số liệu T C P được nghiên cứu và tìm
Trang 19Điéu khiển tắc nghẽn T C P Trang 19
nẹhẽn số liệu T C P tổng thể Tahoe-, R eno, N ew -R eno-, và S A C K -TC P Các thuật toán này được mô phỏng trên N S và hệ thống sẽ đưa ra các đồ thị mô phỏng tương ứng Với cá c đồ thị của bốn thuật toán trên, chúng ta sẽ so sánh và đánh giá hiệu suất của chúng Phần này sẽ được trình bày chi tiết trong chương3
1.3 Mô phỏng máy tính
Trong việc xây dựng m ột hệ thống mạng T T M T đòi hỏi rất nhiều tài nguyên,
ch o nên khống phải tổ chức hoặc cá c nhân nào cũng có thể xây dựng m ột hệ thống như th ế để phục vụ cho việc nghiên cứu Đ ể tiếp cận với công việc nghiên cứu, đánh giá hiệu suất, tạo các giao thức phù hợp với thực tiễn, m ột trong những cách đơn giản nhưng không kém phần hiệu quả là dùng m ột phần mềm
để mô phỏng hệ thống mạng T T M T V iệc tìm hiểu và ứng dụng m ột phần mềm
m ô phỏng hệ thống mạng là rất cần thiết và thực tế đối với việc nghiên cứu về
m ạng máy tính, là m ột công cụ hỗ trợ đắc lực trong giai đoạn phân tích và thiết
k ế hệ thống Nó giúp chúng ta hiểu rõ và khảo sát được c ơ sở lý thuyết, chứng
m inh được tính đúng đắn của cá c phương án giả thiết, những m ô hình mới được
để ra, không cần chi phí tốn kém mà vẫn có thể tiến hành nghiên cứu một cách độc lập và hiệu quả V iệc xây dựng các chương trình m ô phỏng đã được nhiểu trường đại học và các tổ chức trên thế giới thực hiện Hệ m ô phỏng máy tính NS
m à ta sử dụng trong phạm vi bài luận văn này là m ột công cụ tốt và hiệu quả để thực hiện trắc nghiệm và đánh giá một số thuật toán điều khiển tắc nghẽn số liệu T C P được đề cập ở phần trên
Trang 20Điểu khiển tắc nghẽn T C P Trang 20
m ột hệ m ô phỏng có cấu trúc hướng đối tượng Nó được xây dựng trên hai ngôn ngữ C + + và O tcl và có thể được m ở rộng bởi người sử dụng (người sử dụng có thể lập trình được trên nền của hệ m ô phỏng N S) V ớ i cách tiếp cận này thì ta
có thể coi mỗi m ột m ô phỏng như m ột chương trình hơn là c á c m ô hình cứng nhắc, tĩnh, không thể thay đổi M ột m ô phỏng gồm c á c đối tượng có thể cấu hình tuỳ ý để có thể đạt được m ục đích m ô phỏng đề ra
D o vậy những người thiết k ế N S đã không chọn m ột ngôn ngữ duy nhất để xây dựng môi trường m ô phỏng, bởi có những đòi hỏi khác nhau về m ục đích của việc m ô phỏng K h i cần m ô phỏng những tầng thấp của m ạng m áy tính, xử
lý ở mức độ byte hay tiêu đề (header) c á c gói tin thì cần đòi hỏi m ột hiệu quả tính toán cao , do đó nhân củ a hệ m ô phỏng được viết bằng c + + C òn phần định nghĩa, cấu hình và điều khiển m ô phỏng được viết bằng ngôn ngữ script Tel
C ách tiếp cận này m ang lại hiệu quả rất ca o vì nó ch ia m ục đích của việc mô phỏng thành những phần nhỏ và giải quyết chúng bằng những ngôn ngữ phù hợp Nó cung cấp ch o người lập trình khả năng sử dụng dễ dàng hơn, mềm dẻo
và linh hoạt hơn
Vì C + + là ngôn ngữ hướng đối tượng m à T el thì không, nên người ta phải xây dựng những đối tượng m acro b ậc cao ch o phù hợp với c á c lớp củ a c++ Sau này để đạt được hệ thống m ềm dẻo và m ạnh hơn, trong phiên bản thứ hai, N S đã thay T el bằng Otcl (m ột T el hướng đối tượng) V à để có sự gắn kết giữa hai ngôn ngữ đó, người ta cần c ó m ột ngôn ngữ làm cầu nối là T c lC l (ngôn ngữ mở rộng củ a T el) V ớ i sự thay đổi đó thì cá c đối tượng m acro đã được thay bằng các lớp O tcl và trở nên dễ sử dụng hơn nhiều
NS được nhiều cá nhân và tổ chứ c ở nhiều nơi trên th ế giới sử dụng để phục
vụ ch o v iệc học tập và nghiên cứu m ạng m áy tính N S hỗ trợ c á c khía cạnh khác nhau trong m ạng m áy tính T ừ c á c lớp m ô phỏng c ơ sở như c á c Node, các
Trang 21Điều khiển tắc nghẽn T C P Trang 21
chuyển tiếp c á c gói tin, độ trễ truyền dẫn rồi đến lớp dùng để phân kênh cá c gói tin nhàm m ục đích hướng các gói tin đến cá c trạm xác định, các A gent xác định R ồ i đến việc quản lý các hàng đợi tại các trạm trung chuyển, lập lịch trình ch o các gói tin, các thuật toán tránh tắc nghẽn, nâng cao hiệu suất truyền tin T ron g N S người dùng có thể mô phỏng cá c mạng L A N , mạng không giây, thông tin vệ tinh, rồi các ứng dụng như Ftp, Http, W eb cach e, T eln et, .dựa trên c á c A gent của tầng vận chuyển, trên cá c mô phỏng vể kỹ thuật chọn đường, cá c giao thức tầng vận chuyển
Chi tiết về Hệ thống mô phỏng NS, xin mời xem trong tài liệu [H u n 2001]
Nguyễn Hoàng Linh
Trang 22Đ iều khiển tắc nghẽn T C P Trang 22
C H U Ơ N G II
C Á C T H U Ậ T T O Á N Đ IỀ U K H IỂ N t ắ c n g h ẽ n T C P
Chương này m ô tả chi tiết bốn thuật toán điều khiển tắc nghẽn T C P có quan
hệ khăng khít với nhau : “K h ởi động ch ậ m ” (slow start), “Tránh tắc nghẽn” (congestion avoid ance), “ Phát lại nhanh” (fa st retransm it) và “Phục hổi nhanh” (fast recovery) C ác thuật toán điều khiển tắc nghẽn số liệu T C P được phát m inh trong [Ja c 8 8 ] và [Ja c 9 0 ]
Đ ể thực hiện việc nghiên cứu, phân tích và m ô tả chi tiết bốn thuật toán trên trước tiên chúng ta phải đưa ra m ột số định nghĩa, những khái niệm và qui ước
mà chúng ta sẽ sử dụng trong suốt phần cò n lại củ a bài luận văn
2.1 M ộ t số định nghĩa và k h ái n iệm quan trọng
S E G M E N T : M ột segm ent là m ột gói dữ liệu (g ói tin) T C P/IP hay m ột gói
A C K trả lời nào đó (h oặc c ả hai)
S E N D E R M A X IM U M S E G M E N T S IZ E (S M S S ) : SWISS là độ dài tối đa của một segm ent (gói dữ Liệu) m à thực thể gửi có thể truyền đi G iá trị này được dựa trên “đơn vị truyền tối đa” (the m axim um tran sm ission unit) của mạng, thuật toán phát hiện đường đi M T U [M D 9 0 ], R M S S (xem nội dung tiếp sau), hay các
Trang 23Đ iểu khiển tắc nghẽn T C P Trang 23
yếu tố khác Đ ộ lớn này không bao gồm cá c tiêu đề T C P /IP và cá c tuỳ chọn (op tions)
R E C E IV E R M A X IM U M S E G M E N T S IZ E (R M S S ) : R M S S là độ lớn của
m ột segm ent lớn nhất mà thực thể nhận có thể (sẵn sàng) nhận G iá trị này được
đị nh rõ trong sự lựa chọn M S S và được gửi bởi thực thể nhận trong quá trình khởi tạo kết nối Hoặc nó sẽ là 5 3 6 bytes (giá trị được chấp nhận do qui định
củ a c á c mạng vật lý) nếu M S S không được lựa chọn [B ra 8 9 ] K ích thước này không bao sồ m cá c tiêu đề T C P /IP (T C P/IP headers) và cá c tuỳ chọn (options)
F U L L -S IZ E D S E G M E N T : M ột g ó i dữ liệu chứa độ dài tối đa của các byte
dữ liệu được phép (ví dụ như là một g ó i d ữ liệu chứa S M S S byte dữ liệu) Ta viết ngắn gọn là g ói-tối-đ a.
R E C E IV E R W IN D O W (rwnd) : Cửa sổ thu của thực thể nhận được thôngbáo mới đây nhất (viết ngắn gọn : cửa s ổ thu).
C O N G E ST IO N W IN D O W (cw nd) : M ột biến trạng thái T C P, nó qui định tổng số dữ liệu m à một T C P có thể truyền hay cò n gọi là cửa sổ tắc nghẽn V ào bất cứ thời điểm quy định đã ch o nào, một T C P không được gửi dữ liệu với một
số tuần tự ỉón hơn tổng của số tuần tự đã được trả lời lớn nhất và giá trị tối thiểu của c w ild và rwnd.
IN IT IA L W IN D O W (IW ) : Cửa sổ khởi tạo là độ lớn củ a cửa sổ tắc nghẽn (cw nd) của thực thể gửi sau khi phương thức "bắt tay 3 bước" được hoàn tất [L o i99]
L O S S W IN D O W (L W ) : Cửa sổ mất L W là độ lớn củ a cửa sổ tác nghẽn (cw nd) sau khi m ột thực thể gửi T C P phát hiện thấy mất v iệc sử dụng đồng hồ phát lại của nó
Nguyễn Hoàng Linh
Trang 24Điều khiển tắc nghẽn T C P Trang 24
R E S T A R T W IN D O W (R W ) : R W là độ lớn củ a cử a sổ tắc nghẽn (cwnd) sau khi m ột T C P khởi động lại sự truyền sau m ột thời gian "nghỉ"
F L IG H T S IZ E : S ố lượng hay tổng số dữ liệu đã được phát đi nhưng còn chưa nhận được c á c gói A C K trả lời
2.2 Các thuật toán điếu khiển tắc nghẽn
N ội dung bốn thuật toán điều khiển tắc nghẽn “ K hởi động chậm ”, “Tránhtắc nghẽn”, “ Phát lại nhanh” và “Phục hổi nhanh” được mô tả trong [Ja c8 8 ] và[Ja c 9 0 ] C ác thuật toán nảy sinh từ m ột quan sát: Lưu lượng trên một kết nối
T C P nên tuân thủ m ột nguyên lý b ả o toàn c á c g ó i d ữ liệu (conservation o f packets) V à nếu nguyên lý này được tuân thủ, thì vấn đề tắc nghẽn có thể được loại bỏ Như vậy điều khiển tắc nghẽn kéo theo việc tìm ra những chỗ m à nó vi phạm sự bảo toàn
T ừ nguyên lý b ả o toàn c á c g ó i d ữ liệu chú ng ta m uốn ám chỉ đến một kết nối cân bằn g (in eq u ilibriu m ), có nghĩa hệ thống chạy ổn định với m ột cửa sổ lớn nhất có thể khi truyền Chúng ta hiểu b ả o toàn (conservative) ở đây là một gói dữ liệu mới không được đưa vào m ạng ch o đến khi m ột gói dữ liệu cũ đã rời khỏi mạng
C ó ba nguyên nhân dẫn đến việc không bảo toàn được cá c gói dữ liệu là :( 1 ) Kết nối không đạt được tới sự cân bằng, hoặc
(2 ) M ột thực thể gửi phát tiếp m ột gói dữ liệu trước khi m ột gói cũ đã rời khỏi
m ạng, hoặc
(3 ) Sự cân bằng không thể đạt được do tài nguyên bị hạn c h ế (thiếu bộ nhớ đệm chẳng hạn)
Trang 25Điẻu khiển tắc nghẽn T C P Trang 25
2.2.1 Các thuật toán “Khởi động chậm” và “Tránh tắc nghẽn”
"Khởi động chậm"
C ác phiên bản T C P trước đây bắt đầu một kết nối với việc thực thể gửi phát nhiều gói dữ liệu một lúc vào m ạng, cho đến khi đạt được kích thước cửa sổ đã được thông báo bởi thực thể nhận (cửa sổ thu) Đ iều đó không có vấn đề gì khi hai m áy chủ (host) cùng nằm trên cùng m ột mạng LA N , và nếu có cá c bộ định tuyến (router) và cá c liên kết tốc độ thấp giữa thực thể gửi và thực thể nhận thì vấn đề có thể nảy sinh Ở m ột số bộ định tuyến trung gian cá c gói dữ liệu khi được vận chuyển qua phải xếp hàng (trong m ột hàng đợi) để ch ờ đến lượt, và vấn đề rất có thể xảy ra là bộ định tuyến này bị tràn bộ nhớ đệm do không còn
đủ chồ để lưu giữ cá c gói dữ liệu tiếp theo [JA C 8 8 ] cho thấy cách tiếp cận này
có thể làm giảm thông lượng của m ột kết nối TCP
Thuật toán để giải quyết vấn đề trên được gọi là "K hởi động chậm " Nó hoạt động bởi v iệc quan sát tốc độ mà với nó thực thể gửi phát c á c gói dữ liệu mới vào mạng cũng là tốc độ mà với nó cá c gói A C K trả lời được trả lại bởi thực thể nhận
Nguyền Hoàng Linh
Trang 26Đ iều khiển tắc nghẽn T C P Trang 26
Hình 2 Ị : Thuật toán “Khởi động chậm '
Thuật toán "K hởi động chậm " thêm một biến cvvnd - cửa sổ tắc nghẽn - cho thực thể gửi TCP Khi mà một kết nối T C P được thiết ỉập với m ột máy chủ (host) trên một mạng khác, cvvnd được cho một giá trị ban đầu là 1 gói-đữ-liệu (có nghĩa : độ dài của một gói-dữ-liệu lớn nhất m à thực thể nhận có thể nhận, chính là giá trị R M S S được định nghĩa ở trên) Cứ m ỗi lần m ột A C K nhận được, cửa sổ tắc nghẽn cwnd được tăng thêm 1 gói-dữ-liệu Thực thể gửi có thể truyền cho đến giá trị cực tiểu của cửa sổ tắc nghẽn và cửa sổ thu, tức M in(cw nd, rwnd) T a có thể hiểu vấn đề này như sau : thực thể gửi điều khiển lưu lượng thông qua cửa sổ tắc nghẽn dựa trên việc phỏng đoán tắc nghẽn mạng và thực thể nhận điều khiển lưu lượng thông qua cửa sổ thu dựa trên tổng bộ nhớ đệm sẩn có tai thưc thể nhân
Trang 27Đ iều khiển tắc nghẽn T C P Trang 27
Hình 2.2 : Cơ ch ế cửa sổ thuật toán “Khởi động chậm ”
Nguyễn Hoàng Linh
Trang 28Điều khiển tắc nghẽn T C P Trang 28
Thực thể gửi bắt đầu phát một gói dữ liệu và ch ờ A C K trả lời cho gói dữ liệu đó Khi A C K này nhận được, cửa sổ phát được tăng từ m ột lên hai, và lúc này h a i gói dữ liệu có thể được gửi Khi cả h a i gói được trả lời thì cửa sổ phát sẽ được tăng lên bôh gói (Hình 2.1 ) V à cứ như thế cửa sổ phát tăng theo hàm số
mũ, m ặc dù điều này chỉ mang ý nghĩa tương đối bởi thực thể nhận có thể làm trễ cá c A C K của nó, điển hình là khi nó chỉ truyền m ột A C K cho cả hai gói dữ liệu mà nó nhận được một lúc
Tại một số thời điểm dung lượng của mạng (internet) có thể đạt được, và một bộ định tuyến trung gian sẽ bắt đầu loại bỏ các gói dữ liệu đến sau Điều đó thông báo cho thực thể gửi biết rằng cửa sổ phát của nó là quá lớn Những sự thực hiện trước đây chỉ sử đụng thuật toán "K hởi động ch ậ m ” khi thực thể nhận nằm trên một mạng khác còn cá c sự thực hiện T C P ngày nay luôn sử dụng thuật toán này
Sau đây là mô tả thuật toán chi tiết cho “Khởi động ch ậm ” :
■ Thêm một biến cửa sổ tắc nghẽn, cwnd, vào trạng thái m ỗi kết nối.
• K hi bắt đẩu khởi động hoặc khởi động lại sau việc mất dữ liệu , đặt cwnd =
1 gói-dữ-ỉiệu.
■ Trên mỗi gói ACK trả lời cho dữ Hệu mới, hãy tăng cwnd thêm một g ói
(cwnd= cwnd + 1 gói-dữ-ỉiệu).
• Khi phát, hãy phát với cửa sổ phát = Min( Tvmd, cwnd).
Trên thực tế, việc tăng cửa sổ “Khởi động chậm ” tốn m ột thời gian R lo g 2W với R là th ời gian trễ toàn phần (RTT) và w là đ ộ lớn cửa s ổ với đơn vị ià g ó i
dữ liệu (Hình 2 1 ) Điều đó có nghĩa cửa sổ tăng đủ nhanh để không có một hiệu ứng đáng kể nào ảnh hưởng đến hiệu suất, thậm trí trên c á c kết nối với một giải tần lớn V à thuật toán đảm bảo rằng một kết nối sẽ là nguồn dữ liệu với tốc độ nhiều nhất bằng hai lần vận tốc cực đại có thể
Trang 29Đ iéu khiển tắc nghẽn TC P Trang 29
Hình 2.3 : Sơ đổ thuật toán “Khởi động chậm ”
"Tránh tắc nghẽn"
T ắ c nghẽn có thể xảy ra khi dữ liệu đến m ột mạng LA N tốc độ cao và gửi đi trên m ột mạng W A N tốc độ thấp T ắc nghẽn cũng có thể xuất hiện khi nhiều dòng dữ liệu đầu vào đến bộ định tuyến mà dung lượng đầu ra của nó nhỏ hơn tổng dung lượng c á c đầu vào "Tránh tắc nghẽn" là m ột giải pháp để đối phó với c á c gói dữ liệu bị mất và nó được mô tả chi tiết trong [JA C 8 8 ]
Nguyễn Hoàng Linh
Trang 30Điểu khiển tắc nghẽn T C P Trang 30
Cwnd += 1/3 = 3 + 1 = 4 ACK 3 A "
456
y
Cwnd += 1/4 = 4 + 1/4 ACK4Cwnd += 1/4 = 4 + 2/4 ACK5 A''
Cwnd += 1/4 = 4 +3/4 ACK 6
o
Cwnd += 1/4 = 4 + 1 = 5 ACK 7 A
89101112
3 Cvvnd += 1/5 = 5 + 1/5 ACK 8
Cwnd += 1/5 = 5 + 2/5 ACK9
••
Cwnd += 1/5 = 5 +3/5 ACK 10 :Cwnd += 1/5 = 5 + 4/5 ACK11
/Cwnd += 1/5 = 5 + 1 = 6 ACK 12
Hình 2.4 : Cơ ch ế cửa sổ động thuật toán “Tránh tắc nghẽn ”
Trang 31Điều khiển tắc nghẽn T C P Trang 32
gói dữ liệu sẽ tạo ra nhiều nhất cw n d A C K ch o mỗi RTT Như vậy một sự tăng của 1 Ịcw n d cho m ỗi A C K sẽ tăng độ lớn cửa sổ nhi ều nhất là 1 gói dữ liệu cho mỗi R T T Trong T C P , c á c độ lớn cửa sổ và gói dữ liệu được tính bằng byte do
đó việc tăng phải được chuyển thành maxseg*maxseg/c wnd với maxseg là độ dài gói dữ liệu lớn nhất c ó thế’ và cw n d được biểu diễn bằng by te chứ không phải bằng gói-dữ -ỉiệu
Thuật toán được m ô tả ở trên chỉ là thuật toán "T ránh tắc nghẽn", nó không bao hàm cả "K h ởi động ch ậm " "T ránh tắc nghẽn" và "K h ở i động chậm " là hai thuật toán độc lập với cá c m ục đích hoàn toàn khác nhau Nhưng khi tắc nghẽn xuất hiện T C P phải làm ch ậm lại tố c độ truyền cá c gói dữ liệu vào m ạng, và sau
đó kích hoạt "K h ởi động ch ậm " để nhận được sự hoạt động trở lại Trong thực
tế chúng được thực hiện kết hợp với nhau Phần tiếp theo sau đây sẽ mô tả việc thực hiện kết hợp củ a hai thuật toán trên
Kết hợp "Khởi động chậm" và "Tránh tắc nghẽn"
Sự kết hợp giữa hai thuật toán "K h ở i động ch ậm " và "Tránh tắc nghẽn" được mô tả chi tiết trong [A P S 9 9 ] và có m ột s ố thay đổi so với [JA C 8 8 J Thuật toán “ Khởi động ch ậ m ” và “Tránh tắc nghẽn” được sử dụng bởi một thực thể gửi TCP để điểu khiển lưu lượng dữ liệu cò n đang trên đường truyền Đ ể thực hiện cá c thuật toán này, 0 2 biến được thêm vào trạng thái củ a m ỗi kết nối TCP Cửa sổ tắc nghẽn cw nd\ầ do thực thể gửi qui định dựa trên số lượng dữ liệu mà thực thể sửi có thể truyền vào m ạng trước khi nhận được m ột gói A C K , trong khi cửa sổ thu rw nd do thực thể nhận qui định dựa trên số lượng dữ liệu còn tổn đọng trên mạng G iá trị tối thiểu củ a cửa sổ tắc nghẽn và cửa sổ thu M in(cw nd, rwnd) xác định độ lớn cửa sổ thực tế được sử dụng để phát dữ liệu
Nguyễn Hoàng Linh
Trang 32Đ iều khiển tắc nghẽn T C P Trang 31
Trong quá trình “Tránh tắc nghẽn”, khi một tim eout hết hạn, có nghĩa là nó
ch í báo một gói dữ liệu bị mất Những gói dữ liệu bị mất do hai lý do : chúng bị lỗi (hỏng) khi đang được truyền trên m ạng, hoặc m ạng bị ùn tắc và ở đâu đó trên đường truyền có khả năng bộ nhớ đệm bị thiếu Trên phần lớn các đường truyền trên mạng sự mất mát do hỏng (lỗi) rất hiếm khi xảy ra (khoảng « 1 % ) , như vậy có thể một gói dữ liệu bị mất hầu như là do ùn tắc trên mạng
Khi có tắc nghẽn mạng phải có khả năng báo hiệu ch o cá c điểm cuối cần truyền rằng tắc nghẽn đang xuất hiện V à các điểm cuối này phải có chính sách giảm bớt việc sử dụng tài nguyên nếu nhận được thông tin và tăng khả năng sử dụng trong trường hợp ngược lại
Như trong thực tế được ch ỉ ra, nguyên nhân dẫn đến tắc nghẽn m ạng thường là do c á c gói dữ liệu bị m ất và dấu hiệu củ a v iệc m ất gói dữ liệu là thời eian ch ờ (tim eo u t) hết hạn D o vậy dấu hiệu làm ch o m ạng bị tắc nghẽn
là đã rõ ràng
Sau đầy là m ô tả chi tiết thuật toán "Tránh tắc nghẽn" :
■ Khi xuất hiện dấu hiệu tắc nghẽn do hết thời giãn chờ nhận gói A CK đ ể phát lại (timeout) , đặt cwnd bằng một nửa (1/2) độ lớn cửa s ổ hiện thời (giảm cửa sổ theo cấp s ố nhãn).
■ Trên mỗi ACK cho dữ liệu mới, tầng cwnd thêm ỉ/cwnd (hay SMSS*SMSS/cwnd ) (*) (tăng cửa sổ theo cấp s ố cộng).
■ K h i gửi, thì g ử i M in(rwnd, cwnd) trong đ ó cwnd ỉà "cửa s ổ tắc nghẽn " ; nvnd ỉà cửa s ổ đ ã thông b á o của thực th ể nhận h ay "cửa s ổ thu ").
( * ) Chú ý : Quy tắc tăng dần này có thể nhỏ hơn trong thực tế Chúng ta muốn tăng kích thước cửa sổ nhiều nhất là 1 gói-dữ-liệu ch o m ỗi thời gian trễ toàn phần (R T T ) G iả thiết rằng thực thể gửi có thể tránh m ột cách hiệu quả những cửa sổ có độ dài không thích hợp và không c ố gắng để truyền những đoạn con
Trang 33Điều khiển tắc nghẽn T C P Trang 33
M ột biến trạng thái , ngưỡng khởi-động-chậm s$thresh được dùng để xác định khi nào thì thực hiện “ Khởi động chậm ” hay “Tránh tắc nghẽn” Biến này được sử dụng để điều khiển dữ liệu phải truyền như m ô tả dưới đây
K h i bắt đầu truyền vào một mạng với các điều kiện chưa được xác định đòi hỏi T C P phải thử (thăm dò) mạng m ột cách chậm và ch ắc chắn để xác định dung lượng (khả năng) truyền có thể với mục đích là để tránh việc làm tắc nghẽn mạng với sự xuất hiện đột ngột luồng dữ liệu lớn không thích hợp Thuật toán “Khởi động chậm ” được dùng cho mục đích này tại thời điểm bắt đầu của một lần truyền (phát), hoặc sau lần hổi phục việc m ất dữ liệu được phát hiện bởi đồng hồ phát lại
Cửa sổ khởi tạo IW , giá trị ban đầu của cửa sổ tắc nghẽn cwnd, phải nhỏ hơn hoặc bằng (< ) 2 * S M S S bytes và không được lớn hơn 2 g ó i dữ liệu.
M ột sự m ở rộng T C P không theo chuẩn và dựa trên thực nghiệm cho phép
m ột T C P có thể sử dụng một cửa sổ khởi tạo IW lớn hơn, như được định nghĩa trong phương trình (1) [A F P 98] :
IW = min (4 *S M S S , max (2 *S M S S , 4 3 8 0 by tes)) ( 1 )
V ới sự m ở rộng này, m ôt thực thể gửi T C P có thể sử dụng một cửa sổ khởi tạo I w bằng 3 hay 4 g ó i dữ liệu, và tổng độ lớn của cá c g ó i dữ liệu không vượt quá 4 3 8 0 bytes Chúng ta không coi sự thay đổi này như là phần của chuẩn đã định nghĩa trong luận văn Tuy nhiên, chúng ta tính đến việc thảo luận phương trình ( 1 ) như là một thử nghiệm Nội dung chính của bài luận văn chỉ quan tâm đến cá c chuẩn hiện có của điều khiển tắc nghẽn TCP
G iá trị khởi tạo của ssth resh có thể lớn tuỳ ý (ví dụ, m ột vài sự thực hiện cho giá trị ssthresh bằng độ lớn của cửa sổ thu rw nd ), nhưng nó cũng có thể được eiảm đi để tránh tấc nghẽn Thuật toán “ Khởi động chậm ” được sử dụng khi
Nguyễn Hoàng Linh
Trang 34Đ iều khiển tắc nghẽn T C P Trang 34
c w nd < ssthresh, trong khi thuật toán “Tránh tắc nghẽn” được sử dụng khi cw nd
> ssthresh. Khi cw n d = ssthresh thì thực thể gửi có thể thực hiện “ Khởi động
cwnd + = SM SS*SM SS/cw n d (2)
Sự điều chỉnh này được thực hiện trên mỗi m ột gói A C K đến không-trùng (non- ciuplicate) Phương trình (2 ) cung cấp một phép tính gần đúng chấp nhận được theo nguyên lý : cwnd tăng m ột gói-tối-đa cho mỗi R T T
Chú ý khi thực hiện : V ì việc tính toán số nguyên thường được sử dụng trong việc thực hiện TC P, nên công thức đưa ra trong phương trình (2 ) có thể sai khi tăng cwnd trong trường hợp cwnd rất lớn (lớn hơn S M S S *S M S S ) Nếu công thức trên cho kết quả 0 thì kết quả đó phải được làm tròn tới 1 byte
M ột cách khác có thể chấp nhận được để tăng cwnd trong thời gian “Tránh tắc nghẽn” là đếm số byte đã trả lời bởi các A C K cho dữ liệu mới (M ột hạn ch ế của thực hiện này là nó đòi hỏi phải duy trì m ột biến trạng thái bổ xung) K hi sô' byte đã được trả lời đạt đến cwnd, sau đó cw n d cỏ thể được tăng cho đến SM SS bytes Chú ý rằng trong thời gian “Tránh tắc nghẽn”, cw n d không được tăng
Trang 35Điều khiển tắc nghẽn TC P Trang 35
m ột đoạn lớn hơn giá trị lớn nhất của m ột gói-tối-đ a ch o mỗi R T T và giá trị được tính theo phương trình 2
Khi m ột thực thể gửi T C P phát hiện việc mất gói dữ liệu khi sử dụng đồng
hồ phát lại, giá trị của ssthresh phải được đặt là không lớn hơn (< ) giá trị được đưa ra trong phương trình (3 ):
ssthresh = m ax (FlightSize / 2, 2 * S M S S ) (3 )Như đã trình bày ở trên FlightSize là tổng dữ liệu còn tồn đọng trên mạng
N goài ra, trong thời gian m ột tim eout, cw nd phải được đặt không lớn hơn cửa sổ “ m ất” (L W ) mà độ lớn của nó bằng 1 gói-tối-đ a (bất chấp cửa sổ khởi tạo IW là bao nhiêu) Do vậy sau việc phát lại gói dữ liệu bị mất thực thể gửi
TC P sử dụng thuật toán “ Khởi động chậm ” để tăng độ lớn cửa sổ từ 1 gói-tối-
đa lên đến g iá trị mới của ssthresh m à tại thời điểm đó quá trình “Tránh tắc nghẽn” lại được tiếp tục
"Tránh tắc nghẽn” và "K hởi động chậm " đòi hỏi hai biến được thêm vào cho mỗi kết nối : một biến cử a-sổ-tắc-nghẽn cw n d và m ột biến ngưỡng khởi- động-chậm ssthresh. Thuật toán kết hợp của hai thuật toán trên được mô tả nhưsau :
/ Khi bắt đầu một kết nối ta đặt cwnd - 1 gói-dữ-lỉệu và ssthæsh = 65535 bytes (hoặc có thể tuỳ ý hoặc bằng kích thước cửa sổ thu đã được thông báo bởi thực thể nhận rwnd ).
2 Thực thể gửi TCP không bao giờ gửi quá giá trị cực tiểu của cửa sổ tắc nghẽn (cwnd) và cửa sổ thu đã được thông báo bởi thực thể nhận (rwnd), tức Min(cwnd, rwnd).
3 Nếu tắc nghẽn xuất hiện (được chỉ ra bởi một timeout hoặc sự nhận được
các ACK trùng), đạt ssthœsh = 1/2 Mừi(cwnd, rwnd), tức một nửa kích
thước cửa sổ hiện thời, nhưng tối thiểu phải bằng 2 gói-dữ-ỉiệu (điều kiện
ssthresh < max(FlightSize/2 , 2*SMSS)) và cwnd = ssthresh Ngoài ra,
Nguyễn Hoàng Linh
Trang 36Điều khiển tắc nghẽn TC P Trang 36
nếu tắc nghẽn được chỉ ra bởi một timeout, đặt cwnd = 1 gói-dữ-liệu, có nghĩa thực hiện "Khởi động chậm
4 Nếu thực thể gửi nhận được ACK trả lời cho dữ liệu mới (tức không phải ACK trùng) thì tăng cwnd, nhưng việc tăng cwnd CÒĨ1 phụ thuộc vào TCP đang thực hiện "Khởi động chậm " hay "Tránh tắc nghẽn
■ Nếu cwnd < sstíiresh, tức TCP đang trong "Khởi động chậm ", thì
dữ liệu mới Như được đề cập trước đây, cửa sổ được tăng theo hàm số mũ : gửi
m ột gói-dữ-liệu, sau đó là hai, tiếp đến là bốn, và cứ tiếp tục như vậy “Khởi động chậm ” kết thúc khi cwnd vượt quá ssthresh
"Tránh tắc nghẽn" ra lệnh cho cwnd được tăng thêm 1 gói-dữ-liệu với kích- thước-tối-đa-cho-phép (S M SS) cho mỗi R TT (hay SM SS*SM SS/cw n d cứ mỗi lần một A C K không trùng được nhận, nếu cwnd lấy đơn vị là byte) Lưu ý : hai
m ệnh đề trên là tương đương nhau như được giải thích ở phần trên Đ ây là sự tăng tuyến tính của cvvnd trong "Tránh tắc nghẽn", so sánh với sự tăng theo hàm sô' mũ của "K hởi động chậm " Sự tăng cwnd tối đa phải là 1 gói-dữ-liệu cho mỗi
R T T (không để ý đến bao nhiêu A C K được nhận trong R T T này), trong khi
"K hởi động chậm " tăng cwnd thêm m ột giá trị bằng số lượng A C K nhận được trong một R T T
Trang 37Đ iều khiển tắc nghẽn T C P Trang 37
Cwnd + = I/ Cwnd (đơn vị ià gói-dữ-liệu hoác Cwnd + = SM SS*SM SS1/ Cwnd
(dơn vị là Byle) (Tãnẹ cửa sô Ihco cấp sò cộng)
Cwnd = 1 Gói D L ssthresh = rwnd
Phát M in(C w nd, Rwnd) gói-dữ-liệu
Cwnd = Cwnd + 1 (Tâng cửa sổ theo cấp
số nhân)
Hình 2.5 : 'íhuật toán kết hợp “Khởi động chậm ” và "Tránh tắc nghẽn "
Nguyễn Hoàng Linh
Trang 38Đ iều khiển tắc nghẽn T C P Trang 38
2.2.2 Các thuật toán “Phát lại nhanh” và “Hổi phục Nhanh”
"Phát lại nhanh"
Chúng ta chú ý rầng một thực thể nhận T C P có thể tạo ra m ột một gói A CK trùng (lặp) tức thời khi m ột gói dữ liệu không-đúng-thứ-tự (out o f order) được nhận (lý do để nhận được gói dữ liệu không-đúng-thứ-tự là việc mất gói dữ liệu trước đó) A C K trùng này không nên bị làm trễ M ục đích của nó để thông tin
ch o thực thể gửi biết rằng m ột gói dữ liệu không-đúng-thứ-tự đã được nhận, và
số thứ tự nào đang được ch ờ đợi Hơn nữa, thực thể nhận T C P này cần phải gửi ngay gói A C K tức thời khi gói dữ liệu mới đến chiếm ch ỗ tất cả hay m ột phần
củ a một chỗ trống trong dãy khoảng trống tuần tự Đ iều đó sẽ tạo ra thông tin đúng lúc, kịp thời hơn cho một thực thể gửi đang phục hồi việc mất gói dữ liệu thông qua một thời gian ch ờ phát lại, m ột thuật toán “Phát lại nhanh” hay một thuật toán phục hồi khi bị mất dữ liệu bằng thực nghiệm , như N ew R eno [FH 98J chẳng hạn
Từ phía thực thể gửi, các gói A C K trùng có thể gây ra m ột số lớn cá c vấn đề trên mạng Đ ầu tiên nó có thể gây ra bởi gói bị mất Trong trường hợp này tất cả
c á c gói tiếp sau gói bị mất sẽ sinh ra cá c A C K trùng Thứ hai, cá c gói A C K trùng có thể được tạo ra bởi việc sắp xếp lại trật tự của c á c gói dữ liệu trên mạng (đây không phải là một vấn đề hiếp thấy trên m ột số đường truyền trên mạng [P ax 97]) Cuối cùng, cá c gói A C K trùng có thể được sinh ra bởi việc tái tạo (nhân bản) A C K hoặc của cá c gói dữ liệu trên mạng
Vì T C P không biết liệu có phải m ột A C K trùng được tạo ra bởi một gói dữ liệu bị mất hay việc sắp đặt lại cá c gói dữ liệu nên nó phải đợi để nhận m ột số lượng nhỏ cá c A C K trùng G iả sử rằng có m ột sự sắp đặt lại các gói dữ liệu, và chỉ có một hay hai A C K trùng trước khi gói dữ liệu sắp đặt lại được xử lý, gói
Trang 39Điều khiển tắc nghẽn T C P Trang 39
nhận liên tiếp nhau, điều đó chỉ báo rằng một gói dữ liệu đã bị mất Sau đó T C P thực hiện m ột sự phát lại gói dữ liệu mà nó cho là bị mất đó, không cần phải đợi thời gian ch ờ (tim eout) hết hạn
Hình 2.2 : Cơ ch ế cửa sổ thuật toán “Khởi động chậm ”
Thực thể gửi cần sử dụng thuật toán “Phát lại nhanh” để phát hiện và khôi phục sự mất mát trên cơ sở các A C K trùng vừa đến Thuật toán “ Phát lại nhanh”
Nguyễn Hoàng Linh
Trang 40Đ iều khiển tấc nghẽn T C P Trang 4 0
sử dụng sự đến nơi của 3 A C K trùng như một sự chỉ báo rằng một gói dữ liệu
đã bị mất Sau khi nhận được 3 A C K trùng, T C P thực hiện một sự phát lại gói
dữ liệu được cho là bị mất mà không cần đợi timeout hết hạn
Như vậy thuật toán "Phát lại nhanh" được mô tả như sau :
■ Khi gói ACK trùng thứ 3 liên tiếp được nhận, đặt ssthresh bằng một nửa cửa sổ tắc nghẽn hiện thời, tức sstíiresh = 1/2 Min(rwnd, rwnd).
"Phục hồi nhanh"
Sau khi thuật toán “Phát lại nhanh” gửi m ột gói dữ liệu được cho là bị mất, thì thuật toán “Phục hồi nhanh” bắt đầu nắm quyền khống ch ế việc truyền dữ liệu m ới cho đến khi m ột A C K không trùng được trả lại thành công Lý do cho
v iệc không thực hiện “Khởi động ch ậm ” là sự nhận được cá c A C K trùng không
ch ỉ ch o biết rằng m ột gói dữ liệu đã bị mất, m à còn cho biết cá c gói khác phần lớn rất có thể đang rời khỏi mạng Hay nói cách khác, từ khi thực thể nhận có khả nàng chỉ tạo ra m ột A C K trùng trong khi một gói dữ liệu đã đến nơi thành công, gói này đã ra khỏi mạng và đã nằm trong bộ đệm của thực thể nhận, như vậy chúng ta biết rõ là nó không tiêu tốn tài nguyên củ a mạng lâu hơn nữa
Đ iều đó có nghĩa, vẫn còn dòng dữ liệu giữa thực thể gửi và thực thể nhận, và
T C P không muốn giảm lưu lượng dữ liệu m ột cách đột ngột khi đi vào quá trình “ Khởi động ch ậm ” Đ ây chính là một cải tiến cho phép đạt tới thông lượng cao với m ột tắc nghẽn vừa phải, đặc biệt cho những cửa sổ lổm Ngoài ra, từ khi
A C K “c lo ck ” [Ja c8 8 J được bảo toàn, thì thực thể gửi T C P có thể (có khả năng) truyển tiếp tục các gói dữ liệu mới (dẫu cho việc truyền phải tiếp tục duy trì việc sử dụng cwnd với độ lớn giảm đi)
Thuật toán “Phục hồi nhanh” khi thực hiện phải được kết hợp với thuật toán