NetReady User Guide¶
OPNFV NetReady User Guide¶
Gluon Description¶
Gluon brings a Networking Service Framework that enables Telecom Service Providers to provide their customers with networking services on-demand. Gluon uses a model-driven approach to generate Networking Service APIs (including objects, database schema, and RESTful API endpoints) from a YAML file which models the Networking Service. When a Telecom Service Provider needs to launch a new Networking Service, it only needs to model the new service in a YAML file. The Gluon framework generates the APIs accordingly. Thus Gluon helps Telecom Service Providers accelerate the time-to-market and achieve business agility through its extensibility and scalability in generating APIs for new use-cases and services.
Gluon Capabilities and Usage¶
Gluon is the port arbiter that maintains a list of ports and bindings of different networking backends. A Proton is a set of APIs of a particular NFV Networking Service. A Proton Server is the API server that hosts multiple Protons, i.e. multiple sets of APIs. Gluon uses backend drivers to interact with the Proton Server for port binding and other operations.
A Proton is created by a Particle Generator based on a YAML file modeled for this particular NFV Networking Service. When a Proton is created, the objects, database schema, and RESTful APIs of this Proton are created. Then the Proton specific driver would be loaded into Gluon.
When the Proton Server receives port binding and other operation requests,
it broadcasts those requests to etcd
. The Shim Layers of respective
SDN Controllers listen to etcd
, and get the notification from etcd
.
Based on the type of operations, parameter data, and its own deployment and
policy configuration, SDN Controllers act upon accordingly. This mechanism is
similar to Neutron’s Hierarchical Port Binding (HPB), and provides the
flexibility and scalability when a port operation needs to be supported by
multiple SDN Controllers in collaborative and interoperable way.
Gluon API Guidelines and Examples¶
This section shows you how to use Proton to create the needed objects, and
then use nova boot
to bind the port to a VM. It is assumed that you have
already installed Gluon package, including etcd
and Gluon Plugin, and
started Proton Server. If not, please refer to the Installation guide.
Getting Help¶
Just typing the protonclient --help
command gives you general help
information:
$ protonclient --help
Usage: protonclient --api <api_name> [OPTIONS] COMMAND[ARGS]...
Options:
--api TEXT Name of API, one of ['net-l3vpn', 'test']
--port INTEGER Port of endpoint (OS_PROTON_PORT)
--host TEXT Host of endpoint (OS_PROTON_HOST)
--help Show this message and exit.
Mandatory Parameters¶
--api <api_name>
is a mandatory parameter. For example, --api net-l3vpn
.
Just typing the protonclient
command shows you that those mandatory
parameters are required, and gives you general help information too.
$ protonclient
--api is not specified!
Usage: protonclient --api <api_name> [OPTIONS] COMMAND[ARGS]...
Options:
--api TEXT Name of API, one of ['net-l3vpn', 'test']
--port INTEGER Port of endpoint (OS_PROTON_PORT)
--host TEXT Host of endpoint (OS_PROTON_HOST)
--help Show this message and exit.
Using L3VPN Proton¶
NOTE that there is a KNOWN BUG in the Usage message where the mandatory
parameters --api net-l3vpn
are missing.
$ protonclient --api net-l3vpn
Usage: protonclient [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
interface-create
interface-delete
interface-list
interface-show
interface-update
port-create
port-delete
port-list
port-show
port-update
vpn-create
vpn-delete
vpn-list
vpn-show
vpn-update
vpnafconfig-create
vpnafconfig-delete
vpnafconfig-list
vpnafconfig-show
vpnafconfig-update
vpnbinding-create
vpnbinding-delete
vpnbinding-list
vpnbinding-show
vpnbinding-update
The following sections give you the general work flow of how to use Proton to create and configure an L3VPN.
For more details and examples, please refer to the Gluon upstream user guide.
Work Flow of Using L3VPN¶
The work flow of using L3VPN includes:
- Step 1: Create ``Port`` Object
$ protonclient --api net-l3vpn port-create --help
$ protonclient --api net-l3vpn port-create [ARGS] ...
Please NOTE: a default interface
object is automatically created too
when a Port
is created, and this default interface
object is attached
to this Port
object. The UUID of this default Interface
object
will be the same as the UUID of the parent Port
object.
- Step 2 (Optional): Create ``Interface`` Object
$ protonclient --api net-l3vpn interface-create --help
$ protonclient --api net-l3vpn interface-create [ARGS] ...
Please NOTE: This step is optional because a default Interface
object
was already automatically created when a Port
object was created at
Step 1.
- For example: list the default ``Interface`` Object:
$ protonclient --api net-l3vpn interface-list
- Step 3 (Optional): Create ``VPNAFConfig`` Object
$ protonclient --api net-l3vpn vpnafconfig-create --help
$ protonclient --api net-l3vpn vpnafconfig-create [ARGS] ...
Please NOTE: This step is optional because all parameters needed for an
L3VPN (route specifiers) are also present in creating a VPN
service object
at Step 4. This part of the API needs to be aligned in the future.
- Step 4: Create ``VPN`` Object
$ protonclient --api net-l3vpn vpn-create --help
$ protonclient --api net-l3vpn vpn-create [ARGS] ...
At this point you have a Port
object, default Interface
object and a
VPN
service object created.
- View
VPN
andPort
Objects
You can view the values with the following commands:
$ protonclient --api net-l3vpn vpn-list
$ protonclient --api net-l3vpn port-list
- Step 5: Create ``VPNBinding`` Object
You need to create a VPNBinding
object to tie the Interface
and the
Service
together in order to achieve service binding.
$ protonclient --api net-l3vpn vpnbinding-create --help
$ protonclient --api net-l3vpn vpnbinding-create [ARGS] ...
* View ``VPNBinding`` Objects
$ protonclient --api net-l3vpn vpnbinding-list
At this point you have had all of the information needed for an L3VPN Port in Proton.
- Step 6: Create VM and Bind our L3VPN Port
$ nova --debug boot --flavor 1 --image cirros --nic port-id=<port-id> <VM-Name>
To Use Gluon in a Project¶
import gluon