Project Proposal
Description
-
In most network based companies (or organizations that have campus networks) like ISP, school, government, system integrator, outsourced provider and social media data center, the server room is the essential part that requires a lot of resource to maintain, including checking the physical environment and device’s statuses. Whether the network devices (servers, databases, routers and switches) function properly or not, there are always technicians doing routine maintenance tasks everyday to ensure that bugs can be found as early as possible. Based on such scenario, there are different types of sensors or detectors that exist in electronic world that can replace most of the maintenance tasks technicians regularly do. This project is an automatic controlling system used in DevOps domain based on Embedded system and Software Defined Network.
-
By taking advantages from embedded hardware system, the technicians or the team who are responsible for a certain server room do not need to be physically presented there (in the actual location) to check the potential hazards but can inspect through the data returned from sensor units. Each unit contains various sensors that achieve different purpose, and the units placed in the server room can also be programmed or scheduled from the terminal, the web page, the controller, or the state machine according to the specific requirement.
-
Since one significant part of the technicians’ job is configuring the networking devices using console and command line interface, these are duplicated tasks which can also, at least partially, be substituted by scripts. Implementing the Configuring and Monitoring System reduce the use of human resource on modern server rooms, thus the efficiency of the network operations increases.
Block Diagram
Before introducing the block diagram, keep in mind that everything above should be implemented in the server room, and the targets are to monitoring the connectivity and physical status of networking devices as well as providing necessary notification. The right block represents the routers and switches we need to monitor or configure, they all are connecting to a layer 2 switch and their corresponding ports needs to be assigned to the administrative network; in the Embedded System block, a microprocessor where multiple sensor units attached to communicates to a Raspberry Pi through a serial interface; the Pi takes environment data from its serial pins, and grabs the results of “show” or “ping” commands from the NFS server, and uses the wireless connection to exchange simple instructions or statuses with the controller; the controller drove by a portable power supply uses switches or buttons sending simple instructions to turn on/off the Embedded system, it also outputs a signal to notify the abnormal condition received from Pi; there is a vm running in the server part, it is in the administration network so that it is able to SSH into any of the networking devices as well as sharing the results with Pi.
This block contains all the devices and instruments in the server room (or outside the building). Though a layer 2 switch (L2SW-1), these devices are accessible by an external server using SSH. Besides, The sensor units that contain different sensors are deployed close to them so that the change of their physical status can be monitored immediately.
In the Embedded System block, the Micro Processor is responsible for exchanging data (from sensors) with the Pi. Due to the limited I/O pins, several PLDs attached with different type of sensors connect to the Micro Processor through the parallel ports. As soon as a (or multiple) sensor changes its states and returns the TTL signal back to the PLD, a binary data would be generated based on truth table and being sent to the Micro Processor. On Micro Processor, the data would be counted and recorded in RAM, and it only converts the alerting signal into serial transmission when receiving a constant data or same type of data from different sensor units. The Pi can also sends instructions to turn on/off or reset the system through the Serial communication.
Raspberry Pi
The main function of the Pi is acting as a web server that provides the user interface. Setting the Crontab file to execute certain scripts periodically so that the log information can be taken and shown on a web page dynamically. Specifically, the “HTTPd (Apache)”, “MySQL”, “NFS”, and “Python (GPIOzero)” services are enabled on Pi, the serial pins on GPIO are used to communicate with the Micro Processor, a few parallel pins attached with an external antenna (or I.R. Comm.) to communicate with controller, it uses RJ45 connecting the administrative network thus the scripts and the results on the server is also accessible.
The Controller part is primarily based on a FPGA board, a buzzer or a LED is used to alert the technician, the integrated buttons and switches can be used to send basic instructions such as resetting the controller/microprocessor, adjusting the checking frequency, and configuring as silent mode. As a wireless controller, a small and portable power supply is also required. A lithium ion battery with a charging circuit and a switching circuit (drove by PWM) is capable of providing a constant potential difference. A couple of voltage differentiator with independent configuration output to LEDs to indicate the actual voltage and power of the battery.
Server
As part of the configuring and monitoring system, the server’s job is to allow technicians configuring the routers and switches remotely, and checking the connectivity or even providing the corresponding solutions. To achieve it, a virtual machine with installing python libraries such as Paramiko, Netmiko (for SSH) or Telnetlib (for telnet) needs to be installed. After executing the python program, the results or the log save into a directory where is also shared with the Pi. For instance, one of the program is used to check the interface status, the vm would run to issue the “show ip int brief” on each switches, then grep and save results as a log file; the Pi takes the log from the shared directory, later it will send a notification to the controller once it notices that certain important ports are down.
Software Description
- IOS commands: networking devices, version 14.2 or higher
- Assembly: Microprocessor
- WinCUPL: PLD in embedded system
- Multisim&Ultiboard: Sensor unit, power supply circuit, wireless module
- Verilog: FPGA in controller
- Hyper-V: server
- CentOS: VM on the server
- Python: on the CentOS and on the Raspberry Pi
Course Inventory
- Client Based OS and Server Environment: to install and manage the VM on the server.
- Unix I&Unix II: to script and operate the raspberry Pi and the VM.
- Fundamentals of Web Servers: httpd service on the Pi, PHP, GPIO, Python.
- Embedded Hardware Programming: microprocessor, serial transmission.
- Wireless LANs: wireless transmission between Pi and controller.
- Power Supplies: the switching circuit and DC-DC boost converter circuit.
- Linear Circuits: the Schmitt trigger of voltage comparator in battery testing circuit.
- Integrated Logic Circuits: FPGA programming (Verilog).
- Sequential Circuits: state machine.
- Combinational Circuits: PLD programming.
- Electronic Technique: PCB designing and soldering.
- Network Routing: switch configuration.
- LAN switching and Configuration: router configuration.