# Wireguard vpp-plugin {#wireguard_plugin_doc} ## Overview This plugin is an implementation of [wireguard protocol](https://www.wireguard.com/) for VPP. It allows one to create secure VPN tunnels. This implementation is based on [wireguard-openbsd](https://git.zx2c4.com/wireguard-openbsd/). ## Crypto The crypto protocols: - blake2s [[Source]](https://github.com/BLAKE2/BLAKE2) OpenSSL: - curve25519 - chachapoly1305 ## Plugin usage example ### Create wireguard interface ``` > vpp# wireguard create listen-port private-key src [generate-key] > *wg_interface* > vpp# set int state up > vpp# set int ip address ``` ### Add a peer configuration: ``` > vpp# wireguard peer add public-key endpoint allowed-ip port persistent-keepalive [keepalive_interval] > vpp# *peer_idx* ``` ### Add routes for allowed-ip: ``` > ip route add via ``` ### Show config ``` > vpp# show wireguard interface > vpp# show wireguard peer ``` ### Remove peer ``` > vpp# wireguard peer remove ``` ### Delete interface ``` > vpp# wireguard delete ``` ## Main next steps for improving this implementation 1. Use all benefits of VPP-engine. 2. Add IPv6 support (currently only supports IPv4) 3. Add DoS protection as in original protocol (using cookie)