Systems and methods for neighboring node discovery in a network

This disclosure involves neighboring node discovery in a network. For instance, a neighboring node discovery method includes receiving, at a first node, a neighbor solicitation message. The neighbor solicitation message includes an indication that a second node is a low power device and a first scheduled response time. The method also includes transmitting at the scheduled response time, by the first node, a first neighbor advertisement message. The first neighbor advertisement message includes an indication of no availability in a neighbor cache of the first node and a second scheduled respond time. Further, the method includes removing one or more nodes from the neighbor cache, and receiving, at the first node at the second scheduled response time, a second neighbor solicitation message from the second node indicating availability in the neighbor cache. Additionally, the method includes linking the first node and the second node.

TECHNICAL FIELD

This disclosure relates generally to processes for neighboring node discovery in a network. More particularly this disclosure relates to the use of neighbor solicitation and neighbor advertisement to discover neighboring nodes that may become potential parent and child node links while limiting bandwidth consumption used for such a discovery process.

BACKGROUND

Networked systems, such as Internet of Things (IoT) devices, such as smart power, gas, and water meters and other smart electronics, are capable of interconnecting with each other for interdevice communication and capable of interconnecting with the internet or other networks. For example, an IoT system provides the ability of IoT devices to communicatively couple with one another and exchange data. The IoT system may include a set of parent nodes that connect to a network (e.g., the internet or an intranet) either directly or indirectly through additional layers of parent nodes. The IoT system may also include a set of child nodes that link with the parent nodes or other child nodes to exchange data up and down a node chain that forms the IoT system.

Certain issues arise with neighboring node discovery in IoT systems. For example, a large number of messages are exchanged during neighbor discovery across the IoT system, which may overwhelm a communication bandwidth of the IoT system. Additionally, keeping up with the neighbor discovery messages may result in low power devices frequently waking up, which may prematurely drain a power source of the low power device. Further, a lossy nature of communication across the IoT system may result in excessive retransmissions of messages, which furthers the overconsumption of the communication bandwidth of the IoT system. Thus, the overconsumption of communication bandwidth in neighbor discovery may reduce or choke available bandwidth for data transmission, increase latency in the network, and limit a lifespan of power sources for low power devices.

SUMMARY

Aspects and examples are disclosed for apparatuses and process for neighboring node discovery. For instance, a neighboring node discovery method includes receiving, at a first node, a first neighbor solicitation message. The first neighbor solicitation message includes a first indication that a second node is a low power device and a first scheduled response time. The method also includes transmitting at the first scheduled response time, by the first node, a first neighbor advertisement message. The neighbor advertisement message includes a second indication of no availability in a neighbor cache of the first node and a second scheduled response time. Further, the method includes removing one or more nodes from the neighbor cache. Additionally, the method includes receiving, by the first node at the second scheduled response time, a second neighbor solicitation message from the second node, and linking the first node with the second node.

In another example, a node of a network includes a processor that executes computer-readable instructions. The node also includes a memory that stores the computer-readable instructions that, when executed by the processor, cause the processor to perform operations. The operations performed by the processor include receiving a first neighbor solicitation message that includes a first scheduled response time from an additional node. Additionally, the operations include transmitting at the first scheduled response time a first neighbor advertisement message to the additional node, and establishing a link with the additional node.

In an additional example, a node includes a processor that executes computer-readable instructions, and a memory that stores the computer-readable instructions that, when executed by the processor, cause the processor to perform operations. The operations performed by the processor include establishing a link with a potential parent node. Additionally, the operations include receiving an unsolicited neighbor advertisement message from the potential parent node indicating a status change of the potential parent node. Further, the operations include updating a neighbor cache stored in the memory to address the status change of the potential parent node.

These illustrative aspects and features are mentioned not to limit or define the presently described subject matter, but to provide examples to aid understanding of the concepts described in this application. Other aspects, advantages, and features of the presently described subject matter will become apparent after review of the entire application.

DETAILED DESCRIPTION

Systems and methods are provided for neighboring node discovery in a network. For example, within an Internet of Things (IoT) system, a node is any point in the IoT system capable of transmitting data to and receiving data from other nodes or a centralized network (e.g., the internet or an intranet). To provide proper routing between the nodes and the centralized network, the IoT system provides an internet protocol (IP) based infrastructure that transmits data between the nodes by relying on unique identifiers associated with each node (e.g., a unique IP address).

For new nodes to couple to the IoT system, each of the new nodes may identify neighboring nodes that have available capacity to receive data from and provide data to the new node. Identifying the neighboring nodes, which may be potential parent nodes, may be referred to herein as a neighbor discovery operation. Techniques described in the present disclosure may reduce communication bandwidth consumption resulting from the neighbor discovery operations and provide mechanisms that efficiently generate reliable communication links between nodes within the IoT system. Accordingly, certain implementations described herein provide specific processes that provide the IoT system with reduced consumption of data bandwidth in neighbor discovery operations.

