L2VPN Provisioning


To provision L2VPN using the Cisco Prime Fulfillment API, you need an L2VPN service policy of a specific subtype and an L2VPN service request.

The service policy (defined in a service definition) specifies the attributes common to the end-to-end wires and attachment circuits (ACs).

The service request defines the device interfaces for each end-to-end wire connection (called link endpoints in the GUI), and can optionally override policy attributes in each end-to-end wire link and AC.

When you deploy an L2VPN service request using a service order, the attributes specified in the service definition are applied to the devices and interfaces listed in the service request, along with the attributes for each end-to-end wire link and AC.

This chapter describes L2VPN service concepts and the steps required to provision L2VPN services using the Prime Fulfillment API. The provisioning example includes the process flow from creating the inventory to auditing the service deployment.

For more information on L2VPN provisioning using Prime Fulfillment, see the Cisco Prime Fulfillment User Guide 6.1.

This chapter contains the following sections:

L2VPN Service Definitions

L2VPN Service Requests

Provisioning Example

L2VPN Service Definitions

An L2VPN service definition specifies the policy subtype, the properties for the CPE and PE devices, and the user network interface (UNI). The properties that can be set are based on the policy subtype that is specified in the service definition.

As there are a number of L2VPN naming conventions in use today, it is recommended that you read the appendix on Prime Fulfillment Layer 2 VPN Concepts in the Cisco Prime Fulfillment User Guide 6.1.

Supported Service Definitions

Prime Fulfillment supports the following L2VPN service definition subtypes:

EthernetEVCS (Ethernet Virtual Circuit Service)

EthernetEVCS_NO_CE

EthernetTLS (Transparent LAN Service)

EthernetTLS_NO_CE

ATM (Asynchronous Transfer Mode)

ATM_NO_CE

FRAME_RELAY

FRAME_RELAY_NO_CE


Note For all service definition subtypes with NO_CE, you do not declare the CE devices to be CPEs, and you do not set policy attributes for the CE devices in the service definition.


A service definition can be shared by one or more service requests that have similar requirements. L2VPN service definitions include the following information about the end-to-end wires and attachment circuits:

Service definition subtype (examples: EthernetEVCS or ATM_NO_CE)

Device interface type (example: GigabitEthernet)

VLAN IDs

UNI Port Security

Protocols (examples: CDP, VTP)


Note 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.


Policy Examples

The following shows two L2VPN XML policy examples:

ATM Policy

ERS Policy

ATM Policy

In this example, an L2VPN ATM policy is created in a NPE-CE setup with TransportMode, PWClass, ELine name, and L2vpn Group name attributes, which are configured on an IOS XR device.

XML file in Cisco Prime Fulfillment API Programmer Reference 6.1: CreateL2VPNServiceDefn_ATM_PortMode_PWClass.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>
   <ns0:message id="87855" timestamp="2002-12-13T14:55:38.885Z" 
                sessiontoken="p36bttjwy1"/>
  </soapenv:Header>
  <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">ATM-Policy-NBI-1</value> 
          </item>
          <item xsi:type="ns1:CIMProperty">  
            <name xsi:type="xsd:string">Type</name>
            <value xsi:type="xsd:string">L2Vpn</value> 
          </item>

            <item xsi:type="ns1:CIMProperty">  
            <name xsi:type="xsd:string">Organization</name>
            <value xsi:type="xsd:string">MyCustomer1</value> 
          </item> 
           <!-- <item xsi:type="ns1:CIMProperty">  
            <name xsi:type="xsd:string">Customer</name>
            <value xsi:type="xsd:string">1</value> 
          </item>  -->

          <item xsi:type="ns1:CIMProperty">  
            <name xsi:type="xsd:string">Remarks</name>
            <value xsi:type="xsd:string"> data remarks</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">ATM</value>
              </item>
		
	     <item xsi:type="ns1:CIMProperty">
                <name xsi:type="xsd:string">TransportMode</name>
                <value xsi:type="xsd:string">PORT</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">Uni_Shutdown</name>
                <value xsi:type="xsd:string">true</value>
                <qualifier xsi:type="ns1:CIMQualifier">
                  <name xsi:type="xsd:string">editable</name>
                  <value xsi:type="xsd:string">false</value>
                </qualifier>
              </item>
             <item xsi:type="ns1:CIMProperty">
                   <name xsi:type="xsd:string">USE_PWCLASS</name>
                    <value xsi:type="xsd:string">true</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">PW_CLASS_ID</name>
                <value xsi:type="xsd:string">1</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">ELINE_NAME</name>
                <value xsi:type="xsd:string">ELine_Name</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">L2VPN_GROUP_NAME</name>
                <value xsi:type="xsd:string">ISC</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">Template_Enabled</name>
                <value xsi:type="xsd:string">true</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">ANY</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">AAL5MUX</value>
                <qualifier xsi:type="ns1:CIMQualifier">
                  <name xsi:type="xsd:string">editable</name>
                  <value xsi:type="xsd:string">true</value>
                </qualifier>
              </item>
                        
            </properties>
	              
          </objectPath>
        </objectPath>
      </ns1:createInstance>
  </soapenv:Body>
