summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/gif.4
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/gif.4')
-rw-r--r--static/freebsd/man4/gif.4378
1 files changed, 378 insertions, 0 deletions
diff --git a/static/freebsd/man4/gif.4 b/static/freebsd/man4/gif.4
new file mode 100644
index 00000000..cc12d91b
--- /dev/null
+++ b/static/freebsd/man4/gif.4
@@ -0,0 +1,378 @@
+.\" $KAME: gif.4,v 1.28 2001/05/18 13:15:56 itojun Exp $
+.\"
+.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
+.\" Copyright (C) 2024 Hiroki Sato <hrs@FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the project nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd August 27, 2025
+.Dt GIF 4
+.Os
+.Sh NAME
+.Nm gif
+.Nd generic tunnel interface
+.Sh SYNOPSIS
+.Cd "device gif"
+.Sh DESCRIPTION
+The
+.Nm
+interface is a generic tunnelling device for IPv4 and IPv6.
+It can tunnel IPv[46] traffic over IPv[46].
+Therefore, there can be four possible configurations.
+The behavior of
+.Nm
+is mainly based on RFC2893 IPv6-over-IPv4 configured tunnel.
+On
+.Nx ,
+.Nm
+can also tunnel ISO traffic over IPv[46] using EON encapsulation.
+Note that
+.Nm
+does not perform GRE encapsulation; use
+.Xr gre 4
+for GRE encapsulation.
+.Pp
+The
+.Nm
+interface can also tunnel Ethernet traffic over IPv4 or IPv6
+when combined with a
+.Xr if_bridge 4
+interface using EtherIP protocol.
+See
+.Xr if_bridge 4
+for detailed setup.
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is
+most easily done with the
+.Dq Nm ifconfig Cm create
+command or using the
+.Va ifconfig_ Ns Aq Ar interface
+variable in
+.Xr rc.conf 5 .
+.Pp
+To use
+.Nm ,
+the administrator needs to configure the protocol and addresses used for
+the outer header.
+This can be done by using
+.Xr ifconfig 8
+.Cm tunnel ,
+or
+.Dv SIOCSIFPHYADDR
+ioctl.
+The administrator also needs to configure the protocol and addresses for the
+inner header, with
+.Xr ifconfig 8 .
+Note that IPv6 link-local addresses
+.Pq those that start with Li fe80\&:\&:
+will be automatically configured whenever possible.
+You may need to remove IPv6 link-local addresses manually using
+.Xr ifconfig 8 ,
+if you want to disable the use of IPv6 as the inner header
+(for example, if you need a pure IPv4-over-IPv6 tunnel).
+Finally, you must modify the routing table to route the packets through the
+.Nm
+interface.
+.Ss MTU Configuration and Path MTU Discovery
+The
+.Nm
+interface uses the fixed length,
+.Li 1280 ,
+to determine whether the outgoing IPv6 packets are split.
+This means the MTU value configured on the interface will be ignored
+when the outer protocol is IPv6.
+When the
+.Dv NOCLAMP
+interface flag is set,
+.Nm
+uses the same configured value as IPv4 communications.
+This behavior prevents potential issues when the path MTU is
+smaller than the interface MTU.
+This section describes the reason why the default behavior is different.
+The
+.Dv NOCLAMP
+interface flag can be set using the following command:
+.Pp
+.Dl ifconfig Ar gif0 Cm noclamp
+.Pp
+and clear the flag using the following:
+.Pp
+.Dl ifconfig Ar gif0 Cm -noclamp
+.Pp
+where
+.Ar gif0
+is the actual interface name.
+.Pp
+A tunnel interface always has an implicit smaller MTU for the inner protocol
+than the outer protocol because of the additional header.
+Note that the interface MTU on a
+.Nm
+interface,
+the default value is
+.Li 1280 ,
+is used as MTU for the outer protocol.
+This means that the MTU for the inner protocol varies depending on the
+outer protocol header length.
+If an outgoing packet bigger than the inner protocol MTU arrives at a
+.Nm
+interface for encapsulation,
+it will be split into fragments.
+Specifically,
+if IPv4 is used as the outer protocol,
+the inner is 20 octets smaller than the interface MTU.
+In the case of the default interface MTU,
+.Li 1280 ,
+inner packets bigger than
+.Li 1260
+will be fragmented.
+In the case of IPv6,
+the inner is 40 octets smaller than the outer.
+.Pp
+This fragmentation is not harmful though it can degrade the
+performance.
+Note that while an increased MTU on
+.Nm
+interface helps to mitigate this reduced performance issue,
+it can also cause packet losses on the intermediate narrowest path
+between the two communication endpoints in IPv6.
+IPv6 allows fragmentation only on the sender,
+not on the routers in the communication path.
+A big outgoing packet will be dropped on a router with a smaller MTU.
+.Pp
+In normal IPv6 communication,
+an ICMPv6 Packet Too Big error will be sent back to the sender,
+who can adjust the packet length and re-send it.
+This process is performed in the upper protocols than L3,
+such as TCP,
+and makes the packet length shorter so that packets go through
+the path without fragmentation.
+This behavior is known as path MTU discovery.
+.Pp
+When using a
+.Nm
+interface,
+the Packet Too Big message is generated for the outer protocol.
+Since the
+.Nm
+interface does not translate this error to the inner protocol,
+the inner protocol sees it just as a packet loss with no useful
+information to adjust the length of the next packets.
+In this situation,
+path MTU discovery does not work,
+and communications of the inner protocol
+become stalled.
+.Pp
+In order to avoid this,
+a
+.Nm
+interface silently splits a packet of over 1240 octets into fragments to make
+the outer protocol packets equal or shorter than 1280 octets,
+even when the interface MTU is configured as larger than 1280.
+Note that this occurs only when the outer protocol is IPv6.
+.Li 1280
+is the smallest MTU in IPv6 and guarantees no packet loss occurs
+on intermediate routers.
+.Pp
+As mentioned earlier,
+the performance is sub-optimal if the actual path MTU is larger than
+.Li 1280 .
+A typical confusing scenario is as follows.
+The
+.Nm
+interface can have Ethernet,
+whose MTU is usually 1500,
+as the inner protocol.
+It is called an EtherIP tunnel,
+and can be configured by adding the
+.Nm
+interface as a member of
+.Xr if_bridge 4
+interface.
+The
+.Xr if_bridge 4
+interface forcibly changes the MTU of the
+.Nm
+interface with those for the other member interfaces,
+which are likely 1500.
+In this case,
+a situation in which the MTU of the
+.Nm
+interface is 1500 but fragmentation in 1280 octets always occurs.
+.Pp
+The default behavior is most conservative to prevent confusing packet loss.
+Depending on the network configuration,
+enabling the
+.Dv NOCLAMP
+interface flag might be helpful for better performance.
+It is crucial to ensure that the path MTU is equal to or larger than
+the interface MTU when enabling this flag.
+.Ss ECN friendly behavior
+The
+.Nm
+device can be configured to be ECN friendly, as described in
+.Dv draft-ietf-ipsec-ecn-02.txt .
+This is turned off by default, and can be turned on by the
+.Dv IFF_LINK1
+interface flag.
+.Pp
+Without
+.Dv IFF_LINK1 ,
+.Nm
+will show normal behavior, as described in RFC2893.
+This can be summarized as follows:
+.Bl -tag -width "Ingress" -offset indent
+.It Ingress
+Set outer TOS bit to
+.Dv 0 .
+.It Egress
+Drop outer TOS bit.
+.El
+.Pp
+With
+.Dv IFF_LINK1 ,
+.Nm
+will copy ECN bits
+.Dv ( 0x02
+and
+.Dv 0x01
+on IPv4 TOS byte or IPv6 traffic class byte)
+on egress and ingress, as follows:
+.Bl -tag -width "Ingress" -offset indent
+.It Ingress
+Copy TOS bits except for ECN CE
+(masked with
+.Dv 0xfe )
+from
+inner to outer.
+Set ECN CE bit to
+.Dv 0 .
+.It Egress
+Use inner TOS bits with some change.
+If outer ECN CE bit is
+.Dv 1 ,
+enable ECN CE bit on the inner.
+.El
+.Pp
+Note that the ECN friendly behavior violates RFC2893.
+This should be used in mutual agreement with the peer.
+.Ss Security
+A malicious party may try to circumvent security filters by using
+tunnelled packets.
+For better protection,
+.Nm
+performs both martian and ingress filtering against the outer source address
+on egress.
+Note that martian/ingress filters are in no way complete.
+You may want to secure your node by using packet filters.
+Ingress filtering can break tunnel operation in an asymmetrically
+routed network.
+It can be turned off by
+.Dv IFF_LINK2
+bit.
+.Ss Miscellaneous
+By default,
+.Nm
+tunnels may not be nested.
+This behavior may be modified at runtime by setting the
+.Xr sysctl 8
+variable
+.Va net.link.gif.max_nesting
+to the desired level of nesting.
+.Sh SEE ALSO
+.Xr gre 4 ,
+.Xr if_bridge 4 ,
+.Xr inet 4 ,
+.Xr inet6 4 ,
+.Xr ifconfig 8
+.Rs
+.%A R. Gilligan
+.%A E. Nordmark
+.%B RFC2893
+.%T Transition Mechanisms for IPv6 Hosts and Routers
+.%D August 2000
+.%U http://tools.ietf.org/html/rfc2893
+.Re
+.Rs
+.%A Sally Floyd
+.%A David L. Black
+.%A K. K. Ramakrishnan
+.%T "IPsec Interactions with ECN"
+.%D December 1999
+.%O draft-ietf-ipsec-ecn-02.txt
+.Re
+.Rs
+.%A R. Housley
+.%A S. Hollenbeck
+.%T EtherIP: Tunneling Ethernet Frames in IP Datagrams
+.%R RFC 3378
+.%D September 2002
+.Re
+.\"
+.Sh HISTORY
+The
+.Nm
+device first appeared in the WIDE hydrangea IPv6 kit.
+.\"
+.Sh BUGS
+There are many tunnelling protocol specifications, all
+defined differently from each other.
+The
+.Nm
+device may not interoperate with peers which are based on different
+specifications,
+and are picky about outer header fields.
+For example, you cannot usually use
+.Nm
+to talk with IPsec devices that use IPsec tunnel mode.
+.Pp
+If the outer protocol is IPv4,
+.Nm
+does not try to perform path MTU discovery for the encapsulated packet
+(DF bit is set to 0).
+.Pp
+If the outer protocol is IPv6, path MTU discovery for encapsulated packets
+may affect communication over the interface.
+The first bigger-than-pmtu packet may be lost.
+To avoid the problem, you may want to set the interface MTU for
+.Nm
+to 1240 or smaller, when the outer header is IPv6 and the inner header is IPv4.
+.Pp
+The
+.Nm
+device does not translate ICMP messages for the outer header into the inner
+header.
+.Pp
+In the past,
+.Nm
+had a multi-destination behavior, configurable via
+.Dv NOCLAMP
+flag.
+The behavior is obsolete and is no longer supported.
+This flag is now used to determine whether performing fragmentation when
+the outer protocol is IPv6.