• Configure R5 as the RP for AS 200 and SW1 as the RP for AS 100. Use
the BSR method to distribute RP information
on the link between R3 and SW1.
• Create an MSDP peering session between SW1 and R5 sourcing it off the
Loopback 0 interfaces.
------------------------------------------------------------------------------------------------------
When implementing inter-domain multicast using PIM SM, each domain
usually has its own RP. In order to allow sources and receivers from different
domains to locate each other, RPs need to exchange the information about
their local active sources. After this information is exchanged between the
RPs, all routers that joined the respective shared trees may build shortestpath
trees toward the actual sources.
MSDP or Multicast Source Discovery Protocol is used to exchange multicast
source information between RPs. It is configured as a TCP connection
between the RPs, and used to exchange the so-called Source Active (SA)
messages. Note that all MSDP peerings are configured manually, using the
command ip msdp peer at both endpoints. When a source in one PIM SM
domain starts sending the multicast traffic, the respective DR will start the
registration process with the local RP. When the local RP receives the PIM
Register message, it replicates it to all of its MSDP neighbors as an SA
message. The SA message contains the IP address of the multicast source
as well as the destination group and the IP address of the RP sending the SA
message. The latter is known as the MSDP ID and can be changed using the
command ip msdp originator-id.
When any RP receives a new SA message, it checks if there are local
receivers that have joined the shared tree for the encapsulated group. If there
are any, the message is forwarded down the tree, allowing the receivers to
learn about the sources in another domain. After that, the receivers might join
the SPT toward the source in the other domain. This is only possible if the
source IP address is learned via BGP or some other inter-domain route
exchange procedure. Till the moment there is an active source in a domain,
the respective RP will forward periodic SA messages with an empty payload
to refresh the active state for this group/source in all other domains.
MSDP allows us to connect RPs in an arbitrary meshed topology, to include
loops. In order to prevent the SA messages from cycling the topology, as a
result of these loops, every MSDP peer forwards SA messages only after
they pass the RPF check. The RPF check is performed based on the RP IP
address (originator-ID) inside the message and the IP address of the MSDP
peer that relayed the message. If the MSDP peer is on the shortest path
towards the originating RP, the message is accepted, otherwise it is dropped.
This RPF check requires full routing information from other domains to in
order to discover routes to other RPs. If you have a stub multicast domain,
lacking full BGP information, you may use the command ip msdp
default-peer to identify the upstream RP that forwards SA messages.
RPF checks are not applied to default peers and all SA messages are
accepted.
Our scenario is a bit tricky, as it has two RPs in AS 200. However, the BSR
protocol ensures that all routers in AS 200 will select the same RP for a given
group. Thus you only need to peer SW1 with SW2 and R5 via MSDP, but
there is no need to peer SW2 with R5 via MSDP.
----------------------------------------------------------------------------------------
R5:
ip msdp peer 150.1.7.7 connect-source Loopback 0 remote-as 100
SW2:
ip msdp peer 150.1.7.7 connect-source Loopback 0 remote-as 100
SW1:
ip msdp peer 150.1.5.5 connect-source Loopback 0 remote-as 200
ip msdp peer 150.1.8.8 connect-source Loopback 0 remote-as 200
----------------------------------------------------------------------------------------
在AS200中,BSR(MA)為SW4...........我們需要load balance......修改rp-hash
We want to ensure that we have two multicast groups that map to different RPs
inside AS 200. In order make this happen we will have to alter the “rp-hash”
value used on SW4:
Rack1SW4(config)# no ip pim bsr-candidate loopback0 0
Rack1SW4(config)# ip pim bsr-candidate loopback0 31
Now the groups 239.1.1.1 and 239.1.1.2 map to RPs R5 and SW2 respectively:
----------------------------------------------------------------------------------------
Rack1R5#show ip pim rp-hash 239.1.1.1
RP 150.1.5.5 (?), v2
Info source: 150.1.10.10 (?), via bootstrap, priority 0, holdtime 150
Uptime: 22:06:33, expires: 00:02:25
PIMv2 Hash Value (mask 255.255.255.254)
RP 150.1.5.5, via bootstrap, priority 0, hash value 1362971077
RP 150.1.8.8, via bootstrap, priority 0, hash value 718054422
Rack1R5#show ip pim rp-hash 239.1.1.2
RP 150.1.8.8 (?), v2
Info source: 150.1.10.10 (?), via bootstrap, priority 0, holdtime 150
Uptime: 22:06:24, expires: 00:02:26
PIMv2 Hash Value (mask 255.255.255.254)
RP 150.1.5.5, via bootstrap, priority 0, hash value 443334807
RP 150.1.8.8, via bootstrap, priority 0, hash value 1364246456
Rack1R5#
---------------------------------------------------------------
Now configure speakers on both systems to join these groups.
R4:
interface Loopback0
ip pim sparse-mode
ip igmp join-group 239.1.1.1
ip igmp join-group 239.1.1.2
SW3:
interface Loopback0
ip pim sparse-mode
ip igmp join-group 239.1.1.1
ip igmp join-group 239.1.1.2
---------------------------------------------------------------
Initially, every router joins the shared tree in its own domain.
Rack1SW3#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,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:00:42/00:02:35, RP 150.1.7.7, flags: SJCL
Incoming interface: Vlan79, RPF nbr 155.1.79.7
Outgoing interface list:
Loopback0, Forward/Sparse, 00:00:42/00:02:35
(*, 239.1.1.2), 00:00:41/00:02:36, RP 150.1.7.7, flags: SJCL
Incoming interface: Vlan79, RPF nbr 155.1.79.7
Outgoing interface list:
Loopback0, Forward/Sparse, 00:00:41/00:02:36
(*, 224.0.1.40), 22:10:49/00:02:20, RP 150.1.7.7, flags: SJCL
Incoming interface: Vlan79, RPF nbr 155.1.79.7
Outgoing interface list:
Vlan9, Forward/Sparse, 22:10:49/00:02:20
Rack1SW3#
Rack1R4#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,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:01:55/00:02:46, RP 150.1.5.5, flags: SJCL
Incoming interface: Serial0/1, RPF nbr 155.1.45.5
Outgoing interface list:
Loopback0, Forward/Sparse, 00:01:55/00:02:46
(*, 239.1.1.2), 00:01:54/00:02:54, RP 150.1.8.8, flags: SJCL
Incoming interface: Serial0/1, RPF nbr 155.1.45.5
Outgoing interface list:
Loopback0, Forward/Sparse, 00:01:54/00:02:54
(*, 224.0.1.40), 22:14:22/00:02:35, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0/0, Forward/Sparse, 22:14:22/00:02:35
Rack1R4#
--------------------------------------------
Enable MSDP debugging on SW1 and start pinging group 239.1.1.1 from SW4:
Rack1SW1#debug ip msdp detail
MSDP Detail debugging is on
Rack1SW4#ping 239.1.1.1 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:
Reply to request 0 from 155.1.79.9, 68 ms
Reply to request 0 from 155.1.45.4, 135 ms
Reply to request 0 from 155.1.45.4, 126 ms
Reply to request 0 from 155.1.79.9, 118 ms
Reply to request 0 from 155.1.79.9, 101 ms
Reply to request 0 from 155.1.45.4, 76 ms
Reply to request 1 from 155.1.45.4, 42 ms
Reply to request 1 from 155.1.79.9, 109 ms
Reply to request 1 from 155.1.79.9, 101 ms
Reply to request 1 from 155.1.45.4, 76 ms
Reply to request 1 from 155.1.45.4, 59 ms
Reply to request 1 from 155.1.79.9, 51 ms
Notice that SW1 received Source Active messages for the sources on SW4.
Since SW4 uses all of its PIM-enabled interfaces to source multicast, there are
multiple SA messages for every registered source. The actual source is
registered with the RP located in AS 200.
----------------------------------------------------
Rack1SW1#
Nov 30 16:42:18.959 TPE: MSDP(0): Received 120-byte TCP segment from 150.1.5.5
Nov 30 16:42:18.959 TPE: MSDP(0): Append 120 bytes to 0-byte msg 22 from 150.1.5.5, qs 1
Nov 30 16:42:18.959 TPE: MSDP(0): WAVL Insert SA Source 155.1.10.10 Group 239.1.1.1 RP 150.1.5.5 Successful
Nov 30 16:42:18.959 TPE: MSDP(0): Forward decapsulated SA data for (155.1.10.10, 239.1.1.1) on Vlan79
Nov 30 16:42:18.967 TPE: MSDP(0): Received 120-byte TCP segment from 150.1.5.5
Nov 30 16:42:18.967 TPE: MSDP(0): Append 120 bytes to 0-byte msg 23 from 150.1.5.5, qs 1
Nov 30 16:42:18.967 TPE: MSDP(0): WAVL Insert SA Source 155.1.108.10 Group 239.1.1.1 RP 150.1.5.5 Successful
Rack1SW1#
Nov 30 16:42:18.967 TPE: MSDP(0): Forward decapsulated SA data for (155.1.108.10, 239.1.1.1) on Vlan79
Nov 30 16:42:18.976 TPE: MSDP(0): Received 120-byte TCP segment from 150.1.5.5
Nov 30 16:42:18.976 TPE: MSDP(0): Append 120 bytes to 0-byte msg 24 from 150.1.5.5, qs 1
Nov 30 16:42:18.976 TPE: MSDP(0): WAVL Insert SA Source 150.1.10.10 Group 239.1.1.1 RP 150.1.5.5 Successful
Nov 30 16:42:18.976 TPE: MSDP(0): Forward decapsulated SA data for (150.1.10.10, 239.1.1.1) on Vlan79
Rack1SW1#
------------------------------------
Now check that SW3 has joined the SPTs towards the sources in different the
AS. Notice that RPF information for these sources is taken from MBGP updates,
not the unicast routing table.
----------------------------------------------
Rack1SW3#show ip mroute 239.1.1.1
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,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:08:31/00:02:26, RP 150.1.7.7, flags: SJCL
Incoming interface: Vlan79, RPF nbr 155.1.79.7
Outgoing interface list:
Loopback0, Forward/Sparse, 00:08:31/00:02:50
(150.1.10.10, 239.1.1.1), 00:00:38/00:02:26, flags: LJT Incoming interface: Vlan79, RPF nbr 155.1.79.7, Mbgp
Outgoing interface list:
Loopback0, Forward/Sparse, 00:00:38/00:02:50
(155.1.108.10, 239.1.1.1), 00:00:38/00:02:26, flags: LJT Incoming interface: Vlan79, RPF nbr 155.1.79.7, Mbgp
Outgoing interface list:
Loopback0, Forward/Sparse, 00:00:38/00:02:50
(155.1.10.10, 239.1.1.1), 00:00:38/00:02:26, flags: LJT Incoming interface: Vlan79, RPF nbr 155.1.79.7, Mbgp
Outgoing interface list:
Loopback0, Forward/Sparse, 00:00:39/00:02:50
Rack1SW3#
----------------------------
Now make sure the SPTs are built across the Frame-Relay link, as this is the
preferred path for multicast traffic. Use the show ip mroute command to
accomplish this.
-----------------------------------
Rack1SW1#show ip mroute 239.1.1.1
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,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:10:18/00:03:08, RP 150.1.7.7, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Vlan79, Forward/Sparse, 00:10:18/00:03:08
(155.1.10.10, 239.1.1.1), 00:01:29/00:01:31, flags: M
Incoming interface: FastEthernet1/0/3, RPF nbr 155.1.37.3, Mbgp
Outgoing interface list:
Vlan79, Forward/Sparse, 00:01:29/00:03:08
(155.1.108.10, 239.1.1.1), 00:01:29/00:01:31, flags: M
Incoming interface: FastEthernet1/0/3, RPF nbr 155.1.37.3, Mbgp
Outgoing interface list:
Vlan79, Forward/Sparse, 00:01:29/00:03:08
(150.1.10.10, 239.1.1.1), 00:01:29/00:01:31, flags: M
Incoming interface: FastEthernet1/0/3, RPF nbr 155.1.37.3, Mbgp
Outgoing interface list:
Vlan79, Forward/Sparse, 00:01:29/00:03:07
Rack1SW1#
-----------------
Rack1R3#show ip mroute 239.1.1.1
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,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:07:54/stopped, RP 150.1.7.7, flags: SP
Incoming interface: FastEthernet0/0, RPF nbr 155.1.37.7
Outgoing interface list: Null
(155.1.10.10, 239.1.1.1), 00:03:21/00:00:08, flags:
Incoming interface: Serial1/0.1, RPF nbr 155.1.0.5, Mbgp
Outgoing interface list:
FastEthernet0/0, Forward/Sparse, 00:03:21/00:03:05
(155.1.108.10, 239.1.1.1), 00:03:23/00:00:06, flags:
Incoming interface: Serial1/0.1, RPF nbr 155.1.0.5, Mbgp
Outgoing interface list:
FastEthernet0/0, Forward/Sparse, 00:03:23/00:03:03
(150.1.10.10, 239.1.1.1), 00:03:23/00:00:06, flags:
Incoming interface: Serial1/0.1, RPF nbr 155.1.0.5, Mbgp
Outgoing interface list:
FastEthernet0/0, Forward/Sparse, 00:03:23/00:03:05
Rack1R3#
----------------------
You may also use the mtrace command, to trace the multicast delivery tree from
the leaf to the root. The first parameter is the source address and the second
parameter is the destination group. This command queries the neighbors for the
upstream multicast path and tells you the method used for RPF check at every
router. Notice that inside AS 100 the RPF checks are performed using MBGP.
-----------------------------
Rack1R6#mtrace 150.1.10.10 239.1.1.1
Type escape sequence to abort.
Mtrace from 150.1.10.10 to 155.1.67.6 via group 239.1.1.1
From source (?) to destination (?)
Querying full reverse path...
0 155.1.67.6
-1 155.1.67.6 PIM/MBGP [150.1.10.0/24]
-2 155.1.67.7 PIM/MBGP Reached RP/Core [150.1.10.0/24]
-3 155.1.37.3 PIM/MBGP [150.1.10.0/24]
-4 155.1.0.5 [AS 200] PIM Reached RP/Core [150.1.10.0/24]
-5 155.1.58.8 [AS 200] PIM [150.1.10.0/24]
-6 155.1.108.10 [AS 200] PIM [150.1.10.0/24]
Rack1R6#
Rack1SW3#mtrace 150.1.10.10 239.1.1.1
Type escape sequence to abort.
Mtrace from 150.1.10.10 to 155.1.79.9 via group 239.1.1.1
From source (?) to destination (?)
Querying full reverse path...
0 155.1.79.9
-1 155.1.79.9 PIM/MBGP [150.1.10.0/24]
-2 155.1.79.7 PIM/MBGP Reached RP/Core [150.1.10.0/24]
-3 155.1.37.3 PIM/MBGP [150.1.10.0/24]
-4 155.1.0.5 [AS 200] PIM Reached RP/Core [150.1.10.0/24]
-5 155.1.58.8 [AS 200] PIM [150.1.10.0/24]
-6 155.1.108.10 [AS 200] PIM [150.1.10.0/24]
Rack1SW3#
-----------------------------
You may now repeat the tests for the group 239.1.1.2 and see that it works as well.
-----------------------------
Rack1SW4#ping 239.1.1.2 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 239.1.1.2, timeout is 2 seconds:
Reply to request 0 from 155.1.79.9, 33 ms
Reply to request 0 from 155.1.45.4, 84 ms
Reply to request 0 from 155.1.45.4, 75 ms
Reply to request 0 from 155.1.79.9, 67 ms
Reply to request 0 from 155.1.79.9, 58 ms
Reply to request 0 from 155.1.45.4, 50 ms
-----------------------------
Rack1SW3#mtrace 150.1.10.10 239.1.1.2
Type escape sequence to abort.
Mtrace from 150.1.10.10 to 155.1.79.9 via group 239.1.1.2
From source (?) to destination (?)
Querying full reverse path...
0 155.1.79.9
-1 155.1.79.9 PIM/MBGP [150.1.10.0/24]
-2 155.1.79.7 PIM/MBGP Reached RP/Core [150.1.10.0/24]
-3 155.1.37.3 PIM/MBGP [150.1.10.0/24]
-4 155.1.0.5 [AS 200] PIM [150.1.10.0/24]
-5 155.1.58.8 [AS 200] PIM Reached RP/Core [150.1.10.0/24]-6 155.1.108.10 [AS 200] PIM [150.1.10.0/24]
Rack1SW3#
-----------------------------
沒有留言:
張貼留言