802.1Q VLAN implementation for Linux

Updated February 26, 2000
Release: 0.0.10

This code should be considered BETA. MTU problems exist for many ethernet drivers, and people have reported ARP problems, though it works at least some of the time. Other than that, things seem fairly stable!


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

Though I have no real VLAN hardware of my own, I hear that the code has worked with these systems.

Performance: At lease on my low end machines, on a 10bt network, the performance with VLAN v/s ethernet devices seems very good. One machine has only 16MB of RAM, so that is the limiting factor. The file is a 17 MB binary, using ncftp to transport them from one machine to another. Use these numbers for comparison only! Here are the numbers:
Using VLAN interface: 911 kBps
Using Ethernet Interface: 930 kBps

Other VLAN related Resources.


Change Log

To get started, you will want to download the vlan.tar.gz file (to your $HOME directory.) Unpack it with your favorite commands, for example: tar -xvzf vlan.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@scry.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. 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. 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:

NOTE: pick the correct patch for your kernel series. The 2.3 kernel is very unstable at this point.

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

Now, build the vconfig program in the $HOME/vlan directory:
cd $HOME/vlan
make

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.

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 two lines 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 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 vlan0005

You will also need to give it an ip, eg: ifconfig -i vlan0005 192.168.2.1
and configure it UP: ifconfig -i vlan0005 up

NOTE: it's hard to tell what a VLAN's ID is just by looking at it's listing that you get from: ifconfig -a. You can get more information if you look at the /proc/net/vlan/* files:

cat /proc/net/vlan/config

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


greearb@candelatech.com
Last modified: Sat Feb 26 23:53:56 MST 2000