Jump to: navigation, search

Difference between revisions of "Neutron/sdnapi"

Line 18: Line 18:
 
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name
 
| 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
+
| 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
 
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6
Line 38: Line 38:
 
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface
 
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface
 
|-
 
|-
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type
+
| 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
 
 
 
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number
 
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number
 
|-
 
|-
| Example || Example || Example || Example || Example || Example || Example
+
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP
|-
 
| Example || Example || Example || Example || Example || Example || Example
 
 
|-
 
|-
| Example || Example || Example || Example || Example || Example || Example
+
| 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>

Revision as of 08:55, 13 February 2015

L3VPN Information Model

Overview

UML Model

Elements Description

The L3 VPN model contains multiple VPN Instances.

L3VPN Instance

====UML Model====]

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>