6.033 | Spring 2018 | Undergraduate

Computer System Engineering

Week 5: Networking Part I

Lecture 8 Outline

  1. Welcome to Networking
    • How networks work is a big part of systems.
    • Network = source of failure for many systems. Why?
    • Today: Intro to network / history of Internet. Look for common themes that you’ll see over and over.
    • Don’t worry about details of specific protocols today; we’ll delve into those later on.
  2. General Networks
    • Model networks as graphs. Endpoints on outskirts, switches (a type of “middlebox”) in the middle. Edge = direct connection between two nodes (perhaps a wire, perhaps not).
    • Problems:
      • Addressing
      • Naming
      • Routing
      • Transport
    • For small networks:
      • Naming/addressing: Just assign each node a unique name.
      • Routing: How do nodes figure out how to get data to other nodes?
      • Transport: Lots of questions here. One problem to think about is reliability: What do we do when a packet gets dropped?
    • In 6.033, we care mostly about the Internet. The Internet is not a “normal” network.
  3. The Internet, Pre-1993
    • Launch of Sputnik => creation of ARPA (now DARPA).

    • 1970S: ARPAnet. Started small. Combined addressing and transport. Began to grow by connecting existing networks.

      • Using hosts.txt, distance-vector, sliding-window, etc.
    • 1978: Decide to make the Internet flexible. Encourages a layered model. Typical model:

       7 [ Application ] - super high level
       5/6 [ Session/Presentation ]
       4 [ Transport ] - reliable (maybe) delivery
       3 [ Network - IP ] - addressing/routing
       2 [ Link ] - point-to-point links
       1 [ Physical ] - physical medium

    • Often in 6.033 we care about the Application, Transport, Network, and link layers.

    • Ideally, layering lets us swap out protocols.

    • ~1983: TCP, provides reliable transport. Now apps don’t have to reimplement reliable delivery.

  4. Growth => Change
    • 1978-79: Link-state routing, EGP. More scalable routing.
    • 1982: DNS. More scalable naming. Also enabled growth through distributed management.
  5. Growth => Problems
    • Mid 80s: Congestion collapse. So many packets in network, but none were useful. TCP added a congestion control mechanism (more on this next week).
      • Why add it to TCP, not as a separate layer? It was already hard to add a new layer, even in the 80s.
    • Early 90s: Policy routing. Internet was beginning to be commercialized, parts of it didn’t want to provide transit to commercial transit. Policy routing (BGP) is a means to do this.
      • Notice: Commercialization is causing problems.
    • Addressing. Assign addresses in chunks of different sizes. “Class B” chunks — 65K — are typically “just right”, and we ran out of those. The protocol CIDR was developed to divide these up.
      • Most interesting thing about CIDR: That it was possible to make this change at all. Changing addressing => changing switches. Happened because all switches were made by Cisco and forwarding was done in software.
  6. The Internet, Post-1993
  7. Problems We Deal with Today
    • DDoS: Send a lot of traffic to one machine to consume its resources. Hard to prevent. Internet wasn’t designed with accountability in mind.
    • Security: Internet was not designed for security. DNS, BGP, etc., have no secure infrastructure.
    • Mobility: No one every imagined this.
    • Address Space Depletion: IPv4 -> IPv6.
    • Congestion control: Should probably change given the changes we’ve seen in the Internet (more about this later).
  8. So What’s New on the Internet?
    • Lots. P2P, wireless, mobile, streaming, cloud computing, datacenter networks, security threats/defenses…
    • Almost everything happens on the Internet today! Crazy.
    • We expect to see continued changes: Massive growth, software-defined networks, sensors, robots, embedded devices, privacy, censorship.
  9. Recurring Themes
    • Layering and hierarchy (particularly hierarchy as a means of addressing scale).
    • Scalability: If enforcing modularity was the theme of the first part of 6.033, scalability is the theme of the second part.
    • Performance/efficiency: As the Internet grew, performance requirements informed its (re-)design.
    • Diversity of Applications: As the Internet grew, more and more applications used it. These applications have different demands: Some care about throughput, some care about latency, some care about both, some need reliability, some don’t, etc. We have to build a network that works for all of them.
    • Money: Because people pay to use the Internet, designing protocols can sometimes be trickier than it “should” be.
    • End-to-end argument: What part of the network should implement what features (endpoints, switches, etc.)?

Course Info

As Taught In
Spring 2018
Learning Resource Types
Lecture Notes
Written Assignments
Projects with Examples
Instructor Insights