defaultplugins

package
v1.0.8 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2017 License: Apache-2.0 Imports: 34 Imported by: 0

README

Default plugins

Default plugins manage basic configuration of VPP. The management of configuration is split among multiple packages. Detailed description can be found in particular READMEs:

Config file

The default plugins can use configuration file defaultplugins.conf to:

  • set global maximum transmission unit
  • enable/disable stopwatch
  • set VPP resync strategy

To run the vpp-agent with defaultplugins.conf:

vpp-agent --defaultplugins-config=/opt/vpp-agent/dev/defaultplugins.conf

MTU

MTU is used in interface plugin. The value is preferred before global setting which is set to 9000 bytes. Mtu is written in config as follows:

mtu: <value>

Stopwatch

Duration of VPP binary api call during resync can be measured using stopwatch. These data are then logged after every partial resync (interfaces, bridge domains, fib entries etc.). Enable stopwatch in defaultplugins.conf:

stopwatch: true or stopwatch: false

Stopwatch is disabled by default (if there is no config available).

Resync Strategy

There are several strategies available for VPP resync:

  • full always performs the full resync of all VPP plugins. This is the default strategy if none is set.
  • optimize-cold-start evaluates the existing configuration in the VPP at first. The state of interfaces is the decision-maker: if there is any interface configured except local0, the resync is performed normally. Otherwise it is skipped. Use it carefully because this strategy does not take into consideration the state of the etcd.

Strategy can be set in defaultplugins.conf:

strategy: full or strategy: optimize

To skip resync completely, start vpp-agent with --skip-vpp-resync parameter. In such a case the resync is skipped (config file resync strategy is not taken into account).

Documentation

Overview

Package defaultplugins is the parent package for all "default" VPP-related plugins.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API added in v1.0.8

type API interface {

	// DisableResync for one or more VPP plugins. Use in Init() phase.
	DisableResync(keyPrefix ...string)

	// GetSwIfIndexes gives access to mapping of logical names (used in ETCD configuration) to sw_if_index.
	// This mapping is helpful if other plugins need to configure VPP by the Binary API that uses sw_if_index input.
	//
	// Example of is_sw_index lookup by logical name of the port "vswitch_ingres" of the network interface:
	//
	//   func Init() error {
	//      swIfIndexes := defaultplugins.GetSwIfIndexes()
	//      swIfIndexes.LookupByName("vswitch_ingres")
	//
	GetSwIfIndexes() ifaceidx.SwIfIndex

	// GetBfdSessionIndexes gives access to mapping of logical names (used in ETCD configuration) to bfd_session_indexes.
	// The mapping consists of the interface (its name), generated index and the BFDSessionMeta with an authentication key
	// used for the particular session.
	GetBfdSessionIndexes() idxvpp.NameToIdx

	// GetBfdAuthKeyIndexes gives access to mapping of logical names (used in ETCD configuration) to bfd_auth_keys.
	// The authentication key has its own unique ID - the value is as a string stored in the mapping. Unique index is generated
	// uint32 number.
	GetBfdAuthKeyIndexes() idxvpp.NameToIdx

	// GetBfdEchoFunctionIndexes gives access to mapping of logical names (used in ETCD configuration) to bfd_echo_function
	// The echo function uses the interface name as an unique ID - this value is as a string stored in the mapping. The index
	// is generated uint32 number.
	GetBfdEchoFunctionIndexes() idxvpp.NameToIdx

	// GetBDIndexes gives access to mapping of logical names (used in ETCD configuration) as bd_indexes. The mapping consists
	// from the unique Bridge domain name and the bridge domain ID.
	GetBDIndexes() bdidx.BDIndex

	// GetFIBIndexes gives access to mapping of logical names (used in ETCD configuration) as fib_indexes. The FIB's physical
	// address is the name in the mapping. The key is generated. The FIB mapping also contains a metadata, FIBMeta with various
	// info about the Interface/Bridge domain where this fib belongs to:
	// - InterfaceName
	// - Bridge domain name
	// - BVI (bool flag for interface)
	// - Static config
	GetFIBIndexes() idxvpp.NameToIdx

	// GetXConnectIndexes gives access to mapping of logical names (used in ETCD configuration) as xc_indexes. The mapping
	// uses the name and the index of receive interface (the one all packets are received on). XConnectMeta is a container
	// for the transmit interface name.
	GetXConnectIndexes() idxvpp.NameToIdx
}

API of VPP Plugin

type DPConfig added in v1.0.5

type DPConfig struct {
	Mtu       uint32 `json:"mtu"`
	Stopwatch bool   `json:"stopwatch"`
	Strategy  string `json:"strategy"`
}

DPConfig holds the defaultpluigns configuration.

type DataResyncReq

