Điều chỉnh tiết lưu băng thông qua QoS (Phần 2)
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.