l4plugin

package
v1.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2018 License: Apache-2.0 Imports: 11 Imported by: 0

README

L4 plugin

The l4plugin is a Core Agent Plugin that is designed to configure VPP application namespaces. Configuration managed by this plugin is modelled by the proto file. The configuration must be stored in etcd using the following key:

/vnf-agent/<agent-label>/vpp/config/v1/l4/namespaces/<namespaceID>

/vnf-agent/<agent-label>/vpp/config/v1/l4/features/feature

An example of configuration in json format can be found here.

Note: the l4 features need to be enabled on the VPP. To do so, use second json configuration file which can be found here here

To insert config into etcd in json format vpp-agent-ctl can be used. We assume that we want to configure vpp with label vpp1 and config is stored in the app-ns.json file. At first, enable L4 features, then configure the application namespace.

vpp-agent-ctl -put "/vnf-agent/vpp1/vpp/config/v1/l4/features/feature" json/enable-l4.json
vpp-agent-ctl -put "/vnf-agent/vpp1/vpp/config/v1/l4/namespaces/ns1" json/app-ns.json

The vpp-agent-ctl contains a simple predefined application namespace config also. It can be used for testing purposes. To enable l4 features, run:

vpp-agent-ctl -el4

To disable it:

vpp-agent-ctl -dl4

To configure application namespace:

vpp-agent-ctl -appns

Note: application namespaces cannot be removed. Currently it is not supported by the VPP.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type L4Configurator

type L4Configurator struct {
	Log logging.Logger

	ServiceLabel servicelabel.ReaderAPI
	GoVppmux     govppmux.API

	// Indexes
	SwIfIndexes  ifaceidx.SwIfIndex
	AppNsIndexes nsidx.AppNsIndexRW

	AppNsCached nsidx.AppNsIndexRW // the mapping stores not-configurable app namespaces with metadata
	AppNsIdxSeq uint32             // used only for AppNsCached; incremented after every registration

	// timer used to measure and store time
	Stopwatch *measure.Stopwatch
	// contains filtered or unexported fields
}

L4Configurator runs in the background in its own goroutine where it watches for any changes in the configuration of interfaces as modelled by the proto file "../model/l4/l4.proto" and stored in ETCD under the keys "/vnf-agent/{vnf-agent}/vpp/config/v1/l4/l4ftEnabled" and "/vnf-agent/{vnf-agent}/vpp/config/v1/l4/namespaces/{namespace_id}". Updates received from the northbound API are compared with the VPP run-time configuration and differences are applied through the VPP binary API.

func (*L4Configurator) Close

func (plugin *L4Configurator) Close() error

Close members, channels

func (*L4Configurator) ConfigureAppNamespace

func (plugin *L4Configurator) ConfigureAppNamespace(ns *l4.AppNamespaces_AppNamespace) error

ConfigureAppNamespace process the NB AppNamespace config and propagates it to bin api calls

func (*L4Configurator) ConfigureL4FeatureFlag

func (plugin *L4Configurator) ConfigureL4FeatureFlag(features *l4.L4Features) error

ConfigureL4FeatureFlag process the NB Features config and propagates it to bin api calls

func (*L4Configurator) DeleteAppNamespace

func (plugin *L4Configurator) DeleteAppNamespace(ns *l4.AppNamespaces_AppNamespace) error

DeleteAppNamespace process the NB AppNamespace config and propagates it to bin api calls. This case is not currently supported by VPP

func (*L4Configurator) DeleteL4FeatureFlag

func (plugin *L4Configurator) DeleteL4FeatureFlag() error

DeleteL4FeatureFlag process the NB Features config and propagates it to bin api calls

func (*L4Configurator) Init

func (plugin *L4Configurator) Init() (err error)

Init members (channels...) and start go routines

func (*L4Configurator) ModifyAppNamespace

func (plugin *L4Configurator) ModifyAppNamespace(newNs *l4.AppNamespaces_AppNamespace, oldNs *l4.AppNamespaces_AppNamespace) error

ModifyAppNamespace process the NB AppNamespace config and propagates it to bin api calls

func (*L4Configurator) ResolveCreatedInterface

func (plugin *L4Configurator) ResolveCreatedInterface(interfaceName string, interfaceIndex uint32) error

ResolveCreatedInterface looks for application namespace this interface is assigned to and configures them

func (*L4Configurator) ResolveDeletedInterface

func (plugin *L4Configurator) ResolveDeletedInterface(interfaceName string, interfaceIndex uint32) error

ResolveDeletedInterface looks for application namespace this interface is assigned to and removes

func (*L4Configurator) ResyncAppNs

func (plugin *L4Configurator) ResyncAppNs(appNamespaces []*l4.AppNamespaces_AppNamespace) error

ResyncAppNs configures app namespaces to the empty VPP

func (*L4Configurator) ResyncFeatures

func (plugin *L4Configurator) ResyncFeatures(l4Features *l4.L4Features) error

ResyncFeatures sets initital L4Features flag

Directories

Path Synopsis
Package nsidx implements name-to-index mapping registry and cache for app namespaces
Package nsidx implements name-to-index mapping registry and cache for app namespaces

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL