<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.openstack.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dongfeng</id>
		<title>OpenStack - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.openstack.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dongfeng"/>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/wiki/Special:Contributions/Dongfeng"/>
		<updated>2026-06-30T01:19:19Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73692</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73692"/>
				<updated>2015-02-15T02:40:53Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L3VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L2VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L2VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L2VPN model contains multiple VPN Instances.&lt;br /&gt;
&lt;br /&gt;
L2VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || Stringe || Yes || CRD	 || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status&lt;br /&gt;
|-&lt;br /&gt;
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| pwRole || String enum || Yes	 || CR || primary || primary or backup or bypas || Pw role &lt;br /&gt;
|-&lt;br /&gt;
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW CX Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer&lt;br /&gt;
|-&lt;br /&gt;
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label&lt;br /&gt;
|-&lt;br /&gt;
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe&lt;br /&gt;
|-&lt;br /&gt;
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer&lt;br /&gt;
|-&lt;br /&gt;
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label&lt;br /&gt;
|-&lt;br /&gt;
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label&lt;br /&gt;
|-&lt;br /&gt;
| TunnelId || String || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN AC Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L2VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L2VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;instanceType&amp;gt;2PE&amp;lt;/instanceType&amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole&amp;gt;primary&amp;lt;/pwRole&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;backwardPeerID&amp;gt;2.2.2.2&amp;lt;/backwardPeerID&amp;gt;&lt;br /&gt;
                &amp;lt;BackwardInLabel&amp;gt;1024&amp;lt;/BackwardInLabel&amp;gt;&lt;br /&gt;
                &amp;lt;BackwardOutLabel&amp;gt;1025&amp;lt;/BackwardOutLabel&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;forwardPeerID&amp;gt;1.1.1.1&amp;lt;/forwardPeerID&amp;gt;&lt;br /&gt;
               &amp;lt;forwardInLabel&amp;gt;1025&amp;lt;/forwardInLabel&amp;gt;&lt;br /&gt;
               &amp;lt;forwardOutLabel&amp;gt;1024&amp;lt;/forwardOutLabel&amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
          &amp;lt;/pws&amp;gt;&lt;br /&gt;
           &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
          &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
          &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
          &amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
        &amp;lt;instanceType&amp;gt;2PE&amp;lt;/instanceType&amp;gt;&lt;br /&gt;
        &amp;lt;instanceOperStatus&amp;gt;up&amp;lt;/instanceOperStatus&amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole&amp;gt;primary&amp;lt;/pwRole&amp;gt;&lt;br /&gt;
            &amp;lt;pwOperStatus&amp;gt;up&amp;lt;/pwOperStatus&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;backwardPeerID&amp;gt;2.2.2.2&amp;lt;/backwardPeerID&amp;gt;&lt;br /&gt;
                &amp;lt;BackwardInLabel&amp;gt;1024&amp;lt;/BackwardInLabel&amp;gt;&lt;br /&gt;
                &amp;lt;BackwardOutLabel&amp;gt;1025&amp;lt;/BackwardOutLabel&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;forwardPeerID&amp;gt;1.1.1.1&amp;lt;/forwardPeerID&amp;gt;&lt;br /&gt;
                &amp;lt;forwardInLabel&amp;gt;1025&amp;lt;/forwardInLabel&amp;gt;&lt;br /&gt;
                &amp;lt;forwardOutLabel&amp;gt;1024&amp;lt;/forwardOutLabel&amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
        &amp;lt;/pws&amp;gt;&lt;br /&gt;
        &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt;Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
        &amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netL2vpn/vpws/netL2vpnInstances/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;netL2vpnInstance&amp;gt;vpninstance1&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====AC====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
        &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;Interface&amp;gt;Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
         ……&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
        &amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73691</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73691"/>
				<updated>2015-02-15T02:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L3VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L2VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L2VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L2VPN model contains multiple VPN Instances.&lt;br /&gt;
&lt;br /&gt;
L2VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || Stringe || Yes || CRD	 || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status&lt;br /&gt;
|-&lt;br /&gt;
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| pwRole || String enum || Yes	 || CR || primary || primary or backup or bypas || Pw role &lt;br /&gt;
|-&lt;br /&gt;
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW CX Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer&lt;br /&gt;
|-&lt;br /&gt;
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label&lt;br /&gt;
|-&lt;br /&gt;
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe&lt;br /&gt;
|-&lt;br /&gt;
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer&lt;br /&gt;
|-&lt;br /&gt;
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label&lt;br /&gt;
|-&lt;br /&gt;
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label&lt;br /&gt;
|-&lt;br /&gt;
| TunnelId || String || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN AC Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L2VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L2VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;instanceType&amp;gt;2PE&amp;lt;/instanceType&amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt; pwRole &amp;gt;primary&amp;lt;/ pwRole &amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;backwardPeerID&amp;gt;2.2.2.2&amp;lt;/backwardPeerID&amp;gt;&lt;br /&gt;
                &amp;lt;BackwardInLabel&amp;gt;1024&amp;lt;/BackwardInLabel&amp;gt;&lt;br /&gt;
                &amp;lt;BackwardOutLabel&amp;gt;1025&amp;lt;/BackwardOutLabel&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;forwardPeerID&amp;gt;1.1.1.1&amp;lt;/forwardPeerID&amp;gt;&lt;br /&gt;
               &amp;lt;forwardInLabel&amp;gt;1025&amp;lt;/forwardInLabel&amp;gt;&lt;br /&gt;
               &amp;lt;forwardOutLabel&amp;gt;1024&amp;lt;/forwardOutLabel&amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
          &amp;lt;/pws&amp;gt;&lt;br /&gt;
           &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
          &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
          &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
          &amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
        &amp;lt;instanceType&amp;gt;2PE&amp;lt;/instanceType&amp;gt;&lt;br /&gt;
        &amp;lt;instanceOperStatus&amp;gt;up&amp;lt;/instanceOperStatus&amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole&amp;gt;primary&amp;lt;/pwRole&amp;gt;&lt;br /&gt;
            &amp;lt;pwOperStatus&amp;gt;up&amp;lt;/pwOperStatus&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;backwardPeerID&amp;gt;2.2.2.2&amp;lt;/backwardPeerID&amp;gt;&lt;br /&gt;
                &amp;lt;BackwardInLabel&amp;gt;1024&amp;lt;/BackwardInLabel&amp;gt;&lt;br /&gt;
                &amp;lt;BackwardOutLabel&amp;gt;1025&amp;lt;/BackwardOutLabel&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;forwardPeerID&amp;gt;1.1.1.1&amp;lt;/forwardPeerID&amp;gt;&lt;br /&gt;
                &amp;lt;forwardInLabel&amp;gt;1025&amp;lt;/forwardInLabel&amp;gt;&lt;br /&gt;
                &amp;lt;forwardOutLabel&amp;gt;1024&amp;lt;/forwardOutLabel&amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
        &amp;lt;/pws&amp;gt;&lt;br /&gt;
        &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
        &amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netL2vpn/vpws/netL2vpnInstances/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;netL2vpnInstance&amp;gt;vpninstance1&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====AC====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
        &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
         ……&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
        &amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}.&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73690</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73690"/>
				<updated>2015-02-15T02:30:22Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L3VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L2VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L2VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L2VPN model contains multiple VPN Instances.&lt;br /&gt;
