08 Th4

EdgeRouter – Quality of Service (Quản lý chất lượng dịch vụ)

Tổng Quan

Ở bài viết này sẽ mô tả cho các bạn biết về các kiểu Policies Traffic (Chính sách Lưu lượng) khác nhau được hỗ trợ bởi EdgeOS CLI. Quản lý chuất lượng dịch vụ (QoS) cho phép bạn điều điều chỉnh các kiểu lưu lượg dịch vụ khác nhau.

Mục Lục

  1. Giới thiệu
  2. Các chính sách traffic
    • Drop Tail (FIFO)
    • Random Early Detection
    • Rate Control ( Hạn chế băng thông trên cổng)
    • Fair Queue
    • Shaper ( Hạn chế băng thông cho từng lớp)
    • Limiter (Hạn chế băng thông giao thức)

Giới Thiệu

Quality Of Service (QoS) là một chức năng cho phép Router cung cấp các mức độ dịch vụ tới các kiểu traffic. Về cơ bạn nó giúp bạn điều chỉnh traffic tốt hơn ( Như là độ ưu tiên cao, điều chỉnh về bandwidth…) và nhiều mục khác

ở một mức độ cao hơn, bạn có thể áp dụng QoS bằng các định nghĩa policies  traffic khác nhau và áp dụng chúng vào Router, Một Plocies traffic có thể có một hoặc nhiều rules (Quy tắc). Mỗi quy tắc có mẫu như sau:

Type of traffic > How the router should treat it

Ví dụ, bạn có thể định nghĩa một quy tắc đơn giản như sau:

R1: FTP traffic > Limit the bandwidth to 1 Mbps

Bạn có thể định nghĩa một Policie về traffic sử dụng một hoặc nhiều quy tắc. ví dụ, chúng ta có thể định nghĩa một chính sách P1 có 2 quy tắc R1 và R2:

P1: R1: FTP traffic > Limit the bandwith to 1 Mbps R2: SSH traffic > Make latency lower

Sử dụng một Policie traffic đã được tạo. bạn có thể áp dụng Policie hướng vào hoặc ra trên một cổng mạng. Ví dụ:

Traffic going out on interface “eth1” > Use traffic policy P1

Phần sau  sẽ mô tả chi tiết về các loại Policies traffic khác nhau.

Các chính sách lưu lượng (Traffic Policies)

Có nhiều Kiểu Policies traffic khác nhau,  mỗi kiểu có cách hạn chế dữ liệu khác nhau. Một số Policies traffic được EdgeOS CLI hỗ trợ:

  • Drop Tail (FIFO)
  • Random Early Detection
  • Rate Control
  • Fair Queue
  • Shaper
  • Limiter

DROP TAIL (FIFO)

Policie Drop-tail hiểu đơn giản là nó giữ một hàng đợi các gói tin. Khi một gói tin cần truyền đi, nó sẽ được thêm vào hàng đợi và Router sẽ gửi các gói tin ở hàng đợị ra dụa trên quy tắc FIFO ( vào đầu,ra đầu). Hàng đợi có thể được giới hạn độ dài gói tin và khi đạt tới số độ dài giới hạn gói tin thì không thể thêm bất cứ gói tin nào vào hàng đợi nữa và các gói tin đó sẽ bị dropped( bỏ); như vậy nó được gọi là “Tail Drop” (hence the name policy). Tail Drop xảy ra khi gói tin được thêm vào hàng đợi, đang chờ gửi đi và Router không đủ tài nguyên để gửi gói tin đi nhanh .

Một chính sách Drop-tail có đặc điểm sau:

  • Không phân biệt giữa các lưu lượng dữ liệu.
  • Chỉ có một thông số cho độ dài hàng chờ.
  • Chỉ có thể áp dụng vào hướng đi ra của lưu lượng trên cổng mạng

Ví dụ, Các lệnh commands sau tạo  một chính sách Drop-tail với tên là Policy1 và được áp dụng hướng ra trên cổng interface eth0:

set traffic-policy drop-tail policy1 queue-limit 100

set traffic-policy drop-tail policy1 description “limit queue 100”

set interfaces ethernet eth0 traffic-policy out policy1

 

Random Early Detection

Random Early Detection khác với Drop-tail, nó bắt đầu drop gói tin sớm hơn, trước khi độ dài gói tin hàng đợi đạt đến độ giới hạn.  Một lợi ích của nó là nó cung cấp cách vận chuyển  traffic TCP bằng cách sẽ giảm dần các gói tin (drop packets) cho phép các điểm cuối TCP đồng thời phát hiện được tắc nghẽn mạng và giảm lưu lượng truy cập. RED (Random Early Detection) trái ngược với drop-tail mà các gói tin bị bỏ tất cả một lần khi hàng chờ đạt tới độ giới hạn sẽ gây ra một tác động tiêu cực to lớn ảnh hưởng đến hiệu suất TCP.

Như drop-tail, RED policy chỉ có thể áp dụng vào hướng ra của một cổng mạng. RED có 3 thông số chính như sau:

  • Độ dài nhỏ nhất hàng đợi: tại độ dài hàng đợi đó Policy RED bắt đầu drop các gói tin được tính theo xác suất
  • Độ dài tối đa hàng đợi: Khi chiều dài hàng đợi tăng lên từ nhỏ nhất đến lớn nhất, RED Policy sẽ tăng tính xác suất drop (bỏ) gói tin từ 0 tới xác suất drop gói tin lớn nhất ( dựa vào các thông số tiếp theo).
  • Xác suất drop lớn nhất:xác suất drop lớn nhất khi mà đồ dài hàng đợi đạt tới mức dài nhất.

