Wednesday, 1 January 2020

Bidirectional PIM



Today we are going to discuss about the BIDIRECTIONAL PIM.
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)

Bi-Dir is kind of the opposite Source specific multicast, everything is a shared-tree, but traffic can flow bidirectional. That we will discuss later

What's the reason of using Bidirectional ??
The answer is think a massive network of multicast traffic, with many sources and many receivers (a many-to-many multicast application network). A network like this would quickly add hundreds, even thousands and tens of thousands of (S,G), multicast entries in the mroute table. One of the major applications for Multicast is financial services, stock markets etc, and in today's climate of HFT (High-Frequency-Trading), latency is a big no-no.

All those multicast entries in the mroute table will slow the switch down, and start to make the switch inefficient, thus, we have Bidirectional PIM, the idea is that if everything uses a shared tree, we can reduce the number of mroute table entries down to just those with (*,G), when using one multicast group address with multiple sources, this efficiency really starts making sense.

Bidirectional PIM can be assigned via static and BSR.
First we need to enable ip pim bidir-enable in all the routers

Rx(config)#ip pim bidir-enable

As we are going to use BSR. Here we choose R2 as our BSR and R3 as Candidate RP. First lets enable that
R2(config)#ip pim bsr-candidate loopback 0

R3(config)#ip pim rp-candidate loopback 0 bidir

R2#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 3.3.3.3 (?), v2, bidir
    Info source: 155.1.23.3 (?), via bootstrap, priority 0, holdtime 150
         Uptime: 00:01:40, expires: 00:01:48

So as far now we are ok we found the RP via BSR. Let generate some multicast feed

R1#ping
Protocol [ip]:
Target IP address: 224.5.5.5
Repeat count [1]: 100000000
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
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 100000000, 100-byte ICMP Echos to 224.5.5.5, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
.............................................

Lets check the path and mroute table
R2#show ip mroute 224.5.5.5 | be Int
 Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.5.5.5), 00:10:47/00:02:57, RP 3.3.3.3, flags: BP
  Bidir-Upstream: FastEthernet1/1, RPF nbr 155.1.23.3
  Outgoing interface list:
    FastEthernet1/1, Bidir-Upstream/Sparse, 00:10:47/00:00:00

See R2 receiving the multicast feed as unicast packet. Hence R2 learns that we have a group 224.5.5.5 and make an entry (*,224.5.5.5). This stream sent upside towards the RP via Fa1/1. Now check on RP R3

R3#show ip mroute 224.5.5.5 | be Int
 Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.5.5.5), 00:00:51/00:02:08, RP 3.3.3.3, flags: BP
  Bidir-Upstream: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

Hence this is our RP as we don’t have any receiver its prune. Lets create the receiver

R6(config)#int lo0
R6(config-if)#ip igmp join-group 224.5.5.5

As soon as we had a receiver our ping getting the success
R1#
Reply to request 581 from 155.1.56.6, 656 ms
Reply to request 582 from 155.1.56.6, 788 ms
Reply to request 583 from 155.1.56.6, 576 ms
Reply to request 584 from 155.1.56.6, 564 ms


No comments:

Post a Comment