FIG. 1is a block diagram illustrating an example of an Internet of Things (IoT) system100. The IoT system100provides a network infrastructure for smart devices (e.g., resource consumption meters, vehicles, home appliances, etc. that include communication technology) to communicate across a network of nodes (i.e., the smart devices), the internet, and/or an intranet. In an example where the IoT system100creates a mesh network of smart utility meters, the IoT system100includes a head-end102, which may function as a central processing system that receives a stream of data from a network104. The network104may be the internet, an intranet, or any other data communication network. Root nodes106and child nodes108and109collect data associated with the nodes106,108, and109, and the root nodes106transmit the collected data to the network104and ultimately to the head-end102. The root nodes106may be personal area network (PAN) coordinators, internet gateways, or any other devices capable of connecting to the network104.

The root nodes106aand106bmay generally be referred to as parent nodes due to data links with the child nodes108that are located at a node layer (e.g., layer one) below the root nodes106aand106b. For example, the root nodes106aand106bare illustrated as communicating directly with the network104. Because of the direct communication between the root nodes106aand106band the network104, data provided from the child nodes108travels through fewer nodes to reach the network104and the head-end102.

The child nodes108linked with the child nodes109may also be referred to as parent nodes because the child nodes108are located at layer one of a network in the IoT system100, while the child nodes109are located at layer two of the IoT system100. For example, data from the child nodes109may travel through the child nodes108and the root nodes106before the data reaches the network104and the head-end102, while data from the child nodes108travels only through the root nodes106before reaching the network104and the head-end102. While only a root layer (i.e., the root nodes106), layer one (i.e., the child nodes108), and layer two (i.e., the child nodes109) are illustrated inFIG. 1, more or fewer layers may also be included in the IoT system100. Further, whileFIG. 1depicts a specific network topology (e.g., a DODAG tree), other network topologies are also possible (e.g, a ring topology, a mesh topology, a star topology, etc.).

As mentioned above, other nodes that are further removed from the network104than the root nodes106aand106bmay also be suitable parent nodes. For example, a node with mains power as a power source for the node may make a more reliable parent node than a battery powered node (e.g., a low power device). Accordingly, when a child node108or109is tasked with selecting a parent node between a battery powered node in direct communication with the network104, and a mains power node that is a node layer or more removed from direct communication with the network104or with a root node106, the child node108or109may select the mains power node as the parent node. This selection may be based on the mains power node providing a constant communication path for the child node, while a battery powered node may regularly enter a sleep mode to conserve battery power.

In an example, a low power device110, or any other node108or109, that is not presently linked with a neighboring node may perform a neighbor discovery operation to identify a neighboring or potential parent node suitable for a communication strategy of the low power device110or other node108or109. While the neighbor discover operation is described below with respect to the low power device110, any node108or109may perform the neighbor discovery operation in a similar manner. In the neighbor discovery operation, the low power device110transmits a neighbor solicitation message to any of the nodes106a,106b,108, and109that are within communication range of the low power device110. In an example, the low power device110transmits the neighbor solicitation message using a radio frequency (RF) transmitter, an RF transceiver, or any other communications device.

The nodes106a,106b,108, and109that receive the neighbor solicitation message may transmit neighbor advertisement messages back to the low power device110indicating an availability status to link with a new neighbor node and other characteristics of the node106a,106b,108or109that may aid the low power device110in deciding which node is the best candidate available to establish a link. For example, the nodes106a,106b,108, and109may transmit indications of whether the nodes106a,106b,108, and109are mains powered or battery powered. Additionally, the nodes106a,106b,108, and109may transmit other indications including node capabilities, target address information, node status information, and time scheduling information.

Based on the information received from the nodes106a,106b,108, and109in the neighbor advertisement messages, the low power device110may select between the nodes106a,106b,108, and109for a bidirectional node data link. As an example, the root node106bmay provide an indication in the neighbor advertisement message that the root node106bis one node layer removed from the network104, and the neighbor advertisement message may indicate that the root node106bhas a single child node108already linked with the root node106b. When comparing the neighbor advertisement message from the root node106bwith the neighbor advertisement messages from the root node106aand the child nodes108and109, the proximity of the root node106bto the network104and the indication that the root node106bis linked with fewer child nodes108than the root node106amay both influence creation of a bidirectional data link between the root node106band the low power device110. Other considerations may also influence the selection of a parent node by the low power device110.

