Tech Hints – PIM Sparse-dense-mode

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.

Sparse-dense-mode PIM

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 11
R5(config)#access-list 55 permit 224.55.55.55
R5(config)#ip pim send-rp-announce Loopback0 scope 10 group-list 55
R9(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 v1
R9#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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s