The present invention relates generally to implementation of telecommunication protocols. More particularly, the present invention relates to the implementation of large and/or multiple telecommunication protocols utilizing memory-limited processors.
Less than thirty years ago, the term “telecommunications” connoted making and receiving telephone calls over the public switched telephone network (PSTN) built by AT&T. Today, telecommunications means transporting data representing voice, video, text, and instructions over wired and wireless digital networks such as the Internet.
Within the PSTN telephony environment the equipment needed to support the telecommunications infrastructure was centralized at a telephone company “central office” so that Customer Premises Equipment (CPE) could be limited to simple telephones. The nature of modern digital networks is to decentralize many functions and capabilities thus requiring more complex CPE to provide access. However, subscribers expect newer digital telecommunications to be usable with the same ease as the traditional telephone and at low cost. This expectation dictates that the digital network interfaces and associated protocols be compact and unobtrusive, implemented inexpensively, and require little in the way of subscriber interaction.
The complexity of implementing a CPE for digital telecommunications comes primarily from the need to implement the protocols used to organize information sent over digital networks. These protocols evolved in rich computing environments with many computing resources (e.g. CPU power for computation; memory for data and program storage). Additionally, the protocols evolved quickly (i.e. in months or years, vs. the traditional PSTN years or decades), reflecting knowledge gained from actual application. The CPE for digital communications of today must, therefore, have an effective way to deal with protocol implementation within the restricted computational resources dictated by the CPE's restricted hardware cost.
What would be useful is a system and method for implementing multiple digital telecommunication protocols on a reduced hardware CPE that is not limited to any specific protocol.
An embodiment of the present invention is a telecommunications gateway that implements telecommunication protocols using a telecommunication protocol engine (TPE). Telecommunication protocols comprise multiple digital networking protocols (e.g., Session Initiation Protocol (SIP), H.323, DHCP, TCP/IP and STUN protocol) and telephony protocols. However, the present invention is not so limited. As will be apparent to those skilled in the art, any protocol that facilitates telecommunications over digital networks (both between digital devices, a digital device and an analog device, and between analog devices) may be implemented by the TPE without departing from the scope of the present invention.
In this embodiment, the TPE is implemented using inexpensive, memory limited microprocessors and inexpensive flash memory. However, this is not meant as a limitation. As will be apparent to those skilled in the art, the present invention may be implemented in other computing contexts without departing from the scope of the present invention.
Therefore, an aspect of the present invention is an implementation of a telecommunication protocol engine (TPE) using a memory limited microprocessor and flash memory.
Another aspect of the present invention is an implementation of a (TPE) using is a “virtual machine” that executes instructions from flash memory.
Another aspect of the present invention is the representation of telecommunication protocols as Finite State Machine (FSM) abstractions.
Still another aspect of the present invention is the implementation of a virtual machine to support FSMs used to express protocol implementation.
A further aspect of the present invention is the implementation of FSMs using virtual machine instructions stored in a flash memory, wherein the virtual machine instructions represent telecommunication protocols implemented as states, instructions, and transitions.
Yet another aspect of the present invention is a CPE Control Protocol that specifies how an end user can control the behavior of the CPE using a standard telephone that may be connected directly to the CPE or that accesses the CPE remotely.
An aspect of the present invention is a telephony gateway comprising a TPE.
Another aspect of the present invention is the implementation of the Session Initiation Protocol (SIP), H.323 protocol, DHCP and STUN protocol as FSM.
These and other aspects of the present invention will become apparent from a review of the general and detailed descriptions that follow. An embodiment of the present invention is a telecommunications gateway that implements multiple digital networking protocols using a telecommunication protocol engine (TPE). In this embodiment, the TPE is implemented using inexpensive, memory limited microprocessors and inexpensive flash memory. However, this is not meant as a limitation. As will be apparent to those skilled in the art, the present invention may be implemented in other computing contexts without departing from the scope of the present invention.
A finite state machine (FSM) execution facility is implemented using virtual machine instructions located in the flash memory. The “state” of a given instance of a FSM is located in the RAM and accessed by the microprocessor. As the virtual machine executes instructions from the flash memory, it modifies the FSM state in RAM along with accessing other facilities of the microprocessor and other software resources.
Another embodiment of the present invention comprises a method for representing a protocol as a FSM using an extension of the C++ programming language. Specifically, an FSM specification may be created on a development computer using C++ with a specialized library. The result is a program that, when executed on the development computer, produces virtual machine instructions that can be loaded into the flash memory of the TPE. The virtual machine within the TPE microprocessor then uses these instructions as described above. While this embodiment uses the C++ programming language and a C++ library, the present invention is not so limited. As will be appreciated by those skilled in the art, other programming languages (and related libraries) may be used to produce virtual machine instructions that define an FSM.
An additional aspect of the present invention is the specification of a CPE Control Protocol that is implemented using the technique described above. This protocol specifies how an end user can control the behavior of the CPE using a standard telephone that may be connected directly to the CPE or accessing the CPE remotely by “calling” over either a VoIP or PSTN connection. This protocol allows the user to direct the CPE to place a local telephone to VoIP call; a local telephone to local PSTN call or a received VoIP call routed to the local PSTN based call. Additionally, this protocol allows the user to modify other operations of the CPE.
The CPE Control Protocol receives input from the user via the standard telephone touch-tone keypad. Specifically, the user enters a pound-sign (#), a sequence of digits or stars identifying the operation with any related data and a terminating pound-sign (#) indicating the end of user input. The CPE Control Protocol communicates with the user via one or more facilities depending on the originating location of the command. These include: flashing of the LEDs on the CPE, generation of tones played over the telephone; voice commands played over the telephone; placing a call back to the telephone and using the “Caller ID” mechanism to present alpha numeric data via the telephones Caller ID display facility.
An embodiment of the present invention is a telecommunications gateway that implements multiple protocols using a telecommunication protocol engine (TPE). In this embodiment, the TPE is implemented using an inexpensive, memory limited microprocessors and inexpensive flash memory. A finite state machine (FSM) execution facility is implemented in firmware using virtual machine instructions located in the flash memory. The “state” of a given instance of a FSM is located in the RAM and accessed by the microprocessor. As the virtual machine executes instructions from the flash memory, it modifies the FSM state in RAM along with accessing other facilities of the microprocessor and other software resources. However, this is not meant as a limitation. As will be apparent to those skilled in the art, the present invention may be implemented in other computing contexts without departing from the scope of the present invention.
Referring to
The template provides the specifications for the one or more FSMs that represent a single protocol. Each FSM specification is used to generate a set of virtual machine instructions (illustrated in
The virtual machine instructions are read and executed on demand by a virtual machine that resides in firmware 105. Since the microprocessor 120 (see
A virtual machine instruction and its operands 150 are retrieved, by the CPU 120 at the direction of the virtual machine 125 and stored in RAM 115 for execution. Virtual machine 125 then executes the instruction that was retrieved.
A telecommunication protocol is implemented in accordance with the process embodiment illustrated in
The classic definition of a FSM is a collection of states. When a FSM is being executed, it is said to be “in” a specific state waiting for an event. When an event occurs, the FSM definition asserts a next state to be entered. When a state is entered a set of actions may performed, then the FSM waits in that state for the next event. This FSM operational model is implemented directly by the virtual machine described above in reference to
The virtual machine in this embodiment is specially designed to operate with events modeled as “tokens” so that it can respond to both physical events identified by the microprocessor firmware or logical events generated by other FSM being concurrently executed in a uniform manner. The representation of “tokens” and their management further enhances the TPE to operate on very low cost microprocessor architectures in which program and data memory is very limited.
Virtual machine instructions are generated using a “translator” that receives human-readable syntax and translates this syntax to FSM instructions. To facilitate the specification of a protocol in human readable form and support its maintenance as the protocol evolves over time, the translator and virtual machine support the concept of shared state entry instructions through function or macros. These are collections of virtual machine instructions that reside in the flash memory, along with FSM specifications. As required, the virtual machine can execute these special collections of instructions upon demand.
The C++ definition of each Advocate comprises code that produces the appropriate virtual machine instructions that will be placed into the flash memory. Note that some Advocates take parameters. The task of setting up virtual machine instructions for accessing and updating these parameters is also performed by C++ code within the body of the Advocate.
The CPU 610 is connected to a RAM 650, to a flash memory 640, and to a firmware unit 660. Together, the CPU 610, the RAM 650, the flash memory 640, and the firmware unit comprise a telecommunication protocol engine as described in the context of
The connection between a telephony gateway (720,730) and its associated ISP network (710, 715) is made by means known in the art. By way of illustration and not as a limitation, telephony gateway-A 720 is in communication with ISP-A network 710 using DSL connection. Telephony gateway-B 730 is in communication with ISP-B network 715 via a dialup connection. It is noteworthy that no general-purpose computer is required to establish communication between a telephony gateway (720, 730) and the service provider gateway 705.
Both telephony gateway-A 720 and telephony gateway-B 730 are registered with service provider network 700. Telephony gateway-A 720 may place a call to telephony gateway-B 730 by interacting with the service provider network 700. The service provider proxy 703 then contacts telephony gateway-B 730 on behalf of telephony gateway-A 720 to facilitate call setup (also known in the art as signaling). Once the signaling has been completed, telephony gateway-A 720 interacts directly with telephony gateway-B 730 passing information until the call is terminated. When the call is terminated, call tear down singling is performed through the service provider network proxy 703.
Both telephony gateway-A 720 and telephony gateway-B 730 are registered with service provider network 700. Service provider network 700 is also connected to the PSTN 740, which is connected to telephone-C 745 and telephone-D 750. A call placed by telephony gateway-A 720 to telephone-C via the PSTN 740 would involve call setup and tear down signaling between telephony gateway-A 720, server provider proxy 703, and service provider gateway 705.
A call placed over a service provider network 706 is routed by service provider gateway 705. In an embodiment of the present invention, the protocol used by a telephony gateway (720, 730) and the routing is controlled by a number dialed to initiate a telephone call via a CPE Control protocol. By way of illustration and not as a limitation, a call placed from telephone-A 725 to telephone-B 735 is an “on-network” call, meaning both the calling party and receiving party are using registered telephony gateways (720, 730). In this embodiment of the present invention, the telephone numbers associated with registered telephony gateways begin with the same prefix, for example 777. In this embodiment, the calling party using telephone-A 725 presses #777(plus the remaining telephone number digits)# on telephone-A 725 (note that the starting and ending pound-sings (#) reflect the requirements of the CPE Control protocol). Service provider gateway 705 determines from the prefix preceding the remaining telephone number digits that the call is on-network and connects telephone-A 725 to telephone-B 735 over a service provider network 700.
By contrast, if telephone-A 725 places a call to telephone-C 745, the call is dialed using the standard prefix (1+areacode+number) again bracketed by the pound-sings required by the CPE Control protocol (e.g. #16503288459#).
As will be apparent to those skilled in the art, other signaling conventions may be used to route telephone calls without departing from the scope of the present invention.
In an embodiment of the present invention, a service provider gateway is a self-contained system for providing telephone communications using telephony gateways as embodied herein.
Referring to
In yet another embodiment of the present invention, a service provider gateway 800 according an embodiment of the present invention as described in reference to
In yet another embodiment of the present invention, the telephony gateway is configured to receive communications from a remote location via a telephone call (either from the PSTN or a wireless service provider). The communications may be used to configure the gateway or to initiate a call from the gateway to a remote communication device. In this latter embodiment, the gateway additionally functions as a bridge between the incoming calling device and the remote communication device. The gateway answers the incoming calling, the CPE Control protocol accepts user input (e.g. a authentication PIN, star and target phone number: #65432*7771234567#) necessary to call the remote receiving device, and then places a VoIP call to the remote communication device.
In another embodiment of the present invention, two telephony gateways are connected to first and second communication devices respectively that are in communication with each other. The first communication device sends a “hook-flash” signal to the first telephony gateway. The first telephony gateway suspends the communication with the second telephony gateway and enables caller access to the CPE Control protocol. Using this protocol the user directs the CPE to initiate a three-way call to another phone. The CPE Control protocol will notify the CPE Control Protocol on the second device that a three-way call has been initiated. The three-way connection comprises sharing data from one party with the other two parties on the call. In this manner, a three-way connection is established and maintained without external mixing devices or the need to deploy a media gateway in the VoIP system.
A telephony gateway, CPE Control protocol and a telecommunication protocol engine and method have now been illustrated. As described herein, the telecommunication protocol engine and method results in significant reduction in on-chip memory requirements and permits the use of otherwise memory limited microprocessors. It will also be understood that the invention may be embodied in other specific forms without departing from the scope of the invention disclosed and that the examples and embodiments described herein are in all respects illustrative and not restrictive. Those skilled in the art of the present invention will recognize that other embodiments using the concepts described herein are also possible.
This application claims priority under 35 U.S.C. §119(e) from provisional application No. 60/394,207 filed Jul. 5, 2002 and application Ser. No. 10/354,527 filed Jan. 30, 2003 both of which applications are incorporated by reference herein, in their entirety, for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
5402481 | Waldman | Mar 1995 | A |
5809128 | McMullin | Sep 1998 | A |
5987103 | Martino | Nov 1999 | A |
6014440 | Melkild et al. | Jan 2000 | A |
6091732 | Alexander, Jr. et al. | Jul 2000 | A |
6104757 | Rhee | Aug 2000 | A |
6118768 | Bhatia et al. | Sep 2000 | A |
6125113 | Farris et al. | Sep 2000 | A |
6141345 | Goeddel et al. | Oct 2000 | A |
6185288 | Wong | Feb 2001 | B1 |
6256778 | Oliver | Jul 2001 | B1 |
6307853 | Storch et al. | Oct 2001 | B1 |
6351464 | Galvin et al. | Feb 2002 | B1 |
6351730 | Chen | Feb 2002 | B2 |
6359880 | Curry et al. | Mar 2002 | B1 |
6389005 | Cruickshank | May 2002 | B1 |
6434139 | Liu et al. | Aug 2002 | B1 |
6445694 | Swartz | Sep 2002 | B1 |
6449251 | Awadallah et al. | Sep 2002 | B1 |
6496477 | Perkins et al. | Dec 2002 | B1 |
6542497 | Curry et al. | Apr 2003 | B1 |
6597686 | Smyk | Jul 2003 | B1 |
6603774 | Knappe et al. | Aug 2003 | B1 |
6618761 | Munger et al. | Sep 2003 | B2 |
6636504 | Albers et al. | Oct 2003 | B1 |
6658496 | Minakata et al. | Dec 2003 | B1 |
6700956 | Chang et al. | Mar 2004 | B2 |
6760324 | Scott et al. | Jul 2004 | B1 |
6763226 | McZeal, Jr. | Jul 2004 | B1 |
6771594 | Upadrasta | Aug 2004 | B1 |
6788769 | Waites | Sep 2004 | B1 |
6795540 | Mow | Sep 2004 | B1 |
6822957 | Schuster et al. | Nov 2004 | B1 |
6826174 | Erekson et al. | Nov 2004 | B1 |
6856612 | Bjelland et al. | Feb 2005 | B1 |
6895000 | Lai et al. | May 2005 | B2 |
6907031 | Ehlinger et al. | Jun 2005 | B1 |
6947417 | Laursen et al. | Sep 2005 | B2 |
6954454 | Schuster et al. | Oct 2005 | B1 |
7012888 | Schoeneberger et al. | Mar 2006 | B2 |
7016481 | McElvaney | Mar 2006 | B2 |
7042841 | Abdelilah et al. | May 2006 | B2 |
7046683 | Zhao | May 2006 | B1 |
7092380 | Chen et al. | Aug 2006 | B1 |
7113500 | Bollinger et al. | Sep 2006 | B1 |
7145900 | Nix et al. | Dec 2006 | B2 |
7212622 | Delaney et | May 2007 | B2 |
7213766 | Ryan et al. | May 2007 | B2 |
7227938 | Rodman et al. | Jun 2007 | B2 |
7283542 | Mitchell | Oct 2007 | B2 |
7302053 | Chang et al. | Nov 2007 | B2 |
20010038033 | Habib | Nov 2001 | A1 |
20020052965 | Dowling | May 2002 | A1 |
20020097843 | Krol et al. | Jul 2002 | A1 |
20020131604 | Amine | Sep 2002 | A1 |
20020147912 | Shmueli et al. | Oct 2002 | A1 |
20020184376 | Sternagle | Dec 2002 | A1 |
20020191621 | Jha | Dec 2002 | A1 |
20020191768 | Stoughton | Dec 2002 | A1 |
20030002479 | Vortman et al. | Jan 2003 | A1 |
20030023669 | DeLima et al. | Jan 2003 | A1 |
20030093606 | Mambakkam et al. | May 2003 | A1 |
20030110257 | Hyun et al. | Jun 2003 | A1 |
20030112820 | Beach | Jun 2003 | A1 |
20030123388 | Bradd | Jul 2003 | A1 |
20030161453 | Veschi | Aug 2003 | A1 |
20030204619 | Bays | Oct 2003 | A1 |
20030214939 | Eldumiati et al. | Nov 2003 | A1 |
20030219006 | Har | Nov 2003 | A1 |
20040017794 | Trachewsky | Jan 2004 | A1 |
20040019539 | Raman et al. | Jan 2004 | A1 |
20040032860 | Mundra et al. | Feb 2004 | A1 |
20040032862 | Schoeneberger et al. | Feb 2004 | A1 |
20040047451 | Barker et al. | Mar 2004 | A1 |
20040086093 | Schranz | May 2004 | A1 |
20040114581 | Hans et al. | Jun 2004 | A1 |
20040133668 | Nicholas, III | Jul 2004 | A1 |
20040141508 | Schoeneberger et al. | Jul 2004 | A1 |
20040141758 | El-Reedy | Jul 2004 | A1 |
20040165578 | Burritt et al. | Aug 2004 | A1 |
20040205023 | Hafer et al. | Oct 2004 | A1 |
20040218583 | Adan et al. | Nov 2004 | A1 |
20040223458 | Gentle | Nov 2004 | A1 |
20040248590 | Chan et al. | Dec 2004 | A1 |
20040252703 | Bullman et al. | Dec 2004 | A1 |
20040258003 | Kokot et al. | Dec 2004 | A1 |
20050002506 | Bender et al. | Jan 2005 | A1 |
20050074031 | Sunstrum | Apr 2005 | A1 |
20050074122 | Fascenda | Apr 2005 | A1 |
20050089052 | Chen et al. | Apr 2005 | A1 |
20050091392 | Gesswein et al. | Apr 2005 | A1 |
20050094621 | Acharya et al. | May 2005 | A1 |
20050138183 | O'Rourke et al. | Jun 2005 | A1 |
20050180464 | McConnell et al. | Aug 2005 | A1 |
20050195799 | Burne et al. | Sep 2005 | A1 |
20050201414 | Awais | Sep 2005 | A1 |
20050220083 | Takeuchi | Oct 2005 | A1 |
20050243733 | Crawford et al. | Nov 2005 | A1 |
20060008059 | Ying et al. | Jan 2006 | A1 |
20060029062 | Rao et al. | Feb 2006 | A1 |
20060029063 | Rao et al. | Feb 2006 | A1 |
20060031393 | Cooney et al. | Feb 2006 | A1 |
20060034296 | Talucci | Feb 2006 | A1 |
20060037071 | Rao et al. | Feb 2006 | A1 |
20060039356 | Rao et al. | Feb 2006 | A1 |
20060088025 | Barkley et al. | Apr 2006 | A1 |
20060208066 | Finn et al. | Sep 2006 | A1 |
20060276230 | McConnell | Dec 2006 | A1 |
20070248081 | Barkley et al. | Oct 2007 | A1 |
20080025291 | Barkley et al. | Jan 2008 | A1 |
Number | Date | Country | |
---|---|---|---|
20040205777 A1 | Oct 2004 | US |
Number | Date | Country | |
---|---|---|---|
60394207 | Jul 2002 | US |