MPLS Transport Profile Provisioning


This chapter describes the provisioning support for MPLS Transport Profile (MPLS-TP) provided in Cisco Prime Fulfillment.

The MPLS-TP API solution provides provisioning, updating, and deletion of MPLS-TP objects.

More specifically, the chapter describes MPLS-TP service concepts and the steps required to provision MPLS-TP services using the Prime Fulfillment API. A provisioning example lists all steps from creating the inventory to deploying the service.

For information on MPLS-TP provisioning using the Prime Fulfillment GUI, see the Cisco Prime Fulfillment User Guide 6.2.

This chapter contains the following sections:

Prerequisites and Limitations

MPLS-TP Service Definitions

MPLS-TP Discovery

MPLS-TP Service Requests

Provisioning Example.

Prerequisites and Limitations

The current release of Prime Fulfillment involves certain prerequisites for MPLS-TP, which are described in the MPLS-TP Discovery.

See the Cisco Prime Fulfillment Installation Guide 6.2 for general system recommendations and supported platforms.

MPLS-TP Service Definitions

To provision MPLS-TP using the Prime Fulfillment API, you need a MPLS-TP service definition and a MPLS-TP service request (SR). This section lists the supported service definitions, service orders, and policies and includes corresponding examples.

When you deploy a MPLS-TP 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.

Supported MPLS-TP Features

Prime Fulfillment supports the following MPLS-TP features:

MPLS-TP Discovery Tasks

Full Discovery

MPLS Label Sync

MPLS-TP Policies

Create MPLS-TP Policy

MPLS-TP Service Requests

Create MPLS-TP Tunnel

Modify MPLS-TP Tunnel

Delete MPLS-TP Tunnel.

API XML examples for the above operations are contained in the Cisco Prime Fulfillment API Programmer Reference 6.2.

Policy Example

The following is an example of how to create an MPLS-TP policy.

The relevant attributes that need to be set for this policy are highlighted in bold in the example. They are <attribute 1>, which in the example is set to <value 1>, and <attribute 2>, which in the examples is set to <value 2>.

Example: CreateMplsTpPolicy.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="1" sessiontoken="0AA9445A4E6A044ADD8E393BA254715B"
			Wait="false" WaitTimeout="300" />
	</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">Type</name>
						<value xsi:type="xsd:string">Flexible</value>
					</item>
					<item xsi:type="ns1:CIMProperty">
						<name xsi:type="xsd:string">Name</name>
						<value xsi:type="xsd:string">TPPolicy-New3</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">PolicyData</name>
							<value xsi:type="xsd:string"><![CDATA[
<service serviceType="MPLS-TP" serviceName="MPLS-TP">    
    <section useFor="SR" name="Service Information "  required="true" >
        <field name="serviceType" title="Service Type" type="text" disabled="true" 
required="false"  editable="true"  value="MPLS-TP"/> 
        <field name="serviceDescription" title="Service Description" type="textarea" 
required="false"/>
    </section>
    
    <section useFor="Policy" name="Policy Information "  required="true" >
        <field name="policyName" title="Policy Name" type="text" required="true"/>
        <field name="policyDescription" title="Description" type="textarea" 
required="false"/>
    </section>
 
    <section useFor="Policy-SR" name="Tunnel Characteristics"  required="true" >
    <group>
        <field name="tunnelName" title="Name" type="text" required="false" value="" 
editable="true">
            <validators>
                <validator type="regexp" expression=".*" errorMessage="Tunnel name can be 
any number of characters"/>
            </validators>
        </field>
        <field name="dstTunnelName" title="Name (If Different from Source Name)" 
type="text" required="false" value="" editable="true">
            <validators>
                <validator type="regexp" expression=".*" errorMessage="Tunnel name can be 
any number of characters"/>
            </validators>
        </field>
        </group>
        <group>
            <field name="tunnelDescription" title="Description" type="textarea" 
required="false"/>
            <field name="dstTunnelDescription" title="Description (If Different from 
Source Description)" type="textarea" required="false"/>
        </group>
        <group>
            <field name="bandwidth" title="Transmit Bandwidth" type="integer" 
required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
            <field name="rxBandwidth" title="Recieve Bandwidth(If Different from 
Transmit)" type="integer" required="false" style="width:120px" 
metricOptions="Kbps,[Mbps],Gbps"/>
        </group>
 
   
        <group>
            <field name="srcTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number 
At Source" type="boolean"  required="false" value="true" visibility="Hidden"/>
            <field name="dstTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number 
At Destination" type="boolean"  required="false" value="true" visibility="Hidden"/>
        </group>
        <field name="state" title="State" type="combo"  required="false" 
visibility="Hidden" value="Up">
                    <valueMap>
                        <value>Up</value>
                        <value>Down</value>
                    </valueMap>
        </field>
        <field name="protectedTpTunnel" title="Protection" type="boolean"  
required="false" visibility="Hidden" value="true"/>
        <field name="diversityOption" title="Diversity Options" type="combo" 
required="false" disabled="true" visibility="Hidden" value="Node Diversity Desired">
            <valueMap>
                <value>Node Diversity Desired</value>
                <value>Node Diversity Required</value>
                <value>Link Diversity Only</value>
            </valueMap>
        </field>
    </section>
    
    <section useFor="Policy-SR" name="Tunnel End-Points"  required="true" >
        <field name="sourceDevice" title="Source Node" type="textpicker" 
resource="devices" resourceToLoad="sourceBfdTemplate" required="true" editable="true" />   
        <field name="sourceBfdTemplate" title="Source BFD" type="textpicker" 
required="true"/>
        <field name="sourceTunnelNumber" title="Source Tunnel Number" type="text" 
required="false" visibility="Hidden" editable="true">
            <validators>
                <validator type="regexp" expression="\d*" errorMessage="Tunnel number must 
be 0 - 65535"/>
            </validators>
        </field>
        <field name="sourceRouterId" title="Source Router ID" type="ip" required="false" 
visibility="Hidden"/>
        <field name="sourceGlobalId" title="Source Global ID" type="integer" 
required="false" visibility="Hidden"/>
        <field name="destinationDevice" title="Destination Node" type="textpicker" 
resource="devices" resourceToLoad="destinationBfdTemplate" required="true"/> 
        <field name="destinationBfdTemplate" title="Destination BFD(If Different from 
Source BFD)" type="textpicker" required="true"/>
        <field name="destinationTunnelNumber" title="Destination Tunnel Number" 
type="text" required="false" visibility="Hidden"  editable="true">
            <validators>
                <validator type="regexp" expression="\d*" errorMessage="Tunnel number must 
be 0 - 65535"/>
            </validators>
        </field>
        <field name="destinationRouterId" title="Destination Router ID" type="ip" 
required="false" visibility="Hidden"/>
        <field name="destinationGlobalId" title="Destination Global ID" type="integer" 
required="false" visibility="Hidden"/>
    </section>
 
   
    <section useFor="SR" name="Review Routing"  required="true">
        <group id="pathOptionsGroup" cloneable="true">
            <field name="reqExOption" title="" type="combo"  required="false" 
value="Required NE/Link">
                <valueMap>
                    <value>Required NE/Link</value>
                    <value>Excluded NE/Link</value>
                </valueMap>
            </field>
            <field name="reqExElement" title="" type="textpicker" 
resource="devicesAndTpLinks" width="400" required="true"/>
            <field name="pathtype" title="" type="combo"  required="false" value="Working 
Path">
                <valueMap>
                    <value>Working Path</value>
                    <value>Protect Path</value>
                </valueMap>
            </field>
        </group>
    </section>
</service>
							]]></value>
						</item>
					</properties>
				</objectPath>
			</objectPath>
		</ns1:createInstance>
	</soapenv:Body>
</soapenv:Envelope>
 
   

Related APIs

ModifyMplsTpPolicy.xml

MPLS-TP Discovery

After completing the preconfiguration process, you can discover the MPLS-TP network for a particular MPLS-TP provider. This populates the repository with the network topology.

Only links that have been configured as MPLS-TP links and have a link number are discovered. Specifically, a link is discovered if it is listed in the output of show mpls tp link-numbers and is running CDP.

As a prerequisite for running MPLS-TP discovery, all devices must be present and a Collect Config task

must be run. For further information about MPLS-TP Discovery, see the Cisco Prime Fulfillment User Guide 6.2.