&lt;br /&gt;
L2VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || Stringe || Yes || CRD	 || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status&lt;br /&gt;
|-&lt;br /&gt;
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| pwRole || String enum || Yes	 || CR || primary || primary or backup or bypas || Pw role &lt;br /&gt;
|-&lt;br /&gt;
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW CX Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer&lt;br /&gt;
|-&lt;br /&gt;
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label&lt;br /&gt;
|-&lt;br /&gt;
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe&lt;br /&gt;
|-&lt;br /&gt;
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer&lt;br /&gt;
|-&lt;br /&gt;
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label&lt;br /&gt;
|-&lt;br /&gt;
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label&lt;br /&gt;
|-&lt;br /&gt;
| TunnelId || String || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN AC Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L2VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L2VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt; pwRole &amp;gt;primary&amp;lt;/ pwRole &amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
                &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
                &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
               &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
               &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
          &amp;lt;/pws&amp;gt;&lt;br /&gt;
           &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
          &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
          &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
          &amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
        &amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
        &amp;lt; instanceOperStatus &amp;gt;up&amp;lt;/ instanceOperStatus &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole &amp;gt;primary&amp;lt;/ pwRole&amp;gt;&lt;br /&gt;
            &amp;lt;pwOperStatus&amp;gt;up&amp;lt;/pwOperStatus&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
                &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
                &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
                &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
                &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
        &amp;lt;/pws&amp;gt;&lt;br /&gt;
        &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
        &amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netL2vpn/vpws/netL2vpnInstances/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt; netL2vpnInstance &amp;gt;vpninstance1&amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance &amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
&amp;lt;/ netL2vpnInstances &amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====AC====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
        &amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
         ……&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
        &amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73632</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73632"/>
				<updated>2015-02-13T09:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L3VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L2VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L2VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L2VPN model contains multiple VPN Instances.&lt;br /&gt;
&lt;br /&gt;
L2VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || Stringe || Yes || CRD	 || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status&lt;br /&gt;
|-&lt;br /&gt;
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| pwRole || String enum || Yes	 || CR || primary || primary or backup or bypas || Pw role &lt;br /&gt;
|-&lt;br /&gt;
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW CX Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer&lt;br /&gt;
|-&lt;br /&gt;
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label&lt;br /&gt;
|-&lt;br /&gt;
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe&lt;br /&gt;
|-&lt;br /&gt;
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer&lt;br /&gt;
|-&lt;br /&gt;
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label&lt;br /&gt;
|-&lt;br /&gt;
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label&lt;br /&gt;
|-&lt;br /&gt;
| TunnelId	String || Example || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN AC Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L2VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L2VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt; pwRole &amp;gt;primary&amp;lt;/ pwRole &amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
&amp;lt; instanceOperStatus &amp;gt;up&amp;lt;/ instanceOperStatus &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole &amp;gt;primary&amp;lt;/ pwRole&amp;gt;&lt;br /&gt;
&amp;lt;pwOperStatus&amp;gt;up&amp;lt;/pwOperStatus&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netL2vpn/vpws/netL2vpnInstances/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt; netL2vpnInstance &amp;gt;vpninstance1&amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance &amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
&amp;lt;/ netL2vpnInstances &amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====AC====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
         ……&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73631</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73631"/>
				<updated>2015-02-13T09:37:19Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L3VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L2VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L2VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L2VPN model contains multiple VPN Instances.&lt;br /&gt;
L2VPN Instance Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || Stringe || Yes || CRD	 || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status&lt;br /&gt;
|-&lt;br /&gt;
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| pwRole || String enum || Yes	 || CR || primary || primary or backup or bypas || Pw role &lt;br /&gt;
|-&lt;br /&gt;
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN PW CX Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer&lt;br /&gt;
|-&lt;br /&gt;
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label&lt;br /&gt;
|-&lt;br /&gt;
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe&lt;br /&gt;
|-&lt;br /&gt;
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer&lt;br /&gt;
|-&lt;br /&gt;
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label&lt;br /&gt;
|-&lt;br /&gt;
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label&lt;br /&gt;
|-&lt;br /&gt;
| TunnelId	String || Example || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
L2VPN AC Attributes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L2VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L2VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt; pwRole &amp;gt;primary&amp;lt;/ pwRole &amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
&amp;lt; instanceOperStatus &amp;gt;up&amp;lt;/ instanceOperStatus &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole &amp;gt;primary&amp;lt;/ pwRole&amp;gt;&lt;br /&gt;
&amp;lt;pwOperStatus&amp;gt;up&amp;lt;/pwOperStatus&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netL2vpn/vpws/netL2vpnInstances/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt; netL2vpnInstance &amp;gt;vpninstance1&amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance &amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
&amp;lt;/ netL2vpnInstances &amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====AC====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
         ……&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73630</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73630"/>
				<updated>2015-02-13T09:34:50Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&lt;br /&gt;
