Skip to content

BackgroundOverlayNetworks

sethnielson edited this page Sep 16, 2019 · 1 revision

Background: Overlay Networks

What is a network?

A computer network is a communications system where entities ("nodes", "devices", "processes", etc) can communicate with other inter-connected entities. Typically, a network requires:

  1. Addressing
  2. Semantic relationships between the entities
  3. Protocols for delivering data to addresses over semantic links

An address is how communications are routed from one entity to another. When you hear "network address," you might think of an Internet host name (such as "amazon.com") or an Internet address (such as "192.168.1.1"). But here are other examples of network addresses:

  1. 800-555-7384 (phone numbers!)
  2. [email protected] (email addresses)
  3. @HopkinsEngineer (Twitter address)
  4. A2BitGamer (Xbox Live Gamer Tag)
  5. c5eb5a4cc76a5cdb16e79864b9ccd26c3553f0c396d0a21bafb7be71c1efcd8c (Hash of an IP address in a p2p network)

The connection between the devices is semantic, meaning that it has some kind of meaning. IP networks are perhaps very general, but their network connections still have semantic implications. Other networks, such as email, twitter, and blockchain are even more semantic than technological. For example, you are "connected" to all of the people in your email contact list. That is a more semantic/conceptual kind of connection than an IP address.

Networks also have to communicate with one another using one or more protocols. Obviously, addresses, protocols, and the semantics of the network links are all tied together.

What is an Overlay Network?

An Overlay network is a network laid on top of another network. An overlay network has its own addressing scheme and could, in theory, operate without the lower network (or perhaps with a different underlying network).

+--------------------------+                         +----------------------+
| To:   [email protected] |                         |                      |
| From: [email protected]     | --- transmit email ---> | [email protected]   |
+--------------------------+                         +----------------------+
==============================================================================

  [ Desktop IP address ] --> [ Various Mail Servers ] --> [ Mobile Phone ]

In this example, the email network is overlaid on top of the IP network. But the email routing is independent of the routing of the lower layer protocol (the @hostname notwithstanding).

These ideas are distinct from how TCP integrates with IP. TCP does not have its own addressing and relies on IP for that functionality. On the other hand, IP is an overlay network on top of underlying MAC networks (ethernet and Wifi).

Why are Overlay Networks important?

Overlay networks are an important concept.

  1. It allows the users of the network to think semantically
  2. It allows abstraction and simplification of design
  3. Correctly designed, it permits an overlay network to operate on top of many lower-level networks

How are we using Overlay Networks in class?

Playground is an overlay network. It allows us to create a "fantasy" (make believe, virtual, pretend, artificial) network on top of a real network. Then, we can experiment and play within our fantasy overlay network in ways we could not do with the real network.

+--------------------------+                         +----------------------+
| To:   20191.1.2.3        |                         | VNIC                 |
| From: 20191.0.0.1        | -- transmit packet ---> | Address: 20191.1.2.3 |
+--------------------------+                         +----------------------+
==============================================================================

  [ Virtual NIC ] ----> [ TCP/IP IP Intermediaries ] ----> [ Virtual NIC ]

How will we use Playground?

  1. We're going to write something similar to the TCP protocol. In the real world, you'd have to rip out kernel modules from Windows or Linux, write a lot of C/C++ code, and deal with the joys of kernel debugging and blue-screens of death. We, on the other hand, can just insert a python module into our overlay network

  2. We are going to eavesdrop on each other and try and hack networks. In the real world, it's a lot harder to set up certain kinds of attacks. For example, with the way most switches work these days, even network sniffing can be harder than you might think. In Playground, it's trivial