MPLS-TP Discovery Example

The following is an example of how to create an MPLS-TP Discovery task.

The relevant attributes that need to be set for this policy are highlighted in bold in the example. In this case, it is the attribute Subtype, which in the example is set to TP_DISCOVERY.

Example: CreateTaskServiceOrderTpDiscovery.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="false" WaitTimeout="60" 
sessiontoken="E8AF7A658C78F46BFF4E33E4E4DB1B78"/>
  </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">ServiceOrderForTpDiscovery</value>
        </item>
        <item xsi:type="ns1:CIMProperty">  
         <name xsi:type="xsd:string">CarrierId</name>
         <value xsi:type="xsd:string">1</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>
        <item xsi:type="ns1:CIMProperty">  
         <name xsi:type="xsd:string">Organization</name>
         <value xsi:type="xsd:string">Customer1</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">TP-DISCOVERY-NBI</value>
       </item>
       <item xsi:type="ns1:CIMProperty">  
        <name xsi:type="xsd:string">Type</name>
        <value xsi:type="xsd:string">Task</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">SubType</name>
           <value xsi:type="xsd:string">TP_DISCOVERY</value>
        </item>
        <item xsi:type="ns1:CIMProperty">
          <name xsi:type="xsd:string">Device</name>
          <value xsi:type="xsd:string">ngxp-agg-lv</value>
        </item>  
        <item xsi:type="ns1:CIMProperty">
          <name xsi:type="xsd:string">labelSyncOnly</name>
          <value xsi:type="xsd:string">true</value>
        </item>                    
       </properties>
       </objectPath>
       </objectPath>
      </action>
    </actions>
   </ns1:performBatchOperation>
  </soapenv:Body> 
</soapenv:Envelope>
 
   

MPLS-TP Service Requests

Before creating a service request, a service policy has to be defined. Use a predefined policy template as is or with modifications to create a service request, and deploy the service. For information on MPLS-TP policies, see the Cisco Prime Fulfillment User Guide 6.2.

A MPLS-TP service request defines the service definition to use and applies the needed policy information.

When deploying a MPLS-TP 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.

This section includes the following:

Typical Sequence of Calls

Service Request Examples

Typical Sequence of Calls

Once you have run Collect Config and MPLS-TP Discovery, the typical sequence of calls for MPLS-TP would be:

1. Create MPLS-TP Policy (CreateMplsTpPolicy.xml )

2. Create MPLS-TP Policy Response

3. Create Mpls MPLS-TP service request

using either

CreateMplsTpTunnelServiceRequestWithProtection.xml—creates an MPLS-TP tunnel between tp-device1 and tp-device2 with both working and protect LSPs

or

CreateMplsTpTunnelServiceRequestNoProtection.xml—creates an MPLS-TP tunnel with just a working LSP, no protect LSP

4. Create Mpls MPLS-TP service request Response

5. Deploy SR(Same XML as other service request types)

6. Modify MPLS-TP service request (ModifyMplsTpTunnelServiceRequest.xml).

Service Request Examples

The following XML examples illustrate how you work with service requests for MPLS-TP APIs. They also demonstrate the kinds of properties (attributes) that need to be specified for each request.

This section contains the following examples:

Creating an MPLS-TP Service Request With Path Protection

Modify an MPLS-TP Service Request

Creating an MPLS-TP Service Request With Path Protection

The following is an example of how to create an MPLS-TP service request with path protection.

