blob: 983a58632ae954277b8e1c1d2ce3f42f90c77b32 [file] [log] [blame]
Steve McIntyre31f35282014-12-12 22:12:33 +00001VLANd - complex networks on demand
2
Steve McIntyre98de3e92015-02-13 07:35:19 +00003What is VLANd?
4==============
5
6VLANd is a simple (hah!) python program intended to make it easy to
7manage port-based VLAN setups across multiple switches in a
8network. It is designed to be vendor-agnostic, with a clean pluggable
9driver API to allow for a wide range of different switches to be
10controlled together.
11
12Various of the switch vendors have management applications available
13which should be able to do a similar job, but they're typically not
14scriptable, or locked to only control their own vendor's
15equipment. VLANd is designed (and hoped!) to be better. We've found
16that other network management programs also exist, but either they
17don't manage VLANs in the way we want or they depend on large
18frameworks like Openstack.
19
Steve McIntyrecc524702015-07-31 16:55:54 +010020VLANd currently includes four drivers for different models of switch
21from three different vendors:
22
23 * CiscoCatalyst for the Cisco Catalyst 3750 (and compatible)
24 * CiscoSX300 for the Cisco SF300 and SG300 (and compatible)
25 * NetgearXSM for the Netgear XSM 7224S (and compatible)
26 * TPLinkTLSG2XXX for the TP-Link TL-SG2216 (and compatible)
27
28These cover a range of switches across a huge range of prices, from
29100M up to 10G ports. VLANd supports interoperable VLANs across all
30these devices, verified using the Linaro test lab and our test suite.
31
32It is expected that more drivers will be included in future
Steve McIntyre98de3e92015-02-13 07:35:19 +000033releases. Please feel free to propose more target devices, or (better)
34send patches!
35
36Why VLANd?
37==========
38
39VLANd has been written to accompany Linaro's LAVA platform.
40
41LAVA is the Linaro Automated Validation Architecture - see
42https://validation.linaro.org/ for more information.
43
44LAVA started off as a framework to help perform validation and testing
45on simple single devices such as Android development boards. Since
46then, the range of tests and devices has grown hugely. Some users have
47added multi-node tests, i.e. tests that start up multiple devices that
48run tests against each other (e.g. client-server testing). The next
49step on from that is to test devices with multiple network interfaces,
50where on top of the client-serer testing it is required that their
51connectivity can be controlled and isolated (e.g. for network
52performance testing).
53
54This can be done by simply changing physical network connections, of
55course, but that doesn't scale for sequences of tests and it makes a
56lie of the "Automated" bit in the LAVA definition.
57
58VLANd is the solution that we have implemented for this problem. It
59provides a simple VLAN management abstraction for users. LAVA can use
60VLANd to set up complex networks on demand as tests are initiated, and
61can then tear them down again when tests are complete.
62
Steve McIntyre31f35282014-12-12 22:12:33 +000063Dependencies
64============
65
Steve McIntyre98de3e92015-02-13 07:35:19 +000066postgres server and psycopg2, for the back-end database. See
Steve McIntyre9d897182014-12-22 17:51:08 +000067db/setup_db.py for help in setting up the database for access.
68
Steve McIntyre98de3e92015-02-13 07:35:19 +000069How to use
70==========
71
72For now, things are easiest run as "vland" with appropriate
Steve McIntyre9d897182014-12-22 17:51:08 +000073permissions in the database for that user.
74
Steve McIntyre98de3e92015-02-13 07:35:19 +000075The core VLANd code is simple to configure - see vland.cfg for an
76example config file. Once your copy of VLANd is running, use the
77administration utility admin.py to control what it does. For now, this
78is single-threaded and has *no* security. This *will* change in the
79future, but for very early development has not been a priority.
Steve McIntyre9d897182014-12-22 17:51:08 +000080
Steve McIntyre98de3e92015-02-13 07:35:19 +000081Future plans
82============
83
84As a start...
85
86 * More documentation
87 * More drivers to control more devices, both real and virtual
88 * Visualisation options
89 * Better (some!) security
Steve McIntyre836deec2015-02-13 07:42:51 +000090 * Background sanity checking
Steve McIntyre98de3e92015-02-13 07:35:19 +000091 * Other filtering options - MAC-based rather than just port-based
92 (needed to support virtual machines, etc.)
93
94If you have other ideas, please talk to us!
95
96Contact
97=======
Steve McIntyre9d897182014-12-22 17:51:08 +000098
99VLANd mailing list: vland-devel@linaro.org
Steve McIntyre98de3e92015-02-13 07:35:19 +0000100
101Code
102====
103
104https://git.linaro.org/lava/vland.git
105
Steve McIntyre72fb3a32015-02-13 08:14:32 +0000106License
107=======
108
109VLANd is Copyright 2014-2015 Linaro Limited, and is distributed under
110the GNU General Public License, version 2 (or any later version). See
111the accompanying COPYING file for more details.
112
Steve McIntyre98de3e92015-02-13 07:35:19 +0000113--------------------------------------------------------------------------
Steve McIntyrecc524702015-07-31 16:55:54 +0100114README for VLANd 0.3, 31st July 2015
Steve McIntyre98de3e92015-02-13 07:35:19 +0000115Steve McIntyre <steve.mcintyre@linaro.org>