MPLS Point-to-Multipoint Traffic Engineering Support for Static Pseudowires

Table 1. Feature History

Feature Name

Release

Description

Static PW over P2MP

Cisco IOS XE Amsterdam 17.3.1

The Static Pseudowires over Point-to-Multipoint Traffic Engineering (P2MP TE) feature emulates the essential attributes of a unidirectional P2MP service. It can be used to transport layer 2 multicast services from a single source to one or more destinations.

This feature is supported on the Cisco RSP2 module.

The MPLS Point-to-Multipoint Traffic Engineering: Support for Static Pseudowires feature allows you to configure a point-to-multipoint pseudowire (PW) to transport Layer 2 traffic from a single source to one or more destinations. This feature provides traffic segmentation for Multiprotocol Label Switching (MPLS) Point-to-Multipoint Traffic Engineering (P2MP TE) tunnels.

The MPLS Point-to-Multipoint Traffic Engineering: Support for Static Pseudowires feature uses Layer 2 Virtual Private Network (L2VPN) static PWs to provide point-to-multipoint Layer 2 connectivity over an MPLS network to transport Layer 2 traffic. The static PW does not need Label Distribution Protocol (LDP).

Prerequisites for MPLS Point-to-Multipoint Traffic Engineering Support for Static Pseudowires

Before configuring the MPLS Point-to-Multipoint Traffic Engineering: Support for Static Pseudowires feature, ensure that the following prerequisite is met:

  • If a Cisco RSP2 module acts as a P2MP TE midpoint, it should be running the Cisco IOS XE Release 17.3.1 or later releases.

Restrictions for MPLS Point-to-Multipoint Traffic Engineering Support for Static Pseudowires

  • Only EVC-based Ethernet over MPLS is supported. TDM MPLS is not supported.

  • Multiple Xconnects cannot be configured with same P2MP Tunnel as it leads to traffic drop for one of the Connects.

  • If the preferred-paths under pseudowire-class of the Xconnects are swapped, Xconnect interface should be flapped to resume traffic.

  • P2MP Tunnel cannot be used to forward Static PW traffic and Global IPv4 multicast traffic (MVPN profile 8) simultaneously.

  • Static PW over P2MP is standardized as unidirectional. But the current configuration model does not block packet forwarding from the receiver to the source.

  • Local bindings must be unique. Otherwise traffic will accidentally merge.

  • Replication of egress is not supported. Only a single CE connects to a PE which is part of the Tunnel destination list of one P2MP Pseudowire.

  • Effective Cisco IOS XE 17.3.1, the Static PW over Point-to-Multipoint tunnel can be scaled up to 400 tunnels and 400 Static PWs.

Figure 1. Egress Packet Replication

Note

You must use the no show ip rsvp command to check tunnel bandwidth. If the total tunnel bandwidth exceeds beyond 750 MB (megabits per second), then the sub-LSPs go down when toggling the traffic-eng command with a maximum tunnel bandwidth of 749.9 MB.

For example, there are 82 P2MP tunnels and you configure 9146 kbps for each tunnel. Then the total bandwidth allocated is (9146 kbps * 82 tunnels) = 749.9 MB.


Information About MPLS Point-to-Multipoint Traffic Engineering Support for Static Pseudowires

Overview of MPLS Point-to-Multipoint Traffic Engineering Support for Static Pseudowires

The MPLS Point-to-Multipoint Traffic Engineering: Support for Static Pseudowires feature transports Layer 2 traffic from a single source to one or more destinations. This feature has the following characteristics:

  • It uses L2VPN static PWs to provide point-to-multipoint Layer 2 connectivity over an MPLS network to transport Layer 2 traffic.

  • The segmentation for MPLS P2MP TE tunnels provided by this feature allows for applications such as video distribution and clock distribution (mobile backhaul).

  • This feature is compatible with Cisco nonstop forwarding (NSF), stateful switchover (SSO). See NSF/SSO—MPLS TE and RSVP Graceful Restart and MPLS Point-to-Multipoint Traffic Engineering for information on configuring NSF/SSO with this feature.

  • In this implementation, the PW is bidirectional, in accordance with the Framework and Requirements for Virtual Private Multicast Service .