</soapenv:Envelope>

ERS Policy

In this example, an L2VPN point-to-point Ethernet Relay Service (ERS) policy is created in a NPE-UPE-CE setup, where the NPE is an IOS XR device and others are IOS devices.

Here, the PWClass, ELine name, and L2vpn Group name attributes are configured on IOS XR (NPE).

In addition, the Std UNI attributes are configured on IOS (UPE).

XML file in Cisco Prime Fulfillment API Programmer Reference 6.1: CreateL2VPNServiceDefn_EVCS_NBIEnhance_PWClass.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>
   <ns0:message id="87855" timestamp="2002-12-13T14:55:38.885Z" 
                sessiontoken="p36bttjwy1"/>
  </soapenv:Header>
  <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">NBI-ERS-Policy-1</value> 
          </item>
          <item xsi:type="ns1:CIMProperty">  
            <name xsi:type="xsd:string">Type</name>
            <value xsi:type="xsd:string">L2Vpn</value> 
          </item>

            <item xsi:type="ns1:CIMProperty">  
            <name xsi:type="xsd:string">Organization</name>
            <value xsi:type="xsd:string">MyCustomer2</value> 
          </item> 
          <!-- <item xsi:type="ns1:CIMProperty">  
            <name xsi:type="xsd:string">Customer</name>
            <value xsi:type="xsd:string">1</value> 
          </item>  -->

          <item xsi:type="ns1:CIMProperty">  
            <name xsi:type="xsd:string">Remarks</name>
            <value xsi:type="xsd:string"> data remarks</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">EthernetEVCS</value>
              </item>
		
	     
              <item xsi:type="ns1:CIMProperty">
                <name xsi:type="xsd:string">Uni_Duplex</name>
                <value xsi:type="xsd:string">Auto</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">Uni_Shutdown</name>
                <value xsi:type="xsd:string">true</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_Intf_Shutdown</name>
                <value xsi:type="xsd:string">false</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">Uni_Violation_Action</name>
                <value xsi:type="xsd:string">PROTECT</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">Uni_Aging</name>
                <value xsi:type="xsd:string">1000</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_Intf_Format</name>
                <value xsi:type="xsd:string" />
                <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_Intf_Desc</name>
                <value xsi:type="xsd:string" />
                <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">STD_UNI_PORT</name>
             <value xsi:type="xsd:string">true</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">UNI_KEEP_ALIVE</name>
          <value xsi:type="xsd:string">true</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">Uni_Port_Security</name>
                <value xsi:type="xsd:string">true</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">Uni_Unicast_Traffic</name>
          <value xsi:type="xsd:string">1</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">Uni_Broadcast_Traffic</name>
          <value xsi:type="xsd:string">50</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">Uni_Multicast_Traffic</name>
          <value xsi:type="xsd:string">99</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">USE_SVI</name>
               <value xsi:type="xsd:string">true</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">Autopick_Vlan_ID</name>
                <value xsi:type="xsd:string">true</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">Uni_Speed</name>
                <value xsi:type="xsd:string">1000</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">Use_Native_Vlan</name>
                <value xsi:type="xsd:string">false</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">Uni_Mac_Address</name>
                <value xsi:type="xsd:string">100</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">Template_Enabled</name>
                <value xsi:type="xsd:string">true</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_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">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>
              </item>
              
              <item xsi:type="ns1:CIMProperty">
                   <name xsi:type="xsd:string">USE_PWCLASS</name>
                    <value xsi:type="xsd:string">true</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">PW_CLASS_ID</name>
                <value xsi:type="xsd:string">1</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">ELINE_NAME</name>
                <value xsi:type="xsd:string">ELine_Name</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">L2VPN_GROUP_NAME</name>
                <value xsi:type="xsd:string">ISC</value>
                <qualifier xsi:type="ns1:CIMQualifier">
                  <name xsi:type="xsd:string">editable</name>
                  <value xsi:type="xsd:string">true</value>
                </qualifier>
              </item>                  
              
            </properties>
	              
          </objectPath>
        </objectPath>
      </ns1:createInstance>
  </soapenv:Body>
</soapenv:Envelope>

L2VPN Service Requests

An L2VPN service request specifies the service definition, assigns device interfaces for the end-to-end wire connections, and the attachment circuit details.