FIG. 2is an example of a process200for neighboring node discovery in the IoT system100. At block202, the process200involves a node106,108, or109receiving a neighbor solicitation message from a neighboring device. The neighbor solicitation message may include a request for a scheduled response time. In one or more examples, the neighboring device may be the low powered device110depicted inFIG. 1, such as a utility meter with a battery power source. In such an example, the low powered device110may frequently enter and exit a sleep mode to conserve energy. Accordingly, the scheduled response time may provide an indication to the node106,108, or109of when the low powered device110will be available to receive a response to the neighbor solicitation message of the low powered device110.

At block204, the process200involves determining a priority level of the neighboring device based on the neighbor solicitation message. By way of example, the neighbor solicitation message received by the node106,108, or109may provide an indication of device capability of the neighboring device. The device capability may include power capacity, resource capability, prioritization requirements, device throughput capabilities, etc. In such an example, the node106,108, or109may use the device capability information to determine how the node106,108, or109will respond to the neighbor solicitation message. Further, in an example where several node solicitation messages are received by the nodes106,108, or109, the nodes106,108, or109may prioritize the neighboring devices transmitting the node solicitation messages. For example, the nodes106,108, or109may elevate the priority of the low power device110to a priority level above a mains power node that transmitted a node solicitation message to the nodes106,108, or109within the same time window as the low power device110. Accordingly, the nodes106,108, or109may send different node advertisement messages to the low power device110and the mains power node based on the different priority levels or may respond to the low power device before responding to the mains power node.

At block206, the process200involves transmitting a neighbor advertisement message to the neighboring device. The node106,108, or109may transmit the neighbor advertisement message to the neighboring device during the scheduled time indicated in the neighbor solicitation message. In an example, the neighbor advertisement message may include a node status that indicates various states, conditions, or errors about the node106,108, or109. The neighboring device may use the node status information to determine whether the neighboring device will establish a link with the node106,108, or109or look for an alternative node with which to couple.

The neighbor advertisement message may also include a target address of the node106,108, or109. The target address informs neighboring devices about multiple IPv6 addresses that the node106,108, or109may have per link layer address. Further, the neighbor advertisement message may include device capability, such as power capability, resource capability, prioritization, etc. In an example where the node106,108, or109is a low power device (e.g., a battery powered meter), the neighbor advertisement message may also include a scheduled time for the neighboring device to receive the next scheduled neighbor advertisement message or any other scheduled data message. Other information on the neighbor advertisement message is also contemplated within the scope of the present disclosure.

When communicating between nodes106,108,109, and110to identify neighbor devices that may be suitable for a bidirectional data link, various information may be provided in neighbor advertisement messages and neighbor solicitation messages to help establish the data links. Further, the neighbor advertisement messages may be solicited (e.g., in response to a neighbor solicitation message from another node), or the neighbor advertisement messages may be unsolicited (e.g., not in response to a neighbor solicitation or neighbor advertisement message). As an example,FIGS. 3-6include data format options available for communication between the nodes106,108,109, and110. The information provided in the data format options ofFIGS. 3-6may help a node106,108,109, or110identify a parent node suitable for reliable, bidirectional communication.

FIG. 3is an example of a format for a target address option300in a neighbor advertisement message. The target address option300provides the neighbor advertisement message with information regarding multiple IPv6 addresses that are included per link layer address of the node. The target address option300may include a type indication302that provides an 8-bit identifier of an option type to follow. In the target address option300, the type indication302indicates that the option type is a target address option.

After establishing the option type, the target address option300includes a length identifier304. The length identifier304may include an 8-bit unsigned integer that includes information about a data length of the target address option300inclusive of the type indication302and the length identifier304. A value of the length identifier304may be provided in units of octets, and a value of 0 is invalid. For example, an indication of at least two octets to indicate the presence of the type indication302and the length identifier304may be provided by the length identifier304.

A number of link layer addresses indication306may also form a part of the target address option300. The number of link layer addresses indication306may include an 8-bit unsigned number that contains information about a number of link layer addresses that may be available within the node106,108, or109transmitting the neighbor advertisement message. A typical node106,108, or109may generally provide an indication that the number of link layer addresses available is one. However, other numbers of available link layer addresses are also contemplated.

One or more reserved fields308may be included at the end of some lines of data. The one or more reserved fields308are variable in length, and provide padding to a line of data such that a final structure of the target address option300is 32 bits aligned. That is, the target address option300includes 32 bits of data on each line of data for the entire target address option300.

A first target media access control (MAC) address310may be included as part of the target address option300. The first target MAC address310is an 8-byte value of the first target MAC address of the node106,108, or109transmitting the neighbor advertisement message. Because the size of the first target MAC address310is 64 bits (i.e., 8 bytes), the first target MAC address310may be provided in the target address option300over two 32-bit lines of data.

