Next Generation Multicast VPN (NG-MVPN) configuration example

Next Generation Multicast VPN (NG-mVPN)

NG-mVPN is a next-generation multicast distribution technology that is predominantly used in service provider networks and addresses scalability and manageability issues associated with the previous generation of SP Multicast VPN (Draft Rosen).

In this article, we will go through configuration steps you’d need to undertake to configure NG-mVPN in a Juniper environment. We will also discuss BGP advertisements that are associated with multicast sources and receivers connected to the network.

Lab Setup

We are setting up simple MPLS network with three PE routers and a single P router.

Multicast Source will be directly connected to PE1, while receivers are connected to PE2 and PE3.

NG-MVPN Lab Topology
NG-MVPN Lab Topology

PE1 is configured as the Rendezvous Point (RP) for customer’s VRF-A. In a real production implementation, you can implement distributed RP model, where every PE device serves as an RP for customer’s VRF.

It’s important to note that there is no ‘native’ multicast running between PE and P devices. All customer multicast traffic (C-Multicast) will be encapsulated in MPLS packers and will traverse the network leveraging point-to-multipoint LSPs.

Configuration Steps

The following things need to be configured for NG-MVPN to work:
On the P devices:

  • P-to-PE Interfaces with IP addresses and family MPLS. As we’ll be using IS-IS as an IGP protocol in our lab, we will also enable family ISO
  • IGP Protocol with TE-Extensions. We are using IS-IS
  • MPLS under protocols
  • RSVP-TE

On the PE devices:

  • PE-to-P Interfaces with IP addresses and families IS-IS and MPLS
  • IGP Protocol with TE-Extensions
  • MPLS under protocols
  • RSVP-TE
  • Customer-facing interfaces
  • Customer VRF
  • IBGP peering between PE devices permitting address families Inet-VPN Unicast and Inet-MVPN

Configuration Examples

PE1 Configuration

Interfaces

interfaces {
    ge-0/0/0 {
        description ‘P1’;
        unit 0 {
            family inet {
                address 1.0.1.1/31;
            }
            family iso;
            family mpls;
        }
    }
    ge-0/0/1 {
        description ‘VRF A’;
        unit 0 {
            family inet {
                address 2.0.1.1/24;
            }
        }
    }

    lo0 {
        unit 0 {
            family inet {
                address 1.0.0.11/32;
            }
            family iso {
                address 49.0002.0010.0000.0011.00;
            }
            family mpls;
        }
    }
}

Protocols

routing-options {
    autonomous-system 1;
}
protocols {
    rsvp {
        interface all;
    }
    mpls {
        label-switched-path pe1-pe3 {
            to 1.0.0.13;
        }
        label-switched-path pe1-pe2 {
            to 1.0.0.12;
        }
        interface all;
    }
    bgp {
        group ibgp {
            type internal;
            local-address 1.0.0.11;
            family inet-vpn {
                unicast;
            }
            family inet-mvpn {
                signaling;
            }
            neighbor 1.0.0.12;
            neighbor 1.0.0.13;
        }
    }
    isis {
        traffic-engineering {
            family inet {
                shortcuts;
            }
        }
        level 2 wide-metrics-only;
        level 1 disable;
        interface all;
    }
    ldp {
        interface all;
    }
}

Customer VRF

routing-instances {
    A {
        instance-type vrf;
        interface ge-0/0/1.0;
        route-distinguisher 1:1;
        provider-tunnel {
            rsvp-te {
                label-switched-path-template {
                    default-template;
                }
            }
        }
        vrf-target target:1:1;
        vrf-table-label;
        protocols {
            pim {
                rp {
                    local {
                        address 2.0.1.1;
                        group-ranges {
                            225.0.0.0/8;
                        }
                    }
                }
                interface ge-0/0/1.0;
            }
            mvpn;
        }
    }
}

PE2 Configuration

Interfaces

interfaces {
    ge-0/0/1 {
        unit 0 {
            family inet {
                address 2.0.2.1/24;
            }
        }
    }
    ge-0/0/2 {
        unit 0 {
            family inet {
                address 1.0.1.3/31;
            }
            family iso;
            family mpls;
        }
    }
    lo0 {
        unit 0 {
            family inet {
                address 1.0.0.12/32;
            }
            family iso {
                address 49.0002.0000.0012.00;
            }
        }
    }
}

Protocols

