The various aspects described herein generally relate to wireless communications, and in particular, to using directionality to reduce flooding in a wireless mesh network.
All wireless networking technologies generally have a limited range. However, there are many environments in which devices that are otherwise outside communication range may need to communicate using a reliable low-power wireless technology. For example, the Internet of Things (IoT) is based on the idea that everyday objects, not just computers and computer networks, can be read, recognized, located, addressed, and otherwise controlled via an IoT communications network (e.g., an ad-hoc system or the Internet). One way to address issues that arise when devices are outside a maximum communication range is to implement a mesh network, which has a topology in which all devices can communicate with another either directly or indirectly. For example, two devices that are in radio range may communicate directly, whereas communication with devices located outside radio range may be achieved via one or more intermediate “relay” nodes. Mesh networks may therefore offer multiple paths to route a message from a source to a destination, resulting in greater reliability relative to other networks that tend to flow all traffic through a central hub (e.g., a router or gateway).
Accordingly, a wireless mesh network may generally refer to a network in which various devices or nodes have the ability to receive and act upon messages in addition to having the ability to repeat or relay the messages to surrounding devices or nodes that are within radio range. The mesh architecture may therefore extend the effective radio range associated with whatever wireless technology is used to convey the messages, whereby the mesh architecture can be used to implement the IoT and other suitable use cases that are built at least in part on wireless communications. In general, a wireless mesh network can use a routing protocol to find a path to convey a message from one node to another. Alternatively and/or additionally, a flooding protocol may be used. In a flooding protocol, each node may send a message to every other node in radio range, and the other nodes may in turn relay the message to each node in radio range thereof. Consequently, the message may be suitably relayed to all nodes in the mesh network. One advantage that may result from using a flooding approach is that less memory and processing power (and therefore less energy) may be required.
Although flooding may offer various advantages in a wireless mesh network, flooding protocols also present various challenges. For example, some wireless technologies may use a flooding protocol in which each message is sent to every other node arbitrarily even though some messages may only have one intended destination. As such, each node may eventually receive the same flooded message from each neighbor located at a next hop level. In that sense, the duplicate messages may increase the overall load as well as the processing complexity in the wireless mesh network. As the number of nodes in the wireless mesh network increases, using such a flooding protocol may be expected to result in decreased network reliability. One proposed approach to restrict the unlimited message circulation of a flooded message in a wireless mesh network is to use a message cache along with a hop count or time-to-live (TTL) value. However, in a large wireless mesh network, the message cache may be unable to eradicate flooding of duplicate messages. For example, when a transmitting node does not know the approximate hop count to a destination node, the transmitting node might choose a high TTL value. Furthermore, any relay nodes that transmit the flooded message to the originating/transmitting node may contribute to unnecessarily circulating the message.
Accordingly, there exists a need to develop devices, apparatus, and methods to improve flooding and otherwise improve performance in a wireless mesh network.
The following presents a simplified summary relating to one or more aspects disclosed herein. As such, the following summary should not be considered an extensive overview relating to all contemplated aspects, nor should the following summary be regarded to identify key or critical elements relating to all contemplated aspects or to delineate the scope associated with any particular aspect. Accordingly, the following summary has the sole purpose to present certain concepts relating to one or more aspects relating to the mechanisms disclosed herein in a simplified form to precede the detailed description presented below.
In an aspect, a method of using directionality to reduce flooding in a wireless mesh network includes receiving, at a node of the wireless mesh network, a message for a destination node in the wireless mesh network, determining, by the node, whether or not the message came from a direction of the destination node, based on determining that the message came from the direction of the destination node, dropping, by the node, the message, and based on determining that the message did not come from the direction of the destination node, forwarding the message.
In an aspect, an apparatus for using directionality to reduce flooding in a wireless mesh network includes a receiver of a node in the wireless mesh network configured to receive a message for a destination node in the wireless mesh network, and at least one processor of the node configured to: determine whether or not the message came from a direction of the destination node, drop the message based on a determination that the message came from the direction of the destination node, and cause a transmitter of the apparatus to forward the message based on a determination that the message did not come from the direction of the destination node.
In an aspect, an apparatus for using directionality to reduce flooding in a wireless mesh network includes a means for communication of a node in the wireless mesh network configured to receive a message for a destination node in the wireless mesh network, and a means for processing of the node configured to: determine whether or not the message came from a direction of the destination node, drop the message based on a determination that the message came from the direction of the destination node, and cause a transmitter of the apparatus to forward the message based on a determination that the message did not come from the direction of the destination node.
In an aspect, a non-transitory computer-readable medium storing computer-executable instructions for using directionality to reduce flooding in a wireless mesh network includes computer-executable instructions comprising at least one instruction instructing a node of the wireless mesh network to receive a message for a destination node in the wireless mesh network, at least one instruction instructing the node to determine whether or not the message came from a direction of the destination node, at least one instruction instructing the node to drop the message based on a determination that the message came from the direction of the destination node, and at least one instruction instructing the node to forward the message based on a determination that the message did not come from the direction of the destination node.
Other objects and advantages associated with the aspects disclosed herein will be apparent to those skilled in the art based on the accompanying drawings and detailed description.
The accompanying drawings are presented to aid in the description of various aspects of the disclosure and are provided solely for illustration of the aspects and not limitation thereof.
The disclosure generally relates to using directionality to reduce flooding in a wireless mesh network. In an aspect, a node of the wireless mesh network receives a message for a destination node in the wireless mesh network, determines whether or not the message came from a direction of the destination node, drops the message based on determining that the message came from the direction of the destination node, and forwards the message based on determining that the message did not come from the direction of the destination node.
These and other aspects of the disclosure are provided in the following description and related drawings directed to various examples provided for illustration purposes. Alternate aspects may be devised without departing from the scope of the disclosure. Additionally, well-known aspects of the disclosure may not be described in detail or may be omitted so as not to obscure more relevant details.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects. Likewise, the term “aspects” does not require that all aspects include the discussed feature, advantage, or mode of operation.
The terminology used herein describes particular aspects only and should not be construed to limit any aspects disclosed herein. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. Those skilled in the art will further understand that the terms “comprises,” “comprising,” “includes,” and/or “including,” as used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Further, various aspects may be described in terms of sequences of actions to be performed by, for example, elements of a computing device. Those skilled in the art will recognize that various actions described herein can be performed by specific circuits (e.g., an application specific integrated circuit (ASIC)), by program instructions being executed by one or more processors, or by a combination of both. Additionally, these sequences of actions described herein can be considered to be embodied entirely within any form of non-transitory computer-readable medium having stored thereon a corresponding set of computer instructions that upon execution would cause an associated processor to perform the functionality described herein. Thus, the various aspects described herein may be embodied in a number of different forms, all of which have been contemplated to be within the scope of the claimed subject matter. In addition, for each of the aspects described herein, the corresponding form of any such aspects may be described herein as, for example, “logic configured to” and/or other structural components configured to perform the described action.
As used herein, the terms “user device,” “user equipment” (or “UE”), “user terminal,” “client device,” “communication device,” “wireless device,” “wireless communications device,” “handheld device,” “mobile device,” “mobile terminal,” “mobile station,” “handset,” “access terminal,” “subscriber device,” “subscriber terminal,” “subscriber station,” “terminal,” and variants thereof may interchangeably refer to any suitable mobile or stationary device. Accordingly, the above-mentioned terms may suitably refer to any one or all of cellular telephones, smart phones, personal or mobile multimedia players, personal data assistants, laptop computers, personal computers, tablet computers, smart books, palm-top computers, wireless electronic mail receivers, multimedia Internet-enabled cellular telephones, wireless gaming controllers, and similar devices with a programmable processor, memory, and circuitry to connect to and communicate over a radio access network (RAN) that implements a particular radio access technology (RAT), over a wired network, over a wireless local area network (WLAN) (e.g., based on IEEE 802.11, etc.), and/or with other devices via a direct device-to-device (D2D) or peer-to-peer (P2P) connection (e.g., a Bluetooth connection).
According to various aspects,
According to various aspects, the controller 120 may be configured to establish a wireless connection 122 with the nodes 110, whereby the controller 120 may use a wireless radio to communicate with the nodes 110 in the wireless mesh network 100. Furthermore, in various aspects, the controller 120 may have an additional communication path 124 to the wireless mesh network 100. For example, in various aspects, the controller 120 may use a configuring application to communicate with the configuring infrastructure 150 via the additional communication path 124 (e.g., via a web console or service). As such, the configuring infrastructure 150 may service configuration commands received from the controller 120 (e.g., to securely distribute a network key to a new node 110, to program a particular node 110 to be within the group 112 or another group, etc.). In various aspects, the gateway 130 may link the various nodes 110 to the cloud 140 and allow command and control over a local area network (LAN) or wireless LAN (WLAN) to which the gateway 130 is connected. Like other elements in the wireless mesh network 100, the gateway 130 may also use a wireless radio to communicate with the various nodes 110 via a wireless channel. According to various aspects, the wireless mesh network 100 may enable the nodes 110 to send, receive, and/or relay messages (e.g., command and control operations), which may originate at one or more of the nodes 110 and/or be received from the controller 120 via the wireless connection 122 or from the gateway 130 via the additional communication path 124 between the controller 120 and the nodes 110.
According to various aspects, at least the nodes 110, the controller 120, and the gateway 130 may be configured to communicate with one another via a wireless mesh protocol, which may generally enable devices to send, receive, and relay messages to surrounding devices located within radio range, thus forming an ad-hoc mesh network. For example, message communication may be based on broadcast messages transmitted and received via one or more wireless channels (e.g., a Bluetooth broadcast channel), wherein each node 110 that receives a broadcast message may accept and forward the message to other nodes 110 within radio range. In this manner, the range over which the nodes 110 can communicate may be easily extended, as one or more intermediate nodes 110 can be used to relay a message to another node 110 that is otherwise located outside radio range. As such, the wireless mesh protocol may enable the wireless mesh network 100 to be easily extended to accommodate new devices, which can also increase the geographic coverage of the wireless mesh network 100 depending on device placement. The wireless mesh protocol can therefore be used to support various different use cases that are built, at least in part, on point-to-point, point-to-multipoint, and/or other suitable wireless communications.
According to various aspects,
In various aspects, as noted above, communication in the wireless mesh network 100 as shown in
More particularly, the example network graph 300 shown in
Although flooding a message may advantageously offer simplicity and consume less memory and processing power (and therefore less energy), such a naïve flooding protocol presents various challenges. For example, a naïve flooding protocol may promote duplicate messages because each message has to be arbitrarily sent to every other node even if the message only has one intended destination. As such, each node may eventually receive the same flooded message from each neighbor located at a next hop level. In that sense, the duplicate messages may increase the overall load as well as the processing complexity in the wireless mesh network. As the number of nodes in the wireless mesh network increases, using the naïve flooding protocol may be expected to result in greater and greater reductions in network reliability.
One approach to restrict the unlimited message circulation of a flooded message in a wireless mesh network may be to use a message cache along with a hop count or time-to-live (TTL) value. As such, referring back to
However, in a large wireless mesh network, the message cache may be unable to eradicate flooding of duplicate messages. For example, constrained memory may be unable to maintain a large enough cache of messages to prevent duplication. Furthermore, when a transmitting node does not know the approximate hop count to a destination node, the transmitting node might choose an unnecessarily high TTL value 429, which would otherwise limit the number of times that the message can be relayed in the network (e.g., each time that a device receives and relays a message, the TTL value 429 is decremented by one without re-computing the MAC 427). Although the message would not be relayed when the TTL value 429 reaches one (1) (e.g., because a TTL value 429 of zero (0) is used to communicate with neighboring devices), this may also fail to reduce flooding. Users and/or applications may therefore select a suboptimal TTL value 429, as the size of a given wireless mesh network is not static, and instead set the TTL value 429 to the maximum value. For example, simple math suggests that a message that has to be relayed from a first level (L1) having a first number (N1) of nodes to a second level (L2) having a second number (N2) of nodes will result in N1*N2 messages transmitted from L1 to L2.
Accordingly, the present disclosure provides a mechanism to use directionality to reduce the amount of flooding in a wireless mesh network. In an aspect, each node in a wireless mesh network determines, for each incoming message, at least the source node (e.g., from the SRC identifier 413 field in
The intermediate node 508 receives the message broadcasted by the intermediate node 506, calculates the AOA of the message as θ2, determines that it is not the destination, and therefore relays the message (to destination node 510 in the example of
Note that although
Further note that a node may receive the same message from a source node from different intermediate nodes, and/or may receive different messages from the same source node from different intermediate nodes. As such, there may be different AOAs associated with the same source node. To address this issue, so that there is only one AOA in the AOA Table per source node, the receiving node can determine the AOA for the source node to be the AOA of the first message received from the source node. This assumes that the first-arriving message will have taken the most direct route. Alternatively, the receiving node can determine the AOA for the source node to be some combination (e.g., an average) of the AOAs of some number of messages (e.g., the first three, five, all) received from the source node. This could be beneficial where nodes are close together and there is little difference between the time of arrival of the message from the different intermediate nodes. It may also be beneficial where the node is not able to determine the AOA of the message with precision. By taking the average of some number of AOAs, provided the AOAs are within some threshold of each other that would indicate that the associated messages are from the same node, a more precise AOA for a source node can be determined. As yet another alternative, the receiving node can determine the AOA for the source node to be an approximate range that includes the AOAs of some number of messages (e.g., the first three, ten, all) received from the source node. Again, this could be beneficial where nodes are close together and there is little difference between the time of arrival of the message from the different intermediate nodes. A receiving node could also implement some combination of these three alternatives.
Once a node has generated the AOA Table associating the identifiers of source nodes with the AOAs of messages received from those source nodes, then for each incoming message, the node can determine whether or not the message came from the direction of the node identified in the message as the destination node (e.g., in the DST identifier 415 field in
Note that although the AOA Table has been described as being populated with identifiers of source nodes, the identifiers stored in the AOA Table are simply identifiers of nodes and do not limit the nodes to being source nodes. Rather, the identified nodes may at times operate as source nodes and at other times as destination nodes. For example, a node X may originate a message. As such, its identifier, “X,” will be in the SRC identifier 413 field of the message. At some later time, the node X may be the destination of a different message. As such, its identifier, “X,” will be in the DST identifier 415 field of the message. Accordingly, although populated using the identifier of the source node, the AOA Table can be used to lookup the identifier of a destination node.
A node can determine whether the destination node is in the direction from which the message arrived based on the information in the AOA Table. For example, the node can look up the identifier of the destination node in the AOA Table, and identify the AOA associated with the destination node in the AOA Table. If the received message came from the AOA associated with the destination node, the receiving node can drop the message. However, if the received message came from a different AOA than the AOA associated with the destination node, the receiving node can forward the message.
In the example of
As shown in
Using the AOA of a message to determine whether to forward or drop the message reduces the amount of flooding in a wireless mesh network as compared to the message caching and TTL techniques. In the message caching technique, a node does not know the relative position of the destination node (e.g., the angle to the destination node), so after receiving any new message (i.e., a message with a MAC 427 that does not match the MAC 427 associated with a previous message stored in the message cache), the node relays the message even though the message may have come from the direction of the destination node and therefore the destination node likely already received the message. In contrast, a node using the AOA techniques described herein would not relay the message if it came from the direction of the destination node, thereby reducing the number of messages being transmitted in the wireless mesh network. Compared to the TTL technique, where a message is relayed within a wireless mesh network a certain number of times, using the AOA techniques described herein, a node would not relay the message if it came from the direction of the destination node, even if the TTL would otherwise permit additional relays. As such, the AOA techniques described herein can provide a significant reduction in the amount of traffic being broadcasted in a wireless mesh network compared to conventional techniques.
When relaying a message, an intermediate node can broadcast the message omni-directionally (i.e., in all directions, as illustrated, for example, in
More specifically, the node 702 looks up the identifier of the destination node 708 in its AOA Table, identifies the AOA associated with the destination node 708, and beams the message in the direction of the AOA associated with the destination node 708. In the example of
As illustrated in
As shown in
At 820, the node determines whether or not it is the destination node identified in the message (e.g., based on the DST identifier 415 field). If it is, the flow 800 ends and the node processes the message. If it is not, then at 830, the node determines whether or not there is an entry for the source node in its AOA Table. If the identifier of the source node (e.g., SRC identifier 413) is not present in the AOA Table, then at 840, the node creates an entry for the source node that associates the identifier of the source node with the AOA of the message (e.g., <SRC identifier 413, AOA θ>).
If an entry for the source node is present in the AOA Table (“yes” at 830), or after creating the entry for the source node at 840, then at 850, the node determines whether or not there is an entry for the destination node in the node's AOA Table. If there is, then at 860, the node determines whether the destination node is in the direction from which the message arrived based on the AOA of the message. More specifically, as described above, the node identifies the AOA associated with the destination node from the entry for the destination node in the AOA Table and determines whether the AOA of the message is the same as or different from the AOA associated with the destination node. Note that the AOA of the message may be the “same” as the AOA associated with the destination node if the two AOAs are within some threshold of each other. The threshold may be based on the layout of the wireless mesh network. For example, where nodes are located close together, the threshold may be smaller than where the nodes are located further apart. The threshold may also be based on the precision of the AOA associated with the destination node. If the AOA is sufficiently precise, such as where the node received a sufficient number of messages from the source node when generating the AOA Table to precisely determine the AOA of messages from the source node (as discussed above), then the threshold can be smaller than it would be if the AOA associated with the destination node is not as precise.
If the AOA of the message is the same as the AOA associated with the destination node, then at 870, the node drops the message (i.e., does not relay the message). However, if the AOA of the message is not the same as the AOA associated with the destination node, or if the destination node is not present in the AOA Table (“no” at 850), then at 880, the node relays the message. As described above with reference to
Note that the flow 800 combines the learning of the AOA associated with the source node with the determination of whether the message came from the direction of the destination node. As will be appreciated, the node may perform the learning portion of the flow 800 (830 and 840) separately from the direction determination portion of the flow 800 (850 to 880). More specifically, the node (and each node in the wireless mesh network) may operate in a learning mode for a period of time in order to generate its AOA Table, and then switch to the direction determination mode after the AOA Table is sufficiently populated and the AOAs are sufficiently refined. In that case, the node may not perform operations 830 and 840. Alternatively, the node can continue to perform operations 830 and 840 in case, for example, a new source node is added to the wireless mesh network after the node switches to the direction determination mode.
In various aspects, the wireless device 1000 can include a processor 1004, a memory 1006, a housing 1008, a transmitter 1010, a receiver 1012, an antenna 1016, a signal detector 1018, a digital signal processor (DSP) 1020, a user interface 1022, and a bus system 1024. Alternatively, the functions of the transmitter 1010 and the receiver 1012 can be incorporated into a transceiver 1014. The wireless device 1000 can be configured to communicate in a wireless network that includes, for example, a base station (not illustrated), an access point (not illustrated), and the like.
In various aspects, the processor 1004 can be configured to control operations of the wireless device 1000. The processor 1004 can also be referred to as a central processing unit (CPU). The memory 1006 can be coupled to the processor 1004, can be in communication with the processor 1004, and can provide instructions and data to the processor 1004. The processor 1004 can perform logical and arithmetic operations based on program instructions stored within the memory 1006. The instructions in the memory 1006 can be executable to perform one or more of the methods and processes described herein. In various aspects, the processor 1004 can include, or be a component of, a processing system implemented with one or more processors. The one or more processors can be implemented with any combination of general-purpose microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate array (FPGAs), programmable logic devices (PLDs), controllers, state machines, gated logic, discrete hardware components, dedicated hardware finite state machines, or any other suitable entities that can perform calculations and/or manipulate information. The processing system can also include machine-readable media for storing software. Software can be construed broadly to mean any type of instructions, whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Instructions can include code, e.g., in source code format, binary code format, executable code format, or any other suitable format of code. The instructions, when executed by the one or more processors, can cause the processing system to perform one or more of the functions described herein.
In various aspects, the memory 1006 can include both read-only memory (ROM) and random access memory (RAM). A portion of the memory 1006 can also include non-volatile random access memory (NVRAM).
In various aspects, the transmitter 1010 and the receiver 1012 (or the transceiver 1014) can allow transmission and reception of data between the wireless device 1000 and a remote location. The antenna 1016 can be attached to the housing 1008 and electrically coupled to the transceiver 1014. In some implementations, the wireless device 1000 can also include multiple transmitters, multiple receivers, multiple transceivers, and/or multiple antennas (not illustrated).
In various aspects, the signal detector 1018 can be used to detect and quantify the level of signals received by the transceiver 1014. The signal detector 1018 can detect such signals as total energy, energy per subcarrier per symbol, and/or power spectral density and in other ways.
In various aspects, the DSP 1020 can be used to process signals. The DSP 1020 can be configured to generate a packet for transmission. In some aspects, the packet can include a physical layer data unit (PPDU).
In various aspects, the user interface 1022 can include, for example, a keypad, a microphone, a speaker, and/or a display. The user interface 1022 can include any element or component that conveys information to a user of the wireless device 1000 and/or receives input from a user.
In various aspects, the various components of the wireless device 1000 can be coupled together by a bus system 1024. The bus system 1024 can include a data bus, and can also include a power bus, a control signal bus, and/or a status signal bus in addition to the data bus.
In various aspects, the wireless device 1000 can also include other components or elements not illustrated in
Although a number of separate components are illustrated in
Those skilled in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Further, those skilled in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted to depart from the scope of the various aspects described herein.
The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a DSP, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
The methods, sequences, and/or algorithms described in connection with the aspects disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM, flash memory, ROM, electrically erasable programmable ROM (EEPROM), registers, hard disk, a removable disk, a CD-ROM, or any other form of non-transitory computer-readable medium known in the art. An exemplary non-transitory computer-readable medium may be coupled to the processor such that the processor can read information from, and write information to, the non-transitory computer-readable medium. In the alternative, the non-transitory computer-readable medium may be integral to the processor. The processor and the non-transitory computer-readable medium may reside in an ASIC. The ASIC may reside in an IoT device. In the alternative, the processor and the non-transitory computer-readable medium may be discrete components in a user terminal.
In one or more exemplary aspects, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a non-transitory computer-readable medium. Computer-readable media may include storage media and/or communication media including any non-transitory medium that may facilitate transferring a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of a medium. The term disk and disc, which may be used interchangeably herein, includes CD, laser disc, optical disc, DVD, floppy disk, and Blu-ray discs, which usually reproduce data magnetically and/or optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
While the foregoing disclosure shows illustrative aspects, those skilled in the art will appreciate that various changes and modifications could be made herein without departing from the scope of the disclosure as defined by the appended claims. Furthermore, in accordance with the various illustrative aspects described herein, those skilled in the art will appreciate that the functions, steps, and/or actions in any methods described above and/or recited in any method claims appended hereto need not be performed in any particular order. Further still, to the extent that any elements are described above or recited in the appended claims in a singular form, those skilled in the art will appreciate that singular form(s) contemplate the plural as well unless limitation to the singular form(s) is explicitly stated.