Inden vi begynder skal vi lige have lidt småting på plads.
PIM er ikke en routnings protocol i sig selv og kræver at du allerede kører en fuld konvergeret IGP i dit netværk.
Til at starte med skal vi enable ip multicast routing på alle routere
R1#conf t
R1(config)#ip multicast-routing
Så skal vi konfigurer sparse-dense pim på alle de interfaces vi vil have med i multicast routing domainet.
R1(config)#int fastEthernet 0/0
R1(config-if)#ip pim sparse-dense-mode
R1(config-if)#int fastEthernet 0/1
R1(config-if)#ip pim sparse-dense-mode
R1(config-if)#int lo0
R1(config-if)#ip pim sparse-dense-mode
Når dette er gjort er vi klar til at bygge vores multicast net. Hver multicast gruppe skal have et RP (Rendezvous Point) som er den bygger sit multicast træ udfra. Bemærk at loopback adresserne har 200.0.0.X. Vi har:
Gruppe:RP
224.11.11.11:R1
224.55.55.55:R5
224.99.99.99:R9
De konfigureres som flg.:
R1(config)#access-list 11 permit 224.11.11.11
R1(config)#ip pim send-rp-announce Loopback0 scope 10 group-list 11R5(config)#access-list 55 permit 224.55.55.55
R5(config)#ip pim send-rp-announce Loopback0 scope 10 group-list 55R9(config)#access-list 99 permit 224.99.99.99
R9(config)#ip pim send-rp-announce Loopback0 scope 10 group-list 99
Nu begynder de 3 routere så at announce ud på 224.0.1.39 at de er RP for deres gruppe angivet i access-listen. Men vi mangler stadig lige lidt. Vi mangler at konfigurere en mapping agent. En mapping agent skal forstås som en database over hvilke grupper der har hvilke RP’s og dens job er så at fortælle det eksisterende netværk det via gruppen 224.0.1.40.
Vi bruger R2 som mapping agent.
R2(config)#ip pim send-rp-discovery Loopback0 scope 30
Så skulle vi faktisk være klar til at køre multicast 🙂
List show og debug på R9
Her først kigger vi på rp mappings inden vi har konfigureret R2 som mapping agent
R9#sh ip pim rp mapping
PIM Group-to-RP Mappings
This system is an RP (Auto-RP)
Så prøver vi at lave en
R9#debug ip pim autorp
*Auto-RP(0): Build RP-Announce for 200.0.0.9, PIMv2/v1, ttl 10, ht 181
*Auto-RP(0): Build announce entry for (224.99.99.99/32)
*Auto-RP(0): Send RP-Announce packet on FastEthernet0/0
Så prøver vi at enable vores mapping agent på R2 og kigger stadig på debug output
*: Auto-RP(0): Received RP-discovery, from 200.0.0.2, RP_cnt 1, ht 181
*: Auto-RP(0): Added with (224.55.55.55/32, RP:200.0.0.5), PIMv2 v1
*: Auto-RP(0): Added with (224.11.11.11/32, RP:200.0.0.1), PIMv2 v1
*: Auto-RP(0): Added with (224.99.99.99/32, RP:200.0.0.9), PIMv2 v1R9#show ip pim rp mapping
PIM Group-to-RP Mappings
This system is an RP (Auto-RP)Group(s) 224.11.11.11/32
RP 200.0.0.1 (?), v2v1
Info source: 200.0.0.2 (?), elected via Auto-RP
Uptime: 00:16:48, expires: 00:02:34
Group(s) 224.55.55.55/32
RP 200.0.0.5 (?), v2v1
Info source: 200.0.0.2 (?), elected via Auto-RP
Uptime: 00:16:59, expires: 00:02:34
Group(s) 224.99.99.99/32
RP 200.0.0.9 (?), v2v1
Info source: 200.0.0.2 (?), elected via Auto-RP
Uptime: 00:16:26, expires: 00:02:33
Husk at PIM benytter DR ligesom OSPF. Så hvis du har et NBMA netværk så kunne det være en idé at sætte din mapping agent samme sted som din DR.
Hvis du vælger at kigge på sh ip mroute, skal du være opmærksom på at der kun er routes for de aktive grupper som routeren skal behandle data for. Dvs. Hvis vi i vores tilfælde kigger på R9
R9#sh ip mroute sparse
(*, 224.99.99.99), 00:02:30/00:02:59, RP 200.0.0.9, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Multilink1, Forward/Sparse-Dense, 00:02:30/00:02:59
Så er der ingen info om de 2 andre grupper. Hvis vi så fx. tilmelder et af vores interfaces til de grupper
R9(config)#interface loopback 0
R9(config-if)#ip igmp join-group 224.11.11.11
R9(config-if)#ip igmp join-group 224.55.55.55
R9#sh ip mroute sparse
(*, 224.11.11.11), 00:00:08/00:02:54, RP 200.0.0.1, flags: SJCL
Incoming interface: Multilink1, RPF nbr 150.50.6.6
Outgoing interface list:
Loopback0, Forward/Sparse-Dense, 00:00:08/00:02:54(*, 224.55.55.55), 00:00:05/00:02:54, RP 200.0.0.5, flags: SJCL
Incoming interface: Multilink1, RPF nbr 150.50.6.6
Outgoing interface list:
Loopback0, Forward/Sparse-Dense, 00:00:05/00:02:54(*, 224.99.99.99), 00:04:03/00:03:22, RP 200.0.0.9, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Multilink1, Forward/Sparse-Dense, 00:04:03/00:03:22
Så ser det anderledes ud.