Jump to: navigation, search

Difference between revisions of "Neutron/sdnapi"

 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
==1. L3VPN Information Model==  
+
==L3VPN Information Model==
===1.1 Overview===
+
===Overview===
 +
====UML Model====
 
<gallery>
 
<gallery>
Ex
+
Example.jpg|High Level L3VPN Architecture
<gallery>
 
Example.jpg|picture1
 
Example.jpg|Caption2
 
</gallery>
 
ample.jpg|Caption1
 
Example.jpg|Caption2
 
 
</gallery>
 
</gallery>
====1.1.1 UML Model====
+
====Elements Description====
 
Figure 1 High Level L3VPN Architecture
 
===1.1.2 Elements Description===
 
 
The L3 VPN model contains multiple VPN Instances.
 
The L3 VPN model contains multiple VPN Instances.
===3.2 L3VPN Instance===
+
===L3VPN Instance===
====3.2.1 UML Model====
+
====UML Model====]
 
 
Figure 2 L3VPN Instance Model
 
3.2.2 Element Description
 
Attribute Type Required CRUD Default Value Constraints Note
 
instanceName String Yes CRD N/A Maxlength = 64
 
Pattern = ([^?]*) L3VPN instance name
 
serviceType String enum No CRUD full-mesh full-mesh or hub-spoke Topology type
 
afType String enum No CRUD ipv4uni ipv4uni or ipv6uni Address family type: IPv4 or IPv6
 
acIf Id String Yes CRD N/A Length= 1~63 Access interface ID
 
acIfAddr String No CRUD N/A Length = 0~255 Access interface address, IPv4 or IPv6
 
acIfMask Unsigned byte No CRUD N/A 0 ~ 128 IP address mask length
 
role String enum No CRUD edge-if edge-if or center-if center-if is only available in hub-spoke mode; center-if is the interface in hub node
 
userName String No CRUD N/A Maxlength = 64
 
Pattern = ([^?]*) User name for this access interface
 
userPassword String No CRUD N/A Maxlength = 64
 
Pattern = ([^?]*) User password for the access interface
 
phyNodeId String No CRUD N/A Maxlength = 64
 
Pattern = ([^?]*) Physical node ID
 
phyAcIf String No CRUD N/A Maxlength = 64
 
Pattern = ([^?]*) Physical access interface
 
<gallery>
 
 
<gallery>
 
<gallery>
Example.jpg|Caption1
+
Example.jpg| L3VPN Instance Model
Example.jpg|Caption2
 
 
</gallery>
 
</gallery>
</gallery>
 
protocolType String enum No CRUD ospf bgp, ospf, or isis Protocol type
 
protocolId Unsigned int No CRUD 0 N/A Valid only when protocol is IGP; it can be AS number
 
remoteAsNumber String No CRUD N/A Length = 1 ~ 11 Valid only when protocol is BGP
 
remotePeerAddr String No CRUD N/A Length = 0~255 Valid only when protocol is BGP
 
Table 1 L3VPN Instance Attributes
 
  
4 L3VPN API example
+
L3VPN Instance Attributes
4.1 Restful API
+
{| class="wikitable"
4.1.1 L3VPN Instance
+
|-
4.1.1.1 POST
+
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note
 +
|-
 +
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name
 +
|-
 +
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type
 +
|-
 +
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6
 +
|-
 +
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID
 +
|-
 +
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6
 +
|-
 +
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length
 +
|-
 +
| role || String enum || No || CRUD || edge-if || edge-if or center-if || center-if is only available in hub-spoke mode; center-if is the interface in hub node
 +
|-
 +
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface
 +
|-
 +
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface
 +
|-
 +
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID
 +
|-
 +
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface
 +
|-
 +
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type
 +
|-
 +
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number
 +
|-
 +
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP
 +
|-
 +
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP
 +
|}
 +
 
 +
==L3VPN API example==
 +
