Chapter 2 Application Layer A note on the use of these Powerpoint slides: We’re making these slides freely available to all (faculty, students, readers). They’re in PowerPoint form so you see the animations; and can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: Computer Networking: A Top Down Approach If you use these slides (e.g., in a class) that you mention their source (after all, we’d like people to use our book!) If you post any slides on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material. Thanks and enjoy! JFK/KWR All material copyright 1996-2016 J.F Kurose and K.W. Ross, All Rights Reserved 7th edition Jim Kurose, Keith Ross Pearson/Addison Wesley April 2016 Application Layer
Chapter 2: outline 2.1 principles of network applications 2.2 Web and HTTP 2.3 electronic mail SMTP, POP3, IMAP 2.4 DNS 2.5 P2P applications 2.6 video streaming and content distribution networks 2.7 socket programming with UDP and TCP Application Layer
Pure P2P architecture no always-on server arbitrary end systems directly communicate peers are intermittently connected and change IP addresses examples: file distribution (BitTorrent) Streaming (KanKan) VoIP (Skype) Application Layer
File distribution: client-server vs P2P Question: how much time to distribute file (size F) from one server to N peers? peer upload/download capacity is limited resource us: server upload capacity u2 d2 u1 d1 di: peer i download capacity file, size F us server di uN network (with abundant bandwidth) ui dN ui: peer i upload capacity Application Layer
File distribution time: client-server server transmission: must sequentially send (upload) N file copies: time to send one copy: F/us time to send N copies: NF/us F us di network ui client: each client must download file copy dmin = min client download rate min client download time: F/dmin time to distribute F to N clients using client-server approach Dc-s > max{NF/us,,F/dmin} increases linearly in N Application Layer
File distribution time: P2P server transmission: must upload at least one copy time to send one copy: F/us F us di client: each client must download file copy min client download time: F/dmin network ui clients: as aggregate must download NF bits max upload rate (limiting max download rate) is us + Sui time to distribute F to N clients using P2P approach DP2P > max{F/us,,F/dmin,,NF/(us + Sui)} increases linearly in N … … but so does this, as each peer brings service capacity Application Layer
Client-server vs. P2P: example client upload rate = u, F/u = 1 hour, us = 10u, dmin ≥ us Application Layer
P2P file distribution: BitTorrent file divided into 256Kb chunks peers in torrent send/receive file chunks tracker: tracks peers participating in torrent torrent: group of peers exchanging chunks of a file Alice arrives … … obtains list of peers from tracker … and begins exchanging file chunks with peers in torrent Application Layer
P2P file distribution: BitTorrent peer joining torrent: has no chunks, but will accumulate them over time from other peers registers with tracker to get list of peers, connects to subset of peers (“neighbors”) while downloading, peer uploads chunks to other peers peer may change peers with whom it exchanges chunks churn: peers may come and go once peer has entire file, it may (selfishly) leave or (altruistically) remain in torrent Application Layer
BitTorrent: requesting, sending file chunks requesting chunks: at any given time, different peers have different subsets of file chunks periodically, Alice asks each peer for list of chunks that they have Alice requests missing chunks from peers, rarest first sending chunks: tit-for-tat Alice sends chunks to those four peers currently sending her chunks at highest rate other peers are choked by Alice (do not receive chunks from her) re-evaluate top 4 every10 secs every 30 secs: randomly select another peer, starts sending chunks “optimistically unchoke” this peer newly chosen peer may join top 4 Application Layer
BitTorrent: tit-for-tat (1) Alice “optimistically unchokes” Bob (2) Alice becomes one of Bob’s top-four providers; Bob reciprocates (3) Bob becomes one of Alice’s top-four providers higher upload rate: find better trading partners, get file faster ! Application Layer
Distributed Hash Table (DHT) DHT paradigm Circular DHT and overlay networks Peer churn
Simple Database Simple database with(key, value) pairs: key: human name; value: social security # Key Value John Washington 132-54-3570 Diana Louise Jones 761-55-3791 Xiaoming Liu 385-41-0902 Rakesh Gopal 441-89-1956 Linda Cohen 217-66-5609 ……. ……… Lisa Kobayashi 177-23-0199 key: movie title; value: IP address
Hash Table More convenient to store and search on numerical representation of key key = hash(original key) Original Key Key Value John Washington 8962458 132-54-3570 Diana Louise Jones 7800356 761-55-3791 Xiaoming Liu 1567109 385-41-0902 Rakesh Gopal 2360012 441-89-1956 Linda Cohen 5430938 217-66-5609 ……. ……… Lisa Kobayashi 9290124 177-23-0199
Distributed Hash Table (DHT) Distribute (key, value) pairs over millions of peers pairs are evenly distributed over peers Any peer can query database with a key database returns value for the key To resolve query, small number of messages exchanged among peers Each peer only knows about a small number of other peers Robust to peers coming and going (churn)
Assign key-value pairs to peers rule: assign key-value pair to the peer that has the closest ID. convention: closest is the immediate successor of the key. e.g., ID space {0,1,2,3,…,63} suppose 8 peers: 1,12,13,25,32,40,48,60 If key = 51, then assigned to peer 60 If key = 60, then assigned to peer 60 If key = 61, then assigned to peer 1
Circular DHT “overlay network” each peer only aware of immediate successor and predecessor. 1 12 13 25 32 40 48 60
Resolving a query 1 value 12 60 13 48 25 O(N) messages What is the value associated with key 53 ? 1 value 12 60 13 48 25 O(N) messages on avgerage to resolve query, when there are N peers 40 32
Circular DHT with shortcuts 1 12 13 25 32 40 48 60 What is the value for key 53 value each peer keeps track of IP addresses of predecessor, successor, short cuts. reduced from 6 to 3 messages. possible to design shortcuts with O(log N) neighbors, O(log N) messages in query
Peer churn handling peer churn: example: peer 5 abruptly leaves peers may come and go (churn) each peer knows address of its two successors each peer periodically pings its two successors to check aliveness if immediate successor leaves, choose next successor as new immediate successor 1 3 4 5 8 10 12 15 example: peer 5 abruptly leaves
Peer churn handling peer churn: example: peer 5 abruptly leaves peers may come and go (churn) each peer knows address of its two successors each peer periodically pings its two successors to check aliveness if immediate successor leaves, choose next successor as new immediate successor 1 3 15 4 12 10 8 example: peer 5 abruptly leaves peer 4 detects peer 5’s departure; makes 8 its immediate successor 4 asks 8 who its immediate successor is; makes 8’s immediate successor its second successor.
Video Streaming and CDNs: context video traffic: major consumer of Internet bandwidth Netflix, YouTube: 37%, 16% of downstream residential ISP traffic ~1B YouTube users, ~75M Netflix users challenge: scale - how to reach ~1B users? single mega-video server won’t work (why?) challenge: heterogeneity different users have different capabilities (e.g., wired versus mobile; bandwidth rich versus bandwidth poor) solution: distributed, application-level infrastructure Application Layer
Multimedia: video video: sequence of images displayed at constant rate …………………….. spatial coding example: instead of sending N values of same color (all purple), send only two values: color value (purple) and number of repeated values (N) ……………….……. frame i frame i+1 temporal coding example: instead of sending complete frame at i+1, send only differences from frame i video: sequence of images displayed at constant rate e.g., 24 images/sec digital image: array of pixels each pixel represented by bits coding: use redundancy within and between images to decrease # bits used to encode image spatial (within image) temporal (from one image to next) Application Layer
Multimedia: video CBR: (constant bit rate): video encoding rate fixed …………………….. spatial coding example: instead of sending N values of same color (all purple), send only two values: color value (purple) and number of repeated values (N) ……………….……. frame i frame i+1 temporal coding example: instead of sending complete frame at i+1, send only differences from frame i CBR: (constant bit rate): video encoding rate fixed VBR: (variable bit rate): video encoding rate changes as amount of spatial, temporal coding changes examples: MPEG 1 (CD-ROM) 1.5 Mbps MPEG2 (DVD) 3-6 Mbps MPEG4 (often used in Internet, < 1 Mbps) Application Layer
Streaming stored video: simple scenario: Internet video server (stored video) client Application Layer
Streaming multimedia: DASH DASH: Dynamic, Adaptive Streaming over HTTP server: divides video file into multiple chunks each chunk stored, encoded at different rates manifest file: provides URLs for different chunks client: periodically measures server-to-client bandwidth consulting manifest, requests one chunk at a time chooses maximum coding rate sustainable given current bandwidth can choose different coding rates at different points in time (depending on available bandwidth at time) Application Layer
Streaming multimedia: DASH DASH: Dynamic, Adaptive Streaming over HTTP “intelligence” at client: client determines when to request chunk (so that buffer starvation, or overflow does not occur) what encoding rate to request (higher quality when more bandwidth available) where to request chunk (can request from URL server that is “close” to client or has high available bandwidth) Application Layer
Content distribution networks challenge: how to stream content (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 ….quite simply: this solution doesn’t scale Application Layer
Content distribution networks challenge: how to stream content (selected from millions of videos) to hundreds of thousands of simultaneous users? 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 (10’s) of larger clusters in POPs near (but not within) access networks used by Limelight Application Layer
Content Distribution Networks (CDNs) CDN: stores copies of content at CDN nodes e.g. Netflix stores copies of MadMen subscriber requests content from CDN directed to nearby copy, retrieves content may choose different copy if network path congested … Akamai: 100,000+ servers in 1000+ clusters in 1000+ networks in 70+ countries serving trillions of requests a day. How many people use Netflix? manifest file where’s Madmen? Application Layer 30
“over the top” Content Distribution Networks (CDNs) … Internet host-host communication as a service peak load: 7million viewers, 2 Tbytes via OTT challenges: coping with a congested Internet from which CDN node to retrieve content? viewer behavior in presence of congestion? what content to place in which CDN node? more .. in chapter 7 31
CDN content access: a closer look Bob (client) requests video http://netcinema.com/6Y7B23V video stored in CDN at http://KingCDN.com/NetC6y&B23V 1. Bob gets URL for video http://netcinema.com/6Y7B23V from netcinema.com web page 1 2. resolve http://netcinema.com/6Y7B23V via Bob’s local DNS 2 5 6. request video from KINGCDN server, streamed via HTTP Bob’s local DNS server netcinema.com 3. netcinema’s DNS returns URL http://KingCDN.com/NetC6y&B23V 4&5. Resolve http://KingCDN.com/NetC6y&B23 via KingCDN’s authoritative DNS, which returns IP address of KingCDN server with video 4 3 netcinema’s authoratative DNS KingCDN.com KingCDN authoritative DNS Application Layer
Case study: Netflix upload copies of multiple versions of video to CDN servers Amazon cloud CDN server Netflix registration, accounting servers 3. Manifest file returned for requested video CDN server 2. Bob browses Netflix video 2 3 1 CDN server 1. Bob manages Netflix account 4. DASH streaming Application Layer