Jump to: navigation, search

Difference between revisions of "Neutron/sdnapi"

 
(6 intermediate revisions by the same user not shown)
Line 12: Line 12:
 
Example.jpg| L3VPN Instance Model
 
Example.jpg| L3VPN Instance Model
 
</gallery>
 
</gallery>
 +
 +
L3VPN Instance Attributes
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 46: Line 48:
 
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP
 
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP
 
|}
 
|}
 +
 
==L3VPN API example==
 
==L3VPN API example==
 
===Restful API===
 
===Restful API===
Line 52: Line 55:
 
POST URI/netl3vpn/l3vpninstances
 
POST URI/netl3vpn/l3vpninstances
  
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 83: Line 87:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
 
=====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.
  
Line 96: Line 101:
 
GET URI/netl3vpn/l3vpninstances
 
GET URI/netl3vpn/l3vpninstances
  
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 104: Line 110:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
 
* Response
 
* Response
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 137: Line 145:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
 
=====PUT=====
 
=====PUT=====
 
PUT URI/netl3vpn/l3vpninstances
 
PUT URI/netl3vpn/l3vpninstances
  
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 172: Line 182:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
 
=====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.
  
Line 181: Line 192:
 
DELETE URI/netl3vpn/l3vpninstances
 
DELETE URI/netl3vpn/l3vpninstances
  
 +
<pre><nowiki>
 
<l3vpninstances>
 
<l3vpninstances>
 
   <l3vpninstance>
 
   <l3vpninstance>
Line 189: Line 201:
 
   </l3vpninstance>
 
   </l3vpninstance>
 
</l3vpninstances>
 
</l3vpninstances>
 +
</nowiki></pre>
  
 
====Access Interface====
 
====Access Interface====
Line 194: Line 207:
 
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs
 
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 215: Line 229:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
=====GET=====
 
=====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.
  
Line 224: Line 239:
 
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs
 
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 232: Line 248:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
* Response
 
* Response
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 256: Line 274:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
=====PUT=====
 
=====PUT=====
 
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs
 
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 281: Line 301:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
=====DELETE=====
 
=====DELETE=====
 
* To delete a single access interface
 
* To delete a single access interface
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}
+
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}.
 
No HTTP message body.
 
No HTTP message body.
  
Line 290: Line 311:
 
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs
 
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 298: Line 320:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
==L2VPN Information Model==
 
==L2VPN Information Model==
Line 307: Line 330:
 
====Elements Description====
 
====Elements Description====
 
The L2VPN model contains multiple VPN Instances.
 
The L2VPN model contains multiple VPN Instances.
 +
 +
L2VPN Instance Attributes
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 318: Line 343:
 
|}
 
|}
  
 +
L2VPN PW Attributes
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 327: Line 353:
 
|}
 
|}
  
 +
L2VPN PW CX Attributes
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 345: Line 372:
 
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label
 
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label
 
|-
 
|-
| TunnelId String || Example || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW
+
| TunnelId || String || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW
 
|}
 
|}
  
 +
L2VPN AC Attributes
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 363: Line 391:
 
POST URI/netL2VPN/vpws/netL2VPNinstances
 
POST URI/netL2VPN/vpws/netL2VPNinstances
  
 +
<pre><nowiki>
 
<netL2vpnInstances>
 
<netL2vpnInstances>
 
   <netL2vpnInstance>
 
   <netL2vpnInstance>
 
     <instancename>vpninstance1</instancename>
 
     <instancename>vpninstance1</instancename>
     < instanceType >2PE</ instanceType >
+
     <instanceType>2PE</instanceType>
 
     <pws>
 
     <pws>
 
       <pw>
 
       <pw>
         < pwRole >primary</ pwRole >
+
         <pwRole>primary</pwRole>
 
         <cxs>
 
         <cxs>
 
           <cx>
 
           <cx>
 
             <FPID>1.1.1.1</FPID>
 
             <FPID>1.1.1.1</FPID>
             < backwardPeerID >2.2.2.2</ backwardPeerID >
+
             <backwardPeerID>2.2.2.2</backwardPeerID>
        < BackwardInLabel >1024</ BackwardInLabel >
