QoS (Quality of Service) là một khái niệm trong mạng máy tính, nó cung cấp các cơ chế để đảm bảo một chất lượng dịch vụ mạng đặc biệt cho các loại dữ liệu hoặc aplication nhất định. QoS giúp xác định ưu tiên cho các gói tin mạng, đảm bảo rằng những gói tin quan trọng hơn sẽ được truyền trước và đảm bảo chất lượng dịch vụ cho người dùng.
Giới hạn băng thông được hiểu đơn giản là gán cho một lớp mạng, 1 IP hay 1 đoạn IP với mức băng thông cho trước. Cùng các thuật toán được giải thích dưới đây giúp hệ thống mạng mượt mà hơn và quản lý theo ý của quản trị viên.
Giới hạn bằng tập lệnh với Simple Queue
for X from=2 to=254 do={ /queue simple add name="IP-$X" target="192.168.1.$X" max-limit=5M/5M}

Chọn phân đoạn mạng – lớp mạng – 1IP
Sử dụng address list có thể tùy chọn 1 lớp mạng, 1 nhóm hoặc nhiều ip Lưu ý: cần cùng tên address list để xử lí cho các bước sau.

Đánh dấu kết nối nặng hoặc nhẹ và giới hạn băng thông.
/ip firewall mangle
add action=mark-connection chain=prerouting connection-bytes=512000-0 \
connection-rate=512k-100M dst-address-list=!LOCAL-IP new-connection-mark=\
KetNoiNang src-address-list=LOCAL-IP
add action=mark-connection chain=prerouting connection-mark=!KetNoiNang \
dst-address-list=!LOCAL-IP new-connection-mark=KetNoiNhe \
src-address-list=LOCAL-IP
add action=mark-packet chain=prerouting connection-mark=KetNoiNhe \
new-packet-mark=GT-Nhe passthrough=yes
add action=mark-packet chain=prerouting connection-mark=KetNoiNang \
new-packet-mark=GT-Nang passthrough=yes

Rule 0: Đánh dấu kết nối có lưu lượng liên tục từ 2M đến 100M là kết nối Nặng. loại trừ các kết nối trong local.

Rule 1:Đánh dấu kết nối không phải kết nối nặng là kết nối Nhẹ.

Rule 2 Và Rule 3: đưa các kết nối đã đánh dấu để xử lý từng gói tin.

Sử dụng Queue Tree để áp dụng các quy tắc trên và giới hạn băng thông cho nhóm kết nối.
/queue tree
add name=upload parent=global priority=1
add name=Download parent=BridgeLan priority=1
add name=U_nhe packet-mark=GT-Nhe parent=upload priority=1 queue=\
pcq-upload-default
add max-limit=5M name=U_Nang packet-mark=GT-Nang parent=upload queue=\
pcq-upload-default
add name=D_Nhe packet-mark=GT-Nhe parent=Download priority=1 queue=\
pcq-download-default
add max-limit=5M name=D_Nang packet-mark=GT-Nang parent=Download queue=\
pcq-download-default
Chỉnh sửa max limit mà quản trị viên mong muốn. Và lưu ý BridgeLan trùng tên với code có trong lệnh trên.

Giới hạn tốc độ bằng tập lệnh được lên lịch chạy mỗi 5p.
Tập lệnh này kiểm tra xem tải xuống trên giao diện có lớn hơn 512kbps hay không, nếu đúng thì hàng đợi sẽ được thêm vào để giới hạn tốc độ ở 256kbps. Sử dụng đặt lịch trong hệ thống để kiểm tra và giới hạn băng thông.
Script Code: :foreach i in=[/interface find] do={ /interface monitor-traffic $i once do={ :if ($"received-bits-per-second" > 0 ) do={ :local tmpIP [/ip address get [/ip address find interface=$i] address] ; #:log warning $tmpIP ; :for j from=( [:len $tmpIP] - 1) to=0 do={ :if ( [:pick $tmpIP $j] = "/") do={ /queue simple add name=$i max-limit=256000/256000 dst-address=[:pick $tmpIP 0 $j] ; } } } } }
QOS phân loại và ưu tiên các ứng dụng kết nối
Phân loại kết nối với Layer7 protocols
/ip firewall layer7-protocol
add name=Zalo regexp=\
"^..+\\.(zalo|.zadn.vn|log.api.zaloapp.com|.zalo.me).*\$"
add name=Youtube regexp=\
"^..+\\.(youtube.com|googlevideo.com|akamaihd.net|youtu.be).*\$"
add name=Facebook regexp="^..+\\.(facebook.com|facebook.net|fbcdn.com|fbsbx.co\
m|fbcdn.net|fb.com|tfbnw.net).*\$"
add name=tiktok regexp="^..+\\.(tiktok.com|tiktokv.com|tiktokcdn.com|byteovers\
ea.com|ibyteimg.com|ibytedtos.com|myqcloud.com).*\$"
add name=Twitter regexp="^.+(twitter.com|twimg.com).*\$"
add name=Telegram regexp="^.+(telegram.com).*\$"
add name=Netflix regexp="^.+(netflix.com).*\$"
add name=Tiktok regexp="^.+(tiktok.com|musical.ly).*\$"

Xác định IP máy chủ của các ứng dụng
Thêm danh sách Ip máy chủ tương ứng cần QOS:

Đánh dấu kết nối đến ứng dụng:

