Tải bản đầy đủ (.pdf) (138 trang)

Nghiên cứu phương pháp đánh giá và cải thiện hiệu năng giao thức TCP cho mạng máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.34 MB, 138 trang )



ĐẠI HỌC QUỐC GIA HÀ NÔI
KHOA CÔNG NGHỆ


NGUYỄN ĐÌNH VIỆT



NGHIÊN CỨU
PHƯƠNG PHÁP ĐÁNH GIÁ VÀ CẢI THIỆN HIỆU NĂNG
GIAO THỨC TCP CHO MẠNG MÁY TÍNH






LUẬN ÁN TIẾN SỸ TOÁN HỌC






HÀ NỘI – 2003

ĐẠI HỌC QUỐC GIA HÀ NÔI
KHOA CÔNG NGHỆ
*



NGUYỄN ĐÌNH VIỆT


NGHIÊN CỨU
PHƯƠNG PHÁP ĐÁNH GIÁ VÀ CẢI THIỆN HIỆU NĂNG
GIAO THỨC TCP CHO MẠNG MÁY TÍNH


Chuyên ngành: Đảm bảo Toán học cho Máy tính và Hệ thống tính toán
Mã số: 1.01.10


LUẬN ÁN TIẾN SỸ TOÁN HỌC



NGƯỜI HƯỚNG DẪN KHOA HỌC:
1. PGS. TS. Vũ Duy Lợi
2. PGS. Nguyễn Quốc Toản


HÀ NỘI – 2003

- 1 -
MỤC LỤC
MỞ ĐẦU 3
CHƯƠNG 1 GIỚI THIỆU CHUNG 8
1.1 Sự phát triển của mạng Internet 8
1.2 Kiến trúc mạng Internet 9

1.2.1 Mô hình tham chiếu ISO OSI 9
1.2.2 Mô hình tham chiếu TCP/IP 12
1.3 Điều khiển lưu lượng và điều khiển tắc nghẽn 14
1.3.1 Cơ bản về điều khiển lưu lượng và điều khiển tắc nghẽn 14
1.3.1.1 Khái niệm 14
1.3.1.2 Điều khiển lưu lượng theo cơ chế cửa sổ trượt 15
1.3.1.3 Điều khiển tắc nghẽn 19
1.3.2 Điều khiển lưu lượng trong giao thức TCP 22
1.3.2.1 Giao thức TCP ban đầu 22
1.3.2.2 Nguyên lý “Bảo toàn các gói số liệu” và các nguyên nhân vi phạm 24
1.3.2.3 Khởi động chậm 27
1.3.2.4 Tính thời gian khứ hồi một cách thông minh 29
1.3.2.5 Tránh tắc nghẽn 32
1.4 Kết nối mạng không dây với Internet và các vấn đề nảy sinh 33
1.4.1 Các mạng truyền thông không dây số hiện đại 33
1.4.2 Các vấn đề nảy sinh khi kết nối với Internet 36
CHƯƠNG 2 CÁC PHƯƠNG PHÁP ĐÁNH GIÁ HIỆU NĂNG MẠNG 38
2.1 Giới thiệu 38
2.1.1 Tầm quan trọng của việc đánh giá hiệu năng mạng máy tính 38
2.1.2 Các độ đo hiệu năng mạng 39
2.1.3 Các phương pháp đánh giá hiệu năng mạng 40
2.2 Mô hình Giải tích 43
2.2.1 Quá trình Poisson và các tính chất của nó 45
2.2.2 Hàng đợi M/M/1 và một số kết quả 46
2.2.2.1 Xác suất trạng thái cân bằng của hàng đợi M/M/1 47
2.2.2.2 Đặc trưng thông lượng của hàng đợi M/M/1 hữu hạn 48
2.2.2.3 Kích thước trung bình của hàng đợi M/M/1 hữu hạn 49
2.2.2.4 Công thức Little L=λW và áp dụng để tính thời gian trễ trung bình 50
2.3 Mô phỏng mạng bằng chương trình máy tính 52
2.3.1 Ý tưởng xây dựng bộ mô phỏng mạng 52

2.3.2 Bộ mô phỏng mạng NS (Network Simulator) 53

2.3.2.1 Giới thiệu 53
2.3.2.2 Cấu trúc phần mềm của NS 57

2.3.2.3 Lập trình mô phỏng bằng NS 58
CHƯƠNG 3 ĐÁNH GIÁ HIỆU NĂNG MẠNG BẰNG MÔ HÌNH HÀNG ĐỢI 59
3.1 Mô hình mạch ảo 59
3.2 Hiệu năng của các cơ chế kiểm soát lỗi 61
3.2.1 Kiểm soát lỗi đầu cuối - đầu cuối (end-to-end) 62
3.2.2 Kiểm soát lỗi theo chặng (link-by-link) 66
3.2.3 So sánh cơ chế kiểm soát lỗi đầu cuối - đầu cuối và theo chặng 69
3.2.3.1 So sánh các cơ chế theo chặng và đầu cuối - đầu cuối ở mạng tốc độ thấp 69
3.2.3.2 So sánh các cơ chế theo chặng và đầu cuối - đầu cuối ở mạng tốc độ cao 71
3.3 Hiệu năng của cơ chế điều khiển lưu lượng bằng cửa sổ trượt 73

- 2 -
3.3.1 Mô hình cửa sổ trượt với sự biên nhận từng gói số liệu 74
3.3.1.1 Trường hợp tải rất nặng 75
3.3.1.2 Trường hợp tải xấp xỉ bằng khả năng vận chuyển của đường truyền 77
3.3.2 Mô hình cửa sổ trượt với sự biên nhận ở cuối cửa sổ 78
3.3.2.1 Trường hợp tải rất nặng 79
3.3.2.2 Trường hợp tải xấp xỉ bằng khả năng vận chuyển của đường truyền 81
CHƯƠNG 4 CẢI TIẾN CƠ CHẾ ĐIỀU KHIỂN LƯU LƯỢNG TCP 82
4.1 Các cải tiến đối với giao thức TCP cho mạng có dây 83
4.1.1 Tahoe TCP 83
4.1.2 Reno TCP 84
4.1.3 New-Reno TCP 86
4.1.4 SACK TCP 87
4.1.5 So sánh hiệu năng của Tahoe, Reno, New-Reno và SACK TCP 89

4.2 Đặc tính lỗi của đường truyền không dây 90
4.3 Ảnh hưởng của lỗi đường truyền không dây lên hiệu năng của TCP 91
4.4 Các cơ chế cải thiện hiệu năng TCP trong mạng có đường truyền không dây 94
4.4.1 Che giấu phần mạng hay làm mất gói số liệu do lỗi đường truyền 94

4.4.1.1 Các giải pháp ở tầng Liên kết dữ liệu 94
4.4.1.2 Các giải pháp ở tầng giao vận 96
4.4.2 Thông báo rõ ràng về nguyên nhân mất gói số liệu (ELN và ECN) 97
CHƯƠNG 5 PHÁT LẠI CỤC BỘ THÔNG MINH VÀ SNOOP TCP 100
5.1 Phát lại cục bộ thông minh 100
5.1.1 Thuật toán tính thời gian hết giờ để phát lại cục bộ 103
5.1.2 Đồng hồ phát lại (Retransmission Timer) 104
5.2 Mô hình lỗi (Error Model) của đường truyền không dây 105
5.2.1 Mô hình lỗi đồng đều (Uniform Error Model) 106
5.2.2 Mô hình lỗi Markov hai trạng thái (Two-state Markov Error Model) 106
5.2.3 Mô hình lỗi Markov hai trạng thái cải tiến 107
5.3 Snoop TCP 108
5.3.1 Snoop data 109
5.3.2 Snoop ACKs 110
5.3.3 Phát lại cục bộ thông minh trong Snoop TCP 113
5.3.3.1 Chọn giá trị cho hệ số làm trơn của bộ lọc tính srtt 114
5.3.3.2 Chọn đơn vị thời gian đồng hồ phát lại (snoopTick) và cận dưới của rto 114
5.3.3.3 Đặt giá trị cận trên cho rto bằng cách giới hạn số lần rút lui (backoff) 115
5.4 Lập mô hình mạng mô phỏng để đánh giá hiệu năng của Snoop TCP 117
5.4.1 Thiết lập cấu hình mạng mô phỏng 118
5.4.2 Thiết lập giá trị các tham số của mô hình lỗi được cài đặt trong NS-2 119
5.5 Đánh giá hiệu năng của snoop TCP bằng mô phỏng 120
5.5.1 Xác định thời gian mô phỏng cần thiết 120
5.5.2 Đánh giá hiệu năng của Snoop TCP với các mức độ lỗi đường truyền khác nhau 121
5.5.3 Nghiên cứu ảnh hưởng của đồng hồ phát lại lên hiệu năng của Snoop TCP 123

