Betriebssysteme und Computernetze

Operating Systems and Computer Networks

Profile and Objectives

The Operating Systems and Computer Networks Laboratory supports the lectures of the programs Applied Computer Science, Computer Science/Economics and Business Informatics. It offers students the opportunity to simulate problems in these areas and to use specific tools and solution methods that they have learned in the lectures.  

The laboratory environment is also used for bachelor and master theses, project work and third-party funded projects.

The laboratory is located in the Steinbeis Building of the University, there take place:

Internships

Operating systems are at the heart of every modern computing system. An operating system manages resources such as CPU, memory or I/O devices and controls the execution of programs.

This practical course in operating systems supports the lecture of the same name in the 2nd semester of the Applied Computer Science Program. It is divided into two parts:

- Lab exercises with and about Microsoft Windows (5 lab tasks in total)

- LINUX practical course (6 lab tasks in total)

In the Windows part, students learn how to use the central administration, configuration and analysis tools of Windows. Using self-developed test programs, the participants look over the shoulder of the operating system scheduler and measure the scheduling behavior under various conditions. What a memory leak is and what consequences it entails is also determined in an experimental step.

In a further programming exercise, the students create threads and find out what consistency implications it may have, if a small banking application is executed with or without synchronization support from the operating system.

As LINUX is becoming increasingly important, especially in the server environment, students receive a comprehensive practical introduction to this operating system in the second part of the practical course. In addition to laboratory exercises on the KDE desktop and typical UNIX applications, the main focus is on the console commands that are important for software developers. In guided experiments, students learn how to "grep" and "pipe" and "kill" and take away the rights of others...

In contrast to application programming, Systems Programming involves the creation of software components that are part of or work closely with the operating system.

The practical course in Systems Programming supports the lecture of the same name in the 3rd semester of the Applied Computer Science Program and includes a total of 5 medium-sized programming tasks.

The experiments cover the central topics of unbuffered and buffered input/output, process generation and tracking, thread libraries, synchronization via semaphores and mutexes, communication and cooperation via shared memory.

As part of a lab exercise, for example, the students have to program a race of self-generated processes that progress at different speeds on a virtual racetrack with random progress. Part of the task is to visualize the race on the screen. The students learn how to use process generation, tracking and synchronization in practice.

The experiments are carried out in a LINUX environment and the C programming language. One experiment in Systems Programming with Python is optional.

Computer networks are conquering the world. Not least due to the rapid rise of the Internet, in-depth knowledge of communication technology is becoming increasingly important.

Computer Networks I covers the basics. Building on this, the in-depth practical course Computer Networks II takes place in later semesters.

The practical course Computer Networks I supports the lecture of the same name in the 3rd semester of the Applied Computer Science degree course and in the 4th semester of the Business Informatics (-plus) degree course with a total of 6 experiments.

Basic administration, configuration and analysis tools are together with exemplary network applications (ping, ftp, telnet). The network sniffer tool Wireshark and other tools are used in practical exercises for network analysis. Students learn how to access the network environment of a computer and configure it correctly.

The exercises also include the setup of a simple local area network (LAN). The students familiarize themselves with subnetting, learn how the ARP protocol works, and through several experiments   discover, among other things, how spoofing can be used to exploit security gaps in a network. The setup of typical infrastructure components such as a DHCP clients and DHCP servers are also part of the experiment.

With the help of routers, students learn about the possible applications and procedures for "inter-networking". Commercially available routers (CISCO 871) are used, as well as LINUX computers, which are manually configured as routers by the students. In a structured approach, the teams develop the cabling as well as the interface and router configurations for several network configuration setups specified in the experiment.

As part of two lab exercises, students also receive an introduction to network programming. They develop simple client-server applications using UDP and TCP. After the practical course, participants will be familiar with socket programming of network applications, which is important in practice.

The use of computer networks enables a new type of application: it is not a single computer that solves a problem, but a number of independent computers that synchronize with each other by exchanging messages.

This is the motivation for the Distributed Systems Practical Course, which supports the lecture of the same name in the 6th semester of the Applied Computer Science course with a total of 4 lab exercises.

In the first two lab tasks, the students develop a peer-to-peer application, i.e., an application that ideally no longer has a central administrator but organizes itself autonomously. This type of application has become increasingly important in practice in recent times and forms, e.g., the basis of numerous file-sharing services.

Students first develop a static peer-to-peer chat application and then have the task of supporting a dynamically changing group composition (chat join/leave operations).

In a lab task on middleware techniques, the students implement a gRPC (Google RPC) application, which they compare with other middleware techniques such as JMS, RMI and web services.

Finally, the students realize a distributed algorithm in a larger network based on a self-developed simulation environment. Each node in the network only knows its direct neighbors and has no knowledge of the overall topology. Under these conditions, any node may initiate an aggregation function across all nodes using a distributed algorithm to be designed by the students. As an example, students shall determine the total amount of disk space available across all network nodes of the distributed system. Central control is not permitted, but central logging is used in order to verify that the algorithm is working correctly.

