Patent Description:
A communication network may include nodes or devices that have access to information determined and collected at the nodes or devices during operation of the communication network. In some cases, that information may have use in improving performance of the nodes or devices in the communication network, or in improving the performance of the communication network as a whole. Improving on node or network performance translates to a higher quality of service for applications such as media when using the network.

<CIT> teaches a wireless terminal capable of quickly searching for the best route required for communication in a local network such as an ad hoc network. Each of wireless terminals in the local network sets a bit error rates and a data transfer rate with neighboring wireless terminals and, based on the calculated values, calculates the route weight value of a link to each of the neighboring terminals. To set a route for communication between a wireless terminal and another wireless terminal, the wireless terminal issues a route search command based on the route weight value and sends the route weight value to neighboring terminals. The neighboring terminals also send the route search command sequentially to the next terminal while adding up the route weight value. A wireless terminal at the other end decides the best route from the added up route weight value and sends a response back to the starting point.

<CIT> teaches improved capabilities for providing communications. In particular, the improved capabilities may be directed at providing network communications in a Mobile Ad Hoc Network.

According to the present invention, there is provided a node as defined in the accompanying claims.

This summary is not intended to exclusively identify key features or essential features of the claimed subject matter, nor is it intended as an aid in determining the scope of the claimed subject matter.

Aspects include systems, devices, and methods that provide collaborative sharing of bit error pattern information between nodes in a network to allow more efficient device and network operation. The shared bit error pattern information is utilized at the nodes for data traffic routing or data transmission parameter adaption. For example, the bit error pattern information is utilized by a node in determinations of how to route network data traffic to one or more other nodes of a. The bit error pattern is readily available (or can be easily computed) from existing receivers, which implies no modification to receiver hardware is needed.

The aspects provide solutions that allow more efficient data traffic routing decisions to be made at a sending node by considering bit error patterns of one or more possible receiving nodes at the bit level. Use of the aspects for making data traffic routing may also preemptively prevent data errors or data packet errors from occurring as data traffic is transmit by a sending node. The bit error patterns may include information on numbers of bit errors in a code word, measurements of relative randomness to burstiness of bit errors, measurements of randomness of bit errors, or measurements of burstiness of bit errors at the one or more possible receiving nodes. The collaboratively shared bit error pattern information is determined and updated over time intervals or upon selected conditions occurring to allow data traffic routing to be performed dynamically.

In an implementation, the bit error pattern information may be utilized in making routing determinations at nodes that comprise routers in a network. Bit error pattern information associated with data traffic is determined at each of one or more nodes of the network. The one or more nodes may then collaboratively distribute and share the bit error pattern information among the one or more nodes. Each of the one or more nodes may then utilize the shared bit error pattern information in making routing decisions when routing data traffic to neighboring nodes as next hop nodes in the network. In another implementation, each of the one or more nodes may also collaboratively distribute and share other information associated with the nodes, such as node error correction capability, among the one or more nodes and combine that other information with bit error pattern information in making decisions. A node routing data traffic may monitor a bit error pattern shared from a selected node currently being used as the next hop node for data packets of the data traffic. When the error pattern of the selected node approaches a threshold associated with the error correction capability of the selected node, the node routing the data traffic may make a determination to preemptively prevent packet errors from occurring by routing the data traffic to another node different from the selected node. The other node may then be used as the next hop node by the node routing the data traffic.

<FIG> and <FIG> relate to non-claimed combinations of features which are nevertheless relevant to highlight specific aspects of the invention.

The system, devices, and methods will now be described by use of aspects. The aspects are presented in this disclosure for illustrative purposes, and not intended to be restrictive or limiting on the scope of the disclosure or the claims presented herein.

The disclosed aspects provide a technical advantage over conventional communications networks through the use of various types of bit error pattern information for making data traffic routing.

The error pattern information used in the aspects allows more refined data traffic decisions than may be made in conventional networks that rely on measurements based on a packet error rate (PER). In the aspects, data traffic decisions may be made at the bit level rather than the packet level. The bit error pattern information of the aspects may include information on numbers of bit errors and location of bit errors in a code word, including information on burstiness of a bit error pattern, information on randomness of bit error patterns, or information on relative randomness to burstiness of bit errors. The bit error pattern information is determined at a receiving node in a network, and then be collaboratively shared among nodes in the network and utilized in data traffic decisions by a sending node.

Conventional communication networks typically use packet error rate (PER) information for data traffic routing and transmission parameter adaption decisions. Typically, PER associated with individual nodes in a network is used when making decisions concerning data traffic within the network. Nodes implemented to perform routing decisions by determining next hop nodes for data packets that the nodes are forwarding onward use PER information for the routing decisions. A network having nodes implemented as access points (APs) communicating with wireless devices uses PER information about individual channels, and the receiving nodes on the individual channels, for determining data rate adaption or error correction coding on the channels. PER may also be used in determining which channels to transmit on in a network.

However, PER indicates only a number of packets that each contained at least a certain number of erroneous bits. The PER information is only an indication of the number of packet errors that have already occurred. The PER information lacks certain more detailed bit level error information about what bit error patterns looked like in the erroneous packets. Use of PER information also does not indicate what bit error patterns looked like in non-erroneous packets before any packet errors occurred. Bit errors may be occurring in certain patterns that are not be detected/shown by the PER. The PER is not available prior to the packet errors occurring and can only be used in decisions for routing or rate adaption after the fact that the packet level errors have occurred. In contrast, implementations of the aspects allow a more optimal solution as compared to conventional networks. Bit error pattern information that may reflect the quality level of a receiving node or channel used in the aspects is available and used for decisions prior to packet errors being indicated by the PER. The bit error pattern information may therefore be utilized prior to packet errors occurring in a preemptory manner. The bit error pattern information is at a more detailed level than PER information and may be utilized in making more refined and efficient data traffic decisions. The bit error pattern information may include information on numbers of bit errors in a code word, measurements of relative randomness to burstiness of bit errors, measurements of randomness of bit errors, or, measurements of burstiness of bit errors. This bit error pattern information is not available from PER and may be utilized for advantage in various use cases, such as when determining a next hop node when routing data packets in a network, when determining transmission parameters used for sending data traffic to a receiving node in a network, or when determining data channels on which to send data traffic in a network.

