QoS mạng IP

QoS mạng IP là nói đến các kỹ thuật xử lý lưu lượng trong mạng truyền số liệu sử dụng bộ giao thức IP (Internet Protocol) nhằm đảm bảo các loại lưu lượng có yêu cầu chất lượng dịch vụ khác nhau được đối xử ưu tiên khác nhau. Chẳng hạn, trong một mạng IP có hai ứng dụng là truyền file FTP và dịch vụ gọi điện thoại IP telephony. Ứng dụng IP Telephony đòi hỏi việc truyền dữ liệu phải liên tục, độ trễ thấp (thời gian thực), còn ứng dụng FTP không yêu cầu cao về độ trễ, miễn là truyền đủ và chính xác nội dung dữ liệu. Với mạng IP này, chúng ta cần phải áp dụng các kỹ thuật xử lý lưu lượng nhằm phân loại lưu lượng và áp dụng các chính sách ưu tiên khác nhau nhằm đảm bảo lưu lượng IP Telephony phải có độ ưu tiên đường truyền cao hơn, thậm chí thông suốt kể cả khi mạng bị nghẽn so với dịch vụ truyền file FTP, hệ thống mạng như vậy được gọi là có cam kết chất lượng dịch vụ mà sau đây gọi tắt là QoS.

== Các tiêu chí đánh giá chất lượng dịch vụ ==
Để đánh giá chất lượng dịch vụ của mạng IP người ta dựa vào các tham số sau đây:

- Tỷ lệ mất gói: tham số này cho biết tỷ lệ phần trăm số gói IP bị mất trên tổng số toàn bộ số gói IP đầu gửi đã chuyển vào mạng cho phía đầu nhận.
- Độ trễ gói: tham số này cho biết khoảng thời gian gói IP được chuyển từ đầu gửi đến đầu nhận.
- Độ biến thiên trễ (jitter): tham số này cho biết sự dao động về độ lớn của độ trễ gói.
- Khả năng đáp ứng của dịch vụ: tham số này cho biết xác suất sử dụng thành công dịch vụ.

== Phân lớp lưu lượng ==
=== Giới thiệu ===
Việc phân lớp lưu lượng được thực hiện tại cả lớp 2 (lớp liên kết dữ liệu - Datalink layer) và lớp 3 (lớp mạng Network layer) trong mô hình OSI.

=== Phân lớp lưu lượng ở mức lớp mạng ===
Để sắp xếp các luồng dữ liệu IP thành các lớp khác nhau nhằm phục vụ cho các chính sách QoS khác nhau, chúng ta sử dụng 3 bit đầu tiên trong trường loại dịch vụ (Service Type - ToS) trong phần mào đầu của gói dữ liệu IP. 3 bit này được gọi là trường IP Precedence và có giá trị mặc định là 0. Trường IP Precedence bằng 0 có nghĩa là gói tin này sẽ được truyền theo kiểu không có cam kết QoS (Best Effort). 7 giá trị còn lại của trường IP Precedence dùng để phân chia lưu lượng IP thành 7 lớp dịch vụ có thứ tư ưu tiên tăng dần.

Trong trường hợp cần thiết phải phân chia nhiều hơn 8 lớp lưu lượng, chúng ta có thể sử dụng 6 bit đầu tiên của trường ToS gọi là trường DSCP. Trường DSCP có giá trị từ 0 đến 63, do đó nó cho phép chúng ta phân chia lưu lượng IP thành 64 lớp dịch vụ khác nhau.

Tuy nhiên, một số thiết bị mạng cũ có thể không hỗ trợ việc phân lớp lưu lượng sử dụng trường DSCP này. Hơn nữa, trường IP Precedence thực tế là nằm trong trường DSCP nên chúng ta không thể cùng lúc vừa phân lớp lưu lượng theo IP Precedence và vừa theo DSCP.

=== Phân lớp lưu lượng ở mức lớp liên kết dữ liệu ===
Trong phần mào đầu của khung dữ liệu ở lớp liên kết dữ liệu không có trường nào phục vụ cho việc phân lớp lưu lượng. Tuy nhiên ta có thể phân lưu lượng dựa vào việc chèn thêm các thẻ định danh VLAN gọi là tag theo giao thức 802.1Q/p. Mỗi tag gồm 4 byte trong đó trường CoS gồm 3 bit (cấu trúc chi tiết của tag được trình bày trong hình vẽ) được dùng để phân lớp lưu lượng. Như vậy tại mức liên kết dữ liệu chúng ta cũng có thể phân chia lưu lượng thành 8 lớp với các mức ưu tiên tăng dần tương tự như khi sử dụng IP Precedence tại lớp mạng của gói tin IP.

