vpp-dataplane

module
v3.25.1 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2023 License: Apache-2.0

README

Calico VPP dataplane

This repository contains the source for Calico's VPP dataplane integration. The integration is in incubation status, with significant development in progress.

Integration goals

The main goal of this integration is to accelerate the networking of k8s clusters that use Calico thanks to FD.io VPP. Nodes running the VPP dataplane provide faster networking to their pods, without requiring any changes to the applications running in the pods.

This integration aims to be as transparent as possible. In particular, the VPP dataplane does not have any additional requirements compared to regular Calico. All the networking configuration, including traffic encapsulation, IP Pools, BGP Configuration, etc. is done through regular Calico means. As a result, the docs present in this repository will only describe the VPP-specific elements.

VPP-enabled nodes are entirely compatible with regular Calico nodes - meaning that it is possible to have a cluster with some VPP-enabled nodes and some regular nodes. This makes it easy to migrate a cluster from Linux or eBPF Calico networking to VPP-accelerated networking.

In addition to that, the VPP Dataplane provides some additional features that are not available in Calico. For instance :

  • We support very fast container traffic encryption with IPsec
  • SRv6 is also supported for node to node transport
  • Network intensive applications can also require memif packet interfaces for optimized user-space networking.
  • Network intensive endpoint applications (using TCP, TLS, UDP, QUIC, ...) can consume the VPP Hoststack with the VPP Client Library VCL
  • Containerized network functions requiring multiple high speef interfaces can leverage multinet

Finally, our goal is to make the deployment of Calico-VPP as simple as applying a YAML file through kubectl.

Get Started Using Calico/VPP

Software Architecture

For technical details about the Calico-VPP integration, see the VPP dataplane implementation details.

Contributing

Contributions to this code are welcome!

Before starting, make sure you've read the Calico contributor guide.

You can follow the guide to setup a kind based development cluster

Or refer to the developper documentation in this repository

License

Calico binaries are licensed under the Apache v2.0 license, with the exception of some GPL licensed eBPF programs.

Calico imports packages with a number of apache-compatible licenses. For more information, see licenses. In addition, the base container image contains pre-packaged software with a variety of licenses.

Directories

