## Theses - ALL

#### Title

Seedemu: The Seed Internet Emulator

#### Date of Award

Winter 12-22-2021

Thesis

#### Degree Name

Master of Science (MS)

#### Department

Electrical Engineering and Computer Science

Du, Wenliang

#### Keywords

BGP, Container, DNS, Emulator, Internet

#### Subject Categories

Computer Sciences | Physical Sciences and Mathematics

#### Abstract

I studied and experimented with the idea of building an emulator for the Internet. While there are various already available options for such a task, none of them takes the emulation of the entire Internet as an important feature in mind. Those emulators and simulators can handle small-scale networks pretty well, but lacks the ability to handle large-size networks, mainly due to:

- Not being able to run many nodes, or requires very powerful hardware to do so,- Lacks convenient ways to build a large emulation, and - Lacks reusability: once something is built, it is very hard to re-use them in another emulation

I explored, in the context of for-education Internet emulators, different ways to overcome the above limitations. I came up with a framework that enables one to create emulation using code. The framework provides basic components of the Internet. Some examples include routers, servers, networks, Internet exchanges, autonomous systems, and DNS infrastructure. Building emulation with code means it is easy to build emulation with complex topologies since one can make use of the common control structures like loops, subroutines, and functions.

The framework exploits the idea of layers.'' The idea of \emph{layers}'' can be seen as an analogy of the idea of layers'' in image processing software, in the sense that each layer contains parts of the image (in this case, part of the emulation), and need to be rendered'' to obtain the resulting image.

There are two types of layers, base layers and service layers. Base layers describe the base'' of the topologies, like how routers, servers, and networks are connected, how autonomous systems are peered with each other; service layers describe the high-level services on the Internet. Examples of services layers are web servers, DNS servers, ethereum nodes, and botnet nodes. No layers are tied to any other layers, meaning each layer can be individually manipulated, exported, and re-used in another emulation. One can build an entire DNS infrastructure, complete with root DNS, TLD DNS, and deploy it on any base layer, even with vastly different underlying topologies.

The result of the rendered layer is a set of data structures that represents the objects in a network emulation, like host, router, and networks. These representations can then be compiled'' into something that one can execute using a compiler. The main target platform of the framework is Docker.

The source of the SEEDEMU project is publicly available on Github: https://github.com/seed-labs/seed-emulator.

Open Access

COinS