VC Label Collisions

This feature does not support context-specific label spaces. When configuring the MPLS Point-to-Multipoint Traffic Engineering: Support for Static Pseudowires feature, ensure that local bindings are unique. Otherwise, traffic unintentionally merges. In the figure below, both PWs share router PE 3 as an endpoint. The local label on each PW is 16, which causes a collision.

Figure 2. Avoiding VC Label Collisions

Label Spoofing

For P2MP static PWs, there is no signaling protocol to verify that the labels are configured correctly on either end. If the labels are not configured correctly, traffic might go to the wrong destinations. Because the traffic going into wrong destinations is a multicast confutation, scalability might be impacted.

The P2MP static PW does not have a context-specific label in the upstream direction and does not use a signaling protocol. Therefore, it is possible to spoof a PW label and route the traffic to the wrong destination. If a PW label is spoofed at the headend, it cannot be validated at the tailend, because the MPLS lookup at the tailend is performed on the global table. So if a spoofed label exists in the global table, traffic is routed to the wrong destination: customer equipment (CE).

The same situation can happen if the user incorrectly configures the static PW label. If the wrong PW label is configured, traffic goes to the wrong destination (CE).

The figure below shows PW label allocation with no context-specific label space.

Figure 3. PW Label Allocation with No Context-Specific Label Space

How to Configure MPLS Point-to-Multipoint Traffic Engineering Support for Static Pseudowires

Configuring the MPLS Label Range

You must specify a static range of MPLS labels using the mpls label range command with the static keyword.

Procedure

  Command or Action Purpose
Step 1

enable

Example:

Router> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.
Step 2

configure terminal

Example:

Router# configure terminal

Enters global configuration mode.

Step 3

mpls label range minimum-value maximum-value{ staticminimum-static-value maximum-static-value}

Example:

Router(config)# mpls label range 1001 1003 static 10000 25000

Specifies a static range of MPLS labels

Configuring the Headend Routers

Perform this task to configure the headend routers:

  • MPLS Static Label range must be configured to configure the Static PW Label under Xconnect.

  • Under the Pseudowire class, the P2MPTE tunnel interface should be specified as the preferred path.

  • 172.10.255.255 is a fake peer IP address. It is very important that this IP address be reserved by the network domain administrator so that it is not used by any other routers in the network.

  • Instead of a fake peer IP address, if peer IP address is used that is present in the routing table, then the traffic will flow through the LSP path (formed by the LDP) towards the peer. This happens only if the fallback option under pseudowire class is not disabled (default) and the preferred path is down.

Procedure
  Command or Action Purpose
Step 1

enable

Example:

Router> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Router# configure terminal

Enters global configuration mode.

Step 3

pseudowire-class class-name

Example:

Router(config)# pseudowire-class static-pw

S pecifies a static AToM PW class and enters PW class configuration mode.

Step 4

encapsulation mpls

Example:

Router(config-pw)# encapsulation mpls 

Specifies MPLS as the data encapsulation method for tunneling Layer 2 traffic over the PW.

Step 5

protocol none

Example:

Router(config-pw)# protocol none

S pecifies that no signaling will be used in L2TPv3 sessions created from the static PW.

Step 6

preferred-path [interfacetunnel tunnel-number ] [disable-fallback ]

Example:

Router(config-pw)# preferred-path interface tunnel 1 disable-fallback 

Specifies the P2MP tunnel as the traffic path and disables the router from using the default path when the preferred path is unreachable.

Step 7

exit

Example:

Router(config-pw)# exit

Exits PW class configuration mode and returns to global configuration mode.

Step 8

interface tunnel number

Example:

Router(config)# interface tunnel 1

Configures a tunnel and enters interface configuration mode.

Step 9

ip unnumbered loopback number

Example:

Router(config-if)# ip unnumbered loopback 0

Enables IP processing on a loopback interface without assigning an explicit IP address to the interface.

  • Specifying loopback 0 gives the tunnel interface an IP address that is the same as that of loopback interface 0.

  • This command is not effective until loopback interface 0 has been configured with an IP address.

Step 10

tunnel mode mpls traffic-eng point-to-multipoint

Example:

Router(config-if)# tunnel mode mpls traffic-eng point-to-multipoint

Enables MPLS P2MP TE on the tunnel.

Step 11

tunnel destination list mpls traffic-eng {identifier dest-list-id | name dest-list-name }

Example:

Router(config-if)# tunnel destination list mpls traffic-eng name in-list-01

Specifies a destination list to specify the IP addresses of point-to-multipoint destinations.

Step 12

exit

Example:

Router(config-if)# exit

Exits interface configuration mode and returns to global configuration mode.

Step 13

interface loopback number

Example:

Router(config)# interface loopback 0

Configures a loopback interface and enters interface configuration mode.

Step 14

ip address [ip-addressmask [secondary ]]

Example:

Router(config-if)# ip address 172.16.255.5 255.255.255.255

Specifies a primary IP address for the loopback interface.

Step 15

exit

Example:

Router(config-if)# exit

Exits interface configuration mode and returns to global configuration mode.

Step 16

interface ethernet number

Example:

Router(config)# interface ethernet 0/0/0 

Configures an Ethernet interface and enters interface configuration mode.

Step 17

no ip address [ip-addressmask [secondary ]]

Example:

Router(config-if)# no ip address
service instance 100 ethernet 

Disables IP processing on the interface.

Step 18

no keepalive [period [retries ]]

Example:

Router(config-if)# no keepalive 

Disables the keepalive packets on the interface.

  • When the interface goes down, the session continues without shutting down because the keepalive packets are disabled.

Step 19

xconnect peer-ip-address vcid encapsulation mpls manual pw-class class-name

Example:

Router(config-if)# xconnect 172.16.255.255 100 encapsulation mpls manual pw-class static-pw

Configures a static AToM PW and enters xconnect configuration mode where the static PW labels are set.

Step 20

mpls label local-pseudowire-label remote-pseudowire-label

Example:

Router(config-if-xconn)# mpls label 16 17 

Configures the AToM static PW connection by defining local and remote circuit labels.

  • The label must be an unused static label within the static label range configured using the mplslabelrange command.

  • The mplslabel command checks the validity of the label entered and displays an error message if it is not valid. The value supplied for the remote-pseudowire-label argument must be the value of the peer PE’s local PW label.

Step 21

mpls control-word

Example:

Router(config-if-xconn)# mpls control-word

Checks whether the MPLS control word is sent.

  • This command must be set for Frame Relay data-link connection identifier (DLCI) and ATM adaptation layer 5 (AAL5) attachment circuits. For other attachment circuits, the control word is included by default.

  • If you enable the inclusion of the control word, it must be enabled on both ends of the connection for the circuit to work properly.

  • Inclusion of the control word can be explicitly disabled using the nomplscontrol-word command.

Step 22

end

Example:

Router(config-if-xconn)# end

Exits xconnect configuration mode.

Configuring the MPLS Label Range

You must specify a static range of MPLS labels using the mpls label range command with the static keyword.

Procedure

  Command or Action Purpose
Step 1

enable

Example:

Router> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.
Step 2

configure terminal

Example:

Router# configure terminal

Enters global configuration mode.

Step 3

mpls label range minimum-value maximum-value{ staticminimum-static-value maximum-static-value}

Example:

Router(config)# mpls label range 1001 1003 static 10000 25000

Specifies a static range of MPLS labels

Configuring the Tailend Routers

Perform this task to configure the tailend routers:

  • MPLS Static Label range should be configured to configure Static PW label under Xconnect.

  • The loopback address of the headend router (source of the tree) should be configured under the Xconnect of all tailend routers. The loopback address of the headend router in this example is 10.0.0.1

  • All tailend routers should be configured with same remote Virtual Circuit (VC) label of 200, the local VC label of the headend router.