5.6 So sánh hiệu quả của snoop TCP với một số phương pháp khác 127
KẾT LUẬN 129
PHƯƠNG HƯỚNG NGHIÊN CỨU TIẾP THEO 130

DANH MỤC CÔNG TRÌNH CÔNG BỐ CỦA TÁC GIẢ 131
DANH MỤC TÀI LIỆU THAM KHẢO 132
BẢNG CHÚ GIẢI (Index) 136

- 3 -
MỞ ĐẦU
Mạng Internet đã phát triển bùng nổ trong hơn 20 năm qua; hiện nay, Internet đã
mở rộng thành một liên mạng trên phạm vi toàn cầu và được coi là cơ sở hạ tầng
cho truyền thông của xã hội loài người. Trong mạng Internet, bộ giao thức TCP/IP
đã được sử dụng ngay từ những ngày đầu tiên và giữ vai trò quyết định đối với sự
hoạt động của mạng Internet. Giao thức TCP sử dụng cơ chế điều khiển lưu lượng,
tắc nghẽn và lỗi từ hai đầu của kết nối để vận chuyển thông tin trên Internet một
cách hiệu quả và tin cậy. Trong suốt nhiều năm được sử dụng rộng rãi, các khiếm
khuyết thể hiện ra đã được phát hiện và khắc phục. Chính vì thế, TCP hoạt động rất
tốt trong các mạng kiểu truyền thống: sử dụng các đường truyền có dây với tỉ suất
lỗi bit thấp, tin cậy và các máy tính nối mạng cố định. Trong các mạng như vậy,
TCP coi việc mất gói số liệu là tín hiệu báo tắc nghẽn đã xảy ra và sẽ phản ứng một
cách tích cực để tránh hiện tượng này, bằng cách giảm lưu lượng đưa vào mạng.
Thực tế đòi hỏi phải mở rộng Internet, kết nối các mạng khác nhau vào Internet
và sử dụng nhiều loại môi trường truyền với các đặc tính rất khác nhau về lỗi
truyền, độ trễ lan truyền, tính cân xứng về dải thông của các đường truyền v.v. Thí
dụ, kết nối các mạng không dây với các trạm làm việc có thể di động vào Internet.
Đường truyền không dây có đặc trưng là tỉ suất lỗi bit cao, thất thường, đồng thời
thỉnh thoảng bị đứt đoạn do sự chuyển cuộc gọi khi các máy tính di động. Giao thức
TCP phản ứng với sự mất gói tin do chất lượng đường truyền xấu giống như phản
ứng với hiện tượng tắc nghẽn, đó là giảm lưu lượng đưa vào mạng; phản ứng như

vậy rõ ràng là không thích hợp, làm cho hiệu năng của TCP bị giảm rất trầm trọng.
Để cải thiện hiệu năng của TCP, người ta đã đề xuất và áp dụng nhiều phương
pháp khác nhau; tuy nhiên, có thể chia chúng làm hai loại.
Loại giải pháp thứ nhất: thực hiện che giấu sự mất gói số liệu không phải do tắc
nghẽn, làm cho các đường truyền chất lượng kém thể hiện ra trước bên gửi như các
đường truyền có chất lượng cao hơn, nhưng có dải thông nhỏ hơn. Theo các phương
pháp thuộc loại này, nói chung, bên gửi của kết nối TCP chỉ phát hiện được sự mất
gói số liệu gây ra do tắc nghẽn, do đó không cần phải sửa đổi các giao thức đã được

- 4 -
cài đặt tại bên gửi. Một số trong các công trình nghiên cứu đầu tiên theo hướng này
là [5], [16], [47], [48].
Loại giải pháp thứ hai: thực hiện cải tiến giao thức TCP bằng một số cơ chế, làm
cho bên gửi của kết nối TCP có khả năng phân biệt được nguyên nhân gây ra mất
gói số liệu, nhờ đó tránh được sai lầm dẫn đến làm giảm hiệu năng TCP rất trầm
trọng, đó là thực hiện thuật toán tránh tắc nghẽn khi không xảy ra tắc nghẽn. Các
phương pháp thuộc loại này đều đòi hỏi phải sửa đổi giao thức TCP trên các máy
tính kết nối Internet, kể cả các thiết bị định tuyến (router). Một số trong các công
trình nghiên cứu đầu tiên theo hướng này là [9], [35], [36].
Luận án đi sâu nghiên cứu loại giải pháp thứ nhất, không đòi hỏi phải thay đổi
giao thức TCP trên mạng Internet truyền thống.
Theo phương pháp I-TCP [5], [47], kết nối TCP được chia làm hai kết nối tại
trạm cơ sở, là cửa ngõ nối mạng Internet với mạng không dây; một kết nối đi qua
chặng không dây; kết nối kia đi qua phần mạng có dây. Phương pháp I-TCP cải
thiện được hiệu năng TCP, ưu điểm chính của nó là tính đơn giản; tuy nhiên nó có
nhược điểm rất lớn là mâu thuẫn với các cơ chế điều khiển kiểu đầu cuối - đầu cuối
của TCP, do đó có thể làm mất hoặc giảm tác dụng của các cơ chế này.
Phương pháp được đề xuất trong [48] là phát lại nhanh trong trường hợp kết nối
bị gián đoạn do sự chuyển cuộc gọi, nó cải thiện đáng kể hiệu năng của TCP; tuy
nhiên, phương pháp này có nhược điểm lớn là đòi hỏi phải sửa đổi giao thức liên

mạng mobile IP, làm cho nó có khả năng phát tín hiệu báo sự kết thúc việc chuyển
cuộc gọi; ngoài ra giao thức TCP trên các máy tính đầu cuối cũng phải sửa đổi.
Chúng tôi chọn phương pháp snoop TCP được đề xuất trong [16] (1995), thuộc
loại giải pháp thứ nhất, nhằm cải thiện hiệu năng của giao thức TCP trong mạng có
đường truyền không dây là chặng cuối cùng của kết nối giữa người gửi và người
nhận. Giải pháp này có hai ưu điểm nổi bật là: không đòi hỏi phải thay đổi các cơ
chế điều khiển đầu cuối - đầu cuối của TCP và không cần phải sửa đổi bộ giao thức
TCP/IP đã được cài đặt trên các máy tính của mạng Internet. Theo giải pháp Snoop
TCP, một chương trình đặc biệt gọi là Snoop agent sẽ được cài đặt tại máy tính nằm

