There are limitations with network address translation (NAT). One such limitation is that connectivity is not guaranteed. For example, given two peers behind firewalls, it might not be possible to create a direct connection regardless of how hard and how long an application tries. Another limitation is that NAT traversal (NAT-T) algorithms take time to execute. There is a direct correlation between the number of cases a NAT-T algorithm can cover, and the time it takes to set up and/or traverse paths. So there is a tradeoff between desired connectivity and delay.
As with any transmission across a network, particularly bandwidth-constrained networks, such as wireless, there are continuous efforts to develop more efficient techniques to reduce bandwidth requirements. Even on relatively unconstrained networks, improved transmission techniques can improve speed and/or reduce hardware costs. So research and development continues industry-wide in many areas of traffic management and network connectivity.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent upon a reading of the specification and a study of the drawings.
The following examples and aspects thereof are described and illustrated in conjunction with systems, tools, and methods that are meant to be exemplary and illustrative, not limiting in scope. In various examples, one or more of the above-described problems have been reduced or eliminated, while other examples are directed to other improvements.
A technique for improving connectivity in a peer-to-peer (P2P) network involves packet forwarding by infrastructure or peers. A system implementing this technique can achieve full connectivity with properly configured devices (assuming a properly functioning environment) and a setup for transactions that takes a fraction of a second. In a specific implementation, the system includes a routing table that is initially configured so that packets to peers are routed via the infrastructure. Advantageously, this enables peers to establish communications quickly. NAT traversal heuristics can be employed to establish direct connections between peers in parallel with packets forwarded in accordance with the routing table. When a direct connection is ready, the routing table can be updated so that packets are sent P2P or through a peer intermediary without going through the infrastructure.
These and other advantages will become apparent to those skilled in the relevant art upon a reading of the following descriptions and a study of the several examples of the drawings.
The following figures are intended to illustrate by way of example some aspects of techniques described in this paper.
In the following description, several specific details are presented to provide a thorough understanding. One skilled in the relevant art will recognize, however, that the concepts and techniques disclosed herein can be practiced without one or more of the specific details, or in combination with other components, etc. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of various examples disclosed herein.
The peers 102 can be implemented as software embodied in a computer-readable medium, firmware, hardware, or a combination thereof. The implementation can be on a general purpose computer (see
It should be noted that a person of skill in the relevant art would have no difficulty understanding what is meant by the term “computer-readable medium.” To the extent legal interpretation introduces ambiguity, it should be understood that the intention in this paper is to encompass all statutory computer-readable media and to exclude nonstatutory interpretations of the term “computer-readable medium” to the extent it is necessary to preserve claim validity. Further, if the law changes, the term computer-readable medium should be interpreted consistent with the law of the time. Since the law is presumably unambiguous at any given time, such as today, the meaning of the term “computer-readable medium” is both clear to one of skill in the relevant art and not ambiguous to one with knowledge of the law since the definition encompasses only computer-readable media that is allowed under the law, no more and no less.
The network 104 couples the peers 102 together. The network 104 can be implemented as one or more network devices. The devices can be implemented as software embodied in a computer-readable medium, firmware, hardware, or a combination thereof. The implementation can be on a general purpose computer (see
In a specific implementation, the network 104 is initially configured to forward data from the peers 102 to the FC node 106. This may be accomplished using any applicable known or convenient technique, such as routing tables, switches, etc.
The FC node 106 is coupled to the network 104. The FC node 106 can be implemented as software embodied in a computer-readable medium, firmware, hardware, or a combination thereof. The implementation can be on a general purpose computer (see
In a specific implementation, the FC node 106 is on a server, and establishing a connection through the FC node 106 consumes server bandwidth. The term server, as used in this example, is intended to include providing services sufficient to connect peers through the FC node 106. The server could, of course, provide other services, as well.
The FC engine 108 is coupled to the FC node 106. The FC engine 108 can be implemented as software embodied in a computer-readable medium, firmware, hardware, or a combination thereof. The implementation can be on a general purpose computer (see
The FC engine 108 is capable of using the fast heuristics module 110 to establish a connection with a first peer (e.g., the peer 102-1). The fast heuristics module 110 could be implemented on one or more of the peers 102, in the network 104, on the FC node 106, as part of the FC engine 108, or as a distinct component as depicted in the example of
As has been mentioned, there is no requirement that the fast heuristics module 110 actually be “at” the FC node 106 or the FC engine 108, and could be implemented by configuring the network 104 appropriately. For example, the FC engine 108 could initially configure routing tables associated with the network 104 to route packets from the peers 102 through the FC node 106. In such a case, at least logically, the routing table entries could be considered part of the fast heuristics module 110. It follows that in some embodiments the FC engine 108 configures the fast heuristics module 110, and packets are routed in accordance with the configuration of the fast heuristics module 110.
The FC engine 108 is capable of using the slow heuristics module 112 to establish a P2P connection between the first peer and a second peer (e.g., the peer 102-N). The slow heuristics module 112 could be implemented on one or more of the peers 102, in the network 104, on the FC node 106, as part of the FC engine 108, or as a distinct component as depicted in the example of
As the names suggest, the fast heuristics should enable a connection more quickly than the slow heuristics. Since the fast and slow heuristics are run in parallel, the first peer will not have to wait for the slow heuristic to get results. Also, slow heuristics are not always effective so the first peer will not have to wait for the slow heuristic to complete only to find that no connection is possible with the slow heuristic (it may even be that no slow heuristic works).
In a specific implementation, the FC engine 108 selects a slow heuristic using knowledge about the peers 102 (and in particular about firewalls at the peers 102). Such knowledge may be collected during a registration process and/or from detected operations. The FC engine 108 can use the knowledge to select optimal heuristics to shorten the total setup time.
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the meantime, the P2P route optimizer 212 executes a slow heuristic in the slow heuristics module 216. The P2P route optimizer 212 may begin to execute the fast and slow heuristics at the same time (i.e., in parallel), or it may execute the fast heuristic first. While it is not prohibited to execute the slow heuristic first, it may defeat the purpose of getting the results of a fast heuristic quickly, to establish connectivity quickly, if the slow heuristic is executed for any significant amount of time prior to execution of the fast heuristic. In any case, at some point execution of the slow heuristic ends. If the slow heuristic ends with success, the P2P route optimizer 212 updates the routing table 210 in accordance with the results of the execution of the slow heuristic.
In the example of
In the example of
In the example of
In the example of
In the example of
The peers 402 are coupled to the network 404, all of which can be similar to peers and networks described previously (see, e.g.,
In the example of
Using the certificate, the peer 402-1 can punch through the server firewall 408 to reach the server 410. For the purposes of this example, the server firewall 408 keeps the peers 402 that do not have a trusted identity from utilizing at least packet forwarding services provided by the server 410. Thus, in a specific implementation, by “trusted identity” what is meant is the server 410 provides packet forwarding (and/or other) services to the peer 402-1 when the peer 402-1 identifies itself as a trusted party using the certificate in a data source authentication process. Data source authentication can involve known or convenient techniques to establish secure communications between the peer 402-1 and the server 410, such as generating an authentication key and using the authentication key to authenticate packets exchanged between the peer 402-1 and the server 410.
In a specific implementation, the server 410 is a non-peer server that provides services to the peers 402. In another specific implementation, the server 410 is a peer server that provides services to the peers 402. In this implementation, the server 410 is really just another peer (like the peers 402), and others of the peers 402 could have similar functionality (i.e., provide packet forwarding services). For the purposes of this paper, where a distinction between a non-peer server and a peer server is desired, they are referred to as such. The term “server” without a modifier is intended to cover both non-peer servers and peer servers, unless the context dictates otherwise.
Assuming the peer 402-1 has a trusted identity, the server 410 will forward packets to one or more of the other peers 402 (the peer 402-N in the example of
Packet forwarding at the server 410 will naturally consume infrastructure bandwidth and/or other resources. Accordingly, it may be desirable to facilitate a P2P connection between the peer 402-1 and the peer 402-N to force the peers to consume peer resources, rather than infrastructure resources. When the term “infrastructure” is used in this paper, what is meant is the server and other components (e.g., data pipes). Infrastructure is significant because enterprises will often wish to protect infrastructure resources. For example, an enterprise may refuse to forward packets if the packets do not have proper authentication. Similarly, enterprises often value infrastructure bandwidth higher than peer bandwidth, and opt to push bandwidth consumption off to peers where it is possible to do so. In a specific implementation, the authentication scheme that is used to authenticate packets at the server 410 can be used both between peer and infrastructure and between peers, and the security can be the same whether packets are forwarded using infrastructure resources or peer resources.
In the example of
Sometimes peers do not have firewalls, in which case establishing connections between them is relatively easy, and sometimes peers have firewalls. When peers behind firewalls attempt to form a connection, the processes described above can be used. However, occasionally peers will be behind the same firewall. In such a case, a system can attempt one or both of a hairpin path or an internal path.
The peer 502 can also attempt to establish a hairpin path with the peer 504 by going outside of the firewall 506, and then back in. The peer 502 has a first public IP address and the peer 504 has a second public IP address. Relative to the internal path using internal IP addresses, the hairpin path using public IP addresses is potentially slower and less reliable. So, if the internal path is allowed, it is typically preferable to the hairpin path.
The configuration (potentially including a “default” configuration that may colloquially be referred to as “unconfigured”) of the system 500 will determine whether the internal path or the hairpin path is allowed. The system 500 can be configured to allow the internal path, the hairpin path, or both. Since it is possible that the internal path is not allowed, it may be desirable to attempt both paths in parallel to reduce the setup delay when establishing a connection between the peer 502 and the peer 504 in the event the internal path is not allowed.
Sometimes peers cannot establish P2P connections. That is, a connection coordinator can connect the peers with a fast heuristic, but cannot find a valid direct connection with a slow heuristic. In this case, it is still possible to conserve infrastructure resources by establishing an intermediary peer to do packet forwarding. It should be noted that the term “peer” is still used in this paper, even though the peers cannot establish a P2P connection, because the peers are on a peer network that is capable of P2P communications.
The peer consumer 602 can be similar to a peer described previously (see, e.g.,
The platform security module 604 can be similar to a platform security module described previously (see, e.g.,
The peer network 606 can be similar to a peer network as described previously (see, e.g.,
The peer coordinator 608 is also coupled to the peer network 606. The peer coordinator 608 can include a server, a peer, or some other applicable known or convenient device capable of facilitating a connection between the peer consumer 602 and some other peer on the peer network 606.
The firewall 610 is coupled to the peer network 606. Advantageously, the firewall 610 does not have to be specially or specifically configured. Where it is desirable to indicate that a firewall is not specially configured for the system 600, the firewall may be referred to as an “unspecified firewall.” With a properly configured registration (e.g., a data authentication process) or other peer management system coupled to the peer coordinator 608, an unspecified firewall can be used.
The peer provider 612 sits behind the firewall 610 and is coupled to the peer network 606 through the firewall 610. The peer provider 612 can be similar to a peer described previously (see, e.g.,
The peer intermediary 614 is coupled to the peer network 606. The peer intermediary can be similar to a peer described previously (see, e.g.,
In the example of
In the example of
In the example of
In another specific implementation, the peer coordinator 608 can facilitate a connection through the peer intermediary 614 before or in parallel with the execution of one or more slow heuristics. In this way, the peer coordinator can avoid consuming infrastructure resources by offloading the packet forwarding responsibility off onto a peer (i.e., the peer intermediary 614 in the example of
The device 702 interfaces to external systems through the communications interface 710, which may include a modem or network interface. It will be appreciated that the communications interface 710 can be considered to be part of the system 700 or a part of the device 702. The communications interface 710 can be an analog modem, ISDN modem or terminal adapter, cable modem, token ring IEEE 802.5 interface, Ethernet/IEEE 802.3 interface, wireless 802.11 interface, satellite transmission interface (e.g. “direct PC”), WiMAX/IEEE 802.16 interface, Bluetooth interface, cellular/mobile phone interface, third generation (3G) mobile phone interface, code division multiple access (CDMA) interface, Evolution-Data Optimized (EVDO) interface, general packet radio service (GPRS) interface, Enhanced GPRS (EDGE/EGPRS), High-Speed Downlink Packet Access (HSPDA) interface, or other interfaces for coupling a computer system to other computer systems.
The processor 708 may be, for example, a conventional microprocessor such as an Intel Pentium microprocessor or Motorola power PC microprocessor. The memory 712 is coupled to the processor 708 by a bus 720. The memory 712 can be Dynamic Random Access Memory (DRAM) and can also include Static RAM (SRAM). The bus 720 couples the processor 708 to the memory 712, also to the non-volatile storage 716, to the display controller 714, and to the I/O controller 718.
The I/O devices 704 can include a keyboard, disk drives, printers, a scanner, and other input and output devices, including a mouse or other pointing device. The display controller 714 may control in the conventional manner a display on the display device 706, which can be, for example, a cathode ray tube (CRT) or liquid crystal display (LCD). The display controller 714 and the I/O controller 718 can be implemented with conventional well known technology.
The non-volatile storage 716 is often a magnetic hard disk, flash memory, an optical disk, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory 712 during execution of software in the device 702. One of skill in the art will immediately recognize that the terms “machine-readable medium” or “computer-readable medium” includes any type of storage device that is accessible by the processor 708.
Clock 722 can be any kind of oscillating circuit creating an electrical signal with a precise frequency. In a non-limiting example, clock 722 could be a crystal oscillator using the mechanical resonance of vibrating crystal to generate the electrical signal.
The radio 724 can include any combination of electronic components, for example, transistors, resistors and capacitors. The radio is operable to transmit and/or receive signals.
The system 700 is one example of many possible computer systems which have different architectures. For example, personal computers based on an Intel microprocessor often have multiple buses, one of which can be an I/O bus for the peripherals and one that directly connects the processor 708 and the memory 712 (often referred to as a memory bus). The buses are connected together through bridge components that perform any necessary translation due to differing bus protocols.
Network computers are another type of computer system that can be used in conjunction with the teachings provided herein. Network computers do not usually include a hard disk or other mass storage, and the executable programs are loaded from a network connection into the memory 712 for execution by the processor 708. A Web TV system, which is known in the art, is also considered to be a computer system, but it may lack some of the features shown in
In addition, the system 700 is controlled by operating system software which includes a file management system, such as a disk operating system, which is part of the operating system software. One example of operating system software with its associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Wash., and their associated file management systems. Another example of operating system software with its associated file management system software is the Linux operating system and its associated file management system. The file management system is typically stored in the non-volatile storage 716 and causes the processor 708 to execute the various acts required by the operating system to input and output data and to store data in memory, including storing files on the non-volatile storage 716.
Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, understood to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that 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.
The present example also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, flash memory, magnetic or optical cards, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other Apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized Apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present example is not described with reference to any particular programming language, and various examples may thus be implemented using a variety of programming languages.
This Application claims priority to U.S. Provisional Patent Application No. 61/075,732, filed Jun. 25, 2008, and entitled “CONNECTIVITY IN A PEER NETWORK”, which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61075732 | Jun 2008 | US |