Abstract:
A network component comprising a processor configured to implement a method comprising receiving a request for a content from a first node, determining whether a second node is associated with the content, and facilitating the transfer of the content from the second node to the first node when the second node is associated with the content, wherein the second node is an interior node. Also disclosed is a method comprising receiving a request for a content from a first node in a network, determining whether the content is being distributed to a second node in the network, calculating a path between the second node and the first node when the content is being distributed to the second node, and establishing a connection along the path such that the content is distributed from the second node to the first node.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims priority to U.S. Provisional Application Ser. No. 60/795,509, filed Apr. 27, 2006 by Linda Dunbar et al., and entitled “Intelligent Integration of Transport Layer and Application Layer Multicast,” which is incorporated herein by reference in its entirety. 
     
     STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
       [0002]    Not applicable. 
       REFERENCE TO A MICROFICHE APPENDIX 
       [0003]    Not applicable. 
       BACKGROUND 
       [0004]    In modern transport networks, there are applications where multiple flows of data, such as multiple IPTV channels, being transmitted from one source location to the multiple remote or customer locations through a plurality of nodes. These nodes may include routers, switches, and/or other types of nodes. In some embodiments, the source may broadcast all of the data flows such that every remote location receives the same amount of data flows. In such cases, the nodes transport the data from the source to the various remote locations, a process referred to as broadcasting. Alternatively, the remote locations may request specific data flows, in which case a separate connection can be established from the source to each remote location for transmitting the requested data flows. The requested data flows are then transported from the source to the remote locations via a dedicated connection. 
         [0005]    Unfortunately, there are disadvantages to broadcasting or using dedicated connections to transport multiple data streams in a network. Broadcasting all data streams from the source to the remote locations can be bandwidth consuming, especially when only a specific set of channels is needed by each location. Broadcasting could transmit unneeded data streams to some remote locations. Using dedicated connections to transport data through the network limits the superfluous data streams sent to the remote locations, but the connections increase the bandwidth consumption in the network and reduce overall network performance. Thus, there is a need for an improved mechanism. 
       SUMMARY 
       [0006]    In a first embodiment, the disclosure includes a network component comprising a processor configured to implement a method comprising receiving a request for a content from a first node, determining whether a second node is associated with the content, and facilitating the transfer of the content from the second node to the first node when the second node is associated with the content, wherein the second node is an interior node. 
         [0007]    In a second embodiment, the disclosure includes a method comprising receiving a request for a content from a first node in a network, determining whether the content is being distributed to a second node in the network, calculating a path between the second node and the first node when the content is being distributed to the second node, and establishing a connection along the path such that the content is distributed from the second node to the first node. 
         [0008]    In a third embodiment, the disclosure includes a network comprising a first edge node in communication with a source, a plurality of second edge nodes in communication with a plurality of customers, a plurality of interconnected interior nodes in communication with the first edge node and at least some of the second edge nodes, and a plurality of branching connections established through the network via at least some of the first edge node, the second edge nodes, and the interior nodes, wherein the connections branch at the interior nodes. 
         [0009]    These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts. 
           [0011]      FIG. 1  is an illustration of one embodiment of a content aware transport network. 
           [0012]      FIG. 2  is a flowchart of one embodiment of a content aware transport process. 
           [0013]      FIG. 3  is an illustration of one embodiment of the tracking table. 
           [0014]      FIG. 4  is an illustration of another embodiment of the content aware transport network. 
           [0015]      FIG. 5  is an illustration of another embodiment of the content aware transport network. 
           [0016]      FIG. 6  is an illustration of another embodiment of the content aware transport network. 
           [0017]      FIG. 7  is an illustration of another embodiment of the content aware transport network. 
           [0018]      FIG. 8  illustrates an exemplary general-purpose computer system suitable for implementing the several embodiments of the disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0019]    It should be understood at the outset that although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents. 
         [0020]    Disclosed herein is a network configuration that multicasts data through the network based on the content requested by the customer rather than the bandwidth requested by the customer. Specifically, when a customer requests a content from a data source, the network determines whether the requested content is already being transported through the network. If the requested content is being transported through the network, the network establishes a connection from an interior node that is carrying the requested content to the customer. If only part of the requested content is being transported through the network, then the network establishes a connection for that content, and establishes a second connection between the data source and the customer for the remaining content. The network may include a path computation element (PCE) that determines which interior nodes to use to establish the connections. Since the customer requests content and not bandwidth from the network, the network may manage connections more efficiently and reduce overall bandwidth consumption within the network. 
         [0021]      FIG. 1  illustrates one embodiment of system  100  that transports content from the source to the customers. The system  100  comprises a source  102 , a plurality of customers  104 A,  104 B,  104 C,  104 D (collectively,  104 ), a network  108 , a plurality of edge nodes  106 A,  106 B,  106 C,  106 D,  106 E (collectively,  106 ), and a plurality of interior nodes  120 A,  120 B,  120 C,  120 D,  120 E,  120 F (collectively,  120 ). It should be recognized that while  FIG. 1  illustrates the system  100  with six interior nodes  120 , five edge nodes  106 , and four customers  104 , the system  100  could accommodate any number of interior nodes  120 , edge nodes  106 , and customers  104 . As will be explained in detail below, when one of the customers  104  requests content from one of the edge nodes  106 , a connection is established between the interior nodes  120  and the edge nodes  106 . The bandwidth allocated to the connection is dependent on the content requested by the customer  104 . The content is then transported to the customer  104  through the connection. 
         [0022]    In an embodiment, the source  102  is any device, component, or source that may produce, distribute, or pass content onto the network  108 . For example, the source  102  may be a video distribution center. The source  102  may also be a distribution node in a voice/video over IP (VoiP) or interactive gaming applications. In another embodiment, the source  102  may be an external node or connection to one of the networks described below. 
         [0023]    In an embodiment, the customers  104  are any devices, components, destinations, or networks that may receive content from the network  108  or the source  102 . For example, the customers  104  may be fixed or mobile user-oriented devices, such as desktop computers, notebook computers, set-top boxes, TVs, personal digital assistants (PDAs), or cellular phones. Alternatively, the customers may be edge nodes that pass data from the network  108  and onto another external network such as an access network. 
         [0024]    In an embodiment, the network  108  is any communication system that may be used to transport data between the source  102  and the customers  104 . Specifically, the network  108  may be any network within which capacity, a connection, and/or a pre-determined path may be reserved. In an embodiment, the network  108  may be a video distribution network that transports content channels from the source  102  to the customers  104 . In another embodiment, the network  108  may be an Ethernet transport network that transports content to the customers  104 . The network  108  may also be a backbone network, an access network, an optical network, a wire-line transport network, an Institute of Electrical and Electronic Engineers (IEEE)  802  network, or a wireless network, such as a cellular network. 
         [0025]    The edge nodes  106  may be any devices that transport content between the interior nodes  120  and the customers  104  or source  102 . Specifically, the edge nodes  106  may establish connections with other edge nodes  106  or with various interior nodes  120 . The edge nodes  106  may include bridges, switches, routers, or various combinations of such devices. For example, the edge nodes  106  may include Back Bone Edge Bridges (BEBs), Provider Edge Bridges (PEBs), user network interfaces (UNIs), or various combinations of such devices. 
         [0026]    The interior nodes  120  may be any devices that transport content through the system  100 . For example, the interior nodes  120  may include switches, routers, bridges including Back Bone Core Bridges (BCBs) and Provider Core Bridges (PCBs), or various combinations of such devices. The interior nodes  120  may connect with each other via a plurality of links, such as electrical, optical, or wireless links. The interior nodes  120  may also connect to at least some of the edge nodes  104 . In addition, the interior nodes  120  may not connect to the source  102  or customers  104 . 
         [0027]    The system  100  may also include at least one connection. The connection may be a point-to-point logical path between a plurality of interior nodes, or at least one interior node and one edge node. A content traveling through the connection may be passed from node to node with minimal processing at each node. Generally, at least one end of the connection terminates at an edge node, and the other end of the connection terminates at an interior node. Alternatively, both ends of the connection may terminate at edge nodes or interior nodes. In specific embodiments, the connection may be an Ethernet connection as defined by IEEE 802, a provider backbone transport, or a pseudo-wire as defined by IETF. The connection may have a fixed bandwidth where a fixed amount of content is transported on the connection. The connection may also have a variable-sized bandwidth, for example, when transporting variable-sized content such as streaming Moving Pictures Experts Group (MPEG) video. 
         [0028]    Content may be defined as data that is transported from a source to a destination through the system  100 . Specifically, the content may be data that is transported from the source  102  to one of the customers  104 , or from an interior node  120  to one of the customers  104 . Examples of the content include streamed data, such as video distribution, video or voice over Ethernet, and voice or video over IP. Alternatively, the content may be data frames, such as Ethernet frames, IP packets, ATM cells, and any similar data structure. The content may contain an identifier that specifically describes the content. For example, if the content is video data, the identifier can identify the specific channels in the content. In embodiments, the identifier may be a type protocol identifier (TPID) and/or a virtual local area network identifier (VLAN ID) as defined in IEEE 802.1Q. 
         [0029]    The system  100  may also include the management plane. The management plane may be a node or computer system that monitors the status of the content that is being transported through the network. The management plane may also create, modify, and remove the connections within the network. To aid in the creation of connections, the management plane may contain a path computation element (PCE) that calculates the node-to-node path for new connections in the network. When calculating the path, the PCE may consider the cost of the connection, the distance between the requesting customer and the content, the bandwidth available at various points in the network, the bandwidth required by the new connection, the priority of the new connection, the class of service of the content, any combination of such criteria, or any other criteria. In one embodiment, the management plane may maintain a tracking table that is accessible by the interior nodes  120  and the edge nodes  104 , an example of which is shown in  FIG. 3 . As discussed below, the tracking table may identify existing connections, and their associated content, interior nodes, edge nodes, and customers. The tracking table may also include other information about the connections, such as bandwidth, cost, priority, and distance. The connections established and managed by the management plane, as well as their related entries stored in the tracking table, may be actively created, edited, or deleted in a dynamic manner according to the content demand in the system  100 . The management plane may be a system implemented as software and stored on one of the storage devices illustrated in  FIG. 8  and described below. 
         [0030]      FIG. 2  is a flowchart of one embodiment of a content aware transport process (CATP)  150 . The CATP  150  is a process by which the customers&#39; content requests may be processed. Specifically, the CATP  150  may establish a new connection between existing connections and the customer, thereby supplying the customer with the requested content. The CATP  150  may be implemented by a management plane or within any components of the system  100  described herein. 
         [0031]    At block  152 , the CATP  150  receives the content request. The content request may be initiated by the customer, the edge node associated with the customer, one of the interior nodes, or any other component described herein. In one embodiment, the content request may be a request for a desired content, such as channels  50 - 150  of a multi-channel video signal. Alternatively, the content request may specify how to route the content, e.g. channels  50 - 150  via interior nodes  120 C. The CATP  150  then proceeds to block  154 . 
         [0032]    At block  154 , the CATP  150  determines whether the content is being distributed through the network. In one embodiment, a tracking table may be accessed to search for the requested content. In another embodiment, the network component that receives the content request, such as the interior nodes, may be aware of at least some of the content existing in the network. For example, each interior node may be aware of the content passing through itself and its adjacent nodes. If the content is not being transported through the network, the CATP  150  proceeds to block  156 . If the content is being transported through the network, the CATP  150  proceeds to block  158 . 
         [0033]    At blocks  156  and  158 , the CATP  150  calculates the path between the content and the source. If the CATP  150  determines that the requested content is not being distributed through the network, the CATP  150  calculates a path between the source and the customer per block  156 . Alternatively, if the CATP  150  determines that the content is being distributed through the network, the CATP  150  calculates a path between intermediate nodes through which the requested content is transported and customer per block  158 . In some embodiments, the path may be the optimal path between the interior node containing the content and the customer&#39;s edge node. In either case, the path may be calculated by the management plane, for example using the PCE, using the aforementioned criteria. Alternatively, one of the interior nodes, the edge nodes, the customer, or the source may calculate the path. The CATP  150  then proceeds to block  160 . 
         [0034]    At block  160 , the CATP  150  establishes the connection between the content and the customer. As part of the establishment process, the CATP  150  reserves the necessary network resources, such as bandwidth, along the calculated path. The CATP  150  also begins transporting the requested content on the connection and may wait for another request. The new connection may also be added to the tracking table described below. After establishing the connection, the CATP  150  stops. 
         [0035]    In an alternative embodiment, the content may be multicast through the system without using the management plane. Specifically, the edge nodes and interior nodes may request content from each other and establish new connections with one another. In such an embodiment, the node that receives the content request may signal adjacent nodes to search for the content in the network. In this embodiment, the nodes may be content aware, e.g. by storing content tracking information internally or by accessing the tracking table discussed above. When the content is being distributed to at least one of the adjacent nodes, that node sends a confirmation back to the first node. The two nodes may then determine a path for the connection, for example, using the aforementioned criteria. A connection may then be established between the two nodes along the calculated path. Generally, a new connection between the two nodes may be established by branching all or part of the content off an existing connection, as described below. When the content is not being distributed to the adjacent nodes, the request may be carried through the network, for example using a spanning tree protocol, until the content is found or the request reaches the source. 
         [0036]      FIG. 3  illustrates an embodiment of the tracking table  200 . The tracking table  200  may be a record that identifies each existing connection in the network as well as its associated content and nodes. For each connection, the table entries may contain a connection identifier  202  that is uniquely assigned to the individual connections, a content identifier  204  that specifies the content associated with the connection, and a node list  206  that represents the connection path in the network. The tracking table  200  may also contain any other information that may be useful in managing the transport network and/or calculating the path. For example, an initial entry may be made for a connection that transports the total content from the source to edge node  106 A, and subsequent entries may be made as needed. The tracking table  200  may be a dynamic entity that can be modified by creating, editing, or deleting its entries according to the dynamic content demand of the customers. 
         [0037]      FIGS. 4-7  illustrate an exemplary process for multicasting the content through the network  108 . In these examples, the source  102  may provide a plurality of channels as part of a video data stream, and the individual customers  104  may request some of these channels. The tracking table associated with these examples is illustrated in  FIG. 3 . The initial entry is made for connection  0  that transports the total content, e.g. channels  1 - 1000 , from the source  102  to edge node  106 A. Subsequent entries are made as shown in  FIG. 3  and described below. 
         [0038]      FIG. 4  illustrates one embodiment of connection  110  that transports data from the source  102  to customer  104 A. Connection  110  has a corresponding entry in the tracking table in  FIG. 3 . The process of establishing connection  110  may begin when customer  104 A requests content, such as channels  1 - 100 , from its edge node  106 B. Upon receiving the content request, edge node  106 B or the management plane may search for the content, for example, by accessing the tracking table described herein. When the requested content is not found in the network  108 , edge node  106 B or the management plane may calculate the path between the source&#39;s edge node  106 A and the customer&#39;s edge node  106 B. The connection  110  may then be established along this path, e.g. from edge node  106 A to interior node  120 A to interior node  120 B to edge node  106 B. Once the connection  110  is established between edge node  106 A and edge node  106 B, the content, e.g. channels  1 - 100 , may be transported through connection  110  and to the customer  104 A. In addition, a new entry may be added to the tracking table with the content, e.g. channels  1 - 100 , and the path information for connection  110 . 
         [0039]      FIG. 5  illustrates an embodiment of connection  112 , also noted in the tracking table in  FIG. 3 , which transports data from interior node  120 B to customer  104 B. The process of establishing connection  112  may begin when customer  104 B requests content, such as channels  30 - 50 , from its edge node  106 C. Upon receiving the content request, edge node  106 C or the management plane may search for the content, for example, by accessing the tracking table described herein. When the requested content is found in the network  108 , edge node  106 C or the management plane may calculate the path between connection  110  that contains the requested content and the customer&#39;s edge node  106 C. The connection  112  may then be established along this path, e.g. from interior node  120 B to interior node  120 C to edge node  106 C. Once the connection  112  is established between interior node  120 B and edge node  106 C, the content, e.g. channels  30 - 50  may be transported through connection  112  and to the customer  104 B. In addition, a new entry may be added to the tracking table with the content, e.g. channels  30 - 50 , and the path information for connection  112 . 
         [0040]      FIG. 6  illustrates an embodiment of connections  114  and  116  that transport data from interior nodes  120 A and  120 B to customer  104 C. The process of establishing connection  114  may begin when customer  104 C requests content, such as channels  20 - 100 , from its edge node  106 D. Upon receiving the content request, edge node  106 D or the management plane may search for the content, for example, by accessing the tracking table described herein. When part of the requested content, e.g. channels  20 - 100 , is found in the network  108 , edge node  106 D or the management plane may calculate the path between connection  110  that contains part of the requested content, e.g. channels  20 - 100 , and the customer&#39;s edge node  106 D. The connection  114  may then be established along this path, e.g. from interior node  120 B to interior node  120 D to edge node  106 D. However, another connection may need to be established for the remaining content that was not found in the network  108 , e.g. channels  101 - 200 . Specifically, edge node  106 D or the management plane may calculate the path between the source&#39;s edge node  106 A and the customer&#39;s edge node  106 D. The connection  116  may then be established along this path, e.g. from edge node  106 A to interior node  120 A to interior node  120 E to edge node  106 D. Once the connections  114  and  116  are established, the content, e.g. channels  20 - 200 , may be transported through connections  114  and  116  to the customer  104 C. In addition, two new entries may be added to the tracking table, as noted in  FIG. 3 , with the content and path information for connections  114  and  116 . 
         [0041]      FIG. 7  illustrates one embodiment of connection  118  that transports data from the source  102  to customer  104 D. The process of establishing the connection  118  may begin when customer  104 D requests content, such as channels  400 - 500 , from its edge node  106 E. Upon receiving the content request, edge node  106 E or the management plane may search for the content, for example, by accessing the tracking table described herein. When the requested content is not found in the network  108 , edge node  106 E or the management plane may calculate the path between the source&#39;s edge node  106 A and the customer&#39;s edge node  106 E. The connection  118  may then be established along this path, e.g. from edge node  106 A to interior node  120 F to edge node  106 E. Once the connection is established between edge node  106 A and edge node  106 E, the content, e.g. channels  400 - 500 , may be transported through connection  118  to the customer  104 D. In addition, a new entry may be added to the tracking table with the content and path information for connection  118 . 
         [0042]    The network components described above may be implemented on any general-purpose network component, such as a computer, network, or node, with sufficient processing power, memory resources, and network throughput capability to handle the necessary workload placed upon it.  FIG. 8  illustrates a typical, general-purpose network component suitable for implementing one or more embodiments of a node disclosed herein. The network component  300  includes a processor  302  (which may be referred to as a central processor unit or CPU) that is in communication with memory devices including secondary storage  304 , read only memory (ROM)  306 , random access memory (RAM)  308 , input/output (I/O)  310  devices, and network connectivity devices  312 . The processor may be implemented as one or more CPU chips. 
         [0043]    The secondary storage  304  is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if RAM  308  is not large enough to hold all working data. Secondary storage  304  may be used to store programs that are loaded into RAM  308  when such programs are selected for execution. The ROM  306  is used to store instructions and perhaps data that are read during program execution. ROM  306  is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of secondary storage. The RAM  308  is used to store volatile data and perhaps to store instructions. Access to both ROM  306  and RAM  308  is typically faster than to secondary storage  304 . 
         [0044]    While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented. 
         [0045]    In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.