fb2ee09397
before tagging them. This can help to work around brain-damage in some switches that fail to pad a frame after untagging it if its length drops below the minimum. This option is blessed by IEEE Std 802.1Q (2003 Ed.), paragraph C.4.4.3.b. It's controlled by sysctl net.link.vlan.soft_pad. Idea by: az MFC after: 1 week
242 lines
6.3 KiB
Groff
242 lines
6.3 KiB
Groff
.\"
|
|
.\" Copyright (c) 2001 Yar Tikhiy
|
|
.\" 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.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd August 11, 2006
|
|
.Dt VLAN 4
|
|
.Os
|
|
.Sh NAME
|
|
.Nm vlan
|
|
.Nd "IEEE 802.1Q VLAN network interface"
|
|
.Sh SYNOPSIS
|
|
To compile this driver into the kernel,
|
|
place the following lines in your
|
|
kernel configuration file:
|
|
.Bd -ragged -offset indent
|
|
.Cd "device miibus"
|
|
.Cd "device vlan"
|
|
.Ed
|
|
.Pp
|
|
Alternatively, to load the driver as a
|
|
module at boot time, place the following line in
|
|
.Xr loader.conf 5 :
|
|
.Bd -literal -offset indent
|
|
if_vlan_load="YES"
|
|
.Ed
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
driver demultiplexes frames tagged according to
|
|
the IEEE 802.1Q standard into logical
|
|
.Nm
|
|
network interfaces, which allows routing/bridging between
|
|
multiple VLANs through a single switch trunk port.
|
|
.Pp
|
|
Each
|
|
.Nm
|
|
interface is created at runtime using interface cloning.
|
|
This is
|
|
most easily done with the
|
|
.Xr ifconfig 8
|
|
.Cm create
|
|
command or using the
|
|
.Va cloned_interfaces
|
|
variable in
|
|
.Xr rc.conf 5 .
|
|
.Pp
|
|
To function, a
|
|
.Nm
|
|
interface must be assigned a parent interface and
|
|
numeric VLAN tag using
|
|
.Xr ifconfig 8 .
|
|
A single parent can be assigned to multiple
|
|
.Nm
|
|
interfaces provided they have different tags.
|
|
The parent interface is likely to be an Ethernet card connected
|
|
to a properly configured switch port.
|
|
The VLAN tag should match one of those set up in the switched
|
|
network.
|
|
.Pp
|
|
Initially
|
|
.Nm
|
|
assumes the same minimum length for tagged and untagged frames.
|
|
This mode is selected by the
|
|
.Xr sysctl(8)
|
|
variable
|
|
.Va net.link.vlan.soft_pad
|
|
set to 0 (default).
|
|
However, there are network devices that fail to adjust frame length,
|
|
should it fall below the allowed minimum due to untagging.
|
|
Such devices should be able to interoperate with
|
|
.Nm
|
|
after changing the value of
|
|
.Va net.link.vlan.soft_pad
|
|
to 1.
|
|
In the latter mode,
|
|
.Nm
|
|
will pad short frames before tagging them
|
|
so that their length stays not less than the minimum value
|
|
after untagging by the non-compliant devices.
|
|
.Sh HARDWARE
|
|
The
|
|
.Nm
|
|
driver supports efficient operation over parent interfaces that can provide
|
|
help in processing VLANs.
|
|
Such interfaces are automatically recognized by their capabilities.
|
|
Depending on the level of sophistication found in a physical
|
|
interface, it may do full VLAN processing or just be able to
|
|
receive and transmit frames exceeding the maximum Ethernet frame size
|
|
by the length of a 802.1Q header.
|
|
The capabilities may be user-controlled by the respective parameters to
|
|
.Xr ifconfig 8 ,
|
|
.Cm vlanhwtag
|
|
and
|
|
.Cm vlanmtu .
|
|
However, a physical interface is not obliged to react to them:
|
|
It may have either capability enabled permanently without
|
|
a way to turn it off.
|
|
The whole issue is very specific to a particular device and its driver.
|
|
.Pp
|
|
By now, the list of physical interfaces able of full VLAN processing
|
|
in the hardware is limited to the following devices:
|
|
.Xr bge 4 ,
|
|
.Xr em 4 ,
|
|
.Xr ixgb 4 ,
|
|
.Xr nge 4 ,
|
|
.Xr re 4 ,
|
|
.Xr stge 4 ,
|
|
.Xr ti 4 ,
|
|
.Xr txp 4 ,
|
|
and
|
|
.Xr vge 4 .
|
|
.Pp
|
|
The rest of the Ethernet interfaces can run
|
|
VLANs using software emulation in the
|
|
.Nm
|
|
driver.
|
|
However, most of them lack the capability
|
|
of transmitting and receiving oversized frames.
|
|
Assigning such an interface as the parent to
|
|
.Nm
|
|
will result in a reduced MTU on the corresponding
|
|
.Nm
|
|
interfaces.
|
|
In the modern Internet, this is likely to cause
|
|
.Xr tcp 4
|
|
connectivity problems due to massive, inadequate
|
|
.Xr icmp 4
|
|
filtering that breaks the Path MTU Discovery mechanism.
|
|
.Pp
|
|
The interfaces that support oversized frames are as follows:
|
|
.Bl -tag -width ".Xr fxp 4 " -offset indent
|
|
.It Xr bfe 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr dc 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr de 4
|
|
requires defining
|
|
.Dv BIG_PACKET
|
|
in the
|
|
.Pa /usr/src/sys/pci/if_de.c
|
|
source file and rebuilding the kernel
|
|
or module.
|
|
The hack works only for the 21041, 21140, and 21140A chips.
|
|
.It Xr fxp 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr gem 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr hme 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr le 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr rl 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr sis 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr sk 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr ste 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr tl 4
|
|
has support for long frames.
|
|
.It Xr tx 4
|
|
supports long frames for
|
|
.Nm
|
|
natively.
|
|
.It Xr xl 4
|
|
supports long frames only if the card is built on a newer chip
|
|
(Cyclone and above).
|
|
.El
|
|
.Pp
|
|
The
|
|
.Nm
|
|
driver automatically recognizes devices that natively support oversized frames
|
|
for
|
|
.Nm
|
|
use and calculates the appropriate frame MTU based on the
|
|
capabilities of the parent interface.
|
|
The other interfaces listed above can handle oversized frames,
|
|
but they do not advertise this ability of theirs.
|
|
The MTU setting on
|
|
.Nm
|
|
can be corrected manually if used in conjunction with such parent interface.
|
|
.Sh SEE ALSO
|
|
.Xr kqueue 2 ,
|
|
.Xr miibus 4 ,
|
|
.Xr ifconfig 8 ,
|
|
.Xr sysctl 8
|
|
.Sh BUGS
|
|
No 802.1Q features except VLAN tagging are implemented.
|
|
.Pp
|
|
.Dv EVFILT_NETDEV
|
|
events on a
|
|
.Nm
|
|
interface will be sent through
|
|
.Xr kqueue 2
|
|
only if the parent interface uses
|
|
.Xr miibus 4
|
|
for link state notification.
|