L3VPN Instance Attributes&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L2VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L2VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L2VPN model contains multiple VPN Instances.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || Stringe || Yes || CRD	 || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status&lt;br /&gt;
|-&lt;br /&gt;
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| pwRole || String enum || Yes	 || CR || primary || primary or backup or bypas || Pw role &lt;br /&gt;
|-&lt;br /&gt;
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer&lt;br /&gt;
|-&lt;br /&gt;
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label&lt;br /&gt;
|-&lt;br /&gt;
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe&lt;br /&gt;
|-&lt;br /&gt;
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer&lt;br /&gt;
|-&lt;br /&gt;
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label&lt;br /&gt;
|-&lt;br /&gt;
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label&lt;br /&gt;
|-&lt;br /&gt;
| TunnelId	String || Example || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L2VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L2VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt; pwRole &amp;gt;primary&amp;lt;/ pwRole &amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
&amp;lt; instanceOperStatus &amp;gt;up&amp;lt;/ instanceOperStatus &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole &amp;gt;primary&amp;lt;/ pwRole&amp;gt;&lt;br /&gt;
&amp;lt;pwOperStatus&amp;gt;up&amp;lt;/pwOperStatus&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netL2vpn/vpws/netL2vpnInstances/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt; netL2vpnInstance &amp;gt;vpninstance1&amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance &amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
&amp;lt;/ netL2vpnInstances &amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====AC====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
         ……&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73629</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73629"/>
				<updated>2015-02-13T09:28:46Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L2VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L2VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L2VPN model contains multiple VPN Instances.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || Stringe || Yes || CRD	 || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status&lt;br /&gt;
|-&lt;br /&gt;
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| pwRole || String enum || Yes	 || CR || primary || primary or backup or bypas || Pw role &lt;br /&gt;
|-&lt;br /&gt;
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer&lt;br /&gt;
|-&lt;br /&gt;
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label&lt;br /&gt;
|-&lt;br /&gt;
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe&lt;br /&gt;
|-&lt;br /&gt;
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer&lt;br /&gt;
|-&lt;br /&gt;
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label&lt;br /&gt;
|-&lt;br /&gt;
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label&lt;br /&gt;
|-&lt;br /&gt;
| TunnelId	String || Example || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L2VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L2VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt; pwRole &amp;gt;primary&amp;lt;/ pwRole &amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
&amp;lt; instanceOperStatus &amp;gt;up&amp;lt;/ instanceOperStatus &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole &amp;gt;primary&amp;lt;/ pwRole&amp;gt;&lt;br /&gt;
&amp;lt;pwOperStatus&amp;gt;up&amp;lt;/pwOperStatus&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netL2vpn/vpws/netL2vpnInstances/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt; netL2vpnInstance &amp;gt;vpninstance1&amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance &amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
&amp;lt;/ netL2vpnInstances &amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====AC====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
         ……&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73628</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73628"/>
				<updated>2015-02-13T09:17:47Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L2VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L2VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L2VPN model contains multiple VPN Instances.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || Stringe || Yes || CRD	 || N/A || Maxlength = 32 Pattern = ([^?]*) || L2VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| instanceOperStatus || String enum || No || R || N/A || Up or down || Instance Operation Status&lt;br /&gt;
|-&lt;br /&gt;
| instanceType || String enum || No || CRU || 2PE || 2PE or 3PE || Instance type&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| pwRole || String enum || Yes	 || CR || primary || primary or backup or bypas || Pw role &lt;br /&gt;
|-&lt;br /&gt;
| pwOperStatus || Unsigned byte || No || R || N/A || Up or down || Pw Operation Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || String || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| ForwardPeerID || String || No || CRD || N/A || Length = 0~255 || Forward peer&lt;br /&gt;
|-&lt;br /&gt;
| ForwardInLabel || String || No || CRD || N/A || 17~2^20 || Forward in label&lt;br /&gt;
|-&lt;br /&gt;
| ForwardOutLabel || String || No || CRD || N/A || 17~2^20 || Forward out labe&lt;br /&gt;
|-&lt;br /&gt;
| backwardPeerID || String || No || CRD || N/A || Length = 0~255 || Backward peer&lt;br /&gt;
|-&lt;br /&gt;
| BackwardInLabel || String || No || CRD || N/A || 17~2^20 || Backward in label&lt;br /&gt;
|-&lt;br /&gt;
| BackwardOutLabel || String || No || CRD || N/A || 17~2^20 || Backward out label&lt;br /&gt;
|-&lt;br /&gt;
| TunnelId	String || Example || No || CRUD || N/A || Length = 0~32 || Tunnel of the PW&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| FPID || Stringe || Yes || CRD || N/A || Length = 0~255 || Forward Point ID&lt;br /&gt;
|-&lt;br /&gt;
| Interface || String || Yes || CRD || N/A || Length = 0~32 || Interface access the l2vpn&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==L2VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L2VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt; pwRole &amp;gt;primary&amp;lt;/ pwRole &amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netL2vpn/vpws/nstL2vpnInstances /{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt; instanceType &amp;gt;2PE&amp;lt;/ instanceType &amp;gt;&lt;br /&gt;
&amp;lt; instanceOperStatus &amp;gt;up&amp;lt;/ instanceOperStatus &amp;gt;&lt;br /&gt;
    &amp;lt;pws&amp;gt;&lt;br /&gt;
      &amp;lt;pw&amp;gt;&lt;br /&gt;
        &amp;lt;pwRole &amp;gt;primary&amp;lt;/ pwRole&amp;gt;&lt;br /&gt;
&amp;lt;pwOperStatus&amp;gt;up&amp;lt;/pwOperStatus&amp;gt;&lt;br /&gt;
        &amp;lt;cxs&amp;gt;&lt;br /&gt;
          &amp;lt;cx&amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; backwardPeerID &amp;gt;2.2.2.2&amp;lt;/ backwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardInLabel &amp;gt;1024&amp;lt;/ BackwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; BackwardOutLabel &amp;gt;1025&amp;lt;/ BackwardOutLabel &amp;gt;&lt;br /&gt;
            &amp;lt;FPID&amp;gt;2.2.2.2&amp;lt;/FPID&amp;gt;&lt;br /&gt;
            &amp;lt; forwardPeerID &amp;gt;1.1.1.1&amp;lt;/ forwardPeerID &amp;gt;&lt;br /&gt;
        &amp;lt; forwardInLabel &amp;gt;1025&amp;lt;/ forwardInLabel &amp;gt;&lt;br /&gt;
        &amp;lt; forwardOutLabel &amp;gt;1024&amp;lt;/ forwardOutLabel &amp;gt;&lt;br /&gt;
          &amp;lt;/cx&amp;gt;&lt;br /&gt;
        &amp;lt;/cxs&amp;gt;&lt;br /&gt;
      &amp;lt;/pw&amp;gt;&lt;br /&gt;
&amp;lt;/pws&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
  &amp;lt;L2VPNinstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/L2VPNinstance&amp;gt;&lt;br /&gt;
&amp;lt;/L2VPNinstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netL2vpn/vpws/netL2vpnInstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netL2vpn/vpws/netL2vpnInstances/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
    &amp;lt; netL2vpnInstance &amp;gt;vpninstance1&amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
  &amp;lt; netL2vpnInstance &amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/ netL2vpnInstance &amp;gt;&lt;br /&gt;
&amp;lt;/ netL2vpnInstances &amp;gt;&lt;br /&gt;
&lt;br /&gt;
====AC====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
&lt;br /&gt;
&amp;lt;netL2vpnInstances&amp;gt;&lt;br /&gt;
  &amp;lt;netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
&amp;lt;acs&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
        &amp;lt;FPID&amp;gt;1.1.1.1&amp;lt;/FPID&amp;gt;&lt;br /&gt;
        &amp;lt;Interface&amp;gt; Ethernet0/0/1&amp;lt;/Interface&amp;gt;&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
      &amp;lt;ac&amp;gt;&lt;br /&gt;
         ……&lt;br /&gt;
      &amp;lt;/ac&amp;gt;&lt;br /&gt;
&amp;lt;/acs&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstance&amp;gt;&lt;br /&gt;
&amp;lt;/netL2vpnInstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netL2VPN/vpws/netL2vpnInstances/{instancename}/acs/ac&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netL2VPN/L2VPNinstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73627</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73627"/>
				<updated>2015-02-13T08:55:59Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String enum || No || CRUD || full-mesh || full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| remoteAsNumber || String || No || CRUD || N/A || Length = 1 ~ 11 || Valid only when protocol is BGP&lt;br /&gt;
|-&lt;br /&gt;
| remotePeerAddr || String || No || CRUD || N/A || Length = 0~255 || Valid only when protocol is BGP&lt;br /&gt;
|}&lt;br /&gt;
==L3VPN API example==&lt;br /&gt;
===Restful API===&lt;br /&gt;
====L3VPN Instance====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Access Interface====&lt;br /&gt;
=====POST=====&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====GET=====&lt;br /&gt;
* To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Response&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====PUT=====&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====DELETE=====&lt;br /&gt;
* To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
* To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73626</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73626"/>
				<updated>2015-02-13T08:41:13Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==L3VPN Information Model==&lt;br /&gt;
