multicast

Filtering multicast/PIM


Multicast, PIM and SA filtering can happen on a router interface, on a PIM process, on a RP or on a MA.

Every type of filtering has a different purpose and scope. Here's a quick review.


ROUTER INTERFACE

On a router interface we can filter multicast, IGMP, PIM and BSR messages.

FILTERING MULTICAST PACKETS - ip multicast boundary

RATE-LIMIT MULTICAST - ip multicast rete-limit
Can rate-limit all multicast packets or only specific groups selected by an access-list.

ACCESS-LIST
Can specify only dest multicast address or both source and destination.


FILTERING BSR MESSAGES - ip pim bsr border
BSR messages should not go out the domain.


FILTERING PIM - ip pim neighbor-filter
Filtering PIM can be use to block PIM neighbors to form


FILTERING IGMP - ip igmp access-group
Filtering IGMP allows to specify which groups the clients connected to a interface can join.
A standard ACL specifies groups only, extended ACL specified both source and groups.



ROUTER / RP

A multicast-enabled router receives and forwards join/prune messages towards one or more RP.
We can filter those messages on both RP and non-RP routers.

ACCEPT-RP - ip pim accept-rp
Filters join/prune messages destined for specific RP and-or group.



RP

A RP receives SA messages from multicast sources. We can filter which SA messages are accepted by the RP:

ACCEPT-REGISTER - ip pim accept-register

A RP sends rp-annouce messages that should reach a MA. We can limit the scope of those messages tuning the TTL so if two MA are located ad different hop-count this can be a way to filter too.

RP-ANNOUNCE TTL - ip pim send-rp-announce L0 scope X



MAPPING AGENT

The mapping agent receives rp-announces from RP candidates.

We can filter RP announces to accept specific groups from specific RPs.

RP-ANNOUNCE-FILTER - ip pim rp-announce-filter

The RP chosen by the MA for a group follows two rules:
  • more specific entry wins
  • highest IP wins

To achieve redundancy and a sort of load-balancing, announce both specific and less specific route on RPs.

HTH

IGMP filtering on switches

IGMP filtering on switches is performed by profiles as described on DocCD.

Example of filter:

ip igmp profile 1
permit
range 232.0.0.0 232.255.255.255

If action is "deny" all the others groups are permitted. If action is "permit" all the other groups are denied.

Apply filter to interface:

inte f0/0
ip igmp filter 1

As reported on Cisco docs, igmp filters cannot be applied to routed, SVI or etherchannel member interfaces. Only plain L2 interfaces can be filtered.


LINKS

A Networker Blog
CCIE to be Blog

SSM - Source Specific Multicast


Source specific Multicast block is 232.0.0.0/8 as defined on RFC3171. SSM is described on RFC3569.

Source Specific Multicast configuration recipe:

1) enable IGMP v3 on all required interfaces

R2(config-if)#ip igmp version 3

2) enable SSM for the default groups (232.0.0.0/8) or specific groups, defined on ACL:

R2(config)#ip pim ssm ?
default Use 232/8 group range for SSM
range ACL for group range to be used for SSM

All RPF rules are still used: multicast packets are dropped if not coming from RPF valid interface.

RP and MSDP are not needed for SSM since the destination requests multicast traffic directly to the source.

Source discovery via application or SAP should not be part of CCIE blueprint.

Bidir PIM


Bidirectional PIM is used when there're many sources and destinations of multicast traffic, like a videoconference with many participants.

How to configure bidir PIM?

First, enable it on all routers:

R2(config)#ip pim bidir-enable

Second, configure one ore more Bidir RP with static RP, Auto-RP or BSR. Notice the "bidir" option.

ip pim rp-address IP ACL bidir

ip pim send-rp-announce INT scope TTL group-list GROUPS bidir

ip pim rp-candidate INT group-list GROUPS bidir


Verify:

(*, 231.0.0.4), 01:02:53/00:02:40, RP 4.4.4.4, flags: BP
Bidir-Upstream: FastEthernet0/1, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0/1, Bidir-Upstream/Dense, 00:00:18/00:00:00

IGMP timers and tweaking

QUERIER: lowest IP of multicast-enabled router on the subnet

DEFAULTS:

