US 20060088063 A1
A method for content delivery comprising transmitting content via a first network to a content aggregation point and transmitting the content from the content aggregation point via a second network to a receiver at the request of the receiver. A system for content delivery comprising a content provider, a content aggregation point operatively coupled to the content provider via a first network wherein the content aggregation point receives content from the content provider, and a receiver operatively coupled to the content aggregation point via a second network wherein the receiver is configured to request content from the content aggregation point. Also disclosed are methods for improving the network functionality through in-band measurement of network statistics, multi-constraint based QoS routing, and back up path determination.
1. A method for content delivery comprising:
transmitting real-time audio/visual content via a first network to a content aggregation point; and
transmitting the real-time audio/visual content from the content aggregation point via a second network to a receiver at the request of the receiver.
2. The method of
3. The method of
4. The method of
5. The method of
6. A system for content delivery comprising:
a real-time audio/visual content provider;
a content aggregation point operatively coupled to the content provider via a first network wherein the content aggregation point receives real-time audio/visual content from the content provider; and
a receiver operatively coupled to the content aggregation point via a second network wherein the receiver is configured to request real-time audio/visual content from the content aggregation point.
7. The system of
8. The system of
9. The system of
10. The system of
11. A method for in-band measurement of network statistics comprising:
adding a first timestamp from a first local clock in a first node to a first packet and a second packet wherein the first timestamp represents an intended packet transmission time;
adding a second timestamp from the first local clock in the first node to the first packet and the second packet wherein the second timestamp represents an actual packet transmission time;
transmitting the packets from the first node to a second node;
determining a third timestamp wherein the third timestamp represents a packet arrival time from a second local clock at the second node; and
estimating network statistics based on the first, second, and third timestamps.
12. The method of
adjusting the third timestamp for variable delay.
13. The method of
adding a variation in transmit time to the third timestamp; and
adding an estimate of delay jitter.
14. The method of
adjusting the third timestamp for the difference between the first timestamp and the second timestamp.
15. The method of
synchronizing the first clock in the first node and the second clock in the second node based on the adjusted third timestamp.
16. The method of
17. The method of
18. The method of
19. A system for in-band measurement of network statistics comprising:
a first node wherein the first node is configured to add a first timestamp from a first local clock in the first node to a first packet and a second packet wherein the first timestamp represents an intended packet transmission time and the first node is configured to add a second timestamp from the first local clock in the first node to the first packet and the second packet wherein the second timestamp represents an actual packet transmission time;
a second node, operatively coupled to the first node, wherein the second node is configured to receive the first and second packets and the second node is configured to determine a third timestamp wherein the third timestamp represents a packet arrival time from a second local clock at the second node; and
a means for estimating network statistics based on the first, second, and third timestamps.
20. The system of
21. The system of
22. The system of
23. A method for multi-constraints based QoS routing for content distribution over a network comprising:
filtering a network topology with a first set of QoS constraints resulting in a filtered network topology;
determining a least cost path that satisfies a second set of QoS constraints; and
balancing a network load according to the least cost path.
24. The method of
25. The method of
26. The method of
27. The method of
over the filtered network topology at each searching step in the Dijkstra algorithm.
28. The method of
using PATH_LOAD, (P)=MAX(u,v)εP(Link_load(u,v)), as a cost index to find the least-cost path.
29. The method of
at each searching step in Dijkstra's algorithm.
30. A method for generating a backup path for a network comprising:
classifying flows over a link; and
determining a backup path for each class.
31. The method of
32. The method of
33. The method of
updating the backup path is updated when the network status changes.
34. The method of
determining a delay limit for a new flow;
inserting the new flow into an existing flow list according to the delay limit, making the new flow unclassified;
applying a current classification to the new flow if aggregated bandwidth of any unclassified flows in this class is under a given threshold; and
updating routing information along the backup path with the classification.
35. The method of
determining a delay limit for a new flow;
inserting the new flow into an existing flow list according to the delay limit;
applying a new classification to the new flow if aggregated bandwidth of any unclassified flows in this class is above a given threshold; and
updating routing information along the backup path with the classification.
This application claims priority to U.S. Provisional Application No. 60/622,050 filed Oct. 27, 2004, herein incorporated by reference in its entirety.
Cable video delivery networks are evolving to architectures that will allow individualized content to be delivered to each receiver. This is occurring both in MSO (Multiple System Operator) networks through switched broadcast architectures, and in telco video offerings that use DSL delivery using packet switched networks. This change in architecture has both been driven by new types of content, such as VOD (Video On Demand) and NPVR (Network-based Personal Video Recorder), and is availing the network operator of additional revenue through new content services. However, these new services to date, have been limited to services broadcast to a head end via satellite and off-air, or content delivered non-real time to a head end for play out from servers. Content is switched from the head end to the receiver, but content is not switched to the head end as demanded by the network. This severely limits the amount of content available due to the cost of satellite distribution and server cost.
A method for content delivery comprising transmitting content via a first network to a content aggregation point and transmitting the content from the content aggregation point via a second network to a receiver at the request of the receiver. A system for content delivery comprising a content provider, a content aggregation point operatively coupled to the content provider via a first network wherein the content aggregation point receives content from the content provider, and a receiver operatively coupled to the content aggregation point via a second network wherein the receiver is configured to request content from the content aggregation point.
A method for in-band measurement of network statistics comprising adding a first timestamp from a first local clock in a first node to a first packet and a second packet wherein the first timestamp represents an intended packet transmission time. Adding a second timestamp from the first local clock in the first node to the first packet and the second packet wherein the second timestamp represents an actual packet transmission time. Transmitting the packets from the first node to a second node. Determining a third timestamp wherein the third timestamp represents a packet arrival time from a second local clock at the second node. Estimating network statistics based on the first, second, and third timestamps.
A system for in-band measurement of network statistics comprising a first node wherein the first node is configured to add a first timestamp from a first local clock in the first node to a first packet and a second packet wherein the first timestamp represents an intended packet transmission time and the first node is configured to add a second timestamp from the first local clock in the first node to the first packet and the second packet wherein the second timestamp represents an actual packet transmission time. A second node, operatively coupled to the first node, wherein the second node is configured to receive the first and second packets and the second node is configured to determine a third timestamp wherein the third timestamp represents a packet arrival time from a second local clock at the second node and a means for estimating network statistics based on the first, second, and third timestamps.
A method for multi-constraints based QoS routing for content distribution over a network comprising filtering a network topology with a first set of QoS constraints resulting in a filtered network topology, determining a least cost path that satisfies a second set of QoS constraints, and balancing a network load according to the least cost path.
A method for generating a backup path for a network comprising classifying flows over a link and determining a backup path for each class.
Additional advantages of the invention will be set forth in part in the description which follows or may be learned by practice of the invention. The advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention.
Before the present methods and systems are disclosed and described, it is to be understood that this invention is not limited to specific synthetic methods, specific components, or to particular compositions, as such may, of course, vary. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.
As used in the specification and the appended claims, the singular forms “a,” “an” and “the” include plural referents unless the context clearly dictates otherwise. Thus, for example, reference to “an encoder” includes mixtures of encoders, reference to “an encoder” includes mixtures of two or more such encoders, and the like.
Ranges may be expressed herein as from “about” one particular value, and/or to “about” another particular value. When such a range is expressed, another embodiment includes from the one particular value and/or to the other particular value. Similarly, when values are expressed as approximations, by use of the antecedent “about,” it will be understood that the particular value forms another embodiment. It will be further understood that the endpoints of each of the ranges are significant both in relation to the other endpoint, and independently of the other endpoint.
“Optional” or “optionally” means that the subsequently described event or circumstance may or may not occur, and that the description includes instances where said event or circumstance occurs and instances where it does not.
The present invention may be understood more readily by reference to the following detailed description of preferred embodiments of the invention and the examples included therein and to the Figures and their previous and following description.
I. Network Architecture
Described herein is a network architecture that enables content switching from a content provider to a head end using economical public and private IP networks. An exemplary diagram of the architecture is shown in
As illustrated in
The second part of the network can be a near lossless, low latency connection from the vNOC to the head ends of each subscribing MSO, for example, a private network. As shown in
The MSO headend 108 can provide the video/audio data to an end user 112 (receiver) via an HFC (hybrid fibre-coax) Distribution 109, for example. Other distribution means known in the art are specifically contemplated. The stream can pass through a hub 110 and node 111 as it is transmitted to an end user 112.
The network architecture disclosed provides a system wherein an end user 112 receiver can request a program distributed from the vNOC and no latency is needed to begin reception since the buffering needed to absorb the upstream losses has been absorbed by the vNOC that is already receiving and aggregating all content available at the head end. Content can be efficiently distributed to the head end using multicast join when content is requested by a receiver(s).
Also described herein are improvements in the functionality of the aforementioned network architecture. These improvements include in-band measurement of network statistics, multi-constraints based QoS routing, and backup paths.
II. In-Band Measurement of Network Statistics
Described herein is a method for measuring network statistics using payload data that is being transmitted over the network. Network statistics such as available bandwidth, loss rate, delay, etc., vary dynamically over time. Determination of these network characteristics is necessary to reliably support QoS requirements. This can be especially true for audio-visual data that need to satisfy stringent QoS requirements. Existing techniques for measuring network statistics use probing packets that are specifically used to support measurement. These probing packets do not carry any useful information between the two end nodes, nodes can be contributors (encoders) or any computing device, involved in the measurement and the probing packets are discarded after being received. See, M. Jain and C. Dovrolis, Pathload: A Measurement Tool for End-to-End Available Bandwidth, Proceedings of Passive and Active Measurements (PAM) 2002 workshop, pages 14-25, Fort Collins, Colo., herein incorporated by reference in its entirety. Such probing techniques therefore consume a portion of the available link bandwidth for measurement and can introduce additional congestion depending on the amount of data used for probing and frequency of measurement. This problem can be mitigated by using in-band measurement, i.e, the data packets that carry information are also used for probing during measurement.
Video compression standards such as MPEG-2, MPEG-4, H.264 require timing information be embedded in the compressed bitstream. This timing information is generated from a common system clock in the encoder and the instantaneous value of this system clock is sampled at specific intervals. Sampled values of the system clock are sent as Program Clock Reference (PCR) fields in the bitstream that are used by the decoder to synchronize its clock to the system clock of the encoder. In addition, the system clock is used to create timestamps called Presentation Time Stamps (PTS) and Decoding Time Stamps (DTS) that is used by the decoder to synchronize the presentation of audio and video. For proper operation of the MPEG2 decoders, the inter arrival times of the packets at the decoder should be the same as intervals used by the encoder during transmission. If the inter arrival times are different at the decoder, then a mechanism is necessary to infer the original intervals for proper operation. As used herein, inter-packet interval time can be defined as the time interval elapsed between two successive packets either during transmission or reception. As used herein, inter-arrival time can be the time that elapsed between the arrivals of two successive packets at a network interface. As used herein, delay jitter is the variability in the one way delay of packets from the transmitter to the receiver.
Specific inter-packet intervals between probing packets can be used to measure the available bandwidth in a network path. For example, a sequence of probing packets with a specific inter-packet interval is transmitted and the corresponding inter arrival times are measured by the receiver. The trend in the inter arrival times on the receive side is used to determine if the available bandwidth is lower or higher than the current transmission rate. As mentioned above, video packets generated by an encoder have specific transmit time requirements to ensure the synchronization of an encoder 401 and a decoder 404. Thus, when video packets are used for probing, the network statistic measurement technique will introduce additional jitter of the packets received at the decoder. A method to accommodate measurement while estimating and minimizing the introduced jitter by using additional timestamps is presented below.
Described herein is a method for using in-band video, audio, or multimedia packets for probing. An exemplary implementation of the disclosed method is illustrated in
TTS corresponds to a transmit time stamp. If video packets are not used for probing, then TTS(n, N1)=NTS(n, N1), i.e., the actual transmit time will be same as the intended transmission time NTS(n, N1). But, when a video packet is used for probing, the TTS(n,N1) is not necessarily equal to NTS(n, N1) because of the specific inter packet transmit intervals required by the measurement algorithm. These TTS timestamps will be used by the probing algorithm for bandwidth estimation. The packets are then transmitted to a second node 403 (N2) at block 503.
After receiving the nth video packet, the receiving node 403 (N2) determines a third timestamp RTS(n,N2) from a local clock, at block 504. RTS corresponds to a receive time stamp. The received timestamps can be used to estimate network statistics, such as the available bandwidth at block 505. An example of bandwidth estimation techniques is disclosed in M. Jain and C. Dovrolis, Pathload: A Measurement Tool for End-to-End Available Bandwidth, Proceedings of Passive and Active Measurements (PAM) 2002 workshop, pages 14-25, Fort Collins, Colo. Any means known in the art for estimating network statistics based on timestamps can be used.
The timestamps can be used to compute network statistics like the available bandwidth. The measured network statistics can be returned to a transmitter or a central monitor/control unit for controlling transmission parameters such as, future transmission rates or routing of network traffic.
In general, the inter arrival times of two packets in node 403 N2 will not be the same as the inter-packet transmit interval at node 402 N1. This can be because of variable delay introduced by the network during transmission and the fact that the clocks in nodes 402 N1 and 403 N2 are not perfectly synchronous. For each received packet, the RTS(n,N2) can be updated to account for the variation introduced during transmission, and the network jitter. The RTS(n,N2) time field can be updated as:
NTS(n, N1)−TTS(n,N1) is the variation in the transmit time (and hence the receive time) introduced by the probing technique. D is the estimate of the additional delay jitter introduced by the network. D can be computed in different ways as follows. A simple method of computing D is to use the difference between inter arrival times of the most recent two packets and the corresponding inter-packet transmit times.
An estimate that uses only the most recent two packets is very susceptible to outliers. A robust method of estimation can use the past and current information from a sequence of packets:
The local clock in N2 can be synchronized to the local clock in N1. The updated value of RTS′(n,N2) can be used to drive a phased-lock loop (PLL) for synchronizing the clock in node 403 N2 to that of node 402 N1. The difference between RTS′(n+1,N2)−RTS′(n, N2) and NTS(n+1,N1)−NTS(n,N1) can be used to either speed up or slow down the N2 clock. This ensures the synchronization of the clocks in N1 and N2 along with the compensation for the jitter introduced by the probing method and the network.
The NTS(n, N1) value in each packet that were obtained from the local clock in node 402 N1 needs to be updated by timestamps from the local clock at node 403 N2 before the packet is transmitted by node N2. This is updated by adding a constant to RTS′(n,N2) which represents the fixed processing delay incurred in node 403 N2.
As this technique does not use the implicit or explicit bit rate information of the video, this can be used for both constant bit rate streams as well as variable bit rate video streams where the instantaneous rate is not readily available.
III. Multi-Constraints Based QoS Routing for Video Distribution Over Network
Current best-effort routing consists of shortest path routing that optimizes the sum over the constituent links of a single measure like hop-count or delay. Video communication applications have more complex QoS requirements regarding bandwidth, delay, jitter, packet loss, and reliability. To efficiently support the QoS requirements of video applications, overall network performance needs to be optimized by taking load balancing into account when searching the best path for each video traffic. The QoS requirements from video applications are considered as the QoS constraints when a router executes the routing operation. The disclosed multi-constraints based QoS routing algorithms can find a path between a source node and a destination node that optimizes the load-balancing of network and obeys a set of QoS constraints.
Let G(N, E) denote a network topology, where N is the set of nodes and E is the set of links. The characteristics of the links or paths (e.g., delay, hop-count, bandwidth, etc.) are defined as QoS measures, which can be estimated by network measurement tools, one example is mentioned previously (Pathload). The number of QoS measures can be denoted by m. Therefore, the QoS measures of each link can be characterized by an m-dimensional link weight vector, comprising m non-negative QoS weights (Wi(u, v), i=1, . . . , m, (u, v) is the link from node u to node v, (u, v)εE) as components. A QoS measure of a path can be additive (e.g., delay, hop-count), in which case the weight of that measure equals the sum of the QoS weights of the links defining that path. A QoS measure weight of a path can be the minimum(maximum) of the QoS weights along the path (e.g., available bandwidth).
While selecting the feasible paths to satisfy a QoS requirement, it is better to balance the traffic among the links to improve the overall network performance. This approach ensures that the network will be resilient to the dynamic of the network traffic. The path load of a path P can be defined with its constituent links' load.
Disclosed is a path selection method to find a path not only satisfying a QoS requirement, but also maintaining the load balancing in the network by finding a path with minimum Path_load.
Constraints on min(max) QoS can be treated by omitting all links which do not satisfy the requested min(max) QoS constraints, referred to as topology filtering. Constraints on additive QoS are satisfied by checking,
Exemplary steps in a path selection method of the present invention are illustrated in
Dijkstra's least-cost algorithm begins by initializing a first vertex in a graph with a permanent label with a value of 0, and all other vertices a temporary label with the value of 0. The edges of the graph have associated costs. The algorithm then proceeds to select the least cost edge connecting a first vertex with a permanent label to a second vertex with a temporary label. The second vertex is then updated from a temporary to a permanent label. The second vertex value is then determined by the addition of the cost of the edge with the first vertex value. The next step is to search for the next least cost edge extending to a third vertex with a temporary label from either the first vertex or the second vertex, change the third vertex label to permanent, and determine its distance to the first vertex. This process is repeated until the labels of all vertices in the graph are permanent. And the permanent label in each vertex is the least-cost of the path from first vertex to this vertex.
In the present invention, QoS constraints can be satisfied by checking
Then, at block 603, the load is balanced on the links of the network according to the least cost path. To balance the load on the links of the network Path_load can be used in, for example, Dijkstra's least-cost path routing algorithm, as a cost index (similar to the permanent label in Dijkstra algorithm mentioned above) to find the least-cost path. Accordingly, the Link_load defined in previous section will be considered as cost of the edge in Dijkstra algorithm mentioned above. While the current vertex value is updated by the addition of the cost of the edge with the previous vertex value in the mentioned Dijkstra's algorithm, here Path_load will be updated with the following rule in each searching step.
Cost_index for current node
And Old_index is updated as Old_index=Cost_Index for the next step of operation.
The method described above can find the path with the most residual resource (least Path_load) among the paths that satisfies a set of QoS constraints. For video applications over this least-cost path, it can take advantage of the residual resource to tolerate dynamic change in the network and obtain better video quality. For a network that employs this multi-constraints based QoS routing method, the overall network performance will be improved because network resources are consumed in a more efficient way to support QoS.
IV. Backup Path for Resilient Network
A. Fast Re-Routing for Recovery of Node/Link Failure
To improve the robustness of a network to link failure, each link in the network can be protected by a backup path. During communication, a router can periodically send probing packets to neighbor routers to detect link failure. Upon detecting a link failure, the flows over the failed link need to be rerouted to a backup path as soon as possible to minimize the interruption period; at the same time, the QoS requirement of the flows over the original link can be satisfied by the backup path. Here the flow is defined as the application data sending from source router directly or through intermediate router(s) to the destination router. The method described herein assumes that the QoS requirement of each flow includes bandwidth and delay, and that any QoS routing method can be used to select the path to satisfy the QoS requirement, including the routing method described previously.
Assuming that there are a large number of flows over each link, a scalable classification based re-routing method is disclosed to find a backup path for each link in a network. The flows in the same class share the same backup sub-path for a given link. The backup path of the class can satisfy the aggregated QoS requirement of all the flows in the class, which includes the summation of all the flows' bandwidth requirements, and minimum delay requirement of all the flows in the class. Two extreme cases for this per-class solution are: 1) all flows over the link are considered as one class, or 2) each flow is considered as a class. Examples are provided, illustrating these two extreme cases.
For the first case, one backup path can be setup for all the flows over a given link. This backup path may not exist because the aggregated bandwidth requirement of the class is so high that there is no single path in the network can satisfy the QoS requirement. Even if there is such a path in the network, when all the flows re-route to this path in case of the given link failure, it can cause a severe load-balancing problem in the network.
For the second case, a backup path can be setup for each flow over the given link. For each flow, a source router needs to run a routing method to find the optimal, also referred to as best, sub-path for this flow from the source to a destination router, and setup a route table over the routers along the sub-path. This process is not scalable to a large number of flows because the sequential route computation and route table setup for each flow can require a significant amount of computational resources and signaling delays.
The class based fast re-routing method disclosed classifies the flows over the given link first and then finds the best sub-path for the particular class with the aggregated QoS requirement based on the per-flow QoS of the flows in the class. It is a tradeoff among computation complexity, signaling delay and system load balancing.
An exemplary implementation of the disclosed method is illustrated in
i. Classification of Flows
A flow can be classified based on the delay requirement of the flow. Additionally, the bandwidth requirement of each class can be made as similar as possible. This can be accomplished simultaneously with classification.
Let Di be the end to end delay requirement of a flow i. Assuming the actual delay the flow experiencing over link j is dij and
The delay limit (Dil) of all the flows over the given link l is sorted from Dmin to Dmax as shown in
and i is the index of class; and using the curve, Bi is mapped to Di, which is in turn used as the boundary for classification of each flow with its delay limit. And #class is the number of class as the result of classification, which can be predefined before classification. The number of classes can also be adaptively determined during the classification. For example, if there is a predefined threshold of the maximum aggregated bandwidth (denoted as B_limit) that can be supported by each class, then #class can adaptively determined by Bmax as (Bmax/B_limit).
Then at block 802, a sub-path is determined.
ii. Sub-Path Determination
For each class, the best path is found from a source router to a destination router that satisfies delay and aggregated bandwidth requirements, this path is referred to as a backup path. The path is found based on the assumption that the current link between source router and destination router is broken. This path can be activated and used only when a router detects the link failure. Any path determination method can be used, including the path determination method described above.
C. Routing Update
The backup path can be updated when network status changes, such as when the network topology changes and flow join/leave etc. To save computational resources at a router, a new classification and/or routing computation can conditionally be performed.
If a flow is leaving the target link, there is no need to re-compute the backup path for the class with which the flow was associated.
If a flow is joining the target link, the router can determine the delay limit for this new flow, and orderly insert this new flow into an existing flow list according to its delay limit. The new flow can be considered as an unclassified flow at this stage. If the aggregated bandwidth of the unclassified flows in this class is still under the given threshold (some percentage of the aggregated bandwidth used for classification (Bmax/#class), then the current classification can apply to this new flow. Otherwise, a new classification is necessary to assure that each class will get similar aggregated bandwidth. Finally, routing information at the nodes along the backup path is updated with the classification and new flow information for this new flow.
The methods can be operational with numerous other general purpose or special purpose system environments or configurations. The methods may be described in the general context of computer instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
The processing of the disclosed methods can be performed by software components. The disclosed method may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. Generally, program modules include computer code, routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The disclosed method may also be practiced in grid-based and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
Implementations of the disclosed methods may be stored on or transmitted across some form of computer readable media. Computer readable media can be any available media that can be accessed by a computer. By way of example, and not limitation, computer readable media may comprise “computer storage media” and “communications media.” “Computer storage media” include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
While this invention has been described in connection with preferred embodiments and specific examples, it is not intended that the scope of the invention be limited to the particular embodiments set forth, as the embodiments herein are intended in all respects to be illustrative rather than restrictive.
Unless otherwise expressly stated, it is in no way intended that any method set forth herein be construed as requiring that its steps be performed in a specific order. Accordingly, where a method claim does not actually recite an order to be followed by its steps or it is not otherwise specifically stated in the claims or descriptions that the steps are to be limited to a specific order, it is no way intended that an order be inferred, in any respect. This holds for any possible non-express basis for interpretation, including: matters of logic with respect to arrangement of steps or operational flow; plain meaning derived from grammatical organization or punctuation; the number or type of embodiments described in the specification.
It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the scope or spirit of the invention. Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.