Monday, February 13, 2012

MULTICAST ANYCAST MSDP

MSDP

  • It is open standard
  • Brought in to allow RP from different AS to communicate to each other
  • Typically host and source register with RP in sparse mode. If we have multiple RP how is RP 1 going to know what sources RP2 has this is the function MSDP to allow advertisement of sources between RP
  • It Joins host and sources across Multiple RPS
  • RP's form a connection on tcp 639
  • When a RP learns of new multicast souce via a PIM Register message the rp encapsulates the first datapacket in the source Active and sends it to the MSDP Peer
  • The peer checks to see if any members of the SA group is being requested this would be done by checking for (*,G)
  • If there is noone requesting it does not do anything if there is it sends a (S,G) towards the source
  • The original RP will keep sending out every 60 seconds the group so if for example initial there was no host requesting but one then came online the (*,G) would be created on the RP and it would then wait for the original RP to send advertising for the group
  • We can implement SA cache where when it recieves the initial advertisement it caches so it does not have to wait up to 60 seconds for the original RP to send
Commands

ip msdp peer 150.28.3.3 connect-source lo1 - creating a peer of another rp with ip 150.28.3.3 we will use source of the lo

ip msdp cache-sa-state - cache msdp sa

sh ip msdp peers

sh ip msdp cache
Anycast RP

  • Allow load balancing and fault tolerance for RP
  • All RP advertise the same loopback /32 address
  • All RP peer with each other in full mesh
  • Hosts and Source will closest RP based on the best metric IGP Route. 

LAB


We will configure R5 and R4 to be the anycast rp


r5
===

so we configure r5 lo0 as 5.5.5.5 and enable sparse mode
r5(config)#int lo0
r5(config-if)#ip address 5.5.5.5 255.255.255.25
r5(config-if)#ip pim sparse
r5(config-if)#
r5(config)#router eigrp 1
r5(config-router)#network 5.5.5.5 0.0.0.0
r5(config-router)#

we advertise this in the igp

Also config this bsr as candidate
r5(config)#ip pim bsr-cand lo0
and rp candidate

r5(config)#ip pim rp-candidate lo0

r4
---
r4(config)#int lo2
r4(config-if)#ip address 5.5.5.5 255.255.255.255r4(config-if)#ip pim sparse
r4(config-if)#router eigrp 1
r4(config-router)#network 5.5.5.5 0.0.0.0
r4(config-router)#exit
r4(config)#ip pim bsr-candid lo2
r4(config)#ip pim rp-candi lo2
r4(config)#

It is important that the duplicate address are not router id our at least one isnt as eigrp would reject

OK see this is the anycast address set up ok lets look at from

s1 perspective
----------------
S1 is going to go to r4 to register or join depending whether it source or reciever
s1#traceroute 5.5.5.5
Type escape sequence to abort.
Tracing the route to 5.5.5.5
1 155.0.67.6 0 msec 0 msec 0 msec
  2 155.0.146.4 0 msec *  0 msec
s1#
S4 Perspective
---------------
s4#traceroute 5.5.5.5
Type escape sequence to abort.
Tracing the route to 5.5.5.5
  1 155.0.108.2 0 msec 0 msec 0 msec
  2 155.0.58.5 0 msec *  0 msec
s4 will go to r5

OK so the anycast is setup but we have an issue what will happen if sw4 originates source multicast traffic so it will register with r5
on sw1 wants to recieve the traffic it will send the join to r4 so they are disjointed
so will not work

we need something communicating between r4 and r5 to keep them in synch of what sources are availible this is msdp role

r5
---

we specify r4 as a peer  and it is important we do not use 5.5.5.5 the duplicate address so i am using s0/1/0 as the source and s0/1 on r4 as the destination
r5(config)#ip msdp peer 155.0.45.4 connect-source s0/1/0

we need to do the same on r4

r4
--
r4(config)#ip msdp peer 155.0.45.5 connect-source s0/1/0
r4(config)#
*Feb 13 23:03:23.967: %MSDP-5-PEER_UPDOWN: Session to peer 155.0.45.5 going up


r4#sh ip msdp peer
MSDP Peer 155.0.45.5 (?), AS ?
  Connection status:
    State: Up, Resets: 0, Connection source: Serial0/1/0 (155.0.45.4)
    Uptime(Downtime): 00:00:19, Messages sent/received: 0/1
    Output messages discarded: 0
    Connection and counters cleared 00:00:19 ago
  SA Filtering:
    Input (S,G) filter: none, route-map: none
    Input RP filter: none, route-map: none
    Output (S,G) filter: none, 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
  MD5 signature protection on MSDP TCP connection: not enabled
r4#

ok so we have this setup lets set it up we will originate a join from s1

s1
---

s1(config)#int vlan 79
s1(config-if)#ip igmp join-group 227.1.1.1
s1(config-if)#