End-To-End Wires

An end-to-end wire is the link from one endpoint through the service provider cloud to another endpoint. In most cases, these links are from CE to CE. An attachment circuit is the link from the CE to the PE. If no CE is present, the attachment circuit link is from PE-CLE to PE-CLE.

In the EthernetEVCS network example shown in Figure 7-1, End-to-End wire1 is shown from ence132 to ence61. The two attachment circuits are the links from ence132 to enswosr1 and from ence61 to enswosr2.

Figure 7-1 End to End Wire Network Example

The number of end-to-end wires and attachment circuits that can be created are based on the policy subtype.

There can be 1 or 2 AttachmentCircuits for every EndToEndWire for the following policy subtypes:

EthernetEVCS

EthernetEVCS_NO_CE

EthernetTLS

EthernetTLS_NO_CE

There are 2 AttachmentCircuits for every EndToEndWire for the following policy subtypes:

FRAME_RELAY

FRAME_RELAY_NO_CE

ATM

ATM_NO_CE

Service Request Examples

The following are XML examples of L2VPN service requests.

ATM Service Request

ERS Service Request

ATM Service Request

In this example, an L2VPN ATM service request is created in a NPE-CE setup with TransportMode, PWClass, ELine name, and L2vpn Group name attributes, which are configured on IOS XR device.