===Restful API===
 +
====L3VPN Instance====
 +
=====POST=====
 
POST URI/netl3vpn/l3vpninstances
 
POST URI/netl3vpn/l3vpninstances
  
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 86: Line 87:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
4.1.1.2 GET
+
=====GET=====
To get all instances
+
* To get all instances
GET URI/netl3vpn/l3vpninstances
+
GET URI/netl3vpn/l3vpninstances.
 
No HTTP message body.
 
No HTTP message body.
  
To get a single VPN instance
+
* To get a single VPN instance
GET URI/netl3vpn/l3vpninstances/{instancename}
+
GET URI/netl3vpn/l3vpninstances/{instancename}.
 
No HTTP message body.
 
No HTTP message body.
  
To get one or more VPN instances at a time
+
* To get one or more VPN instances at a time
 
GET URI/netl3vpn/l3vpninstances
 
GET URI/netl3vpn/l3vpninstances
  
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 107: Line 110:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
Response
+
* Response
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 140: Line 145:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
4.1.1.3 PUT
+
=====PUT=====
 
PUT URI/netl3vpn/l3vpninstances
 
PUT URI/netl3vpn/l3vpninstances
  
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 175: Line 182:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
4.1.1.4 DELETE
+
=====DELETE=====
To delete a single VPN instance  
+
* To delete a single VPN instance  
DELETE URI/netl3vpn/l3vpninstances/{instancename}
+
DELETE URI/netl3vpn/l3vpninstances/{instancename}.
 
No HTTP message body.
 
No HTTP message body.
  
To delete one or more instances
+
* To delete one or more instances
 
DELETE URI/netl3vpn/l3vpninstances
 
DELETE URI/netl3vpn/l3vpninstances
  
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 192: Line 201:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
4.1.2 Access Interface
+
</nowiki></pre>
4.1.2.1 POST
+
 
 +
====Access Interface====
 +
=====POST=====
 
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs
 
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 217: Line 229:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
+
=====GET=====
4.1.2.2 GET
+
* To get a single access interface
To get a single access interface
+
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}.
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}
 
 
No HTTP message body.
 
No HTTP message body.
  
To get one or more access interfaces
+
* To get one or more access interfaces
 
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs
 
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs
 +
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 234: Line 248:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
 +
 +
* Response
  
 Response
+
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 257: Line 274:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
4.1.2.3 PUT
+
=====PUT=====
 
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs
 
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs
  
 +
<pre><nowiki>
 +
<acifs>
 +
  <acif>
 +
    <acifid>vpninstance1:port1</acifid>
 +
    <acifaddr>20.1.1.1</acifaddr>
 +
    <acifmask>24</acifmask>
 +
    <role>edge-if</role>
 +
    <username>user1</username>
 +
    <userpassword>userpass</userpassword>
 +
    <phynodeid>Node1</phynodeid>
 +
    <phyacif>Node1:Ethernet0/0/1</phyacif>
 +
    <protocol>
 +
      <protocoltype>ospf</protocoltype>
 +
      <igpattr>
 +
        <protocolid>1000</protocolid>
 +
      </igpattr>
 +
    </protocol>
 +
  </acif>
 +
  <acif>
 +
    ……
 +
  </acif>
 +
</acifs>
 +
</nowiki></pre>
 +
 +
=====DELETE=====
 +
* To delete a single access interface
 +
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}.
 +
No HTTP message body.
 +
 +
* To delete one or more access interfaces
 +
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs
 +
 +
<pre><nowiki>
 +
<acifs>
 +
  <acif>
 +
    <acifid>vpninstance1:port1</acifid>
 +
  </acif>
 +
  <acif>
 +
    ……
 +
  </acif>
 +
</acifs>
 +
</nowiki></pre>
 +
 +
==L2VPN Information Model==
 +
===Overview===
 +
====UML Model====
 +
<gallery>
 +