this join will be converted to pim join and be sent to r4
r4
---
r4#sh 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
(*, 227.1.1.1), 00:00:41/00:02:48, RP 5.5.5.5, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse, 00:00:41/00:02:48
(*, 224.0.1.40), 01:27:02/00:02:02, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/1/0, Forward/Sparse, 01:26:59/00:00:00


r5
---
does not have the join route
r5#sh 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), 01:27:29/00:02:38, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/0/0, Forward/Sparse, 01:22:49/00:02:38
    Serial0/1/0, Forward/Sparse, 01:27:26/00:00:00
r5#

s4
---
s4#ping 227.1.1.1 repeat 20
Type escape sequence to abort.
Sending 20, 100-byte ICMP Echos to 227.1.1.1, timeout is 2 seconds:
Reply to request 0 from 155.0.67.1, 41 ms
Reply to request 1 from 155.0.67.1, 34 ms
Reply to request 2 from 155.0.67.1, 34 ms
Reply to request 3 from 155.0.67.1, 34 ms
Reply to request 4 from 155.0.67.1, 34 ms

we can see it is working we will look at the tables

r5
---
Basically has happened is that r5 created the (S,G) and replicated it to r4 and then it came active in the r4 table

r5#sh 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
(*, 227.1.1.1), 00:00:43/stopped, RP 5.5.5.5, flags: SP
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null
(155.0.108.4, 227.1.1.1), 00:00:43/00:03:26, flags: TA
  Incoming interface: FastEthernet0/0, RPF nbr 155.0.58.2
  Outgoing interface list:
    Serial0/1/0, Forward/Sparse, 00:00:43/00:02:46
(*, 224.0.1.40), 01:29:11/00:02:56, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/0/0, Forward/Sparse, 01:24:31/00:02:56
    Serial0/1/0, Forward/Sparse, 01:29:08/00:00:00
r5#

r4#sh 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
(*, 227.1.1.1), 00:03:25/00:03:00, RP 5.5.5.5, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse, 00:03:25/00:03:00
(155.0.108.4, 227.1.1.1), 00:01:19/00:02:51, flags: MT
  Incoming interface: Serial0/1/0, RPF nbr 155.0.45.5
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse, 00:01:19/00:03:09
(*, 224.0.1.40), 01:29:46/00:02:19, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/1/0, Forward/Sparse, 01:29:43/00:00:00
r4#

Lets look at this from a different perspective we will do the multicast traffic flowing first then a join comes online

s4
---
s4#ping 226.1.1.6 repeat 100
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 226.1.1.6, timeout is 2 seconds:
....

on r5
------
r5#sh 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
(*, 227.1.1.1), 00:05:08/00:02:02, RP 5.5.5.5, flags: SP
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null
(*, 226.1.1.6), 00:00:33/stopped, RP 5.5.5.5, flags: SP
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null
(155.0.108.4, 226.1.1.6), 00:00:33/00:02:26, flags: PA
  Incoming interface: FastEthernet0/0, RPF nbr 155.0.58.2
  Outgoing interface list: Null
(*, 224.0.1.40), 01:33:36/00:02:30, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/0/0, Forward/Sparse, 01:28:56/00:02:30
    Serial0/1/0, Forward/Sparse, 01:33:33/00:00:00

we have the registration

r4
---
r4#sh 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
(*, 227.1.1.1), 00:07:26/00:02:55, RP 5.5.5.5, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse, 00:07:26/00:02:55
(*, 224.0.1.40), 01:33:46/00:02:18, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/1/0, Forward/Sparse, 01:33:43/00:00:00

we do not see (S,226.1.1.6)

But we have recieved this from r5 waiting for when we have a listner

r4#sh ip msdp sa-cache
MSDP Source-Active Cache - 2 entries
(155.0.108.4, 226.1.1.6), RP 5.5.5.5, AS ?,00:01:23/00:05:37, Peer 155.0.45.5
(155.0.108.4, 227.1.1.1), RP 5.5.5.5, AS ?,00:05:57/00:02:50, Peer 155.0.45.5

Lets add reciever on s1

s1
---
s1(config)#int vlan79
s1(config-if)#ip igmp join-group 226.1.1.6
s1(config-if)#

r4
---
NOw on the mroute it has moved from cache into the mroute table as we have active listner

r4#sh 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
(*, 227.1.1.1), 00:12:21/00:02:55, RP 5.5.5.5, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse, 00:12:21/00:02:55
(*, 226.1.1.6), 00:00:47/stopped, RP 5.5.5.5, flags: S
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse, 00:00:47/00:02:42
(155.0.108.4, 226.1.1.6), 00:00:47/00:03:27, flags: MT
  Incoming interface: Serial0/1/0, RPF nbr 155.0.45.5
  Outgoing interface list:
    FastEthernet0/1, Forward/Sparse, 00:00:47/00:02:43
(*, 224.0.1.40), 01:38:42/00:02:24, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    Serial0/1/0, Forward/Sparse, 01:38:38/00:00:00

No comments:

Post a Comment