1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
|
This file should be prepended to each time a release is made.
Date: Sept 30, 2003
Version: 1.8
Kernel Version: 2.4.21+
Changes: Compile fixes for newer gcc, VLAN rework, inclusion of entire
Candela Technologies kernel networking patch (MAC-VLANs too).
Date: March 11, 2003
Version: 1.7
Kernel Version: 2.4.14+
Changes: Added Alex's MAC-Vlan code to the repository. See README for more.
Date: March 24, 2002
Version: 1.6
Kernel Version: 2.4.14+
Changes: Removed 2.4 kernel patch from VLAN distribution..it's now in the
standard linux kernel. Other updates include vconfig changes
to fix some compile problems, and to enable cross-compiling to
ARM (this assumes you are using the Intrinsyc cross-compiler in
it's standard location).
Date: Oct 20, 2001
Version: 1.5
Kernel Version: 2.4.12-pre5
Changes:
Mostly added other peoples fixes and patches (thanks folks!)
Finally fixed mc-list leakage (Ard van Breemen)
Flush mc-list at vlan-destory (Ard van Breemen)
Add vconfig man page to distribution (Ard van Breemen)
Fix problem with /proc and renaming VLAN devices (af AT devcon D.T net)
Add relatively large change by Nick Eggelston that makes VLAN
devices more transparent to tools like tcpdump and other raw
packet snoopers. This will only be enabled when the REORDER_HDR
flag is set.
Date: August 16, 2001
Version: 1.4
Kernel Version: 2.4.9-pre4
Status: Should be stable, but a decent amount of rework went into
this one...
Changes:
Code should no longer require /proc interface in order to
get at the IOCTLs. The IOCTLs are now tied to sockets.
When using modules, it may auto-load now, too...
Fixed format string error in proc fs display.
Fixed crash bug relating to memory allocation with locks
held (we now use GF_ATOMIC).
hard_start_xmit will now grow the packet header if there
is not enough headroom. This may fix an MPLS-over-VLAN problem,
though the real solution is to make MPLS allocate
more headroom anyway...
vconfig was changed to use the new IOCTL API, and the old
vconfig WILL NOT WORK with this or any newer patches...
Date: August 5, 2001
Version: 1.0.3
Kernel Version: 2.4.7
Status: Should be stable, but a decent amount of rework went into
this one...
Changes:
Re-worked code to comply with linux network code gurus'
wishes. This included several boundary case fixes, including
some that could crash your kernel.
The default naming scheme is eth0.5 now, for VID == 5 on
eth0. Use vconfig to change the naming scheme if you want.
There were *NO* changes to the 2.2 series patch, and there
probably won't be any more changes to it, ever!
Date: April 16, 2001
Version: 1.0.1
Kernel Version: 2.2.18/19, 2.4.3-pre3
Status: Very similar to 1.0.0, should be relatively stable.
Changes:
Incorporated a fix for changing a MAC on a VLAN, it now
correctly sets PACKET_HOST.
Thanks to Martin Bokaemper for this one.
The 2.4 series patch should now compile as a module, thanks
to a tweak from someone who's mail I have lost! Anyway, 3
cheers to the un-named coder!
There were *NO* changes to the 2.2 series patch, though I did
verify that it seems to work fine with the 2.2.19 kernel.
Date: January 14, 2001
Version: 1.0.0
Kernel Version: 2.2.18, 2.4.0
Status: Fairly similar to 0.0.15, should be relatively stable.
Changes:
Really fixed (and tested) MAC change-ability. When you set the
MAC address on a VLAN, it will also attempt to set the underlying
device to PROMISCious mode (otherwise, the VLAN will not
receive any packets.)
Hashed-device lookup is disabled by default because some people
had trouble with the 'lo' device. Please feel free to re-enable by
editing the line in net/core/dev.
(search for #define BEN_FAST_DEV_LOOKUP).
vconfig should warn when creating VLAN 1, because that VLAN is
not compatible with many switches.
Date: December 31, 2000
Version: 0.0.15
Kernel Version: 2.2.18, 2.4.prerelease
Status: This one is pretty fresh..beware, especially the 2.4 patch.
Changes:
Merged most of Matti Aarnio's patches. This means no significant patch
to eth.c now, and will help port VLANs to non-ethernet devices
(ie ppp, TokenRing??).
Setting the MAC address should work now..I think it was broken before.
Miscellaneous code re-organization to make patches to existing files smaller.
Date: October 26, 2000
Version: 0.0.14
Kernel Version: 2.2.17, 2.4.pre9
Status: Seems stable.
Changes:
Removed vlan-space-per-machine, so vlan-space-per-NIC is mandatory now.
DHCP might work now, as I've added support for encapsulating regular ethernet
frames if they are sent to the vlan driver.
Fixed up the name/index hashing stuff to handle changing the name on a device.
Took out default VID & default priority, as their usefullness was in question,
and the code was broken anyway.
Date: October 11, 2000
Version: 0.0.13
Kernel Version: 2.2.17, 2.4.pre9
Status: BUSTED!! Don't use it.
Changes:
Added support for MULTICAST to the VLAN devices. Thanks to
Gleb & Co for most of that code.
Added the ability to set the MAC address on the VLAN. For now,
you'll either need to set your Ethernet NIC into PROMISC mode, or
maybe figure out some multi-cast ethernet address to set on the
NIC. This has not been tested well at all.
Added a hashed device-name lookup scheme. This greatly speeds
up ifconfig -a. I was able to run an ifconfig -a in 20 seconds on a
Celeron 500, with 4000 vlan devices configured!!
Added vlan_test.pl to help me find dumb bugs. Feel free to make this
much more powerful, and send the code back to me!
vconfig.c has been converted to C code now, instead of C++.
Thanks to MATHIEU.
Significantly cleaned up the code w/out decreasing any useful
functionality, I believe.
Removed the dhcp stuff from the VLAN distribution.
Date: August 27, 2000
Version: 0.0.12
Kernel Version: 2.2.16, 2.4.pre7
Status: This one turned out pretty stable, no known bugs.
Changes:
Added ability to re-order the VLAN packet so that it looks
like a real ethernet packet for the ingress pathway. This
should help DHCP and other programs that insist on reading
the raw buffer and then make assumptions about byte offsets.
I don't have a good way to test this fully, so consider it
experimental :) This behavior can be changed at run-time,
and is set on a per-VLAN basis. The default is NOT to reorder
the header, which has been the only behavior up untill this
point. The vconfig program can set/clear the flag, by using
a VLAN IOCTL. You can read the flag's value from the
/proc/net/vlan/vlan* files.
You can also set a default priority on a NON-VLAN device.
This priority will only be used when the default_VID for the
device is set as well. This priority won't be mapped anywhere,
just copied straight into the skb->priority. It is a uint16.
The 2.3 patch is now the 2.4 patch, and it has been tested
against 2.4.pre7.
Date: April 23, 2000
Version: 0.0.11
Kernel Version: 2.2.13 & 2.2.14, 2.3.99
Status: As of August 27, this seems like a very stable patch.
Changes:
Added real support for PRIORITY. Through IOCTL calls (see the
vconfig program), you can set explicit ingress and egress mappings
to/from the VLAN QOS bits and the sk_buff->priority field. This
is not tested very well, as I don't know much about how people really
use the priority field... Took out the round-robin aggretation that
went in in rls 0.10, as it was mainly just a hack, and doing link
aggregation at a lower level and then putting VLAN on top of that
virtual device probably makes more sense. The vconfig program
changed to support the new features..here's it's new usage:<br>
Usage: add [interface-name] [vlan_id]
rem [vlan-name]
set_dflt [interface-name] [vlan_id]
add_port [port-name] [vlan_id]
rem_port [port-name] [vlan_id]
set_egress_map [vlan-name] [skb_priority] [vlan_qos]
set_ingress_map [vlan-name] [skb_priority] [vlan_qos]
set_name_type [name-type]
set_bind_mode [bind-type]
* The [interface-name] is the name of the ethernet card that hosts
the VLAN you are talking about.
* The port-name is the name of the physical interface that a VLAN
may be attached to.
* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.
* skb_priority is the priority in the socket buffer (sk_buff).
* vlan_qos is the 3 bit priority in the VLAN header
* name-type: VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)
* bind-type: PER_DEVICE # Allows vlan 5 on eth0 and eth1 to be unique.
PER_KERNEL # Forces vlan 5 to be unique across all devices.
The 2.3 patches have been ported foward to 2.3.99, thanks to
Patrick for the vlanproc.c updates!
Date: February 26, 2000
Version: 0.0.10
Kernel Version: 2.2.13 & 2.2.14, 2.3.47
Status: Added several new features in the critical path...beware!
Changes:
Added support for PRIORITY. The way it works is that the lower
3 bits of the skb->priority are set into the PRIORITY field in
the VLAN header. No special handling is done with priority,
but it should be handled by other switches and such. This has
not been tested, but the default case (no priority in the skb)
seems to work at least.
The big change is that you can now aggregate several ethernet
ports in a single VLAN. The packets will be transmitted in a
round robin fashion. In order for this to work, you have
to change the MAC addresses on all cards to the same thing,
and put the cards in promiscious mode (because most drivers don't
__really__ honor the request to set the MAC all the way to
the NIC. This works with two different speed NICs, but I think
it will only be really useful if they are the same speed. Here
is how I set them up in my test environment:
ifdown eth1
ifconfig eth1 hw ether 00:40:05:41:00:5e # This is the MAC of eth0
ifup eth1
ifconfig eth1 promisc
/usr/local/bin/vconfig add eth0 5
/usr/local/bin/vconfig add_port eth1 5
ifconfig vlan0005 192.168.2.1
On my other machine, I have this:
ifdown eth1
ifconfig eth1 hw ether 00:48:54:66:68:68 # This is the MAC of eth0
ifup eth1
ifconfig eth1 promisc
/usr/local/bin/vconfig add eth0 5
/usr/local/bin/vconfig add_port eth1 5
ifconfig vlan0005 192.168.2.3
Note that there are now two patches, one for the 2.2 series,
and one for the 2.3 series.
Date: February 6, 2000
Version: 0.0.9
Kernel Version: 2.2.13 & 2.2.14
Status: Mostly solid. May be issues with adding/removing, but it
works at least most of the time.
Changes: Changed the way vlan names are created: They now have the
VID in the name. You can revert to the old behavior by
changing an #define in the 802_18/vlan.h file. Changed
the destruction process for vlans. Not sure if this fixed the
kernel lock problem I found while adding/removing VLAN devices,
and also hacking with DHCP, but the problem seemed to go away.
Added patch to dhcp to allow it to work with VLANs. However,
I don't grok DHCP as well as might be desired, so use at your
own risk!! Added some debugging code (you have to compile
it in if you need it)
Date: December 22, 1999
Version: 0.0.8
Kernel Version: 2.2.13+
Status: ARP seems to fail in certain cases (but not on my machines.)
Changes: Fixed compile warnings and a linking problem due to #ifdef's.
No major changes in functionality or performance.
Date: December 5, 1999
Version: 0.0.7
Kernel Version: 2.2.13+
Status: ARP seems to fail in certain cases (but not on my machines.)
Several (many?) ethernet drivers can't handle the extra 4 bytes
of VLAN, so the MTU on the network may have to be set to 1496,
or fix the ethernet drivers!!
Changes: Re-wrote the /proc code to never go above 4k buffers. This means
that each port now has it's own file entry. Fixed crash bug with
removing VLAN devices. Byte and pkt counters are now updated correctly,
and are found in the /proc/net/vlan/<device> file.
Date: October 20, 1999
Version: 0.0.6
Kernel Version: 2.2.10+
Status: ping -f still kills one of my machines, but it takes longer...and I'm
not sure if its the fault of the VLAN code, or maybe some hardware problem.
Changes: Coded around an extraneous skb alloc/free so that there should be no
extra buffer copying as compared to an ethernet interface, unless the
vlan device spans more than one interface. Put #ifdef around all printk
debugging calls, at least for non-control code (ie no more printk in the
critical paths.)
Date: October 19, 1999
Version: 0.0.6
Kernel Version: 2.2.10
Status: Ping & FTP work, ping -f kills it after some time...not sure why yet.
Changes: Got tcpdump working with VLAN pkts (use the -e option). Got basic VLAN
functionality working, though problems remain, including a KERNEL CRASH
that can be induced by ping -f on one of the vlan interfaces. My test
setup consists of two linux boxes, each running my modified kernel.
Since I have no third-party implementation to test against, it is likely
the code is not too right yet!!
Performance isn't all that great: Running a Cyrix 155 <-> a Cyrix 233,
connected through a 10bt hub, I get 910 Mbps on regular ethernet,
and only 650 Mbps on the VLAN device. This was using a 30 MB file.
Date: Long time ago.
Version: 0.0.3
Kernel Version: 2.2.2
Status: Definately broken, but lots of code in there!!
Changes: Initial partially functional release (not very functional.)
|