VPLS Provisioning

Cisco Prime Provisioning supports layer 2 provisioning with layer 2 Virtual Private Network (L2VPN) services and Virtual Private LAN services (VPLS). VPLS services are multipoint (L2VPN are point-to-point) and include Ethernet services over a Multiprotocol Label Switching (MPLS) core or over an Ethernet core.

With an MPLS-based provider core, the PE devices forward customer Ethernet traffic through the core using a VPLS VPN. Multiple attachment circuits are joined together by the provider core and simulate a virtual bridge that connects all the attachment circuits together.

With an Ethernet-based provider core, the PE devices connect two or more customer devices using 802.1Q-in-Q tag-stacking technology, which encapsulates traffic from multiple VLANs from one customer with a single service provider tag. All connections within the VPLS VPN are peers and have direct communications, like a distributed switch.

For each of the core types, Prime Provisioning supports Ethernet relay service (ERS) and multipoint Ethernet wire service (EWS).

  • ERS—The PE device forwards all Ethernet packets with a particular VLAN tag received from an attachment circuit (excluding bridge protocol data units (BPDUs)), to another attachment circuit.
  • EWS—The PE device forwards all Ethernet packets received from an attachment circuit (including tagged (DOT1Q), untagged (DEFAULT), and BPDUs), to either another attachment circuit or to all attachment circuits.

To provision VPLS using the Prime Provisioning API, you need a VPLS service definition and a VPLS service request. The service definition specifies the core type, policy subtype, and common device properties. The service request defines the service definition to use, VPNs, attributes for each interface in the VPLS link, and template information.

In addition, you can now use autodiscovery to discover all VPLS autodiscovery-enabled devices.

This chapter describes VPLS service concepts and the steps required to provision VPLS services using the Prime Provisioning API. The provisioning example includes all steps from creating the inventory to auditing the service deployment.

For more information on VPLS provisioning using Prime Provisioning, see the Cisco Prime Provisioning 7.2 User Guide.

This chapter contains the following sections:

VPLS Service Definitions

A VPLS service definition specifies the core type, policy subtype, device properties, and the attributes common to all attachment circuits.

Prime Provisioning supports the following:

  • Policy subtypes:

blank.gif VPLS_EWS

blank.gif VPLS_EWS_NO_CE

blank.gif VPLS_ERS

blank.gif VPLS_ERS_NO_CE

note.gif

Noteblank.gif For all service definition subtypes with NO_CE, you do not declare the CE devices to be CPEs and you set policy attributes for the PE and the UNI (the PE-POP or PE-CLE).


  • Core types:

blank.gif MPLS—provider core network is MPLS-enabled

blank.gif Ethernet—provider core network uses Ethernet switches

  • Information about the attachment circuits:

blank.gif Device interface type (example: GigabitEthernet)

blank.gif VLAN IDs

blank.gif UNI Port Security

blank.gif Protocols (examples: CDP, VTP)

The properties to set for the PE and CE/UNI are based on the core type and service definition subtype. For example, if the policy subtype is:

  • VPLS_ERS for an Ethernet core, you specify the CE interface type, format and encapsulation type, and whether to filter BPDU.
  • VPLS_EWS_NO_CE for an MPLS core, you specify the PE/CLE interface type and format, protocol tunneling, and system MTU.
note.gif

Noteblank.gif For each service definition property, you can set an additional attribute, editable=true, to allow the network operator to override these attributes when creating the service request. If an attribute is set to editable=false, these attributes cannot be changed in the service request.


See the following example for a VPLS_ERS service definition:

<soapenv:Body>
<ns1:createInstance>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceDefinition</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Name</name>
<value xsi:type="xsd:string">VplsPolicyERS</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Type</name>
<value xsi:type="xsd:string">Vpls</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Organization</name>
<value xsi:type="xsd:string">NbiCustomer</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceDefinitionDetails</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SubType</name>
<value xsi:type="xsd:string">VPLS_ERS</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Core_Type</name>
<value xsi:type="xsd:string">MPLS</value>
<qualifier xsi:type="ns1:CIMQualifier">
<name xsi:type="xsd:string">editable</name>
<value xsi:type="xsd:string">true</value>
</qualifier>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">CE_Intf_Type</name>
<value xsi:type="xsd:string">GigabitEthernet</value>
<qualifier xsi:type="ns1:CIMQualifier">
<name xsi:type="xsd:string">editable</name>
<value xsi:type="xsd:string">true</value>
</qualifier>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">CE_Encap</name>
<value xsi:type="xsd:string">DOT1Q</value>
<qualifier xsi:type="ns1:CIMQualifier">
<name xsi:type="xsd:string">editable</name>
<value xsi:type="xsd:string">true</value>
</qualifier>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">PE_Encap</name>
<value xsi:type="xsd:string">DOT1Q</value>
<qualifier xsi:type="ns1:CIMQualifier">
<name xsi:type="xsd:string">editable</name>
<value xsi:type="xsd:string">true</value>
</qualifier>
 

VPLS Autodiscovery

VPLS autodiscovery eliminates the need to manually configure the VPLS neighbors. It discovers PEs within the same VPLS domain and automatically detects when PEs are added or removed from the domain.

To use VPLS autodiscovery, all PE devices in the VPLS domain must be VPLS autodiscovery enabled. Mixed topologies (that is, some PEs configured with VPLS autodiscovery enabled and some without) are not supported. The VPLS discovery mode should be enabled for all service requests under the same virtual forwarding interface (VFI).

A detailed description of VPLS autodiscovery, including other prerequites, is found in the Cisco Prime Provisioning 7.2 User Guide.

The complete list of XML examples for VPLS is available here:
Cisco Prime Provisioning API 7.2 Programmer Reference

The following example illustrates how you activate VPLS autodiscovery in Prime Provisioning via the NBI.

VPLS Autodiscovery Example

The following is an example of how to create a VPLS autodiscovery service order.

The relevant attribute that neesd to be set for this service order is DiscoveryMode, which is highlighted with bold in the example below. In the example, it is set to AutoDiscovery.