===Overview===&lt;br /&gt;
====UML Model====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|High Level L3VPN Architecture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====Elements Description====&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===L3VPN Instance===&lt;br /&gt;
====UML Model====]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg| L3VPN Instance Model&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Attribute !! Type !! Required !! CRUD !! Default Value !! Constraints !! Note&lt;br /&gt;
|-&lt;br /&gt;
| instanceName || String || Yes || CRD || N/A || Maxlength = 64 Pattern = ([^?]*) || L3VPN instance name&lt;br /&gt;
|-&lt;br /&gt;
| serviceType || String || enum || No || CRUD || full-mesh full-mesh or hub-spoke || Topology type&lt;br /&gt;
|-&lt;br /&gt;
| afType || String enum || No || CRUD || ipv4uni || ipv4uni or ipv6uni || Address family type: IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIf Id || String || Yes || CRD || N/A || Length= 1~63 || Access interface ID&lt;br /&gt;
|-&lt;br /&gt;
| acIfAddr || String || No || CRUD || N/A || Length = 0~255 || Access interface address, IPv4 or IPv6&lt;br /&gt;
|-&lt;br /&gt;
| acIfMask || Unsigned byte || No || CRUD || N/A || 0 ~ 128 || IP address mask length&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| userName || String || No || CRUD ||N/A || Maxlength = 64 Pattern = ([^?]*) || User name for this access interface&lt;br /&gt;
|-&lt;br /&gt;
| userPassword || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || User password for the access interface&lt;br /&gt;
|-&lt;br /&gt;
| phyNodeId || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || Physical node ID&lt;br /&gt;
|-&lt;br /&gt;
| phyAcIf || String || No || CRUD || N/A || Maxlength = 64 Pattern = ([^?]*) || hysical access interface&lt;br /&gt;
|-&lt;br /&gt;
| protocolType || String enum || No || 	CRUD || ospf || bgp, ospf, or isis || Protocol type&lt;br /&gt;
|-&lt;br /&gt;
protocolId	Unsigned int	No	CRUD	0	N/A	Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
remoteAsNumber	String	No	CRUD	N/A	Length = 1 ~ 11	Valid only when protocol is BGP&lt;br /&gt;
remotePeerAddr	String	No	CRUD	N/A	Length = 0~255	Valid only when protocol is BGP&lt;br /&gt;
&lt;br /&gt;
| protocolId ||Unsigned int || No || CRUD || 0 || N/A || Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example || Example || Example || Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example || Example || Example || Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example || Example || Example || Example || Example&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73625</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73625"/>
				<updated>2015-02-13T07:50:56Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==1. L3VPN Information Model== &lt;br /&gt;
===1.1 Overview===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Ex&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|picture1&lt;br /&gt;
Example.jpg|Caption2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
ample.jpg|Caption1&lt;br /&gt;
Example.jpg|Caption2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
====1.1.1 UML Model====&lt;br /&gt;
 &lt;br /&gt;
Figure 1 High Level L3VPN Architecture&lt;br /&gt;
===1.1.2	Elements Description===&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
===3.2 L3VPN Instance===&lt;br /&gt;
====3.2.1 UML Model====&lt;br /&gt;
&lt;br /&gt;
Figure 2 L3VPN Instance Model&lt;br /&gt;
3.2.2	Element Description&lt;br /&gt;
Attribute	Type	Required	CRUD	Default Value	Constraints	Note&lt;br /&gt;
instanceName	String	Yes	CRD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	L3VPN instance name&lt;br /&gt;
serviceType	String enum	No	CRUD	full-mesh	full-mesh or hub-spoke	Topology type&lt;br /&gt;
afType	String enum	No	CRUD	ipv4uni	ipv4uni or ipv6uni	Address family type: IPv4 or IPv6&lt;br /&gt;
acIf Id	String	Yes	CRD	N/A	Length= 1~63	Access interface ID&lt;br /&gt;
acIfAddr	String	No	CRUD	N/A	Length = 0~255	Access interface address, IPv4 or IPv6&lt;br /&gt;
acIfMask	Unsigned byte	No	CRUD	N/A	0 ~ 128	IP address mask length&lt;br /&gt;
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&lt;br /&gt;
userName	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	User name for this access interface&lt;br /&gt;
userPassword	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	User password for the access interface&lt;br /&gt;
phyNodeId	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	Physical node ID&lt;br /&gt;
phyAcIf	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	Physical access interface&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Example.jpg|Caption1&lt;br /&gt;
Example.jpg|Caption2&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
protocolType	String enum	No	CRUD	ospf	bgp, ospf, or isis	Protocol type&lt;br /&gt;
protocolId	Unsigned int	No	CRUD	0	N/A	Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
remoteAsNumber	String	No	CRUD	N/A	Length = 1 ~ 11	Valid only when protocol is BGP&lt;br /&gt;
remotePeerAddr	String	No	CRUD	N/A	Length = 0~255	Valid only when protocol is BGP&lt;br /&gt;
Table 1 L3VPN Instance Attributes&lt;br /&gt;
&lt;br /&gt;
4	L3VPN API example&lt;br /&gt;
4.1	Restful API&lt;br /&gt;
4.1.1	L3VPN Instance&lt;br /&gt;
4.1.1.1	POST&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.2	GET&lt;br /&gt;
	To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Response&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.3	PUT&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.4	DELETE&lt;br /&gt;
	To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
