Jump to: navigation, search

Neutron/sdnapi

< Neutron
Revision as of 02:40, 15 February 2015 by Dongfeng (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>