Example: CreateMplsTpTunnelServiceRequestWithProtection.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="1" sessiontoken="E453ADAFF7319803C1E8E3C68E1850CD"
			Wait="false" WaitTimeout="300" />
	</soapenv:Header>
	<soapenv:Body>
		<ns1:createInstance>
			<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">Type</name>
						<value xsi:type="xsd:string">Flexible</value>
					</item>
					<item xsi:type="ns1:CIMProperty">
						<name xsi:type="xsd:string">RequestName</name>
						<value xsi:type="xsd:string">TP-3</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">tp-policy</value>
						</item>
						<item xsi:type="ns1:CIMProperty">
							<name xsi:type="xsd:string">InstanceData</name>
							<value xsi:type="xsd:string"><![CDATA[
<service serviceType="MPLS-TP" serviceName="MPLS-TP">    
	<section useFor="SR" name="Service Information "  required="true" >
		<field name="serviceType" value="MPLS-TP"/>	
		<field name="serviceDescription"/>
	</section>
	
  	<section useFor="Policy" name="Policy Information "  required="true" >
		<field name="policyName" title="Policy Name" type="text" required="true"/>
		<field name="policyDescription" title="Description" type="textarea" 
required="false"/>
	</section>
 
	<section useFor="Policy-SR" name="Tunnel Characteristics"  required="true" >
	<group>
		<field name="srcTunnelName" title="Name" type="text" required="false" 
editable="true">
			<validators>
				<validator type="regexp" expression=".*" errorMessage="Tunnel name can be 
any number of characters"/>
			</validators>
		</field>
		<field name="dstTunnelName" title="Name (If Different from Source Name)" 
type="text" required="false" editable="true">
			<validators>
				<validator type="regexp" expression=".*" errorMessage="Tunnel name can be 
any number of characters"/>
			</validators>
		</field>
		</group>
		<group>
			<field name="srcTunnelDescription" title="Description" type="textarea" 
required="false"/>
			<field name="dstTunnelDescription" title="Description (If Different from 
Source Description)" type="textarea" required="false"/>
		</group>
		<group>
			<field name="bandwidth" title="Transmit Bandwidth" type="integer" 
required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
			<field name="rxBandwidth" title="Receive Bandwidth(If Different from 
Transmit)" type="integer" required="false" style="width:120px" 
metricOptions="Kbps,[Mbps],Gbps"/>
		</group>
 
   
		<group>
			<field name="srcTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number 
At Source" type="boolean"  required="false" value="true" visibility="Editable"/>
			<field name="dstTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number 
At Destination" type="boolean"  required="false" value="true" visibility="Editable"/>
		</group>
		<field name="state" title="State" type="combo"  required="false" 
visibility="Editable" value="Up">
					<valueMap>
						<value>Up</value>
						<value>Down</value>
					</valueMap>
		</field>
		<field name="protectedTpTunnel" title="Protection" type="boolean"  
required="false" visibility="Editable" value="true"/>
		<field name="diversityOption" title="Diversity Options" type="combo" 
required="false" disabled="true" visibility="Editable" value="Node Diversity Desired">
			<valueMap>
				<value>Node Diversity Desired</value>
				<value>Node Diversity Required</value>
				<value>Link Diversity Only</value>
			</valueMap>
		</field>
	</section>
	
	<section useFor="Policy-SR" name="Tunnel End-Points"  required="true" >
		<field name="sourceDevice" title="Source Node" type="textpicker" 
resource="devices" resourceToLoad="sourceBfdTemplate" required="true" editable="true" 
value="router-TP11"/>	
		<field name="sourceBfdTemplate" title="Source BFD" type="textpicker" 
required="true" value="BFDTemplate-SingleHopMilliSec-4"/>
		<field name="sourceTunnelNumber" title="Source Tunnel Number" type="text" 
required="false" visibility="Editable" editable="true">
			<validators>
				<validator type="regexp" expression="\d*" errorMessage="Tunnel number must 
be 0 - 65535"/>
			</validators>
		</field>
		<field name="sourceRouterId" title="Source Router ID" type="ip" required="false" 
visibility="Editable"/>
		<field name="sourceGlobalId" title="Source Global ID" type="integer" 
required="false" visibility="Editable"/>
		<field name="destinationDevice" title="Destination Node" type="textpicker" 
resource="devices" resourceToLoad="destinationBfdTemplate" required="true" 
value="tp-device2/>	
		<field name="destinationBfdTemplate" title="Destination BFD(If Different from 
Source BFD)" type="textpicker" required="true"/>
		<field name="destinationTunnelNumber" title="Destination Tunnel Number" 
type="text" required="false" visibility="Editable"  editable="true">
			<validators>
				<validator type="regexp" expression="\d*" errorMessage="Tunnel number must 
be 0 - 65535"/>
			</validators>
		</field>
		<field name="destinationRouterId" title="Destination Router ID" type="ip" 
required="false" visibility="Editable"/>
		<field name="destinationGlobalId" title="Destination Global ID" type="integer" 