<FIG> is a simplified diagram illustrating a network <NUM> according to an implementation of the aspects. <FIG> shows host A <NUM> communicating with host B <NUM> through a network that includes nodes N1-N6. In an implementation, host A <NUM> and host B <NUM> may comprise computing devices such as laptops or mobile devices that each includes a client application for communicating with clients on other devices throughout network <NUM>. For example, the client may be a video/audio conferencing application by which a user of host A <NUM> conducts a conference with a user of host B <NUM>. Nodes N1-N6 may comprise any type of routers or servers that are interconnected by channels a-j and that carry any type of data traffic within network <NUM>. For example, channels a-j may carry internet data traffic comprising packet data. Channels a-j may be implemented as any type of channels that carry data traffic in the network <NUM> such as channels over landline cables, wireless channels, or channels over optical cables, etc. Although six nodes are shown, network <NUM> may comprise any number of nodes.

In one example routing scenario, collaborative communications according to the aspects are implemented in a network comprised of nodes such as Nodes N1-N6 of <FIG>. N1 and N6 may comprise a source and destination node for data traffic flow between Host A <NUM> and Host B <NUM>. Data traffic between nodes N1 and N2 may be routed on various routes comprising nodes N2-N5 as long as the route follows the interconnections between the nodes implemented on channels a-j. For example, data traffic from node N1 to node N6 is routed from node N1 to node N2 using channel a, and then from node N2 to node N6 using channel g. In another example, data traffic from node N1 to node N6 is routed from node N1 to node N4 using channel b, and then from node N4 to node N6 using channel k. A node to which a routing node may send data traffic is known as a neighbor node. For example, node N2, node N3, and node N4 are neighbor nodes of node N1, and, node N1, node N2, node N4, node N5, and node N6 are neighbor nodes of node N3.

<FIG> is a simplified block diagram illustrating portions of example node N1. In an example implementation, node N1 is implemented as node N1 of network <NUM>. Nodes N2-N6 of <FIG> may also be implemented similarly to <FIG>. Node N1 includes ports <NUM>(<NUM>) - <NUM>(n), interface hardware <NUM>, processor <NUM>, and memory <NUM>. Memory <NUM> includes routing programs <NUM>, neighbor node error pattern database <NUM>, neighbor node information database <NUM>, and error pattern monitoring database <NUM>. Data packets is received by node N1 at ports <NUM>(<NUM>) - <NUM>(n), processed by interface hardware <NUM> and processor <NUM>, and then forwarded on to other nodes in network <NUM> from an appropriate port of port <NUM>(<NUM>) - <NUM>(n) based on a routing decision.

In an implementation, Node N1 may be configured to use process switching and fast switching for routing data packets. In process switching, processor <NUM> of node N1 determines a next hop node for a received data packet using routing programs <NUM>, neighbor node information database <NUM>, and neighbor node error pattern database <NUM>. In fast switching, a next hop node for a received packet is determined based on cached information about a next hop node that was previously determined using process switching for a previously received data packet in the same packet session as the received data packet.

In <FIG> and <FIG>, process switching may be used for data packets that are the first data packets received in node N1 for a packet session. The packet session comprises a sequence of related data packets sent between a source node and a destination node, where a next hop node needs to be determined at node N1 for the packet session as packets pass through node N1 from source to destination. Fast processing may then be used to route data packets subsequent to the first data packet in the session until it is necessary to use process switching to determine an updated next hop node as node N1. Process switching is used anytime it is desired to update the next hop node used by node N1 in the routing of data packets in an ongoing session. In the implementation, node N1 may switch to routing a packet to an updated next hop node by using processing switching based on changes in neighbor node error patterns or other information associated with neighbor nodes during an ongoing session.

Data packets sent from host A <NUM> to host B <NUM> may form a single packet session such as a packet session for a video conference call. In this case, process switching may be used at node N1 to determine a next hop node (next node in the route after node N1) for the first data packet in the session routed to node N6 through node N1. Node N1 may determine node N3 as the next hop node. However, once one data packet in the session has been process switched to node N3 as the next hop node, node N1 now understands the way to switch all successive packets in the packet session to the same next hop node N3. That is because process switching caches (stores a copy of the outcome) of the forwarding/routing decision after it has been made. Using the cached information (IP destination address, port number, link address, and any other necessary details) may speedup the forwarding/routing by reducing processing load on processor <NUM>. Fast switching may be used for data packets that are not the first data packet in a data packet session to be routed from node N1 to next hop node N3 and then onward to a destination address node N6 for the packet session. Memory <NUM> may include a forwarding route cache that may store information that is used for determining the next hop node and the ports of <NUM>(<NUM>) - <NUM>(n) on which the data packet is sent on, for fast switching of data packets in the same session. In the implementation of <FIG> and <FIG>, information in the neighbor node information database <NUM> and neighbor node error pattern database <NUM> are used when determining next hop nodes for routing data packets in packet sessions. Error pattern monitoring database <NUM> is used to collect bit error pattern information that node N1 sends to neighbor nodes to be used by the neighbor nodes in routing data packets when node N1 is a potential next hop node of the neighbor nodes.

<FIG> is a simplified flow diagram illustrating operations performed for collaboratively sharing information in network node. <FIG> may be explained with reference to <FIG> and <FIG>. <FIG> shows operations by which node N1 collaboratively shares its bit error pattern information en1 and other node information In1 with its neighbor nodes. In <FIG>, each node NX of nodes N2 - N6 will similarly collaboratively share its bit error pattern information enx and other node information Inx with its neighbor nodes.

The process begins at <NUM> where node N1 sends node information In1 for node N1 to its neighbor nodes N2, N3, and N4. Processor <NUM> of node N1 may send node information In1 or updated node information In1 as necessary. For example, node information may be sent when node N1 is powered up in network <NUM> for the first time, or after being shut down for maintenance and then powered up. The node information In1 may include addressing information that may be used by other nodes to reach node N1. The node information In1 may also include information about the error correction capabilities of node N1 and the error correction that node N1 is currently using. At <NUM>, node N1 receives neighbor node information Inx (In2, In3, In4) from each of its neighbor nodes N2, N3, and N4. The node information Inx may include addressing information that may be used by other nodes to reach node N2, N3, or N4. The node information Inx may also include information about the error correction capabilities of nodes N2, N3, and N4, and the error correction that nodes N2, N3, and N4 are currently using. At <NUM>, node N1 then stores/updates node information In2, In3, and In4 in neighbor node information database <NUM>.