Example.jpg|High Level L2VPN Architecture
 +
</gallery>
 +
====Elements Description====
 +
The L2VPN model contains multiple VPN Instances.
 +
 +
L2VPN Instance Attributes
 +
{| class="wikitable"
 +
|-
 +
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note
 +
|-
 +
| instanceName || Stringe || Yes || CRD || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name
 +
|-
 +
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status
 +
|-
 +
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type
 +
|}
 +
 +
L2VPN PW Attributes
 +
{| class="wikitable"
 +
|-
 +
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note
 +
|-
 +
| pwRole || String enum || Yes || CR || primary || primary or backup or bypas || Pw role
 +
|-
 +
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status
 +
|}
 +
 +
L2VPN PW CX Attributes
 +
{| class="wikitable"
 +
|-
 +
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note
 +
|-
 +
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID
 +
|-
 +
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer
 +
|-
 +
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label
 +
|-
 +
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe
 +
|-
 +
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer
 +
|-
 +
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label
 +
|-
 +
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label
 +
|-
 +
| TunnelId || String || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW
 +
|}
 +
 +
L2VPN AC Attributes
 +
{| class="wikitable"
 +
|-
 +
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note
 +
|-
 +
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID
 +
|-
 +
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn
 +
|}
 +
 +
==L2VPN API example==
 +
===Restful API===
 +
====L2VPN Instance====
 +
=====POST=====
 +
POST URI/netL2VPN/vpws/netL2VPNinstances
 +
 +
<pre><nowiki>
 +
<netL2vpnInstances>
 +
  <netL2vpnInstance>
 +
    <instancename>vpninstance1</instancename>
 +
    <instanceType>2PE</instanceType>
 +
    <pws>
 +
      <pw>
 +
        <pwRole>primary</pwRole>
 +
        <cxs>
 +
          <cx>
 +
            <FPID>1.1.1.1</FPID>
 +
            <backwardPeerID>2.2.2.2</backwardPeerID>
 +
                <BackwardInLabel>1024</BackwardInLabel>
 +
                <BackwardOutLabel>1025</BackwardOutLabel>
 +
            <FPID>2.2.2.2</FPID>
 +
            <forwardPeerID>1.1.1.1</forwardPeerID>
 +
              <forwardInLabel>1025</forwardInLabel>
 +
              <forwardOutLabel>1024</forwardOutLabel>
 +
          </cx>
 +
        </cxs>
 +
      </pw>
 +
          </pws>
 +
          <acs>
 +
      <ac>
 +
          <FPID>1.1.1.1</FPID>
 +
          <Interface> Ethernet0/0/1</Interface>
 +
      </ac>
 +
          </acs>
 +
  </L2VPNinstance>
 +
  <L2VPNinstance>
 +
    ……
 +
  </L2VPNinstance>
 +
</L2VPNinstances>
 +
</nowiki></pre>
 +
 +
=====GET=====
 +
* To get all instances
 +
GET URI/netL2vpn/vpws/nstL2vpnInstances.
 +
No HTTP message body.
 +
 +
* To get a single VPN instance
 +
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}.
 +
No HTTP message body.
 +
 +
* To get one or more VPN instances at a time
 +
GET URI/netL2VPN/L2VPNinstances
 +
 +
<pre><nowiki>
 +
<netL2vpnInstances>
 +
  <netL2vpnInstance>
 +
    <instancename>vpninstance1</instancename>
 +
  </netL2vpnInstance>
 +
  <netL2vpnInstance>
 +
    ……
 +
  </netL2vpnInstance>
 +
</netL2vpnInstances>
 +
</nowiki></pre>
 +
 +
* Response
 +
 +
<pre><nowiki>
 +