XML file in Cisco Prime Fulfillment API Programmer Reference 6.1: CreateL2VPNServiceOrder_ATM_PortMode_PWClass.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">CarrierId</name>
                <value xsi:type="xsd:string">322</value>
              </item>
              <item xsi:type="ns1:CIMProperty">  
                <name xsi:type="xsd:string">DesiredDueDate</name>
                <value xsi:type="xsd:dateTime">2002-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">MYSR-1</value>
              </item>
              <item xsi:type="ns1:CIMProperty">  
                <name xsi:type="xsd:string">Type</name>
                <value xsi:type="xsd:string">L2Vpn</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">ATM-Policy-NBI-1</value>
                  <qualifier xsi:type="xsd:string">
                    <name xsi:type="xsd:string">ServiceDefinitionType</name>
                    <value xsi:type="xsd:string">L2Vpn</value>
                  </qualifier>
                </item>
                <item xsi:type="ns1:CIMProperty">
                  <name xsi:type="xsd:string">VPN</name>
                  <value xsi:type="xsd:string">l2-vpn1</value>
                </item>
                <!-- <item xsi:type="ns1:CIMProperty">  
                  <name xsi:type="xsd:string">topology</name>
                  <value xsi:type="xsd:string">FULLMESH</value>
                </item> -->
              </properties>
              <objectPath xsi:type="ns1:CIMObjectPath">
                <className xsi:type="xsd:string">EndToEndWire</className>
                <objectPath xsi:type="ns1:CIMObjectPath">
                  <className xsi:type="xsd:string">AttachmentCircuit</className>
                  <properties xsi:type="ns1:CIMPropertyList" 
                        soapenc:arrayType="ns1:CIMProperty[]">  
                        
                     <item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">NPC</name>
                      <value xsi:type="xsd:string">18</value>
                    </item>  
                   
                    <!-- <item xsi:type="ns1:CIMProperty">  
                      <name xsi:type="xsd:string">PE</name>
                      <value xsi:type="xsd:string">cl-test-l2-12404-1</value>
                    </item>
                    <item xsi:type="ns1:CIMProperty">  
                      <name xsi:type="xsd:string">Cpe</name>
                      <value xsi:type="xsd:string">7200_2</value>
                    </item>
                    <item xsi:type="ns1:CIMProperty">  
                      <name xsi:type="xsd:string">NPC</name>
                      <value xsi:type="xsd:string">18</value>
                    </item> 
                    <item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">UNIDeviceInterface</name>
                      <value xsi:type="xsd:string">ATM0/1/0/3</value>
                    </item> -->
                    
                  </properties>
                  <objectPath xsi:type="ns1:CIMObjectPath">
                    <className xsi:type="xsd:string">ACAttrs</className>
                    <properties xsi:type="ns1:CIMPropertyList"
                                    soapenc:arrayType="ns1:CIMProperty[]">
                     
                     <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_VCD</name>
                        <value xsi:type="xsd:string">3000</value>
                      </item>
                     <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_VPI</name>
                        <value xsi:type="xsd:string">100</value>
                      </item>
                     <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_VCI</name>
                        <value xsi:type="xsd:string">300</value>
                      </item>
                      
                      <!-- PE info -->
                      
                       <item xsi:type="ns1:CIMProperty">
                <name xsi:type="xsd:string">TransportMode</name>
                <value xsi:type="xsd:string">PORT</value>
                              </item> 
                      
                      
                     <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">PE_Encap</name>
                        <value xsi:type="xsd:string">AAL5</value>
                      </item>
                    
                     <!-- <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">Uni_Shutdown</name>
                        <value xsi:type="xsd:string">false</value>
                      </item>-->
                      <item xsi:type="ns1:CIMProperty">
	                   <name xsi:type="xsd:string">USE_PWCLASS</name>
	                   <value xsi:type="xsd:string">true</value>
              		</item>
              	
			   	<item xsi:type="ns1:CIMProperty">
	        		<name xsi:type="xsd:string">PW_CLASS_ID</name>
	        		<value xsi:type="xsd:string">1</value>
              		</item>
              		
              	  <item xsi:type="ns1:CIMProperty">
                   <name xsi:type="xsd:string">ELINE_NAME</name>
                   <value xsi:type="xsd:string">ELine_Name</value>
                  </item>

		       <item xsi:type="ns1:CIMProperty">
                  <name xsi:type="xsd:string">L2VPN_GROUP_NAME</name>
                  <value xsi:type="xsd:string">ISC</value>
                </item>
                      
                    </properties>                
                  </objectPath>
                  
                </objectPath>      
                     
		<!-- AC2-->
                <objectPath xsi:type="ns1:CIMObjectPath">
                  <className xsi:type="xsd:string">AttachmentCircuit</className>
                  <properties xsi:type="ns1:CIMPropertyList" 
                            soapenc:arrayType="ns1:CIMProperty[]">  
                   
                    <item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">NPC</name>
                      <value xsi:type="xsd:string">19</value>
                    </item>  
                   <!-- <item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">PE</name>
                      <value xsi:type="xsd:string">cl-test-l2-12404-2</value>
                    </item>
                     <item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">Cpe</name>
                      <value xsi:type="xsd:string">3640_6</value>
                    </item>
                   
                    <item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">UNIDeviceInterface</name>
                      <value xsi:type="xsd:string">ATM0/2/0/3</value>
                    </item> -->
                    
                  </properties>
                  <objectPath xsi:type="ns1:CIMObjectPath">
                    <className xsi:type="xsd:string">ACAttrs</className>
                    <properties xsi:type="ns1:CIMPropertyList"
                                      soapenc:arrayType="ns1:CIMProperty[]">
                                      
						<item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_VCD</name>
                        <value xsi:type="xsd:string">3000</value>
                      </item>
                     <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_VPI</name>
                        <value xsi:type="xsd:string">100</value>
                      </item>
                     <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_VCI</name>
                        <value xsi:type="xsd:string">300</value>
                      </item>                      
                     
                      <!-- PE info -->
                      
                       <item xsi:type="ns1:CIMProperty">
                <name xsi:type="xsd:string">TransportMode</name>
                <value xsi:type="xsd:string">PORT</value>
                              </item> 
                      <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">PE_Encap</name>
                        <value xsi:type="xsd:string">AAL5</value>
                      </item>
                       
                      
                      <!--<item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">Uni_Shutdown</name>
                        <value xsi:type="xsd:string">false</value>
                      </item>-->
                      
                    </properties>                
                  </objectPath> 
                </objectPath> 
              </objectPath>
            </objectPath>
          </objectPath>
        </action>
      </actions>
    </ns1:performBatchOperation>
  </soapenv:Body> 
</soapenv:Envelope>

ERS Service Request

In this example, an L2VPN point-to-point Ethernet Relay Service (ERS) service request is created in a NPE-UPE-CE setup, where the NPE is an IOS XR device and others are IOS devices.

Here, the PWClass, ELine name and L2vpn Group name attributes are configured on IOS XR (NPE).

In addition, the Std UNI attributes are configured on IOS (UPE).

XML file in Cisco Prime Fulfillment API Programmer Reference 6.1: CreateL2VPNServiceOrder_EVCS_NBIEnhance_PWClass.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="180" 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">CarrierId</name>
                <value xsi:type="xsd:string">322</value>
              </item>
              <item xsi:type="ns1:CIMProperty">  
                <name xsi:type="xsd:string">DesiredDueDate</name>
                <value xsi:type="xsd:dateTime">2002-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">new_sr</value>
              </item>
              <item xsi:type="ns1:CIMProperty">  
                <name xsi:type="xsd:string">Type</name>
                <value xsi:type="xsd:string">L2Vpn</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>
<!-- Policy Edit -->
                  <value xsi:type="xsd:string">NBI-ERS-Policy-1</value>

                    <qualifier xsi:type="xsd:string">
                    <name xsi:type="xsd:string">ServiceDefinitionType</name>
                    <value xsi:type="xsd:string">L2Vpn</value>
                  </qualifier>
                </item>
                <item xsi:type="ns1:CIMProperty">
                  <name xsi:type="xsd:string">VPN</name>
                  <value xsi:type="xsd:string">l2-vpn1</value>
                </item>
