News Update :

mrouted and DVMRP

For direct communication of two multicast participants on the same subnet, no multicast routing protocols are necessary; IGMP completely suffices. As soon as the multicast traffic traverses intermediate routers, multicast routing (signaling) becomes mandatory to forward this traffic successfully. Static multicast routing entries do not scale at all. mrouted is the dominant UNIX multicast routing daemon, currently version 3.9-beta3, and was developed by Steve Deering and Bill Fenner. This tool compiles well on all platforms; however, it requires a patch on Linux gateways and a change to the Makefile of older OpenBSD versions (as described later in this chapter).

mrouted is based on DVMRP and consists of three binaries: mrouted, map-mbone, and mrinfo (which is an ancillary tool). In contrast, DVMRP is a protocol for densely distributed multicast subscribers in high-bandwidth LAN environments and uses the flood-and-prune or implicit join method. For a detailed explanation of the protocol, consult RFC 1075.

mrouted and the MBONE

Although Cisco does not natively support DVMRP, mrouted cooperates with the Cisco IOS DVMRP interoperability implementation of PIM. That is why PIM is configured in all the following labs involving Cisco routers.

MBONE is the former multicast testbed of the Internet research community. It is based on DVMRP and has more or less been replaced by PIM-based modern architectures such as the European research network GEANT, the M6BONE, or the Internet2 "Abilene" Project.

MBONE tunneling was an approach analogous to IPv6 tunnel connections to the 6BONE (IPv6 backbone). An Internet (isolated multicast islands) not yet or only partially capable of native multicast routing delivers unicast tunnel traffic between multicast realms. The same is true for IPv6. Not all Internet routers can deal with IPv6 yet; therefore, the traffic is encapsulated into IPv4 headers and delivered that way. Essentially, these are either IP-IP or Generic Routing Encapsulation (GRE) tunnels. mrouted provides its own tunnel setup (IP-IP) and facilitates DVMRP. DVMRP is plagued by the usual scalability and convergence problems of all distance-vector routing protocols. Figure 14-2 illustrates the traditional MBONE architecture.

Although MBONE is outdated and not maintained anymore, mrouted and DVMRP still are a viable solution for smaller networks based on UNIX gateways. mrouted includes native IP-IP tunnel support (as long as it is supported by the underlying operating system).

NOTE

mtrace and mstat are additional useful tools that are available on some systems to debug multicast problems. The mrouted default configuration file is /etc/mrouted.conf. Consult the excellent manual page and command-line help for further information, especially how to send UNIX signals to the daemon to dump status information (SIGUSR1, SIGUSR2).


Cisco IOS architecture supports DVMRP only for backward compatibility for mrouted gateways and MBONE tunnel connections. If you want to hook up to the MBONE, contact your Internet service provider (ISP) or research networks in your vicinity to provide you with a DVMRP tunnel neighbor address.

Lab 14-1: DVMRP via mrouted

This lab facilitates the topology in Figure 14-3, in which we observe the DVMRP dialogue between all four multicast gateways and one redundant DVMRP tunnel between ganymed and scar (Example 14-4). The threshold in Example 14-4 is DVMRP's way of implementing TTL scoping, as described earlier in this chapter. The scar configuration, as shown in Example 14-3, has not changed.

Note that some operating systems require a default routing entry for multicast prefixes, such as route add -net 224.0.0.0 netmask 240.0.0.0 eth0, to deal with multicast groups properly when not using a multicast routing daemon such as mrouted or pimd.

NOTE

To be able to compile mrouted from sources on older OpenBSD versions, you must add-DRAW_OUTPUT_IS_RAW to the CFLAGS line in the Makefile, as follows: CFLAGS= -O ${MCAST_INCLUDE} ${SNMPDEF} ${RSRRDEF} -DRAW_OUTPUT_IS_RAW. Thanks to Bill Fenner for pointing this out.


CAUTION

When configuring mrouted tunnels on Linux, do not forget to load the tunnel kernel module (insmod ipip).


