=== GENEVE Tunnel

Links: +
link:https://reviews.freebsd.org/D54172[Add Support for Geneve (RFC8926)] URL: link:https://reviews.freebsd.org/D54172[]

Contact: Seyed Pouria Mousavizadeh Tehrani <info@spmzt.net>

I have been working on GENEVE tunnel implementation for three months and it is now under review.
GENEVE creates a generic network virtualization tunnel interface for tenant systems over an L3 (IP/UDP) underlay, providing Layer 2 (ethernet) or Layer 3 services using the GENEVE protocol.

Here is what I have done:

* Support for unicast and multicast underlay for both IPv4 and IPv6.
* Jail support and per-VNET geneve tunnel.
* RXCSUM/TXCSUM/TSO offload capabilities.
* Support for inheritance and configuration of ToS, TTL, and DF values.
* Support for NETLINK/WITHOUT_NETLINK for if_geneve.
* Updated ifconfig to support tunnel creation and modification using NETLINK for if_geneve.
* Wrote man page for man:geneve[4] and updated man:ifconfig[8] to include geneve parameters.
* Wrote tests.

Dependencies and related reviews to support geneve implementation:

* Bug fix on netlink dump assignment link:https://reviews.freebsd.org/D54190[D54190] (done)
* Bug fix on netlink credential inheritance link:https://reviews.freebsd.org/D54109[54109] (under review)
* Update ECN tunneling behavior per RFC6040 (required by GENEVE) link:https://reviews.freebsd.org/D53516[53516] (under review)

The review is large because I implemented features that are already available on other platforms before submitting.
You can help to speed up the process by reviewing and providing feedback on phabricator.
