مقدمه
QoS یا Quality of Service مجموعهای از تکنیکها برای مدیریت و کنترل ترافیک شبکه است. با QoS میتوان:
پهنای باند را محدود کرد (Policing)
پهنای باند را تضمین کرد (Bandwidth Allocation)
ترافیک را اولویتبندی کرد (Priority Queuing)
ترافیک را صاف کرد (Traffic Shaping)
مفهوم QoS
QoS به شما امکان میدهد که:
ترافیکهای مختلف را شناسایی کنید (با class-map)
سیاستهای مدیریتی را تعریف کنید (با policy-map)
این سیاستها را روی interface ها اعمال کنید
چرا QoS نیاز است؟
بدون QoS:
تمام ترافیکها با اولویت یکسان forward میشوند
یک کاربر میتواند تمام bandwidth را مصرف کند
ترافیک حیاتی (VoIP, Video) ممکن است drop شود
با QoS:
✅ ترافیک حیاتی تضمین bandwidth دارد
✅ ترافیک کماهمیت محدود میشود
✅ در زمان ازدحام، اولویتبندی انجام میشود
✅ استفاده بهینه از منابع شبکه
اجزای QoS در Soodar Router
[class-map] → [policy-map] → [service-policy]
(شناسایی) (سیاست) (اعمال)
class-map: تعریف میکند کدام ترافیکها را میخواهیم مدیریت کنیم
policy-map: تعریف میکند چه سیاستی روی آن ترافیک اعمال شود
service-policy: سیاست را روی interface اعمال میکند
مفاهیم اصلی QoS
1. Traffic Policing (محدودسازی)
تعریف: محدود کردن حداکثر bandwidth عملکرد: ترافیک اضافی فوراً Drop میشود کاربرد: محدود کردن کاربران یا سرویسهای خاص
مثال: محدود کردن download به 2Mbps
2. Traffic Shaping (صافسازی)
تعریف: کنترل نرخ ارسال داده عملکرد: ترافیک اضافی در صف نگهداری میشود کاربرد: صاف کردن burst های ترافیک
تفاوت با Policing: Shaping ترافیک را drop نمیکند، بلکه به تاخیر میاندازد
3. Priority Queuing (اولویتبندی)
تعریف: تخصیص اولویت بالا به ترافیک خاص عملکرد: ترافیک priority همیشه اول forward میشود کاربرد: VoIP, Video Conferencing, Real-time Traffic
4. Bandwidth Allocation (تخصیص پهنای باند)
تعریف: تضمین حداقل bandwidth در زمان ازدحام عملکرد: از WFQ (Weighted Fair Queuing) استفاده میکند کاربرد: تضمین bandwidth برای سرویسهای مهم
مقایسه مکانیزمهای QoS
مکانیزم |
Guaranteed BW |
Maximum BW |
Exceed Action |
Priority |
|---|---|---|---|---|
Policing |
0 |
User Defined |
Drop or Mark |
No |
Shaping |
0 |
User Defined |
Queue |
No |
Priority |
User Defined |
User Defined |
Drop |
Yes |
Bandwidth |
User Defined |
Infinite |
Queue |
No |
نکته مهم
Policing: ترافیک اضافی را Drop میکند (سریع اما aggressive)
Shaping: ترافیک اضافی را Queue میکند (کندتر اما smooth)
Priority: برای Real-time traffic (VoIP, Video)
Bandwidth: برای تضمین حداقل bandwidth در ازدحام
سناریو 1: Traffic Policing (محدودسازی پهنای باند کاربر)
هدف
محدود کردن ترافیک از یک IP خاص به حداکثر 2Mbps
توپولوژی
[Client] [n2 Router] [Server]
2.1.1.10 ----ge1---- (QoS) ----ge2---- 1.1.1.10
QoS Policy اینجا اعمال میشود