4.1.2	Access Interface&lt;br /&gt;
4.1.2.1	POST&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.1.2.2	GET&lt;br /&gt;
	To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Response&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.2.3	PUT&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.1.2.4	DELETE&lt;br /&gt;
	To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73624</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73624"/>
				<updated>2015-02-13T07:44:02Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==1. L3VPN Information Model== &lt;br /&gt;
1.1 Overview&lt;br /&gt;
1.1.1 UML Model&lt;br /&gt;
 &lt;br /&gt;
Figure 1 High Level L3VPN Architecture&lt;br /&gt;
1.1.2	Elements Description&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
3.2	L3VPN Instance&lt;br /&gt;
3.2.1	UML Model&lt;br /&gt;
 &lt;br /&gt;
Figure 2 L3VPN Instance Model&lt;br /&gt;
3.2.2	Element Description&lt;br /&gt;
Attribute	Type	Required	CRUD	Default Value	Constraints	Note&lt;br /&gt;
instanceName	String	Yes	CRD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	L3VPN instance name&lt;br /&gt;
serviceType	String enum	No	CRUD	full-mesh	full-mesh or hub-spoke	Topology type&lt;br /&gt;
afType	String enum	No	CRUD	ipv4uni	ipv4uni or ipv6uni	Address family type: IPv4 or IPv6&lt;br /&gt;
acIf Id	String	Yes	CRD	N/A	Length= 1~63	Access interface ID&lt;br /&gt;
acIfAddr	String	No	CRUD	N/A	Length = 0~255	Access interface address, IPv4 or IPv6&lt;br /&gt;
acIfMask	Unsigned byte	No	CRUD	N/A	0 ~ 128	IP address mask length&lt;br /&gt;
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&lt;br /&gt;
userName	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	User name for this access interface&lt;br /&gt;
userPassword	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	User password for the access interface&lt;br /&gt;
phyNodeId	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	Physical node ID&lt;br /&gt;
phyAcIf	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	Physical access interface&lt;br /&gt;
protocolType	String enum	No	CRUD	ospf	bgp, ospf, or isis	Protocol type&lt;br /&gt;
protocolId	Unsigned int	No	CRUD	0	N/A	Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
remoteAsNumber	String	No	CRUD	N/A	Length = 1 ~ 11	Valid only when protocol is BGP&lt;br /&gt;
remotePeerAddr	String	No	CRUD	N/A	Length = 0~255	Valid only when protocol is BGP&lt;br /&gt;
Table 1 L3VPN Instance Attributes&lt;br /&gt;
&lt;br /&gt;
4	L3VPN API example&lt;br /&gt;
4.1	Restful API&lt;br /&gt;
4.1.1	L3VPN Instance&lt;br /&gt;
4.1.1.1	POST&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.2	GET&lt;br /&gt;
	To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Response&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.3	PUT&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.4	DELETE&lt;br /&gt;
	To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
4.1.2	Access Interface&lt;br /&gt;
4.1.2.1	POST&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.1.2.2	GET&lt;br /&gt;
	To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Response&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.2.3	PUT&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.1.2.4	DELETE&lt;br /&gt;
	To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73623</id>
		<title>Neutron/sdnapi</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron/sdnapi&amp;diff=73623"/>
				<updated>2015-02-13T07:36:42Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for SDN APIs between OpenStack and SDN Controller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Disclaimer&lt;br /&gt;
THIS SPECIFICATION IS PROVIDED &amp;quot;AS IS&amp;quot; WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. &lt;br /&gt;
Without limitation, ONF disclaims all liability, including liability for infringement of any proprietary rights, relating to use of information in this specification and to the implementation of this specification, and ONF disclaims all liability for cost of procurement of substitute goods or services, lost profits, loss of use, loss of data or any incidental, consequential, direct, indirect, or special damages, whether under contract, tort, warranty or otherwise, arising in any way out of use or reliance upon this specification or any information herein. &lt;br /&gt;
No license, express or implied, by estoppel or otherwise, to any Open Networking Foundation or Open Networking Foundation member intellectual property rights is granted herein. &lt;br /&gt;
Except that a license is hereby granted by ONF to copy and reproduce this specification for internal use only. &lt;br /&gt;
Contact the Open Networking Foundation at https://www.opennetworking.org for information on specification licensing through membership agreements. &lt;br /&gt;
Any marks and brands contained herein are the property of their respective owners.&lt;br /&gt;
 &lt;br /&gt;
1	INTRODUCTION	5&lt;br /&gt;
2	ABBREVIATIONS AND ACRONYMS	5&lt;br /&gt;
3	L3VPN OVERVIEW	5&lt;br /&gt;
3.1	UML MODEL	5&lt;br /&gt;
3.2	ELEMENTS DESCRIPTION	6&lt;br /&gt;
4	L3VPN INSTANCE	6&lt;br /&gt;
4.1	UML MODEL	6&lt;br /&gt;
4.2	ELEMENT DESCRIPTION	6&lt;br /&gt;
5	BACK MATTER	7&lt;br /&gt;
5.1	REFERENCES	7&lt;br /&gt;
5.2	RELEASE HISTORY	8&lt;br /&gt;
5.3	CONTRIBUTORS	8&lt;br /&gt;
&lt;br /&gt;
List of Figures&lt;br /&gt;
Figure 1 High Level L3VPN Architecture	5&lt;br /&gt;
Figure 2 L3VPN Instance Model	6&lt;br /&gt;
&lt;br /&gt;
List of Tables&lt;br /&gt;
Table 1 L3VPN Instance Attributes	7&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
About this document&lt;br /&gt;
&lt;br /&gt;
Summary&lt;br /&gt;
This document describes NBI information model for L3VPN.&lt;br /&gt;
A L3VPN instance contains a set of access interfaces in network devices, its topology, address family, and other attributes.&lt;br /&gt;
Keywords&lt;br /&gt;
NBI, SDN controller, L3VPN&lt;br /&gt;
 &lt;br /&gt;
