Using network time protocol in voice over packet transmission

One or more methods and systems of effectively transmitting voice and voice band data from one node to another are presented. In one embodiment, the system comprises an NTP time server generating absolute times to computing devices such as residential voice over internet protocol (VoIP) gateways. The NTP time server generates absolute times in response to NTP time requests made by one or more computing devices such as residential VoIP gateways. In one embodiment, the method comprises determining an adequate rate for requesting absolute times from an NTP server, making periodic requests to the NTP server, obtaining the absolute times from the NTP server, and generating an adjustment parameter for use by a computing device such as a residential VoIP gateway.

BACKGROUND OF THE INVENTION

Significant developments in technology have led to improvements in the quality, quantity, and affordability of services provided to a consumer. The changing needs of business and residential market segments has required new telephony capabilities that are neither simple nor economical for service providers to implement using the existing public services telephone network (PSTN) infrastructure. As a result, integrated services and multimedia are being transmitted over a universal and ubiquitous packet based infrastructure. The infrastructure has incorporated the Internet as a media for packet data transmission.

The characteristics of voice and voice band data (i.e., fax and modem) transmission oppose the time insensitive characteristics of packet based transmission. In order for speech to be intelligible, the syllabic and time characteristics of speech must be retained during transmission. When voice or voice band data is transmitted over carrier class equipment using the PSTN, the infrastructure incorporates a hierarchical clock distribution that guarantees that data is sampled using a common clocking source. However, residential class telephony equipment (such as voice or fax over IP gateways, or data modems) are not provided with a distributed clock to the customer premise. As a consequence, a clock drift compensation mechanism is required. For example, in residential voice over Internet Protocol (VoIP), two VoIP endpoints or nodes will send and receive sampled data at slightly different data rates. If the rates are not corrected over time, speech intelligibility may be affected. There are a number of ways to compensate for differences between the sampled data rate between the sender's and receiver's nodes. However, there are several disadvantages associated with each of these approaches.

One of these disadvantages relates to the frequency oscillator at each node. Because the characteristics of each oscillator are independent of each other, separate clock drift estimators, resamplers, and control loop mechanisms are required for each voice and/or voice band channel transmitted.

In addition, the process of clock drift estimation is inherently noisy as it relies on incoming data packets to estimate clock drift. The data packets introduce noise related to the difference in clock frequencies of the two nodes.

Furthermore, an amount of time must transpire before statistically significant clock drift measurements may be taken. For example, monitoring the rate of accumulation or reduction of a jitter buffer provides a parameter that may be used to adjust the local clock rate. In using a jitter buffer as a drift estimation tool, a portion of the jitter buffer may be reserved for clock drift estimation, reducing the available buffer space for jitter compensation.

An additional disadvantage relates to the resampling of data in order to compensate for clock drift. Resampling introduces distortion in the signal path and may have a detrimental effect on high bandwidth analog modems such as modems that utilize the V.90 and V.92 standard. Further, resampling requires additional processing power provided by an existing central processing unit (CPU).

Finally, each voice or voice band data channel may require clock drift compensation based on the clock rate difference between the transmitting and receiving nodes. The process may involve the use of additional hardware and/or software to implement appropriate clock drift offsets for each call.

BRIEF SUMMARY OF THE INVENTION

Aspects of the present invention may be found in a system and method to effectively transmit voice or voice band data between two nodes. Integrity of the voice or voice band data is effectively maintained by synchronizing local clocks at each node by way of the Network Time Protocol (NTP). The system and method utilizes a time reference such as that provided by the Network Time Protocol (NTP).

In one embodiment, the system comprises an NTP time server generating absolute times to computing devices such as residential voice over internet protocol (VoIP) gateways. The NTP time server generates absolute times in response to NTP time requests made by one or more computing devices such as residential VoIP gateways.

In one embodiment, the method comprises determining an adequate rate for requesting absolute times from an NTP server, making periodic requests to the NTP server, obtaining the absolute times from the NTP server, and generating an adjustment parameter for use by a computing device such as a residential VoIP gateway. The adjustment parameter is used to adjust a clock source resident in the computing device. The clock source may comprise a frequency oscillator such as a numerically controlled oscillator. In one embodiment, the computing device comprises a residential VoIP gateway.

These and other advantages, aspects, and novel features of the present invention, as well as details of illustrated embodiments, thereof, will be more fully understood from the following description and drawings.

DETAILED DESCRIPTION OF THE INVENTION

Aspects of the present invention may be found in a system and method to synchronize clocks between transmitting and receiving nodes or endpoints during transmission of voice or voice band data over a telecommunications network. The telecommunications network may comprise a packet switched data network. The system and method utilizes a time reference such as that provided by a time synchronization protocol such as the Network Time Protocol (NTP). The Network Time Protocol (NTP) synchronizes one or more computing devices to a server that communicates with one or more referential time source(s). The time source(s) may comprise a radio receiver, satellite receiver, and/or modem. Typical NTP systems are configured to utilize multiple redundant servers and diverse network paths in order to achieve high accuracy and reliability. Synchronization of data using NTP may provide a significantly better method to transmit time sensitive data such as voice or voice band data (VBD) from one node to another. The voice band data comprises fax and modem data signals such as that specified by V.17 or V.34.

Aspects of the present invention obviate the need to compensate for clock drift that occurs during transmission of data packets between nodes of a packet based network. The transmitting and receiving nodes in a transmission are synchronized to an accurate reference source using NTP. Since each node obtains its clock source from the same reference source, any clock drift is eliminated. Hence, clock drift compensation is not required. Any software and hardware previously used to provide clock drift compensation are no longer required.