Example: CreateVPlsServiceOrder_ERS_NO_CE.xml

 
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns0="http://www.cisco.com/cim-cx/2.0"
xmlns:ns1="urn:CIM">
<soapenv:Header>
<!-- WaitTimeout has a default set in system properties.-->
<ns0:message id="87855" timestamp="2002-12-13T14:55:38.885Z"
Wait="true" WaitTimeout="90" sessiontoken="p36bttjwy1"/>
</soapenv:Header>
<soapenv:Body>
<ns1:performBatchOperation>
<actions xsi:type="ns1:CIMActionList"
soapenc:arrayType="ns1:CIMAction[]">
<action>
<actionName xsi:type="xsd:string">createInstance</actionName>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceOrder</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">ServiceName</name>
<value xsi:type="xsd:string">ServiceOrder257</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DesiredDueDate</name>
<value xsi:type="xsd:dateTime">2008-12-13T14:55:38.885Z</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">NumberOfRequests</name>
<value xsi:type="xsd:string">1</value>
</item>
</properties>
</objectPath>
</action>
<action>
<actionName xsi:type="xsd:string">createInstance</actionName>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequest</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">RequestName</name>
<value xsi:type="xsd:string">EvcSR-7</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Type</name>
<value xsi:type="xsd:string">Evc</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">ServiceRequestDetails</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">ServiceDefinition</name>
<value xsi:type="xsd:string">ETHERNET_PW_VC</value><!-- Interworking policy -->
<qualifier xsi:type="xsd:string">
<name xsi:type="xsd:string">ServiceDefinitionType</name>
<value xsi:type="xsd:string">Evc</value>
</qualifier>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">AutopickVCID</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">VPN</name>
<value xsi:type="xsd:string">vpn1</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DiscoveryMode</name>
<value xsi:type="xsd:string">AutoDiscovery</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">UseSVI</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">UseSplitHorizon</name>
<value xsi:type="xsd:string">true</value>
</item>
</properties>
<!-- Ethernet Link -->
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">EvcLink</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Npe</name>
<value xsi:type="xsd:string">iscind-7609-2</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">UniInftId</name>
<value xsi:type="xsd:string">GigabitEthernet7/0/13</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">EvcETHLinkAttrs</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SystemMTU</name>
<value xsi:type="xsd:string">1563</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">AutoPickVlanId</name>
<value xsi:type="xsd:string">false</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">VlanID</name>
<value xsi:type="xsd:string">18</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">UseServiceInst</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">XconnectOnSVI</name>
<value xsi:type="xsd:string">true</value>
</item>
</properties>
</objectPath>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">EvcServiceInstanceAttrs</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">AutoPickServiceInstId</name>
<value xsi:type="xsd:string">false</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">ServiceInstID</name>
<value xsi:type="xsd:string">3488</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">BothTags</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">OuterVlanRange</name>
<value xsi:type="xsd:string">745</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">InnerVlanRange</name>
<value xsi:type="xsd:string">746</value>
</item>
</properties>
</objectPath>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">EvcUNIInterfaceAttrs</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Shutdown</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">PeIntfDesc</name>
<value xsi:type="xsd:string">*** AC1 ***</value>
</item>
</properties>
</objectPath>
</objectPath>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">EvcLink</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Npe</name>
<value xsi:type="xsd:string">iscind-7609-1</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">UniInftId</name>
<value xsi:type="xsd:string">GigabitEthernet7/0/13</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">EvcETHLinkAttrs</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SystemMTU</name>
<value xsi:type="xsd:string">1563</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">AutoPickVlanId</name>
<value xsi:type="xsd:string">false</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">VlanID</name>
<value xsi:type="xsd:string">18</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">UseServiceInst</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">XconnectOnSVI</name>
<value xsi:type="xsd:string">true</value>
</item>
</properties>
</objectPath>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">EvcServiceInstanceAttrs</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">AutoPickServiceInstId</name>
<value xsi:type="xsd:string">false</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">ServiceInstID</name>
<value xsi:type="xsd:string">3439</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">BothTags</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">OuterVlanRange</name>
<value xsi:type="xsd:string">745</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">InnerVlanRange</name>
<value xsi:type="xsd:string">746</value>
</item>
</properties>
</objectPath>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">EvcUNIInterfaceAttrs</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Shutdown</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">PeIntfDesc</name>
<value xsi:type="xsd:string">*** AC1 ***</value>
</item>
</properties>
</objectPath>
</objectPath>
</objectPath>
</objectPath>
</action>
</actions>
</ns1:performBatchOperation>
</soapenv:Body>
</soapenv:Envelope>
 

Related APIs

  • CreateVPlsServiceOrder_ERS_NO_CE_IOSXR.xml

VPLS Service Requests

A VPLS service request defines the service definition and VPN to use, assigns interfaces and attributes for each attachment circuit (VplsLink), and applies template information.

note.gif

Noteblank.gif The attachment circuit, or VplsLink, defines the layer 2 path from the CE to the PE, including any intermediate devices. You provision attachment circuits on the PE-facing port of the CE, on all ports of intermediate devices, and on the CE-facing port on the PE.


When you deploy a VPLS service request using a service order, the attributes specified in the service definition are applied to the devices and interfaces defined in the service request, along with the link attributes for each attachment circuit.

The service request link attributes include any parameters marked as editable in the service definition and link parameters specific to each attachment circuit. The following XML example shows a partial list of the properties that can be specified for the attachment circuit LinkAttrs.