1	Introduction&lt;br /&gt;
This document describes NBI information model for L3VPN.&lt;br /&gt;
A L3VPN model is the collection of L3VPN instances.&lt;br /&gt;
A L3VPN instance contains a set of access interfaces in network devices, its topology, address family, and other attributes.&lt;br /&gt;
&lt;br /&gt;
2	Abbreviations and Acronyms&lt;br /&gt;
This document uses the following abbreviations and acronyms:&lt;br /&gt;
API	Applications Programming Interface&lt;br /&gt;
NBI	North Bound Interface&lt;br /&gt;
CRUD         Create, Read, Update, Delete&lt;br /&gt;
L3VPN	Layer 3 VPN&lt;br /&gt;
VACIF	Virtual Access Interface&lt;br /&gt;
VPN	Virtual Private Network&lt;br /&gt;
&lt;br /&gt;
3	L3VPN Information Model&lt;br /&gt;
3.1	Overview&lt;br /&gt;
3.1.1	UML Model&lt;br /&gt;
 &lt;br /&gt;
Figure 1 High Level L3VPN Architecture&lt;br /&gt;
3.1.2	Elements Description&lt;br /&gt;
The L3 VPN model contains multiple VPN Instances.&lt;br /&gt;
3.2	L3VPN Instance&lt;br /&gt;
3.2.1	UML Model&lt;br /&gt;
 &lt;br /&gt;
Figure 2 L3VPN Instance Model&lt;br /&gt;
3.2.2	Element Description&lt;br /&gt;
Attribute	Type	Required	CRUD	Default Value	Constraints	Note&lt;br /&gt;
instanceName	String	Yes	CRD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	L3VPN instance name&lt;br /&gt;
serviceType	String enum	No	CRUD	full-mesh	full-mesh or hub-spoke	Topology type&lt;br /&gt;
afType	String enum	No	CRUD	ipv4uni	ipv4uni or ipv6uni	Address family type: IPv4 or IPv6&lt;br /&gt;
acIf Id	String	Yes	CRD	N/A	Length= 1~63	Access interface ID&lt;br /&gt;
acIfAddr	String	No	CRUD	N/A	Length = 0~255	Access interface address, IPv4 or IPv6&lt;br /&gt;
acIfMask	Unsigned byte	No	CRUD	N/A	0 ~ 128	IP address mask length&lt;br /&gt;
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&lt;br /&gt;
userName	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	User name for this access interface&lt;br /&gt;
userPassword	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	User password for the access interface&lt;br /&gt;
phyNodeId	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	Physical node ID&lt;br /&gt;
phyAcIf	String	No	CRUD	N/A	Maxlength = 64&lt;br /&gt;
Pattern = ([^?]*)	Physical access interface&lt;br /&gt;
protocolType	String enum	No	CRUD	ospf	bgp, ospf, or isis	Protocol type&lt;br /&gt;
protocolId	Unsigned int	No	CRUD	0	N/A	Valid only when protocol is IGP; it can be AS number&lt;br /&gt;
remoteAsNumber	String	No	CRUD	N/A	Length = 1 ~ 11	Valid only when protocol is BGP&lt;br /&gt;
remotePeerAddr	String	No	CRUD	N/A	Length = 0~255	Valid only when protocol is BGP&lt;br /&gt;
Table 1 L3VPN Instance Attributes&lt;br /&gt;
&lt;br /&gt;
4	L3VPN API example&lt;br /&gt;
4.1	Restful API&lt;br /&gt;
4.1.1	L3VPN Instance&lt;br /&gt;
4.1.1.1	POST&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.2	GET&lt;br /&gt;
	To get all instances&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get a single VPN instance&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get one or more VPN instances at a time&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Response&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.3	PUT&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
    &amp;lt;servicetype&amp;gt;full-mesh&amp;lt;/servicetype&amp;gt;&lt;br /&gt;
    &amp;lt;aftype&amp;gt;ipv4uni&amp;lt;/aftype&amp;gt;&lt;br /&gt;
    &amp;lt;acifs&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
        &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
        &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
        &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
        &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
        &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
        &amp;lt;protocol&amp;gt;&lt;br /&gt;
          &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
          &amp;lt;igpattr&amp;gt;&lt;br /&gt;
            &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
          &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;/protocol&amp;gt;&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
      &amp;lt;acif&amp;gt;&lt;br /&gt;
        ……&lt;br /&gt;
      &amp;lt;/acif&amp;gt;&lt;br /&gt;
    &amp;lt;/acifs&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.1.4	DELETE&lt;br /&gt;
	To delete a single VPN instance &lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To delete one or more instances&lt;br /&gt;
DELETE 	URI/netl3vpn/l3vpninstances&lt;br /&gt;
&lt;br /&gt;
&amp;lt;l3vpninstances&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    &amp;lt;instancename&amp;gt;vpninstance1&amp;lt;/instancename&amp;gt;&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
  &amp;lt;l3vpninstance&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/l3vpninstance&amp;gt;&lt;br /&gt;
&amp;lt;/l3vpninstances&amp;gt;&lt;br /&gt;
4.1.2	Access Interface&lt;br /&gt;
4.1.2.1	POST&lt;br /&gt;
POST URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.1.2.2	GET&lt;br /&gt;
	To get a single access interface&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To get one or more access interfaces&lt;br /&gt;