- 5 -
ở cửa ngõ nối Internet với mạng không dây. Agent này sẽ giám sát các gói số liệu
và biên nhận của kết nối TCP đi qua nó, để thực hiện phát lại một cách thông minh
các gói số liệu bị mất trên chặng đường truyền không dây. Hiệu quả của việc phát
lại chủ yếu dựa trên ước lượng thời gian khứ hồi cục bộ trên chặng này, trong đó
việc chọn đơn vị thời gian của đồng hồ phát lại có ý nghĩa quyết định. Chúng tôi đã
nghiên cứu kỹ các thuật toán ước lượng thời gian khứ hồi thông minh; đã nghiên
cứu kỹ các đặc điểm lỗi của đường truyền không dây và ảnh hưởng của nó lên hiệu
năng TCP. Dựa trên các kết quả nghiên cứu đó, chúng tôi đã nêu các đề xuất có
tính phương pháp luận để tính ước lượng thời gian khứ hồi thông minh cho chặng
không dây. Các đề xuất cụ thể của chúng tôi gồm có: 1/ Chọn đơn vị thời gian
của đồng hồ phát lại của snoop agent bằng 2 lần thời gian khứ hồi trên chặng
không dây khi đường truyền tốt; 2/ Chọn cận dưới của thời gian hết giờ để phát
lại (rto) đúng bằng đơn vị thời gian của đồng hồ; 3/ Chọn cận trên của thời gian
hết giờ để phát lại bằng cách giới hạn số lần rút lui (backoff).
Hiệu năng của Snoop TCP có áp dụng đề xuất cải tiến của chúng tôi được so
sánh với Snoop TCP chưa cải tiến cũng như TCP thông thường. Chúng tôi đánh giá
hiệu năng bằng phương pháp mô phỏng, sử dụng phần mềm mô phỏng mạng NS, đó
là bộ mô phỏng mạng được sử dụng rất phổ biến, đặc biệt là trong các trường đại
học và viện nghiên cứu ở Mỹ cũng như ở nhiều quốc gia khác. Kết quả nghiên cứu

bằng mô phỏng của chúng tôi đã chỉ ra rằng, so với TCP thông thường, Snoop TCP
(chưa cải tiến) có thể cải thiện thông lượng đến hơn 400%, trong trường hợp mạng
WAN có đường truyền không dây. Với cùng mạng mô phỏng như vậy, Snoop TCP
có áp dụng đề xuất cải tiến của chúng tôi có hiệu năng cao hơn nữa, đạt tới hơn
150% so với Snoop TCP chưa cải tiến.

Mục đích chính của Luận án này là đóng góp vào các nghiên cứu phương pháp
đánh giá và cải thiện hiệu năng giao thức TCP cho mạng máy tính có đường truyền
không dây. Để thực hiện mục tiêu chính, chúng tôi còn nghiên cứu một số vấn đề
khác có liên quan trực tiếp, hỗ trợ cho nó, đó là:

- 6 -
1. Các cơ chế điều khiển lưu lượng và tắc nghẽn trong giao thức TCP.
2. Các cải tiến đối với cơ chế điều khiển lưu lượng và tắc nghẽn trong TCP.
3. Đặc tính lỗi của đường truyền không dây và các Mô hình lỗi (Error Model).
4. Phương pháp đánh giá hiệu năng mạng bằng mô hình Giải tích và mô phỏng.

Luận án gồm phần mở đầu, năm chương và kết luận. Nội dung chính của các
chương được trình bày tóm tắt dưới đây.
Chương 1: Các vấn đề cơ bản về điều khiển lưu lượng và tắc nghẽn trong giao
thức TCP; việc kết nối các mạng không dây với Internet và các vấn đề nảy sinh.
Chương 2 trình bày tầm quan trọng của việc đánh giá hiệu năng mạng, các độ đo
hiệu năng thông dụng và các phương pháp chính đánh giá hiệu năng mạng.
Chương 3 trình bày phương pháp đánh giá hiệu năng mạng bằng mô hình hàng
đợi. Trong mục 3.2, chúng tôi trình bày một kết quả nghiên cứu, sử dụng lý thuyết
Hàng đợi để tính toán định lượng hiệu năng hai cơ chế kiểm soát lỗi đầu cuối - đầu
cuối (end-to-end) và kiểm soát lỗi theo chặng (link-by-link). Thông qua việc so
sánh kết quả, chúng tôi đã rút ra được một số kết luận hữu ích, trong đó có một số
kết luận minh chứng cho tính hợp lý của giải pháp Snoop TCP.
Chương 4 trình bày các cải tiến trong cơ chế điều khiển lưu lượng của giao thức

TCP; đặc tính lỗi của đường truyền không dây và ảnh hưởng của nó lên hiệu năng
của TCP. Nội dung chương 4 là cơ sở trực tiếp cho các nghiên cứu ở chương 5.
Chương 5 trình bày các nghiên cứu sâu về giải pháp phát lại cục bộ thông minh
và snoop TCP. Tác giả luận án cũng trình bày các đề xuất về tính ước lượng thời
gian khứ hồi trên chặng không dây và đánh giá hiệu quả của chúng bằng mô phỏng.
Ba kết quả nghiên cứu bằng mô phỏng là: 1/ Xác định thời gian mô phỏng cần thiết
đối với mạng mô phỏng Snoop TCP; 2/ Đánh giá hiệu năng của Snoop TCP ứng với
các mức độ lỗi khác nhau của đường truyền không dây; 3/ Nghiên cứu ảnh hưởng
của đồng hồ phát lại lên hiệu năng của Snoop TCP, xác định được giá trị tốt nhất
của đơn vị thời gian của đồng hồ phát lại.


- 7 -
Luận án đã được trình bày, thảo luận và thông qua tại Bộ môn Mạng và Truyền
thông máy tính, Khoa Công nghệ, Đại học Quốc gia Hà nội; đã được bảo vệ tại HỘI
ĐỒNG ĐÁNH GIÁ CẤP CƠ SỞ LUẬN ÁN TIẾN SĨ, ngày 16 tháng 5 năm 2003.
Một số kết quả nghiên cứu của luận án đã được báo cáo tại Hội thảo Quốc gia “Các
vấn đề chọn lọc của Công nghệ Thông tin” (Hải Phòng, 6/2001); Hội thảo Khoa học
Quốc gia lần thứ nhất: ICT.rda (Hà nội, 02/2003) và trình bày trong hai buổi semina
tại trung tâm CDMC (Center for Distributed and Mobile Computing), Đại học
Cincinnati, Hoa Kỳ. Các kết quả nghiên cứu chính của luận án đã được công bố
trong [1], [2], [3], [42], [43]; trong đó [42] là nội dung chính của chương 4, đã được
báo cáo tại semina của trung tâm CDMC (14/5/2002); [43] là một phần nội dung
của chương 5, đã được báo cáo tại semina của trung tâm CDMC (02/8/2002).

Tác giả xin bày tỏ lòng biết ơn chân thành đối với Khoa Công nghệ, Đại học
Quốc gia Hà Nội, đã tạo điều kiện thuận lợi và giúp đỡ nhiều mặt để tác giả hoàn
thành được luận án. Xin chân thành cám ơn các đồng nghiệp ở Khoa Công nghệ đã
động viên, giúp đỡ tác giả trong thời gian qua.
Tác giả xin bày tỏ lòng biết ơn chân thành đối với GS. VS. Nguyễn Văn Hiệu,

Chủ nhiệm Khoa Công nghệ, Đại học Quốc gia Hà Nội, đã tạo cơ hội tốt để tác giả
được đến nghiên cứu khoa học tại một Đại học lớn của Hoa Kỳ trong thời gian đang
thực hiện luận án, từ tháng 2 đến tháng 8 năm 2002.
Tác giả xin bày tỏ lòng biết ơn chân thành đối với Đại học Cincinnati, Hoa kỳ, đã
tạo điều kiện thuận lợi để tác giả được đến tham gia các hoạt động nghiên cứu khoa
học như một thành viên của Trung tâm Tính toán Phân tán và Di động, Khoa Công
nghệ thông tin, Trường Đại học Công nghệ (Center for Distributed and Mobile
Computing, Department of Electrical and Computer Engineering and Computer
Science, College of Engineering, University of Cincinnati).
Tác giả xin bày tỏ lòng biết ơn sâu sắc đối với PGS. TS. Vũ Duy Lợi và PGS.
Nguyễn Quốc Toản đã tận tình hướng dẫn, chỉ bảo và cho nhiều lời khuyên quý báu
trong suốt quá trình tác giả thực hiện luận án.

