RFC 6646

DECoupled Application Data Enroute (DECADE) Problem Statement

πŸ“… published July 2012, from ietf

DECADE Problem Statement πŸ’– (RFC 6646)

okay bestie, this is RFC 6646, titled "DECoupled Application Data Enroute (DECADE) Problem Statement" πŸŽ€. It's published as Informational (so it's a "here's the problem" doc, not a "you must implement this" doc) and dated July 2012. The ISSN is 2070-1721 ✨.

The authors are H. Song, N. Zong (both from Huawei), Y. Yang (Yale University), and R. Alimi (Google) 🫢. The header doesn't list any RFCs that it obsoletes or updates, so it's standing on its own πŸ¦‹.


Abstract

okay so peer-to-peer (P2P) apps are everywhere now and they make up a huge chunk of traffic on lots of networks 😭. One way to cut down on the transit and uplink P2P traffic is to put storage inside the network itself 🧚. Traditional caches (like P2P caches and Web caches) do provide that storage, BUT they can be super complicated (P2P caches have to explicitly support each individual P2P application protocol πŸ’€), and they don't let users manage resource usage policies for the content sitting in the cache πŸ™ˆ. This doc talks about bringing in-network storage to P2P apps and shows why we need a standard protocol to access that storage πŸ’….

Status of This Memo

this one is not an Internet Standards Track spec, it's just published for info purposes 🌸.

It IS a product of the Internet Engineering Task Force (IETF) though, so it represents the consensus of the IETF community ✨. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) πŸ”₯. Not every IESG-approved doc is a candidate for any level of Internet Standard, see Section 2 of RFC 5741 πŸ’œ.

If you want the current status, any errata, or a way to send feedback, go to http://www.rfc-editor.org/info/rfc6646 πŸ“.

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved 🌈.

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they're in effect on the publication date πŸ“œ. Please actually read these, because they lay out your rights and restrictions for this doc πŸ™ˆ. Any Code Components pulled out of this doc have to include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in that license πŸ’….

Table of Contents

1. Introduction ....................................................2
2. Terminology and Concepts ........................................3
3. The Problems ....................................................4
   3.1. P2P Infrastructural Stress and Inefficiency ................4
   3.2. P2P Cache: A Complex Type of In-Network Storage ............5
   3.3. Ineffective Integration of P2P Applications ................6
4. Usage Scenarios .................................................6
   4.1. BitTorrent .................................................6
   4.2. Content Publisher ..........................................7
5. Security Considerations .........................................8
   5.1. Denial-of-Service Attacks ..................................8
   5.2. Copyright and Legal Issues .................................8
   5.3. Traffic Analysis ...........................................8
   5.4. Modification of Information ................................8
   5.5. Masquerade .................................................9
   5.6. Disclosure .................................................9
   5.7. Message Stream Modification ................................9
6. Acknowledgments .................................................9
7. Informative References .........................................10

1. Introduction ✨

okay so P2P apps, both P2P streaming and P2P file-sharing, make up a big fraction of the traffic on lots of Internet Service Provider (ISP) networks today πŸ“Ά. One way to lower the bandwidth that P2P apps eat is to add storage capabilities inside the networks 🫢. If P2P apps can store and retrieve data from inside the network, that can cut traffic on the last-mile uplink, plus traffic on backbone and transit links πŸ’–.

Existing P2P caches already do in-network storage and have been deployed in some networks 🌸. BUT the current P2P caching setup is rough for both P2P cache vendors and P2P app developers 😭. For vendors, it's hard to keep up with a bunch of P2P app protocols that keep evolving, because the docs are lacking, the protocols keep changing, and apps keep dropping new features πŸ’€. For app developers, closed P2P caching systems stop apps from using in-network storage well πŸ™ˆ. Mainly, P2P caches usually don't let users explicitly store content into in-network storage πŸ‘€. They also don't let apps specify resource and access control policies for how that in-network storage gets used πŸ’…. If these challenges aren't fixed, P2P apps can get less efficient and the network infrastructure can take on more load πŸ”₯.

