Linux Networking - Geneve tunnelling

Synopsis: A geneve tunnelling case

Keywords: GENEVE

Back To Blog HomePage


Like VXLAN, GENEVE tunneling is to extend L2 domain accross L3 network. It utilizes L2 Over UDP encapsulation to
maximize host end concurrency capability via RSS.

GENEVE is more flexible than VXLAN becase it provides additional TLV options to extend your business while fulfilling all
the functions that VXLAN is able to do.

here is an example to create a genevel endpoint and a tunnel:
    	 sudo modprobe geneve
         sudo ip netns add netA
         sudo ip netns add netB
         sudo ip netns exec netA ip link set lo up
         sudo ip netns exec netB ip link set lo up
         sudo ip link add name underlayA type veth peer underlayB
         sudo ip link set dev underlayA netns netA
         sudo ip link set dev underlayB netns netB
         sudo ip netns exec netA ip link set dev underlayA up
         sudo ip netns exec netB ip link set dev underlayB up
         sudo ip netns exec netA ip addr add 10.1.1.1/24 dev underlayA
         sudo ip netns exec netB ip addr add 10.1.1.2/24 dev underlayB
         sudo ip netns exec netA ip link add name gretapA type gretap local 10.1.1.1 remote 10.1.1.2
         sudo ip netns exec netB ip link add name gretapB type gretap local 10.1.1.2 remote 10.1.1.1

         sudo ip netns exec netA ip link add name geneveA type geneve id 50700 remote 10.1.1.2 dstport 5070
         sudo ip netns exec netB ip link add name geneveB type geneve id 50700 remote 10.1.1.1 dstport 5070

         sudo ip netns exec netA ip link set geneveA up
         sudo ip netns exec netB ip link set geneveB up

         sudo ip netns exec netA ip addr add 192.100.100.1/24 dev geneveA
         sudo ip netns exec netB ip addr add 192.100.100.2/24 dev geneveB

Note in Linux, the default udp port is 6081. you can override it.
REF: https://tools.ietf.org/html/draft-ietf-nvo3-geneve-08