PIM

PIM مخفف Protocol Independent Multicast است. pimd از PIM-SM (PIM Sparse Mode) و همچنین IGMP v2 و v3 پشتیبانی می‌کند. PIM از VRF آگاه است و می‌تواند در محیط VRF برای انجام S,G multicast routing کار کند.

PIM یک پروتکل مسیریابی multicast است که برای توزیع ترافیک multicast در شبکه‌ها استفاده می‌شود. برخلاف مسیریابی unicast که هر بسته به یک مقصد مشخص ارسال می‌شود، مسیریابی multicast اجازه می‌دهد یک بسته به چندین مقصد به طور همزمان ارسال شود.

مفاهیم پایه

PIM Sparse Mode (PIM-SM)

PIM-SM یک پروتکل multicast است که در آن فرض می‌شود گروه‌های multicast نادر هستند و اعضای گروه در شبکه پراکنده هستند. در این حالت، تمام پیام‌های join به سمت یک RP (Rendezvous Point) هدایت می‌شوند.

Rendezvous Point (RP)

RP نقطه ملاقات در شبکه PIM-SM است. تمام روترها در شبکه PIM باید روی RP مشخص شده توافق داشته باشند. RP نقطه مرکزی است که:

  • پیام‌های join از دریافت‌کنندگان را دریافت می‌کند

  • پیام‌های register از منابع (sources) را دریافت می‌کند

  • درخت multicast را مدیریت می‌کند

Shortest Path Tree (SPT)

در PIM-SM، ترافیک ابتدا از طریق درخت مشترک (shared tree) که به RP متصل است ارسال می‌شود. سپس روترهای دریافت‌کننده می‌توانند به درخت کوتاه‌ترین مسیر (SPT) به منبع switch کنند تا بهینه‌سازی انجام شود.

Reverse Path Forwarding (RPF)

RPF مکانیزمی است که PIM برای جلوگیری از حلقه در ترافیک multicast استفاده می‌کند. PIM بسته‌های multicast را فقط از اینترفیس RPF قبول می‌کند.

Source Specific Multicast (SSM)

SSM اجازه می‌دهد که گروه‌های multicast فقط از منابع مشخص شده استفاده کنند. در SSM، نیازی به RP نیست و ترافیک مستقیماً از منبع به دریافت‌کنندگان ارسال می‌شود.

Any Source Multicast (ASM)

ASM حالت استاندارد PIM-SM است که در آن هر منبعی می‌تواند به یک گروه multicast ارسال کند و RP برای هماهنگی استفاده می‌شود.

پیکربندی PIM

تنظیم Rendezvous Point (RP)

برای استفاده از PIM، لازم است یک RP برای ارسال پیام‌های join پیکربندی شود. در حال حاضر تنها روش برای انجام این کار از طریق دستورات static RP است. تمام روترها در شبکه PIM باید روی این مقادیر توافق داشته باشند.

ip pim rp <A.B.C.D> <A.B.C.D/M>

این دستور RP را برای شبکه PIM پیکربندی می‌کند. اولین آدرس IP آدرس RP است و مقدار دوم پیشوند تطبیق محدوده گروه‌های پوشش داده شده است. این دستور VRF-aware است و برای پیکربندی در VRF، باید وارد submode VRF شوید.

soodar(config)# ip pim rp 192.168.1.100 224.0.0.0/4

می‌توانید چندین RP برای محدوده‌های مختلف گروه‌ها پیکربندی کنید:

soodar(config)# ip pim rp 192.168.1.100 224.0.0.0/4
soodar(config)# ip pim rp 192.168.1.200 239.0.0.0/8

برای پیکربندی RP در VRF، ابتدا وارد VRF mode شوید:

soodar(config)# vrf Customer-A
soodar(config-vrf)# ip pim rp 10.1.1.100 224.0.0.0/4
soodar(config-vrf)# exit

پارامترهای پیکربندی PIM

ip pim rp keep-alive-timer (1-65535)

مقدار timeout برای جریان S,G را از 1 تا 65535 ثانیه در RP تغییر می‌دهد. دوره keepalive پیش‌فرض برای KAT(S,G) 210 ثانیه است. با این حال، در RP، دوره keepalive باید حداقل Register_Suppression_Time باشد، یا RP ممکن است وضعیت (S,G) را قبل از رسیدن Null-Register بعدی timeout کند.

