1. Technical Field
This application relates generally to distributed data processing systems and to the delivery of content to users over computer networks.
2. Brief Description of the Related Art
Transmission control protocol (TCP) is a well-known protocol for communicating between network hosts. It is commonly used on the Internet, where clients may communicate using TCP with servers to retrieve web page content. TCP is often used in conjunction with Internet Protocol (IP) in order to transport HTTP application layer data. In theory, however, TCP can be used for transport of virtually any kind of data.
Traditional TCP connections subsist on a single path between two hosts. The term ‘path’ is used to mean a sequence of one or more links between a sender and a receiver, which is typically defined by a 4-tuple of source and destination address and port pairs. The hosts send and receive data across this path.
Recently, an enhancement to TCP has been developed called multipath TCP, or MPTCP. MPTCP is essentially a set of extensions to traditional TCP. As its name suggests, MPTCP provides a way to establish a multipath TCP connection between two hosts, each path carrying a subflow, which is a flow of TCP segments. The subflows are all part of the same TCP connection. MPTCP provides a way for the data flowing across each of the paths to be managed and ordered within the overall TCP connection, transparent to upper network layers and, in particular, transparent to an application like a web browser.
The use of multiple paths between two hosts can reduce latency and increase communication fault tolerance and reliability. Multipath communication is particularly useful if a host is multi-homed and/or has multiple addresses. For example, a wireless device may have both a WiFi interface and a cellular interface; the wireless device will have a different address for each. Using multipath TCP, each interface can be used as a separate path to a given server, such that both interfaces are leveraged to send and receive data. Even if separate interfaces are not available, a given host with multiple addresses can establish multiple subflows over them.
More information about MPTCP can be found in IETF RFCs 6181, 6182, 6356, 6824, and 6897.
Also known in the art are distributed computing systems. One kind of distributed computing system is a content delivery network (CDN). The teachings hereof relate to, among other things, improved techniques for communicating data within or across a distributed computing platforms (including in particular CDNs), and for delivering such data from servers in the distributed computing platform to requesting clients, using MPTPCP. The teachings hereof improve the efficiency, capacity, flexibility, and performance of such distributed computing systems and client-server communication.
The teachings hereof will be more fully understood from the following detailed description taken in conjunction with the accompanying drawings, in which:
The following description sets forth embodiments of the invention to provide an overall understanding of the principles of the structure, function, manufacture, and use of the methods and apparatus disclosed herein. All systems, methods and apparatus described herein and illustrated in the accompanying drawings are non-limiting examples; the claims alone define the scope of protection that is sought. The features described or illustrated in connection with one exemplary embodiment may be combined with the features of other embodiments. Such modifications and variations are intended to be included within the scope of the present invention. All patents, publications and references cited herein are expressly incorporated herein by reference in their entirety. Throughout this disclosure, the term “e.g.” is used as an abbreviation for the non-limiting phrase “for example.”
According to the teachings hereof, multipath TCP can be implemented between clients and servers in a distributed computing system in unintended ways to solve content delivery problems, and to increase reliability, efficiency, capacity, flexibility, and performance of the distributed computing system.
As used here, distributed computing systems include—without limitation—content delivery networks (CDNs). Many of the techniques described herein are described in the context of a CDN, solely for illustrative purposes. However, the teachings hereof can be used, without limitation, in any distributed computing system that interacts with clients for delivery of content or services or otherwise. By way of background, CDNs are often operated and managed by a service provider. The service provider typically provides the content delivery service on behalf of multiple third parties, although a CDN can also be built to deliver one's own content. A distributed system of this type typically refers to a collection of autonomous computers linked by a network or networks, together with the software, systems, protocols and techniques designed to facilitate various services. The infrastructure is typically used for the storage, caching, or transmission of content—such as web pages, streaming media and applications—on behalf of such content providers or other tenants. The platform may also provide ancillary technologies including, without limitation, DNS query handling, provisioning, data monitoring and reporting, content targeting, personalization, and business intelligence.
An exemplary distributed computing system configured as a CDN is shown in
The CDN's servers 102 are typically located at nodes that are publicly-routable on the Internet, in end-user access networks, peering points, within or adjacent nodes that are located in mobile networks, in or adjacent enterprise-based private networks, or in any combination thereof
Typically, content providers offload their content delivery by aliasing (e.g., by a DNS CNAME) given content provider domains or sub-domains to domains that are managed by the service provider's authoritative domain name service. The service provider's domain name service directs end user client machines 122 that desire content to the distributed computer system (or more particularly, to one of the CDN servers in the platform) to obtain content more reliably and efficiently. More specifically, when a recursive DNS server makes a request (on behalf of the client machine 122) to the service provider's authoritative DNS to resolve a given domain, the service provider's DNS service typically consults a ‘map’ created by the map maker that indicates a selected CDN server (or set thereof) to return, based on the location of the recursive DNS or end-user client, server load, and other factors. Note that the DNS resolution process may involve multiple stages, e.g., a top level stage that returns an intermediate domain name, which is a resolved in a second-level domain name resolution yielding an actual IP address. The particulars of the process are not crucial or limiting for the teachings hereof. Once an IP address for the selected CDN server is returned to the recursive DNS server, the recursive DNS returns that IP address to the client machine. The determination of which CDN server or set of CDN servers should be used to respond to a particular client machine is sometimes referred to as ‘mapping’ the client machine. As mentioned, the “best” mapping may be based on a variety of factors such as network distance to client location, load, likelihood of having the requested object.
For cacheable content, CDN servers 102 typically employ a caching model that relies on setting a time-to-live (TTL) for each cacheable object. After it is fetched, the object may be stored locally at a given CDN server until the TTL expires, at which time is typically re-validated or refreshed from the origin server 106. For non-cacheable objects (sometimes referred to as ‘dynamic’ content), the CDN server 102 typically returns to the origin server 106 when the object is requested by a client. The CDN may operate a server cache hierarchy to provide intermediate caching of customer content in various CDN servers 102 that are between the CDN server 102 handling a client request and the origin server 106; one such cache hierarchy subsystem is described in U.S. Pat. No. 7,376,716, the disclosure of which is incorporated herein by reference.
Although not shown in detail in
As illustrated in
A given CDN server 102 shown in
The CDN platform may be considered an overlay across the Internet on which communication efficiency can be improved. Improved communications on the overlay can accelerate communication when a CDN server 102 needs to obtain content from an origin server 106 or otherwise when accelerating non-cacheable content. As an overlay offering communication enhancements and acceleration, the CDN server resources may be used to facilitate wide area network (WAN) acceleration services between enterprise data centers and/or between branch-headquarter offices (which may be privately managed), as well as to/from third party software-as-a-service (SaaS) providers used by the enterprise users.
Finally, for live streaming delivery, the CDN may include a live delivery subsystem, such as described in U.S. Pat. No. 7,296,082, and U.S. Publication Nos. 2011/0173345 and 2012/0265853, the disclosures of which are incorporated herein by reference.
Multipath TCP
At a high level, and in the context of a distributed computing system such as the CDN described above, multipath TCP functions can be leveraged to perform any or all of the following:
For all of the modes provided above, all subflows can be active simultaneously, with a goal of increasing performance, or in other cases only one subflow can be active but with the second subflow being set up and ready to take over as a backup whenever there is a problem such as performance degradation with the first subflow.
Note that the foregoing steps could be repeated as necessary to add more servers (e.g., Server_D, Server_E), if desired.
Below is the previously-recited list of potential use cases and how
Modified Client
While the teachings hereof can be used with a conventional client device with MPTCP support, such as a desktop, laptop, or wireless device running an appropriate browser or other content viewer application, the use of a client modified specifically to support the teachings hereof is also contemplated. The term ‘modified client’ is meant to include native programming in the client's operating system, client application, and/or browser plugins as well as hardware/integrated circuit implementations.
Such a modified client may be programmed to act in ways that are not necessarily reflected in standard MPTCP, for example by always responding to an ADD_ADDR option by initiating a new subflow to the added address, e.g., after some predetermined time. Such a modified client may also be programmed to prioritize or schedule object requests across S1, S2 and/or S3. One example of such prioritization is to take into account the type of connections the client has. If one connection is fast but expensive (e.g., 4G cellular) and another connection is crowded but cheap (e.g., public Wifi), then the requests for objects or object types deemed critical for rendering of a website might be directed over the cellular link and the non-critical requests over the Wifi link. Another example of such prioritization is to take into account the characteristics of the servers (e.g., Server_B vs. Server_C) in the distributed computing platform, which characteristics may be communicated by the servers themselves. In this case, requests for certain object-types may be directed to one of the servers over the other. Similarly, requests for content with certain security characteristics may be directed to one of the servers over the other.
Origin Server Multipath
While
Computer Based Implementation
The subject matter described herein may be implemented with computer systems, as modified by the teachings hereof, with the processes and functional characteristics described herein realized in special-purpose hardware, general-purpose hardware configured by software stored therein for special purposes, or a combination thereof
Software may include one or several discrete programs. A given function may comprise part of any given module, process, execution thread, or other such programming construct. Generalizing, each function described above may be implemented as computer code, namely, as a set of computer instructions, executable in one or more microprocessors to provide a special purpose machine. The code may be executed using conventional apparatus—such as a microprocessor in a computer, digital data processing device, or other computing apparatus—as modified by the teachings hereof. In one embodiment, such software may be implemented in a programming language that runs in conjunction with a proxy on a standard Intel hardware platform running an operating system such as Linux. The functionality may be built into the proxy code, or it may be executed as an adjunct to that code.
While in some cases above a particular order of operations performed by certain embodiments is set forth, it should be understood that such order is exemplary and that they may be performed in a different order, combined, or the like. Moreover, some of the functions may be combined or shared in given instructions, program sequences, code portions, and the like. References in the specification to a given embodiment indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic.
Computer system 600 includes a microprocessor 604 coupled to bus 601. In some systems, multiple microprocessor and/or microprocessor cores may be employed. Computer system 600 further includes a main memory 610, such as a random access memory (RAM) or other storage device, coupled to the bus 601 for storing information and instructions to be executed by microprocessor 604. A read only memory (ROM) 608 is coupled to the bus 601 for storing information and instructions for microprocessor 604. As another form of memory, a non-volatile storage device 606, such as a magnetic disk, solid state memory (e.g., flash memory), or optical disk, is provided and coupled to bus 601 for storing information and instructions. Other application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) or circuitry may be included in the computer system 600 to perform functions described herein.
Although the computer system 600 is often managed remotely via a communication interface 616, for local administration purposes the system 600 may have a peripheral interface 612 communicatively couples computer system 600 to a user display 614 that displays the output of software executing on the computer system, and an input device 615 (e.g., a keyboard, mouse, trackpad, touchscreen) that communicates user input and instructions to the computer system 600. The peripheral interface 612 may include interface circuitry and logic for local buses such as Universal Serial Bus (USB) or other communication links.
Computer system 600 is coupled to a communication interface 616 that provides a link between the system bus 601 and an external communication link. The communication interface 616 provides a network link 618. The communication interface 616 may represent an Ethernet or other network interface card (NIC), a wireless interface, modem, an optical interface, or other kind of input/output interface.
Network link 618 provides data communication through one or more networks to other devices. Such devices include other computer systems that are part of a local area network (LAN) 626. Furthermore, the network link 618 provides a link, via an internet service provider (ISP) 620, to the Internet 622. In turn, the Internet 622 may provide a link to other computing systems such as a remote server 630 and/or a remote client 631. Network link 618 and such networks may transmit data using packet-switched, circuit-switched, or other data-transmission approaches.
In operation, the computer system 600 may implement the functionality described herein as a result of the microprocessor executing program code. Such code may be read from or stored on a non-transitory computer-readable medium, such as memory 610, ROM 608, or storage device 606. Other forms of non-transitory computer-readable media include disks, tapes, magnetic media, CD-ROMs, optical media, RAM, PROM, EPROM, and EEPROM. Any other non-transitory computer-readable medium may be employed. Executing code may also be read from network link 618 (e.g., following storage in an interface buffer, local memory, or other circuitry).
A client device may be a conventional desktop, laptop or other Internet-accessible machine running a web browser or other rendering engine, but as mentioned above a client may also be a mobile device. Any wireless client device may be utilized, e.g., a cellphone, pager, a personal digital assistant (PDA, e.g., with GPRS NIC), a mobile computer with a smartphone client, tablet or the like. Other mobile devices in which the technique may be practiced include any access protocol-enabled device (e.g., iOS™-based device, an Android™-based device, other mobile-OS based device, or the like) that is capable of sending and receiving data in a wireless manner using a wireless protocol. Typical wireless protocols include: WiFi, GSM/GPRS, CDMA or WiMax. These protocols implement the ISO/OSI Physical and Data Link layers (Layers 1 & 2) upon which a traditional networking stack is built, complete with IP, TCP, SSL/TLS and HTTP. The WAP (wireless access protocol) also provides a set of network communication layers (e.g., WDP, WTLS, WTP) and corresponding functionality used with GSM and CDMA wireless networks, among others.
In a representative embodiment, a mobile device is a cellular telephone that operates over GPRS (General Packet Radio Service), which is a data technology for GSM networks. Generalizing, a mobile device as used herein is a 3G-(or next generation) compliant device that includes a subscriber identity module (SIM), which is a smart card that carries subscriber-specific information, mobile equipment (e.g., radio and associated signal processing devices), a man-machine interface (MMI), and one or more interfaces to external devices (e.g., computers, PDAs, and the like). The techniques disclosed herein are not limited for use with a mobile device that uses a particular access protocol. The mobile device typically also has support for wireless local area network (WLAN) technologies, such as Wi-Fi. WLAN is based on IEEE 802.11 standards. The teachings disclosed herein are not limited to any particular mode or application layer for mobile device communications.
It should be understood that the foregoing has presented certain embodiments of the invention that should not be construed as limiting. For example, certain language, syntax, and instructions have been presented above for illustrative purposes, and they should not be construed as limiting. It is contemplated that those skilled in the art will recognize other possible implementations in view of this disclosure and in accordance with its scope and spirit. The appended claims define the subject matter for which protection is sought.
It is noted that trademarks appearing herein are the property of their respective owners and used for identification and descriptive purposes only, given the nature of the subject matter at issue, and not to imply endorsement or affiliation in any way.
This application is based on and claims the benefit of priority of U.S. Application No. 61/970,621, filed Mar. 26, 2014, the teachings of which are hereby incorporated by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
61970621 | Mar 2014 | US |