An indication312of a number of IPv6 interfaces may be included in the target address option300to indicate how many IPv6 interfaces are present within the first target MAC address310. The indication312is an 8-bit unsigned number. The 8-bit unsigned number contains the number of IPv6 interfaces available for the first target MAC address310. Each of the IPv6 interfaces available in the first target MAC address310may be identified by target IPv6 addresses314. The target IPv6 addresses314may each include 16-bytes. Accordingly, a data size of the target IPv6 addresses314may be scaled based on the indication312of the number of target IPv6 interfaces available for the first target MAC address310.

After the target IPv6 addresses314are provided in the target address option300, a variables field316may provide additional information about additional target MAC addresses. For example, when the number of link layer addresses306indicates that the node106,108, or109includes more than one link layer address, the variables field316may output information related to additional target MAC addresses. Further, the variables field316may also indicate the target IPv6 addresses associated with the additional target MAC addresses in a format similar to the first target MAC address310. For example, the variables field316may include fields indicating a number of IPv6 interfaces and the target IPv6 addresses associated with the IPv6 interfaces.

The number of link layer addresses indication306, the target MAC addresses310, the indication312of a number of IPv6 interfaces, and the target IPv6 addresses314included in a solicited or unsolicited neighbor advertisement message enable efficient transmission of information from one node to another node. Further, the target address option300included in a single neighbor advertisement message decreases communication bandwidth clutter when updating neighbor cache entries. Moreover, the target address option300in a neighbor advertisement message increases a likelihood that a receiving node receives all of the information associated with the target address option300by including all of the information in an individual advertisement message.

FIG. 4is an example of a format for a node status option400of a neighbor advertisement message or a neighbor solicitation message. When identifying potential data links across the nodes106,108,109, and110, it may be beneficial for the nodes106,108,109, and110to provide status indications of the node. Accordingly, a neighbor advertisement message and/or a neighbor solicitation message may include the node status option400.

The node status option400may include a type indication402that provides an 8-bit identifier of an option type to follow. In the node status option400, the type indication402indicates that the option type is a node status option. The node status option400also includes a length identifier404. The length identifier404may include an 8-bit unsigned integer that includes information about a data length of the node status option400inclusive of the type indication402and the length identifier404. A value of the length identifier404may be provided in units of octets, and a value of 0 is invalid. For example, an indication of at least two octets to indicate the presence of the type indication402(a first octet) and the length identifier404(a second octet), in addition to any octets associated with a node status indicator406, may be indicated in the length identifier404.

The node status indicator406may include a 16-bit unsigned number that indicates a status of the node106,108,109, and/or110. In an example, the node status indicator406may provide a data code representative of the node status. In such an example, a value of 0 may indicate a success status, a value of 1 may indicate no IP layer connectivity, a value of 2 may indicate that a neighbor cache is full, a value of 3 may indicate that a neighbor cache entry was deleted, and a value of 4 may indicate a tentative cache entry. Other statuses and codes associated with the statuses of the nodes106,108,109, and110are also contemplated within the scope of the present disclosure.

In one or more examples, the node status indicators may help the low power device110determine whether the low power device110should seek a different potential parent node after receiving a neighbor advertisement message that includes the node status option400. For example, if the node status indicator406indicates that the neighbor cache of a potential parent node is full, the low power device110may seek a different parent node to avoid a unidirectional flow of information (e.g., data flow from the low power device110to the root node106but not from the root node106to the low power device110). Additionally, a node status indicator406indicating a neighbor cache entry deletion or a tentative cache entry may prompt the low power device110or other node108or109to pursue other potential parent node options. Additionally, the node status indicator406may provide an indication of a number of neighbor links at a node106,108, or109. Further, the node status indicator406may provide an indication of a maximum number of neighbor links available for a node106,108, or109.

As an example, the node status indicator406indicating the tentative cache entry may provide an indication to the low power device110or other child node108or109that the low power device110or other child node108or109can establish a tentative link with the root node106or any other node108or109. The tentative cache entry may be in a tentative cache location reserved within a neighbor cache of the root node106or any other node, such as node108or109, depending on which node caches the entry. The tentative cache location may provide the root node106with the ability to tentatively link with the child node108or109or the low power device110while the child node108or109or the low power device110finds a parent node with more available space in a non-tentative portion of a neighbor cache. Accordingly, the tentative cache location may operate as a cache location reserved for low power devices110. For example, the root node106may keep tentative cache locations available to tentatively link with low power devices110when requested. The tentative link between the low power device110or other child node108or109and the root node106in such an example is not permanent, and the root node106may eventually remove the tentative link between the low power device110or other child node108or109and the root node106. By indicating the nature of the tentative link with the node status indicator406, the low power device110or other child node108or109is able to identify a different potential parent node in a pursuit of a more permanent link.