<netL2vpnInstances>
 +
  <netL2vpnInstance>
 +
    <instancename>vpninstance1</instancename>
 +
        <instanceType>2PE</instanceType>
 +
        <instanceOperStatus>up</instanceOperStatus>
 +
    <pws>
 +
      <pw>
 +
        <pwRole>primary</pwRole>
 +
            <pwOperStatus>up</pwOperStatus>
 +
        <cxs>
 +
          <cx>
 +
            <FPID>1.1.1.1</FPID>
 +
            <backwardPeerID>2.2.2.2</backwardPeerID>
 +
                <BackwardInLabel>1024</BackwardInLabel>
 +
                <BackwardOutLabel>1025</BackwardOutLabel>
 +
            <FPID>2.2.2.2</FPID>
 +
            <forwardPeerID>1.1.1.1</forwardPeerID>
 +
                <forwardInLabel>1025</forwardInLabel>
 +
                <forwardOutLabel>1024</forwardOutLabel>
 +
          </cx>
 +
        </cxs>
 +
      </pw>
 +
        </pws>
 +
        <acs>
 +
      <ac>
 +
        <FPID>1.1.1.1</FPID>
 +
        <Interface>Ethernet0/0/1</Interface>
 +
      </ac>
 +
        </acs>
 +
  </L2VPNinstance>
 +
  <L2VPNinstance>
 +
    ……
 +
  </L2VPNinstance>
 +
</L2VPNinstances>
 +
</nowiki></pre>
 +
 +
=====DELETE=====
 +
* To delete a single VPN instance
 +
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}
 +
No HTTP message body.
 +
 +
* To delete one or more instances
 +
DELETE URI/netL2vpn/vpws/netL2vpnInstances/
 +
 +
<pre><nowiki>
 +
<netL2vpnInstances>
 +
  <netL2vpnInstance>
 +
    <netL2vpnInstance>vpninstance1</netL2vpnInstance>
 +
  </netL2vpnInstance>
 +
  <netL2vpnInstance>
 +
    ……
 +
  </netL2vpnInstance>
 +
</netL2vpnInstances>
 +
</nowiki></pre>
 +
 +
====AC====
 +
=====POST=====
 +
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac
 +
 +
<pre><nowiki>
 +
<netL2vpnInstances>
 +
  <netL2vpnInstance>
 +
    <instancename>vpninstance1</instancename>
 +
        <acs>
 +
      <ac>
 +
        <FPID>1.1.1.1</FPID>
 +
            <Interface>Ethernet0/0/1</Interface>
 +
      </ac>
 +
      <ac>
 +
        ……
 +
      </ac>
 +
        </acs>
 +
</netL2vpnInstance>
 +
</netL2vpnInstances>
 +
</nowiki></pre>
 +
 +
=====GET=====
 +
* To get a single access interface
 +
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac.
 +
No HTTP message body.
 +
 +
* To get one or more access interfaces
 +
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs
 +
 +
<pre><nowiki>
 +
<acifs>
 +
  <acif>
 +
    <acifid>vpninstance1:port1</acifid>
 +
  </acif>
 +
  <acif>
 +
    ……
 +
  </acif>
 +
</acifs>
 +
</nowiki></pre>
 +
 +
* Response
 +
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 282: Line 571:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 +
=====PUT=====
 +
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs
 +
 +
<pre><nowiki>
 +
<acifs>
 +
  <acif>
 +
    <acifid>vpninstance1:port1</acifid>
 +
    <acifaddr>20.1.1.1</acifaddr>
 +
    <acifmask>24</acifmask>
 +
    <role>edge-if</role>
 +
    <username>user1</username>
 +
    <userpassword>userpass</userpassword>
 +
    <phynodeid>Node1</phynodeid>
 +
    <phyacif>Node1:Ethernet0/0/1</phyacif>
 +
    <protocol>
 +
      <protocoltype>ospf</protocoltype>
 +
      <igpattr>
 +
        <protocolid>1000</protocolid>
 +
      </igpattr>
 +
    </protocol>
 +
  </acif>
 +
  <acif>
 +
    ……
 +
  </acif>
 +
