Skip to content

Latest commit

 

History

History
516 lines (418 loc) · 23 KB

CHANGELOG.md

File metadata and controls

516 lines (418 loc) · 23 KB

Release v1.6-vpp18.10 (2018-08-24)

Compatibility

  • VPP 18.10-rc0~169-gb11f903a
  • cn-infra v1.5

Major Topics

New Flavors

Cn-infra 1.5 brought new and better flavors and it would be a shame not to implement it in the vpp-agent. The old flavors package was removed and replaced with this new concept, visible in app package vpp-agent. All examples were also updated.

Breaking Changes

  • Flavors were replaces with new way of managing plugins.
  • REST interface URLs were changed, see readme for complete list.

New Features

  • rest plugin
    • All VPP configuration types are now supported to be dumped using REST. Output consists from two parts; data formatted as NB proto model, and metadata with VPP specific configuration (interface indexes, different counters, etc.).
    • REST prefix was changed. The new URL now contains API version and purpose (dump, put). The list of all URLs can be found in the readme
  • ifplugin
    • Added support for NAT virtual reassembly for both, IPv4 and IPv6. See change in nat proto file
  • l3plugin
    • Vpp-agent now knows about DROP-type routes. They can be configured and also dumped. VPP default routes, which are DROP-type are recognized and registered. Currently, resync does not remove or correlate such a route type automatically, so no default routes are unintentionally removed.
    • New configurator for L3 IP scan neighbor was added, allowing to set/unset IP scan neigh parameters to the VPP.

Docker Images

  • using Ubuntu 18.04 as base image

Improvements

  • vpp plugins
    • all vppcalls were unified under API defined for every configuration type (e.g. interfaces, l2, l3, ...). Configurators now use special handler object to access vppcalls. This should prevent duplicates and make vppcalls cleaner and more understandable.
  • ifplugin
    • VPP interface DHCP configuration can now be dumped, and added to resync processing
    • Interfaces and also L3 routes can be configured for non-zero VRF table if IPv6 is used.
  • examples
    • All examples were reworked to use new flavors concept. The purpose was not changed.

Bugfix

  • if VPP routes are dumped, all paths are returned
  • NAT load-ballanced static mappings should be resynced correctly
  • telemetry plugin now correctly parses parentheses for show node counters
  • telemetry plugin will not hide an error caused by value loading if config file is not present
  • linux plugin namespace handler now correctly handles namespace switching for interfaces with IPv6 addresses. Default IPv6 address (link local) will not be moved to new namespace, if there is no more IPv6 addresses configured within the interface. This should prevent failures in some cases where IPv6 is not enabled in the destination namespace.
  • VxLAN with non-zero VRF can be successfully removed
  • Lint is now working again
  • VPP route resync works correctly if next hop IP address is not defined

Release v1.5.2 (2018-07-23)

Compatibility

  • VPP 18.07-rc0~358-ga5ee900
  • cn-infra v1.4.1 (minor version fixes bug in Consul)

Bugfix

  • Telemetry
    • Fixed bug where lack of config file could cause continuous polling. The interval now also cannot be changed to value less than 5 seconds.
    • Telemetry plugin is now closed properly

Release v1.5.1 (2018-07-20)

Compatibility

  • VPP 18.07-rc0~358-ga5ee900
  • cn-infra v1.4

New Features

  • Telemetry
    • Default polling interval was raised to 30s.
    • Added option to use telemetry config file to change polling interval, or turn the polling off, disabling the telemetry plugin. The change was added due to several reports where often polling is suspicious of interrupting VPP worker threads and causing packet drops and/or other negative impacts. More information how to use the config file can be found in the readme

Release v1.5 (2018-07-16)

Compatibility

  • VPP 18.07-rc0~358-ga5ee900
  • cn-infra v1.4

Breaking Changes

  • The package etcdv3 was renamed to etcd, along with it's flag and configuration file.
  • The package defaultplugins was renamed to vpp to make the purpose of the package clear

New Features

  • LinuxPlugin
    • Is now optional and can be disabled via configuration file.
  • ifplugin
    • Added support for VxLAN multicast
    • Rx-placement can be configured on VPP interfaces
  • IPsec
    • IPsec UDP encapsulation can now be set (NAT traversal)

Bugfix

  • Fixed few issues with parsing VPP metrics from CLI for Telemetry.
  • Fixed bug in GoVPP ocurring after some request timed out, causing the channel to receive replies from previous request and always returning error.
  • Fixed issue which prevented setting interface to non-existing VRF.
  • Fixed bug where removal of an af-packet interface caused attached Veth to go DOWN.
  • Fixed NAT44 address pool resolution which was not correct in some cases.
  • Fixed bug with adding SR policies causing incomplete configuration.