At <NUM>, node N1 determines a bit error pattern en1 for received data packets that are addressed to destination node N1 and processed at node N1. Processor <NUM> may determine bit error patterns for individual packets or groups of data packets over a time period and save bit error patterns in error pattern monitoring database <NUM>. The time period may set to provide a desired of accuracy. For example, during network busy periods when many users are on the network, the time period may be set in seconds. In less busy time periods, the time period may be set in minutes or hours. Processor <NUM> may then determine a bit error pattern en1 for node N1, for example based on an average for all data packets received in the time period. The bit error pattern en1 may comprise information on average numbers of errors and location of bit errors in code words, including a measure of relative randomness to burstiness of bit errors at node N1.

Next, at <NUM>, node N1 sends en1 to each of its neighbor nodes N2, N3, and N4. At <NUM>, processor <NUM> retrieves any error patterns en2, en3, and en4, received from neighbor nodes N2, N3, and N4 and, at <NUM>, updates neighbor node error pattern database <NUM>. In an implementation, node N1 may receive the error patterns at time intervals, depending on how often each neighbor node updates and sends out its error patterns, and store the error patterns in a neighbor node error pattern queue as the error patterns are received. Processor <NUM> may then periodically check the queue at predetermined times for updated neighbor node error patterns. In the implementation of <FIG>, the queue may be checked for updated neighbor node error patterns each time operation <NUM> is performed.

Next, at <NUM>, node N1 determines whether it is time to update en1. Node N1 may be configured to update en1 at time intervals that provide a current and accurate error pattern en1 for use by the other nodes. For example, during network busy periods when many users are coming on and leaving the network the updating may be performed at time intervals of seconds. In less busy time periods the time period for updating may be set in minutes or hours. If it is determined to be time to update en1, the process moves to <NUM> and continues from <NUM> where processor <NUM> may continue to determine bit error patterns for individual packets or groups of data packets over a time period and save bit error patterns in error pattern monitoring database <NUM>. Processor <NUM> may then determine an updated bit error pattern en1 for node N1 and send the updated en1 to nodes N2, N3, and N4 at operation <NUM> before moving to operation <NUM>. If it is determined that it is not time to update en1 the process moves directly to <NUM> and continues from <NUM> where processor <NUM> retrieves any error patterns en2, en3, or en4 received from neighbor nodes N2, N3, and N4, and, at <NUM>, updates neighbor node error pattern database <NUM> before returning to operation <NUM>.

Operations <NUM> - <NUM> of <FIG> will be repeated by node N1 allowing node N1 to collaboratively share its bit error pattern information en1 with its neighbor nodes. Each of the other nodes N2 - N6 of network <NUM> will also repeat operations <NUM> - <NUM> to collaboratively share bit error pattern information with neighbor nodes. This collaborative sharing of bit error pattern information allows each node to determine next hop nodes in network <NUM> by making decisions with current information at the bit error level.

Also, once operations <NUM> - <NUM> have been initially performed, anytime node information In1 changes in node N1, node N1 may inform neighbor nodes N2, N3, and N4 and those nodes may update information In1 in their neighbor node information databases. Each of the neighbor nodes N2, N3, and N4 will also collaboratively share updated neighbor node information with node N1 if necessary when the node information changes. Node N1 may then update the appropriate neighbor node information, In2, In3, or In4, in neighbor node information database <NUM>. A node may collaboratively share updated node information, for example, if the node is added to network <NUM>, if the node is shut down for maintenance, if the node is powered up after maintenance, or if the node's relevant configurations, such as error correcting capabilities, are changed and/or updated.

<FIG> is a flow diagram illustrating operations performed for routing data packets based on bit error pattern information in a network node. <FIG> shows the operations that are performed in a node of network <NUM> when data packets are received for forwarding on to a next hop node. For example, the operations of <FIG> is performed at node N1 when data packets are received at node N1 for forwarding on to a next hop node of nodes N2, N3, or N4 on the way to a destination node in network <NUM> or in another network.

The process begins at <NUM> when a data packet is received by node N1 at one of ports <NUM>(<NUM>) - <NUM>(n). At <NUM>, processor <NUM> checks header information in the data packet header to determine if the received data packet belongs to a new session or if the data packet belongs to an ongoing session for which data packets have already been routed. Processor <NUM> may check this by determining if routing programs already have a next hop node stored in program routing tables for data packets having the source and destination addresses indicated in the packet header. If it is determined that the data packet belongs to a new packet session, i.e., the data packet is the first data packet received for a packet session, the process moves to operation <NUM>.

At <NUM>, processor <NUM> determines if there is any updated neighbor node information in neighbor node information database <NUM>, and/or any updated bit error pattern in neighbor node bit error pattern database <NUM>. The updated neighbor node information and/or bit error pattern may be information collaboratively shared with node N1 through the process of <FIG> by neighbor nodes N2, N3, and N4 as the process of <FIG> is performed in the background over time. The updated neighbor node information and/or bit error pattern may be information received from neighbor nodes since the routing programs <NUM> last routed a data packet using the current routing tables in process routing. If there is any updated neighbor node information and/or any updated bit error pattern, the process moves to <NUM>. At <NUM>, processor <NUM> updates the routing tables of routing programs <NUM> based on the updated neighbor node information and/or bit error patterns. The routing tables may include information on connections and various alternative routing paths through the network for various destination nodes. The neighbor node information and neighbor node bit error patterns may be associated in the routing tables with next hop nodes of the various connections and various alternative routing paths to destination nodes.

