1.3 CÁC CƠ CHẾ CẢI THIỆN HIỆU SUẤT TCP TRONG MẠNG KHÔNG ĐỒNG NHẤT
1.3.2 CƠ CHẾ CẢI THIỆN HIỆU SUẤT TCP TRONG MẠNG BẤT ĐỐI XỨNG
Đối với các mạng có dây và có các kênh truyền đối xứng về băng thông và độ trễ hai chiều thì TCP hoạt động rất tốt. Tuy nhiên, đối với những mạng
chứa những liên kết có tính chất bất đối xứng về băng thông cũng như độ trễ thì TCP hoạt động thất thường hơn. Cụ thể, đối với mạng chứa liên kết có băng thông bất đối xứng (ví dụ: mạng có đường truyền ADSL) TCP hoạt động không tốt, thông lượng giảm đáng kể, nếu băng thông theo hai hướng của liên kết quá chênh lệch nhau. Trong thực tế, khi một trạm kết nối Internet qua đường truyền bất đối xứng. Kênh lên (Up Link) có tốc độ thấp cũng có thể được dùng để truyền tải dữ liệu chứ không phải chỉ để truyền các gói tin biên nhận, ví dụ như chúng ta đính kèm tập tin khi gửi mail, hay là sử dung Webcam để kết nối bạn bè, sử dụng voice chat. Khi đó, băng thông còn lại thường là thấp. Tức là, khi sử dụng hướng có băng thông thấp để truyền dòng dữ liệu thì độ chênh lệch của kênh bất đối xứng là lớn, làm cho việc truyền số liệu ở hướng ngược lại (hướng có băng thông lớn) bị tắc nghẽn ở dòng phản hồi (dòng ACK).
Nguyên nhân chính của việc giảm thông lượng khi có kết nối TCP có băng thông kênh gửi lớn hơn nhiều so với băng thông kênh biên nhận (kênh ACK) là các ACK không về được đến bên gửi hoặc bị đợi quá lâu tại các hàng đợi. Hậu quả là thông lượng TCP thường (ví dụ TCP Reno) giảm đáng kể khi gặp trường hợp trên. Để khắc phục tình trạng này có nhiều giải pháp đã được đề xuất, nghiên cứu nhằm làm giảm ảnh hưởng của vấn đề bất đối xứng nêu trên. Một trong những giải pháp mà chúng tôi nghiên cứu, đánh giá là điều chỉnh thuật toán biên nhận của giao thức TCP và thuật toán thay đổi cửa sổ tắc nghẽn của bên nhận khi nhận được ACK.
Người ta đã đưa ra các giải pháp để tăng hiệu suất giao thức TCP trong mạng có đường truyền bất đối xứng. Các giải pháp này đều cố gắng hạn chế mất gói biên nhận và hạn chế việc các biên nhận phải chờ lâu trong hàng đợi, nó bao gồm các pha như sau:
Lọc biên nhận (ACK Filtering -AF)
Điều khiển tắc nghẽn ACK (ACK Congestion Control - ACC) b. Giải quyết tình trạng có ít gói biên nhận.
Bên gửi thích nghi với biên nhận (Sender Adaptation- SA)
Tái tạo biên nhận (ACK Reconstruction - AR)
Các phương pháp này có thể thực hiện riêng rẽ hoặc kết hợp thực hiện với mục đích là đảm bảo hoạt động hiệu quả cho TCP.
1.3.2.1 Giảm lưu lượng dòng ACK
Lọc biên nhận
Phương pháp này sử dụng một bộ lọc ACK (ACK Filter) tại các bộ định tuyến (router) ở đầu vào kênh truyền ACK có băng thông thấp. Tại đó, các ACK nằm trong hàng đợi chờ được truyền đi. Khi gặp bùng nỗ ACK, hàng đợi càng dài ra làm tăng độ trễ gói ACK khi về đến bên gửi, tình trạng này có thể dẫn đến việc các ACK về quá muộn gây hết giờ chờ biên nhận.
Hơn nữa, nếu kích thước hàng đợi nhỏ thì các ACK có thể bị mất. Khi gặp tình trạng này bên gửi coi như gói tin đã bị mất và đã truyền lại gói số liệu và giảm cửa sổ phát. Nếu việc này thường xuyên xảy ra thì hiệu suất hoạt động của TCP giảm đáng kể.
Nhận xét rằng, nếu các biên nhận là biên nhận tích lũy thì ta có thể loại bỏ các ACK biên nhận cho các gói tin có số thứ tự nhỏ. Chỉ cần truyền ACK biên nhận cho gói tin có số thứ tự lớn nhất. ACK này được coi như là một biên nhận "tổng" cho tất cả các gói tin có ACK nằm trong hàng đợi đang xét.
Việc này làm giảm tải cho hàng đợi, giảm tải cho kênh ACK và giảm được khả năng phải truyền lại các gói số liệu.
Hình 1.7 Phương pháp lọc biên nhận
Hình 1.7 mô tả các biên nhận đang đợi tại hàng đợi. Các biên nhận tích lũy cho gói tin số 3, 5, 7 được loại tại hàng đợi. Chỉ truyền biên nhận cho gói tin số 9, cũng là biên nhận "tổng" cho tất cả các gói có số thứ tự nhỏ hơn 9.
Điều khiển tắc nghẽn dòng ACK
Phương pháp này làm giảm dòng lưu lượng biên nhận bằng cách làm chậm việc biên nhận, tức là chờ nhiều gói đến rồi mới gửi biên nhận một lần.
Phương pháp này sử dụng bộ tương thích mở rộng của TCP. Tại hàng đợi nơi xảy ra tắc nghẽn dòng ACK, thực hiện đánh dấu ngẫu nhiên các ACK để thông báo rõ nguyên nhân tắc nghẽn là do kênh biên nhận bị tắc nghẽn. Từ đó bên gửi phản ứng bằng cách thông báo cho bên nhận giảm lưu lượng dòng ACK bằng cách chậm biên nhận nhằm làm giảm dòng lưu lượng ACK đang bị tắc nghẽn.
TCP data
Sender 1 3 5 7 9 receiver
các ACK bị loại
11 13
ACK
Bottleneck router
Hình 1.8 Đánh dấu vào biên nhận tại hàng đợi
Hình 1.9 Chuyển thông báo tắc nghẽn cho bên nhận
TCP data
Sender receiver
ACK
router
Chuyển thông báo tắc nghẽn cho bên nhận
22
Data 40
TCP data
Sender receiver
ACK
Bottleneck router
12
Đánh dấu để thông báo
nguyên nhân tắc nghẽn
22
28 30
Hình 1.10 Bên nhận đã nhận được thông báo tắc nghẽn
Trên hình 1.8, khi hàng đợi tại bộ định tuyến có dấu hiệu tắc nghẽn.
ACK biên nhận cho gói 22 được đánh dấu tắc nghẽn. Hình 1.9 là lúc ACK số 22 đã đến được bên gửi và bên gửi gửi thông báo tắc nghẽn cho bên nhận trong gói tin số 40. Hình 1.10 bên nhận nhận được gói tin 40 và giảm lưu lượng dòng ACK bằng cách chậm biên nhận hơn, một biên nhận cho 4 gói tin.
1.3.2.2 Giải quyết tình trạng có ít gói biên nhận
Bên gửi thích nghi với việc có ít biên nhận
Thông thường thì TCP tăng cửa sổ phát lên 1 (ở giai đoạn khởi động chậm) hoặc 1/cwnd (ở giai đoạn tránh tắc nghẽn). Nhưng với việc lọc biên nhận hoặc chậm biên nhận thì mỗi biên nhận có thể biên nhận cho nhiều gói tin một lúc. Vì vậy, bên gửi phải tăng cửa sổ phát tương thích với lượng dữ liệu đã được biên nhận. Tức là có thể tăng cửa sổ phát lên nhiều hơn thông thường khi gặp biên nhận "tổng".
TCP data
Sender receiver
ACK
router
22
36 40
Một biên nhận cho 4 gói
Hình 1.11 Bên gửi thích ứng với việc có ít số biên nhận
Hình 1.11 thể hiện việc thích ứng của bên gửi, trên hình ta thấy từ gói tin thứ 2 đến gói tin thứ 9 chỉ có 1 biên nhận do đó cửa sổ phát sẽ được tăng lên 8 (nếu đang ở trong giai đoạn khởi động chậm) và 8/cwnd nếu đang ở trong giai đoạn tránh tắc nghẽn.
Tái tạo biên nhận
Phương pháp này sử dụng cùng với phương pháp lọc biên nhận bằng cách đặt thêm một bộ tái tạo biên nhận (ACK Recontructor) tại đầu bên kia của bộ lọc biên nhận. Bộ tái tạo này làm nhiệm vụ sinh lại biên nhận đã được loại bỏ ở bộ lọc biên nhận ở đầu bên kia của đường băng thông thấp. Phương pháp này khi thực hiện cùng với phương pháp lọc biên nhận thì không phải thay đổi giao thức TCP cả bên gửi lẫn bên nhận.
Hình 1.12 biểu diễn việc lọc và tái tạo các biên nhận. Các biên nhận cho các gói tin số 3, 5, 7 bị loại bỏ tại bộ lọc ACK ở đầu đường tắc nghẽn.
Chúng được tái tạo lại và gửi về bên gửi tại bộ tái tạo ở đầu bên kia của bộ lọc khi nhận được biên nhận của gói tin số 9.
TCP data
Sender 1 receiver
ACK
Bottleneck router
9 15
cwnd +=8 cwnd += 8/cwnd
- cwnd (congestion window) là giá trị cửa sổ phát hiện thời