The good news is that a standard, open protocol for accessing in-network storage can fix this [Data_Lockers] πŸ¦‹. With it, P2P apps can store and retrieve content in the in-network storage and also control the resources (like bandwidth and connections) that peers in a P2P app consume ✨. As a simple example, a peer in a P2P app can upload to other peers through its in-network storage, which saves its last-mile uplink bandwidth 🧚.

In this doc, we split the native P2P app protocol into two functional components: signaling and data access πŸŽ€. Signaling covers stuff like handshaking and figuring out whether peers and content are available 🀝. The data access component is what moves content from one peer to another πŸ“¦.

Basically, when signaling and data access are coupled together, in-network storage gets complicated to support across different app services πŸŒ€. BUT these apps all have common data access requirements, which makes a standard protocol totally doable πŸ‘‘.

2. Terminology and Concepts πŸ“š

these terms have special meaning in the definition of the in-network storage system πŸ“.

  • In-network storage: a service inside a network that provides storage and bandwidth to network applications. It can reduce upload, transit, and backbone traffic and improve network app performance 🌈. Its position is in the core of a network, for example co-located with the border router (network attached storage) or inside a data center 🏒.
  • P2P cache (peer-to-peer cache): a kind of in-network storage that understands the signaling and transport of specific P2P app protocols 🧠. It caches content for those specific P2P apps so it can serve peers and reduce traffic on certain links πŸ’œ.

3. The Problems 😀

P2P has become a major network app (especially P2P file sharing and streaming), and that opened up lots of opportunities πŸš€. The P2P paradigm can build highly scalable and robust apps at low cost, compared to the traditional client-server paradigm πŸ’Έ.

BUT P2P apps also have real design challenges 😬. A big one is the extra stress they put on the network infrastructure πŸ“‰. Lack of infrastructure support can also make P2P app performance unstable, especially during peer churns and flash crowds (when a big group of users starts grabbing the same content in a short window), which stresses bandwidth-constrained access uplinks 🌊. One potential fix for reducing network stress and improving P2P performance is letting peers on bandwidth-constrained access put their data somewhere free of bandwidth constraints where other peers can also reach it πŸ¦‹. We'll go through these problems in more detail now ✨.

3.1. P2P Infrastructural Stress and Inefficiency πŸ—οΈ

okay so a specific problem with the P2P paradigm is the stress that P2P app traffic puts on ISP infrastructure 😡. Multiple measurements (e.g., [ipoque_Internet_Study]) have shown that P2P traffic has become a major type of traffic on some networks πŸ“Š. On top of that, network-agnostic peering (at the P2P transmission level) is inefficient, which leads to unnecessary traversal across network domains or spanning a network's backbone [RFC5693] πŸ™ƒ.

Using network information alone to build more efficient P2P swarms isn't enough to cut P2P traffic on access networks πŸ™…. The reason is that in a traditional P2P system, total access upload traffic equals total access download traffic πŸ”. It's also been reported that P2P traffic is becoming the dominant traffic on the access networks of some networks, hitting as high as 50-60% on the downlinks and 60-90% on the uplinks [DCIA] [ICNP] [ipoque_P2P_Survey] [P2P_File_Sharing] πŸ”₯. So it's getting more and more important to reduce upload access traffic, not just cross-domain and backbone traffic πŸ’….

P2P is also inefficient when traffic gets sent upstream once for every remote peer that's interested in the same info 🫠. For example, P2P app transfer completion times stay affected by potentially (relatively) slow upstream transmission ⏳. In the same way, the performance of real-time P2P apps may be affected by potentially (relatively) higher upstream latencies πŸ“‘.

3.2. P2P Cache: A Complex Type of In-Network Storage ✨

Okay bestie, so the big fix for P2P infrastructure stress and inefficiency is to add in-network storage 🧚. A survey of existing in-network storage systems is in [RFC6392], if you want the full tour πŸ’œ.

