# Patent

## Title
Enhancing voice QoS over unmanaged bandwidth limited packet network

## Abstract

An improved telephony adapter compresses voice data, creates IP packets, and prioritizes the voice IP packets over the data IP packets. Preferably, the compression and packetization interval is such that the bandwidth occupied by the voice IP packets is approximately half of the minimum average available bandwidth in the upstream direction, thereby maintaining acceptable latency and voice quality of the speech. Further enhancement is achieved by causing the ISP to also give priority to voice packets that are destined to the telephony adapter, over the data packets that are destined to the telephony adapter.

## Background
BACKGROUND OF THE INVENTION
This invention relates to telecommunications over packet networks, illustratively, the Internet, and more particularly, to a method and apparatus for enhancing Quality of Service (QoS) for voice communication over such a network.
Once information is injected into the Internet, its worldwide movement is free, and that constitutes a powerful motivator to the creation of Internet telephony. Consequently, numerous techniques and various offerings are now available for IP telephony (VoIP). Products such as CoolTalk (Netscape), Internet Connection Phone (IBM), IPhone (Intel), NetMeeting (Microsoft), Quarterdeck WebTalk (Quarterdeck), TeleVox (Voxware), WebPhone (Netspeak), etc. are examples thereof.
FIG. 1 presents a block diagram of a telephony adapter 10 that may used to couple a POTS (Plain Old Telephone Service) telephone to the Internet. Adapter 10 comprises a telephony port 2 that is connected to interface card 11, and a number of data ports that apply IP packets that are received from digital appliances, such as computers, to input terminals of switch 14. Interface card 11 emulates the central office environment by providing the necessary DC current, off-hook detection, ringing signal generation means, etc. The analog signal that is received at port 2 in the course of a conversation, i.e., following a detected off-hook state and prior to a detected on-hook state, is converted to digital form in A/D/A bi-directional converter module 12, and applied to D/IP/D (digital-to-IP, and IP-to-digital) bi-directional converter module 13. The IP packets of module 13 are applied to another input terminal of switch 14, which is a Layer 2 switch whose output is applied to controller 15. Controller 15 also manages switch 14.
Given that each port of switch 14 can be coupled to a source of packets, and that some of the packet sources are computers that may run applications that, themselves, output more than one stream of IP packets, it follows that the channel from telephony adapter 10 to ISP 111 (upstream channel of link 20) can be quite in demand. Typically, however, an ISP offers a relatively narrow bandwidth to upstream channels because, at least in the past, users tended to download a lot more information than they tended to upload. This fact, as well as the technical limitations of most commonly deployed residential high-speed data networks, has led most ISP providers to utilize an asymmetrical service, with a broader downstream bandwidth and a narrower upstream bandwidth (for example, asymmetrical DSL, also known as ADSL).
Since the notion of dedicated facilities as in the conventional telephone network does not exist in packet networks such as the Internet, IP telephony presents a challenge because the transmission facility between a user and the Internet is of limited bandwidth. This challenge is particularly acute in the upstream direction because of the smaller bandwidth provided by the ISP in that direction.
SUMMARY
An advance in the art is realized with an improved telephony adapter that compresses voice data, creates IP packets, and prioritizes the voice IP packets over the data IP packets. Preferably, the compression and packetization interval is such that the bandwidth occupied by the voice IP packets is approximately half of the minimum average available bandwidth in the upstream direction, thereby maintaining acceptable latency and voice quality of the speech. Further enhancement is achieved by causing the ISP to also give priority to voice packets that are destined to the telephony adapter, over the data packets that are destined to the telephony adapter.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 presents a block diagram of a prior art telephony adapter;
FIG. 2 presents a block diagram of an arrangement in accord with the principles disclosed herein;
FIG. 3 is a flow chart of the prioritization performed on packets by controller; and
FIG. 4 presents a flow chart of a process carried out by controller 17 of FIG. 2.