Docker Images

  • Replace START_AGENT with OMIT_AGENT to match RETAIN_SUPERVISOR and keep both unset by default.
  • Refactored and cleaned up execute scripts and remove unused scripts.
  • Fixed some issues with RETAIN_SUPERVISOR option.
  • Location of supervisord pid file is now explicitely set to /run/supervisord.pid in supervisord.conf file.
  • The vpp-agent is now started with single flag --config-dir=/opt/vpp-agent/dev, and will automatically load all configuration from that directory.

Release v1.4.1 (2018-06-11)

Compatibility

  • VPP v18.04 (2302d0d)
  • cn-infra v1.3

A minor release using newer VPP v18.04 version.

Bugfix

  • VPP submodule was removed from the project. It should prevent various problems with dependency resolution.
  • Fixed known bug present in previous version of the VPP, issued as VPP-1280. Current version contains appropriate fix.

Release v1.4 (2018-05-24)

Compatibility

  • VPP v18.04 (ac2b736)
  • cn-infra v1.3

New Features

  • Consul
    • Consul is now supported as an key-value store alternative to ETCD. More information in the readme.
  • Telemetry
    • New plugin for collecting telemetry data about VPP metrics and serving them via HTTP server for Prometheus. More information in the readme.
  • Ipsecplugin
    • Now supports tunnel interface for encrypting all the data passing through that interface.
  • GRPC
    • Vpp-agent itself can act as a GRPC server (no need for external executable)
    • All configuration types are supported (incl. linux interfaces, routes and ARP)
    • Client can read VPP notifications via vpp-agent.
  • SR plugin
    • New plugin with support for Segment Routing. More information in the readme.

Improvements

  • ifplugin
    • Added support for self-twice-NAT
  • vpp-agent-grpc executable merged with vpp-agent command.
  • govppmux
    • configure reply timeout can be configured.
    • Support for VPP started with custom shared memory prefix. SHM may be configured via govpp plugin config file. More info in the readme

Examples

  • localclient_linux now contains two examples, the old one demonstrating basic plugin functionality was moved to plugin package, and specialised example for NAT was added.
  • localclient_linux now contains two examples, the old one demonstrating veth interface usage was moved to package and new example for linux tap was added.

Bugfix

  • Fixed case where creation of linux route with unreachable gateway thrown error. The route is now appropriately cached and created when possible.
  • Fixed issue with GoVPP channels returning errors after timeout.
  • Fixed various issues related to caching and resync in L2 cross-connect
  • Split horizon group is now correctly assigned if interface is created after bridge domain
  • Fixed issue where creation of FIB while interface was not a part of the bridge domain returned error.

Other

  • Overall redundancy cleanup and corrected naming for all proto models.
  • Added more unit tests for increased coverage and code stability.

Known issues

  • VPP crash may occur if there is interface with non-default VRF (>0). There is an VPP-1280 issue created with more details

Release v1.3 (2018-03-22)

Compatibility

  • VPP v18.01-rc0~605-g954d437
  • cn-infra v1.2

The vpp-agent is now using custom VPP branch stable-1801-contiv.

New Features

  • ipsecplugin
    • New plugin for IPSec added. The IPSec is supported for VPP only with linux set manually for now. IKEv2 is not yet supported. More information in the readme.
  • nsplugin
    • New namespace plugin added. The configurator handles common namespace and microservice processing and communication with other Linux plugins.
  • ifplugin
    • Added support for Network address translation. NAT plugin supports configuration of NAT44 interfaces, address pools and DNAT. More information in the readme.
    • DHCP can now be configured for the interface
  • l2plugin
    • Split-horizon group can be configured for bridge domain interface.
  • l3plugin
    • Added support for proxy ARP. For more information and configuration example, please see readme.
  • linux ifplugin
    • Support for automatic interface configuration (currently only TAP).

Improvements

  • aclplugin
    • Removed configuration order of interfaces. Access list can be now configured even if interfaces do not exist yet, and add them later.
  • vpp-agent-ctl
    • The vpp-agent-ctl was refactored and command info was updated.

Docker Images

  • VPP can be build and run in release or debug mode. Read more information in the readme.
  • Production image is now smaller by roughly 40% (229MB).

Bugfix

  • Resync of ifplugin in both, VPP and Linux, was improved. Interfaces with the same configuration data are not recreated during resync.
  • STN do not fail if IP address with mask is provided.
  • Fixed ingress/egress interface resolution in ACL.
  • Linux routes now check network reachability for gateway address b before configuration. It should prevent "network unreachable" errors during config.
  • Corrected bridge domain crash in case non-bvi interface was added to another non-bvi interface.
  • Fixed several bugs related to VETH and AF-PACKET configuration and resync.

Release v1.2 (2018-02-07)