Next, at <NUM>, processor <NUM> determines a next hop node of nodes N2, N3, or N4, and the data packet is routed and sent to the next hop node. Processor <NUM> determines the next hop node by process routing that uses the neighbor node information and/or bit error patterns in the routing tables. In one implementation, processor <NUM> may determine that a destination address for the data packet is reached through one or more available next hop nodes. Then the next hop node is selected from the available next hop nodes based on a bit error pattern enx, where enx comprises a number of bit errors per code word that node NX is currently correcting. For example, if it is determined that nodes N2, N3, or N4 are available next hop nodes, bit error patterns en2, en3, and en4, may be compared and the node of N2, N3, or N4, having the lowest bit errors per code word as indicated by pattern en2, en3, and en4, respectively, is selected as the next hop node. The bit error patterns may also be combined with other information in determining a next hop node. For example, the relative latency or time delay of the data packet to the destination from node N1 through each of the available next hop nodes may be taken into account as well as the bit error patterns of each available next hop node. In this case, the latency and bit error pattern effects on a data packet session may be weighed relative to one another in the determination of the next hop node. In certain applications in which speed is important, latency considerations may be prioritized and given a higher weighting as compared to bit error considerations.

In another implementation, the error patterns en2, en3, and en4, may each comprise a measure of relative randomness to burstiness of bit errors in code words received at nodes N2, N3, and N4, respectively. The measure of relative randomness to burstiness of bit errors may be utilized because certain error correcting codes are configured to be most effective depending on whether the bit errors the code is correcting are random or bursty. For example, a forward error correction code configured for maximum error correction capability when correcting bursty errors are used on the links between node N1 and nodes N2, N3, and N4. In this case, if it is determined that nodes N2, N3, or N4 are available next hop nodes, bit error patterns en2, en3, and en4, may be compared and the node of N2, N3, or N4, having the lowest measure of relative randomness to burstiness as indicated by patterns en2, en3, and en4, respectively, are selected as the next hop node. The measure of relative randomness to burstiness of bit errors may also be combined with other information in determining a next hop node. For example, the relative latency or time delay of the data packet to the destination from node N1 through each of the available next hop nodes may be taken into account as well as the measure of relative randomness to burstiness of bit errors at each available next hop node. In this case the effects of latency and the measure of relative randomness to burstiness on the data packet session may be weighed relative to one another in the next hop node decision.

If however, at <NUM>, it is determined that there is not any updated neighbor node information in neighbor node information database <NUM> and/or bit error patterns in neighbor node bit error pattern database <NUM>, the process moves to <NUM>. The routing operation at <NUM> would then be performed for the data packet similarly as described for the case when operation <NUM> is entered from operation on <NUM>, except the routing tables would not be updated with new neighbor node information of neighbor node error patterns as is done at <NUM>. In this case, the neighbor node information and bit error patterns previously stored in routing tables of routing programs <NUM> would be used in process routing.

If, at <NUM>, it is determined that the data packet does not belong to a new data packet session the process moves to <NUM>. At <NUM>, processor <NUM> determines if there is any updated neighbor information in neighbor node information database <NUM> and/or any updated bit error pattern in neighbor node bit error pattern database <NUM>. Processor <NUM> may perform the operation at <NUM> in the same manner as was described for operation <NUM>. If, at <NUM>, it is determined that there is not any updated neighbor node information and/or bit error patterns, the process moves to <NUM>. At <NUM> processor <NUM> performs fast routing and the data packet is routed to a next hop node for the session based on cached routing information that indicates the next hop node used for previous packets in the session.

If, at <NUM>, is determined that there is updated neighbor node information in neighbor node information database <NUM> and/or any updated bit error patterns in neighbor node bit error pattern database <NUM>, the process moves to <NUM>. At <NUM>, processor <NUM> updates the routing tables of routing programs <NUM> based on the updated neighbor node information and/or neighbor node bit error patterns. The updating of the routing tables may be performed in a similar manner as was described for operation <NUM> in the case when operation <NUM> is entered from operation <NUM>.

Next, at <NUM>, processor <NUM> determines a next hop node of nodes N2, N3, or N4, and the data packet is routed and sent to the next hop node. Processor <NUM> determines the next hop node by process routing and using the neighbor node information and/or bit error patterns in the routing tables for the determination. Processor <NUM> may determine the next hop node in a similar manner as was described previously for operation <NUM>.

In another implementation, node N1 may also use the neighbor node information /neighbor node bit error pattern information of nodes N2, N3, and N4 to preemptively make decisions about routing to prevent or minimize the occurrence of bit errors in the network. For example, the neighbor node information In2, In3, and In4 in neighbor node database <NUM> may include the error correcting capability of error correction codes used in nodes N2, N3, and N4, respectively. If node N1 is currently routing data traffic to node N2 as the next hop node in an ongoing data packet session over channel a, processor <NUM> of node N1 may receive an updated bit error pattern en2 given as a number of errors occurring and corrected at node N2. In the routing determination at <NUM>, processor <NUM> may compare the bit error pattern en2 to the error correction capability of node N2 that is included in In2. When the number of errors indicated in en2 approaches the bit error correction capability indicated in In2, processor <NUM> may make a determination to route to another node with a greater margin of difference between its number of errors and error correction capability. This routing may be used to preemptively prevent bit errors that cannot be corrected from occurring. For example, if eN2 indicates that node N2 is correcting <NUM> errors with an error correction capability of <NUM> errors and eN3 indicates that node N3 is correcting <NUM> errors with an error correction capability of <NUM> errors, node N1 may switch to routing its data traffic to node N3 over channel b as the next hop node instead of node N2. The data will then be routed to node N6 from node N3 over channel j. In this implementation, this routing may be done even though the number of bit errors at node N2 is less than the number of bit errors at node N3. In an alternative, an updated bit error pattern en2 given as a measure of relative randomness to burstiness of bit errors at node N2, may indicate that bit errors at node N2 are becoming increasingly random and neighbor node information In2 and In3 may indicate that node N3 has an error correcting capability better equipped to handle random bit errors than the error correcting capability of node N2. When the randomness of the bit errors approaches a certain level, node N1 may switch to routing data traffic to node N3 instead of node N2.

In another implementation of network <NUM> of <FIG>, node N1 may use a bit error pattern, such as bit error pattern e2 from node N2, in making determinations as to how to adapt transmission parameters used for sending data traffic to neighbor nodes. Node N1 may increase or decrease the data rate, or change the error correction coding, for data packets sent to node N2 based on an error pattern e2 received from node N2.

