802.1Q VLAN implementation for Linux

Updated Fed 27, 2003
Release: 1.7

MTU problems exist for many ethernet drivers. Other than that, things seem fairly stable!

PLUG:   Check out my company that makes traffic generation and WAN simulation test equipment based on the Linux operating system:
Candela Technologies
Let us help you test your DSL, Cable Access, Satellite and other network systems!

TIP jar on my home page.

Join the vlan mailing list, After that, to post, send mail to vlan@ns1.wanfear.com.

Submit a bug/issue/enhancement with the: VLAN Bugzilla

I hear that the 2.2/2.4 kernel patches have worked with these (and other, I'm sure) systems:

Performance: The difference in running traffic over VLANs v/s regular ethernet is very slight. If someone has done some sort of benchmark, I'll be happy to place it here!

VLAN related Resources.


Download vconfig binaries (source is more flexible, but this will work for most people).

Change Log

VLAN Setup and Configuration

To get started, you will want to download the latest vlan.X.X.tar.gz file (to your $HOME directory.) Unpack it with your favorite commands, for example: tar -xvzf vlan.1.6.tar.gz Alternatively, you can get it from the CVS Repository using something like this:
  1. Install and configure cvs on your machine.
  2. Specify the vlan repository:
    export CVSROOT=:pserver:anonymous@ns1.wanfear.com:/home/cvs/vlan
  3. Log in to the repository:
    cvs login     (PASSWORD: anonymous)
  4. Check out the source:
    mkdir vlan; cd vlan; cvs -z3 checkout vlan

Now, you should have a vlan directory in your home directory. You only have to patch the kernel if you are using Linux 2.4.14 or earlier. Now, read the README or other docs to figure out what kernel it patches against. A list of mirrors are kept at www.kernel.org. Unzip and un-tar this in your home directory as well, which should create a linux directory in your $HOME directory. Example: tar -xvzf linux-2.2.14.tar.gz

Now add the VLAN kernel changes to the kernel if your kernel requires it. I finally figured out how to do patches that diff can handle (I think I did it right at least!). You will find the patch in the vlan directory. It will be called: vlan.patch, or something equally straight-foward. Apply the patch to your kernel:

cd $HOME/linux
patch -p 1 < $HOME/vlan/[vlan.patch]

Your new, patched, kernel should be in your INCLUDE path before trying to compile the vconfig program. One way to get things working is to link $HOME/linux to the 'linux' directory that you just un-zipped and patched. A command might be something like: cd $HOME; ln -s /home/greear/kernel/2.4/linux.dev linux

Build the vconfig program in the $HOME/vlan directory:
cd $HOME/vlan

Now, time to compile your new kernel! Use the make xconfig command in your $HOME/linux directory to select your kernel options. The option related to 802.1Q VLANs is found under the Networking options. If the option is not highlighted, make sure you select "Experimental Drivers" in one of the first xconfig menus.

Assuming your kernel compiled cleanly (yell if it didn't and you think my code broke it!!), you are now ready to try it out!! Install your kernel in the normal manner (fix up your /etc/lilo.conf file appropriately and run lilo as root.) Reboot your computer and choose your new kernel.

As your computer comes back to life, there will be little sign that you are now 802.1Q capable, other than a line spit out during the boot process. There should be a config programs in your $HOME/vlan directory: vconfig. vconfig is used to create and destroy VLAN devices. So, lets create a VLAN device on your first ethernet NIC. vconfig<return> will list a short spiel on how to use it. The vconfig command I usually use is:

vconfig add eth0 5

This attempts to create a VLAN device with VLAN-ID of 5 on the eth0 device. If you want to delete a VLAN, use something like:

vconfig rem eth0.5

You will also need to give it an ip, eg: ifconfig -i eth0.5
and configure it UP: ifconfig -i eth0.5 up

NOTE: You can get lots of VLAN related configuration information from the /proc/net/vlan/* files by using 'cat' or 'more' to look at them.

Please get in contact with me if you have suggestions, patches, or other comments.

greearb@candelatech.com   Ben Greear's Home Page
Last modified: Tue Apr 8 08:44:00 PDT 2003