The complete list of XML examples for VPLS is available here:
Cisco Prime Provisioning API 7.2 Programmer Reference

 
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">LinkAttrs</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">CE_Intf_Name</name>
<value xsi:type="xsd:string">GigabitEthernet0/1</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">PE_Intf_Name</name>
<value xsi:type="xsd:string">GigabitEthernet1/1</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Disable_CDP</name>
<value xsi:type="xsd:string">false</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Uni_Duplex</name>
<value xsi:type="xsd:string">Half</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Uni_Shutdown</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Uni_Speed</name>
<value xsi:type="xsd:string">100</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Uni_Port_Security</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Uni_Max_Mac_Address</name>
<value xsi:type="xsd:string">13</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Uni_Violation_Action</name>
<value xsi:type="xsd:string">PROTECT</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Uni_Aging</name>
<value xsi:type="xsd:string">234</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Uni_Protocol_Tunnelling</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Tunnel_Stp_Threshold</name>
<value xsi:type="xsd:string">3001</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Tunnel_Cdp_Threshold</name>
<value xsi:type="xsd:string">1001</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Tunnel_Vtp_Threshold</name>
<value xsi:type="xsd:string">2001</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Tunnel_Stp_Enable</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Tunnel_Vtp_Enable</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Tunnel_Recovery_Interval</name>
<value xsi:type="xsd:string">4001</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Tunnel_Cdp_Enable</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Autopick_Vlan_ID</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">System_MTU</name>
<value xsi:type="xsd:string">1522</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">PE_Intf_Desc</name>
<value xsi:type="xsd:string">Pe Intf Desc</value>
</item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">LinkTemplate</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">LogicalDevice</name>
<value xsi:type="xsd:string">ensw3550-1</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DatafilePath</name>
<value xsi:type="xsd:string">/nbi/AccessList</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">TemplateActive</name>
<value xsi:type="xsd:string">true</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">TemplateAction</name>
<value xsi:type="xsd:string">APPEND</value>
</item>
</properties>
 

Provisioning Example

This section describes the process for using the API to provision VPLS, and includes the operation, object definition (className), and parameter definitions.

Process Summary

This VPLS provisioning example uses the following processes:

1.blank.gif Create device groups (optional).

2.blank.gif Create devices.

3.blank.gif Collect device configurations.

4.blank.gif Create provider.

5.blank.gif Create regions.

6.blank.gif Declare devices as PEs.

7.blank.gif Create access domains and assign PEs to them.

8.blank.gif Create customer.

9.blank.gif Create sites.

10.blank.gif Declare devices as CPEs (not required for service types with no CE present).

11.blank.gif Assign CPE devices to sites.

12.blank.gif Create named physical circuits (not required if ManualConfig=true).

13.blank.gif Create VLAN ID pool.

14.blank.gif Create VC ID pool.

15.blank.gif Create VPN.

16.blank.gif Create VPLS service definition (policy).

17.blank.gif Create VPLS service request.

Prerequisites

For security reasons, Prime Provisioning requires the virtual terminal protocol (VTP) to be configured in transparent mode on all switches involved in Ethernet Relay Service (ERS) or Ethernet Wire Service (EWS) before provisioning VPLS service requests.

To set the VTP mode, enter the following Cisco IOS commands:

configure terminal
vtp mode transparent
 

Enter the following Cisco IOS command to verify that the VTP has changed to transparent mode:

Show vtp status
 

RBAC

Prime Provisioning uses a Cisco role-based access control (RBAC) product for user login and logoff. These user roles and permissions are set up using the GUI.

When you establish an API session, you are given a session token during the login. For each API XML request, the session token is verified against the RBAC processor to ensure that the API user has permissions for that operation. If the user does not have permissions, the API returns an error.

See the Cisco Prime Provisioning 7.2 User Guide for information on setting up user roles and permissions.

Provisioning Process

This section describes the process for provisioning VPLS using XML examples.

The complete list of XML examples for VPLS is available here:
Cisco Prime Provisioning API 7.2 Programmer Reference

note.gif

Noteblank.gif For clarity, this provisioning process shows each step as a separate XML request. Many of these steps can be combined using performBatchOperations.



Step 1blank.gif Create device groups (optional).

 

Table 8-1 Create Device Group

Operation
className
Required Parameters

createInstance

DeviceGroup

Name

XML Examples:

  • CreateDeviceGroup.xml
tip.gif

Tipblank.gif If you plan to create device groups, create the empty device groups before you create the devices. As you create each device, add the associated device group name as a key property in the create device XML request.


In the following example, the device group (CustDev) is added as a key property when creating the device CiscoRouter:

<ns1:createInstance>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">CiscoRouter</className>
<properties xsi:type="ns1:CIMPropertyList" soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DeviceGroup</name>
<value xsi:type="xsd:string">CustDev</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">CfgUpDnldMech</name>
<value xsi:type="xsd:string">DEFAULT</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">TransportMechanism</name>
<value xsi:type="xsd:string">DEFAULT</value>
</item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">Password</name>
<value xsi:type="xsd:string">vpnsc</value>
</item>
 