In a further implementation of network <NUM> of <FIG>, node N1 may also use the neighbor node bit error pattern information of nodes N2, N3, and N4 and the type of traffic of the data packets to make decisions about routing to prevent or minimize the occurrence of bit errors in the network. Node N1 may determine the traffic type of the data packets using deep packet inspection. Also, memory <NUM> of node N1 may include a database comprising information associating the type of traffic of the data packets to a quality of service value, and node N1 may determine the next hop node based on the neighbor node bit error pattern information and the quality of service value associated with the type of traffic of the data packets. Packets of data traffic associated with a lower quality of service may be routed to a first neighbor node having a relatively higher number of bit errors indicated in that first neighbor node's error pattern. This may be used to maintain bandwidth to a second neighbor node, having a relatively lower number of bit errors indicated in that second neighbor node's error pattern, for packets of data traffic associated with a higher quality of service.

In a further implementation of network <NUM> of <FIG>, network <NUM> may comprise an apparatus for managing routing within nodes N1 - N6. The apparatus may be a separate server device or is implemented in one of nodes N1 - N6. The apparatus may function to receive node information In1, In2, In3, In4, In5, and In6 from each of nodes N1, N2, N3, N4, N5, and N6. The node information may include addressing information that may be used by other nodes to reach a node. The node information may also include information about the error correction capabilities, and the error correction that the nodes are currently using. The apparatus may store/update the node information in a database as the node information is received and/or updated. The apparatus may also receive bit error patterns en1, en2, en3, en4, en5, and en6 from nodes N1, N2, N3, N4, N5, and N6 as the bit error patterns are determined by each node and updated during network operation. Based on the bit error patterns and the node information for each of the nodes, the apparatus may determine packet data traffic routing/management information and provide the information to nodes N1, N2, N3, N4, N5, and N6. The apparatus may also include a database including information associating types of data traffic to different quality of service values, and the packet data traffic routing/management information may include information to manage the nodes to take quality of service values into account when routing data packets.

In another aspect, node information and/or node bit error pattern information may be collaboratively shared between nodes comprising devices transmitting and receiving on one or more wireless channels in a communications network. Devices that communicate with each other on the one or more channels may collaboratively share node information. Devices that receive on each of the one or more channels may determine bit error pattern information associated with each of the one or more channels at that receiving device. The devices may then collaboratively distribute the error pattern information associated with the one or more channels to devices transmitting on the one or more channels or devices that potentially will transmit on the one or more channels.

<FIG> illustrates portions <NUM> and <NUM> of devices implemented to perform operations according to the aspects. <FIG> shows portion <NUM> of a device <NUM> and portion <NUM> of a device <NUM>. Portion <NUM> of device <NUM> includes Wi-Fi/cellular transceivers <NUM>, bit error pattern determination function <NUM>, update timer <NUM>, controller <NUM>, bit error pattern database <NUM>, and parameter adaption function <NUM>. Portion <NUM> of device <NUM> includes Wi-Fi/cellular transceivers <NUM>, bit error pattern determination function <NUM>, update timer <NUM>, controller <NUM>, bit error pattern database <NUM>, and parameter adaption function <NUM>.

<FIG> is a diagram illustrating devices in an implementation of the aspects. <FIG> shows a scenario in which device <NUM> is communicating with access point <NUM> on channel C1. Device <NUM> may comprise any type of mobile device or computing device that is configured to communicate with access point <NUM> and includes the functions of portion <NUM> of <FIG>. Access point <NUM> may include the functions of portion <NUM> of <FIG>. Device <NUM> and access point <NUM> may communicate with one another according to a wireless protocol such as one of the protocols specified in the IEEE <NUM> standards specifications. Device <NUM> may comprise a mobile cellular device and access point <NUM> may comprise a cellular base station operating according to a wide band code division multiple access (WCDMA) system protocol, long term evolution (LTE) system protocol, or other cellular protocol. In <FIG>, device <NUM> is shown adapting its data transmission parameter set between time T1 and T2 according to bit error pattern e1 which is collaboratively shared from access point <NUM>.

<FIG> is a flow diagram illustrating operations performed by the devices of <FIG> and <FIG> in an implementation. <FIG> is explained using device <NUM> and access point <NUM> of <FIG> and <FIG> as device <NUM> and device <NUM>, respectively, of <FIG>. In another implementation, device <NUM> and access point <NUM> could be used as device <NUM> and device <NUM>, respectively.

The process begins at <NUM> when device <NUM> initiates operation on channel C1. The operation on channel C1 may include data traffic transmissions from device <NUM> to access point <NUM> at time T1 using Wi-Fi/cellular transceivers <NUM> and <NUM> having a transmission parameter set that comprises data rate DR1 and error correction coding <NUM> (ECC1). As data transmissions are sent to access point <NUM>, access point <NUM> receives the data transmissions at Wi-Fi/cellular transceivers <NUM> and sends the data to device data processing <NUM> for sending onward into the network. Also, at <NUM>, as access point <NUM> receives and decodes the data transmissions, bit error pattern determination function <NUM> tracks bit errors and determines a bit error pattern e2 for transmissions to access point <NUM> on channel C1. In an implementation, bit error pattern determination function <NUM> may determine bit error pattern e2 using only transmissions received from device <NUM> on channel C1. In another implementation, bit error pattern determination function <NUM> may determine bit error pattern e2 using transmissions received from multiple devices on channel C1. The bit error pattern e2 may be determined over a time period or over a selected number of code words. In an implementation, bit error pattern e2 may comprise a parameter that indicates a number of bit errors per code word at access point <NUM>. In another implementation, bit error pattern e2 may comprise a measure of relative randomness to burstiness, or a measure of burst length of bit errors in code words at access point <NUM>. At <NUM>, controller <NUM> controls bit error pattern determination function <NUM> to send the current bit error pattern e2 to device <NUM>. Controller <NUM> receives the error pattern e2 through Wi-Fi/cellular transceivers <NUM> and stores error pattern e2 in bit error pattern database <NUM>.

