US8032808B2 - System architecture for internet telephone - Google Patents

System architecture for internet telephone Download PDF

Info

Publication number
US8032808B2
US8032808B2 US10/906,598 US90659805A US8032808B2 US 8032808 B2 US8032808 B2 US 8032808B2 US 90659805 A US90659805 A US 90659805A US 8032808 B2 US8032808 B2 US 8032808B2
Authority
US
United States
Prior art keywords
packet
gateway server
codec
internet
voice
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US10/906,598
Other versions
US20050135339A1 (en
Inventor
Mike Vargo
Jerry Chang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advent IP LLC
Original Assignee
Advent IP LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/907,686 external-priority patent/US6167060A/en
Priority to US10/906,598 priority Critical patent/US8032808B2/en
Application filed by Advent IP LLC filed Critical Advent IP LLC
Publication of US20050135339A1 publication Critical patent/US20050135339A1/en
Assigned to LAURUS MASTER FUND, LTD. reassignment LAURUS MASTER FUND, LTD. SECURITY AGREEMENT Assignors: TELEMATE.NET SOFTWARE, INC., VERSO TECHNOLOGIES, INC., VERSO VERILINK, LLC
Assigned to Advent IP LLC reassignment Advent IP LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VERSO TECHNOLOGIES, INC.
Assigned to VERSO TECHNOLOGIES, INC. reassignment VERSO TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CLARENT CORPORATION
Assigned to CLARENT CORPORATION reassignment CLARENT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHANG, JERRY, VARGO, MIKE
Priority to US13/114,050 priority patent/US8238330B2/en
Publication of US8032808B2 publication Critical patent/US8032808B2/en
Application granted granted Critical
Priority to US13/355,803 priority patent/US9312983B2/en
Adjusted expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0014Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the source coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/22Arrangements for supervision, monitoring or testing
    • H04M3/2218Call detail recording
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/08Indicating faults in circuits or apparatus
    • H04M3/12Marking faulty circuits "busy"; Enabling equipment to disengage itself from faulty circuits ; Using redundant circuits; Response of a circuit, apparatus or system to an error
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/006Networks other than PSTN/ISDN providing telephone service, e.g. Voice over Internet Protocol (VoIP), including next generation networks with a packet-switched transport layer

Definitions

  • the present invention relates generally to an Internet telephone system, and specifically to a system architecture for an Internet telephone operating between a Public Switched Telephone Network (PSTN) and the Internet.
  • PSTN Public Switched Telephone Network
  • Computer networks are often organized according to principles of client/server architecture. Servers are more powerful computers dedicated to managing the network, while clients are less powerful computers, e.g. PC's or workstations, that run applications. Clients rely upon servers for various resources.
  • the most common client/server application is file sharing in distributed storage systems. Data is transferred between the hard disk of a workstation and the server memory. The advantage is that large quantities of data are stored on the server instead of at individual work stations, thereby reducing the workstation memory requirements. Moreover, non-private data is easily accessed by all work stations.
  • print servers and network servers are prevalent forms of client/server architectures. Client/server architectures are also called two-tier architectures. Multi-node architectures that are not client/server architectures are called peer-to-peer architectures; in these, each node has equivalent responsibilities.
  • Another environment for a client/server architecture involves the Internet as an electronic marketplace.
  • a person wishing to purchase an item on the Internet acts as a client by placing an order and the supplier acts as a server by filling that order.
  • Transactions in the electronic marketplace require accounting and authentication by the server of purchases by the client. Encryption prevents eavesdropping and provides transaction security.
  • DSP digital signal processing
  • DSP based cards with on-board software are more difficult and expensive to implement, but are scalable with designs including many cards per system, and thus applicable to medium and large size businesses and for inter-office calling over LAN, WAN and the Internet. These systems provide improved performance because they off-load functions such as audio compression/decompression and echo cancellation from the CPU of the host computer.
  • the digital signal processing (DSP) functions are incorporated onto the card and latency (delay) is decreased.
  • a PBX integrated module is similar to a DSP card except that there is a seamless integration into the PBX phone system.
  • This system is scalable to a higher port density than others, and is therefore applicable to larger business-to-business supersystems that bridge many PBX's and permit low cost international calling through Internet-PSTN gateways.
  • U.S. Pat. No. 5,633,916 to Goldhagen et al discloses a client/server architecture for a voice messaging service.
  • Goldhagen et al sends client telephone messages over a PSTN via a server, but the architecture does not provide for sending packet-switched messages over the Internet.
  • U.S. Pat. No. 5,508,732 to Bottomley et al discloses a gateway architecture for broadcasting digital video over servers on demand.
  • Bottomley et al is not concerned with sending voice information between clients in real time.
  • U.S. Pat. No. 5,657,376 to Espeut et al discloses an architecture for voice messaging systems that receives incoming calls over a public switched telephone network from subscribers utilizing personal computers. Espeut et al sends these messages over a server but is directed to local area networks and does not permit exchange of messages in real time.
  • the problem to be solved in Internet telephony systems is to combine the features of client/server architectures with digital signal processing to transmit voice information over the Internet. Furthermore, a practical Internet telephone system must have the capability of authenticating and billing callers in real time.
  • the Internet telephone system that links a plurality of client stations to the Internet through a plurality of gateway servers.
  • the system further includes a plurality of software modules performing digital signal processing (DSP) functions within each server.
  • DSP digital signal processing
  • An account manager is placed at an arbitrary location on the Internet for monitoring transactions between client stations and for producing billing information in real time.
  • Each server has hardware permitting Internet and ISDN connections and provides full duplex communication.
  • the gateway server includes hardware allowing respective Internet and PSTN connections, and software for providing the connections themselves.
  • the software includes the transport, the telephone port, or “teleport,” and the session.
  • the transport creates a session upon receiving an incoming call from the Internet, and the session manages the network communication between communication endpoints and establishes identifiers or labels to indicate these endpoints.
  • Also included in the software are the voice port, the wave port and the line port.
  • the voice port selects the forward error correction algorithm, dynamically chooses the codec, and frames and aligns the data packets.
  • the architecture enables a dynamic change of codecs from packet-to-packet in one stream of voice data to adapt to changing network conditions.
  • the architecture permits a dynamic change of codecs in combination with changing other factors including the level of redundancy of the error correction, the packet size and packet bundling.
  • the architecture thereby seeks to attain the best speech quality and lowest latency given the level of data loss over the Internet detected by the system.
  • a further feature of the invention is a technique for eliminating dead air space in the data stream by speeding up or slowing down the data from the buffer while maintaining a constant voice pitch.
  • FIG. 1 shows an overview of an Internet telephone system according to the present invention
  • FIG. 2 details the main features of the gateway server of FIG. 1 ;
  • FIG. 3 shows the operation of the software modules in relationship to establishing a call connection
  • FIG. 4 is a flowchart of steps in connecting a call
  • FIG. 5 shows the network architecture for establishing a call between clients over gateway servers
  • FIG. 6 shows the software modules of the gateway server in further detail
  • FIGS. 7( a ) and ( b ) show the encapsulation of a data packet by the gateway.
  • FIGS. 8( a ) to ( d ) illustrate the operation of the forward error correction algorithm of the present invention.
  • the Internet telephone system of the present invention combines the essential features of client/server architectures and digital signal processing for voice communications.
  • the DSP functions are integrated into a server instead of the individual work stations, with each server providing connection to the Internet for a plurality of client workstations.
  • the central processing units of the client work stations are therefore freed from performing the computationally-intensive digital signal processing algorithms, which are instead executed at a gateway server, resulting in low latency.
  • Callers in different countries communicate with one another over the Internet since there is at least one gateway server in each country.
  • the gateway servers thus permit packet-switched voice communication between each of the client stations over the Internet.
  • FIG. 1 illustrates in general overview the operation of the Internet telephone system of the present invention.
  • a call is initiated in North America over a PSTN gateway server 10 a from a PSTN 11 a .
  • the server 10 a supports either Telephone to Telephone conversations or PC to Telephone connections.
  • FIG. 1 shows possible connections over the Internet 17 to Tokyo Japan, Osaka Japan and Taipei Taiwan.
  • a PSTN gateway server 10 b - d is connected to a PSTN 11 b - c and the Internet 17 to receive calls.
  • An account manager (AM) 15 provides billing, monitoring and authentication of these telephone services for up to 25 servers.
  • the account manager 15 interacts with a relational database 16 , and is an intelligent network or service control point.
  • the account manager 15 can be attached at any point on the network.
  • each of the PSTN gateway servers 20 consists of a Public Switched Telephone Network 11 and a gateway server 10 .
  • Each gateway 10 consists of a central processing unit (CPU) 23 , the Windows® Operating System (OS) 37 , gateway software 24 , telecommunications hardware (preferably Natural Microsystems) 25 and a Network Interface Card (NIC) 26 connected by a bus.
  • the gateway operates on a “Wintel” platform, preferably with Windows® NT 4.0.
  • the telecommunications hardware 25 supports analog, T1, EI or Integrated Services Digital Network (ISDN) connections to the PSTN 21
  • the NIC 26 supports an Internet Protocol (IP) such as TCP (Transmission Control Protocol) or UDP (User Datagram Protocol) connection to the Internet 17 .
  • IP Internet Protocol
  • FIG. 2 further shows the gateway server software utilities 24 which include modules called sessions 31 , transport 32 , a plurality of teleports 33 and a User Interface (UI) 34 .
  • a bus 35 connects software utilities 24 to CPU 23 , the Windows® NT 4.0 Operating System 37 , the telecommunications hardware 25 and the NIC 26 .
  • FIG. 3 illustrates the operation of software utilities 24 in creating a call from an initiating client station.
  • Transport 32 receives a call from the Internet 17 , and creates a session 31 to join the call to the teleport 33 . Assume there is a call incoming from the PSTN 11 . This incoming call signals its arrival to the software 24 of the gateway server 10 .
  • each audio port of the gateway server 10 Associated with each audio port of the gateway server 10 is an object port, called a telephone port, or teleport 33 , that waits for an incoming call.
  • On the Internet side of the gateway 10 there is another object port called the transport 32 .
  • Between the teleports 33 and the transport 32 is an object called the sessions 31 , which joins the ports on one gateway to ports on another gateway.
  • the session 31 is the communication mechanism between teleports 33 , and has two functions: (1) managing IP network communication between the incoming and outgoing ends of the server, and (2) providing labeling and identifiers to indicate the conversation endpoint.
  • the sessions 31 Finds an available connection such that an incoming call from the telephone line 11 is joined to an outgoing message on the Internet 17 .
  • this call is received by the transport 32 at the ingress side of the server and the session 31 links this call on the egress side to a teleport 33 to produce an outgoing call on the PSTN 11 .
  • the gateway server 10 has various software objects associated with the teleports 33 and the transport 32 .
  • a teleport 33 has an echo suppressor for voice data and also an encapsulating algorithm.
  • the transport 33 contains similar software for data filtering and correction.
  • FIG. 4 shows a flowchart of the gateway software process for handling an outgoing (egress) call setup to illustrate the operation of the transport.
  • an incoming call is input to the transport 32 , which listens for incoming TCP connections.
  • the transport creates an incoming session 31 , session i , and in step 43 , this session 31 is bound to an outgoing or egress session 31 , session e , on the remote side of the gateway 10 .
  • session e is bound to an available telephone port 33 on the outbound side of the server 10 .
  • Step 45 indicates a steady state condition where the call has been set up with a pair of ports talking to one another.
  • the gateway server of the present invention supports both telephone to telephone conversations as well as PC to telephone conversations. Each server can accommodate up to 24 simultaneous conversations. High quality voice communication is established with low latency.
  • the Gateway system includes 10 Base T or 100 Base T network connections, and has the ability to capture Dual Tone Multifrequency (DTMF) tones from end users.
  • DTMF Dual Tone Multifrequency
  • FIG. 5 shows communication paths between client stations for the client/server architecture of the present invention.
  • Client A initiates a call from either telephone hardware 51 or auxiliary hardware 52 connected to a personal computer 53 .
  • Telephone hardware 51 produces analog voice information signals which travel over PSTN 11 a to first gateway server 10 a .
  • Client A initiates the call from personal computer 53 , which has an audio headset 52 attached to a sound card in personal computer 53 .
  • Screen 57 of personal computer 53 contains icons 58 representing a keypad and other pushbuttons which are found on a conventional telephone.
  • PC 53 converts analog voice signals from headset 52 to digital signals. These digital signals travel to gateway server 10 a over PSTN 11 a via a modem in computer 53 or over the Internet 17 via a network server 50 .
  • gateway server 10 a either from the Internet 17 via network interface card 26 or from the PSTN 11 a via telecommunications hardware 25 .
  • Software modules 24 of gateway server 10 a perform digital signal processing on the digital call signals from Client A. These DSP operations include compressing the voice data by supplying and executing a codec algorithm, canceling echoes with echo suppression algorithms, etc.
  • Software modules 24 also establish a session 31 by assigning a teleport 33 to the call received from Client A and a transport 32 from gateway server 10 a to the Internet 17 , and encapsulate the data by providing identifiers.
  • Account manager 15 is located at any place on the Internet 17 , and verifies that access codes and client identification from Client A are valid. Account manager 15 also maintains auditing information with respect to Client A's account, number of calls, time of calls, call logging information, etc. Assuming that account manager 15 has established that Client A's caller identification is accepted, gateway server 10 a finds the address of the callee, Client B. Gateway server 10 a also determines an appropriate gateway server 10 b to access Client B. Gateway server 10 a then transmits the call over the Internet 17 , which sends the call as packet-switched message data over various nodes and routers to gateway server 10 b.
  • Gateway server 10 b receives the digital packet-switched call information from the Internet 17 via network interface card 26 .
  • Software modules 24 within gateway server 10 b perform digital signal processing upon the digital call information. In particular, software modules 24 provide an appropriate voice decompression algorithm after examining the format and/or identifiers of the digital message.
  • Software modules 24 also create a session by assigning a transport 32 to the message received from Internet 17 , and linking a teleport 33 to transport 32 on the egress side of gateway server 10 b . The message is then sent to Client B from teleport 33 of gateway server 10 b via telecommunications hardware 25 over PSTN 11 b . In full duplex operation, Client B establishes a corresponding session 31 to transmit messages back to Client A.
  • FIG. 5 also shows the operation of account manager 15 in producing real time billing information.
  • Client A places a call request which is received at gateway server 10 a .
  • the call request contains information identifying Client A.
  • gateway server 10 a parses the client identification from the call header and sends it over the Internet 17 to account manager 15 , which thereupon compares the client identification with account information stored in relational database 16 of account manager 15 , and determines whether Client A is an active client.
  • Account manager 15 then sends a call enable signal to gateway server 10 a when Client A is an active client, and gateway server 10 a permits the call to go through to gateway server 10 b and Client B.
  • account manager 15 also activates a counter 59 to track the length of the call, and stores information about the two clients involved, their location, time and duration of the call in relational database 16 for billing purposes.
  • account manager 15 transmits at least some of this account authentication information for Client A to a storage site on gateway server 10 a so that call enablement is performed at gateway server 10 a .
  • this embodiment permits faster call connection since gateway server 10 a need not request call enablement from account manager 15 , but this requires more storage facilities at a gateway server.
  • Teleport 33 supports up to 16 different varieties of codec algorithms for speech.
  • a codec is a hardware or software mechanism for converting analog voice signals to digital signals and encoding the digital signals, and vice-versa.
  • Teleport 33 is designed to be able to switch codecs between one data packet and the next in the same data stream. Each data packet is a self-describing package.
  • FIG. 6 is a diagram of software modules 24 of FIG. 3 in further detail.
  • Voice port 61 receives incoming data packets from the transport 32 .
  • Each transport 32 has many voice ports 61 .
  • Voice port 61 has derived classes of the wave port 63 , which contains multimedia Application Program Interfaces (API's), and the teleport 33 .
  • Teleport 33 is connected to the PSTN through the line port 69 and to transport 32 by the sessions 31 .
  • Voice port 61 contains the codec algorithms 66 . Among the different varieties of codec are the TrueSpeech algorithm 67 , Vox Ware 68 , the null speech algorithm and others.
  • Voice port 61 is responsible for three functions. First, it provides forward error correction. Second, it provides an algorithm for sending and regenerating speech. And third, it provides for alignment and framing of data packets within the buffer.
  • a data packet is contained within a frame, as shown in FIGS. 7( a ) and 7 ( b ).
  • Frame A ( 70 ) consists of packet 71 plus header 72 and trailer 73 information fields, H 1 and T 1 , where header H 1 ( 72 ) and trailer fields T 1 ( 73 ) are specific to the gateway server.
  • the header H 1 ( 72 ) and trailer T 1 ( 73 ) fields of Frame A ( 70 ) include information about codec algorithm, level of redundancy, and length of packet 71 , as well as the origination and destination addresses of Clients A and B, respectively.
  • Another data packet 70 is framed in Frame.
  • Headers H 2 ( 75 ) and trailers T 2 ( 76 ) of Frame B ( 74 ) contain corresponding information about the codec algorithm, level of redundancy, length of packet 71 , etc. Headers H 2 ( 75 ) and trailers T 2 ( 76 ) of Frame B ( 74 ) differ from headers H 1 ( 72 ) and trailers T 2 ( 73 ) of Frame A ( 70 ) because packet 71 is encoded with a different codec algorithm, level of redundancy, etc., in Frame A ( 70 ) than Frame B ( 74 ).
  • the process by which the gateway server 10 places headers 72 , 75 and trailers 73 , 76 onto data packet 71 is called encapsulation.
  • a given message is not sent as a continuous stream of information, but is broken up into blocks of data packets having variable lengths.
  • segmentation The process by which a network link breaks up the data into packets is called segmentation, and the process by which the packets are put back together into a message at the receiving end is called reassembly.
  • reassembly There are a variety of reasons for segmenting a message.
  • a given network link only accepts messages up to some fixed length.
  • errors are more readily controlled, since it is not necessary to retransmit the entire message if there is an error in only part of the message. An error becomes more likely as the length of the message increases.
  • Third, the network is shared more equitably, and one message does not monopolize the network, when the messages are segmented.
  • An important focus of the present invention is the particular forward error correction algorithm for providing packet redundancy.
  • the basic problem is how to correct for certain packets of voice information being lost as they are transported across the Internet.
  • Prior art approaches used interpolation to deal with lost packets.
  • lost data packets can be recovered because these packets are duplicated downstream.
  • Packet redundancy effectively slows the information transmission rate because, due to replication, the information density is not as high.
  • a packet with a redundancy of level one is twice as long as a packet with a redundancy of level zero
  • a packet with a redundancy of level two is three times as long as a packet with a redundancy of level zero.
  • Changing the packet redundancy in some ways has the same effect as the known technique of changing the packet size or packet bundling, since a different length is assigned to the data stream. But while changing the packet size or bundling puts more information in each packet, changing the packet redundancy does not.
  • the level of data redundancy for the error correction algorithm of the invention is between zero and three. That is, the data is replicated in zero to three subsequent packets of the message.
  • the data stream of the message is sequenced, and it is important to keep the sequence intact.
  • each data packet is compared to the previous data packet to determine whether there is a voice null or gap in the sequence. In the limiting case where the error correction algorithm is not enabled, the level of redundancy is zero. If the error correction algorithm is enabled and a voice null or gap is detected in the sequence, then the algorithm regenerates the lost packet through comparing the sequence numbers of the received packets for redundant data.
  • the three level fault tolerance is designed for marginal networks and can accommodate up to four consecutive dropped packets.
  • the number of dropped packets varies according to a Poisson or similar type of statistical distribution (e.g. Pareto), with the majority of consecutive packet losses being in the range of one to four, with few consecutive packet losses in the tails of the distribution, i.e. numbering more than four consecutive losses.
  • FIGS. 8( a ) to 8 ( d ) The particular error correction algorithm of the invention is described in FIGS. 8( a ) to 8 ( d ).
  • each box is assumed to be essentially one data packet, but for purposes of illustration each of these packets is illustrated as a letter of the alphabet.
  • the grouping of data packets in pairs, triplets or ciuadruplets in FIGS. 8( a ) to 8 ( d ) is for purposes of illustration only the data stream is continuous without spaces between the groupings.
  • the data stream is illustrated as “This is a sentence.” The data stream is propagating from left to right in the drawing, so that the “T” comes first, then the “h,” then the “i,” et cetera.
  • FIG. 8( b ) shows the encoding scheme for error correction with a redundancy of level one.
  • the data stream is arranged as a series of pairs of data packets. The last data packet of each pair is repeated as the first data packet of the next pair. Symbolically, for each packet N, N last ⁇ N fir +1. The first packet of the first pair is initialized with a null value to protect against loss of the first data packet. Level one redundancy translates this into duplicated data packet pairs of “ ⁇ T”, “Tb”, “hi”, “is”, and so on.
  • FIG. 8( c ) illustrates the error correction algorithm of the invention when the level of redundancy is two.
  • data packets are arranged in triplets.
  • the algorithm is constructed such that the last packet of the first triplet becomes the middle racket of the next triplet, and the middle packet of the first triplet becomes the first packet of the next triplet. Symbolically, N mid ⁇ N fir +2, and N last ⁇ N mid +2.
  • the packets are initialized with nulls to permit redundancy for the beginning packets in the data stream. Since the packets are in triplets, there must be nulls for the first two packets of the first triplet. Therefore, the data stream “This is a sentence,” is replicated as ⁇ T”, “ ⁇ Th”, “Thi”, “his,” et cetera. Each new triplet loses the first packet of the previous triplet.
  • FIG. 8( d ) illustrates the error correction scheme for redundancy of level three.
  • the data rackets are arranged in guadruplets.
  • the algorithm is constructed such that the second packet in the first quadruplet is mapped to the first packet in the second quadruplet: the third packet in the first quadruplet is mapped to the second packet in the second quadruplet: and the fourth packet in the first quadruplet is mapped to the third packet in the second quadruplet; the first packet in the first quadruplet is not repeated in the next quadruplet.
  • first quadruplet is initiated with three nulls, and these nulls are transformed by the algorithm into two nulls in the second quadruplet and one null on the third quadruplet.
  • the level of redundancy can be dynamically varied from packet-to-packet within a data stream. For example, one group of packets can have a level one redundancy, the next group of packets can have a level three redundancy, and the following group of packets can have a level zero redundancy. Selecting the level of redundancy is one of the features performed by the voice port. Level three redundancy can sustain three consecutive packets losses by the Internet without the listener noticing a loss.
  • the voice port can also dynamically varythe packet size or bundling.
  • the packet size may initially be 67 bytes, with 64 bytes of information and a 3 byte header.
  • the packet bundling may be changing by bundling two 64 byte packets together with a 3 byte header to give a 131 byte packet.
  • the packet size could be changed from 64 bytes to 32 bytes of information to give a 35 byte packet, including a 3 byte header. Both the packet size and packet bundling can be changed by the voice port from packet-to-packet in the data stream to accommodate the loss characteristics of the Internet at that particular time.
  • the voice port has the capability of dynamically changing the redundancy, packet size and packet bundling from packet to packet, but also the voice port can similarly vary the codec algorithm from packet-to-packet.
  • the packet is given self-describing information about what type of codec is needed at the receiver to decompress the packet.
  • the choice of codec at the transmitter may be derived from a complex function depending on the choices of packet redundancy, packet size and packet bundling.
  • the voice port can thus dynamically pick the speech compression algorithm, the data packet size, and the type of forward error correction to adapt to network conditions.
  • a complex feedback algorithm describes the various conditions under which the voice port adjusts these variables.
  • the voiceport can also select from several qualities of codec in response to possible conditions presented by the network.
  • the voice port increases the packet redundancy when it detects a loss of information, and this implies that less information will be propagating in a given packet stream.
  • speech quality must be sacrificed. Therefore, a faster but lower speech quality codec algorithm is simultaneously implemented. The result is that the loss of data packets is compensated by the redundancy.
  • the voice port begins with the TrueSpeech codec algorithm, which encodes speech at an 8.5 kbytes/second and with no redundancy. After noticing dropped packets, the voice port adjusts by selecting the Vox Ware 2.9 kbytes/second algorithm having somewhat lower sound quality, but with two level redundancy error correction. Double redundancy Vox Ware includes two 2.9 kbytes/second algorithms, which is still approximately 6 kbytes/second. Thus, it is possible to change the redundancy and the codec to correct for dropped packets and utilize the same amount of Internet bandwidth. Fault tolerance in the voice transmission data is thereby achieved.
  • the voice port is tolerant of faults in the data stream, while the standard procedure for Transmission Control Protocol (TCP) on the Internet is to request a retransmission of the data.
  • TCP Transmission Control Protocol
  • An alternate embodiment of the invention adjusts for dead time in a speech message by time warping the speech at a constant pitch.
  • the software further contains a utility that senses when the data buffer becomes depleted, and stretches the data reaching the ear of the listener in a manner opposite to the technique utilized in television commercials and radio voiceovers to speed up the data rate.
  • the algorithm contains a lever that measures the number of packets in the buffer, and, without changing the pitch, speeds up or slows down the data rate corresponding to the pool depth.
  • the Vox Ware codec particularly supports this algorithm to specify the degree of time warp.
  • voice port 61 Another important characteristic of voice port 61 is that it permits codec encapsulation so that the higher level software is functionally independent of the lower level codec software.
  • the codecs are therefore essentially objects and neither the transport nor any of the other software needs to be compatible with any particular codec. As new codecs are introduced, they can be added easily added without requiring modifications in the higher level system software.

Abstract

The invention is concerned with an Internet telephone system having a client/server architecture and providing voice communication between client stations over the Internet through gateway servers. The system includes a plurality of software modules within each of the gateway servers for performing digital signal processing (DSP), and an account manager placed at an arbitrary location on the Internet for monitoring transactions between client stations to produce billing information. The system is characterized by low latency, full duplex voice communication, and permits telephone to telephone or PC to telephone connections.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a Continuation of U.S. patent application Ser. No. 08/989,742, filed Dec. 12, 1997, by Mike Vargo and Jerry Chang, entitled, “System Architecture For Internet Telephone,” which is a Continuation-in-Part of U.S. patent application Ser. No. 08/907,686, filed Aug. 8, 1997, by Mike Vargo and Jerry Chang, entitled, “Dynamic Forward Error Correction Algorithm for Internet Telephone,” now U.S. Pat. No. 6,167,060. Each of aforesaid applications is here by incorporated herein by reference in its entirety.
BACKGROUND OF THE INVENTION
1. Technical Field
The present invention relates generally to an Internet telephone system, and specifically to a system architecture for an Internet telephone operating between a Public Switched Telephone Network (PSTN) and the Internet.
2. Discussion of the Prior Art
Computer networks are often organized according to principles of client/server architecture. Servers are more powerful computers dedicated to managing the network, while clients are less powerful computers, e.g. PC's or workstations, that run applications. Clients rely upon servers for various resources. The most common client/server application is file sharing in distributed storage systems. Data is transferred between the hard disk of a workstation and the server memory. The advantage is that large quantities of data are stored on the server instead of at individual work stations, thereby reducing the workstation memory requirements. Moreover, non-private data is easily accessed by all work stations. In addition to distributed storage systems, print servers and network servers are prevalent forms of client/server architectures. Client/server architectures are also called two-tier architectures. Multi-node architectures that are not client/server architectures are called peer-to-peer architectures; in these, each node has equivalent responsibilities.
Another environment for a client/server architecture involves the Internet as an electronic marketplace. A person wishing to purchase an item on the Internet acts as a client by placing an order and the supplier acts as a server by filling that order. Transactions in the electronic marketplace require accounting and authentication by the server of purchases by the client. Encryption prevents eavesdropping and provides transaction security.
Internet telephony operates according to a number of possible strategies but all utilize digital signal processing (DSP). The most easily implemented Internet telephone systems involve software only, and work with existing modems and voice cards. Software provides DSP functions, which are computationally intensive tasks performed by the CPU of the host computer. However, such systems are not scalable beyond a few ports per system and are therefore applicable to small business gateways only. Moreover, the CPU is loaded down with DSP tasks.
DSP based cards with on-board software are more difficult and expensive to implement, but are scalable with designs including many cards per system, and thus applicable to medium and large size businesses and for inter-office calling over LAN, WAN and the Internet. These systems provide improved performance because they off-load functions such as audio compression/decompression and echo cancellation from the CPU of the host computer. The digital signal processing (DSP) functions are incorporated onto the card and latency (delay) is decreased.
A PBX integrated module is similar to a DSP card except that there is a seamless integration into the PBX phone system. This system is scalable to a higher port density than others, and is therefore applicable to larger business-to-business supersystems that bridge many PBX's and permit low cost international calling through Internet-PSTN gateways.
U.S. Pat. No. 5,633,916 to Goldhagen et al discloses a client/server architecture for a voice messaging service. Goldhagen et al sends client telephone messages over a PSTN via a server, but the architecture does not provide for sending packet-switched messages over the Internet.
U.S. Pat. No. 5,508,732 to Bottomley et al discloses a gateway architecture for broadcasting digital video over servers on demand. However, Bottomley et al is not concerned with sending voice information between clients in real time.
U.S. Pat. No. 5,657,376 to Espeut et al discloses an architecture for voice messaging systems that receives incoming calls over a public switched telephone network from subscribers utilizing personal computers. Espeut et al sends these messages over a server but is directed to local area networks and does not permit exchange of messages in real time.
The problem to be solved in Internet telephony systems is to combine the features of client/server architectures with digital signal processing to transmit voice information over the Internet. Furthermore, a practical Internet telephone system must have the capability of authenticating and billing callers in real time.
Internet telephone system that links a plurality of client stations to the Internet through a plurality of gateway servers. The system further includes a plurality of software modules performing digital signal processing (DSP) functions within each server. An account manager is placed at an arbitrary location on the Internet for monitoring transactions between client stations and for producing billing information in real time. Each server has hardware permitting Internet and ISDN connections and provides full duplex communication.
The gateway server includes hardware allowing respective Internet and PSTN connections, and software for providing the connections themselves. The software includes the transport, the telephone port, or “teleport,” and the session. The transport creates a session upon receiving an incoming call from the Internet, and the session manages the network communication between communication endpoints and establishes identifiers or labels to indicate these endpoints. Also included in the software are the voice port, the wave port and the line port. The voice port selects the forward error correction algorithm, dynamically chooses the codec, and frames and aligns the data packets.
Another feature of the invention is that the architecture enables a dynamic change of codecs from packet-to-packet in one stream of voice data to adapt to changing network conditions. The architecture permits a dynamic change of codecs in combination with changing other factors including the level of redundancy of the error correction, the packet size and packet bundling. The architecture thereby seeks to attain the best speech quality and lowest latency given the level of data loss over the Internet detected by the system.
A further feature of the invention is a technique for eliminating dead air space in the data stream by speeding up or slowing down the data from the buffer while maintaining a constant voice pitch.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 shows an overview of an Internet telephone system according to the present invention;
FIG. 2 details the main features of the gateway server of FIG. 1;
FIG. 3 shows the operation of the software modules in relationship to establishing a call connection;
FIG. 4 is a flowchart of steps in connecting a call;
FIG. 5 shows the network architecture for establishing a call between clients over gateway servers;
FIG. 6 shows the software modules of the gateway server in further detail; and
FIGS. 7( a) and (b) show the encapsulation of a data packet by the gateway.
FIGS. 8( a) to (d) illustrate the operation of the forward error correction algorithm of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
The Internet telephone system of the present invention combines the essential features of client/server architectures and digital signal processing for voice communications. The DSP functions are integrated into a server instead of the individual work stations, with each server providing connection to the Internet for a plurality of client workstations. The central processing units of the client work stations are therefore freed from performing the computationally-intensive digital signal processing algorithms, which are instead executed at a gateway server, resulting in low latency. Callers in different countries communicate with one another over the Internet since there is at least one gateway server in each country. The gateway servers thus permit packet-switched voice communication between each of the client stations over the Internet.
FIG. 1 illustrates in general overview the operation of the Internet telephone system of the present invention. A call is initiated in North America over a PSTN gateway server 10 a from a PSTN 11 a. The server 10 a supports either Telephone to Telephone conversations or PC to Telephone connections. FIG. 1 shows possible connections over the Internet 17 to Tokyo Japan, Osaka Japan and Taipei Taiwan. In each of these cities, a PSTN gateway server 10 b-d is connected to a PSTN 11 b-c and the Internet 17 to receive calls. An account manager (AM) 15 provides billing, monitoring and authentication of these telephone services for up to 25 servers. The account manager 15 interacts with a relational database 16, and is an intelligent network or service control point. The account manager 15 can be attached at any point on the network.
Referring to FIG. 2, each of the PSTN gateway servers 20 consists of a Public Switched Telephone Network 11 and a gateway server 10. Each gateway 10 consists of a central processing unit (CPU) 23, the Windows® Operating System (OS) 37, gateway software 24, telecommunications hardware (preferably Natural Microsystems) 25 and a Network Interface Card (NIC) 26 connected by a bus. The gateway operates on a “Wintel” platform, preferably with Windows® NT 4.0. The telecommunications hardware 25 supports analog, T1, EI or Integrated Services Digital Network (ISDN) connections to the PSTN 21, and the NIC 26 supports an Internet Protocol (IP) such as TCP (Transmission Control Protocol) or UDP (User Datagram Protocol) connection to the Internet 17.
FIG. 2 further shows the gateway server software utilities 24 which include modules called sessions 31, transport 32, a plurality of teleports 33 and a User Interface (UI) 34. A bus 35 connects software utilities 24 to CPU 23, the Windows® NT 4.0 Operating System 37, the telecommunications hardware 25 and the NIC 26.
FIG. 3 illustrates the operation of software utilities 24 in creating a call from an initiating client station. Transport 32 receives a call from the Internet 17, and creates a session 31 to join the call to the teleport 33. Assume there is a call incoming from the PSTN 11. This incoming call signals its arrival to the software 24 of the gateway server 10.
Associated with each audio port of the gateway server 10 is an object port, called a telephone port, or teleport 33, that waits for an incoming call. On the Internet side of the gateway 10, there is another object port called the transport 32. Between the teleports 33 and the transport 32 is an object called the sessions 31, which joins the ports on one gateway to ports on another gateway. The session 31 is the communication mechanism between teleports 33, and has two functions: (1) managing IP network communication between the incoming and outgoing ends of the server, and (2) providing labeling and identifiers to indicate the conversation endpoint. The sessions 31. Finds an available connection such that an incoming call from the telephone line 11 is joined to an outgoing message on the Internet 17. Similarly, if an incoming call arrives from the Internet 17, this call is received by the transport 32 at the ingress side of the server and the session 31 links this call on the egress side to a teleport 33 to produce an outgoing call on the PSTN 11.
The gateway server 10 has various software objects associated with the teleports 33 and the transport 32. For example, a teleport 33 has an echo suppressor for voice data and also an encapsulating algorithm. The transport 33 contains similar software for data filtering and correction.
FIG. 4 shows a flowchart of the gateway software process for handling an outgoing (egress) call setup to illustrate the operation of the transport. Beginning in step 41, an incoming call is input to the transport 32, which listens for incoming TCP connections. In step 42, the transport creates an incoming session 31, sessioni, and in step 43, this session 31 is bound to an outgoing or egress session 31, sessione, on the remote side of the gateway 10. Then, in step 44, sessione is bound to an available telephone port 33 on the outbound side of the server 10. Step 45 indicates a steady state condition where the call has been set up with a pair of ports talking to one another.
The gateway server of the present invention supports both telephone to telephone conversations as well as PC to telephone conversations. Each server can accommodate up to 24 simultaneous conversations. High quality voice communication is established with low latency. The Gateway system includes 10 Base T or 100 Base T network connections, and has the ability to capture Dual Tone Multifrequency (DTMF) tones from end users.
FIG. 5 shows communication paths between client stations for the client/server architecture of the present invention. Client A initiates a call from either telephone hardware 51 or auxiliary hardware 52 connected to a personal computer 53. Telephone hardware 51 produces analog voice information signals which travel over PSTN 11 a to first gateway server 10 a. Alternatively, Client A initiates the call from personal computer 53, which has an audio headset 52 attached to a sound card in personal computer 53. Screen 57 of personal computer 53 contains icons 58 representing a keypad and other pushbuttons which are found on a conventional telephone. PC 53 converts analog voice signals from headset 52 to digital signals. These digital signals travel to gateway server 10 a over PSTN 11 a via a modem in computer 53 or over the Internet 17 via a network server 50.
These digital call signals from Client A enter gateway server 10 a either from the Internet 17 via network interface card 26 or from the PSTN 11 a via telecommunications hardware 25. Software modules 24 of gateway server 10 a perform digital signal processing on the digital call signals from Client A. These DSP operations include compressing the voice data by supplying and executing a codec algorithm, canceling echoes with echo suppression algorithms, etc. Software modules 24 also establish a session 31 by assigning a teleport 33 to the call received from Client A and a transport 32 from gateway server 10 a to the Internet 17, and encapsulate the data by providing identifiers.
Account manager 15 is located at any place on the Internet 17, and verifies that access codes and client identification from Client A are valid. Account manager 15 also maintains auditing information with respect to Client A's account, number of calls, time of calls, call logging information, etc. Assuming that account manager 15 has established that Client A's caller identification is accepted, gateway server 10 a finds the address of the callee, Client B. Gateway server 10 a also determines an appropriate gateway server 10 b to access Client B. Gateway server 10 a then transmits the call over the Internet 17, which sends the call as packet-switched message data over various nodes and routers to gateway server 10 b.
Gateway server 10 b receives the digital packet-switched call information from the Internet 17 via network interface card 26. Software modules 24 within gateway server 10 b perform digital signal processing upon the digital call information. In particular, software modules 24 provide an appropriate voice decompression algorithm after examining the format and/or identifiers of the digital message. Software modules 24 also create a session by assigning a transport 32 to the message received from Internet 17, and linking a teleport 33 to transport 32 on the egress side of gateway server 10 b. The message is then sent to Client B from teleport 33 of gateway server 10 b via telecommunications hardware 25 over PSTN 11 b. In full duplex operation, Client B establishes a corresponding session 31 to transmit messages back to Client A.
FIG. 5 also shows the operation of account manager 15 in producing real time billing information. Client A places a call request which is received at gateway server 10 a. The call request contains information identifying Client A. In a preferred embodiment, gateway server 10 a parses the client identification from the call header and sends it over the Internet 17 to account manager 15, which thereupon compares the client identification with account information stored in relational database 16 of account manager 15, and determines whether Client A is an active client. Account manager 15 then sends a call enable signal to gateway server 10 a when Client A is an active client, and gateway server 10 a permits the call to go through to gateway server 10 b and Client B. Optionally, account manager 15 also activates a counter 59 to track the length of the call, and stores information about the two clients involved, their location, time and duration of the call in relational database 16 for billing purposes.
In an alternate embodiment, account manager 15 transmits at least some of this account authentication information for Client A to a storage site on gateway server 10 a so that call enablement is performed at gateway server 10 a. Advantageously, this embodiment permits faster call connection since gateway server 10 a need not request call enablement from account manager 15, but this requires more storage facilities at a gateway server.
Teleport 33 supports up to 16 different varieties of codec algorithms for speech. A codec is a hardware or software mechanism for converting analog voice signals to digital signals and encoding the digital signals, and vice-versa. Teleport 33 is designed to be able to switch codecs between one data packet and the next in the same data stream. Each data packet is a self-describing package.
FIG. 6 is a diagram of software modules 24 of FIG. 3 in further detail. Voice port 61 receives incoming data packets from the transport 32. Each transport 32 has many voice ports 61. Voice port 61 has derived classes of the wave port 63, which contains multimedia Application Program Interfaces (API's), and the teleport 33. Teleport 33 is connected to the PSTN through the line port 69 and to transport 32 by the sessions 31. Voice port 61 contains the codec algorithms 66. Among the different varieties of codec are the TrueSpeech algorithm 67, Vox Ware 68, the null speech algorithm and others.
Voice port 61 is responsible for three functions. First, it provides forward error correction. Second, it provides an algorithm for sending and regenerating speech. And third, it provides for alignment and framing of data packets within the buffer.
A data packet is contained within a frame, as shown in FIGS. 7( a) and 7(b). Frame A (70) consists of packet 71 plus header 72 and trailer 73 information fields, H1 and T1, where header H1 (72) and trailer fields T1 (73) are specific to the gateway server. The header H1 (72) and trailer T1 (73) fields of Frame A (70) include information about codec algorithm, level of redundancy, and length of packet 71, as well as the origination and destination addresses of Clients A and B, respectively. Another data packet 70 is framed in Frame. B (74) with headers 75 and trailers 76, H2 and T2. Headers H2 (75) and trailers T2 (76) of Frame B (74) contain corresponding information about the codec algorithm, level of redundancy, length of packet 71, etc. Headers H2 (75) and trailers T2 (76) of Frame B (74) differ from headers H1 (72) and trailers T2 (73) of Frame A (70) because packet 71 is encoded with a different codec algorithm, level of redundancy, etc., in Frame A (70) than Frame B (74). The process by which the gateway server 10 places headers 72, 75 and trailers 73,76 onto data packet 71 is called encapsulation.
Generally, a given message is not sent as a continuous stream of information, but is broken up into blocks of data packets having variable lengths. The process by which a network link breaks up the data into packets is called segmentation, and the process by which the packets are put back together into a message at the receiving end is called reassembly. There are a variety of reasons for segmenting a message. First, a given network link only accepts messages up to some fixed length. Second, errors are more readily controlled, since it is not necessary to retransmit the entire message if there is an error in only part of the message. An error becomes more likely as the length of the message increases. Third, the network is shared more equitably, and one message does not monopolize the network, when the messages are segmented.
An important focus of the present invention is the particular forward error correction algorithm for providing packet redundancy. The basic problem is how to correct for certain packets of voice information being lost as they are transported across the Internet. Prior art approaches used interpolation to deal with lost packets. In the present invention, lost data packets can be recovered because these packets are duplicated downstream.
Packet redundancy effectively slows the information transmission rate because, due to replication, the information density is not as high. A packet with a redundancy of level one is twice as long as a packet with a redundancy of level zero, and a packet with a redundancy of level two is three times as long as a packet with a redundancy of level zero. Changing the packet redundancy in some ways has the same effect as the known technique of changing the packet size or packet bundling, since a different length is assigned to the data stream. But while changing the packet size or bundling puts more information in each packet, changing the packet redundancy does not. Still, even at the expense of transmission capacity, it is advantageous to provide redundancy in the data stream to eliminate voice nulls due to lost data, or dropouts, and thereby improve voice quality. Thus, a certain amount of transmission capacity is sacrificed for the overall success and integrity of the voice transmission.
The level of data redundancy for the error correction algorithm of the invention is between zero and three. That is, the data is replicated in zero to three subsequent packets of the message. The data stream of the message is sequenced, and it is important to keep the sequence intact. When the forward error correction algorithm is enabled, each data packet is compared to the previous data packet to determine whether there is a voice null or gap in the sequence. In the limiting case where the error correction algorithm is not enabled, the level of redundancy is zero. If the error correction algorithm is enabled and a voice null or gap is detected in the sequence, then the algorithm regenerates the lost packet through comparing the sequence numbers of the received packets for redundant data.
As a general principle, the three level fault tolerance is designed for marginal networks and can accommodate up to four consecutive dropped packets. The number of dropped packets varies according to a Poisson or similar type of statistical distribution (e.g. Pareto), with the majority of consecutive packet losses being in the range of one to four, with few consecutive packet losses in the tails of the distribution, i.e. numbering more than four consecutive losses.
The particular error correction algorithm of the invention is described in FIGS. 8( a) to 8(d). In these examples, each box is assumed to be essentially one data packet, but for purposes of illustration each of these packets is illustrated as a letter of the alphabet. The grouping of data packets in pairs, triplets or ciuadruplets in FIGS. 8( a) to 8(d) is for purposes of illustration only the data stream is continuous without spaces between the groupings. In FIG. 8( a), the data stream is illustrated as “This is a sentence.” The data stream is propagating from left to right in the drawing, so that the “T” comes first, then the “h,” then the “i,” et cetera.
FIG. 8( b) shows the encoding scheme for error correction with a redundancy of level one. Conceptually, the data stream is arranged as a series of pairs of data packets. The last data packet of each pair is repeated as the first data packet of the next pair. Symbolically, for each packet N, Nlast→Nfir+1. The first packet of the first pair is initialized with a null value to protect against loss of the first data packet. Level one redundancy translates this into duplicated data packet pairs of “ØT”, “Tb”, “hi”, “is”, and so on.
FIG. 8( c) illustrates the error correction algorithm of the invention when the level of redundancy is two. Here, data packets are arranged in triplets. The algorithm is constructed such that the last packet of the first triplet becomes the middle racket of the next triplet, and the middle packet of the first triplet becomes the first packet of the next triplet. Symbolically, Nmid→Nfir+2, and Nlast→Nmid+2. As before, the packets are initialized with nulls to permit redundancy for the beginning packets in the data stream. Since the packets are in triplets, there must be nulls for the first two packets of the first triplet. Therefore, the data stream “This is a sentence,” is replicated as ØØT”, “ØTh”, “Thi”, “his,” et cetera. Each new triplet loses the first packet of the previous triplet.
FIG. 8( d) illustrates the error correction scheme for redundancy of level three. Here, the data rackets are arranged in guadruplets. The algorithm is constructed such that the second packet in the first quadruplet is mapped to the first packet in the second quadruplet: the third packet in the first quadruplet is mapped to the second packet in the second quadruplet: and the fourth packet in the first quadruplet is mapped to the third packet in the second quadruplet; the first packet in the first quadruplet is not repeated in the next quadruplet. Symbolically, Nsec→Nfir+3; Nthr→Nsec+3 and Nfour→Nthr+3. In order to prevent the loss of first three data packets, a series of nulls is added to the first three data packets. The first quadruplet is initiated with three nulls, and these nulls are transformed by the algorithm into two nulls in the second quadruplet and one null on the third quadruplet.
More generally, for a redundancy of level k, for k=0 to L, the algorithm provides that the ith data packet is repeated k times at positions (i+j*k)) for j=1 to k.
One important feature of the forward error correction algorithm of the invention is that the level of redundancy can be dynamically varied from packet-to-packet within a data stream. For example, one group of packets can have a level one redundancy, the next group of packets can have a level three redundancy, and the following group of packets can have a level zero redundancy. Selecting the level of redundancy is one of the features performed by the voice port. Level three redundancy can sustain three consecutive packets losses by the Internet without the listener noticing a loss.
Instead of changing the packet redundancy, the voice port can also dynamically varythe packet size or bundling. The packet size may initially be 67 bytes, with 64 bytes of information and a 3 byte header. The packet bundling may be changing by bundling two 64 byte packets together with a 3 byte header to give a 131 byte packet. Or, the packet size could be changed from 64 bytes to 32 bytes of information to give a 35 byte packet, including a 3 byte header. Both the packet size and packet bundling can be changed by the voice port from packet-to-packet in the data stream to accommodate the loss characteristics of the Internet at that particular time.
Furthermore, not only does the voice port have the capability of dynamically changing the redundancy, packet size and packet bundling from packet to packet, but also the voice port can similarly vary the codec algorithm from packet-to-packet. The packet is given self-describing information about what type of codec is needed at the receiver to decompress the packet. The choice of codec at the transmitter may be derived from a complex function depending on the choices of packet redundancy, packet size and packet bundling.
The voice port can thus dynamically pick the speech compression algorithm, the data packet size, and the type of forward error correction to adapt to network conditions. A complex feedback algorithm describes the various conditions under which the voice port adjusts these variables. The voiceport can also select from several qualities of codec in response to possible conditions presented by the network.
Generally speaking, the voice port increases the packet redundancy when it detects a loss of information, and this implies that less information will be propagating in a given packet stream. To accommodate the same quantity of information through the limited bandwidth of a modem, speech quality must be sacrificed. Therefore, a faster but lower speech quality codec algorithm is simultaneously implemented. The result is that the loss of data packets is compensated by the redundancy.
As an example, assume the voice port begins with the TrueSpeech codec algorithm, which encodes speech at an 8.5 kbytes/second and with no redundancy. After noticing dropped packets, the voice port adjusts by selecting the Vox Ware 2.9 kbytes/second algorithm having somewhat lower sound quality, but with two level redundancy error correction. Double redundancy Vox Ware includes two 2.9 kbytes/second algorithms, which is still approximately 6 kbytes/second. Thus, it is possible to change the redundancy and the codec to correct for dropped packets and utilize the same amount of Internet bandwidth. Fault tolerance in the voice transmission data is thereby achieved.
It is also possible to vary the size of the individual packets or to vary the bundling of the packets by techniques that are well known in the art. The voice port is tolerant of faults in the data stream, while the standard procedure for Transmission Control Protocol (TCP) on the Internet is to request a retransmission of the data.
An alternate embodiment of the invention adjusts for dead time in a speech message by time warping the speech at a constant pitch. Generally, once the integrity of the data stream is guaranteed by the error correction algorithm, at least part of the data stream waits in a buffer on the receiving side of the server until it is emptied to the receiver. However, when there is no data left in the buffer, there is a danger that dead air time can occur, in which the listener hears a gap or blank in the transmission. Therefore, the software further contains a utility that senses when the data buffer becomes depleted, and stretches the data reaching the ear of the listener in a manner opposite to the technique utilized in television commercials and radio voiceovers to speed up the data rate. Effectively, the algorithm contains a lever that measures the number of packets in the buffer, and, without changing the pitch, speeds up or slows down the data rate corresponding to the pool depth. The Vox Ware codec particularly supports this algorithm to specify the degree of time warp.
Another important characteristic of voice port 61 is that it permits codec encapsulation so that the higher level software is functionally independent of the lower level codec software. The codecs are therefore essentially objects and neither the transport nor any of the other software needs to be compatible with any particular codec. As new codecs are introduced, they can be added easily added without requiring modifications in the higher level system software.
The invention has been described in general terms according to the preferred embodiments. However, those of ordinary skill in the art will understand that certain modifications or changes may be made to the disclosed embodiment without departing from the essential nature of the invention. Therefore, the scope of the invention is to be limited only by the following claims.

Claims (7)

1. A system for dynamically changing an algorithm for encoding voice data, comprising:
a gateway server configured to encode a plurality of data packets in a voice data stream transmitted between the gateway server and a remote server over a computer network, wherein a first part of the voice data stream is encoded with a first codec, a first error correction algorithm and a first packet size;
the gateway server further configured to detect a change in network conditions; and
the gateway server further configured, in response to said detection of the change in network conditions, to dynamically encode a second part of the voice date stream with at least one of: (a) a second codec; (b) a second error correction algorithm; and (c) a second packet size.
2. The system of claim 1, wherein each data packet in the voice data stream includes an indication of a codec.
3. A system for dynamically changing an error correction algorithm, comprising:
a gateway server configured to encode a plurality of data packets in a voice data stream transmitted between the gateway server and a remote server over a computer network, wherein a first part of the voice data stream is encoded with a first error correction algorithm;
the gateway server further configured to detect a change in network conditions; and
the gateway server further configured, in response to said detection of the change in network conditions, to dynamically encode a second part of the voice date stream with a second error correction algorithm.
4. A system for dynamically changing a codec algorithm, comprising:
a gateway server configured to encode a plurality of data packets in a voice data stream transmitted between the gateway server and a remote server over a computer network, wherein a first part of the voice data stream is encoded with a first codec;
the gateway server further configured to detect a change in network conditions; and
the gateway server further configured, in response to said detection of the change in network conditions, to dynamically encode a second part of the voice date stream with a second codec.
5. The system of claim 4, wherein each data packet in the voice data stream includes an indication of a codec.
6. The method of claim 4, wherein each data packet in the voice data stream includes an indication of a codec.
7. A method implemented in a server for dynamically changing a codec algorithm, comprising:
encoding in the server a plurality of data packets in a voice data stream transmitted between the gateway server and a remote server over a computer network, wherein a first part of the voice data stream is encoded with a first codec;
detecting a change in network conditions; and
in response to detecting the change in network conditions: encoding in the server a second part of the voice date stream with a second codec.
US10/906,598 1997-08-08 2005-02-25 System architecture for internet telephone Expired - Fee Related US8032808B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/906,598 US8032808B2 (en) 1997-08-08 2005-02-25 System architecture for internet telephone
US13/114,050 US8238330B2 (en) 1997-08-08 2011-05-24 System and method for transmitting a telephone call over the internet
US13/355,803 US9312983B2 (en) 1997-08-08 2012-01-23 System and method for encoding telephone call data using varying codec algorithms

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/907,686 US6167060A (en) 1997-08-08 1997-08-08 Dynamic forward error correction algorithm for internet telephone
US98974297A 1997-12-12 1997-12-12
US10/906,598 US8032808B2 (en) 1997-08-08 2005-02-25 System architecture for internet telephone

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US98974297A Continuation 1997-08-08 1997-12-12

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/114,050 Continuation US8238330B2 (en) 1997-08-08 2011-05-24 System and method for transmitting a telephone call over the internet

Publications (2)

Publication Number Publication Date
US20050135339A1 US20050135339A1 (en) 2005-06-23
US8032808B2 true US8032808B2 (en) 2011-10-04

Family

ID=34681758

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/906,598 Expired - Fee Related US8032808B2 (en) 1997-08-08 2005-02-25 System architecture for internet telephone
US13/114,050 Expired - Fee Related US8238330B2 (en) 1997-08-08 2011-05-24 System and method for transmitting a telephone call over the internet
US13/355,803 Expired - Fee Related US9312983B2 (en) 1997-08-08 2012-01-23 System and method for encoding telephone call data using varying codec algorithms

Family Applications After (2)

Application Number Title Priority Date Filing Date
US13/114,050 Expired - Fee Related US8238330B2 (en) 1997-08-08 2011-05-24 System and method for transmitting a telephone call over the internet
US13/355,803 Expired - Fee Related US9312983B2 (en) 1997-08-08 2012-01-23 System and method for encoding telephone call data using varying codec algorithms

Country Status (1)

Country Link
US (3) US8032808B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070133515A1 (en) * 2005-12-13 2007-06-14 Rajesh Kumar Central entity to adjust redundancy and error correction on RTP sessions
US20110222530A1 (en) * 1997-08-08 2011-09-15 Mike Vargo System and method for transmitting a telephone call over the Internet

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6965594B2 (en) * 2002-09-30 2005-11-15 Motorola, Inc. Internet assisted mobile calling
FR2899993A1 (en) * 2006-04-18 2007-10-19 France Telecom METHOD FOR NOTIFYING A TRANSMISSION DEFECT OF AN AUDIO SIGNAL
US8265022B2 (en) * 2009-02-10 2012-09-11 Apple Inc. Apparatus and methods for transmission of emergency call data over wireless networks
CN104938024A (en) * 2012-11-19 2015-09-23 诺基亚技术有限公司 Method and apparatus for generating bluetooth low energy data packet comprising audio payload data.
GB2521883B (en) * 2014-05-02 2016-03-30 Imagination Tech Ltd Media controller

Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864562A (en) 1986-12-18 1989-09-05 Mitsubishi Denki Kabushiki Kaisha Sub-rate multi-media data transmission control system
US5187591A (en) 1991-01-24 1993-02-16 Micom Communications Corp. System for transmitting and receiving aural information and modulated data
US5394473A (en) 1990-04-12 1995-02-28 Dolby Laboratories Licensing Corporation Adaptive-block-length, adaptive-transforn, and adaptive-window transform coder, decoder, and encoder/decoder for high-quality audio
US5533004A (en) 1994-11-07 1996-07-02 Motorola, Inc. Method for providing and selecting amongst multiple data rates in a time division multiplexed system
US5539908A (en) 1992-11-24 1996-07-23 International Business Machines Corporation Dynamically linked and shared compression/decompression
US5546395A (en) 1993-01-08 1996-08-13 Multi-Tech Systems, Inc. Dynamic selection of compression rate for a voice compression algorithm in a voice over data modem
US5555447A (en) 1993-05-14 1996-09-10 Motorola, Inc. Method and apparatus for mitigating speech loss in a communication system
US5583652A (en) 1994-04-28 1996-12-10 International Business Machines Corporation Synchronized, variable-speed playback of digitally recorded audio and video
US5600663A (en) 1994-11-16 1997-02-04 Lucent Technologies Inc. Adaptive forward error correction system
US5617423A (en) 1993-01-08 1997-04-01 Multi-Tech Systems, Inc. Voice over data modem with selectable voice compression
US5699369A (en) * 1995-03-29 1997-12-16 Network Systems Corporation Adaptive forward error correction system and method
US5742773A (en) 1996-04-18 1998-04-21 Microsoft Corporation Method and system for audio compression negotiation for multiple channels
US5881234A (en) 1996-04-26 1999-03-09 Schwob; Pierre R. Method and system to provide internet access to users via non-home service providers
US5890108A (en) 1995-09-13 1999-03-30 Voxware, Inc. Low bit-rate speech coding system and method using voicing probability determination
US5933803A (en) 1996-12-12 1999-08-03 Nokia Mobile Phones Limited Speech encoding at variable bit rate
US5940479A (en) * 1996-10-01 1999-08-17 Northern Telecom Limited System and method for transmitting aural information between a computer and telephone equipment
US5995606A (en) * 1995-03-13 1999-11-30 At&T Corp. Client-server architecture using internet and public switched networks
US6026082A (en) 1996-11-27 2000-02-15 Telergy, Inc. Wireless communication system
US6052391A (en) 1998-02-27 2000-04-18 Lucent Technologies Inc. Dynamic assignment of subrate voice channels in telecommunication networks
US6064653A (en) 1997-01-07 2000-05-16 Bell Atlantic Network Services, Inc. Internetwork gateway to gateway alternative communication
US6069890A (en) * 1996-06-26 2000-05-30 Bell Atlantic Network Services, Inc. Internet telephone service
US6130883A (en) 1998-07-30 2000-10-10 Motorola, Inc. Method and apparatus for voice packet communications
US6175856B1 (en) 1996-09-30 2001-01-16 Apple Computer, Inc. Method and apparatus for dynamic selection of compression processing during teleconference call initiation
US6292479B1 (en) * 1997-03-19 2001-09-18 Bell Atlantic Network Services, Inc. Transport of caller identification information through diverse communication networks
US6298057B1 (en) * 1996-04-19 2001-10-02 Nortel Networks Limited System and method for reliability transporting aural information across a network
US7336649B1 (en) * 1995-12-20 2008-02-26 Verizon Business Global Llc Hybrid packet-switched and circuit-switched telephony system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6041345A (en) * 1996-03-08 2000-03-21 Microsoft Corporation Active stream format for holding multiple media streams
CN1201536C (en) * 1996-06-04 2005-05-11 艾利森电话股份有限公司 Access network over shared medium
US6167060A (en) * 1997-08-08 2000-12-26 Clarent Corporation Dynamic forward error correction algorithm for internet telephone
US8032808B2 (en) * 1997-08-08 2011-10-04 Mike Vargo System architecture for internet telephone
US6404746B1 (en) * 1999-07-13 2002-06-11 Intervoice Limited Partnership System and method for packet network media redirection
WO2001045291A1 (en) * 1999-12-17 2001-06-21 Nokia Corporation A delay measurement system in a packet network
US6862298B1 (en) * 2000-07-28 2005-03-01 Crystalvoice Communications, Inc. Adaptive jitter buffer for internet telephony
US7111049B1 (en) * 2000-08-18 2006-09-19 Kyle Granger System and method for providing internet based phone conferences using multiple codecs
US7164680B2 (en) * 2001-06-04 2007-01-16 Koninklijke Philips Electronics N.V. Scheme for supporting real-time packetization and retransmission in rate-based streaming applications
US7369502B2 (en) * 2004-12-02 2008-05-06 Cisco Technology, Inc. Intelligent provisioning of DSP channels for codec changes

Patent Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864562A (en) 1986-12-18 1989-09-05 Mitsubishi Denki Kabushiki Kaisha Sub-rate multi-media data transmission control system
US5394473A (en) 1990-04-12 1995-02-28 Dolby Laboratories Licensing Corporation Adaptive-block-length, adaptive-transforn, and adaptive-window transform coder, decoder, and encoder/decoder for high-quality audio
US5187591A (en) 1991-01-24 1993-02-16 Micom Communications Corp. System for transmitting and receiving aural information and modulated data
US5539908A (en) 1992-11-24 1996-07-23 International Business Machines Corporation Dynamically linked and shared compression/decompression
US5546395A (en) 1993-01-08 1996-08-13 Multi-Tech Systems, Inc. Dynamic selection of compression rate for a voice compression algorithm in a voice over data modem
US5617423A (en) 1993-01-08 1997-04-01 Multi-Tech Systems, Inc. Voice over data modem with selectable voice compression
US5555447A (en) 1993-05-14 1996-09-10 Motorola, Inc. Method and apparatus for mitigating speech loss in a communication system
US5583652A (en) 1994-04-28 1996-12-10 International Business Machines Corporation Synchronized, variable-speed playback of digitally recorded audio and video
US5533004A (en) 1994-11-07 1996-07-02 Motorola, Inc. Method for providing and selecting amongst multiple data rates in a time division multiplexed system
US5600663A (en) 1994-11-16 1997-02-04 Lucent Technologies Inc. Adaptive forward error correction system
US5995606A (en) * 1995-03-13 1999-11-30 At&T Corp. Client-server architecture using internet and public switched networks
US5699369A (en) * 1995-03-29 1997-12-16 Network Systems Corporation Adaptive forward error correction system and method
US5890108A (en) 1995-09-13 1999-03-30 Voxware, Inc. Low bit-rate speech coding system and method using voicing probability determination
US7336649B1 (en) * 1995-12-20 2008-02-26 Verizon Business Global Llc Hybrid packet-switched and circuit-switched telephony system
US5742773A (en) 1996-04-18 1998-04-21 Microsoft Corporation Method and system for audio compression negotiation for multiple channels
US6298057B1 (en) * 1996-04-19 2001-10-02 Nortel Networks Limited System and method for reliability transporting aural information across a network
US5881234A (en) 1996-04-26 1999-03-09 Schwob; Pierre R. Method and system to provide internet access to users via non-home service providers
US6069890A (en) * 1996-06-26 2000-05-30 Bell Atlantic Network Services, Inc. Internet telephone service
US6175856B1 (en) 1996-09-30 2001-01-16 Apple Computer, Inc. Method and apparatus for dynamic selection of compression processing during teleconference call initiation
US5940479A (en) * 1996-10-01 1999-08-17 Northern Telecom Limited System and method for transmitting aural information between a computer and telephone equipment
US6026082A (en) 1996-11-27 2000-02-15 Telergy, Inc. Wireless communication system
US5933803A (en) 1996-12-12 1999-08-03 Nokia Mobile Phones Limited Speech encoding at variable bit rate
US6064653A (en) 1997-01-07 2000-05-16 Bell Atlantic Network Services, Inc. Internetwork gateway to gateway alternative communication
US6292479B1 (en) * 1997-03-19 2001-09-18 Bell Atlantic Network Services, Inc. Transport of caller identification information through diverse communication networks
US6052391A (en) 1998-02-27 2000-04-18 Lucent Technologies Inc. Dynamic assignment of subrate voice channels in telecommunication networks
US6130883A (en) 1998-07-30 2000-10-10 Motorola, Inc. Method and apparatus for voice packet communications

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
File History of U.S. Patent No. 6,356,545, 203 pages, Dec. 22, 1997 through Mar. 12, 2002.
File History of U.S. Patent No. 7,286,562, 119 pages, Nov. 6, 2001 through Oct. 23, 2007.

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110222530A1 (en) * 1997-08-08 2011-09-15 Mike Vargo System and method for transmitting a telephone call over the Internet
US20120127988A1 (en) * 1997-08-08 2012-05-24 Mike Vargo System and method for encoding telephone call data using varying codec algorithms
US8238330B2 (en) * 1997-08-08 2012-08-07 Advent IP LLC System and method for transmitting a telephone call over the internet
US9312983B2 (en) * 1997-08-08 2016-04-12 Advent IP LLC System and method for encoding telephone call data using varying codec algorithms
US20070133515A1 (en) * 2005-12-13 2007-06-14 Rajesh Kumar Central entity to adjust redundancy and error correction on RTP sessions
US8804575B2 (en) * 2005-12-13 2014-08-12 Cisco Technology, Inc. Central entity to adjust redundancy and error correction on RTP sessions

Also Published As

Publication number Publication date
US20050135339A1 (en) 2005-06-23
US9312983B2 (en) 2016-04-12
US8238330B2 (en) 2012-08-07
US20110222530A1 (en) 2011-09-15
US20120127988A1 (en) 2012-05-24

Similar Documents

Publication Publication Date Title
US6167060A (en) Dynamic forward error correction algorithm for internet telephone
US9312983B2 (en) System and method for encoding telephone call data using varying codec algorithms
US6064673A (en) Communications system having distributed control and real-time bandwidth management
US8379631B2 (en) System, method and computer program product for point-to-point bandwidth conservation in an IP network
US6173044B1 (en) Multipoint simultaneous voice and data services using a media splitter gateway architecture
US7978688B2 (en) System and method for converting packet payload size
US8442196B1 (en) Apparatus and method for allocating call resources during a conference call
US6771674B1 (en) Method and system for forward error correction based on parallel streams
US6847618B2 (en) Method and system for distributed conference bridge processing
US6574218B1 (en) Method and system for spatially disjoint joint source and channel coding for high-quality real-time multimedia streaming over connection-less networks via circuit-switched interface links
JP4686531B2 (en) Packet processing apparatus and method
US6625119B1 (en) Method and system for facilitating increased call traffic by switching to a low bandwidth encoder in a public emergency mode
US6947417B2 (en) Method and system for providing media services
US20020118671A1 (en) Extending office telephony and network data services to a remote client through the internet
US7016348B2 (en) Method and system for direct access to web content via a telephone
US20030012137A1 (en) Controlling network congestion using a biased packet discard policy for congestion control and encoded session packets: methods, systems, and program products
US8737290B2 (en) Performance enhancement protocol, systems, methods and devices
JP4167985B2 (en) Method and apparatus for compressing packet headers
US7006494B1 (en) System and method for a virtual telephony intermediary
WO2000018094A1 (en) Method and apparatus for connecting an incoming call to a computer system
US20030174657A1 (en) Method, system and computer program product for voice active packet switching for IP based audio conferencing
US6975625B1 (en) Distributed call control processing
Moffat et al. The Internet telephone-a new paradigm
Šarić et al. Voice Transmission Over JP Networks
EP1328110A1 (en) A call handling device for different types of applications

Legal Events

Date Code Title Description
AS Assignment

Owner name: LAURUS MASTER FUND, LTD., NEW YORK

Free format text: SECURITY AGREEMENT;ASSIGNORS:VERSO TECHNOLOGIES, INC.;TELEMATE.NET SOFTWARE, INC.;VERSO VERILINK, LLC;REEL/FRAME:018535/0604

Effective date: 20060920

AS Assignment

Owner name: ADVENT IP LLC, NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:VERSO TECHNOLOGIES, INC.;REEL/FRAME:022343/0807

Effective date: 20090302

AS Assignment

Owner name: VERSO TECHNOLOGIES, INC., GEORGIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CLARENT CORPORATION;REEL/FRAME:022445/0713

Effective date: 20030207

AS Assignment

Owner name: CLARENT CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VARGO, MIKE;CHANG, JERRY;REEL/FRAME:025460/0542

Effective date: 19971215

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 4

SULP Surcharge for late payment
FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20191004