Note

در حال انتخاب مقدار کمتر از 31 ثانیه توجه داشته باشید که برخی پلتفرم‌های سخت‌افزاری نمی‌توانند داده‌های جاری را در بازه‌های بهتر از 30 ثانیه ببینند.

این دستور VRF-aware است.

soodar(config)# ip pim rp keep-alive-timer 180
ip pim register-accept-list PLIST

هنگامی که PIM یک بسته register از FHR (First Hop Router) دریافت می‌کند، آدرس منبع بسته با prefix-list مشخص شده مقایسه می‌شود. اگر نتیجه permit باشد، پردازش عادی ادامه می‌یابد و بسته register پذیرفته می‌شود. اگر نتیجه deny باشد، یک پیام register stop به FHR ارسال می‌شود و منبع اجازه register کردن نخواهد داشت.

soodar(config)# ip prefix-list allowed-sources permit 192.168.1.0/24
soodar(config)# ip pim register-accept-list allowed-sources
ip pim spt-switchover infinity-and-beyond [prefix-list PLIST]

در روتر آخرین hop (Last Hop Router - LHR)، به صورت پیش‌فرض PIM به درخت کوتاه‌ترین مسیر (SPT) switch می‌کند. اگر بخواهید روتر همیشه از درخت مشترک (shared tree) استفاده کند و به SPT switch نکند، این دستور را پیکربندی کنید. پارامتر اختیاری prefix-list می‌تواند برای کنترل انتخابی اینکه کدام گروه‌ها switch شوند یا نشوند استفاده شود.

soodar(config)# ip pim spt-switchover infinity-and-beyond

یا با prefix-list برای کنترل انتخابی:

soodar(config)# ip prefix-list spt-groups deny 239.100.0.0/16
soodar(config)# ip pim spt-switchover infinity-and-beyond prefix-list spt-groups
ip pim ecmp

اگر PIM برای یک RPF خاص چندین nexthop ECMP در دسترس داشته باشد، PIM باعث می‌شود جریان‌های S,G بین nexthop‌ها توزیع شوند. اگر این دستور مشخص نشود، اولین nexthop یافت شده استفاده می‌شود.

soodar(config)# ip pim ecmp
ip pim ecmp rebalance

اگر PIM از ECMP استفاده می‌کند و یک اینترفیس down شود، PIM را وادار می‌کند تمام جریان‌های S,G را در بین nexthop‌های باقی‌مانده rebalance کند.

soodar(config)# ip pim ecmp
soodar(config)# ip pim ecmp rebalance
ip pim join-prune-interval (1-65535)

بازه join/prune که PIM استفاده می‌کند را تغییر می‌دهد. زمان بر حسب ثانیه مشخص می‌شود.

Note

زمان پیش‌فرض 60 ثانیه است. اگر مقدار کوچکتر از 60 ثانیه وارد کنید، توجه داشته باشید که این می‌تواند و بر همگرایی در مقیاس تأثیر بگذارد.

soodar(config)# ip pim join-prune-interval 30
ip pim keep-alive-timer (1-65535)

مقدار timeout برای جریان S,G را از 1 تا 65535 ثانیه تغییر می‌دهد.

soodar(config)# ip pim keep-alive-timer 210
ip pim packets (1-255)

هنگام پردازش بسته‌های PIM از یک neighbor، این دستور تعداد بسته‌های ورودی را که در یک بار پردازش می‌شوند، مشخص می‌کند. قبل از پردازش دسته بعدی، این تعداد بسته پردازش می‌شود و سپس پردازنده به کار دیگری می‌پردازد. مقدار پیش‌فرض 3 بسته است. این دستور فقط در محیط‌های مقیاس بزرگ با تعداد زیاد بسته‌های کنترل PIM مفید است.

soodar(config)# ip pim packets 5
ip pim register-suppress-time (1-65535)

زمانی که PIM register suppression را فعال می‌کند را تغییر می‌دهد. هنگامی که register suppression فعال است، FHR ارسال پیام‌های register به RP را متوقف می‌کند تا از ترافیک غیرضروری جلوگیری شود. این زمان مشخص می‌کند که FHR برای چه مدتی باید از ارسال register خودداری کند.