Further, when a link is already established between the low power device110and the root node106or other node108or109, the low power device110may address the node status indicator of no IP layer connectivity by establishing a new link with a different neighboring or potential parent node. In establishing the new link, the low power device110may remove information about the original root node106from a neighbor cache of the low power device110and update the neighbor cache of the low power device110with information about the new neighboring or potential parent node.

The process for finding a new parent node for the low power device110may track the process200described above with respect toFIG. 2. For example, the low power device110, upon learning that communication with the root node106is compromised for any reason, may transmit a node solicitation message to a group of other potential parent nodes. The other potential parent nodes may provide solicited neighbor advertisement messages detailing the capabilities and statuses of the potential parent nodes. The low power device110may link with one of the potential parent nodes that the low power device110determines provides the best communication capabilities for the low power device110(e.g., a mains power node, a number of layers from the root node106, neighbor cache availability, etc.).

FIG. 5is an example of a format for a device capabilities option500of a neighbor advertisement message or a neighbor solicitation message. When identifying potential data links across the nodes106,108,109, and110, it may be beneficial for the nodes106,108,109, and110to provide device capabilities of the nodes106,108,109, and110. Accordingly, a neighbor advertisement message and/or a neighbor solicitation message may include the device capabilities option500.

The device capabilities option500may include a type indication502that provides an 8-bit identifier of an option type to follow. In the device capabilities option500, the type indication502indicates that the option type is a device capabilities option. The device capabilities option500also includes a length identifier504. The length identifier504may include an 8-bit unsigned integer that includes information about a data length of the device capabilities option500inclusive of the type indication502and the length identifier504. A value of the length identifier504may be provided in units of octets, and a value of 0 is invalid. For example, an indication of at least two octets to indicate the presence of the type indication502(a first octet) and the length identifier504(a second octet), in addition to any octets associated with a device capabilities indicator506, may be indicated in the length identifier504.

The device capabilities indicator506may include a 16-bit unsigned number that indicates device capabilities of the node106,108,109, and/or110transmitting a message including the device capabilities. In an example, the device capabilities indicator506may store a data code representative of the device capabilities. In such an example, a value of 0 may indicate a mains power device, a value of 1 may indicate a battery powered device, a value of 2 may indicate a router device, a value of 3 may indicate that the device requires traffic prioritization, a value of 4 may indicate that the device requires joining prioritization, a value of 5 may indicate a low throughput device, and a value of 6 may indicate a low traffic device. Any other device capabilities of the nodes106,108,109, and110that may be desirable to present to another of the nodes106,108,109, and110are also contemplated within the scope of the present disclosure.

In one or more examples, the device capabilities indicators506may help the low power device110, the root nodes106, and/or the child nodes108and109determine how to interact with a node transmitting a neighbor advertisement message that includes the device capabilities option500. For example, if the device capabilities indicator506, typically in a node solicitation message, indicates that a device is a low power device110and is seeking a parent node, a root node106receiving the device capabilities indicator506may rearrange links with other nodes to prioritize establishing a link with the low power device110. Similarly, device capabilities indicators506from a potential parent node may enable the low power device110or other child node108or109to determine whether the potential parent node offers adequate device capabilities to establish a bidirectional data link. Further, the device capabilities indicator506provides information regarding the capabilities of the nodes issuing neighbor advertisement and solicitation messages while maintaining independence from other layers of a network stack.

FIG. 6is an example of a format for a scheduled time option600of a neighbor advertisement message or a neighbor solicitation message. When one or more of the nodes106,108,109, and110are low power devices (e.g., the nodes106,108,109, and110include a battery power source), the nodes may be in a sleep state for a significant amount of time. When the nodes106,108,109, and110are in a sleep state, the nodes106,108,109, and110may be unable to receive messages from other nodes or devices. Accordingly, a neighbor advertisement message and/or a neighbor solicitation message may include the scheduled time option600, which indicates a time schedule that the node106,108,109, or110transmitting the message will be available to receive a response.

The scheduled time option600may be included in a number of scenarios. For example, the scheduled time option600may be used generally in neighbor solicitation messages to indicate a time schedule that a node108,109, or110will be ready to receive a response. In another example, the scheduled time option600may be included as a single component of a neighbor advertisement message. When used as the single component of the neighbor advertisement message, the scheduled time option600indicates a time during which a subsequent neighbor advertisement message will be transmitted to the soliciting node108,109, or110. Further, the neighbor advertisement message may include the node status option400along with the scheduled time option600to trigger an indication of a time during which the soliciting node108,109, or110can try to send a subsequent neighbor solicitation message. Moreover, when a node108,109, or110has solicited neighboring node information through a node solicitation message including the scheduled time option600, a neighboring node may be able to create space in a cache prior to the scheduled time indicated in the node solicitation message. Thus, the neighbor advertisement message may respond with an indication of cache availability with the node status option400without including the scheduled time option600.

