• Stars
    star
    146
  • Rank 252,769 (Top 5 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

VPP dataplane implementation for Calico

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.

More Repositories

1

calico

Cloud native networking and network security
Go
5,920
star
2

calicoctl

Calico CLI tool
949
star
3

felix

Project Calico's per-host agent Felix, responsible for programming routes and security policy.
921
star
4

canal

Policy based networking for cloud native applications
714
star
5

cni-plugin

Calico CNI plugin
432
star
6

libcalico-go

Golang Calico library functions: https://www.projectcalico.org
122
star
7

kube-controllers

Kubernetes controllers for Calico
110
star
8

node

The calico/node container
99
star
9

bird

Calico's fork of the BIRD protocol stack
C
89
star
10

app-policy

Calico Application Layer Policy
73
star
11

libnetwork-plugin

Docker libnetwork plugin for Calico
Go
59
star
12

typha

Calico's datastore fan-out daemon.
57
star
13

netmodules-plugin

[Deprecated] Calico net-modules plugin for Mesos
Python
53
star
14

k8s-exec-plugin

[Deprecated] Kubernetes Exec Plugin
Python
47
star
15

community

Calico community content
31
star
16

libcalico

Python library for building Calico plugins
Python
26
star
17

calico-bgp-daemon

GoBGP based Calico BGP Daemon
Go
22
star
18

go-build

Dockerfile
19
star
19

calico-kubernetes-coreos-demo

[Deprecated] Config for deploying Kubernetes with Calico on bare-metal CoreOS
16
star
20

api

Calico API
Go
15
star
21

calico-kubernetes-ubuntu-demo

[Deprecated] Kubernetes Deployment on Ubuntu
Shell
15
star
22

routereflector

BIRD-based route reflector for Calico
Python
14
star
23

bpftool

Scripts for building bpftool
Makefile
12
star
24

pod2daemon

Secure connections from K8s Pods to local daemons using FlexVolume + Unix Domain Socket
10
star
25

calico-dnsmasq

The temporary Project Calico specific fork of dnsmasq.
C
9
star
26

calico-neutron

The Project Calico specific fork of Neutron.
Python
9
star
27

calico-chef

Chef cookbooks for installing testing environments for Project Calico
HTML
8
star
28

networking-calico

Calico integration with OpenStack (Neutron)
7
star
29

calico-upgrade

Data migration tool for Calico upgrades
Python
6
star
30

calico-nova

The Project Calico specific fork of Nova.
Python
6
star
31

calico-dcos

DC/OS install scheduler
Python
4
star
32

spire-demo

Shell
4
star
33

test-ca

Scripts to create a test certificate authority
Makefile
3
star
34

katacoda-scenarios

Shell
3
star
35

mesos-nettest-framework

A Dockerized Framework for Mesos to test Calico Functionality
Python
3
star
36

apiserver

Kubernetes extension apiserver for Calico REST APIs
2
star
37

go-json

A "fork" of the golang encoding/json module
Go
1
star
38

dockerrun

A small go library which wraps the docker CLI
Go
1
star
39

packaging

Scripts for Debian/RPM packaging of Calico
Shell
1
star
40

dind

Simple Docker In Docker file
Dockerfile
1
star
41

scapy-image

Docker image for scapy, used in integration tests
Dockerfile
1
star