R2#sh ip igmp interface f0/0
FastEthernet0/0 is up, line protocol is up
Internet address is 10.0.123.2/24
IGMP is enabled on interface
Current IGMP host version is 2
Current IGMP router version is 2
IGMP query interval is 60 seconds
IGMP querier timeout is 120 seconds
IGMP max query response time is 10 seconds
Last member query count is 2
Last member query response interval is 1000 ms

Inbound IGMP access group is not set
IGMP activity: 4 joins, 2 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.0.123.2 (this system)
IGMP querying router is 10.0.123.2 (this system)
Multicast groups joined by this system (number of users):
224.0.1.40(1)

QUERY INTERVAL - default 60s
How often the querier request membership reports from multicast clients

R2(config-if)#ip igmp query-interval ?
<1-18000> Query interval in seconds

QUERIER TIMEOUT - default 120s
If query message timeout is missed a new querier is elected

R2(config-if)#ip igmp querier-timeout ?
<60-300> timeout value in seconds


MAX QUERY RESPONSE - default 10s
Amount of time the querier waits for membership responses from clients.
When timeout reached, if no response came router removes mroute state.

R2(config-if)#ip igmp query-max-response-time ?
<1-25> query response value in seconds


LAST MEMBER QUERY COUNT AND INTERVAL - default 2 messages every 1000ms
When the last member of a group is removed, the querier sends C messages each I interval if there's any other memeber in the subnet. If no answer group is removed.

R2(config-if)#ip igmp last-member-query-count ?
<1-7> Last member query count

R2(config-if)#ip igmp last-member-query-interval ?
<100-25500> Last member query interval in milliseconds

It is possible to disable the last member query for specific groups:

R2(config-if)#ip igmp immediate-leave group-list ?
<1-99> Access list number
<1300-1999> Access list number (expanded range)
WORD IP Named Standard Access list


IGMP LIMIT - default no limit
Limits che number of active groups membership on a interface

R2(config-if)#ip igmp limit ?
<1-64000> Max Allowed State on this interface

PIM DR


Following my previous post, another election happens on a multi-access segment: PIM DR - Designated Router.

The election is based on this order:
• highest priority
• highest IP

Notice that this election is preemptive, do not be confused by OSPF DR election that is not preemptive.

What are the duties of the PIM DR?

• signal multicast receivers to the RP, tracking IGMP messages
• register active sources on the segment to the RP


Back to the previous topology, R3 is the DR of R1-R2-R3 segment:

R2#sh ip pim neighbor
PIM Neighbor Table
Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,
S - State Refresh Capable
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
10.0.123.3 FastEthernet0/0 00:35:46/00:01:21 v2 1 / DR S
10.0.123.1 FastEthernet0/0 01:04:13/00:01:20 v2 1 / S

Notice that default prioriy is 1. What if we set R2 priority value to 2?

R2(config-if)#ip pim dr-priority 2
R2(config-if)#
*Mar 1 01:43:32.367: PIM(0): Changing DR for FastEthernet0/0, from 10.0.123.3 to 10.0.123.2 (this system)
*Mar 1 01:43:32.367: %PIM-5-DRCHG: DR change from neighbor 10.0.123.3 to 10.0.123.2 on interface FastEthernet0/0

Since it's a permanent election, R2 preempts R3 and became DR.

NOTE

DR election is someway related to forward election, maybe priority is considered on both?

Software used: C3725-ADVENTERPRISEK9-M

When R2 is DR it's forwared too:

R2#
(10.0.234.4, 231.0.0.1), 00:00:22/00:02:38, flags: JT
Incoming interface: FastEthernet0/1, RPF nbr 10.0.234.4
Outgoing interface list:
FastEthernet0/0, Forward/Sparse, 00:00:22/00:02:37

R3#
(10.0.234.4, 231.0.0.1), 00:00:03/00:02:58, flags: PT
Incoming interface: FastEthernet0/1, RPF nbr 10.0.234.4
Outgoing interface list: Null


PIM ASSERT


On a broadcast segment the multicast forwarder is elected based on:

• lowest AD
• lowest metric
• highest IP


What if the segment is a NBMA? The hub must be elected as forwarder.

That the purpose of "ip pim nbma-mode" command. Apply this on the hub interface.

A quick lab:

pim_assert

R4 is RP for all groups/routers
PIM sparse enabled on all interfaces
R1 joins group 231.0.0.1
R4 ping to 231.0.0.1


Which router is elected as forwarder on R1-R2-R3 segment?

R3 is elected since it has the same AD and metric of R1 but it's F0/0 has a higher IP address than R2.