Step 2blank.gif Create devices.

Every network element that Prime Provisioning manages must be defined as a device in the system. An element is any device from which Prime Provisioning can collect configuration information.

 

Table 8-2 Create Devices

Operation
className
Required Parameters

createInstance

  • CiscoRouter
  • CatOS

Note If the service definition policy subtype is VPLS_ERS, the CE must be a CiscoRouter.

One or more of the following:

  • ManagementIPAddress
  • HostName
  • DomainName

XML Examples:

  • CreateCiscoRouter.xml
  • CreateCat.xml

Step 3blank.gif Collect device configurations.

A device configuration collection is a task. This task uploads the current configuration from the device to the Prime Provisioning database. The collection task is executed through a service request, and the service request is scheduled through a service order.

note.gif

Noteblank.gif The service request name must be unique for each NBI API.


 

Table 8-3 Collect Device Configurations

Operation
className
Required Parameters

createInstance

ServiceOrder

  • ServiceName
  • NumberofRequests
  • ServiceRequest

 

ServiceRequest

  • RequestName
  • Type=Task
  • ServiceRequestDetails

 

ServiceRequestDetails

  • SubType=COLLECTION
  • Device (or DeviceGroup)

Note You must select at least one device or device group.

  • RetreiveVersion=true
  • RetreiveDeviceInterfaces=true

XML Examples:

  • CreateTaskServiceOrderCollection.xml

Step 4blank.gif Create a provider.

The provider is the administrative domain of an ISP, with one BGP autonomous system (AS) number. The network owned by the provider is called the backbone network. If an ISP has two AS numbers, you must define it as two provider administrative domains.

 

Table 8-4 Create a Provider

Operation
className
Required Parameters

createInstance

Provider

  • Name
  • AsNumber

XML Examples:

CreateProvider.xml

Step 5blank.gif Create regions.

Each provider can contain multiple regions.

 

Table 8-5 Create Regions

Operation
className
Required Parameters

createInstance

Region

  • Name
  • Provider

XML Examples:

CreateRegion.xml

Step 6blank.gif Declare devices as PEs.

The XML request that assigns a PE role to a device is also used to:

  • Assign PE devices to Regions/Provider
  • Specify interface information

 

Table 8-6 Create PE Devices

Operation
className
Required Parameters

createInstance

PE

  • Provider
  • Region
  • Role=

blank.gif PE_CLE

blank.gif PE_POP

  • Device
  • Interface

XML Examples:

CreatePE.xml

Step 7blank.gif Create access domains.

Prime Provisioning assigns a VLAN ID to the attachment circuit from the VLAN ID pool. Select all PE-POP devices to be associated with this domain, and later in the process, when VLAN ID pools are created, the PE-POP is automatically assigned a VLAN ID.

note.gif

Noteblank.gif If provisioning for an Ethernet provider core, all PE devices must be in the same access domain and a single VLAN ID is used for the entire VPLS VPN. If provisioning for an MPLS provider core, the PE devices can be in different access domains.


 

Table 8-7 Create Access Domains

Operation
className
Required Parameters

createInstance

AccessDomain

  • Name
  • Provider
  • PE (Role must be PE_POP)

XML Examples:

  • CreateAccessDomain.xml

Step 8blank.gif Create a customer.

A customer is a requestor of VPN services. Each customer can contain multiple customer sites. Each site belongs to only one customer and can contain multiple CPEs.

 

Table 8-8 Create Organization

Operation
className
Required Parameters

createInstance

Organization

  • Name

XML Examples:

  • CreateOrganization.xml

Step 9blank.gif Create sites and assign customers (Organizations) to them.

 

Table 8-9 Create Sites

Operation
className
Required Parameters

createInstance

Site

  • Name
  • Organization

XML Examples:

  • CreateSite.xml

Step 10blank.gif Declare devices as CPEs. This step is not required for service subtypes with no CE present.

 

Table 8-10 Create CPE Devices

Operation
className
Required Parameters

createInstance

Cpe

  • Site
  • Device
  • ManagementType

XML Examples:

  • CreateCpe.xml

Step 11blank.gif Create Named Physical Circuits (NPCs). This step is not required if you plan to manually configure the physical links in the VPLS service request (Step 16).

