blob: e7bb828d2830636fccabad77708701d3f23306c3 [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
Steve McIntyreda745712015-07-31 17:16:15 +01006VLANd is a python program intended to make it easy to manage
7port-based VLAN setups across multiple switches in a network. It is
8designed to be vendor-agnostic, with a clean pluggable driver API to
9allow for a wide range of different switches to be controlled
10together.
Steve McIntyre98de3e92015-02-13 07:35:19 +000011
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
Steve McIntyrea6b485d2018-02-02 16:49:55 +000021from four different vendors:
Steve McIntyrecc524702015-07-31 16:55:54 +010022
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)
Steve McIntyrea6b485d2018-02-02 16:49:55 +000027 * Mellanox for the Mellanox SN2100 (and compatible)
Steve McIntyrecc524702015-07-31 16:55:54 +010028
29These cover a range of switches across a huge range of prices, from
Steve McIntyrea6b485d2018-02-02 16:49:55 +000030100M up to 100G ports. VLANd supports interoperable VLANs across all
Steve McIntyrecc524702015-07-31 16:55:54 +010031these devices, verified using the Linaro test lab and our test suite.
32
Steve McIntyre04874362015-12-24 12:59:21 +000033VLANd also includes a "Dummy" switch driver which can be used for
34testing and validation. Read the comments in drivers/Dummy.py for more
35details on how to use it.
36
Steve McIntyrecc524702015-07-31 16:55:54 +010037It is expected that more drivers will be included in future
Steve McIntyre98de3e92015-02-13 07:35:19 +000038releases. Please feel free to propose more target devices, or (better)
39send patches!
40
41Why VLANd?
42==========
43
44VLANd has been written to accompany Linaro's LAVA platform.
45
46LAVA is the Linaro Automated Validation Architecture - see
47https://validation.linaro.org/ for more information.
48
49LAVA started off as a framework to help perform validation and testing
50on simple single devices such as Android development boards. Since
51then, the range of tests and devices has grown hugely. Some users have
52added multi-node tests, i.e. tests that start up multiple devices that
53run tests against each other (e.g. client-server testing). The next
54step on from that is to test devices with multiple network interfaces,
55where on top of the client-serer testing it is required that their
56connectivity can be controlled and isolated (e.g. for network
57performance testing).
58
59This can be done by simply changing physical network connections, of
60course, but that doesn't scale for sequences of tests and it makes a
61lie of the "Automated" bit in the LAVA definition.
62
63VLANd is the solution that we have implemented for this problem. It
64provides a simple VLAN management abstraction for users. LAVA can use
65VLANd to set up complex networks on demand as tests are initiated, and
66can then tear them down again when tests are complete.
67
Steve McIntyre31f35282014-12-12 22:12:33 +000068Dependencies
69============
70
Steve McIntyre98de3e92015-02-13 07:35:19 +000071postgres server and psycopg2, for the back-end database. See
Steve McIntyre9d897182014-12-22 17:51:08 +000072db/setup_db.py for help in setting up the database for access.
73
Steve McIntyre94ef65e2015-09-25 01:08:14 +010074If you want to use the visualisation feature, you'll need to install
75python-gd (used for generating the graphics) and a font for it to
76use. The default font suggested is Inconsolata, but others should work
77too.
78
Steve McIntyre98de3e92015-02-13 07:35:19 +000079How to use
80==========
81
82For now, things are easiest run as "vland" with appropriate
Steve McIntyre9d897182014-12-22 17:51:08 +000083permissions in the database for that user.
84
Steve McIntyre98de3e92015-02-13 07:35:19 +000085The core VLANd code is simple to configure - see vland.cfg for an
86example config file. Once your copy of VLANd is running, use the
Steve McIntyre53787d22018-02-02 17:08:04 +000087administration utility "vland-admin" to control what it does. For now,
88this is single-threaded and has *no* security. This *will* change in
89the future, but for very early development has not been a priority.
Steve McIntyre9d897182014-12-22 17:51:08 +000090
Steve McIntyre94ef65e2015-09-25 01:08:14 +010091The visualisation interface has very few configuration options as
92yet - again, see the default vland.cfg.
93
Steve McIntyre98de3e92015-02-13 07:35:19 +000094Future plans
95============
96
97As a start...
98
99 * More documentation
100 * More drivers to control more devices, both real and virtual
Steve McIntyre94ef65e2015-09-25 01:08:14 +0100101 * Improved visualisation options
Steve McIntyre98de3e92015-02-13 07:35:19 +0000102 * Better (some!) security
Steve McIntyre836deec2015-02-13 07:42:51 +0000103 * Background sanity checking
Steve McIntyre98de3e92015-02-13 07:35:19 +0000104 * Other filtering options - MAC-based rather than just port-based
105 (needed to support virtual machines, etc.)
106
107If you have other ideas, please talk to us!
108
109Contact
110=======
Steve McIntyre9d897182014-12-22 17:51:08 +0000111
112VLANd mailing list: vland-devel@linaro.org
Steve McIntyre98de3e92015-02-13 07:35:19 +0000113
114Code
115====
116
117https://git.linaro.org/lava/vland.git
118
Steve McIntyre72fb3a32015-02-13 08:14:32 +0000119License
120=======
121
Steve McIntyrea6b485d2018-02-02 16:49:55 +0000122VLANd is Copyright 2014-2018 Linaro Limited, and is distributed under
Steve McIntyre72fb3a32015-02-13 08:14:32 +0000123the GNU General Public License, version 2 (or any later version). See
124the accompanying COPYING file for more details.
125
Steve McIntyre98de3e92015-02-13 07:35:19 +0000126--------------------------------------------------------------------------
Steve McIntyrea6b485d2018-02-02 16:49:55 +0000127README for VLANd 0.7, 2nd February 2018
Steve McIntyre98de3e92015-02-13 07:35:19 +0000128Steve McIntyre <steve.mcintyre@linaro.org>