One of the more important requirements of a digital communication network is to support real-time communications applications which, typically, require time or frequency alignment, or a combination of both. For example, time alignment (also referred to as “phase alignment”) is used by real-time instrumentation systems gathering data at specific time intervals or operating machinery according to specific timing. Frequency alignment is required in time-division-multiplexed (TDM) systems and in multi-media streaming systems, which require fixed, reproducible, video or audio sample rates across multiple clients.
In conventional TDM networks, physical layer methods implement frequency alignment throughout the network. The master clock 101 clock system delivers (frequency) timing information via bit-timing (or symbol-timing) information associated with downstream physical communication links to slave clock systems 102 enabling the latter to frequency-align with the former.
While frequency alignment within conventional TDM networks is relatively straightforward, packet-switched networks, such as networks based on Internet Protocols (“IP”), present time and frequency alignment challenges because packet networks are not conventionally designed to provide precise delivery time for data or precise timing at any lower protocol levels. A key difference is that the switching and multiplexing functions are not deterministic, as they are in TDM networks. In particular, packet networks typically involve multiple nodes that may store and forward data packets, potentially introducing significant, randomly distributed, transit delay variation between any two points. Furthermore, packet networks introduce transit delay and transit delay variation that is load dependent and since the traffic loading is generally not constant, the transit delay variation cannot be modeled as a stationary random process.
To address time and frequency alignment challenges inherent in packet networks, certain protocols based on the industry standard internet protocol (IP) have been developed and deployed. One IP-based time alignment protocol is known in the art as Network Time Protocol (NTP). NTP is used for aligning time between a client and one or more master time references. Precision Time Protocol (PTP) is a second IP-based time alignment protocol for aligning one or more client devices to a master time reference. PTP has also been proposed as a protocol supporting frequency alignment. However, NTP and PTP are simply protocols and do not solve the problem of variable transit delay. A slave clock system utilizing NTP, PTP, or any other time alignment protocol, transmitted over a packet network must still account for transit delay variation within the network. In fact, overall time alignment accuracy is generally determined by the ability of a system implementing time alignment to account for transit delay variation between a time reference (“master” or “server”) and a clock aligning to the time reference (“slave” or “client”).
Lightly loaded packet networks typically present relatively low transit delay variation, allowing IP-based alignment protocols such as NTP and PTP to easily achieve excellent accuracy relative to each protocol's specification. For example, in a lightly loaded gigabit Ethernet-based network, PTP can theoretically provide alignment of better than one hundred nanoseconds. However, conventional networks typically have a wide range of bandwidth loading conditions, which leads to large transit delay variations. This transit delay variation typically leads to severe degradation of time alignment accuracy.
Furthermore, network elements comprising the packet network may process sequential packets differently, depending on prevailing congestion conditions that result from increased bandwidth loading within the network. For example, a network element may forward all packets according to one delay profile until a congestion threshold is exceeded. Once the congestion threshold is exceeded, the network element may delay high priority packets, and drop low priority packets. If congestion on the network element drops below the congestion threshold, then the network element may stop delaying high priority packets and stop dropping low priority packets.
Frequency alignment between a frequency reference (master clock) and a frequency client (slave clock) may be disrupted by abrupt changes in transit delays resulting from one or more intervening network elements switching from normal mode to congestion mode. Because conventional frequency alignment protocols presume transit delay does not change abruptly, a conventional client device commonly interprets a change in transit delay resulting from a network element changing between normal mode and congestion mode to be the result of a local frequency error. The conventional client device may adjust for the local frequency error, even though no adjustment is actually needed. Similarly, time alignment between a time reference (master) and a time client (slave) may also be disrupted by abrupt changes in transit delays resulting from one or more network elements switching from normal mode to congestion mode.
Thus, several factors, including network congestion and network element policies for packet processing, may contribute to greater transit delay variation in a packet network. Unfortunately, transit delay variation typically reduces accuracy and reliability of time and frequency alignment systems that conventionally depend on stability of transit delay within the packet network. Techniques described in the prior art are generally based on some variation of adaptive clock recovery and use filtering methods or straight-line-fitting methods to extract a frequency reference. However, these are not robust enough to handle the variability of packet delay variation effects and thereby are not suitable for meeting the stringent performance criteria that are targeted by this invention.
One or more embodiments of the present invention provide techniques for developing robust frequency and phase correction factors based on measurement of transit delay of packets in a timing flow between master and slave. The methods are based on evaluating the weighted average of short-term, medium-term, and long-term measurements of local clock offset.
A method of correcting a clock, according to an embodiment of the present invention, includes the steps of receiving packets during at least first and second time windows, computing transit delays associated with the packets based on time stamps contained in the packets received during the first and second time windows, determining a representative transit delay for each of the first and second time windows, estimating a frequency offset of the clock based on the representative transit delays of at least two time windows, and correcting the clock using the estimated frequency offset.
A method of correcting a clock, according to another embodiment of the present invention, includes the steps of receiving and transmitting packets during a time window, computing transit delays associated with the packets based on time stamps contained in the received and transmitted packets, determining a first representative transit delay of the received packets and a second representative transit delay of the transmitted packets, estimating an offset of the clock based on the first and second representative transit delays, and correcting the clock using the estimated offset.
A method of correcting a clock, according to still another embodiment of the present invention, includes the steps of storing representative transit delays associated with a plurality of previous time windows in a buffer, computing transit delays associated with packets based on time stamps contained in the packets received and transmitted during a current time window, determining a representative transit delay for each of the received packets and the transmitted packets, storing the representative transit delays for the received packets and the transmitted packets in the buffer, estimating an offset of the clock based on the representative transit delays stored in the buffer, and correcting the clock using the estimated offset.
A clock offset estimating device, according to an embodiment of the present invention, includes a buffer that stores representative transit delays associated with a plurality of time windows, and a processing unit programmed to estimate an offset of the clock based on at least two representative transit delays stored in the buffer. A frequency offset for the clock is estimated based on representative transit delays associated with at least two time windows, and a time offset for the clock is estimated based on representative transit delays associated with at least one time window.
Further embodiments of the present invention include, without limitation, a non-transitory computer-readable storage medium that includes instructions that enable a processing unit to implement one or more aspects of the above methods as well as a computer system configured to implement one or more aspects of the above methods.
t2=τ2+ε (Eq. 1)
For packets originating at the slave clock 102 and transmitted to the master clock 101, the time-of-departure time-stamp contains τ3, the slave clock's estimate of time-of-departure. The actual (true) time-of-departure τ3 is related to τ3, by
t3=Σ3+ε (Eq. 2)
After a transit delay of ΔSM 109, the packet arrives at the master clock 101 at time t4.
Such a two-way exchange of packets can provide information suitable for allowing the slave clock 102 to align in time with the master clock 101 (assuming that both sides have knowledge of the time stamps). If the exchange of information is only one-way the slave clock 102 can still align its clock (frequency) with the master clock 101, a process known as syntonization. There are four measured values (time-stamps) that can be communicated between the master clock 101 and the slave clock 102, namely, (t1, τ2, τ3, t4). In the two-way exchange of packets, the master-to-slave packet and the slave-to-master packet do not have to be consecutive as long as the time-stamp information is communicated appropriately. In some instances the rate at which packets are transmitted in the two directions can be different. The following equations can be established:
t4=τ3+ε+ΔSM (slave-to-master packet)
t1=τ2+ε−ΔMS (master-to-slave packet) (Eq. 3)
In an actual time-transfer situation, there are two equations with three unknowns so it is common practice to assume reciprocity of transit delay between the two devices, therefore reducing the number of unknowns to two and then computing ε, the slave clock 102 time offset with respect to the master, as the solution to a pair of linear simultaneous equations (embodied in Eq. (3)).
The estimates of transit delay based purely on the available time-stamps can be established as:
δSM(t4)=t4−τ3
δSM(t1)=τ2−t1 (Eq. 4)
These estimates are, however, erroneous in the sense that they do not include the slave clock 102 time offset. The estimates are also expressed as functions of time which indicates that they may not be constant. Furthermore, the notion of the independent variable representing time is assumed to be coincident with the master clock 101.
Because of the fundamental statistical behavior of packet networks, the transit delays are not fixed and can vary from packet to packet. To counter this packet delay variation (PDV), as well as to account for any drift in the slave clock 102 oscillator, the estimates of clock offset are made routinely and it is well known that the mitigation of the deleterious effects of packet delay variation and oscillator drift is improved by using more frequent exchanges of timing packets.
Well-known IP protocols such as PTP and NTP provide the framework to permit interoperability of equipment and define the structure of the packets, format of the time-stamps and the rules for the packet flows that comprise the packet timing signal. The packet delay variation introduced by the packet network adds noise to the timing signal that has to be attenuated/eliminated by the clock recovery function in the slave clock 102. Specifically, for a given application, the slave clock output 105 must meet certain requirements. These requirements are generally specified in terms of MTIE (maximum time interval error) or TDEV (time deviation) masks. These masks represent upper bounds on the MTIE or TDEV extracted from measurements of the clock output 105 relative to a known good reference 107 using suitable measurement equipment 106.
In the general telecommunications environment there are several layers of masks ranging from “loose” to “tight.” Examples of the “loose” masks are those associated with clocks operating at traffic interfaces; “tight” masks apply to clocks operating at interfaces suitable for delivering synchronization and are called “sync masks.” The prior art in the field of synchronization over packet networks has suggested the feasibility of meeting the less stringent “traffic masks”; one or more embodiments of the present invention described here provide a technique that is capable of recovering clock information suitable for meeting the more stringent “sync masks.”
In an alternative embodiment of
If the period associated with the nominal packet rate is denoted by τP, then packet transmissions can be considered to be made on a nominally uniform time grid, namely every τP units of time (e.g., seconds). Then, in an observation interval of duration, τ0 seconds, there will be N samples of the transit delay where τ0=N·τP. One or more embodiments of the present invention utilize a pre-processing (i.e., packet selection) step as taught in U.S. patent application Ser. No. 12/632,643, filed Dec. 7, 2009, and entitled “Method and Apparatus for Finding Latency Floor in Packet Networks,” the entire contents of which are incorporated by reference herein. This pre-processing step establishes a representative transit delay for the window, effectively establishing a new (hypothetical) packet stream with packet interval τ0 and transit delays equal to this representative transit delay.
In PTP implementations, the packet rate varies between 2 packets per second and 128 packets per second with a typical value of 10 packets per second. In the following description, τ0 is selected as 128 seconds. It should be recognized that higher quality oscillators permit larger values of τ0 and this particular choice (128 s) is appropriate for a wide range of oscillator types.
The principle of clock recovery is illustrated
X1=d(n+1)−dn (Eq. 5)
and establishing the slope (see line 403 in
The estimate of the frequency offset based indices (n) and (n+K) is created by taking the difference in (estimated) transit delay for the two indices, namely,
XK=d(n+K)−dn (Eq. 7)
and establishing the slope (see line 402 in
If the transit delay across the packet network is a constant, equal for every packet, then both estimates of slope will be the same and equal to the frequency offset (slope of line 401) provided the frequency offset is constant over the interval of time the measurements are made. If the frequency offset is constant and the statistics of the packet delay variation are constant over the period of measurement, then the accuracy of the frequency offset estimate is better for larger K; i.e., ηK is more accurate than η1. Prior art methods assume that the statistics of the PDV are constant (i.e., stationary) and establish an “optimal” frequency offset estimate by applying a single least-squares straight-line fit to the transit delay estimate sequence. However, this is not optimal if the statistics are not constant. One or more embodiments of the present invention consider short/medium/long term estimates to account for the fact that the PDV is not stationary.
The transit delay measurements are pre-processed to reduce the effective PDV noise. Specifically, in each pre-processing window, the floor of the PDV is determined and used as the representative transit delay estimate for the pre-processing window. U.S. patent application Ser. No. 12/632,643 referenced above describes such a method. In one embodiment, appropriate for low and medium loading with few network elements between the master and slave clocks, the minimum observed transit delay among the packets in the window is used as the representative transit delay since this is a good estimate of the floor. In another embodiment, that improves the accuracy of the estimate of the floor in cases of medium to high loading with a significant number of network elements between the master clock and slave clock, the location of the floor is estimated from the distribution of the transit delays of the window as taught in said U.S. patent application Ser. No. 12/632,643.
Packet pre-processing is depicted
The frequency estimator utilizes information of time-error that is maintained over the recent past. This information is stored in a data structure such as the ones depicted in
In the embodiments of the present invention employing a shift register buffer 601, when a new record is made available (every τ0), the record corresponding to time index M units in the past is flushed out. The records are then pushed down and the most recent record then occupies the space denoted by Rec(n). Thus the buffer 601 contains the most recent M records representing an interval of time of M·τ0.
By comparison, the embodiments of the present invention employing a circular buffer 602 require less memory access operations. The circular buffer 602 includes sufficient memory to hold M records. There is a pointer “Ptr-n” 606 that contains the location of the most recent record. When a new record arrives, it is written into the “next” location. With reference to
The robust frequency estimator is front-ended with the packet selection and floor extraction block to estimate the appropriate time-error value for the time interval corresponding to the record (steps 702 through 710 described above). Each record is representative of τ0 (seconds) where τ0 is typically 128 seconds. The transit delay extraction is done in both the forward and reverse directions. φF(n) and φR(n) are the discrete-time signals (sequences) corresponding to the transit delay signals with samples taken τ0 (seconds) apart.
In addition to the transit delay samples described above, additional information is available for each block of K samples in the pre-processing window. These include a measure of the bias (μ=mean value) and the noise strength (σ2=variance; σ=standard deviation).
There is certain additional information that is maintained to provide guidance on the validity of the data. One such indicator is representative of whether there was a transient detected in the duration (τ0) over which the time-error is estimated. Another such indicator is whether or not the data is “old” and has been read out of non-volatile memory. This latter case is appropriate at start-up. This information is summarized in the environment flag that provides an indication to subsequent steps in the generation of frequency correction that the information of the record is less useful.
Every pair of records in the buffer provides a frequency (error) estimate where the notion of frequency error is the (fractional) frequency error between the master clock 101 and the slave clock 102. If the two clocks are perfectly syntonized and there is no packet-delay variation, the transit delay value should be a constant. Specifically, considering the pair Rec(n−j) and Rec(n−j−k), there is an implicit time interval of k·τ0 between the two phase measurements (transit delay estimates) associated with the two records. Consequently, an estimate of (fractional) frequency offset is established as:
subject to the constraints:
0≦j≦(M−2)
1≦(j−k))≦(M−1)
1≦k≦(M−1) (Eq. 10)
In (Eq. 9) the superscript (F) identifies the forward direction (master to slave), the subscript “raw” indicates that the frequency estimate is not weighted. The equivalent for the reverse direction (slave to master), with superscript (R), is provided in (Eq. 11) (the constraints of Eq. 10 apply):
There are numerous such pairs of records that can provide a raw frequency estimate. In particular, there are pairs corresponding to (M−1) choices for k (i.e., k=1, 2, . . . , (M−1)).
For purposes of reducing computational complexity, one embodiment of the invention considers three choices for k corresponding to “small”, typically 5; “medium”, typically 10; and “large”, typically 20. For k=5, there are (M−5) pairs [j=0, 1, . . . , (M−6)]; for k=10 there are (M−10) pairs [j=0, 1, . . . , (M−11)]; and for k=20 there are (M−20) pairs [j=0, 1, . . . , (M−21)]. A typical value for M is 30. Thus there are typically L=55 pairs that are considered together for the forward direction and an equal number in the reverse direction. For notational convenience these L=55 raw frequency estimates are indexed from λ=0 through λ=(L−1).
The invention advantageously assigns weights to each frequency estimate. The weight associated with the raw frequency estimate is always non-negative and is assigned based on the following rules.
First is that a large bias (μ) in any record implies that the weight associated with any raw frequency estimate using that record should be small. Second is that a large noise strength (σ) in any record implies that the weight associated with any raw frequency estimate using that record should be small. Third is that raw frequency estimates obtained using larger values of k are generally assigned larger weights. At start-up, and if any anomaly is detected, then larger weights are assigned to smaller values of k. Fourth is that if the record includes a flag indicating any anomaly, such as a transient, the weight associated with any raw frequency estimate using that record is set to zero. Note that weights are developed for both the forward and reverse directions.
The steps associated with generating the frequency correction are outlined in
In step 804, a “pre-weight” (i.e., an initial or “raw” weight) is computed for each pair, identified by the indices j and k, using the additional information of mean value (μ) and standard deviation (σ). This is done for both the forward and reverse directions. In one embodiment of the invention, the formula used for establishing the pre-weight for the pair of records Rec(n−j) and Rec(n−j−k) [see Eq. (9), (10), (11) where the representative transit delays from these records is used] is
where μ and σ are the mean and standard deviation (square-root of variance) quantities in the record; the superscripts (F) and (R) apply to the forward and reverse directions, respectively. The scaling factor κ permits the standard deviation to be given higher (usually) priority than the mean value. A typical value for κ is 5. The gain term g is either 1 or 0 and indicates whether the pair should be utilized in the frequency correction (=1) or ignored (=0). This is developed from the environment flag. In step 806, the weights for each term is established and in step 808 the frequency correction is constructed as the weighted average of the L=55 frequency estimates.
The frequency (error) estimate based on the raw frequency estimates in the forward direction is generated as
and in (Eq. 13) the computation of a weighting factor representing this estimate is generated. Simply put, the frequency estimate in the forward direction is computed as the weighted sum of the raw frequency estimates and the overall weight is simply the sum of the individual weights. Note that the construction of (Eq. 13) allows freedom in the range of values of the weights. As a consequence, the combined weight, w(F)(nτ0), is representative of the quality of the frequency (error) estimate and can be used to compare the quality of this estimate with estimates made by other means, including the estimate based on the reverse direction or estimates based on other references, e.g., using techniques described in U.S. Pat. Nos. 5,751,777 and 5,943,381, the contents of which are incorporated by reference herein.
The same procedure is followed in the reverse direction. Namely,
If it is known that the frequency estimation should be done in a one-way manner, the appropriate weight for the other direction is assigned a zero value. That is, external information can be used to readjust the relative weighting in the forward and reverse directions.
Note that the estimates are indexed as “nτ0”. This is to emphasize that this computation is done every τ0 units of time. That is, when a new record arrives, the buffer is updated and these estimates recomputed.
The robust frequency estimator is then the (weighted) average of the frequency estimates for the forward and reverse directions:
The aggregate weighting of this robust frequency estimator is
wavg(nτ0)=w(F)(nτ0)+w(R)(nτ0) (Eq.16)
The actual frequency correction 306 applied to the NCO in step 810 is derived from the robust frequency estimate shown in Eq. 15.
In another embodiment of the invention, an additional smoothing factor is applied to the frequency correction. This is done by introducing the notion of the α-shaping factor. The α-shaping factor permits the adaptation of the contribution of the current robust frequency estimate to the actual frequency correction to accommodate the effects of ambient temperature and other factors that are known to impact the behavior of oscillators. In addition, the α-shaping factor can include the adaptation required to account for instabilities in the packet network.
One metric that identifies instability in the packet network is based on the aggregate weight, wavg(nτ0), of the robust frequency estimate for time-interval (pre-processing window) associated with nτ0. The current value of the weight is compared with a smoothed (average) value of the weight computed over several time-intervals, typically 5 times the buffer size, in the recent past. If the current value is significantly different from the average of the recent past, then an event exacerbating instability has occurred and the current estimate of frequency correction is less reliable. In one embodiment of the invention, the value of α is chosen as 0.95 if an instability has not been detected and is chosen as 0.05 if an instability has been detected. An instability is considered present if the said current value is more than 50% different from the said average over the recent past.
Having determined the value of α (between 0 and 1), the actual frequency correction term 306 is computed in step 906 as yact(nτ0), where
yact(nτ0)=α·yavg(nτ0)+(1−α)·yact((n−1)·τ0) (Eq. 17)
The larger the value of α, the greater is the contribution of the most recent robust frequency estimate.
In another embodiment of the invention, the alignment between slave clock 102 and master clock 101 is extended to include phase alignment (also called time alignment). With reference to
In step 1002 the time (phase) offset between the master and slave is computed for all M records using data from both the forward and reverse directions. Specifically, the estimate of offset is given by:
where φR and φF are the representative transit delay values for the most recent window, that is identified in time by “nτ0”, corresponding to the reverse and forward directions respectively and are available in Rec(n) 603.
It should be recognized that in practice only the most recent record needs to be processed each time and the result can be stored in the record for use in subsequent τ0 window interval.
In a manner analogous to the weighting of the frequency estimate, the offset estimate is weighted appropriately. In step 1004, the (pre-)weighting term, wT(nτ0), that represents the combination of the two directions, is computed. In one embodiment, the pre-weight associated with a particular record is computed as:
where the means μ, the standard deviations, σ, are available in Rec(n) and the superscripts identify the direction. The scale factor κ, typically 5, assigns a greater importance to the standard deviation than the mean. The gain term gn is based on the environmental flags and can be used to “deweight” a record by assigning a value of 0 is the data in the record is deemed untrustworthy for any reason.
As depicted in
In step 1010 this estimate is used as the time correction 307.
In another embodiment of the invention, the time correction is smoothed using an α-shaping factor. The method steps of this extension are shown in
ξact(nτ0)=α·ξavg(nτ0)+(1−α)·ξact((n−1)τ0) (Eq.21)
and in step 1110 this is used as the time correction 307 and applied to the NCO subsystem 305.
The various embodiments described herein may employ various computer-implemented operations involving data stored in computer systems. For example, these operations may require physical manipulation of physical quantities which usually, though not necessarily, take the form of electrical or magnetic signals where they, or representations of them, are capable of being stored, transferred, combined, compared, or otherwise manipulated. Further, such manipulations are often referred to in terms, such as producing, identifying, determining, or comparing. Any operations described herein that form part of one or more embodiments of the invention may be useful machine operations. In addition, one or more embodiments of the invention also relate to a device or an apparatus for performing these operations. The apparatus may be specially constructed for specific required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general purpose machines may be used with computer programs written in accordance with the description provided herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
The various embodiments described herein may be practiced with other computer system configurations including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
One or more embodiments of the present invention may be implemented as one or more computer programs or as one or more computer program modules embodied in one or more computer readable media. The term computer readable medium refers to any data storage device that can store data which can thereafter be input to a computer system; computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer. Examples of a computer readable medium include a hard drive, network attached storage (NAS), read-only memory, random-access memory (e.g., a flash memory device), a CD-ROM (Compact Disc-ROM), a CD-R, or a CD-RW, a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
Although one or more embodiments of the present invention have been described in some detail for clarity of understanding, it will be apparent that certain changes and modifications may be made within the scope of the claims. Accordingly, the described embodiments are to be considered as illustrative and not restrictive, and the scope of the claims is not to be limited to details given herein, but may be modified within the scope and equivalents of the claims. In the claims, elements and/or steps do not imply any particular order of operation, unless explicitly stated in the claims.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the appended claims(s).
Number | Name | Date | Kind |
---|---|---|---|
5751777 | Zampetti | May 1998 | A |
5943381 | Zampetti | Aug 1999 | A |
7664118 | Sasson et al. | Feb 2010 | B2 |
8130785 | Weigl et al. | Mar 2012 | B2 |
8325704 | Lemkin et al. | Dec 2012 | B1 |
20040076190 | Goel et al. | Apr 2004 | A1 |
20050100006 | Scott et al. | May 2005 | A1 |
20050100076 | Gazdzinski et al. | May 2005 | A1 |
20060146865 | Crowle et al. | Jul 2006 | A1 |
20070019686 | Belk et al. | Jan 2007 | A1 |
20080175275 | Garner et al. | Jul 2008 | A1 |
20100085989 | Belhadj et al. | Apr 2010 | A1 |
20110064091 | Darras et al. | Mar 2011 | A1 |
20110122775 | Zampetti et al. | May 2011 | A1 |
20110134766 | Zampetti et al. | Jun 2011 | A1 |
20110142079 | Wong et al. | Jun 2011 | A1 |
20110176483 | Palanki et al. | Jul 2011 | A1 |
Number | Date | Country | |
---|---|---|---|
20120269204 A1 | Oct 2012 | US |