== Các giải pháp QoS ==
- Cấu trúc Best-Effort: dữ liệu đi vào mạng đều tuân theo quy tắc FIFO. Không có sự đối xử nào của QoS đối với dữ liệu
- Cấu trúc Guaranteed Services: dữ liệu đi qua mạng được dành riêng 1 băng thông chắc chắn cho dữ liệu. Thực hiện thông qua cơ chế RSVP và CBWFQ của QoS.
- Cấu trúc Differentiated Services: dữ liệu đi vào mạng được phân loại thành các lớp khác nhau để phân loại cách đối xử của mạng đối với dữ liệu. Thực hiện thông qua các tool QoS là PQ, CQ, WFQ và WRED.

== Quản lý băng thông tĩnh ==
=== Giới thiệu ===
Ngày càng nhiều ứng dụng mới hoạt động trên hạ mạng Internet sẵn có. Các ứng dụng như hội nghị truyền hình, thoại IP (VoIP), đòi hỏi lưu lượng phải đảm bảo chất lượng dịch vụ. Các yêu cầu này bao gồm băng thông, tỷ lệ mất gói và độ trễ cho phép. Các thành phần của mạng như bộ định tuyến thực hiện chức năng xử lý các luồng dữ liệu này có thể chấp nhận hoặc từ chối các luồng dữ liệu theo các điều kiện định trước. Tiến trình ra quyết định chấp nhận hay từ chối các luồng dữ liệu mới được gọi là điều khiển lưu lượng vào. Vậy điều khiển lưu lượng vào giới hạn tải trên hệ thống hàng đợi bằng cách xác định xem liệu một yêu cầu dịch vụ mới có thể đáp ứng được không trong khi vẫn đảm bảo không phá vở các cam kết đảm bảo dịch vụ cho các luồng lưu lượng đã được thiết lập. Các hệ thống hàng đợi là trung tâm trong việc cài đặt các dịch vụ mạng có điều khiển QoS.

Quá trình thực hiện cam kết chất lượng dịch vụ đòi hỏi kết hợp các kỹ thuật điều khiển lưu lượng vào và các kỹ thuật phân phối lưu lượng ra. Điều khiển lưu lượng vào sẽ điều tiết gói dữ liệu đến giao diện mạng đầu vào. Phân phối lưu lượng ra định nghĩa quy tắc dịch vụ hàng đợi cho các giao diện mạng đầu ra bao gồm thứ tự các gói tin được thực sự chuyển đi. Mô hình quản lý băng thông gồm như vậy được gọi là mô hình quản lý băng thông tĩnh.

=== Điều khiển lưu lượng vào (Admission Control) ===
==== Giải thuật thùng đựng thẻ ====
Thùng đựng thẻ (token bucket) là một cơ chế điều khiển lưu lượng vào dựa trên sự xuất hiện của các thẻ trong thùng (xem hình vẽ). Thùng thẻ chứa các thẻ, mỗi thẻ đại diện cho một đơn vị lưu lượng theo byte hoặc gói tin. Để truyền một gói tin, trong thùng sẽ bị rút bớt một lượng thẻ tương ứng. Người quản trị mạng chỉ định số thẻ cần thiết tương ứng với số byte cần truyền. Khi đủ thẻ trong thùng thì dữ liệu được cho phép truyền qua, ngược lại nếu không còn thẻ thì dữ liệu sẽ không được truyền qua. Do đó, một luồng dữ liệu chỉ có thể được truyền ở tốc độ cao nhất khi đủ thẻ trong thùng.

Giải thuật thùng thẻ được trình bày như sau:
- Mỗi thẻ được đưa vào thùng với tốc độ 1/r giây.
- Thùng chỉ có thể chứa tối đa b thẻ.
- Một thẻ sẽ bị huỷ bỏ nếu khi thẻ đến gặp lúc thùng đầy.
- Khi một gói tin n byte truyền đến, n thẻ sẽ được loại khỏi thùng, sau đó gói tin sẽ được truyền qua.
- Nếu số thẻ còn trong thùng nhỏ hơn n, gói tin sẽ không được truyền và được gọi là không đúng điều kiện (non-conformant), thẻ cũng sẽ không bị loại khỏi thùng.
Giải thuật cho phép tốc độ đỉnh tối đa b byte, nhưng tốc độ truyền gói tin của hệ thống bị giới hạn ở tốc độ r. Các gói tin không đúng điều kiện có thể được xử lý theo các cách sau:
- Có thể bị huỷ
- Có thể được xếp hàng và chờ cho đến khi đủ thẻ trong thùng
- Có thể được truyền qua, nhưng được đánh dấu là không đúng điều kiện, và có thể bị huỷ nếu hệ thống mạng trong tình trạng quá tải.