required="false" visibility="Editable"/>
	</section>
 
   
	<section useFor="SR" name="Review Routing"  required="true">
		<group id="pathOptionsGroup" cloneable="true">
			<field name="reqExOption" title="" type="combo"  required="false" 
value="Required NE/Link">
				<valueMap>
					<value>Required NE/Link</value>
					<value>Excluded NE/Link</value>
				</valueMap>
			</field>
			<field name="reqExElement" title="" type="textpicker" 
resource="devicesAndTpLinks" width="400" required="true"/>
			<field name="pathtype" title="" type="combo"  required="false" value="Working 
Path">
				<valueMap>
					<value>Working Path</value>
					<value>Protect Path</value>
				</valueMap>
			</field>
		</group>
	</section>
</service>	]]></value>
						</item>
					</properties>
				</objectPath>
			</objectPath>
		</ns1:createInstance>
	</soapenv:Body>
</soapenv:Envelope>
 
   

Modify an MPLS-TP Service Request

The following is an example of how to modify an MPLS-TP service request.

Example: ModifyMplsTpTunnelServiceRequest.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="1" sessiontoken="E453ADAFF7319803C1E8E3C68E1850CD"
			Wait="false" WaitTimeout="300" />
	</soapenv:Header>
	<soapenv:Body>
		<ns1:modifyInstance>
			<objectPath subAction="modifyInstance" 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">Type</name>
						<value xsi:type="xsd:string">Flexible</value>
					</item>
					<item xsi:type="ns1:CIMProperty">
						<name xsi:type="xsd:string">RequestName</name>
						<value xsi:type="xsd:string">TP-3</value>
					</item>
				</properties>
 
   
				<objectPath subAction="modifyInstance" xsi:type="ns1:CIMObjectPath">
					<className xsi:type="xsd:string">ServiceRequestDetails</className>
				<keyProperties xsi:type="ns1:CIMKeyPropertyList"
                                    soapenc:arrayType="ns1:CIMKeyProperty[]">
                  <item xsi:type="ns1:CIMProperty">
                    <name xsi:type="xsd:string">LocatorId</name>
                    <value xsi:type="xsd:string">194</value>
                  </item>
                </keyProperties>
                <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">tp-policy</value>
						</item>
						<item xsi:type="ns1:CIMProperty">
							<name xsi:type="xsd:string">InstanceData</name>
							<value xsi:type="xsd:string"><![CDATA[
<service serviceType="MPLS-TP" serviceName="MPLS-TP">    
	<section useFor="SR" name="Service Information "  required="true" >
		<field name="serviceType" title="Service Type" type="text" disabled="true" 
required="false"  editable="true"  value="MPLS-TP"/>	
		<field name="serviceDescription" title="Service Description" type="textarea" 
required="false"/>
	</section>
	
  	<section useFor="Policy" name="Policy Information "  required="true" >
		<field name="policyName" title="Policy Name" type="text" required="true"/>
		<field name="policyDescription" title="Description" type="textarea" 
required="false"/>
	</section>
 
	<section useFor="Policy-SR" name="Tunnel Characteristics"  required="true" >
	<group>
		<field name="srcTunnelName" title="Name" type="text" required="false" 
editable="true">
			<validators>
				<validator type="regexp" expression=".*" errorMessage="Tunnel name can be 
any number of characters"/>
			</validators>
		</field>
		<field name="dstTunnelName" title="Name (If Different from Source Name)" 
type="text" required="false" editable="true">
			<validators>
				<validator type="regexp" expression=".*" errorMessage="Tunnel name can be 
any number of characters"/>
			</validators>
		</field>
		</group>
		<group>
			<field name="srcTunnelDescription" title="Description" type="textarea" 
required="false"/>
			<field name="dstTunnelDescription" title="Description (If Different from 
Source Description)" type="textarea" required="false"/>
		</group>
		<group>
			<field name="bandwidth" title="Transmit Bandwidth" type="integer" 
required="false" style="width:120px" metricOptions="Kbps,[Mbps],Gbps"/>
			<field name="rxBandwidth" title="Receive Bandwidth(If Different from 
Transmit)" type="integer" required="false" style="width:120px" 
metricOptions="Kbps,[Mbps],Gbps"/>
		</group>
 
   
		<group>
			<field name="srcTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number 
