Truyền dữ liệu khi mạng đang bị nghẽn sẽ gây ra nhiều vấn đề nghiêm trọng. Ví dụ, độ delay của các gói tin tăng lên cao, các gói tin phải “cạnh tranh” vào hàng đợi và chờ cho đến khi có thể được gửi đi, khi hàng đợi đã đầy mà các gói tin lại liên tục đến router, cuối cùng làm cho các gói tin sẽ bị đánh rớt theo hiện tượng tail drop.
Các thiết bị đầu cuối không biết nơi xảy ra nghẽn mạng. Đối với các thiết bị đầu cuối thì sự nghẽn mạng được hiểu là độ delay tăng. Các giao thức thuộc layer 4 (TCP/UDP) sử dụng bộ đếm thời gian và phương pháp “truyền lại”. Do đó, các giao thức này phản ứng lại với độ delay lớn bằng cách truyền lại các gói tin. Đặc biệt là giao thức TCP, nơi nhận gói sẽ không thể báo cho phía phát các gói bị mất nên khi có lỗi xảy ra thì sẽ phải thực hiện truyền lại toàn bộ các gói tin trong cửa sổ (window size). Tất cả những nguyên nhân trên sẽ làm cho hiệu suất của hệ thống mạng giảm xuống.
Để khắc phục vấn đề trên thì có thể sử dụng các công cụ QoS sau:
– Random Early Detection (RED)
– Weighted Random Early Detection (WRED)
– Explicit Congestion Notification (ECN)
Random Early Detection (RED)
Khi nghẽn mạng xảy ra thì các gói tin sẽ bị đánh rớt theo hiện tượng tail drop. Random Early Detection (RED) là một công cụ giúp giảm việc mất gói tin trong hệ thống mạng. RED giám sát chiều dài hàng đợi và loại bỏ một số gói tin trong hàng đợi để cải tiến hiệu suất của mạng. Thay vì chờ hàng đợi đầy (nguyên nhân chính gây ra hiện tượng tail drop), RED sẽ làm rớt một số gói tin trước khi hàng đợi đầy. RED chọn ra gói tin có thể sẽ bị đánh rớt và sau đó đánh rớt vài gói tin một cách ngẫu nhiên.
Để đạt được ý tưởng nêu trên thì công cụ RED phải thực hiện được 2 việc sau:
– RED phải phát hiện hiện tượng hàng đợi có dấu hiệu bị nghẽn (bị đầy) một cách nhanh chóng.
– RED hay không và đánh rớt bao nhiêu phần trăm gói tin trong hàng đợi.
Để phát hiện hàng đợi có dấu hiệu đầy thì RED định nghĩa ra các khái niệm Average queue depth (kích thước hàng đợi trung bình) và Actual queue depth (kích thước hàng đợi hiện tại). Kích thước hàng đợi trung bình là số lượng gói tin trung bình được tính từ kích thước hàng đợi hiện tại và số kích thước hàng đợi trung bình trước đó. Kích thước hàng đợi hiện tại là số lượng thực tế của các gói tin trong hàng đợi tại một điểm cụ thể. Công thức tính số kích thước hàng đợi trung bình như sau:
Kích thước hàng đợi trung bình mới = (kích thước hàng đợi trung bình trước đó * (1-2-n)) + (kích thước hàng đợi hiện tại * 2-n)
Giá trị mặc định của n là 9.
Theo thời gian thì số kích thước hàng đợi hiện tại thay đổi liên tục và nhiều hơn so với số kích thước hàng đợi trung bình. Số kích thước hàng đợi trung bình luôn được thay đổi sao cho phù hợp với sự thay đổi của số kích thước hàng đợi hiện tại. Điều này được thể hiện trong hình sau đây:
Sau khi có được số kích thước hàng đợi trung bình mới, RED tiến hành so sánh số này với hai ngưỡng số lượng gói tin trong hàng đợi (có thể được cấu hình từ trước). Đó là minimum threshold (ngưỡng thấp nhất) và maximum threshold (ngưỡng cao nhất). Kết quả so sánh như sau:
– Kích thước hàng đợi trung bình mới < minimum threshold: Không có nghẽn xảy ra và không có gói tin nào bị đánh rớt (No Drop).
– minimum threshold < kích thước hàng đợi trung bình mới < maximum threshold: Có nghẽn xảy ra và RED ngẫu nhiên đánh rớt các gói tin (không phải là tất cả các gói tin – Random Drop). Tỉ lệ phần trăm gói tin bị đánh rớt lớn nhất được tính dựa trên Mark Probability Denominator (MPD). MPD được cấu hình trên IOS router. Công thức tính toán là 1/MPD. Ví dụ, MPD được cấu hình là 10 thì tỉ lệ phần trăm gói tin bị đánh rớt lớn nhất là 10% (1/10). Nói cách khác, tỉ lệ phần trăm gói tin bị đánh rớt giao động từ 0% đến 10%.
– Average queue depth > maximum threshold: Có nghẽn xảy ra và tất cả gói tin mới (chuẩn bị vào hàng đợt) đều bị đánh rớt (full Drop). Trường hợp này tương tự như hiện tượng tail drop.
Nguyễn Ngọc Đại – VnPro
Các thiết bị đầu cuối không biết nơi xảy ra nghẽn mạng. Đối với các thiết bị đầu cuối thì sự nghẽn mạng được hiểu là độ delay tăng. Các giao thức thuộc layer 4 (TCP/UDP) sử dụng bộ đếm thời gian và phương pháp “truyền lại”. Do đó, các giao thức này phản ứng lại với độ delay lớn bằng cách truyền lại các gói tin. Đặc biệt là giao thức TCP, nơi nhận gói sẽ không thể báo cho phía phát các gói bị mất nên khi có lỗi xảy ra thì sẽ phải thực hiện truyền lại toàn bộ các gói tin trong cửa sổ (window size). Tất cả những nguyên nhân trên sẽ làm cho hiệu suất của hệ thống mạng giảm xuống.
Để khắc phục vấn đề trên thì có thể sử dụng các công cụ QoS sau:
– Random Early Detection (RED)
– Weighted Random Early Detection (WRED)
– Explicit Congestion Notification (ECN)
Random Early Detection (RED)
Khi nghẽn mạng xảy ra thì các gói tin sẽ bị đánh rớt theo hiện tượng tail drop. Random Early Detection (RED) là một công cụ giúp giảm việc mất gói tin trong hệ thống mạng. RED giám sát chiều dài hàng đợi và loại bỏ một số gói tin trong hàng đợi để cải tiến hiệu suất của mạng. Thay vì chờ hàng đợi đầy (nguyên nhân chính gây ra hiện tượng tail drop), RED sẽ làm rớt một số gói tin trước khi hàng đợi đầy. RED chọn ra gói tin có thể sẽ bị đánh rớt và sau đó đánh rớt vài gói tin một cách ngẫu nhiên.
Để đạt được ý tưởng nêu trên thì công cụ RED phải thực hiện được 2 việc sau:
– RED phải phát hiện hiện tượng hàng đợi có dấu hiệu bị nghẽn (bị đầy) một cách nhanh chóng.
– RED hay không và đánh rớt bao nhiêu phần trăm gói tin trong hàng đợi.
Để phát hiện hàng đợi có dấu hiệu đầy thì RED định nghĩa ra các khái niệm Average queue depth (kích thước hàng đợi trung bình) và Actual queue depth (kích thước hàng đợi hiện tại). Kích thước hàng đợi trung bình là số lượng gói tin trung bình được tính từ kích thước hàng đợi hiện tại và số kích thước hàng đợi trung bình trước đó. Kích thước hàng đợi hiện tại là số lượng thực tế của các gói tin trong hàng đợi tại một điểm cụ thể. Công thức tính số kích thước hàng đợi trung bình như sau:
Kích thước hàng đợi trung bình mới = (kích thước hàng đợi trung bình trước đó * (1-2-n)) + (kích thước hàng đợi hiện tại * 2-n)
Giá trị mặc định của n là 9.
Theo thời gian thì số kích thước hàng đợi hiện tại thay đổi liên tục và nhiều hơn so với số kích thước hàng đợi trung bình. Số kích thước hàng đợi trung bình luôn được thay đổi sao cho phù hợp với sự thay đổi của số kích thước hàng đợi hiện tại. Điều này được thể hiện trong hình sau đây:
So sánh kích thước hàng đợi hiện tại với kích thước hàng đợi trung bình
Sau khi có được số kích thước hàng đợi trung bình mới, RED tiến hành so sánh số này với hai ngưỡng số lượng gói tin trong hàng đợi (có thể được cấu hình từ trước). Đó là minimum threshold (ngưỡng thấp nhất) và maximum threshold (ngưỡng cao nhất). Kết quả so sánh như sau:
– Kích thước hàng đợi trung bình mới < minimum threshold: Không có nghẽn xảy ra và không có gói tin nào bị đánh rớt (No Drop).
– minimum threshold < kích thước hàng đợi trung bình mới < maximum threshold: Có nghẽn xảy ra và RED ngẫu nhiên đánh rớt các gói tin (không phải là tất cả các gói tin – Random Drop). Tỉ lệ phần trăm gói tin bị đánh rớt lớn nhất được tính dựa trên Mark Probability Denominator (MPD). MPD được cấu hình trên IOS router. Công thức tính toán là 1/MPD. Ví dụ, MPD được cấu hình là 10 thì tỉ lệ phần trăm gói tin bị đánh rớt lớn nhất là 10% (1/10). Nói cách khác, tỉ lệ phần trăm gói tin bị đánh rớt giao động từ 0% đến 10%.
– Average queue depth > maximum threshold: Có nghẽn xảy ra và tất cả gói tin mới (chuẩn bị vào hàng đợt) đều bị đánh rớt (full Drop). Trường hợp này tương tự như hiện tượng tail drop.
RED đánh rớt gói tin bằng Average queue depth, minimum threshold và maximum threshold
Nguyễn Ngọc Đại – VnPro