Next, at <NUM>, parameter adaption function <NUM> of device <NUM> determines if bit error pattern e2 is greater than a threshold bit error pattern ET by comparing e2 to ET. For example, in an implementation in which e2 indicates a number of bit errors per code word, ET may indicate a threshold amount of bit errors per code word for data transmissions from device <NUM>. When bit errors in a code word are above the threshold amount of bit errors, it may be determined that e2 is greater than ET at <NUM>. In another example, in an implementation in which e2 indicates a measure of relative randomness to burstiness of bit errors in code words, ET may indicate a threshold level of a measure of relative randomness to burstiness or a measure of burst length for bit errors of code words in data transmissions from device <NUM>. When bit errors in a code word are above a threshold level of relative randomness to burstiness, it may be determined that e2 is greater than ET at <NUM>. In another implementation, e2 may indicate both a threshold for a measure of randomness to burstiness for bit errors and a threshold for a number of bit errors per code word. In this case ET may be a combined threshold for a measure of relative randomness to burstiness for bit errors and a number of bit errors per code word. For the combined threshold, the determination at <NUM> may comprise determining whether both the measure of relative randomness to burstiness for bit errors and the threshold for a number of bit errors per code word were greater than their individual thresholds. If it is determined at <NUM> that bit error pattern e2 is not greater than ET, the process moves to <NUM>. At <NUM>, controller <NUM> of access point <NUM> determines if it is time to update error pattern e2. Update timer <NUM> may be checked for this determination. If it is determined it is not time to update e2, the process repeats the determination at <NUM> at time intervals until it is determined it is time to update e2. Update timer <NUM> may be set to indicate an update at selected time intervals. In one implementation, the time intervals set by update timer <NUM> for updating the error pattern information may be based, for example, on the degree of fading of the wireless channel used in a mobile network. The more severe the fading on channel C1 the more often the error pattern information needs to be updated.

The process then moves back to <NUM> where bit error pattern determination function <NUM> of access point <NUM> determines error pattern e2 and begins the process again using an updated error pattern e2.

If however, at <NUM>, parameter adaption function <NUM> of device <NUM> determines that e2 is greater than ET, the process moves to <NUM>. At <NUM>, parameter adaption function <NUM> then adapts the parameter set used on channel C1 for data transmissions from Wi-Fi/cellular transceivers <NUM> to access point <NUM>. As part of operation <NUM>, parameter adaption function <NUM> may negotiate the adaption of the parameters with parameter adaption function <NUM> of access point <NUM>. If device <NUM> and access point <NUM> disagree, access point <NUM> may control the rate adaption decision. In an implementation in which e2 indicates a number of bit errors per code word, the adaption of the transmission parameter set may comprise adapting the data rate DR1 and/or the error correction coding ECC1 to reduce the number of bit errors occurring. In an implementation in which e2 indicates a relative measure of randomness to burstiness of bit errors in code words, the adaption of transmission parameter set <NUM> may comprise adapting the data rate DR1 and/or the error correction coding ECC1 to account for an increase in randomness or bustiness of the bit errors. Data rate DR1 may be adapted by changing to a new data rate DR2 that is less than data rate DR1 to reduce the number of errors or the randomness/burstiness of the errors occurring. In another example, error correcting code ECC1 may be changed to an error correcting code ECC2 that is more robust and more capable of protecting against errors that are more random or more bursty than ECC1 is able to protect against. In an implementation in which e2 indicates both a measure of relative randomness to burstiness for bit errors and a number of bit errors per code word, the data rate DR1 and/or the error correction coding ECC1 may be adapted to reduce the number of errors and the randomness/burstiness of the errors occurring. <FIG> shows the updated parameter set being used by device <NUM> at time T2.

In another implementation of <FIG>, the adaption of transmission the parameter set on channel <NUM> may also comprise changing to a new data rate that is faster than the current data rate and/or changing to an error correcting code ECC2 that is less robust and less capable of correcting a larger number of errors to increase data throughput when channel conditions are better. This may be done, for example, by comparing e2 to ET to determine if the bit error pattern e2 is less than a threshold for a measure of relative randomness to burstiness for bit errors and/or less than a threshold for a number of bit errors per code word. In this case when fewer bit errors are occurring and/or randomness/burstiness of bit errors is low it may be desirable to increase data throughput by adapting the data rate higher or using error correcting codes less capable of correcting a certain level of randomness/burstiness. This implementation may be used in combination with <FIG> to dynamically adjust the data rate up or down based on error pattern e2 as channel conditions change. The implementation may also be used to dynamically adjust the error correction coding to be more stringent or less stringent based on e2 as channel conditions change.

In a further implementation of <FIG>, the operations of <FIG> may be performed in a reciprocal manner by device <NUM> and access point <NUM>. In this implementation, both device <NUM> and access point <NUM> may receive a bit error pattern from the other and adapt transmission parameters accordingly. For example, access point <NUM> may send bit error pattern e2 associated with bit errors on channel C1 at access point <NUM>, and device <NUM> may send bit error pattern e1 associated with bit errors on channel C1 at device <NUM>. Device <NUM> and access point <NUM> may then adapt their transmission parameters on channel C1 based on the bit error patterns e2 and e1, respectively. The adaption of transmission parameters may include negotiation between device <NUM> and access point <NUM> to determine mutually agreed upon transmission parameters. In one example of negotiation, if device <NUM> and access point <NUM> disagree, access point <NUM> may control the rate adaption decision.

In other implementations of <FIG>, access point <NUM> may also share bit error pattern e2 with other access points in the network, or provide bit error pattern e2 to a network database. For example, the network database may be a database use by network administrators in making network configuration decisions based on bit error patterns occurring at network access points.

<FIG> is a flow diagram illustrating operations performed by the devices of <FIG> and <FIG> in another implementation. <FIG> is explained using device <NUM> and access point <NUM> of <FIG> and <FIG> as device <NUM> and device <NUM>, respectively, of <FIG>. In another implementation, device <NUM> and access point <NUM> could be used as device <NUM> and device <NUM>, respectively. The process of <FIG> is basically the same as the process of <FIG> except that operation <NUM> of <FIG> uses an alternative method of comparison as compared to operation <NUM> of <FIG>.

