Thuật toán điều khiển lưu lượng

Một phần của tài liệu Thuật toán điều khiển tắc nghẽn WLDA + (Trang 43)

II. Điều khiển lưu lượng, tránh tắc nghẽn

2. Thuật toán điều khiển lưu lượng

Như trên đã trình bày, khả năng của TCP là điều chỉnh luồng phù hợp với tài nguyên sẵn có của mạng. TCP dựa trên kỹ thuật sliding window cho việc gửi gói tin và chống tràn bộ đệm nhận, TCP lưu giữ một bộ đệm truyền được gọi là cửa sổ truyền. Để thống kê tình trạng tắc nghẽn trong mạng và thực thể gửi chọn được một giá trị cửa sổ truyền thích hợp, cửa sổ truyền có những cách điều chỉnh khác nhau:

- Slow start: Thuật toán này định nghĩa thêm một cửa sổ TCP phát được gọi là cửa sổ tắc nghẽn - CWND (Congestion Window) được đo bằng đơn vị gói tin. Khi một kết nối mới được thiết lập hoặc sau khi kết thúc thời gian time-out, cửa sổ này sẽ được đặt bằng kích cỡ của một gói tin. Sau mỗi lần nhận một ACK, cửa sổ được tăng lên bằng kích cỡ của các gói tin đã nhận ACK cho đến khi xảy ra tình trạng tắc nghẽn (gia tăng RTT) hoặc vượt quá một ngưỡng nhất định và cần phải có điều chỉnh cho phù hợp.

Trang 46 - Congestion avoidance: Đặc trưng của hiện tượng tắc nghẽn số liệu là thời gian trễ RTT tăng. Những nguyên nhân chính dẫn đến sự gia tăng giá trị RTT là do hiện tượng mất gói số liệu tại một hệ định tuyến nào đó trong mạng (do thiếu bộ nhớ nhận chẳng hạn) dẫn đến time-out hoặc do thực thể phát nhận được nhiều lần thông báo trả lời ACK cho cùng một gói tin, báo hiệu đã có các gói số liệu đã đến không theo đúng thứ tự phát, nên thực thể phát phải phát lại gói số liệu bị mất.

Biện pháp tránh tắc nghẽn chính là giảm lưu lượng số liệu phát, từ đó hạn chế được tình trạng mất gói số liệu. Thuật toán “bắt đầu chậm” (Slow Start) và “tránh tắc nghẽn” (Congestion Avoidance) là những kỹ thuật điều khiển lưu lượng, tránh tắc nghẽn số liệu hoạt động độc lập, song có quan hệ mật thiết với nhau và thường được cài đặt cùng nhau. Hoạt động của hai giải pháp này được kết hợp như sau:

* Đặt giá trị ban đầu cwnd = 1 đơn vị gói số liệu và ssthresh = 65.535 Byte, trong đó ssthresh là ngưỡng trên của CWND theo thuật toán “bắt đầu chậm”.

* Thực thể TCP không bao giờ phát nhiều hơn giá trị tối thiểu của cwnd và độ lớn cửa sổ thu rwnd được thực thể thu thông báo trước đó : W = min {cwnd, rcnd].

* Khi hiện tượng tắc nghẽn số liệu xuất hiện, đặt giá trị ngưỡng tắc nghẽn ssthresh = CWND/2 (nhưng không nhỏ hơn 2 đơn vị gói số liệu) và đặt wcnd = 1 đơn vị gói số liệu.

* Mỗi khi nhận được thông báo ACK, giá trị wcnd được tăng lên, mức độ tăng phụ thuộc vào thuật toán bắt đầu chậm hay thuật toán tránh tắc nghẽn đang được thực hiện:

- Nếu thuật toán bắt đầu chậm đang được thực hiện (CWND < ssthresh): giá trị wcnd được tăng 1 đơn vị gói số liệu với mỗi thông báo ACK nhận được.

Trang 47 - Ngược lại, nếu thuật toán tránh tắc nghẽn đang được thực hiện (CWND >= ssthresh): giá trị wcnd được tăng 1/cwnd với mỗi thông báo ACK nhận được.

Có thể thấy độ gia tăng giá trị cửa sổ phát trong trường hợp điều khiển tránh tắc nghẽn là tuyến tính, trong khi ở thuật toán bắt đầu chậm (không có tắc nghẽn) là tăng theo hàm số mũ. Điều này đảm bảo tận dụng băng thông còn có thể sử dụng được, tăng hiệu suất trao đổi số liệu trên kết nối TCP khi áp dụng thuật toán bắt đầu chậm và vẫn phòng tránh có hiệu quả khi hiện tượng tắc nghẽn số liệu xuất hiện.

Thuật toán “phát lại nhanh” Fast retranmistion: Theo cách thức thông thường: khi thực thể gửi nhận được một NAK (thu sai) hoặc được đồng hồ quản lý phát kích hoạt time-out thì nó sẽ phát lại gói tin. Thuật toán phát lại nhanh thực hiện theo cách khác: khi nó nhận được nhiều hơn hai thông báo ACK lặp thì lập tức phát lại gói tin ngay, không cần chờ time-out. Thuật toán này dựa trên phán đóan tình trạng thức tế là sau 3 lần lặp ACK thì tình trạng tắc nghẽn đã giảm, có đến 3 gói tin đến đích và được nhận đúng, cần phát lại ngay gói tin bị mất.

Thuật toán “khôi phục nhanh” fast Recovery: Thuật toán này quy định thực hiện tránh tắc nghẽn ngay sau khi phát lại nhanh, tuy nhiên, chỉ giảm cửa sổ phát xuống còn một nữa chứ không giảm xuống mức tối thiều là một. Điều này làm cho lưu lượng số liệu trong kết nối TCP không bị thay đổi đột ngột, gây lãng phí giải thông của đường truyền.

Một số phiên bản của giao thức TCP:

- Tahoe – TCP: Được phát triển lần đầu tiên vào năm 1988. Thuật toán này dựa trên các đề xuất của Jacobson. Tahoe-TCP cài đặt thuật toán bắt đầu chậm, tránh tắc nghẽn và phát lại nhanh. Trong phiên bản của Tahoe, TCP phản ứng lại việc các gói tin bị mất bằng cách đặt biến ngưỡng bắt đầu chậm slow start threshold (ssthreshold) bằng một nửa cửa số tắc nghẽn (CWND) hiện tại và giảm cửa sổ tắc nghẽn xuống một. Sau

Trang 48 khi nhận ACK của gói tin được phát lại, nguồn sẽ đưa vào giai đoạn bắt đầu chậm và cửa sổ truyền có thể được tăng theo hàm mũ khi CWND<=ssthreshold.

- Reno – TCP: Được cài đặt vào năm 1990, và hiện nay là phiên bản đang được sử dụng rộng rãi nhất của TCP. Ở thuật toán này khôi phục nhanh được áp dụng cùng slow start, tránh tắc nghẽn, truyền lại nhanh đang được sử dụng trong tahoe-tcp. Với kỹ thuật khôi phục nhanh , nguồn phát truyền lại gói tin bị mất sau khi nhận được 3 gói ACK trùng lắp và thực hiện thuật tóan tránh tắc nghẽn, với việc đặt ssthreshold bằng một nửa cửa sổ hiện tại. Cửa sổ hiện tại sau đó sẽ được đặt bằng ssthreshold cộng thêm 3 lần kích cỡ một gói tin (3 biên nhận lặp ứng với việc có 3 gói tin đã được nhận đúng). Sau đó, với mỗi một ACK lặp được nhận, CWND được tăng bởi kích cỡ gói tin và một gói tin được truyền.

- New –Reno: Tahoe-TCP giảm cửa sổ truyền xuống 1 sau khi phát hiện mất gói tin, như vậy ổn định hơn và cũng có thể dẫn tới dưới mức hiệu dụng của mạng. Reno-TCP thực hiện khôi phục nhanh nên đạt hiệu quả sử dụng giải thông của đường truyền cao hơn Tahoe-TCP. Tuy nhiên, trong trường hợp mất trên một gói dữ liệu trong một cửa sổ phát thì Reno-TCP lại kém hiệu quả hơn Tahoe-TCP. New-Reno là một cải tiến được đưa ra cho phép thực thể gửi phát hiện tốt hơn việc mất trên một gói dữ liệu trong một cửa sổ phát và chống lại việc giảm cửa sổ tắc nghẽn một vài lần liên tiếp. Kiểu cài đặt này của TCP loại bỏ thời gian chờ hết đồng hồ phát lại của Reno khi có nhiều gói tin bị loại bỏ từ một cửa sổ phát. Sự khác biệt ở đây là cách xử lý của bên gửi trong quá trình Fast Recovery khi một biên nhận cục bộ được nhận chỉ biên nhận một số chứ không phải tất cả các gói tin trong một cửa sổ đã gửi tại lúc đã khởi động quá trình Fast Recovery. Trong Reno, các ACK cục bộ sẽ làm TCP thoát khỏi quá trình Fast Recovery với việc “giảm” kích thước cửa sổ xuống kích thước cửa sổ tắc nghẽn. Trong New-Reno các biên nhận cục bộ

Trang 49 trong quá trình Fast Recovery được xem như dấu hiệu cho biết gói tin tiếp theo gói tin đã được biên nhận đúng thứ tự đã bị mất và cần được phát lại. Thế nên, khi nhiều gói tin bị mất, New-Reno có thể phục hồi mà không cần phải chờ đến khi hết giờ phát lại mà phát lại ngay một gói tin bị mất trong khi chờ hết khoảng thời gian khứ hồi cho đến khi tất cả các gói dữ liệu bị mất của cửa sổ được phát lại. New-Reno tiếp tục ở quá trình Fast Recovery cho đến khi tất cả dữ liệu trong cửa sổ đã phát được biên nhận.

- SACK-TCP: Với kỹ thuật này, thực thể nhận bao gồm trong những gói tin biên nhận của nó một số các block chỉ ra các khối dữ liệu không liên tục mà nó đã nhận được. Điều này cho phép thực thể gửi phát hiện ra một vài khối dữ liệu mất một cách nhanh chóng để phát lại, tránh được độ trễ phát lại không cần thiết và do đó cải thiện hiệu suất thông lượng của SACK-TCP.

- VGAS-TCP: Kỹ thuật này sử dụng một số biến trong phép đo độ trễ toàn phần RTT để xác định kích cỡ cửa sổ.

- ECN-TCP: Là phương pháp thông báo sớm và rõ ràng tình trạng tắc nghẽn trên mạng. Các router trên mạng chỉ ra tình trạng quá tải mạng bằng cách đặt một bit báo hiệu tắc nghẽn – bit ECN (Explicit Congestion Notification) trong các header của các gói tin. Tuy nhiên để triển khai kỹ thuật này đòi hỏi các router trên toàn mạng Internet phải được hỗ trợ tốt khả năng này.

Các kỹ thuật điều khiển luồng và xử lý tắc nghẽn trên của TCP tỏ ra khá hữu hiệu trong mạng máy tính được kết nối với nhau bởi đường

Một phần của tài liệu Thuật toán điều khiển tắc nghẽn WLDA + (Trang 43)

Tải bản đầy đủ (PDF)

(99 trang)