1. Field
Example embodiments relate generally to streaming data, including for example video data, through a communications network.
2. Related Art
Some networks are created with a complex interconnection of local area network (LAN) campuses and wide area network (WAN) connections of those campuses. Example include this also applies to internet service provider (ISP) networks which are created in clusters. Streaming video of live events, for example events which are viewed in concert, may require video data to be provided from a server associated with the live content to many users over a WAN connection.
According to at least one example embodiment, a method of streaming media on an IP network may include receiving, at a media server, a request for a first media item from a first remote client in a first remote subnet of the IP network; determining a total number of clients of the first remote subnet that are requesting the first media item from the media server; generating a comparison result based on the determined number and a threshold value; and if the generated comparison result indicates that the determined number is greater than the threshold value, sending a signal from the media server to initiate a first relay server in the first subnet, and sending a signal from the media server instructing the first remote client to obtain the first media item from the first relay server.
According to at least one example embodiment, a media server for facilitating the streaming of media on an IP network may include a processing unit configured to control operations associated with streaming media, the operations including, receiving, at the media server, a request for a first media item from a first remote client in a first remote subnet of the IP network; determining a total number of clients of the first remote subnet that are requesting the first media item from the media server; generating a comparison result based on the determined number and a threshold value; and if the generated comparison result indicates that the determined number is greater than the threshold value, sending a signal from the media server to initiate a first relay server in the first subnet, and sending a signal from the media server instructing the first remote client to obtain the first media item from the first relay server.
According to at least one example embodiment, the method may further include, if the generated comparison result indicates that the determined number is greater than the threshold value, determining if any other clients in the first subnet are receiving the first media item from the media server, and instructing the other clients in the first subnet determined to be receiving the first media item from the media server to obtain the media item from the first relay server.
According to at least one example embodiment, the method may further include, if the generated comparison result indicates that the determined number is greater than the threshold value, determining if an intervening relay server exists, the intervening relay server being a relay server that is closer to the first client than the media server is; if the intervening relay server is determined to exist, streaming the first media item from the media server to the intervening server, and sending a signal from the media server instructing the first relay server to obtain the first media item from the intervening relay server; and if no intervening relay server is determined to exist, streaming the first media item from the media server to the first relay server.
According to at least one example embodiment, the method may further include, if the generated comparison result indicates that the determined number is not greater than the threshold value, streaming the first item from the media server to the first client.
According to at least one example embodiment, the media server and the first remote client are in different subnets, and the media server communicates with the first subnet via a wide access network (WAN) link.
According to at least one example embodiment, the first media item includes video data.
At least one example embodiment will become more fully understood from the detailed description provided below and the accompanying drawings, wherein like elements are represented by like reference numerals, which are given by way of illustration only and thus are not limiting of example embodiments and wherein:
Various at least one example embodiment will now be described more fully with reference to the accompanying drawings in which some example embodiments are shown.
Detailed illustrative embodiments are disclosed herein. However, specific structural and functional details disclosed herein are merely representative for purposes of describing at least one example embodiment. Example embodiments may, however, be embodied in many alternate forms and should not be construed as limited to only the embodiments set forth herein.
Accordingly, while example embodiments are capable of various modifications and alternative forms, embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that there is no intent to limit example embodiments to the particular forms disclosed, but on the contrary, example embodiments are to cover all modifications, equivalents, and alternatives falling within the scope of example embodiments. Like numbers refer to like elements throughout the description of the figures. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items.
It will be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. Other words used to describe the relationship between elements should be interpreted in a like fashion (e.g., “between” versus “directly between”, “adjacent” versus “directly adjacent”, etc.).
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of example embodiments. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises”, “comprising,”, “includes” and/or “including”, when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
It should also be noted that in some alternative implementations, the functions/acts noted may occur out of the order noted in the figures. For example, two figures shown in succession may in fact be executed substantially concurrently or may sometimes be executed in the reverse order, depending upon the functionality/acts involved.
Exemplary embodiments are discussed herein as being implemented in a suitable computing environment. Although not required, exemplary embodiments will be described in the general context of computer-executable instructions, such as program modules or functional processes, being executed by one or more computer processors or CPUs. Generally, program modules or functional processes include routines, programs, objects, components, data structures, etc. that performs particular tasks or implement particular abstract data types.
The program modules and functional processes discussed herein may be implemented using existing hardware in existing communication networks. For example, program modules and functional processes discussed herein may be implemented using existing hardware at existing network elements or control nodes. Such existing hardware may include one or more digital signal processors (DSPs), application-specific-integrated-circuits (ASICs), field programmable gate arrays (FPGAs) computers or the like.
In the following description, illustrative embodiments will be described with reference to acts and symbolic representations of operations (e.g., in the form of flowcharts) that are performed by one or more processors, unless indicated otherwise. As such, it will be understood that such acts and operations, which are at times referred to as being computer-executed, include the manipulation by the processor of electrical signals representing data in a structured form. This manipulation transforms the data or maintains it at locations in the memory system of the computer, which reconfigures or otherwise alters the operation of the computer in a manner well understood by those skilled in the art.
Video sources 30 may be, for example, cameras located at different locations capturing a live event. Video server 22 receives the video data generated by video sources 30, and stores the received video data. Video server 22 may implement the real time streaming protocol (RTSP). For example, the Video server 22 may offer the stored video content to local clients on the LAN 12B as well as clients on the LAN 12A.
The LAN 12A includes a WAN link device 24 for communicating with non-local devices and networks over the WAN link 40. The LAN 12A includes client 60. In the example illustrated in
In the example illustrated in
In general, WAN link devices, including for example network bridges and routers, are expensive to operate. Further, the expense of deploying and operating a WAN link may increase with the maximum bandwidth the WAN link needs to handle. Further, the transmission of large amounts of video data over a WAN link can cause congestion which may result in other data being sent over the WAN link being delayed or lost. Accordingly, it would be desirable to develop a method of providing large amounts of video data, including for example live streaming video data, over a WAN link to multiple clients efficiently in a manner which reduces the amount of WAN link bandwidth which must be used to transfer the video data. A method for streaming video data over a WAN link efficiently will now be discussed in greater detail below.
As is discussed above, as a number of clients requesting a stream of video data over a WAN link increases, so does the bandwidth required on the WAN link to server the clients. Some proposed methods attempt to solve the problem of increased WAN link bandwidth requirements with the use of multicast networking. However, multicast networking is often used only with a single subnet. Further, there are many reasons for the limiting of multicast use. For example, multicast transmissions may be difficult to control, and the protocol for joining and releasing may be problematic from some clients. Further, multicast networking may require all the networking equipment and clients to run specific software in a consistent manner and to have been configured consistently.
According to example embodiments, a stream of video data may be provided from a digital video recorder (DVR) server to multiple clients over a WAN link efficiently with the use of a relay server. Accordingly, the video data may be streamed to multiple clients over a WAN link without using IP multicast techniques like, for example, Internet Group Management Protocol (IGMP).
According to at least one example embodiment, the excessive bandwidth problem associated with transmission of video streams, for example for large live events, to multiple clients over a WAN link is addressed at the IP layer. By focusing on the IP layer, there is less need to focus on the requirements of the underlying layers. For example, according to at least one example embodiment, the method for streaming video data to multiple clients over a WAN link efficiently may be implemented using the RTSP protocol. According to at least one example embodiment, the Real-time Transport Protocol (RTP) layer is used for transmission of the video data. By creating a stream from the camera device, the stream can be captured and stored in a memory device, for example memory included in a DVR server. The stream can then be played from the memory device even as it is being stored, for example, with about one frame of delay approximately equal 1/30 second. In addition to the DVR server, a relay server is deployed. The relay server may be associated with a LAN which receives video data from the DVR server over a WAN link. The DVR server may be capable of handling RTSP requests from clients. The relay server may receive a single stream from the DVR server and send copies of the stream to multiple clients, or even other relay servers, using, for example, a in memory function, without the need for long term storage such as disk or flash memory. For example, data packets may be received into ram memory of the relay server and immediately transmitted out to clients without the need to store the data packets for later retrieval. By using the DVR server in conjunction with one or more relay servers, the number of streams which traverse any part of the communications network can be controlled. An example structure of a network implementing the method of streaming video data to multiple clients over a WAN link efficiently will now be discussed in greater detail below with reference to
The second LAN 110B includes the first relay server 220 and a second WAN link device 224. The second WAN link device 224 is a network device, including for example a network bridge or router, which provides the second LAN 110B with a connection to the WAN link 240. All data sent to or from the second LAN 110B via the WAN link 240 may be received by or sent from the second WAN link device 224. In the example illustrated in
In general, it is much less costly to implement and operate a LAN which can handle large amounts of data quickly than it is to do the same with a WAN. Thus, using the method of streaming video data to multiple clients over a WAN link efficiently, an operator of the wireless communication network 100 may provide video data to multiple users across a WAN link efficiently while reducing the need to incorporate costly WAN devices to increase the maximum bandwidth of the WAN link, and reducing the chances of slowing down other WAN traffic by creating excessive video streaming traffic on the WAN link.
Further, though only one first relay server 220 is illustrated in
Apparatuses and methods for providing video data to multiple users across a WAN link will now be discussed in greater detail with reference to
The transmitting unit 352, receiving unit 354, memory unit 356, and processing unit 358 may send data to and/or receive data from one another using the data bus 359.
The transmitting unit 352 is a device that includes hardware and any necessary software for transmitting signals including, for example, control signals or data signals via one or more wired and/or wireless connections to other network elements in communications network 100.
The receiving unit 354 is a device that includes hardware and any necessary software for receiving wireless signals including, for example, control signals or data signals via one or more wired and/or wireless connections to other network elements in the communications network 100.
The memory unit 356 may be any device capable of storing data including magnetic storage, flash storage, etc.
The processing unit 358 may be any device capable of processing data including, for example, a microprocessor configured to carry out specific operations based on input data, or capable of executing instructions included in computer readable code including, for example code stored in the memory unit 356.
According to at least one example embodiment, operations described herein as being performed by either a relay server or a DVR server may be performed by the network element 351 having the structure illustrated in
An example method of operating the DVR server 210, first relay server 220 and network element 351 will now be discussed in greater detail below with reference to
Referring to
In step S320, the DVR server 210 determines if a total number of clients in the sub-network (subnet) of the first client that are receiving the media item requested by the first client exceeds a threshold value. For example, the DVR server 210 is aware of the subnets to which it is streaming video data. Upon receiving the media request from the client 250A, The DVR server 210 determines how many other clients on the client 250A's subnet, the second LAN 110B, are receiving or requesting the media item requested by the client 250A. If the determined number of clients including the client 250A does not exceed a threshold value, for example 2 users, the DVR server 210 proceeds to step S330.
In step S330, the DVR server 210 provides the requested media item to the first client. For example, in accordance with known methods, the DVR server 210 may provide requested media item to the first WAN link device 225 in the form of a video stream. The WAN link device 225 then sends the video stream to the client 250A via the WAN link 240 and the second WAN link device 224.
Returning to step S320, if the determined number of clients including the client 250A does exceed a threshold value, for example 2 users, the DVR server 210 proceeds to step S340.
In step S340, the DVR server 210 determines whether or not there are any relay servers which are currently receiving the media item requested by the first client and are closer to the subnet of the first client than the DVR server 210. For example, the DVR server 210 may be configured to determine the network topology of the communications network 100. Accordingly, the DVR server 210 can determine network distances between the DVR server 210 and the different subnets within the communications network 100 to which the DVR server 210 sends video data. Further, the DVR server 210 is capable of determining network distances between the subnets themselves. The term network distance as used herein may refer to, for example, data latency. Links which exhibit greater data latency may be considered to be longer in terms of network distance than links with lower data latencies. Though the physical distance between two points in a network may affect data latency for data sent over a link between the two points, physical distance is not the only factor which determines data latency. Accordingly, it is possible to have first link which is physically shorter than a second link, yet still longer in terms of network distance due to issues including an amount of traffic, noise or available bandwidth on each link, each of which may negatively affect data latency on the first link by increasing the data latency. Unless otherwise stated, as described herein, comparisons of distances between network elements and/or network entities (e.g. subnets, servers, etc.), including, for example, ‘closer’ or ‘farther’, refer to network distances.
If the DVR server 210 determines that there is a relay server in the communications network 100 which is receiving the media item requested by the client 250A, and is closer to the subnet of the client 250A, in terms of network distance, than the DVR server 210, the DVR server proceeds to step S350.
In step S350, the DVR server 210 initiates a relay server in the subnet of the first client and instructs the initiated relay server to obtain the requested media item from a closer relay server. For example, in step S340, the DVR server 210 may determine that there are one or more relay servers which are closer to the subnet of client 250A in terms of network distance, the second LAN 120B, than the DVR server 210 in terms of network distance. Accordingly, the DVR server 210 may initiate a relay server on the LAN second 120B, and may instruct the newly initiated relay server to obtain the requested media item from a relay server that is closer, in terms of network distance, to the second LAN 120B than the DVR server 110, and to offer the requested media item. After step S350, the DVR server 220 may proceed to step S370 which will be discussed in greater detail below.
If multiple relay servers are identified in step S340, then in step S350, the DVR server 210 may instruct the newly initiated relay server to obtain the requested media item from the relay server which is closest in in terms of network distance to the first client 250A. Initiation of relay servers will now be discussed in greater detail below.
According to at least one example embodiment, relay servers in the communications network 100 may be deployed dynamically. Accordingly, the relay servers may be configured such that they operate only after being instructed to operate by the DVR server 220. For example, while no relay server is operating on a particular subnet, the DVR server 210 may handle requests for video data from clients on that subnet by providing the video data to the client requesting the video data directly, without the use of a relay server. Further, the DVR server 210 may initiate a relay server on that subnet when the DVR server 210 determines that the number of clients on that subnet who are requesting that same video data exceeds a threshold value. This way, relay servers may be initiated dynamically, and thus, the relay servers only need to operate when their operation would be advantageous in reducing the bandwidth requirements for transmitting the video data over the WAN link or links connecting the DVR server 220 to the subnet. The DVR server 210 may initiate a relay server using control signals instructing the relay server to offer a particular media item.
Though the DVR server 220 is described above with reference to step S320 as determining when to initiate a relay server based on a total number of clients in a subnet and a threshold value, according to at least one example embodiment, the DVR server 220 may also determine when to initiate a relay server dynamically based on previous knowledge of the configuration of communication network 100. According to at least one example embodiment, the DVR server 220 may read current configuration and bandwidth usage information from routers and managed switches. Additionally, or alternatively, the DVR server 220 may probe the communications network 100 via methods including measuring the time to send data from the DVR server to a point near the clients. Accordingly, the DVR server 220 may choose whether or not to initiate a relay server by, for example, comparing any one or more of the read configuration information, bandwidth usage information, and probing results with threshold values.
Alternatively, according to at least one example embodiment, relay servers may be provided statically. Static relay servers may be configured to operate whenever video data is being received from the DVR 210 at the subnet of the relay server, and may provide copies of the received video data to clients on the same subnet, or other relay servers, regardless of the number of clients on the subnet that are requesting the same media item from the DVR server 220. For example, when relay servers are provided dynamically, instead of performing steps S320 and S330, the method illustrated in
Returning to step S340, if the DVR server 210 determines that there are no relay servers in the communications network 100 which are receiving the media item requested by the client 250A, and are closer to the subnet of the client 250A, in terms of network distance, than the DVR server 210, the DVR server proceeds to step S360.
In step S360, the DVR server 210 initiates a relay server on the subnet of the first client. For example, in the same manner discussed above with reference to step S350, the DVR 210 may initiate a relay server on the subnet of the client 250A, the second LAN 120B. For example, the DVR sever 210 may send control signals to the first relay server 220 instructing the first relay server 220 to receive the requested media item and offer the requested media item. After step S360, the DVR 210 may proceed to step S370.
In step S370, the DVR 210 may instruct the first client to obtain the requested media item from the newly initiated relay server, and may redirect any other clients that are on the subnet of the first client and are currently receiving the requested media item from the DVR 210 to receive the requested media item from the newly initiated relay server. For example, in a case where the first relay server 220 is newly initiated on the second LAN 120B in response to a request, from the client 250A, for a media item, the DVR server 210 instructs the client 250A to obtain the requested media item from the first relay server 220. Additionally, if any of the other clients on the second LAN 120B are currently receiving the same media item requested by the client 250A from the DVR server 210, the DVR server may instruct those other clients to cease obtaining the media item from the DVR server 210, and start obtaining the requested media item from the first relay server 220. The DVR server 220 may send the client 250A, for example, a RTSP REDIRECT message including a URL of the first relay server 220 to instruct the client 250A to obtain the media item from the first relay server 220. The DVR server 220 may send the same RTSP REDIRECT message to the other clients on the second LAN 120B currently receiving the same media item requested by the client 250A from the DVR server 210.
In the example illustrated in
In the example illustrated in
As is shown in
Additionally, in the example illustrated in
Example embodiments being thus described, it will be obvious that embodiments may be varied in many ways. Such variations are not to be regarded as a departure from example embodiments, and all such modifications are intended to be included within the scope of example embodiments.