Compatibility

  • VPP v18.04-rc0~90-gd95c39e
  • cn-infra v1.1

Improvements

  • aclplugin
    • Improved resync of ACL entries. Every new ACL entry is correctly configured in the VPP and all obosolete entries are read and removed.
  • ifplugin
    • Improved resync of interfaces, BFD sessions, authentication keys, echo functions and STN. Better resolution of persistence config for interfaces.
  • l2plugin
    • Improved resync of bridge domains, FIB entries and xConnect pairs. Resync now better correlates configuration present on the VPP with the NB setup.
  • (Linux) ifplugin
    • ARP does not need the interface to be present on the VPP. Configuration is cached and put to the VPP if requirements are fullfiled.

Fixes

  • vpp-agent-grpc (removed in 1.4 release, since then it is a part of the vpp-agent) now compiles properly together with other commands.

Dependencies

  • Migrated from glide to dep

Docker Images

  • VPP compilation now skips building of Java/C++ APIs, this saves build time and final image size.
  • Development image now runs VPP in debug mode with various debug options added in VPP config file.

Bugfix

  • Fixed interface assignment in ACLs
  • Fixed bridge domain BVI modification resolution

Known Issues

  • VPP can occasionally cause deadlock during checksum calculation (https://jira.fd.io/browse/VPP-1134)
  • VPP-Agent might not properly handle initialization across plugins (this is not occuring currently, but needs to be tested more)

Release v1.1 (2018-01-22)

Compatibility

  • VPP version v18.04-rc0~33-gb59bd65
  • cn-infra v1.0.8

New Features

  • ifplugin
    • added support for un-numbered interfaces. Interface can be marked as un-numbered with information about another interface containing required IP address. Un-numbered interface does not need to have IP address set.
    • added support for virtio-based TAPv2 interfaces.
    • interface status is no longer stored in the ETCD by default and it can be turned on using appropriate setting in vpp-plugin.conf. See readme for more details.
  • l2plugin
    • bridge domain status is no longer stored in the ETCD by default and it can be turned on using appropriate setting in vpp-plugin.conf. See readme for more details.

Improvements

  • ifplugin
    • default MTU value was removed in order to be able to just pass empty MTU field. MTU now can be set only in interface configuration (preffered) or defined in vpp-plugin.conf. If none of them is set, MTU value will be empty.
    • interface state data are stored in statuscheck readiness probe
  • l3plugin
    • removed strict configuration order for VPP ARP entries and routes. Both ARP entry or route can be configured without interface already present.
  • l4plugin
    • removed strict configuration order for application namespaces. Application namespace can be configured without interface already present.

Localclient

  • added API for ARP entries, L4 features, Application namespaces and STN rules.

Logging

  • consolidated and improved logging in vpp and linux plugins.

Bugfix

  • fixed skip-resync parameter if vpp-plugin.conf is not provided.
  • corrected af_packet type interface behavior if veth interface is created/removed.
  • several fixes related to the af_packet and veth interface type configuration.
  • microservice and veth-interface related events are synchronized.

Known Issues

  • VPP can occasionally cause deadlock during checksum calculation (https://jira.fd.io/browse/VPP-1134)
  • VPP-Agent might not properly handle initialization across plugins (this is not occuring currently, but needs to be tested more)

Release v1.0.8 (2017-11-21)

Compatibility

  • VPP v18.01-rc0-309-g70bfcaf
  • cn-infra v1.0.7

New Features

  • ifplugin
    • ability to configure STN rules. See respective readme in interface plugin for more details.
    • rx-mode settings can be set on interface. Ethernet-type interface can be set to POLLING mode, other types of interfaces supports also INTERRUPT and ADAPTIVE. Fields to set QueueID/QueueIDValid are also available
  • l4plugin
    • added new l4 plugin to the VPP plugins. It can be used to enable/disable L4 features and configure application namespaces. See respective readme in L4 plugin for more details.
    • support for VPP plugins/l3plugin ARP configuration. The configurator can perform the basic CRUD operation with ARP config.

VPP plugin

  • ifplugin
    • added possibility to add interface to any VRF table.
  • resync
    • resync error propagation improved. If any resynced configuration fails, rest of the resync completes and will not be interrupted. All errors which appears during resync are logged after.
  • added defaultpligins API.
  • API contains new Method DisableResync(keyPrefix ...string). One or more ETCD key prefixes can be used as a parameter to disable resync for that specific key(s).

Linux plugin

  • l3plugin
    • route configuration do not return error if required interface is missing. Instead, the route data are internally stored and configured when the interface appears.

GOVPP

  • delay flag removed from GoVPP plugin

Documentation

  • improved in multiple vpp-agent packages

Minor fixes/improvements

  • removed deadlinks from README files

Release v1.0.7 (2017-10-30)

Compatibility

  • VPP version v18.01-rc0~154-gfc1c612
  • cn-infra v1.0.6

Major Themes

  • Default VPP plugin
    • added resync strategies. Resync of VPP plugins can be set using defaultpluigns config file; Resync can be set to full (always resync everything) or dependent on VPP configuration (if there is none, skip resync). Resync can be also forced to skip using parameter. See appropriate changelog in VPP plugins for details.

New Features

  • Linuxplugins L3Plugin
    • added support for basic CRUD operations with static Address resolution protocol entries and static Routes.

Release v1.0.6 (2017-10-17)

Compatibility

  • cn-infra v1.0.5

Major Themes

  • LinuxPlugin
    • Configuration of vEth interfaces modified. Veth configuration defines two names: symbolic used internally and the one used in host OS. HostIfName field is optional. If it is not defined, the name in the host OS will be the same as the symbolic one - defined by Name field.

Release v1.0.5 (2017-09-26)

Compatibility

  • VPP version v17.10-rc0~334-gce41a5c
  • cn-infra v1.0.4

Major Themes

  • GoVppMux
    • configuration file for govpp added
  • Kafka Partitions
    • Changes in offset handling, only automatically partitioned messages (hash, random) have their offset marked. Manually partitioned messages are not marked.
    • Implemented post-init consumer (for manual partitioner only) which allows to start consuming after kafka-plugin Init()
    • Minimalistic examples & documentation for Kafka API will be improved in a later release.

Release v1.0.4 (2017-09-08)

Major Themes

  • Kafka Partitions
    • Implemented new methods that allow to specificy partitions & offset parameters:
      • publish: Mux.NewSyncPublisherToPartition() & Mux.NewAsyncPublisherToPartition()
      • watch: ProtoWatcher.WatchPartition()
    • Minimalistic examples & documentation for Kafka API will be improved in a later release.
  • Flavors
  • [goVpp]
    • updated version waits until vpp is ready to accept a new connection

Release v1.0.3 (2017-09-05)

Major Themes

Enabled support for wathing data store OfDifferentAgent() - see:

Preview of new Kafka client API methods that allows to fill also partition and offset argument. New methods implementation ignores these new parameters for now (fallbacking to existing implementation based on github.com/bsm/sarama-cluster and github.com/Shopify/sarama).

Compatibility

  • VPP version v17.10-rc0~265-g809bc74 (upgraded because of VPP MEMIF fixes).

Release v1.0.2 (2017-08-28)

Compatibility

  • VPP version v17.10-rc0~203

Major Themes

Algorithms for applying northbound configuration (stored in ETCD key value data store) to VPP in the proper order of VPP binary API calls implemented in Default VPP plugin:

  • network interfaces, especially:
    • MEMIFs (optimized dataplane network interface tailored for a container to container network connectivity)
    • VETHs (standard Linux Virtual Ethernet network interface)
    • AF_Packets (for accessing VETHs and similar type of interface)
    • VXLANs, Physical Network Interfaces, loopbacks ...
  • L2 BD & X-Connects
  • L3 IP Routes & VRFs
  • ACL (Access Control List)

Support for Linux VETH northbound configuration implemented in Linux Plugin applied in proper order with VPP AF_Packet configuration.

Data Synchronization during startup for network interfaces & L2 BD (support for situation when ETCD contain configuration before VPP Agent starts).

Data replication and events:

  • Updating operational data in ETCD (VPP indexes such as sw_if_index) and statistics (port counters).
  • Updating statistics in Redis (optional once redis.conf available - see flags).
  • Publishing link up/down events to Kafka message bus.

Miscellaneous:

  • Examples
  • Tools:
    • agentctl CLI tool that show state & configuration of VPP agents
    • docker: container-based development environment for the VPP agent
  • other features inherited from cn-infra:
    • health: status check & k8s HTTP/REST probes
    • logging: changing log level at runtime

Extensibility & integration

Ability to extend the behavior of the VPP Agent by creating new plugins on top of VPP Agent flavor. New plugins can access API for configured: VPP Network interfaces, Bridge domains and VETHs based on idxvpp threadsafe map tailored for VPP data with advanced features (multiple watchers, secondary indexes).

VPP Agent is embeddable in different software projects and with different systems by using Local Flavor to reuse VPP Agent algorithms. For doing this there is VPP Agent client version 1:

  • local client - for embedded VPP Agent (communication inside one operating system process, VPP Agent effectively used as a library)
  • remote client - for remote configuration of VPP Agent (while integrating for example with control plane)

Known Issues

A rarely occurring problem during startup with binary API connectivity. VPP rejects binary API connectivity when VPP Agent tries to connect too early (plan fix this behavior in next release).