Right now, in-network storage shows up as P2P caches. Sometimes they sit there transparently, and sometimes they act as an explicit P2P peer πŸ¦‹. Either way, to serve one specific P2P application, the P2P cache server has to support that application's own signaling and transport protocols. Which is a LOT of work for the P2P cache vendor 😭.

First, there are SO many P2P apps out there 🌈. Think BitTorrent, eMule, Flashget, and Thunder for file sharing, plus Abacast, Kontiki, Octoshape, PPLive, PPStream, and UUSee for P2P streaming. So a P2P cache vendor is stuck supporting a huge pile of application protocols, which means more product complexity and higher development cost πŸ’Έ.

Second, a P2P application protocol can keep evolving to add new features or fix bugs πŸ› οΈ. That forces the vendor to keep watching application updates so they can track every change. Yet another source of product complexity and cost πŸ™„.

Third, lots of P2P apps use proprietary protocols or support end-to-end encryption πŸ”. That can make P2P caches ineffective. So these three problems together make it hard to use the P2P cache as a network middlebox that supports P2P application distribution 😀.

Finally, an end host has better connectivity and connection quality to a P2P cache than to a remote peer πŸ“Ά. Without a way to manage bandwidth usage, the P2P cache might end up increasing the volume of download traffic, which is totally counter to the whole goal of reducing upload access traffic πŸ™ƒ.


3.3. Ineffective Integration of P2P Applications πŸŽ€

It's becoming super clear that P2P apps get a better user experience when they can use in-network resources πŸ’–. For example, several P2P streaming systems go looking for extra in-network resources during a flash crowd, like right before a major live streaming event 🎬. In asymmetric networks, when a channel's aggregated upload bandwidth can't keep up with download demand, a P2P app may reach for additional in-network resources to keep the system stable 🫢.

BUT, some P2P apps that use in-network infrastructure need flexibility in how they implement resource allocation policies πŸ’…. Honestly, a big competitive edge for many successful P2P systems is their expertise in using peer and infrastructure resources as efficiently as possible πŸ‘‘. Many live P2P systems have special algorithms that pick out the peers acting as stable, higher-bandwidth sources ⭐. Those higher-bandwidth sources also often use algorithms to decide which peers they send content to πŸ“. And the developers keep fine-tuning all of this over time πŸ”₯.

So, to let developers evolve and fine-tune their algorithms and policies, in-network storage should expose basic mechanisms and give P2P applications as much flexibility as possible πŸ¦‹. This follows the end-to-end systems principle, and it leaves room for innovation and for meeting specific business goals 🌸. Existing in-network storage techniques for P2P apps just don't have these capabilities yet 😩.


4. Usage Scenarios πŸ’œ

Usage scenarios are here to show the problems in both Content Distribution Network (CDN) and P2P scenarios 🧩.

4.1. BitTorrent 🌊

Picture this: a BitTorrent client A uploads a block to multiple peers. That block crosses the last-mile uplink once for each peer 😡. Then peer B, who just got the block from A, also has to upload it through its own last-mile uplink to others when sharing it. Not an efficient use of the last-mile uplink at all πŸ™ˆ. But with an in-network storage server, the BitTorrent client can upload the block to that storage instead πŸ“¦. Peers can then grab the block from in-network storage, which cuts down the amount of data on the last-mile uplink ✨. And if the in-network storage supports it, a peer can also save the block in its own in-network storage while it's still being retrieved πŸ’Ύ. After that, the block can be uploaded from in-network storage to other peers πŸš€.

As mentioned before, BitTorrent and other P2P apps currently can't explicitly control which content goes into existing P2P caches, and they also can't manage access and resource control policies 😀. Apps really need to keep their flexibility to control content distribution policies and the topology among peers πŸ’….

4.2. Content Publisher πŸ“£

Content publishers can use in-network storage too πŸ™Œ. Take a P2P live streaming app as an example. A Content Publisher usually keeps a small number of sources, and each one pushes blocks from the current play buffer out to a set of P2P peers πŸ“‘.