- 8 -
CHƯƠNG 1 GIỚI THIỆU CHUNG
1.1 Sự phát triển của mạng Internet
Năm 1967, Robert L. G. đã đề xuất một mạng máy tính thí nghiệm, sau đó trở
thành mạng ARPANET (Advanced Research Projects Agency Network) của Bộ
Quốc phòng Mỹ. Ngay từ thời kỳ đầu, các nghiên cứu đã cho biết rằng, nếu sử dụng
kỹ thuật chuyển mạch gói cho ARPANET sẽ đem lại hiệu quả cao hơn các phương
pháp khác về nhiều phương diện: tính kinh tế, tính sẵn sàng sử dụng và tính hữu
dụng. Chính điều này đã thúc đẩy sự nghiên cứu về chuyển mạch gói và đến đầu
năm 1969, Bộ Quốc phòng Mỹ đã ký hợp đồng triển khai thực hiện mạng
ARPANET với hãng BBN (Bolt, Beranek, and Newman) có trụ sở đóng tại
Massachusetts. Đến tháng 9 năm 1969, mạng máy tính chuyển mạch gói đầu tiên
trên thế giới ra đời, sau đó đã phát triển rất nhanh chóng, kết nối mạng của các
trường đại học, các trung tâm nghiên cứu của chính phủ và của các hãng công
nghiệp trên khắp nước Mỹ. Mạng ARPANET cung cấp các dịch vụ truyền thông,
cho phép truy cập từ xa tới tất cả tài nguyên của hệ thống, do đó đem lại nhiều lợi
ích cho Bộ Quốc phòng Mỹ cũng như cho cộng đồng khoa học.

Trong quá trình nghiên cứu và triển khai mạng ARPANET, nhiều tư tưởng và
phương pháp mới lần đầu tiên được đề xuất và đưa vào thực hiện, trong đó có các
giao thức được phân lớp, mạng có các đường trục và các đường rẽ nhánh, điều
khiển lưu lượng (flow control), đặc tính thứ lỗi; với các đặc tính này, mạng vẫn có
khả năng hoạt động được khi có một số nút hoặc đường truyền bị hỏng mà không
cần sự can thiệp của người điều hành. Ngoài ra, những người nghiên cứu và thực
hiện mạng ARPANET đã phổ biến việc sử dụng các mô hình Giải tích và mô hình
Mô phỏng để dự đoán và đánh giá hiệu năng mạng. Trong số các nhà khoa học
tham gia dự án ARPANET phải kể đến L. Kleinrock và các cộng sự của ông ở Đại
học California, Los Angeles (UCLA).
Mạng ARPANET có ảnh hưởng to lớn đến sự tiến hoá của các mạng thương mại,
mô hình tham chiếu được sử dụng trong mạng ARPANET là tiền thân của tất cả các

- 9 -
loại mạng máy tính, kể cả mạng Internet ra đời sau này. Về sau, khi các mạng vệ
tinh và vô tuyến ra đời và kết nối vào ARPANET thì các giao thức đang được sử
dụng trong ARPANET không đáp ứng được yêu cầu liên mạng, do đó cần phải có
các mô hình kiến trúc mới, có khả năng liên kết nhiều mạng với nhau một cách
trong suốt. Kiến trúc này được gọi là mô hình tham chiếu TCP/IP, tên này được đặt
theo tên của hai giao thức cơ bản của nó là TCP và IP.
1.2 Kiến trúc mạng Internet
Các mạng máy tính hiện đại được thiết kế bằng cách phân chia cấu trúc ở mức độ
cao nhằm làm giảm độ phức tạp của việc thiết kế; mạng được chia thành các tầng
(layer), mỗi tầng được xây dựng dựa trên tầng bên dưới nó. Trong các mạng khác
nhau, số tầng, tên các tầng, nội dung của các tầng và chức năng của các tầng có thể
khác nhau; tuy nhiên, mục đích của mỗi tầng là sử dụng các dịch vụ do các tầng bên
dưới cung cấp, để cung cấp những dịch vụ nhất định cho các tầng cao hơn, sao cho
các tầng này khi sử dụng các dịch vụ của nó, không cần phải quan tâm tới các thao
tác chi tiết mà các dịch vụ phải thực hiện.
Để các mạng máy tính khác nhau có thể truyền thông với nhau, chúng cần phải

tuân theo các chuẩn. Người ta đã xây dựng nên các chuẩn như vậy, chúng còn được
gọi là mô hình tham chiếu, làm cơ sở chung cho các nhà thiết kế dựa vào khi thiết
kế mạng. Hai mô hình tham chiếu quan trọng là ISO OSI và TCP/IP sẽ được trình
bày ở các phần dưới đây.
1.2.1 Mô hình tham chiếu ISO OSI
Mô hình mạng máy tính này do Tổ chức Tiêu chuẩn Quốc tế ISO (International
Standard Organization) đề nghị năm 1983, được gọi là mô hình tham chiếu ISO OSI
(ISO Open Systems Interconnection Reference Model), thường được gọi ngắn gọn
là mô hình OSI. Đây là bước tiến đầu tiên tới sự chuẩn hoá quốc tế các giao thức
khác nhau về truyền thông, giải quyết việc kết nối các hệ thống mở, là các hệ thống
tuân theo các chuẩn được chỉ rõ, do đó các hệ thống này có khả năng truyền thông

- 10 -
với các hệ thống khác tuân theo các chuẩn giống nó. Mô hình OSI có bảy tầng,
được minh hoạ trên hình 1.1.

Hình 1.1 Mô hình tham chiếu OSI
Tầng Vật lý (Physical Layer). Tầng vật lý giải quyết các vấn đề ghép nối cơ khí,
điện và giao thức để có thể khởi tạo, duy trì và kết thúc các liên kết vật lý giữa các
thiết bị truyền thông. Tầng này liên quan đến việc truyền dòng bit giữa các máy
bằng kênh truyền thông vật lý, không xét đến ý nghĩa và cấu trúc của dòng bit.
Tầng Liên kết dữ liệu (Data Link Layer). Nhiệm vụ chính của tầng này là thiết
lập, duy trì, huỷ bỏ các liên kết dữ liệu, kiểm soát lỗi truyền, điều khiển lưu lượng,
điều khiển truy cập môi trường truyền thông.

- 11 -
Tầng Mạng (Network Layer). Tầng mạng phải giải quyết nhiều vấn đề phức tạp,
như: định tuyến, giao tiếp giữa các mạng và điều khiển tắc nghẽn (congestion
control); trong đó định tuyến là vấn đề quan trọng nhất.
Tầng Giao vận (Transport Layer). Tầng này thực hiện việc truyền tin, điều

