QoS — DiffServ và IntServ
1. Tổng quan
A. Định nghĩa QoS
QoS (Quality of Service) là hệ thống công nghệ bảo đảm hoặc cung cấp có phân biệt các chỉ số chất lượng dịch vụ như băng thông (bandwidth), độ trễ (delay), độ biến thiên trễ (jitter), tỷ lệ mất gói (loss) cho những lưu lượng cụ thể trong mạng; IntServ (Integrated Services) và DiffServ (Differentiated Services) là hai kiến trúc tiêu biểu hiện thực QoS trên mạng IP.
B. Bối cảnh ra đời và sự cần thiết
Lý do căn bản cần QoS nằm ở chỗ "nếu đối xử mọi lưu lượng như nhau thì chất lượng của chính lưu lượng quan trọng sẽ sụp đổ". Internet vốn được thiết kế với tiền đề chuyển phát nỗ lực tối đa (Best-Effort). Bộ định tuyến xử lý mọi gói tin không phân biệt theo thứ tự đến (FIFO), và khi tắc nghẽn thì loại bỏ khỏi hàng đợi các gói đến sau (tail drop). Lúc bình thường khi liên kết còn dư, nguyên lý đơn giản này là đủ, nhưng vấn đề nảy sinh khi tắc nghẽn.
Khi tắc nghẽn, sự khác biệt về tính chất lưu lượng mang tính quyết định. Thoại thời gian thực (VoIP) và hội nghị video nhạy cảm với độ trễ, jitter và mất gói. VoIP thông thường phải duy trì độ trễ một chiều dưới 150ms, jitter dưới 30ms, tỷ lệ mất gói dưới 1% thì chất lượng cuộc gọi mới được bảo đảm; chỉ cần trễ hoặc mất một chút là tiếng bị ngắt quãng và hình ảnh bị vỡ. Ngược lại, truyền tệp dung lượng lớn (FTP) hay sao lưu không nhạy cảm với độ trễ, chỉ cần bảo đảm thông lượng (throughput). Nếu đối xử như nhau theo kiểu nỗ lực tối đa với các lưu lượng có yêu cầu trái ngược như vậy, không thể bảo đảm chất lượng cho lưu lượng thời gian thực.
QoS giải quyết vấn đề này bằng cách phân bổ ưu tiên và tài nguyên có phân biệt cho lưu lượng. Tuy nhiên, ở câu hỏi "phân biệt như thế nào" thì triết lý chia thành hai nhánh. IntServ là phương thức "đặt trước (reservation)" tài nguyên cần thiết trên mọi bộ định tuyến dọc đường đi trước khi bắt đầu truyền thông, bảo đảm chắc chắn chất lượng cho từng luồng; còn DiffServ là phương thức "đánh dấu (marking)" mức ưu tiên lên gói tin để mỗi bộ định tuyến xử lý phân biệt theo cấp đó. Phương thức thứ nhất chắc chắn nhưng nặng nề, phương thức thứ hai nhẹ nhàng nhưng bảo đảm tuyệt đối yếu. Nói cách khác, hai phương thức về căn bản là những lựa chọn khác nhau giữa "sự chắc chắn của bảo đảm (bảo đảm mạnh)" và "khả năng mở rộng (scalability)". Sự đánh đổi này trở thành trục của mọi phép so sánh về sau.
flowchart TD
BE["Internet Best-Effort<br/>(xử lý mọi gói như nhau)"] --> P["Chất lượng lưu lượng thời gian thực sụp đổ khi tắc nghẽn"]
P --> QOS["Cần áp dụng QoS"]
QOS --> I["IntServ<br/>đặt trước tài nguyên theo luồng (kiểu bảo đảm)"]
QOS --> D["DiffServ<br/>xử lý phân biệt theo lớp (kiểu phân biệt)"]
I -.bảo đảm chắc chắn·mở rộng thấp.-> T["Đánh đổi"]
D -.mở rộng cao·bảo đảm tương đối.-> T
style QOS fill:#fff3e0,stroke:#e37400,stroke-width:2px
style T fill:#fce8e6,stroke:#c5221f,stroke-width:2px
2. IntServ (Integrated Services) — Đặt trước tài nguyên theo luồng
Trước khi truyền thông, IntServ dùng RSVP (Resource reSerVation Protocol) để đặt trước băng thông cần thiết trên mọi bộ định tuyến dọc đường đi. Về khái niệm, đây là sự mô phỏng việc đặt trước kênh của mạng điện thoại trên nền IP, tương tự phương thức "giữ kênh trước khi thực hiện cuộc gọi".
sequenceDiagram
participant S as Bên gửi
participant R1 as Bộ định tuyến 1
participant R2 as Bộ định tuyến 2
participant D as Bên nhận
S->>R1: PATH (quảng bá đặc tính đường đi)
R1->>R2: PATH
R2->>D: PATH
D-->>R2: RESV (yêu cầu đặt trước tài nguyên)
R2-->>R1: RESV (kiểm soát chấp nhận·giữ tài nguyên)
R1-->>S: RESV (hoàn tất đặt trước)
Note over S,D: Sau đó luồng được bảo đảm chất lượng bằng tài nguyên đã đặt
Xét nguyên lý hoạt động theo từng bước: trước tiên bên gửi gửi thông điệp PATH để quảng bá đường đi và đặc tính lưu lượng xuôi xuống (downstream). Bên nhận nhận được sẽ gửi thông điệp RESV yêu cầu ngược lên (upstream) tài nguyên cần thiết; mỗi bộ định tuyến trên đường đi dùng kiểm soát chấp nhận (Admission Control) để đánh giá còn tài nguyên dư hay không, nếu được thì đặt trước (giữ) tài nguyên. Nếu thiếu tài nguyên thì từ chối đặt trước, không nhận luồng mới, qua đó giữ chất lượng cho các luồng hiện có. Do luồng chỉ bắt đầu khi việc đặt trước đã thành lập trên toàn bộ đường đi, chất lượng được bảo đảm chắc chắn (bảo đảm cứng, hard guarantee).
Các thành phần cốt lõi gồm ① RSVP thương lượng việc đặt trước (báo hiệu), ② kiểm soát chấp nhận quyết định có tiếp nhận luồng mới hay không, ③ bộ lập lịch gói tin quản lý hàng đợi theo cấp đã đặt (ví dụ: WFQ), ④ bộ phân loại và bộ kiểm soát (classifier, policer) kiểm tra luồng có tuân thủ đặc tả lưu lượng đã cam kết không. IntServ chia cấp dịch vụ thành dịch vụ bảo đảm (Guaranteed Service, bảo đảm cận trên độ trễ) và dịch vụ tải được kiểm soát (Controlled-Load, gần với chất lượng khi tải thấp).
Giới hạn quyết định là khả năng mở rộng. Lý do là mỗi bộ định tuyến phải duy trì trạng thái (state) tương ứng với số luồng (flow). Trong mạng đường trục lớn với hàng nghìn, hàng vạn luồng, trạng thái cần quản lý và tải báo hiệu của bộ định tuyến tăng vọt. Ngoài ra, mọi bộ định tuyến trên đường đi đều phải hỗ trợ RSVP, chỉ cần một bộ không hỗ trợ là bảo đảm bị đứt. Vì hai lý do này, IntServ trên thực tế đã không được chấp nhận trên Internet quy mô lớn.
| Đặc điểm | Nội dung |
|---|---|
| Bảo đảm chất lượng | Bảo đảm chắc chắn theo luồng (bảo đảm cứng) |
| Công nghệ cốt lõi | Báo hiệu RSVP, kiểm soát chấp nhận |
| Quản lý trạng thái | Bộ định tuyến duy trì trạng thái theo luồng (stateful) |
| Giới hạn | Trạng thái và báo hiệu tỷ lệ với số luồng → khả năng mở rộng thấp |
3. DiffServ (Differentiated Services) — Xử lý phân biệt theo lớp
DiffServ là kiến trúc từ bỏ đặt trước theo luồng và chuyển hướng sang "phân biệt theo lớp" nhằm giải quyết vấn đề khả năng mở rộng của IntServ. Ý tưởng cốt lõi là "phán đoán phức tạp chỉ thực hiện một lần ở rìa mạng (edge), còn bên trong (core) chỉ nhìn vào dấu đánh dấu để xử lý đơn giản và nhanh".
flowchart LR
subgraph Edge["Điểm vào mạng (Edge)"]
C["Phân loại (Classifier)"] --> M["Đánh dấu (Marking·DSCP)"] --> PO["Kiểm soát·định dạng (Policing/Shaping)"]
end
subgraph Core["Bộ định tuyến lõi"]
PHB1["Xử lý phân biệt PHB"] --> PHB2["Xử lý phân biệt PHB"]
end
PO --> PHB1 --> PHB2 --> OUT["Bên nhận"]
style M fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px
Nguyên lý hoạt động như sau. Tại bộ định tuyến điểm vào (edge) nơi lưu lượng đi vào mạng, lưu lượng được phân loại (classify) và lớp được đánh dấu (mark) vào trường DSCP (DiffServ Code Point) của header IP (6 bit cao của byte ToS IPv4/Traffic Class IPv6). Tại điểm vào cũng thực hiện kiểm soát (policing) và định dạng (shaping) — loại bỏ hoặc làm trễ lưu lượng vượt quá đặc tả đã cam kết. Từ đó trở đi, bộ định tuyến bên trong (core) hoàn toàn không duy trì trạng thái luồng, chỉ xử lý phân biệt theo PHB (Per-Hop Behavior, hành vi theo từng chặng) mà dấu DSCP của gói tin chỉ định.
PHB (hành vi theo từng chặng) là quy tắc định nghĩa cách mỗi bộ định tuyến đối xử với gói tin của một lớp cụ thể; các loại đã được chuẩn hóa như sau. ① EF (Expedited Forwarding) là lớp ưu tiên cao nhất, tối thiểu hóa độ trễ, jitter và mất gói, dùng cho lưu lượng thời gian thực như VoIP, video. ② AF (Assured Forwarding) được chia thành 4 lớp, mỗi lớp có 3 mức ưu tiên loại bỏ, phân biệt thứ tự loại bỏ khi tắc nghẽn (dữ liệu doanh nghiệp...). ③ BE (Best-Effort, Default) giữ nguyên kiểu nỗ lực tối đa như trước.
Ưu điểm là khả năng mở rộng vượt trội. Do bộ định tuyến bên trong không duy trì trạng thái theo luồng (stateless), nó hoạt động không phụ thuộc số luồng và phù hợp với đường trục quy mô lớn. Nhược điểm là không có bảo đảm tuyệt đối. Vì đây không phải đặt trước mà là "ưu tiên tương đối", khó khẳng định một lớp cụ thể chắc chắn được bảo đảm trong vài ms (bảo đảm mềm, soft guarantee). Vì vậy, trên thực tế, chất lượng được bảo đảm theo thống kê bằng cách quản lý và thiết kế SLA (thỏa thuận mức dịch vụ) cùng tổng lưu lượng của từng lớp.
| Đặc điểm | Nội dung |
|---|---|
| Bảo đảm chất lượng | Phân biệt tương đối theo lớp (bảo đảm mềm) |
| Công nghệ cốt lõi | Đánh dấu DSCP, xử lý phân biệt PHB (EF/AF/BE) |
| Quản lý trạng thái | Lõi phi trạng thái (stateless), phán đoán ở edge |
| Ưu điểm | Không cần trạng thái luồng → khả năng mở rộng cao |
4. So sánh và tình huống — Vì sao DiffServ là xu hướng chủ đạo
Khác biệt giữa hai kiến trúc rốt cuộc bắt nguồn từ "duy trì trạng thái ở đâu và bao nhiêu", và điều đó dẫn tới sự đánh đổi giữa mức bảo đảm và khả năng mở rộng.
| Hạng mục | IntServ | DiffServ |
|---|---|---|
| Đơn vị xử lý | Theo luồng (flow) | Theo lớp (class) |
| Mức bảo đảm | Bảo đảm chắc chắn theo luồng (cứng) | Phân biệt tương đối theo lớp (mềm) |
| Quản lý trạng thái | Mỗi bộ định tuyến duy trì trạng thái luồng | Lõi phi trạng thái (chỉ edge phân loại) |
| Báo hiệu | Cần RSVP (đặt trước) | Không cần (thay bằng đánh dấu gói tin) |
| Khả năng mở rộng | Thấp (tỷ lệ với số luồng) | Cao (không phụ thuộc số luồng) |
| Phạm vi áp dụng | Quy mô nhỏ, đoạn đầu cuối | Đường trục lớn, Internet, mạng SP |
Lý do căn bản tạo ra khác biệt là IntServ mua sự chắc chắn bằng cơ chế nặng nề "trạng thái theo luồng + báo hiệu trước", còn DiffServ thay cơ chế đó bằng "6 bit đánh dấu trong header gói tin" để có được khả năng mở rộng. Khi loại bỏ trạng thái khỏi lõi, bộ định tuyến có thể hoạt động không phụ thuộc số luồng, và chính tính phi trạng thái (statelessness) này đã trở thành lợi thế quyết định ở quy mô Internet.
Tình huống thứ nhất — Đường trục của nhà cung cấp dịch vụ (ISP): Trên đường trục có hàng trăm nghìn luồng chạy đồng thời, đặt trước theo luồng (IntServ) là phi thực tế vì bộ nhớ và CPU của bộ định tuyến không kham nổi. Vì vậy các mạng quy mô lớn trong thực tiễn chọn DiffServ làm chuẩn, vận hành bằng cách ánh xạ thoại vào EF, dữ liệu nghiệp vụ quan trọng vào AF và lưu lượng thông thường vào BE.
Tình huống thứ hai — Triển khai VoIP doanh nghiệp: Nếu một doanh nghiệp gặp vấn đề trễ trong hội nghị truyền hình khi áp dụng điện thoại IP, switch và bộ định tuyến sẽ đánh dấu gói thoại là DSCP EF (giá trị 46) và đưa vào hàng đợi ưu tiên để gửi đi trước lưu lượng dữ liệu. Khi đó, việc phân bổ băng thông thực tế không kết thúc chỉ bằng đánh dấu DiffServ mà do các kỹ thuật xếp hàng và lập lịch như WFQ, LLQ (Low Latency Queuing) thực hiện.
Tình huống thứ ba — Thiết kế lai: Hai phương thức không loại trừ nhau. Có thể dùng thiết kế lai để đạt đồng thời tính bảo đảm và khả năng mở rộng: đoạn đầu cuối nơi chất lượng cực kỳ quan trọng (ví dụ: mạng truy nhập khuôn viên) được bảo đảm chắc chắn bằng IntServ/RSVP, còn đường trục nơi lưu lượng hội tụ thì xử lý bằng DiffServ. Trên thực tế, RSVP-TE vẫn được dùng để đặt trước đường đi và băng thông trong kỹ thuật lưu lượng (traffic engineering) của mạng MPLS.
5. Chuyên sâu — Liên kết các cơ chế QoS và xu hướng mới nhất
DiffServ và IntServ chỉ là "khung chính sách quyết định ưu tiên cái gì"; chất lượng thực tế chỉ hoàn chỉnh khi kết hợp với các cơ chế cấp dưới thực thi chính sách đó. Hệ thống thực thi QoS gồm bốn trục lớn: ① phân loại và đánh dấu (Classification, Marking), ② quản lý tắc nghẽn (Congestion Management, xếp hàng và lập lịch), ③ tránh tắc nghẽn (Congestion Avoidance, WRED...), ④ kiểm soát và định dạng (Policing, Shaping).
Đặc biệt, xếp hàng và lập lịch là cốt lõi. Dù DiffServ đánh dấu gói là EF, để bộ định tuyến gửi gói đó đi trước cần có các thuật toán như PQ (hàng đợi ưu tiên), WFQ (xếp hàng công bằng có trọng số), CBWFQ, LLQ. Chẳng hạn, LLQ cho lưu lượng nhạy cảm độ trễ như thoại một hàng đợi ưu tiên nghiêm ngặt nhưng đặt cận trên băng thông để tránh "chết đói" (starvation) cho lưu lượng khác. Về phía tránh tắc nghẽn, WRED (Weighted Random Early Detection) loại bỏ trước một cách xác suất các gói có ưu tiên thấp trước khi hàng đợi đầy, ngăn hiện tượng các phiên TCP cùng giảm tốc (global synchronization). Nói cách khác, mức ưu tiên loại bỏ của AF trong DiffServ chỉ có ý nghĩa khi đi cặp với WRED. [[wfq]]
Về xu hướng mới nhất, trọng tâm đang dịch chuyển từ đặt trước kênh vật lý sang chính sách phần mềm. SD-WAN nhận biết ứng dụng (application-aware) để chọn đường đi và hàng đợi tối ưu theo thời gian thực, qua đó hiện thực QoS "dựa trên ý định (intent-based)" vượt lên đánh dấu DSCP truyền thống. Trong SDN, bộ điều khiển có cái nhìn toàn mạng và điều khiển tập trung chính sách theo đơn vị luồng, nên có các nỗ lực dung hòa bằng phần mềm giữa điều khiển theo luồng của IntServ và khả năng mở rộng của DiffServ. Network slicing của lõi 5G cũng chia logic một mạng vật lý để bảo đảm QoS theo từng slice (URLLC độ trễ siêu thấp...), có thể xem như xu hướng diễn giải lại triết lý "bảo đảm" của IntServ bằng công nghệ ảo hóa.
6. Các lưu ý và hàm ý (góc nhìn Kỹ sư chuyên nghiệp)
Khả năng mở rộng chi phối việc lựa chọn kiến trúc. Ở quy mô Internet, đặt trước theo luồng (IntServ) là phi thực tế do tải trạng thái và báo hiệu, vì vậy DiffServ phi trạng thái, mở rộng cao đã trở thành tiêu chuẩn thực tế (de facto) trong thực tiễn. Kỹ sư chuyên nghiệp (Professional Engineer) khi thiết kế QoS phải phán đoán đánh đổi giữa "sự chắc chắn của bảo đảm" và "khả năng mở rộng" phù hợp với quy mô mạng; lựa chọn phân tầng — đường trục dùng DiffServ, đầu cuối dùng IntServ khi cần — là hợp lý.
QoS không phải một công nghệ đơn lẻ mà là hệ thống chính sách đầu cuối (end-to-end). Nếu dấu DiffServ bị bỏ qua hoặc đánh dấu lại (re-marking) ở bất kỳ đoạn nào trên đường đi, bảo đảm chất lượng sẽ bị đứt. Vì vậy, lưu ý cốt lõi là quy định rõ bằng SLA ranh giới tin cậy DSCP (trust boundary) và tính nhất quán của chính sách đánh dấu khi đi qua mạng của các nhà cung cấp khác nhau.
Cần so sánh tính kinh tế với cấp phát dư (overprovisioning). Ở những đoạn mà băng thông liên kết đã đủ rẻ, việc bảo đảm băng thông dồi dào có thể có lợi hơn về tổng chi phí sở hữu (TCO) so với thiết kế QoS phức tạp. Kỹ sư chuyên nghiệp phải cân nhắc độ phức tạp vận hành khi áp dụng QoS với chi phí mở rộng băng thông để đưa ra điểm tối ưu.
Thiết kế tích hợp với các cơ chế xếp hàng và tránh tắc nghẽn cấp dưới quyết định thành bại. Dấu EF/AF của DiffServ phải kết hợp với lập lịch thực tế như WFQ, LLQ, WRED thì mới thành chất lượng. Nếu chỉ đánh dấu (marking) mà không có chính sách hàng đợi thì QoS chỉ có trên danh nghĩa, vì vậy phải thiết kế và kiểm chứng nhất quán bốn trục đánh dấu – xếp hàng – tránh tắc nghẽn – định dạng.
Cần chuẩn bị cho sự chuyển đổi sang QoS dựa trên phần mềm như SDN, SD-WAN, 5G slicing. Mô hình đang dịch chuyển từ chính sách DSCP tĩnh sang QoS động dựa trên nhận biết ứng dụng và ý định, vì vậy nên chuẩn bị một cách chiến lược lộ trình tiến hóa đặt điều khiển tập trung và tự động hóa lên trên thiết kế DiffServ hiện có.
Tài liệu tham khảo
- RFC 2205 — Resource ReSerVation Protocol (RSVP), báo hiệu IntServ
- RFC 2475 — An Architecture for Differentiated Services (DiffServ)
- RFC 2597 / RFC 3246 — Assured Forwarding(AF) / Expedited Forwarding(EF) PHB
Tóm tắt một câu: Trong QoS, IntServ đặt trước tài nguyên theo luồng bằng RSVP để bảo đảm chắc chắn (cứng) nhưng khả năng mở rộng thấp do phải duy trì trạng thái luồng, còn DiffServ xử lý phân biệt theo lớp bằng đánh dấu DSCP và PHB (mềm) nên lõi phi trạng thái, mở rộng cao nhưng bảo đảm chỉ tương đối; trong mạng lớn DiffServ là chủ đạo, và hoàn thiện khi kết hợp với các cơ chế xếp hàng, tránh tắc nghẽn như WFQ, WRED cùng SDN, SD-WAN, 5G slicing.