Some content publishers go with a hybrid approach that mixes P2P and CDN modes 🌈. For instance, Internet TV can be built as a hybrid CDN/P2P app, where content comes from central servers through a CDN and there's also a P2P mode among end hosts and set-top boxes πŸ“Ί. In-network storage could help hybrid CDN/P2P apps too, both to support P2P distribution and to enable standard content publisher interfaces and controls πŸŽ€.

BUT, right now there's no standard interface for different content publishers to access in-network storage 😭. One streaming content publisher might need the existing in-network storage to support streaming signaling or other capabilities, like transcoding, bitmap information, intelligent retransmission, and so on 🎬. Meanwhile, a different content publisher might only need in-network storage to distribute files πŸ“. It does make sense that the application services are only supported by the content publishers' original servers and clients, while the intelligent data plane transport for those publishers is handled by in-network storage 🧚.

A content publisher also gets a lot out of a standard interface for accessing in-network storage servers run by different providers 🫢. That standard interface has to let content publishers keep control over the content placed in their own in-network storage. It also has to let them grant access and resources only to the end hosts and peers they want πŸ”.

In the hybrid CDN/P2P scenario, if only the end hosts can store content in the in-network storage server, then the content has to be downloaded and then uploaded over the last-mile access link before another peer can retrieve it from an in-network storage server 😩. So in this deployment scenario, it may be a good idea for a content publisher or CDN provider to store content in in-network storage servers πŸ’–.


5. Security Considerations πŸ”’

There are several security considerations related to in-network storage 🚨. Let's get into them, because they're serious πŸ’€.

5.1. Denial-of-Service Attacks πŸ›‘

An attacker can try to consume a large portion of the in-network storage, or exhaust the connections of the in-network storage, through a denial-of-service (DoS) attack 😱. Authentication, authorization, and accounting mechanisms should be considered in the cross-domain environment πŸ”‘. Limiting access from an administrative domain puts up barriers for content distribution 🚧.

Copyright and other laws may stop certain content from being distributed in various localities 🌍. In-network storage operators may adopt system-wide ingress or egress filters to carry out the policies they need for storing or retrieving content πŸ—‚οΈ. Applications may also apply Digital Rights Management (DRM) to the data stored in the network storage 🎟️. However, the specification and implementation of those policies (such as filtering and DRM) is not in scope for the problem this document is trying to solve πŸ™…β€β™€οΈ.

5.3. Traffic Analysis πŸ‘€

If content is stored in provider-based in-network storage, there may be a privacy risk πŸ•΅οΈβ€β™€οΈ. A malicious service provider could look at some link that a victim user is interested in, guess that another user who accesses the same data may share that interest, and then use that guess to run a phishing attack on the other user 🎣. Yikes 😭.

5.4. Modification of Information ✏️

This threat means that an unauthorized entity may alter in-transit in-network storage access messages that were generated on behalf of an authorized principal πŸ™€. The alteration could cause unauthorized management operations, including falsifying the value of an object 🧾. This threat may result in false data being supplied, either because the data on a legitimate store was modified or because a bogus store was introduced into the network 🫣.

5.5. Masquerade 🎭

This threat means that an unauthorized entity gains access to a system or performs a malicious act by illegitimately posing as an authorized entity 😈. In the context of this specification, when accessing in-network storage, one malicious end host can masquerade as another authorized end host or application server to get into a protected resource in the in-network storage πŸ”“.

5.6. Disclosure πŸ‘‚

This threat is about someone eavesdropping on exchanges between in-network storage and application clients πŸ‘‚πŸ». Protecting against it may be required as a matter of application policy πŸ›‘οΈ.

5.7. Message Stream Modification πŸŒ€