routing-options {
    autonomous-system 1;
}
protocols {
    rsvp {
        interface all;
    }
    mpls {
        label-switched-path pe2-pe1 {
            to 1.0.0.11;
        }
        label-switched-path pe2-pe3 {
            to 1.0.0.13;
        }
        interface all;
    }
    bgp {
        group ibgp {
            type internal;
            local-address 1.0.0.12;
            family inet-vpn {
                unicast;
            }
            family inet-mvpn {
                signaling;
            }
            neighbor 1.0.0.11;
            neighbor 1.0.0.13;
        }
    }
    isis {
        traffic-engineering {
            family inet {
                shortcuts;
            }
        }
        level 2 wide-metrics-only;
        level 1 disable;
        interface all;
    }
    ldp {
        interface all;
    }
}

Customer VRF

routing-instances {
    A {
        instance-type vrf;
        interface ge-0/0/1.0;
        route-distinguisher 1:1;
        provider-tunnel {
            rsvp-te {
                label-switched-path-template {
                    default-template;
                }
            }
        }
        vrf-target target:1:1;
        vrf-table-label;
        protocols {
            pim {
                rp {
                    static {
                        address 2.0.1.1 {
                            group-ranges {
                                225.0.0.0/8;
                            }
                        }
                    }
                }
                interface ge-0/0/1.0;
            }
            mvpn;
        }
    }
}

PE3 Configuration

Interfaces

interfaces {
    ge-0/0/0 {
        unit 0 {
            family inet {
                address 1.0.1.5/31;
            }
            family iso;
            family mpls;
        }
    }
    ge-0/0/1 {
        unit 0 {
            family inet {
                address 2.0.3.1/24;
            }
        }
    }
    lo0 {
        unit 0 {
            family inet {
                address 1.0.0.13/32;
            }
            family iso {
                address 49.0002.0000.0013.00;
            }
        }
    }
}

Protocols

routing-options {
    autonomous-system 1;
}
protocols {
    rsvp {
        interface all;
    }
    mpls {
        label-switched-path pe3-pe1 {
            to 1.0.0.11;
        }
        label-switched-path pe3-pe2 {
            to 1.0.0.12;
        }
        interface all;
    }
    bgp {
        group ibgp {
            type internal;
            local-address 1.0.0.13;
            family inet-vpn {
                unicast;
            }
            family inet-mvpn {
                signaling;
            }
            neighbor 1.0.0.11;
            neighbor 1.0.0.12;
        }
    }
    isis {
        traffic-engineering {
            family inet {
                shortcuts;
            }
        }
        level 1 disable;
        level 2 wide-metrics-only;
        interface all;
    }
    ldp {
        interface all;
    }
}

Customer VRF

routing-instances {
    A {
        instance-type vrf;
        interface ge-0/0/1.0;
        route-distinguisher 1:1;
        provider-tunnel {
            rsvp-te {
                label-switched-path-template {
                    default-template;
                }
            }
        }
        vrf-target target:1:1;
        vrf-table-label;
        protocols {
            pim {
                rp {
                    static {
                        address 2.0.1.1 {
                            group-ranges {
                                225.0.0.0/8;
                            }
                        }
                    }
                }
                interface ge-0/0/1.0;
            }
            mvpn;
        }
    }
}

P Configuration

Interfaces

interfaces {
    ge-0/0/0 {
        unit 0 {
            family inet {
                address 1.0.1.0/31;
            }
            family iso;
            family mpls;
        }
    }
    ge-0/0/1 {
        unit 0 {
            family inet {
                address 1.0.1.4/31;
            }
            family iso;
            family mpls;
        }
    }
    ge-0/0/2 {
        unit 0 {
            family inet {
                address 1.0.1.2/31;
            }
            family iso;
            family mpls;
        }
    }
    lo0 {
        unit 0 {
            family inet {
                address 1.0.0.0/32;
            }
            family iso {
                address 49.0002.0010.0000.0000.00;
            }
        }
    }
}

Protocols

protocols {
    rsvp {
        interface all;
    }
    mpls {
        interface all;
    }
    isis {
        traffic-engineering {
            family inet {
                shortcuts;
            }
        }
        level 2 wide-metrics-only;
        level 1 disable;
        interface all;
    }
    ldp {
        interface all;
    }
}

The Initial State (no multicast traffic)

PE1’s View

IGP (IS-IS) State

PE1> show isis adjacency
Interface             System         L State        Hold (secs) SNPA
ge-0/0/0.0            P1             2  Up                   23  0:50:56:a2:63:ea

Multicast State

No multicast routes:

PE1> show multicast route instance A
Instance: A  Family: INET

Instance: A  Family: INET6

PE1> show pim join instance A
Instance: PIM.A Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Instance: PIM.A Family: INET6
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

