SLA

SLA یک ویژگی است که برای اندازه گیری عملکرد شبکه و تأیید سطوح خدمات شبکه استفاده می شود. این به مدیران شبکه اجازه می دهد تا ترافیک شبکه را شبیه سازی کرده و عملکرد دستگاه ها را اندازه گیری کنند. IP SLA می تواند برای نظارت بر طیف وسیعی از پارامترهای شبکه مانند از دست دادن بسته، تأخیر، jitter و در دسترس بودن استفاده شود. همچنین می‌توان از آن برای راه‌اندازی رویدادهای گزارش‌گیری، مانند failover، زمانی که از آستانه عملکرد فراتر رفت، استفاده کرد. IP SLA می تواند به مدیران شبکه کمک کند تا مشکلات شبکه را شناسایی و عیب یابی کنند و از برآورده شدن سطح خدمات شبکه اطمینان حاصل کنند.

در حال حاضر دو نوع عملکرد SLA داریم :

  1. icmp-echo

  2. 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

اضافه کردن 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 پیاده سازی کنیم : SLA

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