PIM-SM Deployment

The multicast design for GÉANT2 is based on one PIM Sparse Mode (PIM-SM) domain for the whole core backbone. Anycast RP is deployed to provide resilience in the RP without having to use Auto-RP or BSR (as described in the IETF draft linked alongside).

PIM-SM rendezvous points (RPs) have to co-operate in order to discover active sources and set up forwarding trees. MSDP is used to spread the knowledge of active sources within a multicast group. Source-specific (S - multicast source - and G - multicast group) joins are used to set up forwarding from sources towards the interested receivers. No inter-PIM-domain shared forwarding tree is created.

GÉANT2-Specific Guidelines

PIM-SMv2 is enabled on all GÉANT2 routers, on all interfaces (backbone and peers).

In GÉANT2, on Juniper routers, the routing table associated with PIM (for exported and imported routes) is inet.2. By default, JUNOS uses inet.0 to perform the RPF check. GÉANT2 uses rib-groups to change this behaviour. Multicast rib-group is created to populate inet.2 with MBGP and ISIS routes. The following configuration is needed in order to tell PIM to use inet.2 for the RPF.

[Edit protocols pim]
rib-group {
    inet multicast;
}
[edit routing-options]
rib-groups {
    multicast {
        export-rib inet.2;
        import-rib inet.2;
    }

Note: No RP discovery and election mechanism is used. RP(s) are statically assigned.

PIM Bootstrap Message Filtering

PIM bootstrap messages in IPv4 are filtered out. NRENs with a Juniper router should apply:

[edit protocols]
            pim { 
                rp { 
                     bootstrap-import reject-bsr-inet-only;
                     bootstrap-export reject-bsr-inet-only;; 
                   } 
              } 
            } 
[edit policy-options]
    policy-statement reject-bsr-inet-only {
        term reject-BSR-inet {
            from  {
                  family inet;
 interface so-x/x/x; 
             }
           then reject;
        }
        term accept-BSR-inet6 {
            from family inet6;
            then accept;
        }
    }

on the access interface(s) to avoid the flowing of PIM bootstrap messages across the domain. IPv6 BSR (BootStrap Router) messages should be allowed as the interdomain multicast IPv6 service is based on a single PIM domain.

Examples

Juniper Example for RP Router

[edit]
interfaces { 
 lo0 { 
  description "PIM RP"; /* Use separate lo address 
      for future us of Anycast-RP */ 
  unit 0 { 
   family inet { 
   address LOOPBACK_0/32 { /* unique router ID */ 
    prefered ; 
   } 
   address LOOPBACK_1/32; # RP address 
            } 
     } 
     } 
}
[edit protocols]
 igmp { 
  interface all { 
   version 3; # Minimum version 2 or higher, use 3 if it possible 
  } 
 }
 pim { 
   rp { 
   local { 
    address LOOP_BACK_1; /*Looback_1 for future 
                                             anycasting*/ 
   } 
  } 
 interface all { 
  mode sparse; 
            version 2; 
 } 
} 
}


Juniper Configuration for Non-RP Routers 

[edit protocols] 
 igmp { 
  interface all { 
   version 3; # Minimum version 2 or higher, use 3 if it possible 
  }           
 } 
     pim { 
          rp { 
             static {  /* static; NO RP discovery mechanism used */ 
                  address LOOP_BACK1_OF_RP;{/* The address of lo1 on 
                                                  the RP. */ 
                      version 2;   /* PIM version 2 explicitly */ 
                  } 
   } 
  } 
       interface all { 
        mode sparse;    /* sparse mode on all interfaces */ 
             version 2;  /* Sets the PIM v2 on all interfaces. */ 
       } 
     } 
}