US 8160030 B2
The present invention provides a data rate controller system for determining the coder used, and hence the data rate, for a plurality of channels in an associated network. Each channel provides statistical information about an associated signal to a central controller (or call/resource manager). The controller considers the information and sends control instructions to each channel for selecting an appropriate coder and/or data rate. The statistical information might include lost-frame rate, jitter, call event discrimination, and system resource utilization. By considering each channel from a centralized standpoint, the network can be optimized according to network capabilities and channel resource capabilities. A profile might also be used where each channel autonomously chooses a coder based upon background noise derived from the source signal.
1. A data rate controller system for providing control instructions to a plurality of channels on corresponding channel devices operating on a network, the system comprising:
at least one channel configured to detect background noise conditions and provide channel resource utilization information and network utilization information associated with the at least one channel;
at least one coder provided for running at a certain data rate on each channel device; and
a central controller for interacting with the plurality of channels, wherein the background noise conditions, the channel resource utilization information and the network utilization information associated with the at least one channel are used by the central controller to determine a type of coder employed by a respective channel device associated with the at least one channel, the central controller sending a control instruction to each channel to facilitate implementation of the coder when the background noise conditions are determined to exceed a threshold.
2. The data rate controller of
3. The data rate controller of
4. The data rate controller of
5. The data rate controller of
6. The data rate controller of
7. The data rate controller of
8. A data rate controller system for providing control instructions to a plurality of channels on corresponding channel devices operating on a network, the system comprising:
at least one channel with means for detecting background noise conditions, and means for providing channel resource utilization and associated network utilization information for each channel;
at least one coder provided for running at a certain data rate on each channel device; and
a central controller for interacting with the plurality of channels, wherein the noise conditions and the resource and network utilization information, from each channel, are used by the central controller to determine the type of coder that should be run on each channel device, with the central controller sending a control instruction to each channel to facilitate implementation of the coder, wherein the background noise conditions are determined to be greater than a set level.
9. The data rate controller system of
10. A data rate controller system of
at least one channel with means for providing channel resource utilization and associated network utilization information for each channel;
at least one coder provided for running at a certain data rate on each channel device; and
a central controller for interacting with the plurality of channels, wherein the resource and network utilization information, from each channel, are used by the central controller to determine the type of coder that should be run on each channel device, with the central controller sending a control instruction to each channel to facilitate implementation of the coder, wherein the control instruction facilitates upspeeding the coder if the network utilization is low.
11. The data rate controller system of
12. A method for providing control instructions to a plurality of channels on corresponding channel devices operating on a network, comprising the steps of:
detecting, in at least one channel, background noise conditions;
providing, to a central controller from the at least one channel, channel resource utilization information and network utilization information associated with the at least one channel;
determining, in the central controller, a type of coder employed by a respective channel device associated with the at least one channel based at least upon the background noise conditions, the channel resource utilization information, and the network utilization information; and
transmitting, to the respective channel device, a control instruction to facilitate implementation of a coder when the background noise conditions exceed a threshold.
13. The method of
14. The method of
15. The method of
16. The method of
17. The method of
18. The data rate controller of
The present application is a continuation of U.S. patent application Ser. No. 10/083,053, filed Feb. 26, 2002, now U.S. Pat. No. 7,254,120, the contents of which are expressly incorporated herein by reference as though set forth in full.
The present invention provides a system to control the data rate used by an end device in order to manage available resources and provide sufficiently high voice quality. In particular, the device might exist on a network with other such devices, and the data rates of each will be managed.
Internet protocol (IP) networks, and the like, for providing data communication among a plurality of computers are well-known. Such networks facilitate the transfer of data files, audio information and video information, as well as any other information that may be represented in binary form among the plurality of computers.
Networks can be conveniently divided into two broad categories, based upon their size. A local area network (LAN) is a group of computers which is connected so as to facilitate the sharing of applications, data and peripherals. Local area networks are generally confined to a single building or a small group of buildings.
A wide area network (WAN) is made up of a plurality of LANs which is connected together so as to facilitate communication therebetween. A WAN may cover a city, a state, a country or even be international in scope. The Internet is an example of a WAN that includes more than 2,000 separate packet-switched networks that are located all over the world.
The popularity of networks, such as the Internet, has increased the desire for additional network services, such as network telephony. The vast, high bandwidth network provides an ideal medium for audio communications. The nature of such telephone devices is to process voice signals that might come in over the network, typically as digital packets of information, or the like. To process such signals, various computing and processing devices are used, typically in the form of integrated circuit configurations. These devices are often capable of handling multiple channels of information. Alternatively, multiple channels might be processed using multiple devices distributed across a network.
For telephony and voice applications, packet-based networks are becoming more widely used. In the past, it was often difficult to guarantee sufficient bandwidth or a certain “quality of service” that might be needed to accommodate real-time voice signals (that are broken into packets). However, known solutions have been developed which address various problems associated with transmitting voice over packet networks, including, for instance, voice over IP (Internet Protocol), voice over ATM (asynchronous transfer mode), and voice over frame relay.
Prior art solutions include voice coders (i.e., particularized hardware and software devices) that can be applied to packet-based voice systems. Voice coders are configured to process and encode incoming voice signals at certain data rates. In general, if a higher data rate is used (i.e., more voice samples are taken), then the voice coder does not need to be as complex. In other words, fewer hardware components might be employed, or the software associated with the device might be less complex. Conversely, if a lower data rate is used, the voice coder is generally more complex since more compression needs to be performed on the signal.
This data rate can be varied, depending upon the input signal or source being supplied to the device. For such devices, the term variable bit rate (VBR) has been defined as follows: A VBR encoder outputs a bit stream which may have a variable number of bits in successive frames. That is, each frame may contain a different number of bits relative to the last frame. Bit-rates may vary, for example, in large predefined increments/decrements, or the bit-rates may vary by as little as one-bit resolution. The variability in bit rate may be either network controlled or source controlled according to the input audio signal.
Source controlled rate (SCR) devices use the source to vary the bit rate. For instance, during a normal telephone conversation, the participants alternate speaking so that, on average, each direction of transmission is occupied 50% of the time. SCR is a mode of operation where the speech encoder encodes speech frames containing only background noise with a lower speech rate than might be used for encoding speech. A network may also vary its transmission scheme to take advantage of the varying bit rate. Benefits provided therein include: (a) increases battery life and/or reduces power consumption of the associated processing system, and (b) the average required bit-rate is reduced, thereby leading to a more efficient transmission with decreased load and hence increased capacity.
Encoders conform to various standards proposed through the International Telecommunication Union (ITU) and European Telecommunications Standards Institute (ETSI). The ITU Telecommunication Standardization Sector (ITU-T) is one of the three Sectors of the ITU. The ETSI focuses moreso on European standards. The mission of the ITU and the ETSI is to ensure efficient production of high quality standards covering certain fields of telecommunications. Table 1 (ITU) and Table 2 (ETSI) show certain representative encoding standards:
These representative encoders are part of a growing list of standards, with each different device being used according to its specification of abilities for a given situation. For instance, G.728 is an international voice compression standard from ITU and has rapidly gained acceptance for many applications including: satellite, cellular, and video-conferencing systems. G.728 is specified as part of the H.320 international video-conferencing standard. One reason for its rapid acceptance is that G.728 delivers the same toll-quality voice as 32 Kbps ADPCM (adaptive differential pulse-code modulation), but in only half the bandwidth. Note that ADPCM is a technique for converting sound or analog information to binary information (a string of 0's and 1's) by taking frequent samples of the sound and expressing the value of the sampled sound modulation in binary terms.
Certain members of this group of representative encoders are known to incorporate various aspects of SCR. For instance, the ETSI GSM-AMR coder is source controlled, as well as Qualcom's QCELP coder, and certain VAD-Speech coder combinations. Network management systems in current use will normally manage network bandwidth by downspeeding endpoints during congestion. However, the various members of this overall collection of encoders are not believed to use a collection (or combination) of statistical information—that might be derived from the network (i.e., the devices in the network and the associated connections) and the source—in order to arrive at a data rate decision. It is one important aspect to collectively consider the data rate needs of all of the devices in the network. It is also an important aspect to have a system that can adjust the rates of each device to thereby create a more efficient throughput of data across the entire system.
Accordingly, what is needed in the field is central controller coupled with a network of devices which can monitor statistical information (or the like) associated with each network device. The information might be considered alone or in combination with other information and thereby adjust the data rate of each device based upon such statistical information.
The present invention provides a system for adjusting the data rates of various channels within a network of devices. Each channel within a device runs a coder that conforms to certain standards, depending upon what particular coding functions the channel is supposed to perform (i.e., voice, data, FAX, etc.). Moreover, certain coders perform better under different adverse conditions, such as noise, jitter, lost packets, etc. Among other things, the different coders can operate at different data rates. Selection of the appropriate coder for the situation provides for selection of an appropriate data rate.
The present invention includes a call/resource manager (or central controller) that receives statistical information from a plurality of channels associated with the manager. The channels provide statistical information to the manager about the inbound/outbound signal, the channel resources, and/or the network resources. This information might involve certain factors in order to make a coder (i.e., data rate) decision. These factors include, but are not limited to, estimated lost packet rate, estimated jitter in the network, estimated background noise level, estimated network utilization, and estimated process utilization. The corresponding information would be provided by devices such as a lost frame rate estimator or a jitter estimator in a voice synchronizer, a jitter estimator in a voice synchronizer, a call discriminator, and/or resource information (from the network or from the channel processors). These information-providing devices might be sub-components of an overall system, such as a network telephony device or the like.
The manager thereby monitors statistics and events from each channel and thereafter generates control instructions to be sent to a portion (or all) of the channels. For instance, if a high lost frame rate is indicated, a switch can be made on some or all of the channels to a lower rate coder. In an illustrative embodiment, if a high lost frame rate is indicated, the packetization interval is reduced. This should reduce network congestion, as well as the high frame loss condition. A lower-frame lost condition will improve voice quality. If a high jitter rate is detected, then instructions can be given to downspeed all or some of the channels. This should relieve congestion on the network, which should improve jitter performance. If a call discriminator detects a certain type of call, then the manager might also consider network utilization and/or system resource utilization in order to switch from one mode to another mode (i.e., voiceband data mode to FAX relay mode). Background noise might also be used by a channel to derive an upspeed request, which will be considered by the manager/controller in light of network utilization and resource utilization.
Still another embodiment might utilize channels that can autonomously switch to any of a number of coders that comprise a set for that channel. The network will thereby have profiles that must be satisfied for each network path. Based upon background noise (or the like), the channel will switch to a preferred coder. After each coder is selected, the network requirements will be satisfied according to the determined profiles that were used to determine the set of coders for each channel.
Accordingly, one aspect of the present invention provides for a data rate controller system for providing control instructions to a plurality of channels on corresponding channel devices operating on a network. The system includes at least one channel that provides statistical information about the associated channel signal. The system also includes at least one coder and a central controller. Each coder provides for running at a certain data rate on each channel device. The central controller interacts with the plurality of channels. Statistical information about each channel signal is used by the central controller to determine the type of coder that should be run on each channel device. The central controller sends a control instruction to each channel to facilitate implementation of the coder.
Another aspect of the present invention provides for a data rate controller system for providing control instructions to a plurality of channels on corresponding channel devices operating on a network. At least one channel has means for detecting background noise conditions, and means for providing channel resource utilization and associated network utilization information for each channel. At least one coder runs at a certain data rate on each channel device. A central controller interacts with the plurality of channels. The noise conditions and the resource and network utilization information, from each channel, are used by the central controller to determine the type of coder that should be run on each channel device. The central controller sends a control instruction to each channel to facilitate implementation of the coder.
Still another aspect of the present invention provides for a data rate controller system for allowing a plurality of channels on a network to each select a channel coder that fits an associated network profile. The system includes a network of channels having a plurality of connections. The network forms a profile of allowed data rates that might flow across the connections. A set of coders is associated with each channel on the network. A device is associated with each channel for detecting source information. The source information is used by each channel to select an appropriate coder from each set of coders, with each channel thereafter satisfying the profile.
It is understood that other embodiments of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein shown and described are only example embodiments of the invention by way of illustration. As will be realized, the invention is capable of other and different embodiments and its several details are capable of modification in various other respects, all without departing from the spirit and scope of the present invention. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.
Certain aspects and advantages of the present invention will be apparent upon reference to the accompanying description when taken in conjunction with the following drawings, which are exemplary, wherein:
The present invention is described below in terms of certain preferred embodiments and representative applications. The examples provided are intended to be used with any communication system that would benefit from having a controller that can control the data rates used by various devices in a network or system. The controller will be used to monitor and interpret various statistical information pertaining to the network and its interconnected devices. While a certain set of examples is presented in terms of what statistical information to use, any of a variety of other statistical information might also be considered and used to adjust the data rates of the various networked devices.
The present invention is also intended to apply to voice over packet networks, including, but not limited to, Voice over IP (VoIP), Voice over ATM (VoATM), voice over frame relay and cellular/wireless/PCS networks. The present invention describes certain methods involved in performing the switch. Certain representative factors are also described, which can be used in making the data rate decision. These factors include, but are not limited to, the following: (1) estimated lost packet rate, (2) estimated jitter in the network, (3) estimated background noise level (i.e., source statistics), (4) estimated network utilization, and/or (5) estimated processor utilization (either committed or observed).
According to such statistics, a system is provided to control the rate of an end device in order to manage resources available and thereby obtain a high voice quality across each device in the network. These statistics can be broken down into source statistics and network statistics. Source statistics (i.e., background noise level and the like) are derived directly from the incoming signal and do not require any information from/about the other devices in a system. Network statistics, however, require the system to have a central manager, which manages all of the channels being aggregated onto a network. The central manager might similarly include a host, call manager, call agent, or the like. The manager will serve to monitor statistics and events from each channel and thereafter make rate (i.e., bandwidth) decisions based on a multitude of factors (including, for instance the factors 1-5 shown above).
Representative examples are next described for utilizing each statistical piece of information listed above, namely Lost Frame Rate, Jitter, Call Discriminator Request, Estimated Background Noise, and Network Profile Support. The present invention is not intended to be strictly limited to these statistical pieces of information, as other forms of statistical information might also be used.
Lost Frame Rate (see
Referring again to
According to one aspect of the present invention, if all of the channels are using a voice compression algorithm with low complexity (i.e., ITU-T standard G.711), and the lost frame rate is high on all channels (for instance >2%), then a switch should be made to a lower data rate encoder.
By switching to a lower rate encoder, overall congestion on the network should be reduced. This is because the lower rate encoder pushes fewer bits out onto the transmission path (or network paths) for an equivalent amount of incoming voice/data signal. In turn, the lower rate should help to reduce the high frame loss condition. By lowering the frame loss rate, the voice quality will thereby be improved (despite using the lower rate encoder). In an illustrative embodiment of the present invention, if a switch is made to a lower rate encoder as a result of a high lost frame rate, a lower packetization interval is used, and this will minimize the temporal effect of a single lost frame.
In this example, the high-loss frame rate is detected on inbound channels. Note that each channel is shown to function as either an inbound 220 or outbound 222 signal. However, there may or may not be congestion on outbound channels. Accordingly, this system should also signal the call resource managers to send instructions to decrease the bandwidth used by the end devices (i.e., the devices employing the channel on the network).
Alternatively, the end devices might be configured to switch to a different voice coder when a change in the egress rate is detected. For instance, if the egress rate increases, then a higher rate coder might be used. Conversely, if a lower egress rate is detected, then a lower rate coder might be used. This would provide for maximum performance of voice quality in the system while accounting for bandwidth capabilities of the network and devices within the network.
Causes of jitter include (among other things) processing delay, queueing of packets in network equipment, and different delays due to the possibly different paths packet take while traversing the network. In audio signals, jitter can introduce phase distortion or other undesired effects in the signal and loss of transmitted data between network devices. The amount of allowable jitter depends greatly on the application at hand.
Generally, the high jitter is detected on inbound packets 430. The rate change thereafter affects outbound packets 432. Similar to the end device described above, the system should also signal the call resource manager(s) 402 to decrease the bandwidth used by the end devices. Alternatively, the end devices could switch voice coders when an egress rate change is detected.
Call Discriminator Request (see
Based on network utilization and/or system resource utilization (505, 509, 513) (i.e., MIPs, memory, or the like), certain control instructions (or commands, 520, 522, and 524, respectively) are sent from the manager 502 to each channel 504, 508, and 512. The control instruction facilitates the channel switching from one mode to another. For this particular example, the mode might switch from a voice mode to a voiceband data mode. Such switching might include running a G.711 voice coder, and setting the jitter buffer to a non-adaptive mode. The channel switching might additionally facilitate switching to FAX relay.
As described above, a lower complexity encoder produces more bits and requires more bandwidth in order to send data. A high complexity encoder produces fewer bits because the compression algorithm is more complicated. The needs of each device need to be weighed against the capabilities of the system. For instance, a voice coder like G.711 has a relatively low complexity and therefore requires a relatively higher amount of bandwidth to send data. FAX relay is higher complexity than a G.711 coder and therefore requires more system resources.
Accordingly, each of the channels on the network is analyzed to determine the overall capabilities of the system. If it is determined that the network congestion is high, and the system resource utilization is low, then FAX relay might be used. If the network congestion is low, but the system resource utilization is high, then the voiceband data mode might be used.
Still another case might find both the network being congested, and the processor being overworked. In such a case, the FAX call might simply be dropped. Note that high network utilization implies that bandwidth is not available to carry the FAX call via G.711. Conversely, high resource utilization means that there may not be enough resources to run the complex FAX relay. Accordingly, the entire call might need to be dropped in order to satisfy the system capabilities.
The above example is meant to be illustrative only. Other call events might also be considered, in light of system resource utilization, in order to determine control instructions to send to a portion of the channels or all of the channels.
As before, generally the call event type is detected on inbound signals 530. Any rate change will affect outbound packets, and the system should signal the call resource managers to decrease the bandwidth used by the end devices. Again as before, the end devices might switch voice coders when an egress rate change is detected.
Estimated background noise (derived from source)—The background noise of an inbound signal can be derived from the source without each channel needing to communicate with the central controller. This background noise (alone) can be used to determine whether a channel (in an associated device) should switch from one data rate to another. However, certain advantages might also be derived by considering the system resource utilization of each device on the network.
Support for Network Profiles—Still another example might utilize a profile of possible coders that would be supported by a particular network configuration.
Each path 710, 712, and 714 in the network 708 will have a certain profile of capabilities that have been derived from various factors, including, for instance, the network capability (i.e., each path in the network or the overall network), and the processor resource capabilities of the various devices using the channels. The profiles should be designed so that if each channel chooses to run a certain standard, the network and processor resources will be within the capabilities of the system.
For instance, channel 1 might be running the G.711 standard at 64 kbps. The channel might thereafter detect very low background noise conditions and autonomously switch to a lower rate standard within channel set, such as the G.729 standard, in order to conserve processor/MIPs resources. Channel 2 (704) through channel N (706) might perform similar switching from one standard to another, based upon the background noise associated with each of these channels. The profiles available for each of these coders will provide a workable system configuration for any selected coder, even though the coders are autonomously selected by each separate channel.
By implementing any of these example representations, a higher quality system might be maintained at a lower cost. By sharing resources and trading off network bandwidth, a higher system utilization might be achieved, which in turn can increase quality of the voice/data transmission over a channel.
Although certain exemplary embodiments of the present invention have been described, it should not be construed to limit the scope of the appended claims. For example, the present invention can be implemented by both a software embodiment or a hardware embodiment. Those skilled in the art will understand that various modifications may be made to the described embodiment. Moreover, to those skilled in the various arts, the invention itself herein will suggest solutions to other tasks and adaptations for other applications. It is therefore desired that the present embodiments be considered in all respects as illustrative and not restrictive. It is therefore intended that the following claims be interpreted as covering all such alterations and modifications as fall within the true spirit and scope of the invention.