</acifs>
 +
</nowiki></pre>
  
4.1.2.4 DELETE
+
=====DELETE=====
To delete a single access interface
+
* To delete a single access interface
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}
+
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}.
 
No HTTP message body.
 
No HTTP message body.
  
To delete one or more access interfaces
+
* To delete one or more access interfaces
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs
+
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs
 +
 
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 299: Line 617:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>

Latest revision as of 02:40, 15 February 2015

L3VPN Information Model

Overview

UML Model

Elements Description

The L3 VPN model contains multiple VPN Instances.

L3VPN Instance

====UML Model====]

L3VPN Instance Attributes

Attribute Type Required CRUD Default Value Constraints Note
instanceName String Yes CRD N/A Maxlength = 64 Pattern = ([^?]*) L3VPN instance name
serviceType String enum No CRUD full-mesh full-mesh or hub-spoke Topology type
afType String enum No CRUD ipv4uni ipv4uni or ipv6uni Address family type: IPv4 or IPv6
acIf Id String Yes CRD N/A Length= 1~63 Access interface ID
acIfAddr String No CRUD N/A Length = 0~255 Access interface address, IPv4 or IPv6
acIfMask Unsigned byte No CRUD N/A 0 ~ 128 IP address mask length
role String enum No CRUD edge-if edge-if or center-if center-if is only available in hub-spoke mode; center-if is the interface in hub node
userName String No CRUD N/A Maxlength = 64 Pattern = ([^?]*) User name for this access interface
userPassword String No CRUD N/A Maxlength = 64 Pattern = ([^?]*) User password for the access interface
phyNodeId String No CRUD N/A Maxlength = 64 Pattern = ([^?]*) Physical node ID
phyAcIf String No CRUD N/A Maxlength = 64 Pattern = ([^?]*) hysical access interface
protocolType String enum No CRUD ospf bgp, ospf, or isis Protocol type
protocolId Unsigned int No CRUD 0 N/A Valid only when protocol is IGP; it can be AS number
remoteAsNumber String No CRUD N/A Length = 1 ~ 11 Valid only when protocol is BGP
remotePeerAddr String No CRUD N/A Length = 0~255 Valid only when protocol is BGP

L3VPN API example

Restful API

L3VPN Instance

POST

POST URI/netl3vpn/l3vpninstances

<l3vpninstances>
  <l3vpninstance>
    <instancename>vpninstance1</instancename>
    <servicetype>full-mesh</servicetype>
    <aftype>ipv4uni</aftype>
    <acifs>
      <acif>
        <acifid>vpninstance1:port1</acifid>
        <acifaddr>20.1.1.1</acifaddr>
        <acifmask>24</acifmask>
        <role>edge-if</role>
        <username>user1</username>
        <userpassword>userpass</userpassword>
        <phynodeid>Node1</phynodeid>
        <phyacif>Node1:Ethernet0/0/1</phyacif>
        <protocol>
          <protocoltype>ospf</protocoltype>
          <igpattr>
            <protocolid>1000</protocolid>
          </igpattr>
        </protocol>
      </acif>
      <acif>
        ……
      </acif>
    </acifs>
  </l3vpninstance>
  <l3vpninstance>
    ……
  </l3vpninstance>
</l3vpninstances>
GET
  • To get all instances

GET URI/netl3vpn/l3vpninstances. No HTTP message body.

  • To get a single VPN instance

GET URI/netl3vpn/l3vpninstances/{instancename}. No HTTP message body.

  • To get one or more VPN instances at a time

GET URI/netl3vpn/l3vpninstances

<l3vpninstances>
  <l3vpninstance>
    <instancename>vpninstance1</instancename>
  </l3vpninstance>
  <l3vpninstance>
    ……
  </l3vpninstance>
</l3vpninstances>
  • Response