At Source" type="boolean"  required="false" value="true" visibility="Hidden"/>
			<field name="dstTunnelNumberAutoAllocate" title="Auto-Allocate Tunnel Number 
At Destination" type="boolean"  required="false" value="true" visibility="Hidden"/>
		</group>
		<field name="state" title="State" type="combo"  required="false" 
visibility="Hidden" value="Up">
					<valueMap>
						<value>Up</value>
						<value>Down</value>
					</valueMap>
		</field>
		<field name="protectedTpTunnel" title="Protection" type="boolean"  
required="false" visibility="Hidden" value="true"/>
		<field name="diversityOption" title="Diversity Options" type="combo" 
required="false" disabled="true" visibility="Hidden" value="Node Diversity Desired">
			<valueMap>
				<value>Node Diversity Desired</value>
				<value>Node Diversity Required</value>
				<value>Link Diversity Only</value>
			</valueMap>
		</field>
	</section>
	
	<section useFor="Policy-SR" name="Tunnel End-Points"  required="true" >
		<field name="sourceDevice" title="Source Node" type="textpicker" 
resource="devices" resourceToLoad="sourceBfdTemplate" required="true" editable="true" />	
		<field name="sourceBfdTemplate" title="Source BFD" type="textpicker" 
required="true"/>
		<field name="sourceTunnelNumber" title="Source Tunnel Number" type="text" 
required="false" visibility="Hidden" editable="true">
			<validators>
				<validator type="regexp" expression="\d*" errorMessage="Tunnel number must 
be 0 - 65535"/>
			</validators>
		</field>
		<field name="sourceRouterId" title="Source Router ID" type="ip" required="false" 
visibility="Hidden"/>
		<field name="sourceGlobalId" title="Source Global ID" type="integer" 
required="false" visibility="Hidden"/>
		<field name="destinationDevice" title="Destination Node" type="textpicker" 
resource="devices" resourceToLoad="destinationBfdTemplate" required="true"/>	
		<field name="destinationBfdTemplate" title="Destination BFD(If Different from 
Source BFD)" type="textpicker" required="true"/>
		<field name="destinationTunnelNumber" title="Destination Tunnel Number" 
type="text" required="false" visibility="Hidden"  editable="true">
			<validators>
				<validator type="regexp" expression="\d*" errorMessage="Tunnel number must 
be 0 - 65535"/>
			</validators>
		</field>
		<field name="destinationRouterId" title="Destination Router ID" type="ip" 
required="false" visibility="Hidden"/>
		<field name="destinationGlobalId" title="Destination Global ID" type="integer" 
required="false" visibility="Hidden"/>
	</section>
 
   
	<section useFor="SR" name="Review Routing"  required="true">
		<group id="pathOptionsGroup" cloneable="true">
			<field name="reqExOption" title="" type="combo"  required="false" 
value="Required NE/Link">
				<valueMap>
					<value>Required NE/Link</value>
					<value>Excluded NE/Link</value>
				</valueMap>
			</field>
			<field name="reqExElement" title="" type="textpicker" 
resource="devicesAndTpLinks" width="400" required="true"/>
			<field name="pathtype" title="" type="combo"  required="false" value="Working 
Path">
				<valueMap>
					<value>Working Path</value>
					<value>Protect Path</value>
				</valueMap>
			</field>
		</group>
	</section>
</service>
							]]></value>
						</item>
					</properties>
 
   
				</objectPath>
				
				
				
 
   
				
			</objectPath>
		</ns1:modifyInstance>
	</soapenv:Body>
</soapenv:Envelope>
 
   

Related APIs

CreateMplsTpTunnelServiceRequestNoProtection.xml

DecommisionMplsTpTunnelServiceRequest.xml

Provisioning Example

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

This section contains the following:

Process Summary

Provisioning Process

Auditing Service Requests.

Process Summary

This MPLS-TP provisioning example documents the following process:

1. Create provider.

2. Create region for provider.

3. Run Collect Config.

4. Create and run MPLS-TP Discovery task.

5. Create service definition (policy).

6. Create tunnel service request.

Provisioning Process

To provision MPLS-TP using Prime Fulfillment APIs, a MPLS-TP service definition (policy) and a MPLS-TP service request are required.