type DataResyncReq struct {
	// ACLs is a list af all access lists that are expected to be in VPP after RESYNC.
	ACLs []*acl.AccessLists_Acl
	// Interfaces is a list af all interfaces that are expected to be in VPP after RESYNC.
	Interfaces []*interfaces.Interfaces_Interface
	// SingleHopBFDSession is a list af all BFD sessions that are expected to be in VPP after RESYNC.
	SingleHopBFDSession []*bfd.SingleHopBFD_Session
	// SingleHopBFDKey is a list af all BFD authentication keys that are expected to be in VPP after RESYNC.
	SingleHopBFDKey []*bfd.SingleHopBFD_Key
	// SingleHopBFDEcho is a list af all BFD echo functions that are expected to be in VPP after RESYNC.
	SingleHopBFDEcho []*bfd.SingleHopBFD_EchoFunction
	// BridgeDomains is a list af all BDs that are expected to be in VPP after RESYNC.
	BridgeDomains []*l2.BridgeDomains_BridgeDomain
	// FibTableEntries is a list af all FIBs that are expected to be in VPP after RESYNC.
	FibTableEntries []*l2.FibTableEntries_FibTableEntry
	// XConnects is a list af all XCons that are expected to be in VPP after RESYNC.
	XConnects []*l2.XConnectPairs_XConnectPair
	// StaticRoutes is a list af all Static Routes that are expected to be in VPP after RESYNC.
	StaticRoutes []*l3.StaticRoutes_Route
	// ArpEntries is a list af all ARP entries that are expected to be in VPP after RESYNC.
	ArpEntries []*l3.ArpTable_ArpTableEntry
	// L4Features is a bool flag that is expected to be set in VPP after RESYNC.
	L4Features *l4.L4Features
	// AppNamespaces is a list af all App Namespaces that are expected to be in VPP after RESYNC.
	AppNamespaces []*l4.AppNamespaces_AppNamespace
	// StnRules is a list of all STN Rules that are expected to be in VPP after RESYNC
	StnRules []*stn.StnRule
}

DataResyncReq is used to transfer expected configuration of the VPP to the plugins.

func NewDataResyncReq

func NewDataResyncReq() *DataResyncReq

NewDataResyncReq is a constructor.

type Deps added in v1.0.2

type Deps struct {
	// inject all below
	local.PluginInfraDeps
	Publish           datasync.KeyProtoValWriter
	PublishStatistics datasync.KeyProtoValWriter
	Watch             datasync.KeyValProtoWatcher
	IfStatePub        datasync.KeyProtoValWriter
	GoVppmux          govppmux.API
	Linux             linuxpluginAPI
}

Deps groups injected dependencies of plugin so that they do not mix with other plugin fieldsMtu.

type ErrCtx

type ErrCtx struct {
	// contains filtered or unexported fields
}

ErrCtx is an error context struct which stores an event change with object identifier (name, etc.) and returns an error (can be nil).

type Plugin

type Plugin struct {
	Deps
	// contains filtered or unexported fields
}

Plugin implements Plugin interface, therefore it can be loaded with other plugins.

func (*Plugin) AfterInit

func (plugin *Plugin) AfterInit() error

AfterInit delegates the call to ifStateUpdater.

func (*Plugin) Close

func (plugin *Plugin) Close() error

Close cleans up the resources.

func (*Plugin) DisableResync added in v1.0.8

func (plugin *Plugin) DisableResync(keyPrefix ...string)

DisableResync can be used to disable resync for one or more key prefixes

func (*Plugin) GetBDIndexes added in v1.0.8

func (plugin *Plugin) GetBDIndexes() bdidx.BDIndex

GetBDIndexes gives access to mapping of logical names (used in ETCD configuration) as bd_indexes.

func (*Plugin) GetBfdAuthKeyIndexes added in v1.0.8

func (plugin *Plugin) GetBfdAuthKeyIndexes() idxvpp.NameToIdx

GetBfdAuthKeyIndexes gives access to mapping of logical names (used in ETCD configuration) to bfd_auth_keys.

func (*Plugin) GetBfdEchoFunctionIndexes added in v1.0.8

func (plugin *Plugin) GetBfdEchoFunctionIndexes() idxvpp.NameToIdx

GetBfdEchoFunctionIndexes gives access to mapping of logical names (used in ETCD configuration) to bfd_echo_function

func (*Plugin) GetBfdSessionIndexes added in v1.0.8

func (plugin *Plugin) GetBfdSessionIndexes() idxvpp.NameToIdx

GetBfdSessionIndexes gives access to mapping of logical names (used in ETCD configuration) to bfd_session_indexes.

func (*Plugin) GetFIBIndexes added in v1.0.8

func (plugin *Plugin) GetFIBIndexes() idxvpp.NameToIdx

GetFIBIndexes gives access to mapping of logical names (used in ETCD configuration) as fib_indexes.

func (*Plugin) GetSwIfIndexes added in v1.0.5

func (plugin *Plugin) GetSwIfIndexes() ifaceidx.SwIfIndex

GetSwIfIndexes gives access to mapping of logical names (used in ETCD configuration) to sw_if_index. This mapping is helpful if other plugins need to configure VPP by the Binary API that uses sw_if_index input.

func (*Plugin) GetXConnectIndexes added in v1.0.8

func (plugin *Plugin) GetXConnectIndexes() idxvpp.NameToIdx

