Wednesday 1 January 2020

Multicast Source Distribution Protocol




Note all the router preconfigured with the ipv4 address and OSPF is used as the routing protocol, all routers are in area 0. PIM sparse dense mode it running.
IP ADDRESS: Fast Ethernet 155.1.XY.X/24
                       Loopback         X.X.X.X/32
Where X & Y is the router host number.(X <Y)

Lets enable the R3 as BSR and R4 as the candidate RP.
R3(config)#ip pim bsr-candidate loopback 0
&
R4(config)#ip pim rp-candidate loopback 0

As we already discussed the PIM BSR the function we are not going to discuss. Lets check the AS100 all router populated with RP address via BSR.

R1#show ip pim rp mapping
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
  RP 4.4.4.4 (?), v2
    Info source: 3.3.3.3 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:07:44, expires: 00:02:28
R1#
R2#show ip pim rp mapping
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
  RP 4.4.4.4 (?), v2
    Info source: 3.3.3.3 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:08:07, expires: 00:02:06
R2#
R3#show ip pim rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)
Group(s) 224.0.0.0/4
  RP 4.4.4.4 (?), v2
    Info source: 155.1.34.4 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:08:11, expires: 00:02:18
R3#

R4#show ip pim rp mapping
PIM Group-to-RP Mappings
This system is a candidate RP (v2)
Group(s) 224.0.0.0/4
  RP 4.4.4.4 (?), v2
    Info source: 3.3.3.3 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:08:18, expires: 00:01:52
R4#
R5#show ip pim rp mapping
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
  RP 4.4.4.4 (?), v2
    Info source: 3.3.3.3 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:08:24, expires: 00:01:46
R5#

Under AS200 we should not get any RP info as still now we didn’t configure any RP over there. So lets check the Router under AS200

R6#show ip pim rp mapping
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
  RP 4.4.4.4 (?), v2
    Info source: 3.3.3.3 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:12:27, expires: 00:01:46
R6#

This behavior is   what we don’t want. As PIM is not control by AS, PIM can exchange the between the AS. This is the reason hop by hop PIM updated the RP info in AS200 also. We can filter the PIM update form passing out the AS.

R3(config-if)#ip pim bsr-border
R4(config-if)#ip pim bsr-border
R5(config-if)#ip pim bsr-border

Lets clear the RP mapping in AS200.
R6#show ip pim rp mapping
PIM Group-to-RP Mappings

R7#show ip pim rp mapping
PIM Group-to-RP Mappings

R8#show ip pim rp mapping
PIM Group-to-RP Mappings

See as we enabled the bsr-border RP info not getting the updated from PIM process.

So lets enable the BSR and RP under AS200 routers.

R6(config)#ip pim rp-candidate loopback 0

R6(config)#int ran fa0/0 , fa1/0 , fa2/0
R6(config-if-range)#ip pim bsr-border

R7(config)#ip pim bsr-candidate  lo0

Under the AS200 RP info also populated via AS200 BSR.
R6#show ip pim rp mapping
PIM Group-to-RP Mappings
This system is a candidate RP (v2)
Group(s) 224.0.0.0/4
  RP 6.6.6.6 (?), v2
    Info source: 7.7.7.7 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:00:24, expires: 00:02:18
R6#

R7#show ip pim rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)
Group(s) 224.0.0.0/4
  RP 6.6.6.6 (?), v2
    Info source: 155.1.67.6 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:00:34, expires: 00:01:55
R7#

R8#show ip pim rp mapping
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
  RP 6.6.6.6 (?), v2
    Info source: 7.7.7.7 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:00:48, expires: 00:01:54
R8#

Now Lets have the source and the receiver. Here we are going to configure the R1 as the source and R8 as the receiver.

R1#ping
Protocol [ip]:
Target IP address: 224.1.1.1
Repeat count [1]: 10000000
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: yes
Interface [All]: loopback0
Time to live [255]:
Source address: 1.1.1.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 10000000, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
…….....

From R1(source)------R2(First hop router)-------R3(transits router)-----------R4(RP)

As the first hop router will be getting the feed it will update the (S,G) entry in the mroute table.

R2#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

(*, 224.1.1.1), 00:02:29/stopped, RP 4.4.4.4, flags: SPF
  Incoming interface: FastEthernet1/0, RPF nbr 155.1.23.3
  Outgoing interface list: Null

(155.1.12.1, 224.1.1.1), 00:02:29/00:00:37, flags: PFT
  Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(*, 224.0.1.40), 00:41:54/00:02:42, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Loopback0, Forward/Sparse, 00:42:01/00:02:34

R3 the transit router will not be knowing any info regarding the feed source.

R3#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

(*, 224.0.1.40), 00:43:54/00:02:44, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Loopback0, Forward/Sparse, 00:43:54/00:02:44

R4 the RP knows about the source by PIM register msg. It will update the Mroute entry with (S,G)

R4#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

(*, 224.1.1.1), 00:03:58/stopped, RP 4.4.4.4, flags: SP
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

(1.1.1.1, 224.1.1.1), 00:03:58/00:01:02, flags: P
  Incoming interface: FastEthernet0/0, RPF nbr 155.1.34.3
  Outgoing interface list: Null

(*, 224.0.1.40), 00:05:34/00:02:12, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Loopback0, Forward/Sparse, 00:05:42/00:02:04

Note: The OIL has Null this is because receiver is not know still. So lets enable the receiver that is R8.

R8(config)#int lo0
R8(config-if)#ip igmp join-group 224.1.1.1