Path Synopsis
calico-vpp-agent
cmd
cni
test
binapi/vppapi/abf
Package abf contains generated bindings for API file abf.api.
Package abf contains generated bindings for API file abf.api.
binapi/vppapi/acl
Package acl contains generated bindings for API file acl.api.
Package acl contains generated bindings for API file acl.api.
binapi/vppapi/acl_types
Package acl_types contains generated bindings for API file acl_types.api.
Package acl_types contains generated bindings for API file acl_types.api.
binapi/vppapi/af_packet
Package af_packet contains generated bindings for API file af_packet.api.
Package af_packet contains generated bindings for API file af_packet.api.
binapi/vppapi/af_xdp
Package af_xdp contains generated bindings for API file af_xdp.api.
Package af_xdp contains generated bindings for API file af_xdp.api.
binapi/vppapi/arp
Package arp contains generated bindings for API file arp.api.
Package arp contains generated bindings for API file arp.api.
binapi/vppapi/avf
Package avf contains generated bindings for API file avf.api.
Package avf contains generated bindings for API file avf.api.
binapi/vppapi/capo
Package capo contains generated bindings for API file capo.api.
Package capo contains generated bindings for API file capo.api.
binapi/vppapi/cnat
Package cnat contains generated bindings for API file cnat.api.
Package cnat contains generated bindings for API file cnat.api.
binapi/vppapi/crypto_sw_scheduler
Package crypto_sw_scheduler contains generated bindings for API file crypto_sw_scheduler.api.
Package crypto_sw_scheduler contains generated bindings for API file crypto_sw_scheduler.api.
binapi/vppapi/ethernet_types
Package ethernet_types contains generated bindings for API file ethernet_types.api.
Package ethernet_types contains generated bindings for API file ethernet_types.api.
binapi/vppapi/feature
Package feature contains generated bindings for API file feature.api.
Package feature contains generated bindings for API file feature.api.
binapi/vppapi/fib_types
Package fib_types contains generated bindings for API file fib_types.api.
Package fib_types contains generated bindings for API file fib_types.api.
binapi/vppapi/gso
Package gso contains generated bindings for API file gso.api.
Package gso contains generated bindings for API file gso.api.
binapi/vppapi/ikev2
Package ikev2 contains generated bindings for API file ikev2.api.
Package ikev2 contains generated bindings for API file ikev2.api.
binapi/vppapi/ikev2_types
Package ikev2_types contains generated bindings for API file ikev2_types.api.
Package ikev2_types contains generated bindings for API file ikev2_types.api.
binapi/vppapi/interface
Package interfaces contains generated bindings for API file interface.api.
Package interfaces contains generated bindings for API file interface.api.
binapi/vppapi/interface_types
Package interface_types contains generated bindings for API file interface_types.api.
Package interface_types contains generated bindings for API file interface_types.api.
binapi/vppapi/ip
Package ip contains generated bindings for API file ip.api.
Package ip contains generated bindings for API file ip.api.
binapi/vppapi/ip6_nd
Package ip6_nd contains generated bindings for API file ip6_nd.api.
Package ip6_nd contains generated bindings for API file ip6_nd.api.
binapi/vppapi/ip_neighbor
Package ip_neighbor contains generated bindings for API file ip_neighbor.api.
Package ip_neighbor contains generated bindings for API file ip_neighbor.api.
binapi/vppapi/ip_types
Package ip_types contains generated bindings for API file ip_types.api.
Package ip_types contains generated bindings for API file ip_types.api.
binapi/vppapi/ipip
Package ipip contains generated bindings for API file ipip.api.
Package ipip contains generated bindings for API file ipip.api.
binapi/vppapi/ipsec
Package ipsec contains generated bindings for API file ipsec.api.
Package ipsec contains generated bindings for API file ipsec.api.
binapi/vppapi/ipsec_types
Package ipsec_types contains generated bindings for API file ipsec_types.api.
Package ipsec_types contains generated bindings for API file ipsec_types.api.
binapi/vppapi/memclnt
Package memclnt contains generated bindings for API file memclnt.api.
Package memclnt contains generated bindings for API file memclnt.api.
binapi/vppapi/memif
Package memif contains generated bindings for API file memif.api.
Package memif contains generated bindings for API file memif.api.
binapi/vppapi/mfib_types
Package mfib_types contains generated bindings for API file mfib_types.api.
Package mfib_types contains generated bindings for API file mfib_types.api.
binapi/vppapi/nat44_ed
Package nat44_ed contains generated bindings for API file nat44_ed.api.
Package nat44_ed contains generated bindings for API file nat44_ed.api.
binapi/vppapi/nat_types
Package nat_types contains generated bindings for API file nat_types.api.
Package nat_types contains generated bindings for API file nat_types.api.
binapi/vppapi/pbl
Package pbl contains generated bindings for API file pbl.api.
Package pbl contains generated bindings for API file pbl.api.
binapi/vppapi/pci_types
Package pci_types contains generated bindings for API file pci_types.api.
Package pci_types contains generated bindings for API file pci_types.api.
binapi/vppapi/punt
Package punt contains generated bindings for API file punt.api.
Package punt contains generated bindings for API file punt.api.
binapi/vppapi/rdma
Package rdma contains generated bindings for API file rdma.api.
Package rdma contains generated bindings for API file rdma.api.
binapi/vppapi/session
Package session contains generated bindings for API file session.api.
Package session contains generated bindings for API file session.api.
binapi/vppapi/sr
Package sr contains generated bindings for API file sr.api.
Package sr contains generated bindings for API file sr.api.
binapi/vppapi/sr_types
Package sr_types contains generated bindings for API file sr_types.api.
Package sr_types contains generated bindings for API file sr_types.api.
binapi/vppapi/tapv2
Package tapv2 contains generated bindings for API file tapv2.api.
Package tapv2 contains generated bindings for API file tapv2.api.
binapi/vppapi/tunnel_types
Package tunnel_types contains generated bindings for API file tunnel_types.api.
Package tunnel_types contains generated bindings for API file tunnel_types.api.
binapi/vppapi/urpf
Package urpf contains generated bindings for API file urpf.api.
Package urpf contains generated bindings for API file urpf.api.
binapi/vppapi/virtio
Package virtio contains generated bindings for API file virtio.api.
Package virtio contains generated bindings for API file virtio.api.
binapi/vppapi/vlib
Package vlib contains generated bindings for API file vlib.api.
Package vlib contains generated bindings for API file vlib.api.
binapi/vppapi/vmxnet3
Package vmxnet3 contains generated bindings for API file vmxnet3.api.
Package vmxnet3 contains generated bindings for API file vmxnet3.api.
binapi/vppapi/vpe
Package vpe contains generated bindings for API file vpe.api.
Package vpe contains generated bindings for API file vpe.api.
binapi/vppapi/vpe_types
Package vpe_types contains generated bindings for API file vpe_types.api.
Package vpe_types contains generated bindings for API file vpe_types.api.
binapi/vppapi/vxlan
Package vxlan contains generated bindings for API file vxlan.api.
Package vxlan contains generated bindings for API file vxlan.api.
binapi/vppapi/wireguard
Package wireguard contains generated bindings for API file wireguard.api.
Package wireguard contains generated bindings for API file wireguard.api.

Jump to

Keyboard shortcuts

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