Embodiments of the inventive subject matter generally relate to the field of communication networks and, more particularly, to forwarding messages in a communication network.
Electric transmission and distribution lines are typically used for providing electric power from generators to buildings, residences, and other components of a city's infrastructure. The electric power may be transmitted over the transmission lines at a high voltage, and may be distributed to buildings and other structures at much lower voltages using electric power lines. Besides providing electric power, electric power lines can also be used to implement powerline communications in both indoor and outdoor environments. Powerline communications can provide another communication medium for connecting various network nodes together in local and wide area networks.
Various embodiments for forwarding messages in a communication network are disclosed. In some embodiments, a method comprises: receiving a message at a first network device for forwarding in a first communication network; determining whether to forward the message based, at least in part, on a first predefined field in the message; and in response to determining to forward the message, determining whether to forward the message via an upstream path or a downstream path with respect to a central coordinator in the first communication network based, at least in part, on a second predefined field in the message, wherein the second predefined field indicates whether the central coordinator has previously forwarded the message.
In some embodiments, said determining whether to forward the message via the upstream path or the downstream path comprises determining to forward the message via the downstream path in the first communication network in response to determining that the second predefined field includes a first indicator; and determining to forward the message via the upstream path in the first communication network in response to determining that the second predefined field includes a second indicator.
In some embodiments, the first indicator indicates that the central coordinator previously received the message from a second network device of the first communication network, or the first indicator indicates that the central coordinator generated the message.
In some embodiments, the second indicator indicates that the central coordinator has not received the message from a second network device of the first communication network, or the second indicator indicates that the central coordinator did not generate the message.
In some embodiments, determining whether to forward the message from the first network device comprises comparing a first device identifier in the first predefined field against a second device identifier associated with a second network device that is directly connected with the first network device; determining to forward the message in the first communication network in response to determining that the first device identifier in the first predefined field matches the second device identifier associated with the second network device; and discarding the message at the first network device in response to determining that the first device identifier in the first predefined field does not match the second device identifier associated with the second network device.
In some embodiments, in response to determining that the first device identifier in the first predefined field matches the second device identifier associated with the second network device, the method further comprises determining to transmit the message via the downstream path of the first communication network in response to determining that the second predefined field includes a first indicator; and determining to transmit the message via the upstream path of the first communication network in response to determining that the second predefined field includes a second indicator.
In some embodiments, in response to determining to transmit the message via the upstream path of the first communication network, the method further comprises transmitting the message from the first network device to a proxy network device associated with the first network device, wherein the proxy network device is configured to forward the message to the central coordinator; or transmitting the message from the first network device directly to the central coordinator.
In some embodiments, in response to determining to transmit the message via the downstream path of the first communication network, the method further comprises determining that the first network device is a proxy network device for a second network device of the first communication network; and determining whether the second network device generated the message based, at least in part, on comparing a device identifier associated with the second network device and a source identifier included in the message.
In some embodiments, the method further comprises transmitting the message from the first network device to the second network device in response to determining that the second network device did not generate the message; and determining not to transmit the message to the second network device in response to determining that the second network device generated the message.
In some embodiments, in response to receiving the message at the first network device from a second network device of the first communication network, the method further comprises, prior to transmitting the message from the first network device to a third network device in the first communication network, updating the first predefined field of the message to include a device identifier associated with the first network device; and updating a third predefined field of the message to indicate that the message was previously forwarded in the first communication network.
In some embodiments, in response to receiving the message at the first network device from a second network device of a second communication network, the method further comprises, prior to transmitting the message from the first network device to a third network device in the first communication network, updating the first predefined field of the message to include a predetermined value that is different from a device identifier associated with the first network device; and updating a third predefined field of the message to indicate that the message was not previously forwarded in the first communication network.
In some embodiments, said receiving the message at the first network device for forwarding in the first communication network comprises one of: receiving the message at the first network device from a second network device of the first communication network; receiving the message at the first network device from a third network device of a second communication network; or generating the message at the first network device.
In some embodiments, a method comprises: receiving a message at a central coordinator of a communication network for forwarding in the communication network; determining whether to forward the message in the communication network based, at least in part, on a first predefined field in the message; in response to determining to forward the message, updating a second predefined field to include a first indicator in the message to indicate that central coordinator received the message; and transmitting the message including the first indicator to a first network device that is directly connected with the central coordinator.
In some embodiments, said determining whether to forward the message comprises comparing a first device identifier in the first predefined field against a second device identifier associated with a downstream network device, wherein the downstream network device is directly connected with the first network device via a downstream path of the communication network; determining to forward the message in response to determining that the first device identifier in the first predefined field matches the second device identifier associated with the downstream network device; and discarding the message at the central coordinator in response to determining that the first device identifier in the first predefined field does not match the second device identifier associated with the downstream network device.
In some embodiments, the method further comprises identifying a plurality of network devices of the communication network that established a direct communication link with the central coordinator; wherein said transmitting the message including the first indicator to the first network device comprises transmitting the message including the first indicator to the plurality of network devices that established the direct communication link with the central coordinator.
In some embodiments, receiving the message at the central coordinator for forwarding in the communication network comprises one of: receiving the message at the central coordinator from a second network device of the communication network; receiving the message at the central coordinator from a third network device of another communication network; or generating the message at the central coordinator.
In some embodiments, a first network device comprises: a processor; and a communication unit coupled with the processor, the communication unit configured to: receive a message for forwarding in a first communication network; determine whether to forward the message based, at least in part, on a first predefined field in the message; and in response to determining to forward the message, determine whether to forward the message via an upstream path or a downstream path with respect to a central coordinator in the first communication network based, at least in part, on a second predefined field in the message, wherein the second predefined field indicates whether the central coordinator has previously forwarded the message.
In some embodiments, the communication unit configured to determine whether to forward the message via the upstream path or the downstream path comprises the communication unit configured to forward the message via the downstream path in the first communication network in response to determining that the second predefined field includes a first indicator; and forward the message via the upstream path in the first communication network in response to determining that the second predefined field includes a second indicator.
In some embodiments, the first indicator indicates that the central coordinator previously received the message from an additional network device of the first communication network; and the second indicator indicates that the central coordinator has not received the message from an additional network device of the first communication network.
In some embodiments, the communication unit configured to determine whether to forward the message comprises the communication unit configured to compare a first device identifier in the first predefined field against a second device identifier associated with a second network device that is directly connected with the first network device; determine to forward the message in the first communication network in response to determining that the first device identifier in the first predefined field matches the second device identifier associated with the second network device; and discard the message at the first network device in response to determining that the first device identifier in the first predefined field does not match the second device identifier associated with the second network device.
In some embodiments, in response to determining to transmit the message via the upstream path of the first communication network, the communication unit is further configured to transmit the message from the first network device to a proxy network device associated with the first network device, wherein the proxy network device is configured to forward the message to the central coordinator; or transmit the message from the first network device directly to the central coordinator.
In some embodiments, in response to determining to transmit the message via the downstream path of the first communication network, the communication unit is further configured to determine that the first network device is a proxy network device for a second network device of the first communication network; and determine whether the second network device generated the message based, at least in part, on comparing a device identifier associated with the second network device and a source identifier included in the message.
In some embodiments, the communication unit is further configured to transmit the message from the first network device to the second network device in response to determining that the second network device did not generate the message; and determine not to transmit the message to the second network device in response to determining that the second network device generated the message.
In some embodiments, in response to receiving the message at the first network device from a second network device of the first communication network, the communication unit is further configured to, prior to transmitting the message from the first network device to a third network device in the first communication network, update the first predefined field of the message to include a device identifier associated with the first network device; and update a third predefined field of the message to indicate that the message was previously forwarded in the first communication network.
In some embodiments, in response to receiving the message at the first network device from a second network device of a second communication network, the communication unit is further configured to, prior to transmitting the message from the first network device to a third network device in the first communication network, updating the first predefined field of the message to include a predetermined value that is different from a device identifier associated with the first network device; and updating a third predefined field of the message to indicate that the message was not previously forwarded in the first communication network.
In some embodiments, a non-transitory machine-readable storage medium having machine executable instructions stored therein, the machine executable instructions comprises instructions to: receive a message at a first network device for forwarding in a communication network; determine whether to forward the message based, at least in part, on a first predefined field in the message; and in response to determining to forward the message, determine whether to forward the message via an upstream path or a downstream path with respect to a central coordinator in the communication network based, at least in part, on a second predefined field in the message, wherein the second predefined field indicates whether the central coordinator has previously forwarded the message.
In some embodiments, said instructions to determine whether to forward the message via the upstream path or the downstream path comprise instructions to forward the message via the downstream path in the communication network in response to determining that the second predefined field includes a first indicator, wherein the first indicator indicates that the central coordinator previously forwarded the message; and forward the message via the upstream path in the communication network in response to determining that the second predefined field includes a second indicator, wherein the second indicator indicates that the central coordinator has not previously forwarded the message.
In some embodiments, said instructions to determine whether to forward the message comprise instructions to compare a first device identifier in the first predefined field against a second device identifier associated with a second network device that is directly connected with the first network device; determine to forward the message in the communication network in response to determining that the first device identifier in the first predefined field matches the second device identifier associated with the second network device; and discard the message at the first network device in response to determining that the first device identifier in the first predefined field does not match the second device identifier associated with the second network device.
In some embodiments, in response to determining to transmit the message via the upstream path of the communication network, said instructions comprise instructions to transmit the message from the first network device to a proxy network device associated with the first network device, wherein the proxy network device is configured to forward the message to the central coordinator; or transmit the message from the first network device directly to the central coordinator.
In some embodiments, in response to determining to transmit the message via the downstream path of the communication network, said instructions comprise instructions to determine that the first network device is a proxy network device for a second network device of the communication network; transmit the message from the first network device to the second network device in response to determining that a device identifier associated with the second network device does not match a source identifier included in the message; and determine not to transmit the message to the second network device in response to determining that the device identifier associated with the second network device matches the source identifier included in the message.
The present embodiments may be better understood, and numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The description that follows includes exemplary systems, methods, techniques, instruction sequences, and computer program products that embody techniques of the present inventive subject matter. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples refer to forwarding messages in a powerline communication network (e.g., a network that implements HomePlug® GreenPHY protocols), embodiments are not so limited. In other embodiments, techniques for forwarding messages may be implemented in communication networks that implement other suitable wired communication protocols (e.g., Ethernet, multimedia over coax alliance (MoCA), HomePlug AV/AV2, etc.) or wireless communication protocols (e.g., wireless local area network protocols, such as IEEE 802.11 protocols). In other instances, well-known instruction instances, protocols, structures, and techniques have not been shown in detail in order not to obfuscate the description.
A powerline communication (PLC) network typically includes a central coordinator that manages communications of other network devices in the PLC network. Some network devices may detect and establish a direct communication link with the central coordinator. Other network devices may not detect the central coordinator and may be referred to as “hidden network devices.” A hidden network device may identify and use an intermediate network device, which may be referred to as a “proxy network device,” for communicating with the central coordinator. The hidden network device may transmit messages to and receive messages from the central coordinator via the proxy network device. In accordance with PLC protocols (e.g., HomePlug GreenPHY protocols), the central coordinator may create and transmit a forwarding table to each network device in the PLC network to indicate how each network device should forward broadcast and multicast messages. Each network device simply forwards the received broadcast/multicast messages to other network devices in accordance with the forwarding table received from the central coordinator. However, such a mechanism may rely on the central coordinator to determine how each of the network devices should forward the broadcast/multicast messages. This may be a time-intensive and memory-intensive process depending on the resources available at the central coordinator and the number of network devices in the PLC network. Furthermore, indiscriminately forwarding the broadcast/multicast messages may result in the message being indefinitely retransmitted in the communication network (“broadcast message storms”) and retransmission of duplicate messages in the PLC network.
In some embodiments, a network device in the communication network can be configured to independently determine a forwarding table for forwarding broadcast and multicast messages in the communication network. The network device can determine the forwarding table without assistance from the central coordinator of the communication network. The network device can determine the forwarding table depending on whether the network device is associated with a proxy network device and/or whether the network device operates as a proxy network device for another network device. Furthermore, a network device may receive a message for broadcasting in the communication network. The network device may determine whether to forward the message via an upstream path or a downstream path of the communication network depending on whether the message includes a first indicator or a second indicator. Forwarding the message via the upstream path may involve re-transmitting the message from the network device to another network device in a network path leading towards the central coordinator or re-transmitting the message from the network device to the central coordinator. Forwarding the message via the downstream path may involve re-transmitting the message to another network device in a network path leading away from the central coordinator. If the message includes the first indicator, this can indicate that the central coordinator has previously forwarded the message. The network device may then re-transmit the message via the downstream path to all network devices (if any) for which the network device operates as a proxy network device. If the message includes the second indicator, this can indicate that the central coordinator has not received the message. The network device may then re-transmit the message via the upstream path—either directly to the central coordinator or to a proxy network device for subsequent forwarding to the central coordinator. When the central coordinator receives the message, the central coordinator can update the message to include the first indicator that indicates that the central coordinator has received the message. In addition to determining whether to forward the message via the upstream path or the downstream path, the network device may use information in the message to determine whether to forward the message or discard the message. Because the network device can be configured to determine its forwarding table depending on whether the network device has a proxy network device and/or operates as a proxy network device can preclude the central coordinator from providing forwarding tables to each network device in the communication network. This can also minimize the resources consumed by the central coordinator and messages transmitted in the communication network. Additionally, using the first and the second indicators included in a broadcast message to determine whether and how to forward the broadcast message in the communication network can minimize broadcast message storms and retransmission of duplicate messages in the communication network.
In one example, the communication network 100 may be a HomePlug AV Logical Network (AVLN). The central coordinator 102 and network devices 104, 106, and 108 may each be PLC-capable network devices. Within the communication network 100, the central coordinator 102 and network devices 104, 106, and 108 may support any suitable network topology, such as a mesh topology, tree topology, star topology, bus topology, etc. In some implementations, the central coordinator 102 and the network devices 104, 106, and 108 may each be an electronic device in an outdoor PLC environment. For example, the outdoor PLC environment can be a smart power grid. In this example, the central coordinator 102 and the network devices 104, 106, and 108 may each be PLC devices or PLC-capable electronic devices configured to operate in the outdoor environment, such as power meters, electric vehicle charging stations, electric vehicles, power generators, electric power distribution devices, etc. In some implementations, the central coordinator 102 and the network devices 104, 106, and 108 may each be PLC-capable electronic devices in an indoor environment (e.g., a home network). In this implementation, the central coordinator 102 and the network devices 104, 106, and 108 may be PLC-capable electronic devices such as laptop computers, tablet computers, mobile phones, smart appliances, wearable devices, gaming consoles, access points, or other suitable electronic devices. In some implementations, the central coordinator 102 and the network devices 104, 106, and 108 may be PLC-capable electronic devices that can be located in the indoor PLC environment or in the outdoor PLC environment. In some embodiments, the central coordinator 102 and network devices 104, 106, and 108 can be configured to communicate using HomePlug AV communication protocols, HomePlug GreenPHY communication protocols, or other suitable powerline communication protocols. In some embodiments, in addition to PLC protocols, the central coordinator 102 and the network devices 104, 106, and 108 may implement other wired or wireless communication protocols (e.g., Bluetooth®, WiMAX, Ethernet, WLAN (e.g., IEEE 802.11 protocols), etc.). Furthermore, in some embodiments, the central coordinator 102 and the network devices 104, 106, and 108 may each include one or more radio transceivers, processors, analog front end (AFE) units, memory, and/or logic to implement the communication protocols and related functionality.
In some embodiments, the central coordinator 102 may be a network device that controls communications within the communication network 100. The network devices 104, 106, and 108 can associate with the central coordinator 102 to join the communication network 100. However, in some embodiments, communication between two network devices in the communication network 100 may not be reliable (or possible) due to longer distances, network congestion, or poor signal quality. For example, the link establishment unit 112 of the network device 104 may not receive a central beacon message from the central coordinator 102 and therefore may not detect the central coordinator 102. The network device 104 that is unable to establish a direct communication link with the central coordinator 102 may be referred to as a “hidden network device.” If the link establishment unit 112 is unable to detect the central coordinator 102, the hidden network device 104 may attempt to communicate with the central coordinator 102 via an intermediate “proxy” network device (e.g., the network device 106).
In some embodiments, a network device in the communication network 100 can be configured to generate its forwarding table for forwarding broadcast and multicast messages in the communication network 100. The forwarding table may be determined based on knowledge of hidden network devices serviced by the network device and/or a proxy network device (or central coordinator) that services the network device. For example, the network devices 106 and 108 may detect and establish a direct communication link with the central coordinator 102. The network device 104 may be unable to detect the central coordinator 102 and may be designated a hidden network device. The network device 104 may select the network device 106 as its proxy network device. The network device 104 may estimate the performance measurement of a communication link between the network device 104 and each additional network device that can be detected by the network device 104. The network device 104 may select the additional network device that is associated with a preferred performance measurement (e.g., highest signal-to-noise ratio) as the proxy network device. Alternatively, the network device 104 may use other suitable techniques to select its proxy network device. In the example of
In addition to the forwarding table, a network device may analyze the frame control field of a message to determine whether/how to forward the message in the communication network 100. The message may be a broadcast message or a multicast message that will be forwarded to one or more network devices in the communication network. In some embodiments, the message may include a predetermined field that indicates whether the central coordinator 102 previously forwarded the message. For example, the predetermined field can indicate whether the central coordinator received the message from another network device of the same communication network, whether the central coordinator received the message from another network device of a different communication network, whether the central coordinator generated the message for transmitting in the communication network, etc. The predetermined field may include a first indicator or a second indicator depending on whether the central coordinator 102 previously forwarded the message. For example, if the message includes the first indicator, this can indicate that the central coordinator 102 has received (or generated) the message. However, if the message includes the second indicator, this can indicate that the central coordinator 102 has not received the message. A forwarding unit (not shown) of the central coordinator 102 may update the predetermined field when the central coordinator 102 receives the message. The forwarding unit may also update the predetermined field if the central coordinator 102 generates the message. A network device 104, 106, or 108 that receives a message for forwarding may determine whether to forward the message via an upstream path or a downstream path of the communication network 100 based, at least in part, on the indictor in the predetermined field. In one embodiment, the predetermined field may be referred to as a “downstream field” or “DS field” of the frame control field. If the downstream field includes the first indicator (e.g., DS=0), the forwarding unit 110 may determine that the central coordinator 102 has not previously received the message or did not originally generate the message. Accordingly, the forwarding unit 110 may re-transmit the message via the upstream path of the communication network 100. To transmit the message via the upstream path, the forwarding unit 110 may transmit the message either directly to the central coordinator 102 or to a proxy network device for subsequent forwarding to the central coordinator 102, as will be described with reference to
Additionally, a network device in the communication network 100 can be configured to include information in the frame control field to indicate whether the message was previously forwarded in the communication network 100. For example, as will be further described in
In some embodiments, the forwarding unit 110 of a receiving network device may evaluate the information in the first frame control field (e.g., PBB field), the second frame control field (e.g., BLE field), the downstream field (e.g., DS field), and/or the source identifier field (e.g., STEI field) to determine whether and how to forward the message. For example, if: A) the first frame control field does not include a predefined value (e.g., PBB≠0xFF), B) the source identifier field includes a device identifier of a downstream network device that is directly connected with the receiving network device, and C) the central coordinator has not received or generated the message (e.g., DS=0), then the forwarding unit 110 may determine that the downstream network device originally generated the message. Accordingly, the forwarding unit 110 may forward the message via the upstream path to the central coordinator 102. Alternatively, the forwarding unit 110 may forward the message via the upstream path to an upper-level proxy network device for subsequent forwarding to the central coordinator 102. As another example, the forwarding unit 110 of a receiving network device may determine that the message was generated by the central coordinator and may re-transmit the message via the downstream path if: A) the first frame control field does not include the predefined value (e.g., PBB≠0xFF), B) the source identifier field includes a device identifier of the central coordinator, and C) the central coordinator has received or generated the message (e.g., DS=1). Other examples for determining whether to forward the message in the communication network and whether to forward the message via the upstream path or the downstream path are further described with reference to
Although examples refer to using the BLE field, the DS field, the PBB field, and/or the STEI field to determine whether and how to forward a message (e.g., a broadcast message or a multicast message) in the communication network, embodiments are not so limited. In other embodiments, the network devices may use other suitable fields, any suitable number of bits, and/or any other type of indicators to determine whether and how to forward the message.
The Ethernet device 222 generates a message 214A for transmitting in the Ethernet 220 and the PLC network 200. The source address (SA) field in the message 214A includes a device identifier of the Ethernet device 222 (e.g., SA=PC-1). The device identifier may be a MAC address, TEI, a network address, or another suitable device identifier that uniquely identifies the network device. The destination address (DA) field in the message 214A includes a predefined forwarding identifier that indicates that the message 214A should be forwarded in the networks 200 and 220 (e.g., DA=FORWARD). The Ethernet device 222 transmits the message 214A to the network device 210 of the PLC network 200 and to other network devices (not shown) that are directly connected with the Ethernet device 222.
In the PLC network 200, the network device 210 receives the message 214A from the Ethernet device 222 for forwarding in the PLC network 200. The network device 210 updates information in the frame control field of the message 214A to generate message 214B for subsequently forwarding in the PLC network 200. The network device 210 receives the message 214A from an external communication network and is the initial network device in the PLC network 200 that receives the message 214A. Therefore, the network device 210 includes its device identifier in a source identifier field of the frame control field to generate the message 214B. In the example of
The network device 208 receives the message 214B from the network device 210. The network device 208 determines that the source identifier in the received message 214B matches the device identifier of a downstream network device 210 directly connected with the network device 208 (e.g., STEI=HSTA-1). Therefore, the network device 210 determines to forward the message 214B in the PLC network 200. The network device 206 updates information in the frame control field of the message 214B to generate message 214C for subsequent forwarding in the PLC network 200. Because the source identifier in the received message 214B matches the device identifier of a downstream network device 210 directly connected with the network device 208, the network device 208 determines that the message 214B was previously transmitted in the PLC network 200. To form the message 214C, the network device 208 includes a predefined value in the first frame control field (e.g., PBB=0xFF) to indicate that the message 214C was previously forwarded in the PLC network 200. The network device 208 also includes its device identifier in the second frame control field of the message 214B (e.g., BLE=PCo-1) to indicate that the network device 208 is currently forwarding the message 214C. The network device 208 may not change the source identifier (e.g., STEI) and destination identifier (e.g., DTEI) in the message 214C. Thus, as depicted in
The central coordinator 202 receives the message 214C from the network device 208. The central coordinator 202 determines that the second frame control field of the received message 214C matches the device identifier of a downstream network device 208 directly connected with the central coordinator 202 (e.g., BLE=PCo-1). Therefore, the central coordinator 202 determines to forward the message 214C in the PLC network 200. The central coordinator 202 updates information in the frame control field of the message 214C to generate the message 214D for subsequent forwarding in the PLC network 200. The central coordinator 202 updates the downstream field to indicate that the central coordinator 202 has received the message. In the example of
The network device 206 receives the message 214D from the central coordinator 202. The network device 206 determines that the second frame control field of the received message 214D matches the device identifier of an upstream network device 202 directly connected with the network device 206 (e.g., BLE=CCo). Therefore, the network device 206 determines to forward the message 214D in the PLC network 200. The network device 206 updates information in the frame control field of the message 214D to generate message 214E for subsequent forwarding in the PLC network 200. Because the second frame control field of the received message 214D matches the device identifier of an upstream network device 202, the network device 206 determines that the message 214D was previously transmitted in the PLC network 200. Accordingly, the network device 206 may ensure that the message 214E includes a predefined value in the first frame control field (e.g., PBB=0xFF) to indicate that the message was previously forwarded in the PLC network 200. The network device 206 also includes its device identifier in the second frame control field of the message 214E (e.g., BLE=PCo-2) to indicate that the network device 206 is currently forwarding the message 214E. The network device 206 may not change the source identifier and destination identifier in the message 214E. Thus, as depicted in
The network device 204 receives the message 214E from the network device 206. The network device 204 determines that the second frame control field of the received message 214E matches the device identifier of an upstream network device 206 directly connected with the network device 204 (e.g., BLE=PCo-2). Therefore, the network device 204 determines to forward the message 214E in the PLC network 200. The network device 206 may also read the downstream field of the received message 214E and determine that the central coordinator 202 has previously forwarded the message 214E (e.g., DS=1). This indicator in the downstream field may indicate that the central coordinator 202 has received the message from another network device of the PLC network, has received the message from another network device of a different communication network, or has generated the message 214E. Therefore, the network device 204 determines to forward the message 214E via the downstream path of the PLC network 200. Based on the forwarding table, the network device 204 may determine that the network device 204 is not directly connected with another downstream network device in the PLC network 200. However, the network device 204 may determine that the Ethernet device 224 is connected with the network device 204. In some embodiments, the network device 204 may update one or more fields of the received message 214E to generate Ethernet message 214G for forwarding to the Ethernet device 224 (e.g., PC-2). In other embodiments, the network device 204 may include the payload and other suitable information (e.g., source identifier, destination identifier, etc.) in a new Ethernet message 214G. The message 214G includes the device identifier of the Ethernet device 222 in the source address field (e.g., SA=PC-1) and the predefined forwarding identifier in the destination address field (e.g., DA=FORWARD). The network device 204 forwards the message 214G from the PLC network 200 to the Ethernet device 224 of the Ethernet 220. The Ethernet device 224 may continue to forward the message 214G to other network devices in the Ethernet 220 and/or to other suitable communication networks. Although not shown in
The network device 208 receives the message 214D from the central coordinator 202. The network device 208 determines that the second frame control field of the received message 214D matches the device identifier of an upstream network device 202 directly connected with the network device 206 (e.g., BLE=CCo). Therefore, the network device 208 determines to forward the message 214D in the PLC network 200. The network device 208 may read the downstream field of the received message 214D (e.g., DS=1) and determine that the central coordinator 202 received or generated the message 214D. Accordingly, the network device 208 determines to forward the message 214D via the downstream path of the PLC network 200 and not to forward the message 214D via the upstream path of the PLC network 200. The network device 208 may access its forwarding table and identify the downstream network devices that are directly connected with the network device 208. With reference to the example of
The network device 212 receives the message 214F from the network device 208. The network device 212 determines that the second frame control field of the received message 214F matches the device identifier of an upstream network device 208 directly connected with the network device 212 (e.g., BLE=PCo-1). The network device 212 also determines that the central coordinator 202 received or generated the message 214F based on the indicator in the downstream field (e.g., DS=1) of the received message 214F. Therefore, the network device 212 may determine to forward the message 214F via the downstream path. However, after accessing the forwarding table, the network device 212 may determine that the network device 212 is not directly connected with another downstream network device of the PLC network 200. After processing the message 214F, the network device 212 may discard the message 214F and determine not to forward the message in the PLC network 200.
Although
In some embodiments, as depicted with reference to
At block 302, a first network device receives a message for forwarding in a communication network. The message may be a broadcast message or a multicast message. In some embodiments, the first network device may receive the message from a second network device of the same communication network. With reference to the example of
At block 304, the first network device determines whether to forward the message in the communication network based, at least in part, on a first predefined field in the message. In one embodiment, the forwarding unit can compare a device identifier in the received message with a device identifier of each network device that is directly connected with the first network device. The device identifier received in the message may include the source identifier or a device identifier (“forwarding device identifier”) of another network device that transmitted the message to the first network device. The forwarding table associated with the first network device may include an upstream data entry that includes a device identifier of the upstream network device that is directly connected with the first network device via the upstream path. The upstream network device may be the central coordinator or an upper-level proxy network device. The forwarding table associated with the first network device may include a downstream data entry for each downstream network device that is directly connected with the first network device via the downstream path. The downstream network device may be a hidden network device for which the first network device operates as a proxy network device. In one example, the forwarding unit can compare the device identifier in the received message (e.g., source identifier or forwarding device identifier) against the device identifier of each downstream network device that is directly connected with the first network device. As another example, the forwarding unit can compare the device identifier in the received message (e.g., source identifier or forwarding device identifier) against the device identifier of the upstream network device that is directly connected with the first network device. In each example, if the device identifier in the received message matches the device identifier of another network device that is directly connected with the first network device, the forwarding unit may determine to forward the message in the communication network. However, in each example, if the device identifier in the received message does not match the device identifier of another network device that is directly connected with the first network device, the forwarding unit may not forward the message in the communication network. If it is determined to forward the message, the flow continues at block 306. Otherwise, the flow continues at block 310.
At block 306, the first network device determines an indicator in a second predefined field of the message, wherein the second predefined field indicates whether that a central coordinator has previously forwarded the message. With reference to the example of
At block 308, the first network device determines whether to forward the message via an upstream path or the downstream path with respect to the central coordinator in the communication network based, at least in part, on the indicator in the second predefined field. As described above, the second predefined field can indicate whether the central coordinator has previously forwarded the message. For example, the forwarding unit 110 determines how to forward the message based, at least in part, on the indicator in the second predefined field (e.g., the downstream field). In one example, if the downstream field includes the first indicator (e.g., DS=0), the forwarding unit 110 may determine that the central coordinator 202 has not received or generated the message. The forwarding unit 110 may determine to transmit the message via the upstream path of the communication network. However, if the downstream field includes the second indicator (e.g., DS=1), the forwarding unit 110 may determine that the central coordinator 202 has previously received or generated the message. In this example, the forwarding unit 110 may determine to transmit the message via the downstream path of the communication network.
As will be further described in
At block 310, if the first network device determines not to forward the message in the communication network, the message is discarded at the first network device. As described above, the first network device may compare the device identifier in the received message (e.g., source identifier or forwarding device identifier) against the device identifier of each network device that is directly connected with the first network device. If there is no match, the first network device may determine not to process or forward the message in the communication network. Accordingly, the first network device may discard the message. From block 310, the flow ends.
At block 402, a central coordinator receives a message for forwarding in a communication network. The message may be a broadcast message or a multicast message. In some embodiments, the central coordinator may receive a message from another network device of the same communication network. With reference to the example of
At block 404, the central coordinator determines whether to forward the message in the communication network based on a first predefined field in the message. To minimize the probability of receiving and forwarding duplicate messages in the communication network, the central coordinator (e.g., a forwarding unit) may determine whether to forward the message in the communication network. The central coordinator may compare a device identifier from the received message against the device identifier of each downstream network device that is directly connected with the central coordinator. For example, the central coordinator can compare the source identifier in the received message against the device identifier of each downstream network device that is directly connected with the central coordinator. As another example, the central coordinator can compare a forwarding device identifier in the received message against the device identifier of each downstream network device that is directly connected with the central coordinator. If there is a match, the central coordinator determines to forward the message in the communication network. Otherwise, the central coordinator determines that it inadvertently received the message and that the central coordinator was not designated to receive the message. Referring to the example of
At block 406, the central coordinator updates a second predefined field to include an indicator in the message to indicate that the central coordinator has received the message. Each message may include a downstream field that indicates whether the central coordinator received or generated the message. The central coordinator 202 may update the downstream field when the central coordinator 202 receives or generates the message. Referring to the example of
At block 408, the central coordinator re-transmits the message to a network device that is directly connected with the central coordinator via the downstream path. After including the second indicator in the message to indicate that the central coordinator has received the message, the central coordinator can identify at least one downstream network device that is directly connected with the central coordinator. The central coordinator may then transmit the message including the second indicator to the identified network devices. In the example of
At block 410, if the central coordinator determines not to forward the message in the communication network, the message is discarded at the central coordinator. As described above, the central coordinator may compare the device identifier in the received message (e.g., source identifier or forwarding device identifier) against the device identifier of each downstream network device that is directly connected with the central coordinator. If there is no match, the central coordinator may determine not to process or forward the message in the communication network. Accordingly, the central coordinator may discard the message. From block 410, the flow ends.
At block 502, a first network device determines to forward a message in a communication network. The message may be a broadcast message or a multicast message. In some embodiments, the first network device may generate the message for transmitting in the communication network. In another embodiment, the first network device may receive a message from a second network device of the same communication network. With reference to the example of
At block 504, it is determined whether the first network device is the central coordinator of the communication network. If the first network device that received (or generated) the message for forwarding is the central coordinator, the flow continues at block 506. Otherwise, the flow continues at block 508.
At block 506, the central coordinator updates a predefined field of the message to indicate that the central coordinator has received the message. As described above with reference to
At block 508, it is determined whether the message was received from another network device (“downstream network device”) that is directly connected to the first network device via the downstream path. For example, the forwarding unit 110 may determine whether to forward the message or whether to discard the message. The forwarding unit 110 may forward the message, if the message was received from a downstream network device that is directly connected with the first network device. The forwarding unit 110 may use various techniques to determine whether the message was received from the downstream network device that is directly connected with the first network device. For example, the forwarding unit 110 may compare the source identifier in the received message against the device identifier of each downstream network device that is directly connected with the first network device. As another example, the forwarding unit 110 may compare a forwarding device identifier in the received message (e.g., the BLE field) against the device identifier of each downstream network device. If the source identifier or the forwarding device identifier does not match the device identifier of any downstream network device that is directly connected with the first network device, it is determined that the message was not received from the downstream network device and the flow continues at block 510. Otherwise, if the message was received from the downstream network device, the flow continues at block 514.
At block 510, it is determined whether the message was received from another network device (“upstream network device”) that is directly connected with the first network device via the upstream path. For example, the forwarding unit 110 may forward the message in the communication network, if the message was received from an upstream network device that is directly connected with the first network device. As described above, the forwarding unit 110 may compare the source identifier or the forwarding device identifier in the received message against the device identifier of the upstream network device. If the source identifier or the forwarding device identifier does not match the device identifier of the upstream network device that is directly connected with the first network device, it is determined that the message was not received from the upstream network device. In this scenario, the forwarding unit 110 may determine that the first network device was not intended to receive the message and the flow continues at block 512. Otherwise, if there is a match, the flow continues at block 514.
At block 512, the message is discarded at the first network device. If the source identifier or the forwarding device identifier does not match the device identifier of any of the downstream network devices that are directly connected with the first network device, it is determined that the message was not intended for the network device. Likewise, if the source identifier or the forwarding device identifier does not match the device identifier of the upstream network device that is directly connected with the first network device, it is determined that the message was not intended for the network device. In these scenarios, the forwarding unit 110 may determine not to further process (e.g., decode) the message at the first network device. The forwarding unit 110 may also determine not forward the message in the communication network and may discard the message. From block 512, the flow ends.
At block 514, it is determined whether the central coordinator previously forwarded the message. After determining to forward the message in the communication network (e.g., the “yes” path from block 508 or block 510), the forwarding unit 110 of the first network device may determine whether the central coordinator received (or generated) the message. For this, the forwarding unit 110 may determine an indicator in the downstream field of the received message. For example, if the downstream field includes a first indicator (e.g., DS=0), the forwarding unit 110 may determine that the central coordinator 202 has not received or generated the message. Alternatively, if the downstream field includes a second indicator (e.g., DS=1), the forwarding unit 110 may determine that the central coordinator has received or generated the message. If the central coordinator has not previously forwarded the message, the flow continues at block 516. Otherwise, if the central coordinator previously forwarded the message, the flow continues at block 518 in
At block 516, an upstream network device that is directly connected with the first network device via the upstream path is identified. The forwarding table associated with the first network device typically includes one upstream path entry. The upstream path entry may include a device identifier of the central coordinator or a device identifier of an upper-level proxy network device. The device identifier may be a TEI, a network address, a MAC address, or another suitable device identifier that uniquely identifies the network device. In some embodiments, the first network device (e.g., the network device 206) may detect the central coordinator 202 and may establish a direct communication link with the central coordinator. The network device 206 may determine that it is directly connected with the central coordinator 202 via the upstream path. In this example, the central coordinator 202 may be the upstream network device for the network device 206. Therefore, the upstream path entry in the forwarding table associated with the network device 206 may include the device identifier of the central coordinator. In another embodiment, the first network device (e.g., the network device 210) may not detect the central coordinator 202 and may be unable to establish a direct communication link with the central coordinator 202. In this embodiment, the network device 210 may be a hidden network device. The network device 210 may use the network device 208 as a proxy network device for indirectly communicating with the central coordinator 202. The network device 210 may determine that it is directly connected with the proxy network device 208 via the upstream path. In this example, the proxy network device 208 may be the upstream network device for the network device 210. Therefore, the upstream path entry in the forwarding table associated with the network device 210 may include the device identifier of the proxy network device 208. The flow continues at block 526 in
At block 518, it is determined whether the first network device is directly connected with a downstream network device. In one embodiment, the forwarding unit 110 may access a forwarding table associated with the network device to determine whether the first network device operates as a proxy network device for one or more hidden network devices in the communication network. Referring to the example of
At block 520, a downstream network device that is directly connected with the first network device is identified. The forwarding table associated with the first network device may include a downstream path entry for each downstream network device that is directly connected with the network device. Each downstream path entry may include a device identifier, such as a terminal equipment identifier (TEI), a network address, a MAC address, etc. of the corresponding downstream network device. In some embodiments, the first network device (e.g., the network device 208) may operate as a proxy network device for hidden network devices 210 and 212. In this embodiment, the forwarding table associated with the network device 208 may include a first downstream path entry associated with the network device 210 and a second downstream path entry associated with the network device 212. The first downstream path entry may include a device identifier of the network device 210; while the second downstream path entry may include a device identifier of the network device 212. In another embodiment, the first network device may be the central coordinator of the communication network. In this embodiment, the forwarding table associated with the first network device may include a downstream path entry for each network device that is directly connected with the central coordinator. In the example of
At block 522, it is determined whether the downstream network device originally transmitted the message to the first network device. The forwarding unit 110 may compare the source identifier (e.g., STEI) included in the message against the device identifier of the downstream network device indicated in the forwarding table. For example, after receiving the message 214D from the central coordinator 202, the network device 208 may compare the source identifier included in the message 214D against the device identifier of the downstream network devices 210 and 212. If the source identifier included in the message 214D matches the device identifier of the downstream network device 210, the network device 208 may determine that the downstream network device 210 generated the message. By determining whether the downstream network device generated or initially transmitted the message in the communication network, the probability of duplicate retransmissions may be minimized. If the downstream network device originally transmitted the message, the flow continues at block 524. If the downstream network device did not transmit the message to the network device, the flow continues at block 526.
At block 524, it is determined whether to re-transmit the message to other downstream network devices that are directly connected with the network device. As described above with reference to the example of
At block 526, it is determined whether the message was previously transmitted in the communication network. Various sub-fields in the frame control field of the message may be used to indicate whether the message was previously forwarded in the communication network. In one example as described above in
At block 528, the first network device updates at least one field in the message to indicate whether the message was previously transmitted in the communication network. In some embodiments, the forwarding unit may include a first predefined value in a first frame control field to indicate that the message was previously transmitted in the communication network. The forwarding unit may also include the device identifier of the first network device in a second frame control field to indicate that the message was previously transmitted (e.g., by another network device) in the communication network. Referring to the example of
In other embodiments, if the message was not previously transmitted in the communication network, the forwarding unit may not include the first predefined value in the first frame control field and may not include the device identifier of the first network device in the second frame control field. Referring to the example of
At block 530, the message is transmitted to the identified network device in the communication network. The forwarding unit 110 may transmit the message including the updated information in the frame control field (described above) to one or more network devices via the upstream path or the downstream path of the communication network. From block 530, the flow ends.
It should be understood that
In some embodiments, as described in the Figures, a network device may first check the downstream field, determine whether to forward the message via the upstream path or the downstream path, and then compare a device identifier in the message against the device identifier of an additional network device that is directly connected with the network device. In other embodiments, the network device may first compare the device identifier in the message against the device identifier of each additional network device that is directly connected with the network device. If there is a match, the network device may determine whether to forward the message via the upstream path or the downstream path. Otherwise, the network device may discard the message.
Although examples refer to using the downstream field, the BLE field, the PBB field, and/or the STEI field to determine whether and how to forward a message (e.g., a broadcast message or a multicast message) in the communication network, embodiments are not so limited. In other embodiments, the network devices may use other suitable fields to determine whether and how to forward the message. Additionally, although Figures provide example values of the first frame control field, the second frame control field, and the downstream field, embodiments are not so limited. In other embodiments, the network device may be configured to include other suitable values in other suitable fields of the message to indicate whether the message was previously forwarded in the communication network, whether a network device is an initial network device to transmit the message in the communication network, whether the central coordinator has received the message, and so on.
As will be appreciated by one skilled in the art, aspects of the present inventive subject matter may be embodied as a system, method, or computer program product. Accordingly, aspects of the present inventive subject matter may take the form of an entirely hardware embodiment, a software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present inventive subject matter may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more non-transitory computer readable medium(s) may be utilized. Non-transitory computer-readable media comprise all computer-readable media, with the sole exception being a transitory, propagating signal. The non-transitory computer readable medium may be a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
Computer program code embodied on a computer readable medium for carrying out operations for aspects of the present inventive subject matter may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present inventive subject matter are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the inventive subject matter. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The electronic device 700 also includes a communication unit 708. The communication unit 708 includes a forwarding unit 712 and a link establishment unit 714. The link establishment unit 714 can establish a communication link between the electronic device 700 and an upstream network device and/or a downstream network device of the communication network. In response to receiving a message for forwarding in the communication network, the forwarding unit 712 can determine whether a central coordinator has previously received the message based, at least in part, on an indicator in a predefined field of the received message. Depending on whether the central coordinator has previously received (or generated) the message, the forwarding unit 712 can determine whether to re-transmit the message to an upstream network device or a downstream network device that is directly connected to the electronic device 700, as described above with reference to
Any one of these functionalities may be partially (or entirely) implemented in hardware and/or on the processor unit 702. For example, the functionality may be implemented with an application specific integrated circuit, in logic implemented in the processor unit 702, in a co-processor on a peripheral device or card, etc. In some embodiments, the communication unit 708 can each be implemented on a system-on-a-chip (SoC), an application specific integrated circuit (ASIC), or another suitable integrated circuit to enable communications of the electronic device 700. In some embodiments, the communication unit 708 may include additional processors and memory, and may be implemented in one or more integrated circuits on one or more circuit boards of the electronic device 700. Further, realizations may include fewer or additional components not illustrated in
While the embodiments are described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the inventive subject matter is not limited to them. In general, techniques for forwarding messages in a communication network as described herein may be implemented with facilities consistent with any hardware system or hardware systems. Many variations, modifications, additions, and improvements are possible.
Plural instances may be provided for components, operations, or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the inventive subject matter. In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the inventive subject matter.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/CN2014/070794 | 1/17/2014 | WO | 00 |