Track

Track یک قابلیت است که برای پایش وضعیت یک آبجکت (مانند یک اینترفیس یا آدرس IP) و انجام عمل بر اساس وضعیت آن استفاده می‌شود. قابلیت Track با سایر ویژگی‌ها مانند IP SLA و پروتکل‌های routing استفاده می‌شود.

هدف از قابلیت Track، ارائه مکانیزمی برای روتر است تا وضعیت یک آبجکت تحت پایش را مانیتور کند و رفتار روتر را بر اساس وضعیت آن آبجکت تغییر دهد. برای مثال، یک Track می‌تواند برای پایش وضعیت یک اینترفیس خاص پیکربندی شود. اگر اینترفیس down شود، Track می‌تواند تنظیم شود تا یک عمل را تحریک کند، مانند تغییر وضعیت یک مسیر.

قابلیت Track همچنین می‌تواند برای پایش وضعیت یک آدرس IP استفاده شود. این برای سناریوهای Failover مفید است که در آن یک دستگاه پشتیبان می‌تواند در صورت خرابی، آدرس IP دستگاه اصلی را بر عهده بگیرد. قابلیت Track می‌تواند برای پایش آدرس IP دستگاه اصلی پیکربندی شود، و اگر غیرقابل دسترس شود، دستگاه پشتیبان می‌تواند آدرس IP را بر عهده بگیرد.

Track ها به ویژه در محیط‌های High Availability مفید هستند، جایی که مدیران شبکه نیاز دارند به سرعت تغییرات در شرایط شبکه را تشخیص داده و به آن‌ها پاسخ دهند تا زمان Uptime سرویس را حفظ کنند.

مفاهیم و ویژگی‌ها

  • شناسه یکتا: هر Track با شماره‌ای بین ۱ تا ۱۰۰۰ تعریف می‌شود و این شماره باید در کل دستگاه یکتا باشد.

  • پایش وضعیت: Track می‌تواند به وضعیت up یا down برود و این وضعیت مبنای تصمیم‌گیری سایر ویژگی‌ها است.

  • اسکریپت‌های واکنشی: می‌توان برای تغییر وضعیت، اسکریپت دلخواه تعریف کرد (upscript و downscript) تا خودکار فرمان‌های بیشتری اجرا شوند.

  • ادغام با SLA و مسیریابی: Track می‌تواند خروجی IP SLA یا وضعیت مسیرها را پایش کند و به صورت مستقیم با ip route ... track و سایر قابلیت‌ها کار کند.

انواع آبجکت‌های قابل پایش

۱. اینترفیس (line-protocol)

track (1-1000) interface IFNAME line-protocol [upscript script:] [downscript script:]

این دستور روتر را برای پایش وضعیت line protocol یک اینترفیس مشخص به عنوان یک آبجکت با شماره خاص (بین 1 تا 1000) پیکربندی می‌کند.

  • (1-1000): شماره اختصاص داده شده به آبجکت تحت پایش را مشخص می‌کند. این شماره باید یکتا و بین 1 تا 1000 باشد.

  • IFNAME: نام اینترفیسی که باید پایش شود را مشخص می‌کند.

  • upscript: (اختیاری) اسکریپتی را مشخص می‌کند که هنگام انتقال وضعیت Track به حالت “up” اجرا می‌شود.

  • downscript: (اختیاری) اسکریپتی را مشخص می‌کند که هنگام انتقال وضعیت Track به حالت “down” اجرا می‌شود.

مثال:

soodar(config)# track 1 interface ge2 line-protocol

این دستور وضعیت لایه ۲/۳ یک اینترفیس را پایش می‌کند و در کاربردهای Failover یا زمان‌بندی سرویس‌ها روی اینترفیس خاص بسیار متداول است. می‌توان با upscript و downscript رفتار خودکار هنگام قطع و وصل لینک تعریف کرد.

۲. مسیر IP (reachability)

track (1-1000) ip route A.B.C.D/M reachability [A.B.C.D|IFNAME] [vrf VRF] [upscript script:] [downscript script:]