Ngoài ra, bạn có thể thiết lập rõ một số thông số RED khác nhau cho mỗi giá trị ưu tiên của các IP. Dưới đây là ví dụ CLI Command định rõ một RED Policy:

set traffic-policy random-detect random1 precedence 0 mark-probability 50

set traffic-policy random-detect random1 precedence 0 maximum-threshold 50

set traffic-policy random-detect random1 precedence 0 minimum-threshold 20

set interfaces ethernet eth0 traffic-policy out random1

commit

Trong ví dụ này, xác suất drop lớn nhất cho mỗi IP có độ ưu tiên 0 là 2% (nói cách khác là 1/50)

Rate Control

Rate Control đảm bảo mục đích lưu lượng dữ liệu truyền đi không quá một giá trị đã được xác định trước. nó có thể áp dụng vào hướng đi ra và thông số chính có giá trị cao

nhất cho traffic đi ra. Cho ví dụ, các câu lệnh CLI sau sẽ tạo một  rate-control policy đảm bảo các traffic gửi ra ngoài không hơn 1Mbps trên công interface eth0.

set traffic-policy rate-control rate1 bandwidth 1mbit

set interfaces ethernet eth0 traffic-policy out rate1

commit

 

Fair Queue

Policy Fair Queue sử dụng Stochastic Fairmess Queueing sẽ tách riêng các lưu lương dữ liệu ( ví dụ TCP connection) vào các vùng chứa khác nhau và mỗi dịch vụ trên router đều chỉ có một vùng chứa.sau khi tách riêng các traffic thì sẽ chia nhỏ nguồn/đích địa chỉ IP và nguồn port. Như vậy nó cho phép Router cân bằng giữa các dịch vụ dữ liệu khác nhau.

Fair Queue Policy chỉ có thể áp dụng vào hướng đi ra. Từ đó cân bằng dựa trên xác suất, trong vài trường hợp nhiều luồng có thể đặt vào chung cùng một vùng; Và như vậy có thể gây ra mất cân bằng, để giảm thiểu tác động bạn có thể điều chỉnh thay đổi khoảng thời gian chia nhỏ ở các thuật toán có thời gian cố định. Sau đây là một ví dụ về Fair queue policy:

set traffic-policy fair-queue fair1 hash-interval 10

set interfaces ethernet eth0 traffic-policy out fair1

commit 

 

Shaper

Một Policy phức tạp hơn đó là Shaper policy, nó sử dụng kỹ thuật mã thông báo phân lớp cho từng vùng bảo đảm băng thông các lớp trên đường truyền mạng khác nhau. Một ví dụ đơn giản dưới đây.

set traffic­policy shaper shaper1 bandwidth 100mbit

set traffic­policy shaper shaper1 default bandwidth 60mbit

set traffic­policy shaper shaper1 class 2 bandwidth 20mbit

set traffic­policy shaper shaper1 class 2 match client2 ip source address 10.0.1.2/32

set traffic­policy shaper shaper1 class 3 bandwidth 20mbit

set traffic­policy shaper shaper1 class 3 match client3 ip source address 10.0.1.3/32

set interfaces ethernet eth0 traffic­policy out shaper1

commit

 

Trong ví dụ này, một shaper policy shaper được định nghĩa và áp dụng vào hướng ra trên cổng interface eth0, có băng thông 100Mbps. 2 lớp  đã được được tạo, một cho lưu lượng có nguồn từ địa chỉ IP là 10.0.1.2 và hai là cho lưu lượng có nguồn từ địa chỉ IP là 10.0.1.3 . Mỗi lớp đều được đảm bảo băng thông 20Mbps, có nghĩa là khi tải thấp thì nó vẫn đẩm bảo băng thông, nhưng nếu băng thông có săn cao thì nó vẫn có thể vượt qua 20Mbps. Tất cả các lưu lượng khác sẽ sử dụng lớp mặc định với băng thông 60Mbps riêng. Vậy nếu các lưu lương hiện tại đi ra trên cổng eth0 gồm 20Mbps từ 10.0.1.2 , và 20Mbps từ 10.0.1.3 và 80Mbps từ các nguồn khác, các lưu lượng từ 10.0.1.2 àn 10.0.1.3 sẽ gửi đi ra với giá trị tối đa đã được thiết lập đảm bảo 20Mbps cho mỗi lớp, và các lưu lượng ở lớp khác sẽ chỉ có gửi đi ra với tốc độ 60Mbps.

 

Limiter

­Limiter policy thực hiện các chính sách đi vào vì thế chỉ có thể áp dụng lưu lượng đi vào trên cổng mạng. ban có thể định nghĩa nhiều lớp lưu lượng, tách riêng băng thông giới hạn cho mỗi lớp. Ví dụ, chính sách sau thiết lập một giới hạn 1Mbps đi vô với lưu lượng ICMP trên cổng eth0 và giới hạn 10Mbps cho các lưu lượng khác.

set traffic­policy limiter limit1 class 1 bandwidth 1mbit

set traffic­policy limiter limit1 class 1 match match1 ip protocol icmp

set traffic­policy limiter limit1 default bandwidth 10mbit

set interfaces ethernet eth0 traffic­policy in limit1

commit