<!--
                <item xsi:type="ns1:CIMProperty">  
                  <name xsi:type="xsd:string">topology</name>
                  <value xsi:type="xsd:string">Full Mesh</value>
                </item>
-->
              </properties>
              <objectPath xsi:type="ns1:CIMObjectPath">
                <className xsi:type="xsd:string">EndToEndWire</className>
                
                
                <objectPath xsi:type="ns1:CIMObjectPath">
<!--AC1 Edit for IP Address & PW class usage  -->  
		<className xsi:type="xsd:string">AttachmentCircuit</className>
                  <properties xsi:type="ns1:CIMPropertyList" 
                        soapenc:arrayType="ns1:CIMProperty[]">  
                    
                    <item xsi:type="ns1:CIMProperty">          /* NPE-UPE-CE setup... NPE 
is an IOS-XR device */
                      <name xsi:type="xsd:string">NPC</name>
                      <value xsi:type="xsd:string">4</value>
                    </item>
                    
                     <!--<item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">UNIDeviceInterface</name>
                      <value xsi:type="xsd:string">FastEthernet1/0/17</value>
                    </item>-->
                    
                  </properties>
                  
                  <objectPath xsi:type="ns1:CIMObjectPath">
                    <className xsi:type="xsd:string">ACAttrs</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">FastEthernet3/0</value>
                      </item> -->
                      
                      <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_Encap</name>
                        <value xsi:type="xsd:string">DOT1Q</value>
                      </item>
                      
                      
                      <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_Ip_Address</name>
                        <value xsi:type="xsd:string">50.50.50.1/24</value>
                      </item>
                      
                      <item xsi:type="ns1:CIMProperty">
             <name xsi:type="xsd:string">STD_UNI_PORT</name>
             <value xsi:type="xsd:string">true</value>                
              </item> 
              
               <item xsi:type="ns1:CIMProperty">
                 <name xsi:type="xsd:string">UNI_KEEP_ALIVE</name>
                <value xsi:type="xsd:string">true</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_Unicast_Traffic</name>
          <value xsi:type="xsd:string">2</value>               
              </item>
              
              <item xsi:type="ns1:CIMProperty">
          <name xsi:type="xsd:string">Uni_Broadcast_Traffic</name>
          <value xsi:type="xsd:string">2</value>               
              </item>
              
              <item xsi:type="ns1:CIMProperty">
          <name xsi:type="xsd:string">Uni_Multicast_Traffic</name>
          <value xsi:type="xsd:string">2</value>               
              </item> 
              
              
             
             <item xsi:type="ns1:CIMProperty">
               <name xsi:type="xsd:string">USE_SVI</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">USE_PWCLASS</name>
	                   <value xsi:type="xsd:string">true</value>
              		</item>
              	
			   	<item xsi:type="ns1:CIMProperty">
	        		<name xsi:type="xsd:string">PW_CLASS_ID</name>
	        		<value xsi:type="xsd:string">1</value>
              		</item>
              		
              	  <item xsi:type="ns1:CIMProperty">
                   <name xsi:type="xsd:string">ELINE_NAME</name>
                   <value xsi:type="xsd:string">ELine_Name_AC1</value>
                  </item>

		       <item xsi:type="ns1:CIMProperty">
                  <name xsi:type="xsd:string">L2VPN_GROUP_NAME</name>
                  <value xsi:type="xsd:string">VPNSC</value>
                </item>   
        
                    </properties>                
                  </objectPath>
                  
             </objectPath>
                  
		<!-- AC2 -->
                <objectPath xsi:type="ns1:CIMObjectPath">
                  <className xsi:type="xsd:string">AttachmentCircuit</className>
                  <properties xsi:type="ns1:CIMPropertyList" 
                            soapenc:arrayType="ns1:CIMProperty[]">  
                    <!-- <item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">PE</name>
                      <value xsi:type="xsd:string">cl-test-l2-7600-2</value>
                    </item>
                    <item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">Cpe</name>
                      <value xsi:type="xsd:string">cl-test-l2-2821-4</value>
                    </item> --> 
                    <item xsi:type="ns1:CIMProperty">           /* NPE-UPE-CE setup... NPE 
is an IOS-XR device */
                      <name xsi:type="xsd:string">NPC</name>
                      <value xsi:type="xsd:string">13</value>
                    </item>
                    
                     <!--<item xsi:type="ns1:CIMProperty">
                      <name xsi:type="xsd:string">UNIDeviceInterface</name>
                      <value xsi:type="xsd:string">FastEthernet1/0/15</value>
                    </item>-->
                    
                  </properties>
                  <objectPath xsi:type="ns1:CIMObjectPath">
                    <className xsi:type="xsd:string">ACAttrs</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">CE_Encap</name>
                        <value xsi:type="xsd:string">DOT1Q</value>
                      </item>
                      
                      
                      <item xsi:type="ns1:CIMProperty">
                        <name xsi:type="xsd:string">CE_Ip_Address</name>
                        <value xsi:type="xsd:string">50.50.50.2/24</value>
                      </item>
                      
                                     
               <item xsi:type="ns1:CIMProperty">
             <name xsi:type="xsd:string">STD_UNI_PORT</name>
             <value xsi:type="xsd:string">true</value>                
              </item> 
              
               <item xsi:type="ns1:CIMProperty">
                 <name xsi:type="xsd:string">UNI_KEEP_ALIVE</name>
                <value xsi:type="xsd:string">true</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_Unicast_Traffic</name>
          <value xsi:type="xsd:string">85</value>               
              </item>
              
              <item xsi:type="ns1:CIMProperty">
          <name xsi:type="xsd:string">Uni_Broadcast_Traffic</name>
          <value xsi:type="xsd:string">90</value>              
              </item>
              
              <item xsi:type="ns1:CIMProperty">
          <name xsi:type="xsd:string">Uni_Multicast_Traffic</name>
          <value xsi:type="xsd:string">99</value>              
              </item> 
              
             <item xsi:type="ns1:CIMProperty">
               <name xsi:type="xsd:string">USE_SVI</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">USE_PWCLASS</name>
	                   <value xsi:type="xsd:string">true</value>
              		</item>
              	
			   	<item xsi:type="ns1:CIMProperty">
	        		<name xsi:type="xsd:string">PW_CLASS_ID</name>
	        		<value xsi:type="xsd:string">36</value>
              		</item>
