README

Contiv - VPP

Build Status Coverage Status Go Report Card GoDoc GitHub license

Contiv-VPP is a Kubernetes CNI plugin for Kubernetes that employs a programmable CNF vSwitch based on FD.io VPP offering feature-rich, high-performance cloud-native networking and services.

For more details see https://contivpp.io/

Releases

Release Version Date
Latest stable release Latest release release date

Please see the CHANGELOG for a full list of changes on every release.

Documentation

The docs folder contains lots of documentation. For the begging, you can start with:

  • ARCHITECTURE for high-level description of Contiv-VPP components and operation,
  • NETWORKING for detailed description on how the network is programmed with Contiv-VPP,
  • DEVELOPER GUIDE for details on how Contiv-VPP works internally.

Quickstart

You can get started with Contiv-VPP in one of the following ways:

  • Use the Contiv-VPP Vagrant Installation instructions to start a simulated Kubernetes cluster with a couple of hosts running in VirtualBox VMs. This is the easiest way to bring up a cluster for exploring the capabilities and features of Contiv-VPP.

  • Use the Contiv-specific kubeadm install instructions to manually install Kubernetes with Contiv-VPP networking on one or more bare-metal servers.

  • Use the Arm64-specific kubeadm install instructions to manually install Kubernetes with Contiv-VPP networking on one or more bare-metal servers of Arm64 platform.

  • Use the Calico-VPP Vagrant to explore deployment of VPP in Calico clusters, where some of the nodes can be running plain Calico (without VPP) and some of the nodes can be running Calico with VPP.

  • Try Contiv-VPP UI web browser user interface on top of Contiv-VPP, it runs in Vagrant deployments as well as on bare-metal.

Configuration & Troubleshooting

Please refer to the Contiv-VPP configuration and troubleshooting document.

Reporting Bugs

In order to report a bug, please file an issue in GitHub. Please provide the information described in Bug Reports README.

Communication Channels

Slack Channel: https://contivvpp.slack.com/

Contributing

If you are interested in contributing, please see the contribution guidelines.

Expand ▾ Collapse ▴

Directories

Path Synopsis
cmd
contiv-agent
Contiv-agent is an extended vpp agent.
Contiv-agent is an extended vpp agent.
contiv-crd
Contiv-crd is an agent that start a custom resource for Kubernetes responsible to get telemetry information for every node
Contiv-crd is an agent that start a custom resource for Kubernetes responsible to get telemetry information for every node
contiv-init
Contiv-init is the init process of the contiv vswitch POD.
Contiv-init is the init process of the contiv vswitch POD.
contiv-ksr
Contiv-ksr is an agent that watches k8s resources and propagates all changes into the ETCD data store.
Contiv-ksr is an agent that watches k8s resources and propagates all changes into the ETCD data store.
contiv-stn
Contiv-stn is a Daemon which acts as a GRPC server, serving "Steal the NIC" requests - requests to unbind an interface from the kernel driver.
Contiv-stn is a Daemon which acts as a GRPC server, serving "Steal the NIC" requests - requests to unbind an interface from the kernel driver.
mock
localclient
Package localclient contains mocks for transactions created by DSL structures in localclient packages.
Package localclient contains mocks for transactions created by DSL structures in localclient packages.
localclient/dsl
Package dsl is base package for mocks of DSL transaction creators.
Package dsl is base package for mocks of DSL transaction creators.
pkg
pci
Package pci provides API for binding & unbinding of PCI devices to a specific driver.
Package pci provides API for binding & unbinding of PCI devices to a specific driver.
plugins
bgpreflector
Package bgpreflector reflects BGP routes installed in the host system's network stack (default network namespace) into VPP.
Package bgpreflector reflects BGP routes installed in the host system's network stack (default network namespace) into VPP.
crd
crd/pkg/client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
crd/pkg/client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
crd/pkg/client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
crd/pkg/client/clientset/versioned/typed/nodeconfig/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
crd/pkg/client/clientset/versioned/typed/nodeconfig/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
crd/pkg/client/clientset/versioned/typed/telemetry/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
crd/pkg/client/clientset/versioned/typed/telemetry/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
ipam
Package ipam provides node-local IPAM calculations: POD IP addresses, VPP-host interconnect and node interconnect IP addresses.
Package ipam provides node-local IPAM calculations: POD IP addresses, VPP-host interconnect and node interconnect IP addresses.
ipv4net
Package ipv4net configures VPP-based IPv4 network connectivity between Kubernetes pods and nodes.
Package ipv4net configures VPP-based IPv4 network connectivity between Kubernetes pods and nodes.
ksr
Package ksr implements plugin that watches K8s resources and causes all changes to be reflected in the ETCD data store.
Package ksr implements plugin that watches K8s resources and causes all changes to be reflected in the ETCD data store.
policy
Package policy implements Kubernetes Network policies [1] for Contiv/VPP.
Package policy implements Kubernetes Network policies [1] for Contiv/VPP.
service
Package service implements Kubernetes Services [1] for Contiv/VPP.
Package service implements Kubernetes Services [1] for Contiv/VPP.
statscollector
Package statscollector implements plugin that collects the statistics from vpp interfaces and publishes them to prometheus.
Package statscollector implements plugin that collects the statistics from vpp interfaces and publishes them to prometheus.