VxLAN

Workflows

Workflow: Creating a VxLAN L2 Gateway

Prerequisites

  • The CSR route is deployed and up.
  • L3 interfaces facing the IP core are configured and up.

Workflow

1.blank.gif Configure Multicast bi-directional PIM. The step must be done after the L3 interfaces facing the IP core have been created.

Requirement : Multicast RP must already be configured somewhere in the network.

Use the Multicast PIM API to enable multicast PIM globally and on the L3 interfaces facing the IP core.

PUT /api/v1/mcast/pim

See Multicast Bi-Directional PIM.

2.blank.gif Create and enable the source interface for VxLAN. This step must be done before creating VxLAN.

a.blank.gif Use the Interface API to create Loopback interface with IP address/subnet mask. This is the source interface for VxLAN.

POST /api/v1/interfaces

See Create an Interface.

b.blank.gif Use the Interface State API to enable the interface.

PUT /api/v1/interfaces/{if-id}/state

See Interface State.

3.blank.gif Create and enable a VxLAN.

Requirement : The source interface must have been created before this step (see following step).

Use the VxLAN API to create VxLAN with list VNI members (and corresponding multicast-groups).

POST /api/v1/vxlan

See Create a VxLAN.

4.blank.gif Configure routing for reaching peer VxLAN VTEPs.

Use a Routing API (Static, OSPF, BGP, and so on) to create routing so that peer VxLAN VTEPs can be reached.

See Routing Protocol (OSPF, BGP, EIGRP) Requirements.

5.blank.gif For a VxLAN L2 GW, create and enable L2 interfaces.

Use the L2 Interface API to create all L2 interfaces (with Service Instances, VLAN tags).

POST /api/v1/l2interfaces

See Create an L2 Interface.

6.blank.gif Create and enable bridge domains.

Use the Bridge Domain API to create all bridge domains with unique VNIs.

POST /api/v1/ bridge-domain

See Create a Bridge Domain.

Workflow: Creating a VxLAN L3 Gateway

Prerequisites

  • The CSR route is deployed and up.
  • L3 interfaces facing the IP core are configured and up.

Workflow

1.blank.gif Configure Multicast bi-directional PIM. The step must be done after the L3 interfaces facing the IP core have been created.

Use the Multicast PIM API to enable multicast PIM globally and on the L3 interfaces facing the IP core.

PUT /api/v1/mcast/pim

See Multicast Bi-Directional PIM.

2.blank.gif Create and enable the source interface for VxLAN. This step must be done before creating VxLAN.

a.blank.gif Use the Interface API to create Loopback interface with IP address/subnet mask. This is the source interface for VxLAN.

POST /api/v1/interfaces

See Create an Interface.

b.blank.gif Use the Interface State API to enable the interface.

PUT /api/v1/interfaces/{if-id}/state

See Interface State.

3.blank.gif Create and enable a VxLAN.

Use the VxLAN API to create VxLAN with list VNI members (and corresponding multicast-groups).

POST /api/v1/vxlan

See Create a VxLAN.

4.blank.gif Configure routing for reaching peer VxLAN VTEPs.

Use a Routing API (Static, OSPF, BGP, and so on) to create routing so that peer VxLAN VTEPs can be reached.

See Routing Protocol (OSPF, BGP, EIGRP) Requirements.

5.blank.gif Create bridge domains corresponding to the BDI to be configured.

Use Bridge Domain API to create all bridge domains with unique VNI

POST /api/v1/bridge-domain

See Create a Bridge Domain.

6.blank.gif For a VxLAN L3 GW, create and enable BDI interfaces.

a.blank.gif Use the Interface API to create BDI interfaces with IP address/subnet mask.

POST /api/v1/interfaces

See Create an Interface.

b.blank.gif Use the Interface State API to enable BDI interfaces.

PUT /api/v1/interfaces/{if-id}/state

See Interface State.

Resource Summary for VxLAN

HTTP Method
Resource
URL (BaseURL)
GET
POST
PUT
DELETE

VxLAN

/api/v1/vxlan

Y

Y

N

N

/api/v1/vxlan/{if-id}

Y

N

Y

Y

/api/v1/vxlan/{if-id}/state

Y

N

Y

N

VxLAN

History

 

Release
Modification

IOS XE 3.13

Introduced for the CSR1000V platform

IOS XE 3.14

Introduced for ASR1001-X and ASR1002-X platforms

Properties: VxLAN Schema

Property
Type
Required for POST and PUT
Description

kind

string

Not Applicable

Object type

vxlan-if-id

number

Mandatory

Name of the source interface acting as VTEP. The source interface must be a loopback interface.

Format: loopback<num>

Note : The source interface must have been configured before configuring VxLAN on the device.

vxlan-udp-port

number

Optional

UDP port number for VxLAN tunneling. If this property is not present, the default port number (8472) will be used.

member-list

array

Optional

List of virtual network identifiers (VNIs)

vni-start

number

Mandatory

(sub-property of member-list)