Lets check the mroute entry on R6 and R7.
R7#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

(*, 224.1.1.1), 00:06:57/00:03:23, RP 6.6.6.6, flags: S
  Incoming interface: FastEthernet0/0, RPF nbr 155.1.67.6
  Outgoing interface list:
    FastEthernet1/0, Forward/Sparse, 00:06:57/00:03:23

(*, 224.0.1.40), 00:49:19/00:02:20, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Loopback0, Forward/Sparse, 00:49:19/00:02:20
R7#

R6#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

(*, 224.1.1.1), 00:07:03/00:03:19, RP 6.6.6.6, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet3/0, Forward/Sparse, 00:07:03/00:03:19

(*, 224.0.1.40), 00:50:51/00:02:12, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Loopback0, Forward/Sparse, 00:50:51/00:02:12
R6#

Note: Incoming interface list is Null. Its because this RP(R6) don’t know about the source.
As R6 is our RP but now the problem 2 RP's are there one RP(R4) knows about the source and second RP(R6) knows about the receiver. We need some protocol that can communicate between this RP's and get the source/receiver info and build the complete tree for the feed.
MSDP is a protocol which run between the RP's and get the control plane to build the tree.

But before we enable the MSDP lets enable shut the link between R3-R6 & R5-R6. Reason we will discuss later.
R6(config-if)#int fa2/0
R6(config-if)#sh
R6(config-if)#int fa0/0
R6(config-if)#sh

Lets enable the MSDP now.
R6(config)#ip msdp peer 4.4.4.4 connect-source loopback 0
R4(config)#ip msdp peer 6.6.6.6 connect-source loopback 0

MSDP peer uses TCP session to form the peer.





Now after the TCP session established. MSDP peer we will update themselves





R4 sending the Source Active msg inside the TCP port number 639.
As R4 knows about the Source and the group. Its sending the (S,G) (224.1.1.1 , 1.1.1.1)


R6#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

(*, 224.1.1.1), 00:25:56/00:03:11, RP 6.6.6.6, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet3/0, Forward/Sparse, 00:25:56/00:03:11

(1.1.1.1, 224.1.1.1), 00:07:32/00:03:29, flags: MT
  Incoming interface: FastEthernet1/0, RPF nbr 155.1.46.4
  Outgoing interface list:
    FastEthernet3/0, Forward/Sparse, 00:07:32/00:03:11
R6#

R6 updated the S,G info. Note MT, M means MSDP and T means SPT tree.

As we know we shutdown the R3-R6 and R5-R6 link. Before we enable just check the mtrace for 1.1.1.1 from R8.
R8#mtrace 1.1.1.1
Type escape sequence to abort.
Mtrace from 1.1.1.1 to 155.1.78.8 via RPF
From source (?) to destination (?)
Querying full reverse path...
 0  155.1.78.8
-1  155.1.78.8 PIM  [1.1.1.1/32]
-2  155.1.78.7 PIM  [1.1.1.1/32]
-3  155.1.67.6 PIM  [1.1.1.1/32]
-4  155.1.46.4 PIM  [1.1.1.1/32]
-5  155.1.34.3 PIM  [1.1.1.1/32]
-6  155.1.23.2 PIM  [1.1.1.1/32]
-7  155.1.12.1 PIM  [1.1.1.1/32]
-8  1.1.1.1

Now unshut the R5-R6 link and check the mtrace.
R6(config)#int fa0/0
R6(config-if)#no sh

R8#mtrace 1.1.1.1
Type escape sequence to abort.
Mtrace from 1.1.1.1 to 155.1.78.8 via RPF
From source (?) to destination (?)
Querying full reverse path...
 0  155.1.78.8
-1  155.1.78.8 PIM  [1.1.1.1/32]
-2  155.1.78.7 PIM  [1.1.1.1/32]
-3  155.1.67.6 PIM  [1.1.1.1/32]
-4  155.1.46.4 PIM  [1.1.1.1/32]
-5  155.1.34.3 PIM  [1.1.1.1/32]
-6  155.1.23.2 PIM  [1.1.1.1/32]
-7  155.1.12.1 PIM  [1.1.1.1/32]
-8  1.1.1.1

So no effect but lets unshut the Link between R3-R6 and note the mtrace path till the source.
R6(config)#int fa2/0
R6(config-if)#no sh

R8#mtrace 1.1.1.1
Type escape sequence to abort.
Mtrace from 1.1.1.1 to 155.1.78.8 via RPF
From source (?) to destination (?)
Querying full reverse path...
 0  155.1.78.8
-1  155.1.78.8 PIM  [1.1.1.1/32]
-2  155.1.78.7 PIM  [1.1.1.1/32]
-3  155.1.67.6 PIM  [1.1.1.1/32]
-4  155.1.36.3 PIM  [1.1.1.1/32]
-5  155.1.23.2 PIM  [1.1.1.1/32]
-6  155.1.12.1 PIM  [1.1.1.1/32]
-7  1.1.1.1

This is what I want to show the now the path is different its because the shortest path. The feed should not be must to route via RP.


As soon as R6 find the shortest path to reach the R1(source) R6 will send the PIM join msg to the upstream router (R3).


At last we are getting the feed :)
Reply to request 1359 from 155.1.78.8, 1080 ms
Reply to request 1360 from 155.1.78.8, 900 ms
Reply to request 1361 from 155.1.78.8, 1056 ms
Reply to request 1362 from 155.1.78.8, 980 ms
Reply to request 1363 from 155.1.78.8, 860 ms

No comments:

Post a Comment