1. Field of the Invention
The present invention generally relates to networking systems and in particular to ordering network messages.
2. Background Technology
Computer and data communications networks continue to proliferate due to declining costs, increasing performance of computer and networking equipment, and increasing demand for communication bandwidth. Communications networks—including wide area networks (“WANs”), local area networks (“LANs”), metropolitan area networks (“MANs”), and storage area networks (“SANS”)—allow increased productivity and use of distributed computers or stations through the sharing of resources, the transfer of voice and data, and the processing of voice, data and related information at the most efficient locations. Moreover, as organizations have recognized the economic benefits of using communications networks, network applications such as electronic mail, voice and data transfer, host access, and shared and distributed databases are increasingly used as a means to increase user productivity. This increased demand, together with the growing number of distributed computing resources, has resulted in a rapid expansion of the number of installed networks.
As the demand for networks has grown, network technology has developed to the point that many different physical configurations presently exist. Examples include Gigabit Ethernet (“GE”), 10 GE, Fiber Distributed Data Interface (“FDDI”), Fibre Channel (“FC”), Synchronous Optical Network (“SONET”) and InfiniBand networks. These networks, and others, typically conform to one of a variety of established standards, or protocols, which set forth rules that govern network access as well as communications between and among the network resources. Typically, such networks utilize different cabling systems, have different characteristic bandwidths and typically transmit data at different speeds. Network bandwidth, in particular, has been the driving consideration behind many advancements in the area of high speed communication systems, methods and devices.
For example, the ever-increasing demand for network bandwidth has resulted in the development of technology that increases the amount of data that can be pushed through a single channel on a network. Advancements in modulation techniques, coding algorithms and error correction have vastly increased the rates at which data can be transmitted across networks. For example, in the past, the highest rate that data could travel across a network was at about one Gigabit per second. This rate has increased to the point where data can travel across Ethernet and SONET networks at rates as high as 10 gigabits per second, or faster.
As communication networks have increased in size, speed and complexity however, they have become increasingly likely to develop a variety of problems that, in practice, have proven difficult to diagnose and resolve. Such problems are of particular concern in light of the continuing demand for high levels of network operational reliability and for increased network capacity.
The problems generally experienced in network communications can take a variety of forms and may occur as a result of a variety of different circumstances. Examples of circumstances, conditions and events that may give rise to network communication problems include the transmission of unnecessarily small frames of information, inefficient or incorrect routing of information, improper network configuration and superfluous network traffic, to name just a few. Such problems are aggravated by the fact that networks are continually changing and evolving due to growth, reconfiguration and introduction of new network topologies and protocols. Moreover, new network interconnection devices and software applications are constantly being introduced and implemented. Circumstances such as these highlight the need for effective, reliable, and flexible diagnostic mechanisms.
Unfortunately, some diagnostic mechanisms may be less efficient in performing various diagnostic functions on networks. In addition, some nodes may be less efficient in communicating via networks.
A need therefore exists for systems and methods that eliminate or reduce the disadvantages and problems listed above and/or other disadvantages and problems.
One aspect is a networking system that may comprise a processor and memory. The memory has stored thereon a routing data structure, a transaction data structure, and first packet-route-to data. The processor may be configured to receive a packet. The processor may also be configured to copy second route-to data from an entry in the routing data structure to the first packet-route-to data, the entry being associated with an identifier associated with the packet, the second route-to data comprising a value indicating that the packet should be routed back to the processor. The processor may also be configured to determine whether the packet is in order. The processor may also be configured to, when the packet is in order, copy third route-to data to the first packet-route-to data, the third route-to data comprising a value indicating that the packet should be routed to a destination. The processor may further be configured to route the packet according to the first packet-route-to data.
For purposes of summarizing, some aspects, advantages, and novel features have been described. Of course, it is to be understood that not necessarily all such aspects, advantages, or features will be embodied in any particular embodiment of the invention. Further, embodiments of the invention may comprise aspects, advantages, or features other than those that have been described. Some aspects, advantages, or features of embodiments of the invention may become more fully apparent from the following description and appended claims or may be learned by the practice of embodiments of the invention as set forth in this disclosure.
The appended drawings contain figures of preferred embodiments to further clarify the above and other aspects, advantages and features of the present invention. It will be appreciated that these drawings depict only preferred embodiments of the invention and are not intended to limits its scope. The invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
The present invention is generally directed towards a systems and methods for ordering network messages. The principles of the present invention, however, are not limited to ordering network messages. It will be understood that, in light of the present disclosure, the system disclosed herein can be successfully used in connection with other types of systems.
As shown in
In one embodiment, a signal (such as, an electrical signal, an optical signal, and the like) may be used to send and/or receive network messages over at least a portion of a network. As used herein, a “network message” includes, but is not limited to, a packet; a datagram; a frame; a data frame; a command frame; an ordered set; any unit of data capable of being routed (or otherwise transmitted) through a computer network; and the like. In one embodiment, a network message may comprise transmission characters used for data purposes, protocol management purposes, code violation errors, and the like. Also, an ordered set may include, a Start of Frame (“SOF”), an End of Frame (“EOF”), an Idle, a Receiver_Ready (“R_DY”), a Loop Initialization Primitive (“LIP”), an Arbitrate (“ARB”), an Open (“OPN”), and Close (“CLS”)—such as, those used in certain embodiments of Fibre Channel. Of course, any ordered sets and/or any network messages of any other size, type, and/or configuration may be used, including, but not limited to, those from any other suitable protocols.
Nodes may communicate using suitable network protocols, including, but not limited to, serial protocols, physical layer protocols, channel protocols, packet-switching protocols, circuit-switching protocols, Ethernet, Fast Ethernet, Gigabit Ethernet, 10 Gigabit Ethernet, Fibre Channel, Fibre Channel Arbitrated Loop (“FC-AL”), Small Computer System Interface (“SCSI”), High Performance Parallel Interface (“HIPPI”), Serial Attached SCSI (“SAS”), Serial ATA (“SATA”), SAS/SATA, Serial SCSI Architecture (“SSA”), and the like.
As shown in
The networking system 100 may include a routing module 108. The routing module 108 may receive one or more network messages (or portions thereof), may reorder them, and may route them to a desired destination. For example, the routing module 108 may route the reordered network messages (or portions thereof) to the network diagnostic component 106, which preferably performs one or more network diagnostic functions using the reordered network messages (or portions thereof). Also, for example, the routing module 108 may route the reordered network messages (or portions thereof) to the node 102, which may use the reordered network messages (or portions thereof) to communicate with another node, such as the node 104. In addition, for example, the routing module 108 may route the reordered network messages (or portions thereof) to a storage device 110 for storage, which may allow the reordered network messages (or portions thereof) to be retrieved by or sent to, for example, a network diagnostic component.
As shown in
The routing module 108 preferably reorders the network messages (or portions thereof) to facilitate efficient use of the network messages by a node or a network diagnostic component. For example, some nodes may more efficiently communicate when it receives network messages in the order they were sent. Further, for example, some nodes may communicate in protocols that require that the nodes receive the network messages in the order they were sent. Also, for example, some network diagnostic components may more efficiently perform network diagnostic functions using network messages that are in the order they were sent.
As shown in
As shown in
In greater detail, as shown in
At the block 122, the routing module 108 may determine whether the received packet is out of order. For example, in one embodiment, the received packet may have an order number at least partially indicating the packet's position in a sequence of packets, and the routing module 108 may use that order number to determine whether the received packet is in order or out of order. In particular, at the block 122, the routing module 108 may use the order number to determine that it has not yet routed all of the packets (from the sequence of packets) that are earlier in the sequence than the received packet—and thus determine that the received packet is out of order. It will be appreciated that a variety of other suitable algorithms may be used to determine whether a received packet is in order.
If the received packet is out of order at the block 122, the routing module 108 may, at the block 124, route the received packet back to the routing module 108 to be evaluated again at the block 122. The routing module 108 may route the received packet back to itself using the route-back 116. If the packet is in order at the block 122, the routing module 108 may, at the block 126, route packet to a desired destination (such as, the storage device 110, the network diagnostic component 106, the node 102, or the like).
While the received packet is being routed back to the routing module 108 at the block 124, the routing module 108 may receive one or more other packets from the sequence of packets that are before the received packet in the sequence. Accordingly, the routing module 108 may route those other packets to a desired orientation and then route the received packet to the desired destination at the block 126. In one embodiment, the routing module 108 may route a received packet to itself at any of a plurality of various speeds. Accordingly, the routing module 108 may select to route a first received packet to itself at a first speed and route a second received packet to itself at a different second speed, which may be faster or slower than the first speed. In a further embodiment, to route the packets at different speeds, the routing module 108 may access and/or include a plurality of loop route-backs 116, which may be each configured to transmit packets at a different speed. In another further embodiment, to route the packets at different speeds, the routing module 108 may access and/or include a single route-back 116, which may be configured to transmit packets at different speeds. It will be appreciated, however, that the routing module 108 may be configured to route packets at the same speed or different speeds, if desired.
It will also be appreciated that some or all of the method 118 may be performed by the routing module 108; one or more other suitable modules, systems, and the like; or any suitable combination of one or more thereof. Of course, the entire method 118 need not be performed; and any part or parts of the method 118 may be performed to provide a useful method 118.
As shown in
As shown in
As shown in
At a block 138, the routing module 108 may determine whether the routing data structure 128 includes an entry for the packet's IP address, which was assigned at the block 136. If, at the block 138, the routing data structure 128 does not include an entry for the packet's IP address, the routing module 108 may add an entry for that IP address at the block 140 and then may proceed to the block 142. If, at the block 138, the routing data structure 128 does include an entry for the packet's IP address, the routing module 108 may proceed to the block 142.
The entry for the packet's IP address, which was assigned at the block 136, and the other entries for other IP addresses in the routing data structure 128 preferably include route-to data comprising a default value that indicates that the packet should be routed back to the routing module 108. Because the entries of the routing data structure 128 preferably include these default values, the routing data structure 128 may be created for some or all desired IP addresses and loaded in a single step—thus rendering blocks 138, 140 unnecessary in some embodiments. In one embodiment, these default values may be configured to route packets back to the routing module 108 at the same speed or different speeds, if desired.
At the block 142, the routing module 108 preferably copies route-to data from the entry for the packet's IP address to packet-route-to data 132 associated with the packet, and the routing module 108 then preferably proceeds to a block 144 (
At the block 144 in
At the block 148, the routing module 108 may determine whether the transaction data structure 130 includes an entry for the packet's order number in the packet's transaction. If, at the block 148, the transaction data structure 130 does not include an entry for the packet's order number in the packet's transaction, the routing module 108 may add an entry for that order number at the block 150 and then may proceed to a block 152 (
Advantageously, the entry for the packet's order number may be configured to indicate that the routing module has received, routed, not received, and/or not routed the packet associated with the order number for a particular transaction. Accordingly, at the block 152, the routing module 108 may determine whether every packet from the packet's transaction having a lower order number has been routed to a desired destination (such as, the storage device 110, the network diagnostic component 106, the node 102, or the like) using, for example, the entries in the routing data structure 128.
If, at the block 152, every packet from the packet's transaction having a lower order number has been routed to the desired destination, the routing module 108 may proceed to a block 154 to update the packet-route-to data 132 associated with the packet to indicate that the packet should be routed to the desired destination and then proceed to a block 156. If, at the block 152, every packet from the packet's transaction having a lower order number has not been routed to the desired destination, the routing module 108 may proceed to a block 156, leaving the packet-route-to data 132 associated with the packet indicating that the packet should be routed back to the routing module 108.
At the block 156, the routing module 108 may route the packet according to the packet-route-to data 132 associated with the packet. Thus, if the packet-route-to data 132 associated with the packet indicates that the packet should be routed back to the routing module 108, the routing 108 routes the packet back to itself (using, for example, the route-back 116), where the routing module may repeat some or all of the method 134 for the packet. However, if the packet-route-to data 132 associated with the packet indicates that the packet should be routed to the desired destination, the routing 108 routes the packet to the desired destination and preferably updates the transaction data structure 130 (for example, the entry for the packet's order number in the packet's transaction) to indicate that the packet has been routed to the desired destination.
It will be appreciated that some or all of the method 134 may be repeatedly used for a plurality of received packets to help reorder the packets.
If desired, the routing module 108 may be implemented using a network processor unit (“NPU”), such as the NP-1c network processor available from EZchip Technologies Inc., which has its headquarters at 900 East Hamilton Avenue, Suite 100, Campbell, Calif. 95008, and has a website at www.ezchip.com. If desired some hardware automation provided by the network processor unit may be leveraged to perform parts of the method 134. Leveraging this hardware automation may allow the network processor to perform some or all of the method 134 at a relatively fast speed.
It will be appreciated that some or all of the method 134 may be performed using suitable hardware automation; however, hardware automation is not required. It will also be appreciated that the routing module 108 does not require the NP-1c or any other network processing unit.
As mentioned above, the network diagnostic component 106 may perform one or more network diagnostic functions. A network diagnostic component, such as the network diagnostic component 106, may be configured to function as any combination of: a bit error rate tester, a protocol analyzer, a generator, a jammer, a monitor, and any other appropriate network diagnostic device.
Bit Error Rate Tester
In some embodiments, a network diagnostic component, such as the network diagnostic component 106, may function as a bit error rate tester. The bit error rate tester may generate and/or transmit an initial version of a bit sequence via a communication path. If desired, the initial version of the bit sequence may be user selected. The bit error rate tester may also receive a received version of the bit sequence via a communication path.
The bit error rate tester compares the received version of the bit sequence (or at least a portion of the received version) with the initial version of the bit sequence (or at least a portion of the initial version). In performing this comparison, the bit error rate tester may determine whether the received version of the bit sequence (or at least a portion of the received version) matches and/or does not match the initial version of the bit sequence (or at least a portion of the initial version). The bit error rate tester may thus determine any differences between the compared bit sequences and may generate statistics at least partially derived from those differences. Examples of such statistics may include, but are not limited to, the total number of errors (such as, bits that did not match or lost bits), a bit error rate, and the like.
It will be appreciated that a particular protocol specification may require a bit error rate to be less than a specific value. Thus, a manufacturer of physical communication components and connections (such as, optical cables), communication chips, other components used for communicating, and the like may use the bit error rate tester to determine whether their components comply with a protocol specified bit error rate. Also, when communication components are deployed, the bit error tester may be used to identify defects in a deployed physical communication path, which then may be physically inspected.
Protocol Analyzer
In some embodiments, a network diagnostic component, such as the network diagnostic component 106, may function as a protocol analyzer (or network analyzer), which may be used to capture data or a bit sequence for further analysis. The analysis of the captured data may, for example, diagnose data transmission faults, data transmission errors, performance errors (known generally as problem conditions), and/or other conditions.
As described below, the protocol analyzer may be configured to receive a bit sequence via one or more communication paths or channels. Typically, the bit sequence comprises one or more network messages, such as, packets, frames, or other protocol adapted network messages. Preferably, the protocol analyzer passively receives the network messages via passive network connections.
The protocol analyzer may be configured to compare the received bit sequence (or at least a portion thereof) with one or more bit sequences or patterns. Before performing this comparison, the protocol analyzer may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the protocol analyzer may determine whether all or a portion of the received bit sequence (or the bit masked version of the received bit sequence) matches and/or does not match the one or more bit patterns. In one embodiment, the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence that comprises a network message having particular characteristics such as, for example, having an unusual network address, having a code violation or character error, having an unusual timestamp, having an incorrect CRC value, indicating a link re initialization, and/or having a variety of other characteristics.
The protocol analyzer may detect a network message having any specified characteristics, which specified characteristics may be user-selected via user input. It will be appreciated that a specified characteristic could be the presence of an attribute or the lack of an attribute. Also, it will be appreciated that the network analyzer may detect a network message having particular characteristics using any other suitable method.
In response to detecting a network message having a set of one or more characteristics, the network analyzer may execute a capture of a bit sequence, which bit sequence may comprise network messages and/or portions of network messages. For example, in one embodiment, when the network analyzer receives a new network message, the network analyzer may buffer, cache, or otherwise store a series of network messages in a circular buffer. Once the circular buffer is filled, the network analyzer may overwrite (or otherwise replace) the oldest network message in the buffer with the newly received network message or messages. When the network analyzer receives a new network message, the network analyzer may detect whether the network message has a set of one or more specified characteristics. In response to detecting that the received network message has the one or more specified characteristics, the network analyzer may execute a capture (1) by ceasing to overwrite the buffer (thus capturing one or more network messages prior to detected message), (2) by overwriting at least a portion or percentage of the buffer with one or more newly received messages (thus capturing at least one network message prior to the detected message and at least network one message after the detected message), or (3) by overwriting the entire buffer (thus capturing one or more network messages after the detected message). In one embodiment, a user may specify via user input a percentage of the buffer to store messages before the detected message, a percentage of the buffer to store messages after the detected message, or both. In one embodiment, a protocol analyzer may convert a captured bit stream into another format.
In response to detecting a network message having a set of one or more characteristics, a network analyzer may generate a trigger adapted to initiate a capture of a bit sequence. Also, in response to receiving a trigger adapted to initiate a capture of a bit sequence, a network analyzer may execute a capture of a bit sequence. For example, the network analyzer may be configured to send and/or receive a trigger signal among a plurality of network analyzers. In response to detecting that a received network message has the one or more specified characteristics, a network analyzer may execute a capture and/or send a trigger signal to one or more network analyzers that are configured to execute a capture in response to receiving such a trigger signal. Further embodiments illustrating trigger signals and other capture systems are described in U.S. patent application Ser. No. 10/881,620 filed Jun. 30, 2004 and entitled PROPAGATION OF SIGNALS BETWEEN DEVICES FOR TRIGGERING CAPTURE OF NETWORK DATA, which is incorporated by reference.
It will be appreciated that a capture may be triggered in response to detecting any particular circumstance—whether matching a bit sequence and bit pattern, receiving an external trigger signal, detecting a state (such as, when a protocol analyzer's buffer is filled), detecting an event, detecting a multi network message event, detecting the absence of an event, detecting user input, or any other suitable circumstance.
The protocol analyzer may optionally be configured to filter network messages (for example, network messages having or lacking particular characteristics), such as, messages from a particular node, messages to a particular node, messages between or among a plurality of particular nodes, network messages of a particular format or type, messages having a particular type of error, and the like. Accordingly, using one or more bit masks, bit patterns, and the like, the protocol analyzer may be used to identify network messages having particular characteristics and determine whether to store or to discard those network messages based at least in part upon those particular characteristics.
The protocol analyzer may optionally be configured to capture a portion of a network message. For example, the protocol analyzer may be configured to store at least a portion of a header portion of a network message, but discard at least a portion of a data payload. Thus, the protocol analyzer may be configured to capture and to discard any suitable portions of a network message.
It will be appreciated that a particular protocol specification may require network messages to have particular characteristics. Thus, a manufacturer of network nodes and the like may use the protocol analyzer to determine whether their goods comply with a protocol. Also, when nodes are deployed, the protocol analyzer may be used to identify defects in a deployed node or in other portions of a deployed network.
Generator
In some embodiments, a network diagnostic component, such as the network diagnostic component 106, may function as a generator. The generator may generate and/or transmit a bit sequence via one or more communication paths or channels. Typically, the bit sequence comprises network messages, such as, packets, frames, or other protocol adapted network messages. The network messages may comprise simulated network traffic between nodes on a network. Advantageously, a network administrator may evaluate how the nodes (and/or other nodes on the network) respond to the simulated network traffic. Thus, the network administrator may be able to identify performance deviations and take appropriate measures to help avoid future performance deviations.
Jammer
In some embodiments, the network diagnostic component 106 may function as a jammer. The jammer may receive, generate, and/or transmit one or more bit sequences via one or more communication paths or channels. Typically, the bit sequences comprise network messages (such as, packets, frames, or other protocol adapted network messages) comprising network traffic between nodes on a network. The jammer may be configured as an inline component of the network such that the jammer may receive and retransmit (or otherwise forward) network messages.
Prior to retransmitting the received network messages, the jammer may selectively alter at least a portion of the network traffic, which alterations may introduce protocol errors or other types of errors. Thus, by altering at least a portion of the network traffic, the jammer may generate traffic, which traffic may be used to test a network. For example, a network administrator may then evaluate how the nodes on the network respond to these errors. For example, a network system designer can perform any one of a number of different diagnostic tests to make determinations such as whether a system responded appropriately to incomplete, misplaced, or missing tasks or sequences; how misdirected or confusing frames are treated; and/or how misplaced ordered sets are treated. In some embodiments, the network diagnostic component 106 may include any suitable amming (or other network diagnostic system or method) disclosed in U.S. Pat. No. 6,268,808 B1 to Iryami et al., entitled HIGH SPEED DATA MODIFICATION SYSTEM AND METHOD, which is incorporated by reference.
In one embodiment, to determine which network messages to alter, the jammer may be configured to compare a received bit sequence—such as a network message—(or a portion of the received bit sequence) with one or more bit sequences or patterns. Before performing this comparison, the jammer may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the jammer may determine whether all or a portion of the received bit sequence (or the bit masked version of the received bit sequence) matches and/or does not match the one or more bit patterns. In one embodiment, the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence (or portion thereof) when the received bit sequence comprises a network message from a particular node, a message to a particular node, a network message between or among a plurality of particular nodes, a network message of a particular format or type, and the like. Accordingly, the jammer may be configured to detect a network message having any specified characteristics. Upon detection of the network message having the specified characteristics, the jammer may alter the network message and/or one or more network messages following the network message.
Monitor
In some embodiments, a network diagnostic component, such as the network diagnostic component 106, may function as a monitor, which may be used to derive statistics from one or more network messages having particular characteristics, one or more conversations having particular characteristics, and the like.
As described below, the monitor may be configured to receive a bit sequence via one or more communication paths or channels. Typically, the monitor passively receives the network messages via one or more passive network connections.
To determine the network messages and/or the conversations from which statistics should be derived, the monitor may be configured to compare a received a bit sequence—such as a network message—(or a portion of the received bit sequence) with one or more bit sequences or patterns. Before performing this comparison, the monitor may optionally apply one or more bit masks to the received bit sequence. In performing this comparison, the monitor may determine whether all or a portion of the received bit sequence (or the bit masked version of the received bit sequence) matches and/or does not match the one or more bit patterns. In one embodiment, the bit patterns and/or the bit masks may be configured such that the bit patterns will (or will not) match with a received bit sequence (or portion thereof) when the received bit sequence comprises a network message from a particular node, a network message to a particular node, a network message between or among a plurality of particular nodes, a network message of a particular format or type, a network message having a particular error, and the like. Accordingly, the monitor may be configured to detect a network message having any specified characteristics—including but not limited to whether the network message is associated with a particular conversation among nodes.
Upon detecting a network message having specified characteristics, the monitor may create and update table entries to maintain statistics for individual network messages and/or for conversations comprising packets between nodes. For example, a monitor may count the number of physical errors (such as, bit transmission errors, CRC error, and the like), protocol errors (such as, timeouts, missing network messages, retries, out of orders), other error conditions, protocol events (such as, an abort, a buffer is full message), and the like. Also, as an example, the monitor may create conversation specific statistics, such as, the number of packets exchanged in a conversation, the response times associated with the packets exchanged in a conversation, transaction latency, block transfer size, transfer completion status, aggregate throughput, and the like. It will be appreciated that a specified characteristic could be the presence of an attribute or the lack of an attribute.
In some embodiments, the network diagnostic component may include any features and/or perform any method described in U.S. patent application Ser. No. 10/769,202, entitled MULTI-PURPOSE NETWORK NETWORK DIAGNOSTIC COMPONENTS and filed on Jan. 30, 2004, which is incorporated by reference.
The methods and systems described above can be implemented using software, hardware, or both hardware and software. For example, the software may advantageously be configured to reside on an addressable storage medium and be configured to execute on one or more processors. Thus, software, hardware, or both may include, by way of example, any suitable module, such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, variables, field programmable gate arrays (“FPGA”), a field programmable logic arrays (“FPLAs”), a programmable logic array (“PLAs”), any programmable logic device, application-specific integrated circuits (“ASICs”), controllers, computers, and firmware to implement those methods and systems described above. The functionality provided for in the software, hardware, or both may be combined into fewer components or further separated into additional components. Additionally, the components may advantageously be implemented to execute on one or more computing devices. As used herein, “computing device” is a broad term and is used in its ordinary meaning and includes, but is not limited to, devices such as, personal computers, desktop computers, laptop computers, palmtop computers, a general purpose computer, a special purpose computer, mobile telephones, personal digital assistants (PDAs), Internet terminals, multi-processor systems, hand-held computing devices, portable computing devices, microprocessor-based consumer electronics, programmable consumer electronics, network PCs, minicomputers, mainframe computers, computing devices that may generate data, computing devices that may have the need for storing data, and the like.
Also, one or more software modules, one or more hardware modules, or both may comprise a means for performing some or all of any of the methods described herein. Further, one or more software modules, one or more hardware modules, or both may comprise a means for implementing any other functionality or features described herein.
Embodiments within the scope of the present invention also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a computing device. By way of example, and not limitation, such computer-readable media can comprise any storage device or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a computing device.
When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media. Computer-executable instructions comprise, for example, instructions and data which cause a computing device to perform a certain function or group of functions. Data structures include, for example, data frames, data packets, or other defined or formatted sets of data having fields that contain information that facilitates the performance of useful methods and operations. Computer-executable instructions and data structures can be stored or transmitted on computer-readable media, including the examples presented above.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Number | Name | Date | Kind |
---|---|---|---|
4340932 | Bakula et al. | Jul 1982 | A |
4468728 | Wang | Aug 1984 | A |
4611272 | Lomet | Sep 1986 | A |
4775956 | Kaji et al. | Oct 1988 | A |
4866701 | Giacopelli et al. | Sep 1989 | A |
4879630 | Boucard et al. | Nov 1989 | A |
4891803 | Huang et al. | Jan 1990 | A |
5390359 | Damerau | Feb 1995 | A |
5416769 | Karol | May 1995 | A |
5459731 | Brief | Oct 1995 | A |
5461614 | Lindholm | Oct 1995 | A |
5500858 | McKeown | Mar 1996 | A |
5625371 | Miller et al. | Apr 1997 | A |
5659680 | Cunningham et al. | Aug 1997 | A |
5724509 | Starkweather et al. | Mar 1998 | A |
5786921 | Wang et al. | Jul 1998 | A |
5793871 | Jackson | Aug 1998 | A |
5841982 | Brouwer et al. | Nov 1998 | A |
5847708 | Wolff | Dec 1998 | A |
5850388 | Anderson et al. | Dec 1998 | A |
5884072 | Rasmussen | Mar 1999 | A |
5978947 | Kim et al. | Nov 1999 | A |
6115680 | Coffee et al. | Sep 2000 | A |
6163681 | Wright et al. | Dec 2000 | A |
6246684 | Chapman et al. | Jun 2001 | B1 |
6266789 | Bucher et al. | Jul 2001 | B1 |
6298047 | Steffes et al. | Oct 2001 | B1 |
6393341 | Lawrence et al. | May 2002 | B1 |
6393587 | Bucher et al. | May 2002 | B2 |
6467053 | Connolly et al. | Oct 2002 | B1 |
6473794 | Guheen et al. | Oct 2002 | B1 |
6480313 | Kawamura | Nov 2002 | B1 |
6507923 | Wall et al. | Jan 2003 | B1 |
6618368 | Tanigawa et al. | Sep 2003 | B1 |
6662009 | Lynn | Dec 2003 | B2 |
6674724 | Main et al. | Jan 2004 | B1 |
6678275 | DeGrandpre et al. | Jan 2004 | B1 |
6686759 | Swamy | Feb 2004 | B1 |
6691165 | Bruck et al. | Feb 2004 | B1 |
6697379 | Jacquet et al. | Feb 2004 | B1 |
6714217 | Huang et al. | Mar 2004 | B2 |
6738645 | Knight | May 2004 | B2 |
6745011 | Hendrickson et al. | Jun 2004 | B1 |
6754488 | Won et al. | Jun 2004 | B1 |
6791956 | Leu | Sep 2004 | B1 |
6801756 | Agrawal et al. | Oct 2004 | B1 |
6801949 | Bruck et al. | Oct 2004 | B1 |
6839321 | Chiruvolu | Jan 2005 | B1 |
6842429 | Shridhar et al. | Jan 2005 | B1 |
6850483 | Semaan | Feb 2005 | B1 |
6853620 | Mauritz et al. | Feb 2005 | B2 |
6880070 | Gentieu et al. | Apr 2005 | B2 |
6910149 | Perloff et al. | Jun 2005 | B2 |
6931574 | Coupal et al. | Aug 2005 | B1 |
6934477 | Willebrand | Aug 2005 | B2 |
6941482 | Strong | Sep 2005 | B2 |
6954789 | Dietz et al. | Oct 2005 | B2 |
6970917 | Kushwaha et al. | Nov 2005 | B1 |
6996418 | Teo et al. | Feb 2006 | B2 |
7003080 | Doskow et al. | Feb 2006 | B1 |
7007208 | Hibbert et al. | Feb 2006 | B1 |
7027808 | Wesby | Apr 2006 | B2 |
7062264 | Ko et al. | Jun 2006 | B2 |
7100092 | Allred et al. | Aug 2006 | B2 |
7110954 | Yung et al. | Sep 2006 | B2 |
7120149 | Salamat | Oct 2006 | B2 |
7181663 | Hildebrandt | Feb 2007 | B2 |
7194503 | Shell et al. | Mar 2007 | B2 |
7206972 | Wilson et al. | Apr 2007 | B2 |
7224968 | Dobson et al. | May 2007 | B2 |
7257741 | Palenik et al. | Aug 2007 | B1 |
7283816 | Fok et al. | Oct 2007 | B2 |
7286510 | Wang et al. | Oct 2007 | B2 |
7286515 | Olson et al. | Oct 2007 | B2 |
7286647 | Stormon et al. | Oct 2007 | B2 |
7313113 | Hills et al. | Dec 2007 | B1 |
7330662 | Zimmerman | Feb 2008 | B2 |
7343524 | Klotz et al. | Mar 2008 | B2 |
7349692 | Ko et al. | Mar 2008 | B2 |
7372848 | Doerr et al. | May 2008 | B2 |
7380154 | Gale et al. | May 2008 | B2 |
7457312 | Weiss et al. | Nov 2008 | B2 |
7483974 | Goud et al. | Jan 2009 | B2 |
7522904 | Zhu | Apr 2009 | B1 |
7523198 | Wu et al. | Apr 2009 | B2 |
7526322 | Whistler | Apr 2009 | B2 |
7545740 | Zelig et al. | Jun 2009 | B2 |
7551922 | Roskowski et al. | Jun 2009 | B2 |
20010016925 | Bucher | Aug 2001 | A1 |
20010049263 | Zhang | Dec 2001 | A1 |
20020025795 | Sharon et al. | Feb 2002 | A1 |
20020044662 | Sowler | Apr 2002 | A1 |
20020055999 | Takeda | May 2002 | A1 |
20020068600 | Chihara et al. | Jun 2002 | A1 |
20020078178 | Senoh | Jun 2002 | A1 |
20020112041 | Viscount et al. | Aug 2002 | A1 |
20020122050 | Sandberg | Sep 2002 | A1 |
20020161875 | Raymond | Oct 2002 | A1 |
20020181405 | Ying | Dec 2002 | A1 |
20020181506 | Loguinov | Dec 2002 | A1 |
20030038769 | Turpin et al. | Feb 2003 | A1 |
20030048854 | Kaku | Mar 2003 | A1 |
20030157895 | Agrawal et al. | Aug 2003 | A1 |
20030167405 | Freund et al. | Sep 2003 | A1 |
20030204781 | Peebles et al. | Oct 2003 | A1 |
20030220112 | Bugeja | Nov 2003 | A1 |
20040006633 | Chandra et al. | Jan 2004 | A1 |
20040015317 | Klotz et al. | Jan 2004 | A1 |
20040054680 | Kelley et al. | Mar 2004 | A1 |
20040057389 | Klotz et al. | Mar 2004 | A1 |
20040076194 | Okamoto et al. | Apr 2004 | A1 |
20040100963 | Guo | May 2004 | A1 |
20040107391 | Bauman | Jun 2004 | A1 |
20040133733 | Bean et al. | Jul 2004 | A1 |
20040153267 | Fishman et al. | Aug 2004 | A1 |
20040177344 | Kuo | Sep 2004 | A1 |
20040185876 | Groenendaal et al. | Sep 2004 | A1 |
20040199568 | Lund | Oct 2004 | A1 |
20040203379 | Witkowski et al. | Oct 2004 | A1 |
20040225916 | Clark | Nov 2004 | A1 |
20040242197 | Fontaine | Dec 2004 | A1 |
20040255191 | Fox et al. | Dec 2004 | A1 |
20040264448 | Wise et al. | Dec 2004 | A1 |
20050013300 | Akahane et al. | Jan 2005 | A1 |
20050034055 | Rangan et al. | Feb 2005 | A1 |
20050050190 | Dube | Mar 2005 | A1 |
20050060402 | Oyadomari et al. | Mar 2005 | A1 |
20050060403 | Bernstein et al. | Mar 2005 | A1 |
20050078606 | Bernstein et al. | Apr 2005 | A1 |
20050078692 | Gregson | Apr 2005 | A1 |
20050085259 | Conner et al. | Apr 2005 | A1 |
20050114083 | Bullis | May 2005 | A1 |
20050120269 | Larson | Jun 2005 | A1 |
20050166023 | Kasako et al. | Jul 2005 | A1 |
20050172161 | Cruz et al. | Aug 2005 | A1 |
20050185597 | Le et al. | Aug 2005 | A1 |
20050185658 | Kamiwada | Aug 2005 | A1 |
20050232284 | Karaoguz et al. | Oct 2005 | A1 |
20050232291 | Brown et al. | Oct 2005 | A1 |
20050249214 | Peng | Nov 2005 | A1 |
20050254488 | Huang | Nov 2005 | A1 |
20050257104 | Wood | Nov 2005 | A1 |
20050260982 | Ko et al. | Nov 2005 | A1 |
20060058982 | Yamada et al. | Mar 2006 | A1 |
20060095174 | Sonnenrein et al. | May 2006 | A1 |
20060101271 | Thomas | May 2006 | A1 |
20060117300 | Puthukattukaran et al. | Jun 2006 | A1 |
20060198312 | Schondelmayer et al. | Sep 2006 | A1 |
20060198318 | Schondelmayer et al. | Sep 2006 | A1 |
20060198319 | Schondelmayer et al. | Sep 2006 | A1 |
20060200708 | Gentieu et al. | Sep 2006 | A1 |
20060200711 | Schondelmayer et al. | Sep 2006 | A1 |
20060205398 | Seckendorf et al. | Sep 2006 | A1 |
20060230134 | Qian et al. | Oct 2006 | A1 |
20060230312 | Nichols et al. | Oct 2006 | A1 |
20060246845 | Lawson et al. | Nov 2006 | A1 |
20060264178 | Noble et al. | Nov 2006 | A1 |
20070086351 | Noble et al. | Apr 2007 | A1 |
20070087741 | Noble et al. | Apr 2007 | A1 |
20070087771 | Noble et al. | Apr 2007 | A1 |
20070088981 | Noble et al. | Apr 2007 | A1 |
20070099567 | Chen et al. | May 2007 | A1 |
20070146782 | Lehotsky et al. | Jun 2007 | A1 |
20070287450 | Yang et al. | Dec 2007 | A1 |
20080008128 | Nagarajan et al. | Jan 2008 | A1 |
20090254650 | Sheppard | Oct 2009 | A1 |
Number | Date | Country |
---|---|---|
2004097576 | Nov 2004 | WO |
2005018162 | Feb 2005 | WO |
Number | Date | Country | |
---|---|---|---|
20070253402 A1 | Nov 2007 | US |