Qos trung bình cho 1 thiết bị

Trước đây, khi mà Internet chủ yếu là truyền data thì người ta không cần quan tâm đến việc phân biệt và ưu tiên cho các gói tin bởi vì lúc này băng thông mạng và các tài nguyên khác đủ để cung cấp cho các ứng dụng trong mạng, vì vậy các ISPs sẽ cung cấp cho khách hàng của họ dịch vụ best-effort (BE), khi đó tất cả các khách hàng sẽ được đối xử như nhau, họ chỉ khác nhau ở loại kết nối. Đây là dịch vụ phố biến trên mạng Internet hay mạng IP nói chung. Các gói thông tin được truyền đi theo nguyên tắc “đến trước được phục vụ trước” mà không quan tâm đến đặc tính lưu lượng của dịch vụ là gì. Điều này dẫn đến rất khó hỗ trợ các dịch vụ đòi hỏi độ trễ thấp như các dịch vụ thời gian thực hay video. Cho đến thời điểm này, đa phần các dịch vụ được cung cấp bởi mạng Internet vẫn sử dụng nguyên tắc Best Effort này

Nhưng khi Internet càng ngày càng phát triển và phát triển thêm các dịch vụ HTTP, Voice, Video… thì điều này sẽ làm cho chất lượng của các dịch vụ này giảm đi rõ rệt vì delay lớn, độ jitter lớn và không đủ băng thông để truyền, phương án tăng băng thông của mạng cũng không giải quyết được vấn đề này mà lại còn rất tốn kém.

Qos trung bình cho 1 thiết bị
Đặc điểm của từng loại traffic

QoS (Quanlity of Service) là một khái niệm dùng để đề cập đến tất cả các khía cạnh liên quan đến hiệu quả hoạt động của mạng. QoS bao gồm hai thành phần chính:

  • Tìm đường qua mạng nhằm cung cấp cho dịch vụ được yêu cầu.
  • Duy trì hiệu lực hoạt động của dịch vụ.

Hai mô hình cung cấp chất lượng dịch vụ được sử dụng phổ biến ngày nay là:

  • Mô hình dịch vụ tích hợp IntServ (Intergrated Services).
  • Mô hình dịch vụ phân biệt DiffServ (Differentiated Services).

Có nhiều nguyên nhân giải thích tại sao mô hình IntServ không được sử dụng để theo kịp mức độ phát triển của Internet. Thay vào đó, IntServ chỉ được sử dụng phổ biến trong các mô hình mạng với quy mô nhỏ và trung bình. Trong khi đó, DiffServ lại là mô hình cung cấp chất lượng dịch vụ có khả năng mở rộng. Cơ chế hoạt động của mô hình này bao gồm quá trình phân loại lưu lượng và tại thành phần biên mạng, quá trình xếp hàng tại mỗi nút mạng và xử lý huỷ gói trong lõi mạng. Trong đó, phần lớn các quản lý và xử lý được thực hiện tại thành phần biên mạng mà không cần phải lưu giữ trạng thái của các luồng lưu lượng trong lõi mạng.

Qos trung bình cho 1 thiết bị
Các kỹ thuật QoS trong mạng IP

Bộ định tuyến trong mạng sẽ căn cứ vào địa chỉ IP và các nút trong mạng để tìm nút mạng kế tiếp được nhận gói. Nếu hàng đợi dành cho nút mạng kế tiếp quá dài, thời gian trễ của gói dữ liệu sẽ lớn. Nếu hàng đợi đầy không còn chỗ trống thì gói dữ liệu sẽ bị hủy. Như vậy, mạng IP chỉ cung cấp mô hình dịch vụ “nỗ lực tối đa” (best effort service), có nghĩa là mạng sẽ khai thác hết khả năng trong giới hạn cho phép, nhưng không đảm bảo độ trễ và mất mát dữ liệu. Vì vậy, khi có nhiều luồng lưu lượng truyền đi trong mạng và vượt quá khả năng của mạng, dịch vụ không bị từ chối nhưng chất lượng dịch vụ giảm, thời gian trễ tăng, tốc độ giảm và mất dữ liệu. Do đó, mạng IP không thích hợp với những ứng dụng yêu cầu thời gian thực. Ngoài ra, với thông tin đa điểm (multicast) đồng thời phục vụ hàng triệu khách hàng thì hiện nay mạng IP không thực hiện được. Nếu có thể triển khai tốt thông tin quảng bá thì có thể tích hợp phát thanh truyền hình vào mạng IP.

