This invention relates in general to network communication, and more particularly to a method and apparatus for dynamically assigning a network endpoint to a network region.
Voice-over-packet (VoP) technology has become increasingly prevalent in recent years. Varying bandwidths and network connections require different degrees of compression for successful transmission of voice traffic. As networks become more complicated, the selection of proper compression algorithms for communications from a network endpoint becomes increasingly difficult. Network device mobility further complicates the efficient management of bandwidth and proper selection of compression algorithms.
In accordance with the present invention, the disadvantages and problems associated with managing bandwidth and codec selection for network endpoints have been substantially reduced or eliminated. In particular, the present invention discloses a method and apparatus for dynamically assigning network endpoints to network regions.
In accordance with one embodiment of the present invention, a server receives a request for a network address for a network endpoint. The server determines a network address for the network endpoint and further determines a network region for the network endpoint. The server communicates both the network address and the network region to the network endpoint.
In accordance with another embodiment of the present invention, a call manager receives a call request including a call destination from a network endpoint. Based on the network address of the network endpoint, the call manager determines the network region for the network endpoint and the call destination. Using the network regions of the network endpoint and the call destination, the call manager determines a codec for the communication between the network endpoints, and applies the codec to the communication between the endpoints.
In accordance with yet another embodiment of the present invention, a network endpoint stores a table relating network addresses to network regions. The network communicates a request for a network address using an interface. The network endpoint receives its network address and determines its network region in the table using the network address. When placing a call, the network endpoint sends its network region to a call manager. The call manager then determines a proper codec for the communication, which may be either stored locally at the endpoint or found elsewhere in the network. If the codec is stored on the phone, the call manager sends a direction to network endpoint instructing network endpoint to apply codec to the communication. Otherwise, the call manager directs network endpoint to couple to a port of a network codec.
Important technical advantages of certain embodiments of the present invention include rapid assignment of a new network region for a network endpoint. Because a network region can be dynamically assigned, the present invention reduces or eliminates server reconfiguration in the network to reflect a new address for the network endpoint each time the network endpoint moves to a new network region. This results in greater versatility of the network endpoint, as well as savings in time to configure the system.
Another important technical advantage of certain embodiments of the present invention is that the invention can be incorporated into a variety of components in a variety of ways. For example, the invention can be included in servers, call managers, or network endpoints. Furthermore, the present invention can be included in components ordinarily found in networks, and consequently may not require new types of hardware and/or software.
Yet another important technical advantage of certain embodiments of the present invention is call prioritization. In accordance with one embodiment of the present invention, a call priority can be associated with a call from a network endpoint. Call priority can provide a guaranteed connection from anywhere in the network by ensuring that the call never uses more bandwidth than is available. Alternatively, call priority can require that the least possible compression is used, so that the user gets the highest quality call possible.
Numerous other technical advantages will be apparent to one skilled in the art. It is understood that some, all, or none of the technical advantages described may be present in any particular embodiment of the invention. The technical advantages and scope of the invention may better be understood with reference to the following drawings, description, and claims.
For a more complete understanding of the present invention and its advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which:
Network 102 may couple to other networks using different protocols and may communicate media between network regions 104 as well as components outside network regions 104. Network 102 may also couple to non-packet-based communication networks. For example, network 102 may couple to a private branch exchange (PBX), the public switched telephone network (PSTN) a wireless network, etc., and may communicate with all manner of media devices.
Network 102 includes several network regions 104 each of which may be defined by a particular subnet 106. Regions 104 include locations where network endpoints 400 can be coupled to the network. Network regions 104 are interconnected by communication links 110 having varying bandwidths depending on which regions 104 are connected.
Subnets 106 include any segment, portion, or part of network 102, including but not limited to a collection of several hardware components of network 102, or a part of communication facilities. A network address defining the network location of network endpoints or other devices typically includes a portion corresponding to subnet 106. Subnet 106 may be defined by the physical location of routers in network 102 and, as a result, may provide a proxy for physical location of network endpoints 400 couple to subnet 106.
Network endpoints 400 include any suitable combination of hardware and/or software that can communicate media using network 102. For example, network endpoint 400 may be a telephone, a computer running telephony software, a video monitor, or any other communication or processing hardware and/or software. In a particular embodiment, network endpoint 400 may be an IP phone that communicates media in transport control protocol/Internet protocol (TCP/IP) packets.
System 100 also includes server 200. Server 200 may be comprised of hardware, software, or any combination thereof which allows the server 200 to assign network addresses to network endpoints 400. Server 200 can be a Dynamic Host Configuration Protocol (DHCP) server or any server appropriate to the protocol of network 102 that can assign network endpoints 400 addresses within network 102.
Call manager 300 manages the overall establishment of calls between network endpoints 400. Call manager 300 is an application that controls call processing, routing, telephone features, and options. Call manager 300 may be implemented as hardware or software executed on one or more processors coupled to network 102. Call manager 300 software may be embodied in any type of computer readable medium, including but not limited to: hard drives, diskettes, CD ROMs, DVD ROMs, or other optical or magnetic storage drives.
Codecs (compression/decompression algorithms) 108 perform compression and decompression of voice packets communicated over network 102. Codecs 108 may include G.729, G.711, linear wide band, or any other appropriate algorithm for compressing and decompressing packets transmitted across network 102. Codecs 108 may include ports 112 that couple to network endpoints 400 to establish a connection between network endpoints 400. Codecs 108 can be stored as a network resource or, alternatively, can be stored locally on network endpoints 400.
In operation, system 100 establishes communication between network endpoints 400 by applying codecs 108 based on the regions 104 of network endpoints 400. Various components of system 100 can permit system 100 to dynamically respond to a new location of network endpoint 400. For example, in one embodiment, network endpoint 400 sends a request to the server 200 for a network address. Server 200 determines a network address for network endpoint 400, and uses this network address to determine a network region 104 for network endpoint 400. Server 200 then sends both the network address and a network region 104 identifier to network endpoint 400. Network region 104 identifier may take any suitable form, for example, time-length-value (TLV) data. Network endpoint 400 then communicates this network region 104 identifier to call manager 300 to enable call manager 300 to select a proper codec 108 for communication between network regions 104.
In an alternative embodiment, network endpoint 400 sends a network request to server 200 for an address when endpoint 400 is coupled to network 102. Network endpoint 400 receives a network address from server 200. When network endpoint 400 communicates a call request comprising a call destination to call manager 300, call manager 300 determines a network region 104 for network endpoint 400 based on network endpoint's 400 network address. Call manager 300 can use region 104 of network endpoint 400 and region 104 of the call destination to determine the proper codec 108 for the communication.
In yet alternative embodiment, network endpoint 400 sends a request for a network address to server 200. Server 200 responds with a network address, and network endpoint 400 uses that address to determine its own network region 104. Network endpoint 400 may communicate this network region 104 to call manager 300 to allow proper codec 108 selection for communications from endpoint 400. Alternatively, network endpoint 400 may select a codec based on network region 104.
In a particular embodiment, server 200 receives a request for a network address through interface 202. Processor 204 processes this request according to instructions found in code 208. Processor 204 retrieves subnet-to-region table 210 and uses the network address that has been assigned to network endpoint 400 to determine a particular region for the network endpoint 400. Processor 204 transmits both the network address and the region identifier to network endpoint 400 through interface 202. The region identifier may be encoded as a time-length-value (TLV) data or any other suitable form of storage.
Memory 306 stores code 308 for directing operation of call manager 300. Memory 306 also stores codec information 310 which assists call manager 300 in selecting and monitoring available codecs 108. In a particular embodiment, codec information 310 may include available ports 112 on codecs 108. Memory 306 also stores region-to-region table 312. Region-to-region table 312 maps regions to one another by, for example, bandwidth of connection. Call manager 300 uses region-to-region table 312 to determine what codec 108 should be applied to a communication between network endpoints 400 in network regions 104 in order to allow the call to be successfully completed.
In operation, call manager 300 receives through interface 302 a call request from originating network endpoint 400 requesting a connection with a destination network endpoint 400. In a particular embodiment, call manager 300 may determine region 104 of network endpoint 400 according to its network address. Alternatively, the call request from network endpoint 400 may include information identifying region 104 of network endpoint 400. Once call manager 300 has identified region 104 of originating network endpoint 400 and the region of destination network endpoint 400, call manager 300 can look up the codec 108 required for the call in region-to-region table 312 and use codec information 310 to determine if codec 108 is available. Call manager 300 applies the required codec 108 to the communication between network endpoints 400. Applying the codec may include connecting network endpoints 400 to ports 112 of a network codec 108, or giving an instruction to network endpoints 400 to apply a local codec 108.
When coupled to network 102, network endpoint 400 sends a request for a network address to server 200. In the embodiment depicted, the network endpoint 400 receives the network address from the server 200, looks up its region based on network address using table 410, and stores its region 104 in memory 406. When a user places a call on the network endpoint 400, network endpoint 400 sends the call request to call manager 300. In a particular embodiment, network endpoint 400 may also send its region 104 information to call manager 300. After call manager 300 determines a codec 108 for the communication, call manager 300 notifies network endpoint 400 of the codec 108 selection. Alternatively, network endpoint 400 may perform codec 108 selection itself Once network endpoint 400 is notified, network endpoint 400 may work together with call manager 300 using codec information 412 apply a codec 108 to its communications. In the case where codec 108 is on board the network endpoint 400, network endpoint 400 can perform compression and decompression of communications locally.
In steps 712 and 714, server 200 constructs and sends a response to network endpoint 400. Server 200 assembles a response including the network address for network endpoint 400 and the TLV value for region 104 at step 712. In step 714, server 200 communicates the response to network endpoint 400. Network endpoint 400 can then communicate its region 104 along with call requests to call manager 300.
Once region and priority have been determined by the call manager 300, call manager 300 can then determine what codec 108 needs to be used for the communication between network endpoints 400. Call manager 300 first retrieves region-to-region information relating the caller's first region and the called party's region by bandwidth at step 812. Next, call manager 300 selects codec 108 based on the region-to-region information and the priority of the call at step 814.
Then, in step 816, call manager 300 determines whether the codec 108 is available on board network endpoints 400. If the codec is not available on the network endpoints 400, call manager 300 proceeds to step 818, in which call manager 300 finds an available codec 108 on the network 102 and connects the caller to one port 112 of that codec 108. Call manager 300 connects the called party to another port 112 of the selected codec 108 at step 820. If the codec 108 is available on board the network endpoints 400, then, in steps 822 and 824, call manager 300 sends a message to each phone requesting that endpoints 400 apply codec 108 to communications between the caller and the called party.
After codec 108 selection has been made, call manager 300 establishes a connection between the caller and the called party through codec 108 at step 826. Once the call has been completed, call manager terminates the call at step 828, and the resources are released. In step 830, the user can choose to initiate a new call from network endpoint 400. The process then proceeds to step 832, in which call manager 300 determines whether network endpoint 400 is at the same network address as it was for the previous call. If network endpoint 400 is at the same network address, then call manager 300 looks up the called party's region and repeats the call process from there. If network endpoint 400 has moved to a new address, however, then call manager 300 returns to step 804 to determine the caller's new network address, to determine a new region 104 based on that address, etc.
In step 908, the user of network endpoint 400 initiates a request for communication with another network endpoint 400. Network endpoint 400 retrieves a table mapping network addresses to regions 104 at step 910. Network endpoint 400 uses the table to determine a network region 104 for network endpoint 400 at step 912. Then, in step 914, network endpoint 400 determines the priority for the call. This priority can be fixed based on the network endpoint 400 itself, or it can be determined on a call-to-call basis.
Network endpoint 400 then begins the process of codec selection. In step 916, network endpoint 400 retrieves a region-to-region map indicating bandwidth between regions. Network endpoint 400 uses the region-to-region map to select a codec 108 for the call based on bandwidth and priority at step 918. Once the codec 108 is selected, network endpoint 400 determines whether or not the codec 108 is available on board network endpoint 400 at step 920. If the codec 108 is on board, network endpoint 400 applies the codec to the call before communicating it to another network endpoint 400 at step 922. If the codec is not on board, then in step 924, network endpoint 400 sends a codec request to call manager 300. After call manager 300 receives this request, it assigns network endpoint 400 to a port 112 of the appropriate codec 108. Call manager 300 then transmits this assignment to network endpoint 400, which receives the codec port assignment at step 926. Then, in step 928, network endpoint 400 couples to the assigned codec port 112. Once this connection has been established, network endpoints 400 can communicate with one another through the connection. When the call is over, network endpoint 400 can terminate the call at step 932, and release the resources associated with it. User then has the option of placing a new call from this location or coupling network endpoint 400 to another location on the network 102. Network endpoints 400 can detect decoupling at step 934. If the user is initiating a new call from the same location, then the flowchart returns to step 908 in which the user initiates a request for communication with another endpoint 400. If, instead, endpoint 400 was decoupled, the flowchart returns to step 902 wherein endpoint 400 detects being coupled to the network 102.
Although the present invention has been described with several embodiments, a myriad of changes, variations, alterations, transformations, and modifications may be suggested to one skilled in the art, and it is intended that the present invention encompass such changes, variations, alterations, transformations, and modifications as fall within the scope of the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
6078582 | Curry et al. | Jun 2000 | A |
6546003 | Farris | Apr 2003 | B1 |
6597906 | Van Leeuwen et al. | Jul 2003 | B1 |
6678280 | Kim et al. | Jan 2004 | B1 |
6856616 | Schuster et al. | Feb 2005 | B1 |
20010006519 | Voit | Jul 2001 | A1 |
20010049746 | Shin | Dec 2001 | A1 |
20010055299 | Kelly | Dec 2001 | A1 |
20020167937 | Goodman | Nov 2002 | A1 |
20020196776 | Chiang | Dec 2002 | A1 |
20030088421 | Maes et al. | May 2003 | A1 |
20030128692 | Mitsumori et al. | Jul 2003 | A1 |
Number | Date | Country |
---|---|---|
1 107 538 | Jun 2001 | EP |
1 113 647 | Jul 2001 | EP |
WO 9859467 | Dec 1998 | WO |
WO 0145374 | Jun 2001 | WO |
Number | Date | Country | |
---|---|---|---|
20030158968 A1 | Aug 2003 | US |