How do we verify it?

Enable "deb ip mpacket" and disable mroute-cache on interfaces with "no ip mroute-cache".

Now ping 231.0.0.1 from R4:

R4#ping 231.0.0.1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 231.0.0.1, timeout is 2 seconds:
Reply to request 0 from 10.0.123.1, 24 ms

We get an reply, great!

Check the packet on R3:

R3#
*Mar 1 00:46:39.899: IP(0): s=10.0.234.4 (FastEthernet0/1) d=231.0.0.1 (FastEthernet0/0) id=3, ttl=254, prot=1, len=100(100), mforward

Check the same packet on R2:

R2#
*Mar 1 00:48:22.955: IP(0): s=10.0.234.4 (FastEthernet0/1) d=231.0.0.1 id=4, ttl=254, prot=1, len=114(100), mroute olist null
*Mar 1 00:48:22.959: IP(0): s=10.0.234.4 (FastEthernet0/0) d=231.0.0.1 id=4, ttl=253, prot=1, len=114(100), not RPF interface

Only R3 forwards the packet.

Mroute on R2, pruned (P flag):

(10.0.234.4, 231.0.0.1), 00:01:46/00:01:42, flags: PJT
Incoming interface: FastEthernet0/1, RPF nbr 10.0.234.4
Outgoing interface list: Null

Mroute on R3:

(10.0.234.4, 231.0.0.1), 00:00:31/00:02:58, flags: JT
Incoming interface: FastEthernet0/1, RPF nbr 10.0.234.4
Outgoing interface list:
FastEthernet0/0, Forward/Sparse, 00:00:31/00:02:49, A

As we expected the mroute is pruned on R2 since it's not the forwarder. Notice the A flag on R3 mroute, meaning it won the Assert election.

What happens if we shutdown R3 interface F0/0? R2 becomes forwarder for the segment:

(*, 231.0.0.1), 00:00:57/stopped, RP 4.4.4.4, flags: SJC
Incoming interface: FastEthernet0/1, RPF nbr 10.0.234.4
Outgoing interface list:
FastEthernet0/0, Forward/Sparse, 00:00:26/00:02:33

R2#
*Mar 1 00:53:46.683: IP(0): s=10.0.234.4 (FastEthernet0/1) d=231.0.0.1 (FastEthernet0/0) id=12, ttl=254, prot=1, len=100(100), mforward


IP Multicast Helper Map


Multicast helper-map as described on Doc-CD is used:
"to allow IP multicast routing in a multicast-capable internetwork between two broadcast-only internetworks"

This is the simple lab:

multicast-helper

Initial configuration:
- pim dense mode between R2 an R3
- usual addressing standard
- Ripv2 on R1 and R4

We use R1 and R4 as broadcast only routers. They're configured with RIPv2 in broadcast mode on F0/0:


ip rip v2-broadcast
ip rip advertise 5


Out task is to allow R1 and R4 to get RIP updates between each other.

We can divide the problem for each direction, the first is from R1 to R4, the second is from R4 to R1.

1) the first helper-map is applied on R2, used to convert broadcast incoming from R1 in multicast towards R3. Since broadcast comes from F0/0 that is the interface where the helper-map is applied to:


access-list 100 permit udp any any eq rip
! this is both necessary and easy to forget
ip forward-protocol udp rip
inte f0/0
ip multicast helper-map broadcast 228.0.0.1 100 ttl 10


Access-list 101 defines which traffic will be converted to multicast.

2) the second helper-map is applied to interface F0/0 on R3, it used to convert back multicast traffic in broadcast so it can be heard by R4 RIP process:


access-list 100 permit udp any any eq rip
! this is both necessary and easy to forget
ip forward-protocol udp rip
inte f0/0
ip multicast helper-map 228.0.0.1 10.0.34.255 100


On R4 interface F0/1 we must enable directed broadcast:


R4(config)#int f0/1
R4(config-if)#ip directed-broadcast


On R4 we enable debug of RIP and we get this message:


R4(config-router)#
*Mar 1 01:19:17.459: RIP: sending v2 update to 255.255.255.255 via FastEthernet0/0 (10.0.34.4)
*Mar 1 01:19:17.459: RIP: build update entries
*Mar 1 01:19:17.459: 4.4.4.4/32 via 0.0.0.0, metric 1, tag 0
*Mar 1 01:19:17.463: IP: s=10.0.34.4 (local), d=255.255.255.255 (FastEthernet0/0), len 52, sending broad/multicast
*Mar 1 01:19:17.547: IP: s=10.0.12.1 (FastEthernet0/0), d=255.255.255.255, len 52, rcvd 2
*Mar 1 01:19:17.547:
RIP: ignored v2 update from bad source 10.0.12.1 on FastEthernet0/0


We can easily get rid of it:


R4(config)#router rip
R4(config-router)#no validate-update-source


Check if R4 is getting the RIP route from R1:


R 1.1.1.1 [120/1] via 10.0.12.1, 00:00:03



The other direction is done the same way, inverting R2 and R3 roles and using another multicast address.

We can check if mroutes are correct on R2 and R3:


R2#show ip mroute

(10.0.12.1, 228.0.0.1), 00:45:29/00:02:50, flags: T
Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0/1, Forward/Dense, 00:45:29/00:00:00

(10.0.34.4, 228.0.0.2), 00:35:54/00:02:56, flags: PLT
Incoming interface: FastEthernet0/1, RPF nbr 10.0.23.3
Outgoing interface list: Null


R3#show ip mroute

(10.0.12.1, 228.0.0.1), 00:29:08/00:02:56, flags: PLTX
Incoming interface: FastEthernet0/0, RPF nbr 10.0.23.2
Outgoing interface list: Null

(10.0.34.4, 228.0.0.2), 00:35:15/00:02:49, flags: T
Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0/0, Forward/Dense, 00:35:15/00:00:00



Great!


NOTES

There are at least two possible issues with this configuration.

1) forget the command
ip forward-protocol udp rip

2) forget to set the TTL in the broadcast to multicast helper-map. The default TTL is set to 1 so the packet will die after the first hop never getting the destination.

We can verify it using Wireshark in the segment between R2 and R3:

helper-map_grab1


Other references:

INE blog


MSDP SA filtering - lab


On R3 we want to filter SA messages towards R2 so if we ping address 227.0.0.10 from R4 we should not get response.

Step 1:
create inte lo10 on R1 with ip address 10.10.10.10. This interface joins group 227.0.0.10


interface Loopback10
ip address 10.10.10.10 255.255.255.255
ip pim sparse-mode
ip igmp join-group 227.0.0.10
end


Step 2:
verify connectivity. From R4 ping 227.0.0.10


R4#ping 227.0.0.10 re 1
Sending 1, 100-byte ICMP Echos to 227.0.0.10, timeout is 2 seconds:
Reply to request 0 from 10.0.12.1, 24 ms


On R2 MSDP SA-caceh there's a entry for this traffic:


R2#sh ip msdp sa-cache
MSDP Source-Active Cache - 1 entries
(4.4.4.4, 227.0.0.10), RP 3.3.3.3, BGP/AS 300, 00:01:22/00:05:34, Peer 3.3.3.3
Learned from peer 3.3.3.3, RPF peer 3.3.3.3,
SAs received: 2, Encapsulated data received: 0



Step 3:
apply sa-filter on R3

We create and access-list matching the SA for the group:


R3#sh access-lists 104
Extended IP access list 104
10 deny ip host 4.4.4.4 host 227.0.0.10 log (5 matches)
20 permit ip any any (12 matches)


and apply the filter to peer R2 ip 2.2.2.2:


ip msdp sa-filter out 2.2.2.2 list 104


Check the sa-filter is properly applied:


R3#sh ip msdp peer
MSDP Peer 2.2.2.2 (?), AS 200
Connection status:
State: Up, Resets: 3, Connection source: Loopback0 (3.3.3.3)
Uptime(Downtime): 03:49:26, Messages sent/received: 241/241
Output messages discarded: 0
Connection and counters cleared 05:59:23 ago
Elapsed time since last message: 00:00:10
Local Address of connection: 3.3.3.3
Local Port: 639, Remote Port: 26547
SA Filtering:
Input (S,G) filter: none, route-map: none
Input RP filter: none, route-map: none
Output (S,G) filter: 104, route-map: none
Output RP filter: none, route-map: none
SA-Requests:
Input filter: none
Peer ttl threshold: 0
SAs learned from this peer: 0
Input queue size: 0, Output queue size: 0
Message counters:
RPF Failure count: 0
SA Messages in/out: 34/27
SA Requests in: 0
SA Responses out: 0
Data Packets in/out: 8/9



Now try to ping again from R4:



R4#ping 227.0.0.10 re 1
Sending 1, 100-byte ICMP Echos to 227.0.0.10, timeout is 2 seconds:
.


We don't get any answer, that is correct.

This is the capture of the filtered SA message that matched the access-list:

msdp_sa_4.4.4.4


On R2 the msdp sa-cache is empty:


R2#sh ip msdp sa-cache
MSDP Source-Active Cache - 0 entries


Now we verify that we can still reach 227.0.0.1 from R4 since this SA does not match ACL 104:


R4#ping 227.0.0.1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 227.0.0.1, timeout is 2 seconds:
Reply to request 0 from 10.0.12.1, 56 ms


The entry is on R2 sa-cache:


R2#sh ip msdp sa-cache
MSDP Source-Active Cache - 1 entries
(4.4.4.4, 227.0.0.1), RP 3.3.3.3, BGP/AS 300, 00:00:27/00:05:45, Peer 3.3.3.3
Learned from peer 3.3.3.3, RPF peer 3.3.3.3,
SAs received: 2, Encapsulated data received: 1



We can apply sa-filter on both inbound and outbound direction on the msdp peers to a granular filtering of multicast sources between domains.

HTH

MSDP SA filtering - theory


Basics first.


*** SOURCE ACTIVE ***

What’s on a SA message?
Source Address of the source
Group address the data source send to
IP address of the RP

Who sends a SA?
Only RPs send and receive SA messages (only DR on shared networks)

When a SA messages is send?
When an RP in a PIM-SM domain first learns of a new sender, e.g., via
PIM register messages, it constructs a "Source-Active" (SA) message
and sends it to its MSDP peers.
(from RFC3618)

To who a SA message is forwarded?
If the MSDP peer receives the SA from a non-RPF peer towards the
originating RP, it will drop the message. Otherwise, it forwards the
message to all its MSDP peers (except the one from which it received
the SA message).
(from RFC3618)


*** SA REQUESTS ***

What’s on a SA request?
A multicast prefix with his its prefix lenght. When a host request a join to a particular group, the RP sends a SA request to its MSDP peers.

Who sends a SA request?
SA requests are sent only by RPs configured to do so and should be sent only to caching peers
(Routing TCP/IP vol2 page 610).

What’s on a SA response?
The RP address for the requested group, the group address and the source address for that group.


A Cisco router can filter both incoming and outgoing SA messages to and from a specific MSDP peer.


*** FILTERING INBOUND SOURCE ACTIVE MESSAGES ***

Accept from MSDP peer 10.0.0.1 only SA for groups 224.0.0.0/4 from sources in subnet 10.254.0.0/24:

access-list 101 permit 10.254.0.0 0.0.255.255 224.0.0.0 31.255.255.255
ip msdp sa-filter in 10.0.0.1 list 101

10.0.0.1 is the MSDP peer to which the filter is applied
10.254.0.0/24 is the range of multicast sources accepted
224.0.0.0/4 are the multicast groups accepted from this peer whit this sources


*** FILTERING OUTBOUND SOURCE ACTIVE MESSAGES ***

Send SA messages to peer 10.0.0.1 only from specific sources/groups:

access-list 102 permit 172.16.0.0 0.0.255.255 230.0.0.0 0.255.255.255
ip msdp sa-filter out 10.0.0.1 list 102

The SA messages can be local originated or forwarded from another MSDP peer.


*** FILTERING OUTBOUND LOCAL ORIGINATED SOURCES ***

This filter is applied to all MSDP peers but only for locally originated SA messages:

access-list 102 permit 192.168.1.0 0.0.0.255 231.0.0.0 0.255.255.255
ip msdp redistribute list 102

Only sources in subnet 192.168.1.0/24 for groups in range 231.0.0.0/8 are advertised to MSDP peers.

Multicast Source Discovery Protocol (MSDP)


MSDP, as described in
RFC3618, is a mechanism to connect multiple PIM domains together. The general concept is to connect the RPs from different domains to make them aware of multicast sources in each domain.

This is a simple lab for testing MSDP functions. Each Rx-Ry network has address 10.0.xy.0/24 with x,y.



Initial configuration:
- ip addresses of routers
- R2 and R3 are BGP neighbors for both unicast and multicast
- IGP is running between R1-R2 and R3-R4


