Một trong những nguyên nhân gây ra nghẽn là sự bùng phát lưu lượng. Nếu các nguồn tin được truyền theo tốc độ chuẩn thì có thể hạn chế đáng kể
hiện tượng nghẽn. Ý tưởng này được sử dụng rộng rãi trong một số mạng tốc
độ cao. Cụ thể là để người sử dụng được lợi ích tối đa từ mức QoS do mạng cung cấp, thiết bị kết nối mạng phải đảm bảo gói gửi đến mạng phải phù hợp với các thông số trong hợp đồng lưu lượng. Các tiêu chuẩn thực thi gồm các phương pháp nhằm đạt được mục đích này gọi là sửa dạng lưu lượng GTS
(Generic Traffic Shaping). 4.1.5.1 Đặc điểm của GTS
Sửa dạng lưu lượng cho phép người quản trị điều khiển lưu lượng đầu ra của một giao diện phù hợp với các yêu cầu giữa tốc độ trạm đầu xa và chỉ tiêu của giao diện mà đã được thỏa thuận trước. Từ đó loại trừ
hiệu ứng nút cổ trai xẩy ra trong mạng.
Sửa dạng lưu lượng cho phép thực hiện điều khiển truy nhập băng thông khả dụng, bên cạnh đó nó cũng có tính năng ngăn cản quá tình làm mất gói.
Sửa dạng lưu lượng cũng có thể sử dụng để giới hạn tốc độ truyền dẫn. Người sử dụng có thể giới hạn tốc độ truyền dẫn theo một trong các đặc tính sau:
• Tốc độđược thiết lập.
• Tốc độ của trạm gửi dựa trên mức tắc nghẽn
Sửa dạng lưu lượng làm “nhẵn” lưu lượng bằng cách lưu giữ lưu lượng có tốc độ lớn hơn tốc độđược thiết lập trong một hàng đợi.
4.1.5.2 Cơ chế hoạt động của GTS
GTS bao gồm các khối chức năng (xem hình 4.6) như sau:
Bộ phân lớp lưu lượng: Phân loại các lớp lưu lượng khác nhau để có thể có các chính sách được áp dụng khác nhau.
Bộ đo (Metering): Dùng cơ chế token-bucket để phân biệt lưu lượng thỏa mãn và lưu lượng quá ngưỡng.
Định dạng: Dùng buffer để trễ những lưu lượng vượt quá tốc độ, và sửa dạng chúng tới một tốc độ giới hạn đã được cấu hình. GTS được thực hiện như cơ chế hàng đợi, trong đó có các hàng đợi trễ WFQ riêng biệt
được thực hiện cho mỗi lớp lưu lượng. Mỗi hàng đợi trễ các gói cho tới khi chúng thỏa mãn tốc độ giới hạn, và cũng sắp xếp chúng theo thuật toán WFQ. Sau đó lưu lượng được thỏa mãn sẽđược gửi tới giao diện vật lý.
Sửa dạng WFQ Bộ phân lớp Bộ phân lớp Bộ phân lớp Sửa dạng WFQ Sửa dạng WFQ Bộ chuyển tiếp Giao diện vật lý (hàng đợi) có có có có có có không không không không không không Hình 4.6 Sơ đồ các khối chức năng của GTS
Đầu tiên các gói được đưa tới các bộ phân loại, sự phân lớp có thể được thực hiện bằng access-list. Một gói được phân lớp đi vào một lớp định dạng, kích thước của chúng được so sánh với số lượng thẻ bài có thể trong token bucket của lớp đó. Gói được chuyển tiếp tới hàng đợi giao diện chính nếu đủ
thẻ bài. Nếu không đủ thẻ bài cho các gói chuyển tiếp, các gói nằm trong bộ đệm (buffer) trong hệ thống WFQ được gán cho lớp định dạng này. Sau đó router làm đầy token bucket định kỳ và kiểm tra nếu đủ thẻ bài cấp cho các gói chuyển tiếp. Các gói được xếp ra khỏi hàng đợi định dạng tùy thuộc vào thuật toán sắp xếp WFQ.
4.1.5.3 Kết luận
GTS thực thi trong phiên bản router hỗ trợ đa giao thức và làm việc trên nhiều loại giao diện khác nhau. WFQ được dùng như hàng đợi trễ định dạng, cho phép sự sắp xếp công bằng trong một lớp lưu lượng. GTS có thể thực hiện kết hợp với các cơ chế hàng đợi khác như: FIFO, PQ, CQ, WFQ. GTS chỉ làm việc ởđầu ra của giao diện. GTS có thểđược dùng đểđịnh dạng tất cả
Quản lý nghẽn là cơ chế các phần tử mạng xử lý các luồng lưu lượng chuyển
đến nhằm hạn chế hay loại trừ các khả năng tắc nghẽn có thể xẩy ra. Các đặc tính quản lý tắc nghẽn của QoS cho phép các cơ chế điều khiển tắc nghẽn thông qua việc xác lập thứ tự các gói tin sẽđược chuyển tới đầu ra dựa trên cơ
sở thứ tự ưu tiên tương ứng. Trong chương này sẽ phân tích việc ứng dụng công nghệ lập lịch và hàng đợi trong quản lý tắc nghẽn.
4.2 Điều khiển tắc nghẽn
Việc điều khiển tắc nghẽn đòi hỏi xây dựng các cơ chế hàng đợi, các gói tin sẽ được ‘tích tụ’ tại giao diện tạo thành hàng đợi và được gửi đi ngay khi có thể. Thứ tự các gói tin được gửi đi tùy theo giá trị ưu tiên của chúng và phương thức xử lý hàng đợi được cấu hình trên cổng giao diện. Nói cách khác hàng đợi trên router là cần thiết để điều chỉnh sự bùng nổ khi tốc độ gói đến lớn hơn tốc độ gói xuất phát vì một trong 2 lý do sau:
Giao diện đầu vào nhanh hơn giao diện đầu ra.
Giao diện đầu ra thu nhận các gói đến từ nhiều giao diện khác nhau. Lúc đầu tiên thực hiện hàng đợi chỉ sử dụng một chiến lược đơn FIFO. Sau
đó nhiều cơ chế hàng đợi được đưa vào phục vụ khi những yêu cầu cụ thể cần các router phân biệt giữa các gói có độ quan trọng khác nhau.
Hàng đợi được chia ra làm 2 thành phần:
Hệ thống hàng đợi phần cứng (hardware queue): Vẫn dùng theo chiến lược FIFO, cần thiết cho giao diện chuyển phát từng gói một. Hàng đợi phần cứng thỉnh thoảng cũng được biết đến như là transmit queue hay
TxQ.
Hệ thống Hàng đợi phần mềm (Software queue) sắp xếp các gói trong hhardware queue dựa trên cơ sở các yêu cầu QoS.
Trong kỹ thuật QoS có 4 loại cơ chế hàng đợi được sử dụng, mỗi một cơ
chế có các nguyên tắc sắp xếp hàng đợi và xử lý tắc nghẽn khác nhau:
FIFO (First In First Out).
WFQ (Weighted Fair Queuing).
CQ (Custom Queuing).
PQ (Priority Queuing).
4.2.1 Hàng đợi vào trước ra trước (FIFO)
Đối với các mạng đơn giản hàng đợi dạng FIFO (First In First Out) thường
được áp dụng, nó không đòi hỏi các khái niệm về quyền ưu tiên hay phân loại lưu lượng. Cơ chế thực hiện của FIFO là: Vào trước ra trước.
4.2.1.1 Các ưu nhược điểm của hàng đợi FIFO
Ưu điểm của FIFO bao gồm:
Đơn giản và nhanh.
Hỗ trợ trên tất cả các thiết bị.
Hỗ trợ tất cả các đường chuyển mạch (switching paths).
Hỗ trợ tất cả các phiên bản phần mềm. Nhược điểm:
FIFO không cấp băng thông cân bằng giữa các luồng. Một vài luồng nhận được băng thông nhiều hơn bởi vì chúng sử dụng các gói lớn hơn hoặc gửi nhiều gói hơn.
FIFO cực kỳ không cân bằng khi một luồng lớn tranh chấp với một luồng nhỏ (fragile flow). Luồng lớn gửi một số lượng lớn các gói và khi tràn hàng đợi sẽ có nhiều gói trong đó bị drop. Luồng nhỏ gửi một số
lượng gói vừa phải và hầu hết chúng bị drop bởi vì hàng đợi luôn bị đầy do luồng lớn. Loại quan hệ này được gọi là Starvation (sự thiếu hụt).
4.2.1.2 Cấu hình FIFO
Khởi tạo hàng đợi FIFO trên giao diện (xem hình 4.8)
FIFO mặc định được thiết lập trên các giao diện tốc độ lớn hơn 2M.
WFQ là mặc định được thiết lập trên các giao diện tốc độ nhỏ hơn 2M.
Lệnh này dùng để không cho phép WFQ và khởi tạo FIFO.
Hình 4.8 Ví dụ cấu hình hàng đợi FIFO Cấu hình bộ nhớđệm hàng đợi FIFO.
Hàng đợi FIFO cho phép tối đa 40 gói được lưu lại trong hàng đợi đầu ra.
Câu lệnh này có thể được dùng để tăng hoặc giảm số lượng gói tối đa trong bộđệm gói.
Một giá trị lớn có thể được đặt để hỗ trợ sự bùng nổ dài hơn (drop ít hơn, chiếm nhiều bộđệm được dùng).
4.2.2 Hàng đợi tuần tự (CQ)
CQ (Custom Queuing) thực hiện phục vụ các hàng đợi theo cơ chế tuần tự, nó thực hiện truyền phần trăm lưu lượng trên mỗi hàng đợi trước khi chuyển
đến hàng đợi kế tiếp bởi vậy nó có khả năng đảm bảo cho một vài mức dịch vụ hay toàn bộ lưu lượng được truyền tải.
4.2.2.1 Cơ chế hoạt động
Hàng đợi CQ cho phép người sử dụng (user) định ra phần trăm băng thông khả dụng cho một dịch vụđặc biệt nào đó. Nghĩa là CQ cho phép người dùng chỉ định số lượng byte xác định từ hàng đợi sẽđược gửi đi dựa trên cơ sở tốc
độ giao tiếp và phần trăm lưu lượng được cấu hình. CQ cũng cho phép người dùng chỉ định số lượng tối đa các gói được sắp xếp trong hàng đợi và có thể định nghĩa lên tới 17 hàng đợi, trong đó hàng đợi số 0 được dùng cho hàng
đợi của hệ thống, hàng đợi hệ thống có thứ tựưu tiên cao nhất, hàng đợi này là rỗng trước khi có bất kỳ hàng đợi dữ liệu nào được tham gia xử lý, nó mang các thông tin báo hiệu và các thông điệp của hệ thống.
Hình 4.9 Cơ chế hoạt động của CQ
Trong hình vẽ 4.9 CQ sử dụng kỹ thuật lập lịch (scheduling) round-robin, trong đó mỗi hàng đợi được cấu hình với một số byte (byte-count) mà nó có thể gửi đi trong một vòng. Gói cuối cùng luôn luôn được gửi, thậm chí tổng số byte được gửi trong một chu kỳ lớn hơn giới hạn (byte-count). Như vậy việc thiết lập số lượng byte giới hạn quá nhỏ có thể phát sinh những vấn đề
không mong đợi trong việc phân phối băng thông. Tuy nhiên khi số lượng byte giới hạn được thiết lập quá lớn thì có thể phát sinh thời gian chờ được phục vụ của hàng đợi tiếp theo. Do đó việc xác định số lượng byte phải dựa trên cỡ gói trong mỗi giao thức nếu không tỉ lệ phần trăm phân phối băng thông sử dụng sẽ không giống như các thông sốđược cấu hình.
Hình 4.10 sẽ minh họa một trường hợp xấu nhất trong đó các tham sốđược sử dụng để thực thi CQ trên giao diện như sau:
MTU trên giao diện là 1500.
Hình 4.10 Một trường hợp xấu nhất xảy ra đối với hàng đợi CQ Theo ví dụ trên hình 4.10 tổng số bytes hai gói dữ liệu là 2999 byte mà byte-count là 3000. Do đó router sẽ gửi tiếp các byte ở gói tiếp theo, nghĩa là tại hàng đợi đó router sẽ gửi 4499 byte, sau đó mới phục vụ hàng đợi tiếp theo. Đây cũng là một trong những nhược điểm của CQ.
Vậy ta phải xác định byte-count là bao nhiêu? Nếu tỷ số byte-count/MTU quá nhỏ CQ sẽ không phân phối băng thông chính xác. Nếu tỷ số này quá lớn CQ sẽ là nguyên nhân của trễ. Sau đây chúng ta phân tích một ví dụ về tính toán băng thông và độ trễ tối đa. Ta xét một hệ thống gồm 3 hàng đợi CQ như hình vẽ 4.11 trong đó: Hàng đợi thứ nhất dùng byte-count là 4500. Hàng đợi thứ 2 dùng byte-count là 3000. Hàng đợi thứ 3 dùng byte-count là 1500. Hàng đợi 1 Hàng đợi 2 Hàng đợi 3 1500 2999 3000 4499 4500 5999 Bộ l ậ p l ị ch Round Robin 64 kbps MTU = 1500
Việc tính toán đảm bảo băng thông và độ trễ tối đa (theo công thức 4.1). Thời gian hoàn thành một vòng phụ thuộc vào băng thông của giao diện, kích thước MTU, và tổng số của tất cả byte-count hàng đợi.
BW1 = bc1 / (bc1 + bc2 + bc3) = 4500/9000 = 50% Td1 = (bc2 + bc3) / B = (3000+1500)*8/64000 = 562 ms (4.1) Tw1 = ((bc2 + 1499) + (bc3 +1499)) / B = (3000+1499 + 1500+1499)*8/64000 = 937 ms Trong đó: BW1(%): Tỷ lệ % chiếm băng thông của hàng đợi 1
bc1, bc2, bc3 (byte): Là các ngưỡng (byte – count) của hàng đợi 1, 2, 3 Td1(s): Thời gian trễ của hàng đợi 1
Tw1(s): Thời gian trễ trong trường hợp xấu nhất của hàng đợi 1 B (b/s): Dải thông của giao diện đầu ra
Phép tính thứ nhất và thứ hai chỉ ra rằng hàng đợi đầu tiên sẽ nhận băng thông xấp xỉ là 50% băng thông và thời gian trễ là 562ms. Phép tính thứ ba chỉ ra rằng round-robin delay là 937ms cho hàng đợi thứ nhất khi tất cả các lớp nghẽn và gửi số lượng byte tối đa (byte-count + MTU-1) trong một vòng. Tính toán tương tự đối với hàng đợi thứ 2 ta có: Tỉ lệ chiếm băng thông xấp xỉ là 33%, thời gian trễ là 750ms, thời gian trễ trong trường hợp xấu nhất xấp xỉ là 1125ms.
Đối với hàng đợi thứ 3 ta có: Tỉ lệ chiếm băng thông xấp xỉ là 17%, thời gian trễ xấp xỉ là 936ms, thời gian trễ trong trường hợp xấu nhất xấp xỉ là 1312ms.
Căn cứ vào số liệu được tính toán, ta thấy các tham sốđược cấu hình trong hàng đợi thứ 1 là tối ưu hơn cả.
4.2.2.2 Những ưu nhược điểm của hàng đợi CQ
Ưu điểm:
Đảm bảo thông lượng cho các lớp lưu lượng (tránh sự thiếu hụt giữa các lớp lưu lượng).
Hỗ trợ trên hầu hết các platform.
Hỗ trợ trong hầu hết các phiên bản phần mềm (Cisco IOS version 10.0 trở lên).
Nhược điểm:
Cấu hình bằng tay tại mỗi hop.
Cấp băng thông không chính xác.
Độ jitter cao do thực thi sự sắp xếp.
4.2.2.3 Cấu hình thực thi hàng đợi CQ
Khởi tạo CQ trên một giao diện và gán CQ xác định vào giao diện.
Phân lớp các gói dựa trên giao thức. Các gói không phân lớp sẽ được sắp xếp vào hàng đợi mặc định
Phân lớp các gói thành lớp dựa trên giao diện đầu vào.
Xác định byte-count, mặc định là 1500 bytes.
Đặt hàng đợi thấp nhất: Q1 có ưu tiên cao nhất, hàng đợi mặc định Q0 luôn luôn được coi là “pre-emptive” chứa các thông tin về hệ thống và các bản tin link-level.
Hình 4.12 minh họa một ví dụ cấu hình CQ trên router của một chi nhánh văn phòng: Một chi nhánh văn phòng Mạng lõi (WAN) E0 E1 interface serial 1/0 custom - queue-list 5 !
queue-list 5 protocol ip 1 list 101 queue-list 5 queue 1 limit 40 queue-list 5 lowest-custom 2
queue-list 5 interface ethernet 0/0 2 queue-list 5 queue 2 byte-count 3000 queue-list 5 protocol ip 3
queue-list 5 queue 3 byte-count 5000 queue-list 5 default 4
!
access-list 101 permit ip any any precedence 5 Hình 4.12 Ví dụ cấu hình hàng đợi CQ
Trong ví dụ hình 6.8
Q1 được dùng cho các ứng dụng nhạy cảm với trễ (được đánh dấu với IP precedence 5.
Q3 được dùng cho tất cả các gói IP mà không phải là một trong 2 hàng
đợi đầu tiên.
Q4 được dùng cho tất cả các lưu lượng khác.
4.2.3 Hàng đợi ưu tiên (PQ)
PQ (Priority Queuing) thường được sử dụng trong các ứng dụng ưu tiên một loại lưu lượng, tuy nhiên nó cũng có thể mở rộng với tất cả các loại dịch vụ khác. Đối với PQ các hàng đợi có thứ tựưu tiên thấp có thể phát sinh ảnh hưởng bất lợi, chúng có thể không bao giờ được gửi đi nếu như băng thông truyền tải bị giới hạn hay tốc độ truyền dẫn không đáp ứng được dung lượng các dạng lưu lượng được gửi tới.
4.2.3.1 Cơ chế hoạt động
Trong qúa trình truyền dẫn các gói sẽ được phân loại thành 4 mức (cao, thông thường, trung bình và thấp) dựa trên các tiêu chuẩn của người quản lý, sau đó chúng sẽ được sắp xếp vào các hàng đợi trên cơ sở các mức ưu tiên. Cơ chế làm việc của PQ được mô tả theo hình vẽ 4.13
Phân lớp
Các gói tin đến Hàng Txđợi Các gói tin ra
Phân lớp bởi:
Các giao thức (IP, TPX, Apple Talk,...) Các giao diện nguồn (E0, S0,…)
High
Chiều dài được định nghĩa