+
                <BackwardInLabel>1024</BackwardInLabel>
        < BackwardOutLabel >1025</ BackwardOutLabel >
+
                <BackwardOutLabel>1025</BackwardOutLabel>
 
             <FPID>2.2.2.2</FPID>
 
             <FPID>2.2.2.2</FPID>
             < forwardPeerID >1.1.1.1</ forwardPeerID >
+
             <forwardPeerID>1.1.1.1</forwardPeerID>
        < forwardInLabel >1025</ forwardInLabel >
+
              <forwardInLabel>1025</forwardInLabel>
        < forwardOutLabel >1024</ forwardOutLabel >
+
              <forwardOutLabel>1024</forwardOutLabel>
 
           </cx>
 
           </cx>
 
         </cxs>
 
         </cxs>
 
       </pw>
 
       </pw>
</pws>
+
          </pws>
<acs>
+
          <acs>
 
       <ac>
 
       <ac>
        <FPID>1.1.1.1</FPID>
+
          <FPID>1.1.1.1</FPID>
        <Interface> Ethernet0/0/1</Interface>
+
          <Interface> Ethernet0/0/1</Interface>
 
       </ac>
 
       </ac>
</acs>
+
          </acs>
 
   </L2VPNinstance>
 
   </L2VPNinstance>
 
   <L2VPNinstance>
 
   <L2VPNinstance>
Line 395: Line 424:
 
   </L2VPNinstance>
 
   </L2VPNinstance>
 
</L2VPNinstances>
 
</L2VPNinstances>
 +
</nowiki></pre>
  
 
=====GET=====
 
=====GET=====
 
* To get all instances
 
* To get all instances
GET URI/netL2vpn/vpws/nstL2vpnInstances
+
GET URI/netL2vpn/vpws/nstL2vpnInstances.
 
No HTTP message body.
 
No HTTP message body.
  
 
* To get a single VPN instance
 
* To get a single VPN instance
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}
+
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}.
 
No HTTP message body.
 
No HTTP message body.
  
Line 408: Line 438:
 
GET URI/netL2VPN/L2VPNinstances
 
GET URI/netL2VPN/L2VPNinstances
  
 +
<pre><nowiki>
 
<netL2vpnInstances>
 
<netL2vpnInstances>
   < netL2vpnInstance>
+
   <netL2vpnInstance>
 
     <instancename>vpninstance1</instancename>
 
     <instancename>vpninstance1</instancename>
 
   </netL2vpnInstance>
 
   </netL2vpnInstance>
Line 416: Line 447:
 
   </netL2vpnInstance>
 
   </netL2vpnInstance>
 
</netL2vpnInstances>
 
</netL2vpnInstances>
 +
</nowiki></pre>
  
 
* Response
 
* Response
  
 +
<pre><nowiki>
 
<netL2vpnInstances>
 
<netL2vpnInstances>
 
   <netL2vpnInstance>
 
   <netL2vpnInstance>
 
     <instancename>vpninstance1</instancename>
 
     <instancename>vpninstance1</instancename>
< instanceType >2PE</ instanceType >
+
        <instanceType>2PE</instanceType>
< instanceOperStatus >up</ instanceOperStatus >
+
        <instanceOperStatus>up</instanceOperStatus>
 
     <pws>
 
     <pws>
 
       <pw>
 
       <pw>
         <pwRole >primary</ pwRole>
+
         <pwRole>primary</pwRole>
<pwOperStatus>up</pwOperStatus>
+
            <pwOperStatus>up</pwOperStatus>
 
         <cxs>
 
         <cxs>
 
           <cx>
 
           <cx>
 
             <FPID>1.1.1.1</FPID>
 
             <FPID>1.1.1.1</FPID>
             < backwardPeerID >2.2.2.2</ backwardPeerID >
+
             <backwardPeerID>2.2.2.2</backwardPeerID>
        < BackwardInLabel >1024</ BackwardInLabel >
+
                <BackwardInLabel>1024</BackwardInLabel>
        < BackwardOutLabel >1025</ BackwardOutLabel >
+
                <BackwardOutLabel>1025</BackwardOutLabel>
 
             <FPID>2.2.2.2</FPID>
 
             <FPID>2.2.2.2</FPID>
             < forwardPeerID >1.1.1.1</ forwardPeerID >
