blob: 445ff28b6cbc40a3b7444bfcf9b8827d764a9da2 [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
20For *now*, VLANd includes two drivers for different families of Cisco
21switches. That's not great as a cross-platform selling point, but
22they're all we have available at the moment. Initial work is underway
23to support some TP-Link switches too, using the same driver API, and
24it is expected that more drivers will be included in future
25releases. Please feel free to propose more target devices, or (better)
26send patches!
27
28Why VLANd?
29==========
30
31VLANd has been written to accompany Linaro's LAVA platform.
32
33LAVA is the Linaro Automated Validation Architecture - see
34https://validation.linaro.org/ for more information.
35
36LAVA started off as a framework to help perform validation and testing
37on simple single devices such as Android development boards. Since
38then, the range of tests and devices has grown hugely. Some users have
39added multi-node tests, i.e. tests that start up multiple devices that
40run tests against each other (e.g. client-server testing). The next
41step on from that is to test devices with multiple network interfaces,
42where on top of the client-serer testing it is required that their
43connectivity can be controlled and isolated (e.g. for network
44performance testing).
45
46This can be done by simply changing physical network connections, of
47course, but that doesn't scale for sequences of tests and it makes a
48lie of the "Automated" bit in the LAVA definition.
49
50VLANd is the solution that we have implemented for this problem. It
51provides a simple VLAN management abstraction for users. LAVA can use
52VLANd to set up complex networks on demand as tests are initiated, and
53can then tear them down again when tests are complete.
54
Steve McIntyre31f35282014-12-12 22:12:33 +000055Dependencies
56============
57
Steve McIntyre98de3e92015-02-13 07:35:19 +000058postgres server and psycopg2, for the back-end database. See
Steve McIntyre9d897182014-12-22 17:51:08 +000059db/setup_db.py for help in setting up the database for access.
60
Steve McIntyre98de3e92015-02-13 07:35:19 +000061How to use
62==========
63
64For now, things are easiest run as "vland" with appropriate
Steve McIntyre9d897182014-12-22 17:51:08 +000065permissions in the database for that user.
66
Steve McIntyre98de3e92015-02-13 07:35:19 +000067The core VLANd code is simple to configure - see vland.cfg for an
68example config file. Once your copy of VLANd is running, use the
69administration utility admin.py to control what it does. For now, this
70is single-threaded and has *no* security. This *will* change in the
71future, but for very early development has not been a priority.
Steve McIntyre9d897182014-12-22 17:51:08 +000072
Steve McIntyre98de3e92015-02-13 07:35:19 +000073Future plans
74============
75
76As a start...
77
78 * More documentation
79 * More drivers to control more devices, both real and virtual
80 * Visualisation options
81 * Better (some!) security
Steve McIntyre836deec2015-02-13 07:42:51 +000082 * Background sanity checking
Steve McIntyre98de3e92015-02-13 07:35:19 +000083 * Other filtering options - MAC-based rather than just port-based
84 (needed to support virtual machines, etc.)
85
86If you have other ideas, please talk to us!
87
88Contact
89=======
Steve McIntyre9d897182014-12-22 17:51:08 +000090
91VLANd mailing list: vland-devel@linaro.org
Steve McIntyre98de3e92015-02-13 07:35:19 +000092
93Code
94====
95
96https://git.linaro.org/lava/vland.git
97
Steve McIntyre72fb3a32015-02-13 08:14:32 +000098License
99=======
100
101VLANd is Copyright 2014-2015 Linaro Limited, and is distributed under
102the GNU General Public License, version 2 (or any later version). See
103the accompanying COPYING file for more details.
104
Steve McIntyre98de3e92015-02-13 07:35:19 +0000105--------------------------------------------------------------------------
106README for VLANd 0.2, 13th February 2015
107Steve McIntyre <steve.mcintyre@linaro.org>