Patent Publication Number: US-10791047-B2

Title: Automated network navigation

Description:
BACKGROUND 
     As the systems designed to distribute various forms of media content, including video, migrate to modern communication networks such as the Internet, quality control and delivery assurance processes developed for use in a traditional broadcast environment may continue to be relied upon. In the case of video, for instance, traditional video distribution systems were typically designed for fault tolerance, and may utilize redundant sources of video content and redundant distribution paths. In addition, each system component for performing video processing along the distribution path may be replicated one or more times to ensure the availability of backups. 
     The distribution of video over a communication network such as the Internet introduces additional layers of complexity, however. For example, sources of video content, the destinations for that video content, and the resources included in the paths utilized for distribution of the video content may be numerous, diverse, and are often remote from one another. Consequently, reliance on traditional video distribution processes and controls can prove undesirably costly and inefficient with respect to resource allocation when applied to distribution of content over the Internet or other wide area network. 
     SUMMARY 
     There are provided automated network navigation systems and methods for use by such systems, substantially as shown in and/or described in connection with at least one of the figures, and as set forth more completely in the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows a diagram of an exemplary network navigation system, according to one implementation; 
         FIG. 2  shows an exemplary diagram of a routing software code suitable for execution by a hardware processor of the network navigation system of  FIG. 1 , according to one implementation; and 
         FIG. 3  shows a flowchart presenting an exemplary method for performing automated network navigation, according to one implementation. 
     
    
    
     DETAILED DESCRIPTION 
     The following description contains specific information pertaining to implementations in the present disclosure. One skilled in the art will recognize that the present disclosure may be implemented in a manner different from that specifically discussed herein. The drawings in the present application and their accompanying detailed description are directed to merely exemplary implementations. Unless noted otherwise, like or corresponding elements among the figures may be indicated by like or corresponding reference numerals. Moreover, the drawings and illustrations in the present application are generally not to scale, and are not intended to correspond to actual relative dimensions. 
     The present application discloses a network navigation solution that overcomes the drawbacks and deficiencies in the conventional art. The present network navigation solution can be implemented as an automated solution capable of identifying a substantially optimal route across a communication network for delivery of a content stream. By monitoring performance data for each hardware node of the network and identifying a route for delivery of the content stream based on the performance data, the present network navigation solution can provide routing that is substantially optimal relative to present network conditions. Moreover, by rerouting delivery of the content stream when test data reveals that the original route is failing to deliver the content reliably, or at an acceptable standard of quality, the present network navigation solution automatically adapts to changes in network conditions. As a result, the present network navigation solution advantageously provides robust network routing that is resilient to individual hardware or software component failures, without the cost or inefficiency imposed by traditional content distribution processes. 
       FIG. 1  shows a diagram of an exemplary automated network navigation system, according to one implementation. As shown in  FIG. 1 , network navigation system  110  includes computing platform  112  having hardware processor  114 , and system memory  116  implemented as a non-transitory storage device. According to the present exemplary implementation, system memory  116  stores routing software code  120  configured to identify a substantially optimal network route for delivery of content stream  108 . 
     As further shown in  FIG. 1 , network navigation system  110  is implemented within content distribution environment  100  including communication network  130  having network communication links  132  and multiple hardware nodes  134 ,  136   a , and  136   b . In addition,  FIG. 1  shows content distribution system  106  receiving source content  104  and providing content stream  108  including source content  104 , content stream destinations  138   a  and  138   b , performance data  140 , test data  144 , and routing data  118  generated by routing software code  120 . 
     Hardware nodes  134  of communication network  130  are implemented as transmission nodes (hereinafter “transmission nodes  134 ”) including exemplary transmission nodes  134   a  and  134   b  providing a portion of first network route  142   a , and transmission nodes  134   c ,  134   d ,  134   e , and  134   f  (hereinafter “transmission nodes  134   c - 134   f ”) providing a portion of second network route  142   b . Hardware nodes  136   a  and  136   b  are implemented as potential source nodes (hereinafter “source node  136   a ” and “source node  136   b ”) of source content  104  included in content stream  108 . 
     It is noted that  FIG. 1  depicts two instantiations of communication network  130  to show that computing platform  112  of network navigation system  110  is communicatively coupled to source nodes  136   a  and  136   b , as well as to transmission nodes  134  via the same communication network  130 . Thus, for the purposes of the present application, source nodes  136   a  and  136   b , like transmission nodes  134 , are defined as hardware nodes of communication network  130 . 
     Source nodes  136   a  and  136   b  may take the form of content servers configured to provide source content  104  in the form of audio-visual content, such as television (TV) program content or movie content, for example. Transmission nodes  134  may be implemented using a wide variety of diverse hardware devices. Exemplary devices for implementing transmission nodes  134  include switches, routers, gateways, bridges, repeaters, and proxy servers, to name a few. It is noted that transmission nodes  134  may be physically remote from one another, as well as from source nodes  136   a  and  136   b  and content destinations  138   a  and  138   b . For example, transmission nodes  134  may be located hundreds or thousands of miles apart from one another. 
     In some implementations, computing platform  112  of network navigation system  110  may correspond to one or more web servers, accessible over a packet-switched network such as the Internet, for example. Alternatively, computing platform  112  of network navigation system  110  may correspond to one or more computer servers supporting a private WAN, or included in another type of limited distribution network. That is to say, in some implementations, communication network  130  may include a public network such as the Internet, while in some implementations communication network  130  may include a private WAN or other limited distribution network. 
     According to some implementations, network navigation system  110  may be integrated with content distribution system  106  so as to function as a feature of content distribution system  106 . For example, content distribution system  106  may be a cloud based and substantially automated system for distributing content, such as source content  104 , over communication network  130 . 
     It is noted that, although the present application refers to routing software code  120  as being stored in system memory  116  for conceptual clarity, more generally, system memory  116  may take the form of any computer-readable non-transitory storage medium. The expression “computer-readable non-transitory storage medium,” as used in the present application, refers to any medium, excluding a carrier wave or other transitory signal that provides instructions to hardware processor  114  of computing platform  112 . Thus, a computer-readable non-transitory medium may correspond to various types of media, such as volatile media and non-volatile media, for example. Volatile media may include dynamic memory, such as dynamic random access memory (dynamic RAM), while non-volatile memory may include optical, magnetic, or electrostatic storage devices. Common forms of computer-readable non-transitory media include, for example, optical discs, RAM, programmable read-only memory (PROM), erasable PROM (EPROM), and FLASH memory. 
       FIG. 2  shows a more detailed diagram of exemplary routing software code  220  suitable for execution by hardware processor  114  of network navigation system  110 , in  FIG. 1 , according to one implementation. As shown in  FIG. 2 , routing software code  220  may include network performance analysis module  222 , network node status database  224 , route mapping module  226 , and in some implementations, network node maintenance module  228 . In addition,  FIG. 2  shows performance data  240  and test data  244  received via communication network  130 , routing data  218  provided to content distribution system  106 , and maintenance instructions  246  optionally provided to one or more hardware nodes of communication network  130  by network node maintenance module  228 . 
     Also shown in  FIG. 2  is performance analysis data  252  generated by network performance analysis module  222  of routing software code  220 . As shown in  FIG. 2 , performance analysis data  252  may be stored in network node status database  224  for retrieval by route mapping module  226 . Furthermore, in some implementations, network performance analysis module  222  may transfer performance analysis data  252  to network node maintenance module  228 . In those implementations, network node maintenance module  228  may be configured to act on performance analysis data  252  by outputting maintenance instructions  246  to one or more of source nodes  136   a  and  136   b  and/or transmission nodes  134 , in  FIG. 1 . 
     Performance data  240 , test data  244 , and routing data  218 , in  FIG. 2 , correspond respectively in general to performance data  140 , test data  144 , and routing data  118 , in  FIG. 1 , and those corresponding features may share any of the characteristics attributed to either corresponding feature by the present disclosure. Moreover, routing software code  220  corresponds in general to routing software code  120 , in  FIG. 1 , and those corresponding features may share any of the characteristics attributed to either corresponding feature by the present disclosure. Thus, like routing software code  220 , routing software code  120  may include features corresponding to network performance analysis module  222 , network node status database  224 , route mapping module  226 , and in some implementations, to network node maintenance module  228  as well. 
     The functionality of routing software code  120 / 220  will be further described by reference to  FIG. 3  in combination with  FIGS. 1 and 2 .  FIG. 3  shows flowchart  360  presenting an exemplary method for use by a system, such as network navigation system  110 , in  FIG. 1 , for performing automated network navigation. With respect to the method outlined in  FIG. 3 , it is noted that certain details and features have been left out of flowchart  360  in order not to obscure the discussion of the inventive features in the present application. 
     Referring now to  FIG. 3  in combination with  FIGS. 1 and 2 , flowchart  360  begins with monitoring performance data  140 / 240  for each of multiple hardware nodes, i.e., source nodes  136   a  and  136   b  and transmission nodes  134 , of communication network  130  (action  361 ). Monitoring of performance data  140 / 240  for source nodes  136   a  and  136   b  and transmission nodes  134  may be performed by routing software code  120 / 220  of network navigation system  110 , executed by hardware processor  114 , and using network performance analysis module  222 . As noted above, source nodes  136   a  and  136   b  may take the form of content servers providing source content  104  in the form of audio-visual content, while transmission nodes  134  may be implemented as switches, routers, gateways, bridges, repeaters, and/or proxy servers, for example. 
     Performance data  140 / 240  may take a number of forms. For example, in use cases in which source nodes  136   a  and  136   b  are content servers, performance data  140 / 240  may include data provided by a server health module of each of source nodes  136   a  and  136   b . In use cases in which one or more of transmission nodes  134  are routers, for instance, performance data  140 / 240  may include data describing the health and traffic of each router port. Alternatively, or in addition, performance data  140 / 240  may include Simple Network Management Protocol (SNMP) traps, as known in the art. 
     Network performance analysis module  222  of routing software code  120 / 220  may be configured to process performance data  140 / 240  and to generator performance analysis data  252  for each of the hardware nodes of communication network  130 . Performance analysis data for each of the hardware nodes of communication network  130  may be transferred to network node status database  224  by network performance analysis module  222 . Moreover, network performance analysis module  222  may be configured to poll the hardware nodes of communication network  130  substantially continuously, and to update performance analysis data  252  as necessary. Consequently, performance analysis data  252  stored in network node status database  224  can provide the present performance or health status of each hardware node of communication network  130  at substantially all times. 
     Flowchart  360  continues with identifying one or more network destinations, i.e., content stream destinations  138   a  and  138   b , for content stream  108  (action  362 ). In some implementations, content stream  108  may include one or more Internet Protocol (IP) unicast content streams, each directed to a single destination, i.e., one of content stream destinations  138   a  and  138   b . However, in other implementations, as shown in  FIG. 1 , content stream  108  may be an IP multicast content stream for distribution to multiple destinations. 
     Content stream destinations  138   a  and  138   b  may take a number of alternative forms, and may be implemented as hardware or software. For example, either or both of content stream destinations  138   a  and  138   b  may be implemented as virtual transponders in a regional Meet Me Room. As other examples, either or both of content stream destinations  138   a  and  138   b  may take the form of a Digital Multi-channel Video Programming Distributor (DMVPD) headend, or a local or regional content delivery network (CDN). Identification of one or more of content stream destinations  138   a  and  138   b  as a network destination of content stream  108  may be performed by routing software code  120 / 220  of network navigation system  110 , executed by hardware processor  114 , and using route mapping module  226 . 
     Flowchart  360  continues with identifying one of source nodes  136   a  and  136   b  of communication network  130  as a source node for providing source content  104  for content stream  108  based on performance data  140 / 240  (action  363 ). As shown in  FIG. 1 , according to the present exemplary implementation, source node  136   a  has been identified as the source node for source content  104 . Identification of source node  136   a  as the source node for providing source content  104  for content stream  108  may be performed by route mapping module  226  of routing software code  120 / 220 , executed by hardware processor  114 , and using performance analysis data  252  generated based on performance data  140 / 240 . 
     Where each of source nodes  136   a  and  136   b  is a potential source for providing source content  104  for content stream  108 , identification of source node  136   a  rather than source node  136   b  to provide source content  104  may occur for any of several different reasons. For example performance data  140 / 240  may indicate that source node  136   b  is performing sub-optimally, or has suffered a performance fault. 
     It is noted that although content stream  108  may be an IP multicast content stream having multiple destinations, as stated above by reference to action  362 , in the interests of conceptual clarity, the further actions outlined by flowchart  360  and discussed below will be described as though content stream  108  is directed to a single network destination, i.e., content stream destination  138   b . Bearing that proviso in mind, flowchart  360  continues with identifying transmission nodes  134   a  and  134   b  for delivery of content stream  108  to content stream destination  138   b  based on performance data  140 / 240  (action  364 ), where source node  136   a  and transmission nodes  134   a  and  134   b  determine first network route  142   a  for delivery of content stream  108 . 
     Identification of transmission nodes  134   a  and  134   b  for delivery of content stream  108  to content stream destination  138   b  may be performed by routing software code  120 / 220 , executed by hardware processor  114 , and using performance analysis data  252  generated based on performance data  140 / 240 . First network route  142   a  determined by source node  136   a  and transmission nodes  134   a  and  134   b  may be included in routing data  118 / 218  generated by route mapping module  226  of routing software code  120 / 220 . 
     Identification of transmission nodes  134   a  and  134   b  for delivery of content stream  108  to content stream destination  138   b  from among transmission nodes  134  may occur for any of several different reasons. For example performance data  140 / 240  may indicate that transmission nodes  134  other than transmission nodes  134   a  and  134   b  are performing sub-optimally or are offline. Alternatively, or in addition, first network route  142   a  may represent a shortest path through communication network  130 , either with respect to the number of transmission nodes on first network route  130 , or with respect to a latency imposed by first network route  142   a . Regardless of the particular criteria being applied, first network route  142   a  is identified as the substantially optimal path through communication network  130  for delivery of content stream  108  to content stream destination  138   b  based on those criteria. 
     Routing data  118 / 218  identifying first network route  142   a  may be utilized by content distribution system  106  to deliver content stream  108  to content stream destination  138   b  along first network route  142   a . As noted above, in some implementations, network navigation system  110  may be integrated with content distribution system  106 . In those implementations, routing data  118 / 218  is generated as a data resource existing in a system memory of content distribution system  106 , which may be a distributed memory including system memory.  116  of computing platform  112 , and accessible by content distribution system  106 . 
     Flowchart  360  continues with receiving test data  144 / 244  for first network route  142   a  during delivery of content stream  108  along first network route  142   a  (action  365 ). Test data  144 / 244  may be received by routing software code  120 / 220 , executed by hardware processor  114 , during delivery of content stream  108  along first network route  142   a  by content distribution system  106 . Test data  144 / 244  for first network route  142   a  may be generated at content stream destination  138   b , and may be based on the quality of the content carried by content stream  108  when it is received at content stream destination  138   b  over first network route  142   a . Test data  144 / 244  may be received by routing software code  120 / 220 , executed by hardware processor  114  of network navigation system  110 , from content stream destination  138   b.    
     As noted above, content stream  108  may include audio-visual content. In those implementations, test data  144 / 244  may include one or more measures of the video quality of video included in content stream  108 , such as the resolution or blur of the video received at content stream destination  138   b  over first network route  142   a . In some implementations, content stream  108  may be a multi-channel content stream including a video channel carrying video content and an audio channel carrying audio content. In those implementations, test data  144 / 244  may include a measure of the alignment of the video content with the audio content, for example. 
     Flowchart  360  can conclude with determining second network route  142   b  for delivery of content stream  108  to content stream destination  138   b  if test data  144 / 244  for first network route  142   a  fails to meet a predetermined test standard (action  366 ). As noted above, test data  144 / 244  may include one or more measures of video quality, and/or a measure of the alignment of video and audio content carried by content stream  108 . In those implementations, the predetermined standard against which test data  144 / 244  is compared may be a video quality standard and/or an alignment standard of the video content with the audio content. 
     The present condition of communication network  130 , i.e., the present state of health or performance of its hardware nodes  136   a ,  136   b , and  134  may be dynamic, and may change in significant ways subsequent to identification of first network route  142   a  as the substantially optimal path for delivery of content stream  108  to content stream destination  138   b . For example, a hardware or software failure affecting one of transmission nodes  134   a  or  134   b , a malfunction by one of those transmission nodes, or unanticipatedly heavy traffic through one of those transmission nodes may render first network route  142   a  less than optimal during delivery of content stream  108 . 
     Where continued use of first network route  142   a  for delivery of content stream  108  to content stream destination  138   b  is identified as being undesirable based on test data  144 / 244 , hardware processor  114  can execute routing software code  120 / 220  to determine second network route  142   b  for delivery of content stream  108  to content stream destination  138   b . Like first network route  142   a , second network route  142   b  may be determined by routing software code  120 / 220  based on performance data  140 / 240 . Moreover, hardware processor  114  may execute routing software code  120 / 220  to determine second network route  142   b  automatically, i.e., as part of an automated process that does not require human participation, if test data  144 / 244  fails to meet the predetermined test standard. 
     According to the exemplary implementation shown in  FIG. 1 , second network route  142   b  retains source node  136   a , but utilizes transmission nodes  134   c - 134   f  in lieu of transmission nodes  134   a  and  134   b  used in first network route  142   a . Identification of transmission nodes  134   c - 134   f  for delivery of content stream  108  to content stream destination  138   b  may be based on any of the criteria discussed above by reference to identification of transmission nodes  134   a  and  134   b  of first network route  142   a . Regardless of the particular criteria being applied, second network route  142   b  is determined to be the substantially optimal path for delivery of content stream  108  to content stream destination  138   b  based on those criteria and the changed condition of communication network  130  since identification of first network path  142   a  as the previously substantially optimal path. 
     Although not included in the outline provided by flowchart  360 , in some implementations, hardware processor  114  may further execute routing software code  120 / 220  to modify the operation of one or more of the hardware nodes of communication network  130 . For example, based on performance analysis data  252  generated based on performance data  140 / 240 , network node maintenance module  228  may be configured to output maintenance instructions  246  to one or more of source nodes  136   a  and  136   b  and transmission nodes  134 . 
     As a specific example, where one or more of source nodes  136   a  and  136   b  and/or transmission nodes  134  is in a standby or sleep mode, hardware processor  114  may execute network node maintenance module  228  of routing software code  120 / 220  to output maintenance instructions  246  to activate those hardware nodes. Alternatively, or in addition, where performance data  140 / 240  indicates that one or more of source nodes  136   a  and  136   b  and/or transmission nodes  134  is running dangerously hot, hardware processor  114  may execute network node maintenance module  228  to output maintenance instructions  246  to shut down operation of those hardware nodes. 
     Thus, the present application discloses a network navigation solution that can be implemented as an automated solution capable of identifying a substantially optimal route across a communication network for delivery of a content stream. By monitoring performance data for each hardware node of the network and identifying a route for delivery of the content stream based on the performance data, the present network navigation solution can provide routing that is substantially optimal relative to present network conditions. Moreover, by rerouting delivery of the content stream when test data reveals that the original route is failing to deliver the content reliably, or at an acceptable standard of quality, the present network navigation solution automatically adapts to changes in network conditions. As a result, the present network navigation solution advantageously provides robust network routing that is resilient to individual hardware or software component failures, without the cost or inefficiency imposed by traditional content distribution processes. 
     From the above description it is manifest that various techniques can be used for implementing the concepts described in the present application without departing from the scope of those concepts. Moreover, while the concepts have been described with specific reference to certain implementations, a person of ordinary skill in the art would recognize that changes can be made in form and detail without departing from the scope of those concepts. As such, the described implementations are to be considered in all respects as illustrative and not restrictive. It should also be understood that the present application is not limited to the particular implementations described herein, but many rearrangements, modifications, and substitutions are possible without departing from the scope of the present disclosure.