OESS
IntroductionUser DocumentationOperations ManualAdministration
  • /acl.cgi
  • /admin/admin.cgi
  • /admin/maintenance.cgi
  • /circuit.cgi
  • /command.cgi
  • /configuration.cgi
  • /data.cgi
  • /entity.cgi
  • /interface.cgi
  • /measurement.cgi
  • /monitoring.cgi
  • /node.cgi
  • /traceroute.cgi
  • /user.cgi
  • /vrf.cgi
  • /workgroup.cgi
  • /workgroup_manage.cgi

OESS API


OESS | Introduction | OESS API

How to get help

https://globalnoc.iu.edu/sdn/oess.html - The OESS homepage

http://github.com/GlobalNOC/OESS - The latest code, development history, and release tags.

oess-users@globalnoc.iu.edu - The OESS mailing list if you need to discuss something with a human or haven’t been able to answer your question using the above resources.

Request format

Request formatAll services may be called with either GET or POST requests.In the case of a GET request, parameters should be encoded as URLarguments. In the case of a POST request, the parameters should be passed in as application/x-www-form-urlencodeddata. Whichmethod on the service to runis indicated by the special methodparameter.In some methods, aparameter may be list-valued; this is represented by multiple instances of the parameter in the URL or POST data.

Example URL for a GET request calling the get_circuit_history method:

https://<hostname>/oess/services/data.cgi?method=get_circuit_history&circuit_id=999

Response format

Allmethods return JSON-formatted data; the top-level item is an object.Mostmethods use the following convention(with the method inmeasurement.cgi being a notable exception):

If an error occurs, the error field of the top-level object will be set, and there may be explanatory text in the error_text field; If the method’s operation was successful,any results will be put in the resultsfield. In the example responses in this document, there are a number of // C++-style commentsshown; these are not actually part of the returned response, but serve to help explain the meaning of fields in the returned object.

Example of aresponse for asuccessful operation:

{
  "results": [ // arrayof users’ information
    {
      "email_address": "johndoe@grnoc.iu.edu",
      "user_id":"5111"// numeric OESS userID
    },
    {
      "email_address": "janedoe@grnoc.iu.edu",
      "user_id":"5122"
    },
    ...
  ]
}

Example of an error response:

{
  "error_text": "get_existing_circuits: required input parameter workgroup_id is missing",
  "error":1,
  "results":null
}

OESS concepts and data types

Users

An OESS user is an entity that performs operationsin the OESS system. A user has a unique numeric user ID. Zero or more usernames, as used to authenticate to the web server (see “Authentication” below), are mapped to an OESS user; no username may map to more than one OESS user.

Workgroups

Every OESS user should be a member of at least one workgroup; It’s possible for a user to be a member of multiple workgroups. Many operations (e.g., creating a circuit) are performed in the context of a single workgroup, so a particular workgroup must be specified for the operation. Once auser has logged in totheOESSapplication,they are asked to select a workgroup to work under;people using the API will generally need to do something similar, either in a configuration file or as a run-time argument.Each workgroup may own zero or more endpoint interfaces on the network; no interface is owned by more than one workgroup.

A workgroup has a name (a string; unique within an OESS instance) and an ID (a unique integer).The workgroup IDis used in numerousmethodsand allows OESS to determine which pieces of data the user is allowed to seeand which operations the user may perform.

A workgroup also has a type, whichis one of normal(the vast majority of workgroups in a typical OESS instance), admin(usually only one workgroup), or demo(usuallyzero or one workgroup). A workgroup’s typeis relatedto the operations that may be performed using that workgroup; for more details, see “Allowedoperations” below.

Nodes

Nodesare switching elements on the network. Each has a unique name (a string) and a unique integer ID; one or the other is used to specify a node, depending on the method in question.

A node may be configured to be used with OpenFlow, with MPLS (typically controlled using NETCONF), or both.

Interfaces