<l3vpninstances>
  <l3vpninstance>
    <instancename>vpninstance1</instancename>
    <servicetype>full-mesh</servicetype>
    <aftype>ipv4uni</aftype>
    <acifs>
      <acif>
        <acifid>vpninstance1:port1</acifid>
        <acifaddr>20.1.1.1</acifaddr>
        <acifmask>24</acifmask>
        <role>edge-if</role>
        <username>user1</username>
        <userpassword>userpass</userpassword>
        <phynodeid>Node1</phynodeid>
        <phyacif>Node1:Ethernet0/0/1</phyacif>
        <protocol>
          <protocoltype>ospf</protocoltype>
          <igpattr>
            <protocolid>1000</protocolid>
          </igpattr>
        </protocol>
      </acif>
      <acif>
        ……
      </acif>
    </acifs>
  </l3vpninstance>
  <l3vpninstance>
    ……
  </l3vpninstance>
</l3vpninstances>
PUT

PUT URI/netl3vpn/l3vpninstances

<l3vpninstances>
  <l3vpninstance>
    <instancename>vpninstance1</instancename>
    <servicetype>full-mesh</servicetype>
    <aftype>ipv4uni</aftype>
    <acifs>
      <acif>
        <acifid>vpninstance1:port1</acifid>
        <acifaddr>20.1.1.1</acifaddr>
        <acifmask>24</acifmask>
        <role>edge-if</role>
        <username>user1</username>
        <userpassword>userpass</userpassword>
        <phynodeid>Node1</phynodeid>
        <phyacif>Node1:Ethernet0/0/1</phyacif>
        <protocol>
          <protocoltype>ospf</protocoltype>
          <igpattr>
            <protocolid>1000</protocolid>
          </igpattr>
        </protocol>
      </acif>
      <acif>
        ……
      </acif>
    </acifs>
  </l3vpninstance>
  <l3vpninstance>
    ……
  </l3vpninstance>
</l3vpninstances>
DELETE
  • To delete a single VPN instance

DELETE URI/netl3vpn/l3vpninstances/{instancename}. No HTTP message body.

  • To delete one or more instances

DELETE URI/netl3vpn/l3vpninstances

<l3vpninstances>
  <l3vpninstance>
    <instancename>vpninstance1</instancename>
  </l3vpninstance>
  <l3vpninstance>
    ……
  </l3vpninstance>
</l3vpninstances>

Access Interface

POST

POST URI/netl3vpn/l3vpninstances/{instancename}/acifs

<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
    <acifaddr>20.1.1.1</acifaddr>
    <acifmask>24</acifmask>
    <role>edge-if</role>
    <username>user1</username>
    <userpassword>userpass</userpassword>
    <phynodeid>Node1</phynodeid>
    <phyacif>Node1:Ethernet0/0/1</phyacif>
    <protocol>
      <protocoltype>ospf</protocoltype>
      <igpattr>
        <protocolid>1000</protocolid>
      </igpattr>
    </protocol>
  </acif>
  <acif>
    ……
  </acif>
</acifs>
GET
  • To get a single access interface

GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}. No HTTP message body.

  • To get one or more access interfaces

GET URI/netl3vpn/l3vpninstances/{instancename}/acifs

<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
  </acif>
  <acif>
    ……
  </acif>
</acifs>
  • Response
<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
    <acifaddr>20.1.1.1</acifaddr>
    <acifmask>24</acifmask>
    <role>edge-if</role>
    <username>user1</username>
    <userpassword>userpass</userpassword>
    <phynodeid>Node1</phynodeid>
    <phyacif>Node1:Ethernet0/0/1</phyacif>
    <protocol>
      <protocoltype>ospf</protocoltype>
      <igpattr>
        <protocolid>1000</protocolid>
      </igpattr>
    </protocol>
  </acif>
  <acif>
    ……
  </acif>
</acifs>
PUT

PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs

<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
    <acifaddr>20.1.1.1</acifaddr>
    <acifmask>24</acifmask>
    <role>edge-if</role>
    <username>user1</username>
    <userpassword>userpass</userpassword>
    <phynodeid>Node1</phynodeid>
    <phyacif>Node1:Ethernet0/0/1</phyacif>
    <protocol>
      <protocoltype>ospf</protocoltype>
      <igpattr>
        <protocolid>1000</protocolid>
      </igpattr>
    </protocol>
  </acif>
  <acif>
    ……
  </acif>
</acifs>
DELETE
  • To delete a single access interface

DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}. No HTTP message body.

  • To delete one or more access interfaces

DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs

<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
  </acif>
  <acif>
    ……
  </acif>
</acifs>

L2VPN Information Model

Overview

UML Model

Elements Description

The L2VPN model contains multiple VPN Instances.

L2VPN Instance Attributes

Attribute Type Required CRUD Default Value Constraints Note
instanceName Stringe Yes CRD N/A Maxlength = 32 Pattern = ([^?]*) L2VPN instance name
instanceOperStatus String enum No R N/A Up or down Instance Operation Status
instanceType String enum No CRU 2PE 2PE or 3PE Instance type

L2VPN PW Attributes

Attribute Type Required CRUD Default Value Constraints Note
pwRole String enum Yes CR primary primary or backup or bypas Pw role
pwOperStatus Unsigned byte No R N/A Up or down Pw Operation Status

L2VPN PW CX Attributes

Attribute Type Required CRUD Default Value Constraints Note
FPID String Yes CRD N/A Length = 0~255 Forward Point ID
ForwardPeerID String No CRD N/A Length = 0~255 Forward peer
ForwardInLabel String No CRD N/A 17~2^20 Forward in label
ForwardOutLabel String No CRD N/A 17~2^20 Forward out labe
backwardPeerID String No CRD N/A Length = 0~255 Backward peer
BackwardInLabel String No CRD N/A 17~2^20 Backward in label
BackwardOutLabel String No CRD N/A 17~2^20 Backward out label
TunnelId String No CRUD N/A Length = 0~32 Tunnel of the PW

L2VPN AC Attributes

Attribute Type Required CRUD Default Value Constraints Note
FPID Stringe Yes CRD N/A Length = 0~255 Forward Point ID
Interface String Yes CRD N/A Length = 0~32 Interface access the l2vpn

L2VPN API example

Restful API

L2VPN Instance

POST

POST URI/netL2VPN/vpws/netL2VPNinstances

<netL2vpnInstances>
  <netL2vpnInstance>
    <instancename>vpninstance1</instancename>
    <instanceType>2PE</instanceType>
    <pws>
      <pw>
        <pwRole>primary</pwRole>
        <cxs>
          <cx>
            <FPID>1.1.1.1</FPID>
            <backwardPeerID>2.2.2.2</backwardPeerID>
                <BackwardInLabel>1024</BackwardInLabel>
                <BackwardOutLabel>1025</BackwardOutLabel>
            <FPID>2.2.2.2</FPID>
            <forwardPeerID>1.1.1.1</forwardPeerID>
               <forwardInLabel>1025</forwardInLabel>
               <forwardOutLabel>1024</forwardOutLabel>
          </cx>
        </cxs>
      </pw>
          </pws>
           <acs>
      <ac>
          <FPID>1.1.1.1</FPID>
          <Interface> Ethernet0/0/1</Interface>
      </ac>
          </acs>
  </L2VPNinstance>
  <L2VPNinstance>
    ……
  </L2VPNinstance>
</L2VPNinstances>
GET
  • To get all instances

GET URI/netL2vpn/vpws/nstL2vpnInstances. No HTTP message body.

  • To get a single VPN instance

GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}. No HTTP message body.

  • To get one or more VPN instances at a time

GET URI/netL2VPN/L2VPNinstances