Procedure

Step 1

enable

Example:

Router> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:

Router# configure terminal

Enters global configuration mode.

Step 3

pseudowire-class class-name

Example:

Router(config)# pseudowire-class static-pw

Specifies a static AToM PW class and enters PW class configuration mode.

Step 4

encapsulation mpls

Example:

Router(config-pw)# encapsulation mpls

Specifies MPLS as the data encapsulation method for tunneling Layer 2 traffic over the PW.

Step 5

protocol none

Example:

Router(config-pw)# protocol none 

Specifies that no signaling will be used in L2TPv3 sessions created from the static PW.

Step 6

exit

Example:

Router(config-pw)# exit

Exits PW class configuration mode and returns to global configuration mode.

Step 7

interface loopback number

Example:

Router(config)# interface loopback 0

Configures a loopback interface and enters interface configuration mode.

Step 8

ip address [ip-addressmask [secondary ]]

Example:

Router(config-if)# ip address 172.16.255.1 255.255.255.255

Specifies a primary IP address for the loopback interface.

Step 9

exit

Example:

Router(config-if)# exit

Exits interface configuration mode and returns to global configuration mode.

Step 10

interface ethernet number

Example:

Router(config)# interface ethernet 0/0 

Configures an Ethernet interface and enters interface configuration mode.

Step 11

no ip address [ip-addressmask [secondary ]]

Example:

Router(config-if)# no ip address 

Disables IP processing on the interface.

Step 12

no keepalive [period [retries ]]

Example:

Router(config-if)# no keepalive 

Disables the keepalive packets on the interface.

  • When the interface goes down, the session continues without shutting down because the keepalive packets are disabled.

Step 13

xconnect peer-ip-address vcid encapsulation mpls manual pw-class class-name

Example:

Router(config-if)# xconnect 172.16.255.5 100 encapsulation mpls manual pw-class static-pw

Configures a static AToM PW and enters xconnect configuration mode where the static PW labels are set.

Step 14

mpls label local-pseudowire-label remote-pseudowire-label

Example:

Router(config-if-xconn)# mpls label 17 16 

Configures the AToM static PW connection by defining local and remote circuit labels.

  • The label must be an unused static label within the static label range configured using the mplslabelrange command.

  • Themplslabel command checks the validity of the label entered and displays an error message if it is not valid. The value supplied for the remote-pseudowire-label argument must be the value of the peer PE’s local PW label.

Step 15

mpls control-word

Example:

Router(config-if-xconn)# mpls control-word

Checks whether the MPLS control word is sent.

  • This command must be set for Frame Relay data-link connection identifier (DLCI) and ATM adaptation layer 5 (AAL5) attachment circuits. For other attachment circuits, the control word is included by default.

  • If you enable inclusion of the control word, it must be enabled on both ends of the connection for the circuit to work properly.

  • Inclusion of the control word can be explicitly disabled using the nomplscontrol-word command.

Step 16

end

Example:

Router(config-if-xconn)# end

Exits xconnect configuration mode.


Verifying the Static PW Configuration

To verify the L2VPN static PW configuration, use the showrunning-config EXEC command. To verify that the L2VPN static PW was provisioned correctly, use the showmplsl2transportvcdetail and pingmplspseudowire EXEC commands as described in the following steps.

Procedure


show mpls l2transport vc detail

For nonstatic PW configurations, this command lists the type of protocol used to send the MPLS labels (such as LDP). For static PW configuration, the value of the signaling protocol field should be Manual.

The following is sample output from the showmplsl2transportvcdetail command:

Example:

