News Update :

PIM Operation and Daemons

PIM Operation and Daemons

Both Linux and FreeBSD support PIM-SMv2 and PIM-DM natively, with the requirement of additional user-space PIM daemons (either USC pimd or XORP). PIM-SM is a sparse-mode shared-tree multicast routing protocol, whereas PIM-DM is a dense-mode distance-vector protocol. PIM is a complex protocol, and its discussion goes far beyond this quick introductory chapter. For more information, consult RFC 2362.

Lab 14-2: Native Linux and FreeBSD Multicast (PIM-SMv2) in Combination with Cisco PIM-SM-DM

For this lab, you must enable PIM-SMv2 in the Linux and FreeBSD kernel (see the configurations in Appendix A, "UNIX Kernel Configuration Files") and install the USC pimd. The pimd configuration file is /etc/pimd.conf. Just start pimd with the sequence pimd-c /etc/pimd.conf or use pimd -c /etc/pimd.conf -d all for extensive debugging output.

For this lab, pimd is running on callisto and castor; the Cisco configuration of scar is shown in Example 14-14. Note that ganymed still runs mrouted and remains connected to scar via the DVMRP tunnel. Therefore, scar acts as a DVMRP-PIM gateway, which is quite common when connecting legacy DVMRP domains to PIM domains. In this lab, you will learn about essential PIM operation, rendezvous points (RPs), and the PIM bootstrap mechanism router (BSR) for propagating RP sets.

CAUTION

An empty pimd.conf results in pimd not being available as a candidate RP (rendezvous point) and candidate BSR (bootstrap router).


NOTE

pimd can define scope zones that are similar to mrouted. This enables you to prevent certain multicast prefixes to be forwarded beyond a certain network boundary. (For example, add phyint eth0 scoped 239.0.0.0 masklen 8 to your pimd.conf file.)


Example 14-14. Scar IOS Multicast Configuration Featuring PIM and DVMRP
scar# show running-config

...

!

ip multicast-routing

ip multicast route-limit 100

!

interface Loopback0

ip address 10.0.0.1 255.255.255.255

!

interface Tunnel0

ip unnumbered Loopback0

ip pim sparse-dense-mode

ip igmp join-group 224.2.2.2

tunnel source 192.168.14.254

tunnel destination 192.168.1.254

tunnel mode dvmrp

!

interface Ethernet0

bandwidth 10000

ip address 192.168.7.254 255.255.255.0

no ip proxy-arp

ip pim sparse-dense-mode

ip load-sharing per-packet

no ip route-cache

ip igmp join-group 224.2.2.2

ip cgmp

no ip mroute-cache

media-type 10BaseT

random-detect

!

interface Ethernet1

bandwidth 10000

ip address 192.168.14.254 255.255.255.0

no ip proxy-arp

ip pim sparse-dense-mode

ip load-sharing per-packet

no ip route-cache

ip ospf network broadcast

ip igmp join-group 224.2.2.2

ip cgmp

no ip mroute-cache

media-type 10BaseT

random-detect

!

ip pim bsr-candidate Ethernet1 30 4

ip pim rp-candidate Ethernet1 group-list 11

!

access-list 11 permit 224.0.0.0 15.255.255.255

...


Examples 14-15, 14-16, and 14-17 demonstrate PIM output, debugging, and operation on Linux, Cisco IOS, and FreeBSD. It is worth mentioning that pimd operation creates its own interface (pimreg) on Linux systems (as shown in Example 14-15).