<netL2vpnInstances>
  <netL2vpnInstance>
    <instancename>vpninstance1</instancename>
  </netL2vpnInstance>
  <netL2vpnInstance>
    ……
  </netL2vpnInstance>
</netL2vpnInstances>
  • Response
<netL2vpnInstances>
  <netL2vpnInstance>
    <instancename>vpninstance1</instancename>
        <instanceType>2PE</instanceType>
        <instanceOperStatus>up</instanceOperStatus>
    <pws>
      <pw>
        <pwRole>primary</pwRole>
            <pwOperStatus>up</pwOperStatus>
        <cxs>
          <cx>
            <FPID>1.1.1.1</FPID>
            <backwardPeerID>2.2.2.2</backwardPeerID>
                <BackwardInLabel>1024</BackwardInLabel>
                <BackwardOutLabel>1025</BackwardOutLabel>
            <FPID>2.2.2.2</FPID>
            <forwardPeerID>1.1.1.1</forwardPeerID>
                <forwardInLabel>1025</forwardInLabel>
                <forwardOutLabel>1024</forwardOutLabel>
          </cx>
        </cxs>
      </pw>
        </pws>
        <acs>
      <ac>
        <FPID>1.1.1.1</FPID>
        <Interface>Ethernet0/0/1</Interface>
      </ac>
        </acs>
  </L2VPNinstance>
  <L2VPNinstance>
    ……
  </L2VPNinstance>
</L2VPNinstances>
DELETE
  • To delete a single VPN instance

DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename} No HTTP message body.

  • To delete one or more instances

DELETE URI/netL2vpn/vpws/netL2vpnInstances/

<netL2vpnInstances>
  <netL2vpnInstance>
    <netL2vpnInstance>vpninstance1</netL2vpnInstance>
  </netL2vpnInstance>
  <netL2vpnInstance>
    ……
  </netL2vpnInstance>
</netL2vpnInstances>

AC

POST

POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac

<netL2vpnInstances>
  <netL2vpnInstance>
    <instancename>vpninstance1</instancename>
        <acs>
      <ac>
        <FPID>1.1.1.1</FPID>
            <Interface>Ethernet0/0/1</Interface>
      </ac>
      <ac>
         ……
      </ac>
        </acs>
</netL2vpnInstance>
</netL2vpnInstances>
GET
  • To get a single access interface

GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac. No HTTP message body.

  • To get one or more access interfaces

GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs

<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
  </acif>
  <acif>
    ……
  </acif>
</acifs>
  • Response
<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
    <acifaddr>20.1.1.1</acifaddr>
    <acifmask>24</acifmask>
    <role>edge-if</role>
    <username>user1</username>
    <userpassword>userpass</userpassword>
    <phynodeid>Node1</phynodeid>
    <phyacif>Node1:Ethernet0/0/1</phyacif>
    <protocol>
      <protocoltype>ospf</protocoltype>
      <igpattr>
        <protocolid>1000</protocolid>
      </igpattr>
    </protocol>
  </acif>
  <acif>
    ……
  </acif>
</acifs>
PUT

PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs

<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
    <acifaddr>20.1.1.1</acifaddr>
    <acifmask>24</acifmask>
    <role>edge-if</role>
    <username>user1</username>
    <userpassword>userpass</userpassword>
    <phynodeid>Node1</phynodeid>
    <phyacif>Node1:Ethernet0/0/1</phyacif>
    <protocol>
      <protocoltype>ospf</protocoltype>
      <igpattr>
        <protocolid>1000</protocolid>
      </igpattr>
    </protocol>
  </acif>
  <acif>
    ……
  </acif>
</acifs>
DELETE
  • To delete a single access interface

DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}. No HTTP message body.

  • To delete one or more access interfaces

DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs

<acifs>
  <acif>
    <acifid>vpninstance1:port1</acifid>
  </acif>
  <acif>
    ……
  </acif>
</acifs>