Create an NPC for each attachment circuit (CE/UNI to PE-POP link). If there are intermediate devices, those links must also be added to the NPC using PhysicalLink.

note.gif

Noteblank.gif When creating an NPC, you must specify the CPE as the source device and the PE-POP as the destination device. If there are intermediate devices, such as PE-CLEs, the source and destination devices must follow the direction of the CPE to PE-POP link.


 

Table 8-11 Create Named Physical Circuits

Operation
className
Required Parameters

createInstance

NamedPhysicalCircut

PhysicalLink

 

PhysicalLink

  • SrcDevice
  • DestDevice
  • SrcIfName
  • DestIfName

You can create one XML request for the NamedPhysicalCircuit and include multiple PhysicalLinks as shown in the following example:

<ns1:createInstance>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">NamedPhysicalCircuit</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">PhysicalLink</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SrcDevice</name>
<value xsi:type="xsd:string">Device1</value> </item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DestDevice</name>
<value xsi:type="xsd:string">Device2</value> </item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SrcIfName</name>
<value xsi:type="xsd:string">Intf1/0</value> </item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DestIfName</name>
<value xsi:type="xsd:string">Intf2/1</value> </item>
</properties>
<objectPath xsi:type="ns1:CIMObjectPath">
<className xsi:type="xsd:string">PhysicalLink</className>
<properties xsi:type="ns1:CIMPropertyList"
soapenc:arrayType="ns1:CIMProperty[]">
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SrcDevice</name>
<value xsi:type="xsd:string">Device3</value> </item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DestDevice</name>
<value xsi:type="xsd:string">Device5</value> </item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">SrcIfName</name>
<value xsi:type="xsd:string">Intf3/0</value> </item>
<item xsi:type="ns1:CIMProperty">
<name xsi:type="xsd:string">DestIfName</name>
<value xsi:type="xsd:string">Intf5/1</value> </item>
</properties>
</objectPath>
</objectPath>
</ns1:createInstance>

XML Examples:

  • CreateNamedPhysicalCircuit.xml
  • CreateNamedPhysicalCircuitRing.xml—Use this example if there is a Ring topology configuration on the PE-CLEs.
  • CreateNamedPhysicalCircuitRingExisting.xml—Use this example to reference an NPC ring that has already been created.

Step 12blank.gif Create VLAN ID pool.

Create a VLAN ID pool, specify a range, and associate it to an access domain to manually enter the parameters for a VLAN ID pool. To have Prime Provisioning automatically assign VLANs to the attachment circuits, specify the Autopick_Vlan_ID keyword in the service definition (Step 15).

When provisioning for an Ethernet core, VPLS service requests use the VLAN ID to reference the attachment circuits.

 

Table 8-12 Create VLAN ID Pools

Operation
className
Required Parameters

createInstance

VlanIdPool

  • Start
  • Size
  • AssocClassType
  • AssocClassId

XML Examples:

  • CreateVlanIdPool.xml

Step 13blank.gif Create VC ID pool.

For a VPLS VPN, all PE-POP routers use the same VC ID to establish the virtual circuit (VC) across the provider core. The VC ID is also the VPN ID and is assigned from the VC ID pool. Prime Provisioning ensures that VC IDs are unique among VPLS VPNs.

note.gif

Noteblank.gif A VC ID pool is global (not associated with a provider or organization).


 

Table 8-13 Create VC ID Pool

Operation
className
Required Parameters

createInstance

VcIdPool

  • Start
  • Size

XML Examples:

  • CreateVcIdPool.xml

Step 14blank.gif Create a VPN.

When you create a VPN to use in VPLS provisioning, you must enable it to support VPLS (VplsVpn=true), and define the type of service (ERS or EWS).

Prime Provisioning assigns a VPN ID (from the VC ID pool) to each VPLS VPN.

 

Table 8-14 Create VPNs

Operation
className
Required Parameters

createInstance

VPN

  • Name
  • Organization or Provider
  • VplsVpn=true
  • ServiceType=

blank.gif ERS

blank.gif EWS

XML Examples:

  • CreateVPN.xml

Step 15blank.gif Create the VPLS service definition (policy).

