The present disclosure relates generally to distributing media content.
Television and other video service providers can provide media services to multiple households. As service areas become larger, network infrastructure is typically expanded. Nonetheless, distributing multimedia content, especially television content or other video content, via a network typically requires high bandwidth combined with tight latency and loss constraints, even under failure conditions. If a component in such a network fails, continuing to distribute media content via the network often requires identification and repair of the failure; re-routing of data packets around the point of failure; re-generating data packets at a head-end device; or other solutions. Some solutions can cause network congestion, packet loss or other delays in data traffic. Multiple network failures can compound these effects, which can significantly impact the quality of media content.
A system to distribute media content is disclosed. The system includes a router associated with a node of a media distribution network. The router is adapted to receive a data packet from a parent node of the media distribution network. The router is also adapted to route a copy of the data packet to a next hop node via a fast re-route backup path when a network link coupled to the router and to a second router of a next hop node is not operational. The fast re-route backup path does not overlap any primary path of an initial multicast tree corresponding to data flow from the router to downstream nodes of the media distribution network. Additionally, the router is adapted to construct a re-configured multicast tree that excludes the failed network link and route data packets via the re-configured multicast tree and cease routing data packets via the backup path in response to a re-convergence event.
In another embodiment, a system to distribute media content includes a router associated with a node of a media distribution network. The router is adapted to determine a primary path to a next hop media distribution node based on first link weighting factors received at the router. The primary path corresponds to a network link coupled to the router and to a second router of a next hop media distribution node. The router is also adapted to determine a backup path from the router to the next hop media distribution node based on second link weighting factors received at the router, where the backup path does not overlap an initial multicast tree that includes the primary path. Additionally, the router is adapted to route a copy of a data packet received at the router from a parent node to the next hop media distribution node via the backup path when a network link coupled to the router and to the second router is not operational. Further, the router is adapted to determine a re-configured multicast tree that excludes the network link that is not operational and route data packets via the re-configured multicast tree and cease routing data packets via the backup path in response to a re-convergence of a routing protocol.
In another embodiment, a method of distributing media content includes
setting a plurality of link weighting factors for a plurality of links of a multicast network, according to a process that includes identifying a first plurality of nodes of the multicast network, where the first plurality of nodes include a media content source and are connected via a first plurality of links to form a first ring. The process also includes setting a weighting factor associated with a particular link of the first plurality of links to a high cost and setting weighting factors associated with the other links in the first plurality of links to a low cost, where the particular link is coupled to the media content source. Additionally, the process includes forming a graph representing the multicast network. The graph includes links of the multicast network that are associated with weighting factors and each pair of nodes connected via one of the included links. Further, the process includes identifying at least one additional series of links of the multicast network, where each additional series of links are unweighted and form a path having two endpoints on the graph of the multicast network and setting a weighting factor associated with a first or a last link in the additional series of links to the high cost and setting weighting factors associated with other links in the additional series of links to the low cost. The method also includes downloading data related to the plurality of link weighting factors to each of a plurality of media destination routers of the multicast network, where the plurality of media destination routers are adapted to send and receive data packets according to a multicast tree that includes each of the plurality of links whose weighting factor is equal to the low cost.
In another embodiment, a method of distributing media content includes receiving first link weighting factors and second link weighting factors at a router associated with a media distribution node of a multicast media distribution network and determining a primary path to a next hop media distribution node based on the first link weighting factors. The primary path corresponds to a network link coupled to the router and to a second router of the next hop media distribution node and wherein the network link is associated with a low first link weighting factor. The method also includes determining a backup path from the router to the next hop media distribution node based on the second link weighting factors, where the backup path does not overlap any primary path between two media distribution nodes of the media distribution network. Additionally, the method includes receiving a data packet from a parent media distribution node and routing a copy of the data packet from the router to the next hop node via the backup path, when the network link coupled to the router and to the second router has failed.
A computer-readable medium having processor-readable instructions that are executable by a processor to perform a method that includes setting a plurality of link weighting factors for a plurality of links of a multicast network, according to a process that includes identifying a first plurality of nodes of the multicast network, where the first plurality of nodes include a media content source and are connected via a first plurality of links to form a first ring. The process also includes setting a weighting factor associated with a particular link of the first plurality of links to a high cost and setting weighting factors associated with the other links in the first plurality of links to a low cost, where the particular link is coupled to the media content source. Additionally, the process includes forming a graph representing the multicast network. The graph includes links of the multicast network that are associated with weighting factors and each pair of nodes connected via one of the included links and identifying at least one additional series of links of the multicast network, where each additional series of links are unweighted and form a path having two endpoints on the graph of the multicast network. Further, the process includes setting a weighting factor associated with a first or a last link in the additional series of links to the high cost and setting weighting factors associated with other links in the additional series of links to the low cost. The computer readable medium also has processor-readable instructions that are executable by the processor to perform a method including downloading data related to the plurality of link weighting factors to each of a plurality of media destinations of the multicast network.
Referring to
In a particular embodiment, the media content source 102 can be a video head-end, such as a super, national or regional video head-end. The media content source 102 can include one or more satellite receivers, data servers, or other systems that receive media content, such as video content, audio content, or any combination thereof, from one or more content providers 101. Moreover, the media content source 102 can include a plurality of routers. In an illustrative embodiment, the media content source 102 can include one router per IPTV channel served to the media destinations 104-114. The media content source 102 can send the media content to the media destinations 104-114 via Internet Protocol (IP) communication using a Moving Pictures Experts Group (MPEG) stream or other packet-based mechanism suitable to send media content. In an illustrative, non-limiting embodiment, the media content source 102 can include devices and systems, such as a low-noise block-down converter and other systems, to convert a satellite signal to packet data.
Each of the media destinations 104-114 functions as a media distribution node that receives media data packets, or copies thereof. The media data packets may include video content, audio content, or any combination thereof. The media destinations 104-114 may multicast the received media data packets to various serving areas that may include regional or sub-regional media distribution nodes, set-top box devices at the subscriber homes 132, or any combination thereof. In a particular embodiment, each of the media destinations 104-114 can include one or more servers, multicast-enabled routers, or other devices, each of which can include interfaces, logic, memory devices, other components, or any combination thereof, adapted to perform one or more of the functions of the media destination with respect to distributing media content, such as receiving a data packet, sending a data packet, storing data, determining one or more network paths, and other functions. In an illustrative embodiment, each media destination can include a designated router 129 and a backup designated router 130 that are coupled to each other and to one or more multimedia servers 131. In an illustrative, non-limiting embodiment, the designated router 129 and the backup designated router 130 can operate as redundant, or substantially redundant, network edge devices.
Routers at the media content source 102 and the media destinations 104-114 can send data packets, such as video packets, associated with media content, to each other via the network links 115-128. The flow of data through the network can be represented as a multicast tree, such as a source-specific multicast tree having a router at the media content source 102 as its root. The multicast tree indicates an order in which the media destinations 104-114 receive copies of each data packet sent by a router at the media content source 102 and is not necessarily the same as the sequence in which the media destinations 104-114 are physically connected to the media content source 102. For example, as shown in
The initial multicast tree is determined based on a plurality of primary paths associated with the system 100. Each primary path is associated with one of the network links 115-128 and indicates a direction of downstream (as defined earlier) data travel between two network nodes. In a particular embodiment, the primary paths on which the multicast tree is based can be determined by the media destinations 104-114. Each of the media destinations 104-114 can select an initial primary path to a downstream network destination (i.e. a “next hop node”), based on link bandwidth costs (e.g., an available bandwidth or inverse of available bandwidth) or other link weighting factors associated with the network links to which the media destination is coupled.
For example, if a link weighting factor associated with a link between MD(2) 106 and MD(3) 108 is equal to 1, and a link weighting factor associated with a link between MD(2) 106 and MD(4) 110 is equal to ∞, then MD(2) 106 can select MD(3) 108 as the next hop node. Consequently, the initial multicast tree associated with the system 100 can include an initial primary path directed from MD(2) 106 to MD(3) 108 via the network link 118. Examples of primary paths associated with an initial multicast tree are illustrated in
In a particular embodiment, a Protocol-Independent Multicast (PIM) protocol, such as PIM Sparse Mode (PIM-SM) or PIM Source Specific Multicast (PIM-SSM), can be used to determine the initial multicast tree based on the plurality of initial primary paths associated with the system 100, such that this tree includes the low cost links of the system 100. The topological state of the system 100 can be maintained via an interior gateway protocol (IGP), such as an open shortest path first (OSPF) protocol, OSPF version 3 (OSPFv3) protocol, intermediate system-to-intermediate system (IS-IS) protocol, multicast OSPF (MOSPF) protocol, or other link-state routing protocol, where the routers associated with the media content source 102 and the routers at the plurality of media destinations 104-114 each store information about the complete network topology and calculate the best next hop to each of the other possible destinations (i.e., connected media destinations) based on link costs or other link weighting factors.
In an illustrative embodiment, each of the routers at the media destinations 104-114 can store a link state database that indicates the entire network topology, as well as a routing table that includes data indicating (a) which nodes of the network are connected to particular other nodes; (b) the shortest paths to other nodes (such as the root of the multicast tree or a desired parent node); (c) the primary path to a next hop node; or (d) any combination thereof. Additionally, each of the routers can store state information related to a portion of the initial multicast tree that is relevant to the particular router. Such a portion of the initial multicast tree can include, for example, the router, child nodes downstream from the router, and one or more shortest paths from the router to the router at the root of the initial multicast tree (i.e., a router at the media content source 102). The router at the media destination can determine the portion of the initial multicast tree based on multicast JOIN messages sent by downstream media destinations to the media content source 102 via the router.
For instance, the router can receive a JOIN message related to a particular IPTV channel from a second router at a next hop node of the media distribution network, where the next hop node has received a request for the channel from a set-top box device. If the router is already receiving media packets related to the requested channel, the router can append the primary path from the router to the next hop node to a multicast tree for the channel, which extends from a router at the media content source 102 to the router. Whereas, if the router is not receiving media packets related to the requested channel, the router can store link state information indicating that it is to send copies of the media packets related to the next hop node, and it can forward the JOIN message toward the media content source 102 via a shortest open path determined from its routing table. Once the router is appended to the multicast tree for the channel, the router can append the primary path to the next hop node to the multicast tree for the channel, as well.
After an initial multicast tree is determined for the system 100, a second set of link weighting factors can be determined for the network links 115-128 and can be distributed to the routers at the media destinations 104-114. Using the second set of weighting factors, each of the media destinations 104-114 can determine and store an initial backup path to send media data packets to a next media destination during a link failure. For example, if a link associated with an initial primary path between a first media destination and a next media destination fails due to physical damage of the link, router line card failures, router mis-configuration, network upgrades or maintenance, or other failure conditions, the first media destination can send media data packets to the next media destination via the initial backup path. In a particular embodiment, the initial backup path can include a “virtual link” between the first media destination and the next media destination whose direction is opposite to that of the initial primary path from the first media destination to the second media destination, as explained below. To illustrate, in the embodiment shown in
In a particular embodiment, a service provider, or other party or automated system, can determine that an initial multicast tree corresponding to the system 100 is to meet one or more criteria. For instance, it can be determined that each media destination should only receive one copy of each data packet sent from the media content source 102. In another example, it may be determined that no backup path should overlap any primary path related to the initial multicast tree. Link weighting factors can be set for the links 115-128 to manipulate selections of one or more of the initial primary paths by each of the media destinations 104-114, such that the resulting initial multicast tree meets the desired criteria.
Link weighting factors can be set to produce an initial multicast tree in which each of the media destinations 104-114 receives only one copy of each media data packet sent by the media content source 102. In addition, link weighting factors can be set to produce an initial multicast tree in which each media destination receives data packets via a shortest open path from the media content source 102. Further, the link weighting factors can be set to produce an initial multicast tree in which no backup path overlaps any initial primary path of the initial multicast tree. In this way, downstream network congestion will typically not increase, at least under single link failures, as a result of sending media data packets via a backup path, such as the backup path 135. For illustrative purposes, examples of a system in which network congestion is, and is not, increased as a result of using a backup path are illustrated in
In one embodiment, link weighting factors can be set by a network management system 133 and can be communicated to the routers associated with media content source 102, and to the routers at each of the media content destinations 104-114, as IGP link weighting factors. Alternatively, such link weighting factors can be manually entered at the routers associated with the media content source 102, at routers associated with one or more of the media destinations 104-114, at the network management system 133, or any combination thereof. In another example, the link weighting factors can be included with router configuration software loaded onto routers at the media content source 102 and the media destinations 104-114. Link weighting factors can be set according to the methods described with reference to
Upon failure of a network link, such as the network link between MD(5) and MD(4), data packets sent via the initial primary path 134 can be re-routed via the backup path 135. Using the backup path 135 can reduce or eliminate the short-term impact of a link failure on quality of service provided to end users. In an illustrative embodiment, the backup path 135 can be activated by a link-layer fast re-route (FRR) mechanism upon detection of a link failure, such that re-routing of data can tale, in some cases, 50 milliseconds or less. Nonetheless, the utility of the backup path 135 may be frustrated if additional link failures occur in the system 100. As a result, an initial multicast tree can be re-configured to avoid or mitigate the impact of additional link failures. Though multicast tree re-configuration can take up to 10 seconds or more, it allows the system 100 to avoid relatively long-term dependence on the backup path 135 (i.e., at least several hours until the failed link is actually repaired). Hence, the backup path 135 can be used to re-route traffic around a failed link during re-configuration of the multicast tree, and the re-configured multicast tree can then be used to route data traffic without reliance on the failed link or the backup path 135.
In order to re-configure a multicast tree, link weighting factors for some or all of the network links can be re-computed to manipulate the selection of new primary paths by the routers at one or more of the media destinations 104-114, where the new primary paths provide the shortest path from the media content source 102 to each of the media destinations 104-114, while avoiding the failed link and meeting (to the extent possible) the desired criteria of the initial multicast tree, such as each media destination only receiving one copy of each data packet and backup paths not overlapping primary paths of the re-configured multicast tree. Each media destination router re-calculates its best next hop based on the re-computed link weighting factors. As a result, a new plurality of primary paths can be determined by the media destinations, and a re-configured multicast tree can be produced based on the new plurality of primary paths. Zero or more of the new plurality of primary paths can be identical to the initial primary paths.
An example of a re-configured multicast tree 160 is illustrated in
Referring to
Referring to
Referring to
As illustrated in
In an illustrative embodiment, the initial link weighting factors can be set by identifying a first ring of network nodes within the system, where the ring includes the source node 302. For example, a ring including the nodes S-1-5-6-2-S can be identified. Link weighting factors associated with one of the links coupled to the source node (e.g., 324) is set to high cost, and the other link coupled to the source node (e.g., 322) is set to low cost. As a result, the source node 302 can select an initial primary path that includes a downstream portion of the link between the source node 302 and MDN(1) 304. Link weighting factors associated with other links on the first ring can also be set to low cost, such that MDN(1) 304, MDN(5) 312 and MDN(6) 314 select initial primary paths that direct data flow about the first ring. Note that if a clockwise direction is desired, the link 322 would be set at high cost and the link 324 would be set at low cost. Nonetheless, the other links associated with the first ring would still be set at low cost.
The first ring forms an initial undirected graph of the system 300. After link weighting factors are set for the first ring, a series of links are identified that form a path having two endpoints on the first ring. For example, a series of links forming the path 1-3-5 can be identified. A link weighting factor associated with the first or last link in the series can be set at a high cost, and the other links of the series can be set at a low cost. In the series of links forming the path 1-3-5, the link between MDN(1) 304 and MDN(5) 312 is the last link in the series. This link is already set at a low cost during link weight setting for the first ring. Hence, the first link in the 1-3-5 series (the link between MDN(1) 304 and MDN(3) 308) is set to high cost. After link weighting factors are set for the series of links forming the path 1-3-5, the links between MDN(1) 304 and MDN(2) 308, and between MDN(3) 308 and MDN(5) 312, are added to the graph of the system 300. This process can be repeated with respect to other series of links, such as links that form the paths 3-4-6, 2-8-6, and 5-7-8, until all links have been assigned weighting factors and become part of the undirected graph of the system 300.
After all link weighting factors are set for the system 300, the network nodes 302-318 determine primary paths for the system 300, by calculating the next best hop from each network node based on the link weighting factors. Each initial primary path follows a downstream portion of a link having a pair of directed edges (e.g., upstream and downstream). An initial multicast tree is generated for the system 300 based on the initial primary paths. The initial primary paths are shown at 319 in the multicast tree 330 depicted in
After the multicast tree is determined, backup paths can be generated by resetting weighting factors associated with the low cost links along the multicast tree to high cost and the high cost links of the multicast tree to low cost. Alternatively, second link weighting factors can be set for each of the network links. Backup paths can be determined at each of the network nodes 302-318 based on the reset or second link weighting factors. For example, we have the following backup paths for various network link pairs:
The backup paths and the initial primary paths of the multicast tree do not overlap.
In an illustrative embodiment, a failure of one of the network links included in the system 300 can be detected. For instance, MDN(6) 314 can detect a failure of the network link between MDN(6) 314 and MDN(2) 306. In response to the link failure, data packets received at MDN(6) 314 can be re-routed to MDN(2) 306 via the backup path 320. Re-routing of data packets via the backup path 320 can be initiated via a link layer fast re-route (FRR) mechanism at MDN(6) 314, such that the failure remains transparent to an IP Open Shortest Path First (IP-OSPF) protocol that maintains the system topology.
Alternatively, the link failure can be reflected at the Internet Protocol (IP) layer of the system 300, for example, by setting a high cost for the backup path 320. In an illustrative embodiment, new link weighting factors, including a very high cost (e.g., infinity) for the failed network link, can be set for the network links according to a re-convergence process associated with the IP-OSPF protocol. Some or all of the re-computed primary paths can be different from the initial primary paths.
In a particular embodiment, the new link weighting factors can be set using a process similar to that used to set the initial link weighting factors, while accounting for the link failure. For instance, a series of links forming a first ring would not include the link between MDN(2) 306 and MDN(6) 314 when setting new link weighting factors via the process described previously with respect to
Once the new link weighting factors are set, the network nodes 302-318 can re-calculate their next best hops based on the new link weighting factors, thereby generating new primary paths, but not including the failed network link. A re-configured multicast tree that includes the new primary paths can be determined according to a protocol-independent multicast (PIM) protocol or other protocol. Each of the nodes 302-318 can also re-calculate its backup path based on the re-calculated primary paths. For example, each of the nodes 302-318 can apply the process described in connection with
Each media destination can start sending data packets via the re-configured multicast tree when a routing protocol re-convergence period (e.g., an OSPF or IGP re-convergence period) ends; when the media destination begins receiving data via the re-configured multicast tree; when the media destination receives multicast “leave” messages from all child nodes to which it sends data via the previous multicast tree; or a combination thereof. In a particular embodiment, each of the nodes 302-318 can separately join the re-configured multicast tree using a “make-before-break” process, wherein a last hop router of each MDN issues a “join” command toward the source node 302 along the new shortest path of the re-configured multicast tree. In an illustrative embodiment, join commands can include a “join source shortest path” tree command of the form (S,G), in which S indicates the source 302 and G indicates a multicast group. Data starts to flow on the re-configured multicast tree, and the receiving MDN on the backup path 320 prunes the previous multicast tree (i.e., the tree as it existed prior to the failure) after receiving data packets via the re-configured multicast tree. For example, MDN(2) 306 can join the re-configured multicast tree when it begins receiving data packets via the re-configured multicast tree, and the backup path 320 can cease to be used. As a result, the changeover of each media destination from the initial multicast tree to the re-configured multicast tree can appear substantially “hitless” in terms of media quality received by subscribers.
Referring to
Link weighting factors can be set for the plurality of links 405. The media distribution nodes 404 can calculate initial primary paths, based on the link weighting factors, which give rise to a multicast tree for the system 400. In one embodiment, the link weighting factors can be set using a process similar to the process described with respect to
A series of links having two endpoints on the first ring can then be identified, such as the series of links that form the path 8-5-3-6-10. The last link in the series (node(6)-node(10)) can be assigned a high cost, and the other links in the series can be assigned a low cost. The series of links are then included in the graph. An additional series of links having two endpoints on the new graph can be identified, such as the series of links forming the path 10-11-12-7-6. The last link in the series (node(7)-node(6)) can be assigned a high cost, and the other links in the series can be assigned a low cost.
In an illustrative embodiment, a second ring can be identified that includes the SHE 402, such as the ring that includes the SHE 402, node(14) and node (16). One of the links that is coupled to the SHE 402 and that is included in the second ring can be assigned a low cost (SHE-node(14)), and the other such link can be assigned a high cost (SHE-node(16)). Link 14-16 is assigned a low cost. A next series of links having two endpoints on the second ring can be identified, such as SHE-16-22. The first link of the series (node(16)-node(22)) can be set to high cost, and the last link (node(22)-SHE) can be set to low cost. An additional series of links, such as 16-19-24-23-22 can be identified, and all but the first link (node(16)-node(19)) of the additional series can be set to low cost. This process can be repeated until link weighting factors have been assigned to all links of the system 400. In the embodiment shown in
Each of the media distribution nodes selects an initial primary path based on the pre-set link weighting factors. An initial multicast tree can be determined based on the initial primary paths 406, such that the multicast tree includes the low cost links of the system 400. In addition, each of the media distribution nodes can determine a fast re-route (FRR) backup path, such as the backup path 408, to re-route data to a next node in case of a failure of a link between the two nodes. The FRR paths do not overlap any of the initial primary paths 406 of the multicast tree. For example, the backup path 408 does not overlap any of the initial primary paths in the series of links forming the path 10-11-12-7-2-4.
In an illustrative embodiment, a link failure 407 can occur within the system 400. Node(10) can detect the link failure 407 and re-route data to node(11) via the backup path 408. Further, node(10) can send a link state advertisement throughout the network assigning a high cost to the backup path 408. Link weighting factors can be reset for each of the network links 405, including a high cost being set for the links of the backup path associated with the network failure 407. Once the link weighting factors are reset, each of the nodes can re-calculate its primary path, and a re-configured multicast tree that includes the re-computed primary paths and avoids the failed link and the backup path 408 can be determined. The re-configured multicast tree can satisfy criteria similar to those fulfilled by the initial multicast tree, namely that each media distribution node 404 receives only one copy of each data packet sent by the SHE 402, and that no re-computed FRR path overlaps any re-computed primary path. In a particular embodiment, each of the media distribution nodes 404 can separately join the re-configured multicast tree and leave the initial multicast tree after re-configuration of the multicast tree is complete.
Referring to
On the other hand, if additional links remain to be assigned weighting factors, the method moves to block 508. At block 508, a series of unweighted links is identified where the series forms a path that has two endpoints on the graph determined at 506. Proceeding to block 510, a first link or last link of the series of unweighted links is set to a high cost, and the other links included in the series of unweighted links are set to a low cost. The method returns to 506, and the links weighted at 510 are included in the graph of the IP layer topology.
Once all network links of the multicast media distribution network are weighted, the method advances to block 512. At block 512, the link weighting factors determined at 500-510 are downloaded to routers at nodes of the multicast media distribution network, e.g., through router configuration software or other network management software. In a particular embodiment, the link weighting factors sent to a particular router can relate to the links coupled to the particular router, links coupled to neighboring routers, or any combination thereof. In another embodiment, all link weighting factors can be downloaded to each router.
Moving to block 514, a multicast tree is determined for the multicast media distribution network. The multicast tree includes directed edges corresponding to the low cost links of the multicast media distribution network. In one embodiment, the multicast tree can be constructed based on multicast JOIN messages issued by each media distribution node, as the JOIN messages follow a shortest path through the routers of the media distribution nodes to the media content source. Proceeding to block 516, in a particular embodiment, second weighting factors can be set for the links of the multicast media distribution network. The directed edges included in the multicast tree can be set to a high cost, such as 100, ∞, or another high cost, and the other edges of the multicast media distribution network can be set to a low cost, such as 1, 0, −∞, or another low cost. In an illustrative embodiment, the second weighting factors can be used to calculate backup paths that do not overlap the multicast tree. Continuing to block 518, the second weighting factors are downloaded to the routers at the media distribution nodes of the multicast media distribution network. The method terminates at 520.
Referring to
Moving to block 602, the router determines a primary path based on the first link weighting factors. For example, the router can select a primary path corresponding to a bi-directional link that was assigned the lowest cost among links to which the router is coupled. The router is adapted to send copies of received data packets to a downstream node via the selected primary path. Further, the router determines a backup path based on the second link weighting factors. The router is adapted to re-route data packets to the downstream node via the backup path in response to a failure of a link corresponding to the primary path. The backup path does not overlap any primary path of a multicast tree corresponding to data flow through the multicast media distribution network. Proceeding to block 604, the router can construct a link state advertisement (LSA) indicating the costs of the links to which it is coupled. The router can send the LSA to one or more routers at neighboring nodes. In an illustrative embodiment, LSAs can be delivered via a control plane of the multicast media distribution network that is separate from a data plane that is used to deliver data packets.
Continuing to block 606, the router builds a routing table based on LSAs received via routers at the neighboring nodes. The routing table can indicate, for example, which nodes of the multicast media distribution network are connected to particular other nodes (i.e. the network topology). Further, the routing table can indicate how data can be routed, or is to be routed, to other particular nodes. Advancing to block 608, the router applies an open shortest path first (OSPF) process, in order to determine the shortest path to at least one other node, such as a desired parent, a media source, or a combination thereof, given the network topology. At block 610, the router can store link state information related to a portion of a multicast tree that is relevant to the router, such as a portion that includes the router, one or more downstream nodes to which the router is to communicate data packets, a path from the router to the root of the multicast tree (e.g., the media source), or any combination thereof. In one embodiment, the router can determine which downstream nodes (i.e., receivers at routers associated with the downstream nodes) are to receive data packets from the router based on JOIN messages received from the downstream routers.
Moving to block 612, the router receives a data packet, such as a video data packet, an audio data packet, or any combination thereof, from a parent node. Proceeding to decision node 614, the router determines whether the network link corresponding to the primary path determined at 602 has failed. For example, the router can utilize a link state protocol process to determine a status of each link coupled to the router. Link status can be determined periodically, when each data packet is received, or any combination thereof. If the link corresponding to the primary path has not failed, the method continues to block 615, and the router routes the data packet to the downstream node via the primary path. The method then advances to decision node 618.
Returning to decision node 614, if the router determines that the link corresponding to the primary path has failed, the method proceeds to block 616, and the router routes the data packet to the downstream node via the backup path. The router can also broadcast a link state advertisement to neighboring nodes indicating the link failure. In other embodiments, the multicast media distribution network can utilize a Lightweight Hello protocol built on User Datagram Protocol/Internet Protocol (UDP/IP) to determine whether each link is operational. In yet another embodiment, a SONET alarm can be broadcast to the multicast media distribution network indicating the failed link. The method then advances to decision node 618.
At decision node 618, the router determines whether additional data packets have been received. If additional data packets are received, the method returns to decision 614. The additional data packets can be routed via the primary path if the link is operational, or via the backup path if the link is non-operational. If no additional data packets are received, the method terminates at 620.
Referring to
Continuing to block 706, the router updates its routing table based on the link failure. Additionally, the router may update the routing table based on multicast JOIN messages received from downstream nodes. For example, where the router receives a JOIN request from a downstream node after the network link failure, the JOIN request will be sent via a shortest open path that avoids the failed network link. The router can update its routing table to record that shortest open path. Advancing to block 708, in a particular embodiment, the router applies an open shortest path first (OSPF) process to update its link state information and determine a portion of a re-configured multicast tree that is relevant to the router, where the re-configured multicast tree begins at the media content source and excludes the failed network link. The OSPF process can include determining a shortest open path between the router and the media content source. The relevant portion of the re-configured multicast tree can be constructed by appending the shortest path between the router and the media content source to the shortest open path by which the router has received a JOIN message from a downstream node after the link failure.
At decision node 710, the router can determine whether it has received any data packet(s) via the re-configured multicast tree (i.e., the path from the media content source to the router). If the media destination router has received one or more data packets via the re-configured multicast tree, the method advances to block 716. Conversely, if the media destination router has not received any data packet(s) via the re-configured multicast tree, the method moves to decision node 712, and the media destination router can determine whether it has received LEAVE messages from all child nodes corresponding to the initial multicast tree. If the router has not received such LEAVE messages, the method can proceed to block 714, and the media destination router can send any additional data packets that it receives via the backup path. On the other hand, if the media destination has received LEAVE messages from all child nodes corresponding to the initial multicast tree, the method moves to block 716.
At block 716, the router leaves the initial multicast tree and ceases to send any additional data packets via the backup path. The method terminates at 718.
Referring to
Proceeding to block 804, the media destination router receives a data packet from a parent node. Continuing to decision node 806, the media destination router determines whether a link to the next hop media destination has failed. If the link has not failed, the method advances to block 808, and the media destination router can send a copy of the data packets to the next media destination via the link. At decision node 806, the router can determine whether it has received other data packets. If the router has not received other data packets, the method terminates at 822. Conversely, if the router has received additional data packets, the method can return to block 804.
Returning to decision node 806, if the link has failed, the method moves to block 810, and the media destination router re-routes the data packet to the next hop media destination via the backup path determined at 802. Proceeding to block 812, the media destination router can send a link state advertisement (LSA) throughout the network indicating the failed network link. In an illustrative embodiment, a control plane associated with the router that generates the LSA operates based on detecting the link failure. The data plane associated with the router, which sends data packets via the backup path, can operate independently of the control plane. In one embodiment, the LSA can indicate a high cost assigned to the backup path. The high cost can be assigned to the backup path, for example, when the backup path is determined (at 802). The LSA communicates this high cost to other routers of the network.
Continuing to block 814, the media destination router updates its routing table based on the link failure. Additionally, the router can store updated link state information related to a relevant portion of a re-configured multicast tree. Advancing to decision node 815, the media destination router can determine whether it has received any data packets via the re-configured multicast tree. If the media destination router has received data packets via the re-configured multicast tree, the method advances to block 820. Conversely, if the media destination router has not received any data packets from the original parent node, the method moves to decision node 816, and the media destination router can determine whether it has received leave messages from all child nodes of the media destination according to the initial multicast tree. If the media destination router has not received such leave messages, the method can proceed to block 818, and the media destination router can send any additional data packets that it receives via the backup path. On the other hand, if the media destination router has received leave messages from all child nodes of the media destination according to the initial multicast tree, the method moves to block 820.
At block 820, the media destination router leaves the initial multicast tree, for instance, by sending a multicast LEAVE message to its original parent node. The router ceases to send any additional data packets via the backup path. The method terminates at 822.
Referring to
In a networked deployment, the computer system may operate in the capacity of systems or devices of a media content source, video head-end, media distribution node, router, server, network management or monitoring system, or any combination thereof, as illustrated in
As illustrated in
In a particular embodiment, as depicted in
In an alternative embodiment, dedicated hardware implementations, such as application specific integrated circuits, programmable logic arrays and other hardware devices, can be constructed to implement one or more of the methods described herein. Applications that may include the apparatus and systems of various embodiments can broadly include a variety of electronic and computer systems. One or more embodiments described herein may implement functions using two or more specific interconnected hardware modules or devices with related control and data signals that can be communicated between and through the modules, or as portions of an application-specific integrated circuit. Accordingly, the present system encompasses software, firmware, and hardware implementations.
In accordance with various embodiments of the present disclosure, the methods described herein may be implemented by software programs executable by a computer system. Further, in an exemplary, non-limited embodiment, implementations can include distributed processing, component/object distributed processing, and parallel processing. Alternatively, virtual computer system processing can be constructed to implement one or more of the methods or functionality as described herein.
The present disclosure contemplates a computer-readable medium that includes instructions 924 or receives and executes instructions 924 responsive to a propagated signal, so that a device connected to a network 926 can communicate voice, video or data over the network 926. Further, the instructions 924 may be transmitted or received over the network 926 via the network interface device 920.
While the computer-readable medium is shown to be a single medium, the term “computer-readable medium” includes a single medium or multiple media, such as a centralized or distributed database, and/or associated caches and servers that store one or more sets of instructions. The term “computer-readable medium” shall also include any medium that is capable of storing, encoding or carrying a set of instructions for execution by a processor or that cause a computer system to perform any one or more of the methods or operations disclosed herein.
In a particular non-limiting, exemplary embodiment, the computer-readable medium can include a solid-state memory such as a memory card or other package that houses one or more non-volatile read-only memories. Further, the computer-readable medium can be a random access memory or other volatile re-writable memory. Additionally, the computer-readable medium can include a magneto-optical or optical medium, such as a disk or tapes or other storage device to capture carrier wave signals such as a signal communicated over a transmission medium. A digital file attachment to an e-mail or other self-contained information archive or set of archives may be considered a distribution medium that is equivalent to a tangible storage medium. Accordingly, the disclosure is considered to include any one or more of a computer-readable medium or a distribution medium and other equivalents and successor media, in which data or instructions may be stored.
In accordance with various embodiments, the methods described herein may be implemented as one or more software programs running on a computer processor. Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable logic arrays and other hardware devices can likewise be constructed to implement the methods described herein. Furthermore, alternative software implementations including, but not limited to, distributed processing or component/object distributed processing, parallel processing, or virtual machine processing can also be constructed to implement the methods described herein.
It should also be noted that software that implements the disclosed methods may optionally be stored on a tangible storage medium, such as: a magnetic medium, such as a disk or tape; a magneto-optical or optical medium, such as a disk; or a solid state medium, such as a memory card or other package that houses one or more read-only (non-volatile) memories, random access memories, or other re-writable (volatile) memories. The software may also utilize a signal containing computer instructions. A digital file attachment to e-mail or other self-contained information archive or set of archives is considered a distribution medium equivalent to a tangible storage medium. Accordingly, the disclosure is considered to include a tangible storage medium or distribution medium as listed herein, and other equivalents and successor media, in which the software implementations herein may be stored.
Although the present specification describes components and functions that may be implemented in particular embodiments with reference to particular standards and protocols, the invention is not limited to such standards and protocols. For example, standards for Internet and other packet switched network transmission (e.g., TCP/IP, UDP/IP, HTML, HTTP) represent examples of the state of the art. Such standards are periodically superseded by faster or more efficient equivalents having essentially the same functions. Accordingly, replacement standards and protocols having the same or similar functions as those disclosed herein are considered equivalents thereof.
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Additionally, the illustrations are merely representational and may not be drawn to scale. Certain proportions within the illustrations may be exaggerated, while other proportions may be minimized. Accordingly, the disclosure and the figures are to be regarded as illustrative rather than restrictive.
One or more embodiments of the disclosure may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any particular invention or inventive concept. Moreover, although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the description.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b) and is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, various features may be grouped together or described in a single embodiment for the purpose of streamlining the disclosure. This disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter may be directed to less than all of the features of any of the disclosed embodiments. Thus, the following claims are incorporated into the Detailed Description, with each claim standing on its own as defining separately claimed subject matter.
The above-disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments, which fall within the true spirit and scope of the present invention. Thus, to the maximum extent allowed by law, the scope of the present invention is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.