This section describes the process for provisioning MPLS-TP using XML examples.

The complete package of XML examples for MPLS-TP is available here:
Cisco Prime Fulfillment API Programmer Reference 6.2


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



Step 1 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 12-1 Create a Provider

Operation
className
Required Parameters

createInstance

Provider

Name

AsNumber


XML Examples:

ISCProviderCreateRequest.xml

Step 2 Create regions.

Each provider can contain multiple regions.

Table 12-2 Create a Region

Operation
className
Required Parameters

createInstance

Region

Name

Provider


XML Examples:

ISCDefaultRegionCreateRequest.xml

Step 3 Run a Collect Config task.

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.


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


Table 12-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 4 Run an MPLS-TP Discovery task.

This discovers the MPLS-TP topology and resources and populates the repository.

Table 12-4 Create an MPLS-TP Discovery Task

Operation
className
Required Parameters

createInstance

ServiceOrder

ServiceName

CarrierId

DesiredDueDate

NumberofRequests

Organization

 

ServiceRequest

RequestName

Type=Task

 

ServiceRequestDetails

SubType=TP_DISCOVERY

Device

labelSyncOnly


XML Examples:

CreateTaskServiceOrderTpDiscovery.xml

Step 5 Create service definition (policy).

Service definitions or policies are used to define common tunnel attributes.

Table 12-5 Create a MPLS-TP Service Definition (Policy)

Operation
className
Required Parameters

createInstance

ServiceDefinition

Name

Type

Provider

 

ServiceDefinitionDetails

[For a complete list of parameters, see Policy Example]


XML Examples:

CreateMplsTpPolicy.xml

Step 6 Create service request.

An MPLS-TP service request applies the service definition and assigns interfaces and attributes.

Table 12-6 Create an MPLS-TP Service Request 

Operation
className
Required Parameters

createInstance

ServiceRequest

RequestName=TP-3

ServiceRequestDetails

 

ServiceRequestDetails

[For a complete list of parameters, see example Creating an MPLS-TP Service Request With Path Protection]



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


XML Example:

CreateMplsTpTunnelServiceRequestWithProtection.xml


Auditing Service Requests

There are currently two kinds of audit that can be applied to an MPLS-TP service request:

Config Audit

Functional Audit

Config Audit

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.

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.

Functional Audit

In an MPLS-TP Functional Audit, information is retrieved from source and destination endpoints to

provide tunnel audit information. A functional audit is then performed on service requests, which are not in one of the following states: Draft, Closed, Requested, Invalid, Failed Deploy.

The following is an example of how to create an MPLS-TP Functional Audit via the NBI.

The relevant attributes that need to be set for this service order is RequestName, Type, SubType, and LocatorId, which are highlighted with bold in the example below. In the example, they are set to MplsTpFuncAudit-TASK, task, SubType, and 13.

Example: CreateTaskServiceOrderMplsTpFuncAudit.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="false" WaitTimeout="60" 
sessiontoken="26384AD0F199088FAA9F8989C4040DDA"/>
  </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">ServiceOrder-MplsTpFuncAudit</value>
        </item>
        <item xsi:type="ns1:CIMProperty">  
         <name xsi:type="xsd:string">CarrierId</name>
         <value xsi:type="xsd:string">234</value>
        </item>
        <item xsi:type="ns1:CIMProperty">  
         <name xsi:type="xsd:string">DesiredDueDate</name>
         <value xsi:type="xsd:dateTime">2002-12-14T14: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">MplsTpFuncAudit-TASK</value>
       </item>
       <item xsi:type="ns1:CIMProperty">  
        <name xsi:type="xsd:string">Type</name>
        <value xsi:type="xsd:string">Task</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">SubType</name>
           <value xsi:type="xsd:string">MPLS-TP.FUNCTIONAL_AUDIT</value> </item>
         <item xsi:type="ns1:CIMProperty">
          <name xsi:type="xsd:string">LocatorId</name>
          <value xsi:type="xsd:string">13</value>
         </item>
       </properties>
     </objectPath>
   </objectPath>
   </action>
    </actions>
   </ns1:performBatchOperation>
  </soapenv:Body> 
</soapenv:Envelope>