مسئله
Client در 2.1.1.10 از Server در 1.1.1.10 فایل دانلود میکند و تمام bandwidth را مصرف میکند.
راهحل
استفاده از Traffic Policing برای محدود کردن به 2Mbps
پیکربندی
مرحله 1: ایجاد class-map (شناسایی ترافیک)
n2(config)# class-map cmap-limit-user
n2(config-cmap)# match source-address 2.1.1.10/32
n2(config-cmap)# match destination-address 1.1.1.10/32
n2(config-cmap)# exit
n2(config)#
class-map چیست؟
class-map ترافیک هدف را شناسایی میکند. میتوانید match بر اساس:
Source/Destination IP
Protocol (HTTP, FTP, SSH, etc.)
Access-List
Port Number
DSCP/ToS
مرحله 2: ایجاد policy-map (تعریف سیاست)
n2(config)# policy-map pmap-limit-user
n2(config-pmap)# class cmap-limit-user
n2(config-pmap-c)# police 2M conform-action transmit exceed-action drop
n2(config-pmap-c)# exit
n2(config-pmap)# exit
n2(config)#
توضیح دستور police:
2M: حداکثر 2 Mbpsconform-action transmit: ترافیک زیر 2M را Forward کنexceed-action drop: ترافیک بیش از 2M را Drop کن
مرحله 3: اعمال Policy روی Interface
n2(config)# interface ge2
n2(config-if)# service-policy pmap-limit-user in
n2(config-if)# exit
n2(config)# write
n2(config)# exit
n2#
Direction: IN vs OUT
in: Policy روی ترافیک ورودی به interface اعمال میشودout: Policy روی ترافیک خروجی از interface اعمال میشود
در این مثال، ترافیک از 2.1.1.10 وارد ge2 میشود، پس از in استفاده میکنیم.
بررسی و تست
بررسی Policy
n2# show policy-map pmap-limit-user
Policy Map pmap-limit-user
Class cmap-limit-user
Police CIR 2097152 (bps) CB 524288 (byte) EB 734003 (byte)
Conform Action: Transmit
Exceed Action: Drop
n2#
بررسی Interface
n2# show policy-map interface ge1
Interface ge1
Service-policy input: pmap-limit-user
Class-map: cmap-limit-user (match-all)
Match: source-address 2.1.1.10/32
Match: destination-address 1.1.1.10/32
Police:
2097152 bps, 524288 limit
Conform: 12345 packets, 6789012 bytes; action: transmit
Exceed: 456 packets, 234567 bytes; action: drop
n2#
تست با FTP Download
روی Server (1.1.1.10):
server$ sudo systemctl start vsftpd
روی Client (2.1.1.10):
client$ ftp 1.1.1.10
Connected to 1.1.1.10.
ftp> get largefile.bin
...
Transfer rate: 2.0 Mbps
# محدود شده به 2 Mbps ✅
Match-All vs Match-Any
در class-map میتوانید رفتار matching را تعیین کنید:
Match-All (پیشفرض)
n2(config)# class-map match-all cmap-strict
n2(config-cmap)# match source-address 2.1.1.10/32
n2(config-cmap)# match destination-address 1.1.1.10/32
n2(config-cmap)# exit
تمام شرایط باید برقرار باشد:
Source باید
2.1.1.10وDestination باید
1.1.1.10باشد
Match-Any
n2(config)# class-map match-any cmap-flexible
n2(config-cmap)# match source-address 2.1.1.10/32
n2(config-cmap)# match source-address 2.1.1.20/32
n2(config-cmap)# exit
هر یک از شرایط کافی است:
Source =
2.1.1.10یا
Source =
2.1.1.20
سناریو 2: Traffic Shaping (صافسازی ترافیک)
هدف
محدود کردن ترافیک HTTP به 10Mbps بدون drop کردن ناگهانی
تفاوت Shaping و Policing
ویژگی |
Policing |
Shaping |
|---|---|---|
ترافیک اضافی |
Drop میشود |
Queue میشود |
سرعت |
سریع |
کندتر |
Smooth |
خیر |
بله |
CPU Usage |
کم |
بیشتر |
کاربرد Shaping
مناسب برای:
✅ ترافیک TCP (که retransmit میکند)
✅ زمانی که میخواهید burst ها را صاف کنید
✅ زمانی که ISP شما از شما shaping میخواهد
پیکربندی
مرحله 1: class-map برای Web Traffic
n2(config)# class-map match-any cmap-web-traffic
n2(config-cmap)# match protocol http
n2(config-cmap)# match protocol https
n2(config-cmap)# exit
n2(config)#
مرحله 2: policy-map با Shaping
n2(config)# policy-map pmap-shape-web
n2(config-pmap)# class cmap-web-traffic
n2(config-pmap-c)# shape average 10M
n2(config-pmap-c)# exit
n2(config-pmap)# exit
n2(config)#
shape average 10M: میانگین نرخ ارسال را به 10Mbps محدود کن
مرحله 3: اعمال روی Interface
n2(config)# interface ge2
n2(config-if)# service-policy pmap-shape-http out
n2(config-if)# exit
n2(config)# write
نکته
Shaping معمولاً روی direction OUT اعمال میشود چون شما کنترل بیشتری روی ترافیک خروجی دارید.
تست
n2# show policy-map interface ge2
Interface ge2
Service-policy output: pmap-shape-web
Class-map: cmap-web-traffic
Match: protocol http
Match: protocol https
Shaping:
Target/Average Byte Sustained Excess Interval Increment
Rate Limit (ms) (ms) (bytes) (ms) (bytes)
10000000/10000000 50000 200 200 6250000 800 6250000
Output Packets: 12345
Output Bytes: 67890123
n2#
سناریو 3: Priority Queuing (اولویتبندی برای VoIP)
هدف
تضمین اینکه ترافیک VoIP همیشه اولویت دارد و تاخیر کم دارد
مسئله
در شبکه شما هم VoIP و هم File Transfer وجود دارد. زمانی که File Transfer فعال است، کیفیت VoIP افت میکند (صدا قطع میشود، delay بالا، jitter).
راهحل
استفاده از Priority Queuing برای VoIP
توپولوژی
[VoIP Phone] ----+
|
[File Server]----+----> [n2 Router] ----> [Internet]
Priority Queue
پیکربندی
مرحله 1: class-map برای VoIP
n2(config)# access-list 100 permit udp any any range 16384 32767
n2(config)# class-map cmap-voip
n2(config-cmap)# match access-list 100
n2(config-cmap)# exit
n2(config)#
نکته
VoIP (RTP) معمولاً از UDP port range 16384-32767 استفاده میکند. از Access-List برای match کردن استفاده میکنیم.
مرحله 2: class-map برای سایر ترافیک
n2(config)# class-map cmap-data
n2(config-cmap)# match any
n2(config-cmap)# exit
n2(config)#
مرحله 3: policy-map با Priority
n2(config)# policy-map pmap-voip-priority
n2(config-pmap)# class cmap-voip
n2(config-pmap-c)# priority 1M
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-data
n2(config-pmap-c)# bandwidth 5M
n2(config-pmap-c)# exit
n2(config-pmap)# exit
n2(config)#
توضیح:
VoIP:
priority 1M= همیشه اولویت دارد، تا 1Mbps تضمین شدهData:
bandwidth 5M= حداقل 5Mbps در زمان ازدحام
مرحله 4: اعمال روی Interface
n2(config)# interface ge0
n2(config-if)# service-policy pmap-voip-priority out
n2(config-if)# exit
n2(config)# write
تست
بررسی Priority Queue
n2# show policy-map interface ge0
Interface ge0
Service-policy output: pmap-voip-priority
Class-map: cmap-voip (match-all)
Priority: 1000000 bps, burst 25000 bytes
Packets: 45678
Bytes: 5678901
Packets dropped: 0
Class-map: cmap-data (match-all)
Bandwidth: 5000000 bps
Packets: 123456
Bytes: 98765432
Packets dropped: 234
n2#
تست Ping Latency
قبل از QoS:
voip-phone# ping 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=56 time=123.4 ms ❌ خیلی زیاد!
بعد از QoS با Priority:
voip-phone# ping 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=56 time=12.3 ms ✅ عالی!
Priority با درصد
به جای مقدار ثابت، میتوانید از درصد استفاده کنید:
n2(config)# policy-map pmap-voip-percent
n2(config-pmap)# class cmap-voip
n2(config-pmap-c)# priority percent 10
n2(config-pmap-c)# exit
n2(config-pmap)# exit
این 10% از bandwidth interface را به VoIP اختصاص میدهد.
هشدار
از Priority فقط برای ترافیک Real-time (VoIP, Video) استفاده کنید! استفاده بیش از حد باعث میشود سایر ترافیکها starve شوند.
توصیه: Priority را به کمتر از 33% از bandwidth محدود کنید.
سناریو 4: Bandwidth Allocation (تضمین پهنای باند)
هدف
تضمین حداقل bandwidth برای سرویسهای مختلف در زمان ازدحام
مسئله
شما 3 سرویس دارید که در زمان ازدحام باید bandwidth تضمینی داشته باشند:
Video Streaming: حداقل 10Mbps
Web Browsing: حداقل 5Mbps
File Transfer: هرچه بماند
تفاوت Bandwidth و Priority
ویژگی |
Priority |
Bandwidth |
|---|---|---|
تضمین در غیر ازدحام |
بله |
خیر (unlimited) |
تضمین در ازدحام |
بله |
بله |
Strict Priority |
بله |
خیر (WFQ) |
Starvation Risk |
بله |
خیر |
پیکربندی
مرحله 1: class-map ها
n2(config)# access-list 101 permit tcp any any eq 1935
n2(config)# access-list 101 permit tcp any any eq 554
n2(config)# access-list 101 permit udp any any eq 554
n2(config)# class-map cmap-video
n2(config-cmap)# match access-list 101
n2(config-cmap)# exit
n2(config)#
توضیح
Port 1935: RTMP (Streaming)
Port 554: RTSP (Real-Time Streaming Protocol) چون پروتکلهای
rtspوyoutubeدر Soodar وجود ندارند، از port های استاندارد استفاده میکنیم.
n2(config)# class-map cmap-web
n2(config-cmap)# match protocol http
n2(config-cmap)# match protocol https
n2(config-cmap)# exit
n2(config)#
n2(config)# class-map cmap-ftp
n2(config-cmap)# match protocol ftp
n2(config-cmap)# exit
n2(config)#
مرحله 2: policy-map با Bandwidth Allocation
n2(config)# policy-map pmap-bandwidth-allocation
n2(config-pmap)# class cmap-video
n2(config-pmap-c)# bandwidth 10M
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-web
n2(config-pmap-c)# bandwidth 5M
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-ftp
n2(config-pmap-c)# bandwidth 2M
n2(config-pmap-c)# exit
n2(config-pmap)# exit
n2(config)#
مرحله 3: اعمال روی Interface
n2(config)# interface ge0
n2(config-if)# service-policy pmap-bandwidth-allocation out
n2(config-if)# exit
n2(config)# write
چگونه کار میکند؟
حالت 1: بدون ازدحام (Link خالی)
Video: استفاده میکند 50Mbps ✅ (بیشتر از 10M تضمینی)
Web: استفاده میکند 20Mbps ✅ (بیشتر از 5M تضمینی)
FTP: استفاده میکند 30Mbps ✅ (بیشتر از 2M تضمینی)
حالت 2: با ازدحام (Link پر)
Video: دریافت میکند 10Mbps ✅ (تضمین شده)
Web: دریافت میکند 5Mbps ✅ (تضمین شده)
FTP: دریافت میکند 2Mbps ✅ (تضمین شده)
Bandwidth با درصد
n2(config)# policy-map pmap-bandwidth-percent
n2(config-pmap)# class cmap-video
n2(config-pmap-c)# bandwidth percent 50
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-web
n2(config-pmap-c)# bandwidth percent 30
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-ftp
n2(config-pmap-c)# bandwidth percent 20
n2(config-pmap-c)# exit
n2(config-pmap)# exit
50% + 30% + 20% = 100% ✅
نکته
Bandwidth allocation فقط در زمان ازدحام فعال میشود. زمانی که link خالی است، هر سرویس میتواند بیشتر از مقدار تضمینی استفاده کند.
سناریو 5: ترکیب Priority + Bandwidth + Policing
هدف
پیکربندی یک QoS Policy کامل با چندین کلاس و مکانیزمهای مختلف
نیازمندیهای شبکه
VoIP (RTP): Priority با حداکثر 2Mbps
Video Streaming: تضمین 10Mbps در ازدحام
Web Browsing: تضمین 5Mbps در ازدحام
File Download: محدود به 3Mbps (Policing)
سایر ترافیک: هرچه بماند
پیکربندی کامل
n2(config)# access-list 100 permit udp any any range 16384 32767
n2(config)# class-map cmap-voip
n2(config-cmap)# match access-list 100
n2(config-cmap)# exit
n2(config)#
n2(config)# access-list 101 permit tcp any any eq 1935
n2(config)# access-list 101 permit tcp any any eq 554
n2(config)# access-list 101 permit udp any any eq 554
n2(config)# class-map cmap-video
n2(config-cmap)# match access-list 101
n2(config-cmap)# exit
n2(config)#
n2(config)# class-map cmap-web
n2(config-cmap)# match protocol http
n2(config-cmap)# match protocol https
n2(config-cmap)# exit
n2(config)#
n2(config)# class-map cmap-download
n2(config-cmap)# match protocol ftp-data
n2(config-cmap)# exit
n2(config)#
n2(config)# class-map cmap-default
n2(config-cmap)# match any
n2(config-cmap)# exit
n2(config)#
n2(config)# policy-map pmap-complete-qos
n2(config-pmap)# class cmap-voip
n2(config-pmap-c)# priority 2M
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-video
n2(config-pmap-c)# bandwidth 10M
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-web
n2(config-pmap-c)# bandwidth 5M
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-download
n2(config-pmap-c)# police 3M conform-action transmit exceed-action drop
n2(config-pmap-c)# exit
n2(config-pmap)# class cmap-default
n2(config-pmap-c)# bandwidth 1M
n2(config-pmap-c)# exit
n2(config-pmap)# exit
n2(config)#
n2(config)# interface ge0
n2(config-if)# service-policy pmap-complete-qos out
n2(config-if)# exit
n2(config)# write
تست Policy کامل
n2# show policy-map interface ge0
Interface ge0
Service-policy output: pmap-complete-qos
Class-map: cmap-voip
Priority: 2000000 bps
Packets: 12345, Bytes: 1234567
Dropped: 0
Class-map: cmap-video
Bandwidth: 10000000 bps
Packets: 45678, Bytes: 45678901
Dropped: 123
Class-map: cmap-web
Bandwidth: 5000000 bps
Packets: 78901, Bytes: 78901234
Dropped: 456
Class-map: cmap-download
Police: 3000000 bps
Conform: 23456 packets
Exceed: 789 packets (dropped)
Class-map: cmap-default
Bandwidth: 1000000 bps
Packets: 9876, Bytes: 9876543
Dropped: 234
n2#
Matching در class-map
Match بر اساس Protocol
n2(config)# class-map cmap-protocols
n2(config-cmap)# match protocol http
n2(config-cmap)# match protocol ftp
n2(config-cmap)# match protocol ssh
n2(config-cmap)# match protocol icmp
n2(config-cmap)# exit
پروتکلهای پشتیبانی شده در Soodar:
http,httpsftp,ftp-datassh,telnetdns,dhcpicmp,tcp,udprdp,rsvp
نکته مهم
برای پروتکلهایی که در لیست بالا نیستند (مثل RTP، RTSP، YouTube)، باید از Access-List برای match کردن استفاده کنید.
Match بر اساس IP Address
n2(config)# class-map cmap-by-ip
n2(config-cmap)# match source-address 192.168.1.0/24
n2(config-cmap)# match destination-address 10.0.0.0/8
n2(config-cmap)# exit
Match بر اساس Access-List
n2(config)# access-list 110 permit tcp any any eq 8080
n2(config)# access-list 110 permit udp any any range 5000 6000
n2(config)# class-map cmap-by-acl
n2(config-cmap)# match access-list 110
n2(config-cmap)# exit
Match بر اساس DSCP/ToS
n2(config)# class-map cmap-by-dscp
n2(config-cmap)# match ip dscp ef
n2(config-cmap)# match ip dscp af41
n2(config-cmap)# exit
DSCP values:
ef(Expedited Forwarding): 46 - برای VoIPaf41(Assured Forwarding): 34 - برای Videocs0-cs7(Class Selector): 0, 8, 16, 24, 32, 40, 48, 56
Match Any (default class)
n2(config)# class-map cmap-all
n2(config-cmap)# match any
n2(config-cmap)# exit
عیبیابی QoS
مشکل 1: QoS کار نمیکند
بررسی 1: آیا Policy روی Interface اعمال شده؟
n2# show running-config interface ge0
interface ge0
ip address 192.168.1.1/24
service-policy pmap-complete-qos out ← باید این خط باشد
!
n2#
بررسی 2: آیا ترافیک در class-map match میشود؟
n2# show policy-map interface ge0
Interface ge0
Service-policy output: pmap-complete-qos
Class-map: cmap-web
Packets: 0, Bytes: 0 ← صفر = ترافیک match نمیشود! ❌
n2#
اگر Packets صفر است، یعنی ترافیک شما در class-map match نمیشود.
راهحل: class-map را بررسی کنید:
n2# show class-map cmap-web
Class Map match-all cmap-web (id 2)
Match protocol http
Match protocol https
بررسی 3: آیا Direction صحیح است؟
in: ترافیک ورودی به interfaceout: ترافیک خروجی از interface
[Client] ---IN---> [Interface ge0] ---OUT---> [Server]
برای محدود کردن download client → استفاده از out روی interface سمت client
مشکل 2: Priority Queue تمام Bandwidth را مصرف میکند
n2# show policy-map interface ge0
Class-map: cmap-voip
Priority: 50000000 bps ← 50Mbps خیلی زیاد! ❌
Packets: 123456789
علت: مقدار Priority خیلی زیاد تنظیم شده
راهحل: Priority را به کمتر از 33% interface bandwidth محدود کنید:
n2(config)# policy-map pmap-voip-priority
n2(config-pmap)# class cmap-voip
n2(config-pmap-c)# priority 10M ← کاهش به 10M
n2(config-pmap-c)# exit
مشکل 3: Dropped Packets زیاد
n2# show policy-map interface ge0
Class-map: cmap-download
Police: 3000000 bps
Conform: 12345 packets
Exceed: 98765 packets (dropped) ← خیلی زیاد! ❌
علت: Policing خیلی محدود است یا ترافیک burst دارد
راهحل 1: Policing را کمی افزایش دهید
n2(config-pmap-c)# police 5M conform-action transmit exceed-action drop
راهحل 2: به جای Policing از Shaping استفاده کنید
n2(config-pmap-c)# no police 3M
n2(config-pmap-c)# shape average 5M
مشکل 4: Bandwidth Allocation کار نمیکند
n2# show policy-map interface ge0
Class-map: cmap-video
Bandwidth: 10000000 bps
Packets: 12345
Dropped: 0 ← هیچ Packet drop نشده
علت: Bandwidth allocation فقط در زمان ازدحام فعال میشود!
بررسی: Interface پر است؟
n2# show interface ge0
ge0 is up, line protocol is up
...
5 minute input rate 98765432 bits/sec ← نزدیک به bandwidth interface
5 minute output rate 95432198 bits/sec ← ازدحام وجود دارد ✅
اگر interface خالی است، bandwidth allocation فعال نمیشود.
Debugging QoS
فعالسازی QoS Debug
n2# debug qos event
QoS event debugging is on
n2#
خروجی نمونه:
n2# debug qos event
*Oct 10 12:34:56.789: QoS: Policy pmap-complete-qos attached to ge0 output
*Oct 10 12:34:57.123: QoS: Class cmap-voip matched, action: priority 2M
*Oct 10 12:34:58.456: QoS: Class cmap-download, police exceed, packet dropped
n2#
غیرفعال کردن Debug
n2# no debug qos event
n2# no debug all
دستورات مفید QoS
نمایش پیکربندی
دستور |
توضیح |
|---|---|
|
نمایش تمام class-map ها |
|
نمایش یک class-map خاص |
|
نمایش تمام policy-map ها |
|
نمایش یک policy-map خاص |
|
نمایش statistics QoS روی interface |
|
نمایش پیکربندی class-map |
|
نمایش پیکربندی policy-map |
پیکربندی class-map
دستور |
توضیح |
|---|---|
|
ایجاد class-map |
|
Match تمام شرایط (AND) |
|
Match هر شرط (OR) |
|
Match بر اساس protocol |
|
Match بر اساس source IP |
|
Match بر اساس destination IP |
|
Match بر اساس ACL |
|
Match همه ترافیک |
پیکربندی policy-map
دستور |
توضیح |
|---|---|
|
ایجاد policy-map |
|
اضافه کردن class به policy |
|
Traffic policing |
|
Traffic shaping |
|
Priority queuing با مقدار ثابت |
|
Priority queuing با درصد |
|
Bandwidth allocation با مقدار ثابت |
|
Bandwidth allocation با درصد |
اعمال Policy
دستور |
توضیح |
|---|---|
|
اعمال policy روی ترافیک ورودی |
|
اعمال policy روی ترافیک خروجی |
|
حذف policy از ورودی |
|
حذف policy از خروجی |
حذف
دستور |
توضیح |
|---|---|
|
حذف class-map |
|
حذف policy-map |
بهترین شیوهها (Best Practices)
1. نامگذاری معنادار
✅ class-map cmap-voip-rtp
✅ class-map cmap-web-browsing
✅ policy-map pmap-wan-qos
❌ class-map class1
❌ policy-map pmap
2. استفاده از Match-All برای دقت بیشتر
n2(config)# class-map match-all cmap-specific
n2(config-cmap)# match source-address 192.168.1.0/24
n2(config-cmap)# match protocol http
n2(config-cmap)# exit
# فقط HTTP از 192.168.1.0/24 ✅
3. محدود کردن Priority Queue
n2(config-pmap-c)# priority 2M ← کمتر از 33% interface BW
Priority بیش از حد = Starvation سایر ترافیکها ❌
4. استفاده از Class-Default
همیشه یک class برای ترافیکهای match نشده داشته باشید:
n2(config)# class-map cmap-default
n2(config-cmap)# match any
n2(config-cmap)# exit
n2(config)# policy-map pmap-qos
n2(config-pmap)# ...
n2(config-pmap)# class cmap-default
n2(config-pmap-c)# bandwidth 1M
n2(config-pmap-c)# exit
5. تست QoS قبل از Production
# استفاده از iperf برای تست
server$ iperf3 -s
client$ iperf3 -c server-ip -b 10M -t 60
6. مانیتورینگ مداوم
n2# show policy-map interface ge0
# بررسی Dropped packets
# بررسی Match counts
7. استفاده از نامهای واضح
از نامهای معنادار برای class-map و policy-map استفاده کنید تا پیکربندی قابل فهمتر باشد.
مثال پیکربندی کامل
شبکه سازمانی با QoS کامل
# ========== Access-Lists ==========
n2(config)# access-list 100 permit udp any any range 16384 32767
n2(config)# access-list 101 permit tcp any any eq 1935
n2(config)# access-list 101 permit tcp any any eq 554
n2(config)# access-list 101 permit udp any any eq 554
# ========== class-map ها ==========
n2(config)# class-map cmap-voip
n2(config-cmap)# match access-list 100
n2(config-cmap)# exit
n2(config)# class-map cmap-video
n2(config-cmap)# match access-list 101
n2(config-cmap)# exit
n2(config)# class-map match-any cmap-web
n2(config-cmap)# match protocol http
n2(config-cmap)# match protocol https
n2(config-cmap)# exit
n2(config)# class-map match-all cmap-bulk
n2(config-cmap)# match protocol ftp-data
n2(config-cmap)# exit
n2(config)# class-map cmap-default
n2(config-cmap)# match any
n2(config-cmap)# exit
# ========== policy-map ==========
n2(config)# policy-map pmap-enterprise-qos
n2(config-pmap)#
n2(config-pmap)# class cmap-voip
n2(config-pmap-c)# priority 2M
n2(config-pmap-c)# exit
n2(config-pmap)#
n2(config-pmap)# class cmap-video
n2(config-pmap-c)# bandwidth 15M
n2(config-pmap-c)# exit
n2(config-pmap)#
n2(config-pmap)# class cmap-web
n2(config-pmap-c)# bandwidth 10M
n2(config-pmap-c)# exit
n2(config-pmap)#
n2(config-pmap)# class cmap-bulk
n2(config-pmap-c)# police 5M conform-action transmit exceed-action drop
n2(config-pmap-c)# exit
n2(config-pmap)#
n2(config-pmap)# class cmap-default
n2(config-pmap-c)# bandwidth 1M
n2(config-pmap-c)# exit
n2(config-pmap)# exit
# ========== اعمال روی Interface ==========
n2(config)# interface ge0
n2(config-if)# service-policy pmap-enterprise-qos out
n2(config-if)# exit
n2(config)# write
Building configuration...
[OK]
بررسی نهایی
n2# show policy-map pmap-enterprise-qos
Policy Map pmap-enterprise-qos
Class cmap-voip
Priority: 2000000 bps, burst 50000 bytes
Class cmap-video
Bandwidth: 15000000 bps
Class cmap-web
Bandwidth: 10000000 bps
Class cmap-bulk
Police CIR 5000000 (bps) CB 1250000 (byte) EB 1750000 (byte)
Conform Action: Transmit
Exceed Action: Drop
Class cmap-default
Bandwidth: 1000000 bps
n2#
خلاصه
QoS ابزار قدرتمندی برای مدیریت ترافیک شبکه است. با استفاده صحیح از class-map، policy-map، و انواع مکانیزمها میتوانید:
✅ اولویتبندی کنید: VoIP و Video همیشه کیفیت خوب دارند ✅ تضمین کنید: سرویسهای مهم bandwidth لازم را دارند ✅ محدود کنید: کاربران خاص نمیتوانند تمام bandwidth را مصرف کنند ✅ کنترل کنید: ترافیک burst smooth میشود
نکات کلیدی:
از Priority فقط برای Real-time traffic استفاده کنید
Bandwidth allocation در ازدحام فعال میشود
Policing = Drop, Shaping = Queue
همیشه class-default داشته باشید
QoS را تست و مانیتور کنید