Example 14-15. pimd Results and Operation on Callisto
[root@callisto:~#] ifconfig

eth0 Link encap:Ethernet HWaddr 00:10:5A:D7:93:60

inet addr:192.168.14.1 Bcast:192.168.14.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:2211 errors:0 dropped:0 overruns:0 frame:0

TX packets:2826 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:252609 (246.6 Kb) TX bytes:314945 (307.5 Kb)

Interrupt:5 Base address:0xd800



eth1 Link encap:Ethernet HWaddr 52:54:05:E3:51:87

inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:27746 errors:0 dropped:0 overruns:0 frame:0

TX packets:32340 errors:0 dropped:0 overruns:0 carrier:0

collisions:490 txqueuelen:100

RX bytes:14612252 (13.9 Mb) TX bytes:4162570 (3.9 Mb)

Interrupt:9 Base address:0xd400



lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:717 errors:0 dropped:0 overruns:0 frame:0

TX packets:717 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:337307 (329.4 Kb) TX bytes:337307 (329.4 Kb)



pimreg Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00

UP RUNNING NOARP MTU:1472 Metric:1

RX packets:3 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:356 (356.0 b) TX bytes:0 (0.0 b)



[root@callisto:~#] netstat -g

IPv6/IPv4 Group Memberships

Interface RefCnt Group

--------------- ------ ---------------------

lo 1 ALL-SYSTEMS.MCAST.NET

eth0 1 ALL-ROUTERS.MCAST.NET

eth0 1 PIM-ROUTERS.MCAST.NET

eth0 1 ALL-SYSTEMS.MCAST.NET

eth1 1 ALL-ROUTERS.MCAST.NET

eth1 1 PIM-ROUTERS.MCAST.NET

eth1 1 NTP.MCAST.NET

eth1 1 ALL-SYSTEMS.MCAST.NET

eth1 1 224.2.2.2

pimreg 1 ALL-SYSTEMS.MCAST.NET



[root@callisto:~#] mtrace 192.168.7.7 192.168.14.1 224.2.2.2

Mtrace from 192.168.7.7 to 192.168.14.1 via group 224.2.2.2

Querying full reverse path...

0 ? (192.168.14.1)

-1 scar (192.168.14.254) PIM thresh^ 0 Reached RP/Core

Round trip time 2 ms; total ttl of 1 required.



Waiting to accumulate statistics...Results after 10 seconds:



Source Response Dest Overall Packet Statistics For Traffic From

* * * 224.0.1.32 Packet 192.168.7.7 To 224.2.2.2

v __/ rtt 1 ms Rate Lost/Sent = Pct Rate

192.168.14.254 scar Reached RP/Core

v \__ ttl 2 0 pps ?/0 0 pps

192.168.14.1 192.168.14.1

Receiver Query Source



[root@callisto:~#] pimd -c /etc/pimd.conf -d all

debug level 0xffffffff (dvmrp_detail,dvmrp_prunes,dvmrp_mrt,dvmrp_neighbors,dvmrp_timers

graphics/ccc.gif,igmp_proto,

igmp_timers,igmp_members,trace,timeout,pkt,interfaces,kernel,cache,rsrr,pim_detail

graphics/ccc.gif,pim_hello,pim_register,pim_join_prune,pim_bootstrap,pim_asserts,pim_cand_rp,

pim_routes,pim_timers,pim_rpf)

16:17:17.768 pimd version 2.1.0-alpha29.18 starting

16:17:17.768 Got 262144 byte send buffer size in 0 iterations

16:17:17.768 Got 262144 byte recv buffer size in 0 iterations

16:17:17.768 Got 262144 byte send buffer size in 0 iterations

16:17:17.768 Got 262144 byte recv buffer size in 0 iterations

16:17:17.769 Getting vifs from kernel

16:17:17.769 installing eth0 (192.168.14.1 on subnet 192.168.14) as vif #0-2 - rate=0

16:17:17.769 installing eth1 (192.168.1.1 on subnet 192.168.1) as vif #1-3 - rate=0

16:17:17.769 installing gre1 (10.10.10.1 -> 10.10.10.2) as vif #2-12 - rate=0

16:17:17.769 Getting vifs from /etc/pimd.conf

16:17:17.769 Local Cand-RP address is 192.168.14.1

16:17:17.769 Local Cand-RP priority is 30

16:17:17.769 Local Cand-RP advertisement period is 30 sec.

16:17:17.769 Local Cand-BSR address is 192.168.14.1

16:17:17.769 Local Cand-BSR priority is 3

16:17:17.770 Adding prefix 224.0.0.0/4

16:17:17.770 data_rate_limit is 50000 (bits/s)

16:17:17.770 data_rate_interval is 20 (seconds)

16:17:17.770 reg_rate_limit is 50000 (bits/s)

16:17:17.770 reg_rate_interval is 20 (seconds)

16:17:17.770 eth0 comes up; vif #0 now in service

16:17:17.770 SENT IGMP Membership Query from 192.168.14.1 to 224.0.0.1

16:17:17.770 SENT PIM v2 Hello from 192.168.14.1 to 224.0.0.13

16:17:17.770 eth1 comes up; vif #1 now in service

16:17:17.770 warning - sendto to 224.0.0.1 on 192.168.1.1: Invalid argument

16:17:17.771 warning - sendto from 192.168.1.1 to 224.0.0.13: Invalid argument

16:17:17.771 gre1 is DOWN; vif #2 out of service

16:17:17.771 register_vif0 comes up; vif #3 now in service



Virtual Interface Table

Vif Local-Address Subnet Thresh Flags Neighbors

0 192.168.14.1 192.168.14 1 DR NO-NBR

1 192.168.1.1 192.168.1 1 DR NO-NBR

2 10.10.10.1 10.10.10/30 1 DOWN

3 192.168.14.1 register_vif0 1



Multicast Routing Table

Source Group RP-addr Flags

--------------------------(*,*,RP)--------------------------

Number of Groups: 0

Number of Cache MIRRORs: 0



16:17:17.772 PIM HELLO holdtime from 192.168.14.254 is 105

16:17:17.772 SENT PIM v2 Hello from 192.168.14.1 to 224.0.0.13

16:17:17.773 sending PIM v2 Bootstrap from 192.168.14.1 to 192.168.14.254



Virtual Interface Table

Vif Local-Address Subnet Thresh Flags Neighbors

0 192.168.14.1 192.168.14 1 PIM 192.168.14.254

1 192.168.1.1 192.168.1 1 DR NO-NBR

2 10.10.10.1 10.10.10/30 1 DOWN

3 192.168.14.1 register_vif0 1





Virtual Interface Table

Vif Local-Address Subnet Thresh Flags Neighbors

0 192.168.14.1 192.168.14 1 PIM 192.168.14.254

1 192.168.1.1 192.168.1 1 DR NO-NBR

2 10.10.10.1 10.10.10/30 1 DOWN

3 192.168.14.1 register_vif0 1


Example 14-16. Cisco IOS PIM Statistics, Output and Debug
scar# show ip pim neighbor

PIM Neighbor Table

Neighbor Interface Uptime/Expires Ver DR

Address Prio/Mode

192.168.7.7 Ethernet0 00:03:53/00:01:22 v2 N /

192.168.14.1 Ethernet1 00:03:22/00:01:22 v2 N /



scar# show ip pim interface



Address Interface Ver/ Nbr Query DR DR

Mode Count Intvl Prior

192.168.7.254 Ethernet0 v2/SD 1 30 1 192.168.7.254

192.168.14.254 Ethernet1 v2/SD 1 30 1 192.168.14.254

10.0.0.1 Tunnel0 v2/DV 1 30 1 0.0.0.0



scar# show ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

L - Local, P - Pruned, R - RP-bit set, F - Register flag,

T - SPT-bit set, J - Join SPT, M - MSDP created entry,

X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

U - URD, I - Received Source Specific Host Report

Outgoing interface flags: H - Hardware switched

Timers: Uptime/Expires

Interface state: Interface, Next-Hop or VCD, State/Mode



(*, 224.0.1.111), 05:05:18/00:00:00, RP 192.168.14.254, flags: SJCL

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Tunnel0, Forward/Dvmrp, 04:49:28/00:00:00

Ethernet1, Forward/Sparse-Dense, 05:05:18/00:01:31

Ethernet0, Forward/Sparse-Dense, 05:05:18/00:02:11



(*, 224.0.1.40), 05:05:17/00:00:00, RP 0.0.0.0, flags: DCL

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Tunnel0, Forward/Dvmrp, 04:49:28/00:00:00

Ethernet0, Forward/Sparse-Dense, 05:05:17/00:00:00

Ethernet1, Forward/Sparse-Dense, 05:05:17/00:00:00



(*, 224.2.2.2), 05:05:18/00:00:00, RP 192.168.14.254, flags: SJCL

Incoming interface: Null, RPF nbr 0.0.0.0

Outgoing interface list:

Tunnel0, Forward/Dvmrp, 04:53:28/now

Ethernet1, Forward/Sparse-Dense, 05:05:18/00:01:33

Ethernet0, Forward/Sparse-Dense, 05:05:18/00:02:17



(192.168.2.7, 224.2.2.2), 00:00:06/00:02:53, flags: CLJ

Incoming interface: Tunnel0, RPF nbr 192.168.1.254, Dvmrp

Outgoing interface list:

Ethernet1, Forward/Sparse-Dense, 00:00:06/00:02:53

Ethernet0, Forward/Sparse-Dense, 00:00:06/00:02:53



scar# show ip pim bsr-router

PIMv2 Bootstrap information

This system is the Bootstrap Router (BSR)

BSR address: 192.168.14.254 (?)

Uptime: 04:49:04, BSR Priority: 4, Hash mask length: 30

Next bootstrap message in 00:00:59

Candidate RP: 192.168.14.254(Ethernet1)

Advertisement interval 60 seconds

Next advertisement in 00:00:55

Group acl: 11



scar# show ip pim rp

Group: 224.0.1.111, RP: 192.168.14.254, v2, next RP-reachable in 00:00:32

Group: 224.2.2.2, RP: 192.168.14.254, v2, next RP-reachable in 00:00:32



scar# show ip pim rp mapping

PIM Group-to-RP Mappings

This system is a candidate RP (v2)

This system is the Bootstrap Router (v2)

Group(s) 224.0.0.0/4

RP 192.168.14.254 (?), v2

Info source: 192.168.14.254 (?), via bootstrap

Uptime: 04:50:32, expires: 00:02:56



scar# show ip pim interface detail

Ethernet0 is up, line protocol is up

Internet address is 192.168.7.254/24

Multicast switching: process

Multicast packets in/out: 6474/0

Multicast boundary: not set

Multicast TTL threshold: 0

PIM: enabled

PIM version: 2, mode: sparse-dense

PIM DR: 192.168.7.254 (this system)

PIM neighbor count: 1

PIM Hello/Query interval: 30 seconds

PIM State-Refresh processing: enabled

PIM State-Refresh origination: disabled

PIM State-Refresh: 1 non-capable neighbor

PIM NBMA mode: disabled

PIM ATM multipoint signaling: disabled

PIM domain border: disabled

Multicast Tagswitching: disabled

Ethernet1 is up, line protocol is up

Internet address is 192.168.14.254/24

Multicast switching: process

Multicast packets in/out: 0/0

Multicast boundary: not set

Multicast TTL threshold: 0

PIM: enabled

PIM version: 2, mode: sparse-dense

PIM DR: 192.168.14.254 (this system)

PIM neighbor count: 1

PIM Hello/Query interval: 30 seconds

PIM State-Refresh processing: enabled

PIM State-Refresh origination: disabled

PIM State-Refresh: 1 non-capable neighbor

PIM NBMA mode: disabled

PIM ATM multipoint signaling: disabled

PIM domain border: disabled

Multicast Tagswitching: disabled

Tunnel0 is up, line protocol is up

Interface is unnumbered. Using address of Loopback0 (10.0.0.1)

Multicast switching: fast

Multicast packets in/out: 0/0

Multicast boundary: not set

Multicast TTL threshold: 0

PIM: enabled

PIM version: 2, mode: sparse-dense

PIM DR: 0.0.0.0 (this system)

PIM neighbor count: 0

PIM Hello/Query interval: 30 seconds

PIM State-Refresh processing: enabled

PIM State-Refresh origination: disabled

PIM NBMA mode: disabled

PIM ATM multipoint signaling: disabled

PIM domain border: disabled

Multicast Tagswitching: disabled



scar# debug ip pim

PIM debugging is on



scar# terminal monitor

05:01:34: PIM: Building Join/Prune message for 224.0.1.32

05:01:36: PIM: Received v2 Hello on Ethernet1 from 192.168.14.1

05:01:41: PIM: Received v2 Bootstrap on Ethernet1 from 192.168.14.1

05:01:42: PIM: Send periodic v2 Hello on Ethernet1

05:01:42: PIM: Send RP-reachability for 224.0.1.111 on Ethernet1

05:01:42: PIM: Send RP-reachability for 224.0.1.111 on Ethernet0

05:01:42: PIM: Send RP-reachability for 224.2.2.2 on Ethernet1

05:01:42: PIM: Send RP-reachability for 224.2.2.2 on Ethernet0

05:01:48: PIM: Send periodic v2 Hello on Ethernet0

05:01:48: PIM: Received v2 Hello on Ethernet0 from 192.168.7.7

05:01:53: PIM: Received v2 Bootstrap on Ethernet0 from 192.168.7.7

05:02:06: PIM: Received v2 Hello on Ethernet1 from 192.168.14.1

05:02:08: PIM: Received v2 Candidate-RP-Advertisement on Ethernet1 from 192.168.14.254

05:02:08: PIM: Update (224.0.0.0/4, RP:192.168.14.254), PIMv2

05:02:11: PIM: Received v2 Bootstrap on Ethernet1 from 192.168.14.1

05:02:12: PIM: Send periodic v2 Hello on Ethernet1

05:02:14: PIM: Building Join/Prune message for 224.2.2.2

05:02:16: PIM: Building Join/Prune message for 224.0.1.111

05:02:18: PIM: Received v2 Hello on Ethernet0 from 192.168.7.7

05:02:18: PIM: Send periodic v2 Hello on Ethernet0

05:02:23: PIM: Received v2 Bootstrap on Ethernet0 from 192.168.7.7

05:02:34: PIM: Building Join/Prune message for 224.0.1.32

05:02:36: PIM: Received v2 Hello on Ethernet1 from 192.168.14.1

05:02:41: PIM: Received v2 Bootstrap on Ethernet1 from 192.168.14.1

05:02:42: PIM: Send periodic v2 Hello on Ethernet1

05:02:48: PIM: Received v2 Hello on Ethernet0 from 192.168.7.7

05:02:48: PIM: Send periodic v2 Hello on Ethernet0

05:02:53: PIM: Received v2 Bootstrap on Ethernet0 from 192.168.7.7

05:03:06: PIM: Received v2 Hello on Ethernet1 from 192.168.14.1

05:03:08: PIM: Received v2 Candidate-RP-Advertisement on Ethernet1 from 192.168.14.254

05:03:08: PIM: Update (224.0.0.0/4, RP:192.168.14.254), PIMv2

05:03:11: PIM: Received v2 Bootstrap on Ethernet1 from 192.168.14.1

05:03:12: PIM: Send periodic v2 Hello on Ethernet1

05:03:12: PIM: Send RP-reachability for 224.0.1.111 on Ethernet1

05:03:12: PIM: Send RP-reachability for 224.0.1.111 on Ethernet0

05:03:13: PIM: Send RP-reachability for 224.2.2.2 on Ethernet1

05:03:13: PIM: Send RP-reachability for 224.2.2.2 on Ethernet0

05:03:14: PIM: Building Join/Prune message for 224.2.2.2

05:03:16: PIM: Building Join/Prune message for 224.0.1.111


Example 14-17. Castor pimd Operation and Debug Output
[root@castor:~#] netstat -g -f inet



Virtual Interface Table

Vif Thresh Rate Local-Address Remote-Address Pkts-In Pkts-Out

0 1 0 192.168.2.7 0 1040

1 1 0 192.168.7.7 0 990

2 1 0 192.168.80.1 0 0

4 1 0 192.168.2.7 0 0



IPv4 Multicast Forwarding Cache

Origin Group Packets In-Vif Out-Vifs:Ttls

192.168.2.7 224.2.2.2 48 0 1:1



[root@castor:~#] netstat -gs -f inet

IPv4 multicast forwarding:

3875 multicast forwarding cache lookups

1462 multicast forwarding cache misses

961 upcalls to mrouted

50 upcall queue overflows

0 upcalls dropped due to full socket buffer

952 cache cleanups

1462 datagrams with no route for origin

0 datagrams arrived with bad tunneling

0 datagrams could not be tunneled

18 datagrams arrived on wrong interface

0 datagrams selectively dropped

0 datagrams dropped due to queue overflow

0 datagrams dropped for being too large

[root@castor:~#] pimd -c /etc/pimd.conf -d all

debug level 0xffffffff (dvmrp_detail,dvmrp_prunes,dvmrp_mrt,dvmrp_neighbors,dvmrp_timers

graphics/ccc.gif,igmp_proto,

igmp_timers,igmp_members,trace,timeout,pkt,interfaces,kernel,cache,rsrr,pim_detail

graphics/ccc.gif,pim_hello,pim_register,pim_join_prune,pim_bootstrap,pim_asserts,pim_cand_rp,

pim_routes,pim_timers,pim_rpf)

16:25:02.309 pimd version 2.1.0-alpha29.18 starting

16:25:02.325 Got 232448 byte send buffer size in 8 iterations

16:25:02.325 Got 232448 byte recv buffer size in 8 iterations

16:25:02.325 Got 232448 byte send buffer size in 8 iterations

16:25:02.326 Got 232448 byte recv buffer size in 8 iterations

16:25:02.326 Getting vifs from kernel

16:25:02.327 installing xl0 (192.168.2.7 on subnet 192.168.2) as vif #0 - rate=0

16:25:02.327 installing ed0 (192.168.7.7 on subnet 192.168.7) as vif #1 - rate=0

16:25:02.327 installing vlan8 (192.168.80.1 on subnet 192.168.80) as vif #2 - rate=0

16:25:02.328 installing tun0 (10.10.10.2 -> 10.10.10.1) as vif #3 - rate=0

16:25:02.328 Getting vifs from /etc/pimd.conf

16:25:02.328 Local Cand-RP address is 192.168.80.1

16:25:02.328 Local Cand-RP priority is 20

16:25:02.329 Local Cand-RP advertisement period is 30 sec.

16:25:02.329 Local Cand-BSR address is 192.168.80.1

16:25:02.329 Local Cand-BSR priority is 5

16:25:02.329 Adding prefix 224.0.0.0/4

16:25:02.329 data_rate_limit is 50000 (bits/s)

16:25:02.329 data_rate_interval is 20 (seconds)

16:25:02.329 reg_rate_limit is 50000 (bits/s)

16:25:02.329 reg_rate_interval is 20 (seconds)

16:25:02.344 xl0 comes up; vif #0 now in service

16:25:02.344 SENT IGMP Membership Query from 192.168.2.7 to 224.0.0.1

16:25:02.345 SENT PIM v2 Hello from 192.168.2.7 to 224.0.0.13

16:25:02.345 ed0 comes up; vif #1 now in service

16:25:02.346 SENT IGMP Membership Query from 192.168.7.7 to 224.0.0.1

16:25:02.347 SENT PIM v2 Hello from 192.168.7.7 to 224.0.0.13

16:25:02.347 vlan8 comes up; vif #2 now in service

16:25:02.348 SENT IGMP Membership Query from 192.168.80.1 to 224.0.0.1

16:25:02.348 SENT PIM v2 Hello from 192.168.80.1 to 224.0.0.13

16:25:02.349 tun0 is DOWN; vif #3 out of service

16:25:02.349 register_vif0 comes up; vif #4 now in service



Virtual Interface Table

Vif Local-Address Subnet Thresh Flags Neighbors

0 192.168.2.7 192.168.2 1 DR NO-NBR

1 192.168.7.7 192.168.7 1 DR NO-NBR

2 192.168.80.1 192.168.80 1 DR NO-NBR

3 10.10.10.2 10.10.10/29 1 DOWN

4 192.168.2.7 register_vif0 1



Multicast Routing Table

Source Group RP-addr Flags

--------------------------(*,*,RP)--------------------------

Number of Groups: 0

Number of Cache MIRRORs: 0



16:25:02.354 PIM HELLO holdtime from 192.168.7.254 is 105

16:25:02.355 SENT PIM v2 Hello from 192.168.7.7 to 224.0.0.13

16:25:02.355 sending PIM v2 Bootstrap from 192.168.7.7 to 192.168.7.254



Virtual Interface Table

Vif Local-Address Subnet Thresh Flags Neighbors

0 192.168.2.7 192.168.2 1 DR NO-NBR

1 192.168.7.7 192.168.7 1 PIM 192.168.7.254

2 192.168.80.1 192.168.80 1 DR NO-NBR

3 10.10.10.2 10.10.10/29 1 DOWN

4 192.168.2.7 register_vif0 1



16:25:02.953 Cache miss, src 192.168.1.1, dst 224.2.2.2, iif 0

16:25:02.964 Cache miss, src 192.168.2.7, dst 224.2.2.2, iif 0

16:25:02.964 create group entry, group 224.2.2.2

16:25:04.823 Cache miss, src 192.168.1.1, dst 224.2.2.2, iif 0

16:25:05.094 Cache miss, src 192.168.2.7, dst 224.2.2.2, iif 0

16:25:05.095 create group entry, group 224.2.2.2

16:25:06.433 Cache miss, src 192.168.1.1, dst 224.2.2.2, iif 0

16:25:06.703 Cache miss, src 192.168.2.7, dst 224.2.2.2, iif 0

16:25:06.704 create group entry, group 224.2.2.2

16:25:06.991 create group entry, group 224.0.1.1


Example 14-18 demonstrates bidirectional operation of the mtest utility package, which is available at the same place as mrouted. It consists of two tools: a sender part (msend) and a receiver part (mrcv). mtest is useful to test multicast operation between two distinguished hosts and interfaces. Often it is not quite clear to what interface multicast applications bind, which often results in problems. Finally, if all other diagnosis fails and all friends abandon you, a sniffer is always your last (or first) best hope.

Example 14-18. mtest Utilities (msend/mrcv)
[root@castor:~#] msend

multicast sending test program; enter ? for list of commands

?

i i.i.i.i - set the multicast interface

t ttl_value - set the ttl_value for multicast

z min-max - set packet size range in byte

v min-max - set inter-packet interval range in second

ex. v 0.5-2 or v 1-1 for fixed interval

a rate - set packet sending rate

d type #pkts_or_#sec - set communication duration

type=1 set #pkt ex. d 1 20

type=2 set #sec ex. d 0 25

s g.g.g.g port# - send to IP multicast group

q - quit



i 192.168.7.7

interface set

t 5

ttl set to 5

s 224.2.2.2 34000

Sending... for 10 packets

Sent pkt # 0, for mgroup 224.2.2.2 port -31536, length=1006, interval=982421 microseconds

Sent pkt # 1, for mgroup 224.2.2.2 port -31536, length=1006, interval=982421 microseconds

Sent pkt # 2, for mgroup 224.2.2.2 port -31536, length=1006, interval=982421 microseconds

Sent pkt # 3, for mgroup 224.2.2.2 port -31536, length=1006, interval=982421 microseconds



[root@callisto:~#] mrcv

multicast receiving test program; enter ? for list of commands

?

j g.g.g.g i.i.i.i - join IP multicast group

l g.g.g.g i.i.i.i - leave IP multicast group

r g.g.g.g port# - receive from multicast interface

q - quit



j 224.2.2.2 192.168.14.1

group joined

r 224.2.2.2 34000

Bind socket

Receive pkt # 0, for mgroup 224.2.2.2 port 34000, length=1006, t_sec=134744073,

graphics/ccc.gif t_usec=133744072

Receive pkt # 1, for mgroup 224.2.2.2 port 34000, length=1006, t_sec=134744073,

graphics/ccc.gif t_usec=133744072

Receive pkt # 2, for mgroup 224.2.2.2 port 34000, length=1006, t_sec=134744073,

graphics/ccc.gif t_usec=133744072

Receive pkt # 3, for mgroup 224.2.2.2 port 34000, length=1006, t_sec=134744073,

graphics/ccc.gif t_usec=133744072


Example 14-19 offers a configuration scenario for enabling multicast on a Linux GRE tunnel interface in case this is required for some topological reason.

Example 14-19. Callisto GRE Multicast Tunnel Configuration
[root@callisto:~#] modprobe ip_gre

[root@callisto:~#] ip tunnel add gre1 mode gre remote 192.168.2.7 local 192.168.1.1 ttl

graphics/ccc.gif 127 dev eth0


[root@callisto:~#] ip addr add 10.10.10.1/30 peer 10.10.10.2/30 dev gre1

[root@callisto:~#] ip link set gre1 up multicast on


Lab 14-3: XORP PIM Operation

The XORP multicast architecture currently consists of the MLD6/IGMP and the PIM-SM elements. They are not yet integrated in the router manager (rtrmgr), but you can use them in a standalone way as demonstrated in this lab. At the time of this writing, the milestone release 1.0 was not yet available. That should simplify and consolidate things. This lab features the same lab as shown previously with the exception of callisto running XORP PIM-SM instead of the USC pimd. XORP PIM-SM works with Linux 2.4.x and FreeBSD > 4.8 because of the availability of PIM hooks in the kernel.

To start PIM-SM (standalone mode), follow these steps:

  1. cd to the pim subdirectory of your XORP source distribution.

  2. Edit ./configure_pim

  3. Execute ./test_pim &

  4. Execute ./configure_pim

  5. Access the PIM-SM CLI by typing telnet localhost 12000

Example 14-20 introduces the XORP PIM-SM command-line interface and IGMP and PIM-SM relevant output.

Example 14-20. XORP PIM-SM Command-Line Interface
[root@callisto:~#] telnet localhost 12000

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

Escape character is '^]'.

Welcome, and may the Xorp be with you!



Xorp> show ?

Possible completions:

igmp Display information about IGMP

log Display information about log files and users

mfea Display information about MFEA

pim Display information about PIM



Xorp> show igmp ?

Possible completions:

group Display information about IGMP group membership

interface Display information about IGMP configured interfaces



Xorp> show igmp group

Interface Group Source Last Reported Timeout

eth0 224.0.0.2 0.0.0.0 192.168.14.1 244

eth0 224.0.0.13 0.0.0.0 192.168.14.1 242

eth0 224.0.1.111 0.0.0.0 192.168.14.254 247

eth0 224.2.2.2 0.0.0.0 192.168.14.254 244

eth1 224.0.0.2 0.0.0.0 192.168.1.1 244

eth1 224.0.0.13 0.0.0.0 192.168.1.1 241



Xorp> show igmp interface

Interface State Querier Timeout Version Groups

eth0 UP 192.168.14.1 None 2 4

eth1 UP 192.168.1.1 None 2 2

ipsec0 DISABLED 0.0.0.0 None 2 0

ipsec1 DISABLED 0.0.0.0 None 2 0

ipsec2 DISABLED 0.0.0.0 None 2 0

ipsec3 DISABLED 0.0.0.0 None 2 0

lo DISABLED 0.0.0.0 None 2 0

register_vif DISABLED 0.0.0.0 None 2 0

pimreg DISABLED 0.0.0.0 None 2 0



Xorp> show mfea ?

Possible completions:

dataflow Display information about MFEA dataflow filters

interface Display information about MFEA interfaces

mrib Display MRIB information inside MFEA



Xorp> show mfea interface

Interface State Vif/PifIndex Addr Flags

eth0 UP 0/2 192.168.14.1 MULTICAST BROADCAST KERN_UP

eth1 UP 1/3 192.168.1.1 MULTICAST BROADCAST KERN_UP

ipsec0 DISABLED 2/4 192.168.1.1

ipsec1 DISABLED 3/5

ipsec2 DISABLED 4/6

ipsec3 DISABLED 5/7

lo DISABLED 6/1 127.0.0.1 LOOPBACK KERN_UP

register_vif UP 7/2 192.168.14.1 PIM_REGISTER KERN_UP

pimreg DISABLED 8/9 KERN_UP



Xorp> show mfea mrib

DestPrefix NextHopRouter VifName VifIndex MetricPreference Metric

0.0.0.0/0 192.168.1.254 eth1 1 100 100

10.0.0.1/32 192.168.1.254 eth1 1 100 100

127.0.0.0/8 0.0.0.0 lo 6 100 100

192.168.1.0/24 0.0.0.0 eth1 1 100 100

192.168.2.0/24 192.168.1.254 eth1 1 100 100

192.168.7.0/24 192.168.1.254 eth1 1 100 100

192.168.14.0/24 0.0.0.0 eth0 0 100 100

192.168.45.0/24 0.0.0.0 eth1 1 100 100

192.168.80.0/24 192.168.1.254 eth1 1 100 100

211.11.117.0/24 192.168.1.254 eth1 1 100 100



Xorp> show pim mrib

DestPrefix NextHopRouter VifName VifIndex MetricPreference Metric

0.0.0.0/0 192.168.1.254 eth1 1 100 100

10.0.0.1/32 192.168.1.254 eth1 1 100 100

127.0.0.0/8 0.0.0.0 lo 6 100 100

192.168.1.0/24 0.0.0.0 eth1 1 100 100

192.168.2.0/24 192.168.1.254 eth1 1 100 100

192.168.7.0/24 192.168.1.254 eth1 1 100 100

192.168.14.0/24 0.0.0.0 eth0 0 100 100

192.168.45.0/24 0.0.0.0 eth1 1 100 100

192.168.80.0/24 192.168.1.254 eth1 1 100 100

211.11.117.0/24 192.168.1.254 eth1 1 100 100



Xorp> show pim neighbors

Interface DRpriority NeighborAddr V Mode Holdtime Timeout

eth0 1 192.168.14.254 2 Sparse 105 102

Xorp> show pim rps

RP Type Pri Holdtime Timeout ActiveGroups GroupPrefix

192.168.14.254 bootstrap 0 208 182 2 224.0.0.0/4



Xorp> show pim ?

Possible completions:

bootstrap Display information about PIM bootstrap routers

interface Display information about PIM configured interfaces

join Display information about PIM groups

mfc Display information about PIM Multicast Forwarding Cache

mrib Display MRIB information inside PIM

neighbors Display information about PIM neighbors

rps Display information about PIM RPs

scope Display information about PIM scope zones



Xorp> show pim bootstrap

Active zones:

BSR Pri LocalAddress Pri State Timeout SZTimeout

192.168.14.254 4 192.168.1.1 1 Candidate 105 -1

Expiring zones:

BSR Pri LocalAddress Pri State Timeout SZTimeout

Configured zones:

BSR Pri LocalAddress Pri State Timeout SZTimeout

192.168.1.1 1 192.168.1.1 1 Init -1 -1



Xorp> show pim interface

Interface State Mode V PIMstate Priority DRaddr Neighbors

eth0 UP Sparse 2 NotDR 1 192.168.14.254 1

eth1 UP Sparse 2 DR 1 192.168.1.1 0

ipsec0 DISABLED Sparse 2 NotDR 1 0.0.0.0 0

ipsec1 DISABLED Sparse 2 NotDR 1 0.0.0.0 0

ipsec2 DISABLED Sparse 2 NotDR 1 0.0.0.0 0

ipsec3 DISABLED Sparse 2 NotDR 1 0.0.0.0 0

lo DISABLED Sparse 2 NotDR 1 0.0.0.0 0

register_vif UP Sparse 2 NotDR 1 0.0.0.0 0

pimreg DISABLED Sparse 2 NotDR 1 0.0.0.0 0



Xorp> show pim join

Group Source RP Flags

224.0.1.111 0.0.0.0 192.168.14.254 WC

Upstream interface (RP): eth0

Upstream MRIB next hop (RP): 192.168.14.254

Upstream RPF'(*,G): 192.168.14.254

Upstream state: NotJoined

Join timer: -1

Local receiver include WC: O........

Joins RP: .........

Joins WC: .........

Join state: .........

Prune state: .........

Prune pending state: .........

I am assert winner state: .........

I am assert loser state: .........

Assert winner WC: .........

Assert lost WC: .........

Assert tracking WC: .........

Could assert WC: .........

I am DR: .O.......

Immediate olist RP: .........

Immediate olist WC: .........

Inherited olist SG: .........

Inherited olist SG_RPT: .........

PIM include WC: .........

224.2.2.2 0.0.0.0 192.168.14.254 WC

Upstream interface (RP): eth0

Upstream MRIB next hop (RP): 192.168.14.254

Upstream RPF'(*,G): 192.168.14.254

Upstream state: NotJoined

Join timer: -1

Local receiver include WC: O........

Joins RP: .........

Joins WC: .........

Join state: .........

Prune state: .........

Prune pending state: .........

I am assert winner state: .........

I am assert loser state: .........

Assert winner WC: .........

Assert lost WC: .........

Assert tracking WC: .........

Could assert WC: .........

I am DR: .O.......

Immediate olist RP: .........

Immediate olist WC: .........

Inherited olist SG: .........

Inherited olist SG_RPT: .........

PIM include WC: .........

Share this Article on :

0 comments:

Post a Comment

 

© Copyright Cisco elearning 2010 -2011 | Design by Herdiansyah Hamzah | Published by Borneo Templates | Powered by Blogger.com.