-->
                      
                    </properties>                
                  </objectPath> 
                </objectPath> 
              </objectPath>
            </objectPath>
          </objectPath>
        </action>
      </actions>
    </ns1:performBatchOperation>
  </soapenv:Body> 
</soapenv:Envelope>

Provisioning Example

This section describes the required steps for using the API to provision L2VPN, and includes the operation, class, and required parameters for each step.

Process Summary

In this L2VPN provisioning example, the following steps are listed:

1. Create device groups (optional).

2. Create devices.

3. Collect device configurations.

4. Create provider.

5. Create regions.

6. Declare devices as PEs.

7. Create access domains.

8. Create customer.

9. Create sites.

10. Declare devices as CPEs (not required for No_CE service subtypes).

11. Create named physical circuits.

12. Create VLAN ID pool.

13. Create VC ID pool.

14. Create VPN.

15. Create PseudowireClass (optional).

16. Create the L2VPN service definition (policy).

17. Create the L2VPN service request.


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


The provisioning example in this section is based on the partial network diagram shown in Figure 7-2.

Figure 7-2 L2VPN Provisioning Network Example

Prerequisites

For security reasons, Prime Fulfillment 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 L2VPN 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 Fulfillment 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 Fulfillment User Guide 6.1 for information on setting up user roles and permissions.

Provisioning Process

This section provides a sample provisioning process using XML examples. The inventory of XML examples for the Prime Fulfillment API are available at: Cisco Prime Fulfillment API Programmer Reference 6.1.


Step 1 Create device groups (optional).

Table 7-1 Create Device Group

Operation
className
Required Parameters

createInstance

DeviceGroup

Name


In this example, one device group is created for the customer, and one for the provider.

CreateDeviceGroup_ProvDev.xml

CreateDeviceGroup_CustDev.xml

XML Examples:

CreateDeviceGroup.xml


Tip 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 2 Create devices.

Every network element that Prime Fulfillment manages must be defined as a device in the system. An element is any device from which Prime Fulfillment can collect information. In most cases, devices are Cisco IOS routers and Catalyst switches.

Table 7-2 Create Devices

Operation
className
Required Parameters

createInstance

CiscoRouter

CatOS

One or more of the following:

ManagementIPAddress

HostName

DomainName


In this example, an XML request is created for each device in the CPE to PE link, as shown in Figure 7-2.

CreateDevice_enpe20.xml

CreateDevice_enpe21.xml

CreateDevice_ence142.xml

CreateDevice_ence211.xml

XML Examples:

CreateCiscoRouter.xml

CreateCat.xml

Step 3 Collect device configurations.

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

Table 7-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.

RetrieveVersion=true

RetrieveDeviceInterfaces=true