khiển lưu lượng và điều khiển tắc nghẽn đầu cuối - đầu cuối (end-to-end), thực hiện
ghép kênh và phân kênh.
Tầng Phiên (Session Layer). Tầng phiên tổ chức và đồng bộ việc trao đổi dữ
liệu giữa các tiến trình ứng dụng, cho phép người sử dụng trên các máy khác nhau
thiết lập, duy trì, huỷ bỏ, đồng bộ phiên truyền thông giữa họ, đăng nhập từ xa vào
những hệ thống chia sẻ thời gian.
Tầng Trình dữ liệu (Presentation Layer). Tầng này giải quyết các vấn đề liên
quan đến cú pháp và ngữ nghĩa của thông tin được truyền, làm cho các máy tính sử
dụng các biểu diễn dữ liệu khác nhau có thể truyền thông với nhau. Tầng này cũng
thực hiện các dịch vụ như nén hoặc mã hoá dữ liệu.
Tầng Ứng dụng (Application Layer). Tầng này có nhiệm vụ tạo ra giao diện
thuận tiện giữa người sử dụng và môi trường truyền tin; cung cấp các dịch vụ hỗ trợ
cho các ứng dụng không thuộc mô hình OSI, thí dụ: thư điện tử (email), truyền tệp
(ftp), WWW
Truyền dữ liệu trong mô hình OSI. Khi ứng dụng X trên một máy tính cần gửi
dữ liệu cho ứng dụng Y trên một máy tính khác trên mạng, nó sẽ trao dữ liệu cho
tầng ứng dụng, tầng ứng dụng có thể gắn thêm một khối dữ liệu có cấu trúc xác
định, gọi là header, vào đầu gói số liệu của nó rồi gửi xuống tầng trình dữ liệu. Tầng
trình dữ liệu có thể chuyển đổi gói số liệu này theo các cách khác nhau và có thể bổ
sung header của nó rồi gửi kết quả xuống tầng phiên bên dưới. Đối với tầng này, nó
không phân biệt header của tầng trên với dữ liệu trong gói số liệu mà nó nhận được.
Quá trình này cứ tiếp tục cho tới khi dữ liệu truyền xuống tầng vật lý, tại đó dữ liệu
mới thực sự được truyền tới máy nhận. Tại máy nhận, các header được lần lượt loại
bỏ khi gói số liệu đi qua các tầng từ dưới lên trên, cho tới khi nó đi đến ứng dụng
nhận Y. Tầng nào phát hiện ra lỗi thì yêu cầu phát lại ngay tại tầng đó.

- 12 -
Đơn vị dữ liệu theo mô hình tham chiếu OSI. Tại mỗi tầng của mô hình OSI,
các thực thể ngang hàng có thể trao đổi với nhau các đơn vị dữ liệu. Mỗi đơn vị dữ
liệu bao gồm một trường dữ liệu và một phần gọi là header, có vai trò như chiếc

“phong bì” để chứa trường dữ liệu. Header là phần đầu của mỗi đơn vị dữ liệu, chứa
các địa chỉ cần thiết để có thể gửi đơn vị này tới đích, ngoài ra, nó còn chứa các
thông tin điều khiển. Tại mỗi tầng của mô hình, đơn vị dữ liệu này thường có một
tên gọi riêng, chẳng hạn, tại tầng Liên kết dữ liệu, là khung tin (frame), tại tầng
mạng, là gói số liệu (packet), tại tầng giao vận, là phân đoạn (segment). Tuy nhiên,
trong rất nhiều tài liệu, người ta hay dùng một thuật ngữ chung là gói số liệu; chúng
tôi cũng sẽ sử dụng thuật ngữ gói số liệu theo nghĩa như vậy.
1.2.2 Mô hình tham chiếu TCP/IP
Hình 1.2 trình bày hai mô hình tham chiếu TCP/IP và OSI để tiện so sánh.

Hình 1.2 Mô hình tham chiếu TCP/IP và mô hình tham chiếu OSI
Tầng Internet
Tầng Internet đôi khi được gọi là tầng IP, có chức năng tương tự tầng mạng trong
mô hình OSI. Nhiệm vụ của tầng Internet là định tuyến gói số liệu, điều khiển lưu
lượng và điều khiển tắc nghẽn. Mỗi gói số liệu có thể đi đến đích theo các con
đường khác nhau; tại đích, thứ tự nhận các gói số liệu có thể khác với thứ tự lúc
chúng được phát đi từ nguồn, do đó tầng Giao vận trên nó phải giải quyết vấn đề
thứ tự các gói số liệu. Tầng Internet định nghĩa một khuôn dạng gói số liệu và giao
thức chính là giao thức IP.

- 13 -
Tầng giao vận
Tầng này phải được thiết kế sao cho các thực thể ngang hàng ở máy nguồn và
máy đích có thể truyền thông với nhau, tương tự như trong mô hình OSI. Tại tầng
này, người ta định nghĩa hai giao thức kiểu đầu cuối - đầu cuối là TCP
(Transmission Control Protocol) và UDP (User Datagram Protocol).
TCP là giao thức hướng kết nối, bảo đảm, nó vận chuyển dòng byte sinh ra từ
máy (nguồn) tới một máy tuỳ ý khác (đích) trong liên mạng mà không có lỗi. TCP
phân mảnh dòng byte từ các tầng trên đi xuống thành các gói số liệu riêng biệt rồi
chuyển từng gói số liệu này xuống cho tầng Internet. Tại máy đích, tiến trình TCP

nhận và thực hiện lắp ráp các gói số liệu nhận được lại thành dòng byte rồi chuyển
lên tầng trên. TCP cũng có các chức năng điều khiển lưu lượng và điều khiển tắc
nghẽn; các chức năng này sẽ được nghiên cứu kỹ tại mục 1.3 của chương này.
UDP là giao thức không hướng kết nối, không bảo đảm (không có sự biên nhận
cho gói số liệu UDP), dành cho các ứng dụng không muốn sử dụng các chức năng
điều khiển lưu lượng và phân phát các gói số liệu đúng thứ tự của TCP mà muốn tự
cung cấp các chức năng này. UDP được sử dụng rộng rãi trong các ứng dụng kiểu
dùng một lần, khách/chủ và các ứng dụng trong đó việc phân phát tin nhanh chóng
quan trọng hơn việc phân phối tin chính xác. Mối quan hệ giữa IP, TCP và UDP
được thể hiện trên hình 1.3.

Hình 1.3 Các giao thức và các mạng trong mô hìnhTCP/IP ban đầu

- 14 -
Tầng Ứng dụng
Tầng ứng dụng chứa tất cả các giao thức bậc cao, hỗ trợ ứng dụng. Trong các mô
hình đầu tiên, tầng này bao gồm các giao thức TELNET (virtual terminal protocol),
FTP (File Transfer Protocol) và SMTP (Simple Mail Transfer Protocol) v.v.
Tầng Host-to-Network
Bên dưới tầng Internet là một khoảng trống lớn, mô hình tham chiếu TCP/IP thực
tế hầu như không nói gì về tầng này, ngoài việc chỉ ra rằng máy tính (host) phải nối
với mạng bằng cách sử dụng một số giao thức để có thể gửi các gói số liệu IP đi
trên mạng. Tầng này không được định nghĩa và nó khác nhau trên các máy tính
khác nhau cũng như trên các mạng khác nhau [8].
1.3 Điều khiển lưu lượng và điều khiển tắc nghẽn
Nói chung, nếu không có một cơ chế điều khiển nào đối với các lưu lượng đến
mạng thì tắc nghẽn là điều chắc chắn sẽ xảy ra. Chính vì vậy, cần phải có các quy
tắc chi phối việc nhận các lưu lượng từ bên ngoài đi vào mạng, các quy tắc này
thường được gọi là các cơ chế điều khiển lưu lượng, việc thực hiện các cơ chế này
được gọi là điều khiển lưu lượng. Nếu các cơ chế điều khiển lưu lượng không được

triển khai thực hiện đúng đắn, nó có thể đưa mạng đến trạng thái bị tắc nghẽn, đó là
trạng thái khi lưu lượng đến mạng tăng lên, thông lượng vận chuyển của mạng lại
giảm đi. Thậm chí tình trạng tắc nghẽn có thể trầm trọng đến mức mạng bị nghẹt
hoàn toàn, thông lượng vận chuyển của mạng tụt xuống bằng không, trạng thái này
thường được gọi là deadlock [39], [41].
1.3.1 Cơ bản về điều khiển lưu lượng và điều khiển tắc nghẽn
1.3.1.1 Khái niệm
Điều khiển lưu lượng liên quan đến việc vận chuyển giữa một người gửi đã biết
nào đó và một người nhận. Nhiệm vụ của nó là đảm bảo rằng bên gửi có tốc độ
nhanh không thể tiếp tục truyền dữ liệu nhanh hơn mức mà bên nhận có thể tiếp thu
được. Điều khiển lưu lượng luôn luôn liên quan đến một sự phản hồi trực tiếp từ

