مقدمه#
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 استفاده میکنیم.
از نسخه 23120 به بعد، اکشنهای bandwidth / shape / priority روی ingress (in) مجاز نیستند و فقط روی egress (out) کار میکنند. روی ورودی میتوانید از police استفاده کنید (مثل این مثال).
بررسی و تست#
بررسی 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: ترافیک اضافی
DropمیشودShaping: ترافیک اضافی
Queueمیشود
سرعت
Policing: سریع
Shaping: کندتر
Smooth
Policing: خیر
Shaping: بله
CPU Usage
Policing: کم
Shaping: بیشتر
کاربرد 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در 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
محدودیت ingress از نسخه 23120
اگر policy شامل bandwidth، shape یا priority باشد، فقط با service-policy … out اعمال کنید.
روی in این اکشنها مسدود هستند؛ برای محدودسازی ورودی از police استفاده کنید.
مشکل 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 |
|
آمار یکپارچه QoS (از نسخه 23120، در حالت enable) |
|
نمایش پیکربندی 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 روی ترافیک ورودی (فقط با اکشنهایی مثل police؛ نه bandwidth/shape/priority) |
|
اعمال policy روی ترافیک خروجی |
|
حذف policy از ورودی |
|
حذف policy از خروجی |
توجه
از نسخه 23120، bandwidth / shape / priority فقط روی egress (out) مجاز هستند.
حذف#
دستور |
توضیح |
|---|---|
|
حذف 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 را تست و مانیتور کنید