The scheduled time option600may include a type indication602that provides an 8-bit identifier of an option type to follow. In the scheduled time option600, the type indication602indicates that the option type is a scheduled time option. The scheduled time option600also includes a length identifier604. The length identifier604may include an 8-bit unsigned integer that includes information about a data length of the scheduled time option600inclusive of the type indication602and the length identifier604. A value of the length identifier604may be provided in units of octets, and a value of 0 is invalid. For example, an indication of at least two octets to indicate the presence of the type indication602(a first octet) and the length identifier604(a second octet), in addition to any octets associated with a control field606, a reserved field608, and a scheduled time indicator610, may be indicated in the length identifier604.

The control field606may include an 8-bit number that specifies a time format of the scheduled time indicator610. For example, a value of 0 in the control field606may specify that the time format of the scheduled time indicator610is in Greenwich Mean Time (GMT) format. Alternatively, a value of 1 in the control field606may specify that the time format of the schedule time indicator610is in number of milliseconds from a time of transmission of a message including the scheduled time option600.

The reserved field608may be included at the end of a line of data in the scheduled time option600. As illustrated, the reserved field608is positioned between the control field606and the scheduled time610. The reserved field608is variable in length, and the reserved field608provides padding to a line of data such that a final structure of the scheduled time option600is 32 bits aligned. Because the type indication602, the length identifier604, and the control field606occupy the first 24 bits of the first line of data, the reserved field608is used to pad the final 8 bits of the first line of data.

The scheduled time indicator610is positioned on a second line of data and includes a 32-bit unsigned number. The value provided by the scheduled time indicator610specifies a scheduled time that the device transmitting a node solicitation message will be available to receive a response. As mentioned above, the scheduled time indicator610may be provided in GMT format or in a number of milliseconds from a time of transmission. Other time formats presented in the scheduled time indicator610are also contemplated within the scope of the present disclosure. In one or more examples, a solicited neighbor advertisement message may include the scheduled time indicator610in a message from a potential parent node to a node that initially sent a neighbor solicitation message. In such an example, the neighbor advertisement message may include a node status option400indicating no current availability and the scheduled time option600with the scheduled time indicator610that represents an amount of time for the node soliciting a neighboring node link to wait while the potential parent node performs an operation to clear a portion of a neighbor cache to make room for the new neighboring node link. When the neighbor advertisement message includes the scheduled time indicator610without the node status option400, the scheduled time indicator610may indicate a time at which a subsequent neighbor advertisement message will be sent.

When the neighbor solicitation messages and the neighbor advertisement messages include the scheduled time option600, the low power devices110seeking parent node links, seeking status updates, or providing neighbor solicitation messages may conserve battery by avoiding time spent awake while no new messages are scheduled to arrive at the low power devices110. The likelihood of receiving a message by the low power device110may also increase. For example, the low power devices110may transmit the neighbor solicitation messages with response times indicated by the scheduled time option600. Thus, the low power devices110may sleep until the response time is satisfied. At that point, the low power devices110may awake to receive a message from another node.

Likewise, a mains power node may provide the scheduled time indicator610to the low power device110in the expectation that the mains power node will clear neighbor cache space for the low power device110in the interim. In such an example, the low power device110can reenter a sleep mode and awake to retry the neighbor solicitation message at the scheduled time. While conserving battery power of the low power device110, the scheduled time option600may reduce a number of messages used to receive an adequate response at the low power device110. Further, the scheduled time option600may increase the overall probability of receiving a neighbor advertisement message at the low power device110by providing a time window for the low power device110to awake and receive the message.

While the data formats300,400,500, and600are described above as separate messages, all or any combination of the data formats300,400,500, and600may be provided in a neighbor advertisement message, a neighbor solicitation message, or both as new or additional components of the neighbor advertisement message, the neighbor solicitation message, or both. For example, a neighbor solicitation message from the low power device110may include the device capabilities option500and the scheduled time option600. Additionally, a neighbor advertisement message from the root node106may include the target address option300, the node status option400, the device capabilities option500, and a scheduled time option600. Other combinations of the formats300,400,500, and600are also contemplated for both the node solicitation message and the node advertisement message.