soodar(config)# ip pim register-suppress-time 60
ip pim send-v6-secondary

هنگام ارسال بسته‌های PIM hello، به PIM بگویید که آدرس‌های secondary v6 را روی اینترفیس ارسال کند. این اطلاعات برای اجازه استفاده PIM از nexthop v6 در تصمیم خود برای RPF lookup استفاده می‌شود.

soodar(config)# ip pim send-v6-secondary
ip pim ssm prefix-list WORD

محدوده آدرس‌های گروه را از طریق prefix-list مشخص می‌کند که PIM را مجبور می‌کند برای این گروه‌ها از SSM (Source Specific Multicast) استفاده کند و هرگز SM (Sparse Mode) انجام ندهد. برای گروه‌هایی که در این prefix-list قرار دارند، نیازی به RP نیست و ترافیک مستقیماً از منبع به دریافت‌کنندگان ارسال می‌شود.

soodar(config)# ip prefix-list ssm-range permit 232.0.0.0/8
soodar(config)# ip pim ssm prefix-list ssm-range
ip multicast rpf-lookup-mode WORD

نحوه انجام RPF lookup در جدول routing zebra توسط PIM را تغییر می‌دهد. می‌توانید از گزینه‌های زیر استفاده کنید:

  • longer-prefix: RPF را در هر دو جدول با استفاده از longest prefix به عنوان match جستجو می‌کند

  • lower-distance: RPF را در هر دو جدول با استفاده از lower distance به عنوان match جستجو می‌کند

  • mrib-only: فقط در Multicast RIB جستجو می‌کند

  • mrib-then-urib: ابتدا در Multicast RIB سپس در Unicast RIB جستجو می‌کند و اولین یافت شده را برمی‌گرداند. این مقدار پیش‌فرض lookup است

  • urib-only: فقط در Unicast RIB جستجو می‌کند

soodar(config)# ip multicast rpf-lookup-mode longer-prefix

پیکربندی اینترفیس PIM

PIM interface commands به شما اجازه می‌دهند اینترفیس را به عنوان دریافت‌کننده یا اینترفیسی که می‌خواهید neighbor های PIM تشکیل دهید پیکربندی کنید. برای پیکربندی اینترفیس در VRF، ابتدا وارد VRF mode شوید و سپس اینترفیس را پیکربندی کنید.

فعال کردن PIM در اینترفیس

در کلیه اینترفیس‌هایی که برای multicast استفاده می‌شوند، چه اینترفیس‌هایی که داده ارسال می‌کنند و چه اینترفیس‌هایی که درخواست ترافیک multicast می‌دهند، باید PIM به شکل زیر فعال شود:

soodar(config)# int ge0
soodar(config-if)# ip pim

دستورات پیکربندی اینترفیس

ip pim active-active

فعال‌سازی پیکربندی PIM active-active را برای اینترفیس Vxlan روشن می‌کند. این دستور اگر قابلیت پیاده‌سازی MLAG ندارید، کاری انجام نمی‌دهد.

soodar(config-if)# ip pim active-active
ip pim bsm

به PIM بگویید که می‌خواهیم از این اینترفیس برای پردازش پیام‌های bootstrap استفاده کنیم. این به طور پیش‌فرض فعال است. فرم no این دستور برای محدود کردن پیام‌های bsm در این اینترفیس استفاده می‌شود.

soodar(config-if)# ip pim bsm
soodar(config-if)# no ip pim bsm  # غیرفعال کردن BSM
ip pim unicast-bsm

به PIM بگویید که می‌خواهیم به اینترفیس اجازه دهیم پیام‌های bootstrap unicast را پردازش کند. این به طور پیش‌فرض فعال است.

soodar(config-if)# ip pim unicast-bsm
ip pim drpriority (1-4294967295)

اولویت DR (Designated Router) را برای اینترفیس تنظیم می‌کند. روتری با بالاترین اولویت DR به عنوان DR انتخاب می‌شود. در صورت برابر بودن اولویت، روتری با بالاترین آدرس IP به عنوان DR انتخاب می‌شود. این دستور برای تأثیرگذاری بر انتخاب روتر به عنوان DR در یک شبکه LAN مفید است.

soodar(config-if)# ip pim drpriority 10

پیکربندی IGMP

IGMP (Internet Group Management Protocol) پروتکلی است که برای مدیریت عضویت در گروه‌های multicast در شبکه‌های محلی استفاده می‌شود.

فعال کردن IGMP در اینترفیس

در اینترفیس‌هایی که به کلاینت‌ها متصل هستند باید IGMP به شکل زیر فعال شود:

soodar(config)# int ge3
soodar(config-if)# ip igmp

دستورات IGMP

ip igmp generate-query-once [version (2-3)]

تولید یک IGMP query (نسخه 2 یا 3) را بلافاصله و بر اساس درخواست کاربر انجام می‌دهد. این دستور بدون توجه به timer IGMP general query موجود، یک query را تولید و ارسال می‌کند. اگر نسخه مشخص نشود، نسخه IGMP فعال روی اینترفیس استفاده می‌شود.

soodar(config-if)# ip igmp generate-query-once version 3
ip igmp watermark-warn (1-65535)

تنظیم آستانه هشدار (watermark) برای حد محدودیت گروه IGMP را پیکربندی می‌کند. هنگامی که تعداد گروه‌های IGMP فعال به مقدار پیکربندی شده برسد و گروه جدیدی اضافه شود، یک هشدار تولید می‌شود. این هشدار فقط یک بار تولید می‌شود تا از تولید مکرر هشدار جلوگیری شود. فرم no این دستور تولید هشدار را غیرفعال می‌کند.

soodar(config-if)# ip igmp watermark-warn 100

نمایش اطلاعات PIM

نمایش اطلاعات Neighbor های PIM

show ip pim neighbor

اطلاعات neighbor های PIM را نمایش می‌دهد.

soodar# show ip pim neighbor
Interface        Neighbor         Uptime/Expires    DR
ge0              192.168.1.1      01:23:45/00:01:20  Yes
ge1              192.168.2.1      00:45:30/00:01:20  No

نمایش اطلاعات RP

show ip pim [vrf NAME] rp-info [A.B.C.D/M] [json]

اطلاعات RP‌های پیکربندی شده روی این روتر را نمایش می‌دهد.

soodar# show ip pim rp-info
RP address       group/prefix-list   OIF               I am RP    Source   Group-Type
192.168.10.123   225.0.0.0/24        ge2               yes        Static   ASM
192.168.10.123   239.0.0.0/8         ge2               yes        Static   ASM

نمایش وضعیت PIM

show ip pim state

اطلاعات S,G‌های شناخته شده و اینترفیس ورودی و همچنین OIL و نحوه انتخاب آنها را نمایش می‌دهد.

soodar# show ip pim state
Interface         Source            Group            State          Uptime
ge0               192.168.1.10      239.1.1.1        Forward        00:15:30

نمایش Multicast Routes

show ip mroute [vrf NAME] [json]

اطلاعات مربوط به S,G mroutes نصب شده در kernel را نمایش می‌دهد.

soodar# show ip mroute
(192.168.1.10, 239.1.1.1)     Iif: ge0         Oifs: ge1 ge2     State: Forward
show ip mroute [vrf NAME] count [json]

اطلاعات مربوط به S,G mroutes و همچنین داده‌هایی درباره جریان بسته برای mroutes را نمایش می‌دهد.

soodar# show ip mroute count
(192.168.1.10, 239.1.1.1)     Packets: 1250    Bytes: 256000

نمایش اطلاعات اینترفیس PIM

show ip pim interface

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

soodar# show ip pim interface
Interface    State    Nbrs  Join   Prune   DR     DR Priority
ge0          Up       2     15     5       192.168.1.10  10
ge1          Up       1     8      3       192.168.1.20  5

نمایش اطلاعات RPF

show ip pim rpf

اطلاعات مربوط به S,G‌هایی که در حال استفاده هستند و اطلاعات RPF lookup آنها را نمایش می‌دهد.

soodar# show ip pim rpf
Source           RPF Interface    RPF Neighbor       Metric
192.168.1.10     ge0              192.168.1.1        10

عیب‌یابی PIM

دستورات Debug

debug pim events

دیباگ را برای رویدادهای سیستم PIM روشن می‌کند. به خصوص timer ها.

soodar(config)# debug pim events
debug pim packets

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

soodar(config)# debug pim packets
debug pim nht

دیباگ را برای tracking nexthop PIM روشن می‌کند. اطلاعات مربوط به RPF lookup و اطلاعات مربوط به زمانی که nexthop تغییر می‌کند را نمایش می‌دهد.

soodar(config)# debug pim nht
debug igmp

دیباگ را برای فعالیت پروتکل IGMP روشن می‌کند.

soodar(config)# debug igmp
debug mroute

دیباگ را برای تعامل PIM با MFC cache kernel روشن می‌کند.

soodar(config)# debug mroute

دستورات Clear

clear ip mroute

Multicast routes را reset می‌کند.

soodar# clear ip mroute
clear ip pim interfaces

اینترفیس‌های PIM را reset می‌کند.

soodar# clear ip pim interfaces
clear ip pim oil

OIL (Output Interface List) PIM را مجدداً اسکن می‌کند.

soodar# clear ip pim oil

سناریوهای عملی و کاربردی

در این بخش چند سناریوی عملی و کاربردی برای استفاده از PIM در محیط‌های واقعی بررسی می‌شود.

سناریو ۱: پیکربندی پایه PIM-SM برای ویدئو استریمینگ

در این سناریو، یک سازمان می‌خواهد سیستم ویدئو استریمینگ داخلی راه‌اندازی کند که از multicast استفاده می‌کند. تمام روترهای شبکه باید PIM را فعال کنند و روی یک RP مشترک توافق داشته باشند. منبع ویدئو ترافیک را به یک گروه multicast ارسال می‌کند و کلاینت‌ها با join کردن به این گروه، ترافیک را دریافت می‌کنند.

توپولوژی

Source Server (192.168.1.10)
        |
    Router1 (RP: 192.168.1.1)
     /   \
    /     \
Router2  Router3
  |        |
Client1  Client2

تنظیمات در Router1 (RP)

Router1(config)# ip pim rp 192.168.1.1 224.0.0.0/4
Router1(config)# ip pim keep-alive-timer 210
Router1(config)# ip pim join-prune-interval 60
Router1(config)# int ge0
Router1(config-if)# ip address 192.168.1.1/24
Router1(config-if)# ip pim
Router1(config-if)# int ge1
Router1(config-if)# ip address 10.1.1.1/24
Router1(config-if)# ip pim
Router1(config-if)# int ge2
Router1(config-if)# ip address 10.2.1.1/24
Router1(config-if)# ip pim

تنظیمات در Router2

Router2(config)# ip pim rp 192.168.1.1 224.0.0.0/4
Router2(config)# int ge0
Router2(config-if)# ip address 10.1.1.2/24
Router2(config-if)# ip pim
Router2(config-if)# int ge1
Router2(config-if)# ip address 172.16.1.1/24
Router2(config-if)# ip igmp

تنظیمات در Router3

Router3(config)# ip pim rp 192.168.1.1 224.0.0.0/4
Router3(config)# int ge0
Router3(config-if)# ip address 10.2.1.2/24
Router3(config-if)# ip pim
Router3(config-if)# int ge1
Router3(config-if)# ip address 172.16.2.1/24
Router3(config-if)# ip igmp

مشاهده وضعیت

Router1# show ip pim rp-info
RP address       group/prefix-list   OIF               I am RP    Source   Group-Type
192.168.1.1      224.0.0.0/4         ge0               yes        Static   ASM

Router1# show ip pim neighbor
Interface        Neighbor         Uptime/Expires    DR
ge1              10.1.1.2         00:05:30/00:01:20  Yes
ge2              10.2.1.2         00:05:30/00:01:20  Yes

Router2# show ip mroute
(192.168.1.10, 239.1.1.1)     Iif: ge0         Oifs: ge1     State: Forward

سناریو ۲: PIM با ECMP و Rebalance

در این سناریو، یک سازمان می‌خواهد ترافیک multicast را بین چندین لینک ECMP توزیع کند. در صورت down شدن یکی از لینک‌ها، ترافیک باید به طور خودکار rebalance شود.

Source Server
      |
   Router1
   /  |  \
  /   |   \
R2   R3   R4
  \   |   /
   \  |  /
    Router5

تنظیمات در Router1