BGP State

Type 1 Intra-AS Auto-discovery Routers are being sent by PE devices participating in NG-MVPN:
For example, PE1 sends/receives the following advertisements to/from PE2:

PE1> show route advertising-protocol bgp 1.0.0.12
…
bgp.mvpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
  Prefix		  Nexthop	       MED     Lclpref    AS path
  1:1:1:1.0.0.11/240
*                         Self                         100        I


PE1> show route receive-protocol bgp 1.0.0.12
…
bgp.mvpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
  Prefix		  Nexthop	       MED     Lclpref    AS path
  1:1:1:1.0.0.12/240
*                         1.0.0.12                     100        I

Source Traffic (no receivers)

At the point, we inject multicast traffic into the network by sending UDP Datastream to 225.1.1.1 group from a device directly connected to PE1 in VRF-A.

PE1’s View

PIM State

PE1> show pim join instance A
Instance: PIM.A Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 225.1.1.1
    Source: 2.0.1.2
    Flags: sparse,spt
    Upstream interface: ge-0/0/1.0

Instance: PIM.A Family: INET6
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

PE1> show pim join instance A extensive
Instance: PIM.A Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 225.1.1.1
    Source: 2.0.1.2
    Flags: sparse,spt
    Upstream interface: ge-0/0/1.0
    Upstream neighbor: Direct
    Upstream state: Local Source, Local RP
    Keepalive timeout: 353
    Uptime: 00:00:07
    Downstream neighbors:
    Number of downstream interfaces: 0
    Number of downstream neighbors: 0

Instance: PIM.A Family: INET6
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

RSVP Tunnels

P2MP RSVP Tunnels were automatically built by the system for NG-MVPN in VRF-A.

PE1> show rsvp session
Ingress RSVP: 4 sessions
To              From            State   Rt Style Labelin Labelout LSPname
1.0.0.12        1.0.0.11        Up       0  1 SE       -   299936 1.0.0.12:1:1:mvpn:A
1.0.0.13        1.0.0.11        Up       0  1 SE       -   299936 1.0.0.13:1:1:mvpn:A
1.0.0.12        1.0.0.11        Up       0  1 FF       -   299840 pe1-pe2
1.0.0.13        1.0.0.11        Up       0  1 FF       -   299824 pe1-pe3
Total 4 displayed, Up 4, Down 0

Egress RSVP: 4 sessions
To              From            State   Rt Style Labelin Labelout LSPname
1.0.0.11        1.0.0.12        Up       0  1 FF       3        - pe2-pe1
1.0.0.11        1.0.0.13        Up       0  1 FF       3        - pe3-pe1
1.0.0.11        1.0.0.12        Up       0  1 SE      16        - 1.0.0.11:1:1:mvpn:A
1.0.0.11        1.0.0.13        Up       0  1 SE      16        - 1.0.0.11:1:1:mvpn:A
Total 4 displayed, Up 4, Down 0

Transit RSVP: 0 sessions
Total 0 displayed, Up 0, Down 0

PE1> show rsvp session extensive
Ingress RSVP: 4 sessions

1.0.0.12
  From: 1.0.0.11, LSPstate: Up, ActiveRoute: 0
  LSPname: 1.0.0.12:1:1:mvpn:A, LSPpath: Primary
  LSPtype: Dynamic Configured
  P2MP LSPname: 1:1:mvpn:A, Re-merge: Head
  Suggested label received: -, Suggested label sent: -
  Recovery label received: -, Recovery label sent: 299936
  Resv style: 1 SE, Label in: -, Label out: 299936
  Time left:    -, Since: Wed Jan  2 22:29:12 2019
  Tspec: rate 0bps size 0bps peak Infbps m 20 M 1500
  Port number: sender 1 receiver 36195 protocol 0
  P2MP branch id: 1, Subgroup Originator: 1.0.0.11
  Enhanced FRR: Enabled (Downstream)
  PATH rcvfrom: localclient
  Adspec: sent MTU 1500
  Path MTU: received 1500
  PATH sentto: 1.0.1.0 (ge-0/0/0.0) 2 pkts
       outgoing message state: refreshing, Message ID: 27, Epoch: 13790520
  RESV rcvfrom: 1.0.1.0 (ge-0/0/0.0) 3 pkts, Entropy label: Yes
       incoming message handle: R-5/3, Message ID: 47, Epoch: 13790499
  Explct route: 1.0.1.0 1.0.1.3
  Record route:  1.0.1.0 1.0.1.3