A VPLS service definition specifies the core type, service subtype, device properties, and the attributes common to all attachment circuits.

 

Table 8-15 Create a VPLS Service Definition

Operation
className
Required Parameters

createInstance

ServiceDefinition

  • Name
  • Type=Vpls
  • Provider or Organization

Note If you do not specify a Provider or Organization, the service policy is global

  • ServiceDefinitionDetails

 

ServiceDefinitionDetails

  • SubType=

blank.gif VPLS_EWS

blank.gif VPLS_EWS_NO_CE

blank.gif VPLS_ERS

blank.gif VPLS_ERS_NO_CE

  • Core_Type=

blank.gif MPLS

blank.gif Ethernet

  • PE_Encap and CE_Encap=

blank.gif DOT1Q

blank.gif DEFAULT

Note If you specify DEFAULT, define the port type with the Use_Native_Vlan attribute.

blank.gif Use_Native_Vlan=true for Trunk with Native VLAN.

blank.gif Use_Native_Vlan=false for Access Port.

  • VplsUniMacAddress

blank.gif MacAddress (You can list multiple secure MAC addresses)

  • Autopick_Vlan_ID
note.gif

Noteblank.gif If Autopick_Vlan_ID=true, be sure that an access domain is attached to the PE-POP, and a VLAN ID pool is assigned to the access domain (Step 7).


XML Examples:

  • CreateVPLSServiceDefn_EWS.xml
  • CreateVPLSServiceDefn_EWS_NO_CE.xml
  • CreateVPLSServiceDefn_ERS.xml
  • CreateVPLSServiceDefn_ERS_NO_CE.xml

Step 16blank.gif Create the VPLS service request.

An VPLS service request defines the service definition and VPN, assigns interfaces and attributes for each attachment circuit (VplsLink), and applies any template information.

 

Table 8-16 Create a VPLS Service Request

Operation
className
Required Parameters

createInstance

ServiceOrder

  • ServiceName
  • NumberOfRequests
  • Provider or Organization

Note If you do not specify a Provider or Organization, the service policy is global.

  • ServiceRequest

 

ServiceRequest

  • RequestName
  • Type=Vpls
  • ServiceRequestDetails

 

ServiceRequestDetails

  • ServiceDefinition

blank.gif ServiceDefinitionType=Vpls

  • VPN
  • VplsLink

 

VplsLink

  • NPC

or

  • ManualConfig=true

blank.gif PE

blank.gif CE (not required for policy subtypes with no CE present)

Note You can use either NPC or ManualConfig to define the VplsLink interfaces. If you use ManualConfig, you must also specify the interfaces (CE_Intf_Name, UNIDeviceInterface for NO_CE subtypes, and PE_Intf_Name).

  • VplsUniMacAddress
  • Link Template (optional)

Note See the “Templates in a Service Request” section.

tip.gif

Tipblank.gif Record the LocatorId value from the XML response for the service request. The Locator ID is required for subsequent service request tasks.


XML Example:

  • CreateVPLSServiceOrder_ERS.xml
  • CreateVPLSServiceOrder_ERS_NO_CE.xml
  • CreateVPLSServiceOrder_EWS.xml
  • CreateVPLSServiceOrder_EWS_NO_CE.xml


 

Auditing Service Requests

A configuration audit occurs automatically each time you deploy a service request. During this configuration audit, Prime Provisioning verifies that all Cisco IOS commands are present and that they have the correct syntax. An audit also verifies that there were no errors during deployment by examining the commands configured by the service request on the target devices. If the device configuration does not match what is defined in the service request, the audit flags a warning and sets the service request to a Failed Audit or Lost state.

If you do not want the configuration audit to occur, change the value for the Audit parameter. The Audit parameter supports these values:

  • Audit—This is the default. A successfully deployed service request is automatically audited unless this flag is changed.
  • NoAudit—Do not perform a configuration audit when the service request is deployed.
  • ForceAudit—Perform a configuration audit even if the service request deployment is not successful.

You can use the Audit parameter with a Create, Modify, or Decommission service request or a Deployment task. See the “Service Decommission” section for more information. To perform a configuration audit as a separate task, see the “Configuration Audit” section.