==== Điều khiển lưu lượng vào ====
Nội dung chính của cơ chế điều khiển lưu lượng vào là đảm bảo tài nguyên mạng không được quá tải. Nói cách khác, nó phải đảm bảo rằng tổng tỷ lệ đăng ký sử dụng tài nguyên của mọi luồng lưu lượng truyền qua mọi kết nối mạng là không lớn hơn dung lượng của kết nối. Phương trình toán học biểu diễn như sau:

formula_1

Trong đó "µ", là dung lượng kết nối tính theo bit/giây (bits/second) và "Ri" là tỷ lệ lưu lượng của luồng thứ "i".

==== Giải thuật CAR ====
CAR (Committed Access Rate) là một trong những giải thuật điều khiển lưu lượng vào phổ biến nhất. Việc cài đặt của CAR bao gồm điều khiển lưu lượng theo luồng và phân lớp các luồng dựa trên TOS, địa chỉ IP nguồn, đích, giao thức, chỉ số cổng. Giải thuật CAR được trình bày như sau:
- Phân lớp lưu lượng: Dựa vào các điều kiện như IP precedence, DSCP hay CoS, lưu lượng được chia thành các lớp khác nhau để xử lý.
- Đo lường lưu lượng: CAR sử dụng giải thuật thùng thẻ trình bày ở trên để thực hiện việc tính toán tốc độ luồng dữ liệu.
- Thực thi chính sách: Một chính sách là tổ hợp của nhiều yếu tố bao gồm:
- Các lớp lưu lượng tuân theo profile và không tuân theo profile được CAR xử lý khác nhau.
- Tốc độ cam kết trung bình xác định tốc độ truyền trung bình. Các luồng dữ liệu thấp hơn hoặc bằng với tốc độ trung bình được gọi là tuân theo profile còn nếu lớn hơn thì được gọi là không tuân theo profile.
- Kích thước đỉnh bình thường xác định đỉnh lưu lượng cho phép trước khi kiểm tra xem lưu lượng có tuân theo profile hay không.
- Kích thước đỉnh quá mức, lưu lượng nằm giữa kích thước đỉnh quá mức và kích thước đỉnh bình thường được gọi là không tuân theo profile.
- Một tác động là cách đối xử khác nhau giữa các luồng dữ liệu tuân theo và không tuân theo profile.

Tốc độ luồng dữ liệu đo được từ giải thuật thùng thẻ sẽ được phân ra làm hai loại là phù hợp và vượt ngưỡng. Các chính sách tác động lên gói tin bao gồm

- Tiếp tục, kiểm tra chính sách kế tiếp.
- Huỷ, huỷ gói tin.
- Thiết lập IP-Prec và tiếp tục, thiết lập giá trị "IP precedence" trong phần mào đầu của gói tin và kiểm tra chính sách kế tiếp.
- Chuyển tiếp, chuyển gói tin đi tiếp.
- Thiết lập IP-Prec và chuyển tiếp, thiết lập giá trị "IP precedence" trong phần mào đầu của gói tin và chuyển gói tin đi tiếp.

=== Phân phối lưu lượng ra (Scheduling Algorithms)===
Cơ sở của việc phân phối lưu lượng ra là cấu trúc hàng đợi. Bộ phân phối lưu lượng quyết định trật tự ra khỏi hàng của các phần tử trong hàng đợi, vì vậy chúng liên quan đến việc cấp phát tài nguyên trong các bộ chuyển mạch và định tuyến, mô hình tổng quát của bộ phân phối lưu lượng ra như trong hình sau:

==== Các thành phần của các giải thuật phân phối lưu lượng ra ====
Các giải thuật xử lý hàng đợi nhằm đưa ra 3 thông số liên quan đến việc truyền gói tin sau đây:

- Băng thông – dành để truyền gói tin.
- Độ ưu tiên – xác định thời điểm truyền các gói tin.
- Không gian bộ đệm – nơi huỷ gói tin tại cổng ra.