یک آبجکت پایش ایجاد می‌کند که دسترس‌پذیری یک آدرس IP یا پیشوند شبکه مشخص را مانیتور می‌کند. اگر آدرس یا پیشوند غیرقابل دسترس شود، آبجکت پایش به حالت “down” انتقال می‌یابد.

  • (1-1000): شماره اختصاص داده شده به آبجکت تحت پایش را مشخص می‌کند. این شماره باید یکتا و بین 1 تا 1000 باشد.

  • A.B.C.D/M: این گزینه برای مشخص کردن پیشوند شبکه که باید پایش شود استفاده می‌شود.

  • A.B.C.D | IFNAME: (اختیاری) آدرس IP next-hop یا اینترفیس خروجی را مشخص می‌کند که دستگاه برای رسیدن به آدرس IP یا شبکه مشخص استفاده می‌کند.

  • VRF: (اختیاری) نمونه VRF که مسیر پایش شده در آن قرار دارد را مشخص می‌کند. این گزینه فقط در صورتی لازم است که دستگاه چندین VRF پیکربندی شده داشته باشد.

  • upscript: (اختیاری) اسکریپتی را مشخص می‌کند که هنگام انتقال وضعیت Track به حالت “up” اجرا می‌شود.

  • downscript: (اختیاری) اسکریپتی را مشخص می‌کند که هنگام انتقال وضعیت Track به حالت “down” اجرا می‌شود.

مثال:

soodar(config)# track 10 ip route 10.1.1.1/32 reachability 10.1.1.1 vrf my_vrf

در این مثال، یک آبجکت Track با ID 10 ایجاد می‌کنیم که دسترس‌پذیری آدرس IP 10.1.1.1/32 را از طریق اینترفیس مرتبط با آدرس IP 10.1.1.1، در VRF با نام my_vrf پایش می‌کند.

اگر مسیر به 10.1.1.1/32 غیرقابل دسترس شود، وضعیت آبجکت Track به down تغییر می‌کند. اگر مسیر دوباره قابل دسترس شود، وضعیت به up تغییر می‌کند.

Note

در حال حاضر، کاربر نمی‌تواند هم آدرس IP next-hop و هم اینترفیس خروجی را همزمان مشخص کند.

۳. عملیات IP SLA

track (1-1000) ip sla (1-2147483647) <reachability|reaction <jitterAvg|jitterAvgPct|rtt|overThreshold|packetLoss|timeout>> [upscript script:] [downscript script:]

این دستور برای پایش وضعیت یک عملیات IP SLA استفاده می‌شود. گزینه‌های موجود در دستور نوع پایشی را که باید انجام شود مشخص می‌کند.

  • (1-1000): شماره اختصاص داده شده به آبجکت تحت پایش را مشخص می‌کند. این شماره باید یکتا و بین 1 تا 1000 باشد.

  • (1-2147483647): عملیات IP SLA که باید پایش شود را مشخص می‌کند. محدوده از 1 تا 2147483647 است.

  • reachability|reaction: نوع پایش را مشخص می‌کند. اگر reachability مشخص شود، روتر پایش می‌کند که آیا عملیات IP SLA می‌تواند به هدف خود برسد یا خیر. اگر reaction مشخص شود، روتر reaction type مشخص شده IP SLA را پایش می‌کند.

  • jitterAvg: وضعیت reaction متوسط jitter (بر حسب میلی‌ثانیه) عملیات IP SLA را پایش می‌کند.

  • jitterAvgPct: وضعیت reaction متوسط jitter درصدی عملیات IP SLA را پایش می‌کند.

  • rtt: وضعیت reaction زمان round-trip (بر حسب میلی‌ثانیه) عملیات IP SLA را پایش می‌کند.

  • overThreshold: وضعیت reaction بسته‌های overthreshold عملیات IP SLA را پایش می‌کند.

  • packetLoss: وضعیت reaction درصد از دست رفتن بسته عملیات IP SLA را پایش می‌کند.

  • timeout: پایش می‌کند که آیا وضعیت reaction timeout عملیات IP SLA raised یا fallen است.

  • upscript: (اختیاری) اسکریپتی را مشخص می‌کند که هنگام انتقال وضعیت Track به حالت “up” اجرا می‌شود.

  • downscript: (اختیاری) اسکریپتی را مشخص می‌کند که هنگام انتقال وضعیت Track به حالت “down” اجرا می‌شود.

مثال:

فرض کنید یک سرور حیاتی در شبکه دارید و می‌خواهید دسترس‌پذیری آن را مانیتور کنید. می‌توانید از قابلیت ip sla برای ارسال ping به سرور در فواصل منظم استفاده کنید و دسترس‌پذیری آن را با استفاده از دستور track پایش کنید.

ابتدا، می‌توانید یک عملیات IP SLA برای ارسال ping به سرور با استفاده از دستور زیر پیکربندی کنید:

soodar(config)# ip sla 1
soodar(config-ip-sla)# icmp-echo 10.1.1.10
soodar(config)# ip sla schedule 1 start-time now

این دستور یک درخواست ICMP echo به آدرس IP 10.1.1.10 هر 60 ثانیه برای یک ساعت ارسال می‌کند.