DETAILED DESCRIPTION
FIG. 2 depicts an arrangement for providing both voice and data service to customers through an unmanaged packet network with an improved telephony adapter. In the context of this disclosure, an managed network is a network that is not affirmatively known to be managed from the standpoint of prioritization of customer traffic (in contrast to network control traffic). Illustratively, FIG. 2 comprises unmanaged Internet network 100, and unmanaged IP networks 110 and 120. Networks 110 and 120 may be part of the Internet, but that is not a requirement of this invention. FIG. 1 also comprises voice service provider's network 200 and PSTN 210 that are connected to each other via gateway 21. Network 200 is characterized by an ability to provide voice-grade quality of service, although it may be wholly a packet network. Illustratively, network 200 is under control of an entity that ensures proper prioritization for voice packets (if network 200 also carries data packets) and that servers in network 200 include applications that, through interaction with IP phones, can establish connections among IP phones, and between IP phones and PSTN network 210 phones, such as telephone 19. In other words, network 200 belongs to an IP telephony provider.
Each customer that is connected to a packet network is connected to an Internet Service Provider (ISP) server, and those servers that seek to benefit from packet network telephony are connected to the network via a telephony adapter. Thus, FIG. 2 depicts one customer that employs telephony adapter 30 to connect computer 31 and telephone 32 to packet network 110 via ISP 111, and another customer that employs telephony adapted 40 to connect computer 41 and telephone 42 to network 120 via ISP 121. Telephones 32 and 42 are POTS telephones.
TA 30 is a telephony adapter that is improved in accord with the principles of this invention by interposing a speech compression module 16 between elements 12 and 13. Module 16 compresses the speech signal that is received from element 12, and un-compresses compressed speech signal that it receives from element 13. Module 16 may be constructed with a stored program controller microprocessor that implements speech compression in accordance with any selected speech compression algorithm. For various reasons, it is preferred to employ a standardized compression algorithm. For example, algorithms known as G.729e, G.729ab, or G.726, with 20 ms packetization would be good choices. Of course, there is nothing particularly significant about the 20 ms length of the speech segments that are packetized, and other values will also work, for example, in the range of 5 to 50 ms. Our notion is that the compression and packetization interval should be such that the bandwidth occupied by the voice IP packets is approximately half of the minimum average available bandwidth in the upstream direction
TA 30 is also improved by incorporating a packet prioritization process within controller 17, which, otherwise, is akin to controller 15. Controller 17 exercises a prioritization process in connection with the transmission of its incoming packets, illustratively with two processes that operation concurrently, one of which is an event-driven process. The event driven process, shown in FIG. 3 is responsive to an incoming packet. Whenever a packet arrives at controller 17, step 51 determines whether the packet is a voice packet or a data packet. A voice packet is routed to step 52, which stores the packet in a FIFO voice buffer within controller 17, and a data packet is routed to step 53, which stores the packet in a FIFO data buffer within controller 17. Concurrently, controller 17 executes the process depicted in FIG. 4, where the aim of the process is to empty the voice buffer before emptying the data buffer. Accordingly, step 54 determines whether the voice buffer is empty. If it is, control passes to step 55, which determines whether the data buffer is empty. If it is, control returns to step 54. As soon as a packet is stored by the event-driven process of FIG. 3, either step 54, or step 55 determines that the voice buffer, or the data buffer (respectively) is not empty.
If it is the data buffer that is not empty, control passes from step 55 to step 56, which outputs the oldest data packet from the voice buffer, and passes control to step 58. Step 58 transmits the presented packet. While the presented (data) packet is being transmitted, one or more data packets, and/or a voice packet, may arrive, which trigger the FIG. 3 process and populate the appropriate FIFO buffer within controller 17, as described above. When the telephone adapter services only a single telephone, and the data packets are not longer than the repetition rate of voice packets submitted to controller 17 (having period T), then only one voice packet may arrive while the data packet is being transmitted. When step 58 completes transmission of the data packet, control returns to step 54.
When step 54 encounters a non-empty voice buffer (holding a voice packet, or more than one voice packet if more than one telephone is being serviced, or the length of data packets comes greater than T) control passes to step 57, which outputs the oldest voice packet from the voice buffer, and passes control to step 58. While the voice packet is being transmitted, one or more data packets may arrive, which trigger the FIG. 3 process and populate the data FIFO buffer within controller 17. One or more other voice packets may also arrive, if the telephone adapter services more than one telephone. Actually, even when a single telephone is serviced, another voice packet may arrive if the length of a data packet is close to T (causing a delay in the transmission of the voice packet to a point where the next voice packet arrives before transmission of the current voice packet completes). Hence, when transmission of the presented packet is completed in step 58 and control passes to step 54, it may happen that the voice buffer will be determined to be still not empty. According to the FIG. 4 process, the voice packets receive priority over the data packets, causing continued transmission of voice packets until the voice buffer is empty. Only then the transmission of the data packets proceeds, being interrupted, if necessary by the intervening arrival and subsequent transmission of voice packets in the manner described above.
It may be noted that IP telephony can take place between telephone 32 and telephone 42 without assistance from other network elements, provided that address information of telephone 42 (IP address and port number) is available to controller 17, and if address information of telephone 32 is made available to the controller within TA 40. TA 30 outputs to ISP 111 voice packets (of voice originating from telephone 32) that are addressed to the IP address of TA 40 and appropriate port number of telephone 42, and TA 40 outputs to ISP 121 voice packets (of voice originating from telephone 42) that are addressed to the IP address of TA 30 and appropriate port number of telephone 32.
The above disclosed apparatus and method address only the prioritization of packets from TA 30 to ISP 111; or to state more generally, from a TA to the IP packet network. Once packets enter ISP 111 and join the flow of packets from ISP 111 to network 110, there is no prioritization control (in the unmanaged networks). Even as voice packets enter ISP 121 and seek to enter TA 40, there is no prioritization of voice packets over data packets that are also destined to enter TA 40.
This latter failing may be readily remedied, in accord with the principles disclosed herein without undertaking to convert the unmanaged networks into priority-managed networks. This is accomplished by adopting the FIG. 3 and FIG. 4 schema within each of the ISPs. Thus, as disclosed in FIG. 3, when packets arrive at ISP 111 that are destined to TA 30, they are stored in either a voice buffer or a data buffer, as the nature of the packets dictates. Concurrently, as disclosed in FIG. 4, packets are sent to TA 30 based on priority, always emptying the voice buffer before attempting to empty the data buffer.
The above-described approach for carrying on a VoIP conversation between telephone 32 and other telephones is not favored for various reasons. One reason, for example, is that this approach requires TA 30 to know the destination addresses of all telephones that the user of the telephone that is connected to the TA might wish to be connected to. Consequently, IP telephony is moving in the direction depicted in FIG. 2, where a voice-over-IP (VoIP) provider is involved in the control of each IP call.
In such an arrangement, all TAs are provisioned to send their telephony control packets to a their specific server within network 200, such as server 201 for TA 30. When telephone 32 wishes to establish a VoIP connection, controller 17 responds to the off-hook signal of telephone 32 by sending an “off-hook” IP control packet to sever 201. This packet identifies the IP address of TA 30 and the port number by which telephone 32 can be reached by TA 30. Server 201 responds with the appropriate control packet, which is converted within TA 30 to a conventional dial tone that is applied to telephone 32. Telephone 32 proceeds with the conventional DTMF dialing signal, that signal is detected within the telephony adapter, and forwarded to server 201 in a telephony control packet; thus communicating the called party's number to server 201. Server 201 maintains a database of telephone numbers. If the database look-up determines that the destination number is that of a telephone that is accessible via the PSTN, e.g. telephone 19, then server 201 interacts with gateway 21 and establishes a connection to telephone 19 via network 100 and PSTN 210. If, however, the database look-up determines that the destination number is that of a telephone connected to an IP network, for example, telephone 42, then server 201 retrieves the IP of TA 40 and the port number of telephone 42, and sends an “alert” control packet to TA 40 via server 202. The alert packet causes telephone 42 to ring. When telephone 42 goes off hook, an “off-hook” control packet is sent to server 201 (via server 202), server 42 provides a control packet to TA 40 informing it of the IP address and port number of telephone 42, provides a control packet to TA 30 informing it of the IP address and port number of telephone 32, and withdraws from further interactions (until needed). The conversation between telephones 32 and 42 continues through direct communication; effectively in the same manner as it does in embodiments that do not employ the services of network 200.
What network 200 contributes, then, is the ability to easily establish connections among any telephones; be it telephones that are connected to a TA, or telephones that are connected directly to PSTN 210. Still, while packets flow through networks 110, 100, and 120, there is no prioritization of voice packets over data packets. Moreover, there is no guarantee that the order of packets is maintained. Hence, even when there is both a voice packets flow and a data packets flow from TA 30 to TA 40, and a certain voice packet was sent out before a certain data packet, there is no assurance that the voice packet will arrive at telephone 42 before the data packet arrives at computer 41.
Being cognizant that networks 110, 100, and 120 are not managed and that telephones 42 and 32 can be separated by many nodes (particularly when these telephones are physically far apart (e.g., one phone in a hamlet of India, and the other phone in a hamlet of Missouri) and that, therefore, there are numerous opportunities for data packets to delay voice packets, it may make sense in some circumstances to force the voice connection between telephone 42 and telephone 32 to employ network 200 so that at least for some of the packets' journey they pass through a managed network that prioritizes voice packets over data packets. This can be accomplished by establishing an IP tunnel between ISP 111 and server 201, and between ISP 121 and server 202.
The above disclosure is couched in terms of a single telephone at a telephony adapter, and only one computer is depicted as being connected to each TA. It should be realized, however, that a single TA can concurrently service (support) a number of telephone instruments, as well as a number of digital appliances. Further, it should be realized that POTS telephone 32 may be replaced with an IP telephone that provides some of the functionalities that the disclosed TA provides. That would simplify the design of the TA. Still further, it should be realized that the IP telephone may be implemented, and effectively embedded, in a computer, such as computer 31. Also, the processes described in FIGS. 3 and 4 work independently, with the FIG. 3 process storing packets in the appropriate FIFO buffer as soon as they arrive. A skilled artisan should realize that different processes can be implemented without departing from the spirit and scope of this invention. An alternative process, for example, would store incoming data packets only if transmission of a voice packet is taking place. Otherwise, that is, when both the voice packet buffer and the data packet buffer are empty, the alternative process proceeds directly to transmitting the packet.

## Claims

1. A telephone adapter comprising:
a plurality of ports for connecting a group of customer appliances to said adapter;
a controller having an interface for connecting, through an entry point to a network, to an ISP; and
a priority-imposing module that
accepts presented voice packets from one or more voice appliances connected to respective one or more of said ports, and accepts data packets from one or more data appliances connected to respective one or more of said ports, where said one or more voice appliances and said one or more data appliances form said group of customer appliances;
outputs a voice packet to said entry point when said voice packet is available in said adapter; and
outputs a data packet to said entry point when said data packet is available in said adapter, but only if a voice packet is not available in said adapter;

where at least some of said ports are physically distinct ports, and
where at least one of said physically distinct ports (herein referred to as POTS port) is adapted for connecting to a POTS telephone, said adapter further comprising a series connection of
an A/D/A module;
a CM/UNCM module; and
a D/IP/D module;
where said A/D/A module converts analog signal received at said POTS port to digital signal, said CM/UNCM module performs speech compression on said digital signal of said A/D/A module to form a compressed signal, and said D/IP/D module converts said compressed signal to IP packets; and
where said D/IP/D module converts IP packets destined to said POTS port to a digital signal, said CM/UNCM module performs speech decompression of said digital signal of said D/IP/D module to form a digitized analog signal, and said A/D/A modules converts the digitized analog signal to output analog signal, and applies said output analog signal to said POTS port.