Computer systems may be networked to other computer systems using a variety of techniques and may be configured to provide services to other computer systems using a variety of techniques. For example, a group of computer system may operate as standard computer servers using a standard network topology to provide services to a client computer system. Such a group of server computer systems is often known as a server farm. In another example, a group of computers systems may be configured in a peer-to-peer computer environment. In such an environment, a computer system typically must join the peer-to-peer computer environment to request services from the peer-to-peer computer environment.
The drawings referred to in this description of embodiments should be understood as not being drawn to scale except if specifically noted.
Reference will now be made in detail to embodiments of the present technology, examples of which are illustrated in the accompanying drawings. While the technology will be described in conjunction with various embodiment(s), it will be understood that they are not intended to limit the present technology to these embodiments. On the contrary, the present technology is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the various embodiments as defined by the appended claims.
Furthermore, in the following description of embodiments, numerous specific details are set forth in order to provide a thorough understanding of the present technology. However, the present technology may be practiced without these specific details. In other instances, well known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present embodiments.
Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present description of embodiments, discussions utilizing terms such as “establishing,” “receiving,” “satisfying,” “requesting,” “accessing,” “updating,” or the like, refer to the actions and processes of a computer system, or similar electronic computing device. The computer system or similar electronic computing device manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission, or display devices. Embodiments of the present technology are also well suited to the use of other computer systems such as, for example, optical and mechanical computers.
Embodiments of the present technology are for utilizing resources of a peer-to-peer computer environment. A typical peer-to-peer computer environment may be composed of peer computer systems, known as nodes, each which have various connective abilities. A user computer system may desire to connect to a peer-to-peer computer environment to exchange data, request services, or otherwise utilize the resources of the peer-to-peer computer environment. In order to do so the user computer system may be required to join the peer-to-peer computer environment by becoming a node in the peer-to-peer computer environment. The present technology allows a user computer system to utilize the resources of the peer-to-peer computer environment without requiring the user computer system to join or become a node in the peer-to-peer computer environment.
A user computer system may use a web browser application to access other computer systems via the Internet. In so doing the user may enter an Internet Protocol (IP) address into the web browser application to access the services or resources of another computer system. The web browser application may receive a domain name from the user and then first contact a domain name system (DNS) server and then be redirected to an actual IP address using binary identifiers. The web browser application may then be used to access a webpage which is hosted by a server farm. In one embodiment of the present technology, the web browser application is directed to a peer-to-peer computer environment hosting a webpage or other services instead of a server farm.
In one embodiment, the present technology comprises a peer-to-peer computer environment with at least one open node. An open node is defined to be a computer system which is a peer or node on the peer-to-peer computer environment and has the ability to be connected to from anywhere on the Internet, including computer systems that are not part of the peer-to-peer computer environment. In one embodiment, the open node acts as a bridge between the user computer system and the peer-to-peer computer environment. By acting as a bridge the open node allows the user computer system to communicate with the open node using one protocol while the open node communicates with the peer-to-peer computer environment using a different protocol. This allows the user computer system to be unaware of the peer-to-peer computer environment while at the same time utilizing the resources of the peer-to-peer computer environment. Another advantage of the present technology allows the user computer system to request and receive services from the peer-to-peer computer environment without being required to download or install any additional software or applications that allow access to the peer-to-peer computer environment.
The following discussion will demonstrate various hardware, software, and firmware components that are used with and in computer systems for utilizing the resources of a peer-to-peer computer environment using various embodiments of the present technology. Furthermore, the systems and methods may include some, all, or none of the hardware, software, and firmware components discussed below.
It should be appreciated that a peer-to-peer computer environment is well known in the art and is also known as a peer-to-peer network and is often abbreviated as P2P. It should be understood that a peer-to-peer computer environment may comprise multiple computer systems, and may include routers and switches, of varying types that communicate with each other using designated protocols. In one embodiment, a peer-to-peer computer environment is a distributed network architecture that is composed of participants that make a portion of their resources (such as processing power, disk storage, and network bandwidth) available directly to their peers without intermediary network hosts or servers. In one embodiment, peer-to-peer technology is used to manage the cluster of nodes.
With reference now to
In one embodiment, environment 100 includes user computer system 110. User computer system 110 may be a computer system including a server computer system or a personal computer system. User computer system 110 may be any type of machine capable of computing data and communicating with other similar machines over a network. In one embodiment, user computer system 110 is a virtual computer. User computer system 110 may have a limited number of resources for carrying out services. Such resources may include central processing unit (CPU) usage, memory usage, bandwidth, storage capacity, etc.
In one embodiment, user computer system 110 requests the services of another computer system over a computer network using a first protocol. Such services may include; exchanging data, accessing a database, accessing a webpage, streaming multi media data, etc. For example, the peer-to-peer computer environment can perform content delivery network (CDN) over HTTP duties where the key is the URL of the asset and the value is the actual data. In one embodiment, user computer system 110 may use a web browser application to request such services. In one embodiment, the web browser application first contacts domain name system (DNS) server 105 with a DNS query. DNS 105 then responds to user computer system 110 with a DNS response and redirects user computer system 110 to another computer system such as open node 115. Communication line 135 may be used for both DNS queries and responses. In one embodiment, DNS 105 is a Berkeley Internet Name Domain (BIND) server. It should be appreciated that the first protocol used by user computer system 110 may be, but is not limited to, a hypertext transfer protocol (HTTP) based protocol, a user datagram protocol (UDP) based protocol, a transmission control protocol (TCP) based protocol, session initiation protocol (SIP), etc. In one embodiment, the first protocol is used over communication line 145.
In one embodiment, user computer system 110 accesses open node 115 as demonstrated by communication line 145. In one embodiment, open node 115 is a computer system that is a node or peer in a peer-to-peer computer environment and may be connected to by other nodes in the peer-to-peer computer environment. In one embodiment, open node 115 is capable of connecting with user computer system 110 using a first protocol and connecting with nodes 120, 125, and 130 using a second protocol. In one embodiment, open node 115 comprises a server component that listens for incoming connections over the first protocol. In this manner, open node 115 acts as a bridge between user computer system 110 and nodes 120, 125, and 130. In one embodiment, open node 115 and nodes 120, 125, and 130 form a peer-to-peer computer environment as shown by communication lines 150. Thus open node 115 acts in a manner similar to a server in a server farm hosting services and receiving request from client computer system while at the same time open node 115 also acts as a node in a peer-to-peer computer environment. User computer system 110 may be unaware that open node 115 and nodes 120, 125, and 130 form a peer-to-peer computer environment. It should be appreciated that environment 100 may include more than one open node in a peer-to-peer computer environment.
In one embodiment, user computer system 110 and nodes 120, 125, and 130 each communicate with each other using a second protocol using communication lines 150. The second protocol may be, but is not limited to peer-to-peer protocols, peer-to-peer gossip protocol, BitTorrent protocol, etc. In one embodiment, the second protocol is a different protocol from the above described first protocol used by both user computer system 110 and open node 115.
In one embodiment, open node 115 communicates with DNS 105 using communication line 140. In one embodiment, such communications include updating DNS 105 with a list of currently available open nodes in the peer-to-peer computer environment. In one embodiment, open node 115 is part of the peer-to-peer computer environment for a limited period of time. Thus if DNS 105 receives a request from user computer system 110 during a period of time in which open node 115 is no longer part of the peer-to-peer computer environment, DNS 105 may redirect user computer system 110 to an open node different from open node 115 using the list of open nodes updated by open node 115 or by any other computer system belonging to the peer-to-peer computer environment. Thus the present technology may provide service to user computer system 110 during the dynamic and churning topology of a peer-to-peer computer environment.
In one embodiment, any node of the peer-to-peer computer environment may update DNS 105 with a list of available open nodes in the peer-to-peer computer environment. In one embodiment, a node in the peer-to-peer computer environment is tasked with updating DNS 105 with a list of available open nodes in the peer-to-peer computer environment. In one embodiment, DNS 105 is configured via zone files to return the IP addresses of the open nodes in the peer-to-peer computer environment that can serve a given protocol. In one embodiment, the name server zones are configured to have a short time to live (TTL) value to prevent intermediate DNS services from caching results for too long.
In one embodiment, nodes 120, 125, and 130 are computer systems which are peers or nodes on the peer-to-peer computer environment. It should be appreciated that nodes 120, 125, and 130 may have a variety of resources and capabilities each different from one another. It should also be appreciated that nodes 120, 125, and 130 may have full networking capabilities including access to the Internet or may have limited networking capabilities. For example, node 130 may only be networked with node 120. In one embodiment, the peer-to-peer computer environment is not limited to only nodes 120, 125, and 130, but may have any number of nodes.
In one embodiment, the peer-to-peer computer environment is used as a distributed hash table (DHT) where the second protocol may be OpenDHT or Chord so that the peer-to-peer computer environment can be used to effectively store and retrieve data in a distributed fashion. The storage infrastructure can then be leveraged by both nodes in the peer-to-peer computer environment and user computer systems that are not nodes in the peer-to-peer computer environment to store contact lists, presence information, or other tokens required when building a distributed communication platform.
At 202, connections to a peer-to-peer computer environment are established using a first protocol at an open node computer system. For example, this may be accomplished using open node 115, nodes 120, 125 and 130 and communication lines 150 of
At 204, a request for services is received at the open node computer system from a user computer system not currently associated with the peer-to-peer computer environment, wherein the request is received using a second protocol. For example, this may be accomplished using open node 115, user computer system 110 and communication line 145 of
At 206, the request for the services is satisfied using resources of the peer-to-peer computer environment. For example, this may be accomplished using user computer system 110, open node 115, nodes 120, 125 and 130 and communication lines 145 and 150 of
At 208, a domain name server is updated with a list of open nodes located on the peer-to-peer computer environment. It should be appreciated that step 208 may take place independent of process 200 and may take place parallel to steps 202, 204 and 206. In one embodiment, step 208 reoccurs several times during the operation of the peer-to-peer computer environment. For example, this may be accomplished using open node 115, DNS 105 and communication lines 140 of
At 302, a service is requested over a computer network using a first protocol, wherein the service is requested at a user computer system not currently associated with the peer-to-peer computer environment. For example, this may be accomplished using user computer system 110 and communication lines 135 and 145 of
At 304, an open node computer system located on the peer-to-peer computer environment is accessed in response to the requesting the service by the user computer system. In one embodiment, the open node computer system is open node 115 of
At 306, a satisfaction of the request for the service from the open node computer system is received, wherein the open node computer system satisfies the service using resources of the peer-to-peer computer environment. A timeout system can be put in place such that, if no satisfaction of the request happens within a period of time, the user computer system retries the request again. The DNS Server is configured to avoid returning the same open node again, to increase the likelihood of success for the subsequent request.
With reference now to
System 400 of
System 400 also includes computer usable non-volatile memory 410, e.g. read only memory (ROM), coupled to bus 404 for storing static information and instructions for processors 406A, 406B, and 406C. Also present in system 400 is a data storage unit 412 (e.g., a magnetic or optical disk and disk drive) coupled to bus 404 for storing information and instructions. System 400 also includes an optional alpha-numeric input device 414 including alphanumeric and function keys coupled to bus 404 for communicating information and command selections to processor 406A or processors 406A, 406B, and 406C. System 400 also includes an optional cursor control device 416 coupled to bus 404 for communicating user input information and command selections to processor 406A or processors 406A, 406B, and 406C. System 400 of the present embodiment also includes an optional display device 418 coupled to bus 404 for displaying information.
Referring still to
System 400 is also well suited to having a cursor directed by other means such as, for example, voice commands. System 400 also includes an I/O device 420 for coupling system 400 with external entities. For example, in one embodiment, I/O device 420 is a modem for enabling wired or wireless communications between system 400 and an external network such as, but not limited to, the Internet. System 400 is also well suited for operation in a cluster of nodes or a peer-to-peer computer environment.
Referring still to
The computing system 400 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the present technology. Neither should the computing environment 400 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the example computing system 400.
Embodiments of the present technology may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. Embodiments of the present technology may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer-storage media including memory-storage devices.
Although the subject matter is described in a language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Number | Name | Date | Kind |
---|---|---|---|
6286104 | Buhle et al. | Sep 2001 | B1 |
6314108 | Ramasubramani et al. | Nov 2001 | B1 |
6614774 | Wang | Sep 2003 | B1 |
6651250 | Takai | Nov 2003 | B1 |
6690651 | Lamarque, III et al. | Feb 2004 | B1 |
7213047 | Yeager et al. | May 2007 | B2 |
7254608 | Yeager et al. | Aug 2007 | B2 |
7386878 | Fernando et al. | Jun 2008 | B2 |
7596618 | Basu et al. | Sep 2009 | B2 |
7689220 | Fukushima et al. | Mar 2010 | B2 |
7707034 | Sun et al. | Apr 2010 | B2 |
7788378 | Rao et al. | Aug 2010 | B2 |
7809943 | Seidel | Oct 2010 | B2 |
7882248 | Sano et al. | Feb 2011 | B2 |
8037202 | Yeager et al. | Oct 2011 | B2 |
8108455 | Yeager et al. | Jan 2012 | B2 |
8489701 | Manion et al. | Jul 2013 | B2 |
20020062375 | Teodosiu et al. | May 2002 | A1 |
20040030749 | Bowman-Amuah | Feb 2004 | A1 |
20040039810 | Donescu et al. | Feb 2004 | A1 |
20040088347 | Yeager et al. | May 2004 | A1 |
20040088348 | Yeager et al. | May 2004 | A1 |
20040088369 | Yeager et al. | May 2004 | A1 |
20040133640 | Yeager et al. | Jul 2004 | A1 |
20040181689 | Kiyoto et al. | Sep 2004 | A1 |
20050238047 | Holland et al. | Oct 2005 | A1 |
20060111112 | Maveddat | May 2006 | A1 |
20060256751 | Jagadeesan et al. | Nov 2006 | A1 |
20070028133 | Izutsu et al. | Feb 2007 | A1 |
20070047516 | Kottilingal | Mar 2007 | A1 |
20070074019 | Seidel | Mar 2007 | A1 |
20070162605 | Chalasani et al. | Jul 2007 | A1 |
20070274210 | Jang | Nov 2007 | A1 |
20080126549 | Khanchandani et al. | May 2008 | A1 |
20080183853 | Manion et al. | Jul 2008 | A1 |
20080201484 | Sano et al. | Aug 2008 | A1 |
20080281971 | Leppanen et al. | Nov 2008 | A1 |
20090023430 | Levien et al. | Jan 2009 | A1 |
20090125637 | Matuszewski | May 2009 | A1 |
20090172180 | Chiu et al. | Jul 2009 | A1 |
20090177792 | Guo et al. | Jul 2009 | A1 |
20090180429 | Stevens et al. | Jul 2009 | A1 |
20090313353 | Lou | Dec 2009 | A1 |
20100031335 | Handler | Feb 2010 | A1 |
20100146092 | Hu et al. | Jun 2010 | A1 |
20100146126 | Lin et al. | Jun 2010 | A1 |
20100150252 | Camp, Jr. et al. | Jun 2010 | A1 |
20100177699 | Klefter et al. | Jul 2010 | A1 |
20100246788 | Menard et al. | Sep 2010 | A1 |
20100299687 | Bertino-Clarke | Nov 2010 | A1 |
20110087783 | Annapureddy et al. | Apr 2011 | A1 |
20110087915 | Zhang et al. | Apr 2011 | A1 |
20110137991 | Russell | Jun 2011 | A1 |
20110282945 | Thyni et al. | Nov 2011 | A1 |
Number | Date | Country |
---|---|---|
1229443 | Aug 2002 | EP |
WO-0242900 | May 2002 | WO |
03046747 | Jun 2003 | WO |
2004063843 | Jul 2004 | WO |
2007118250 | Oct 2007 | WO |
2009118383 | Oct 2009 | WO |
2010002302 | Jan 2010 | WO |
Entry |
---|
Eronen, Pasi “Security in the Jini Networking Technology: A Decentralized Trust Management Approach”, Master's Thesis, Helsinki University of Technology, Department of Computer Science and Engineering, (Mar. 2001),31-33. |
“Jini Architecture Specification”, Sun Microsystems, Inc. Version 1.2, (Dec. 2001),12-22. |
Turgunbaev, Rashid , “Co-WEB: A Peer-to-Peer Based, Partially Decentralized Framework for Collaborative Web-content Publishing”, First International Conference on Advances in Future Internet, 2009, 6 pages. |
Zhang, Meng , “Optimizing the Throughput of Data-Driven Peer-to-Peer Streaming”, IEEE Transactions on Parallel and Distributed Systems, col. 20, No. 1, Jan. 2009, 14 pages. |
Number | Date | Country | |
---|---|---|---|
20110173333 A1 | Jul 2011 | US |