Khi nghiên cứu việc cấp phát băng thông động, rõ ràng rằng giải thuật phân phối lưu lượng ra tại cổng vào/ra của bộ định tuyến đóng vai trò quyết định nhất trong việc cấp phát băng thông cho các luồng hoặc các kết hợp luồng dữ liệu. Trong nghiên cứu cấp phát băng thông trên kết nối chia sẻ, chúng ta tập trung đến những nút cổ chai cho các giải pháp yêu cầu trên quản lý luồng dữ liệu. Trên đường dẫn dữ liệu, các tác vụ tốn nhiều chi phí là phân lớp theo luồng và phân phối lưu lượng ra. Trên đường dẫn điều khiển, sự phức tạp là bảo trì tính bền vững và trạng thái động trong môi trường phân tán. Trong các nội dung trên, cách dễ nhất để giảm độ phức tạp của giải thuật phân phối lưu lượng ra là sự cân nhắc giữa độ phức tạp và tính linh hoạt của bộ phân phối lưu lượng ra. Vì vậy, công việc của chúng ta tập trung vào việc cài đặt hiệu quả giải thuật phân phối lưu lượng ra nhằm điều khiển việc cấp phát băng thông thực sự, yêu cầu mà giải thuật cấp phát băng thông và không gian bộ đệm tuỳ theo các điều kiện và các yêu cầu QoS của một kết hợp luồng.

==== Các giải thuật phân phối lưu lượng ra ====
- Hàng đợi FIFO
- Hàng đợi ưu tiên (PQ)
- Hàng đợi công bằng (FQ)
- Hàng đợi theo lớp (CBQ)
- Vòng tròn trọng số thâm hụt (DWRR)
- Hàng đợi trọng số công bằng (WFQ)

== QUẢN LÝ BĂNG THÔNG ĐỘNG ==
=== Yêu cầu phát triển mô hình quản lý băng thông động ===
Việc triển khai các kỹ thuật quản lý băng thông tĩnh sẽ tăng cường chất lượng truy nhập mạng, cho phép nhiều ứng dụng với các yêu cầu chất lượng dịch vụ khác nhau hoạt động đồng thời. Tuy nhiên các kỹ thuật quản lý băng thông tĩnh luôn tồn tại các hạn chế như sau:
- Cấp phát tài nguyên hệ thống một cách cứng nhắc cho các lớp lưu lượng hay các ứng dụng, mặc dù trong thực tế, yêu cầu băng thông của các ứng dụng có thể thay đổi theo thời gian. Điều đó dẫn đến việc thừa tài nguyên tại các thời điểm lưu lượng thấp và thiếu hụt tài nguyên tại các thời điểm lưu lượng cao.
- Việc cấp phát tài nguyên cứng nhắc cũng dẫn đến sự lãng phí tài nguyên mạng lưới, tài nguyên quan trọng của mạng lưới (tài nguyên mà chúng ta đăng xét ở đây là băng thông của hệ thống) không được khai thác tối ưu.
- Sự bùng nổ các ứng dụng mới trên nền mạng TCP/IP làm cho việc khai báo mô tả lưu lượng trở nên rất phức tạp, điều này trở nên đặc biệt khó khăn trong môi trường mạng Internet.

Để khắc phục các hạn chế này, chúng tôi đang nghiên cứu một mô hình quản lý băng thông mới với các kỹ thuật quản lý băng thông linh hoạt hơn nhằm tăng cường hiệu quả của hệ thống. Mô hình quản lý băng thông này được gọi là mô hình quản lý băng thông động hay còn gọi là mô hình quản lý băng thông thích nghi.

=== Giới thiệu mô hình quản lý băng thông động ===
Mô hình quản lý băng thông động mà chúng tôi nghiên cứu hoạt động theo nguyên lý của hệ thống phản hồi mạch đóng (xem hình vẽ). Thành phần chính của hệ thống tương tự như trong mô hình quản lý băng thông tĩnh bao gồm bộ điều khiển lưu lượng vào và bộ phân phối lưu lượng ra. Ở đây, chúng ta tập trung nghiên cứu giải pháp quản lý băng thông tại các bộ định tuyến nhằm cấp phát tài nguyên cho các gói tin đến theo các ràng buộc QoS, điều kiện lưu lượng hiện tại và băng thông sẵn sàng tại cổng vào/ra của bộ định tuyến. Với hệ thống được thiết kế như trên, chúng ta cần phải tính toán các tham số phản hồi của hệ thống, kết hợp với các tham số đầu vào để áp dụng vào điều khiển một cách linh hoạt lưu lượng đầu vào cũng như phân phối lưu lượng hướng ra.