سپس، می‌توانید یک آبجکت Track برای پایش دسترس‌پذیری سرور با استفاده از دستور زیر تعریف کنید:

soodar(config)# track 1 ip sla 1 reachability

۴. لیست منطقی (Track List)

track (1-1000) list boolean <and|or> [upscript script:] [downscript script:]

این دستور لیستی از آبجکت‌های پایش را پیکربندی می‌کند و عملگر boolean (AND یا OR) را برای ارزیابی وضعیت آن‌ها مشخص می‌کند.

  • (1-1000): شماره اختصاص داده شده به آبجکت تحت پایش را مشخص می‌کند. این شماره باید یکتا و بین 1 تا 1000 باشد.

  • <and|or>: عملگر boolean که باید برای ارزیابی لیست استفاده شود را مشخص می‌کند.

  • upscript: (اختیاری) اسکریپتی را مشخص می‌کند که هنگام انتقال وضعیت Track به حالت “up” اجرا می‌شود.

  • downscript: (اختیاری) اسکریپتی را مشخص می‌کند که هنگام انتقال وضعیت Track به حالت “down” اجرا می‌شود.

مثال:

فرض کنید دو آبجکت Track داریم: آبجکت 1 و آبجکت 2. آبجکت 1 دسترس‌پذیری یک آدرس IP مشخص را پایش می‌کند، در حالی که آبجکت 2 وضعیت یک اینترفیس خاص را پایش می‌کند. می‌خواهیم یک آبجکت Track سوم ایجاد کنیم که فقط زمانی up باشد که هم آبجکت 1 و هم آبجکت 2 up باشند. برای رسیدن به این هدف، می‌توانیم از دستور زیر استفاده کنیم:

soodar(config)# track 3 list boolean and
soodar(config-track)# object 1
soodar(config-track)# object 2

در این مثال، track 3 یک آبجکت Track جدید با ID 3 ایجاد می‌کند، و list boolean and مشخص می‌کند که این آبجکت فقط زمانی up خواهد بود که هم آبجکت 1 و هم آبجکت 2 up باشند. در نهایت، آبجکت 1 و آبجکت 2 را به لیست آبجکت‌های Track برای track 3 اضافه می‌کنیم.

استفاده از Track

Track ها می‌توانند برای نصب/حذف پویای مسیرهای استاتیک و کیفیت سرویس (QoS) استفاده شوند. با استفاده از Track ها، مدیران شبکه می‌توانند شبکه‌های مقاوم‌تری بسازند که به طور خودکار با تغییرات در محیط شبکه سازگار شوند.

مسیرها با Track

دستور ip route track برای ایجاد یک مسیر استاتیک که به وضعیت یک آبجکت Track وابسته است استفاده می‌شود.

مثال:

در این مثال، روتر برای پایش دسترس‌پذیری عملیات IP SLA 1 پیکربندی شده است. gateway پیش‌فرض برای روتر به 192.168.1.1 تنظیم شده است و مسیر با track 1 پایش می‌شود. اگر عملیات IP SLA ناموفق شود، track down می‌شود و مسیر از جدول routing حذف می‌شود.

soodar(config)# ip sla 1
soodar(config-ip-sla)# icmp-echo 192.168.1.1
soodar(config)# ip sla schedule 1 start-time now
soodar(config)# track 1 ip sla 1 reachability
soodar(config)# ip route 0.0.0.0/0 192.168.1.1 track 1

Service Policy با Track

مثال:

فرض کنید یک روتر داریم که Network A (192.168.1.0/24) و Network B (192.168.2.0/24) را به هم متصل می‌کند.

می‌خواهیم یک سیاست QoS روی ترافیکی که روتر را به سمت Network B ترک می‌کند اعمال کنیم، اما فقط در صورتی که اینترفیس به سمت Network A up و قابل دسترس باشد.

ابتدا، یک آبجکت Track برای پایش وضعیت اینترفیس به سمت Network A ایجاد می‌کنیم:

soodar(config)# track 1 interface ge1 line-protocol

این آبجکت Track وضعیت اینترفیس ge1 را پایش می‌کند و اگر line protocol اینترفیس up باشد، “up” می‌شود.

سپس، یک policy map QoS که اقداماتی را که باید روی ترافیک انجام شود تعریف می‌کند ایجاد می‌کنیم:

soodar(config)# class-map c1
soodar(config-cmap)# match any
soodar(config)# policy-map p1
soodar(config-pmap)# class c1
soodar(config-pmap-c)# police 100k

در این مثال، ما bandwidth موجود را به 100Kbps برای ترافیکی که با class “c1” match می‌شود محدود می‌کنیم.

در نهایت، policy map را روی اینترفیس خروجی به سمت Network B اعمال می‌کنیم و آبجکت Track که قبلاً ایجاد کردیم را مشخص می‌کنیم:

soodar(config)# interface ge2
soodar(config)# service-policy output p1 track 1

استفاده از اسکریپت‌ها با Track

اسکریپت‌ها می‌توانند با آبجکت‌های Track مرتبط شوند تا اقدامات خاصی هنگام تغییر وضعیت Track انجام شود. این اجازه می‌دهد اقدامات سفارشی بر اساس وضعیت Track اجرا شوند.

مثال:

در این مثال، می‌خواهیم اینترفیس را در OSPF به حالت passive تنظیم کنیم زمانی که latency بالای 150ms برود. ابتدا یک عملیات IP SLA برای اندازه‌گیری latency تعریف می‌کنیم:

soodar(config)# ip sla 12
soodar(config-ip-sla)# icmp-echo 192.168.30.14
soodar(config-ip-sla-echo)# threshold 80
soodar(config-ip-sla-echo)# timeout 150
soodar(config-ip-sla-echo)# frequency 10

سپس IP SLA را schedule می‌کنیم و یک reaction تعریف می‌کنیم که زمانی گرفته شود که latency برای 4 اجرای متوالی از threshold تجاوز کند:

soodar(config)# ip sla schedule 12 start-time now life forever
soodar(config)# ip sla reaction-configuration 12 react timeout threshold-type consecutive 4

سپس دو اسکریپت تعریف می‌کنیم که هنگام تغییر وضعیت Track اجرا می‌شوند. اسکریپت beyond_150 اینترفیس را در OSPF به حالت passive تنظیم می‌کند، و اسکریپت below_150 اینترفیس را به حالت active برمی‌گرداند:

soodar# edit script:beyond_150
# محتوای اسکریپت: enable; configure terminal; interface ge2; ip ospf passive;
soodar# edit script:below_150
# محتوای اسکریپت: enable; configure terminal; interface ge2; no ip ospf passive;

در نهایت، یک آبجکت Track ایجاد می‌کنیم که عملیات IP SLA را مانیتور می‌کند و اسکریپت‌ها را هنگام تغییر وضعیت اجرا می‌کند:

soodar(config)# track 14 ip sla 12 reaction timeout upscript script:beyond_150 downscript script:below_150

عیب‌یابی

برای عیب‌یابی Track، مهم است که ابتدا اطمینان حاصل کنید که آبجکت‌هایی که پایش می‌شوند به درستی کار می‌کنند. این می‌تواند شامل بررسی وضعیت اینترفیس‌ها، تأیید اینکه IP SLA probe ها در حال اجرا هستند و نتایج دقیقی گزارش می‌دهند، و تأیید اینکه جدول routing صحیح و به‌روز است باشد.

اگر آبجکت‌هایی که پایش می‌شوند به درستی کار می‌کنند، گام بعدی بررسی پیکربندی Track است. این شامل تأیید اینکه آبجکت‌های صحیح پایش می‌شوند و پیکربندی Track با پارامترهای صحیح به درستی پیکربندی شده است.

دستورات debugging مانند “debug track event” و “debug ip sla event” می‌توانند برای مشاهده اطلاعات لحظه‌ای درباره وضعیت Track و کمک به شناسایی مشکلات با پیکربندی Track یا آبجکت‌هایی که پایش می‌شوند استفاده شوند.

show track [(1-1000)] [json]

دستور show track برای نمایش وضعیت فعلی آبجکت‌های Track پیکربندی شده استفاده می‌شود. این دستور اطلاعاتی درباره آبجکت‌ها و وضعیت متناظر آن‌ها نمایش می‌دهد.

  • (1-1000): (اختیاری) ID آبجکت Track که باید اطلاعات آن نمایش داده شود را مشخص می‌کند. ID می‌تواند هر مقداری بین 1 تا 1000 باشد.

  • json: (اختیاری) خروجی را به فرمت JSON نمایش می‌دهد.

مثال:

soodar# show track
Track 12
  IP SLA 12 reaction
  Reaction is Up
    1 change[s], last change 00:00:09
  Latest operation return code: OK
  Tracked by:
    Static IP Routing
    Track List 13
Track 13
  List boolean or
  List boolean OR is Down
    2 change[s], last change 00:00:08
    object 12 Up
  Tracked by:
    Static IP Routing
show ip route track-table