Configuring PIM:

R1 and R2 are part of a PIM domain with AutoRP enabled.
R2 is the RP

To be sure R2 and R3 are on different domain we filter on R2 and R3 both BSR and AutoRP messages:



interface FastEthernet0/1
ip address 10.0.23.2 255.255.255.0
ip access-group PIM in
ip access-group PIM out
ip pim bsr-border
ip pim sparse-mode
no ip mroute-cache
duplex auto
speed auto
end


R2#sh access-lists PIM
Extended IP access list PIM
10 deny ip any host 224.0.1.40
20 deny ip any host 224.0.1.39
30 deny ip host 224.0.1.39 any
40 deny ip host 224.0.1.40 any
50 permit ip any any




Now let’s configure MSDP between R2 and R3:


R2(config)#ip msdp peer 3.3.3.3 connect-source Loopback0

R3(config)#ip msdp peer 2.2.2.2 connect-source Loopback0



Check correct peering, note that MSDP uses TCP/639:


R2#sh ip msdp peer
MSDP Peer 3.3.3.3 (?), AS 300
Connection status:
State: Up, Resets: 3, Connection source: Loopback0 (2.2.2.2)
Uptime(Downtime): 00:38:35, Messages sent/received: 43/43
Output messages discarded: 0
Connection and counters cleared 02:49:05 ago
Elapsed time since last message: 00:00:49
Local Address of connection: 2.2.2.2
Local Port: 26547,
Remote Port: 639

R3#sh ip msdp peer
MSDP Peer 2.2.2.2 (?), AS 200
Connection status:
State: Up, Resets: 3, Connection source: Loopback0 (3.3.3.3)
Uptime(Downtime): 00:39:47, Messages sent/received: 45/45
Output messages discarded: 0
Connection and counters cleared 02:49:43 ago
Elapsed time since last message: 00:00:04
Local Address of connection: 3.3.3.3
Local Port: 639, Remote Port: 26547


Now we test that MSDP actually works as expected.

R1 joins multicast group 227.0.0.1:


R1#sh run inte l0
interface Loopback0
ip address 1.1.1.1 255.255.255.255
ip pim sparse-mode
ip igmp join-group 227.0.0.1
no ip mroute-cache
ip ospf 1 area 0
end



R4 should be get an answer pinging R1:


R4#ping 227.0.0.1 so l0 re 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 227.0.0.1, timeout is 2 seconds:
Packet sent with a source address of 4.4.4.4
Reply to request 0 from 10.0.12.1, 20 ms



On R3 we can see the entry in MSDP cache:


R3#sh ip msdp sa-cache
MSDP Source-Active Cache - 1 entries
(4.4.4.4, 227.0.0.1), RP 2.2.2.2, MBGP/AS 200, 00:01:14/00:05:31, Peer 2.2.2.2
Learned from peer 2.2.2.2, RPF peer 2.2.2.2,
SAs received: 2, Encapsulated data received: 1


Using Wireshark or debug commands we should be able to see MSDP SA messages:


*Mar 1 04:00:32.927: MSDP(0): 3.3.3.3: Originating SA message
*Mar 1 04:00:32.927: MSDP(0): (4.4.4.4/32, 227.0.0.1)
*Mar 1 04:00:32.927: MSDP(0): (1.1.1.1/32, 227.0.0.8)


msdp_capture


On my next post I'll check how to filter SA messages between MSDP peers. Stay tuned!


MSTAT


A great command for multicast troubleshooting: MSTAT





Other useful commands are MRINFO and MTRACE.



(Routing TCP/IP vol.2 Chapter 6)

How multicast works in LAN?


A network engineer asked me how to configure his switches to support Multicast in LAN. He asked about PIM, RP and so on but the answer is... “nothing”!

Here’s the explanation.

Inside a VLAN the multicast is part of the usual L2 traffic, the only difference is the MAC address.

The multicast source sends its traffic to a particular MAC address:

An IP host group address is mapped to an Ethernet multicast address
by placing the low-order 23-bits of the IP address into the low-order
23 bits of the Ethernet multicast address 01-00-5E-00-00-00 (hex).

http://www.ietf.org/rfc/rfc1112.txt

The hosts that want to receive the multicast traffic just have to listen for this MAC address.

Only if sender and receivers are on different subnets we need PIM.


Note: since MAC address is defined, there’ll be no ARP queries.