When the process of <FIG> reaches operation <NUM>, parameter adaption function <NUM> of device <NUM> determines if bit error pattern e2 is within a margin of a maximum allowed threshold value Ecap by comparing Ecap with e2. For example, Ecap may comprise a value indicating a maximum number of bit errors per code word that access point <NUM> is capable of correcting and it may be determined if Ecap - e2 is greater than the margin. If Ecap - e2 is greater than the margin the process may move to <NUM>. If Ecap - e2 is not less than the margin the process may move to <NUM>. At <NUM>, device <NUM> may adapt the transmission parameter set that comprises data rate DR1 and error correction coding <NUM> (ECC1) based on the determination of <NUM>. The margin used at operation <NUM> may be set to allow bit errors to be preemptively prevented from occurring. The margin may also be set differently for different applications on device <NUM>. The margin may be set higher for applications that require higher quality transmissions with less bit errors so that the parameters are adapted before errors occur. In an implementation in which e2 indicates a number of bit errors per code word, the adaption of the parameter set may comprise adapting the data rate DR1 and/or the error correction coding ECC1 to reduce the number of bit errors occurring and increase Ecap - e2. In an implementation in which e2 indicates a relative measure of randomness to burstiness of bit errors in code words, the adaption of the parameter set may comprise adapting the data rate DR1 and/or the error correction coding ECC1 to account for an increase in randomness/burstiness of the bit errors and to increase the value of Ecap - e2. For example, data rate DR1 may be adapted by changing to a new data rate DR2 that is less than data rate DR1 to reduce the number of errors or the randomness/burstiness of the errors occurring. In another example, error correcting code ECC1 may be changed to an error correcting code ECC2 that is more robust and capable of correcting a larger number of errors or errors that are more random or bursty than ECC1 is able to correct. In an implementation in which e2 indicates both a measure of randomness to burstiness for bit errors and a number of bit errors per code word, one or both of the data rate DR1 and/or the error correction coding ECC1 may be adapted to reduce the number of errors and the randomness of the errors occurring to increase the value of Ecap - e2. <FIG> shows the updated parameter set being used by device <NUM> at time T2.

In other implementations of <FIG>, the adaption of transmission parameter set <NUM> on channel <NUM> at <NUM> may also comprise changing to a new data rate that is faster than the current data rate and/or changing to an error correcting code ECC2 that is less robust and less capable of correcting a larger number of errors to increase data throughput when channel conditions are better. For example, this may be done when it is determined at <NUM> that Ecap - e2 is increasing in value indicating that fewer bit errors are occurring and/or the randomness or burstiness of the bit errors is decreasing. In this case, when fewer bit errors are occurring and/or randomness or burstiness of bit errors is low, it may be desirable to increase data throughput by adapting the data rate higher or using less stringent error correcting codes. This implementation may be used in combination with <FIG> to dynamically adjust the data rate up and down based on error pattern e2 as the value of Ecap - e2 changes up and down. The implementation may also be used to dynamically adjust the error correction coding to be more stringent or less stringent as the value of Ecap - e2 changes up and down.

In other implementations of <FIG>, device <NUM> may utilize bit error pattern e2 to make adapt transmission parameters by changing the channel on which device <NUM> transmits to access point <NUM>. For example, if device <NUM> and access point <NUM> are capable of communicating on more than one channel, device <NUM> may switch to a channel other than channel C1 if e2 indicates unacceptable bit error patterns are occurring on channel C1.

In further implementations of <FIG>, device <NUM> may adapt transmission parameters based on the bit error pattern and the type of the data traffic device <NUM> is transmitting to device <NUM>. In one example, device <NUM> may determine a type of the data traffic using deep packet inspection. Also, device <NUM> may include a database comprising information associating the type of the data traffic to a quality of service value. Device <NUM> may adapt transmission parameters based on the bit error pattern and the quality of service value associated with the type of the data traffic. For example, higher quality of service requirements related to latency may restrict how much the data rates are reduced, or lower quality of service requirements may restrict how much the data rate is increased, based on the bit error pattern.

<FIG> are diagrams illustrating devices in a further implementation of the aspects. <FIG> show a sequence in which device <NUM> is shown collaboratively sharing bit error pattern information with device <NUM>. <FIG> is a flow diagram illustrating operations performed by the devices in <FIG> may be explained with reference to <FIG> using device <NUM> as device <NUM>, access point <NUM> as device <NUM>, and device <NUM> as device <NUM>.

The process of <FIG> begins at <NUM> when device <NUM> begins operation on channel C1 as shown in <FIG>. The operation on channel <NUM> may include data traffic transmissions from device <NUM> to access point <NUM> at time T1. As data transmissions are sent to access point <NUM>, access point <NUM> receives the data transmissions and sends the data transmission onward toward a destination in the network infrastructure. As access point <NUM> receives and decodes the data transmissions, at <NUM>, access point <NUM> also tracks bit errors and determines a bit error pattern e2 for transmission from device <NUM> on channel C1. The bit error pattern e2 may be determined over a time period or over a selected number of code words. In an implementation, bit error pattern e2 may comprise a parameter that indicates a number of bit errors per code word. In another implementation, bit error pattern e2 may comprise a measure of relative randomness to burstiness of bit errors in code words. Next, at <NUM>, access point <NUM> sends error pattern e2 to device <NUM>.

Next, at <NUM>, device <NUM> determines if a query for bit error pattern information has been received from another device. In an implementation, device <NUM> may monitor a short range interface such as Bluetooth or Wi-Fi direct to detect and receive queries for bit error pattern information from other devices operating in its vicinity. For example, other devices moving into the coverage area of access point <NUM> may send out these queries to attempt to gather information on access points near their location. If no query has been received the process moves to <NUM>. At <NUM>, access point <NUM> determines if it is time to update e2. If it is time to update e2, the process returns to <NUM>. If it is not time to update e2, the process moves to <NUM> where device <NUM> again determines if a query for bit error pattern information has been received from another device. Operations <NUM> and <NUM> are then repeated until access point <NUM> determines that it is time to update e2 and the process moves to operation <NUM>.

If however, at <NUM>, it is determined by device <NUM> that a query for bit error pattern information has been received, the process moves to <NUM>. At <NUM>, device <NUM> may determine the device that sent the query, which in this example is device <NUM>, and send e2 to device <NUM> as shown in <FIG> at time T2.