Turning now toFIG. 7, an example of a process700for communicating an IPv6 address change across linked nodes is provided. In an example, linked nodes (e.g, the root node106aand one of the child nodes108) may communicate with each other using neighbor advertisement messages that are either solicited or unsolicited. Neighbor advertisement messages between linked nodes may be used to communicate status changes of one of the linked nodes to the other linked node, node capabilities from one of the linked nodes to the other linked node, scheduled response times from one of the linked nodes to the other linked node, an indication of an IPv6 address change from one of the linked nodes to the other linked node, or any combination thereof. By way of example, the process700details communication of an IPv6 address change, but similar techniques may be used for other communication between the linked nodes. At block702, the process700involves detecting an IPv6 address change of the root node106aor a parent node. When the IPv6 address changes at the root node106aor the parent node, the root node106aor the parent node may update the child nodes108and any other nodes that are linked to the root node106aor the parent node of the change as soon as possible to avoid any loss of data transmission across the root node106a.

At block704, the process700involve transmitting an unsolicited neighbor advertisement message indicating the IPv6 address change to any neighboring nodes that are awake. Even though some of the nodes linked to the root node106aor the parent node may be low power devices and likely not in an awake state when the root node106aor the parent node detects the IPv6 address change, the root node106aor the parent node may transmit the neighbor advertisement message to all neighboring nodes that are available to receive the message upon detection of the IPv6 address change. In this manner, as many neighboring nodes as possible receive an indication of the IPv6 address change as early as possible. As an example, the root node106aor the parent node may transmit the IPv6 address change using the target address option300, as discussed above with respect toFIG. 3.

At block706, the process700involves transmitting a scheduled neighbor advertisement message indicating the IPv6 address change to neighboring nodes that were sleeping during the unsolicited neighbor advertisement message. The scheduled time may be based on receipt of a node solicitation message or node advertisement message from a low power device that included a scheduled time option600, as discussed above with respect toFIG. 6. The scheduled neighbor advertisement message indicating the IPv6 address change is scheduled at the time indicated in the scheduled time option600, and the neighbor advertisement message may include the target address option300. In this manner, the process700is able to provide IPv6 address change updates to neighboring devices in an efficient manner while taking into account neighboring devices that are not active when the IPv6 address change is discovered.

FIG. 8is an example of a process800for establishing a link between the root node106or another potential parent node and the low power device110when a neighbor cache of the root node106or the other potential parent node is full. At block802, the process800involves receiving a neighbor solicitation message indicating that a low power device is soliciting to establish a bidirectional link and requesting to reserve entry of the low power device in a cache of a potential parent node. The neighbor solicitation message may include a device capabilities option500and a scheduled time option600from the low power device110to provide an indication that the low power device is battery powered and an indication of when the low power device110expects a response to the neighbor solicitation message. Other details about the low power device110may also be included as part of the neighbor solicitation message.

At block804, the process800involves determining whether the neighbor cache of the potential parent node is full. The neighbor cache of the potential parent node may be a database that stores a link between link layer addresses and the IPv6 addresses. When the neighbor cache is full, any soliciting node (e.g., the low power device110) wishing to link with the potential parent node is relegated to a unidirectional flow of data upon establishing a data link. That is, the flow of information may travel from the soliciting node to the potential parent node, but the potential parent node may not be available to provide data to the soliciting node.

If the neighbor cache of the potential parent node is full, at block806, the process800involves transmitting a solicited neighbor advertisement message to the low power device110indicating that the neighbor cache is full and indicating a scheduled time for the low power device110to try again. This neighbor advertisement message may be transmitted to the low power device110at a scheduled time that was indicated by the low power device110during the node solicitation message. In such an example, the neighbor advertisement message may include the node status option400and the scheduled time option600to provide the low power device110with the neighbor cache full update and the requested response time.

In another example, at block806, the process800involves transmitting the solicited neighbor advertisement message to the low power device110with a scheduled time indication. When the neighbor advertisement message includes a scheduled time indication without a status indicator (e.g., without an indication that the neighbor cache is full), the potential parent node is providing an indication that the potential parent node will send a subsequent neighbor advertisement message at the scheduled time (e.g., instead of receiving a subsequent neighbor solicitation message from the low power device110). Accordingly, the low power device110may awake to receive the subsequent neighbor advertisement message at the scheduled time indicated in the solicited neighbor advertisement message.

At block808, the process800involves freeing neighbor cache space of the potential parent node to make room for a bidirectional data link between the potential parent node and the low power device110. Because the low power device110provided an indication in the node solicitation message of the low power nature of the low power device110, the low power device110may have an elevated priority level in comparison to another device on mains power. For example, the low powered device110may rely on bidirectional data links with greater reliability than a mains power device because the mains power device is maintained in an awake state and is able to transition between potential parent nodes with greater ease. Accordingly, the potential parent node may free cache space by removing a node from a neighboring cache with a lower priority than the low powered device110.

