HK1174452B - Third party initiation of communications between remote parties - Google Patents
Third party initiation of communications between remote parties Download PDFInfo
- Publication number
- HK1174452B HK1174452B HK13101326.8A HK13101326A HK1174452B HK 1174452 B HK1174452 B HK 1174452B HK 13101326 A HK13101326 A HK 13101326A HK 1174452 B HK1174452 B HK 1174452B
- Authority
- HK
- Hong Kong
- Prior art keywords
- client
- server
- data
- connection
- transmission
- Prior art date
Links
Description
Technical Field
The present invention relates to third party initiated communication between remote parties.
Background
It is increasingly common for a home to have more than one computer and for the machines to be on the home network. Most homes have multiple computers in the form of desktop computers, laptop computers, home theater pcs (htpcs), and non-traditional computing devices (e.g., set-top boxes, routers, and other devices) that contain common computing hardware such as game consoles, mobile phones, and embedded devices. The home network may include more than one type of connection, such as wired ethernet connections to some devices, and wireless Wi-Fi connections to other devices. Some devices also communicate using other technologies such as USB connection or bluetooth. Other environments may include similar features, such as a small office.
Users often work with multiple devices to perform specific tasks. These tasks often involve moving large amounts of data from one device to another. For example, a user may record a television program on a home theater PC; transmitting the programs to a home server where the programs are transcoded into one or more smaller formats; and then copying the transcoded file to the mobile device for viewing these television programs en route. The user also performs backup, where backup includes copying large amounts of data from one computing device to a backup computing device, such as a home server or Network Attached Storage (NAS) device.
When accessing files and data stored on a server computer, a client machine uses a network file system protocol, such as Network File System (NFS) or server message block (SMB/CIFS), that provides operations to read, write, and enumerate files. Client computers frequently interact with more than one file server. If a client wishes to move or copy a file from one server to another, the client will typically read the file from one server into its local storage and then write the contents of the file to a second server. Thus, the data traverses the network twice. This process is slow and inefficient if the network exhibits low bandwidth (wireless/modem) or high latency (satellite/WAN). There may often be a more direct fast path between the two servers, but current operating systems and file systems do not provide any way to use this path.
Disclosure of Invention
A data transfer system is described herein that allows data to be sent directly between two computing devices at the request of a third party client computer. The system allows a third party to initiate data transfers between computers in a network file system. This results in a significant speed increase because little or no data is propagated through the potentially slower connections of third parties. The data transfer system provides a mechanism for determining whether a direct transfer is more efficient than two separate read and write operations based on a measure of bandwidth and latency between each computing device. Alternatively or additionally, each computing device may participate in a brief benchmarking process to aggregate statistics about individual connections. The data transmission provides support for the source server to compress data under the direction of the third party client, and for the destination server to decompress the data, to further save network bandwidth. The data transfer system extends the conventional file system protocol to support the following operations: this operation allows client C to request server a to read data from file Fa stored on server a and send the write operation directly to server B to transfer the data to file Fb. Thus, the data transfer system reduces data transfers over inefficient networks between third party computers when faster network connections are available directly between the third party computers.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Drawings
FIG. 1 is a block diagram that illustrates components of the data transmission system, in one embodiment.
FIG. 2 is a flow diagram that illustrates the processing of the data transfer system to transfer a file between two computing devices under the direction of a third computing device, in one embodiment.
FIG. 3 is a flow diagram that illustrates the processing of the data transmission system to collect benchmarking information to build a connection preference table for selecting connections for transmitting data, in one embodiment.
FIG. 4 is a block diagram that illustrates an exemplary operating environment for the data transfer system, in one embodiment.
Detailed Description
A data transfer system is described herein that allows data to be sent directly between two computing devices at the request of a third party client computer. The system allows a third party to initiate data transfers between computers in a network file system. For example, if a user on a laptop connected to a home network through a slow Wi-Fi connection requests a large file to be transmitted from server a to server B, and servers a and B are connected through a fast network connection, the laptop may request server a to transmit the data directly to server B without routing the data first to the laptop. This results in a significant speed increase because little or no data is being propagated through the slow connection of the laptop. The data transfer system provides a mechanism for determining whether a direct transfer is more efficient than two separate read and write operations based on a measure of bandwidth and latency between each computing device. For example, the operating systems of the laptop and the two servers in the previous example may maintain statistics regarding the transmission speed between each system. Alternatively or additionally, each computing device may participate in a brief benchmarking process to aggregate statistics about individual connections.
In some embodiments, the data transmission system provides support for server a to compress data and server B to decompress data to save network bandwidth. This may result in faster transmissions if the network is slower than the latency overhead introduced by compression and decompression at the end of each communication. The system may also use differential compression to send only data portions that server B does not already have. For example, if a and B exchange updated files frequently, many portions of the file may already be available at B, so that a need not send those portions. The data transfer system uses similar mechanisms to perform efficient replication, such as writing the same data to more than one file server.
The data transfer system extends the conventional file system protocol to support the following operations: this operation allows client C to request server a to read data from file Fa stored on server a and send the write operation directly to server B to transfer the data to file Fb. Existing protocols use messages, exemplified by the following pseudo-code, for this type of transmission.
C to A ReadRequest(FileA,offset 100)
A to C ReadReponse(Data)
C to B WriteRequest(FileB,offset 200,Data)
B to C WriteResponse(OK)
With the data transmission system, the dialog changes as shown in the pseudo code below.
C to A ReadWriteRequest(FileA,offset 100,ServerB,FileB,offset200)
A to B WriteRequest(FileB,offset 200,Data)
B to C ReadWriteResponse(OK)
There are many alternatives to this dialogue, for example where a sends a read response to C and B sends a write response to C. Alternatively, the response of B may be sent to a, which forwards it to C. Another alternative is where the data is copied in the opposite direction, i.e. C requires a to read the data from B and write it at a.
Client C may negotiate with a and B in advance to determine various network performance characteristics and create a session/connection between a and C, whereby B trusts a to perform operations while acting as C. This enables to omit some parameters in the above messages. C. A and B use well known techniques (e.g., "packet pair, ping, tracert) to determine the bandwidth and latency of the three network paths and to determine whether direct transmission between a and C will result in improved performance. Alternatively, Microsoft WindowsTMThe Link Layer Topology Discovery (LLTD) mechanism of (1) allows networking devices to build a map of the home network and determine the bottleneck bandwidth of each link. At the expense of some additional Central Processing Unit (CPU) time, the system can compress the data at a and decompress the data at B, resulting in less data being sent over the network, but only a slightly higher latency. Thus, the data transfer system reduces data transfers over inefficient networks between third party computers when faster network connections are available directly between the third party computers.
Two other considerations faced by this data transmission system relate to asymmetric connections and security credentials. Asymmetric connections refer to situations that may occur in modern networking, whichComputer a may communicate with computer B and computer B may communicate with computer C, but computer a may not communicate with computer C. This may occur, for example, when computers B and C are behind Network Address Translators (NATs) while computer a is connected to a public internet connection. In some cases, computer B may be Microsoft WindowsTMWindowsTMA home server or other computer dedicated for external access outside the home. Computer B may be placed in a demilitarized zone (DMZ) via a router, or may be able to receive external network connections directly, whereas computer C cannot. In this case, computer a, connected from outside the home, is simply unable to copy files between computers B and C in a conventional system (since a can directly access B instead of C). However, with this data transfer system, such transfer is possible when computer B determines that a connection is available from B directly to C (since both are connected within the same home network behind the firewall).
The second consideration is security credentials. When computer a transfers a file to computer C, computer C checks computer a or the user using the credentials of computer a, verifies that the requested operation is permitted, and then performs the operation. When computer a uses the text transfer system described herein to direct computer B to transfer a file or other resource to computer C, computer B ensures that: the same or at least a credential with similar rights as computer a is used for the transmission to computer C. Otherwise, computer a will be able to circumvent the usual security restrictions. In some embodiments, computer a identifies to computer B a security principal for performing the transmission, authenticates the security principal for satisfaction of computer B, and then computer B impersonates the security principal for transmission to computer C. By doing so, computer C can perform the same authorization checks that it traditionally performed, and computer B will be able to perform only at the request of computer a those operations that computer a could have performed by itself. This is often done by MicrosoftTMWindowsTMIn the setting is called emulation. Enabling delegate privileges in security mechanisms or in access control capability-based environmentsOther embodiments are possible.
FIG. 1 is a block diagram that illustrates components of the data transmission system, in one embodiment. The system 100 includes: a request receiving component 110, a connection querying component 120, a connection reference component 130, a connection selection component 140, a credential emulation component 150, a guided transmission component 160, and a result processing component 170. Each of these components is discussed in further detail herein.
The request receiving component 110 receives a request at an origin server from a bootstrap client containing data to be transmitted to a destination server. The request may include parameters identifying the data (e.g., a file path or other identifier), a portion of the data to be transferred (e.g., a file offset, a data size, or other specification of part or all of the data), a set of security credentials associated with the boot client or a user of the boot client, and so forth. The client is directed to receive a request from an application running on the client to transfer data from an origin server to a destination server.
There are many ways for the system to determine whether and when to use the guided transmission. In some embodiments, a client sends a request to an origin server to determine whether the origin server supports a booted transfer that will allow the origin server to send data directly to a destination server on behalf of a bootstrap client without having to first send the data to the bootstrap client. If the source server supports the directed request (and the source server is connected to the destination server faster than the client is connected to both the source server and the destination server), the client directs the source server to complete the direct transfer to the destination server. The decision to use the mechanism may be made once at the beginning and then checked periodically, or after any of the machines notices a change in network conditions. This decision may be made without a dialogue with server a or B, and sometimes (e.g., using the LLTD protocol) all machines on the network are able to determine and analyze the network topology and bandwidth.
The connection query component 120 queries one or more networks to identify computing devices and determines which computing devices can reach each other through which networks. In a home environment, for example, there may be wired and wireless networks that may be identified from the lead client by: broadcasting data over each network; or to a router that uses Dynamic Host Configuration Protocol (DHCP) to provide an Internet Protocol (IP) address to each computing device on the network. The LLTD and/or BAND protocols may also be used to discover network information. After identifying the computing devices and the manner in which they are connected, the system may continue to collect statistics about each potential connection.
The connection reference component 130 performs one or more tests on one or more possible connections between computing devices to determine one or more data transfer capabilities of the connection. For example, the system may perform ping tests, packet pair tests, or other tests designed to determine the bandwidth, latency, buffer capacity, and other network parameters affecting the data transmission rate of each connection. The system may install an agent (such as an LLTD responder) on each computing device, or each device may have a modified operating system that allows the system to direct each computing device to perform benchmark tests from that device to another device. After completion, the system may construct a connection preference table that ranks the available connections according to their data transmission capabilities.
Connection selection component 140 selects a connection from one or more possible connections that will allow completion of the requested transfer based on one or more performance criteria. Typically, the performance criteria attempt to complete the transmission in a minimum amount of time. However, other considerations may lead to other performance criteria such as: using a slower idle connection to complete the transmission without consuming more valuable high speed bandwidth; this transfer is accomplished by using a lower battery power connection type; completing the transmission during an idle period of the day, and so on. The connection selection component 140 selects the connection over which the transfer is to be made and notifies the lead client so that the client can request the selected connection. In some cases, the system maintains a predetermined connection preference table, and the system consults the table at the time of transmission to select the fastest connection between the identified set of servers.
Credential emulation component 150 creates a credential for the origin server that emulates the credentials of the boot client. The bootstrap client may provide a set of credentials, or the origin server may automatically determine these credentials. In some cases, the origin server may request additional information, such as a password, from the bootstrap client so that the origin server may transmit data to the destination server using the correct set of credentials on behalf of the client. This prevents the boot client from completing actions that the boot client is not authorized to perform, even if the origin server is capable of being authorized to perform these actions.
A request is sent from the bootstrap client to the source server via bootstrap transport component 160 to send data directly from the source server to the destination server without first sending the data to the bootstrap client. If the servers are connected via a fast network and the client is connected to the servers via a slow network, the directed transmission will typically be done much faster than the conventional first transmission to the client. The booted transfer component 160 may include modifications to software related to the network of the source server to allow for booted transfer, such as revisions to the SMB and/or NFS layers to allow third parties to direct transfers from the source server to other servers. In some embodiments, the directed transmission component 160 requests data compression or other control saving techniques for further improving data transmission performance.
Although identified herein as a client and a server, one of ordinary skill in the art will recognize that any computing device may act as a client at times and a server at other times, and that these designations do not represent any particular capability or lack of capability of each computing device.
The results processing component 170 manages the return of the transmitted results to the boot client. Previously, the lead client would have performed each action and would have received the transmitted results directly from each server. Using the data transmission system 100, the lead client is largely out of conversation after initially requesting to transmit data (although the system may provide a progress message), and thus will not be the first recipient of the transmission results. For example, if any errors occur, or if the transfer completes successfully, the destination server will notify the origin server, but the origin server will communicate this information to the bootstrap client. Thus, the origin server may track status information about each transfer that identifies on behalf of whom the origin server performed the transfer, so that the origin server may provide the results of the transfer to the bootstrap client. The origin server and/or the bootstrap client may include logic for retry or other error handling.
The computing devices on which the data transfer system is implemented may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives or other non-volatile storage media). The memory and storage devices are computer-readable storage media that may be encoded with computer-executable instructions (e.g., software) that implement or enable the system. In addition, the data structures and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communications link. Various communication links may be used, such as the Internet, a local area network, a wide area network, a point-to-point dial-up connection, a cellular telephone network, and so forth.
Embodiments of the system may be implemented in various operating environments that include personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, digital cameras, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, set top boxes, systems on a chip (SOCs), and so on. The computer system may be a cellular telephone, personal digital assistant, smart phone, personal computer, programmable consumer electronics, digital camera, or the like.
The system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
FIG. 2 is a flow diagram that illustrates the processing of the data transfer system to transfer a file between two computing devices under the direction of a third computing device, in one embodiment. Beginning in block 210, the system receives a transfer request from a bootstrap client requesting that data be transferred directly between an origin server and a destination server. For example, the client may connect to a home network over Wi-Fi and may send a request to ask whether the origin server has a better connection to the destination server than the client, which would allow the transfer to be completed more quickly. The transfer may identify data, such as a file, that is the object of the transfer. The request may be issued in a variety of ways. For example, a user at a boot client may use a command line interpreter (shell) program (e.g., Microsoft Windows @)TMWINDOWSTMExplorer) to view files on the source server. A user may use a copy-and-paste operation to request that one or more files be copied from a source server to a destination server.
Continuing in block 220, the system determines: security credentials associated with the transfer request to be represented at the time of the transfer. If the origin server ultimately performs the transfer directly, the origin server uses the security credential to act on behalf of the bootstrap client. The origin server may query the bootstrap client for the security credentials, or receive the credentials as part of a transmission request.
Continuing in block 230, the system may query one or more networks to identify a connection between the boot client, the origin server, and the destination server. The system can query in the following way: looking up DNS cache information at an origin server; querying routers or other sources for network information; or broadcast to identify other network devices. The origin server may also ping the lead client and destination server directly over various networks (e.g., Wi-Fi networks and wired networks) to determine how the origin server may reach other computing devices.
Continuing in block 240, the system measures the identified connections to rank the connections based on network performance. For example, the system may determine that: wired networks have higher throughput than wireless networks; or two computers with gigabit Network Interface Cards (NICs) over a wired network are faster than two computers with 100 mega NICs in one of the two. The system measures connections using various techniques known in the art, such as ping tests or other speed tests that measure bandwidth, latency, and other network parameters.
Continuing in block 250, the system selects a connection to perform the transfer based on the measured network performance of each connection. For example, if the system determines that: the source server has a higher throughput connection to the destination server than the boot server, the system will select the source server to perform the transfer directly. In some cases, the client may have a better connection to the destination server, or the source server may not have a connection to the destination at all, in which case directing the client to perform the transfer in a conventional manner by first transferring the data to the client and then to the destination server.
Continuing in block 260, the system emulates the determined security credentials so that the transmission may proceed from the origin server using credentials similar to those in the case of the boot client performing the transmission. Impersonation credentials are often performed on a single computing device, but can be extended to work over a network. In the case of a home network, each computing device may use a similar set of user accounts and passwords, such that one computing device may emulate another computing device simply by knowing which user account to use. In other cases, the system may transmit authentication information from one computing device to another to allow impersonation, or may use a Kerberos or other authentication server to provide verification that the request was made from a boot client.
Continuing in block 270, the system transmits data directly from the source server to the destination server on behalf of the lead client without first transmitting the data to the lead client. Directly transmitting data would speed up the transmission and avoid the redundant step of transmitting data to the client first. More importantly, the transfer avoids a network connection that the client may slow by completing the transfer via a fast network connection between the two servers.
Continuing in block 280, the system reports the results of the transmission to the lead client. The source server transmits the data to the destination server and thereby receives information about the progress of the transmission and the final result of the transmission. The origin server provides this information to the bootstrap client so that the client can either acknowledge the successful completion of the transfer or handle any errors in a manner determined by the bootstrap client. After block 280, these steps conclude.
FIG. 3 is a flow diagram that illustrates the processing of the data transmission system to collect benchmarking information to build a connection preference table for selecting connections for transmitting data, in one embodiment. Beginning in block 310, the system identifies one or more computing devices attached through one or more networks. The network may include a network within a home or small office that connects computer systems through ethernet, Wi-Fi, or other networking technology. The devices may also be connected through a public network, such as a telephone that may access a home network through a 3G or other cellular data connection. The system may identify the computing device by broadcasting a request, querying a source of network information (e.g., a router or DNS server), and so forth.
Continuing in block 320, the system generates one or more combinations of the identified connections between the computing devices. For example, the system may determine each permutation of available computing devices and determine whether a connection may be made by pinging the destination computing device via the selected network. Some devices may be connected through multiple networks (e.g., redundant NICs, wired and Wi-Fi, etc.), and each network represents a separate combination of connections.
Continuing in block 330, the system selects the generated first combination. In subsequent iterations, the system selects the next combination. Although shown serially for ease of illustration, one of ordinary skill in the art will recognize that the system may test multiple connection combinations in parallel to speed up the benchmarking process. Continuing in block 340, the system establishes a connection based on the source computing device and the target computing device identified by the selected combination. The connection may include a Transmission Control Protocol (TCP) or other connection for transmitting test data to measure the performance of the connection.
Continuing in block 350, the system performs a connection test by: one or more measurement data transmissions are sent to evaluate the network capabilities of the selected connection. The measured capabilities may include bandwidth, latency, buffer size, support for characteristics (e.g., header compression, selective acknowledgement, etc.), and so on. Continuing in block 360, the system stores the benchmarking results in a connection preference table that may be accessed for determining the following connections: the connection is selectable to perform a transfer between any two identified computing devices regardless of which computing device originated the transfer. Continuing in block 370, if there are more combinations, the system loops to block 330 to select the next combination.
Continuing in block 380, the system ranks the ranked connection preference table to provide a preference for the connection with the fastest network capability. For example, the system may rank the table by bandwidth or a score determined from bandwidth or other network parameters. Each computing device may cache a network preference table for use in determining, when a transmission is made, the fastest connection that is selectable for the transmission. After block 380, these steps conclude.
FIG. 4 is a block diagram that illustrates an exemplary operating environment for the data transfer system, in one embodiment. The diagram includes a boot client 410, an origin server 420, and a destination server 430. The user at lead client 410 may perform various actions including requesting that a file be transmitted from origin server 420 to destination server 430. This is a common operation in a variety of network settings, including homes, small offices, or even data centers. Unfortunately, the bootstrap client 410 is connected to the origin server 420 through the slow network 440. The network 440 may be a wireless connection, a Virtual Private Network (VPN) connection via the internet, or some other type of relatively slow connection.
Today, file transfer communications are conducted between two parties, and the client is forced to first transfer data from the source server 420 to the lead client 410, and then from the lead client 419 to the destination server 430. Unfortunately, the boot client 410 is also connected to the destination server 430 through the slow network 450, so that the overall speed of the data transfer will be very slow and it will take a very long time to complete the transfer. Using the data transfer system described herein, boot client 410 may instruct source server 420 to transfer data directly to destination server 430 using fast network 460 between source server 420 and destination server 430. This will greatly speed up the transfer and may even allow the client to disconnect or do something else when the transfer is complete.
In some embodiments, the data transfer system allows a client to be guided to initiate a data transfer and complete the data transfer without further intervention from the client. The client may disconnect from the network and perform other tasks (e.g., disconnect a laptop computer by leaving home, where the laptop computer is connected to a local home Wi-Fi network). The client may then return and request the results of the transmission from the source server, or directly check whether the file or other data is present on the destination server. This allows the client to boot multiple operations without being tied to waiting for the operations to complete.
In some embodiments, the data transmission system allows a client to request that an origin server determine: data compression is used for the transmission. Data compression may help speed file transfers where data includes redundant information that compresses well to produce smaller data sizes for transmission over the network. Data compression is also helpful when transmitting directories or other sources of many small data items over a network. Normally, each file is transferred separately, which involves overhead for setting up and performing each transfer. By compressing the data, the system can generate a file or data item that can be transferred in one operation. The destination server then decompresses the compressed data to complete the transfer. Compressing the entire directory into ZIP or TAR files will also avoid many synchronous directory operations for enumerating files at the source and recreating them at the destination.
In some embodiments, the data transfer system sends a request from the destination server to the boot client to verify the credentials of the boot client. The destination server may not trust the origin server sufficiently to allow the origin server to act on behalf of the bootstrap client. Thus, the destination server may connect to the boot client during the setup phase of the transfer to ensure that the boot client has authorized the transfer or obtained security credentials directly from the boot client. Although large amounts of data flow directly between the source server and the destination server, the bootstrap client may still be reached in many cases of small data queries, such as the case of set operations without significant impact on performance.
From the foregoing, it will be appreciated that, although specific embodiments of the data transmission system have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention. Accordingly, the invention is not limited except as by the appended claims.
Claims (15)
1. A computer-implemented method for transferring data between two computing devices under direction of a third computing device, the method comprising:
receiving (210) a transmission request from a bootstrapping client requesting a direct transmission of data between an origin server and a destination server;
querying (230) one or more networks to identify a connection between the bootstrap client, an origin server and a destination server;
measuring (240) the identified connections to rank the connections based on network performance;
selecting (250) a connection for performing the transmission based at least in part on the measured network performance of each connection;
transmitting (270) data directly from the source server to the destination server on behalf of the lead client without first transmitting the data to the lead client; and
reporting (280) a result of the transmission to the bootstrap client;
wherein the foregoing steps are performed by at least one processor.
2. The method of claim 1, wherein receiving the transmission request comprises: determining whether the origin server has a better connection to the destination server than the client, which would allow the transfer to complete faster.
3. The method of claim 1, wherein receiving the transmission request comprises determining whether the source server supports a booted protocol for transmitting data directly from the source server to the destination server on behalf of the boot client.
4. The method of claim 1, further comprising: determining credentials associated with the transfer request to represent at the time of the transfer and emulating the determined credentials such that the transfer can be made from the origin server using credentials similar to credentials if the boot client performed the transfer, wherein determining security credentials comprises: the secure credentials are queried for the boot client.
5. The method of claim 1, wherein querying one or more networks comprises: network information is queried from a router or other source to identify computing devices attached to the network.
6. The method of claim 1, wherein measuring the identified connection comprises: the bandwidth and latency of each connection is determined.
7. The method of claim 1, wherein the source server is selected to perform the transmission directly after determining that the source server has a higher throughput connection to the destination server than the bootstrap server.
8. The method of claim 1, wherein emulating a security credential comprises: transmitting authentication information from the bootstrap client to the origin server.
9. The method of claim 1, wherein emulating a security credential comprises: transmitting authentication information from the bootstrap client to the destination server.
10. The method of claim 1, wherein transmitting data comprises: avoiding a slower network connection for the client by completing the transmission via a faster network connection between the two servers.
11. The method of claim 1, wherein including the result comprises: receiving, at the bootstrap client, information from the origin server specifying a progress of the transmission.
12. A computer system for transferring data between two computing devices under the direction of a third computing device, the system comprising:
means for receiving a transmission request from a bootstrap client requesting direct transmission of data between an origin server and a destination server;
means for querying one or more networks to identify a connection between the bootstrap client, an origin server, and a destination server;
means for measuring the identified connections to rank the connections based on network performance;
means for selecting a connection for performing the transmission based at least in part on the measured network performance of each connection;
means for transmitting data directly from the source server to the destination server on behalf of the bootstrap client without first transmitting the data to the bootstrap client; and
means for reporting a result of the transmission to the bootstrap client.
13. The system of claim 12, wherein the means for receiving a request to transmit receives parameters with the request that include at least one of: an identifier of the data to be transmitted; a portion of data to be transmitted; and a set of security credentials associated with the boot client.
14. The system of claim 12, further comprising means for performing one or more tests on one or more possible connections between computing devices to determine one or more data transmission capabilities of the connections, wherein the means for performing one or more tests performs tests to determine bandwidth and latency of each connection.
15. The system of claim 12, further comprising means for creating credentials for the origin server that mimic those of the bootstrap client.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/972,526 | 2010-12-20 | ||
| US12/972,526 US9686355B2 (en) | 2010-12-20 | 2010-12-20 | Third party initiation of communications between remote parties |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1174452A1 HK1174452A1 (en) | 2013-06-07 |
| HK1174452B true HK1174452B (en) | 2015-09-18 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9686355B2 (en) | Third party initiation of communications between remote parties | |
| JP5882353B2 (en) | Method and system for multi-connection in a file system session | |
| US10893031B2 (en) | Dynamically serving digital certificates based on secure session properties | |
| US9866556B2 (en) | Common internet file system proxy authentication of multiple servers | |
| CN109768965B (en) | Login method, equipment and storage medium of server | |
| CN106790420B (en) | A kind of more session channel method for building up and system | |
| CN101335765B (en) | Storage Service Middleware Based on Mobile Cache | |
| WO2017114091A1 (en) | Nas data access method, system and relevant device | |
| CN113826371A (en) | Bandwidth sharing between trusted peers | |
| CN111539829B (en) | A method and device for identifying transactions to be filtered based on a blockchain integrated machine | |
| US11616772B2 (en) | Remote desktop protocol proxy with single sign-on and enforcement support | |
| US20170171289A1 (en) | Gateway that enables a browser-based application to communicate with a server-side application using a non-browser-compatable protocol | |
| WO2018107433A1 (en) | Information processing method and device | |
| US10735514B2 (en) | Remote application configuration on network-attached storage | |
| Feng et al. | Toward seamless grid data access: Design and implementation of gridftp on. net | |
| US20220407840A1 (en) | Protocol Switching For Connections To Zero-Trust Proxy | |
| US20140189134A1 (en) | System and Method for NAS Server Test Load Generation | |
| HK1174452B (en) | Third party initiation of communications between remote parties | |
| CN116633832A (en) | Hypertext transfer security protocol test method, apparatus, software program and medium | |
| CN117201479B (en) | A cross-cluster file transmission method, system and device | |
| CN120128547A (en) | Download rate determination method, device and computer readable storage medium | |
| CN118568044A (en) | An acceleration device and data processing method | |
| CN121078021A (en) | VPN sharing method, device, storage medium and program product | |
| CN121125814A (en) | Connection migration method and related equipment |