PE21_RSP2#sh mpls l2transport vc 3750 detail 
Local interface: Gi0/2/5 up, line protocol up, Eth VLAN 3750 up
  Destination address: 172.10.255.255, VC ID: 3750, VC status: up
    Output interface: Tu3750, imposed label stack {}
    Preferred path: Tunnel3750,  active
    Default path: ready
    No adjacency
  Create time: 3d20h, last status change time: 3d20h
    Last label FSM state change time: 3d20h
  Signaling protocol: Manual
    Status TLV support (local/remote)   : disabled/N/A
      LDP route watch                   : enabled
      Label/status state machine        : established, LruRru
      Last local dataplane   status rcvd: No fault
      Last BFD dataplane     status rcvd: Not sent
      Last BFD peer monitor  status rcvd: No fault
      Last local AC  circuit status rcvd: No fault
      Last local AC  circuit status sent: No fault
      Last local PW i/f circ status rcvd: No fault
      Last local LDP TLV     status sent: No status
      Last remote LDP TLV    status rcvd: Not sent
      Last remote LDP ADJ    status rcvd: No fault
    MPLS VC labels: local 10750, remote 11750 
    Group ID: local 21, remote 21
    MTU: local 1500, remote 1500
  Sequencing: receive disabled, send disabled
  Control Word: On (configured: autosense)
  SSO Descriptor: 172.10.255.255/3750, local label: 10750
  Dataplane:
    SSM segment/switch IDs: 1008461/4594 (used), PWID: 112
VC statistics:
    transit packet totals: receive 0, send 105053403
    transit byte totals:   receive 0, send 53787342336
    transit packet drops:  receive 0, seq error 0, send 0
 

Configuration Examples for MPLS Point-to-Multipoint Traffic Engineering Support for Static Pseudowires

Example Configuring the Headend Router (PE5)

In the following sample configuration of the headend router, note the following:

  • The preferred-pathinterfacetunnel1command specifies the P2MP tunnel as the preferred path.

  • The tunnelmodemplstraffic-engpoint-to-multipoint command enables the P2MP tunnel.

  • The mplslabelcommand defines the static binding.

  • The xconnectcommand creates a dummy peer.

Router(config)# pseudowire-class STATIC-PW
Router(config-pw-class)# encapsulation mpls
Router(config-pw-class)# protocol none
Router(config-pw-class)# preferred-path interface Tunnel1
 
!         
Router(config)# interface Tunnel1
Router(config-if)# description PE5->PE1,PE2,PE3,PE4-EXCIT
Router(config-if)# ip unnumbered loopback 0
Router(config-if)# tunnel mode mpls traffic-eng point-to-multipoint
Router(config-if)# tunnel destination list mpls traffic-eng name P2MP-EXCIT-DST-LIST
Router(config-if)# tunnel mpls traffic-eng priority 7 7
Router(config-if)# tunnel mpls traffic-eng bandwidth 10000
!         
Router(config)# interface loopback 0
Router(config-if)# ip address 172.16.255.5 255.255.255.255
!         
Router(config)# interface ethernet 0/0
Router(config-if)# description CONNECTS to CE5
Router(config-if)# no ip address
Router(config-if)# no keepalive
Router(config-if)# xconnect 172.16.255.255 100 encapsulation mpls manual pw-class static-pw
Router(config-if-xconn)# mpls label 16 17
Router(config-if-xconn)# mpls control-word
!

Example Configuring the Tailend Router (PE1)

In the following sample configuration of the tailend router, note the following:

  • All the tailend routers must use the same binding configuration.

  • The xconnect command must always be configured on tailend routers.

Router(config)# pseudowire-class static-pw
Router(config-pw-class)# encapsulation mpls
Router(config-pw-class)# protocol none
!
Router(config)# interface loopback 0
Router(config-if)# ip address 172.16.255.1 255.255.255.255
!         
Router(config)# interface ethernet 0/0
Router(config-if)# description CONNECTS TO CE1
Router(config-if)# no ip address
Router(config-if)# no keepalive
Router(config-if)# xconnect 172.16.255.5 100 encapsulation mpls manual pw-class static-pw
Router(config-if-xconn)# mpls label 17 16
Router(config-if-xconn)# mpls control-word
!