In this example, device collection is divided into two separate tasks. One task performs a configuration collection on the devices in the customer device group, and the second task is for the provider device group. (Device groups were created in Step 1.)

CreateTaskServiceOrderCollection1.xml

CreateTaskServiceOrderCollection2.xml


Note To perform a collection on a device group, specify the DeviceGroup keyword in the ServiceRequestDetails. (For example, DeviceGroup=Group_CustDev, DeviceGroup=Group_ProvDev).


XML Example:

CreateTaskServiceOrderCollection.xml

Step 4 Create 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 7-4 Create Provider

Operation
className
Required Keywords

createInstance

Provider

Name

AsNumber


XML Example:

CreateProvider.xml

Step 5 Create Regions.

Each provider can contain multiple regions. In this example, an XML request is created for each region.

CreateRegion1.xml

CreateRegion2.xml

Table 7-5 Create Region

Operation
className
Required Keywords

createInstance

Region

Name

Provider


XML Example:

CreateRegion.xml

Step 6 Declare devices as PEs.

The XML request that assigns a PE role (PE-POP or PE-CLE) to a device is also used to:

Assign PE devices to Regions/Provider

Specify PE interface information

Table 7-6 Create PEs

Operation
className
Required Keywords

createInstance

PE

Provider

Region

Role=

PE_CLE

PE_POP

Device

Interface


In this example, an XML request is created for each device to be declared as a PE. Using Figure 7-2 for reference, enpe21=PE1 and enpe20=PE2.

CreatePE1.xml

CreatePE2.xml

XML Example:

CreatePE.xml

Step 7 Create Access Domains.

Create an access domain for Ethernet-based services where Prime Fulfillment automatically assigns a VLAN for the link from the VLAN pool. Select all PE-POP devices to be associated with this domain, and later in the process, when VLAN pools are created for an Access Domain, the PE-POP is automatically assigned a VLAN ID.

Table 7-7 Create Access Domains

Operation
className
Required Keywords

createInstance

AccessDomain

Name

Provider

PE (Role must be PE_POP)


XML Example:

CreateAccessDomain.xml

Step 8 Create 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 many CPEs.

Table 7-8 Create Customer

Operation
className
Required Keywords

createInstance

Organization

Name


XML Examples:

CreateOrganization.xml

Step 9 Create Sites.

Create sites and assign customers (Organizations) to them. In this example, an XML request is created for each site.

CreateSite1.xml

CreateSite2.xml

Table 7-9 Create Sites

Operation
className
Required Keywords

createInstance

Site

Name

Organization


XML Examples:

CreateSite.xml

Step 10 Declare devices as CPEs.

The XML request that assigns a CPE to a site is also used to specify:

The management type.

CE interface information. If no CE is present, specify the UNI (PE-CLE or PE-POP) interface information.

Table 7-10 Create CPE Devices

Operation
className
Required Keywords

createInstance

Cpe

Site

Device

ManagementType


In this example, an XML request is created for each device you want specified as a CPE. Using the network diagram for reference, ence142=Cpe1 and ence211=Cpe2.

CreateCpe1.xml

CreateCpe2.xml

XML Example:

CreateCpe.xml

Step 11 Create Named Physical Circuits.

Create an NPC for each physical link in the CPE to PE-POP end-to-end wire. If there are intermediate devices, those links must also be added to the NPC using PhysicalLink.

When creating an NPC, the source device of the first physical link should be the CPE or, in the case of an unmanaged CPE, the U-PE

The PE-POP or N-PE should be the destination device of the last physical link, and any intermediate devices appear twice, first as the destination device of a link, then as the source device of the next link.

Table 7-11 Create NPCs 

Operation
className
Required Parameters

createInstance

NamedPhysicalCircut

PhysicalLink

 

PhysicalLink

SrcDevice

DestDevice

SrcIfName

DestIfName


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 12 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 pool. To have Prime Fulfillment automatically assign VLANs to end-to-end wire links, specify the AutoPickVlanId keyword in the service definition (see Step 15).

Table 7-12 Create VLAN Pool

Operation
className
Required Keywords

createInstance

VlanIdPool

Start

Size

AssocClassType

AssocClassId


XML Example:

CreateVlanIdPool.xml

Step 13 Create a VC ID pool.

A VC ID pool is global and not associated with a provider or organization.

Table 7-13 Create VC ID Pool

Operation
className
Required Keywords

createInstance

VcIdPool

Start

Size


XML Example:

CreateVcIdPool.xml

Step 14 Create a VPN.

A VPN in an L2VPN network is only a name used to group L2VPN links.

Table 7-14 Create VPNs

Operation
className
Required Parameters

createInstance

VPN

Name


XML Example:

CreateVPN.xml

Step 15 Create PseudowireClass (optional)