GET URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Response&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.1.2.3	PUT&lt;br /&gt;
PUT URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
    &amp;lt;acifaddr&amp;gt;20.1.1.1&amp;lt;/acifaddr&amp;gt;&lt;br /&gt;
    &amp;lt;acifmask&amp;gt;24&amp;lt;/acifmask&amp;gt;&lt;br /&gt;
    &amp;lt;role&amp;gt;edge-if&amp;lt;/role&amp;gt;&lt;br /&gt;
    &amp;lt;username&amp;gt;user1&amp;lt;/username&amp;gt;&lt;br /&gt;
    &amp;lt;userpassword&amp;gt;userpass&amp;lt;/userpassword&amp;gt;&lt;br /&gt;
    &amp;lt;phynodeid&amp;gt;Node1&amp;lt;/phynodeid&amp;gt;&lt;br /&gt;
    &amp;lt;phyacif&amp;gt;Node1:Ethernet0/0/1&amp;lt;/phyacif&amp;gt;&lt;br /&gt;
    &amp;lt;protocol&amp;gt;&lt;br /&gt;
      &amp;lt;protocoltype&amp;gt;ospf&amp;lt;/protocoltype&amp;gt;&lt;br /&gt;
      &amp;lt;igpattr&amp;gt;&lt;br /&gt;
        &amp;lt;protocolid&amp;gt;1000&amp;lt;/protocolid&amp;gt;&lt;br /&gt;
      &amp;lt;/igpattr&amp;gt;&lt;br /&gt;
    &amp;lt;/protocol&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.1.2.4	DELETE&lt;br /&gt;
	To delete a single access interface&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs/{acifid}&lt;br /&gt;
No HTTP message body.&lt;br /&gt;
&lt;br /&gt;
	To delete one or more access interfaces&lt;br /&gt;
DELETE URI/netl3vpn/l3vpninstances/{instancename}/acifs&lt;br /&gt;
&amp;lt;acifs&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    &amp;lt;acifid&amp;gt;vpninstance1:port1&amp;lt;/acifid&amp;gt;&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
  &amp;lt;acif&amp;gt;&lt;br /&gt;
    ……&lt;br /&gt;
  &amp;lt;/acif&amp;gt;&lt;br /&gt;
&amp;lt;/acifs&amp;gt;&lt;br /&gt;
5	Back matter&lt;br /&gt;
5.1	References&lt;br /&gt;
&lt;br /&gt;
5.2	Release history&lt;br /&gt;
&lt;br /&gt;
5.3	Contributors&lt;br /&gt;
Xiaofeng Ji&lt;br /&gt;
Zhaozeyu&lt;br /&gt;
James Huang&lt;br /&gt;
Felix Lu&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Neutron&amp;diff=52409</id>
		<title>Neutron</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Neutron&amp;diff=52409"/>
				<updated>2014-05-15T19:00:20Z</updated>
		
		<summary type="html">&lt;p&gt;Dongfeng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= OpenStack Networking (&amp;quot;Neutron&amp;quot;) =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|  [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html Administrator Guide ]&lt;br /&gt;
