All Projects → inters → vita

inters / vita

Licence: Apache-2.0 license
Vita: simple and fast VPN gateway

Programming Languages

lua
6591 projects
c
50402 projects - #5 most used programming language
assembly
5116 projects
HTML
75241 projects
NASL
115 projects
shell
77523 projects

Projects that are alternatives of or similar to vita

Macosvpn
🔧 Create macOS VPNs programmatically (L2TP & Cisco)
Stars: ✭ 348 (-49.2%)
Mutual labels:  ipsec, vpn
Algo
Set up a personal VPN in the cloud
Stars: ✭ 24,275 (+3443.8%)
Mutual labels:  ipsec, vpn
Dosxvpn
Easily deploy your own personal VPN server with DNS adblocking running on DigitalOcean
Stars: ✭ 284 (-58.54%)
Mutual labels:  ipsec, vpn
Snabb
Snabb: Simple and fast packet networking
Stars: ✭ 2,782 (+306.13%)
Mutual labels:  luajit, userspace-networking
Alpine Strongswan Vpn
Dockerfile and related configuration for setting up a roadwarrior IKEv2-based VPN
Stars: ✭ 74 (-89.2%)
Mutual labels:  ipsec, vpn
Aws Vpn Server Setup
Setup your own private, secure, free* VPN on the Amazon AWS Cloud in 10 minutes. CloudFormation
Stars: ✭ 672 (-1.9%)
Mutual labels:  ipsec, vpn
Docker Ipsec Vpn Server
Docker image to run an IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
Stars: ✭ 4,356 (+535.91%)
Mutual labels:  ipsec, vpn
Setup Ipsec Vpn
Scripts to build your own IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
Stars: ✭ 16,987 (+2379.85%)
Mutual labels:  ipsec, vpn
Strongswan
strongSwan - IPsec-based VPN
Stars: ✭ 1,112 (+62.34%)
Mutual labels:  ipsec, vpn
Softethervpn
Cross-platform multi-protocol VPN software. Pull requests are welcome. The stable version is available at https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.
Stars: ✭ 8,531 (+1145.4%)
Mutual labels:  ipsec, vpn
Vycontrol
vyos frontend
Stars: ✭ 92 (-86.57%)
Mutual labels:  ipsec, vpn
useful-unix-stuff
a collection of useful unix commands/scripts/etc.
Stars: ✭ 64 (-90.66%)
Mutual labels:  ipsec, vpn
husarnet
Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.
Stars: ✭ 128 (-81.31%)
Mutual labels:  vpn
EtherGuard-VPN
Layer2 version of wireguard with Floyd Warshall implement in go.
Stars: ✭ 38 (-94.45%)
Mutual labels:  vpn
desktop-app-ui2
IVPN Desktop app
Stars: ✭ 19 (-97.23%)
Mutual labels:  vpn
luajit-tcc
Tiny C Compiler 0.9.26 binding for LuaJIT
Stars: ✭ 58 (-91.53%)
Mutual labels:  luajit
vpn-user-portal
VPN User Portal
Stars: ✭ 23 (-96.64%)
Mutual labels:  vpn
protonvpn-docker
ProtonVPN docker image. Supports ARMv7(32-bit), ARMv8 (64-bit ) and x86 (64-Bit).
Stars: ✭ 68 (-90.07%)
Mutual labels:  vpn
openvpn
OpenVPN is an open source VPN daemon
Stars: ✭ 7,291 (+964.38%)
Mutual labels:  vpn
LuaParser
Customized Lua parser for [lua-language-server](https://github.com/sumneko/lua-language-server).
Stars: ✭ 43 (-93.72%)
Mutual labels:  luajit

Vita  

🚧 🚧 🚧 🚧

Vita is a high-performance IPsec VPN gateway designed with medium and large network operators in mind. It is written in a high-level language (Lua) and achieves high performance via networking in userspace, i.e. bypassing the kernel network stack.

Project goals

  • Provide a low-cost, open source solution to network traffic encryption at scale

  • Support stand-alone operation as well as SAs established by third-party software such as StrongSwan

  • Be as fast as possible on generic x86 CPUs, handle 10 Gbps line rate at 60 byte packets and more

  • Avoid vendor lock-in and mandatory, complex dependencies while embracing network operator standards such as NETCONF/YANG

  • Keep it all simple, maintainable, and modular

  • Use strong, modern cryptographic primitives and protocols

WARNING:

Vita is in its early “tech-demo” stage of development and not ready for production yet!

Features

  • ~3 Mpps (or ~5 Gbps of IMIX traffic) per CPU core on modern commodity x86 hardware

  • Scales linearly with CPU cores using RSS and VMDQ

  • Implements IPsec for IPv4 and IPv6, specifically IP Encapsulating Security Payload (ESP) in tunnel mode

  • Uses optimized AES-GCM 128-bit encryption based on a reference implementation by Intel for their AVX2 (generation-4) processors

  • Automated key exchange (AKE) and rotation, with perfect forward secrecy (PFS) and seamless, packet loss-free rekeying

  • Simple, minimal, and modern AKE protocol based on Noise (audit welcome, see README.exchange)

  • Can act also as a pure data-plane and consume SAs established by other means

  • Configuration and runtime state modelled by a native YANG schema. Supports, dynamic reconfiguration via NETCONF RPCs (update routes while running)

  • Strong observability (access relevant statistics of a running Vita node via NETCONF get-state RPCs) and full ICMP visibility (tunnel appears as two hops in traceroute, PMTUD support, all inbound ICMP messages are logged)

  • Written in Lua—a simple, high-level programming language—and x86 assembly

Documentation

Articles

Presentations

Podcasts

Getting started

Vita runs on any modern Linux/x86-64 distribution. You will need a compatible x86 CPU with support for AES-NI and AVX-2. For network interfaces you have the following supported options:

  • Intel chipsets i210, i350, and 82599
  • Intel AVF capable VFs e.g. from a X710 and XL710
  • Linux XDP capable interfaces

Important note: Snabb needs Linux to be booted with iommu=off for its native device drivers to function.

$ git clone https://github.com/inters/vita
$ cd vita
$ RECIPE=Makefile.vita make -j
$ sudo src/vita --help

Setting RECIPE=Makefile.vita causes a release build to be built (as opposed to a test build.)

The vita binary is stand-alone, includes useful auxiliary applications (like snabb top and snabb pci_bind), and can be copied between machines.

For example, to install Vita and the Snabb monitoring tool on the local machine:

$ sudo cp src/vita /usr/local/bin/vita
$ sudo ln -s vita /usr/local/bin/snabb-top

Benchmarking

End-to-end benchmarking procedures are documented in vita-loadtest.md.

Deployment

Vita is a high-performance L3 VPN gateway you can use to interconnect your networks. Vita acts as a tunnel between your local, private network and any number of remote Vita gateways. With it, nodes spread across your outposts can communicate with each other with confidentiality and authenticity ensured at the network layer.

Vita is probably more efficient at encapsulating traffic than your application servers. You can free cycles for your application by offloading your packet encryption and authentication workload to Vita.

a mesh of Vita gateways forms a VPN

A Vita network can be as small as two nodes with a single route, and as large as you like. For each pair of Vita gateways, a separate secure tunnel (route) can be established—“can be” because a Vita network does not need to be a full mesh, instead arbitrary hierarchies are supported on a route-by-route basis. Each route uses a pre-shared super key that is installed on both ends of the route. These keys need to be configured only once, and only need renewal when compromised, in which case the breach will affect only the route in question. The actual keys used to encrypt the traffic are ephemeral, and negotiated by Vita automatically, with no manual intervention required.

Deploying Vita is easy, and not invasive to your existing infrastructure. It can be as simple as adding an entry to the IP routing table of your default gateway, to ensure that packets to destinations within your private network are routed over an extra hop: the Vita gateway. Whether Vita forwards the encapsulated packets back to your default gateway, or directly to your modem depends on your setup, and is freely configurable.

private traffic is routed over a Vita gateway, and encapsulated before it is transmitted over the Internet

To configure a Vita route, you need to specify the address prefix of the destination subnetwork, and the public IP address of the target Vita gateway (in addition to the pre-shared key). At the other end, you specify the source prefix and gateway address in symmetry. You can even add and remove routes while Vita is running, without affecting unrelated routes.

Powered by

Snabb

Snabb is a simple and fast packet networking toolkit with a wonderful community.

Sponsored by

NLnet

NLnet funded Vita development in 2018/2019 with their generous donation. 🙇‍♂️

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].