1. Hàng đợi cân bằng có trọng số WFQ (Weighted Fair Queuing)
WFQ khác với các hàng đợi PQ và FIFO ở các điểm sau:
+ WFQ không cho phép cấu hình phân loại. WFQ phân loại gói tin theo luồng (flow), một luồng bao gồm tất cả các gói tin có cùng đích đến và cùng nguồn, cùng port đích và port nguồn.
+ Tính năng lập lịch: WFQ dựa vào luồng, do vậy những luồng nào có độ ưu tiên cao hơn thì sẽ được phát trước.
+ Mỗi luồng là một hàng đợi, vì vậy số hàng đợi trong WFQ có thể lên tới 4096 hàng đợi lớn hơn rất nhiều so với PQ hay FIFO.
Hàng đợi WFQ
Khi gói tin vào interface, nó sẽ được phân loại thành các luồng theo các thông số trong gói tin:
+ IP source.
+ IP destination.
+ Port source.
+ Port destination.
+ Giao thức lớp 4 nó sử dụng là gì (TCP hay UDP).
+ Giá trị precedence của gói tin IP.
Hai vấn đề quan trọng trong WFQ đó là :
- Đối xử công bằng với tất cả các luồng đang tồn tại: Giả sử ta có băng thông là 128 kbps và có 10 hàng đợi đang tồn tại, mỗi hàng đợi sẽ nhận được băng thông là 12.8 kbps. Nếu số hàng đợi là 100 thì mỗi hàng đợi sẽ nhận băng thông là 1.28 kbps. Một vấn đề tồn tại ở đây là sự quá công bằng của WFQ, giả sử trong số 10 hàng đợi trên hàng đợi thứ 1 cần băng thông là 5 kbps và hàng đợi thứ 2 cần băng thông là 30 kbps, nhưng vì WFQ chỉ cấp băng thông cho mỗi hàng đợi là 12.8 kbps, như vậy hàng đợi thứ 1 dư băng thông nó sẽ luôn được phục vụ tốt nhất, nghĩa là low delay, low jitter, low loss vì số gói tin trong hàng đợi của nó lúc nào cũng rất ít. Với hàng đợi thứ 2 thiếu băng thông vì vậy delay, jitter và loss của nó sẽ rất lớn.
- Cung cấp thêm băng thông cho những luồng có mức ưu tiên cao hơn (giá trị IP precedence cao hơn hay DSCP cao hơn) : Vẫn với giả sử trên 128 kbps cho 10 luồng. Bây giờ giả sử có 5 luồng với IP precedence bằng 0, và 5 luồng với IP precedence bằng 1. 5 luồng IP precedence 1 có mức ưu tiên cao hơn 5 luồng IP precedence 0 theo đó tỉ số băng thông phân phối là 2:1. Luồng IP precedence 1 sẽ nhận băng thông là 17 kbps gấp đôi luồng IP precedence 0 là 8.5 kbps, cách tính tỉ số này như sau:
Sau khi được phân loại gói tin sẽ được tính giá trị SN (Sequence number) như sau: SN = SN (trước đó) + Weight*length
+ SN : Sequence number.
+ Weight : trọng số của gói tin , Weight = 32384 / (IP Precedence + 1).
+ Length : Chiều dài gói tin.
Sau đó quyết định có drop gói tin hay không dựa vào 2 thông số (còn gọi là Tail drop):
- Hold-queue: Nếu gói tin là này là gói mà làm vượt mức hold-queue (tổng số gói tin trong tất cả các hàng đơi) thì nó sẽ bị drop.
- CDT: (Congestion discard threshold) là số gói tin tối đa trong một hàng đợi, giá trị này có thể cấu hình cho phép từ 1 đến 4096. Tiếp theo các gói tin nếu không bị drop sẽ đưa vào hàng đợi và chờ phát đi.
Khi nằm trong hàng đợi các gói tin sẽ được lập lịch (scheduler logic). Quá trình lập lịch dựa vào SN của gói tin, precedence và volume (Số gói tin đang có trong một hàng đợi).
- Những gói tin có SN càng nhỏ, precedence càng lớn, và volume càng nhỏ sẽ được chọn forward trước.
- Thứ tự ưu tiên như sau: Đầu tiên là SN, sau đó là precedence, và cuối cùng là volume.
2. Hàng đợi cân bằng có trọng số dựa trên Class CBWFQ (Class-Based Weighted Fair Queuing)
Class-Based Weighted Fair Queuing (CBWFQ) là kĩ thuật hàng đợi ra đời sau WFQ. Nó giống với WFQ ở chỗ cho phép sử dụng WFQ ngay bên trong một hàng đợi của nó, nhưng khác với WFQ ở chỗ: CBWFQ sử dụng Class để phân loại còn WFQ sử dụng flow. CBWFQ có thể cấu hình băng thông thực sự cho một hàng đợi.
Hàng đợi CBWFQ
Tiến trình gởi gói tin của CBWFQ. Từ trái sang phải:
1. CBWFQ phân loại gói tin bằng ACLs, MPLS EXP, Port….
2. Quyết định drop gói tin bằng các kĩ thuật Tail drop hoặc WRED.
3. Số hàng đợi tối đa là 64 và chiều dài hàng đợi tối đa là 64, các giá trị này là mặc định ta có thể set tùy theo ý muốn.
4. Bên trong mỗi hàng đợi ta có thể dùng FIFO hoặc WFQ. WRED là kĩ thuật hàng đợi dùng để chống nghẽn, nó tốt cho một số loại dữ liệu nhưng cũng không tốt cho các dữ liệu như Voice hay Video vì các dữ liệu này cần không bị rớt trong mọi trường hợp. CBWFQ vượt trội hơn các hàng đợi WFQ ở chỗ: Nó phân loại gói tin theo Class chứ không theo flow, như vậy dễ dàng cho ta thiết kế hơn.
3. Hàng đợi độ trễ thấp LLQ (Low Latency Queuing)
Low –latency Queueing (LLQ) là một kĩ thuật hàng đợi mà ở đó nó cho phép gói tin được phục vụ với chất lượng cao nhất (low delay, low jitter, low loss …). LLQ không phải là một hàng đợi tách biệt với các kĩ thuật hàng đợi khác, nó được sử dụng bên trong một kĩ thuật hàng đợi nào đó để làm tăng tính ưu tiên cho hàng đợi này. Những hàng đợi có dùng LLQ thì nó được đối xử giống như hàng đợi PQ, nhưng với PQ thì nó không đảm bảo băng thông cho các hàng đợi khác, còn với LLQ thì mặc dù vẫn có hàng đợi ưu tiên nhưng nó vẫn đảm bảo băng thông cho các hàng đợi không có LLQ.
Mỗi khi hàng đợi LLQ vượt quá tốc độ cho phép hay băng thông cho phép thì các gói tin trong hàng đợi này sẽ bị rớt và chuyển qua phục vụ cho hàng đợi khác. Như vây hàng đợi LLQ chỉ có thể hoạt động ở tốc độ đã được thiết lập từ trước và không thể tranh chấp với các hàng đợi khác khi nó cần thêm băng thông, và các hàng đợi khác được đảm bảo về băng thông.
Như vậy LLQ là hàng đợi luôn được phục vụ trước nhưng nó có các chính sách để ngăn chặn việc tranh chấp băng thông với các hàng đợi khác khi xảy ra vượt qua tốc độ cho phép. Hàng đợi LLQ có ý nghĩa rất lớn trong các dữ liệu là Voice, Video…vì nó cho phép các dữ liệu này nhận được sự phục vụ tốt nhất có thể: low delay, low jitter, low loss...
4. Định hướng và chính sách (shaping và policing)
Định hướng và các chính sách là một một phần không thể thiếu trong các kĩ thuật QoS. Các chính sách sẽ giúp cho các gói tin có được các mức ưu tiên phù hợp với đặc điểm của nó và sẽ drop gói tin khi tốc độ vượt quá mức so với cấu hình. Chính sách do kĩ sư thiết kế cho các loại dữ liệu khác nhau, nó tùy thuộc vào cảm tính của người kĩ sư và phụ thuộc vào thỏa thuận giữa nhà cung cấp dịch vụ và khách hàng. Trong khi đó, định hướng sẽ giúp cho các gói tin nhận được sự phục vụ đúng theo tốc độ đã định hình. Nó không drop gói tin mà chỉ làm cho gói tin chậm lại để không bị vượt quá tốc độ cho phép.
Cả hai công cụ shaping và policing đều đo tốc độ truyền hoặc nhận dữ liệu. Policing có khả năng loại bỏ những gói tin dư thừa để đảm bảo tốc độ truyền không vượt quá tốc độ thoả thuận. Shaping sắp xếp các gói dư thừa này vào hàng đợi, và rồi đi ra khỏi hàng đợi ở tốc độ định hình. Trong cả hai trường hợp, cả hai công cụ đều ngăn lưu lượng không được vượt quá tốc độ bit được định nghĩa bởi người quản trị. Một lý do cổ điển để lựa chọn shaping là khi thiết bị ở đầu kia của đường truyền đang thực hiện policing.
Ví dụ: giả sử PE1 thuộc một doanh nghiệp và R2 thuộc ISP. PE1 gửi gói tới R2 và R2 thực hiện policing, loại bỏ những lưu lượng vượt quá tốc độ xbps. ISP có thể lựa chọn giám sát tại R2 để bảo vệ mạng tránh khỏi việc chấp nhận quá nhiều lưu lượng. PE1 có thể được cấu hình đề shaping lưu lượng gửi tới R2 sao cho lưu lượng này ở tốc độ bằng với tốc độ ở phía giám sát ở R2, thay vì để dữ liệu thừa bị R2 loại bỏ.
Tóm lại, shaping và policing có thể đóng vai trò quan trọng trong trường hợp router có thể gửi nhiều lưu lượng hơn sự cho phép của hợp đồng lưu lượng. Shaping chỉ làm chậm lại tốc độ truyền gói để không vượt quá hợp đồng lưu lượng. Policing loại bỏ những gói để không vượt quá hợp đồng lưu lượng.
Hà Phạm Minh Đức – VnPro