Điều chỉnh tiết lưu băng thông qua QoS (Phần 1)
Brien M. Posey
Trong phần 1 của loạt bài này, chúng tôi đã giới thiệu cho các bạn về QoS là gì và nó được sử dụng cho mục đích nào. Phần hai này chúng tôi sẽ tiếp tục giới thiệu bằng cách giải thích về cách làm việc của QoS. Khi bạn đọc bài này, hãy lưu ý rằng các thông tin được trình bày ở đây đều được dựa trên sự thi hành QoS của Windows Server 2003, những thực thi này sẽ khác với thực thi QoS gốc có trong Windows 2000 Server.
API điều khiển lưu lượng (Traffic Control API)
Một trong những vấn đề lớn nhất đối với việc ưu tiên lưu lượng mạng là bạn không thể ưu tiên lưu lượng dựa trên máy tính đã sinh ra nó. Đây là một điểm rất phổ biến đối với một máy tính chạy nhiều ứng dụng, và cho từng một trong các ứng dụng đó (có cả hệ điều hành) để sinh ra chính luồng lưu lượng cho riêng nó. Khi vấn đề này xảy ra, mỗi luồng lưu lượng phải được ưu tiên theo các cách khác nhau. Một ứng dụng có thể yêu cầu đến băng thông dự trữ nhưng trong khi đó cách phân phối hiệu quả nhất cũng sẽ rất có ích cho các luồng lưu lượng khác.
Đây chính là lý do để giới thiệu Traffic Control API. Traffic Control API là một giao diện ứng dụng lập trình cho phép các tham số QoS được áp dụng cho từng gói dữ liệu riêng. Nó làm việc bằng cách phân biệt các luồng lưu lượng riêng, sau đó áp dụng các biện pháp điều khiển QoS khác nhau cho mỗi luồng.
Thứ đầu tiên mà Traffic Control API thực hiện là tạo thứ được biết đến với tư cách là các thông số kỹ thuật lọc (filterspec). Các chỉ tiêu này rất cần thiết cho một bộ lọc để định ra gói dữ liệu sẽ thuộc về luồng nào. Một số thuộc tính được sử dụng bởi các chỉ tiêu lọc này gồm có cả địa chỉ IP đích và nguồn cùng với cả số cổng.
Khi filterspec đã được định nghĩa, API sẽ cho phép tạo các thông số kỹ thuật về luồng. Thông số luồng này phân biệt các tham số QoS sẽ được áp dụng đối với một chuỗi các gói. Một số các tham số được định nghĩa bởi thông số kỹ thuật luồng gồm có tốc độ cho phép truyền tải và kiểu dịch vụ.
Khái niệm thứ ba được định nghĩa bởi Traffic Control API đó là luồng. Luồng chỉ đơn giản là một chuỗi các gói phải tuân thủ theo cùng một thông số luồng. Để đơn giản hóa, các tham số kỹ thuật lọc sẽ nhận diện các gói dữ liệu nào được nhóm vào thông số kỹ thuật luồng. Thông số kỹ thuật luồng sẽ chỉ ra xem các gói đó có được “xử lý” ưu tiên hay không và luồng nào mới là thành phần truyền dẫn thực sự các gói dữ liệu. Tất cả các gói bên trong một luồng đều được “xử lý” một cách bình đằng.
Một trong những ưu điểm đáng được đề cập đối với Traffic Control API so với Generic QoS API đã sử dụng trong Windows 2000 là khả năng sử dụng sự thu nạp luồng. Nếu một host có nhiều ứng dụng đang truyền tải các luồng dữ liệu đến một đích nào đó thì các gói này sẽ có thể được kết hợp vào một luồng. Điều này còn được thực hiện cả với những ứng dụng sử dụng các cổng khác nhau, miễn là địa chỉ IP nguồn và đích giống nhau.
Bộ phân loại các gói chung
Trong phần trên, chúng tôi đã giới thiệu về mối quan hệ giữa thông số kỹ thuật luồng và thông số kỹ thuật lọc cũng như cả luồng. Một điều quan trọng mà bạn cũng cần lưu ý là Traffic Control API chỉ là API. Nó chỉ có nhiệm vụ nhận ra và ưu tiên các luồng lưu lượng cần được ưu tiên chứ không hề tạo luồng thực sự.
Việc tạo luồng là công việc của phần phân loại các gói dữ liệu chung (Generic Packet Classifier). Bạn có thể xem lại ở phần trên, một trong những thuộc tính đã được định nghĩa bên trong thông số kỹ thuật luồng có cả kiểu dịch vụ. Về cơ bản, kiểu dịch vụ có nhiệm vụ định nghĩa sự ưu tiên của luồng. Generic Packet Classifier phải chịu tránh nhiệm cho việc kiểm tra kiểu dịch vụ đã được gán một thông số kỹ thuật luồng hay chưa, sau đó đưa các gói có liên quan vào một hàng đợi sao cho phù hợp với kiểu dịch vụ. Mỗi một luồng đều được đặt vào một hàng đợi riêng.
Lịch trình cho gói dữ liệu
Thành phần QoS thứ ba mà bạn cần biết đó là bộ lịch trình cho gói dữ liệu (QoS Packet Scheduler). Để đơn giản hóa bạn chỉ cần hiểu công việc chính của thành phần này là sắp đặt lưu lượng. Bộ lập lịch trình các gói sẽ lấy gói dữ liệu từ các hàng đợi khác nhau, sau đó đánh dấu sự ưu tiên cho các gói và tốc độ luồng.
Như những gì chúng tôi đã giới thiệu ở phần một của loạt bài này, để QoS làm việc đúng cách thì các thành phần mạng khác nhau nằm giữa nguồn của gói và đích của nó phải biết về QoS. Ngoài cần biết cách xử lý QoS chúng cũng cần biết về cách xử lý các lưu lượng không được ưu tiên cũng như các lưu lượng thông thường. Để thực hiện công việc này, QoS sử dụng một kỹ thuật đánh dấu.
Ở đây có hai kiểu đánh dấu. QoS Packet Scheduler sử dụng đánh dấu Diffserv được thực hiện trong các thiết bị lớp thứ 3 và 802.1p được thực hiện bởi các thiết bị lớp 2.
Thiết lập lịch trình gói QoS
Trước khi giới thiệu cho các bạn về cách đánh dấu các công việc, bạn cần thiết lập QoS Packet Scheduler để cho nó có thể làm việc. Trong Windows Server 2003, QoS Packet Scheduler được coi như một thành phần mạng có tính chất tùy chọn, giống như Client for Microsoft Networks hoặc TCP/IP Protocol. Để kích hoạt QoS Packet Scheduler, bạn hãy mở trang thuộc tính kết nối mạng của máy chủ, tích vào hộp kiểm QoS Packet Scheduler như thể hiện trong hình A. Nếu QoS Packet Scheduler không có trong danh sách thì bạn hãy kích nút Install và thực hiện theo các nhắc nhở.
Hình A: QoS Packet Scheduler cần phải được kích hoạt trước khi bạn sử dụng QoS
Một thứ khác mà bạn cần biết về QoS Packet Scheduler đó là, để làm việc đúng cách, adapter mạng của bạn cần phải hỗ trợ cách đánh nhãn 802.1p. Để kiểm tra xem có hỗ trợ không, bạn kích vào nút Configure thể hiện trong hình A, Windows sẽ hiển thị trang thuộc tính về adapter mạng của bạn. Nếu bạn quan sát trên tab Advanced thì sẽ thấy được các thuộc tính được hỗ trợ bởi adapter mạng của bạn.
Nếu quan sát trong hình B, bạn sẽ thấy được một trong các thuộc tính được liệt kê là 802.1Q / 1P VLAN Tagging. Cũng có thể thấy cả thuộc tính này bị vô hiệu hóa một cách mặc định. Để kích hoạt nó, bạn chỉ cần kích vào thuộc tính đó là kích OK.
Hình B: Bạn phải kích hoạt 802.1Q/1P VLAN Tagging
Bạn có thể thấy trong hình B thuộc tính mà bạn đã kích hoạt có liên quan tới việc gắn thẻ VLAN, không phải cách đánh dấu gói. Lý do cho điều này là việc đánh dấu ưu tiên được nhúng vào bên trong các thẻ VLAN. Chuẩn 802.1Q định nghĩa các VLAN và các thẻ VLAN. Chuẩn này dự trữ ba bit bên trong gói VLAN để được sử dụng cho việc giữ code ưu tiên. Tuy nhiên, chuẩn 802.1Q lại không định nghĩa các mã ưu tiên này.
Chuẩn 802.1P được tạo ra như một phiên bản cải tiến đối với 802.1Q. 802.1P định nghĩa việc đánh dấu ưu tiên để có thể được nhúng vào thẻ VLAN. Chúng tôi sẽ giới thiệu cho các bạn về cách làm việc của hai chuẩn này với nhau như thế nào trong phần 3.
Kết luận
Trong phần này chúng tôi đã giới thiệu cho các bạn những khái niệm cơ bản nằm trong kiến trúc QoS của Windows Server 2003. Ở phần 3 chúng tôi sẽ tiếp tục giới thiệu cho các bạn thêm về cách đánh dấu các gói dữ liệu của QoS Packet Scheduler và thảo luận cả về cách làm việc của QoS trong các môi trường băng thông thấp.
Điều chỉnh tiết lưu băng thông qua QoS (Phần 3)
Điều chỉnh tiết lưu băng thông qua QoS (Phần 4)