VNI number

Range: 4096 to 16777215

vni-end

number

Optional

(sub-property of member-list)

VNI number

Range: 4096 to 16777215

mcast-grp-ip-start

string

Mandatory

(sub-property of member-list)

Starting Multicast group IP address

Format: A.B.C.D (IPv4 only)

mcast-grp-ip-end

string

Optional

(sub-property of member-list)

Ending Multicast group IP address

Format: A. B. C. D (IPv4 only)

enabled

boolean

Optional

"true": Bring up the interface

If this property is not present, the default behavior is to enable.

JSON Representation: VxLAN Schema

{
"kind": "object#vxlan-nve",
"vxlan-if-id": 1,
"src-if-name": "{string}",
"vxlan-udp-port": {number},
"member-list":
[
{
"vni-start": {number},
"vni-end": {number}
"mcast-grp-ip-start": "{ipadress}",
"mcast-grp-ip-end": "{ipaddress}",
},
],
"enabled", {boolean}
}
 

Properties: VxLAN State Schema

Property
Type
Required for POST and PUT
Description

kind

string

Not Applicable

Object type

vxlan-if-id

number

Mandatory

Value must be 1

enabled

boolean

Mandatory

"true": Bring up the VxLAN

"false": Bring down the VxLAN

JSON Representation: VxLAN Schema

{
"kind": "object#vxlan-state
"vxlan-if-id": {number},
"enabled": {boolean}
}
 

 

Create a VxLAN

Resource URI

Verb
URI

POST

/api/v1/vxlan

Example

JSON Request

POST /api/v1/vxlan
Content-Type: application/json
Accept: application/json
 
{
"vxlan-if-id": 1,
"src-if-name": "loopback10",
"member-list":
[
{
"vni-start": 5001,
"mcast-grp-ip-start": "225.1.1.1",
"mcast-grp-ip-end": "225.1.1.4"
 
},
{
"vni-start": 5020,
"vni-end": 5026
"mcast-grp-ip-start": "225.1.2.1",
},
]
}
 

JSON Response

201 Created
Location: https://host/api/v1/vxlan/1
 

Retrieve All VxLANs

note.gif

Noteblank.gif In the current release, one VxLAN is supported per platform.


Resource URI

Verb
URI

GET

/api/v1/vxlan

Example

JSON Request

GET /api/v1/vxlan
Accept: application/json
 

JSON Response

200 ok
Content-Type: application/json
 
{
"kind": "collection#vxlan"
"items":
[
{
"vxlan-if-id": 1,
"src-if-name": "loopback10",
"member-list":
[
{
"vni-start": 5001,
"mcast-grp-ip-start": "225.1.1.1",
},
{
"vni-start": 5020,
"vni-end": 5024,
"mcast-grp-ip": "225.1.2.0",
"mcast-grp-ip": "225.1.2.4"
},
]
}
],
"enabled": true
}
 

Modify a VxLAN

Resource URI

Verb
URI

PUT

/api/v1/vxlan/{id}

Example

JSON Request

PUT /api/v1/vxlan/1
Content-Type: application/json
Accept: application/json
 
{
"vxlan-if-id": 1,
"src-if-name": "loopback10",
"member-list":
[
{
"vni-start": 5001,
"mcast-grp-ip-start": "225.1.1.1",
},
{
"vni-start": 5002,
"mcast-grp-ip": "225.1.1.2",
},
]
}
 

JSON Response

204 No Content
 

Retrieve a VxLAN

Resource URI

Verb
URI

GET

/api/v1/vxlan/{id}

Example

JSON Request

GET /api/v1/vxlan/1
Accept: application/json
 

JSON Response

200 ok
Content-Type: application/json
 
{
"kind": "object#vxlan"
"vxlan-if-id": 1,
"src-if-name": "loopback10",
"member-list":
[
{
"vni-start": 5001,
"mcast-grp-ip-start": "225.1.1.1",
},
{
"vni-start": 5002,
"mcast-grp-ip-start": "225.1.1.2",
},
],
"enabled": true
}
 

Delete a VxLAN

Resource URI

Verb
URI

DELETE

/api/v1/vxlan/{id}

Example

JSON Request

DELETE /api/v1/vxlan/1
 

JSON Response

204 No Content
 

Modify a VxLAN State

Resource URI

Verb
URI

PUT

/api/v1/vxlan/{if-id}/state

Example

JSON Request

PUT /api/v1/vxlan/1/state
Content-Type: application/json
Accept: application/json
 
{
"vxlan-if-id": 1,
"enabled": true
}
 

JSON Response

204 No Content
 

Retrieve a VxLAN State

Resource URI

Verb
URI

GET

/api/v1/vxlan/{if-id}/state

Example

JSON Request

GET /api/v1/vxlan/1/state
Accept: application/json
 

JSON Response

200 OK
 
Content-Type: application/json
Accept: application/json
 
{
"kind": "object#vxlan-state"
"vxlan-if-id": 1,
"enabled": true
}