All rights reserved. No part of this publication may be reproduced, distributed, or transmitted in any form or by any means, including photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the publisher, except in the case of brief quotations embodied in critical reviews and certain other noncommercial uses permitted by copyright law. For permission requests, write to the publisher, addressed “Attention: Permissions Coordinator,” at the address below.
This specification defines the FIWARE-Netfloc GE API. The APIs expose the network filtered per tenant. This includes retrieval of network graph, interfaces and network path - all filtered per tenant. It also includes APIs to define network flow patterns and perform CRUD operations on such flow pattenrs over the network paths.
This is a work in progress and is changing on a daily bases. This specification is licensed under the FIWARE Open Specification License.
Netfloc application API.
Headers
Content-Type: application/json
Body
{
"status": "Network Graphs retrieved",
"data": [
{
"linkPorts": [],
"internalPorts": [],
"hostPorts": []
}
]
}
Headers
Content-Type: application/json
Body
{
"status": "filtered Network Graph retrieved",
"data": [
{
"externalPorts": [
{ "link": ??? }
],
"internalPorts": [],
"hostPorts": [
{ "tenant": tenant }
]
}
]
}
Headers
Content-Type: application/json
Body
{
"status": "tenant list retrieved",
"data": [
"tenant1", "tenant2", "tenant3"
]
}
Headers
Content-Type: application/json
Body
{
"status": "all host ports retrieved",
"data": [
{
"ofPort": 1,
"tenant": "tenant1",
"l2Address": "ff:ff:ff:ff:ff:ff",
"l3Addresses": [
"192.168.0.1"
]
}
]
}
Headers
Content-Type: application/json
Body
{ "status": "Network path retrieved",
"data": {
"flowPatterns" [],
"path" :[
{
"srcHostPort": {
"ofPort": 1,
"tenant": "tenant1",
"l2Address": "00:00:00:00:00:01",
"l3Addresses": [
"192.168.0.1"
]
},
"nextLinkPort": {
"ofPort": 3
}
},
{
"previousLinkPort": {
"ofPort": 1
},
"nextLinkPort": {
"ofPort": 3
}
},
{
"previousLinkPort": {
"ofPort": 3
},
"dstHostPort": {
"ofPort": 1,
"tenant": "tenant1",
"l2Address": "00:00:00:00:00:02",
"l3Addresses": [
"192.168.0.2"
]
}
}
]
}
}
Headers
Content-Type: application/json
Body
{
"status": "flow pattern retrieved",
"data": [
{
"srcBridge": [
{
"match": {
"in_port": "srcHostPort",
"hw_src": "srcMAC",
"hw_dst": "dstMAC"
},
"actions": {
"output": "nextLinkPort"
}
}
],
"linkBridge": [
{
"match": {
"hw_dst": "dstMAC"
},
"actions": {
"output": "nextLinkPort"
}
}
],
"dstBridge": [
{
"match": {
"hw_dst": "dstMAC"
},
"actions": {
"output": "dstHostPort"
}
}
]
}
]
}
Headers
Content-Type: application/json
Body
{
"srcBridge": [
{
"match": {
"in_port": "srcHostPort",
"hw_src": "srcMAC",
"hw_dst": "dstMAC"
},
"actions": {
"output": "nextLinkPort"
}
}
],
"linkBridge": [
{
"match": {
"hw_dst": "dstMAC"
},
"actions": {
"output": "nextLinkPort"
}
}
],
"dstBridge": [
{
"match": {
"hw_dst": "dstMAC"
},
"actions": {
"output": "dstHostPort"
}
}
]
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern created",
"id": 2
}
Headers
Content-Type: application/json
Body
{
"status": "request malformed"
}
Headers
Content-Type: application/json
Body
{
"status": "flow pattern retrieved"
"data": {
"srcBridge": [
{
"match": {
"in_port": "srcHostPort",
"hw_src": "srcMAC",
"hw_dst": "dstMAC"
},
"actions": {
"output": "nextLinkPort"
}
}
],
"linkBridge": [
{
"match": {
"hw_dst": "dstMAC"
},
"actions": {
"output": "nextLinkPort"
}
}
],
"dstBridge": [
{
"match": {
"hw_dst": "dstMAC"
},
"actions": {
"output": "dstHostPort"
}
}
]
}
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern does not exist"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern is deleted permanently"
}
Headers
Content-Type: application/json
Body
{
"srcBridge": [
{
"match": {
"in_port": "srcHostPort",
"hw_src": "srcMAC",
"hw_dst": "dstMAC"
},
"actions": {
"output": "nextLinkPort"
}
}
],
"linkBridge": [
{
"match": {
"hw_dst": "dstMAC"
},
"actions": {
"output": "nextLinkPort"
}
}
],
"dstBridge": [
{
"match": {
"hw_dst": "dstMAC"
},
"actions": {
"output": "dstHostPort"
}
}
]
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern updated"
}
Headers
Content-Type: application/json
Body
{
"status": "request malformed"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern does not exist"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern has been deleted permanently"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern is deleted successfully"
}
Headers
Content-Type: application/json
Body
{
"status": "transaction condition not met, flowPattern is installed on networkPath(s)",
"data": {
"networkPaths": [
]
}
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern does not exist"
}
Headers
Content-Type: application/json
Body
{
"status": "request malformed"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern is posted onto networkPath"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern does not exist"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern has been deleted permanently"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern is not allready installed"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern successfully deleted from network path"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern not found on network path"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern does not exist"
}
Headers
Content-Type: application/json
Body
{
"status": "flowPattern allready deleted on network path"
}