Router1(config)# ip pim rp 10.1.1.1 224.0.0.0/4
Router1(config)# ip pim ecmp
Router1(config)# ip pim ecmp rebalance
Router1(config)# int ge0
Router1(config-if)# ip address 10.1.1.1/24
Router1(config-if)# ip pim
Router1(config-if)# int ge1
Router1(config-if)# ip address 10.2.1.1/24
Router1(config-if)# ip pim
Router1(config-if)# int ge2
Router1(config-if)# ip address 10.3.1.1/24
Router1(config-if)# ip pim
Router1(config-if)# int ge3
Router1(config-if)# ip address 10.4.1.1/24
Router1(config-if)# ip pim

مشاهده توزیع ECMP

Router1# show ip pim rpf
Source           RPF Interface    RPF Neighbor       Metric
192.168.1.10     ge1              10.2.1.2          10
192.168.1.10     ge2              10.3.1.2          10
192.168.1.10     ge3              10.4.1.2          10

Router1# show ip mroute
(192.168.1.10, 239.1.1.1)     Iif: ge1(ECMP)    Oifs: ge0    State: Forward

با فعال کردن ip pim ecmp rebalance، در صورت down شدن یکی از اینترفیس‌ها (مثلاً ge1)، تمام جریان‌های S,G که قبلاً روی ge1 بودند، به طور خودکار بین اینترفیس‌های باقی‌مانده (ge2 و ge3) rebalance می‌شوند. بدون این دستور، فقط جریان‌هایی که مستقیماً از ge1 استفاده می‌کردند تحت تأثیر قرار می‌گیرند.

سناریو ۳: PIM در محیط VRF (ISP Multicast VPN)

در این سناریو، یک ISP می‌خواهد سرویس multicast VPN برای چندین مشتری ارائه دهد. هر مشتری در VRF جداگانه‌ای قرار دارد و RP جداگانه‌ای دارد.

ISP Router
  ├── VRF: Customer-A (RP: 10.1.1.100)
  │     ├── Source: 10.1.2.10
  │     └── Clients: 10.1.3.0/24
  ├── VRF: Customer-B (RP: 10.2.1.100)
  │     ├── Source: 10.2.2.10
  │     └── Clients: 10.2.3.0/24
  └── VRF: Customer-C (RP: 10.3.1.100)
        ├── Source: 10.3.2.10
        └── Clients: 10.3.3.0/24

تنظیمات برای Customer-A

ابتدا وارد VRF mode می‌شویم و تنظیمات PIM را انجام می‌دهیم:

ISP-Router(config)# vrf Customer-A
ISP-Router(config-vrf)# ip pim rp 10.1.1.100 224.0.0.0/4
ISP-Router(config-vrf)# ip pim keep-alive-timer 210
ISP-Router(config-vrf)# ip pim join-prune-interval 60
ISP-Router(config-vrf)# exit

سپس اینترفیس‌ها را در VRF پیکربندی می‌کنیم:

ISP-Router(config)# vrf Customer-A
ISP-Router(config-vrf)# int ge0
ISP-Router(config-if)# ip address 10.1.1.100/24
ISP-Router(config-if)# ip pim
ISP-Router(config-if)# exit
ISP-Router(config-vrf)# int ge1
ISP-Router(config-if)# ip address 10.1.2.1/24
ISP-Router(config-if)# ip pim
ISP-Router(config-if)# exit
ISP-Router(config-vrf)# int ge2
ISP-Router(config-if)# ip address 10.1.3.1/24
ISP-Router(config-if)# ip igmp
ISP-Router(config-if)# exit

تنظیمات برای Customer-B

ISP-Router(config)# vrf Customer-B
ISP-Router(config-vrf)# ip pim rp 10.2.1.100 224.0.0.0/4
ISP-Router(config-vrf)# exit
ISP-Router(config)# vrf Customer-B
ISP-Router(config-vrf)# int ge3
ISP-Router(config-if)# ip address 10.2.1.100/24
ISP-Router(config-if)# ip pim
ISP-Router(config-if)# exit
ISP-Router(config-vrf)# int ge4
ISP-Router(config-if)# ip address 10.2.2.1/24
ISP-Router(config-if)# ip pim
ISP-Router(config-if)# exit
ISP-Router(config-vrf)# int ge5
ISP-Router(config-if)# ip address 10.2.3.1/24
ISP-Router(config-if)# ip igmp