1.0.0.13
  From: 1.0.0.11, LSPstate: Up, ActiveRoute: 0
  LSPname: 1.0.0.13:1:1:mvpn:A, LSPpath: Primary
  LSPtype: Dynamic Configured
  P2MP LSPname: 1:1:mvpn:A, Re-merge: Head
  Suggested label received: -, Suggested label sent: -
  Recovery label received: -, Recovery label sent: 299936
  Resv style: 1 SE, Label in: -, Label out: 299936
  Time left:    -, Since: Wed Jan  2 22:30:03 2019
  Tspec: rate 0bps size 0bps peak Infbps m 20 M 1500
  Port number: sender 1 receiver 36195 protocol 0
  P2MP branch id: 2, Subgroup Originator: 1.0.0.11
  Enhanced FRR: Enabled (Downstream)
  PATH rcvfrom: localclient
  Adspec: sent MTU 1500
  Path MTU: received 1500
  PATH sentto: 1.0.1.0 (ge-0/0/0.0) 1 pkts
       outgoing message state: refreshing, Message ID: 29, Epoch: 13790520
  RESV rcvfrom: 1.0.1.0 (ge-0/0/0.0) 2 pkts, Entropy label: Yes
       incoming message handle: R-7/2, Message ID: 55, Epoch: 13790499
  Explct route: 1.0.1.0 1.0.1.5
  Record route:  1.0.1.0 1.0.1.5

BGP State

Type 5 Source Active Route is being advertised by the PE with directly attached source.

PE1> show bgp summary
Groups: 1 Peers: 2 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
bgp.l3vpn.0
                       2          2          0          0          0          0
bgp.mvpn.0
                       2          2          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.0.0.12                  1      18065      18069       0       1 5d 15:55:45 Establ
  bgp.l3vpn.0: 1/1/1/0
  A.inet.0: 1/1/1/0
  bgp.mvpn.0: 1/1/1/0
  A.mvpn.0: 1/1/1/0
1.0.0.13                  1      18065      18069       0       1 5d 15:55:23 Establ
  bgp.l3vpn.0: 1/1/1/0
  A.inet.0: 1/1/1/0
  bgp.mvpn.0: 1/1/1/0
  A.mvpn.0: 1/1/1/0


PE1> show route receive-protocol bgp 1.0.0.12


bgp.mvpn.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)
  Prefix		  Nexthop	       MED     Lclpref    AS path
  1:1:1:1.0.0.12/240
*                         1.0.0.12                     100        I

PE1> show route advertising-protocol bgp 1.0.0.12
…
bgp.mvpn.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)
  Prefix		  Nexthop	       MED     Lclpref    AS path
  1:1:1:1.0.0.11/240
*                         Self                         100        I
  5:1:1:32:2.0.1.2:32:225.1.1.1/240
*                         Self                         100        I

PE2 & PE3 devices

Multicast State

PE2> show multicast route instance A
Instance: A  Family: INET

Instance: A  Family: INET6

PE2> show igmp group
Interface: local, Groups: 3
    Group: 224.0.0.2
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic
    Group: 224.0.0.13
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic
    Group: 224.0.0.22
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic


PE3> show multicast route instance A
Instance: A  Family: INET

Instance: A  Family: INET6

PE3> show igmp group
Interface: local, Groups: 3
    Group: 224.0.0.2
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic
    Group: 224.0.0.13
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic
    Group: 224.0.0.22
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic

Multicast Receivers added to PE2 & PE3

PE2’s view

Multicast state on PE2

PE3 is now shown as the state is mostly the same (different customer IP range)

PE2> show igmp group
Interface: ge-0/0/1.0, Groups: 1
    Group: 225.1.1.1
        Source: 0.0.0.0
        Last reported by: 2.0.2.2
        Timeout:     249 Type: Dynamic
Interface: local, Groups: 3
    Group: 224.0.0.2
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic
    Group: 224.0.0.13
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic
    Group: 224.0.0.22
        Source: 0.0.0.0


        Last reported by: Local
        Timeout:       0 Type: Dynamic


PE2> show multicast route instance A
Instance: A  Family: INET

Group: 225.1.1.1
    Source: 2.0.1.2/32
    Upstream interface: lsi.0
    Downstream interface list:
        ge-0/0/1.0

Instance: A  Family: INET6


PE2> show pim join instance A
Instance: PIM.A Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 225.1.1.1
    Source: *
    RP: 2.0.1.1
    Flags: sparse,rptree,wildcard
    Upstream protocol: BGP
    Upstream interface: Through BGP