Qos trung bình cho 1 thiết bị

Sự ra đời các giao thức chất lượng dịch vụ QoS cung cấp cho mạng các tính năng giúp mạng có thể phân biệt được các lưu lượng có đòi hỏi thời gian thực với các lưu lượng có độ trễ, mất mát hay độ biến động trễ (jitter). Băng thông sẽ được quản lý và sử dụng hiệu quả để có thể đáp ứng những yêu cầu về chất lượng của các luồng lưu lượng. Mục tiêu của QoS là cung cấp một số mức dự báo và điều khiển lưu lượng.

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.

Hình 3.15: Các kĩ thuật hàng đợi và so sánh giữa chúng

3.3.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ỏ.

Hình 3.16: Hàng đợi FIFO

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”.

Ví dụ: R3(config)

int s 0/0

R3(config-if)

no fair-queue // disable WFQ ;

R3(config-if)#^Z R3

sh int s 0/0

Serial0/0 is up, line protocol is up Hardware is PowerQUICC Serial Description: connected to FRS port S0. Single PVC to R1. MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation FRAME-RELAY, loopback not set Keepalive set (10 sec)

LMI enq sent 80, LMI stat recvd 73, LMI upd recvd 0, DTE LMI up LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0 LMI DLCI 1023 LMI type is CISCO frame relay DTE Broadcast queue 0/64, broadcasts sent/dropped 171/2, interface broadcasts 155 Last input 00:00:02, output 00:00:03, output hang never Last clearing of "show interface" counters 00:13:48 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: fifo //hàng đợi FIFO được dùng Output queue :0/40 (size/max) //Kích cỡ hàng đợi ngõ ra là 40 gói tin. 30 second input rate 0 bits/sec, 0 packets/sec 30 second output rate 0 bits/sec, 0 packets/sec 235 packets input, 14654 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 2 input errors, 0 CRC, 2 frame, 0 overrun, 0 ignored, 0 abort 264 packets output, 15881 bytes, 0 underruns 0 output errors, 0 collisions, 6 interface resets 0 output buffer failures, 0 output buffers swapped out 10 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up

+Thay đổi chiều dài hàng đợi ngõ ra thành 50 gói tin: R3(config)

int s 0/0

R3(config-if)

hold-queue 50 out

R3(config-if)#^Z ! R3

sh int s 0/0

Serial0/0 is up, line protocol is up Hardware is PowerQUICC Serial ! Lines omitted for brevity Queueing strategy: fifo Output queue :0/50 (size/max) //chiều dài hàng đợi là 50 : ! Line omitted for brevity

3.3.2 Priority Queuing

Hình 3.17: Cách lấy gói tin của hàng đợi PQ

- 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ớ.)

Hình 3.18: Tiến trình gởi gói tin của PQ

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. Bảng tóm tắc tính năng PQ:

3.3.3 Custom Queuing Custom Queuing (CQ) là kĩ thuật hàng đợi ra đời sau PQ, không giống như PQ, CQ sẽ phục vụ cho tất cả các hàng đợi có trong interface của nó thậm chí khi sảy ra nghẽn mạng. CQ có tất cả 16 hàng đợi, như vậy nó cho phép tối đa 16 lớp dịch vụ (vừa đủ cho các loại dịch vụ ngày nay). CQ còn không cung cấp cho một hàng đợi đặc biệt nào đó có mức ưu tiên cao hơn các hàng đợi khác và cũng không ưu tiên hàng đợi nào có low delay, low jitter, low loss…