FIG. 1is a block diagram of a packet based system utilizing NTP to synchronize clocks between two exemplary computing devices in accordance with an embodiment of the invention. The two computing devices may comprise two residential gateways such as two VoIP gateways resident at their respective customer premises. In general, the computing device comprises a device that facilitates the conversion of packet data into circuit switched data. Although the diagram, for simplicity, depicts two computing devices, corresponding to two nodes in a network,104,108, the NTP may be utilized over multiple nodes representing multiple gateways. An NTP server112is shown, providing a referential clock source for the computing device at node1104and the computing device at node2108. Communication between the NTP server112and the computing devices104,108may occur through any telecommunications media. For example, the telecommunications media allowing communication to occur between the computing device at node1104and the NTP server112may comprise the Internet110. Similarly, the telecommunications media allowing communication to occur between the computing device at node2108and the NTP server112may comprise a dedicated private line114. The data transmitted between the computing devices104,108and the NTP server112may comprise NTP time requests and their corresponding responses. Each response may provide an absolute time corresponding to the NTP time request. The absolute time may take into consideration any delays associated with the NTP time request.FIG. 1also illustrates the bidirectional transmission of data between the computing device at node1104and the computing device at node2108by way of a packet switched network106. The data transmitted may comprise, for example, VoIP data. The VoIP data may comprise voice band data such as modem and/or fax data. Furthermore, it is contemplated that one or more NTP servers may be referenced by the computing devices at the nodes104,108. However, it is contemplated that the packet based system will utilize a single NTP server to more effectively synchronize the one or more clock sources at each of the nodes104,108. The NTP server112may be implemented as a server within in an enterprise network for a firm or entity. It is contemplated that the NTP server112may reference an accurate clock source from an exemplary radio or satellite transceiver. The NTP server112may comprise a processor and memory used in running and executing an NTP software program. It is contemplated that the NTP software program utilized in the server comprises a server version of the NTP software program. The computing devices104,108may comprise computers, each containing one or more processors and memories. The processors and memories of the computing devices104,108may be used in running and executing an NTP software program. It is contemplated that the NTP software program utilized in the computing devices104,108may comprise client versions of the NTP software program.

FIG. 2is an operational flow diagram illustrating a method of synchronizing clocks between the two exemplary computing devices located at two nodes (as described inFIG. 1) in accordance with an embodiment of the invention. At step200, each of the two computing devices is initialized by transmitting successive NTP time requests to an NTP server at one or more initial rates to adequately synchronize the two nodes for data transmission. The synchronization process may utilize a number of NTP requests. At step204, the rate or frequency in which NTP time requests are made by each computing device is determined in order to maintain a particular synchronization accuracy, for example. The desire to resynchronize with the NTP server may depend on the accuracy of exemplary frequency oscillators located at the two nodes. The frequency oscillators may comprise any type of circuitry capable of generating a periodic clock. Next, at step208, NTP time requests are made by the two computing devices to the NTP server. The NTP server responds with absolute times for the two computing devices. At step212, the absolute times are adjusted (resulting in adjusted absolute times) after any delays associated with the NTP time requests and NTP server responses are accounted for. At step216, an adjustment parameter used to re-synchronize the frequency oscillator resident at each computing device is calculated by each of the computing devices based on the adjusted absolute times. It is contemplated that, in one embodiment, the adjustment parameter is calculated by way of an automated software application resident at the computing devices of each of the two nodes. Next at step220, the adjustment parameter may be input into an appropriate frequency controlling hardware of the frequency oscillator located at each node, in order to effectively adjust the phase of the frequency oscillator to match the phase of that of the NTP server. In one embodiment, the frequency oscillator may be a numerically controlled oscillator (NCO). Next the process reverts to step204. At step204, a re-evaluation of the frequency or rate of requesting time samples from the NTP server may occur. Otherwise, the process of obtaining additional absolute times from the NTP server continues at the frequency previously determined.

Aspects of the invention provide for synchronization of all telecommunication channels associated with a particular gateway. The absolute time, as provided by the NTP server, may be used to generate an adjustment parameter that is used to correct all telecommunication channels transceived by the gateway. As a result, multiple adjustment parameters are not necessary using the approach provided by the aforementioned embodiments. Thus, the same adjustment is made to all channels. Further, it is contemplated that in one embodiment, all telecommunication channels are adjusted by a common board level adjustment, allowing for simplification of implementation. In embodiments where board level correction is not possible, it is contemplated that channel based resampling may also be used for adjusting the local oscillator frequency.

The use of NTP as a tool for synchronizing nodes to improve signal transmission may result in higher signal to noise ratios of received voice band data. As a result, the system and method may be used as a means to transmit higher bandwidth voice band data, such as that specified by V.90 and V.92.

In one embodiment, the adjustment parameter described inFIG. 2may be stored in memory of each of the computing devices. The adjustment parameter may be stored in non-volatile memory to provide an estimate of the adjustment parameter if a computing device is power cycled or shut down. In one embodiment, the adjustment parameter may be stored periodically into the non-volatile memory. The rate at which the adjustment parameter is stored may be determined by a user. The rate may be based on variability of the adjustment parameter over time. In one embodiment, the adjustment parameter may be stored when the adjustment parameter changes a particular amount or a certain percentage. In this fashion, the accuracy of a clock source for a computing device may be improved from its previously stored state. This obviates performing repetitive NTP time requests as described in the initialization process of step200ofFIG. 2. As a result of using this technique, it is contemplated that any computing devices that are powered down will be quickly re-synchronized.