Group: 225.1.1.1
    Source: 2.0.1.2
    Flags: sparse,spt
    Upstream protocol: BGP
    Upstream interface: Through BGP

Instance: PIM.A Family: INET6
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

PE1

Multicast state

PE1> show pim join instance A extensive
Instance: PIM.A Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 225.1.1.1
    Source: 2.0.1.2
    Flags: sparse,spt
    Upstream interface: ge-0/0/1.0
    Upstream neighbor: Direct
    Upstream state: Local Source, Local RP
    Keepalive timeout: 57
    Uptime: 00:15:49
    Downstream neighbors:
        Interface: Pseudo-MVPN
            Uptime: 00:04:57 Time since last Join: 00:04:57
    Number of downstream interfaces: 1
    Number of downstream neighbors: 1

Instance: PIM.A Family: INET6
R = Rendezvous Point Tree, S = Sparse, W = Wildcard 


PE1> show multicast route instance A
Instance: A  Family: INET

Group: 225.1.1.1
    Source: 2.0.1.2/32
    Upstream interface: ge-0/0/1.0
    Downstream interface list:
        ge-0/0/0.0

Instance: A  Family: INET6

PE1> show multicast route instance A extensive
Instance: A  Family: INET

Group: 225.1.1.1
    Source: 2.0.1.2/32
    Upstream interface: ge-0/0/1.0
    Downstream interface list:
        ge-0/0/0.0
    Number of outgoing interfaces: 1
    Session description: Unknown
    Statistics: 494 kBps, 1000 pps, 1043805 packets
    Next-hop ID: 1048576
    Upstream protocol: MVPN
    Route state: Active
    Forwarding state: Forwarding
    Cache lifetime/timeout: forever
    Wrong incoming interface notifications: 0
    Uptime: 00:06:32

Instance: A  Family: INET6

BGP State

PE1 advertises the active source using Type 5 BGP route

PE1> show route advertising-protocol bgp 1.0.0.12

bgp.mvpn.0: 5 destinations, 7 routes (5 active, 0 holddown, 0 hidden)
  Prefix		  Nexthop	       MED     Lclpref    AS path
  1:1:1:1.0.0.11/240
*                         Self                         100        I
  5:1:1:32:2.0.1.2:32:225.1.1.1/240
*                         Self                         100        I


Type 7 Source Tree Join Route is being received from PE2, as PE2 wants to receive the traffic from the source attached to PE1.

PE1> show route receive-protocol bgp 1.0.0.12

bgp.mvpn.0: 5 destinations, 7 routes (5 active, 0 holddown, 0 hidden)
  Prefix		  Nexthop	       MED     Lclpref    AS path
  1:1:1:1.0.0.12/240
*                         1.0.0.12                     100        I
  7:1:1:1:32:2.0.1.2:32:225.1.1.1/240
                          1.0.0.12             0       100        I

Receivers without senders

We’ll look into scenario where IGMP Join requests were sent to PE2/PE3, but Sender behind PE1 is not active

PE2

IGMP state

PE2> show igmp group
Interface: ge-0/0/1.0, Groups: 1
    Group: 225.1.1.1
        Source: 0.0.0.0
        Last reported by: 2.0.2.2
        Timeout:     204 Type: Dynamic
Interface: local, Groups: 3
    Group: 224.0.0.2
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic
    Group: 224.0.0.13
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic
    Group: 224.0.0.22
        Source: 0.0.0.0
        Last reported by: Local
        Timeout:       0 Type: Dynamic

PE2’s PIM state

PE2> show pim join instance A
Instance: PIM.A Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 225.1.1.1
    Source: *
    RP: 2.0.1.1
    Flags: sparse,rptree,wildcard
    Upstream protocol: BGP
    Upstream interface: Through BGP

Instance: PIM.A Family: INET6
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

PE1’s view

BGP on PE1

PE1 is not aware of the receivers. PE2/PE3 will no send Type 6/7 C-Multicast joint routes to PE1, unless C-Multicast (S,G) Type 5 Source Discovery route is advertised by PE1.

PE1> show route receive-protocol bgp 1.0.0.12
…
bgp.mvpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
  Prefix		  Nexthop	       MED     Lclpref    AS path
  1:1:1:1.0.0.12/240
*                         1.0.0.12                     100        I


PE1> show route advertising-protocol bgp 1.0.0.12
…
bgp.mvpn.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
  Prefix		  Nexthop	       MED     Lclpref    AS path
  1:1:1:1.0.0.11/240
*                         Self                         100        I

Leave a Reply

Your email address will not be published. Required fields are marked *