Sinh viên Thực hiện: Nguyễn Thị Thu Thảo
Link bài trước: http://vnpro.org/forum/showthread.php/49705-T%E1%BB%94NG-QUAN-V%C3%8A-CH%E1%BA%A4T-L%C6%AF%E1%BB%A2NG-D%E1%BB%8ACH-V%E1%BB%A4-QoS
Dịch vụ phân biệt DiffServ Cấu trúc của mô hình DiffServ bao gồm nhiều lớp dịch vụ và mỗi lớp sẽ được cung cấp một lượng tài nguyên xác định. Ví dụ trong mạng bao gồm hai lớp dịch vụ: “nỗ lực tối đa” và “độ ưu tiên” (premium). Điều này có nghĩa là những gói dữ liệu thuộc lớp ưu tiên sẽ được cung cấp chất lượng dịch vụ tốt hơn: dữ liệu được đảm bảo, ít mất hơn và có độ trễ thấp hơn. Điểm khác nhau giữa mô hình DiffServ và IntServ: IntServ dùng giao thức báo hiệu để thông báo cho các nút mạng chất lượng dịch vụ mà luồng yêu cầu. Với mô hình DiffServ, trên mỗi gói dữ liệu sẽ chứa thông tin xác định lớp dịch vụ. Thông tin này được gọi là điểm mã dịch vụ phân biệt DSCP (Differentiated Service Code Point) của tiêu đề IP, tiền thân là vùng ToS (Type of Service). Như vậy trên lý thuyết chúng ta có tất cả 64 lớp dịch vụ khác nhau nhưng trong thực tế số lượng lớp dịch vụ ít hơn nhiều.
Câu hỏi đặt ra ở đây là các bộ định tuyến sẽ làm gì khi nhận gói dữ liệu với giá trị DSCP nào đó?
Giá trị DSCP cho biết yêu cầu chất lượng dịch vụ mà gói dữ liệu yêu cầu mạng cung cấp hay nói cách khác DSCP xác định một hành vi hop PHB (Perhop behavior). Ngoài những giá trị PHB chuẩn, trong nội bộ một mạng có thể định nghĩa riêng những giá trị PHB. Sau đây là một số giá trị PHB chuẩn:
• Giá trị mặc định (Default): tương đương với yêu cầu nỗ lực tối đa.
• Chuyển tiếp nhanh EF (Expedited Forwarding): gói dữ liệu có giá trị này sẽ có thời gian trễ nhỏ nhất và độ mất gói thấp nhất.
• Chuyển tiếp bảo đảm AF (Assured Forwading): mỗi PHB mang một giá trị AFxy. Giá trị x cho phép xác định hàng đợi dành cho gói, giá trị y xác định mức độ ưu tiên hay nói cách khác là khả năng mất gói khi xảy ra hiện tượng nghẽn mạch hoặc tranh chấp. Như vậy, nếu các gói được đánh dấu AF11, AF12, AF13 thì chúng được xếp chung vào một hàng đợi nhưng mức ưu tiên của các gói AF13 thấp hơn và xác suất mất cao hơn. Riêng các gói AF2y có hàng đợi khác gói AF1y. Số lượng AF PHB là 12, trong đó x có 4 giá trị và y có 3 giá trị. Và điều quan trọng cần phải nhắc đến là các gói AFx1, AFx2, AFx3 sẽ được đưa vào cùng một hàng đợi để không bị mất thứ tự. Mỗi thiết bị định tuyến sẽ lưu giữ một bảng ánh xạ giá trị DSCP của gói với giá trị PHB, từ đó xác định phương thức xử lý gói.
2.4 Sự khác nhau giữa IntServ và DiffServ
Trong một mạng sử dụng QoS, chúng ta có thể không cần dùng đến IntServ hay DiffServ mà mạng vẫn chạy bình thường, tuy nhiên nếu có ứng dụng DiffServ hay IntServ vào thì sẽ cho kết qua tốt hơn nhiều, và có thể đảm bảo chất lượng dịch vụ cao hơn. DiffServ ra đời để khắc phục các khuyết điểm của IntServ, giữa chúng có những sự khác nhau:
Hình 1.13: Sự khác nhau giữa DiffServ và IntServ
3 Phân loại và đánh dấu
QoS là khả năng cung cấp các mức xử lý khác nhau hướng đến các lớp lưu lượng riêng. Trước khi các ứng dụng hay các kỹ thuật QoS được áp dụng, lưu lượng phải được nhận biết và sắp xếp vào trong các lớp khác nhau. Thiết bị mạng sử dụng sự phân loại để nhận biết lưu lượng theo các lớp riêng biệt. Sau khi lưu lượng mạng được sắp xếp, việc đánh dấu được thực hiện bằng cách gắn thẻ cho các gói riêng biệt để các thiết bị mạng khác có thể thực hiện các chức năng QoS cho các gói đó khi chúng di chuyển thông qua mạng.
3.1 Phân loại (classification)
Phân loại là việc các gói tin sẽ được đưa vào những hàng đợi khác nhau mỗi khi tới router, IOS của router bằng cách này hay cách khác phải phân biệt được các gói tin khác nhau với độ ưu tiên khác nhau để đưa vào các hàng đợi thích hợp, nó phải biết được gói tin nào có RTP (Real time protocol) headers để shape (định hướng) cho gói tin nhằm cung cấp đủ băng thông cho lưu lượng là voice. IOS phải phân biệt được đâu là VoIP và đâu là data, để làm điều này thì nó phải sử dụng Phân Loại (Classification). Để có thể phân loại được gói tin, thông thường phải kiểm tra một số trường trong headers, sau khi phân loại, một QoS tool sẽ đưa gói tin vào hàng đợi thích hợp, hầu hết sự phân loại nhằm phân biệt đâu là gói tin VoIP và đâu là gói tin không phải VoIP. Trong hình trên ta thấy: Việc phân loại được thực hiện ở tất cả các router trên links kết nối, ở router R3 sau khi phân loại sẽ đưa vào hàng đợi Queuing và sau đó là shaping (định hướng). Q1, Q2, Q3, Q4 lần lượt là các mức ưa tiên, ở đây ta thấy voice có mức ưa tiên cao nhất. ở bảng thứ 2 là shaping police ta sẽ tìm hiểu phần sau. Ta có thể dùng một số tools để phân loại, ví dụ như dùng ACLs: Với ACL 101 để cho phép gói tin loại nào đó sẽ được xếp vào hàng đợi thứ 1, với ACL 102 để cho phép goi tin loại khác sẽ được xếp vào hàng đợi thứ 2, … Sau khi đã được phân loại, các gói tin sẽ được đánh dấu (marking), việc đánh dấu sẽ đánh dấu vào một trường trong IP header, sau khi gói tin đã được đánh dấu, các tools còn lại trong QoS sẽ sử dụng “dấu” để tiến hành phân loại ở các chặng tiếp theo. Hai trường dùng để đánh dấu là IP Precedence và Differentiated Service Code Point (DSCP). 3.2 Đánh dấu (Marking)
Đánh dấu là một kĩ thuật dùng để tạo ra sự phân biệt giữa các gói tin của các loại dữ liệu khác nhau trong khi thực hiện QoS, việc đánh dấu sẽ thực hiện trên các một số trường có trong gói tin như IP precedent, DSCP, EXP, QoS group, QoS discard…. Việc đánh dấu thường được thực hiện sau khi gói tin đã được phân loại, Sau khi phân loại gói tin ta sẽ đánh dấu vào gói tin đó một giá trị, có thể đó là giá trị IP precedent, DSCP hay EXP…Các giá trị đã được đánh dấu sẽ được dùng để phân loại gói tin ở chặn tiếp theo và thực hiện QoS. Việc đánh dấu thường xảy ra tại ngõ vào của interface, tại đây gói tin sẽ được thu nhận và thực hiện đánh dấu lại (remark) nếu cần thiết, dấu vừa đánh sẽ tồn tại trong các hàng đợi ngõ ra của router này và trên đường truyền tới đích tiếp theo.
Thực chất của việc đánh dấu là ta sẽ set các giá trị trong gói tin lên các giá trị thích hợp mà ta cho là hợp lí.
4 Các kỹ thuật hàng đợi (Classfication & queuing)
Vì tốc độ xử lý các gói tin của router là chậm hơn nhiều so với số lượng gói tin đến và cần truyền đi, vì vậy các gói tin cần phải xếp hàng và đợi trong một hàng dài nếu như không muốn bị drop, do đó kĩ thuật hàng đợi cần được áp dụng cho các router. Thường thì hàng đợi chỉ xảy ra ở ngõ ra của router khi đó ta gọi là hàng đợi ngõ ra (output queuing), nhưng đôi khi hàng đợi cũng xảy ra ở ngõ vào ta gọi là hàng đợi ngõ vào (input queuing).
Hình trên là một ví dụ về hàng đợi, ngõ vào với 4 gói tin kích thước 1500 byte mỗi gói, ở đây ta có hai hàng đợi :hàng thứ 1 đang có 3 gói tin đang chờ và băng thông của hàng này là 25% tổng băng thông, hàng thứ 2 chỉ có 1 gói tin đang chờ với băng thông là 75%, như vậy gói tin nào sẽ được gởi trước? Thật ra gói tin nào được gởi trước là tùy thuộc vào mức độ ưu tiên của hàng đợi đó và hàng đợi đó như thế nào so với các hàng đợi khác.
4.1 First In-First Out Queuing
Hàng đợi FIFO không có sự phân loại vì tất cả các gói đều thuộc về cùng một lớp. Một bộ định tuyến hay bộ chuyển mạch cần các hàng đợi xuất để giữ các gói trong khi chờ bộ giao tiếp sẵn sàng gửi gói. Trong khi các công cụ hàng đợi khác thể hiện các tính năng khác, như sắp xếp trật tự các gói, hàng đợi FIFO chỉ cung cấp một ý nghĩa giữ các gói trong khi chúng chờ để rời khỏi một cổng giao tiếp (interface). Hàng đợi FIFO sử dụng một hàng đợi đơn cho bộ giao tiếp. Vì chỉ có một hàng đợi nên không cần phân lớp để quyết định khi gói đi vào. Và cũng không cần lập lịch ban đầu để cho hàng đợi lấy gói tiếp theo. Chỉ quan tâm đến cách cấu hình chiều dài hàng đợi FIFO tránh tác động đến độ trễ và mất gói. Hàng đợi FIFO sử dụng kỹ thuật hủy gói cuối hàng đợi để quyết định khi nào bỏ gói hay cho gói vào hàng đợi. Nếu cấu hình một hàng đợi dài hơn, nhiều gói có thể đặt trong hàng đợi, nghĩa là hàng đợi ít khả năng đầy. Nếu không gian hàng đơi còn trống nhiều thì gói ít bị mất. Tuy vậy, với một hàng đợi dài, độ trễ và độ biến động trễ của gói tăng. Với hàng đợi ngắn, độ trì hoãn ít xuất hiện hơn, nhưng hàng đợi FIFO đơn sẽ đầy nhanh chóng, lúc này các gói mới sẽ bị hủy bỏ.
Lập lịch hàng đợi FIFO: Sau khi gói đi vào hàng đợi thì bộ định tuyến sẽ sử dụng thuật toán lập lịch để duy trì công việc. Lập lịch FIFO là thuật toán lập lịch truyền thống được sử dụng trong Internet, đây là thuật toán lập lịch đơn giản nhất. Trong thuật toán này bộ lập lịch truyền các gói theo thứ tự đến và hủy các gói khi hàng đợi đầy. Tuy nhiên, bộ lập lịch gói không có sự phân biệt giữa các người sử dụng. Vì vậy nó không thể phân phối cho một số user độ trễ trung bình thấp hơn các người dùng khác. Mọi người dùng trong cùng lớp dịch vụ chịu cùng một độ trễ biến thiên (jitter delay). Ngoài ra, độ biến động trễ có xu hướng tăng lên khi số chặng tăng lên vì độ trễ hàng đợi của gói ở các chặng khác nhau không tương quan với nhau. Với FIFO, độ trễ trung bình của một người sử dụng có thể tăng lên nếu tổng tốc độ đến của tất cả người sử dụng tăng lên. Tuy nhiên việc sử dụng kỹ thuật hàng đợi FIFO có các nhược điểm: • FIFO không hoàn toàn tin cậy khi một luồng không mong muốn tranh giành với các luồng có độ ưu tiên thấp. Các luồng không mong muốn gửi một số lượng lớn các gói (đa số các gói đó bị huỷ bỏ). Trong khi đó, các luồng với độ ưu tiên thấp gửi một số lượng gói xác định và hầu hết chúng bị hủy bởi vì hàng đợi lúc nào cũng đầy do các luồng không mong muốn đã chiếm hết không gian hàng đợi. • Sự bùng nổ cao hay thấp gây ra tình trạng đầy hàng đợi FIFO. Các gói đi vào một hàng đợi đầy phải chờ một thời gian dài trước khi chúng được truyền. Nhưng ở thời điểm khác, hàng đợi có thể trống và các gói trong cùng một luồng không bị trì hoãn. Các ưu điểm của kỹ thuật hàng đợi FIFO • Đây là kỹ thuật đơn giản và nhanh. • Nó được hỗ trợ trên tất cả các nền tảng. • Hàng đợi FIFO được hỗ trợ trong tất cả các phiên bản của Cisco IOS. Để cấu hình cho hàng đợi FIFO ta phải unable tất cả các kĩ thuật hàng đợi khác có trong interface đó. Mặc định thì WFQ (Weighted Fair Queuing) sẽ được áp dụng cho các interface và nó chạy ở tốc độ E1 (khoảng 2M). Để disable WFQ ta dùng câu lệnh “no fair-queue”, Khi đã disable tất cả các kĩ thuật hàng đợi có trong interface thì FIFO sẽ mặc nhiên được sử dụng. Để chọn chiều dài cho hàng đợi ta dùng câu lệnh “hold-queue x out”.
4.2 Priority Queuing
Tính năng đặc biệt của PQ là ở bộ lập lịch. PQ lập lịch lưu lượng đảm bảo hàng đợi ưu tiên luôn được phục vụ trước. Với 4 mức ưu tiên: cao, trung bình, bình thường, và thấp. Nếu hàng đợi ưu tiên cao luôn có một gói đang chờ, bộ lập lịch luôn luôn lấy các gói trong hàng đợi ưu tiên cao. Nếu hàng đợi ưu tiên cao không có gói nào đang chờ nhưng có trong hàng đơi ưu tiên trung bình, một gói trong hàng đợi này sẽ được lấy và tiến trình cứ như thế tiếp tục. Bộ lập lịch PQ có một số thuận lợi và hạn chế. Các gói trong hàng đợi ưu tiên cao có thể đạt 100% băng thông liên kết, với độ trì hoãn nhỏ và độ biến động trễ nhỏ. Thật ra, khi nghẽn mạch, các gói trong hàng đợi ưu tiên thấp tốn nhiều thời gian phục vụ. Khi liên kết tắc nghẽn, các ứng dụng người dùng có thể ngừng làm việc nếu các gói đặt trong hàng đợi ưu tiên thấp. PQ phân lớp các gói dựa trên nội dung của các tiêu đề. Nó sử dụng tối đa 4 hàng đợi. Chỉ áp dụng chính sách hủy gói cuối hàng đợi (tail drop), mặt khác sau khi phân lớp các gói, nếu hàng đợi tương ứng đầy, các gói bị bỏ. Mặt khác, chiều dài mỗi hàng đợi là nguyên nhân ảnh hưởng đến độ trễ và mất gói. Thật ra, PQ có thể thiết lập chiều dài hàng đợi trở về giá trị 0, có nghĩa là chiều dài hàng đợi “không giới hạn”. (“không giới hạn” có nghĩ là khi bộ định tuyến ra ngoài vùng nhớ, các gói không thể lập lịch, tuy nhiên chúng ta gặp vấn đề rắc rối hơn việc lập lịch cho gói nếu bộ định tuyến ngoài vùng nhớ.) 1. PQ có thể phân lớp các gói sử dụng danh sách điều khiển truy cập ACL với giao thức lớp 3. PQ cũng có thể so trùng trực tiếp không cần sử dụng ACL, đầu vào, chiều dài gói và cổng TCP và UDP.
2. Hủy bỏ gói cuối hàng đợi là chính sách bỏ gói mặc định.
3. Số hàng đợi cực đại là 4.
4. Chiều dài hàng đợi cực đại có thể là 0, nghĩa là hàng đợi có chiều dài “không xác định” theo lý thuyết. Mặc định là 20, 40, 60 và 80 tướng ứng với các hàng đợi ưu tiên cao,trung bình, bình thường và thấp.
5. Bên trong một hàng đợi, PQ sử dụng hảng đợi FIFO.
6. Khi lập lịch các hàng đợi, PQ luôn phục vụ các hàng đợi ưu tiên cao trước. Khi ngõ xuất không tắc nghẽn (nói một cách khác TX không đầy), các gói mới đặt vào TX một cách trực tiếp. Khi TX đầy, PQ thể hiện việc lập lịch. Khi tất cả các hàng đợi PQ truyền hết các gói (TX không đầy), tắc nghẽn dịu đi. Các gói mới đến lại vào TX, cho đến khi nó đầy trở lại, nó sẽ khởi động tiến trình hàng đợi với PQ. PQ làm việc tốt trong các chính sách QoS cần xử lý một loại lưu lượng với khả năng phục vụ tốt nhất. Tuy nhiên, dịch vụ PQ với các hàng đợi thấp giảm nhanh chóng, làm cho PQ không thiết thực cho hầu hết các ứng dụng hiện nay. Chẳng hạn, việc chạy một kết nối FTP, một trình duyệt web, một cuộc gọi NetMeeting, và 2 cuộc gọi VoIP khi xuất, các kết nối TCP với lưu lượng HTTP và FTP thường xuyên vượt quá thời gian cho phép.
4.3 Weighted Fair Queuing
WFQ là kĩ thuật hàng đợi mặc định trong router Cisco, nó khác với các hàng đợi PQ và FIFO ở các điểm sau:
+ Nó không cho phép cấu hình phân loại, WFQ phân loại gói tin theo flow, một flow bao gồm nhiều gói tin có cùng đích đến và cùng nguồn, cùng port đích và port nguồn. Sẽ không có cấu hình nào rõ ràng cho nó.
+ Tính năng lập lịch: WFQ dựa vào flow, do vậy những flow nào có độ ưu tiên cao hơn thì sẽ được phát trước.
+ Mỗi flow 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. Với WFQ ta có tối đa là 4096 hàng đợi trong 1 interface của router, số hàng đợi này cũng chính là số flow chảy vào router. Ví dụ: ta có 5 flow là Voice, 2 kết nối HTTP, 2 kết nối FTP thì khi đó ta sẽ có 5 hàng đợi trong router, như vậy số hàng đợi thay đổi theo số flow, chúng không cố định như trong các kĩ thuật khác. Hoạt động của WFQ như sau:
- Mục đích thứ hai của WFQ là cung cấp đủ băng thông cho các flow có độ ưu tiên IPP cao. Để làm điều này, các flow được gán trọng số dựa theo giá trị (IPP + 1). Nói cách khác, các flow có độ ưu tiên IPP bằng 7 sẽ có băng thông nhiều hơn tám lần so với flow có độ ưu tiên IPP bằng 0, bởi vì (7+1)/(0+1)=8. Một ví dụ khác, nếu so sánh dòng lưu lượng có độ ưu tiên 3 với dòng có độ ưu tiên 0, tỉ lệ băng thông được cấp phát là (3+1)/(0+1)=4.
· Sau khi được phân loại gói tin sẽ được tính giá trị SN (Sequence number) như sau: 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 Bảng giá trị của Weight:
4.4 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. 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. Chú ý: 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.
4.5 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 …).Nó đơn giản để cấu hình và đơn giản để hiểu. 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. Như vậy 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ậy 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.. 5 Định hướng và chính sách (Shaping and 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 qua 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ử R1 thuộc một doanh nghiệp và R2 thuộc ISP. R1 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. R1 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ỏ. Nói 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. Theo hình như trên ta thấy với policing thì nó chỉ ứng xử với các gói tin vượt qua tốc độ cho phép bằng cách drop chúng để tốc độ vẫn đảm bảo vì vậy ngõ ra có dạng răng cưa. Còn với Shaping thì nó cho ngõ ra mượt hơn bởi vì nó không ứng xử với các gó itn đã vượt quá tốc độ mà nó sẽ làm cho các gói tin chậm lại và đảm bảo tốc độ cho trước.
Link bài trước: http://vnpro.org/forum/showthread.php/49705-T%E1%BB%94NG-QUAN-V%C3%8A-CH%E1%BA%A4T-L%C6%AF%E1%BB%A2NG-D%E1%BB%8ACH-V%E1%BB%A4-QoS
Dịch vụ phân biệt DiffServ Cấu trúc của mô hình DiffServ bao gồm nhiều lớp dịch vụ và mỗi lớp sẽ được cung cấp một lượng tài nguyên xác định. Ví dụ trong mạng bao gồm hai lớp dịch vụ: “nỗ lực tối đa” và “độ ưu tiên” (premium). Điều này có nghĩa là những gói dữ liệu thuộc lớp ưu tiên sẽ được cung cấp chất lượng dịch vụ tốt hơn: dữ liệu được đảm bảo, ít mất hơn và có độ trễ thấp hơn. Điểm khác nhau giữa mô hình DiffServ và IntServ: IntServ dùng giao thức báo hiệu để thông báo cho các nút mạng chất lượng dịch vụ mà luồng yêu cầu. Với mô hình DiffServ, trên mỗi gói dữ liệu sẽ chứa thông tin xác định lớp dịch vụ. Thông tin này được gọi là điểm mã dịch vụ phân biệt DSCP (Differentiated Service Code Point) của tiêu đề IP, tiền thân là vùng ToS (Type of Service). Như vậy trên lý thuyết chúng ta có tất cả 64 lớp dịch vụ khác nhau nhưng trong thực tế số lượng lớp dịch vụ ít hơn nhiều.
Câu hỏi đặt ra ở đây là các bộ định tuyến sẽ làm gì khi nhận gói dữ liệu với giá trị DSCP nào đó?
Giá trị DSCP cho biết yêu cầu chất lượng dịch vụ mà gói dữ liệu yêu cầu mạng cung cấp hay nói cách khác DSCP xác định một hành vi hop PHB (Perhop behavior). Ngoài những giá trị PHB chuẩn, trong nội bộ một mạng có thể định nghĩa riêng những giá trị PHB. Sau đây là một số giá trị PHB chuẩn:
• Giá trị mặc định (Default): tương đương với yêu cầu nỗ lực tối đa.
• Chuyển tiếp nhanh EF (Expedited Forwarding): gói dữ liệu có giá trị này sẽ có thời gian trễ nhỏ nhất và độ mất gói thấp nhất.
• Chuyển tiếp bảo đảm AF (Assured Forwading): mỗi PHB mang một giá trị AFxy. Giá trị x cho phép xác định hàng đợi dành cho gói, giá trị y xác định mức độ ưu tiên hay nói cách khác là khả năng mất gói khi xảy ra hiện tượng nghẽn mạch hoặc tranh chấp. Như vậy, nếu các gói được đánh dấu AF11, AF12, AF13 thì chúng được xếp chung vào một hàng đợi nhưng mức ưu tiên của các gói AF13 thấp hơn và xác suất mất cao hơn. Riêng các gói AF2y có hàng đợi khác gói AF1y. Số lượng AF PHB là 12, trong đó x có 4 giá trị và y có 3 giá trị. Và điều quan trọng cần phải nhắc đến là các gói AFx1, AFx2, AFx3 sẽ được đưa vào cùng một hàng đợi để không bị mất thứ tự. Mỗi thiết bị định tuyến sẽ lưu giữ một bảng ánh xạ giá trị DSCP của gói với giá trị PHB, từ đó xác định phương thức xử lý gói.
2.4 Sự khác nhau giữa IntServ và DiffServ
Trong một mạng sử dụng QoS, chúng ta có thể không cần dùng đến IntServ hay DiffServ mà mạng vẫn chạy bình thường, tuy nhiên nếu có ứng dụng DiffServ hay IntServ vào thì sẽ cho kết qua tốt hơn nhiều, và có thể đảm bảo chất lượng dịch vụ cao hơn. DiffServ ra đời để khắc phục các khuyết điểm của IntServ, giữa chúng có những sự khác nhau:
DiffServ | IntServ |
Không dùng bất kì giao thức báo hiệu nào để dành trước băng thông mạng,do vậy tiết kiệm được băng thong mạng. | Dùng giao thức báo hiệu RSVP để dành trước băng thông mạng, do đó sẽ tốn tài nguyên mạng vô ích. |
Có thể sử dụng cho mạng lớn và cả mạng nhỏ với số lưu lượng rất lớn | Chỉ có thể sử dụng cho mạng cỡ nhỏ với số lượng lưu lượng nhỏ |
Ít tốn tài nguyên mạng | Tốn nhiều tài nguyên mạng |
Xét ưu tiên gói trên từng chặn | Khởi tạo một kênh truyền trước khi truyền |
Khả năng mở rộng mạng cao và phục vụ đa dịch vụ | Khả năng mở rộng mạng thấp và phục cụ ít dịch cụ. |
Hình 1.13: Sự khác nhau giữa DiffServ và IntServ
3 Phân loại và đánh dấu
QoS là khả năng cung cấp các mức xử lý khác nhau hướng đến các lớp lưu lượng riêng. Trước khi các ứng dụng hay các kỹ thuật QoS được áp dụng, lưu lượng phải được nhận biết và sắp xếp vào trong các lớp khác nhau. Thiết bị mạng sử dụng sự phân loại để nhận biết lưu lượng theo các lớp riêng biệt. Sau khi lưu lượng mạng được sắp xếp, việc đánh dấu được thực hiện bằng cách gắn thẻ cho các gói riêng biệt để các thiết bị mạng khác có thể thực hiện các chức năng QoS cho các gói đó khi chúng di chuyển thông qua mạng.
3.1 Phân loại (classification)
Phân loại là việc các gói tin sẽ được đưa vào những hàng đợi khác nhau mỗi khi tới router, IOS của router bằng cách này hay cách khác phải phân biệt được các gói tin khác nhau với độ ưu tiên khác nhau để đưa vào các hàng đợi thích hợp, nó phải biết được gói tin nào có RTP (Real time protocol) headers để shape (định hướng) cho gói tin nhằm cung cấp đủ băng thông cho lưu lượng là voice. IOS phải phân biệt được đâu là VoIP và đâu là data, để làm điều này thì nó phải sử dụng Phân Loại (Classification). Để có thể phân loại được gói tin, thông thường phải kiểm tra một số trường trong headers, sau khi phân loại, một QoS tool sẽ đưa gói tin vào hàng đợi thích hợp, hầu hết sự phân loại nhằm phân biệt đâu là gói tin VoIP và đâu là gói tin không phải VoIP. Trong hình trên ta thấy: Việc phân loại được thực hiện ở tất cả các router trên links kết nối, ở router R3 sau khi phân loại sẽ đưa vào hàng đợi Queuing và sau đó là shaping (định hướng). Q1, Q2, Q3, Q4 lần lượt là các mức ưa tiên, ở đây ta thấy voice có mức ưa tiên cao nhất. ở bảng thứ 2 là shaping police ta sẽ tìm hiểu phần sau. Ta có thể dùng một số tools để phân loại, ví dụ như dùng ACLs: Với ACL 101 để cho phép gói tin loại nào đó sẽ được xếp vào hàng đợi thứ 1, với ACL 102 để cho phép goi tin loại khác sẽ được xếp vào hàng đợi thứ 2, … Sau khi đã được phân loại, các gói tin sẽ được đánh dấu (marking), việc đánh dấu sẽ đánh dấu vào một trường trong IP header, sau khi gói tin đã được đánh dấu, các tools còn lại trong QoS sẽ sử dụng “dấu” để tiến hành phân loại ở các chặng tiếp theo. Hai trường dùng để đánh dấu là IP Precedence và Differentiated Service Code Point (DSCP). 3.2 Đánh dấu (Marking)
Đánh dấu là một kĩ thuật dùng để tạo ra sự phân biệt giữa các gói tin của các loại dữ liệu khác nhau trong khi thực hiện QoS, việc đánh dấu sẽ thực hiện trên các một số trường có trong gói tin như IP precedent, DSCP, EXP, QoS group, QoS discard…. Việc đánh dấu thường được thực hiện sau khi gói tin đã được phân loại, Sau khi phân loại gói tin ta sẽ đánh dấu vào gói tin đó một giá trị, có thể đó là giá trị IP precedent, DSCP hay EXP…Các giá trị đã được đánh dấu sẽ được dùng để phân loại gói tin ở chặn tiếp theo và thực hiện QoS. Việc đánh dấu thường xảy ra tại ngõ vào của interface, tại đây gói tin sẽ được thu nhận và thực hiện đánh dấu lại (remark) nếu cần thiết, dấu vừa đánh sẽ tồn tại trong các hàng đợi ngõ ra của router này và trên đường truyền tới đích tiếp theo.
Thực chất của việc đánh dấu là ta sẽ set các giá trị trong gói tin lên các giá trị thích hợp mà ta cho là hợp lí.
4 Các kỹ thuật hàng đợi (Classfication & queuing)
Vì tốc độ xử lý các gói tin của router là chậm hơn nhiều so với số lượng gói tin đến và cần truyền đi, vì vậy các gói tin cần phải xếp hàng và đợi trong một hàng dài nếu như không muốn bị drop, do đó kĩ thuật hàng đợi cần được áp dụng cho các router. Thường thì hàng đợi chỉ xảy ra ở ngõ ra của router khi đó ta gọi là hàng đợi ngõ ra (output queuing), nhưng đôi khi hàng đợi cũng xảy ra ở ngõ vào ta gọi là hàng đợi ngõ vào (input queuing).
Hình trên là một ví dụ về hàng đợi, ngõ vào với 4 gói tin kích thước 1500 byte mỗi gói, ở đây ta có hai hàng đợi :hàng thứ 1 đang có 3 gói tin đang chờ và băng thông của hàng này là 25% tổng băng thông, hàng thứ 2 chỉ có 1 gói tin đang chờ với băng thông là 75%, như vậy gói tin nào sẽ được gởi trước? Thật ra gói tin nào được gởi trước là tùy thuộc vào mức độ ưu tiên của hàng đợi đó và hàng đợi đó như thế nào so với các hàng đợi khác.
4.1 First In-First Out Queuing
Hàng đợi FIFO không có sự phân loại vì tất cả các gói đều thuộc về cùng một lớp. Một bộ định tuyến hay bộ chuyển mạch cần các hàng đợi xuất để giữ các gói trong khi chờ bộ giao tiếp sẵn sàng gửi gói. Trong khi các công cụ hàng đợi khác thể hiện các tính năng khác, như sắp xếp trật tự các gói, hàng đợi FIFO chỉ cung cấp một ý nghĩa giữ các gói trong khi chúng chờ để rời khỏi một cổng giao tiếp (interface). Hàng đợi FIFO sử dụng một hàng đợi đơn cho bộ giao tiếp. Vì chỉ có một hàng đợi nên không cần phân lớp để quyết định khi gói đi vào. Và cũng không cần lập lịch ban đầu để cho hàng đợi lấy gói tiếp theo. Chỉ quan tâm đến cách cấu hình chiều dài hàng đợi FIFO tránh tác động đến độ trễ và mất gói. Hàng đợi FIFO sử dụng kỹ thuật hủy gói cuối hàng đợi để quyết định khi nào bỏ gói hay cho gói vào hàng đợi. Nếu cấu hình một hàng đợi dài hơn, nhiều gói có thể đặt trong hàng đợi, nghĩa là hàng đợi ít khả năng đầy. Nếu không gian hàng đơi còn trống nhiều thì gói ít bị mất. Tuy vậy, với một hàng đợi dài, độ trễ và độ biến động trễ của gói tăng. Với hàng đợi ngắn, độ trì hoãn ít xuất hiện hơn, nhưng hàng đợi FIFO đơn sẽ đầy nhanh chóng, lúc này các gói mới sẽ bị hủy bỏ.
Lập lịch hàng đợi FIFO: Sau khi gói đi vào hàng đợi thì bộ định tuyến sẽ sử dụng thuật toán lập lịch để duy trì công việc. Lập lịch FIFO là thuật toán lập lịch truyền thống được sử dụng trong Internet, đây là thuật toán lập lịch đơn giản nhất. Trong thuật toán này bộ lập lịch truyền các gói theo thứ tự đến và hủy các gói khi hàng đợi đầy. Tuy nhiên, bộ lập lịch gói không có sự phân biệt giữa các người sử dụng. Vì vậy nó không thể phân phối cho một số user độ trễ trung bình thấp hơn các người dùng khác. Mọi người dùng trong cùng lớp dịch vụ chịu cùng một độ trễ biến thiên (jitter delay). Ngoài ra, độ biến động trễ có xu hướng tăng lên khi số chặng tăng lên vì độ trễ hàng đợi của gói ở các chặng khác nhau không tương quan với nhau. Với FIFO, độ trễ trung bình của một người sử dụng có thể tăng lên nếu tổng tốc độ đến của tất cả người sử dụng tăng lên. Tuy nhiên việc sử dụng kỹ thuật hàng đợi FIFO có các nhược điểm: • FIFO không hoàn toàn tin cậy khi một luồng không mong muốn tranh giành với các luồng có độ ưu tiên thấp. Các luồng không mong muốn gửi một số lượng lớn các gói (đa số các gói đó bị huỷ bỏ). Trong khi đó, các luồng với độ ưu tiên thấp gửi một số lượng gói xác định và hầu hết chúng bị hủy bởi vì hàng đợi lúc nào cũng đầy do các luồng không mong muốn đã chiếm hết không gian hàng đợi. • Sự bùng nổ cao hay thấp gây ra tình trạng đầy hàng đợi FIFO. Các gói đi vào một hàng đợi đầy phải chờ một thời gian dài trước khi chúng được truyền. Nhưng ở thời điểm khác, hàng đợi có thể trống và các gói trong cùng một luồng không bị trì hoãn. Các ưu điểm của kỹ thuật hàng đợi FIFO • Đây là kỹ thuật đơn giản và nhanh. • Nó được hỗ trợ trên tất cả các nền tảng. • Hàng đợi FIFO được hỗ trợ trong tất cả các phiên bản của Cisco IOS. Để cấu hình cho hàng đợi FIFO ta phải unable tất cả các kĩ thuật hàng đợi khác có trong interface đó. Mặc định thì WFQ (Weighted Fair Queuing) sẽ được áp dụng cho các interface và nó chạy ở tốc độ E1 (khoảng 2M). Để disable WFQ ta dùng câu lệnh “no fair-queue”, Khi đã disable tất cả các kĩ thuật hàng đợi có trong interface thì FIFO sẽ mặc nhiên được sử dụng. Để chọn chiều dài cho hàng đợi ta dùng câu lệnh “hold-queue x out”.
4.2 Priority Queuing
Tính năng đặc biệt của PQ là ở bộ lập lịch. PQ lập lịch lưu lượng đảm bảo hàng đợi ưu tiên luôn được phục vụ trước. Với 4 mức ưu tiên: cao, trung bình, bình thường, và thấp. Nếu hàng đợi ưu tiên cao luôn có một gói đang chờ, bộ lập lịch luôn luôn lấy các gói trong hàng đợi ưu tiên cao. Nếu hàng đợi ưu tiên cao không có gói nào đang chờ nhưng có trong hàng đơi ưu tiên trung bình, một gói trong hàng đợi này sẽ được lấy và tiến trình cứ như thế tiếp tục. Bộ lập lịch PQ có một số thuận lợi và hạn chế. Các gói trong hàng đợi ưu tiên cao có thể đạt 100% băng thông liên kết, với độ trì hoãn nhỏ và độ biến động trễ nhỏ. Thật ra, khi nghẽn mạch, các gói trong hàng đợi ưu tiên thấp tốn nhiều thời gian phục vụ. Khi liên kết tắc nghẽn, các ứng dụng người dùng có thể ngừng làm việc nếu các gói đặt trong hàng đợi ưu tiên thấp. PQ phân lớp các gói dựa trên nội dung của các tiêu đề. Nó sử dụng tối đa 4 hàng đợi. Chỉ áp dụng chính sách hủy gói cuối hàng đợi (tail drop), mặt khác sau khi phân lớp các gói, nếu hàng đợi tương ứng đầy, các gói bị bỏ. Mặt khác, chiều dài mỗi hàng đợi là nguyên nhân ảnh hưởng đến độ trễ và mất gói. Thật ra, PQ có thể thiết lập chiều dài hàng đợi trở về giá trị 0, có nghĩa là chiều dài hàng đợi “không giới hạn”. (“không giới hạn” có nghĩ là khi bộ định tuyến ra ngoài vùng nhớ, các gói không thể lập lịch, tuy nhiên chúng ta gặp vấn đề rắc rối hơn việc lập lịch cho gói nếu bộ định tuyến ngoài vùng nhớ.) 1. PQ có thể phân lớp các gói sử dụng danh sách điều khiển truy cập ACL với giao thức lớp 3. PQ cũng có thể so trùng trực tiếp không cần sử dụng ACL, đầu vào, chiều dài gói và cổng TCP và UDP.
2. Hủy bỏ gói cuối hàng đợi là chính sách bỏ gói mặc định.
3. Số hàng đợi cực đại là 4.
4. Chiều dài hàng đợi cực đại có thể là 0, nghĩa là hàng đợi có chiều dài “không xác định” theo lý thuyết. Mặc định là 20, 40, 60 và 80 tướng ứng với các hàng đợi ưu tiên cao,trung bình, bình thường và thấp.
5. Bên trong một hàng đợi, PQ sử dụng hảng đợi FIFO.
6. Khi lập lịch các hàng đợi, PQ luôn phục vụ các hàng đợi ưu tiên cao trước. Khi ngõ xuất không tắc nghẽn (nói một cách khác TX không đầy), các gói mới đặt vào TX một cách trực tiếp. Khi TX đầy, PQ thể hiện việc lập lịch. Khi tất cả các hàng đợi PQ truyền hết các gói (TX không đầy), tắc nghẽn dịu đi. Các gói mới đến lại vào TX, cho đến khi nó đầy trở lại, nó sẽ khởi động tiến trình hàng đợi với PQ. PQ làm việc tốt trong các chính sách QoS cần xử lý một loại lưu lượng với khả năng phục vụ tốt nhất. Tuy nhiên, dịch vụ PQ với các hàng đợi thấp giảm nhanh chóng, làm cho PQ không thiết thực cho hầu hết các ứng dụng hiện nay. Chẳng hạn, việc chạy một kết nối FTP, một trình duyệt web, một cuộc gọi NetMeeting, và 2 cuộc gọi VoIP khi xuất, các kết nối TCP với lưu lượng HTTP và FTP thường xuyên vượt quá thời gian cho phép.
4.3 Weighted Fair Queuing
WFQ là kĩ thuật hàng đợi mặc định trong router Cisco, nó khác với các hàng đợi PQ và FIFO ở các điểm sau:
+ Nó không cho phép cấu hình phân loại, WFQ phân loại gói tin theo flow, một flow bao gồm nhiều gói tin có cùng đích đến và cùng nguồn, cùng port đích và port nguồn. Sẽ không có cấu hình nào rõ ràng cho nó.
+ Tính năng lập lịch: WFQ dựa vào flow, do vậy những flow nào có độ ưu tiên cao hơn thì sẽ được phát trước.
+ Mỗi flow 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. Với WFQ ta có tối đa là 4096 hàng đợi trong 1 interface của router, số hàng đợi này cũng chính là số flow chảy vào router. Ví dụ: ta có 5 flow là Voice, 2 kết nối HTTP, 2 kết nối FTP thì khi đó ta sẽ có 5 hàng đợi trong router, như vậy số hàng đợi thay đổi theo số flow, chúng không cố định như trong các kĩ thuật khác. Hoạt động của WFQ như sau:
- Khi gói tin vào interface, nó sẽ được phân loại thành các flow theo 5 thông số: - IP source - IP destination - Port source - Port destination - Giao thức lớp 4 nó sử dụng là gì (TCP hay UDP) WFQ dựa vào các trường như DSCP, ToS để phân loại gói tin và đưa nó vào các hàng đợi khác nhau. Những gói tin có IP precedent hay DSCP cao hơn sẽ có mức ưu tiên cao hơn. Hai vấn đề quan trọng trong WFQ đó là : - Đối xử công bằng với tất cả các flow đ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.
- Mục đích thứ hai của WFQ là cung cấp đủ băng thông cho các flow có độ ưu tiên IPP cao. Để làm điều này, các flow được gán trọng số dựa theo giá trị (IPP + 1). Nói cách khác, các flow có độ ưu tiên IPP bằng 7 sẽ có băng thông nhiều hơn tám lần so với flow có độ ưu tiên IPP bằng 0, bởi vì (7+1)/(0+1)=8. Một ví dụ khác, nếu so sánh dòng lưu lượng có độ ưu tiên 3 với dòng có độ ưu tiên 0, tỉ lệ băng thông được cấp phát là (3+1)/(0+1)=4.
· Sau khi được phân loại gói tin sẽ được tính giá trị SN (Sequence number) như sau: 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 Bảng giá trị của Weight:
Hình 1.20: Bảng giá trị Weight
Ví dụ: Với gói tin có SN trước đó là 0, chiều dài là 1500 byte và precedent là 0 ta sẽ tính SN như sau: SN = 0 + 1500*32384 = 48576000 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 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, precedent và volume (Số gói tin đang có trong một hàng đợi). - Những gói tin có SN càng nhỏ, precedent 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à precedent, và cuối cùng là volume. Ví dụ: Ta có 4 hàng đợi là flow 1, flow 2, flow 3, flow 4, với kích thức mỗi gói tin là 1500 byte, 1000 byte, 500 byte, 100 byte. Mỗi hàng đợi có 4 gói tin với precedent là 0, giả sử SN trước đó của các gói tin là 0, như vậy ta tính được các giá trị SN như hình sau: Khi đó thứ tự forward gói tin là: 13, 5, 14, 15, 6, 1, 16, 7, 9, 2, 8, 3, 4, 11, 12. 3.4 Class – Based Weighted Fair Queuing4.4 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. 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. Chú ý: 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.
4.5 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 …).Nó đơn giản để cấu hình và đơn giản để hiểu. 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. Như vậy 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ậy 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.. 5 Định hướng và chính sách (Shaping and 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 qua 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ử R1 thuộc một doanh nghiệp và R2 thuộc ISP. R1 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. R1 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ỏ. Nói 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. Theo hình như trên ta thấy với policing thì nó chỉ ứng xử với các gói tin vượt qua tốc độ cho phép bằng cách drop chúng để tốc độ vẫn đảm bảo vì vậy ngõ ra có dạng răng cưa. Còn với Shaping thì nó cho ngõ ra mượt hơn bởi vì nó không ứng xử với các gó itn đã vượt quá tốc độ mà nó sẽ làm cho các gói tin chậm lại và đảm bảo tốc độ cho trước.
Comment