summaryrefslogtreecommitdiff
path: root/static/openbsd/man4/vxlan.4
diff options
context:
space:
mode:
Diffstat (limited to 'static/openbsd/man4/vxlan.4')
-rw-r--r--static/openbsd/man4/vxlan.4245
1 files changed, 245 insertions, 0 deletions
diff --git a/static/openbsd/man4/vxlan.4 b/static/openbsd/man4/vxlan.4
new file mode 100644
index 00000000..a753b505
--- /dev/null
+++ b/static/openbsd/man4/vxlan.4
@@ -0,0 +1,245 @@
+.\" $OpenBSD: vxlan.4,v 1.20 2023/11/23 03:36:42 dlg Exp $
+.\"
+.\" Copyright (c) 2013 Reyk Floeter <reyk@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.Dd $Mdocdate: November 23 2023 $
+.Dt VXLAN 4
+.Os
+.Sh NAME
+.Nm vxlan
+.Nd Virtual eXtensible Local Area Network tunnel interface
+.Sh SYNOPSIS
+.Cd "pseudo-device vxlan"
+.Sh DESCRIPTION
+The
+.Nm
+pseudo-device provides interfaces for tunnelling or overlaying
+Ethernet networks on top of IPv4 and IPv6 networks using the
+Virtual eXtensible Local Area Network (VXLAN) protocol.
+.Pp
+VXLAN datagrams consist of an Ethernet payload encapsulated by an
+8-byte VXLAN header, which in turn is encapsulated by UDP and IP
+headers.
+Different VXLAN tunnels or overlays between the same VXLAN Tunnel
+Endpoints (VTEPs) can be distinguished by an optional 24-bit Virtual
+Network Identifier (VNI).
+.Pp
+A
+.Nm
+interface can be created using the
+.Ic ifconfig vxlan Ns Ar N Ic create
+command or by setting up a
+.Xr hostname.if 5
+configuration file for
+.Xr netstart 8 .
+.Pp
+For correct operation, encapsulated traffic must not be routed
+over the interface itself.
+This can be implemented by adding a distinct or a more specific
+route to the tunnel destination than the hosts or networks routed
+via the tunnel interface.
+Alternatively, the tunnel traffic may be configured in a separate
+routing table to the encapsulated traffic.
+.Pp
+The interface can operate in the following tunnel modes:
+.Bl -tag -width multicast
+.It Ic point-to-point mode
+When a unicast IP address is configured as the tunnel destination,
+all traffic is sent to a single tunnel endpoint.
+.It Ic learning mode
+When a multicast IP address is configured as the tunnel destination,
+.Nm
+operates as a learning bridge.
+Broadcast, multicast, and unknown unicast packets are sent to the
+specified multicast group.
+Packets received by the tunnel source address are used to dynamically
+learn the endpoint addresses for the encapsulated Ethernet source
+addresses.
+.It Ic endpoint mode
+When configured without a tunnel destination address,
+.Nm
+operates as a bridge, but with learning disabled.
+Endpoints for Ethernet addresses must be added explicitly before
+packets will be encapsulated for those addresses.
+All valid VXLAN packets sent to the local address will be accepted.
+.El
+.Pp
+.Nm
+supports the following
+.Xr ioctl 2
+calls for configuration:
+.Bl -tag -width indent -offset 3n
+.It Dv SIOCSLIFPHYADDR Fa "struct if_laddrreq *"
+Set the IPv4 or IPv6 addresses used for the exchange of encapsulated
+traffic.
+The interface will operate in point-to-point mode if the destination
+address is unicast,
+learning mode if the destination address is multicast,
+or endpoint mode if the destination address is unspecified.
+A non-standard UDP port for VXLAN packets can be specified by the
+port in the source address, otherwise use 0 to request the default.
+The addresses may only be configured while the interface is down.
+.It Dv SIOCGLIFPHYADDR Fa "struct if_laddrreq *"
+Get the addresses configured for the exchange of encapsulated packets.
+.It Dv SIOCDIFPHYADDR Fa "struct ifreq *"
+Clear the addresses used for the exchange of encapsulated packets.
+The addresses may only be cleared while the interface is down.
+.It Dv SIOCSVNETID Fa "struct ifreq *"
+Configure a virtual network identifier for use in the VXLAN header.
+The virtual network identifier may only be configured while the
+interface is down.
+.It Dv SIOCGVNETID Fa "struct ifreq *"
+Get the virtual network identifier used in the VXLAN header.
+.It Dv SIOCDVNETID Fa "struct ifreq *"
+Remove the virtual network identifier.
+The virtual network identifier may only be disabled while the
+interface is down.
+.It Dv SIOCSLIFPHYRTABLE Fa "struct ifreq *"
+Set the routing table the encapsulated traffic operates in.
+The routing table may only be configured while the interface is down.
+.It Dv SIOCGLIFPHYRTABLE Fa "struct ifreq *"
+Get the routing table the encapsulated traffic operates in.
+.It Dv SIOCSLIFPHYTTL Fa "struct ifreq *"
+Set the Time-To-Live field in IPv4 encapsulation headers, or the
+Hop Limit field in IPv6 encapsulation headers.
+.It Dv SIOCGLIFPHYTTL Fa "struct ifreq *"
+Get the value used in the Time-To-Live field in an IPv4 encapsulation
+header or the Hop Limit field in an IPv6 encapsulation header.
+.It Dv SIOCSLIFPHYDF Fa "struct ifreq *"
+Configure whether the encapsulated traffic sent by the interface
+can be fragmented or not.
+This sets the Don't Fragment (DF) bit on IPv4 packets,
+and disables fragmentation of IPv6 packets.
+.It Dv SIOCGLIFPHYDF Fa "struct ifreq *"
+Get whether the encapsulated traffic sent by the interface can be
+fragmented or not.
+.It Dv SIOCSRXHPRIO Fa "struct ifreq *"
+Set the priority value for received packets.
+Values may be from 0 to 7,
+.Dv IF_HDRPRIO_PACKET
+to specify that the current priority of a packet should be kept,
+or
+.Dv IF_HDRPRIO_OUTER
+to use the value in the Type of Service field in IPv4
+or the Traffic Class field in IPv6 encapsulation headers.
+.It Dv SIOCGRXHPRIO Fa "struct ifreq *"
+Get the priority value for received packets.
+.It Dv SIOCSTXHPRIO Fa "struct ifreq *"
+Set the priority value used in the Type of Service field in IPv4
+headers, or the Traffic Class field in IPv6 headers.
+Values may be from 0 to 7, or
+.Dv IF_HDRPRIO_PACKET
+to specify that the current priority of a packet should be used.
+.It Dv SIOCGTXHPRIO Fa "struct ifreq *"
+Get the priority value used in the Type of Service field in IPv4
+headers, or the Traffic Class field in IPv6 headers.
+.It Dv SIOCSIFPARENT Fa "struct if_parent *"
+Configure which interface will be joined to the multicast group
+specified by the tunnel destination address.
+The parent interface may only be configured for interfaces in
+learning mode, and while the interface is down.
+.It Dv SIOCGIFPARENT Fa "struct if_parent *"
+Get the name of the interface used for multicast communication.
+.It Dv SIOCDIFPARENT Fa "struct ifreq *"
+Remove the configuration of the interface used for multicast
+communication.
+.El
+.Sh EXAMPLES
+Create a point-to-point tunnel using Virtual Network Identifier 5:
+.Bd -literal -offset indent
+# ifconfig vxlan0 tunnel 192.168.1.100 192.168.1.200 vnetid 5
+# ifconfig vxlan0 10.1.1.100/24
+.Ed
+.Pp
+The following examples creates a learning overlay network:
+.Bd -literal -offset indent
+# ifconfig vxlan0 tunnel 192.168.1.100 239.1.1.100
+# ifconfig vxlan0 parent ix0
+# ifconfig vxlan0 vnetid 7395
+# ifconfig vxlan0 10.1.2.100/24
+.Ed
+.Pp
+Prior to the assignment of UDP port 4789 by IANA, some early VXLAN
+implementations used port 8472.
+A non-standard port can be specified with the tunnel source
+address:
+.Bd -literal -offset indent
+# ifconfig vxlan0 tunnel 192.168.1.100:8472 239.1.1.100
+.Ed
+.Sh SECURITY
+.Nm
+does not provide any integrated security features.
+It is designed to be a simple protocol that can be used in trusted
+data center environments, to carry VM traffic between virtual machine
+hypervisors, and provide virtualized layer 2 networks in Cloud
+infrastructures.
+.Pp
+To protect
+.Nm
+tunnels, the traffic can be protected with IPsec to add authentication
+and encryption for confidentiality.
+.Pp
+The Packet Filter (PF) can be used to filter tunnel traffic with
+endpoint policies in
+.Xr pf.conf 5 :
+.Bd -literal -offset indent
+table <vxlantep> { 192.168.1.200, 192.168.1.201 }
+block in on em0
+pass out on em0
+pass in on em0 proto udp from <vxlantep> to port vxlan
+.Ed
+.Pp
+The Time-to-Live (TTL) value of the tunnel can be set to 1 or a low
+value to restrict the traffic to the local network:
+.Bd -literal -offset indent
+# ifconfig vxlan0 tunnelttl 1
+.Ed
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr udp 4 ,
+.Xr hostname.if 5 ,
+.Xr ifconfig 8 ,
+.Xr netstart 8
+.Sh STANDARDS
+.Rs
+.%A M. Mahalingam
+.%A D. Dutt
+.%A K. Duda
+.%A P. Agarwal
+.%A L. Kreeger
+.%A T. Sridhar
+.%A M. Bursell
+.%A C. Wright
+.%D August 2014
+.%R RFC 7348
+.%T Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks
+.Re
+.Sh HISTORY
+The
+.Nm
+device first appeared in
+.Ox 5.5 .
+.Sh CAVEATS
+The
+.Nm
+interface requires at least 50 bytes for the IP, UDP and VXLAN
+protocol overhead and optionally 4 bytes for the encapsulated VLAN tag.
+The default MTU is set to 1500 bytes but can be adjusted if the
+transport interfaces carrying the tunnel traffic do not support larger
+MTUs, the tunnel traffic is leaving the local network, or if
+interoperability with another implementation requires running a
+decreased MTU of 1450 bytes.
+In any other case, it is commonly recommended to set the MTU of the
+transport interfaces to at least 1600 bytes.