|-&lt;br /&gt;
|  [http://docs.openstack.org/user-guide/content/neutron_client_sample_commands.html Neutron CLI Guide ]&lt;br /&gt;
|-&lt;br /&gt;
| [http://docs.openstack.org/api/openstack-network/2.0/content/  API Developer Doc (v2) ]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/openstack/quantum  Source code ]&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.launchpad.net/quantum Bug tracker  ]&lt;br /&gt;
|-&lt;br /&gt;
| [https://blueprints.launchpad.net/quantum Blueprints ]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related projects ==&lt;br /&gt;
* [https://launchpad.net/python-quantumclient Python Neutron client]&lt;br /&gt;
* Neutron Admin and API documentation in [https://launchpad.net/openstack-manuals  OpenStack Manuals]&lt;br /&gt;
* Tempest testing project [http://docs.openstack.org/developer/tempest/ Tempest Manuals]. For the Icehouse cycle, the community is undertaking a focused effort to strengthen the suite of Tempest tests for Neutron. If you are interested on contributing to this effort, please go to [https://etherpad.openstack.org/p/icehouse-summit-qa-neutron Icehouse Neutron Tempest push] to see what is being done and to [https://wiki.openstack.org/wiki/Neutron/TempestAPITests TempestAPITests] for HOWTO instructions. Helping to develop Tempest tests (particularly API tests) is an excellent way for new contributors to learn Neutron.&lt;br /&gt;
&lt;br /&gt;
== What is Neutron? ==&lt;br /&gt;
&lt;br /&gt;
Neutron is an [https://wiki.openstack.org OpenStack] project to provide &amp;quot;networking as a service&amp;quot; between interface devices (e.g., vNICs) managed by other Openstack services (e.g., nova).  &lt;br /&gt;
&lt;br /&gt;
Starting in the Folsom release, Neutron is a core and supported part of the [https://wiki.openstack.org OpenStack] platform (for Essex, we were an &amp;quot;incubated&amp;quot; project, which means use is suggested only for those who really know what they're doing with Neutron).  &lt;br /&gt;
&lt;br /&gt;
If you're a networking geek and like to hack on [https://wiki.openstack.org OpenStack], please join! &lt;br /&gt;
&lt;br /&gt;
More Info: &lt;br /&gt;
* [http://www.slideshare.net/danwent/openstack-quantum-intro-os-meetup-32612 Overview of Neutron] (slides) (3/12)&lt;br /&gt;
* [https://www.youtube.com/watch?v=_I1SrO2QBpg Neutron Project Overview + Update from Grizzly Summit] (video) (10/12) &lt;br /&gt;
* [http://www.infoq.com/presentations/Quantum-Virtual-Networks-for-OpenStack Video Neutron Overview] (3/12)&lt;br /&gt;
* [http://sdrv.ms/YdnQYS Slides on Technical Architecture of Neutron] (2013-03-14)&lt;br /&gt;
&lt;br /&gt;
== Why Neutron? ==&lt;br /&gt;
&lt;br /&gt;
* Give cloud tenants an API to build rich networking topologies, and configure advanced network policies in the cloud.  &lt;br /&gt;
** Example: create multi-tier web application topology&lt;br /&gt;
* Enable innovation plugins (open and closed source) that introduce advanced network capabilities&lt;br /&gt;
** Example:  use L2-in-L3 tunneling to avoid VLAN limits, provide end-to-end QoS guarantees, used monitoring protocols like [[NetFlow]]. &lt;br /&gt;
* Let anyone build advanced network services (open and closed source) that plug into Openstack tenant networks.  &lt;br /&gt;
** Examples:  LB-aaS, VPN-aaS, firewall-aaS, IDS-aaS, data-center-interconnect-aaS.&lt;br /&gt;
* Horizon GUI support for: &lt;br /&gt;
** Neutron L2 and L3 network and subnet creation/deletion&lt;br /&gt;
** Booting VMs on specific Neutron networks.  &lt;br /&gt;
* API Extensibility Framework, including extensions for: &lt;br /&gt;
** &amp;quot;provider network&amp;quot;, which maps Neutron L2 networks to a specific VLAN in the physical data center&lt;br /&gt;
&lt;br /&gt;
== Using Neutron ==&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in the  [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html  Neutron Administrator Guide], or use the installation documentation at http://docs.openstack.org to use Neutron with OpenStack Nova.  &lt;br /&gt;
&lt;br /&gt;
Forget documentation, I just want to get the code!:  [https://launchpad.net/quantum/+download Neutron Downloads]&lt;br /&gt;
&lt;br /&gt;
Detailed information for programming against v2.0 of the Neutron web services API is available in the [http://docs.openstack.org/api/openstack-network/2.0/content/  Neutron API Guide]  &lt;br /&gt;
&lt;br /&gt;
If you are looking for information on using Neutron with devstack, please see: [[NeutronDevstack]] . &lt;br /&gt;
&lt;br /&gt;
Neutron lets you use a set of different backends called &amp;quot;plugins&amp;quot; that work with a growing variety of networking technologies.  These plugins may be distributed as part of the main Neutron release, or separately.  &lt;br /&gt;
&lt;br /&gt;
The set of plugins included in the main Neutron distribution and supported by the Neutron community include: &lt;br /&gt;
&lt;br /&gt;
* [http://www.openvswitch.org Open vSwitch] Plugin&lt;br /&gt;
* [http://wiki.openstack.org/cisco-quantum  Cisco UCS/Nexus] Plugin&lt;br /&gt;
* [http://wiki.openstack.org/Quantum-Linux-Bridge-Plugin  Linux Bridge] Plugin&lt;br /&gt;
* [http://wiki.openstack.org/Neutron/ML2  Modular Layer 2] Plugin&lt;br /&gt;
* [http://www.nicira.com  Nicira Network Virtualization Platform (NVP)] Plugin&lt;br /&gt;
* [http://www.osrg.net/ryu/using_with_openstack.html  Ryu OpenFlow Controller] Plugin&lt;br /&gt;
* [[Neutron/NEC OpenFlow Plugin|NEC OpenFlow]] Plugin &lt;br /&gt;
* [http://docs.projectfloodlight.org/display/floodlightcontroller/Quantum+REST+Proxy+Plugin  Big Switch Controller Plugin]&lt;br /&gt;
* [http://www.cloudbase.it/quantum-hyper-v-plugin/  Cloudbase Hyper-V] Plugin&lt;br /&gt;
* [http://www.midokura.com  MidoNet] Plugin&lt;br /&gt;
* [https://github.com/brocade/brocade  Brocade Neutron Plugin] Brocade Neutron Plugin&lt;br /&gt;
* [http://www.plumgrid.com/ PLUMgrid] Plugin&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Mellanox-Neutron Mellanox Neutron Plugin] Mellanox Neutron Plugin&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Neutron/EmbraneNeutronPlugin Embrane Neutron Plugin]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/IBM-Neutron IBM SDN-VE] Plugin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional plugins are available from other sources: &lt;br /&gt;
* [http://www.opencontrail.org OpenContrail] Plugin&lt;br /&gt;
* [http://www.extremenetworks.com  Extreme Networks] Plugin&lt;br /&gt;
* [https://github.com/ruijie/rgos_quantum_plugin  Ruijie Networks] Plugin&lt;br /&gt;
* [https://www.juniper.net/support/downloads/?p=qpluginopen#sw Juniper Networks] Neutron Plugin&lt;br /&gt;
If you have your own plugin, feel free to add it to this list.&lt;br /&gt;
&lt;br /&gt;
== Havana Release and ML2 Plugin Update ==&lt;br /&gt;
Starting with Havana release, openvswitch and linuxbridge plugins are deprecated. Modular Layer 2 (ML2) plugin replaces these plugins. &lt;br /&gt;
L2 agents work with ML2 plugin and continue to work with the deprecated monolithic plugins. &lt;br /&gt;
&lt;br /&gt;
ML2 plugin architecture facilitates the type drivers to support multiple networking technologies, and mechanism drivers to facilitate the access to the networking configuration in a transactional model. The details of these drivers is described [https://wiki.openstack.org/wiki/Neutron/ML2#ML2_Drivers here]. Long term goal is to transition all vendor specific plugins to the type and mechanism drivers. &lt;br /&gt;
&lt;br /&gt;
Following [https://wiki.openstack.org/wiki/Neutron/ML2#Type_Drivers Type Drivers] are supported: &lt;br /&gt;
* Flat&lt;br /&gt;
* Local&lt;br /&gt;
* VLAN&lt;br /&gt;
* GRE&lt;br /&gt;
* VxLan&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Following Vendor specific [https://wiki.openstack.org/wiki/Neutron/ML2#Mechanism_Drivers Mechanism Drivers] are supported: &lt;br /&gt;
* [https://wiki.openstack.org/wiki/Arista-neutron-ml2-driver Arista Driver]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Neutron/ML2/MechCiscoNexus Cisco Nexus Driver]&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Neutron/ML2/Tail-f-NCS-neutron-ml2-driver Tail-f NCS Driver]&lt;br /&gt;
&lt;br /&gt;
== Participate ==&lt;br /&gt;
&lt;br /&gt;
To get code, ask questions, view blueprints, etc, see: [https://launchpad.net/quantum/ Neutron Launchpad Page]&lt;br /&gt;
&lt;br /&gt;
See [[NeutronDevelopment]] for some (rough) guides on how to contribute code to Neutron, including how to add your own plugin.  &lt;br /&gt;
&lt;br /&gt;
If you would like to participate, please send mail to the main openstack-dev list:  http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev&lt;br /&gt;
&lt;br /&gt;
You can also attend our regular IRC meetings, which start one hour after the main openstack meeting, on the same #openstack-meeting channel: http://wiki.openstack.org/Network/Meetings&lt;br /&gt;
&lt;br /&gt;
Check out [[NeutronStarterBugs]] for ideas on easy bugs or starter projects you might tackle.  Or just start playing with [[NeutronDevstack]] and come up with your own ideas!&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
=== Neutron/* ===&lt;br /&gt;
{{Special:PrefixIndex/Neutron}}&lt;br /&gt;
&lt;br /&gt;
=== Network/* ===&lt;br /&gt;
{{Special:PrefixIndex/Network}}&lt;/div&gt;</summary>
		<author><name>Dongfeng</name></author>	</entry>

	</feed>