Skip to content

Commit 5d6a3fb

Browse files
committed
docs: refactor and migrate wiki
This patch migrates the wiki to a docs/ folder inside this repository. It also adapts to the migrated tigera docs website Signed-off-by: Nathan Skrzypczak <[email protected]>
1 parent d9c0cce commit 5d6a3fb

18 files changed

+415
-55
lines changed

README.md

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,52 @@
11
# Calico VPP dataplane
2-
<img src="http://docs.projectcalico.org/images/felix.png" width="100" height="100">
2+
3+
<p float="left">
4+
<img src="https://docs.tigera.io/img/favicon.png" width="100" height="100">
5+
<img src="https://fd.io/img/fdio-color.svg" width="100" height="100">
6+
</p>
37

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

10+
### Integration goals
11+
12+
The main goal of this integration is to accelerate the networking of k8s clusters that use Calico thanks to [FD.io VPP](https://fd.io/docs/vpp/master/). Nodes running the VPP dataplane provide faster networking to their pods, without requiring any changes to the applications running in the pods.
13+
14+
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.
15+
16+
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.
17+
18+
In addition to that, the VPP Dataplane provides some additional features that are not available in Calico. For instance :
19+
- We support very fast container traffic encryption with IPsec
20+
- SRv6 is also supported for node to node transport
21+
- Network intensive applications can also require [memif packet interfaces](https://s3-docs.fd.io/vpp/23.02/interfacing/libmemif/index.html) for optimized user-space networking.
22+
- Network intensive endpoint applications (using TCP, TLS, UDP, QUIC, ...) can consume the [VPP Hoststack](https://wiki.fd.io/view/VPP/HostStack) with the VPP Client Library [VCL](https://wiki.fd.io/view/VPP/HostStack/VCL)
23+
- Containerized network functions requiring multiple high speef interfaces can leverage [multinet](docs/multinet.md)
24+
25+
Finally, our goal is to make the deployment of Calico-VPP as simple as applying a YAML file through kubectl.
26+
627
## Get Started Using Calico/VPP
728

8-
* Please [see the Wiki](https://github.com/projectcalico/vpp-dataplane/wiki) for more detailed information about this project
9-
* If you would like to try it, you can read the [Setup Instructions](https://github.com/projectcalico/vpp-dataplane/wiki/Getting-started)
10-
* If you want to learn more about Calico, see the documentation on [docs.projectcalico.org](https://docs.projectcalico.org).
29+
* Please see our [Getting started page](https://docs.tigera.io/calico/latest/getting-started/kubernetes/vpp/getting-started) for instructions on how to set it up on a cluster.
30+
* If you want to learn more about Calico, see the documentation on [docs.tigera.io/calico](https://docs.tigera.io/calico).
1131
* If you have questions, feel free to drop us a line in the [Calico Slack room #vpp](https://calicousers.slack.com/archives/C017220EXU1)
32+
* Check out [Release notes](RELEASE_NOTES.md)
1233

13-
## Get Started Developing Calico/VPP
34+
### Software Architecture
1435

15-
Contributions to this code are welcome!
36+
For technical details about the Calico-VPP integration, see the [VPP dataplane implementation details](https://docs.tigera.io/calico/latest/reference/vpp/technical-details).
1637

17-
Before starting, make sure you've read [the Calico contributor guide][contrib].
38+
### Contributing
1839

19-
You can follow the [guide to setup a kind based development cluster](https://github.com/projectcalico/vpp-dataplane/blob/master/DEVELOPPER_GUIDE.md)
40+
Contributions to this code are welcome!
2041

42+
Before starting, make sure you've read [the Calico contributor guide](CONTRIBUTING.md).
2143

22-
### License
44+
You can follow the [guide to setup a kind based development cluster](docs/developper_guide.md)
2345

24-
Calico binaries are licensed under the [Apache v2.0 license](LICENSE), with the exception of some [GPL licensed eBPF programs](https://github.com/projectcalico/calico/tree/master/felix/bpf-gpl).
46+
Or refer to the [developper documentation in this repository](docs)
2547

26-
Calico imports packages with a number of apache-compatible licenses. For more information, see [filesystem/licenses](./filesystem/licenses). In addition, the base container image contains
27-
pre-packaged software with a variety of licenses.
48+
## License
2849

50+
Calico binaries are licensed under the [Apache v2.0 license](LICENSE), with the exception of some [GPL licensed eBPF programs](https://github.com/projectcalico/calico/tree/master/felix/bpf-gpl/README).
2951

30-
[contrib]: https://github.com/projectcalico/calico/blob/master/CONTRIBUTING_CODE.md
52+
Calico imports packages with a number of apache-compatible licenses. For more information, see [licenses](https://github.com/projectcalico/calico/blob/master/calico/LICENSE). In addition, the base container image contains pre-packaged software with a variety of licenses.

RELEASE_NOTES.md

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
### Calico-VPP v3.24.0
2+
> 19 Sep 2022
3+
4+
* New features:
5+
- Multinet support (including attaching multiple networks to pods via tun/tap or memif, services support, preparation for policies integration).
6+
- Add strict RPF check for traffic originated from pods, with possibility to add exceptions with `allowSpoofing` annotation.
7+
- Uplink route and MTU monitoring move from vpp-manager to the agent. As a consequence, multi-uplink now supports differentiated MTUs.
8+
9+
* Bug fixes
10+
- Integrate VPP fix for interrupt mode support with ENA/dpdk.
11+
- Align with Wireguard v6 support added in Calico v3.24, and fix dual stack support for Wireguard.
12+
13+
* Focus on code quality, add integration tests, address linting issues.
14+
15+
#### Calico-VPP v3.24.1
16+
> 7 Dec 2022
17+
18+
* GSO bug fixes
19+
* BGP secret support
20+
21+
### Calico-VPP v3.23.0
22+
> 11 May 2022
23+
24+
Calico/VPP has reached beta status !
25+
26+
* The versioning scheme changes to match Calico's release number to make it clearer. The assumption being that Calico/VPP version ``vA.B.X`` works with Calico version ``vA.B.Y`` in the event there are independent bugfix releases.
27+
* Many bugfixes went in for this release :
28+
- Checking for IP address conflict before creating pods
29+
- Refactoring the etcd watcher logic to better handle expirations, and network failures.
30+
- For ipsec, cancel pending negotiation if we are switching the encapsulation type away from ipsec.
31+
- Fix disabling Wireguard on a per-node basis
32+
- Fix a NAT session creation race condition.
33+
- Fix af-packet interface locking due to a missing kick
34+
- Fix buffer accounting for pods
35+
- Reduce ipset resolution complexity
36+
- Expose interface tag for dpdk interfaces, to mark them as an uplink interface for the calico-vpp-agent (e.g. ``dpdk { dev 0000:d8:0a.0 { tag main-enp216s0f1 }``)
37+
* Only keep the last two core dump files, as they can be quite huge in size (~1 GB)
38+
* Try to print the last core dump stack trace when starting up, when gdb is installed. We will release images with gdb installed while in beta status, as it is relatively low footprint (~40MB additional space) and eases debugging.
39+
* Improved the log output.
40+
* Change the VRF tag to a hash (netns, ipversion) followed by the ip version, and the netns basename truncated to 63 chars
41+
* Restart the agent on VPP's fault to simplify the state reconciliation process and avoid handling reprogramming failures.
42+
* Move the main uplink interface
43+
- to a mounted & persistent netns if it is virtual (veth, tap), as the netns deletion would also trigger the interface deletion.
44+
- to the vpp process netns if it is physical, to rely on the kernel for auto restore on VPP fault
45+
* Added better support for multiple TX queues per worker
46+
47+
### Calico-VPP v0.18.1
48+
> 7 Jan 2022
49+
50+
* Fix issues when deploying on Kind
51+
* Handle updates in the BGPConfiguration
52+
* VPP bugfixes
53+
54+
### Calico-VPP v0.18.0
55+
> 17 Dec 2021
56+
57+
* Add tests: kind environment, simple VCL container, testpmd serviceIP
58+
* Use per tap VRF for host traffic
59+
* Support BGPPeering features
60+
* Add hostPort/hostIP support in pods
61+
* Add support for host policies
62+
* Watch available buffers for interfaces
63+
* Partial support for multi tx infra
64+
65+
### Calico-VPP v0.17.0
66+
> 15 Oct 2021
67+
68+
* Upgrade Calico to v3.20.2
69+
* Add memif interface support for the pods
70+
* Add support for exposing the VPP transport stack (host stack) in the pods
71+
* Add prometheus exporter for pod network stats
72+
* Add support for multiple interfaces in VPP
73+
* Fix wireguard connectivity with node churn
74+
* Enable compatibility with NSM
75+
* Bind BGP listener to node address only (fixes a crash on nodes with IPv6 disabled)
76+
* Fix packet drops with the af_packet driver and GRO
77+
78+
### Calico-VPP v0.16.0
79+
> 23 Aug 2021
80+
81+
* Upgrade Calico to v3.20.0
82+
* Add kind support
83+
* Support service-based policy rules
84+
* Fix MTU configuration in VPP
85+
* Fix chained buffers handling with RDMA interfaces
86+
* Fix IPsec support in interrupt mode in AWS
87+
88+
### Calico-VPP v0.15.0
89+
> 25 Jun 2021
90+
91+
* Upgrade Calico to 3.19.1
92+
* Support named ports in services
93+
* Add RDMA and vmxnet3 drivers
94+
* Use a launch template instead of a configuration container on EKS
95+
* Add DPDK interrupt mode support for ENA on EKS
96+
* Fix state reconciliation with VXLAN encapsulation
97+
* Fixes for chained buffers with IPsec (IPsec now supports MTU > buffer size)
98+
99+
Known issues
100+
* Chained buffers are not supported with RDMA interfaces. Ensure the MTU is smaller that the VPP buffer size (2048 bytes by default) when using RDMA interfaces (Mellanox CX series).
101+
* IPsec is not supported with DPDK in interrupt mode on EKS
102+
103+
### Calico-VPP v0.14.0
104+
> 29 Apr 2021
105+
106+
* Tech-preview release for Calico 3.19.0
107+
* Changed deployment model to a daemonset separate from calico-node
108+
* Changed uplink connectivity to L2 and to reuse the original interface name for better compatibility with pre-existing network configuration systems.
109+
* Add async crypto support for IPsec
110+
* Upgrade gobgp to v2.25.0
111+
* Improved MTU handling
112+
113+
### Calico-VPP v0.13.0
114+
> 9 Mar 2021
115+
116+
* Support for maglev load-balancing for services
117+
* Checksum offloads fix
118+
* Various bugfixes (ipsec, ping, interface deletion)
119+
120+
### Calico-VPP v0.12.1
121+
> 19 Feb 2021
122+
123+
* Add interrupt mode support for the DPDK driver
124+
* Fixes for IPsec encryption
125+
* Checksum offload fix for virtio interfaces
126+
* Graceful recovery if the number of queues cannot be configured with af_xdp
127+
128+
### Calico-VPP v0.12.0
129+
> 4 Feb 2021
130+
131+
* Full calico policies support
132+
* Support LoadBalancer / ExternalIP services
133+
* Support externalTrafficPolicy=local for services
134+
* Support MTU autodetection
135+
* VPP: reduce CPU consumption
136+
* Add IPv6 tests
137+
* Fixes for AVF, af_packet and af_xdp drivers
138+
* Support custom VXLan port
139+
140+
### Calico-VPP v0.11.1
141+
> 8 Jan 2021
142+
143+
* Update to calico v3.17.1
144+
* Fix bug on link-local address configuration on vpptap0
145+
* Fix vpp-manager crash on config generation failure
146+
* Improve / cleanup YAML deployment manifest
147+
148+
### Calico-VPP v0.11.0
149+
> 16 Dec 2020
150+
151+
* Policies support
152+
* Containerd compatibility
153+
154+
### Calico-VPP v0.10.0
155+
> 7 Dec 2020
156+
157+
* MTU configuration
158+
* Wireguard support (inter-operable with calico linux/eBPF nodes)
159+
* Updated yaml templates
160+
161+
### Calico-VPP v0.9.0
162+
> 19 Nov 2020
163+
164+
* Driver autodetection & unified integration
165+
* Integrated support for VPP native AVF driver
166+
* Calico Policies support alpha
167+
* Usability improvements
168+
169+
### Calico-VPP v0.8.2
170+
> 17 Nov 2020
171+
172+
* State reconciliation : allow calico-vpp agent restart
173+
* Added several performance tuning parameters
174+
175+
### Calico-VPP v0.8.1
176+
> 21 Sep 2020
177+
178+
* AF_XDP support
179+
* ICMP translation support (natOutgoing, serviceIP errors)
180+
181+
### Calico-VPP v0.8.0
182+
> 4 Sep 2020
183+
184+
* VXLAN support
185+
* tun (L3) interfaces for containers instead of tap (L2)
186+
* Support for natOutgoing for services with backends outside of the cluster (required for EKS)
187+
* Fix default route installation and restoration on the nodes
188+
* Fix UDP packet punting to the nodes
189+
190+
### Calico-VPP v0.7.1
191+
> 20 Aug 2020
192+
* Fix ipsec support in v6 and dualstack
193+
194+
### Calico-VPP v0.7.0
195+
> 19 Aug 2020
196+
* Support for natOugoing v4 & v6
197+
* Support of Dualstack clusters (also with ipip or ipsec between nodes)
198+
* More configuration params: default routes, buffer tuning, etc..
199+
200+
### Calico-VPP v0.6.1
201+
> 28 Jul 2020
202+
203+
* Upgrade to Calico v3.15.1
204+
* Support for virtio interfaces
205+
* Smaller and simpler test setup (it can run on a laptop!)
206+
* Kustomize-based configurations
207+
* Automated end-to-end testing

calico-vpp-agent/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
# calico-vpp-agent
1+
# Calico/vpp Agent
22

33
This directory contains the agent that configures VPP for:
44
- CNI implementation
55
- Services load balancing
66
- Traffic encapsulation / encryption
77
- NodePorts implementation
8+
- Policies implementation
9+
- Multiple network support

docs/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Calico/VPP technical documentation
2+
3+
This folder contains Calico/VPP technical documentation. This is this repository's counterpart of the documentation available at [https://docs.tigera.io](https://docs.tigera.io/calico/latest/reference/vpp/technical-details)
4+
5+
It contains developer oriented documentation, details of VPP specific features :
6+
7+
- [Interface configuration](config.md)
8+
- [Developper's getting started](developper_guide.md)
9+
- [Multinet feature documetation](migrate_to_calicovpp.md)
10+
- [Existing Calico cluster migration](multinet.md)
11+
- [External resources](events.md) like events and presentations
12+
- [Guide to upgrade calico](upgrading.md)
13+
- [A networking model deep dive](networkmodel.md)
14+
15+
Additionnaly this repository contains :
16+
17+
- [A series of examples yamls](../test/yaml)
18+
- [A Simple VCL client and server example](../test/yaml/simple-vcl)
19+
- [A trex pod example](../test/yaml/trex)
20+
- [A vpp client pod example](../test/yaml/mvpp)
21+
- [An envoy pod example with optional VCL support](../test/yaml/envoy)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2023-02-13T13:36:45.903Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.10 Chrome/106.0.5249.199 Electron/21.3.5 Safari/537.36" etag="pNslYD8iPYl4Z_Tm3n7S" version="20.8.10" type="device"><diagram id="RxcxJ1UT-itXMrFT2446" name="archi">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</diagram></mxfile>
381 KB
Loading
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)