این دستور برای نمایش اطلاعات پایش مسیر IP برای مسیرهای IP استفاده می‌شود. وضعیت فعلی پایش مسیر IP در روتر را نمایش می‌دهد و نشان می‌دهد کدام مسیرها و آبجکت‌های Track استفاده می‌شوند. این دستور تأیید می‌کند که پیکربندی پایش مسیر به‌درستی کار می‌کند.

مثال:

soodar# show ip route track-table
ip route 2.0.0.0/8 200.1.2.2 100 track 12  state is [up]
debug track event

این دستور برای نمایش پیام‌های debugging مرتبط با آبجکت‌های Track استفاده می‌شود.

نکات پیکربندی و بهترین رویه‌ها

  • پیش از وابسته کردن سرویس‌های حیاتی به Track، خود Track را با show track بررسی کنید تا از صحت وضعیت آن مطمئن شوید.

  • در سناریوهای Failover استاتیک، همواره مسیر جایگزین با Distance بالاتر تعریف کنید تا در صورت Down شدن Track، مسیر Backup به سرعت نصب شود.

  • در استفاده از Track List (AND/OR)، شرایط بازگشت به وضعیت عادی را بررسی کنید تا از ورود به حلقه‌های تغییر وضعیت سریع جلوگیری شود.

  • برای واکنش به کیفیت لینک (Latency، Jitter و …) ابتدا IP SLA مناسب را با آستانه درست پیکربندی کنید و سپس Track را به واکنش SLA متصل کنید.

سناریوهای نمونه

سناریو ۱: Failover اینترنت با IP SLA

در این کسب‌وکار دو لینک اینترنت داریم و می‌خواهیم تا زمانی که کیفیت لینک اصلی مناسب است از آن استفاده کنیم. اگر RTT بیشتر از ۱۵۰ میلی‌ثانیه شود، مسیر به لینک دوم منتقل شود.

soodar(config)# ip sla 10
soodar(config-ip-sla)# icmp-echo 8.8.8.8
soodar(config-ip-sla-echo)# frequency 30
soodar(config-ip-sla-echo)# timeout 150
soodar(config)# ip sla reaction-configuration 10 react rtt action-type logOnly threshold-type immediate threshold-value 150 150
soodar(config)# ip sla schedule 10 start-time now life forever

soodar(config)# track 10 ip sla 10 reaction rtt

soodar(config)# ip route 0.0.0.0/0 192.0.2.1 track 10
soodar(config)# ip route 0.0.0.0/0 198.51.100.1 150
  • تا زمانی که IP SLA موفق است، مسیر پیش‌فرض با Track نصب می‌شود.

  • به محض افزایش RTT و Down شدن Track، مسیر با Distance ۱۵۰ فعال می‌شود.

سناریو ۲: فعال‌سازی QoS وابسته به وضعیت لینک

در این سناریو می‌خواهیم سياسة QoS روی خروجی ge2 فقط زمانی فعال باشد که اینترفیس ge1 سالم است. اگر ge1 قطع شود، Policy از روی ge2 برداشته شود تا ترافیک به شکل عادی عبور کند.

soodar(config)# track 5 interface ge1 line-protocol downscript script:disable_qos upscript script:enable_qos

soodar# edit script:enable_qos
# enable; configure terminal; interface ge2; service-policy output QoS-GUARANTEE;

soodar# edit script:disable_qos
# enable; configure terminal; interface ge2; no service-policy output QoS-GUARANTEE;

soodar(config)# interface ge2
soodar(config-if)# service-policy output QoS-GUARANTEE track 5
  • Policy فقط وقتی اجرا می‌شود که Track در وضعیت Up باشد.

  • اسکریپت‌ها نیز اطمینان می‌دهند در صورت قطع لینک، Policy به‌صورت خودکار حذف شود.

سناریو ۳: Track ترکیبی برای سنجش دسترس‌پذیری سرویس

می‌خواهیم سرویس کاربردی زمانی Up محسوب شود که هم لینک اصلی فعال باشد و هم سرور Backup از طریق SLA قابل دسترس باشد.

soodar(config)# track 21 interface ge0 line-protocol
soodar(config)# ip sla 21
soodar(config-ip-sla)# icmp-echo 203.0.113.10
soodar(config)# ip sla schedule 21 start-time now life forever
soodar(config)# track 22 ip sla 21 reachability

soodar(config)# track 30 list boolean and
soodar(config-track)# object 21
soodar(config-track)# object 22

soodar(config)# ip route 10.10.10.0/24 203.0.113.1 track 30
  • اگر اینترفیس ge0 یا SLA هر کدام Down شوند، Track ۳۰ نیز Down می‌شود.

  • مسیر یا سرویس وابسته تنها وقتی فعال است که هر دو شرط برقرار باشد.