As the practical course takes place in an advanced semester, students can use a programming language of their choice (C, C#, C++, Java, Python, etc.) and select the middleware at communication level themselves (UDP, TCP, JMS, gRPC, WS, etc.).

The practical course Computer Networks II uses the theoretical foundations from the associated lectures (Computer Networks I and Computer Networks II) to apply modern network technology in practice.

In the first lab exercise, students are given an introduction to the "Next Generation Internet". In the medium term, the IPv6 protocol will replace IP(v4), which is still predominant. The students have the task of operating their own IPv6 LAN with IPv6 dual stack computers and IPv6-capable CISCO routers. The IPv6 data traffic is analyzed. The students must in particular work out the differences to IPv4.

NAT (Network Address Translation) is a central technology for connecting company and home networks to the public Internet. Almost everyone who operates a DSL router at home with a connection to an Internet Service Provider has a built-in "NAT box", which implements the conversion of public and private IP addresses in the network. In the NAT practical course, students learn how to use this technology: Different NAT variants are configured with CISCO routers and their behavior is analyzed and controlled.

Virtual Private Networks (VPNs) are the subject of the following lab exercise. With the help of "tunnel" technologies, external computers or external networks are securely integrated into a company network. In small groups, students configure different types of tunnels, such as site-to-site and end-to-site VPNs. They learn about the underlying security technologies and analyze the exchanged messages.

In an experiment on TCP Congestion Control, students set up a Python connection to a server in Sydney and observe the data traffic during a large file download. Newer methods such as TCP Cubic Congestion Control can thus be experienced in practice.

The final experiment is about network management. How can you determine at any time whether the computer infrastructure in a large company is working properly and without performance bottlenecks? The students learn how to use the Simple Network Management Protocol (SNMP) and configure the Open Source software Icinga to monitor an exemplary network scenario. A monitoring console then shows them whether there are any problems in the network using self-configured logic with green and red symbols.

All experiments require intensive preparation of the students with the respective material and are supplemented by pre-lab tasks. In addition, students are given tasks to carry out in their home network, e.g., to prepare the home infrastructure for IPv6

The Advanced Networking practical course complements the lecture of the same name in the Computer Science Master's program. It includes three larger lab exercises, each of which extends over two afternoons and has the character of a software project. Students prepare the lab exercises individually (PreLabs), complete the programming parts between the individual lab dates and produce a scientifically sound lab report (PostLab).

The internship currently covers the following three subject areas

Cloud Computing

Students learn how to use cloud resources and tools by working on specific tasks. Each student has his own cloud account, which he uses to link, for example, cloud resources in Ireland, California and Sydney to a distributed application. In addition to access via command line and Rest API, cloud plugins for IDEs are used to implement a fault-tolerant cloud application or a load balancing scenario, which is then analyzed and measured in terms of its performance.

Software Defined Networking

The virtualization of network equipment and the use of open platforms to develop new types of network devices are the focus of this part of the course. Based on OpenFlow and the Floodlight controller environment, students develop network programs for dedicated practical problems. Both physical OpenFlow hardware and a vSwitch-based simulation environment are used for execution. Ideally, this technology will replace proprietary routers and switches in the future.

Distributed Hash Tables

Storing data on a central server is often not ideal for reliability or scalability reasons. Peer-to-peer solutions, in which data is stored (redundantly) in multiple locations, are becoming increasingly important, also in the context of cloud solutions. This lab exercise has project character and the students develop a concrete distributed data storage based on the Chord Distributed Hash Tables approach. The performance of their own program is analyzed using measurements.

Lab Exercises and Environment

Lab exercises are usually carried out in small groups of two or three students. There are 4-6 exercises or experiments per course. For each lab, there is a detailed lab manual with pre- and post-lab assignments. The labs are supported by an online e-learning portal with additional learning materials and upload areas.

The computers are arranged in 5 islands of 4 computers each connected to a LAN. The islands are arranged in such a way that the lab groups can work together in a concentrated and efficient manner. The programming languages C, C#, C++, Java and Python and the middleware technologies JMS, RMI, gRPC and Web Services (AXIS2) are used in the experiments.

Equipment

  • 24 multi-core high-speed PCs with several network cards
  • Dual Boot Windows / OpenSuse Linux
  • Standard CISCO Routers, Switches, Hubs, WLAN Access Points
  • Zodiac and HP OpenFlow-Switches
  • Standard IDEs Eclipse, PyCharm, KDevelop and Microsoft Visual Studio
  • Native IPv6, network tool suite, gRPC, openVPN, Icinga, NS3
  • All computers can be automatically installed and reset by a central installation and configuration server.