summaryrefslogtreecommitdiff
path: root/docs/configuration/interfaces/geneve.md
blob: 1fce111996885a9f2dc5040d09ba406171a244c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
---
lastproofread: '2026-02-02'
---

(geneve-interface)=

# Geneve

{abbr}`Geneve (Generic Network Virtualization Encapsulation)` interfaces
operate as virtual network ports. Administrators can apply standard network
configurations on them, such as IP addressing, bridging, or firewall rules,
just as they would on physical Ethernet ports.

The Geneve protocol encapsulates Layer 2 Ethernet frames originating from
endpoints such as virtual machines, containers, or physical servers inside UDP
packets. It unifies the features of earlier encapsulation protocols, including
VXLAN, NVGRE, and STT, and addresses their limitations, such as fixed header
structures and a lack of metadata support. Because of its extensibility, Geneve
may eventually replace those older protocols.

Geneve tunnels are used to connect virtual switches residing within
hypervisors, physical switches, middleboxes, and other network appliances.

Geneve tunnels operate over any standard IP network. In larger deployments,
the underlying network (underlay) is often built using a **Clos** topology,
also known as a *leaf-and-spine* or *fat-tree* topology.

Geneve header:

```none
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver|  Opt Len  |O|C|    Rsvd.  |          Protocol Type        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Virtual Network Identifier (VNI)       |    Reserved   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Variable Length Options                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```


## Configuration

### Common interface configuration

```{cmdincludemd} /_include/interface-address.txt
:var0: geneve
:var1: gnv0
```

```{cmdincludemd} /_include/interface-description.txt
:var0: geneve
:var1: gnv0
```

```{cmdincludemd} /_include/interface-disable.txt
:var0: geneve
:var1: gnv0
```

```{cmdincludemd} /_include/interface-mac.txt
:var0: geneve
:var1: gnv0
```

```{cmdincludemd} /_include/interface-mtu.txt
:var0: geneve
:var1: gnv0
```

```{cmdincludemd} /_include/interface-ip.txt
:var0: geneve
:var1: gnv0
```

```{cmdincludemd} /_include/interface-ipv6.txt
:var0: geneve
:var1: gnv0
```


### Geneve options

```{cfgcmd} set interfaces geneve gnv0 remote \<address\>

Configure the remote endpoint IP address for the Geneve tunnel.
```

```{cfgcmd} set interfaces geneve gnv0 vni \<vni\>

**Configure** {abbr}`VNI (Virtual Network Identifier)` **for the Geneve
interface.**

The VNI is a virtual network identifier. It allows multiple virtual networks to
share the same physical infrastructure and remain isolated.

The VNI is also used to distribute traffic after it leaves the tunnel, for
example, to map packets with overlapping IP addresses to specific routing
tables.
```

```{cfgcmd} set interfaces gnv0 \<interface\> port \<port\>

**Configure the destination UDP port for the remote Geneve tunnel endpoint.**
Ensure the remote peer is configured to listen on this specific port.
```