- 15 -
phía người nhận đến người gửi để báo cho bên gửi về khả năng nhận số liệu thực
của bên nhận.
Điều khiển tắc nghẽn thực hiện nhiệm vụ đảm bảo cho mạng có khả năng vận
chuyển lưu lượng đưa vào, đó là một vấn đề toàn cục, liên quan đến hành vi của
mọi nút mạng, quá trình chứa và chuyển tiếp trong mỗi nút mạng và các yếu tố khác
có khuynh hướng làm giảm thông lượng của mạng.
Điều khiển lưu lượng và điều khiển tắc nghẽn là hai khái niệm khác nhau, nhưng
liên quan chặt chẽ với nhau. Điều khiển lưu lượng là để tránh tắc nghẽn, còn điều
khiển tắc nghẽn là để giải quyết vấn đề tắc nghẽn khi nó xuất hiện hoặc có dấu hiệu
sắp xảy ra. Trong thực tế triển khai thực hiện các thuật toán điều khiển lưu lượng và
điều khiển tắc nghẽn, nhiều khi cả hai thuật toán này cùng được cài đặt trong một
giao thức, thể hiện ra như là một thuật toán duy nhất, thí dụ trong giao thức TCP
[26], [27]. Trong nhiều tài liệu thuộc lĩnh vực mạng máy tính, hai khái niệm này
được sử dụng như nhau và được coi là đồng nghĩa. Trong các phần sau của Luận án
này, tác giả sẽ theo quan điểm đó, các vấn đề về điều khiển lưu lượng và điều khiển
tắc nghẽn sẽ được trình bày chung, với tên gọi điều khiển lưu lượng.
Các tầng có thể thực hiện điều khiển lưu lượng

Có thể thực hiện điều khiển lưu lượng ở một vài tầng trong mạng, thí dụ:
Điều khiển lưu lượng ở tầng Giao vận: thường được gọi là điều khiển lưu lượng
đầu cuối - đầu cuối: nhằm tránh cho bộ đệm của quá trình nhận tại đích khỏi bị tràn.
Điều khiển lưu lượng trên từng chặng: nhằm tránh cho từng đường truyền khỏi bị
tắc nghẽn. Tuy nhiên, việc điều khiển lưu lượng trên từng chặng sẽ có ảnh hưởng
đến các chặng khác, do đó nó cũng có tác dụng tránh tắc nghẽn cho các đường
truyền có nhiều chặng. Trong mô hình tham chiếu OSI, điều khiển lưu lượng theo
từng chặng được thực hiện ở tầng Liên kết dữ liệu và tầng Mạng.
1.3.1.2 Điều khiển lưu lượng theo cơ chế cửa sổ trượt
Đây là một trong các cơ chế điều khiển lưu lượng được sử dụng rộng rãi nhất, có
thể áp dụng tại một hay nhiều tầng của mạng, thường là tầng Liên kết dữ liệu, tầng
Mạng hay tầng Giao vận.

- 16 -
Cơ chế điều khiển lưu lượng bằng cửa sổ trượt cho phép bên gửi phát đi liên tiếp
một số gói số liệu nhất định rồi mới phải dừng lại chờ thông báo về kết quả nhận,
gọi là biên nhận, trước khi tiếp tục phát. Bên nhận điều khiển lưu lượng bằng cách
kìm lại hay gửi ngay biên nhận, đó là một gói số liệu điều khiển, hoặc một gói số
liệu có chứa thông tin điều khiển, mà bên nhận dùng để báo cho bên gửi biết về việc
đã nhận một hay một số gói số liệu như thế nào. Tại mọi thời điểm, bên gửi phải ghi
nhớ một danh sách chứa số thứ tự liên tiếp các gói số liệu mà nó được phép gửi đi,
các gói số liệu này được gọi là nằm trong cửa sổ gửi. Tương tự như vậy, bên nhận
cũng duy trì một danh sách gọi là cửa sổ nhận, tương ứng với các gói số liệu mà nó
được phép nhận. Hai cửa sổ gửi và nhận không nhất thiết phải có độ lớn bằng nhau.
Người ta đã đề xuất và sử dụng một số phương thức quản lý cửa sổ khác nhau,
thí dụ: biên nhận riêng rẽ cho mỗi gói số liệu nhận được, biên nhận ở cuối cửa sổ,
biên nhận ở đầu cửa sổ v.v. Dưới đây sẽ trình bày hai cách đã được sử dụng phổ
biến trong số các cách đã được nêu [31], [41].
Để việc phân tích sự điều khiển lưu lượng theo cơ chế cửa sổ được thuận lợi,
chúng tôi sử dụng một số ký hiệu cho các tham số nêu trong bảng 1.1.

Bảng 1.1 Định nghĩa các tham số
T
t
Thời gian truyền (transmit) một gói số liệu.
T
p
Thời gian truyền một biên nhận, là tín hiệu cho phép tiếp tục truyền.
τ
Thời gian trễ lan truyền.
W Kích thước cửa sổ, đơn vị là gói số liệu.
d
Thời gian từ khi bắt đầu truyền gói số liệu đầu tiên trong cửa sổ, cho đến khi
nhận được tín hiệu cho phép truyền tiếp.

Biên nhận từng gói số liệu
Theo cách quản lý này, mỗi khi nhận được một gói số liệu, bên nhận sẽ gửi một
biên nhận cho bên gửi. Cửa sổ gửi tương ứng với các gói số liệu đã gửi đi nhưng
chưa được biên nhận (hình 1.4a). Khi có một gói số liệu mới từ tầng trên chuyển
xuống để gửi đi, nó sẽ được gán số thứ tự lớn nhất tiếp theo, do đó mép trên của cửa

- 17 -
sổ gửi sẽ tăng thêm 1. Nếu cửa sổ tăng tới cực đại thì tiến trình truyền ở tầng trên bị
chặn lại, không thể truyền các gói số liệu xuống nữa, cho đến khi có chỗ trống trong
vùng nhớ đệm. Mỗi gói số liệu sau khi đến đích sẽ được bên nhận biên nhận một
cách riêng rẽ. Khi biên nhận về đến bên gửi, mép dưới của cửa sổ gửi sẽ được tăng
thêm 1, làm cho danh sách các gói số liệu đã truyền nhưng còn chờ biên nhận giảm
đi một phần tử, đồng thời vùng nhớ tương ứng với phần tử đó cũng được giải phóng
để cấp phát cho một gói số liệu mới (hình 1.4b, c). Bằng cách này, cửa sổ gửi luôn
ghi nhớ được danh sách các gói số liệu còn chưa được biên nhận. Vì các gói số liệu
trong cửa sổ gửi có thể bị hỏng hoặc mất trên đường truyền, nên bên gửi phải giữ lại

bản sao của chúng trong bộ nhớ đệm để phát lại nếu sau một khoảng thời gian nhất
định vẫn không nhận được biên nhận.

Hình 1.4 Điều khiển lưu lượng bằng cửa sổ trượt, biên nhận từng gói số liệu.
a. Trạng thái ban đầu b. Gói số 0 được biên nhận c. Gói số 1 được biên nhận
Các gói số liệu nằm ngoài cửa sổ nhận nếu đến sẽ bị loại bỏ. Khi nhận được một
gói số liệu có số thứ tự bằng mép dưới của cửa sổ, nó sẽ được truyền cho tầng trên,
bên nhận sinh ra một biên nhận gửi tới người gửi và tăng cửa sổ lên một ô. Nếu kích
thước cửa sổ nhận bằng 1, có nghĩa là nó chỉ chấp nhận các gói số liệu đến theo
đúng thứ tự. Nếu khác 1 thì không phải như vậy, trong trường hợp này, bên nhận sẽ
giữ gói số liệu đến không đúng thứ tự trong bộ đệm, chờ nhận đủ các gói số liệu
trong cửa sổ rồi mới chuyển các gói số liệu lên tầng trên theo thứ tự mà bên gửi đã
gửi đi. Khoảng thời gian chờ này luôn được giới hạn.


- 18 -
Biên nhận ở cuối cửa sổ
Đây là cách đơn giản nhất, bên nhận sẽ phát ra một biên nhận sau khi nhận được
tất cả các gói số liệu trong cửa sổ nhận. Hình 1.5 minh hoạ cho phương pháp này,
trong đó nút A truyền thông với nút B, sử dụng một giao thức tựa như giao thức
HDLC, kích thước cửa sổ gửi và cửa sổ nhận ban đầu bằng 3. Các gói số liệu đi trên
mạng được biểu diễn bằng các mũi tên, kiểu của gói số liệu được ghi bên cạnh mũi
tên, ý nghĩa như sau [31]:

Hình 1.5 Điều khiển lưu lượng bằng cửa sổ trượt, biên nhận ở cuối
cửa sổ. Kích thước cửa sổ nhận và gửi ban đầu bằng 3

I n.m: là gói số liệu, với trường số thứ tự gói số liệu N(S) = n, trường biên nhận
N(R) = m. Bên B cho gói số liệu của nó “cõng” (“piggyback”) biên nhận tới bên
A, việc này giúp nâng cao hiệu quả sử dụng đường truyền. Tất nhiên, bên A

cũng có thể biên nhận các gói số liệu mà B gửi cho nó bằng cách trên.
• RNR 4: là gói số liệu điều khiển, B báo cho A rằng, lúc này nó không thể nhận
tiếp các gói số liệu của A, đồng thời biên nhận cho các gói số liệu có số thứ tự
nhỏ hơn hoặc bằng 3. Khi nhận được tín hiệu này, A sẽ phải ngừng gửi, chờ cho
đến khi nhận được tín hiệu cho phép gửi tiếp của B.
• RR 4: là gói số liệu điều khiển, B báo cho A rằng, lúc này nó sẵn sàng nhận tiếp
các gói số liệu của A, bắt đầu từ gói số 4.

- 19 -
Giả sử rằng bên gửi luôn có sẵn dữ liệu để gửi, còn bên nhận cũng gửi biên nhận
ngay sau khi nhận được gói số liệu cuối cùng trong cửa sổ nhận. Chúng ta có thể
tính được thông lượng trung bình lớn nhất có thể đạt được, dựa trên hình 1.6:
RR
e
d
WT
t
= (1-1)
với d = WT
t
+ T
p
+ 2τ và R là dung lượng đường truyền giữa A và B.

Hình 1.6 Điều khiển lưu lượng bằng cửa sổ trượt, biên
nhận ở cuối cửa sổ; kích thước cửa sổ W=3.
So với cách biên nhận từng gói số liệu, rõ ràng là số lượng biên nhận giảm đi, từ
một biên nhận/một gói số liệu, xuống còn một biên nhận/một cửa sổ. Thí dụ, nếu
kích thước cửa sổ W=8, thì số biên nhận giảm đi 8 lần. Tuy nhiên, chúng ta sẽ phải
trả giá bằng việc thông lượng truyền bị giảm đi. Kết luận này sẽ được làm sáng tỏ

bằng các phân tích định lượng, tại Chương 3, mục 3.3.
1.3.1.3 Điều khiển tắc nghẽn
Tắc nghẽn
Trong mạng máy tính, tắc nghẽn xảy ra khi số lượng gói số liệu đến nút mạng
vượt quá khả năng xử lý của nó hoặc vượt quá khả năng vận tải của các đường
truyền ra, điều đó dẫn đến việc thông lượng của mạng bị giảm đi khi lưu lượng đến
mạng tăng lên. Hiện tượng tắc nghẽn có thể xảy ra ở một hoặc một số nút mạng,
hay trên toàn mạng và được miêu tả trên hình 1.7.

- 20 -

Hình 1.7 Sự xuất hiện tắc nghẽn trong mạng
Khi số lượng gói số liệu đến mạng còn tương đối nhỏ, nằm trong khả năng vận
tải của nó, chúng sẽ được phân phát đi hết, số lượng gói số liệu được chuyển đi tỉ lệ
thuận với số lượng gói số liệu đến mạng. Do luôn có một tỉ lệ gói số liệu phải phát
lại do bị lỗi trong quá trình vận chuyển, lưu lượng mà mạng thực sự phải vận
chuyển nhìn chung lớn hơn lưu lượng đi qua mạng (thông lượng).
Khi lưu lượng đến cao quá một mức nào đó, các nút mạng không còn đủ khả
năng chứa và chuyển tiếp các gói số liệu, do đó các nút mạng bắt đầu phải loại bỏ
các gói số liệu. Bên gửi sẽ phát lại các gói số liệu không được biên nhận sau một
khoảng thời gian nhất định, gọi là thời gian hết giờ. Nếu lưu lượng đến mạng tiếp
tục tăng lên nữa, tỉ lệ gói số liệu phát lại trên tổng số gói số liệu trong mạng có thể
tăng đến 100%, nghĩa là không có gói số liệu nào được phân phát đi cả, thông lượng
của mạng giảm xuống bằng không, mạng bị nghẹt hoàn toàn.
Một số yếu tố có thể dẫn đến tắc nghẽn, ngay cả khi lưu lượng đi vào mạng thấp
hơn khả năng vận tải của mạng. Chẳng hạn, khi số lượng gói số liệu đến trên hai
hoặc ba lối vào của một nút mạng đều cần đi ra trên cùng một đường truyền để đến
đích, chúng sẽ phải xếp hàng đợi được truyền đi. Nếu tình trạng trên kéo dài, hàng
đợi sẽ dài dần ra và đầy, không còn chỗ cho các gói số liệu mới đến, chúng bị loại
bỏ và sẽ được phát lại, làm tăng tỉ lệ gói số liệu phát lại trong mạng. Biện pháp khắc

phục bằng cách tăng kích thước hàng đợi (bộ nhớ) tại các nút mạng trong một
chừng mực nào đó là có ích, tuy nhiên, người ta đã chứng minh được rằng, tăng
kích thước hàng đợi quá một giới hạn nào đó sẽ không mang lại lợi ích gì, thậm chí
còn có thể làm cho vấn đề tắc nghẽn tồi tệ hơn. Đó là vì các gói số liệu sẽ bị hết giờ