CQ cung cấp một lượng băng thông ngang nhau cho tất cả các hàng đợi, việc lập lịch của CQ như sau:

Hình 3.19: Cách lấy gói tin của CQ

CQ sẽ kiểm tra lần lượt các hàng đợi, bắt đầu từ hàng đợi thứ 1, CQ sẽ lấy gói tin từ hàng đợi này cho tới khi số gói tin mà nó lấy vượt quá hoặc bằng giá trị cho phép, sau khi hàng đợi này đã được phục vụ với số gói tin nhu trên hoạc hàng đợi này không có gói tin thì CQ sẽ chuyển qua phục vụ cho hàng đợi kế tiếp và quá trình lặp lại như trên. CQ không cho phép cấu hình băng thông cho từng hàng đợi mà chỉ cho phép cấu hình số gói tin sẽ lấy thừ hàng đợi đó. Ví dụ: ta thiết kế sẽ lấy 10000 bytes cho mỗi hàng đợi và ta có 5 hàng đợi tất cả, như vậy mỗi hàng đợi sẽ chiếm dụng băng thông là 20% (10000/50000). Bây giờ nếu ta thiết kế có 5 hàng đợi: hai hàng đầu tiên sẽ được phục vụ với số bytes là 5000, hai hàng tiếp theo là 10000, và hàng thứ 5 là 20000, như vậy hàng thứ nhất và thứ hàng mỗi hàng sẽ nhận băng thông là 10% (5000/50000), hai hàng tiếp theo mỗi hàng nhận là 20% (10000/50000) và thứ 5 là 40% trên tổng băng thông của link. Khi thực hiện gởi gói tin, giả sử trong hàng đợi thứ 4 không có gói tin nào đang chờ, chỉ có hàng đợi 1,2,3 và 5 là có gói tin đang chờ, khi đó băng thông sẽ được phân phát lại như sau: hàng đợi thứ nhất nhận 12.5%, thứ 2 12.5%, thứ 3 25%, thứ 4 0% và thứ 5 là 50%.

Ta tính như sau: Hàng đợi thứ 1 : =12.5% Hàng đợi thứ 2: =12.5% Hàng đợi thứ 3: =25% Hàng đợi thứ 4: =50% Quá trình gởi gói tin của CQ:

Hình 3.20: Quá trình gởi gói tin của CQ

1.CQ phân loại gói tin bằng các ACLs hoặc bằng các kĩ thuật khác. 2.Tail drop là kĩ thuật CQ dùng để chống nghẽn. 3.Tối đa là 16 hàng đợi. 4.Ta có thể set kích cỡ của hàng đợi về tới 0 (nghĩa là chiều dài là vô hạng). 5.Bên trong một hành đợi CQ sử dụng FIFO.

6.Khi lập lịch cho gói tin, CQ sẽ xoay vòng cho các hàng đợi (phục vụ cho hàng này xong thì tới hàng hàng khác). Đặc điểm của CQ : + Không thích hợp cho các mạng cần low delay, low jitter,... + Không thể dành trước băng thông cho link. + Không cung cấp hàng đợi ưu tiên. + Không thích hợp cho Voice + Cho phép các hàng đợi được phục vụ xoay vòng. +Cho phép các hàng đợi bình đẳng nhau.

Hình 3.21: Bảng tóm tắc CQ

3.3.4 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õ rang 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

Hình 3.22: Cách lấy gói tin của WFQ

Hoạt động của WFQ như sau:

Hình 3.23: Tiến trình gởi gói tin của WFQ

+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à :

  1. Đố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ả
  2. 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.
  3. Cung cấp thêm băng thông cho những flow có mức ưu tiên cao hơn (higher IP precedent hay higher DSCP) : Vẫn với giả sử trên 128 kbps cho 10 flow. Bây giờ giả sử có 5 flow với IP precedent bằng 0, và 5 flow với IP precedent bằng 1, 5 flow IP precedent 1 có mức ưu tiên cao hơn 5 flow IP precedent 0 theo đó tỉ số băng thông phân phối là 2:1, flow IP precedent 1 sẽ nhận băng thông là 17 kbps gấp đôi flow IP precedent 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 Bảng giá trị của Weight:

Hình 3.24: 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 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, 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.

Hình 3.25: Tính toán SN

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:

Hình 3.26: Thứ tự gởi gói tin

Khi đó thứ tự forward gói tin là: 13, 5, 14, 15, 6, 1, 16, 7, 9, 2, 8, 3, 4, 11, 12. Ví dụ cấu hình cho WFQ:

Hình 3.27: Ví dụ về mạng có dùng WFQ

R3

conf t

R3(config)

int s 0/0

R3(config-if)

fair-queue

R3(config-if)#^Z R3

sh int s 0/0

Serial0/0 is up, line protocol is up Hardware is PowerQUICC Serial Description: connected to FRS port S0. Single PVC to R1. MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, reliability 255/255, txload 9/255, rxload 8/255 Encapsulation FRAME-RELAY, loopback not set Keepalive set (10 sec) LMI enq sent 171, LMI stat recvd 163, LMI upd recvd 0, DTE LMI up LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0 LMI DLCI 1023 LMI type is CISCO frame relay DTE Broadcast queue 0/64, broadcasts sent/dropped 378/2, interface broadcasts 347 Last input 00:00:01, output 00:00:00, output hang never Last clearing of "show interface" counters 00:28:46 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 8249 Queueing strategy: weighted fair Output queue: 126/1000/64/8249 (size/max total/threshold/drops) Conversations 6/7/256 (active/max active/max total) Reserved Conversations 0/0 (allocated/max allocated)

Available Bandwidth 1158 kilobits/sec 5 minute input rate 52000 bits/sec, 97 packets/sec 5 minute output rate 58000 bits/sec, 78 packets/sec 36509 packets input, 2347716 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 1 input errors, 0 CRC, 1 frame, 0 overrun, 0 ignored, 0 abort 28212 packets output, 2623792 bytes, 0 underruns 0 output errors, 0 collisions, 5 interface resets 0 output buffer failures, 0 output buffers swapped out 10 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up R3

show queueing fair

Current fair queue configuration: Interface Discard Dynamic Reserved Link Priority threshold queues queues queues queues Serial0/0 64 256 0 8 1 Serial0/1 64 256 0 8 1 R3

show queueing fair int s 0/0

Current fair queue configuration: Interface Discard Dynamic Reserved Link Priority threshold queues queues queues queues Serial0/0 64 256 0 8 1 R3# show queue s 0/0

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 11027 Serial0/0 64 256 Queueing strategy: weighted fair Output queue: 79/1000/64/11027 (size/max total/threshold/drops) Conversations 4/8/256 (active/max active/max total) Reserved Conversations 0/0 (allocated/max allocated) Available Bandwidth 1158 kilobits/sec ! Next stanza lists info about one of the VoIP calls (depth/weight/total drops/no-buffer drops/interleaves) 37/5397/1359/0/0 Conversation 15, linktype: ip, length: 64 source: 192.168.3.254, destination: 192.168.2.251, id: 0x013B, ttl: 253, TOS: 184 prot: 17, source port 16772, destination port 19232 ! Next stanza lists info about one of the VoIP calls (depth/weight/total drops/no-buffer drops/interleaves) 37/5397/1359/0/0 Conversation 125, linktype: ip, length: 64 source: 192.168.3.254, destination: 192.168.2.251, id: 0x0134, ttl: 253, TOS: 184 prot: 17, source port 16638, destination port 19476 ! Next stanza lists info about one of the HTTP TCP connections (depth/weight/total drops/no-buffer drops/interleaves) 1/10794/36/0/0 Conversation 33, linktype: ip, length: 1404 5397 10794 source: 192.168.3.100, destination: 192.168.1.100, id: 0xFF50, ttl: 127,