While the limited powered nature of the low power device110provides elevated priority at potential parent nodes in the example described above, other device capabilities indicated in the device capabilities option500may also result in elevated priority levels for a soliciting node108or109generating a neighbor solicitation message. For example, the soliciting node108or109may receive elevated priority with a potential parent node when the device capabilities indicator506indicates that the child node108or109relies on a shorter network joining time, relies on shorter traffic turnaround times, generates a heightened level of traffic criticality, or has any other device capabilities that merit the elevated priority. In another example, the soliciting node108or109may receive lower priority with a neighbor or potential parent node when the device capabilities indicator506indicates that the soliciting node108or109has a low data throughput requirement or when the soliciting node108or109is a low traffic generating device.

At block810, the process800involves receiving a second neighbor solicitation message from the low powered device110at the scheduled time indicated in the neighbor advertise message provided to the low power device110by the potential parent node. The second neighbor solicitation message from the low powered device110may be a repeat of the initial neighbor solicitation message where the low powered device110provides device capabilities (e.g., an indication that the low powered device110is battery powered) and an indication of a scheduled time for the potential parent node to provide a response.

In the example at block806where the neighbor advertisement message from the potential parent node includes the scheduled time indicator without a status indicator, the potential parent node, at block810, may send a subsequent neighbor advertisement message to the low powered device110. The subsequent neighbor advertisement message is sent in place of receiving the second neighbor solicitation message from the low powered device110. In such an example, the subsequent neighbor advertisement message may include a status indicator indicating that the neighbor cache of the potential parent node has space.

When the neighbor cache space is freed in the potential parent node, at block812, the process800involves establishing a bidirectional data link between the potential parent node the low power device110. Additionally, the potential parent node may respond to the neighbor solicitation message from the low power device110at the scheduled time with a neighbor advertisement message. The neighbor advertisement message may include the target address option300indicating the target MAC addresses and the IPv6 addresses of the potential parent node. Additionally, the neighbor advertisement message may provide a node status option400with a node status indicating that the bidirectional data link is successful.

When, at block804, the neighbor cache of the potential parent node is determined to not be full, the process800may proceed directly to block812. At block812, the process800involves establishing a bidirectional data link between the potential parent node and the low power device110. Additionally, the potential parent node may respond to the neighbor solicitation message from the low power device110at the scheduled time from the neighbor solicitation message received at block802with a neighbor advertisement message. The neighbor advertisement message may include the target address option300indicating the target MAC addresses and the IPv6 addresses of the potential parent node. Further, the neighbor advertisement message may provide a node status option400with a node status indicating that the bidirectional data link is successful.

FIG. 9is an example of a process for removing a link between nodes when a neighbor cache of the potential parent node is full. At block902, the process900involves determining if the neighbor cache of the potential parent node is full. If the neighbor cache is not full, the process900may repeat the determination at block902until the neighbor cache reaches a full state. In an example, block902may be initialized when the potential parent node receives a neighbor solicitation message from a neighboring device with a high priority (e.g., a low powered device).

When the neighbor cache is full, and the potential parent node has received a neighbor solicitation message from a high priority neighboring device, at block904, the process900involves identifying one or more mains power neighbors, or any other neighbor based on other criteria, of the potential parent node for removal from the neighbor cache. For example, the potential parent node may identify mains power neighbors with poor neighbor unreachability detection (NUD) success ratios as mains power neighbors that are available for removal. Additionally, the potential parent node may identify a mains power neighbor with the maximum amount of time since the potential parent node has received a neighbor discovery protocol (NDP) message from the mains power neighbor, or any other neighbor based on other criteria.

At block906, the process900involves sending an unsolicited neighbor advertisement message to the identified mains power neighbors indicating the removal of the mains power neighbor from a bidirectional data link with the potential parent node. The node advertisement message may include the node status option400with a node status indication that the neighbor cache entry for the identified neighbors has been deleted or will be deleted. Upon receiving such a node advertisement message, the identified mains power neighbors are able to obtain new bidirectional data links with an alternative potential parent node. Further, the potential parent node that freed cache space is then able to generate a bidirectional data link with the neighboring device with the high priority.

General Considerations

The features discussed herein are not limited to any particular hardware architecture or configuration. A computing device can include any suitable arrangement of components that provide a result conditioned on one or more inputs. Suitable computing devices include multipurpose microprocessor-based computer systems accessing stored software (i.e., computer-readable instructions stored on a memory of the computer system) that programs or configures the computing system from a general-purpose computing apparatus to a specialized computing apparatus implementing one or more aspects of the present subject matter. Any suitable programming, scripting, or other type of language or combinations of languages may be used to implement the teachings contained herein in software to be used in programming or configuring a computing device.