Embodiments of the present subject matter generally relate to the field of network communications, and, more particularly, to routing in a hybrid network.
There are many routing and bridging schemes. Unfortunately, many routing schemes are specific to a particular network technology or topology. For example, Institute of Electrical and Electronics Engineers (IEEE) 802.1aq defines a Shortest Path Bridging (SPB) protocol for Ethernet networks. Other routing protocols may exist for other network technologies. However, a routing scheme designed for one network technology may not be suitable for another network technology. A well-known technique for determining packet routing in traditional router-based network is referred to as Dijkstra's algorithm. Dijkstra's algorithm is designed to determine a shortest path between network nodes in a graph. Dijkstra's algorithm may be acceptable in traditional multi-path point-to-point router networks but may be insufficient for a hybrid network.
Various embodiments are described in which one or more routing trees are determined for a hybrid network having a plurality of devices including at least one multi-interface device. A routing tree may be optimized for unicast or broadcast traffic to reach each device in the hybrid network, taking into account capabilities of each interface or communication medium available to each device. In one embodiment, a topology map is determined for the hybrid network. The topology map may include interface-specific nodes for each interface of at least one multi-interface device. A routing tree for the network may be determined based, at least in part, on the topology map. The routing tree may be determined using a modified Dijkstra's algorithm described in this disclosure. Routing of a frame in the network may be managed using the routing tree.
Embodiments of a topology map may include virtual nodes to represent broadcast capabilities available to an interface of a device. Further embodiments describe device-internal nodes to represent devices as target end points for a routing tree for broadcast traffic when more than one interface or path could be used to reach the device. A routing tree for broadcast traffic may be optimized in various embodiments herein. This disclosure also includes embodiments for routing traffic associated with an unknown address. A default common routing tree may be used to flood traffic in a hybrid network. Devices may determine whether to forward or discard frames in accordance to their position in the default common routing tree.
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 subject matter. However, it is understood that the described embodiments may be practiced without these specific details. For instance, some embodiments are described in relation to example hybrid networks that include powerline communications, wireless local area network (WLAN) communications, and Ethernet. In other embodiments, the techniques may be implemented in hybrid networks that include other suitable types of network technologies. Additionally, while some embodiments in this disclosure refer to broadcast communications, those embodiments may also be applicable to multicast communications. In this disclosure, well-known instruction instances, protocols, structures and techniques have not been shown in detail in order not to obfuscate the description.
Embodiments of this disclosure determine topology maps and routing trees suitable for a hybrid network. Embodiments use a topology map to construct one or more routing trees for routing frames in the hybrid network. To aid the reader in understanding the embodiments, this disclosure will begin by describing some networking technologies, devices, and concepts used in connection with the embodiments.
As described above, a hybrid network may include one or more multi-interface devices that may bridge communications between different network technologies. A hybrid network may also be referred to as a Convergent Digital Home Network (CDHN), hybrid home network, or IEEE P1905.1 network. Hybrid networks may exist in home environments, as well as other environments, including workplaces, prisons, schools, etc.
A hybrid network may comprise a mix of hybrid devices and legacy devices. A hybrid device is a device that is configured to use hybrid networking protocols (for example, IEEE P1905.1) that accommodate the use of multi-interface devices in a hybrid network. A hybrid device may be one type of multi-interface device in a hybrid network, and may have multiple interfaces associated with different network technologies (e.g., Ethernet, IEEE 802.11, Coax, and powerline communications (PLC), etc.). A multi-interface hybrid device optionally may be capable of forwarding traffic (bridging) between its interfaces. Legacy devices may be single-interface or multi-interface devices. For example, some legacy devices may also have multiple interfaces and may be configured to bridge traffic between different network segments. However, a legacy device may not be configured to use the hybrid networking protocols. By using the hybrid networking protocols, hybrid devices may communicate with one another and identify multi-interface devices, including multi-interface legacy devices, in the hybrid network. The hybrid network may accommodate different bridging capabilities of a multi-interface device (whether hybrid device or legacy device). For example, hybrid devices may adjust routing in a hybrid network in order to accommodate or manipulate the bridging capabilities of a legacy device.
In accordance with this disclosure, a routing scheme may accommodate routing of traffic in a hybrid network that has at least one multi-interface device. The routing scheme includes gathering and sharing topology information to generate a topology map of the hybrid network. A topology map may be used to maintain information about the devices in a network and the available connectivity between the devices. In accordance with this disclosure, a topology map may also maintain information about the different interfaces of devices in a hybrid network. The topology map may include separate nodes for the different interfaces of a multi-interface device. By representing the interfaces as nodes in the topology map, a routing scheme can generate more complete routing trees based on broadcast and/or unicast routes. For example, the routing trees may include multiple unicast routes from a particular device depending on the forwarding and non-forwarding configurations of other interfaces in the network. For broadcast traffic, the use of separate nodes for each interface allows a routing tree for broadcast traffic to be fully expressed, including showing a selected interface through which a device upper layer will receive a broadcast frame, and which other interfaces should discard broadcast frames in accordance with the routing tree.
Furthermore, the topology map may be defined in a way that predicts and manages the behavior of legacy devices in the hybrid network. In accordance with this disclosure, a topology map may also maintain information about broadcast, multicast, and broadcast-to-unicast paths available for broadcast traffic. The topology map may include virtual nodes for broadcast-related paths in the network. By maintaining information about broadcast paths in the topology map, a routing scheme may accommodate broadcast traffic based on broadcast capabilities of multi-interface devices.
A routing tree may be determined using the topology map. Routing trees indicate routing paths between nodes in topology maps. Routing trees may be different for unicast traffic and for broadcast traffic. A routing tree can accommodate the expected behavior of a legacy device in the hybrid network. Each hybrid device in the hybrid network may determine a same routing tree and use the same routing tree for routing a frame in the hybrid network. The routing tree may include interface-specific nodes (with corresponding source addresses), so that when traffic is routed in the network the correct source address and interface is used.
In some embodiments, the hybrid devices may determine a plurality of routing trees, each routing tree specific to a source interface of a device in the hybrid network. When a frame is received by one of the hybrid devices, an appropriate routing tree is selected based on the source address of the frame matching the source interface for the routing tree. A hybrid device may determine whether to discard or forward the frame depending on whether the interface that received the frame is in the appropriate routing tree for the source of the frame.
To aid in understanding embodiments of the routing scheme, this disclosure provides several examples.
The topology map 100 illustrates, in graph form, the links and link cost between various nodes. A link is represented as a line between the nodes of the topology map. A link cost refers to a measurement which can be used to compare desirability of a link. For example, link costs may be inversely proportional to the link PHY rate and/or available throughput. A higher link cost may represent a lower link PHY rate or lower throughput, while a lower link cost may represent a higher link PHY rate or higher throughput. The link costs in
Links 152 and 154 are illustrated as arrows (also referred to as directional arcs) to represent a link that is unidirectional. Directional arcs may also be used when a link does not have the same cost in both directions. For example, asymmetric connections between nodes may be illustrated using a pair of directional arcs. Links 112-144 are bidirectional links, meaning that the link cost is the same in both directions.
A path (also referred to as a route) between two nodes may be comprised of one or more links. For example, a path from node A to node E may include link 114 and link 135. A path cost is calculated by summing the link costs for each link in the path. For example, the path cost for the path from node A to node E is “7” (link cost of “4” for link 114, plus link cost of “3” for link 135).
Having described the topology map 100, a concept of an example routing tree will be described. Some embodiments utilize an algorithm (such as a Dijkstra's algorithm or a variation thereof) to generate a routing tree. The example routing tree of
Having described Dijkstra's algorithm, the example routing tree will be described. The example routing begins with node A as the root node. From node A, Dijkstra's algorithm determines a path to node B via link 112. After visiting node C, Dijkstra's algorithm may also initially determine a path from node A to node D via node B. For example, the path may include link 112 to node B and then link 122 to node D. The path cost would be “15” (link cost of “5” for link 112, plus link cost of “10” for link 122). However, Dijkstra's algorithm may replace this initially-determined path from node A to node D via node B, once a lower cost path is determined. For example, the lower cost path from node A to node D may include the link 112 to node B, then link 126 to node F, then link 142 to node D. The path cost would be “13” (link cost of “5” for link 112, plus link cost of “5” for link 126, plus link cost of “3” for link 142). Because the new path (via node B and node F) has a lower cost (path cost of “13”) than the previous path (via only node B, having a path cost of “15”), the new path will be selected and the previous path will be discarded.
In the topology map, links 112 and 114 are shown with a higher line weight to represent that those links remain part of the routing tree. Continuing through the algorithm, the remaining portions of the routing tree will be determined. The inset 190 shows the resulting routing tree 191 without the unused links. The unused links remain present in the network and in the topology map, but may not be used in the routing tree 191 until a failure, congestion, link cost update, or some other stimulus causes the routing tree to be recalculated.
Since the routing tree 191 is specific to node A as the root node, the routing tree 191 shows the lowest cost routes from node A to each of the other nodes. For a communication from node A to node E, the node A would send a frame via link 114 to node C, and would expect node C to forward the frame to node E via link 135. For a communication directed from node A to node D, the node A would send the frame via link 112 to node B, and would expect the frame to follow the route defined by the routing tree to reach node D. The route is defined as link 112 to node B, then link 126 to node F, then link 142 to node D. This route has a path cost of “13” (sum of link costs “5,” “5”, and “3” for links 112, 126, and 142, respectively). This is a lower path cost than an alternative route that includes link 122.
The example in
Device A has two interfaces, labeled “a1” and “a2.” Interface “a1” couples device A to a first network 205 (e.g., a PLC network). Device A can communicate with device B via the first network 205. Interface “a2” is configured as an IEEE 802.11 wireless client station (STA) and couples device A to an IEEE 802.11 access point (AP) at device B. The wireless connection 214 (shown as a dashed line) represents a communication path from interface “a2” to the AP at device B.
Device C also has two interfaces, labeled “c1” and “c2.” Interface “c1” is configured as an IEEE 802.11 STA and couples device C to the AP at device B. The wireless connection 234 (shown as a dashed line) represents a communication path from interface “c2” to the AP at device B. Interface “c1” couples device C to a second network 207. The second network 207 may use a different network technology than first network 205. For example, second network 207 may be an Ethernet network. Device C can communicate with device B via the second network 207.
Because there is a plurality of interconnections in the hybrid network 200, there may be many paths from device A to device C.
Assuming that device B is configured to bridge all traffic from all interfaces, there may be a variety of paths between node A and node C. Focusing only on potential traffic from node A to node C,
As described above, the routing scheme may not identify all of these paths. If multi-interface devices are shown using a single node, consistent with a conventional approach (and as shown in
The simple example in
Device A has multiple interfaces, labeled “a1,” “a2,” and “a3.” Interface “a1” represents an AP for an IEEE 802.11 WLAN and has a wireless connection 315 to an IEEE 802.11 STA at interface “d1” of device D. Interface “a2” is coupled using a wireline connection 325 (e.g., Ethernet) to interface “b1” of device B. Interface “a3” is coupled to a first network 305 (e.g., a PLC network).
Device B has multiple interfaces, labeled “b1,” “b2,” and “b3.” Interface “b1” is coupled using the wireline connection 325 (e.g., Ethernet) to interface “a2” of device A. Interface “b2” represents an IEEE 802.11 AP for a WLAN and has wireless connections 335, 345 to devices F, G, respectively. Interface “b3” is coupled via a wireline connection 355 to interface “c2” of device C.
Device C has multiple interfaces, labeled “c1,” “c2,” and “c3.” Interface “c1” is coupled using a wireline connection 365 (e.g., Ethernet) to interface “e1” of device E. Interface “c2” is coupled using the wireline connection 355 to interface “b3” of device B. Interface “c3” is coupled to the first network 305.
Device D has multiple interfaces, labeled “d1,” and “d2.” Interface “d1” is coupled using the wireless connection 315 to the AP at interface “a1” of device A. Interface “d2” is coupled to the first network 305. Device E is a legacy device with only one interface, labeled “e1.” Interface “e1” is coupled via the wireline connection 365 to interface “c1” of device C. Device F is a legacy device with only one interface, labeled “f1.” Interface “f1” is coupled via the wireless connection 335 to the AP at interface “b2” of device B. Device G has multiple interfaces, labeled “g1,” and “g2.” Interface “g1” is coupled using the wireless connection 345 to the AP at interface “b2” of device B. Interface “g2” is coupled to the first network 305.
Even though device D and device G both have multiple interfaces, they may be legacy devices or hybrid devices. Regardless of whether they are hybrid devices or legacy devices, in the example hybrid network 300, device D and device G are configured not to bridge traffic between their WLAN connection and their connection to first network 305. This may be due to manufacturer design choice, device limitation, user configuration, device configuration, or system restraints. For example, because interfaces “d1” and “g1” are wireless client stations for their respective WLANs, the devices may not bridge the traffic from those interfaces to the first network 305.
At block 420, the device determines a topology map for the network. There may be many different implementations for determining a topology map. For example, the device may receive the topology map from a central coordinator in the network. Alternatively, the device may perform several operations and refinement to determine the topology map. In one implementation, a device may query some or all of the other devices in the network to gain the information needed to develop the topology map.
The operations at blocks 430-460 represent one example of developing the topology map. At block 430, the device identifies devices in the network. At block 440, the device creates nodes in the topology map for each interface of various devices in the network. At block 450, the device determines physical layer (PHY) rates for each link between the interfaces. At block 460, the device assigns link costs for each link based, at least in part, on the PHY rates.
At block 470, the device determines a routing tree for the network based, at least in part, on the topology map. The routing tree has a root node associated with one of the plurality of devices in the network. At block 480, the device manages routing of a frame in the network using the routing tree.
As described above, the topology map 500 may maintain only one node per device. Thus, the topology map 500 may not maintain information about the forwarding/bridging capability for each interface of a multi-interface device. If a routing algorithm is run using the topology map 500, the resulting routing tree may not be properly optimized in view of the different interface configurations and forwarding configuration of the interfaces.
A topology map that accommodates multi-interface devices may be configured to maintain for more accurate information about the forwarding/non-forwarding configuration of individual interfaces at each device. The topology map may maintain link costs for links between devices based on which interface of the devices is being used. One way to accomplish this is to represent the interfaces of each device as separate interface-specific nodes in the topology map.
In one embodiment, the topology map utilizes the media access control (MAC) address of each interface to identify the node, rather than using a network layer address (such as an Internet Protocol, IP, address) or other identifier. Using the topology map 600, a multi-interface device can support multiple paths from itself (via various interfaces) to another device in the network. For example, because each interface is represented as a separate node, a unique routing tree can be calculated for each interface. In one embodiment, a device originating a frame may select among different routes by selectively transmitting the frame via a source interface associated with the selected route. A source MAC address of the frame may be updated to reflect the MAC address of the source interface.
Device A (previously represented as first node 310 in
Device B (previously represented as second node 320 in
Device E (previously represented as fifth node 350 in
Device G is similar to device D, in that it has multiple interfaces without bridging enabled between the interfaces. The seventh node 370 is replaced with nodes 671, 672 to represent the interfaces “g1” and “g2,” respectively, of device G.
In addition to representing links between nodes, the topology map may store link costs associated with the links. In one embodiment, the link costs are associated with a PHY rate (also referred to as a physical layer transmission rate) between devices. When sharing topology information, a first hybrid device may also inform a second device about an effective PHY rate from itself to other devices reachable by an interface of the first hybrid device. The effective PHY rate may be based on the communication medium, configuration settings, network conditions, etc.
In
For the first network 305, the effective PHY rate may vary for particular pairs of devices that communicate via the first network 305. For example, in a PLC network, the effective PHY rate may depend on the quality of the channel between pairs of devices due to channel attenuation, line noise, etc., and may be different depending on the endpoints of the communication in the PLC network. In
The PHY rates may be used to assign link costs to links in the topology map. So that a routing tree can be determined from the topology map, the PHY rates for each link may be normalized or adjusted to account for different network technologies. In one embodiment, the link costs are derived based, at least in part, on the PHY rates. For illustrative purposes only, in this disclosure the link costs are determined by dividing a common numerator by the PHY rates. For example, a number 2000 divided by a PHY rate of 100 Mbps results in a link cost of “20.” This example formula is only one example of deriving a link cost based on the PHY rates.
In the example of
The routing tree begins from node 641 and traverses link 911 to node 611. From node 611, the routing tree extends to nodes 612, 613 in the same device. Therefore, if device D (see
Thus, using the routing tree, device D may determine which route will be used to send a frame from node 641 to any other reachable node in the topology map 900. Similarly, when a device receives a frame via an interface that is not in the routing tree, the device may discard the frame. This may occur, for example, because of legacy bridging devices that are configured to bridge frames between different interfaces of the legacy device. Legacy devices typically are not aware of routing trees generated and used by hybrid devices and they may not forward frames consistent with these routing trees. Hybrid devices in the network may discover a legacy bridging device, and may adjust the topology map to reflect the behavior of the legacy bridging device. The adjusted topology map may be used to determine a routing tree that is consistent with the behavior of the legacy bridging device. A device may also discard a broadcast frame when it is received via an interface that is not in the routing tree. For example, a broadcast frame received on a shared network segment may be a duplicate of another frame received through a different interface that is in the routing tree. The device may discard one of the frames to avoid processing multiple copies and to prevent broadcast loops. The determination of which frame to discard may be based on the routing tree. Broadcast routing is described in more detail in
The routing tree in
The resulting routing tree from node 641 includes links 911, 912, 913, 921, 922, 961, 971, 923, 932, 933, 931, 951, 942, and 972. Pertinent to this disclosure, there are two routes from node 641 which can reach device G (either node 671 or node 672). When device D has traffic for device G, it may consider different routes available in the routing tree. For example, a first route traverses link 911 to node 611, link 912 to node 612, link 921 to node 621, link 922 to node 622, and then link 971 to node 671 (representing interface “g1” of device G). The path cost for the first route is “85” (sum of link costs 25, 0, 20, 0, and 40). A second route traverses link 911 to node 611, link 913 to node 613, link 972 to node 672 (representing interface “g2” of device G). The path cost for the second route is “45” (sum of link costs 25, 0, and 20). Based on the routing tree, the device D may select the least cost path (the latter path) to reach device G.
The routing tree in
Considering both
Least cost tree routing need not be limited to unicast routes. In some embodiments, a routing tree for broadcast traffic is determined. A topology map may be modified to accommodate different link costs and broadcast paths associated with broadcast transmissions. In the context of a hybrid network, the topology map and algorithm may accommodate generation of a routing tree for broadcast traffic that is optimized for the hybrid network. For example, a traditional routing tree algorithm (such as IEEE 802.1D, Spanning Tree Protocol) may only consider forwarding devices (bridges or routers), assuming that every target end device is guaranteed to be reached when the forwarding devices transmit a broadcast frame onto a network segment, and because the target end devices are presumed to support only a single interface. However, this approach is unsuitable with some hybrid networking technologies because not every device is guaranteed to obtain a copy, and because one of the objectives of a hybrid network is to enable multiple paths through the hybrid network to improve throughput and quality of service. However, because of the complexities of a hybrid network traditional spanning tree protocols may not result in an optimal routing tree for broadcast traffic. Furthermore, a routing tree optimized for broadcast traffic may be different from a routing tree used for unicast traffic, as described above.
Relationships between the interface-specific nodes and device-internal nodes can be illustrated based on the direction of traffic. For example, in
The topology map 1100 represents the example hybrid network shown in
In addition to representing device-internal nodes, a topology map may include virtual nodes to represent various broadcast route options. A variety of broadcast functionality may be “built-in” to the network protocol or the underlying physical layer protocol. To accurately describe the broadcast capabilities and associated link costs, the topology map 1100 depicts virtual nodes (depicted as ovals in the accompanying
One type of broadcast transmission is referred to as physical layer (PHY) broadcast. When a frame is PHY broadcast on a shared network segment, multiple devices in the shared network segment typically receive a copy of the broadcast frame, and it is not practical to limit which devices on that shared network segment will receive the PHY broadcast. Additionally, there is one “link” cost to reach all devices on that shared network segment. These considerations may impact the development of a routing tree for broadcast traffic.
Another type of broadcast transmission is referred to as broadcast-to-unicast conversion. In broadcast-to-unicast conversion, a broadcast may be transmitted in the form of unicast frames to each intended broadcast recipient. Depending on the link costs to each broadcast recipient, the broadcast-to-unicast conversion may increase or decrease the total cost of transmitting the broadcast data over the shared network segment. Hybrid devices may implement either or both of the aforementioned types of broadcast transmission for particular interfaces, depending on the interface type or underlying communication protocol. For example, different physical layer protocols may specify different capabilities, as described below using PLC and WLAN examples.
In
In the example in
In the example in
In the example of
Having described the topology map 1100 for broadcast traffic, and determining link costs associated with broadcast links, a routing tree for broadcast traffic may be determined. There may be different algorithms to determine a routing tree for broadcast traffic. In one embodiment, all devices in the network will determine and follow a same routing tree for broadcast traffic from a root node. In an embodiment, the devices will determine routing trees based on each source considered as a root node, such that a common routing tree will be used by all devices in the network depending on a source address of the broadcast transmission.
The routing tree in
Following the routing tree, node 622 will retransmit the broadcast frame using a PHY broadcast, represented as a transmission to broadcast node 1129. The link cost to transmit the broadcast frame to broadcast node 1129 is “40.” Although the broadcast node 1129 isn't an actual device, the transmissions sent to broadcast node 1129 are received by nodes 661, 671 which are associated with the WLAN. The link cost from broadcast node 1129 to nodes 661, 671 (via links 1261, 1271, respectively) is nominal (e.g., “0”). Note that node 622 (interface “b2”) will use a PHY broadcast via broadcast node 1129 for the broadcast traffic. This is because interface “b2” is an AP interface that does not support broadcast-to-unicast conversion. Therefore, even though the link cost from STA interface “f1” to AP interface “b2” is less expensive (“20”), the AP interface “b2” could not use that path because the AP interface “b2” only supports PHY broadcast and not broadcast-to-unicast. The unidirectional arcs in the topology map are used to prevent the algorithm from selecting that improper paths based on the broadcast capabilities for each interface-specific node.
If device B is following the routing tree, when node 622 determines the broadcast frame is from device G, node 622 does not bridge the broadcast frame to other interface nodes of device B because they are not in the routing tree. Similarly, when node 671 receives the broadcast frame, node 671 will discard the broadcast frame as a received duplicate of the broadcast frame that it originally transmitted. When node 661 receives the broadcast frame, node 661 sends it to device-internal node 1165 to inform device F about the broadcast frame.
Returning to the PLC connections, device G sends the broadcast frame using broadcast-to-unicast conversion to node 633 at device C via link 1233. When node 633 receives the broadcast frame, node 633 sends the broadcast frame to node 1135 (to inform device C, at “c0”). Node 633 also forwards the broadcast frame to node 631 via link 1231. Node 631 then transmits the broadcast frame via link 1251 to node 651 at device E. Node 672 also transmits the broadcast frame using broadcast-to-unicast conversion to node 613 at device A via link 1213, and to node 642 at device D via link 1242.
The routing tree of
In
Returning to device B, when node 621 receives the broadcast frame, node 621 retransmits the broadcast frame via link 1312 to node 612 at cost “50.” Node 612 sends the broadcast frame to node 1115 (to inform device A at “a0”) and bridges the broadcast frame via link 1311 to node 611. Node 611 retransmits the broadcast frame via link 1341 to node 641. Node 641 sends the broadcast frame to node 1145 (to inform device D at “d0”). Note that the link from node 633 (“c3”) to node 613 (“a3”) has a cost of “40.” However, that link will not be used in isolation from the links from “c3” to other devices in the broadcast domain (such as the link from “c3” to “d2” having a cost of “50” and the link from “c3” to “d2” having a cost of “30”). This is because together all these links represent a broadcast-to-unicast conversion domain, having a total cost of “120.” While the link from “c3” to “a3” by itself would represent a lower cost way to get the broadcast frame to device A, when considering the costs of the other links required by the broadcast-to-unicast conversion (together represented as “c3bu” having a cost of “120”), the link 312 from node 621 (“b1”) to node 612 (“a2”) is less costly.
The resulting second routing tree of
The third routing tree of
The longest path in the third routing tree is from node 672 (“g2”) via link 1479 (link cost of “80”) to node 1179 (“g2bc”). Therefore, the cost of the longest path is “80.” Table 3 shows the calculation of the total link cost for the third routing tree. The resulting third routing tree of
Comparing the routing trees in
In determining the third routing tree of
To accommodate discovery and routing of packets for the new device, when an existing device in the routing tree receives the frame from the new device, the existing device retransmits the frame according to a routing tree used among all other devices in the network. For example, a “default” common routing tree may be used for flooding the frames from the new device, until the new device is added to the topology map and routing trees for the new device are established. Each device can determine its position in the default common routing tree and route frames accordingly. For example, the device will route the frame downstream according to the routing tree, and will also route the frame upstream to the root of the default common routing tree.
The default common routing tree may be selected using a standardized approach at each hybrid device. For example, the default common routing tree may be a routing tree rooted at an interface that has the lowest numerical MAC address. The default common routing tree may be selected based on a routing tree for broadcast traffic. In one embodiment, a central coordinator in the network may establish the default common routing tree.
When a hybrid device receives the initial frames from the new device, the hybrid device will forward the initial frames in accordance with the default common routing tree. If the frame is received at a node in the middle of the routing tree, the frame may also be forwarded in reverse direction of the routing tree so that the frame can reach the root node (and other parts of the routing tree via the root node). An example of this process is described in
In the example of
In one embodiment, when a device routes a frame having an unknown destination address, a broadcast/multicast destination address, or an unknown source address, the device may modify the frame to provide an indication that the frame is being routed according to the default common routing tree. For example, the indication may be a tag or marker added to the frame (e.g., in a header or preamble). In one embodiment, IEEE 802.1D VLAN tags may be used to mark unknown address frames. Alternatively, an address field (e.g., source address or destination address) in the frame may be overwritten to include a reserved address as the indication that the frame is being routed in accordance with the default common routing tree. By including the indication in the frame, other devices will determine that the frame should be routed in accordance with the default common routing tree, and act accordingly.
The flow 1600 begins at block 1610. At block 1610, a device may use one or more topology discovery processes to obtain topology information. There are several topology discovery processes which may be used in parallel or in various combinations. Topology information discovered from a first topology discovery processes may be used to refine topology information discovered from a second topology discovery process. From block 1610, the flow 1600 may continue to one or more topology discovery processes represented by blocks 1620, 1630, 1640, 1650, 1660, and 1670. Once topology information has been obtained, the flow 1600 may continue from block 1610 to block 1680.
At block 1620, the device may monitor traffic to discover devices. The device may use techniques, referred source address learning, to associate a neighbor device with an ingress interface when the ingress interface receives a frame having a source address of the neighbor device.
At block 1630, the device may send or receive topology discovery message(s). As described above, the hybrid devices may follow the IEEE P1905.1 standard. The P1905.1 protocol defines messages, such as the Topology Discovery Message, Topology Query/Response messages, or other messages communicated between hybrid devices to share information about the topology of the hybrid network. Other protocols may have other topology discovery messages that may be used to discover the topology of the network. Described previously, messages called link state announcements (LSAs) may be exchanged by hybrid devices to indicate neighbor devices for each interface of the hybrid device. The LSAs may also include link costs, link status, and other information that may be used to refine the topology map.
At block 1640, the device may send or receive topology query messages(s). At block 1650, the device may send or receive topology response messages(s) in response to topology query messages(s). The topology query messages(s) and topology response messages may be unicast messages sent between pairs of devices that exchange detailed information about the topology map at each device.
At block 1660, the device may send or receive topology information to/from a central coordinator. For example, a plurality of devices in the network may send topology information to the central coordinator. The central coordinator is a node selected to aggregate the topology information and may perform other functions for controlling operation of devices in the hybrid network. The central coordinator may send aggregated topology information to the devices in the hybrid network.
At block 1670, the device may send or receive address resolution protocol (ARP) messages. ARP messages are often used to map network layer (IP) addresses with MAC addresses. However, the ARP messages may also be used for discovering locations of devices in the topology map. Using gratuitous ARP, a device may force a particular interface to be used for frames directed to the device. The ARP messages may be used to update the topology map.
At block 1680, the device may determine which devices are hybrid devices and which devices are legacy devices. Discovery of legacy devices may be helpful to update the topology map with the behavior expected by the legacy devices. For example, a legacy device may bridge traffic between network segments in a way that is not apparent to hybrid devices until the legacy device is identified. Legacy devices may be discovered by adding tags to frames, where the tags are recognized by hybrid devices and not recognized by legacy devices. A legacy device may discard the frame when it receives the unrecognized tag. By monitoring and sharing information about which devices receive frames with the tag, the hybrid devices may discover a legacy bridging device in the network.
At block 1690, the device may determine the topology map using any information obtained using the processes from blocks 1620 to 1680.
The flow 1700 begins at block 1710. At block 1710, the algorithm begins by resetting the routing tree (e.g., clear initial link cost for all nodes except root node, mark all nodes except root node as unvisited, etc.). At block 1720, the algorithm creates a set of unvisited nodes that have forwarding capabilities. As one modification to traditional Dijkstra's algorithm, the set of unvisited nodes only includes nodes that have forwarding capabilities. Non-forwarding nodes are still included in topology map and are considered for neighbor relationships during execution of the algorithm. However, the non-forwarded nodes are not included in the list of unvisited nodes and are not “visited” (as a “current node”) during execution of the algorithm. This modification enables the algorithm to determine path cost to non-forwarding nodes while avoiding paths through non-forwarding devices (which would result in incorrect path cost). Pseudo-nodes are not included in the set of nodes to be visited. During execution of the modified Dijkstra's algorithm, the total cost to reach one or more neighbor nodes by passing through a pseudo-node is considered when calculating route cost and updating the routing tree.
At block 1730, the algorithm initially sets the root node as “current node.” Operations from loop start 1740 to loop end 1758 are repeated for each neighbor node of the current node. A neighbor node is a node that has at least one link from the current node to the neighbor node. Since there may be more than one link the algorithm in
Returning to decision 1752, if the algorithm determines that a first path cost for current link is lower than an existing path cost for an existing route (if any) to the neighbor node, then the flow 1700 continues to block 1756. At block 1756, the algorithm adds the current link to the routing tree as a new route from the current node to the neighbor node. If there is an existing route, the existing route is replaced by the new route. At block 1757, the algorithm may store the first path cost in association with the new route to the neighbor node.
At loop end 1758, the flow 1700 returns to loop start 1740 if there are additional neighbor nodes. Otherwise, the flow 1700 continues to block 1760.
At block 1760, the algorithm removes the current node from the set of unvisited nodes, and the flow continues to decision 1762. At decision 1762, the algorithm determines whether there are any remaining unvisited nodes. If there are no remaining unvisited nodes, the algorithm may end. If there are remaining unvisited nodes, the flow may continue to block 1770. At block 1770, the algorithm selects a node to be the next “current node” for the next iteration of the algorithm. For example, the selected next “current node” may have the lowest path cost to the root node from among the set of unvisited nodes that have forwarding capabilities. The flow then repeats operations from 1740-1770 using the new current node.
The modified Dijkstra's algorithm may also be initially used for determining a routing tree for broadcast traffic. When executing the modified Dijkstra's algorithm for broadcast topology graphs, the link costs for an interface-specific node in a non-forwarding device (such as a legacy device) may be propagated to a device-internal node in the device. If the cost to reach the device-internal node is less than the current tentative cost, the route is chosen and the path cost is updated accordingly. The routing tree may be updated to show that the new route to the device-internal node includes the interface-specific node to reach the device-internal node.
A multi-interface device, such as a legacy bridging device, may use source address learning to determine whether to bridge traffic. In order to avoid “teaching” a legacy device about an interface not in the same network segment, the algorithm may begin by determining the unicast routes from all interfaces in the source (root) node to all nodes in the routing tree. Therefore, the routing tree may utilize the same links for unicast traffic and broadcast traffic. Once the routing trees have been created for unicast traffic, it can be optimized with broadcast paths that result in a lower total cost and that do not impact operation of the legacy devices. Thus, legacy devices that use source address learning will not become confused by the same source address being received at a multiple interfaces.
The flow 1800 begins at block 1820. At block 1820, the algorithm selects a root device. A device-internal node of the root device may serve as the root node and may have outbound links (with nominal or zero cost) to each interface-specific node associated with the root device. Alternatively, a set of interface-specific nodes for the root device may be considered as a root node for execution of the algorithm. At block 1830, the algorithm determines a unique routing tree with unicast routes from each interface of the root device to each interface of the other devices in the network. For example, routing tree may be determined using a modified Dijkstra's algorithm as described in
Operations from loop start 1850 to loop end 1866 are repeated for each broadcast path considered. Broadcast paths are determined and considered in a deterministic order. For example, the algorithm may define a new set of unvisited nodes to include the broadcast nodes, and select from the new set of unvisited nodes the first node having the lowest path cost from the root node. After the current broadcast path (associated with the first node) is considered, the first node is removed from the set of unvisited nodes and the steps to select a new broadcast path (using the set of unvisited nodes) may be repeated. For each broadcast path, the algorithm determines whether to use the broadcast path or not. At decision 1860, the algorithm determines whether using the broadcast path will reduce the total cost to reach the nodes associated with the broadcast path. If it does not, the broadcast path is not used, and the flow continues to loop end 1868. If the broadcast path does reduce the total cost, then the flow continues to decision 1862. At decision 1862, the algorithm determines whether the broadcast path will reach a legacy device that already has a unicast route in the routing tree. If so, the broadcast path may be avoided to prevent confusion to the legacy device, and the flow continues to loop end 1868. If the broadcast path will not confuse a legacy device already having a unicast route in the routing tree, the flow continues to block 1864. At block 1864, the algorithm adds the broadcast path to the routing tree as a route to each of the nodes associated with the broadcast path.
At block 1866, the algorithm may prune the broadcast routing tree to remove any unicast routes that can be replaced by the newly-added broadcast path. For example, if a unicast route terminates at a device-internal node for a device that will receive the broadcast message via the broadcast path, then the unicast route may be pruned (trimmed) back to the previous device associated with that unicast route. Stated another way, unicast routes for delivery of broadcast traffic should be pruned if there is a unicast-to-broadcast conversion route (e.g., using a broadcast pseudo-node) that delivers broadcast traffic to the same node.
At loop end 1868, the flow 1800 returns to loop start 1850 if there are additional broadcast paths to continue. Otherwise, at loop end 1868, if there are no additional broadcast paths to consider, the flow 1800 continues to block 1880 to further optimize the routing tree.
At block 1880, the algorithm may prune the broadcast routing tree to remove unneeded branches. Unneeded branches are those that terminate at an interface-specific node but are not used to reach any device-internal nodes. Furthermore, if PHY broadcast or broadcast-to-unicast conversion results in a branch to a terminal interface-specific node, that branch will be unneeded when all the links associated with the PHY broadcast or broadcast-to-unicast-conversion terminate at interface-specific nodes. In other words, if a first branch is associated with a virtual node that includes a needed branch to another device, then the first branch will not be pruned. As an example, if a first branch terminates at interface-specific node (without going to the device-internal node) because the device-internal will receive the broadcast message via a different interface-specific node and the first branch is associated with a broadcast node needed to reach another device, then the first branch may be pruned (trimmed) back to the previous node to remove the unneeded branch. One way to accomplish the pruning is to iteratively visit all interface-specific nodes in the network to prune unneeded branches in the routing tree.
Using the example, in
As will be appreciated by one skilled in the art, aspects of the present disclosure may be embodied as a system, method, or computer program product. Accordingly, aspects of the present disclosure 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,” “unit” or “system.” Furthermore, aspects of the present disclosure 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 computer readable medium(s) may be utilized. The 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 may 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 disclosure 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 disclosure are described with reference to flow diagrams and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the present disclosure. It will be understood that each block of the flow diagrams and/or block diagrams, and combinations of blocks in the flow diagrams and/or block diagrams, may 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 flow diagrams and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that may 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 flow diagrams 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 flow diagrams and/or block diagram block or blocks.
The device 1900 includes a memory 1906. The memory 1906 may be system memory (e.g., one or more of cache, SRAM, DRAM, zero capacitor RAM, Twin Transistor RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM, etc.) or any one or more of the above already described possible realizations of machine-readable media. The memory 1906 may store instructions executable by the processor 1902 to implement embodiments described above. The memory 1906 may store a topology map 1920 and one or more routing tree(s) 1930. The device 1900 may include a routing tree mechanism 1914 to implement embodiments described above. The routing tree mechanism 1914 may determine the one or more routing tree(s) 1930 based, at least in part, on the topology map 1920.
Any one of these functionalities may be partially (or entirely) implemented in hardware and/or on the processor 1902. For example, the functionality may be implemented with an application specific integrated circuit, in logic implemented in the processor 1902, in a co-processor on a network interface device, etc. 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 present subject matter is not limited to them. In general, techniques for routing in a hybrid 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 present 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 present subject matter.