GetXConnectIndexes gives access to mapping of logical names (used in ETCD configuration) as xc_indexes.

func (*Plugin) Init

func (plugin *Plugin) Init() error

Init gets handlers for ETCD and Messaging and delegates them to ifConfigurator & ifStateUpdater.

Directories

Path Synopsis
Package aclplugin implements the ACL Plugin that handles management of VPP Access lists.
Package aclplugin implements the ACL Plugin that handles management of VPP Access lists.
bin_api
Package binapi defines the aclplugin's southbound API.
Package binapi defines the aclplugin's southbound API.
bin_api/acl
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
model
Package model defines the acplugin's northbound API.
Package model defines the acplugin's northbound API.
model/acl
Package acl is a generated protocol buffer package.
Package acl is a generated protocol buffer package.
vppcalls
Package vppcalls contains wrappers over VPP ACL binary APIs.
Package vppcalls contains wrappers over VPP ACL binary APIs.
vppdump
Package vppdump provides helpers to dump ACLs configured in VPP - per interface and total.
Package vppdump provides helpers to dump ACLs configured in VPP - per interface and total.
Package ifplugin implements the Interface plugin that handles management of VPP interfaces.
Package ifplugin implements the Interface plugin that handles management of VPP interfaces.
bin_api
Package binapi is the parent for packages that define various ifplugin southbound APIs.
Package binapi is the parent for packages that define various ifplugin southbound APIs.
bin_api/af_packet
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/bfd
Package bfd represents the VPP binary API of the 'bfd' VPP module.
Package bfd represents the VPP binary API of the 'bfd' VPP module.
bin_api/interfaces
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/ip
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/memif
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/stats
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/stn
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/tap
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/vpe
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/vxlan
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
ifaceidx
Package ifaceidx implements name-to-index mapping registry and cache for VPP interfaces.
Package ifaceidx implements name-to-index mapping registry and cache for VPP interfaces.
model
Package model is the parent for packages that define various if plugin northbound APIs generated from protobuf data models.
Package model is the parent for packages that define various if plugin northbound APIs generated from protobuf data models.
model/bfd
Package bfd is a generated protocol buffer package.
Package bfd is a generated protocol buffer package.
model/interfaces
Package interfaces is a generated protocol buffer package.
Package interfaces is a generated protocol buffer package.
model/stn
Package stn is a generated protocol buffer package.
Package stn is a generated protocol buffer package.
vppcalls
Package vppcalls contains wrappers over VPP binary APIs for all supported interface types.
Package vppcalls contains wrappers over VPP binary APIs for all supported interface types.
vppdump
Package vppdump provides helpers for dumping all interfaces configured in VPP.
Package vppdump provides helpers for dumping all interfaces configured in VPP.
Package l2plugin implements the L2 plugin that handles Bridge Domains and L2 FIBs.
Package l2plugin implements the L2 plugin that handles Bridge Domains and L2 FIBs.
bdidx
Package bdidx implements name-to-index mapping registry and cache for bridge-domains.
Package bdidx implements name-to-index mapping registry and cache for bridge-domains.
bin_api
Package binapi is the parent for packages that define various l2plugin southbound APIs.
Package binapi is the parent for packages that define various l2plugin southbound APIs.
bin_api/l2
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
bin_api/vpe
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
model
Package model defines the l2plugin's northbound API.
Package model defines the l2plugin's northbound API.
model/l2
Package l2 is a generated protocol buffer package.
Package l2 is a generated protocol buffer package.
vppcalls
Package vppcalls contains wrappers over VPP binary APIs for bridge-domains, and L2 FIBs and XConnect pairs.
Package vppcalls contains wrappers over VPP binary APIs for bridge-domains, and L2 FIBs and XConnect pairs.
vppdump
Package vppdump provides helpers for dumping all bridge-domains, L2 FIBs and XConnect pairs configured in VPP.
Package vppdump provides helpers for dumping all bridge-domains, L2 FIBs and XConnect pairs configured in VPP.
Package l3plugin implements the L3 plugin that handles L3 FIBs.
Package l3plugin implements the L3 plugin that handles L3 FIBs.
bin_api
Package binapi defines the l3plugin's southbound API.
Package binapi defines the l3plugin's southbound API.
bin_api/ip
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
model
Package model defines the l3plugin's northbound API.
Package model defines the l3plugin's northbound API.
model/l3
Package l3 is a generated protocol buffer package.
Package l3 is a generated protocol buffer package.
vppcalls
Package vppcalls contains wrappers over VPP binary APIs for L3 FIBs.
Package vppcalls contains wrappers over VPP binary APIs for L3 FIBs.
vppdump
Package vppdump provides helpers for dumping all L3 FIBs configured in VPP.
Package vppdump provides helpers for dumping all L3 FIBs configured in VPP.
bin_api/session
Code generated by govpp binapi-generator DO NOT EDIT.
Code generated by govpp binapi-generator DO NOT EDIT.
model/l4
Package l4 is a generated protocol buffer package.
Package l4 is a generated protocol buffer package.
nsidx
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