- 21 -
ngay trong quá trình xếp hàng, bản sao của chúng đã được bên gửi phát lại rồi, làm
tăng số lượng gói số liệu phát lại trong mạng [1], [38], [41].
Tốc độ xử lý chậm của các nút mạng cũng là một nguyên nhân quan trọng gây
nên tắc nghẽn, bởi vì chúng có thể sẽ làm hàng đợi bị tràn ngay cả khi lưu lượng gói
số liệu đến nút mạng nhỏ hơn năng lực vận tải của đường truyền đi ra.
Các đường truyền dung lượng thấp cũng có thể gây ra tắc nghẽn. Việc tăng dung
lượng đường truyền nhưng không nâng cấp bộ xử lý tại nút mạng, hoặc chỉ nâng
cấp từng phần của mạng đôi khi cũng cải thiện được tình hình đôi chút, nhưng
thường chỉ làm cái “cổ chai”, nơi xảy ra tắc nghẽn, dời đi chỗ khác mà thôi. Giải
quyết vấn đề tắc nghẽn nói chung, cần đến các giải pháp đồng bộ.
Tắc nghẽn có khuynh hướng tự làm cho nó trầm trọng thêm. Nếu một nút mạng
nào đó bị tràn bộ đệm, gói số liệu đến sẽ bị loại bỏ, trong khi đó nút mạng bên trên,
phía người gửi, vẫn phải giữ bản sao của gói số liệu đã gửi trong hàng đợi, cho đến
khi hết giờ để phát lại. Việc phải giữ bản sao gói số liệu trong hàng đợi để chờ biên
nhận, cộng thêm việc có thể phải phát lại gói số liệu một số lần có thể làm cho hàng
đợi tại chính nút trên cũng có thể bị tràn. Sự tắc nghẽn lan truyền ngược trở lại phía
nguồn phát sinh ra gói số liệu.
Các giải pháp điều khiển tắc nghẽn
Vấn đề điều khiển tắc nghẽn có thể được giải quyết theo quan điểm của Lý
thuyết điều khiển. Theo cách tiếp cận này, có thể chia các giải pháp thành hai nhóm:
các giải pháp Vòng lặp mở (Open loop) và các giải pháp Vòng lặp đóng (Closed
loop). Theo các giải pháp vòng lặp mở, tắc nghẽn sẽ được giải quyết bằng việc thiết
kế tốt, đảm bảo sao cho tắc nghẽn không xảy ra. Một hệ thống như vậy phải có khả
năng quyết định khi nào thì nhận thêm các lưu lượng mới vào, khi nào thì loại bỏ

các gói số liệu và loại các gói số liệu nào. Các quyết định này phải theo lịch trình và
phải có ở từng nút mạng, chúng được hệ thống đưa ra mà không xem xét đến trạng
thái hiện thời của mạng.
Trái lại, các giải pháp vòng lặp đóng lại dựa trên khái niệm về vòng phản hồi
(feedback loop), chúng gồm có ba phần, hay ba bước như sau:

- 22 -
Bước một: theo dõi hệ thống để phát hiện tắc nghẽn xảy ra khi nào và ở đâu.
Việc phát hiện tắc nghẽn có thể dựa trên một số độ đo khác nhau. Các độ đo thường
được sử dụng là tỉ lệ gói số liệu bị loại bỏ do thiếu bộ đệm, chiều dài trung bình của
hàng đợi, số gói số liệu phải phát lại do bị hết giờ, thời gian trễ trung bình của gói
số liệu khi đi qua mạng v.v. Sự tăng lên của các số đo này nói lên rằng tắc nghẽn
đang tăng lên trong mạng.
Bước hai: nơi phát hiện ra tắc nghẽn cần phải chuyển thông tin về sự tắc nghẽn
đến những nơi có thể phản ứng lại. Một cách thực hiện rất đơn giản là nút mạng
phát hiện ra tắc nghẽn sẽ gửi gói số liệu đến các nguồn sinh lưu lượng trên mạng,
báo tin về sự cố. Tất nhiên, việc này sẽ làm tăng thêm lưu lượng đưa vào mạng
đúng lúc lẽ ra phải giảm đi. Người ta cũng đã đề xuất và thực hiện một số cách khác
nữa. Chẳng hạn, nút mạng phát hiện ra tắc nghẽn sẽ đánh dấu vào một bit hay một
trường định trước của mọi gói số liệu trước khi gói số liệu được nút mạng chuyển
tiếp đi, nhằm loan báo cho các nút mạng khác về trạng thái tắc nghẽn. Có thể nêu ra
một cách thực hiện khác nữa, đó là làm cho các nút mạng đều đặn gửi đi các gói số
liệu thăm dò để biết tình trạng của mạng.
Bước ba: điều chỉnh lại hệ thống để sửa chữa sự cố. Các cơ chế thực hiện phản
hồi đều nhằm mục đích là để các máy tính trên mạng có những phản ứng phù hợp
nhằm làm giảm tắc nghẽn. Nếu phản ứng xảy ra quá nhanh, lưu lượng trong hệ
thống sẽ thăng giáng mạnh và không bao giờ hội tụ. Nếu phản ứng quá chậm, việc
điều khiển tắc nghẽn có thể không có ý nghĩa thực tế gì nữa. Chính vì vậy, để cơ
chế phản hồi có hiệu quả, cần phải sử dụng một số cách tính trung bình [26], [27].
1.3.2 Điều khiển lưu lượng trong giao thức TCP

1.3.2.1 Giao thức TCP ban đầu
Giao thức TCP được xây dựng dựa trên các khái niệm được Cerf và Kahn đưa ra
đầu tiên [10]. Đó là giao thức hướng kết nối, kiểu đầu cuối - đầu cuối, tin cậy, được
thiết kế phù hợp với kiến trúc phân lớp các giao thức. Giao thức TCP cung cấp sự
truyền thông tin cậy giữa hai tiến trình chạy trên hai máy tính ở các mạng khác nhau

- 23 -
nhưng kết nối với nhau. Giao thức TCP có khả năng gửi và nhận liên tiếp các đơn vị
dữ liệu chiều dài có thể thay đổi, được gọi là phân đoạn (segment), mỗi phân đoạn
được đóng gói trong một “phong bì” và tạo nên một gói số liệu IP. Khi thiết kế TCP
người ta giả thiết rằng TCP sẽ nhận được các dịch vụ vận chuyển gói số liệu không
tin cậy (không có sự biên nhận cho các gói số liệu) do các giao thức ở các tầng bên
dưới cung cấp. Về nguyên tắc, TCP phải có khả năng hoạt động bên trên một miền
rất rộng các hệ thống truyền thông, từ các mạng có các đường truyền cố định, tới
các mạng chuyển mạch gói và các mạng chuyển mạch cứng.
Để có thể thực hiện chức năng chính là vận chuyển dữ liệu hiệu quả và tin cậy,
TCP phải có khả năng thực hiện các chức năng cơ bản sau:
Dồn kênh: Để nhiều tiến trình trên một máy tính có thể đồng thời truyền thông
qua mạng với các tiến trình trên các máy tính khác trên Internet, giao thức TCP
cung cấp một giao diện giữa tầng ứng dụng và tầng giao vận, gọi là socket. Socket
được đặc trưng bởi số hiệu cổng (port) và địa chỉ IP. Mỗi một socket có thể được
nhiều kết nối sử dụng đồng thời.
Kết nối: Để đảm bảo việc vận chuyển tin cậy và thực hiện được cơ chế điều
khiển lưu lượng, TCP phải khởi tạo và duy trì một số thông tin trạng thái cho mỗi
dòng dữ liệu. Sự kết hợp các thông tin này, bao gồm socket, số thứ tự gói số liệu và
kích thước cửa sổ, được gọi là kết nối. Mỗi một kết nối được xác định rõ ràng, duy
nhất bởi một cặp socket thuộc hai đầu kết nối đó.
Đảm bảo sự vận chuyển tin cậy: TCP phải khôi phục lại được gói số liệu bị
hỏng, bị mất, bị lặp hoặc bị phân phát sai thứ tự do hệ thống truyền thông gây ra.
Điều này có thể đạt được bằng cách gán số thứ tự cho mỗi byte được truyền đi và

biên nhận đã nhận đúng (ack) từ bên nhận của kết nối TCP. Nếu bên gửi không
nhận được biên nhận trong khoảng thời gian hết hạn, nó sẽ phát lại gói số liệu. Bên
nhận sẽ kiểm tra số thứ tự các gói số liệu nhận được và loại bỏ các gói số liệu không
đúng thứ tự hoặc trùng lặp. Các gói số liệu không đúng thứ tự sẽ phải được phát lại.
Điều khiển lưu lượng bằng cửa sổ: TCP cung cấp phương tiện cho bên nhận
để nó điều khiển lưu lượng mà bên gửi phát đi; đó là trường “cửa sổ” trong gói tin

×