LiSA (http://lisa.mindbit.ro/) is an open-source application that started out as a graduate project in 2005 and aimed at layer 2 and layer 3 packet switching using the Linux Kernel and a standard PC architecture. LiSA resolved Linux’s VLAN perfromance and scalability issues with broadcast packets on both trunk and access ports. Another features it offers are basic VLAN switching features (VLAN switching, VLAN tagging and inter-VLAN routing) and STP/RSTP support. In order to provide a familiar interface to system and network administrators, LiSA also includes a Cisco-like CLI.
LiSA’s architecture covers both kernel space and user space. Structurally, the project can be divided into two main components: a kernel module (LMS, or Linux Multilayer Switch) and an userspace application for configuring the parameters (CLI, or Command Line Interface).
The kernel module’s implements the forwarding logic. From a high-point of view the kernel module takes as input packets from the network, makes a decision based on data from the forwarding table and the VLAN table and it outputs the packet on the corresponding port. Also, the kernel module provides an interface to the userspace, through which users can read and modify different switch-specific parameters.
LiSA’s userspace component consists of a CLI module, a shared memory area and a daemon whose role is to handle all the userspace implementations of different protocols. Most CLI commands act upon configuration parameters of different protocols or even the switch itself. A shared memory area was chosen as the place where all of these parameters are stored. This area has to be protected from concurrent accesses since multiple CLI sessions are supported by LiSA.
Because most network administrators are familiar with the interface provided by Cisco IOS’s CLI, a similar interface is also presented to the user through the CLI module, acting as the link between the user and the actual switch functionality.