Example 14-4. mrouted Tunnel Setup on Ganymed
[root@ganymed:~#] cat /etc/mrouted.conf

#

# DVMRP IP-IP tunnel ganymed <--> scar with a multicast rate_limit of 500 kbps

tunnel 192.168.1.254 192.168.14.254 metric 1 threshold 64 rate_limit 500


If you require DVMRP tunnels from a Linux gateway, mrouted creates DVMRP interfaces automatically at runtime (Example 14-5). Examples 14-6 through 14-9 show various multicast and DVMRP-related commands, debugging of, and output for the UNIX multicast gateways. Finally, Example 14-10 shows sniffer output of the DVMRP protocol operation.

Example 14-5. Automatic Linux DVMRP Tunnel Interface Creation
[root@callisto:~#] ifconfig

...

dvmrp2 Link encap:IPIP Tunnel HWaddr

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1480 Metric:1

RX packets:1 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:76 (76.0 b) TX bytes:0 (0.0 b)

...


Example 14-6. Scar DVMRP Operation
scar# show ip mroute summary

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), 00:19:03/00:00:00, RP 0.0.0.0, OIF count: 3, flags: DCL

(*, 224.0.1.40), 00:19:03/00:00:00, RP 0.0.0.0, OIF count: 3, flags: DCL

(*, 224.2.2.2), 00:19:03/00:00:00, RP 0.0.0.0, OIF count: 3, flags: DCL

(192.168.1.1, 224.2.2.2), 00:00:25/00:02:34, OIF count: 1, flags: CL

(192.168.2.7, 224.2.2.2), 00:01:43/00:01:16, OIF count: 2, flags: CL



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), 00:18:16/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, 00:17:20/00:00:00

Ethernet0, Forward/Sparse-Dense, 00:18:16/00:00:00

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



(*, 224.0.1.40), 00:18:16/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, 00:17:20/00:00:00

Ethernet0, Forward/Sparse-Dense, 00:18:16/00:00:00

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



(*, 224.2.2.2), 00:18:16/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, 00:17:27/00:00:00

Ethernet0, Forward/Sparse-Dense, 00:18:16/00:00:00

Ethernet1, Forward/Sparse-Dense, 00:18:10/00:00:00



(192.168.1.1, 224.2.2.2), 00:02:40/00:00:19, flags: CL

Incoming interface: Tunnel0, RPF nbr 192.168.1.254, Dvmrp

Outgoing interface list:

Ethernet1, Forward/Sparse-Dense, 00:02:32/00:00:00

Ethernet0, Forward/Sparse-Dense, 00:01:23/00:00:00



(192.168.2.7, 224.2.2.2), 00:00:55/00:02:04, flags: CL

Incoming interface: Tunnel0, RPF nbr 192.168.1.254, Dvmrp

Outgoing interface list:

Ethernet1, Forward/Sparse-Dense, 00:00:28/00:00:00



scar# show ip dvmrp route

DVMRP Routing Table - 6 entries

192.168.1.0/24 [0/2] uptime 00:09:41, expires 00:02:43, poison 0x00000000

via 192.168.1.254, Tunnel0, [version mrouted 3.255] [flags: GPM]

192.168.2.0/24 [0/2] uptime 00:09:38, expires 00:02:43

via 192.168.1.254, Tunnel0, [version mrouted 3.255] [flags: GPM]

192.168.7.0/24 [0/3] uptime 00:09:41, expires 00:02:43, poison 0x00020000

via 192.168.1.254, Tunnel0, [version mrouted 3.255] [flags: GPM]

192.168.14.0/24 [0/3] uptime 00:09:38, expires 00:02:43, poison 0x00010000

via 192.168.1.254, Tunnel0, [version mrouted 3.255] [flags: GPM]

192.168.80.0/24 [0/2] uptime 00:09:21, expires 00:02:43

via 192.168.1.254, Tunnel0, [version mrouted 3.255] [flags: GPM]

211.11.117.0/24 [0/2] uptime 00:09:21, expires 00:02:43

via 192.168.1.254, Tunnel0, [version mrouted 3.255] [flags: GPM]



scar# mrinfo 192.168.1.254

192.168.1.254 [version mrouted 3.255] [flags: GPM]:

192.168.1.254 -> 192.168.1.1 [1/1]

192.168.2.254 -> 192.168.2.7 [1/1]

211.11.117.206 -> 0.0.0.0 [1/1/querier/leaf]

192.168.80.254 -> 192.168.80.1 [1/1]

192.168.1.254 -> 192.168.14.254 [1/64/tunnel]

211.11.117.206 -> 62.178.158.124 [1/64/tunnel/down/leaf]



scar# mstat 192.168.14.254

Type escape sequence to abort.

Mtrace from 192.168.14.254 to 192.168.14.254 via RPF

From source (?) to destination (?)

Waiting to accumulate statistics......

Results after 10 seconds:



Source Response Dest Packet Statistics For Only For Traffic

192.168.14.254 192.168.14.254 All Multicast Traffic From 192.168.14.254

