6fdcc3daa4
Type: fix Using the adjacency to modify the interface's feature arc doesn't work, since there are potentially more than one adj per-interface. Instead have the interface, when it is created, register what the end node of the feature arc is. This end node is then also used as the interface's tx node (i.e. it is used as the adjacency's next-node). rename adj-midhcain-tx as 'tunnel-output', that's a bit more intuitive. There's also a fix in config string handling to: 1- prevent false sharing of strings when the end node of the arc is different. 2- call registered listeners when the end node is changed For IPSec the consequences are that one cannot provide per-adjacency behaviour using different end-nodes - this was previously done for the no-SA and an SA with no protection. These cases are no handled in the esp-encrypt node. Signed-off-by: Neale Ranns <neale@graphiant.com> Change-Id: If3a83d03a3000f28820d9a9cb4101d244803d084
.. _wireguard_plugin_doc: Wireguard vpp-plugin ==================== 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 <port> private-key <priv_key> src <src_ip4> [generate-key] > *wg_interface* > vpp# set int state <wg_interface> up > vpp# set int ip address <wg_interface> <wg_ip4> Add a peer configuration: ~~~~~~~~~~~~~~~~~~~~~~~~~ :: > vpp# wireguard peer add <wg_interface> public-key <pub_key_other> endpoint <ip4_dst> allowed-ip <prefix> port <port_dst> persistent-keepalive [keepalive_interval] > vpp# *peer_idx* Add routes for allowed-ip: ~~~~~~~~~~~~~~~~~~~~~~~~~~ :: > ip route add <prefix> via <wg_ip4> <wg_interface> Show config ~~~~~~~~~~~ :: > vpp# show wireguard interface > vpp# show wireguard peer Remove peer ~~~~~~~~~~~ :: > vpp# wireguard peer remove <peer_idx> Delete interface ~~~~~~~~~~~~~~~~ :: > vpp# wireguard delete <wg_interface> 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)