Skip to content

Latest commit

 

History

History
97 lines (97 loc) · 4.32 KB

Lecture6.md

File metadata and controls

97 lines (97 loc) · 4.32 KB

Lecture 6 (Jan 25, 2018)

Content Distribution Networks (CDNs)

  • Challenge: How do we stream conent (selected from millions of videos) to hundreds of thousands of simultaneous users?
    • Option 1: Single, large "mega-server"
      • Single point of failure
      • Point of network congestion
      • Long path to distant clients
      • Multiple copies of video sent over outgoing link
      • This solution doesn't scale
    • Option 2: Store/serve multiple copies of videos at multiple geographically distributed sites (CDN)
      • Enter deep: push CDN servers deep into many access networks
        • Close to users
        • Used by Akamai, 1700 locations
      • Bring home: smaller number (dozens) of larger clusters in POPs near (but not within) access networks
        • Used by Limelight
  • CDN: stores copies of content at CDN nodes
    • Ex. Netflix stores copies of MadMen
  • Subscriber requests conent from CDN
    • Directed to nearby copy, retrieves content
    • May choose different copy if network path congested
  • OTT challenges: Coping with a congested internet
    • From which CDN node to retrieve conent?
    • Viewer behavior in presence of congestion?
    • What conent to place in which CDN node?

Transport Layer

Transpot Services and Protocols

  • Provide logical communication between app processes running on different hosts
  • Transport protocols run in end systems
    • Sender side: breaks app messages into segments, passes to network ayer
    • Receiver side: reassembles segments into messages, passes to app layer
  • More than one transport protocol available to apps
    • Internet: TCP and UDP

Internet Transport-Layer Protocols

  • Reliable, in-order delivery (TCP)
    • Congestion control
    • Flow control
    • Connection setup
  • Unreliable, unordered delivery: UDP
    • No-frills extension of "best-effort" IP
  • Services not available:
    • Delay guarantees
    • Bandwidth guarantees

Multiplexing/Demultiplexing

  • Multiplexing at sender: handle data from multiple sockets, add transport header (later used for demultiplexing)
  • Demultiplexing at receiver: use header info to deliver received segments to correct socket

Demultiplexing (Demux) Breakdown

  • Host receives IP datagrams
    • Each datagram has a source IP address, destination IP address
    • Each datagram carries one transport-layer segment
    • Each segment has source, destination port number
  • Host uses IP addresses and port numbers to direct segment to appropriate socket
Connectionless Demultiplexing
  • Recall: created socket has host-local port number
  • Recall: when creating datagram to send into UDP socket, must specify
    • Destination IP address
    • Destination port number
  • When host receives UDP segment
    • Checks destination port number in segment
      • IP datagrams with same dest, port number, but different source IP address and/or source port number will be directed to the same socket at destination
    • Directs UDP segment to socket with that port number
Connection-Oriented Demultiplexing
  • TCP socket identified by 4-tuple:
    1. Source IP address
    2. Source port number
    3. Dest IP address
    4. Dest port number
  • Demux: receiver uses all four values to direct segment to appropriate socket
  • Server host may support many simultaneous TCP sockets
    • Each socket defined by its own 4-tuple
  • Web servers have different sockets for each connecting client
    • Non-persistent HTTP will have different sockets for each request

UDP: User Datagram Protocol [RFC 768]

  • No frills, bare bones internet transfer protocol
  • Best effort service, UDP segments may be
    • Lost
    • Delivered out-of-order to application
  • Connectionless:
    • No handshaking between UDP sender, receiver
    • Each UDP segment handled independently of others
  • Uses of UDP:
    • Streaming multimedia apps (loss tolerant, rate sensitive)
    • DNS
    • SNMP
  • Reliable transfer over UDP:
    • Add reliability at application layer
    • Application-specific error recovery

UDP Checksum

  • Goal: detect errors (ex. flipped bits) in transmitted segment
  • Sender:
    • Treat segment contents, including header fields, as sequence of 16-bit integers
    • Checksum: addition of segment conents
    • Sender puts checksum value into UDP checksum field
  • Receiver:
    • Compute checksum of received segment
    • Check if computed checksum equals checksum field value
      • If NO - error detected
      • If YES - no error detected (but still may be errors)