+
             <forwardPeerID>1.1.1.1</forwardPeerID>
        < forwardInLabel >1025</ forwardInLabel >
+
                <forwardInLabel>1025</forwardInLabel>
        < forwardOutLabel >1024</ forwardOutLabel >
+
                <forwardOutLabel>1024</forwardOutLabel>
 
           </cx>
 
           </cx>
 
         </cxs>
 
         </cxs>
 
       </pw>
 
       </pw>
</pws>
+
        </pws>
<acs>
+
        <acs>
 
       <ac>
 
       <ac>
 
         <FPID>1.1.1.1</FPID>
 
         <FPID>1.1.1.1</FPID>
         <Interface> Ethernet0/0/1</Interface>
+
         <Interface>Ethernet0/0/1</Interface>
 
       </ac>
 
       </ac>
</acs>
+
        </acs>
 
   </L2VPNinstance>
 
   </L2VPNinstance>
 
   <L2VPNinstance>
 
   <L2VPNinstance>
Line 453: Line 486:
 
   </L2VPNinstance>
 
   </L2VPNinstance>
 
</L2VPNinstances>
 
</L2VPNinstances>
 +
</nowiki></pre>
  
 
=====DELETE=====
 
=====DELETE=====
Line 462: Line 496:
 
DELETE URI/netL2vpn/vpws/netL2vpnInstances/
 
DELETE URI/netL2vpn/vpws/netL2vpnInstances/
  
 +
<pre><nowiki>
 
<netL2vpnInstances>
 
<netL2vpnInstances>
 
   <netL2vpnInstance>
 
   <netL2vpnInstance>
     < netL2vpnInstance >vpninstance1</ netL2vpnInstance >
+
     <netL2vpnInstance>vpninstance1</netL2vpnInstance>
   </ netL2vpnInstance >
+
   </netL2vpnInstance>
   < netL2vpnInstance >
+
   <netL2vpnInstance>
 
     ……
 
     ……
   </ netL2vpnInstance >
+
   </netL2vpnInstance>
</ netL2vpnInstances >
+
</netL2vpnInstances>
 +
</nowiki></pre>
  
 
====AC====
 
====AC====
Line 475: Line 511:
 
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac
 
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac
  
 +
<pre><nowiki>
 
<netL2vpnInstances>
 
<netL2vpnInstances>
 
   <netL2vpnInstance>
 
   <netL2vpnInstance>
<instancename>vpninstance1</instancename>
+
    <instancename>vpninstance1</instancename>
<acs>
+
        <acs>
 
       <ac>
 
       <ac>
 
         <FPID>1.1.1.1</FPID>
 
         <FPID>1.1.1.1</FPID>
        <Interface> Ethernet0/0/1</Interface>
+
            <Interface>Ethernet0/0/1</Interface>
 
       </ac>
 
       </ac>
 
       <ac>
 
       <ac>
 
         ……
 
         ……
 
       </ac>
 
       </ac>
</acs>
+
        </acs>
 
</netL2vpnInstance>
 
</netL2vpnInstance>
 
</netL2vpnInstances>
 
</netL2vpnInstances>
 +
</nowiki></pre>
  
 
=====GET=====
 
=====GET=====
 
* To get a single access interface
 
* To get a single access interface
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac
+
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac.
 
No HTTP message body.
 
No HTTP message body.
  
Line 498: Line 536:
 
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs
 
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 506: Line 545:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
* Response
 
* Response
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 530: Line 571:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
=====PUT=====
 
=====PUT=====
 
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs
 
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 555: Line 598:
 
   </acif>
 
   </acif>
 
</acifs>
 
</acifs>
 +
</nowiki></pre>
  
 
=====DELETE=====
 
=====DELETE=====
 
* To delete a single access interface
 
* To delete a single access interface
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}
+
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}.
 
No HTTP message body.
 
No HTTP message body.
  
Line 564: Line 608:
 
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs
 
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs
  
 +
<pre><nowiki>
 
<acifs>
 
<acifs>
 
   <acif>
 
   <acif>
Line 572: 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>