TOS: 72 prot: 6, source port 80, destination port 1067 ! Next stanza lists info about one of the HTTP TCP connections (depth/weight/total drops/no-buffer drops/interleaves) 2/10794/34/0/0 Conversation 34, linktype: ip, length: 1404 source: 192.168.3.100, destination: 192.168.1.100, id: 0xFF53, ttl: 127, TOS: 88 prot: 6, source port 80, destination port 1068 ! Notice the TOS values versus the weight in the last two stanzas! R3

configure terminal

Enter configuration commands, one per line. End with CNTL/Z. R3(config)

int s 0/0

R3(config-if)

fair-queue 100 64 10

R3(config-if)

hold-queue 500 out

R3(config-if)#^Z ! R3

show interface serial 0/0

Serial0/0 is up, line protocol is up Hardware is PowerQUICC Serial Description: connected to FRS port S0. Single PVC to R1. MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, reliability 255/255, txload 9/255, rxload 8/255 Encapsulation FRAME-RELAY, loopback not set Keepalive set (10 sec) LMI enq sent 198, LMI stat recvd 190, LMI upd recvd 0, DTE LMI up

LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0 LMI DLCI 1023 LMI type is CISCO frame relay DTE Broadcast queue 0/64, broadcasts sent/dropped 442/2, interface broadcasts 406 Last input 00:00:01, output 00:00:00, output hang never 10794 Last clearing of "show interface" counters 00:33:14 Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 12474 Queueing strategy: weighted fair Output queue: 95/500/100/12474 (size/max total/threshold/drops) Conversations 5/6/64 (active/max active/max total) Reserved Conversations 0/0 (allocated/max allocated) Available Bandwidth 1158 kilobits/sec ! lines omitted for brevity R3

show queueing fair

Current fair queue configuration: Interface Discard Dynamic Reserved Link Priority threshold queues queues queues queues Serial0/0 100 64 10 8 1 Serial0/1 64 256 0 8 1 3.3.5 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ình 3.28: 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. 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.

Hình 3.29: các hàng đợi của CBWFQ

Bảng tóm tắt CBWFQ:

Cấu hình CBWFQ:

Kiểm tra lại cấu hình:

3.3.6 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.

Hình 3.30: Tiến trình gởi gói tin của LLQ

Hoặc:

Theo như giản đồ trên thì LLQ sẽ hoạt động không khác gì so với PQ bởi vì nó luôn phục vụ hàng đợi có mức ưu tiên cao hơn, chỉ khi nào hàng đợi này không còn gói tin thì

nó mới chuyển sang hàng đợi không có ưu tiên. Để khắc phục điều này LLQ sẽ làm như sau:

Hình 3.31: Tiến trình gởi gói tin của LLQ cải thiện 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 xay 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.. Ví dụ cấu hình LLQ: Để cấu hình một hàng đợi LLQ bên trong một hàng đợi nào đó ta dùng câu lệnh sau: priority {bandwidth-kbps | percent percentage} [burst] Ví dụ: PE1(config-pmap)

class Voice-EXP

PE1(config-pmap-c)

priority 512 ///Mức ưu tiên cao nhất

PE1(config-pmap-c)

exit

Với cầu hình này, một hàng đợi của CBWFQ là Voice-EXP đã được cấu hình thêm bên trong đó là hàng đợi LLQ với băng thông là 512 kbps. Khi đó hàng đợi này sẽ có mức ưu tiên cao nhất trong tất cả các hàng đợi. Bảng tóm tắt các kĩ thuật hàng đợi:

Bảng trên cho ta tóm tắt về các hàng đợi và các kĩ thuật drop mặc định của chúng, cột cuối cùng là số hàng đợi tối đa cho mỗi loại hàng đợi.

Cột thứ 2 là các kĩ thuật lập lịch cho gói tin trong mỗi hàng đợi. Các trường dùng để phân loại của các kĩ thuật hàng đợi:

3.4 Đị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.

Hình 3.32: So sánh giữ policing và shaping

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