Cameron McDuffie

Software Defined Networking

As an undergraduate Integrated Information Technology student, I have had the opportunity to take many technology classes, undergo multiple research projects, and work as a full time IT Manager at the College of Engineering and Computing. Two key experiences, ITEC 742, Enterprise Network Management, and my second semester of research, taught me the concept of software defined networking, and its importance to the internet and connected world. My in-class and out-of-class experiences went hand-in-hand to teach me this concept- adding to my experience as a GLD student pursuing a pathway in Research.

As an Integrated Information Technology major, I am required to take multiple management-based IT classes. ITEC 742, Enterprise Network Management, is a graduate class that I am taking through the accelerated master's program. The course is taught by Dr. Crichigno, the same professor who has provided me with two semesters of research, and an upcoming third this semester. In this class we cover advanced, in-depth topics regarding networking. A tool that we utilize to simulate examples regarding networking topics is called mininet.

Mininet is a Linux based program that simulates networks. Linux is an operating system, such as Microsoft Windows, for example. Inside Mininet you can create a topology, or “skeleton” of a network. This topology can consist of hosts, standard switches, P4 switches, routers, and links. Below is an example of a Mininet lab topology. [Fig.1] It consists of two hosts, h1 and h2, and two switches, s1 and s2. These are all virtual yet behave just as a physical recreation would.

Figure 1. A basic topology consisting of two hosts connected via two switches.

Below is a recent concept that we covered in class laid out in Mininet. [Fig. 2] The concept is RTT (Round trip time) fairness. It is an advanced component of TCP (Transmission Control Protocol) congestion control, which has too great of a prerequisite to explain in this paper. A basic way to understand what is being calculated is the fairness of each host's link based on the general bottleneck between the two routers. The fairness is calculated by Jain's Fairness index. In this case, the fairness is rated at .77 on a scale from 0-1 based on 3 hosts, with bottlenecks of 1, 3 and 5Gbps respectively.

We can create this scenario in Mininet. Not only can we limit each link to certain rates, but we can also change the congestion control algorithm used, such as Reno, cubic, BBR etc. Both learning how to use and having access to Mininet is a great asset for any networking student/professional. This tool is not only used in class, but in my past and future semesters of research.

Figure 2. Jain's fairness index applied to a network consisting of three secondary links connected to one main uplink.

I was fortunate to receive a second research opportunity from Dr. Crichigno in the spring of 2022. This semester of research was a drastic change in topic in comparison to the first. We were no longer working with NGFWs, but P4 programmable switches. Before researching software defined networking, I was under the belief that networking equipment was only closed source, limiting the end-user's control over the flow of traffic and packet inspection. After discovering this open-source language and switch architecture, it became clear to me that we are discovering an entirely new way of doing things in the networking world. When I say that this is cutting edge technology, I mean it. You can google P4, but the insignificant number of results shows that this is only the beginning stage of this area of technology.

A typical networking device utilizes a standardized instruction set and firmware programming to make filtering decisions. Companies such as Cisco, Juniper and Palo Alto manufacture such devices that are then deployed daily across the globe. While it is great that we have multiple vendors for infrastructure solutions, we are limited to what they produce. This is where Software Defined Networking comes in.

P4 is an open-source networking language. It is very robust, as it basically grants the user complete control over a network switch. Instead of having a simple set of options on a Cisco switch, for example, we are able to define and parse headers, and create forwarding actions based on match-action tables. There are many other properties that can be tweaked and created, but our research project focused on packet filtering. This can be practiced in the same utility that was taught in ITEC 742, mininet.

In order to filter traffic, we first had to define the headers of different protocol data units such as ethernet frames, IPv4 packets, TCP segments etc. Below is an image of an IPv4 packet structure down to the bits. [Fig. 3] From here we defined each part of the packet and continued to do the same down the network stack for each protocol data unit. Once we had these definitions, we then had to parse this information. This involves stripping the headers from the packet.

Our next step required decision making. This involved match-action tables, which were used to make those forwarding decisions. These tables could filter based on source and destination address, IPv4 protocol, and TCP flags. All the required filtering decisions for the project fall under those tables. From there, we compiled our P4 program and uploaded it to the switch in Mininet. From here we could modify higher-level properties that were established in the program. For example, we could block all TCP packets but allow UDP packets.

Figure 3. An IPv4 packet. The protocol, for example could be defined as bit<8> protocol; under the ipv4_t header.

Working with Mininet during our research project was a great way to apply what ITEC 742 taught about the utility. Utilizing the same tool both within and outside of the classroom furthered my understanding of its usefulness and real-word application. These experiences have contributed to my pathway of research and have provided a great foundation for further research opportunities.