SLA
SLA یک ویژگی است که برای اندازه گیری عملکرد شبکه و تأیید سطوح خدمات شبکه استفاده می شود. این به مدیران شبکه اجازه می دهد تا ترافیک شبکه را شبیه سازی کرده و عملکرد دستگاه ها را اندازه گیری کنند. IP SLA می تواند برای نظارت بر طیف وسیعی از پارامترهای شبکه مانند از دست دادن بسته، تأخیر، jitter و در دسترس بودن استفاده شود. همچنین میتوان از آن برای راهاندازی رویدادهای گزارشگیری، مانند failover، زمانی که از آستانه عملکرد فراتر رفت، استفاده کرد. IP SLA می تواند به مدیران شبکه کمک کند تا مشکلات شبکه را شناسایی و عیب یابی کنند و از برآورده شدن سطح خدمات شبکه اطمینان حاصل کنند.
در حال حاضر دو نوع عملکرد SLA داریم :
icmp-echo
icmp-jitter
icmp echo
در این حالت بسته های icmp به مقصد مشخص ارسال می شود و rtt بین دستگاه مبدا و مقصد اندازه گیری می شود .
پارامترهای icmp-echo
destination : مقصد بسته های icmp را مشخص می کند
source : مبدا بسته های icmp را مشخص می کند . در واقع مشخص مس کند بسته ها با کدام ip یک از ip های تنظیم شده در اینترفیس ارسال شود
frequency : بازه زمانی (interval) ارسال بسته های icmp را مشخص می کند
timeout: مشخص می کند که حد اکثرچقدر برای دریافت پاسخ بسته icmp صبر کند
threshold: مقدار آستانه بالا را برای rtt مشخص می کند . در مانیتورینگ و بخش reaction استفاده می شود
vrf: مشخص می کند که این sla در چه vrf ی باید اجرا شود
request-data-size: مقدار payload بسته icmp را مشخص می کند
مثال برای icmp echo
فرض کنید در سناریوی زیر در نود n1 قصد داریم sla از نود icmp-echo اجرا کنیم . در این جا ما از دو ISP سرویس اینترنت دریافت می کنیم . به صورت پیش فرض از ISP1 استفاده می کنیم چون سرویس بهتری به ما می دهد . حال اگر مقدار rtt بسته ها از مقدار بیشتر شد از ISP2 برای دسترسی به اینترنت استفاده می کنیم . تنظیمات در روتر n1 به شکل زیر خواهد بود :
اضافه کردن sla
n1(config)# ip sla 1
n1(config-ip-sla)# icmp-echo 200.1.2.2
n1(config-ip-sla-echo)# frequency 30 بسته ها هر ۳۰ ثانیه یک بار ارسال می شوند
تعریف reaction
با دستور زیر مشخص می کنیم که در صورتی که حتی یک بسته مقدار rttش از 500 ms بیشتر شد لاگ کن و اگر track ی تعریف کرده باشیم که از این reaction استفاده کند وضعیت track با توجه به این reaction تغییر می کند .
n1(config)# ip sla reaction-configuration 1 react rtt action-type logOnly threshold-type immediate threshold-value 500 50
schedule کردن sla
بعد از اضافه کردن sla باید مشخص کنیم که این sla چه زمان هایی باید اجرا شود . در این مثال ما می خواهیم sla از همین لحظه شروع به کار کند و برای همیشه فعال باشد :
n1(config)# ip sla schedule 1 start-time now life forever
informational-ZEBRA: SLA 1 running state changed: Running نشان می دهد sla اجرا شده است
informational-ZEBRA: SLA 1 state changed: Ok نشان می دهد sla up شده است
مشاهده تنظیمات اعمال شده
n1# sh ip sla configuration 1
Entry number: 1
Operation timeout (milliseconds): 5000
Type of operation to perform: icmp-echo
Target address/Source address: 200.1.2.2/0.0.0.0
Request size (ARR data portion): 28
VRF name:
Schedule:
Operation frequency (seconds): 30
Next Scheduled Start Time: Start Time already passed
Life (seconds): forever
Recurring (Starting Everyday): FALSE
Threshold (milliseconds): 5000
n1#
مشاهده وضعیت sla
n1(config)# do sh ip sla statistics 1
IPSLA Operation id: 1
Type of operation: icmp-echo
Latest RTT: 12 milliseconds
Latest operation start time: Sat Jun 10 14:02:23 2023 آخرین باری که اجرا شده است
Latest successfull operation time: Sat Jun 10 14:02:23 2023 آخرین باری که با موفقیت اجرا شده است
Latest failed operation time: N/A آخرین باری که ناموفق بوده است
Latest operation return code: OK وضعیت آخرین باری که اجرا شده است
Number of successes: 68 تعداد دفعاتی که موفقیت آمیز بوده است
Number of failures: 0 تعداد دفعاتی که موفقیت آمیز نبوده است
Operation time to live: Forever عمر باقی مانده
n1(config)#
اضافه کردن track
یک track تعریف می کنیم که برای آن reaction rtt در sla شماره 1 مشخص شده است . یعنی اگر مقدار rtt در sla 1 کمتر از 500 ms باشد track 1 فعال (up) خواهد بود در غیر اینصورت track down خواهد شد .
n1(config)# track 1 ip sla 1 reaction rtt
informational-ZEBRA: Track 1 came up
سپس با استفاده از track یک route default اضافه می کنیم که این route زمانی در سیستم نصب می شود که track فعال باشد . ما یک route دیگر نیز با مقدار distance برابر با 150 هم اضافه کرده ایم که چون مقدار distance آن بیشتر است نصب نخواهد شد و فقط زمانی که track غیر فعال (down) باشد این route نصب می شود :
n1(config)# ip route 0.0.0.0/0 200.1.2.2 track 1
n1(config)# ip route 0.0.0.0/0 200.1.3.3 150
n1(config)# do sh ip fib
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
F - PBR, f - OpenFabric, W - WG,
> - selected route, * - FIB route, q - queued, r - rejected, b - backup
t - trapped, o - offload failure
S>* 0.0.0.0/0 [1/0] via 200.1.2.2, ge0, weight 1, 00:00:14
C>* 10.0.2.0/24 is directly connected, ge2, 01:03:46
C>* 200.1.2.0/24 is directly connected, ge0, 01:04:45
C>* 200.1.3.0/24 is directly connected, ge1, 01:04:02
n1(config)#
به شکل زیر نیز می توان وضعیت track را مشاهده کرد:
n1# sh track 1
Track 1
IP SLA 1 reaction
Reaction is Up
1 change[s], last change 00:07:59
Latest operation return code: OK
Tracked by:
Static IP Routing
n1#
icmp jitter
در این حالت ترافیک icmp به مقصد مشخص ارسال می شود و مقدار packet loss , jitter برای آن محاسبه می گردد.
پارامترهای icmp-jitter
destination : مقصد بسته های icmp را مشخص می کند
source : مبدا بسته های icmp را مشخص می کند . در واقع مشخص مس کند بسته ها با کدام ip یک از ip های تنظیم شده در اینترفیس ارسال شود
frequency : بازه زمانی (interval) ارسال بسته های icmp را مشخص می کند
timeout: مشخص می کند که حد اکثرچقدر برای دریافت پاسخ بسته icmp صبر کند
threshold: مقدار آستانه بالا را برای rtt مشخص می کند . در مانیتورینگ و بخش reaction استفاده می شود
vrf: مشخص می کند که این sla در چه vrf ی باید اجرا شود
num-packets: مشخص می کند در هر بار که sla اجرا می شود چه تعداد بسته ارسال شود
interval: بازه زمانی بین دو بسته icmp متوالی که به سمت مقصد ارسال می شوند را مشخص می کند
percentile: مقدار درصد بسته هایی که rtt کمتری دارد را برای محاسبات آماری مشخص می کند برای مثال وقتی مقدار 95 تنظیم شود ، ۵ درصدی که بیشترین مقدار rtt را دارند و به نوعی داده پرت به حساب می آیند در محاسبات لحاظ نشوند و فقط ۹۵ درصد از داده ها جهت تحلیل و تصمیم گیری استفاده شوند
مثال icmp jitter
فرض کنید می خواهیم مثال قبل را با jitter پیاده سازی کنیم :
n1(config)# ip sla 2
n1(config-ip-sla)# icmp-jitter 200.1.2.2
n1(config-ip-sla-echo)# frequency 30
n1(config-ip-sla-icmpjitter)# percentile jitterAvg 90
n1(config-ip-sla-icmpjitter)#
n1(config)# ip sla reaction-configuration 2 react jitterAvg action-type logOnly threshold-type average 5 threshold-value 100 10
n1(config)# ip sla schedule 2 start-time now life 7200
n1(config)# track 1 ip sla 2 reaction jitterAvg
n1(config)# ip route 0.0.0.0/0 200.1.2.2 track 1
n1(config)# ip route 0.0.0.0/0 200.1.3.3 150
ما در این مثال یک sla با شماره 2
از نوع jitter
به مقصد 200.1.2.2
تعریف کرده ایم که هر 30
ثانیه یک بار اجرا می شود . همچنین 10
درصدی که بیشترین مقدار jitter را دارد از داده ها حذف نمو ده ایم . در ادامه یک reaction اضافه کردیم که از نوع jitterAvg
است و اگر میانگین
5
مقدار jitter از 100
بیشتر شود لاگ
می کند .
پس از آن یک track تعریف کردیم که به این reaction واکنش نشان می دهد و در صورت up بودن آن یک route اضافه می کند
با این تنظیم به صورت پیش فرض اینترنت از ISP1 در دسترس خواهد بود و در صورتی که میانگین jitter در 5 بار اجرا شدن sla بیشتر از 100ms شود اینترنت از ISP2 در دسترس خواهد بود .
n1# sh ip sla statistics 2
IPSLA Operation id: 2
Type of operation: icmp-jitter
Latest RTT: 10 milliseconds
Latest operation start time: Sun Jun 11 09:33:34 2023
Latest successfull operation time: Sun Jun 11 09:33:34 2023
Latest failed operation time: N/A
Latest failed operation error: Timed out
Latest operation return code: OK
RTT Values:
Number of RTT:10 RTT Min/Avg/Max: 10/12/15 milliseconds
Jitter time:
Number of Jitter Samples: 9
Jitter Min/Avg/Max: 0/2/4 milliseconds
Percentile Jitter time:
Number of Percentile Jitter Samples (90%): 8
Percentile Jitter Min/Avg/Max: 0/2/4 milliseconds
Over Threshold:
Number Of RTT Over Threshold: 0
Out of Sequence: 0
Packet Loss: 0
Number of successes: 8
Number of failures: 0
Operation time to live: 01:56:26
با دستور زیر می توان جزيیات بیشتری را مشاهده کرد :
n1(config)# do sh ip sla statistics 2 details
IPSLA Operation id: 2
Type of operation: icmp-jitter
Latest RTT: 11 milliseconds
Latest operation start time: Sun Jun 11 09:35:04 2023
Latest successfull operation time: Sun Jun 11 09:35:04 2023
Latest failed operation time: N/A
Latest failed operation error: Timed out
Latest operation return code: OK
RTT Values:
Number of RTT:10 RTT Min/Avg/Max: 7/12/15 milliseconds
Jitter time:
Number of Jitter Samples: 9
Jitter Min/Avg/Max: 0/2/4 milliseconds
Positive Jitter Num/Min/Avg/Max: 6/0/1/4 milliseconds
Negative Jitter Num/Min/Avg/Max: 3/3/3/4 milliseconds
Percentile Jitter time:
Number of Percentile Jitter Samples (90%): 8
Percentile Jitter Min/Avg/Max: 0/2/4 milliseconds
Over Threshold:
Number Of RTT Over Threshold: 0
Out of Sequence: 0
Packet Loss: 0
Number of successes: 11
Number of failures: 0
Operation time to live: 01:54:56
غیر فعال کردن sla
با دستور زیر می توانید schedule را غیر فعال کنید :
n1(config)# no ip sla schedule 1
فعال کردن لاگ ها
n1(config)# debug ip sla event
مشاهده لاگ ها
n1# show log soosla