| __/ rtt 0 ms Lost/Sent = Pct Rate To 0.0.0.0

v / hop 0 ms --------------------- --------------------

192.168.14.254 ?

| \__ ttl 0

v \ hop 0 ms 0 0 pps 0 0 pps

192.168.14.254 192.168.14.254

Receiver Query Source



scar# mtrace

Source address or name: 192.168.14.254

Destination address or name: 192.168.1.254

Group address or name:

Multicast request TTL [64]:

Response address for mtrace:

Type escape sequence to abort.

Mtrace from 192.168.14.254 to 192.168.1.254 via RPF

From source (?) to destination (?)

Querying full reverse path...

0 192.168.1.254

-1 192.168.1.254 DVMRP Wrong interface [192.168.14.0/24]

-2 192.168.1.1 DVMRP [192.168.14.0/24]


Example 14-7. Callisto mrouted Operation (DVMRP)
[root@callisto~#] ps ax | grep mrouted

4307 pts/0 S 0:00 mrouted

5617 pts/2 R 0:00 grep mrouted



[root@callisto:~#] kill -SIGUSR1 4307

[root@callisto:~#] kill -SIGUSR2 4307



[root@callisto:~#] cat /var/tmp/mrouted.cache

mrouted version 3.9-beta3 up 5:54:15 Tue Dec 30 00:42:43 2003



Multicast Routing Cache Table (4 entries)

Origin Mcast-group CTmr Age Ptmr Rx IVif Forwvifs

<(prunesrc:vif[idx]/tmr) prunebitmap

>Source Lifetime SavPkt Pkts Bytes RPFf

192.168.1/24 224.0.1.1 0:03:30 5:53:45 - - 1

>192.168.1.1 5:53:45 0 175 5600 0

192.168.1/24 224.2.2.2 0:03:40 1:07:51 - - 1 0

>192.168.1.1 1:07:51 0 2306 449866 0

>192.168.1.2 1:07:34 0 3816 577632 0

192.168.2/24 224.2.2.2 0:03:32 0:47:45 - - 1 0

>192.168.2.7 0:47:45 0 2344 404059 0



[root@callisto:~#] cat /var/tmp/mrouted.dump

mrouted version 3.9-beta3 up 5:54:11 Tue Dec 30 00:42:39 2003

vifs_with_neighbors = 2



Virtual Interface Table

Vif Name Local-Address M Thr Rate Flags

0 eth0 192.168.14.1 subnet: 192.168.14/24 1 1 0 querier

peers: 192.168.14.254 (12.2) [0] up 2:58:36

group host (time left): 224.2.2.2 192.168.14.254 ( 0:03:52)

224.0.0.4 192.168.14.1 ( 0:03:52)

224.0.0.2 192.168.14.1 ( 0:03:49)

IGMP querier: 192.168.14.1 (this system)

Nbr bitmaps: 0x0000000000000001

pkts/bytes in : 0/0

pkts/bytes out: 3413/619795



1 eth1 192.168.1.1 subnet: 192.168.1/24 1 1 0 querier

peers: 192.168.1.254 (3.255) [1] have-genid up 0:47:54

group host (time left): 224.2.2.2 192.168.1.1 ( 0:03:43)

239.255.255.250 192.168.1.2 ( 0:03:52)

224.0.1.1 192.168.1.1 ( 0:03:44)

224.0.0.4 192.168.1.1 ( 0:03:49)

224.0.0.2 192.168.1.1 ( 0:03:43)

IGMP querier: 192.168.1.1 (this system)

Nbr bitmaps: 0x0000000000000002

pkts/bytes in : 8820/1461369

pkts/bytes out: 0/0





Multicast Routing Table (6 entries)

Origin-Subnet From-Gateway Metric Tmr Fl In-Vif Out-Vifs

211.11.117/24 192.168.1.254 2 45 .. 1 0*

192.168.80/24 192.168.1.254 2 45 .. 1 0*

192.168.14/24 1 90 .. 0 1[1]

192.168.7/24 192.168.14.254 2 45 .. 0 1*

192.168.2/24 192.168.1.254 2 45 .. 1 0*

192.168.1/24 1 90 .. 1 0*


Example 14-8. Castor mrouted Operation (DVMRP)
[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 1373 5237

1 1 0 192.168.7.7 1007 5174

2 1 0 192.168.80.1 0 0



IPv4 Multicast Forwarding Cache

Origin Group Packets In-Vif Out-Vifs:Ttls

192.168.2.7 224.2.2.2 4230 0 1:1

192.168.1.1 224.2.2.2 2347 0 1:1

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

IPv4 multicast forwarding:

7898 multicast forwarding cache lookups

3 multicast forwarding cache misses

3 upcalls to mrouted

0 upcall queue overflows

0 upcalls dropped due to full socket buffer

0 cache cleanups

3 datagrams with no route for origin

0 datagrams arrived with bad tunneling

0 datagrams could not be tunneled

1006 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:~#] map-mbone 192.168.14.254



192.168.7.254 (scar.nerdzone.org): alias for 192.168.14.254



192.168.14.254:

192.168.14.254: 192.168.1.254 [1/0/tunnel]

192.168.14.254 [1/0/querier]

192.168.7.254: 192.168.7.254 (scar.nerdzone.org) [1/0/querier]



[root@castor:~#] mtrace 192.168.14.254

mtrace: WARNING: no multicast group specified, so no statistics printed

Mtrace from 192.168.14.254 to 192.168.2.7 via group 0.0.0.0

Querying full reverse path...

0 castor.nerdzone.org (192.168.2.7)

-1 castor.nerdzone.org (192.168.2.7) DVMRP thresh^ 1

-2 scar.nerdzone.org (192.168.7.254) PIM thresh^ 0

-3 ? (192.168.14.254)

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



[root@castor:~#] mrinfo 192.168.14.254

192.168.14.254 (192.168.14.254) [version 12.2]:

192.168.7.254 -> 0.0.0.0 (local) [1/0/pim/querier]

192.168.14.254 -> 0.0.0.0 (local) [1/0/pim/querier]

192.168.14.254 -> 192.168.1.254 (192.168.1.254) [1/0/tunnel]


Example 14-9. Ganymed mrouted Operation (DVMRP)
[root@ganymed:~#] netstat -g -f inet



Virtual Interface Table

Vif Thresh Limit Local-Address Remote-Address Pkt_in Pkt_out

0 1 0 192.168.1.254 1814 2966

1 1 0 192.168.2.254 3010 1814

2 1 0 211.11.117.206 0 0

3 1 0 192.168.80.254 0 0

4 64 500 192.168.1.254 192.168.14.254 0 0

5 64 500 211.11.117.206 62.178.158.124 0 0



Multicast Forwarding Cache

Hash Origin Mcastgroup Traffic In-Vif Out-Vifs/Forw-ttl

90 192.168.2.7 224.2.2.2 2k 1 0/1 4/64

250 192.168.1.1 224.2.2.2 1k 0 1/1 4/64



Total no. of entries in cache: 2



[root@ganymed:~#] netstat –gs

multicast routing:

5 datagrams with no route for origin

5 upcalls made to mrouted

0 datagrams with malformed tunnel options

0 datagrams with no room for tunnel options

5 datagrams arrived on wrong interface

0 datagrams dropped due to upcall Q overflow

0 datagrams dropped due to upcall socket overflow

0 datagrams cleaned up by the cache

0 datagrams dropped selectively by ratelimiter

0 datagrams dropped - bucket Q overflow

0 datagrams dropped - larger than bkt size

multicast forwarding:

0 multicast forwarding cache lookups

0 multicast forwarding cache misses

0 upcalls to mrouted

0 upcall queue overflows

0 upcalls dropped due to full socket buffer

0 cache cleanups

0 datagrams with no route for origin

0 datagrams arrived with bad tunneling

0 datagrams could not be tunneled

0 datagrams arrived on wrong interface

0 datagrams selectively dropped

0 datagrams dropped due to queue overflow

0 datagrams dropped for being too large



[root@ganymed:~#] cat /var/tmp/mrouted.cache

mrouted version 3.9-beta3+IOS12 up 1:00:43 Tue Dec 30 00:55:39 2003



Multicast Routing Cache Table (2 entries)

Origin Mcast-group CTmr Age Ptmr Rx IVif Forwvifs

<(prunesrc:vif[idx]/tmr) prunebitmap

>Source Lifetime SavPkt Pkts Bytes RPFf

192.168.7/24 224.0.1.32 0:01:10 0:03:51 0:56:10 0 1P

192.168.1/24 224.2.2.2 0:01:20 1:00:42 - - 0 1 4

>192.168.1.1 1:00:42 0 1869 371617 1

192.168.2/24 224.2.2.2 0:02:30 1:00:42 - - 1 0 4

>192.168.2.7 1:00:42 0 3065 520226 1

[root@ganymed:~#] cat /var/tmp/mrouted.dump

mrouted version 3.9-beta3+IOS12 up 1:00:40 Tue Dec 30 00:55:36 2003



vifs_with_neighbors = 4



Virtual Interface Table

Vif Name Local-Address M Thr Rate Flags

0 ne3 192.168.1.254 subnet: 192.168.1/24 1 1 0

peers: 192.168.1.1 (3.255) [3] have-genid up 1:00:44

group host (time left): 239.255.255.250 192.168.1.2 ( 0:03:23)

224.0.1.1 192.168.1.1 ( 0:03:19)

224.0.0.9 192.168.1.2 ( 0:03:23)

224.2.2.2 192.168.1.2 ( 0:03:19)

224.0.0.2 192.168.1.1 ( 0:03:25)

224.0.0.4 192.168.1.1 ( 0:03:23)

IGMP querier: 192.168.1.1 up 0:59:24 last heard 0:01:05 ago

Nbr bitmaps: 0x0000000000000008

pkts/bytes in : 1865/370669

pkts/bytes out: 3018/512513



1 ne4 192.168.2.254 subnet: 192.168.2/24 1 1 0

peers: 192.168.2.7 (3.255) [1] have-genid up 1:00:46

group host (time left): 224.2.2.2 192.168.2.7 ( 0:04:04)

224.0.0.4 192.168.2.7 ( 0:04:05)

224.0.0.2 192.168.2.7 ( 0:04:02)

IGMP querier: 192.168.2.7 up 1:00:46 last heard 0:00:25 ago

Nbr bitmaps: 0x0000000000000002

pkts/bytes in : 3062/519723

pkts/bytes out: 1865/370669



2 ne5 211.11.117.206 subnet: 211.11.117/24 1 1 0 querier leaf

IGMP querier: 211.11.117.206 (this system)

Nbr bitmaps: 0x0000000000000000

pkts/bytes in : 0/0

pkts/bytes out: 0/0



3 vlan0 192.168.80.254 subnet: 192.168.80/24 1 1 0

peers: 192.168.80.1 (3.255) [2] have-genid up 1:00:46

group host (time left): 224.0.0.2 192.168.80.1 ( 0:04:02)

224.0.0.4 192.168.80.1 ( 0:04:01)

IGMP querier: 192.168.80.1 up 1:00:46 last heard 0:00:20 ago

Nbr bitmaps: 0x0000000000000004

pkts/bytes in : 0/0

pkts/bytes out: 0/0



4 ne3 192.168.1.254 tunnel: 192.168.14.254 1 64 500 rexmit_prunes old-tunnel

peers: 192.168.14.254 (12.2) [0] up 1:00:51

Nbr bitmaps: 0x0000000000000001

pkts/bytes in : 0/0

pkts/bytes out: 0/0



5 ne5 211.11.117.206 tunnel: 62.178.158.124 1 64 500 leaf rexmit_prunes

graphics/ccc.gif old-tunnel

Nbr bitmaps: 0x0000000000000000

pkts/bytes in : 0/0

pkts/bytes out: 0/0





Multicast Routing Table (6 entries)

Origin-Subnet From-Gateway Metric Tmr Fl In-Vif Out-Vifs

211.11.117/24 1 50 .. 2 0[3] 1[1] 3* 4[0]

192.168.80/24 1 50 .. 3 0[3] 2* 4[0]

192.168.14/24 192.168.1.1 2 40 .. 0 2*

192.168.7/24 192.168.2.7 2 35 .. 1 2*

192.168.2/24 1 50 .. 1 0[3] 2* 4[0]

192.168.1/24 1 50 .. 0 1[1] 2* 3* 4[0]


Example 14-10. What Is Happening on the Multicast LAN (tcpdump Sniffer Output on Castor)
...

23:21:14.363044 192.168.2.254 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0]

[ttl 1]

23:21:18.366233 192.168.2.7 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0] [ttl 1]

23:21:24.421728 192.168.2.254 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0]

[ttl 1]

23:21:28.424732 192.168.2.7 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0] [ttl 1]

23:21:28.424881 192.168.2.7 > DVMRP.MCAST.NET: igmp dvmrp Report [tos 0xc0] [ttl 1]

23:21:34.480417 192.168.2.254 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0]

[ttl 1]

23:21:38.483146 192.168.2.7 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0] [ttl 1]

23:21:44.153874 192.168.2.254 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0]

[ttl 1]

23:21:48.156638 192.168.2.7 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0] [ttl 1]

23:21:54.207863 192.168.2.254 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0]

[ttl 1]

23:21:58.211078 192.168.2.7 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0] [ttl 1]

23:22:04.266496 192.168.2.254 > DVMRP.MCAST.NET: igmp dvmrp Probe [tos 0xc0]

[ttl 1]

23:22:04.266958 192.168.2.254 > DVMRP.MCAST.NET: igmp dvmrp Report [tos 0xc0]

[ttl 1]

...

23:57:18.303887 192.168.2.254 > 192.168.2.7: igmp dvmrp Ask-neighbors2 [tos 0xc0]

23:57:18.304018 192.168.2.7 > 192.168.2.254: igmp dvmrp Neighbors2 (v 3.255): [192.168.2.7

graphics/ccc.gif -> 192.168.2.254 (1/1/querier)] [192.168.7.7 -> 0.0.0.0 (1/1/querier)] [tos 0xc0]

...


NOTE

Besides the DVMRP probes and reports in Example 14-10, you also see ASK_NEIGHBORS IGMP messages used by the mrinfo and map-mbone tools.


Native-Multicast Test Applications

As examples of real-world multicast applications, the well-known ntpd (Network Time Protocol daemon) and nte (a multicast whiteboard) were chosen. ntpd was configured to run in multicast mode (224.0.1.1), and nte was configured to utilize 224.2.2.2 and UDP port 34000. This is just for testing purposes. Choose more appropriate addresses according to the IANA assignments discussed at the beginning of this chapter for your deployments. Example 14-11 shows the setup and operation of these tools.

Example 14-11. Setup and Operation of Multicast Test Applications ntp and nte
[root@castor:~#] nte 224.2.2.2/34000 &



[root@callisto:~#] nte 224.2.2.2/34000 &



[root@castor:~#] cat /etc/ntp.conf

manycastclient 224.0.1.1

multicastclient 224.0.1.1

logfile /var/log/ntp.log

driftfile /etc/ntp.drift

authenticate no



[root@castor:~#] ntpd -A -c /etc/ntp.conf



[root@callisto:~#] cat /etc/ntp.conf

manycastserver 224.0.1.1

server ntp2.curie.fr prefer minpoll 10

server ntp.obspm.fr

logfile /var/log/ntp.log

driftfile /etc/ntp.drift

authenticate no



[root@callisto:~#] ntpd -A -c /etc/ntp.conf



[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 73 5387

1 1 0 192.168.7.7 0 16

2 1 0 192.168.80.1 0 0



IPv4 Multicast Forwarding Cache

Origin Group Packets In-Vif Out-Vifs:Ttls

192.168.2.7 224.2.2.2 1997 0 1:1

192.168.1.1 224.2.2.2 73 0 1:1



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

IPv4 multicast forwarding:

6064 multicast forwarding cache lookups

4 multicast forwarding cache misses

4 upcalls to mrouted

0 upcall queue overflows

0 upcalls dropped due to full socket buffer

0 cache cleanups

4 datagrams with no route for origin

0 datagrams arrived with bad tunneling

0 datagrams could not be tunneled

0 datagrams arrived on wrong interface

0 datagrams selectively dropped

0 datagrams dropped due to queue overflow

0 datagrams dropped for being too large



[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 DVMRP.MCAST.NET

eth0 1 ALL-SYSTEMS.MCAST.NET

eth1 1 224.2.2.2

eth1 1 NTP.MCAST.NET

eth1 1 ALL-ROUTERS.MCAST.NET

eth1 1 DVMRP.MCAST.NET

eth1 1 ALL-SYSTEMS.MCAST.NET



[root@callisto:~#] tcpdump -i eth1 host 224.0.1.1

tcpdump: listening on eth1

14:14:48.005140 callisto > NTP.MCAST.NET: igmp v2 report NTP.MCAST.NET (DF) [tos 0xc0]

graphics/ccc.gif [ttl 1]



[root@castor:~#] tcpdump -i xl0 host 224.0.1.1

tcpdump: listening on xl0

14:14:01.031783 castor.nerdzone.org.ntp > NTP.MCAST.NET.ntp: v4 client strat 0 poll 6

graphics/ccc.gif prec -28 [tos 0x10] [ttl 1]

14:15:01.575187 castor.nerdzone.org > NTP.MCAST.NET: igmp v2 report NTP.MCAST.NET [ttl 1]


NOTE

When you run into problems with multicast applications, pay close attention to what interface(s) the application actually binds. The mtest package is a great tool to debug such issues.

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.