Interfacesare network interfaces on nodes. Each has a name (possibly duplicated on other nodes, but unique for its associated node; a string) and an integer ID (unique in the OESS instance). Depending on the method, an interface may be specified by its ID or by a (node name, interface name) pair.A trunk interfaceis an interface that is an endpoint of alink (see next); an endpoint interfaceis an interface that is not a trunk interface, and marks the boundary of the OESS-managed network (typically, an end system or a different network is on the other side of the boundary).An interface may be owned by a (single)workgroup; except for a few exceptional cases, trunk interfaces do not need to be owned by a workgroup.An interface is OpenFlow-based,MPLS-based, or both. If the same (on-node) interface is accessible from both OpenFlow and MPLS, it mayshow up in OESS as two interfaces, depending on the details of the node’s interface naming scheme and OpenFlow/MPLS implementations.

An interface has an associated list of ACL entries, which the owning workgroupof an interfaceuseto allow or denyworkgroups (including itself!) the right to terminate circuits at a certain range of VLAN tags on the interface.See the add_aclmethod of workgroup_manage.cgi for more details.

Links

Links are connections between nodes; they connect interfaces on different nodes, and are auto-discovered by OESS (though require confirmation by the administrators to be used). Each hasa unique name (a string) and a unique integer ID.Links are OpenFlow-basedMPLS-based, or both.

Circuits

Circuits are what most users are ultimately concerned with. A circuit consists of a number of endpoints, specified by (interface, VLAN tag) pairs (thespecial VLAN tag value ‒1 refers to untagged frames), and some paths, each a set of links over which circuit traffic will travel: a primary path (optional for MPLS-based circuits) and an (optional) secondary path for link-level resiliency.(Behind the scenes, MPLS-based circuits also have a tertiary path, which is used if the primary and secondary paths (if specified) are unusable.)A circuit has a unique name (a string) and a unique integer ID. It can also be assigned an external identifier, which is usedby OESS to store circuit identifiers used by OSCARS and NSI agents.Acircuit is either OpenFlow-based or MPLS-based–never both.

Numbers

Numbers are sometimes represented in response fields as strings: comments will generally refer to the value in question being numeric.BooleansBoolean values are represented in method parametersand response fieldsas 0 (false) or 1 (true).In responses, these may be the strings “0” and “1”, instead of the numbers 0 and 1.

Enumerations

Some method parameters and outputfields may only havea limited number of values. This is represented in the parameter/field description using set notation. For example,if a parameter may only have the value “a”, “b”, or “lemon”, its listed value type will be {a,b,lemon}.

MAC Addresses

MAC addresses may be specified in the form 01:02:03:04:0A:0b or in the form 01-02-03-04-0A-0b where capitalization doesn’t matter, but field separator (: or -) must be consistent in a given address.

Authentication

OESS relies upon the hosting web server for authentication and application-wide authorization (i.e., whether or not someone is allowed to access OESS at all). The default Apachesetup protects OESS using HTTP Basic authentication, backed by an .htpasswd file. However, an instance may use a different authentication mechanism,as configured onthe web server. You should contact the administrator of the system to determine which type of authentication should be used for programmatic access. For instance, currently theservices for theAL2S instance of OESS may be accessed from an endpoint using Shibbolethbrowser-centricauthentication(for human use of the OESS frontendwith federated login)or from an endpoint using HTTP Basic authentication(for easy programmatic use).

As mentioned in “Users” above, zero or more web-server-level usernames are mapped onto a single OESS user; the possibility of the same principal needing to use different kinds of authentication in different contexts is a driver of this layer of indirection.

OESS

  • OESS
  • oess-users@globalnoc.iu.edu
  • GlobalNOC
  • iuglobalnoc

The Network Development and Deployment Initiative (NDDI), a partnership between Internet2, Indiana University and others was formed to create a new network platform and complementary software, which together will support global scientific research in a revolutionary new way. The Open Exchange Software Suite (OESS) is the first software product to emerge from this partnership.