Mạng Internet đã phát triển một cách bùng nổ trong hơn 30 năm qua, trong quá trình đó cũng đã xảy ra những sự cố tắc nghẽn nghiêm trọng, mạng đã liên tiếp bị
sụp vì tắc nghẽn. Người ta đã tiến hành điều tra và phát hiện ra rằng, hầu hết nguyên nhân nằm trong việc triển khai thực hiện giao thức TCP, chứ không phải ở chính bản thân giao thức này. Những cách thức được sử dụng để triển khai thực hiện giao thức TCP dựa trên cửa sổđã gây ra hành vi sai trong phản ứng với tắc nghẽn mạng. Người ta cũng đã đưa ra các thí dụ về hành vi sai và mô tả một số thuật toán đơn giản để giải quyết vấn đề [26]. Các thuật toán này bắt nguồn từ ý tưởng về việc đạt
được sự ổn định của mạng, bằng cách bắt buộc kết nối tầng Giao vận tuân theo nguyên lý “Bảo toàn các gói số liệu”; nếu nguyên lý này được tuân theo, thì sự sụp mạng do tắc nghẽn sẽ rất khó xảy ra. Khái niệm “bảo toàn các gói số liệu” có nghĩa là đối với một kết nối đang chạy ổn định, với số gói số liệu đang đi trong đó bằng kích thước của cửa sổ, chỉđược phép đưa một gói số liệu mới vào trong mạng khi có một gói số liệu cũđi ra khỏi mạng.
Như vậy, sựđiều khiển tắc nghẽn liên quan đến việc tìm ra những nơi vi phạm nguyên lý bảo toàn và sửa chữa chúng.
Hình 1.8 Điều khiển lưu lượng bằng cửa sổ, tự giữ nhịp độđưa gói tin mới vào mạng (Window Flow Control “Self-clocking”) [26]
Hình 1.8 minh hoạ cho việc thực hiện nguyên lý “Bảo toàn các gói số liệu”, theo cơ chế điều khiển lưu lượng bằng cửa sổ, tự giữ nhịp độ đưa gói tin mới vào mạng. Một người gửi đang truyền thông với một người nhận. Người gửi và người nhận
đang ở trên các mạng có dải thông rộng (thí dụ mạng LAN), được biểu diễn bằng các đường ống lớn; hai mạng này kết nối với nhau qua một mạng dải thông hẹp và cự ly dài, được biểu diễn bằng các đường ống nhỏ. Đường kính của các đường ống biểu diễn dải thông của đường truyền, còn chiều dài của các đường ống biểu diễn chiều dài đường truyền, cũng tức là thời gian trễ truyền.
Trên hình 1.8, người gửi đang gửi một cửa sổđầy các gói số liệu nối tiếp nhau đi vào mạng trung gian (ống nhỏ) và biên nhận cho gói số liệu đầu tiên vừa vềđến bên gửi. Mỗi gói số liệu được biểu diễn bằng một hình chữ nhật tô màu xám, chiều cao bằng dải thông của mạng mà gói số liệu đang đi qua, chiều rộng bằng thời gian truyền gói số liệu; như vậy, diện tích của hình chữ nhật bằng kích thước của nó tính bằng bit. Bởi vì diện tích hình chữ nhật biểu diễn gói số liệu không thay đổi khi đi qua các mạng, cho nên nó sẽ bị ép co hẹp lại khi đi trong mạng dải thông rộng và sẽ
bị kéo rộng ra khi đi trong mạng dải thông hẹp. Pb biểu diễn khoảng cách thời gian nhỏ nhất giữa hai gói số liệu trong đường truyền dải thông hẹp nhất. Pr là khoảng cách thời gian giữa hai gói số liệu trong mạng của người nhận, điều hiển nhiên là Pr=Pb. Ar và As biểu diễn khoảng cách thời gian giữa hai gói số liệu biên nhận trong mạng dải thông hẹp và mạng dải thông rộng. Nếu thời gian xử lý của người nhận là như nhau đối với mọi gói số liệu thì Ar = Pr = Pb = As. Từđó, có thể thấy rằng cự ly giữa các gói số liệu biên nhận được bảo toàn trên đường trở về bên gửi, do vậy cứ
mỗi khi nhận được một biên nhận, có thể gửi một gói số liệu mới vào mạng và “nguyên lý bảo toàn các gói số liệu” được tuân theo!
Nguyên lý “Bảo toàn các gói số liệu” không được thực hiện đúng
Các quan sát trên mạng Internet cho thấy rằng, hệ thống “Bảo toàn các gói số
liệu” như trên không được thực hiện đúng. Người ta đã chỉ ra ba nguyên nhân [26]:
Nguyên nhân thứ nhất: Kết nối không đạt tới sự cân bằng. Khi kết nối yêu cầu sử dụng tài nguyên vượt quá khả năng của mạng, mạng sẽ loan báo bằng cách rất
đơn giản là vứt bỏ các gói số liệu đi đến, nhưng khi kết nối sử dụng ít tài nguyên hơn phần dành cho nó, mạng sẽ không có phản ứng gì, do đó kết nối không thể biết
được điều đó. Vì vậy, chính kết nối phải tăng việc sử dụng dải thông của nó lên để
biết được giới hạn hiện thời và nó chỉ có thể tìm ra giới hạn đó sau một lần sử dụng vượt quá mức dải thông dành cho nó.
Nguyên nhân thứ hai: Người gửi đã đưa một gói số liệu mới vào mạng trước khi có một gói số liệu cũ ra khỏi mạng. Trong mạng, việc mất gói số liệu là không thể tránh khỏi, vì thế vấn đề là ở chỗ người gửi sẽ gửi lại gói số liệu bị mất nhanh
đến mức nào, cự ly giữa các gói số liệu được gửi lại như thế nào mà vẫn đảm bảo
được sự bảo toàn các gói số liệu. Vấn đề nêu trên liên quan tới đồng hồ phát lại của người gửi, trong đó bộước lượng thời gian khứ hồi là quan trọng nhất, nó giúp cho mạng tránh khỏi bị sụp vì tắc nghẽn khi tải nặng. Tuy nhiên, việc ước lượng thời gian khứ hồi lại thường xuyên bị thất bại, bởi vì về nguyên tắc, hình trạng mạng và số lượng các kết nối đang tranh chấp tài nguyên là không thể biết được. Sai lầm thứ
nhất dẫn đến thất bại là người gửi không thể đánh giá được đúng độ biến thiên (variation) σR của thời gian khứ hồi. Sai lầm thứ hai dẫn đến thất bại nằm trong sự
chọn khoảng thời gian rút lui mỗi khi việc khi phát lại bị thất bại [45].
Nguyên nhân thứ ba: Không đạt được sự cân bằng do có sự hạn chế các tài nguyên mạng dọc theo đường truyền. Nếu các đồng hồ hoạt động tốt, thì có thể
khẳng định khá chắc chắn rằng sự kiện hết giờ chỉ ra việc gói số liệu bị mất. Các gói số liệu bị mất do hai nguyên nhân: bị hỏng trong khi đang được vận chuyển hoặc bị
loại bỏ tại một nút mạng nào đó, do khi gói số liệu đến, nút không còn bộđệm trống
để nhận nó vào.
Dưới đây, chúng tôi trình bày tóm tắt các thuật toán đã được người ta [26] đề
xuất để khắc phục các nguyên nhân dẫn đến sự vi phạm nguyên lý “Bảo toàn các gói số liệu”.