Representing and Searching Network Multicast Trees
This application is a continuation of, and claims priority to, U.S. patent application Ser. No. 14/072,901, filed Nov. 6, 2013, which is a continuation of Ser. No. 13/029,485, filed Feb. 17, 2011, now U.S. Pat. No. 8,599,725, which is a continuation-in-part of U.S. patent application Ser. No. 12/049,511, filed Mar. 17, 2008, now U.S. Pat. No. 8,259,594, each of which is hereby incorporated by reference as to its entirety. A service provider network (such as a data network) may include a number of multicast trees for delivering content such as video and/or audio data to various users. Any given multicast tree in the network may include one or more content receivers operably coupled to one or more routers and one or more transmission sources. The receivers, routers, and transmission sources may be coupled to each other via links (e.g., wireless and/or wired links, such as optical fiber links), which may span large distances. The transmission source may transmit content as one or more data streams to the routers via the links. The routers, in turn, direct the data stream over the links to other routers or various receivers. Thus, a multicast tree defines one or more paths extending from a source to one or more receivers. The size of the multicast trees may be large and may continue to grow with the advent of new or additional services, such as switched digital video (SDV). SDV networks are known to dynamically transmit only a subset of available video streams, based on which of the video streams are selected by the users at any given time. Where a network is designed to multicast content to large numbers of users spread across large geographical regions, it is not unusual for the network to contain thousands of different multicast trees at any given time. In general, the larger a network becomes, the more challenging it is to for service providers to maintain and/or troubleshoot the network. When troubleshooting errors that may be present in multicast trees within a network, it may be useful for a service provider (e.g., a service technician) to search the multicast trees of one or more networks for certain attribute characteristics. The attributes may relate to, e.g., the structure of the multicast trees and/or the data being transmitted by the multicast trees. The types of searches that service technicians may want to perform in the network may include, for example, but are not limited to, (i) determining which one or more multicast groups are sourced from a particular source, (ii) determining which one or more multicast groups arrive on a particular interface of a router and/or on a particular router, (iii) determining which one or more multicast trees carry a particular service (e.g., a particular video stream or other data stream), and (iv) determining those one or more multicast groups in which the packet per second rate as measured by routers in the associated multicast trees differs by a predetermined configurable amount. It may also be desirable and helpful to generate and display a visual rendering of an electronic representation of one or more of the multicast trees in the network. Accordingly, various illustrative methods, systems, and software are disclosed for, e.g., receiving data from each of a plurality of components in a network, the components being arranged as a plurality of multicast trees, the data from each of the components indicating a structure of a portion of the network and at least one attribute associated with the respective component. Further the disclosure provides for determining, based on the data, a structure of at least some of the multicast trees, receiving search criteria, and determining which of the multicast trees meet the search criteria, based on the attributes associated with the components and the determined structure. Also, various illustrative methods, systems, and software are disclosed for determining, based on a plurality of data messages, a structure of a plurality of multicast trees in a network that comprises a plurality of components, each of the data messages indicating a structure of a different portion of the network and at least one attribute associated with at least one of the components of the network, and determining which of the multicast trees meet search criteria, based on the attributes and the determined structure. As another example, illustrative systems are disclosed, that comprise a computer configured to receive a plurality of data messages from a network, the network comprising a plurality of components arranged as a plurality of multicast trees, each of the data messages indicating a structure of a different portion of the network and at least one attribute associated with at least one of the components of the network; and a non-transitory computer-readable medium. The computer may be configured to determine, based on the plurality of data messages, a structure of at least some of the multicast trees, store, in the non-transitory computer-readable medium, a logical representation of the determined structure of the at least some of the multicast trees, and determine which of the multicast trees meet search criteria, based on the attributes and the stored logical representation. These and other aspects of the disclosure will be apparent upon consideration of the following detailed description. Illustrative embodiments may be best understood by referring to the following detailed description in conjunction with the accompanying drawings, in which: One or more of the illustrative embodiments as described herein may generally provide a system, software, and method for generating a logical representation of multicast trees in a data network. Such a data network may comprise sources, routers and receivers logically arranged as one or more multicast trees to transmit and provide content such as data, and/or such as audio and/or video (A/V) data. The data may be transmitted in the form of one or more data streams. The data may comprise, for instance, time-sensitive data such as any kind of streamed data, to various users. Each multicast tree may provide such data to a particular geographical region and may be characterized by various attributes. Using illustrative systems disclosed herein, a user may be able to search the attributes of each multicast tree. For example, a user may search the service network to determine which multicast trees in the network share one or more attributes. Such a capability may, among other things, assist the user in assessing or troubleshooting various issues that affect the transmission of the data within the network to the user (e.g., customer). For any given network, a service provider may provide various types of content to the plurality of multicast trees 12. Each multicast tree may be designated to transmit the content (e.g., A/V data) to, for example, receivers in a specific geographical region within a particular country. Each multicast tree 12 may include at least one transmission source 16 (e.g., multicast tree 12 The data (e.g., A/V data and/or other data) may also include control information to instruct elements in the multicast tree 12 (e.g., the routers 18), for example, how to control the flow of the data to a particular receiver 20 (e.g., a user device). In one example, the control information may correspond to data that is sent to a particular receiver 20 to enable various services. For example, the control information may identify a command to cause the particular receiver 20 to receive and visually present HBO programming in the event the user decides to view HBO programming, or to add HBO programming to his/her existing service plan. A plurality of routers 18 Multicast components (e.g., 16, 18 The coupling of each receiver 20 to the source 16 via a particular router 18 (and multiple links 19) is referred to herein as a path. In the simplified example of A plurality of attributes 14 The server 52 may implement (such as in software) a correlation engine 62 that communicates with the routers 18 The correlation engine 62 may assemble the local views determined from the information provided by the identification data from each router 18 The routers 18 Each router 18 may also be configured such that the identification data includes data regarding various attributes 14, such as data identifying the multicast stream packet rate as reported by each respective router. The packet rate may be represented in units of, e.g., packets per second (pps). Each router 18 may compute the packet rate over a sliding window, such as a window of a less than three seconds in length, or longer. The server 52 may query each router 12 for such information. In theory, for a constant bit rate (CBR) source 16, it would be expected that all routers 12 receiving data from that source 16 would report similar packet rates in the same multicast tree 12. If there is a significant difference in the packet rates reported by the routers 12, then such a condition may indicate one or more points in the network 10 where a problem may exist. For instance, if a router reports 1000 pps and another router downstream from that router in the same path of a multicast tree reports 0 pps, such a condition may be indicative of an issue between those two routers. This condition may be interpreted to mean that devices and subscribers downstream of the condition have lost access to the A/V content. More subtle differences in packet rate information across routers in a multicast tree could indicate other network problems that result in poor A/V quality. Correlation engine 62 may generate the logical representation by piecing together the local views from the various routers 18 into a larger logical end-to-end picture. The logical representation may be represented in any manner desired. For example, the logical representation may include at least the following information (which will be discussed further below): In the above example, the first value in each parentheses represents a source IP address and the second value in each parentheses represents a multicast destination group IP address. Together, this pair of IP addresses identities a multicast tree. For instance, one multicast tree listed above is identified as the pair 69.141.129.194, 232.137.16.16, and another multicast tree listed above is identified as the pair 69.141.180.130, 232.196.38.1. In this example, there may be multiple entries for each multicast tree, each entry representing a different path in the multicast tree. The illustrative logical representation as shown above also includes an ordered series of router interfaces (indicated in { } brackets, such as “{Gig1/14}”) and routers (such as “ur01.albuquerque.nm.albuq”). This ordered list indicates the direction and location of each path in the multicast trees. Of course, the logical representation may be represented in any manner desired, as long as the logical representation contains desired information about multicast tree structure. In addition to the above information, correlation engine 62 may cause the logical representation to further include or otherwise be associated with the various attributes 14 represented by the received identification data. Thus, one or more of the attributes 14 may be associated with any of the routers and/or paths in the logical representation of the multicast trees. The database 54 may store the logical representation of the multicast tress and/or the information identifying or otherwise representing the attributes 14 as collected by correlation engine 62. Alternatively or additionally, data identifying or otherwise representing the attributes 14 The server 52 may also implement search engine 64 to search the stored attributes based on various search criteria, and to return results of the search with and identification of which of the multicast trees 12 or portions thereof meet the search criteria. The user may access the search engine 64 to enter the search criteria via the client 58. For example, the user may access a URL via an internet connection (or through one or more other public and/or private networks) with the client 58 and enter data corresponding to the various search criteria that is provided to the search engine 64. Responsive to receiving the search criteria, the search engine 64 may search through the attributes 14 (which may be stored in database 54) to locate those multicast trees and/or portions thereof having the attributes 14 that meet the search criteria. The following are non-limiting examples of search criteria and/or queries that may be searched on:
As can be seen above from the large variation in the types of example searches that may be performed, the search capability provided by the system 50 may be used in connection with troubleshooting many different types of quality issues involving the delivery of A/V and/or other data to various users. For example, in the event an issue is reported with the delivery of A/V data on the NICKELODEAN channel in a particular city or other particular geographical region, a user may use the search engine 64 to determine which multicast groups carry some or all of the NICKELODEAN feeds into that city or other geographical region. The server 52 may transmit an indication all of the multicast trees 12 that carry the NICKELODEAN feed (e.g., either pre-splice or post-splice feed) into the specified city or other geographical region to the client 58 for visual presentation to the user. The server 52 may also present data to the client 58 corresponding to whether there is any packet loss that is being exhibited within the multicast trees of the multicast group while providing the NICKELODEAN feed. As can also be seen from the above example searches, the search capability provided by the system 50 may be able to, for instance, take identification data for one or more of the components and use that as part of the search criteria, such that the search criteria specifies a particular one or more of the attributes associated with a particular one or more of the components: e.g., determine all multicast trees that ingress through the a particular interface on a particular router, or, determine all multicast trees that are sourced onto a particular router and that have a receiver on another particular router. As another example, the system 50 may be able to take the identification data for various routers and search for quantitative differences, such that the search criteria specifies a particular quantitative difference between attributes associated with different ones of the components: e.g., determine all multicast trees where the packet rate across routers differs by at least a predetermined value (e.g., differs by 10 pps or more). This latter type of search may be useful, for instance to determine which router may be experiencing overflow, and in response to the search, the system 50 may compute the delta between the various router pps values and report a particular multicast tree if the multicast tree's delta values exceed the search criteria value. As also seen in some of the above examples, searches may involve criteria that specify a particular path structure, such as one or more particular components, interfaces, sources, tree hierarchy level (e.g., whether a particular router should be the first, ith, or last router in a path). For example: determine all multicast trees with a particular source IP, or determine all multicast trees that are received by a particular router on a particular interface. These types of searches may be possible because the structure of the multicast trees (including the paths) may be logically constructed from the identification data as described herein. Searches may additionally be performed with criteria that are not related to the attributes 14 provided by the routers. In such a search, the system 50 may compare at least a portion of the search criteria with one or more of the attributes 14 and/or compare at least another portion of the search criteria with information not represented by any of the attributes. For example, if a router is not aware of which particular content is being carried by that router (e.g., ESPN versus ABC), then such information may be stored and obtained separately from the identification data, and the search criteria may include a specified content: e.g., determine all multicast trees carrying a particular service (e.g., ESPN) and in which groups are received at a particular location. The above searches are examples and are not intended to limit the scope of the search capability provided by the system 50. In general, searches may be performed on any combination or subcombination of various search criteria, including but not limited to criteria specifying a particular source, multicast group, router, hop, link, router interface (ingress and/or egress), receiver, packet rate range, data rate, geographical region, service, network, error rate (e.g., lost packet rate), cumulative errors, and/or port number. The results of a search request may be presented as, for instance, one or more internet protocol (IP) addresses that are viewable in a web-based format when selected by the user. However, other search result formats may be used. The results may include an identification of at least a portion of the components (e.g., 16, 18, and/or 20) in any given multicast tree 12 While the example of An example block representation of a computer 600 is shown in Computer-readable media include not only a single non-transitory storage medium or single type of such medium, but also a combination of one or more such media and/or types of media. Examples of a computer-readable medium include, but are not limited to, one or more memories, hard drives, solid-state memory devices, optical discs (such as CDs or DVDs), magnetic discs, and magnetic tape drives. Such a computer-readable medium 602 may store computer-readable instructions (e.g., software) and/or computer-readable data (i.e., information that may or may not be executable). In the present example, computer-readable medium 602 (such as memory and/or hard drive) may be included in any one or more of the devices discussed herein, such as components 52, 58, 60, 62, 64, and/or 54, and may store computer-executable instructions and/or data used by any of those components. Alternatively or additionally, such a computer-readable medium storing the data and/or software may be physically separate from, yet accessible by, any of the devices discussed herein. For example, with regard to server 52, computer-readable medium 602 may include or otherwise represent the data storage medium of database 54, as well as any other memory, hard drives, etc., used by server 52. Computer 600 may also include a user input/output interface 603 for receiving input from a user (e.g., via a keyboard 605, mouse, and/or remote control) and providing output to the user (e.g., via a display 606, an audio speaker, and/or a printer). Computer 600 may further include a network input/output interface 604 for communicating with other computers or other types of devices, such as via a network or direct connection. Thus, any communication between components 52, 58, 60, 62, 64, and/or 54, and with users, may be attributed to communication via the network input/output interfaces 604 and/or user input/output interfaces 603 of those respective components. In step 703, in response to the queries, each of the queried devices (e.g., routers 18) returns its respective identification data that may include attributes for that device and/or local view information for that device as discussed previously. The query may specify which attributes are to be included in the identification data. The identification data may be in the form of, e.g., one or more data packets that are in turn logically arranged as messages comprising one or more of those data packets. The data packets may be dedicated to providing the identification data or the packets may also include additional data or other content. As also discussed previously, in alternative embodiments, steps 701 and 702 may be skipped altogether, and instead the identification data may be sent (e.g., periodically) by the devices (e.g., routers 18), even in the absence of a query. Next, in step 704, the attributes 14 for each device (e.g., router 18) may be extracted (by, e.g., server 52) from the identification data and stored as data in a computer-readable storage medium, such as in database 54. In step 705, server 52 (for example) may also build the logical representation (e.g., the previously-discussed logical representation 10) of the network or of a portion of network, and may store the logical representation in a computer-readable medium, such as in database 54. The process may also include steps 750-753, which may run independently of steps 701-705. In step 750, a display search screen may be presented (e.g., by client 58), such as the screen shown in Next, in step 752, a search of the stored attributes may be performed (e.g., by server 52) for the input search criteria, and it may be determined which portions of the network have attributes meeting the search criteria. Correlating this search result with the logical representation 60, for example, server 52 may be able to generate search results in step 753 including an indication of which multicast trees meet the search criteria, and these search results may be passed to client 58 for storage and/or presentation to the user. The search results may be provided, for example, on a screen such as that shown in Thus, a system, method, and software have been described for collecting attributes about a network as well as the network structure, performing a search on those attributes, and presenting search results correlated to various multicast trees in the network. Such attribute searching may potentially make network troubleshooting easier. While various illustrative embodiments have been illustrated and described, it is not intended that these embodiments illustrate and describe all possible forms of the invention. Rather, the words used in the specification are words of description rather than limitation, and it is understood that various changes may be made without departing from the spirit and scope of the invention. For example, while the multicast trees have been described by way of example as multicasting streamed A/V data, the multicast trees may be used to stream or otherwise provide other types of data in addition to or instead of A/V data, such as voice data, text messages, or data files in general. Methods and systems are disclosed for receiving data from each of a plurality of components in a network, the components being arranged as a plurality of multicast trees, the data from each of the components indicating a structure of a portion of the network and at least one attribute associated with the respective component. The disclosure further provides for determining, based on the data, a structure of at least some of the multicast trees, receiving search criteria, and determining which of the multicast trees meet the search criteria. 1. (canceled) 2. A method, comprising:
receiving data, by a computing device, from a plurality of components in a network comprising a plurality of multicast trees, the data indicating a plurality of different local views of the network and attributes associated with at least some of the plurality of components; receiving, by the computing device, at least one search criterion; selecting, by the computing device and based on the data indicating the plurality of different local views, at least one of the plurality of multicast trees that meet the at least one search criterion; and generating, by the computing device, a logical representation of the network based on the selected at least one of the plurality of multicast trees. 3. The method of 4. The method of 5. The method of 6. The method of 7. The method of 8. The method of 9. A method, comprising:
receiving, by a computing device, data from a plurality of components in a network, the data indicating a plurality of different local views of the network and attributes associated with at least some of the plurality of components; combining, by the computing device, at least some of the plurality of different local views to determine a plurality of multicast trees; receiving, by the computing device, at least one search criterion; determining, by the computing device and based on the data and a result of the combining, at least one of the multicast trees that meets the at least one search criterion; and presenting a logical representation of the at least one of the multicast trees. 10. The method of 11. The method of 12. The method of 13. The method of 14. The method of 15. The method of 16. A system, comprising:
a first computing device configured to:
receive data from a plurality of components in a network, the components being arranged as a plurality of multicast trees, the data from the plurality of components indicating a structure of at least a portion of the network and attributes that are associated with the components, and receive at least one search criterion; and a second computing device configured to:
determine, based on the data, which one or more of the plurality of multicast trees satisfy the at least one search criterion based on comparing at least a portion of the at least one search criterion with one or more of the attributes and comparing at least another portion of the at least one search criterion with information not represented by any of the attributes, and transmit a logical representation of the determined one or more of the plurality of multicast tress to the first computing device for storage. 17. The system of 18. The system of 19. The system of 20. The system of 21. The system of CROSS-REFERENCE TO RELATED APPLICATIONS
BACKGROUND
SUMMARY
BRIEF DESCRIPTION OF THE DRAWINGS
DETAILED DESCRIPTION
(69.141.129.194, 232.137.16.16) -> {Gig1/14} ur01.albuquerque.nm.albuq {Gig1/13} ->{ } 88.68.1.163 (69.141.129.194, 232.137.16.16) -> {Gig1/14} ur01.albuquerque.nm.albuq {Gig4/17} ->{ } 69.141.188.86 (69.141.129.194, 232.137.16.16) -> {Gig1/14} ur02.albuquerque.nm.albuq {Gig1/13} ->{ } 88.68.1.163 (69.141.129.194, 232.137.16.16) -> {Gig1/14} ur02.albuquerque.nm.albuq {Gig4/17} ->{ } 69.141.188.90 (69.141.129.130, 232.149.16.16) -> {Gig1/10} ur02.albuquerque.nm.albuq {Gig1/22} ->{ } 192.168.2.34 (69.141.181.238, 232.196.38.128) -> {Gig1/45} ur08.cmc.co.ndcwest {Ten4/4} - >{Ten3/1} ar02.cmc.co.ndcwest {Ten2/4} ->{Ten4/1} cr01.denverqwest.co.cbone {Ten7/3} ->{Ten9/4} ar01.albuquerque.nm.albuq {Ten8/4} ->{Ten9/1} ur01.albuquerque.nm.albuq {Gig2/27} ->{ } 69.141.188.6 (69.141.181.238, 232.196.38.128) -> {Gig1/45} ur08.cmc.co.ndcwest {Ten4/4} - >{Ten3/1} ar02.cmc.co.ndcwest {Ten2/4} ->{Ten4/1} cr01.denverqwest.co.cbone {Ten1/1} ->{Ten2/1} cr01.santateresa.tx.cbone {Ten7/1} ->{Ten9/4} ar02.albuquerque.nm.albuq {Ten8/4} ->{Ten9/1} ur02.albuquerque.nm.albuq {Gig2/3} ->{ } 69.141.188.14 (69.141.181.238, 232.196.38.128) -> {Gig1/45} ur07.cmc.co.ndcwest {Ten4/1} - >{Ten3/1} ar01.cmc.co.ndcwest {Ten5/3} ->{Ten6/3} ar01.potomac.co.ndcwest {Ten1/1} ->{Ten3/3} cr01.denver.co.cbone {Ten8/1} ->{Ten2/1} cr01.stratford.tx.cbone {Ten9/1} ->{Ten1/1} cr01.dallas.tx.cbone {Ten9/1} - >{Ten1/1} cr01.nashville.tn.cbone {Ten9/1} ->{Ten1/1} cr01.atlanta.ga.cbone {Ten4/1} ->{Ten0/8/0/6} crs01.b0atlanta.ga.atlanta {Bun20} ->{Port2} ur01.B0atlanta.ga.atlanta {Gig2/18} ->{ } 69.140.144.10 ... ... (69.141.180.130, 232.196.38.1) -> {Gig3/8} ur08.cmc.co.ndcwest {Ten4/4} - >{Ten3/1} ar02.cmc.co.ndcwest {Ten2/4} ->{Ten4/1} cr01.denverqwest.co.cbone {Ten7/3} ->{Ten9/4} ar01.albuquerque.nm.albuq {Ten8/4} ->{Ten9/1} ur01.albuquerque.nm.albuq {Gig2/25} ->{ } 69.141.188.2 (69.141.180.130, 232.196.38.1) -> {Gig3/8} ur08.cmc.co.ndcwest {Ten4/4} - >{Ten3/1} ar02.cmc.co.ndcwest {Ten2/4} ->{Ten4/1} cr01.denverqwest.co.cbone {Ten7/3} ->{Ten9/4} ar01.albuquerque.nm.albuq {Ten8/4} ->{Ten9/1} ur01.albuquerque.nm.albuq {Gig4/10} ->{ } 88. 68.1.164 (69.141.180.130, 232.196.38.1) -> {Gig3/8} ur08.cmc.co.ndcwest {Ten4/4} - >{Ten3/1} ar02.cmc.co.ndcwest {Ten2/4} ->{Ten4/1} cr01.denverqwest.co.cbone {Ten1/1} ->{Ten2/1} cr01.santateresa.tx.cbone {Ten7/1} ->{Ten9/4} ar02.albuquerque.nm.albuq {Ten8/4} ->{Ten9/1} ur02.albuquerque.nm.albuq {Gig2/1} ->{ } 69.141.188.10 (69.141.180.130, 232.196.38.1) -> {Gig3/8} ur07.cmc.co.ndcwest {Ten4/1} - >{Ten3/1} ar01.cmc.co.ndcwest {Ten5/3} ->{Ten6/3} ar01.potomac.co.ndcwest {Ten1/1} ->{Ten3/3} cr01.denver.co.cbone {Ten8/1} ->{Ten2/1} cr01.stratford.tx.cbone {Ten9/1} ->{Ten1/1} cr01.dallas.tx.cbone {Ten9/1} - >{Ten1/1} cr01.nashville.tn.cbone {Ten9/1} ->{Ten1/1} cr01.atlanta.ga.cbone {Ten4/1} ->{Ten0/8/0/6} crs01.b0atlanta.ga.atlanta {Bun20} ->{Port2} ur01.B0atlanta.ga.atlanta {Gig2/21} ->{ } 192. 79.170.14 (69.141.180.130, 232.196.38.1) -> {Gig3/8} ur07.cmc.co.ndcwest {Ten4/1} - >{Ten3/1} ar01.cmc.co.ndcwest {Ten5/3} ->{Ten6/3} ar01.potomac.co.ndcwest {Ten1/1} ->{Ten3/3} cr01.denver.co.cbone {Ten8/1} ->{Ten2/1} cr01.stratford.tx.cbone {Ten9/1} ->{Ten1/1} cr01.dallas.tx.cbone {Ten9/1} - >{Ten1/1} cr01.nashville.tn.cbone {Ten9/1} ->{Ten1/1} cr01.atlanta.ga.cbone {Ten4/1} ->{Ten0/8/0/6} crs01.b0atlanta.ga.atlanta {Bun20} ->{Port2} ur01.B0atlanta.ga.atlanta {Gig1/9} ->{ } 69.140.144.2 ... ...