Configure a Pseudowire class with the required attributes. This allows Prime Fulfillment to configure a Pseudowire class and preferred path on IOS XR devices.

Table 7-15 Create Pseudowire Class

Operation
className
Required Parameters

createInstance

PseudowireClass

Name

Description (optional)

Encapsulation

TransportMode

TunnelId (optional)

DisableFallback (optional)


XML Example:

CreatePWclass.xml

Step 16 Create the L2VPN service definition (policy).

A service definition is a template of the parameters needed to define an L2VPN service request. Once you define the policy template, it can be used by all L2VPN service requests that share a common set of attributes.

Certain properties in the service definition can set an additional attribute, editable=true. This allows the service request creator to change the values on specific policy attributes. If the property is set to editable=false, the service request creator cannot change the policy attributes. See the following example:

<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">ATM</value>
              </item>
              <item xsi:type="ns1:CIMProperty">
                <name xsi:type="xsd:string">PE_Encap</name>
                <value xsi:type="xsd:string">AAL0</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">Switch</value> 
                <qualifier xsi:type="ns1:CIMQualifier">
                  <name xsi:type="xsd:string">editable</name>
                  <value xsi:type="xsd:string">true</value>
                </qualifier>
              </item>

In this example, a service definition is created, with a SubType=ATM, and policy attribute values for the Cpe, PE, and UNI with the ServiceDefinitionDetails.

CreateL2VPNServiceDefn_ATM.xml

Table 7-16 Create a Service Policy

Operation
className
Required Parameters

createInstance

ServiceDefinition

Name

Type=L2Vpn

ServiceDefinitionDetails

 

ServiceDefinitionDetails

SubType=

EthernetEVCS

EthernetEVCS_NO_CE

EthernetTLS

EthernetTLS_NO_CE

FRAME_RELAY

FRAME_RELAY_NO_CE

ATM

ATM_NO_CE

Provider or Organization

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



Note If you set the AutoPickVlanId keyword in the ServiceDefinitionDetails, be sure that an access domain is attached to the PE that the PE-CLE (switch) is connected to, and a VLAN pool is assigned to the access domain.


XML Examples:

CreateL2VPNServiceDefn_EVCS.xml

CreateL2VPNServiceDefn_EthernetEVCS_NO_CE.xml

CreateL2VPNServiceDefn_EthernetTLS.xml

CreateL2VPNServiceDefn_EthernetTLS_NO_CE.xml

CreateL2VPNServiceDefn_ATM.xml

CreateL2VPNServiceDefn_ATM_NO_CE.xml

CreateL2VPNServiceDefn_FRAME_RELAY.xml

CreateL2VPNServiceDefn_FRAME_RELAY_NO_CE.xml

Step 17 Create the L2VPN service request.

An L2VPN service request consists of one or more end-to-end wires, connecting various sites in a point-to-point topology. When you create a service request, you enter several parameters, including the service definition to use, the specific interfaces on the CPE (or UNI) and PE devices, routing protocol information, and IP addressing information.

In this example, an L2VPN service request is created for an ATM network with the CE present. The service request is deployed through a service order. The ServiceRequestDetails specify the attributes for the end-to-end wires and attachment circuits.


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


Table 7-17 Create a Service Request

Operation
className
Required Parameters

createInstance

ServiceOrder

ServiceName

NumberOfRequests

ServiceRequest

 

ServiceRequest

RequestName

Type=L2Vpn

ServiceRequestDetails

 

ServiceRequestDetails

ServiceDefinition

ServiceDefinitionType=L2Vpn

EntoEndWire

VPN

 

EndtoEndWire

AttachmentCircuit

 

AttachmentCircuit

ACAttrs

LinkTemplate (optional)

Note See the "Templates in a Service Request" section on page 4-18.



Tip Record the LocatorId value that is returned for the service request. The Locator ID is required to perform a configuration audit of the service request.


XML Examples:

CreateL2VPNServiceOrder_EVCS.xml

CreateL2VPNServiceOrder_EVCS_NO_CE.xml

CreateL2VPNServiceOrder_EthernetTLS.xml

CreateL2VPNServiceOrder_EthernetTLS_NO_CE.xml

CreateL2VPNServiceOrder_ATM.xml

CreateL2VPNServiceOrder_ATM_NO_CE.xml

CreateL2VPNServiceOrder_FRAME_RELAY.xml

CreateL2VPNServiceOrder_FRAME_RELAY_NO_CE.xml


Auditing Service Requests

A configuration audit occurs automatically each time you deploy a service request. During this configuration audit, Prime Fulfillment 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 on page 3-10 for more information. To perform a configuration audit as a separate task, see the "Configuration Audit" section on page 3-11.