At <NUM>, device <NUM> may adapt its initial transmission parameters for data transmissions to access point <NUM> on channel C1 based on e2, and, at <NUM>, as shown in <FIG> at time T3, initiate operation on channel C1 using the transmission parameters as adapted.

In other implementations, device <NUM> may be located in the coverage area of multiple access points and may receive error pattern information from multiple devices, each communicating with a different access point of the multiple access points using the process of <FIG>. Device <NUM> may then select an access point of available access points based on the error pattern information received from the multiple access points. Also, in another implementation, device <NUM> may receive error pattern information from multiple devices, each communicating with access point <NUM> on a different channel using the process of <FIG>. Device <NUM> may then select a channel on which to communicate with access point <NUM> based on the error pattern information received from the multiple access points. In a further implementation, device <NUM> may be located in the coverage area of multiple access points, each capable of communicating on multiple channels, and may receive error pattern information from multiple devices, each communicating with the same access point of the multiple access points on different channels and/or with a different access point of the multiple access points using the process of <FIG>. Device <NUM> may then select an access point of available access points and a channel of the selected access point based on the error pattern information received from the multiple access points.

<FIG> is a simplified block diagram of a device <NUM>. The functions shown in <FIG> is implemented on a device such as device <NUM>. Device <NUM> may include a processor <NUM>, memory <NUM>, user interfaces <NUM>, short range transceivers (TRXS) <NUM>, and Wi-Fi/cellular transceiver (TRXS) <NUM>. In various implementations of device <NUM>, not all the functions shown in <FIG> will be needed. For example, if device <NUM> is implemented as an access point such as access point <NUM>, short range TRXS <NUM> and user interfaces <NUM> may not be needed. Memory <NUM> may be implemented as any type of computer readable storage media, including non-volatile and volatile memory. Memory <NUM> is shown as including code comprising device operating system (OS) <NUM>, device applications <NUM>, bit error pattern determination programs <NUM> and parameter adaption control programs <NUM>. Processor <NUM> may comprise one or more processors, or other control circuitry, or any combination of processors and control circuitry. The bit error pattern determination programs <NUM> may provide the functions described for bit error determination functions <NUM> or <NUM> shown in <FIG>. When executed, the bit error pattern determination programs <NUM> may cause processor <NUM> to control device <NUM> to perform processes to monitor received data and determine error patterns for the received data. The error patterns may then be collaboratively shared with other devices according to the disclosed implementations. Parameter adaption control programs <NUM> may provide the functions described for parameter adaption functions <NUM> or <NUM> shown in <FIG>. When executed, parameter adaption control programs <NUM> may cause processor <NUM> to control device <NUM> to receive collaboratively shared error pattern information and use the error pattern information to adapt transmission parameters based on the error pattern information according to the implementations.

In implementations, device <NUM> may be any type of device that may be configured to communicate with a network or other device. Device <NUM> may be implemented in a smart phone, a tablet computer, a desktop computer, laptop computer device, gaming devices, media devices, smart televisions, multimedia cable/television boxes, smart phone accessory devices, tablet accessory devices, or personal digital assistants (PDAs). Device <NUM> may also comprise an access point, base station or other infrastructure equipment of a network that communicates with other devices in the network. In an implementation, device <NUM> may operate according to a timed division half-duplex communications standard. For example, device <NUM> may operate using half-duplex channels specified in the IEEE <NUM> Wi-Fi standards.

The example aspects disclosed herein may be described in the general context of processor-executable code or instructions stored on memory that may comprise one or more computer readable storage media (e.g., tangible non-transitory computer-readable storage media such as memory <NUM>). As should be readily understood, the terms "computer-readable storage media" or "non-transitory computer-readable media" include the media for storing of data, code and program instructions, such as memory <NUM>, and do not include portions of the media for storing transitory propagated or modulated data communication signals.

While implementations have been disclosed and described as having functions implemented on particular wireless devices operating in a network, one or more of the described functions for the devices may be implemented on a different one of the devices than shown in the figures, or on different types of equipment operating in different systems.

While the functionality disclosed herein has been described by illustrative example using descriptions of the various components and devices of aspects by referring to functional blocks and processors or processing units, controllers, and memory including instructions and code, the functions and processes of the aspects may be implemented and performed using any appropriate functional blocks, type of processor, circuitry or combinations of processors and/or circuitry and code. This may include, at least in part, one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), system-on-a-chip systems (SOCs), complex programmable logic devices (CPLDs), etc. Use of the term processor or processing unit in this disclosure is mean to include all such implementations.

Claim 1:
A first node, N1, configured to operate in a network comprising a plurality of nodes configured to route a data packet from a source node to a destination node, the plurality of nodes comprising a source node, a destination node and a plurality of intermediate nodes configured to route the data packet from the source node to the destination node, the plurality of intermediate nodes comprising the first node and a plurality of second nodes, the first node comprising:
one or more processors (<NUM>); and
a memory (<NUM>) in communication with the one or more processors, the memory comprising executable instructions (<NUM>, <NUM>, <NUM>) that, when executed, causes the one or more processors to control the first node to:
receive a plurality of bit error patterns (<NUM>) associated with a plurality of channels established between the first node and the plurality of second nodes, respectively;
based on the plurality of bit error patterns, selecting one of the plurality of second nodes as a next hop node; and
upon receiving the data packet from the source node or one of the plurality of second nodes, routing the at least one received data packet to the second node selected as the next hop node (<NUM>);
wherein the plurality of bit error patterns comprises at least one of:
a plurality of measures of relative randomness to burstiness of bit errors associated with the plurality of channels, respectively and wherein the relative randomness to burstiness is determined by comparing the bit error pattern of respective nodes and selecting the next hop based on the respective node having the lower measure of relative randomness to burstiness;
a plurality of bit error randomness measurements associated with the plurality of channels, respectively and wherein the first node selects the next hop node based on the bit error randomness measurements; and
a plurality of bit error burstiness measurements associated with the plurality of channels, respectively and wherein the first node selects the next hop node based on the bit error burstiness measurements;
wherein each bit error pattern includes a number of bit errors and a location of bit errors in a codeword.