استفاده از SSM برای گروه‌های خاص

برای استفاده از SSM برای محدوده خاصی از گروه‌ها در VRF:

ISP-Router(config)# ip prefix-list ssm-range permit 232.0.0.0/8
ISP-Router(config)# vrf Customer-A
ISP-Router(config-vrf)# ip pim ssm prefix-list ssm-range

نکته

prefix-list در سطح global تعریف می‌شود اما می‌تواند در VRF استفاده شود.

مشاهده وضعیت

ISP-Router# show ip pim vrf Customer-A rp-info
RP address       group/prefix-list   OIF               I am RP    Source   Group-Type
10.1.1.100       224.0.0.0/4         ge0               yes        Static   ASM

ISP-Router# show ip mroute vrf Customer-A
(10.1.2.10, 239.1.1.1)     Iif: ge1         Oifs: ge2     State: Forward

ISP-Router# show ip mroute vrf Customer-A count
(10.1.2.10, 239.1.1.1)     Packets: 5000    Bytes: 1024000

سناریو ۴: کنترل Register با prefix-list

در این سناریو، می‌خواهیم فقط منابع خاصی اجازه register داشته باشند تا امنیت شبکه بهبود یابد.

RP Router
     |
Source1 (192.168.1.10) - Allowed
Source2 (192.168.2.10) - Allowed
Source3 (192.168.3.10) - Denied

تنظیمات در RP

RP-Router(config)# ip prefix-list allowed-sources permit 192.168.1.0/24
RP-Router(config)# ip prefix-list allowed-sources permit 192.168.2.0/24
RP-Router(config)# ip pim register-accept-list allowed-sources
RP-Router(config)# ip pim rp 10.1.1.100 224.0.0.0/4

با این تنظیم:

  • منابع از 192.168.1.0/24 و 192.168.2.0/24 می‌توانند register کنند

  • منابع از 192.168.3.0/24 register stop دریافت می‌کنند

سناریو ۵: جلوگیری از SPT Switchover

در برخی موارد، ممکن است بخواهید ترافیک multicast همیشه از طریق shared tree (که به RP متصل است) عبور کند و به SPT switch نکند. این می‌تواند برای کنترل بهتر ترافیک مفید باشد.

Source → RP → Receivers

تنظیمات

برای جلوگیری از SPT switchover برای همه گروه‌ها:

Router(config)# ip pim spt-switchover infinity-and-beyond

برای جلوگیری از SPT switchover فقط برای گروه‌های خاص:

Router(config)# ip prefix-list no-spt-groups permit 239.100.0.0/16
Router(config)# ip pim spt-switchover infinity-and-beyond prefix-list no-spt-groups

با این تنظیم، ترافیک برای گروه‌های 239.100.0.0/16 همیشه از طریق shared tree عبور می‌کند.

نکات مهم در پیاده‌سازی

  1. انتخاب RP مناسب: RP باید در مکان مرکزی شبکه قرار گیرد تا بهینه‌سازی انجام شود. برای محیط‌های بزرگ، از multiple RP برای محدوده‌های مختلف گروه‌ها استفاده کنید.

  2. تنظیم timer ها: timer های keep-alive و join-prune را بر اساس نیاز شبکه تنظیم کنید. مقادیر کوچکتر همگرایی سریع‌تر اما ترافیک کنترل بیشتر ایجاد می‌کنند.

  3. استفاده از ECMP: برای محیط‌های با چندین مسیر برابر، ip pim ecmp و ip pim ecmp rebalance را فعال کنید تا load balancing و resiliency بهبود یابد.

  4. امنیت Register: با استفاده از ip pim register-accept-list فقط منابع مجاز را اجازه register دهید.

  5. SSM برای کاربردهای خاص: برای کاربردهایی که نیاز به منابع مشخص دارند، از SSM استفاده کنید تا نیاز به RP حذف شود.

  6. نظارت بر عملکرد: به طور منظم از show ip mroute count و show ip pim rpf برای نظارت بر عملکرد multicast استفاده کنید.

  7. عیب‌یابی: در صورت مشکل، از debug pim events و debug pim packets برای عیب‌یابی استفاده کنید.