This threat means messages may be maliciously re-ordered, delayed, or replayed to a greater extent than would happen in a natural network system πŸŒͺ️. The goal is to carry out unauthorized management operations on in-network storage 😀. If the middlebox (such as a Network Address Translator (NAT)) or proxy between an end host and in-network storage is compromised, a stream modification attack becomes easy to pull off πŸ’”.


6. Acknowledgments 🫢

We would like to thank the following people for contributing to this document πŸ’œ:

Ronald Bonica ✨

David Bryan ✨

Kar Ann Chew ✨

Lars Eggert ✨

Roni Even ✨

Adrian Farrel ✨

Yingjie Gu ✨

David Harrington ✨

Leif Johansson ✨

Francois Le Faucheur ✨

Hongqiang Liu ✨

Tao Ma ✨

Borje Ohlman ✨

Akbar Rahman ✨

Peter Saint-Andre ✨

Robert Sparks ✨

Sean Turner ✨

Yu-shun Wang ✨

Richard Woundy ✨

Yunfei Zhang ✨

7. Informative References ✨

okay bestie, this is the reading list πŸ“š these are the sources the doc points to for extra context, and none of them are required to implement the protocol. here's the full lineup πŸ’–

   [DCIA]     Parker, A., "P2P Media Summit presentation", Distributed
              Computing Industry Association, October 2006,
              <http://www.dcia.info/activities/p2pmsla2006/
              CacheLogic.ppt>.

   [Data_Lockers]
              Yang, Y., "Open Content Distribution using Data Lockers",
              CoXNet Workshop, Beijing, China, November 2010,
              <http:// cs-www.cs.yale.edu/homes/yry/projects/p4p/
              open-data-lockers-nov-2010-coxnet.pdf>.

   [ICNP]     Wu, H., "Challenges and Opportunities of Internet
              Developments in China", ICNP 2007 Keynote Speech,
              October 2007,
              <http://www.ieee-icnp.org/2007/keynote_D.html>.

   [P2P_File_Sharing]
              Casadesus-Masanell, R. and A. Hervas-Drane, "Peer-to-Peer
              File Sharing and the Market for Digital Information
              Goods", Journal of Economics & Management Strategy,
              Vol. 19, No. 2, pp. 333-373, Summer 2010.

   [RFC5693]  Seedorf, J. and E. Burger, "Application-Layer Traffic
              Optimization (ALTO) Problem Statement", RFC 5693,
              October 2009.

   [RFC6392]  Alimi, R., Ed., Rahman, A., Ed., and Y. Yang, Ed., "A
              Survey of In-Network Storage Systems", RFC 6392,
              October 2011.

   [ipoque_Internet_Study]
              Schulze, H. and K. Mochalski, "Internet Study 2008/2009",
              2009, <http://www.ipoque.com/resources/internet-studies>.

   [ipoque_P2P_Survey]
              "ipoque's 2007 P2P Survey to be presented at Technology
              Review's Emerging Technologies Conference at MIT",
              August 2007, <http://www.ipoque.com/en/news-events/
              press-center/press-releases/2007/
              ipoque%C2%B4s-2007-p2p-survey-to-be-presented-at-
              technology>.

The best part is the RFC 6392 survey on in-network storage 🧚 it's giving data lockers and caching, which is exactly the vibe here πŸ’…


Authors' Addresses πŸ¦‹

these are the people who wrote the doc, plus where to reach them, so slide into their emails if you have questions πŸ’Œ ✨

   Haibin Song
   Huawei
   101 Software Avenue, Yuhua District
   Nanjing, Jiangsu Province  210012
   China

   EMail: haibin.song@huawei.com


   Ning Zong
   Huawei
   101 Software Avenue, Yuhua District
   Nanjing, Jiangsu Province  210012
   China

   EMail: zongning@huawei.com


   Y. Richard Yang
   Yale University

   EMail: yry@cs.yale.edu


   Richard Alimi
   Google

   EMail: ralimi@google.com

and that's the whole doc, bestie πŸŒˆπŸ‘‘ the squad that made it is absolutely iconic 🫢

πŸ“¦ where this page comes from