The present invention relates to the marriage of the Internet with telephony systems, and more specifically, to a system, method and article of manufacture for using the Internet as the communication backbone of a communication system architecture while maintaining a rich array of call processing features.
The present invention relates to the interconnection of a communication network including telephony capability with the Internet. The Internet has increasingly become the communication network of choice for the user marketplace. Recently, software companies have begun to investigate the transfer of telephone calls across the internet. However, the system features that users demand of normal call processing are considered essential for call processing on the Internet. Today, those features are not available on the internet.
According to a broad aspect of a preferred embodiment of the invention, telephone calls, data and other multimedia information is routed through a hybrid network which includes transfer of information across the internet utilizing telephony routing information and internet protocol address information. A telephony order entry procedure captures complete user profile information for a user. This profile information is used by the system throughout the telephony experience for routing, billing, monitoring, reporting and other telephony control functions. Users can manage more aspects of a network than previously possible and control network activities from a central site, while still allowing the operator of the telephone system to maintain quality and routing selection. The hybrid network also contains logic for responding to requests for quality of service and reserving the resources to provide the requested services.
The foregoing and other objects, aspects and advantages are better understood from the following detailed description of a preferred embodiment of the invention, with reference to the drawings, in which:
FIGS. 69A-69AI are automated response unit (ARU) call flow charts showing software implementation in accordance with a preferred embodiment;
The Internet is a method of interconnecting physical networks and a set of conventions for using networks that allow the computers they reach to interact. Physically, the Internet is a huge, global network spanning over 92 countries and comprising 59,000 academic, commercial, government, and military networks, according to the Government Accounting Office (GAO), with these numbers expected to double each year. Furthermore, there are about 10 million host computers, 50 million users, and 76,000 World-Wide Web servers connected to the Internet. The backbone of the Internet consists of a series of high-speed communication links between major supercomputer sites and educational and research institutions within the U.S. and throughout the world.
Before progressing further, a common misunderstanding regarding the usage of the term “internet” should be resolved. Originally, the term was used only as the name of the network based upon the Internet Protocol, but now, internet is a generic term used to refer to an entire class of networks. An “internet” (lowercase “i”) is any collection of separate physical networks, interconnected by a common protocol, to form a single logical network, whereas the “Internet” (uppercase “I”) is the worldwide collection of interconnected networks that uses Internet Protocol to link the large number of physical networks into a single logical network.
A. Internet Protocols
Protocols govern the behavior along the Internet backbone and thus set down the key rules for data communication. Transmission Control Protocol/Internet Protocol (TCP/IP) has an open nature and is available to everyone, meaning that it attempts to create a network protocol system that is independent of computer or network operating system and architectural differences. As such, TCP/IP protocols are publicly available in standards documents, particularly in Requests for Comments (RFCs). A requirement for Internet connection is TCP/IP, which consists of a large set of data communications protocols, two of which are the Transmission Control Protocol and the Internet Protocol. An excellent description of the details associated with TCP/IP and UDP/IP is provided in TCP/IP Illustrated, W. Richard Stevens, Addison-Wesley Publishing Company (1996).
B. International Telecommunication Union-Telecommunication Standardization Sector (“ITU-T”) Standards
The International Telecommunication Union-Telecommunication Standardization Sector (“ITU-T”) has established numerous standards governing protocols and line encoding for telecommunication devices. Because many of these standards are referenced throughout this document, summaries of the relevant standards are listed below for reference.
ITU G.722 Recommendation for 7 kHz Audio Coding within a 64 kbit/s channel.
ITU G.723 Recommendation for dual rate speech coder for multimedia communication transmitting at 5.3 and 6.3 kbits.
ITU G.728 Recommendation for coding of speech at 16 kbit/s using low-delay code excited linear prediction (LD-CELP)
ITU H.221 Frame Structure for a 64 to 1920 kbit/s Channel in Audiovisual Teleservices
ITU H.225 ITU Recommendation for Media Stream Packetization and Synchronization on non-guaranteed quality of service LANs.
ITU H.245 Recommendation for a control protocol for multimedia communication
ITU H.261 Recommendation for Video Coder-Decoder for audiovisual services supporting video resolutions of 352×288 pixels and 176×144 pixels.
ITU H.263 Recommendation for Video Coder-Decoder for audiovisual services supporting video resolutions of 128×96 pixels, 176×144 pixels, 352×288 pixels, 704×576 pixels and 1408×1152 pixels.
ITU H.320 Recommendation for Narrow Band ISDN visual telephone systems.
ITU H.321 Visual Telephone Terminals over ATM ITU H.322 Visual Telephone Terminals over Guaranteed Quality of Service LANs
ITU H.323 ITU Recommendation for Visual Telephone Systems and Equipment for Local Area Networks which provide a non-guaranteed quality of service.
ITU H.324 Recommendation for Terminals and Systems for low bitrate (28.8 Kbps) multimedia communication on dial-up telephone lines.
In addition, several other relevant standards are referenced in this document:
ISDN Integrated Services Digital Network, the digital communication standard for transmission of voice, video and data on a single communications link.
RTP Real-Time Transport Protocol, an Internet Standard Protocol for transmission of real-time data like voice and video over unicast and multicast networks.
IP Internet Protocol, an Internet Standard Protocol for transmission and delivery of data packets on a packet switched network of interconnected computer systems.
MPEG Motion Pictures Expert Group, a standards body under the International Standards Organization (ISO), Recommendations for compression of digital Video and Audio including the bit stream but not the compression algorithms.
The popularity of the TCP/IP protocols on the Internet grew rapidly because they met an important need for worldwide data communication and had several important characteristics that allowed them to meet this need. These characteristics, still in use today, include:
A common addressing scheme that allows any device running TCP/IP to uniquely address any other device on the Internet. Open protocol standards, freely available and developed independently of any hardware or operating system. Thus, TCP/IP is capable of being used with different hardware and software, even if Internet communication is not required.
Independence from any specific physical network hardware, allows TCP/IP to integrate many different kinds of networks. TCP/IP can be used over an Ethernet, a token ring, a dial-up line, or virtually any other kinds of physical transmission media.
A. Switching Techniques
An understanding of how information travels in communication systems is required to appreciate the recent steps taken by key players in today's Internet backbone business. The traditional type of communication network is circuit switched. The U.S. telephone system uses such circuit switching techniques. When a person or a computer makes a telephone call, the switching equipment within the telephone system seeks out a physical path from the originating telephone to the receiver's telephone. A circuit-switched network attempts to form a dedicated connection, or circuit, between these two points by first establishing a circuit from the originating phone through the local switching office, then across trunk lines, to a remote switching office, and finally to the destination telephone. This dedicated connection exists until the call terminates.
The establishment of a completed path is a prerequisite to the transmission of data for circuit switched networks. After the circuit is in place, the microphone captures analog signals, and the signals are transmitted to the Local Exchange Carrier (LEC) Central Office (CO) in analog form over an analog loop. The analog signal is not converted to digital form until it reaches the LEC Co, and even then only if the equipment is modern enough to support digital information. In an ISDN embodiment, however, the analog signals are converted to digital at the device and transmitted to the LEC as digital information.
Upon connection, the circuit guarantees that the samples can be delivered and reproduced by maintaining a data path of 64 Kbps (thousand bits per second). This rate is not the rate required to send digitized voice per se. Rather, 64 Kbps is the rate required to send voice digitized with the Pulse Code Modulated (PCM) technique. Many other methods for digitizing voice exist, including ADPCM (32 Kbps), GSM (13 Kbps), TrueSpeech 8.5 (8.5 Kbps), G.723 (6.4 Kbps or 5.3 Kbps) and Voxware RT29HQ (2.9 Kbps). Furthermore, the 64 Kbps path is maintained from LEC Central Office (CO) Switch to LEC CO, but not from end to end. The analog local loop transmits an analog signal, not 64 Kbps digitized audio. One of these analog local loops typically exists as the “last mile” of each of the telephone network circuits to attach the local telephone of the calling party.
This guarantee of capacity is the strength of circuit-switched networks. However, circuit switching has two significant drawbacks. First, the setup time can be considerable, because the call signal request may find the lines busy with other calls; in this event, there is no way to gain connection until some other connection terminates. Second, utilization can be low while costs are high. In other words, the calling party is charged for the duration of the call and for all of the time even if no data transmission takes place (i.e. no one speaks). Utilization can be low because the time between transmission of signals is unable to be used by any other calls, due to the dedication of the line. Any such unused bandwidth during the connection is wasted.
Additionally, the entire circuit switching infrastructure is built around 64 Kbps circuits. The infrastructure assumes the use of PCM encoding techniques for voice. However, very high quality codecs are available that can encode voice using less than one-tenth of the bandwidth of PCM. However, the circuit switched network blindly allocates 64 Kbps of bandwidth for a call, end-to-end, even if only one-tenth of the bandwidth is utilized. Furthermore, each circuit generally only connects two parties. Without the assistance of conference bridging equipment, an entire circuit to a phone is occupied in connecting one party to another party. Circuit switching has no multicast or multipoint communication capabilities, except when used in combination with conference bridging equipment.
Other reasons for long call setup time include the different signaling networks involved in call setup and the sheer distance causing propagation delay. Analog signaling from an end station to a CO on a low bandwidth link can also delay call setup. Also, the call setup data travels great distances on signaling networks that are not always transmitting data at the speed of light. When the calls are international, the variations in signaling networks grows, the equipment handling call setup is usually not as fast as modem setup and the distances are even greater, so call setup slows down even more. Further, in general, connection-oriented virtual or physical circuit setup, such as circuit switching, requires more time at connection setup time than comparable connectionless techniques due to the end-to-end handshaking required between the conversing parties.
Message switching is another switching strategy that has been considered. With this form of switching, no physical path is established in advance between the sender and receiver; instead, whenever the sender has a block of data to be sent, it is stored at the first switching office and retransmitted to the next switching point after error inspection. Message switching places no limit on block size, thus requiring that switching stations must have disks to buffer long blocks of data; also, a single block may tie up a line for many minutes, rendering message switching useless for interactive traffic.
Packet switched networks, which predominate the computer network industry, divide data into small pieces called packets that are multiplexed onto high capacity intermachine connections. A packet is a block of data with a strict upper limit on block size that carries with it sufficient identification necessary for delivery to its destination. Such packets usually contain several hundred bytes of data and occupy a given transmission line for only a few tens of milliseconds. Delivery of a larger file via packet switching requires that it be broken into many small packets and sent one at a time from one machine to the other. The network hardware delivers these packets to the specified destination, where the software reassembles them into a single file.
Packet switching is used by virtually all computer interconnections because of its efficiency in data transmissions. Packet switched networks use bandwidth on a circuit as needed, allowing other transmissions to pass through the lines in the interim. Furthermore, throughput is increased by the fact that a router or switching office can quickly forward to the next stop any given packet, or portion of a large file, that it receives, long before the other packets of the file have arrived. In message switching, the intermediate router would have to wait until the entire block was delivered before forwarding. Today, message switching is no longer used in computer networks because of the superiority of packet switching.
To better understand the Internet, a comparison to the telephone system is helpful. The public switched telephone network was designed with the goal of transmitting human voice, in a more or less recognizable form. Their suitability has been improved for computer-to-computer communications but remains far from optimal. A cable running between two computers can transfer data at speeds in the hundreds of megabits, and even gigabits per second. A poor error rate at these speeds would be only one error per day. In contrast, a dial-up line, using standard telephone lines, has a maximum data rate in the thousands of bits per second, and a much higher error rate. In fact, the combined bit rate times error rate performance of a local cable could be 11 orders of magnitude better than a voice-grade telephone line. New technology, however, has been improving the performance of these lines.
B. Gateways and Routers
The Internet is composed of a great number of individual networks, together forming a global connection of thousands of computer systems. After understanding that machines are connected to the individual networks, we can investigate how the networks are connected together to form an internetwork, or an internet. At this point, internet gateways and internet routers come into play.
In terms of architecture, two given networks are connected by a computer that attaches to both of them. Internet gateways and routers provide those links necessary to send packets between networks and thus make connections possible. Without these links, data communication through the Internet would not be possible, as the information either would not reach its destination or would be incomprehensible upon arrival. A gateway may be thought of as an entrance to a communications network that performs code and protocol conversion between two otherwise incompatible networks. For instance, gateways transfer electronic mail and data files between networks over the internet.
IP Routers are also computers that connect networks and is a newer term preferred by vendors. These routers must make decisions as to how to send the data packets it receives to its destination through the use of continually updated routing tables. By analyzing the destination network address of the packets, routers make these decisions. Importantly, a router does not generally need to decide which host or end user will receive a packet; instead, a router seeks only the destination network and thus keeps track of information sufficient to get to the appropriate network, not necessarily the appropriate end user. Therefore, routers do not need to be huge supercomputing systems and are often just machines with small main memories and little disk storage. The distinction between gateways and routers is slight, and current usage blurs the line to the extent that the two terms are often used interchangeably. In current terminology, a gateway moves data between different protocols and a router moves data between different networks. So a system that moves mail between TCP/IP and OSI is a gateway, but a traditional IP gateway (that connects different networks) is a router.
Now, it is useful to take a simplified look at routing in traditional telephone systems. The telephone system is organized as a highly redundant, multilevel hierarchy. Each telephone has two copper wires coming out of it that go directly to the telephone company's nearest end office, also called a local central office. The distance is typically less than 10 km; in the U.S. alone, there are approximately 20,000 end offices. The concatenation of the area code and the first three digits of the telephone number uniquely specify an end office and help dictate the rate and billing structure.
The two-wire connections between each subscriber's telephone and the end office are called local loops. If a subscriber attached to a given end office calls another subscriber attached to the same end office, the switching mechanism within the office sets up a direct electrical connection between the two local loops. This connection remains intact for the duration of the call, due to the circuit switching techniques discussed earlier.
If the subscriber attached to a given end office calls a user attached to a different end office, more work has to be done in the routing of the call. First, each end office has a number of outgoing lines to one or more nearby switching centers, called toll offices. These lines are called toll connecting trunks. If both the caller's and the receiver's end offices happen to have a toll connecting trunk to the same toll office, the connection may be established within the toll office. If the caller and the recipient of the call do not share a toll office, then the path will have to be established somewhere higher up in the hierarchy. There are sectional and regional offices that form a network by which the toll offices are connected. The toll, sectional, and regional exchanges communicate with each other via high bandwidth inter-toll trunks. The number of different kinds of switching centers and their specific topology varies from country to country, depending on its telephone density.
C. Using Network Level Communication for Smooth User Connection
In addition to the data transfer functionality of the Internet, TCP/IP also seeks to convince users that the Internet is a solitary, virtual network. TCP/IP accomplishes this by providing a universal interconnection among machines, independent of the specific networks to which hosts and end users attach. Besides router interconnection of physical networks, software is required on each host to allow application programs to use the Internet as if it were a single, real physical network.
D. Datagrams and Routing
The basis of Internet service is an underlying, connectionless packet delivery system run by routers, with the basic unit of transfer being the packet. In internets running TCP/IP, such as the Internet backbone, these packets are called datagrams. This section will briefly discuss how these datagrams are routed through the Internet.
In packet switching systems, routing is the process of choosing a path over which to send packets. As mentioned before, routers are the computers that make such choices. For the routing of information from one host within a network to another host on the same network, the datagrams that are sent do not actually reach the Internet backbone. This is an example of internal routing, which is completely self-contained within the network. The machines outside of the network do not participate in these internal routing decisions.
At this stage, a distinction should be made between direct delivery and indirect delivery. Direct delivery is the transmission of a datagram from one machine across a single physical network to another machine on the same physical network. Such deliveries do not involve routers. Instead, the sender encapsulates the datagram in a physical frame, addresses it, and then sends the frame directly to the destination machine.
Indirect delivery is necessary when more than one physical network is involved, in particular when a machine on one network wishes to communicate with a machine on another network. This type of communication is what we think of when we speak of routing information across the Internet backbone. In indirect delivery, routers are required. To send a datagram, the sender must identify a router to which the datagram can be sent, and the router then forwards the datagram towards the destination network. Recall that routers generally do not keep track of the individual host addresses (of which there are millions), but rather just keeps track of physical networks (of which there are thousands). Essentially, routers in the Internet form a cooperative, interconnected structure, and datagrams pass from router to router across the backbone until they reach a router that can deliver the datagram directly.
The changing face of the internet world causes a steady inflow of new systems and technology. The following three developments, each likely to become more prevalent in the near future, serve as an introduction to the technological arena:
A. ATM
Asynchronous Transfer Mode (ATM) is a networking technology using a high-speed, connection-oriented system for both local area and wide area networks. ATM networks require modern hardware including:
B. Frame Relay
Frame relay systems use packet switching techniques, but are more efficient than traditional systems. This efficiency is partly due to the fact that they perform less error checking than traditional X.25 packet-switching services. In fact, many intermediate nodes do little or no error checking at all and only deal with routing, leaving the error checking to the higher layers of the system. With the greater reliability of today's transmissions, much of the error checking previously performed has become unnecessary. Thus, frame relay offers increased performance compared to traditional systems.
C. ISDN
An Integrated Services Digital Network is an “international telecommunications standard for transmitting voice, video, and data over digital lines,” most commonly running at 64 kilobits per second. The traditional phone network runs voice at only 4 kilobits per second. To adopt ISDN, an end user or company must upgrade to ISDN terminal equipment, central office hardware, and central office software. The ostensible goals of ISDN include the following:
The MCI Intelligent Network is a call processing architecture for processing voice, fax and related services. The Intelligent Network comprises a special purpose bridging switch with special capabilities and a set of general purpose computers along with an Automatic Call Distributor (ACD). The call processing including number translation services, automatic or manual operator services, validation services and database services are carried out on a set of dedicated general purpose computers with specialized software. New value added services can be easily integrated into the system by enhancing the software in a simple and cost-effective manner.
Before proceeding further, it will be helpful to establish some terms.
The Intelligent Network Architecture has a rich set of features and is very flexible. Addition of new features and services is simple and fast. Features and services are extended utilizing special purpose software running on general purpose computers. Adding new features and services involves upgrading the special purpose software and is cost-effective.
Intelligent Network Features and Services include
A. Components of the MCI Intelligent Network
1. MCI Switching Network
The MCI switching network is comprised of special purpose bridging switches 2. These bridging switches 2 route and connect the calling and the called parties after the call is validated by the intelligent services network 4. The bridging switches have limited programming capabilities and provide the basic switching services under the control of the Intelligent Services Network (ISN) 4.
2. Network Control System/Data Access Point (NCS/DAP)
The NCS/DAP 3 is an integral component of the MCI Intelligent Network. The DAP offers a variety of database services like number translation and also provides services for identifying the switch ID and trunk ID of the terminating number for a call.
The different services offered by NCS/DAP 3 include:
3. Intelligent Services Network (ISN) 4
The ISN 4 includes an Automatic Call Distributor (ACD)4a for routing the calls. The ACD4a communicates with the Intelligent Switch Network Adjunct Processor (ISNAP) 5 and delivers calls to the different manual or automated agents. The ISN includes the ISNAP 5 and the Operator Network Center (ONC). ISNAP 5 is responsible for Group Select and Operator Selection for call routing. The ISNAP communicates with the ACD for call delivery to the different agents. The ISNAP is also responsible for coordinating data and voice for operator-assisted calls. The ONC is comprised of Servers, Databases and Agents including Live Operators or Audio Response Units (ARU) including Automated Call Processors (ACPs)7, MTOCs6 and associated NAS 7a. These systems communicate with each other on an Ethernet LAN and provide a variety of services for call processing.
The different services offered by the ONC include:
4. Enhanced Voice Services (EVS) 9
Enhanced Voice Services offer menu-based routing services in addition to a number of value-added features. The EVS system prompts the user for an input and routes calls based on customer input or offers specialized services for voice mail and fax routing. The different services offered as a part of the EVS component of the MCI Intelligent Network include:
5. Additional Components
In addition to the above mentioned components, a set of additional components are also architected into the MCI Intelligent Network. These components are:
B. Intelligent Network System Overview
The MCI Call Processing architecture is built upon a number of key components including the MCI Switch Network, the Network Control System, the Enhanced Voice Services system and the Intelligent Services Network. Call processing is entirely carried out on a set of general purpose computers and some specialized processors thereby forming the basis for the MCI Intelligent Network. The switch is a special purpose bridging switch with limited programming capabilities and complex interface. Addition of new services on the switch is very difficult and sometimes not possible. A call on the MCI Switch is initially verified if it needs a number translation as in the case of an 800 number. If a number translation is required, it is either done at the switch itself based on an internal table or the request is sent to the DAP which is a general purpose computer with software capable of number translation and also determining the trunk ID and switch ID of the terminating number.
The call can be routed to an ACD 4a which delivers calls to the various call processing agents like a live operator or an ARU. The ACD 4a communicates with the ISNAP which does a group select to determine which group of agents are responsible for this call and also which of the agents are free to process this call.
The agents process the calls received by communicating with the NIDS (Network Information Distributed Services) Server which are the Validation or the Database Servers with the requisite databases for the various services offered by ISN. Once the call is validated by processing of the call on the server, the agent communicates the status back to the ACD 4a. The ACD 4a in turn dials the terminating number and bridges the incoming call with the terminating number and executes a Release Link Trunk (RLT) for releasing the call all the way back to the switch. The agent also generates a Billing Detail Record (BDR) for billing information. When the call is completed, the switch generates an Operation Services Record (OSR) which is later matched with the corresponding BDR to create total billing information. The addition of new value added services is very simple and new features can be added by additional software and configuration of the different computing systems in the ISP. A typical call flow scenario is explained below.
C Call Flow Example
The Call Flow example illustrates the processing of an 800 Number Collect Call from phone 1 in
The switch 2 detects that it is an 800 Number service and performs an 800 Number Translation from a reference table in the switch or requests the Data Access Point (DAP) 3 to provide number translation services utilizing a database lookup.
The call processing is now delegated to a set of intelligent computing systems through an Automatic Call Distributor (ACD) 4a. In this example, since it is a collect call, the calling party has to reach a Manual or an Automated Operator before the call can be processed further. The call from the switch is transferred to an ACD 4a which is operational along with an Intelligent Services Network Adjunct Processor (ISNAP) 5. The ISNAP 5 determines which group of Agents are capable of processing the call based on the type of the call. This operation is referred to as Group Select. The agents capable of call processing include Manual Telecommunications Operator Console (MTOC)s 6 or Automated Call Processors (ACP)s 7 with associated Network Audio Servers (NAS)s 7a. The ISNAP 5 determines which of the Agents is free to handle the call and routes the voice call to a specific Agent.
The Agents are built with sophisticated call processing software. The Agent gathers all the relevant information from the Calling Party including the telephone number of the Called Party. The Agent then communicates with the database servers with a set of database lookup requests. The database lookup requests include queries on the type of the call, call validation based on the telephone numbers of both the calling and the called parties and also call restrictions, if any, including call blocking restrictions based on the called or calling party's telephone number. The Agent then signals the ISNAP-ACD combination to put the Calling Party on hold and dial the called party and to be connected to the Called Party. The Agent informs the called party about the Calling Party and the request for a Collect Call. The Agent gathers the response from the Called Party and further processes the call.
If the Called Party has agreed to receive the call, the Agent then signals the ISNAP-ACD combination to bridge the Called Party and the Calling Party.
The Agent then cuts a BDR which is used to match with a respective OSR generated by the switch to create complete billing information. The ISNAP-ACD combination then bridges the Called Party and the Calling Party and then releases the line back to the switch by executing a Release Trunk (RLT). The Calling Party and the Called Party can now have a conversation through the switch. At the termination of the call by either party, the switch generates a OSR which will be matched with the BDR generated earlier to create complete billing information for the call. If the Called Party declines to accept the collect call, the Agent signals the ACD-ISNAP combination to reconnect the Calling Party which was on hold back to the Agent. Finally, the Agent informs the Calling Party about the Called Party's response and terminates the call in addition to generating a BDR.
MCI Intelligent Network is a scaleable and efficient network architecture for call processing and is based on a set of intelligent processors with specialized software, special purpose bridging switches and ACD's. The Intelligent Network is an overlay network coexisting with the MCI Switching Network and is comprised of a large number of specialized processors interacting with the switch network for call processing. One embodiment of Intelligent Network is completely audio-centric. Data and fax are processed as voice calls with some specialized, dedicated features and value-added services.
In another embodiment, the Intelligent Network is adapted for newly emerging technologies, including POTS-based video-phones and internet telephony for voice and video. The following sections describe in detail the architecture, features and services based on the emerging technologies.
The following sections describe in detail the architecture, features and services based on several emerging technologies, all of which can be integrated into the Intelligent Network.
A. Background
The ISP is composed of several disparate systems. As ISP integration proceeds, formerly independent systems now become part of one larger whole with concomitant increases in the level of analysis, testing, scheduling, and training in all disciplines of the ISP.
1. Broadband Access
A range of high bandwidth services are supported by a preferred embodiment. These include: Video on Demand, Conferencing, Distance Learning, and Telemedicine.
ATM (asynchronous transfer mode) pushes network control to the periphery of the network, obviating the trunk and switching models of traditional, circuit-based telephony. It is expected to be deployed widely to accommodate these high bandwidth services.
2. Internet Telephony System
The Internet and with it, the World Wide Web, offers easy customer access, widespread commercial opportunities, and fosters a new role for successful telecommunications companies. The ISP platform offers many features which can be applied or reapplied from telephony to the Internet. These include access, customer equipment, personal accounts, billing, marketing (and advertising) data or application content, and even basic telephone service.
The telecommunication industry is a major transmission provider of the Internet. A preferred embodiment which provides many features from telephony environments for Internet clients is optimal.
In an embodiment, the order entry system 1945 generates complete profile information for a given telephone number, including, name, address, fax number, secretary's number, wife's phone number, pager, business address, e-mail address, IP address and phonemail address. This information is maintained in a database that can be accessed by everyone on the network with authorization to do so. In an alternate embodiment, the order entry system utilizes a web interface for accessing an existing directory service database 1934 to provide information for the profile to supplement user entered information.
The Internet 1910 is tied to the Public Switched Network (PSTN) 1960 via a gateway 1950. The gateway 1950 in a preferred embodiment provides a virtual connection from a circuit switched call in the PSTN 1960 and some entity in the Internet 1910.
The PSTN 1960 has a variety of systems attached, including a direct-dial input 1970, a Data Access Point (DAP) 1972 for facilitating 800 number processing and Virtual NETwork (VNET) processing to facilitate for example a company tieline. A Public Branch Exchange (PBX) 1980 is also attached via a communication link for facilitating communication between the PSTN 1960 and a variety of computer equipment, such as a fax 1981, telephone 1982 and a modem 1983. An operator 1973 can also optionally attach to a call to assist in placing a call or conference call coming into and going out of the PSTN 1960 or the internet 1910.
Various services are attached to the PSTN through individual communication links including an attachment to the Intelligent Services Network (ISN) 1990, direct-dial plan, provisioning 1974, order entry 1975, billing 1976, directory services 1977, conferencing services 1978, and authorization/authentication services 1979. All of these services can communicate between themselves using the PSTN 1960 and the Internet 1910 via a gateway 1950. The functionality of the ISN 1990 and the DAP 1972 can be utilized by devices attached to the Internet 1910.
The design goal of the prioritizing access/router is to segregate real-time traffic from the rest of the best-effort data traffic on internet networks. Real-time and interactive multimedia traffic is best segregated from traffic without real-time constraints at the access point to the internet, so that greater control over quality of service can be gained. The process that a prioritizing access/router utilizes as presented below with reference to
First, at 2010, a computer dials up the PAR via a modem. The computer modem negotiates a data transfer rate and modem protocol parameters with the PAR modem. The computer sets up a Point to Point Protocol (PPP) session with the PAR using the modem to modem connection over a Public Switched Telephone Network (PSTN) connection.
The computer transfers Point-to-Point (PPP) packets to the PAR using the modem connection. The PAR modem 2010 transfers PPP packets to the PPP to IP conversion process 2020 via the modem to host processor interface 2080. The modem to host processor interface can be any physical interface presently available or yet to be invented. Some current examples are ISA, EISA, VME, SCbus, MVIP bus, Memory Channel, and TDM buses. There is some advantage in using a multiplexed bus such as the Time Division Multiplexing buses mentioned here, due to the ability to devote capacity for specific data flows and preserve deterministic behavior.
The PPP to IP conversion process 2020 converts PPP packets to IP packets, and transfers the resulting IP packets to the packet classifier 2050 via the process to process interface 2085. The process to process interface can be either a physical interface between dedicated processor hardware, or can be a software interface. Some examples of process to process software interfaces include function or subroutine calls, message queues, shared memory, direct memory access (DMA), and mailboxes.
The packet classifier 2085 determines if the packet belongs to any special prioritized group. The packet classifier keeps a table of flow specifications, defined by
destination IP Address
source IP address
combined source/destination IP Address
combined destination IP Address/UDP Port
combined destination IP Address/TCP Port
combined source IP address/UDP Port
combined source IP Address/TCP Port
combined source IP Address and TCP or UDP port with destination IP address
combined destination IP Address and TCP or UDP port with source IP address
combined source IP Address and TCP or UDP port with destination IP address and TCP/UDP Port.
The packet classifier checks its table of flow specifications against The IP addresses and UDP or TCP ports used in the packet. If any match is found, the packet is classified as belonging to a priority flow and labeled as with a priority tag. Resource Reservation Setup Protocol techniques may be used for the packet classifier step.
The packet classifier 2050 hands off priority tagged and non-tagged packets to the packet scheduler 2060 via the process to process interface 2090. The process to process interface 2090 need not be identical to the process to process interface 2085, but the same selection of techniques is available. The packet scheduler 2060 used a priority queuing technique such as Weighted Fair Queuing to help ensure that prioritized packets (as identified by the packet classifier) receive higher priority and can be placed on an outbound network interface queue ahead of competing best-effort traffic.
The packet scheduler 2060 hands off packets in prioritized order to any outbound network interface (2010, 2070, 2071 or 2072) via the host processor to peripheral bus 2095. Any number of outbound network interfaces may be used.
IP packets can arrive at the PAR via non-modem interfaces (2070, 2071 and 2072). Some examples of these interfaces include Ethernet, fast Ethernet, FDDI, ATM, and Frame Relay. These packets go through the same steps as IP packets arriving via the modem PPP interfaces.
The priority flow specifications are managed through the controller process 2030. The controller process can accept externally placed priority reservations through the external control application programming interface 2040. The controller validates priority reservations for particular flows against admission control procedures and policy procedures, and if the reservation is admitted, the flow specification is entered in the flow specification table in the packet classifier 2050 via the process to process interface 2065. The process to process interface 2065 need not be identical to the process to process interface 2085, but the same selection of techniques is available.
Turning now to
Each of the existing communication network systems has its own way of providing service management, resource management, data management, security, distributed processing, network control, or operations support. The architecture of the ISP 2100 defines a single cohesive architectural framework covering these areas. The architecture is focused on achieving the following goals:
The target capabilities of the ISP 2100 are envisioned to provide the basic building blocks for very many services. These services are characterized as providing higher bandwidth, greater customer control or personal flexibility, and much reduced, even instantaneous, provisioning cycles.
3. Capacity
The ISP 2100 has a reach that is global and ubiquitous. Globally, it will reach every country through alliance partners' networks. In breadth, it reaches all business and residential locales through wired or wireless access.
4. Future Services
The above capabilities will be used to deliver:
Services provided by the ISP 2100 will span those needed in advertising, agriculture, education, entertainment, finance, government, law, manufacturing, medicine, network transmission, real estate, research, retailing, shipping, telecommunications, tourism, wholesaling, and many others.
B. ISP Architecture Framework
The following section describes the role of the ISP Platform 2100 in providing customer services.
The ISP 2100 provides customer services through an intelligent services infrastructure, including provider network facilities 2102, public network facilities 2104, and customer equipment 2106. The services infrastructure ensures the end-to-end quality and availability of customer service.
The following section describes the relationship of the ISP platform 2100 to various external systems both within and outside a provider.
The provider components 2108 in
The entities external to the ISP 2100 depicted in
C. ISP Functional Framework
The ISP 2100 Functional Components are:
D. ISP Integrated Network Services
The architecture accommodates networks other than basic PSTNs 2162 due to the fact that these alternative network models support services which cannot be offered on a basic PSTN, often with an anticipated reduced cost structure. These Networks are depicted logically in
Each of these new networks are envisioned to interoperate with the ISP 2100 in the same way. Calls (or transactions) will originate in a network from a customer service request, the ISP will receive the transaction and provide service by first identifying the customer and forwarding the transaction to a generalized service-engine 2134. The service engine determines what service features are needed and either applies the necessary logic or avails itself of specialized network resources for the needed features.
The ISP 2100 itself is under the control of a series of Resource managers and Administrative and monitoring mechanisms. A single system image is enabled through the concurrent use of a common information base. The information base holds all the Customer, Service, Network and Resource information used or generated by the ISP. Other external applications (from within MCI and in some cases external to MCI) are granted access through gateways, intermediaries, and sometimes directly to the same information base.
In
E. ISP Components
Ext App 2176—an external application;
App 2178—an internal ISP application (such as Fraud Analysis);
Dc 2180—Data client, a client to the ISP information base which provides a local data copy;
Ds 2182—Data server, one of the master copies of ISP information;
Admin 2184—the ISP administrative functions (for configurations, and maintenance);
Mon 2186—the ISP monitoring functions (for fault, performance, and accounting);
GRM 2188—the global resource management view for selected resources;
LRM 2190—the local resource management view for selected resources;
SR 2192—the pools of specialized resources (such as video servers, ports, speech recognition);
SE 2134—the generalized service engines which execute the desired service logic; and
Service Select 2194—the function which selects the service instance (running on a service engine 2134) which should process transactions offered from the networks.
F. Switchless Communications Services
The switchless network 2168 is a term used for the application of cell-switching or packet-switching techniques to both data and isochronous multimedia communications services. In the past, circuit switching was the only viable technology for transport of time-sensitive isochronous voice. Now, with the development of Asynchronous Transfer Mode cell switching networks which provide quality of service guarantees, a single network infrastructure which serves both isochronous and bursty data services is achievable.
The switchless network is expected to provide a lower cost model than circuit switched architectures due to:
G. Governing Principles
1. Architectural Principles
This section contains a listing of architectural principles which provide the foundation of the architecture which follows.
Service Principles
2. Service Feature Principles
3. Capability Principles
4. Service Creation, Deployment, and Execution Principles
5. Resource Management Model 2150 Principles
6. Data Management 2138 Principles
7. Operational Support Principles
8. Physical Model Principles
H. ISP Service Model
This section describes the Service model of the Intelligent Services Platform Architecture Framework.
1. Purpose
The ISP Service Model establishes a framework for service development which supports:
2. Scope of Effort
The ISP Service Model supports all activities associated with Services, including the following aspects:
The Service Model also defines interactions with other parts of the ISP Architecture, including Data Management, Resource Management, and Operational Support.
3. Service Model Overview
Central to the Intelligent Services Platform is the delivery of Services 2200 (
One of the major differences between a Service 2200 and an Application 2176 or 2178 (
4. Service Structure
The vocabulary we will use for describing services includes the services themselves, service features, and capabilities. These are structured in a three-tier hierarchy as shown in
A service 2200 is an object in a sense of an object-oriented object as described earlier in the specification. An instance of a service 2200 contains other objects, called service features 2202. A service feature 2202 provides a well defined interface which abstracts the controlled interaction of one or more capabilities 2204 in the ISP Service Framework, on behalf of a service.
Service features 2202, in turn, use various capability 2204 objects. Capabilities 2204 are standard, reusable, network-wide building blocks used to create service features 2202. The key requirement in Service Creation is for the engineers who are producing basic capability objects to insure each can be reused in many different services as needed.
a) Services 2200
Services 2200 are described by “service logic,” which is basically a program written in a very high-level programming language or described using a graphical user interface. These service logic programs identify:
The service logic itself is generally not enough to execute a service 2200 in the network. Usually, customer data is needed to define values for the points of flexibility defined in a service, or to customize the service for the customer's particular needs. Both Management and Marketable Services are part of the same service model. The similarities between Management and Marketable Services allow capabilities to be shared. Also, Management and Marketable Services represent two viewpoints of the same network: Management Services represent an operational view of the network, and Marketable Services represent an external end-user or customer view of the network. Both kinds of services rely on network data which is held in common.
Every Marketable Service has a means for a customer to order the service, a billing mechanism, some operational support capabilities, and service monitoring capabilities. The Management Services provide processes and supporting capabilities for the maintenance of the platform.
b) Service Features 2202
Service features 2202 provide a well-defined interface of function calls. Service features can be reused in many different services 2200, just as capabilities 2204 are reused in many different service features 2202. Service features have specific data input requirements, which are derived from the data input requirements of the underlying capabilities. Data output behavior of a service feature is defined by the creator of the service feature, based upon the data available from the underlying capabilities. Service Features 2202 do not rely on the existence of any physical resource, rather, they call on capabilities 2204 for these functions, as shown in
Some examples of service features are:
c) Capabilities 2204
A capability 2204 is an object, which means that a capability has internal, private state data, and a well-defined interface for creating, deleting, and using instances of the capability. Invoking a capability 2204 is done by invoking one of its interface operations. Capabilities 2204 are built for reuse. As such, capabilities have clearly defined data requirements for input and output structures. Also, capabilities have clearly defined error handling routines. Capabilities may be defined in object-oriented class hierarchies whereby a general capability may be inherited by several others. Some examples of network-based capability objects are:
Some capabilities are not network-based, but are based purely on data that has been deployed into our platform. Some examples of these capabilities are:
d) Service Data
There are three sources for data while a service executes:
5. Service 2200 Execution
Services 2200 execute in Service Logic Execution Environments (SLEEs). A SLEE is executable software which allows any of the services deployed into the ISP 2100 to be executed. In the ISP Architecture, Service Engines 2134 (
Service templates and their supporting profiles are deployed onto database servers 2182 (
In most cases a service 2200 will first invoke a service feature 2202 (
During service 2200 execution, profile data is used to determine the behavior of service features 2202. Depending on service performance requirements, some or all of the profile data needed by a service may be cached on a service engine 2134 from the ISP 2100 database server 2182 to prevent expensive remote database lookups. As the service executes, information may be generated by service features 2202 and deposited into the Context Database. This information is uniquely identified by a network transaction identifier. In the case of a circuit-switched call, the already-defined Network Call Identifier will be used as the transaction identifier. Additional information may be generated by network equipment and deposited into the Context Database as well, also indexed by the same unique transaction identifier. The final network element involved with the transaction deposits some end-of-transaction information into the Context Database. A linked list strategy is used for determining when all information has been deposited into the Context Database for a particular transaction. Once all information has arrived, an event is generated to any service which has subscribed to this kind of event, and services may then operate on the data in the Context Database. Such operations may include extracting the data from the Context Database and delivering it to billing systems or fraud analysis systems.
6. Service Interactions
In the course of a network transaction, more than one service can be invoked by the network. Sometimes, the instructions of one service may conflict with the instructions of another service. Here's an example of such a conflict: a VNET caller has a service which does not allow the caller to place international calls. The VNET caller dials the number of another VNET user who has a service which allows international dialing, and the called VNET user places an international call, then bridges the first caller with the international call. The original user was able to place an international call through a third party, in defiance of his company's intention to prevent the user from dialing internationally. In such circumstances, it may be necessary to allow the two services to interact with each other to determine if operation of bridging an international call should be allowed.
The ISP service model must enable services 2200 to interact with other services. There are several ways in which a service 2200 must be able to interact with other services (see
In the example of interacting VNET services above, the terminating VNET service could have queried the originating VNET service using the synchronous service interaction capability. The interesting twist to this idea is that service logic can be deployed onto both network-based platforms and onto customer premises equipment. This means that service interaction must take place between network-based services and customer-based services.
7. Service Monitoring
Services 2200 must be monitored from both the customer's viewpoint and the network viewpoint. Monitoring follows one of two forms:
Analysis services can use the Statistics Database or the Context Database to perform real time or near real time data analysis services.
The Context Database collects all event information regarding a network transaction. This information will constitute all information necessary for network troubleshooting, billing, or network monitoring.
I. ISP Data Management Model
1. Scope
The ISP Data Management 2138 Architecture is intended to establish a model which covers the creation, maintenance, and use of data in the production environment of the ISP 2100, including all transfers of information across the ISP boundaries.
The Data Management 2138 Architecture covers all persistent data, any copies or flows of such data within the ISP, and all flows of data across the ISP boundaries. This model defines the roles for data access, data partitioning, data security, data integrity, data manipulation, plus database administration. It also outlines management policies when appropriate.
2. Purpose
The objectives of this architecture are to:
Additional goals of the target architecture are:
3. Data Management Overview
In one embodiment, the Data Management Architecture is a framework describing the various system components, how the systems interact, and the expected behaviors of each component. In this embodiment data is stored at many locations simultaneously, but a particular piece of data and all of its replicated copies are viewed logically as a single item. A key difference in this embodiment is that the user (or end-point) dictates what data is downloaded or stored locally.
a) Domains
Data and data access are characterized by two domains 2220 and 2222, as shown in
Central domain 2220 controls and protects the integrity of the system. This is only a logical portrayal, not a physical entity. Satellite domain 2222 provides user access and update capabilities. This is only a logical portrayal, not a physical entity.
b) Partitions
In general, Data is stored at many locations simultaneously. A particular piece of data and all of its replicated copies are viewed logically as a single item. Any of these copies may be partitioned into physical subsets so that not all data items are necessarily at one site. However partitioning preserves the logical view of only one, single database.
c) Architecture
The architecture is that of distributed databases and distributed data access with the following functionality:
The elements in
d) Information Flow
The flows depicted in
The flows shown above are:
e) Domain Associations
In general the Satellite domains 2222 of Data Management 2138 encompass:
The Central domain for Data Management 2138 encompasses:
4. Logical Description
The behavior of each Architecture component is described separately below:
a) Data Applications (dbAppl) 2232
This includes any ISP applications which require database access. Examples are the ISN NIDS servers, and the DAP Transaction Servers, The applications obtain their required data from the dbClient 2234 by attaching to the desired databases, and providing any required policy instructions. These applications also provide the database access on behalf of the external systems or network element such as Order Entry or Switch requested translations. Data applications support the following functionality:
b) Data Management 2138
(1) Client Databases (dbClient) 2234
The dbClients represent satellite copies of data. This is the only way for an application to access ISP data. Satellite copies of data need not match the format of data as stored on the dbServer 2236.
The dbClients register with master databases (dbServer) 2236 for Subscriptions or Cache Copies of data. Subscriptions are automatically maintained by dbServer 2236, but Cache Copies must be refreshed when the version is out of date.
A critical aspect of dbClient 2234 is to ensure that data updates by applications are serialized and synchronized with the master copies held by dbServer 2236. However, it is just as reasonable for the dbClient to accept the update and only later synchronize the changes with the dbServer (at which time exception notifications could be conveyed back to the originating application). The choice to update in lock-step, or not, is a matter of application policy not Data Management 2138.
Only changes made to the dbServer master copies are forwarded to other dbClients.
If a dbClient 2234 becomes inactive or loses communications with the dbServer; it must resynchronize with the master. In severe cases, operator intervention may be required to reload an entire database or selected subsets.
The dbClient 2234 offers the following interface operations:
Additionally, the dbClients submit Logs or Reports and signal problems to the monitor (dbMon) 2240.
(2) Data Masters (dbServer) 2236
The dbServers 2236 play a central role in the protection of data. This is where data is ‘owned’ and master copies maintained. At least two copies of master data are maintained for reliability. Additional master copies may be deployed to improve data performance.
These copies are synchronized in lock-step. That is each update is required to obtain a corresponding master-lock in order to prevent update conflicts. The strict implementation policies may vary, but in general, all master copies must preserve serial ordering of updates, and provide the same view of data and same integrity enforcement as any other master copy. The internal copies of date are transparent to the dbClients 2234.
The dbServer 2236 includes the layers of business rules which describe or enforce the relationships between data items and which constrain particular data values or formats. Every data update must pass these rules or is rejected. In this way dbServer ensures all data is managed as a single copy and all business rules are collected and applied uniformly.
The dbServer 2236 tracks when, and what kind of, data changes are made, and provides logs and summary statistics to the monitor (dbMon) 2240. Additionally these changes are forwarded to any active subscriptions and Cache-copies are marked out of date via expiration messages.
The dbServer also provides security checks and authorizations, and ensures that selected items are encrypted before storage.
The dbServer supports the following interface operations:
(3) Data Administration (dbAdmin) 2238
Data Administration (dbAdmin) 2238 involves setting data policy, managing the logical and physical aspect of the databases, and securing and configuring the functional components of the Data Management 2138 domain. Data Management policies include security, distribution, integrity rules, performance requirements, and control of replications and partitions. dbAdmin 2238 includes the physical control of data resources such as establishing data locations, allocating physical storage, allocating memory, loading data stores, optimizing access paths, and fixing database problems. dbAdmin 2238 also provides for logical control of data such as auditing, reconciling, migrating, cataloguing, and converting data.
The dbAdmin 2238 supports the following interface operations:
(4) Data Monitoring (dbMon) 2240
The dbMon 2240 represents a monitoring function which captures all data-related events and statistical measurements from the ISP boundary gateways, dbClients 2234 and dbServers 2236. The dbMon 2240 mechanisms are used to create audit trails and logs.
The dbMon typically presents a passive interface; data is fed to it. However monitoring is a hierarchical activity and further analysis and roll-up (compilation of data collected at intervals, such as every minute, into longer time segments, such as hours or days) occurs within dbMon. Additionally dbMon will send alerts when certain thresholds or conditions are met.
The rate and count of various metrics are used for evaluating quality of Service (QOS), data performance, and other service level agreements. All exceptions and date errors are logged and flow to the dbMon for inspection, storage, and roll-up.
dbMon 2240 supports the following interface operations:
(5) Data Management Operations (Ops) 2244
The Operations consoles (Ops) 2244 provide the workstation-interface for the personnel monitoring, administering, and otherwise managing the system. The Ops consoles provide access to the operations interfaces for dbMon 2240, dbAdmin 2238, and dbServer 2236 described above. The Ops consoles 2244 also support the display of dynamic status through icon based maps of the various systems, interfaces, and applications within the Data management domain 2138.
5. Physical Description
This section describes the Data Management 2138 physical architecture. It describes how a set of components could be deployed. A generalized deployment view is shown in
The abbreviations used in
The functional roles of these elements were described above (see Logical Description of the Target Architecture) in connection with
Each of the sites shown in
On the network-side of the ISP 2100, Satellite sites 2252 each contain the dbClient 2234 too. These sites typically operate local area networks (LANs). The dbClients act as local repositories for network or system applications such as the ISN operator consoles, ARUs, or NCS switch requested translations.
The Central sites 2254 provide redundant data storage and data access paths to the dbClients 2234. Central sites 2254 also provide roll-up monitoring (dbMon) functions although dbMon components 2240 could be deployed at satellite sites 2252 for increased performance.
The administrative functions are located at any desired operations or administration site 2254 but not necessarily in the same location as the dbMon. Administrative functions require the dbAdmin 2238, plus an operations console 2244 for command and control. Remote operations sites are able to access the dbAdmin nodes 2238 from wide-area or local-area connections. Each of the sites is backed-up by duplicate functional components at other sites and are connected by diverse, redundant links.
6. Technology Selection
The following section describes the various technology options which should be considered. The Data Management 2138 architecture does not require any particular technology to operate; however different technology choices will impact the resulting performance of the system.
7. Implementations
While much is known of the current ISP data systems, additional detailed requirements are necessary before any final implementations are decided. These requirements must encompass existing ISN, NCS, EVS, NIA, and TMN system needs, plus all of the new products envisioned for Broadband, Internet, and Switchless applications.
8. Security
ISP data is a protected corporate resource. Data access is restricted and authenticated. Data related activity is tracked and audited. Data encryption is required for all stored passwords, PINS (personal identification numbers), private personnel records, and selected financial, business, and customer information. Secured data must not be transmitted in clear-text forms.
9. Meta-Data
Meta-data is a form of data which comprises the rules for data driven logic. Meta-data is used to describe and manage (i.e. manipulate) operational forms of data. Under this architecture, as much control as possible is intended to be driven by meta-data. Meta-data (or data-driven logic) generally provides the most flexible run-time options. Meta-data is typically under the control of the system administrators.
10. Standard Database Technologies
Implementation of the proposed Data Management Architecture should take advantage of commercially available products whenever possible. Vendors offer database technology, replication services, Rules systems, Monitoring facilities, Console environments, and many other attractive offerings.
J. ISP Resource Management Model
This section describes the Resource Management 2150 Model as it relates to the ISP 2100 Architecture.
a) Scope
The Resource Management Model covers the cycle of resource allocation and de-allocation in terms of the relationships between a process that needs a resource, and the resource itself. This cycle starts with Resource Registration and De-registration and continues to Resource Requisition, Resource Acquisition, Resource Interaction and Resource Release.
b) Purpose
The Resource Management 2150 Model is meant to define common architectural guidelines for the ISP development community in general, and for the ISP Architecture in particular.
c) Objectives
In the existing traditional ISP architecture, services control and manage their own physical and logical resources. Migration to an architecture that abstracts resources from services requires defining a management functionality that governs the relationships and interactions between resources and services. This functionality is represented by the Resource Management 2150 Model.
The objectives of the Resource Management Model are designed to allow for network-wide resource management and to optimize resource utilization, to enable resource sharing across the network:
d) Background Concepts
Generally, the Resource Management 2150 Model governs the relationships and interactions between the resources and the processes that utilize them. Before the model is presented, a solid understanding of the basic terminology and concepts used to explain the model should be established. The following list presents these terms and concepts:
(1) Definitions
(2) Concepts
The Resource Management Model allows for the creation of resource pools and the specification of the policies governing them. The Resource Management Model allows resources to register and de-register as legitimate members of resource pools.
Resource Management Model policies enforce load balancing, failover and least cost algorithms and prevent services from monopolizing resources. The Resource Management Model tracks resource utilization and automatically takes corrective action when resource pools are not sufficient to meet demand. Any service should be able to access and utilize any available resource across the network as long as it has the privilege to do so.
The Resource Management Model adopted the OSI Object Oriented approach for modeling resources. Under this model, each resource is represented by a Managed Object (MO). Each MO is defined in terms of the following aspects:
All elements that need to utilize, manipulate or monitor a resource need to treat it as a MO and need to access it through the operations defined above. Concerned elements that need to know the status of a resource need to know how to receive and react to events generated by that resource.
The Resource Management Model is hierarchical with at least two levels of management: Local Resource Manager (LRM) 2190 and Global Resource Manager (GRM) 2188. Each RM, Local and Global, has its own domain and functionality.
2. The Local Resource Manager (LRM):
3. The Global Resource Manager (GRM) 2188:
4. The Resource Management Model (RMM)
The Resource Management Model is based on the concept of Dynamic Resource Allocation as opposed to Static Configuration. The Dynamic Resource Allocation concept implies that there is no pre-defined static relationship between resources and the processes utilizing them. The allocation and de-allocation process is based on supply and demand. The Resource Managers 2150 will be aware of the existence of the resources and the processes needing resources can acquire them through the Resource Managers 2150. On the other hand, Static Configuration implies a pre-defined relationship between each resource and the process that needs it. In such a case, there is no need for a management entity to manage these resources. The process dealing with the resources can achieve that directly. Dynamic Resource Allocation and Static Configuration represent the two extremes of the resource management paradigms. Paradigms that fall between these extremes may exist.
The Resource Management Model describes the behavior of the LRM 2190 and GRM 2188 and the logical relationships and interactions between them. It also describes the rules and policies that govern the resource allocation and de-allocation process between the LRM/GRM and the processes needing the resources.
a) Simple Resource Management Model
Realizing that resource allocation and de-allocation could involve a complex process, a simple form of this process is presented here as an introduction to the actual model. Simple resource allocation and de-allocation is achieved through six steps.
b) The Resource Management Model Logical Elements:
The Resource Management Model is represented by a set of logical elements that interact and co-operate with each other in order to achieve the objectives mentioned earlier. These elements are shown in
(1) Resource Pool (RP) 2272
All resources that are of the same type, share common attributes or provide the same capabilities, and are located in the same network locale may be logically grouped together to form a Resource Pool (RP) 2272. Each RP will have its own LRM 2190.
(2) The Local Resource Manager (LRM) 2190
The LRM 2190 is the element that is responsible for the management of a specific RP 2272. All processes that need to utilize a resource from a RP that is managed by a LRM should gain access to the resource through that LRM and by using the simple Resource Management Model described above.
(3) The Global Resource Manager (GRM) 2188
The GRM 2188 is the entity that has a global view of the resource pools across the network. The GRM gains this global view through the LRMs 2190. All LRMs update the GRM with RP 2272 status and statistics. There are cases where a certain LRM can not allocate a resource because all local resources are busy or because the requested resource belongs to another locale. In such cases, the LRM can consult with the GRM to locate the requested resource across the network.
(4) The Resource Management Information Base (RMIB) 2274
As mentioned above, all resources will be treated as managed objects (MO). The RMIB 2274 is the database that contains all the information about all MOs across the network. MO information includes object definition, status, operation, etc. The RMIB is part of the ISP Data Management Model. All LRMs and the GRM can access the RMIB and can have their own view and access privileges of the MO's information through the ISP Data Management Model.
5. Component Interactions
To perform their tasks, the Resource Management Model elements must interact and co-operate within the rules, policies and guidelines of the Resource Management Model. The following sections explain how these entities interact with each other.
a) Entity Relationship (ER) Diagram (
In
b) Registration and De-Registration
Resource registration and de-registration applies only on the set of resources that have to be dynamically managed. There are some cases where resources are statically assigned.
LRMs 2190 operate on resource pools 2272 where each resource pool contains a set of resource members. In order for the LRM to manage a certain resource, the resource has to inform the LRM of its existence and status. Also, the GRM 2188 needs to be aware of the availability of the resources across the network in order to be able to locate a certain resource. The following registration and de-registration guidelines should be applied on all resources that are to be dynamically managed:
c) GRM, LRM and RP Interactions
Every RP 2272 will be managed by an LRM 2190. Each process that needs a specific resource type will be assigned an LRM that will facilitate the resource access. When the process needs a resource it must request it through its assigned LRM. When the LRM receives a request for a resource, two cases may occur:
1. Resource is available: In this case, the LRM allocates a resource member of the pool and passes a resource handle to the process. The process interacts with the resource until it is done with it. Based on the resource type, once the process is done with the resource, it either informs the resource that it is done with it, and the resource itself informs its LRM that it is available, or it releases the resource and informs the LRM that it is no longer using the resource.
2. Resource is not available: In this case, the LRM 2190 consults with the GRM 2188 for an external resource pool that contains the requested resource. If no external resource is available, the LRM informs the requesting process that no resources are available. In this case, the requesting process may:
If an external resource is available, the GRM 2188 passes location and access information to the LRM 2190. Then the LRM either:
d) GRM, LRM and RMIB Interactions
The RMIB 2274 contains all information and status of all managed resources across the network. Each LRM 2190 will have a view of the RMIB 2274 that maps to the RP 2272 it manages. The GRM 2188, on the other hand, has a total view of all resources across the network. This view consists of all LRMs views. The GRM's total view enables it to locate resources across the network.
In order for the RMIB 2274 to keep accurate resource information, each LRM 2190 must update the RMIB with the latest resource status. This includes adding resources, removing resources and updating resource states.
Both the LRM 2190 and GRM 2188 can gain their access and view of the RMIB 2274 through the ISP Data Management entity. The actual management of the RMIB data belongs to the ISP Data Management entity. The LRM and GRM are only responsible for updating the RMIB.
K. Operational Support Model
1. Introduction
Most of the existing ISP service platforms were developed independently, each with it's own set of Operational Support features. The amount of time required to learn how to operate a given set of platforms increases with the number of platforms. The ISP service platforms need to migrate to an architecture with a common model for all of its Operational Support features across all of its products. This requires defining a model that will support current needs and will withstand or bend to the changes that will occur in the future. The Operational Support Model (OSM) defines a framework for implementation of management support for the ISP 2100.
a) Purpose
The purpose of the Operational Support Model is to:
b) Scope
The OSM described here provides for the distributed management of ISP physical network elements and the services that run on them. The management framework described herein could also be extended to the management of logical (software) resources. However, the architecture presented here will help map utilization and faults on physical resources to their resulting impact on services.
The management services occur within four layers
Information within the layers falls into four functional areas:
The use of a common Operational Support Model for all of the ISP will enhance the operation of the ISP, and simplify the designs of future products and services within the ISP. This operational support architecture is consistent with the ITU Telecommunications Management Network (TMN) standards.
c) Definitions
Managed Object: A resource that is monitored, and controlled by one or more management systems Managed objects are located within managed systems and may be embedded in other managed objects. A managed object may be a logical or physical resource, and a resource may be represented by more than one managed object (more than one view of the object).
Managed System: One or more managed objects.
Management Sub-Domain: A Management domain that is wholly located within a parent management domain.
Management System: An application process within a managed domain which effects monitoring and control functions on managed objects and/or management sub-domains.
Management Information Base: A MIB contains information about managed objects.
Management Domain: A collection of one or more management systems, and zero or more managed systems and management sub-domains.
Network Element: The Telecommunications network consist of many types of analog and digital telecommunications equipment and associated support equipment, such as transmission systems, switching systems, multiplexes, signaling terminals, front-end processors, mainframes, cluster controllers, file servers, LANs, WANs, Routers, Bridges, Gateways, Ethernet Switches, Hubs, X.25 links, SS7 links, etc. When managed, such equipment is generally referred to as a network element (NE).
Domain: The management environment may be partitioned in a number of ways such as functionally (fault, service . . . ), geographical, organizational structure, etc.
Operations Systems The management functions are resident in the Operations System.
2. The Operational Support Model
a) The Functional Model
The following sections describe the functional areas as they occur within the management layers 2300-2306.
(1) Planning
The ISP Planning Layer 2300 is the repository for data collected about the ISP 2100, and the place where that data is to provide additional value.
(2) Service Management
The Service Ordering, Deployment, Provisioning, Quality of Service agreements, and Quality of service monitoring are in the ISP Service Management layer 2302. Customers will have a restricted view of the SM layer 2302 to monitor and control their services. The SM layer provides a manager(s) that interacts with the agents in the NLMs. The SM layer also provides an agent(s) that interacts with the manager(s) in the Planning layer 2300. Managers within the SM layer may also interact with other managers in the SM layer. In that case there are manager-agent relationships at the peer level.
The ISP Network Layer Management (NLM) Layer 2304 has the responsibility for the management of all the network elements, as presented by the Element Management, both individually and as a set. It is not concerned with how a particular element provides services internally. The NLM layer 2304 provides a manager(s) that interacts with the agents in the EMs 2306. The NLM layer also provides an agent(s) that interacts with the manager(s) in the SM layer 2302. Managers within the NLM layer 2304 may also interact with other managers in the NLM layer. In that case there are manager agent relationships at the peer level.
(3) Element Management
The Element Management Layer 2306 is responsible for the NEs 2310 on an individual basis and supports an abstraction of the functions provided by the NEs The EM layer 2306 provides a manager(s) that interact with the agents in the NEs. The EM layer also provides an agent(s) that interact with the manager(s) in the NLM layer 2304. Managers within the EM layer 2306 may also interact other managers in the EM layer. In that case there are manager agent relationships at the peer level.
b) Network Element
The computers, processes, switches, VRUs, internet gateways, and other equipment that provide the network capabilities are Network Elements 2310. NEs provide agents to perform operations on the behalf of the Element Management Layer 2306.
c) Information Model
3. The Protocol Model
a) Protocols
The exchange of information between manager and agent relies on a set of communications protocols. TMN, which offers a good model, uses the Common Management Information Services (CMIS) and Common Management Information Protocol (CMIP) as defined in Recommendations X.710, and X.711. This provides a peer-to-peer communications protocol based on ITU's Application Common Service Element (X.217 service description & X.227 protocol description) and Remote Operation Service Element (X.219 service description & X.229 protocol description). FTAM is also supported as an upper layer protocol for file transfers. The use of these upper layer protocols is described in Recommendation X.812. The transport protocols are described in Recommendation X.811. Recommendation X.811 also describes the interworking between different lower layer protocols. This set of protocols is referred to as Q3.
b) Common Context
In order to share information between processes there needs to be a common understanding of the interpretation of the information exchanged. ASN. 1 (X.209) with BER could be used to develop this common understanding for all PDU exchanged between the management processes (manager/agent).
c) Services of the Upper Layer
The following identifies the minimum services required of the service layer and is modeled after the TMN CMIS services.
4. The Physical Model
5. Interface Points
Mediation Device 2360 provides conversion from one information model to the ISP information model. Gateways 2362 are used to connect to management systems outside of the ISP. These gateways will provide the necessary functions for operation with both ISP compliant systems, and non-compliant systems. The gateways may contain mediation devices 2360.
1. There are two upper layer protocols. The protocol for communications with the workstation and the ISP upper layer for all other operational support communications. The lower layer is TCP/IP over Ethernet.
2. The upper layer is the protocol for communications with workstation 2364, and the lower layer is TCP/IP over Ethernet.
3, 4. The upper layer is the ISP upper layer, and the lower layer is TCP/IP over Ethernet.
5. The proprietary protocols are those of legacy systems that are not compatible with the supported interfaces. Equipment that provides a Simple Network Management Protocol (SNMP) interface will be supported with Mediation Devices.
6, 7, 8, 9. Gateways by their nature will support ISP compliant and non-compliant interfaces. Gateways to enterprise internal systems could include gateways such as the Order Entry system, or an enterprise wide TMN system.
6. General
The Operational Support Model provides a conceptual framework for building the Operational Support System.
Field support personnel have two levels from which the ISP 2100 will be managed.
1. For trouble-shooting, the Network Layers Manager 2372 gives field support a picture of the ISP as a whole. The process of detecting, isolating, and correcting problems begins from there. From that layer, problems could be isolated to a single Network Element. Individual Network Elements are accessible from the Network Element Managers 2374 and would allow a more detailed level of monitoring, control, configuration, and testing. The centralized view of the ISP is missing from today's ISP, but many recognize its importance.
For configuration the Network Layers Manager 2372 provides an ISP-wide view, and interacts with the Network Element Managers 2374 to configure Network Elements in a consistent manner. This will help insure that the ISP configuration is consistent across all platforms. The ability to change a piece of information in one place and have it automatically distributed ISP-wide is a powerful tool that has not been possible with the current ISP management framework.
Once a service definition has been created from the Service Creation Environment, the Service Manager 2378 is used to place it in the ISP network, and provision the network for the new service. Customers for a service are provisioned through the Service Manager 2378. As a part of provisioning customers the Service Manager predicts resource utilization, and determines if new resources need to be added to handle the customer's use of a service. It uses the current utilization statistics as a basis for that determination. Once a customer is activated, the Service Manager monitors the customer's usage of the service to determine if the quality of service agreement is being met. As customer utilization of the services increases the Service Manager 2378 predicts the need to add resources to the ISP network. This Service Management, with appropriate restrictions, can be extended to customers as another service. While Service Creation is the talk of the IN world, it needs a Service Manager that is integrated with the rest of the system, and that is one of the purposes of this model.
Finally, for planning personnel (non-field support), the Planning Manager 2380 analyzes the ISP-wide resource utilization to determine future needs, and to allocate cost to different services to determine the cost of a service as the basis for future service pricing.
L. Physical Network Model
1. Introduction
This section describes the Physical Network aspects of the Intelligent Services Platform (ISP) 2100 Architecture.
a) Purpose
The Physical Network Model covers the:
b) Scope
This model defines the terminology associated with the physical network, describes the interactions between various domains and provides examples of realizations of the architecture.
c) Objectives
The objectives of this model are to:
2. Information Flow
One of the key aspects of the intelligent network (IN) is the Information Flow across various platforms installed in the network. By identifying types of information and classifying them, the network serves the needs of IN.
Customers interact with IN in a series of call flows. Calls may be audio-centric (as in the conventional ISP products), multimedia-based (as in internetMCI user using the web browser), video-based (as in video-on-demand) or a combination of contents.
Information can be classified as follows:
Normally, a customer interacting with the intelligent network will require all three types of information flows.
a) Content
Content flows contain the primary information being transported. Examples of this are analog voice, packet switched data, streamed video and leased line traffic. This is customer's property that IN must deliver with minimum loss, minimum latency and optimal cost. The IN elements are standardized such that the transport fabric supports more connectivity suites, in order to allow content to flow in the same channels with flow of other information.
b) Signaling
Signaling flows contain control information used by network elements. ISUP RLT/IMT, TCP/IP domain name lookups and ISDN Q.931 are all instances of this. The IN requires, uses and generates this information. Signaling information coordinates the various network platforms and allows intelligent call flow across the network. In fact, in a SCE-based IN, service deployment will also require signaling information flowing across the fabric.
c) Data
Data flows contain information produced by a call flow, including crucial billing data records often produced by the fabric and certain network platforms.
3. Terminology
Network: A set of interconnected network elements capable of transporting content, signaling and/or data. MCI's IXC switch fabric, the ISP extended WAN, and the Internet backbone are classic examples of networks. Current installations tend to carry different contents on different networks, each of which is specialized for specific content transmission. Both technology and customer requirements (for on-demand high bandwidth) will require carriers to use more unified networks for the majority of the traffic. This will require the fabric to allow for different content characteristics and protocols along the same channels. Another aspect of this will be more uniform content-independent signaling.
Site: A set of physical entities collocated in a geographically local area. In the current ISP architecture, instances of sites are Operator Center, ISNAP Site (which also has ARU's) and an EVS site. By the very definition, the NT and DSC switches are NOT part of the site. They are instead part of the Transport Network (see below). In the architecture, a group of (geographically collocated) Service Engines (SE), Special Resources (SR), Data Servers (DS) along with Network Interfaces and Links form a site.
Network Element: A physical entity connecting to the Transport Networks through Network Interfaces. Examples of this are ACP, EVS SIP, MTOC, Videoconference Reservation Server, DAP Transaction Server, and NAS. In the next few years, elements such as web servers, voice authentication servers, video streamers and network call record stores will join the present family of network elements.
Network Interface Equipment enabling connectivity of Network Elements to the Transport Networks. DS1 CSU/DSU, 10BaseT Ethernet interface card and ACD ports are network interfaces. With the architecture of the preferred embodiment, network interfaces will provide a well-understood uniform set of API's for communication.
Link: Connection between 2 or more Network Interfaces which are at different sites. A link may be a segment of OC-12 SONET Fiber or 100 mbps dual ring FDDI section. In the coming years, IN must handle network links such as ISO Ethernet WAN hub links and gigabit rate OC-48's.
Connection: an attachment of two or more Network Interfaces which are at the same site.
4. Entity Relationships
Entity relationships as shown in
The preferred embodiment integrates product and service offerings for MCI's business customers. The initial embodiment focuses on a limited product set. Requirements for an interface have been identified to capitalize on the integration of these services. The interface provides user-manageability of features, distribution list capabilities, and a centralized message database.
All of the platform's support services have been consolidated onto one platform. The consolidation of platforms enables shared feature/functionality of services to create a common look and feel of features.
A. Network Management
The architecture is designed such that it can be remotely monitored by an MCI operations support group. This remote monitoring capability provides MCI the ability to:
In addition, remote access to system architecture components is provided to the remote monitoring and support group such that they can perform remote diagnostics to isolate the cause of the problem.
B. Customer Service
Customer Service teams support all services. Customer support is provided to customers in a seamless manner and encompasses the complete product life cycle including:
Comprehensive and coordinated support procedures ensure complete customer support from inception to termination. Customer service is provided from the time the Account Team submits the order until the customer cancels the account. Comprehensive and coordinated customer support entails the following:
C. Accounting
Accounting is supported according to current MCI procedures.
D. Commissions
Commissions are supported according to current MCI procedures.
E. Reporting
Reporting is required for revenue tracking, internal and external customer installation/sales, usage and product/service performance. Weekly and monthly fulfillment reports are required from the fulfillment house(s). These fulfillment reports correlate the number of orders received and number of orders delivered. In addition, reporting identifies the number of different subscribers accessing Profile Management or the Message Center through the WWW Site.
F. Security
Security is enforced in accordance with MCI's published policies and procedures for Internet security. In addition, security is designed into the WWW Browser and ARU interface options to verify and validate user access to directlineMCI profiles, Message Center, Personal Home Page calendars and Personal Home Page configurations.
G. Trouble Handling
Trouble reporting of problems is documented and tracked in a single database. All troubles are supported according to the Network Services Trouble Handling System (NSTHS) guidelines. Any Service Level Agreements (SLAs) defined between MCI organizations are structured to support NSTHS.
Any troubles that require a software fix are closed in the trouble reporting database and opened as a Problem Report (PR) in the Problem Tracking System. This Problem Tracking System is used during all test phases of and is accessible by all engineering and support organizations.
Throughout this description, the following terms will be used:
The Web Servers running as Welcome Servers will be running the Netscape Commerce Server HTTP Daemon in secure as well as normal mode. The Web Servers operating as various application servers will run this daemon in secure mode only. The Secure Mode uses SSLv2.
A. Web Server Architecture
The Web Servers are located in a DMZ. The DMZ houses the Web Servers and associated Database Clients as required. The database clients do not hold any data, but provide an interface to the data repositories behind the corporate firewall.
The Web space uses Round-Robin addressing for name resolution. The Domain name is registered with the administrators of mci.com domain, with a sub-netted (internally autonomous) address space allocated for galileo.mci.com domain.
1. Welcome Server 450
This Web Server runs both the secure and normal HTTP daemons. The primary function of this server is to authenticate user 452 at login time. The authentication requires the use of Java and a switch from normal to secure mode operation. There are one or more Welcome servers 450 in the DMZ. The information provided by the Welcome server 450 is stateless. The statelessness means that there is no need to synchronize multiple Welcome Servers 450.
The Welcome server's first task is to authenticate the user. This requires the use of single use TOKENS, Passcode authentication and Hostile IP filtering. The first is done using a Token Server 454, while the other two will be done using direct database 456 access.
In case of failed authentication, the user 452 is shown a screen that mentions all the reasons (except Hostile-IP) why the attempt may have failed. This screen automatically leads the users back to the initial login screen.
Welcome server's 450 last task, after a successful authentication, is to send a service selection screen to the user 452. The Service Selection screen directs the user to an appropriate Application Server. The user selects the Application, but an HTML file in the Server Section page determines the Application Server. This allows the Welcome Servers 450 to do rudimentary load balancing.
All the Welcome Servers 450 in the DMZ are mapped to www.galileo.mci.com. The implementation of DNS also allows galileo.mci.com to map to www.galileo.mci.com.
2. Token Server 454
This is a database client and not a Web Server. The Token servers 454 are used by Welcome Servers 450 to issue a TOKEN to login attempts. The issued TOKEN, once validated, is used to track the state information for a connection by the Application Servers. The TOKEN information is maintained in a database on a database server 456 (repository) behind the corporate firewall.
The Token Servers 454 do the following tasks:
1. Issue single use TOKEN during authentication phase.
2. Validate single use TOKEN (mark it for multi use).
3. Validate multi-use TOKEN.
4. Re-validate multi-use TOKEN.
The Token Servers 454 are required to issue a unique TOKEN on every new request. This mandates a communication link between multiple Token Servers in order to avoid conflict of TOKEN values issued. This conflict is eliminated by assigning ranges to each Token Server 454.
The TOKEN is a sixteen character quantity made up of 62 possible character values in the set [0-9A-Za-z]. The characters in positions 0, 1 and 2 for each TOKEN issued by the Token Server are fixed. These character values are assigned to each Token Server at configuration time. The character at position 0 is used as physical location identifier. The character at position 1 identifies the server at the location while the character at position 2 remains fixed at ‘0’. This character could be used to identify the version number for the Token Server.
The remaining 13 characters of the TOKEN are generated sequentially using the same 62 character set described above. At startup the TOKEN servers assign the current system time to the character positions 15-10, and set positions 9-3 to ‘0’. The TOKEN values are then incremented sequentially on positions 15-3 with position 3 being least significant. The character encoding assumes the following order for high to low digit values: ‘z’-‘a’, ‘Z’-‘A’, ‘9‘-’0’.
The above scheme generates unique tokens if the system time is computed in 4 byte values, which compute to 6 base-62 characters in positions 15-10. The other assumption is that the scheme does not generate more than 62̂7(35*10̂12) TOKENS in one second on any given Token Server in any embodiment.
The use of TOKEN ranges allows the use of multiple Token Servers in the Domain without any need for explicit synchronization. The method accommodates a maximum 62 sites, each having no more than 62 Token Servers. An alternate embodiment would accommodate more sites.
All of the Token Servers in the DMZ are mapped to token.galileo.mci.com. The initial embodiment contains two Token Servers 454. These Token Servers 454 are physically identical to the Welcome Servers 450, i.e., the Token Service daemon will run on the same machine that also runs the HTTP daemon for the Welcome service. In another embodiment, the two run on different systems.
The Welcome Server(s) 450 use the Token Server(s) 454 to get a single use TOKEN during the authentication phase of the connection. Once authenticated, the Welcome Server 450 marks the TOKEN valid and marks it for multiple use. This multi-use TOKEN accompanies the service selection screen sent to the user by the Welcome Server.
The design of TOKEN database records is discussed in detail below.
3. Application Servers
The Application servers are Web servers that do the business end of the user transaction. The Welcome Server's last task, after a successful authentication, is to send a service selection screen to the user. The service selection screen contains the new multi-use TOKEN.
When the user selects a service, the selection request, with its embedded TOKEN, is sent to the appropriate Application Server. The Application Server validates the TOKEN using the Token Server 454 and, if valid, serves the request. A Token Server can authenticate a TOKEN issued by any one of the Token Servers on the same physical site. This is possible because the Token Servers 454 are database clients for the data maintained on a single database repository behind the corporate firewall.
An invalid TOKEN (or a missing TOKEN) always leads to the “Access Denied” page. This page is served by the Welcome Server(s) 450. All denial of access attempts are logged.
The actual operation of the Application Server depends on the Application itself. The Application Servers in the DMZ are mapped to <appName><num>.galileo.mci.com. Thus, in an embodiment with multiple applications (e.g., Profile Management, Message Center, Start Card Profile, Personal Web Space etc.), the same Welcome and Token servers 450 and 454 are used and more Applications servers are added as necessary.
Another embodiment adds more servers for the same application. If the work load on an application server increases beyond its capacity, another Application Server is added without any changes to existing systems. The SERVERS and TOKEN_HOSTS databases (described below) are updated to add the record for the new server. The <num> part of the host name is used to distinguish the Application Servers.
There is no need to use DNS Round-robin on these names. The Welcome server 450 uses a configuration table (The SERVERS database loaded at startup) to determine the Application Server name prior to sending the service selection screen.
B. Web Server System Environment
All the Web servers run the Netscape Commerce Server HTTP daemon. The Welcome Servers 450 run the daemon in normal as well as secure mode, while the Application Servers only run the secure mode daemon.
The Token Server(s) run a TCP service that runs on a well known port for ease of connection from within the DMZ. The Token Service daemon uses tcp_wrapper to deny access to all systems other than Welcome and Application server(s). In order to speed this authentication process, the list of addresses is loaded by these servers at configuration time, instead of using reverse name mapping at every request. The use of tcp_wrapper also provides the additional tools for logging Token Service activity.
The Application servers mostly work as front-ends for database services behind The firewall. Their main task is to validate the access by means of the TOKEN, and then validate the database request. The database requests are to Create, Read, Update or Delete exiting records or data fields on behalf of the user. The Application Servers do the necessary validation and authority checks before serving the request.
1. Welcome Servers
The Welcome Servers serve the HTML pages described below to the user at appropriate times. The pages are generated using Perl-based Common Gateway Interface (CGI) scripts. The Scripts reside in a directory which is NOT in the normal document-root directory of the HTTP daemon. The normal precautions regarding disabling directory listing and removing all backup files etc. are taken to ensure that CGI scripts are not readable to the user.
The HTTP Server maps all requests to the “cgi” directory 460 based on the URL requested. The CGI scripts use the HTML templates from the “template” directory 462 to create and send the HTML output to the users on the fly.
The use of the URL to map to a CGI script out of the <document_root> 456 blocks access to the <document_root> directory 456 by a malicious user. Since every access to the Welcome Server 450 maps to a CGI script in the cgi directory 460 of the Welcome Server 450, security is ensured by calling the authentication function at start of every script.
The user Authentication libraries are developed in Perl to authenticate the user identity. NSAPI's authentication phase routines also add features for TOKEN verification and access mode detection in the servers themselves.
The Welcome Servers 450 read their operating parameters into their environment from the database 456 at startup. It is necessary to keep this information in the common database in order to maintain the same environment on multiple Welcome Servers 450.
a) Welcome Page
The welcome page is sent as the default page when the Welcome Server 450 is first accessed. This is the only page that is not generated using a cgi script, and it is maintained in the <document_root> directory 456. This page does the following:
The last action by the Welcome page is done using the Java applet embedded in the page. This also switches the user's browser from normal to secure mode.
b) Login Page
The Login Page is a cgi-generated page that contains an embedded single use TOKEN, a Java applet, and form fields for the user to enter a User Id and Passcode. The page may display a graphic to emphasize service.
The processing of this page is padded to introduce an artificial delay. In the initial embodiment, this padding is set to zero.
The response from this page contains the TOKEN, a scrambled TOKEN value generated by the applet, User Id and Passcode. This information is sent to the Welcome server using a POST HTTP request by the Java applet. The POST request also contains the Applet signature.
If the login process is successful the response to this request is the Server Selection page. A failure at this stage results in an Access Failed page.
c) Server Selection Page
The Server Selection Page is a cgi-generated page which contains an embedded multi-use TOKEN. This page also shows one or more graphics to indicate the types of services available to the user. Some services are not accessible by our users. In other embodiments, when more than one service exists, a User Services Database keyed on the User Id is used to generate this page.
The Welcome server uses its configuration information to embed the names of appropriate Application Servers with the view to sharing the load among all available Application Servers. This load sharing is done by using the configuration data read by the Welcome Server(s) during startup.
The Welcome Server selects an Application Server based upon entries in its configuration file for each of the services. These entries list the names of Application Server(s) for each application along with their probability of selection. This configuration table is loaded by the Welcome Servers at startup.
d) Access Failed Page
The Access Failed Page is a static page that displays a message indicating that the login failed because of an error in User Id, Passcode or both. This page automatically loads the Login Page after a delay of 15 seconds.
e) Access Denied Page
The Access Denied Page is a static page that displays a message indicating that an access failed due to authentication error. This page automatically loads the Login Page after a delay of 15 seconds. The Access Denied page is called by the Application Servers when their authentication service fails to recognize a TOKEN. All loads of this page will be logged and monitored.
2. Token Servers 454
The TOKEN service on the Web site is the only source of TOKEN generation and authentication. The Tokens themselves are stored in a shared Database. This database can be shared among all Token servers. The Token Database is behind the firewall out of the DMZ.
The Token service provides the services over a well-known (>1024) TCP port. These services are provided only to a trusted host. The list of trusted hosts is maintained in a configuration database. This database is also maintained behind the firewall outside of the DMZ. The Token servers read their configuration database only on startup or when they receive a signal to refresh. The Token services are:
TOKEN aging is implemented by a separate service to reduce the work load on the Token servers.
All access to the Token Server(s) is logged and monitored. The Token Service itself is written using the tcp_wrapper code available from MCI's internal security groups.
3. Profile Management Application Servers
The profile management application server(s) are the only type of Application servers implemented in the first embodiment. These servers have the same directory layout as the Welcome Servers. This allows the same system to be used for both services if necessary.
C. Security
The data trusted by subscribers to the Web server is sensitive to them. They would like to protect it as much as possible. The subscribers have access to this sensitive information via the Web server(s). This information may physically reside on one or more database servers, but as far as the subscribers are concerned it is on Server(s) and it should be protected.
Presently only the following information needs to be protected in an embodiment:
In other embodiments, profile information for directline account additional information is protected, including Email, Voice Mail, Fax Mail, and Personal Home Page information.
The protection is offered against the following type of attackers:
The project implements the security by using the following schemes:
In addition to the security implemented by TOKEN as described above, the Web Server(s) are in a Data Management Zone for further low level security. The DMZ security is discussed below.
D. Login Process
E. Service Selection
When the user selects an option from the Service selection screen, the request is accompanied by the Token. The token is validated before the service is accessed, as shown in
R. Service Operation
The screens generated by the Application Servers all contain the Token issued to the user when the Login process was started. This Token has an embedded expiration time and a valid source IP Address. All operation requests include this token as a part of the request.
The service requests are sent by the browser as HTML forms, APPLET based forms or plain Hyper Links. In the first two instances, the Token is sent back as a Hidden field using the HTTP-POST method. The Hyper-Links use either the HTTP-GET method with embedded Token or substitute the Cookie in place of a Token. The format of the Token is deliberately chosen to be compatible with this approach.
1. NIDS Server
The NIDS server in the system is isolated from the Web Servers by a router-based firewall. The NIDS server runs the NIDSCOMM and ASCOMM services that allow TCP clients access to databases on the NIDS server. The NIDSCOMM and ASCOMM services do not allow connectivity to databases not physically located on the NIDS Server.
The following databases (C-tree services) on the NIDS server are used by the Welcome Server, Token Server and Profile Management Application Server:
In addition to the C Tree services named above the following new C tree services will be defined in the SERVDEF and used only on the NIDS server dedicated to the system:
The following descriptions for these databases do not show the filler field required at the first byte of each record, nor do they attempt to show any other filler fields that may be required for structure alignment along the 4-byte boundaries. This omission is made only for clarity. The numbers in parentheses next to the field definitions are the number of bytes required to hold the field value.
2. TOKEN Database Service.
The TOKEN database service is accessed by the Token Servers. The primary operations on this service are Create a new record, read a record for a given Token value and update a record for the given Token value.
A separate chron job running on the NIDS Server itself also accesses this database and deletes obsolete records on a periodic basis. This chron job runs every hour. It does a sequential scan of the database and deletes records for expired tokens.
The TOKEN database service contains the TOKEN records. The TOKEN records use a single key (the TOKEN) and have the following fields:
7. Time expires (4).
The key field is the Token Value.
3. SERVERS Database Service.
The Servers Database Service is accessed by the Welcome Server at configuration time. The records in this database contain the following fields:
The key field is the combination of Application Name, Server Host Name, and Server Domain Name. This database is read by the Welcome Servers sequentially. This database is also accessed by the Web Administrators to Create, Read, Update and Delete records. This access is via the ASCOMM interface. The Web Administrators use the a HTML form and CGI script for their administration tasks.
4. HOSTILE_IP Database Service.
This database is accessed by the Welcome servers to create new records or read existing records based on IP address as the key. The read access is very frequent. This database contains the following fields:
2. Time entered (4); and
3. Time expires (4).
The key field is the IP Address. All three values are set by the Welcome Server when creating this record. If the entry is to be over-ridden, the service doing the over-ride will only be allowed to change the Time expires value to <epoch_start>, thus flagging the entry as over-ride.
This database is also accessed by the Web Administrators to Create, Read, Update, and Delete records. Access is via the ASCOMM interface. The Web Administrators use the HTML form and CGI script for their administration tasks.
Customer Service uses a specially developed tool to access this database and access is allowed only from within the corporate firewall.
A chron job running on the NIDS server also accesses this database and deletes all obsolete records from this database. This job logs all its activity. The log of this job is frequently examined by the Web Administrators all the time.
5. TOKEN_HOSTS Database Service.
This database service lists IP Addresses of the hosts trusted by the Token Servers. This database is read by the Token Service at configuration time. The records in this database contain the following fields:
5. Host description (64).
The key field is the IP Address. The Authority binary flag determines the access level. The low access level only allows validate/re-validate commands on an existing TOKEN; the high access level additionally allows Grant and Validate single use TOKEN commands as well.
This database is also accessed by the Web Administrators to Create, Read, Update and Delete records. Access is via the ASCOMM interface. The Web Administrators use the HTML form and CGI script for their administration tasks.
6. SERVER_ENV Database Service.
This database is read by the Welcome and Application servers at startup. It defines the starting environment for these servers. In one embodiment, only one field (and only for the Welcome Servers) is designed to be used. This is expanded in other embodiments.
The records in this database contain the following fields:
The key field is Sequence Number. Environment values may refer to other environment variables by name. The values are evaluated at run time by the appropriate CGI scripts. The Welcome Servers are assigned the pseudo Application Name of WELCOME.
This database is also accessed by the Web Administrators to Create, Read, Update and Delete records. This access is via the ASCOMM interface. The Web Administrators use the HTML form and CGI script for their administration tasks.
7. Chron Job(s)
The NIDS Server runs a cleanup chron job. This job is scheduled to run every hour. The main tasks for this job are the following:
G. Standards
The following coding standards have been developed:
H. System Administration
The system administration tasks require reporting of at least the following System Operating Parameters to the System Administrators:
The system generates alarms for the following conditions:
The alarms will be generated at different levels. The Web Servers use the following broad guidelines:
I. Product/Enhancement
A preferred embodiment enables directlineMCI customers additional control over their profile by providing a graphical user interface, and a common messaging system. The capability to access the power of a preferred embodiment exists in the form of a directlineMCI profile and common messaging system. The user is able to modify his account, customizing his application by making feature/functionality updates. The application enables the power of the future capabilities that a preferred embodiment integration will provide by allowing the user to run his application.
The user is able to access all of his messages by connecting with just one location. FAX, email, page and voice messages will be accessed through a centralized messaging interface. The user is able to call into the centralized messaging interface through his message center interface to retrieve messages. A centralized message interface provides the user the capability to manage his communications easily and effectively.
The user interface has two components, the user's application profile and message center. The interface is accessible through PC software (i.e., PC Client messaging interface), an ARU or a VRU, and a World Wide Web (WWW) Browser. The interface supports the customization of applications and the management of messages.
The feature/functionality requirements for an embodiment will be presented below. The first piece to be described is the ARU interface and its requirements for the user interface, message management and profile management. Following the ARU requirements, requirements are also provided for the WWW Browser and PC Client interfaces.
J. Interface Feature Requirements (Overview)
A front-end acts as an interface between the user and a screen display server in accordance with a preferred embodiment. The user is able to access the system and directly access his profile and messages. The user interface is used to update his profile and to access his messages. The user's profile information and the user's messages may reside in different locations, so the interface is able to connect to both places. Profile and messaging capabilities are separate components of the interface and have different requirements.
Through his interface, the user is able to update his profile in real-time through profile management. The application profile is the front-end to the user account directory, which is where all of the user account information resides in a virtual location. Also, a user is able to manage his messages (voicemail, faxmail, email, pager recall) through his message center. The message center is the front-end to the centralized messaging database, which is where all of the user's messages may reside, regardless of message content.
Three user interfaces are supported:
From the ARU, the users are able to update their profiles (directlineMCI only), retrieve voicemail messages and pager recall messages, and retrieve message header (sender, subject, date/time) information for faxmail and email messages. Through the PC Client, the user is limited to message retrieval and message manipulation. The WWW Browser provides the user a comprehensive interface for profile management and message retrieval. Through the WWW Browser, the users are able to update their profiles (directlineMCI, Information Services, List Management, Global Message Handling and Personal Home Pages) and retrieve all message types.
1. The User Account Profile
The user is able to access account information through the application profile. The application profile provides an intelligent interface between the user and his account information, which resides in the user account directory. The User Account Directory accesses the individual account information of users. Users are able to read and write to the directory, making updates to their accounts. The directory allows search capabilities, enabling customer service representatives to search for a specific account when assisting a customer.
When a customer obtains a phone number, the user account directory reflects the enrollment, and the user is able to access and update features through his user account profile. If a customer withdraws, the user directory will reflect the deactivation, and the service will be removed from the user's application profile.
In summary, the user account directory provides account information for each of the user's services. However, the user account directory is limited to: directlineMCI profile, Information Services profile, Global Message Handling, List Management and Personal Home Page profiles. This information determines the feature/functionality of the user's application and provides the user with the flexibility that is necessary to customize his application, allowing MCI to meet his continuously changing communication needs.
2. The Database of Messages
An important feature that is offered is the integration of messages. Messages of similar and dissimilar content are consolidated in one virtual location. Through a call, the message center provides the user with a review of all of his messages, regardless of content or access. Through the interface messaging capabilities, the user is also able to maintain an address book and distribution lists.
This message database is a centralized information store, housing messages for users. The message database provides common object storage capabilities, storing data files as objects. By accessing the message database, users retrieve voicemail, faxmail, email and pager recall messages from a single virtual location. In addition, by using common object storage capabilities, message distribution is extremely efficient.
K. Automated Response Unit (ARU) Capabilities
1. User Interface
The ARU interface is able to perform directlineMCI Profile Management, Information Services Profile Management, message retrieval and message distribution. The DTMF access provided through the ARU is applied consistently across different components within the system. For example, entering alphabetic characters through the DTMF keypad is entered in the same manner regardless if the user is accessing Stock Quote information or broadcasting a fax message to a distribution list.
Voicemail Callback Auto Redial provides the capability to prompt for and collect a DTMF callback number from a guest leaving a voicemail and automatically launch a return call to the guest call back number when retrieving messages. Upon completing the callback, the subscriber will be able to return to the same place where they left off in the mailbox.
Music On-Hold provides music while a guest is on-hold.
Park and Page provides a guest an option to page a directlineMCI subscriber, through the directlineMCI gateway, then remain on-hold while the subscriber is paged. The subscriber receives the page and calls their directlineMCI number, where they can select to be connected with the guest on hold. Should the subscriber fail to connect a call with the guest, the guest will receive an option to be forwarded to voicemail. If the subscriber does not have voicemail as a defined option, then the guest a final message will be played for the guest.
Note: The guest has the ability to press an option to be forwarded to voicemail at any time while on hold.
Call Screening with Park and Page An embodiment provides the subscriber with functionality for responding to a park and page, The identity of the calling party (i.e., guest). This provides the subscribers the ability to choose whether they wish to speak to the guest or transfer the guest to voicemail, prior to connecting the call. Specifically, guests are ARU prompted to record their names when they select the park and page option. When the subscriber respond to the park and page, they will hear an ARU prompt stating, “You have a call from RECORDED NAME”, then be presented with the option to connect with the calling party or transfer the party to voicemail. If the subscriber does not have voicemail as a defined option, then the guest will be deposited to a final message. The guest also will have the ability to press an option to be forwarded to voicemail at any time while on hold.
The system also allows a subscriber to respond to a park and page notification by instructing the ARU to route the call to voicemail or final message or continue to hold, through a command submitted by a two-way pager.
The system allows a subscriber to page a directlineMCI subscriber, through the directlineMCI gateway, and a leave a message to be retrieved by a text pager. Specifically, upon choosing the appropriate option, the guest will be transferred to either the networkMCI Paging or the SkyTel message center where an operator will receive and submitcreate a text-based message to be retrieved by the subscriber's text pager.
The system provides the capability for the party answering the telephone, to which a directlineMCI call has been routed, to have the option to have the call routed to the next termination number in the directlineMCI routing sequence. Specifically, the called party will receive a prompt from the directlineMCI ARU gateway, which indicates that the call has been routed to this number by directlineMCI and providing the called party with the option to receive the incoming call or have the call routed to the next termination number or destination in the routing sequence. The options presented to a called party include:
Less Than 2 Second # Reorigination
An embodiment also provides the capability to reoriginate an outbound call, from the directlineMCI gateway, by pressing the pound (#) key for less than two seconds. Currently, directlineMCI requires the # key to be depressed for two seconds or more before the subscriber can reoriginate a call.
L. Message Management
1. Multiple Media Message Notification
The subscriber can receive an accounting of current messages across a number of media, to include voicemail, faxmail, email, paging. Specifically, the subscriber will hear an ARU script stating, for example, “You have 3 new voicemail messages, 2 new faxmail messages, and 10 new email messages.”
2. Multiple Media Message Manipulation
A subscriber is allowed to access the Universal Inbox to perform basic message manipulation, of messages received through multiple media (voicemail, faxmail, email, paging), through the directlineMCI ARU gateway. Subscribers are able to retrieve voicemail messages and pager messages, and retrieve message header (priority, sender, subject, date/time, size) information for faxmail and email messages. In addition, subscribers are able to save, forward or delete messages reviewed from the ARU interface. The forward feature is limited to distributing messages as either voicemails or faxmails. Only voicemail messages can be forwarded as voicemails. Email, faxmail and pager messages can be forwarded as faxmails; however, it may be necessary to convert email and pager messages to a G3 format. When forwarding messages as faxmails, subscribers have the ability to send messages to distribution lists and Fax Broadcast lists.
3. Text to Speech
The system converts text messages, received as email, faxmail or pager messages, into audio, which can be played back through the directlineMCI gateway. Initially, the text-to-speech capability will be limited to message header (priority, sender, subject, date/time, size) information.
Subscribers are provided the option to select whether they want to hear message headers first and then select which complete message they want to be played. The only message type that does not support a text-to-speech capability for the complete message will be faxmail messages. The capability only exists to play faxmail headers. FAXmail header information includes sender's ANI, date/time faxmail was received and size of faxmail.
4. Email Forwarding to a Fax Machine
Subscribers can forward an email, retrieved and reviewed through the directlineMCI ARU gateway, to a subscriber-defined termination number. Specifically, the subscriber has the ability to review an email message through the directlineMCI ARU. After reviewing the message, the subscriber receives, among the standard prompts, a prompt requesting whether he would like to forward the email message to a specified termination number or have the option to enter an impromptu number. Upon selecting this option and indicating the termination number, the email message is converted to a G3 format and transmitted to the specified termination number. Email attachments that are binary files are supported. If an attachment cannot be delivered to the terminating fax machine, a text message must be provided to the recipient that the binary attachment could not be forwarded. Forwarding of emails to a fax machine does not result in the message being deleted from the “universal inbox”.
5. Pager Notification of Messages Received
A subscriber can receive a pager notification, on a subscriber-defined interval, indicating the number of messages, by message media, that currently reside in the subscriber's “universal inbox”. Specifically, the subscriber will have the ability to establish a notification schedule, through the directlineMCI ARU, to receive a pager message which indicates the number of voicemail, faxmail, email and pager messages that reside in the subscriber's “universal inbox”.
6. Delivery Confirmation of Voicemail
The system provides the subscriber the ability to receive a confirmation voicemail message when a subscriber-initiated voicemail message was not successfully delivered to the terminating party(s).
7. Message Prioritization
The system provides the guest the ability to assign either regular or urgent priority to a message. When the subscriber receives an accounting of messages, the prioritization will be indicated, and all urgent messages will be indexed before regular messages. This requirement only applies to voicemails, not faxmails. This will require that the “universal inbox” present the proper message priority for directlineMCI voicemails.
M. Information Services
Through the ARU interface, users will be able to receive content from information services which are configurable through the WWW Browser interface. Information content will be provided as an inbound service and an outbound service. The information content that is defined through the WWW Browser (i.e., Profile Management) is defined as the inbound information content and will be limited to:
Subscribers also have the ability to access additional information content through the ARU interface; however, this information is not configurable through the WWW Browser (i.e., Profile Management). This additional information content will be referred to as outbound information content and will consist of:
The configurable parameters of the inbound information content is defined below. Retrieval of outbound information content will support the entry of alphabetic characters through a DTMF keypad. Entering of alphabetic characters must be consistent with the manner that alphabetic characters are entered through DTMF for list management.
Access to Traveler's Assist will be bundled with the other outbound information services such that the subscriber only has to dial a single 800/8XX number. The 800/8XX call may extend to different termination depending upon the information content selected.
N. Message Storage Requirements
The message storage requirements are consistent with the message storage requirements defined below.
O. Profile Management
directlineMCI Profile Management
Subscribers can also review, update and invoke their directlineMCI account profiles. The directlineMCI profile management capabilities through the ARU interface are consistent with the presentation provided through the WWW Browser and support the following requirements:
P. Call Routing Menu Change
The system also provides the capability for subscribers to modify their call routing termination numbers without having to re-enter termination numbers which they do not wish to change. Specifically, the directlineMCI routing modification capability requires the subscriber to re-enter all termination numbers in a routing sequence should they wish to change any of the routing numbers. This capability permits the subscriber to change only the termination numbers they wish to change, and indicate by pressing the “#” key when they do not wish to change a specific number in the routing sequence.
Q. Two-way Pager Configuration Control and Response to Park and Page
The system can also enable or disable predefined directlineMCI profiles through a command submitted by a two-way pager.
R. Personalized Greetings
The system provides subscribers the ability to review and update the personalized greeting that will be played from the ARU or displayed from their Personal Home Page. Each greeting is maintained separately and customized to the features available through each interface (ARU or Personal Home Page).
S. List Management
The system also provides the subscriber the ability to create and update lists, and create a voice annotation name for a list. Fax Broadcast list management capabilities are integrated with directlineMCI list management capabilities to provide a single database of lists. From the ARU interface, subscribers have the ability to review, update, add or delete members on a list. In addition, subscribers are able to delete or create lists. The ARU interface is able to use the lists to distribute voicemail and faxmail messages.
Access to distribution lists supports alphabetic list names such that lists are not limited to list code names. Entering of alphabetic characters through DTMF to the ARU for list names is consistent with the manner that alphabetic characters are entered through DTMF for Information Services. The List Management requirements are discussed in greater detail below.
In addition to providing message manipulation capabilities, the PC Client also provides an address book and access to lists. The user is able to make modifications to the address book and manage distribution lists for voice, fax, email and paging messages. In one embodiment, lists created or maintained through the PC Client interface are not integrated with lists created or maintained through the WWW Browser or ARU interfaces, but such integration can be implemented in an alternative embodiment. The subscriber is able to send a message to a distribution list from the PC Client. This requires a two-way interface between the PC Client and the List Management database whereby the PC Client can export a comma delimited or DBF formatted file to the database of lists.
The user is able to create and modify recipient address information through his interface PC software. The user is able to record multiple types of addresses in his address book, including 10 digit ANIs, voice mailbox ids, fax mailbox ids, paging numbers and email addresses (MCIMail and Internet). This information is saved onto the PC. The address information retained on the PC Client is classified and sorted by recipient's name.
T. Global Message Handling
From the ARU interface, subscribers are able to define which message types can be accessed from the “universal inbox”. The global message handling requirements are consistent with the requirements defined below.
The discussion thus far has provided an introduction to the Internet, and therefore Internet telephony, but Internet telephony encompasses quite a few areas of development. The following is a summary of Internet telephony, divided into seven key areas. The first area consists of access to Internet telephony services. This area involves accessing and utilizing the Internet using such mechanisms as satellites, dialup services, T1, T3, DS3, OC3, and OC12 dedicated lines, SMDS networks, ISDN B-channels, ISDN D-channels, multirate ISDN, multiple B-channel bonded ISDN systems, Ethernet, token ring, FDDI GSM, LMDS, PCS, cellular networks, frame relay, and X.25.
The second area involves sharing Internet telephony. Multimedia data can utilize circuit-switched networks quite readily due to the high reliability and throughput potential. Issues include shared data, pushing URL data between parties, data conferencing, shared whiteboarding, resource collaboration, and ISDN user-user signaling.
The third area deals with routing Internet telephony. Issues include the time-of-day, the day-of-week, the day-of-month, and the day-of-year, in addition to geographic points of origin, network point of origin, and time zone of origin. Analysis of routing also includes user data, destination parties, telephone numbers, lines of origin, types of bearer service, presubscribed feature routing, ANI, and IP addresses. Also, VNET plans, range privileges, directory services, and Service Control Points (SCP)s fall into routing Internet telephony.
The fourth category deals with quality of service. Analysis must include switched networks, ISDN, dynamic modifications, Internet telephony, RSVP, and redundant network services. In addition, this category includes hybrid Internet/telephony switches, Ethernet features, ISDN features, analog local loops and public phones, and billing for reserved and/or utilized services.
The fifth category is composed of directory services, profiles, and notifications. Examples are distributed directories, finding-me and follow-me services, directory management of telephony, and user interfaces. Calling party authentication security is also included. Hierarchical and object-oriented profiles exist, along with directory service user profiles, network profile data structures, service profiles, and order entry profiles.
The sixth category consists of hybrid Internet telephony services. Areas include object directed messaging, Internet telephony messaging, Internet conferencing, Internet faxing, information routing (IMMR), voice communications, and intranets (such as those that exist within a company). Other services include operator services, management service, paging services, billing services, wireless integration, message broadcasts, monitoring and reporting services, card services, video-mail services, compression, authorization, authentication, encryption, telephony application builders, billing, and data collection services.
The seventh category consists of hybrid Internet media services, which include areas of collaborative work which involve a plurality of users. Users can collaborate on Audio, Data and Video. This area includes media conferencing within the Hybrid network. Then there is a broadly related area of Reservations mechanism, Operator-assisted conferencing, and the introduction of content into conferences. The Virtual locations of these conferences will assume importance in the future. The next-generation Chat Rooms will feature virtual conference spaces with simulated Office Environments.
A. System Environment for Internet Media
1. Hardware
A preferred embodiment of a system in accordance with the present invention is preferably practiced in the context of a personal computer such as the IBM PS/2, Apple Macintosh computer or UNIX based workstation. A representative hardware environment is depicted in
2. Object-Oriented Software Tools
A preferred embodiment is written using JAVA, C, and the C++ language and utilizes object oriented programming methodology. Object oriented programming (OOP) has become increasingly used to develop complex applications. As OOP moves toward the mainstream of software design and development, various software solutions require adaptation to make use of the benefits of OOP. A need exists for these principles of OOP to be applied to a messaging interface of an electronic messaging system such that a set of OOP classes and objects for the messaging interface can be provided.
OOP is a process of developing computer software using objects, including the steps of analyzing the problem, designing the system, and constructing the program. An object is a software package that contains both data and a collection of related structures and procedures. Since it contains both data and a collection of structures and procedures, it can be visualized as a self-sufficient component that does not require other additional structures, procedures or data to perform its specific task. OOP, therefore, views a computer program as a collection of largely autonomous components, called objects, each of which is responsible for a specific task. This concept of packaging data, structures, and procedures together in one component or module is called encapsulation.
In general, OOP components are reusable software modules which present an interface that conforms to an object model and which are accessed at run-time through a component integration architecture. A component integration architecture is a set of architectural mechanisms which allow software modules in different process spaces to utilize each other's capabilities or functions. This is generally done by assuming a common component object model on which to build the architecture.
It is worthwhile to differentiate between an object and a class of objects at this point. An object is a single instance of the class of objects, which is often just called a class. A class of objects can be viewed as a blueprint, from which many objects can be formed.
OOP allows the programmer to create an object that is a part of another object. For example, the object representing a piston engine is said to have a composition-relationship with the object representing a piston. In reality, a piston engine comprises a piston, valves and many other components; the fact that a piston is an element of a piston engine can be logically and semantically represented in OOP by two objects.
OOP also allows creation of an object that “derived from” another object. If there are two objects, one representing a piston engine and the other representing a piston engine wherein the piston is made of ceramic, then the relationship between the two objects is not that of composition. A ceramic piston engine does not make up a piston engine. Rather it is merely one kind of piston engine that has one more limitation than the piston engine; its piston is made of ceramic. In this case, the object representing the ceramic piston engine is called a derived object, and it inherits all of the aspects of the object representing the piston engine and adds further limitation or detail to it. The object representing the ceramic piston engine “derives from” the object representing the piston engine. The relationship between these objects is called inheritance.
When the object or class representing the ceramic piston engine inherits all of the aspects of the objects representing the piston engine, it inherits the thermal characteristics of a standard piston defined in the piston engine class. However, the ceramic piston engine object overrides these ceramic specific thermal characteristics, which are typically different from those associated with a metal piston. It skips over the original and uses new functions related to ceramic pistons. Different kinds of piston engines have different characteristics, but may have the same underlying functions associated with them (e.g., number of pistons in the engine, ignition sequences, lubrication, etc.). To access each of these functions in any piston engine object, a programmer would identify the same functions with the same names, but each type of piston engine may have different/overriding implementations of functions behind the same name. This ability to hide different implementations of a function behind the same name is called polymorphism and it greatly simplifies communication among objects.
With the concepts of composition-relationship, encapsulation, inheritance and polymorphism, an object can represent just about anything in the real world. In fact, our logical perception of the reality is the only limit on determining the kinds of things that can become objects in object-oriented software. Some typical categories are as follows:
With this enormous capability of an object to represent just about any logically separable matters, OOP allows the software developer to design and implement a computer program that is a model of some aspects of reality, whether that reality is a physical entity, a process, a system, or a composition of matter. Since the object can represent anything, the software developer can create an object which can be used as a component in a larger software project in the future.
If 90% of a new OOP software program consists of proven, existing components made from preexisting reusable objects, then only the remaining 10% of the new software project has to be written and tested from scratch. Since 90% already came from an inventory of extensively tested reusable objects, the potential domain from which an error could originate is 10% of the program. As a result, OOP enables software developers to build objects out of other, previously built, objects.
This process closely resembles complex machinery being built out of assemblies and sub-assemblies. OOP technology, therefore, makes software engineering more like hardware engineering in that software is built from existing components, which are available to the developer as objects. All this adds up to an improved quality of the software as well as an increased speed of its development.
Programming languages are beginning to fully support the OOP principles, such as encapsulation, inheritance, polymorphism, and composition-relationship. With the advent of the C++ language, many commercial software developers have embraced OOP. C++ is an OOP language that offers a fast, machine-executable code. Furthermore, C++ is suitable for both commercial-application and systems-programming projects. For now, C++ appears to be the most popular choice among many OOP programmers, but there is a host of other OOP languages, such as Smalltalk, common lisp object system (CLOS), and Eiffel. Additionally, OOP capabilities are being added to more traditional popular computer programming languages such as Pascal.
The benefits of object classes can be summarized, as follows:
Class libraries are very flexible. As programs grow more complex, more programmers are forced to reinvent basic solutions to basic problems over and over again. A relatively new extension of the class library concept is to have a framework of class libraries. This framework is more complex and consists of significant collections of collaborating classes that capture both the small scale patterns and major mechanisms that implement the common requirements and design in a specific application domain. They were first developed to free application programmers from the chores involved in displaying menus, windows, dialog boxes, and other standard user interface elements for personal computers.
Frameworks also represent a change in the way programmers think about the interaction between the code they write and code written by others. In the early days of procedural programming, the programmer called libraries provided by the operating system to perform certain tasks, but basically the program executed down the page from start to finish, and the programmer was solely responsible for the flow of control. This was appropriate for printing out paychecks, calculating a mathematical table, or solving other problems with a program that executed in just one way.
The development of graphical user interfaces began to turn this procedural programming arrangement inside out. These interfaces allow the user, rather than program logic, to drive the program and decide when certain actions should be performed. Today, most personal computer software accomplishes this by means of an event loop which monitors the mouse, keyboard, and other sources of external events and calls the appropriate parts of the programmer's code according to actions that the user performs. The programmer no longer determines the order in which events occur. Instead, a program is divided into separate pieces that are called at unpredictable times and in an unpredictable order. By relinquishing control in this way to users, the developer creates a program that is much easier to use. Nevertheless, individual pieces of the program written by the developer still call libraries provided by the operating system to accomplish certain tasks, and the programmer must still determine the flow of control within each piece after it's called by the event loop. Application code still “sits on top of” the system.
Even event loop programs require programmers to write a lot of code that should not need to be written separately for every application. The concept of an application framework carries the event loop concept further. Instead of dealing with all the nuts and bolts of constructing basic menus, windows, and dialog boxes and then making these things all work together, programmers using application frameworks start with working application code and basic user interface elements in place. Subsequently, they build from there by replacing some of the generic capabilities of the framework with the specific capabilities of the intended application.
Application frameworks reduce the total amount of code that a programmer must write from scratch. However, because the framework is really a generic application that displays windows, supports copy and paste, and so on, the programmer can also relinquish control to a greater degree than event loop programs permit. The framework code takes care of almost all event handling and flow of control, and the programmer's code is called only when the framework needs it (e.g., to create or manipulate a data structure).
A programmer writing a framework program not only relinquishes control to the user (as is also true for event loop programs), but also relinquishes the detailed flow of control within the program to the framework. This approach allows the creation of more complex systems that work together in interesting ways, as opposed to isolated programs with custom code being created over and over again for similar problems.
Thus, as explained above, a framework basically is a collection of cooperating classes that make up a reusable design solution for a given problem domain. It typically provides objects that define default behavior (e.g., for menus and windows), and programmers use it by inheriting some of that default behavior and overriding other behavior so that the framework calls application code at the appropriate times.
There are three main differences between frameworks and class libraries:
B. Telephony Over The Internet
Voice over the Internet has become an inexpensive hobbyist commodity. Several firms are evolving this technology to include interworking with the PSTN. This presents both a challenge and an opportunity for established carriers like MCI and BT especially in the International Direct Distance Dialing (IDDD) arena. This discussion explores how a carrier class service could be offered based on this evolving technology. Of particular interest are ways to permit interworking between the PSTN and the Internet using 1 plus dialing. The introductory discussion considers the technical requirements to support PC to PC connectivity in a more robust manner than presently offered, in addition to the technical requirements for a PSTN to Internet voice gateway. Consideration is given to how calls can be placed from PCs to a PSTN destination and visa versa. The case of PSTN to PSTN communications, using the Internet as a long distance network is also explored.
It is shown how such services can be offered in a way that will complement existing PSTN services, offering lower prices for a lower quality of service. At issue in the longer term is the steady improvement in quality for Internet telephony and whether this will ultimately prove competitive with conventional voice services.
1. Introduction
In the mid-late 1970s, experiments in the transmission of voice over the Internet were conducted as part of an ongoing program of research sponsored by the US Defense Advanced Research Projects Agency. In the mid-1980s, UNIX-based workstations were used to conduct regular audio/video conferencing sessions, in modest quantities, over the Internet. These experimental applications were extended in the late 1980s with larger scale, one-way multicasting of voice and video. In 1995 a small company, VocalTec (www.vocaltec.com), introduced an inexpensive software package that was capable of providing two way voice communications between multi-media PCs connected to the Internet. Thus was born a new generation of telephony over the Internet.
The first software package, and its immediate followers, provided a hobbyist tool. A meeting place based on a Internet Relay Chat “room” (IRC) was used to establish point to point connections between end stations for the voice transfer. This resulted in chance meetings, as is common in chat rooms, or a prearranged meeting, if the parties coordinated ahead of time, by email or other means.
a) How it Works
A user with a multi-media PC and an Internet connection can add the Internet Telephony capability by loading a small software package. In the case of VocalTec, the package makes a connection to the meeting place (IRC server), based on a modified chat server. At the IRC the user sees a list of all other users connected to the IRC.
The user calls another user by clicking on his name. The IRC responds by sending the IP address of the called party. For dial in users of the Internet, an IP address is assigned at dial in time, and consequently will change between dial in sessions. If the destination is not already engaged in a voice connection, its PC beeps a ring signal. The called user can answer the phone with a mouse click, and the calling party then begins sending traffic directly to the IP address of the called party. A multi-media microphone and speakers built into or attached to the PC are used as a speakerphone. The speaker's voice is digitized, compressed and packetized for transmission across the Internet. At the other end it is decompressed and converted to sound through the PC's speakers.
b) Implications
Telephony over the Internet offers users a low cost service, that is distance and border insensitive. For the current cost of Internet access (at low hourly rates, or in some cases unlimited usage for a flat fee) the caller can hold a voice conversation with another PC user connected to the Internet. The called party contributes to the cost of the conversation by paying for his Internet access. In the case that one or both ends are LAN connected to the Internet by leased lines the call is free of additional charges. All of this is in contrast to the cost of a conventional long distance, possibly international, call.
c) Quality of Service
The voice quality across the Internet is good, but not as good as typical telephone toll quality. In addition, there are significant delays experienced during the conversation. Trying to interrupt a speaker in such an environment is problematic. Delay and quality variations are as much a consequence of distance and available capacity as they are a function of compression, buffering and packetizing time.
Delays in the voice transmission are attributable to several factors. One of the biggest contributors to delays is the sound card used. The first sound cards were half duplex and were designed for playback of recorded audio. Long audio data buffers which helped ensure uninterrupted audio playback introduced real time delays. Sound card based delays are being reduced over time as full duplex cards designed for “speakerphone” applications are brought to the market.
Other delays are inherent in the access line speeds (typically 14.4-28.8 kbps for dial-up internet access) and in the packet forwarding delays in the Internet. Also there is delay inherent in filling a packet with digitized encoded audio. For example, to fill a packet with 90 ms of digitized audio, the application must wait at least 90 ms to receive the audio to digitize. Shorter packets reduce packet-filling delays, but increase overhead by increasing the packet header to packet payload data ratio. The increased overhead also increases the bandwidth demands for the application, so that an application which uses short packets may not be able to operate on a 14.4 kbps dial-up connection. LAN-based PCs suffer less delay, but everyone is subject to variable delays which can be annoying.
Lastly, there are delays inherent in audio codecs. Codec delays can vary from 5 to 30 ms for encoding or decoding. Despite the higher latencies associated with internet telephony, the price is right, and this form of voice communication appears to be gaining in popularity.
2. IP Phone as a Commercial Service
IP telephony technology is here whether the established carriers like it or not. Clearly the use of the Internet to provide international voice calls is a potential threat to the traditional International Direct Distance Dialing (IDDD) revenue stream. Although it may be several years before there is an appreciable revenue impact, it cannot be stopped, except perhaps within national borders on the basis of regulation. The best defense by the carriers is to offer the service themselves in an industrial strength fashion. To do this requires an improved call setup facility and an interface to the PSTN.
Facilitating PC to PC connections is useful for cases in which the voice conversation needs to be conducted during a simultaneous Internet data packet communication, and the parties don't have access to separate telephone facilities. Dial-up Internet subscribers with only one access circuit might find themselves in that position. Cost considerations may also play a role in dictating the use of PC to PC telephony. The larger use of this technology will occur when the Internet can be used in place of the long distance network to interconnect ordinary telephone hand sets. The number of multi-media Internet connected PCs in the world (estimated at 10 million) is minuscule compared to the number of subscriber lines worldwide (estimated at 660 million). This service is in the planning stages of several companies.
In the sections below we look at each of the end point combinations possible in a full Internet telephony service. The most important aspects relate to the PSTN to Internet gateway capabilities. Of particular interest is the possibility of providing the PSTN caller with one-step dialing to his called party. The one-step dialing solutions discussed below are in the context of the North American numbering plan. There are essentially four cases:
The first case is addressed by today's IP Phone software. The second and third case are similar but not identical and each requires a gateway between the PSTN and the Internet. The last case uses the Internet as a long distance network for two PSTN telephones.
a) PC to PC
(1) Directory Service
To facilitate PC to PC Internet Telephony a directory service is needed to find the IP address of the called party based on a name presented by the calling party Early internet telephony software utilized a modified internet chat server as a meeting place. More recently, internet telephony software is replacing the chat server with a directory service which will uniquely identify internet telephone users (perhaps by email address). To receive calls, customers would register with the directory service (for a fee, with recurring charges) and would make their location (IP address) known to the directory system whenever they connect to the Internet and want to be available for calls. The best way to accomplish automatic notification is to get agreement between the vendors of IP phone software on a protocol to notify the directory service whenever the software is started (automatic presence notification). It would also be desirable, as at option, to find a way to automatically invoke the IP phone software when the IP stack is started.
The directory service is envisioned as a distributed system, somewhat like the Internet Domain Name System, for scalability. This is not to imply, necessarily, the user@foo.com format for user identification.
Theoretically only the called parties need to be registered. If the calling party is not registered, then the charge for the call (if there is one) could be made to the called party (a collect call). Alternatively, we can insist that the caller also be registered in the directory and billed through that mechanism (this is desirable since we charge for the registration and avoid the complications that collect calls require). A charge for the call setup is billed, but not for the duration, over and above the usual Internet charges. Duration charges already apply to the dial up Internet user and Internet usage charges, both for dial up and dedicated usage, are probably not too far away.
Collect calls from a registered user may be required to meet market demand. A scheme for identifying such calls to the called party must be devised, along with a mechanism for the called party to accept or reject the collect call. The directory service will track the ability of the called software to support this feature by version number (or, alternatively, this could be a matter for online negotiation between the IP telephony software packages).
In the event of collect calls (assuming the caller is not registered), the caller could claim to be anyone she chooses. The directory service will force the caller to take on a temporary “assigned” identity (for the duration of the call) so the called party will know this is an unverified caller. Since IP addresses are not necessarily fixed, one cannot rely on them to identify parties.
(2) Interoperability
Nearly all IP phone software packages on the market today use different voice encoding and protocols to exchange the voice information. To facilitate useful connections the directory will store the type and version (and possibly options) of Internet phone software being used. To make this work effectively software vendors will report this information automatically to the directory service. This information will be used to determine interoperability when a call is placed. If the parties cannot interoperate, an appropriate message must be sent to the caller. As an alternative, or in addition to registration of software type, a negotiation protocol could be devised to determine interoperability on the fly, but all packages would have to “speak” it.
There is a question of whether translations between IP phone encoding can be performed with acceptable quality to the end user. Such a service could have a duration and or volume fee associated with it, which might limit the desirability of its use. Also, after a shake out period we expect only a few different schemes to exist and they will have interoperability, perhaps through an industry agreed lowest common denominator compression and signaling protocol. So far, all the IP phone software vendors we have contacted are in favor of an Esperanto that will permit interoperability. If this comes to pass the life span of the translation services will be short, probably making them not economically attractive.
We can help the major software vendors seek consensus on a “common” compression scheme and signaling protocol that will provide the needed interoperability. Once the major vendors support this method the others will follow. This is already happening, with the recent announcements from Intel, Microsoft, Netscape, and VocalTec that they will all support the H.323 standard in coming months. This can be automatically detected at call setup time. The directory service would keep track of which versions of which software can interoperate. To facilitate this functionality the automatic notification of presence should include the current software version. This way upgrades can be dynamically noted in the directory service. Some scheme must also be defined to allow registration information to be passed between software packages so if a user switches packages she is able to move the registration information to the new application. There is no reason to object if the user has two applications each with the same registration information. The directory service will know what the user is currently running as part of the automatic presence notification. This will cause a problem only if the user can run more than one IP phone package at the same time. If the market requires this ability the directory service could be adapted to deal with it. The problem could also be overcome through the use of negotiation methods between interacting IP phone software packages.
(3) Call Progress Signaling
If the user is reachable through the directory system, but is currently engaged in a voice connection, then a call waiting message (with caller ID, something which is not available in the PSTN call waiting service) is sent to the called party and a corresponding message is sent back to the caller.
If the user is reachable through the directory system, but is currently not running his voice software (IP address responds, but not the application—see below for verification that this is the party in question) then an appropriate message is returned to the caller. (As an option an email could be sent to the called party to alert him to the call attempt. An additional option would be to allow the caller to enter a voice message and attach the “voice mail” to the email. The service could also signal the caller to indicate: busy, unreachable, active but ignored call waiting, etc. Other notification methods to the called party can also be offered, such as FAX or paging. In each case, the notification can include the caller's identity, when known.) Once the directory system is distributed it will be necessary to query the other copies if contact cannot be made based on local information. This system provides the ability to have various forms of notification, and to control the parameters of those forms.
(4) Party Identification
A critical question is how will the directory service know that a called party is no longer where she was last reported (i.e., has “gone away”). The dialed in party might drop off the network in a variety of ways (dialed line dropped, PC hung, Terminal Server crashed) without the ability to explicitly inform the directory service of his change in status. Worse yet, the user might have left the network and another user with a voice application might be assigned the same IP address. (This is OK if the new caller is a registered user with automatic presence notification; the directory service could then detect the duplicate IP address. There may still be some timing problems between distributed parts of the directory service.) Therefore, some scheme must exist for the directory service to determine that the customer is still at the last announced location.
One approach to this is to implement a shared secret with the application, created at registration time. Whenever the directory system is contacted by the software (such as automatic presence notification or call initialization) or attempts to contact the called party at the last known location, it can send a challenge (like CHAP) to the application and verify the response. Such a scheme eliminates the need for announcing “I am no longer here”, or wasteful keep alive messages. A customer can disconnect or turn off his IP phone application at any time without concern for notification to the directory system. If multiple IP phone applications are supported, by the directory service, each may do the challenge differently.
(5) Other Services
Encrypted internet telephone conversations will require a consensus from the software vendors to minimize the number of encryption setup mechanisms. This will be another interoperability resolution function for the directory service. The directory service can provide support for public key applications and can provide public key certificates issued by suitable certificate authorities.
The user can also specify on the directory service, that his PC be called (dial out) if she is not currently on-line. Charges for the dial out can be billed to the called party, just as would happen for call forwarding in POTS. The call detail record (CDR) for the dial out needs to be associated with the call detail of an entity in the IP Phone system (the called party). Note that this is different than the PC to PSTN case in that no translation of IP encoded voice to PCM is required, indeed the dial out will use TCP/IP over PPP. If the dial out fails an appropriate message is sent back.
The dial out could be domestic or international. It is unlikely that the international case will exist in practice due to the cost. However, there is nothing to preclude that case and it requires no additional functionality to perform.
b) PC to PSTN
The PSTN to Internet gateway must support translating PCM to multiple encoding schemes to interact with software from various vendors. Alternatively the common compression scheme could be used once it is implemented. Where possible, the best scheme, from a quality stand point, should be used. In many cases it will be the software vendor's proprietary version. To accomplish that, telcos will need to license the technology from selected vendors. Some vendors will do the work needed to make their scheme work on telco platforms.
(1) Domestic PSTN Destination
The PC caller needs to be registered to place calls to the PSTN. The only exception to this would be if collect calls from the Internet are to be allowed. This will add complications with respect to billing. To call a PSTN destination the PC caller specifies a domestic E.164 address. The directory system maps that address to an Internet dial out unit based on the NPA-NXX. The expectation is that the dial out unit will be close to the destination and therefore will be a local call. One problem is how to handle the case where there is no “local” dial out unit. Another problem is what to do if the “local” out dial unit is full or otherwise not available.
Three approaches are possible. One approach is to offer the dial out service only when local calls are possible. A second approach is to send a message back to the caller to inform him that a long distance call must be placed on his behalf and request permission to incur these charges. A third approach is to place the call regardless and with no notification. Each of these cases requires a way to correlate the cost of the dial out call (PSTN CDR) with the billing record of the call originator (via the directory service).
The third approach will probably add to the customer support load and result in unhappy customers. The first approach is simple but restrictive. Most users are expected to be very cost conscious, and so might be satisfied with approach one. Approach two affords flexibility for the times the customer wants to proceed anyway, but it adds complexity to the operation. A possible compromise is to use approach one, which will reject the call for the reason that no local out dial is available. We could also add an attribute in the call request that means “I don't care if this ends up as a long distance call.” In this case the caller who was rejected, but wants to place the call anyway makes a second call attempt with this attribute set. For customers with money to spare, all PSTN calls could be made with that attribute set.
Placing domestic PSTN calls supports the international calling requirement for Internet originated calls from Internet locations outside the US.
(2) International PSTN Destinations
Calls to an international PSTN station can be done in one of two ways. First, an international call could be placed from a domestic dial out station. This is not an attractive service since it saves no money over the customer making an international telephone call himself. Second, the Internet can be used to carry the call to the destination country and a “local” dial out can be made there. This situation is problematic for it must be agreed to by the carrier at the international destination. This case may be viable in one of two ways. Both ways require a partner at the international destination. One option would be to use a local carrier in the destination country as the partner. A second option would be to use an Internet service provider, or some other service provider connected to the Internet in the destination country.
c) PSTN to PC
This case appears to be of least interest, although it has some application and is presented here for completeness.
As noted in the PC to PSTN case the PSTN to Internet gateway will need to support translating PCM to multiple encoding schemes to interwork with software from various vendors. The directory service is required to identify the called PC. Automatic notification of presence is important to keep the called party reachable. The PSTN caller need not be registered with the directory service, for caller billing will be based on PSTN information. The caller has an E.164 address that is “constant” and can be used to return calls as well as to do billing. Presumably we can deliver the calling number to the called party as an indication of who is calling. The calling number will not always be available, for technological or privacy reasons. It must be possible to signal the PC software that this is a PSTN call and provide the E.164 number or indicate that it is unavailable.
The service can be based on charging the calling phone. This can be done as if the Internet were the long distance portion of the call. This is possible with a second dial tone. If an 800 or local dial service is used it is necessary for the caller to enter billing information. Alternatively a 900 service will allow PSTN caller-based billing. In either case the caller will need to specify the destination “phone number” after the billing information or after dialing the 900 number.
A major open issue is how the caller will specify the destination at the second dial tone. Only touch tones are available at best. To simplify entry we could assign an E.164 address to each directory entry. To avoid confusion with real phone numbers (the PSTN to PSTN case) the numbers need to be under directory control. Perhaps 700 numbers could be used, if there are enough available. Alternatively a special area code could be used. Spelling using the touch tone PAD is a less “user friendly” approach.
3. Phone Numbers in the Internet
The best approach is to have an area code assigned. Not only will this keep future options open, but it allows for simpler dialing from day one. Given a legitimate area code the PSTN caller can directly dial the E.164 address of the PC on the Internet. The telephone system will route the call to an MCI POP where it will be further routed to a PSTN-to-Internet voice gateway. The called number will be used to place the call to the PC, assuming it is on-line and reachable. This allows the PSTN caller to dial the Internet as if it were part of the PSTN. No second dial tone is required and no billing information needs to be entered. The call will be billed to the calling PSTN station, and charges will accrue only if the destination PC answers. Other carriers would be assigned unique area codes and directories should be kept compatible.
For domestically originated calls, all of the billing information needed to bill the caller is available and the intelligent network service functionality for third party or other billing methods is available via the second dial tone.
4. Other Internet Telephony Carriers
All this will get more complicated when number portability becomes required. It may be desirable to assign a country code to the Internet. Although this would make domestic dialing more complex (it appears that dialing anything other than 1 plus a ten digit number significantly reduces the use of the service) it may have some desirable benefits. In any event the assignment of an area code (or several) and the assignment of a country code are not mutually exclusive. The use of a country code would make dialing more geographically uniform.
5. International Access
It is unlikely that an international call will be made to the US to enter the Internet in the US. If it happens, however, the system will have enough information to do the caller-based billing for this case without any additional functionality.
Another possibility is that we will (possibly in partnership) set up to handle incoming calls outside the US and enter the Internet in that country to return to the US, or go anywhere else on the Internet. If the partner is a local carrier, then the partner will have the information needed for billing the PSTN caller.
a) Collect Calls
PSTN to PC collect calls require several steps. First, the call to the PSTN to Internet gateway must be collect. The collect call could then be signaled in the same way as PC to PC calls. It will be necessary to indicate that the caller is PSTN based and include the calling E.164 address if it is available.
b) PSTN to PSTN
The choice of voice compression and protocol scheme for passing voice between PSTN to Internet gateways is entirely under the carrier's control. Various service levels could be offered by varying the compression levels offered. Different charges could be associated with each level. The caller would select a quality level; perhaps by dialing different 800 number services first.
(1) Domestic Destination
Neither the calling nor the called parties need be registered with the directory service to place calls across the Internet. The caller dials a PSTN-to-Internet gateway and receives a second dial tone and specifies, using touch tones, the billing information and the destination domestic E.164 address. 900 service could be used as well. The directory service (this could be separate system, but the directory service already has mapping functionality to handle the PC to PSTN dial out case) will be used to map the call to an out dialer to place a local call, if possible. Billing is to the caller and the call detail of the out dial call needs to be associated with the call detail of the inbound caller.
An immediate question is how to deal with the case where the nearest dial out unit to the number called results in a long distance or toll call, as discussed in PC to PSTN case. The situation here is different to the extent that notification must be by voice, and authorization to do a long distance, or toll call dial out must be made by touch tones. In the event of a long distance dial out the Internet could be skipped altogether and the call could go entirely over the PSTN. It is not clear that there is any cost savings by using the Internet in this case.
(2) One Step Dialing
The problem is that the destination PSTN number needs to be entered and, somehow, it needs to be indicated that the destination is to be reached via the Internet rather than the conventional long distance network.
This selection criteria can be conveyed according to the following alternatives:
1. Assign a new 10XXX number that is the carrier's Internet.
2. By subscription.
The first method allows the caller to select the Internet as the long distance carrier on a call by call basis. The second method makes the Internet the default long distance network. In the second case a customer can return to the carrier's conventional long distance network by dialing the carrier's 10XXX code.
The first method has the draw back that the caller must dial an extra five digits. Although many will do this to save money, requiring any extra dialing will reduce the total number of users of the service. The second method avoids the need to dial extra digits, but requires a commitment by the subscriber to predominately use the Internet as his long distance network. The choice is a lower price with a lower quality of service.
In the PSTN to PSTN case it is possible to consider offering several grades of service at varying prices. These grades will be based on a combination of the encoding scheme and the amount of compression (bandwidth) applied, and will offer lower cost for lower bandwidth utilization.
To signal the grade of service desired three 10XXX codes could be used. By subscription a particular grade would be the default and other service grades would be selected by a 10XXX code.
(3) Service Quality
The service quality will be measured by two major factors. First, sound quality, the ability to recognize the caller's voice, and second by the delays that are not present in the PSTN.
On the first point we can say that most of the offerings available today provide an acceptable level of caller recognition. Delay, however, is another story. PC to PC users experience delays of a half second to two seconds. As noted in the introduction much of the delay can be attributed to the sound cards and the low speed dial access. In the case of PSTN to PSTN service both these factors are removed.
The use of DSPs in the PSTN to Internet voice gateway will keep compression and protocol processing times very low. The access to the gateway will be at a full 64 kbps on the PSTN side and likely Ethernet on the Internet side. Gateways will typically be located close to the backbone so the router on the Ethernet will likely be connected to the backbone by a T3 line. This combination should provide a level of service with very low delays. Some buffering will be needed to mask the variable delays in the backbone, but that can likely be kept to under a quarter of a second in the domestic carrier backbone.
The main differentiation of quality of service will be voice recognition which will be related to bandwidth usage. If needed, the proposed IETF Resource reSerVation setup Protocol (RSVP) can be used to assure lower delay variation, but the need for the added complexity of RSVP is yet to be established. Also, questions remain regarding the scalability of RSVP for large-scale internet telephony.
(4) Costs
An open question is whether using the Internet for long distance voice in place of the switched telephone network is actually cheaper. Certainly it is priced that way today, but do current prices reflect real costs? Routers are certainly cheaper than telephone switches, and the 10 kbps (or so) that the IP voice software uses (essentially half duplex) is certainly less than the dedicated 128 kbps of a full duplex 64 kbps DS0. Despite these comparisons the question remains.
Although routers are much cheaper than telephone switches, they have much less capacity. Building large networks with small building blocks gets not only expensive, but quickly reaches points of diminishing returns. We already have seen the Internet backbone get overloaded with the current crop of high end routers, and they are yet to experience the significant traffic increase that a successful Internet Telephony offering would bring. We are saying two things here.
1. It is unlikely that the current Internet backbone can support a major traffic increase associated with a successful internet telephony service. We need to wait for the technology of routers to improve.
2. The second issue raised above was that of bandwidth usage. Indeed 10 kbps half duplex (a little more when both parties occasionally speak at the same time, but much less during periods of silence) is considerably less than 64 kbps full duplex dedicated capacity. Two points should be noted on this argument.
First, bandwidth is cheap, at least, when there is spare fiber in the ground. Once the last strand is used the next bit per second is very expensive. Second, on transoceanic routes, where bandwidth is much more expensive, we are already doing bandwidth compression of voice to 9.6 kbps. This is essentially equivalent to the 10 kbps of Internet Telephony.
Why is IP capacity priced so much cheaper than POTS? The answer is that the pricing difference is partly related to the subsidized history of the Internet. There is a process in motion today, by the Internet backbone providers, to address some of the cost issues of the Internet. The essence of the process is the recognition that the Internet requires a usage charge. Such charges already apply to some dial up users, but typically do not apply to users with dedicated connections.
If PC to PC Internet Telephony becomes popular, users will tend to keep their PCs connected for long periods. This will make them available to receive calls. It will also drive up hold times on dial in ports. This will have a significant effect on the capital and recurring costs of the Internet.
(5) Charges
A directory service must provide the functions described above and collect enough information to bill for the service. A charge can be made for directory service as well as for registration (a one time fee plus a monthly fee), call setup, but probably not for duration. Duration is already charged for the Internet dial in user and is somewhat bundled for the LAN-attached user. Usage charges for Internet service may be coming soon (as discussed above). Duration charges are possible for the incoming and outgoing PSTN segments.
Incoming PSTN calls may be charged as the long distance segment by using a special area code. Other direct billing options are 900 calls and calling card (or credit card) billing options (both require a second dial tone).
Requiring all callers (except incoming PSTN calls) to be registered with the directory service will eliminate the immediate need for most collect calling. This will probably not be a great impediment since most users of the IP Phone service will want to receive as well as originate calls, and registration is required for receiving calls. Callers could have unlisted entries which would be entries with an E.164 address, but no name. People given this E.164 address could call the party (from the PSTN or from a PC), as is the case in the present phone system.
Different compression levels can be used to provide different quality of voice reproduction and at the same time use more or less Internet transit resources. For PC to PC connections the software packages at both ends can negotiate the amount of bandwidth to be used. This negotiation might be facilitated through the directory service.
(6) Technical Issues
It will be necessary to coordinate with IP Phone vendors to implement the registration, automatic presence notification, and verification capabilities. We will also need to add the ability to communicate service requests. These will include authorization for collect calls specifying attributes such as “place a dial out call to the PSTN even if it is long distance” and others to be determined.
Registration with a directory is a required feature that will be illuminated below. Using the DNS model for the distributed directory service will likely facilitate this future requirement. Assignment of a pseudo E.164 number to directory entries will work best if a real area code is used. If each carrier has an area code it will make interworking between the directory systems much easier. An obvious complication will arise when number portability becomes required.
IP Telephony, in accordance with a preferred embodiment, is here and will stay for at least the near future. A combination of a carrier level service, based on this technology, and a growth in the capacity of routers may lead to the Internet carrying a very significant percentage of future long distance traffic.
The availability of higher speed Internet access from homes, such as cable modems, will make good quality consumer IP Telephony service more easily attained. The addition of video will further advance the desirability of the service.
More mundane, but of interest, is FAX services across the Internet. This is very similar to the voice service discussed above. Timing issues related to FAX protocols make this a more difficult offering in some ways.
Conferencing using digital bridges in the Internet make voice and video services even more attractive. This can be done by taking advantage of the multi-casting technology developed in the Internet world. With multi-casting the cost of providing such services will be reduced.
C. Internet Telephony Services
The Switch 221 responds to the offhook by initiating a DAL Hotline procedure request to the Network Control System (NCS) which is also referred to as a Data Access Point (DAP) 240. The switch 221 is simplified to show it operating on a single DS I line, but it will be understood that switching among many lines actually occurs so that calls on thousands of individual subscriber lines can be routed through the switch on their way to ultimate destinations. The DAP 240 returns a routing response to the originating switch 221 which instructs the originating switch 221 to route the call to the destination switch 230 or 231. The routing of the call is performed by the DAP 240 translating the transaction information into a specific SWitch ID (SWID) and a specific Terminating Trunk Group (TTG) that corresponds to the route out of the MCI network necessary to arrive at the appropriate destination, in this case either switch 230 or 231. An alternative embodiment of the hybrid network access incorporates the internet access facility into a switch 232. This integrated solution allows the switch 232 to attach directly to the internet 295 which reduces the number of network ports necessary to connect the network to the internet 295. The DAP sends this response information to the originating switch 221 which routes the original call to the correct Terminating Switch 230 or 231. The terminating switch 230 or 231 then finds the correct Terminating Trunk Group (TTG) as indicated in the original DAP response and routes the call to the ISN 250 or directly to the modem pool 270 based on the routing information from the DAP 240. If the call were destined for the Intelligent Services Network (ISN) 250, the DAP 240 would instruct the switch to terminate at switch 230.
Based upon analysis of the dialed digits, the ISN routes the call to an Audio Response Unit (ARU) 252. The ARU 252 differentiates voice, fax, and modem calls. If the call is a from a modem, then the call is routed to a modem pool 271 for interfacing to an authentication server 291 to authenticate the user. If the call is authenticated, then the call is forwarded through the UDP/IP or TCP/IP LAN 281 or other media communication network to the Basic Internet Protocol Platform (BIPP) 295 for further processing and ultimate delivery to a computer or other media capable device.
If the call is voice, then the ARU prompts the caller for a card number and a terminating number. The card number is validated using a card validation database. Assuming the card number is valid, then if the terminating number is in the US (domestic), then the call would be routed over the current MCI voice lines as it is today. If the terminating number is international, then the call is routed to a CODEC 260 that converts the voice to TCP/IP or UDP/IP and sends it via the LAN 280 to the internet 295. The call is routed through a gateway at the terminating end and ultimately to a phone or other telephony capable device.
To accommodate the rapidly diversifying telephony/media environment, a preferred embodiment utilizes a separate switch connection for the other internal network 237. A Spectrum Peripheral Module (SPM) 247 is utilized to handle telephony/media signals received from a pooled switch matrix 248, 249, 251, 254, 261-268. The pooled switch matrix is managed by the SPM 247 through switch commands through control lines. The SPM 247 is in communication with the service provider's call processing system which determines which of the lines require which type of hybrid switch processing. For example, fax transmissions generate a tone which identifies the transmission as digital data rather than digitized voice. Upon detecting a digital data transmission, the call processing system directs the call circuitry to allow the particular input line to connect through the pooled switch matrix to a corresponding line with the appropriate processing characteristics. Thus, for example, an internet connection would be connected to a TCP/IP Modem line 268 to assure proper processing of the signal before it was passed on through the internal network 237 through the message bus 234 to the originating switch 221 of
Besides facilitating direct connection of a switch to the internet, the pooled switch matrix also increases the flexibility of the switch for accommodating current communication protocols and future communication protocols. Echo cancellation means 261 is efficiently architected into the switch in a manner which permits echo cancellation on an as-needed basis. A relatively small number of echo cancellers can effectively service a relatively large number of individual transmission lines. The pooled switch matrix can be configured to dynamically route either access-side transmissions or network-side transmissions to OC3 demux, DSP processing or other specialized processing emanating from either direction of the switch.
Moreover, a preferred embodiment as shown in
When the switch 221 of
The hybrid internet telephony switch 221 grows out of the marriage of router architectures with circuit switching architectures. A call arriving on the PSTN interface 257 is initiated using ISDN User Part (ISUP) signaling, with an Initial Address Message (IAM), containing a called party number and optional calling party number. The PSTN interface 257 transfers the IAM to the host processor 270. The host processor 270 examines the PSTN network interface of origin, the called party number and other IAM parameters, and selects an outgoing network interface for the call. The selection of the outgoing network interface is made on the basis of routing tables. The switch 221 may also query an external Service Control Point (SCP) 276 on the internet to request routing instructions. Routing instructions, whether derived locally on the switch 221 or derived from the SCP 276, may be defined in terms of a subnet to use to reach a particular destination.
Like a router, each of the network interfaces in the switch 221 is labeled with a subnet address. Internet Protocol (IP) addresses contain the subnet address on which the computer is located. PSTN addresses do not contain IP subnet addresses, so subnets are mapped to PSTN area codes and exchanges. The switch 221 selects routes to IP addresses and PSTN addresses by selecting an interface to a subnet which will take the packets closer to the destination subnet or local switch.
The call can egress the switch via another PSTN interface 258, or can egress the switch via a high-speed internet network interface 273. If the call egresses the switch via the PSTN interface 258, the call can egress as a standard PCM Audio call, or can egress the switch as a modem call carrying compressed digital audio.
In the case where the call egresses the switch 221 as a standard PCM audio call, the PCM audio is switched from PSTN Interface 257 to PSTN Interface 258 using the TDM bus 260. Similarly, PCM audio is switched from PSTN Interface 258 to PSTN Interface 257 using the TDM bus 260.
In the case where the call egresses the switch 221 as a modem call carrying compressed digital audio, the switch 221 can initiate an outbound call to a PSTN number through a PSTN interface 258, and attach across the TDM Bus 260 a DSP resource 259 acting as a modem. Once a modem session is established with the destination, the incoming PCM audio on PSTN interface 257 can be attached to a DSP Resource 263 acting as an audio codec to compress the audio. Example audio formats include ITU G.729 and G.723. The compressed audio is packetized into Point to Point Protocol (PPP) packets on the DSP 263, and transferred to DSP 259 for modem delivery over the PSTN Interface 258.
In the case where the call egresses the switch 221 on a high speed internet interface 272, the switch 221 attaches the PSTN Interface 257 to the DSP resource 263 acting as an audio codec to compress the PCM audio, and packetize the audio into UDP/IP packets for transmission over the Internet network. The UDP/IP packets are transferred from the DSP resource 263 over the high-speed data bus 275 to the high-speed internet network interface 272.
Normal IP packets to be sent to other internet devices are handed by the packet classifier 293 to the packet scheduler 298, which selects the outgoing network interface for the packet based on the routing tables. The packets are placed upon an outbound packet queue for the selected outgoing network interface, and the packets are transferred to the high speed network interface 296 for delivery across the internet 295.
D. Call Processing
This section describes how calls are processed in the context of the networks described above.
1. VNET Call Processing
This set of scenarios allows a subscriber to use either a PC, telephone or both to make or receive VNET calls. In this service, the subscriber may have the following equipment:
The following scenarios apply to this type of service.
1. A PC to PC call where the Directory service is queried for the location of the terminating PC:
Same variations as the PC to phone.
2. A Phone to Phone call where the DAP or PBX must query the Directory Service to determine whether the call should be terminated to the subscriber's phone or PC.
For each of these variations, the DAP and Directory Service may be a single entity or they may be separate entities. Also, the directory service may be a private service or it may be a shared service. Each of the scenarios will be discussed below with reference to a call flow description in accordance with a preferred embodiment. A description of the block elements associated with each of the call flow diagrams is presented below to assist in understanding the embodiments.
E. Re-Usable Call Flow Blocks
1. VNET PC connects to a corporate intranet and logs in to a directory service
The call flow segment shown earlier in this section showed a PC on-line registration where the PC simply sends a password to the directory service to log-on. A variation for this log-on procedure would be the following call flow segment where the directory service presents a challenge and the PC user must respond to the challenge to complete the log-in sequence. This variation on the log-in sequence is not shown in any of the call flows contained within this document, but it could be used in any of them.
2. VNET PC Queries a Directory Service for a VNET Translation
If the VNET number translates to a phone which is reachable through a private ITG connected to the customer's PBX, the directory service will return the following.
3. PC Connects to an ITG
4. ITG Connects to a PC
5. VNET PC to PC Call Flow Description
The user for PC121051 connects the computer to an Internet Protocol (IP) network 1071, turns on the computer and starts an IP telephony software protocol system. The system software transmits a message to a directory service 1031 to register the computer as “on-line” and available to receive calls. This message contains IP address identifying the connection that is being used to connect this computer to the network. This address may be used by other IP telephony software packages to establish a connection to this computer. The address comprises an identification of the computer or virtual private network number that may be used to address this computer 1051. In this VNET scenario, the address is a VNET number assigned to the individual using this PC. VNET refers to a virtual network in which a particular set of telephone numbers is supported as a private network of numbers that can exchange calls. Many corporations currently buy communication time on a trunk that is utilized as a private communication channel for placing and receiving inter-company calls. The address may also be some identification such as name, employee id, or any other unique ID.
The message may contain additional information regarding the specifics of the system software or the hardware configuration of PC111051 utilized for IP telephony. As an example, it is important for a calling PC to know what type of compression algorithms are supported and active in the current communication, or other capabilities of the software or hardware that might affect the ability of other users to connect or use special feature during a connection.
6. Determining Best Choice for Internet Client Selection of an Internet Telephony Gateway Server on the Internet:
If the client 1080 needs to place a telephone call to a regular PSTN phone, and PSTN network usage is determined to be less expensive or higher quality than Internet network usage, it is the preferred choice to select a gateway that allows the client to access the PSTN network from a point “closest” to the point of internet access. This is often referred to as Head-End Hop-Off (HEHO), where the client hops off the internet at the “head end” or “near end” of the internet.
If the client 1080 needs to place a telephone call to a regular PSTN phone, and the PSTN network is determined to be more expensive than Internet network usage, it is the preferred choice to select a gateway that allows the client to access the PSTN from the Internet at a point closest to the destination telephone. This is often referred to as Tail-End Hop-Off (TEHO), where the client hops off the internet at the “tail end” or “far end” of the internet.
a) Head-End Hop-Off Methods
(1) Client Ping Method
This method selects the best choice for a head-end hop-off internet telephony gateway by obtaining a list of candidate internet telephony gateway addresses, and pinging each to determine the best choice in terms of latency and number of router hops. The process is as follows:
Using the Client Ping Method with the Sample Network Topology above, the Client Computer 1080 queries the Directory Service 1082 for a list of Internet Telephony Gateways to ping. The Directory Service 1082 returns the list:
The Client Computer 1080 issues the following three commands simultaneously:
The results of the ping commands are as follows:
Pinging 166.37.61.117 with 32 bytes of data:
Reply from 166.37.61.117: bytes=32 time=3 ms TTL=30
Since the route taken to 166.37.27.205 went through no routers (route and ping addresses are the same), this address is ranked first. The remaining Internet Telephony Gateway Addresses are ranked by order of averaged latency. The resulting preferential ranking of Internet Telephony Gateway addresses is
The first choice gateway is the gateway most likely to give high quality of service, since it is located on the same local area network. This gateway will be the first the client will attempt to use.
(2) Access Device Location Method
The method for identifying the most appropriate choice for an Internet Telephony Gateway utilizes a combination of the Client Ping Method detailed above, and the knowledge of the location from which the Client Computer 1080 accessed the Internet. This method may work well for clients accessing the Internet via a dial-up access device.
A client computer 1080 dials the Internet Access Device. The Access Device answers the call and plays modem tone. Then, the client computer and the access device establishes a PPP session. The user on the Client Computer is authenticated (username/password prompt, validated by an authentication server). Once the user passes authentication, the Access Device can automatically update the User Profile in the Directory Service for the user who was authenticated, depositing the following information
Later, when the Client Computer requires access through an Internet Telephony Gateway, it queries the Directory Service 1082 to determine the best choice of Internet Telephony Gateway. If an Access Device Site Code is found in the User's Profile on the Directory Service, the Directory Service 1082 selects the Internet Telephony Gateway 1084, 1081 and 1086 at the same site code, and returns the IP address to the Client Computer 1080. If an Internet Telephony Gateway 1084, 1081 and 1086 is unavailable at the same site as the Access Device Site Code, then the next best choice is selected according to a network topology map kept on the directory server.
If no Access Device Site Code is found on the directory server 1082, then the client 1080 has accessed the network through a device which cannot update the directory server 1082. If this is the case, the Client Ping Method described above is used to locate the best alternative internet telephony gateway 1084.
(3) User Profile Method
Another method for selection of an Internet Telephony Gateway 1084, 1081 and 1086 is to embed the information needed to select a gateway in the user profile as stored on a directory server. To use this method, the user must execute an internet telephony software package on the client computer. The first time the package is executed, registration information is gathered from the user, including name, email address, IP Address (for fixed location computers), site code, account code, usual internet access point, and other relevant information. Once this information is entered by the user, the software package deposits the information on a directory server, within the user's profile.
Whenever the Internet Telephony software package is started by the user, the IP address of the user is automatically updated at the directory service. This is known as automated presence notification. Later, when the user needs an Internet Telephony Gateway service, the user queries the directory service for an Internet Telephony Gateway to use. The directory service knows the IP address of the user and the user's usual site and access point into the network. The directory service can use this information, plus the network map of all Internet Telephony Gateways 1084, 1081 and 1086, to select the best Internet Telephony Gateway for the client computer to use.
(4) Gateway Ping Method
The last method selects the best choice for a head-end hop-off internet telephony gateway by obtaining a list of candidate internet telephony gateway addresses, and pinging each to determine the best choice in terms of latency and number of router hops. The process is as follows:
The Client Ping Method and Gateway Ping Method may use the traceroute program as an alternative to the ping program in determining best choice for a head-end hop-off gateway.
b) Tail-End Hop-Off Methods
Tail-End Hop-Off entails selecting a gateway as an egress point from the internet where the egress point is closest to the terminating PSTN location as possible. This is usually desired to avoid higher PSTN calling rates. The internet can be used to bring the packetized voice to the local calling area of the destination telephone number, where lower local rates can be paid to carry the call on the PSTN.
(1) Gateway Registration
One method for Tail-End Hop-Off service is to have Internet Telephony Gateways 1084, 1081 and 1086 register with a directory service. Each Internet Telephony Gateway will have a profile in the directory service which lists the calling areas it serves. These can be listed in terms of Country Code, Area Code, Exchange, City Code, Line Code, Wireless Cell, LATA, or any other method which can be used to subset a numbering plan. The gateway, upon startup, sends a TCP/IP registration message to the Directory Service 1082 to list the areas it serves.
When a Client Computer wishes to use a TEHO service, it queries the directory service for an Internet Telephony Gateway 1084 serving the desired destination phone number. The directory service 1082 looks for a qualifying Internet Telephony Gateway, and if it finds one, returns the IP address of the gateway to use. Load-balancing algorithms can be used to balance traffic across multiple Internet Telephony Gateways 1084, 1081 and 1086 serving the same destination phone number.
If no Internet Telephony Gateways 1084, 1081 and 1086 specifically serve the calling area of the given destination telephone number, the directory service 1082 returns an error TCP/IP message to the Client Computer 1080. The Client 1080 then has the option of querying the Directory Service for any Internet Telephony Gateway, not just gateways serving a particular destination telephone number.
As a refinement of this Gateway Registration scheme, Gateways can register calling rates provided for all calling areas. For example, if no gateway is available in Seattle, it may be less expensive to call Seattle from the gateway in Los Angeles, than to call Seattle from the gateway in Portland. The rates registered in the directory service can enable the directory service the lowest cost gateway to use for any particular call.
7. Vnet Call Processing
At 1103, a user of PC111052 connects a computer to an IP network, turns on the computer and starts telephony system software. The registration process for this computer follows the same procedures as those for PC121051. In this scenario it is assumed that the directory service receiving this message is either physically or logically the same directory service that received the message from PC121051.
At 1104, when the directory service 1031 receives a message from PC111052, it initiates a similar procedure as it followed for a message for PC121051. However, in this case it will update the profile associated with the identifier it received from PC111052, and it will use the IP address it received from PC111052. Because of the updated profile information, when the acknowledgment message is sent out from the directory service, it is sent to the IP address associated with PC111052. At this point both computers (PC121051 and PC111052) are “on-line” and available to receive calls.
At 1105, PC121051 uses its telephony system software to connect to computer PC111052. To establish this connection, the user of PC121051 dials the VNET number (or other unique ID such as name, employee ID, etc). Depending upon the implementation of the customer's network, and software package, a unique network identifier may have to be placed in this dial string. As an example, in a telephony implementation of a VNET, a subscriber may be required to enter the number 8 prior to dialing the VNET number to signal a PBX that they are using the VNET network to route the call. Once the telephony software package has identified this call as a VNET type call, it will send a translation request to the directory service. At a minimum, this translation request will contain the following information:
At 1106, when the directory service receives this message, it uses the VNET number (or other ID) to determine if the user associated with the VNET number (or other ID) is “on-line” and to identify the IP address of the location where the computer may be contacted. Any additional information that is available about the computer being contacted (PC111052), such as compression algorithms or special hardware or software capabilities, may also be retrieved by the directory service 1031. The directory service 1031 then returns a message to PC121051 with status information for PC111052, such as whether the computer is “on-line,” its IP address if it is available and any other available information about capabilities of PC111052. When PC121051 receives the response, it determines whether PC111052 may be contacted. This determination will be based upon the “on-line” status of PC111052, and the additional information about capabilities of PC111052. If PC121051 receives status information indicating that PC111052 may not be contacted, the call flow stops here, otherwise it continues.
The following steps 1107 through 1111 are “normal” IP telephony call setup and tear-down steps. At 1107, PC121051 transmits a “ring” message to PC111052. This message is directed to the IP address received from the directory service 1031 in step 1106. This message can contain information identifying the user of PC121051, or it may contain information specifying the parameters associated with the requested connection.
At 1108, the message from step 1107 is received by PC111052 and the receipt of this message is acknowledged by sending a message back to PC121051 indicating that the user of PC111052 is being notified of an incoming call. This notification may be visible or audible depending upon the software package and its configurations on PC111052.
At 1109, if the user of PC111052 accepts the call, a message is sent back to PC121051 confirming “answer” for the call. If the user of PC111052 does not answer the call or chooses to reject the call, a message will be sent back to PC121051 indicative of the error condition. If the call was not answered, the call flow stops here, otherwise it continues.
At 1110, the users of PC121051 and PC111052 can communicate using their telephony software. Communication progresses until at 1111 a user of either PC may break the connection by sending a disconnect message to the other call participant. The format and contents of this message is dependent upon the telephony software packages being used by PC121051 and PC111052. In this scenario, PC111052 sends a disconnect message to PC121051, and the telephony software systems on both computers discontinue transmission of voice.
This scenario assumes that there is no integration between the internet and a customer premises Public Branch Exchange (PBX). If there were integration, it might be possible for the PC to go through the Internet (or intranet) to connect to an ITG on the customers PBX, avoiding the use of the PSTN.
When the directory service receives this message from PC121051, it will update a profile entry associated with the unique ID to indicate that the user is “on-line” and is located at the specified IP address. Then, at 1202, after successful update of the profile associated with the ID, the directory service sends a response (ACK) back to the specified IP address indicating that the message was received and processed. When the computer (PC12) receives this response message it may choose to notify the user via a visual or audible indicator.
At 1203, a VNET translation request is then sent to the directory services to determine the translation for the dial path to the out of network internet gateway phone. A response including the IP address and the DNIS is returned at 1204. The response completely resolves the phone addressing information for routing the call. Then, at 1205, an IP telephony dial utilizing the DNIS information occurs. DNIS refers to Dialed Number Information Services which is definitive information about a call for use in routing the call. At 1206 an ACK is returned from the IP telephony, and at 1207 an IP telephony answer occurs and a call path is established at 1208.
1209
a shows the VNET PC going offhook and sending a dial tone 1209b, and outpulsing digits at 1210. Then, at 1211, the routing translation of the DNIS information is used by the routing database to determine how to route the call to the destination telephone. A translation response is received at 1212 and a switch to switch outpulse occurs at 1213. Then, at 1215, a ring is transmitted to the destination phone, and a ringback to the PC occurs. The call is transmitted out of the network via the internet gateway connection and answered at 1216. Conversation ensues at 1217, until one of the parties hangs up at 1218.
a) PC to PC
b) PC to Phone
c) Phone to PC
d) Phone to Phone
A preferred embodiment utilizes a network management system for a telecommunication network for analyzing, correlating, and presenting network events. Modern telecommunications networks utilize data signaling networks, which are distinct from the call-bearing networks, to carry the signaling data that are required for call setup, processing, and clearing. These signaling networks use an industry-standard architecture and protocol, collectively referred to as Common Channel Signaling System #7, or Signaling System #7 (SS7) for short. SS7 is a significant advancement over the previous signaling method, in which call signaling data were transmitted over the same circuits as the call. SS7 provides a distinct and dedicated network of circuits for transmitting call signaling data. Utilizing SS7 decreases the call setup time (perceived by the caller as post-dial delay) and increases capacity on the call-bearing network. A detailed description of SS7 signaling is provided in Signaling System #7, Travis Russell, Mcgraw Hill (1995).
The standards for SS7 networks are established by ANSI for domestic (U.S.) networks, by ITU for international connections, and are referred to as ANSI SS7 and ITU C7, respectively. A typical SS7 network is illustrated in
Switches in telecommunications networks perform multiple functions. In addition to switching circuits for voice calls, switches must relay signaling messages to other switches as part of call control. These signaling messages are delivered through a network of computers, each of which is called a Signaling Point (SP) 102a/102b. There are three kinds of SPs in an SS7 network:
The SSPs are the switch interface to the SS7 signaling network.
Signal Transfer Points (STPs) 104a . . . 104f (collectively referred to as 104) are packet-switching communications devices used to switch and route SS7 signals. They are deployed in mated pairs, known as clusters, for redundancy and restoration. For example, in
The SS7 links that connect the various elements are identified as follows:
A links connect an SSP to each of its primary STPs (primary homing).
B links connect an STP in one cluster to an STP in another cluster.
C links connect one STP to the other STP in the same cluster.
D links connect STPs between different carrier networks (not illustrated).
E links connect an SSP to an STP that is not in its cluster (secondary homing).
F links connect two SSPs to each other.
To interface two different carriers' networks, such as a Local Exchange Carrier (LEC) network with an Interchange Carrier (IXC) network, STP clusters 104 from each carriers' network may be connected by D links or A links. SS7 provides standardized protocol for such an interface so that the signaling for a call that is being passed between an LEC and an IXC may also be transmitted.
When a switch receives and routes a customer call, the signaling for that call is received (or generated) by the attached SSP 102. While intermachine trunks that connect the switches carry the customer's call, the signaling for that call is sent to an STP 104. The STP 104 routes the signal to either the SSP 102 for the call-terminating switch, or to another STP 104 that will then route the signal to the SSP 102 for the call-terminating switch. Another element of an SS7 network are Protocol Monitoring Units (PMU) 106, shown in
As with any telecommunications network, an SS7 network is vulnerable to fiber cuts, other transmission outages, and device failures. Since an SS7 network carries all signaling required to deliver customer traffic, it is vital that any problems are detected and corrected quickly. Therefore, there is an essential need for a system that can monitor SS7 networks, analyze fault and performance information, and manage corrective actions.
Prior art SS7 network management systems, while performing these basic functions, have several shortcomings. Many require manual configuration of network topology, which is vulnerable to human error and delay topology updates. Configuration of these systems usually requires that the system be down for a period of time. Many systems available in the industry are intended for a particular vendor's PMU 106, and actually obtain topology data from their PMUs 106, thereby neglecting network elements not connected to a PMU 106 and other vendors' equipment.
Because prior art systems only operate with data received from proprietary PMUs 106, they do not provide correlation between PMU events and events generated from other types of SS7 network elements. They also provide inflexible and proprietary analysis rules for event correlation.
A system and method for providing enhanced SS7 network management functions are provided by a distributed client/server platform that can receive and process events that are generated by various SS7 network elements. Each network event is parsed and standardized to allow for the processing of events generated by any type of element. Events can also be received by network topology databases, transmission network management systems, network maintenance schedules, and system users. Referring to
The client workstations 312 may be any conventional PC running with Microsoft Windows or IBM OS/2 operating systems, a dumb terminal, or a VAX VMS workstation. In actuality, client workstations may be any PC or terminal that has an Internet Protocol (IP) address, is running with X-Windows software, and is connected to the WAN 310. No SNMS-specific software runs on the client workstations 312.
SNMS receives events from various SS7 network elements and other network management systems (NMS) 338. It also receives network topology, configuration, and maintenance data from various external systems, as will be described. The various network elements that generate events include Network Controllers 314, International and Domestic SPs 316/102, STPs 104, and PMUs 106. Network Controllers 314 are devices that switch circuits based on external commands. They utilize SS7 signaling in the same manner as an SSP 102, but are not linked to any STPs 104. International SPs 316 support switches that serve as a gateway between a domestic and international telecommunications network. The STPs 104 may be domestic or international.
The PMUs 106 scan all the SS7 packets that pass across the SS7 circuits, analyze for fault conditions, and generate network events that are then passed onto SNMS. The PMUs 106 also generate periodic statistics on the performance of the SS7 circuits that are monitored.
All SPs 102/316, STPs 104, PMU 106, and SS7 Network Controllers 314 transmit network events to SNMS via communications networks. This eliminates the need for SNMS to maintain a session with each of the devices. In one typical embodiment, as illustrated in
In this same embodiment, an X.25 Operational Systems Support (OSS) Network 328 is used to transport events from STPs 104, SPs 102, and PMUs 106. These events are received by a Local Support Element (LSE) system 330. The LSE 330, which may be a VAX/VMS system, is essentially a Packet Assembler/Disassembler (PAD) and protocol converter used to convert event data from the X.25 OSS Network 328 to the SNMS servers 302/304. It also serves the same function as SWIFT 326 in maintaining communication sessions with each network element, thus eliminating the need for SNMS to do so. The need for both SWIFT 326 and LSE 330 illustrates one embodiment of a typical telecommunications network in which different types of elements are in place requiring different transport mechanisms. SNMS supports all these types of elements.
All network events are input to the SNMS Alarming Server 302 for analysis and correlation. Some events are also input to the SNMS Reporting Server 304 to be stored for historical purposes. A Control system 332, which may be a VAX/VMS system, is used to collect topology and configuration data from each of the network elements via the X.25 OSS Network 328. Some elements, such as STPs 104 and SPs 102, may send this data directly over the X.25 OSS Network 328. Elements such as the International SSP 316, which only communicates in asynchronous mode, use a Packet Assembler/Disassembler (PAD) 318 to connect to the X.25 OSS Network 328. The Control system 332 then feeds this topology and configuration data to the SNMS Topology Server 306.
Network topology information is used by SNMS to perform alarm correlation and to provide graphical displays. Most topology information is received from Network Topology Databases 334, which are created and maintained by order entry systems and network engineering systems in the preferred embodiment. Topology data is input to the SNMS Topology Server 306 from both the Network Topology Databases 334 and the Control System 332. An ability to enter manual overrides through use of a PC 336 is also provided to the SNMS Topology Server 306.
The SNMS Alarming Server 302 also receives events, in particular DS-3 transmission alarms, from other network management systems (NMS) 338. Using topology data, SNMS will correlate these events with events received from SS7 network elements. The SNMS Alarming Server 302 also receives network maintenance schedule information from a Network Maintenance Schedule system 340. SNMS uses this information to account for planned network outages due to maintenance, thus eliminating the need to respond to maintenance-generated alarms. SNMS also uses this information to proactively warn maintenance personnel of a network outage that may impact a scheduled maintenance activity.
The SNMS Alarming Server 302 has an interface with a Trouble Management System 342. This allows SNMS users at the client workstations 312 to submit trouble tickets for SNMS-generated alarms. This interface, as opposed to using an SNMS-internal trouble management system, can be configured to utilize many different types of trouble management systems. In the preferred embodiment, the SNMS Graphics Server 308 supports all client workstations 312 at a single site, and are therefore a plurality of servers. The geographical distribution of SNMS Graphics Servers 308 eliminates the need to transmit volumes of data that support graphical presentation to each workstation site from a central location. Only data from the Alarming Server 302, Reporting Server 304, and Topology Server 306 are transmitted to workstation sites, thereby saving network transmission bandwidth and improving SNMS performance. In alternative embodiments, the Graphics Servers 308 may be centrally located.
Referring now to
The Receive Network Events component 404, which runs primarily on the Alarming Server 302, receives network events from the various SS7 network elements (STPs 104, SPs 102, PMUs 106, etc.) via systems such as SWIFT 326 and LSE 330. This component parses the events and sends them to Process Events 402 for analysis. The Receive Network Events process 404 is shown in greater detail in
The Process Topology component 406, which runs primarily on the Topology Server 306, receives network topology and configuration data from the Network Topology Databases 334, from the SS7 network elements via the Control System 332, and from Manual Overrides 336. This data is used to correlate network events and to perform impact assessments on such events. It is also used to provide graphical presentation of events. Process Topology 406 parses these topology and configuration data, stores them, and sends them to Process Events 402 for analysis. The Process Topology process 406 is shown in greater detail in
The Define Algorithms component 408, which runs primarily on the Alarming Server 302, defines the specific parsing and analysis rules to be used by SNMS. These rules are then loaded into Process Events 402 for use in parsing and analysis. The algorithms are kept in a software module, and are defined by programmed code. A programmer simply programs the pre-defined algorithm into this software module, which is then used by Process Events 402. These algorithms are procedural in nature and are based on network topology. They consist of both simple rules that are written in a proprietary language and can be changed dynamically by an SNMS user, and of more complex rules which are programmed within SNMS software code.
The Receive NMS Data component 410, which runs primarily on the Alarming Server 302, receives events from other network management systems (NMS) 338. Such events include DS-3 transmission alarms. It also receives network maintenance events from a Network Maintenance Schedule system 340. It then parses these events and sends them to Process Events 402 for analysis. The Display Alarms component 412, which runs primarily on the Graphics Server 308 and the Alarming Server 302, includes the Graphical User Interface (GUI) and associated software which supports topology and alarm presentation, using data supplied by Process Events 402. It also supports user interactions, such as alarm clears, acknowledgments, and trouble ticket submissions. It inputs these interactions to Process Events 402 for storing and required data updates. The Display Alarms process 412 is shown in greater detail in
The Report On Data component 414, which runs primarily on the Reporting Server 304, supports the topology and alarm reporting functions, using data supplied by Process Events 402. The Report On Data process 414 is shown in greater detail in
Referring now to
The first three steps 502-506 are an initialization process that is run at the start of each SNMS session. They establish a state from which the system may work. Steps 510-542 are then run as a continuous loop.
In step 502, current topology data is read from a topology data store on the Topology Server 306. This topology data store is created in the Process Topology process 406 and input to Process Events 402, as reflected in
In step 504, the algorithms which are created in the Define Algorithms component 408 are read in. These algorithms determine what actions SNMS will take on each alarm. SNMS has a map of which algorithms to invoke for which type of alarm.
In step 506, alarms records from the Fault Management (FM) reporting database, which is created in the Report on Data process 414, are read in. All previous alarms are discarded. Any alarm that is active against a node or circuit that does not exist in the topology (read in step 502) is discarded. Also, any alarm that does not map to any existing algorithm (read in step 504) is discarded. The alarms are read from the FM reporting database only within initialization. To enhance performance of the system, future alarm records are retrieved from a database internal to the Process Events 402 component. Step 506 concludes the initialization process; once current topology, algorithms, and alarms are read, SNMS may begin the continuous process of reading, analyzing, processing, and storing events.
This process begins with step 510, in which the next event in queue is received and identified. The queue is a First In/First Out (FIFO) queue that feeds the Process Events component 402 with network events, topology events, and NMS events. To reiterate, the topology data that are read in step 502 and the alarm data that are read in step 504 are initialization data read in at startup to create a system state. In step 510, ongoing events are read in continuously from process components 404, 406, and 410. These events have already been parsed, and are received as standardized SNMS events. SNMS then identifies the type of event that is being received. If the event is found to be older than a certain threshold, for example one hour, the event is discarded.
In steps 512, 520, 524, and 534 SNMS determines what to do with the event based on the event type identification made in step 510.
In step 512, if the event is determined to be topology data, SNMS updates the GUI displays to reflect the new topology in step 514. Then in step 516, SNMS performs a reconciliation with active alarms to discard any alarm not mapping to the new topology. In step 518, the new topology data is recorded in a topology data store, which is kept in the SNMS Topology Server 306.
In step 520, if the event is determined to be NMS data, such as DS-3 alarms 338, it is stored in the FM reporting database on the SNMS Reporting Server 304 for future reference by SNMS rules.
In step 524, if the event is determined to be a defined SS7 network event, then in step 526 one or more algorithms will be invoked for the event. Such algorithms may make use of data retrieved from Network Management Systems 338, Network Maintenance Schedules 340, and Network Topology 334.
For example, when each circuit level algorithm generates an alarm, it performs a check against the Network Maintenance Schedule 340 and NMS 338 records. Each alarm record is tagged if the specified circuit is within a maintenance window (Network Maintenance Schedule 340) or is transported on a DS-3 that has a transmission alarm (NMS 338). While SS7 circuits run at a DS-0 level, the Network Topology Databases 334 provide a DS-3 to DS-0 conversion table. Any DS-0 circuit within the DS-3 is tagged as potentially contained within the transmission fault. Clear records from NMS 338 will cause active SNMS circuit level alarms to be evaluated so that relevant NMS 338 associations can be removed. SNMS clear events will clear the actual SNMS alarm. GUI filters allow users to mask out alarms that fit into a maintenance window or contained within a transmission fault since these alarms do not require SNMS operator actions.
In step 523, active alarms are reconciled with new alarm generations and clears resulting from step 526. In step 530, the GUI displays are updated. In step 532, the new alarm data is stored in the FM reporting database.
In step 534, the event may be determined to be a timer. SNMS algorithms sometimes need to delay further processing of specific conditions for a defined period of time, such as for persistence and rate algorithms. A delay timer is set for this condition and processing of new SNMS events continues. When the time elapses, SNMS treats the time as an event and performs the appropriate algorithm.
For example, an SS7 link may shut down momentarily with the possibility of functioning again within a few seconds, or it may be down for a much greater period of time due to a serious outage that requires action. SNMS, when it receives this event, will assign a timer of perhaps one minute to the event. If the event clears within one minute, SNMS takes no action on it. However, if after the one minute timer has elapsed the event is unchanged (SS7 link is still down), SNMS will proceed to take action.
In step 536, the appropriate algorithm is invoked to take such action. In step 538, active alarms are reconciled with those that were generated or cleared in step 536. In step 540, the GUI displays are updated. In step 542, the new alarm data is stored in the FM reporting database. As stated previously, SNMS operates in a continuous manner with respect to receiving and processing events. After the data stores in steps 518, 522, 532, and 542, the process returns to step 510.
Referring now to
In step 610, the event is parsed according to defined parsing rules 614. The parsing rules 614 specify which fields are to be extracted from which types of events, and are programmed into the SNMS code. The parsing of events in step 610 extracts only those event data fields needed within the alarm algorithms or displays. Also input to step 610 are scheduled events 612 from the Network Maintenance Schedule 340. Scheduled events 612 are used to identify each network event collected in step 602 that may be a result of scheduled network maintenance. This allows SNMS operators to account for those SS7 network outages that are caused by planned maintenance.
In step 616, the parsed event data is used to create standardized event objects in SNMS resident memory for use by other SNMS processes. Such event objects are read into the main process, Process Events 402, in step 510.
Referring now to
In step 702, the SNMS Topology server 306 collects topology data from three different sources. It collects current connectivity and configuration data generated by the SS7 network elements via the Control system 332. It collects topology data that has been entered into order entry and engineering systems and stored in Network Topology Databases 334. It also accepts manual overrides 336 via workstation. The collection of data from the Topology Database 334 and the Control system 332 occurs on a periodic basis, and is performed independently of the SNMS Alarming server 302. Unlike prior art systems that use data retrieved from PMUs 106, SNMS receives topology data from all types of network elements, including those that are not connected to a PMU 106 such as that of
For the switched voice network supported by SS7, data is received by network order entry and engineering systems and used to perform SS7 event impact assessments:
For the SS7 linkage of a domestic STP 104g to an international STP 104h, data is received by network order entry and engineering systems:
For the purpose of performing impact assessments, Local Exchange Carrier (LEC) NPA/NXX assignments and End Office to Access Tandem homing arrangements are received by a calling area database that is populated by Bellcore's Local Exchange Routing Guide (LERG).
Foreign network STP 104 clustering and SSP 102 homing arrangements are received by SS7 network elements via a control system.
Data identifying certain aspects of each network element are received by a Switch Configuration File, which resides in an external system.
Data mapping each network DS-0 onto a DS-3 is received by Network Topology Databases. This data is used to assign DS-3 alarms received by NMS to DS-0 level circuits.
Data needed to overwrite data acquired through automated processes are provided by manual overrides.
Referring now back to
In step 706, the standardized data records are validated against other data. For example, circuit topology records are validated against node topology records to ensure that end nodes are identified and defined.
In step 708, the topology data are stored on the Topology server 306 of
In step 710, the new topology records are passed from the Topology server 306 to the main SNMS process running on the Alarming server 302 and compared against the active configuration (i.e. configuration that is currently loaded into memory). Active alarm and GUI displays are reconciled to remove alarms that pertain to non-existent topology entries.
In step 712, the topology is stored on the Alarming Server 302 (for use by Process Events 402) in the form of flat files for performance reasons. At this time the flat file mirrors the Topology server 306 database from step 708. This flat file is only accessible by the main process. In step 714, the new topology records are loaded into active SNMS memory and new processes which require topology data now use the new configuration.
Referring now to
When an operator logs on SNMS, the first four steps, 802-808, execute as an initialization. From there, steps 810-838 operate as a continuous loop. The initialization provides each operator with a system state from which to work. In step 802, the current topology is read in and displayed via Graphical User Interface (GUI). Each operator has its own GUI process that is initialized and terminated based upon an operator request. Each GUI process manages its displays independently. Any status change is handled by the individual processes.
In step 804, a filter that defines the specific operator view is read in. Each operator can define the view that his/her GUI process will display. Filter parameters include:
The operator's GUI displays are updated both upon initialization in step 804 and when filter changes are requested in steps 828 and 830. Each specific operator's instance of the Display Alarms 412 process opens a connection with Process Events 402 so that only alarm records relevant to the specific operator's filter are transmitted. In step 806, the specific operator's process registers itself with Process Events 402 to identify which alarms are to be sent. In step 808, the GUI display is presented to the operator.
The continuous execution of Display Alarms 412 begins in step 810. Each event that is to be retrieved and presented, as defined by the operator filter, is received and identified. In steps 812, 816, 820, 826, and 836 SNMS determines what to do with the event based on the event type identification made in step 810. In steps 812 and 816, if the event is determined to be an alarm update or a topology update, the operator's GUI display is updated to reflect this, in steps 814 and 818, respectively. Then the next event is received, in step 810.
In step 820, if the event is determined to be an operator action, two activities are required. First, in step 822, the operator's GUI display is updated to reflect the status change. Then, in step 824, a status change update is sent to the main process, Process Events 402, so that the status change may be reflected in SNMS records and other GUI processes (for other operators) can receive and react to the status changes.
In step 826, if the event is determined to be an operator display action, then it is determined if the action is a filter change request or a display request. In step 828, if it is determined to be a filter change request, then in step 830 the GUI process registers with Process Events 402 so that the appropriate alarms records are transmitted. In step 832, if it is determined to be an operator display request, then in step 834 the requested display is presented to the operator. Display requests may include:
In step 836, if the event is determined to be a termination request, then the specific operator's GUI process is terminated in step 838. Otherwise, the next event is received in step 810. Within the Display Alarm process, SNMS provides several unique display windows which support fault isolation, impact assessments, and trouble handling. All of the GUI displays which contain node and circuit symbols are “active” windows within SNMS (i.e. screens are dynamically updated when alarm status of the node or circuit change). All the displays are possible due to the set of MCI topology sources used within SNMS. SNMS has extensive topology processing of SNMS which is used in operator displays.
A. SNMS Circuits Map
This window displays topology and alarm status information for a selected linkset. As network events are received, SNMS recognizes the relationships between endpoints and isolates the fault by reducing generated alarms. This display allows the operator to monitor a linkset as seen from both sides of the signaling circuit (from the perspective of the nodes).
B. SNMS Connections Map
This window presents a cluster view of MCI's signaling network. All MCI and non-MCI nodes connected to the MCI STPs in the cluster are displayed along with the associated linksets. A cluster view is important since a single STP failure/isolation is not service impacting, but a cluster failure is since all MCI SPs have connectivity to both MCI STPs in the cluster.
C. SNMS Nonadjacent Node Map
This window presents a STP pair view of a selected LEC signaling network. All LEC SPs, STPs, and SCPs (with signaling relationships to the MCI network) connected LEC STP pair are displayed. MCI's area of responsibility does not include the LEC STP to LEC SSP signaling links, so no linksets are displayed here. This display allows the SNMS operator to monitor a LEC signaling network as seen by the MCI nodes.
D. SNMS LATA Connections Map
This window presents a map of all LEC owned nodes that are located within a specified LATA. As well, the MCI STP pair that serves the LATA is also displayed along with the associated linksets (where applicable). This display allows the operator to closely monitor a specific LATA if/when problems surface within the LATA. LATA problems, while outside MCI's domain of control, can introduce problems within the MCI network since signaling messages are shared between the networks. As well, MCI voice traffic which terminates in the specified LATA can be affected by LATA outages.
E. NPA-NXX Information List
This window presents a list of NPX-NXX's served by a specified LEC switch. This display is very valuable during impact assessment periods (i.e. if the specified LEC switch is isolated, which NPA-NXX's are unavailable).
F. End Office Information List
This window presents a list of LEC end office nodes which are homed to the specific LEC access tandem. This display is very valuable during impact assessment periods (i.e. if the specified LEC tandem switch is isolated, which end offices are unavailable).
G. Trunk Group Information List
This window presents a list of MCI voice trunks, connected to a specified MCI switch, and the LEC end office switches where they terminate. This display is very valuable during impact assessment periods (i.e. what end offices are impacted when a MCI switch is isolated). This display is also available for selected LEC end office switches.
H. Filter Definition Window
The SNMS operator can limited the scope of his displays to:
I. Trouble Ticket Window
The SNMS operator can open trouble tickets on signaling alarms. These trouble tickets are opened in MCI's trouble ticketing system. Operators can also display the status of existing trouble tickets.
Referring now to
Standardized Network Element (NE) Event Records 914 are received with location specific time stamps. In step 902, the time stamps are converted into Greenwich Mean Time (GMT) so that standardized reports can be produced.
In step 904, all data received are stored in individual database tables. Data may also be archived for long-term storage to tape or disk. This data includes SNMS-generated alarms 916, standardized topology records 918, and performance statistics from PMUs 920. It may also include non-processed data, such as DS-3 alarms from NMS 338 and network maintenance schedule data 340.
In step 906, reports are produced. These reports may be custom or form reports. They may also be produced on demand, or per a schedule. These reports may be presented in a number of ways, including but not limited to electronic mail 908, X-terminal displays 910, and printed reports 912.
The next logical step from voice over the POTS is video. Today, computers are capable of making video “calls” to each other when connected to some type of computer network. However, most people only have access to a computer network by making a call from their modem on the POTS with another modem on a computer connected to a network, so that they can then “call” another computer on the network, which is in turn connected by a modem to another network computer. It is much simpler (and efficient) to call another person directly on the POTS and have the modems communicate with each other, without network overhead. ITU recommendation H.324 describes terminals for low bitrate (28.8 kbps modem) multimedia communication, utilizing V.34 modems operating over the POTS. H.324 terminals may carry real-time voice, data, and video, or any combination, including video telephony. H.324 terminals may be integrated into personal computers or implemented in stand-alone devices such as videotelephones and televisions. Support for each media type (voice, data, video) is optional, but if supported, the ability to use a specified common mode of operation is required, so that all terminals supporting that media type can interwork. H.324 allows more than one channel of each type to be in use. Other Recommendations in the H.324 series include the H.223 multiplex (combination of voice, data and video), H.245 control, H.263 video codec (digital encoder and decoder), and G.723.1.1 audio codec.
H.324 makes use of the logical channel signaling procedures of ITU Recommendation H.245, in which the content of each logical channel is described when the channel is opened. Procedures are provided for allowing each caller to utilize only the multimedia capabilities of their machine. For example a person trying to make a video (and audio) call to someone who only has audio and not video capabilities can still communicate with the audio method (G.723.1.1)
H.324 by definition is a point-to-point protocol. To conference with more than one other person an MCU (Multipoint Control Unit) is needed to act as a video-call bridge. H.324 computers may interwork with H.320 computers on the ISDN, as well as with computers on wireless networks.
A. Components of Video Telephony System
1. DSP Modem Pools with ACD.
A Digital Signal Processor (DSP) modem pool is a modem bank, with each modem having the ability to be programmed for extra functions (like new V. modem protocols, DTMF detection, etc.) A call is routed from the MCI switch to an ACD. The ACD keeps a matrix of which DSP modems are available. The ACD also communicates with the ISNAP which does a group select to determine which group of Agents are responsible for this call and also which of the agents are free to process this call. In an alternative embodiment, DSP resources can be deployed without an ACD, directly connected to a switch. In this embodiment, the DSP resources are managed using an NCS-based routing step.
2. Agent
An Agent can be a human Video Operator (video capable MTOC), or an Automated program (video ARU). The ACD knows which Agent ports are available and connects an Agent to an Agent Port.
3. Video on Hold Server
If the ACD has no Agent ports available, then the caller is connected to the Video On Hold Server, which has the ability to play advertisements and other non-interactive video, until the ACD finds a free Agent port.
4. Video Mail Server
Video-mail messages are stored here. Customers can manage their mail and record greetings to be stored on this server.
5. Video Content Engine
Video On Demand content resides on the Video Content Engine. Video stored here can be previously recorded video-conferences, training videos, etc.
6. Reservation Engine
When people want to schedule a multi-party video-conference, they can specify the participants and time of the conference on this system. Configuration can be done with the help of a human Video Operator or by some other form entry method.
7. Video Bridge
Because H.324 is a point-to-point protocol, a Multi-point Conferencing Unit (MCU) needs to manage each participants call and re-direct the video streams appropriately. MCU conferencing will be available for customers with H.324 and H.320 compliant systems.
B. Scenario
A computer or set-top TV has H.324 compliant software, and a modem for use over POTS, most likely to be 28.8 kbps (V.34) or higher. One objective is to call another party. If they do not answer or are busy, the originator has the option of leaving video-mail for the destination party. Another objective is to schedule and participate in a conference with more than two participants.
C. Connection Setup
When a user dials “1 800 VID MAIL” at 1, the ACD on the DSP modem pool will connect a switch to a modem 2 and a port to an Agent 3. Then the user logs-in to the system with a special, custom terminal program that utilizes the data stream part of the H.324 bandwidth (using the ITU T.120 standard), called the V-mail Data Interface (VMDI). From a graphical user interface, icon or other menu, the caller can choose to:
In an alternate embodiment, a user can dial “1 800 324 CALL” to call a number. Then, if the destination number was 1 319 375 1772, the modem dial string would be “ATDT 1 800 324 CALL, “1 319 375 1772” (the comma ‘,’ tells the modem to do a short pause while dialing.) When the connection to 1 800 324 CALL is made, a connection is made from the originator, to an MCI switch 1, to an ARU 5a, selected by an ACD 2a, 3a.
The ARU 5a detects DTMF tones entered through a telephone keypad or other device for generating DTMF tones to get the destination number. The originator remains on hold while the ARU 5a makes a separate call to the destination number 5a, 6a and 7. If the destination answers, the originator is connected to the destination, both party's modems can connect, and the ARU 5a is released. If the destination is busy or does not answer, the call is transferred to 1 800 VID MAIL or an Agent through the DSP modem pool 2. If there are no DTMF tones detected, the call is transferred to an Agent through the DSP modem pool 2. The Agent will make an H.324 connection with the caller and ask for their destination number (or provide help.) The architecture for this alternative is similar to how faxes are detected and transmitted in the directlineMCI system as discussed with respect to an alternative embodiment.
D. Calling the Destination
When the destination number is known, the Video On Hold Server provides the video input for the H.324 connection 4. A new call is made from the Agent 5, 6 to the destination number 7. One concern that required analysis while working out a detailed embodiment required determining if modems could re-synchronize after a switch operation without going off-line. If the destination number answers and is a modem, a connection MUST be made at the same speed as the originator modem speed. After modem handshaking is performed, the ACD instructs the switch to release the agent 3, 5 and releases the modems 2 and 6 and connects the originator to the destination 1 and 7. The destination PC realizes that the connection is an H.324 call (not a fax or otherwise) and the video-call proceeds.
In an alternate embodiment, if the destination answers and is a modem, a connection is made. Then, two H.324 calls are using two DSP modems. The Agent can be released from both calls 3 and 5. The incoming data from each call is copied to the other call 2 and 6. This way, an Agent can monitor the video call for Video Store & Forward 9. When one connection drops carrier, the video-call is complete, and the modem carrier for the remaining call is dropped.
E. Recording Video-Mail, Store & Forward Video and Greetings
If a destination number does not answer or is busy, the Video Mail Server will play the appropriate Video-Mail greeting for the owner of the destination number 8. The caller then leaves a video-message, which is stored on the Video Mail Server. The recording of video for Store & Forward Video is exactly the same as leaving a video-message, described above. Parameters such as destination number, forwarding time, and any other audio S&F features currently available are entered through the VMDI or communicated with a human video operator (or automated video ARU.)
To record a personalized greeting for playback when someone cannot reach you because you are busy or do not answer, is similar to leaving Video-Mail. The option to do this is done through the VMDI or communicated with a human video operator.
F. Retrieving Video-Mail and Video On Demand
Users have the choice of periodically polling their video-mail for new messages, or have the video-mail server call them periodically when they have a new message waiting. Configuration is done through the VMDI or human video operator. Managing and checking video-mail is also performed through the VMDI or communicated with a human video operator.
Choice of video to view for Video On Demand (VOD) is through the VMDI. These videos can be previously recorded video-conferences, training videos, etc. and are stored on the Video Content Engine 9.
G. Video-Conference Scheduling
A user can navigate through the VMDI or Internet 10 WWW forms, or communicate with a human video operator to schedule a multi-point conference. This information is stored on the Reservation Engine 11. The other conference participants are notified of the schedule with a video-mail, e-mail message or otherwise. There will be an option to remind all registered conference participants at a particular time (e.g. 1 hour before the conference), through video-mail (or e-mail, voice-mail, paging service or any other available notification method). The MCU (video bridge) can call each participant 12, or H.324 users can dial In to the MCU at the scheduled time 12.
RTP is a protocol providing support for applications with real-time properties. While UDP/IP is its initial target networking environment, RTP is transport-independent so that it can be used over IPX or other protocols. RTP does not address the issue of resource reservation or quality of service control; instead, it relies on resource reservation protocols such as RSVP. The transmission service with which most network users are familiar is point-to-point, or unicast service. This is the standard form of service provided by networking protocols such as HDLC and TCP.
Somewhat less commonly used (on wire-based networks, at any rate) is broadcast service. Over a large network, broadcasts are unacceptable (because they use network bandwidth everywhere, regardless of whether individual sub-nets are interested in them or not), and so they are usually restricted to LAN-wide use (broadcast services are provided by low-level network protocols such as IP). Even on LANs, broadcasts are often undesirable because they require all machines to perform some processing in order to determine whether or not they are interested in the broadcast data.
A more practical transmission service for data that is intended for a potentially wide audience is multicast. Under the multicast model on a WAN, only hosts that are actively interested in a particular multicast service will have such data routed to them; this restricts bandwidth consumption to the link between the originator and the receiver of multicast data. On LANs, many interface cards provide a facility whereby they will automatically ignore multicast data in which the kernel has not registered an interest; this results in an absence of unnecessary processing overhead on uninterested hosts.
A. Components
RSVP Routers with MBONE capability for broadcast of video from the Video Content Engine and the MCI Conference Space network. MCI will have an MBONE network that multicasts locally and transmits many unicasts out the Internet.
RSVP is a network control protocol that will allow Internet applications to obtain special qualities-of-service (QOS's) for their data flows. This will generally (but not necessarily) require reserving resources along the data path(s) either ahead of time or dynamically. RSVP is a component of the future “integrated services” Internet, which provides both best-effort and real-time qualities of service. An embodiment is presented in the detailed specification that follows.
When an application in a host (end system) requests a specific QOS for its data stream, RSVP is used to deliver the request to each router along the path(s) of the data stream and to maintain router and host state to provide the requested service. Although RSVP was developed for setting up resource reservations, it is readily adaptable to transport other kinds of network control information along data flow paths.
1. Directory and Registry Engine
When people are connected to the Internet (whether through modem dial-up, direct connection or otherwise), they can register themselves in this directory. The directory is used to determine if a particular person is available for conferencing.
2. Agents
An Agent can be a human Video Operator (video capable MTOC), or an Automated program (video ARU). An Internet ACD in accordance with a preferred embodiment is designed so that Agent ports can be managed. The ACD will know which Agent ports are available and connects an Agent to an available Agent Port. If the ACD has no Agent ports available, then the caller is connected to the Video On Hold Server, which has the ability to play advertisements and other non-interactive video, until the ACD finds a free Agent port.
3. Video Mail Server
Video-mail messages are stored here. Customers can manage their mail and record greetings to be stored on this server.
4. Video Content Engine
Video On Demand content resides on the Video Content Engine. Video stored here may be previously recorded video-conferences, training videos, etc.
5. Conference Reservation Engine
When people want to schedule a multi-party video-conference, they can specify the participants and time of the conference on this system. Configuration can be done with the help of a human Video Operator or by some other form entry method.
6. MCI Conference Space
This is the virtual reality area that customers can be present in. Every participant is personified as an “avatar”. Each avatar has many abilities and features, such as visual identity, video, voice, etc. Avatars interact with each other by handling various objects that represent document sharing, file transferring, etc., and can speak to each other as well as see each other.
7. Virtual Reality Space Engine
The Conference Spaces are generated and managed by the Virtual Reality Engine. The virtual reality engine manages object manipulation and any other logical descriptions of the conference spaces.
B. Scenario
If a user has a current connection to the Internet. The user will utilize H.263 compliant system software utilizing RTP (as opposed to TCP) over the Internet. If the user also desires to participate in VR MCI conference-space, and create/view video-mail, the user can join a VR session.
C. Connection Setup
The simplest way to make a video call to another person on the Internet is to simply make the call without navigating through menus and options as an initial telephone call. However, if the destination is busy or not answering, MCI provides services for depositing messages.
A customer can login to a telnet server (e.g. telnet vmail.mci.com), or use a custom-made client, or the WWW (e.g. http://vmail.mci.com). The services menu is referred to as the V-Mail Data Interface (VMDI), similar to the VMDI available when dialing through POTS as described above.
From a menu, the caller can choose to:
When a user has specified a party to call by indicating the destination's name, IP address or other identification, the Directory is checked. It is possible to determine if a destination will accept a call without actually calling; so, since it can be determined that the destination will accept a call, the originator's video client can be told to connect to the destination. If the callers are using a WWW browser (e.g. Netscape Navigator, Microsoft Internet Explorer, internetMCI Navigator, etc.) to access the VMDI, then a call can be automatically initiated using Java, JavaScript or Helper App. If a call cannot be completed, there will be a choice to leave video-mail.
D. Recording Video-Mail, Store & Forward Video and Greetings
If an Agent determines that a destination party is not available (off-line, busy, no answer, etc.), the Video Mail Server plays an appropriate Video-Mail greeting for the owner of the destination number 8. The caller then leaves a video-message, which is stored on the Video Mail Server. The recording of video for Store & Forward (S&F) Video is exactly the same as leaving a video-message, described above. Parameters such as destination number, forwarding time, and any other audio S&F features currently available are entered through the VMDI or communicated with a human video operator (or automated video ARU.)
Customers may record their own personalized greetings to greet callers that cannot reach them because they are busy or do not answer. This is accomplished in a manner similar to leaving Video-Mail, through the VMDI or communicated with a human video operator.
E. Retrieving Video-Mail and Video On Demand
Users have the choice of periodically polling their video-mail for new messages, or having the video-mail server call them periodically when they have a new message waiting. Configuration is done through the VMDI or human video operator. Managing and checking video-mail is also performed through the VMDI or communicated with a human video operator. A choice of video to view for Video On Demand (VOD) is provided through the VMDI. These videos can be previously recorded video-conferences, training videos, etc. and are stored on the Video Content Engine.
F. Video-conference Scheduling
A user can navigate through the VMDI or Internet 10 WWW forms, or communicate with a human video operator to schedule a conference in the Conference Space. The information is stored on the Conference Reservation Engine 8. The other conference participants are notified of the schedule with a video-mail, e-mail message or otherwise. An optional reminder is provided for all registered conference participants at a particular time (e.g. 1 hour before the conference), through video-mail (or e-mail, voice-mail, paging service or any other available notification method).
G. Virtual Reality
For multiple party conferences, a virtual meeting place can be generated by the Virtual Reality Space Engine. The implementation of the interface includes an embodiment based on VRML. Each person is in control of an “avatar.” Each avatar can have many different features such as visual representation (static representation or live video “head”) and audio (voice or music). Data exchange and collaboration are all actions that can be performed in each VR conference room. The private MBONE network allows the multi-casting of conference member's data streams. Since everyone has a different view when interacting in VR-space, the VR Space Engine can optimize the broadcast of everyone's incoming H.263 streams to everyone else by multi-casting only those avatar streams in view for each particular avatar.
MCI Video-Conferencing describes an architecture for multimedia communications including real-time voice, video and data, or any combination, including video telephony. The architecture also defines inter-operation with other video-conferencing standards. The architecture also defines multipoint configurations and control, directory services and video mail services.
A. Features
Video-Conferencing architecture is a multimedia services system and is designed to provide a number of features and functions including,
B. Components
The Video-Conferencing System is comprised of a set of components including,
1. End-User Terminals
The end-user terminals are the end points of communication. Users communicate and participate in video conferences using the end-user terminals. End-user terminals, including ITU H.323 terminals 1 & 8, ITU H.320 terminal 9 and ITU H.324 terminal 10, are interconnected through the ITU H.323 Server which provides the call control, multi-point control and gateway functions. End-User terminals are capable of multimedia input and output and are equipped with telephone instruments, microphones, video cameras, video display monitors and keyboards.
2. LAN Interconnect System
The LAN Interconnect System 3 is the interface system between the MCI Switch Network 2 and the different H.323 Systems including H.323 Server 4, Video Content Engine 5, Video Mail Server 6 and also the H.323 Directory Server 7.
End-User terminals participating in video-telephony sessions or video-conferencing sessions establish communication links with the MCI switch network and communicate with the H.323 Server through the LAN Interconnect System. The LAN Interconnect system provides ACD-like functionality for the H.323 video-conferencing system.
3. ITU H.323 Server
The H.323 Server 4 provides a variety of services including call control, multipoint control, multipoint processing, and gateway services for interworking between terminals supporting different video-conferencing standards like ITU H.320 and ITU H.324.
The H.323 Server is comprised of a set of individual components which communicate with each other and with the other external systems like end-user terminals, video mail server and H.323 directory server. The different components of the H.323 Server include:
4. Gatekeeper
The H.323 Gatekeeper provides call control services to the H.323 terminals and Gateway units. The Gatekeeper provides a variety of services including:
The Gatekeeper uses the ITU H.225 stream packetization and synchronization procedures for the different services, and is tightly integrated with the Operator Services Module for offering manual operator services.
5. Operator Services Module
The Operator Services Module offers manual/automatic operator services and is tightly integrated with the gatekeeper. The manual or the automatic operator terminal, located elsewhere on the LAN, interacts with the gatekeeper through the Operator Services Module to provide all the required operator services.
6. Multipoint Control Unit (MCU)
The MCU is comprised of the Multipoint Controller and the Multipoint Processor and together provides multipoint control and processing services for video-conferences. The multipoint controller provides control functions to support conferences between three or more terminals. The multipoint controller carries out capabilities exchange with each terminal in a multipoint conference. The multipoint processor provides for the processing of audio, video and/or data streams including mixing, switching and other required processing under the control of the multipoint controller. The MCU uses ITU H.245 messages and methods to implement the features and functions of the multipoint controller and the multipoint processor.
7. Gateway
The H.323 Gateway provides appropriate translation between the various transmission formats. The translation services include,
The H.323 Gateway provides conversion functions for transmission format, call setup and control signals and procedures.
8. Support Service Units
The Support Service Units include the H.323 Directory Server 7, the Video-Mail Server 6 and the Video Content Engine 5 which interact with the H.323 Server for providing different services to the end-user terminals. The H.323 Directory Server provides directory services and interacts with the gatekeeper unit of the H.323 Server. The Video Mail Server is the repository of all the video mail generated by the H.323 system and interacts with the gatekeeper unit of the H.323 server for the creation and playback of video mail. The Video Content Engine is the repository of all other types of video content which can be served to the end-user terminals. The Video Content Engine interacts with the gatekeeper unit of the H.323 Server.
C. Overview
The H.323 based video-conferencing architecture completely describes an architecture for multimedia communications including real-time voice, video and data, or any combination including video telephony. Users with H.323 terminals can participate in a multimedia video-conferencing session, a point-to-point video telephony session, or an audio only session with other terminal users not equipped with video facilities. The architecture also includes gateways for interworking with other video-conferencing terminals based on standards like ITU H.320 and ITU H.324.
The architecture includes a directory server for offering complete directory services including search facilities. A video mail server is an integral part of the architecture providing for the recording and playback of video mail. A video content engine is also part of the overall architecture for offering multimedia content delivery services.
H.323 terminals participating in a video-conferencing or a video telephony session communicate with the H.323 server through the MCI switch network. The H.323 server offers a variety of services including call control, information stream delivery, multi-point control and also gateway services for interworking with H.320 or H.324 terminals. The server also offers directory services and video mail services.
A H.323 terminal initiating a video call establishes a communication link with the H.323 Server through the MCI switch network. On admission to the network by the H.323 server, the server offers a directory of other available terminals to the call initiating terminal which selects a destination terminal or a destination group to participate in a video conference. The server then sets up a communication link with the selected destination terminal or terminals and finally bridges the calling terminal and the called terminal/terminals. If the destination terminal is unavailable or busy, the server offers the calling terminal an option to deposit a video mail. The server also notifies the recipient of the video mail and offers the recipient services for retrieval of the video mail on-demand. Additional services like content delivery on-demand to H.323 terminals are also offered and controlled by the H.323 server.
D. Call Flow Example
The Call Flow for the H.323 architecture based video-conferencing is explained in detail for different call types including, Point-to-Point Calls including calls to other H.323, H.320 and H.324 terminals; and Multipoint Video-Conference Calls.
1. Point-to-Point Calls
a) Case 1: H.323 Terminal to Another H.323 Terminal
A call initiating H.323 terminal 1 initiates a call to another H.323 terminal[8] through the MCI Switch Network. The gatekeeper is involved in controlling the session including call establishment and call control. The Terminal end-user interface is any commercially available Web-browser.
if the user at calling terminal 1 chooses to leave a video mail for user at the destination terminal 8, the gatekeeper 4 establishes a connection with the Video Mail Server 6 and receives a reliable port address from the mail server 6 for a H.245 connection;
b) Case 2: H.323 Terminal to H.320 Terminal
A call initiated from a H.323 terminal 1 invokes a call to a H.320 terminal 9 through an MCI Switch Network. The gatekeeper along with the gateway is involved in controlling the session including call establishment and call control. A terminal end-user interface is any of the commercially available Web-browsers or a similar interface.
The call flow is similar to a H.323 terminal calling another H.323 terminal as explained in the previous case except that a gateway 4 component is introduced between the gatekeeper 4 and the called terminal 9. The gateway transcodes H.323 messages including audio, video, data and control to H.320 messages and vice-versa. If the H.320 terminal 9 initiates a call to a H.323 terminal[1], the initial dial-up routine is performed by the gateway and then the gatekeeper takes over the call control and the call proceeds as explained in the previous case.
c) Case 3: H.323 Terminal to H.324 Terminal
Call initiating H.323 terminal 1 initiates a call to a H.324 terminal 10 through the MCI Switch Network. The gatekeeper along with the gateway is involved in controlling the session including call establishment and call control. The Terminal end-user interface is a Web-browser or a similar interface.
The call flow is similar to a H.323 terminal calling another H.323 terminal as explained in the previous case except that a gateway 4 component is introduced between the gatekeeper 4 and the called terminal 9.
The gateway 4 transcodes H.323 messages including audio, video, data and control to H.324 messages and vice-versa.
If the H.324 terminal 10 initiates a call to a H.323 terminal 1, the initial dial-up routine is performed by the gateway and then the gatekeeper takes over the call control and the call proceeds as explained in the previous case.
2. Multipoint Video-Conference Calls
In the case of multipoint video-conference, all the terminals exchange initial call signaling and setup messages with the gatekeeper 4 and then are connected to the Multipoint Controller 4 for the actual conference including H.245 control channel messaging through the gatekeeper 4.
The following are the considerations for setting up a conference:
E. Conclusion
The video-conferencing architecture is a total solution for multimedia communications including real-time voice, video and data, or any combination, including point-to-point video telephony. The architecture defines interworking with other systems utilizing ITU recommendations.
Additional services including directory services and video mail services are also part of the overall architecture.
The Video Store and Forward Architecture describes a video-on-demand content delivery system. The content may include video and audio or audio only. Input source for the content is from the existing video-conferencing facility of MCI or from any video/audio source. Input video is stored in a Digital Library in different standard formats like ITU H.320, ITU H.324, ITU H.263 or MPEG and delivered to the clients in the requested format. Delivery is at different speeds to the clients either on the Internet or on dial-up lines including ISDN and with a single storage for each of the different formats.
A. Features
The Video Store and Forward Architecture is designed with a rich set of features and functionality including:
B. Architecture
C. Components
The Video Store and Forward architecture can be completely described by the following components.
1. Content Creation and Transcoding
Input sources include analog video, video from Multi-Point Control Unit (MCU) and other video sources 1a and 1b. Input content is converted to standard formats like ITU H.261, ITU H.263, ITU H.320, ITU H.263, ITU H.324, MPEG and also formats to support delivery of H.263 over RTP and H.263 over an Internet Protocol 2 and 3. Input can initially be coded as H.263 and optionally transcoded into the various other formats and stored 2. The transcoded content is stored on different servers, one for each content type to serve the various clients each supporting a different format 5a, 5b, 5c, 5d, 5e and 5f.
2. Content Management and Delivery
Content is stored on different servers with each server supporting a specific format and is managed by a Digital Library consisting of:
Content Delivery is by:
Content format is either a MPEG Stream, H.320 Stream, H.324 Stream, or a H.263 Stream transported over IP or RTP.
3. Content Retrieval and Display
Content Retrieval is by clients supporting various formats:
Content is retrieved by the different clients on demand and displayed on a local display.
Clients support VCR like functions like fast-forward, re-wind, etc.
D. Overview
Analog Video from different sources and H.320 video from an MCU is received as input and transcoded into various formats as required like ITU H.324, ITU H.261, ITU H.263 or MPEG and stored on the different Object Servers dedicated for each of the formats. The Object Servers are in turn managed by the Index Server and are together called a Digital Library. Any request from the clients for content is received by the Index Server and in turn serviced by the Object Server through a Proxy Client.
The Index Server or the Library Server respond to requests from the proxy client and store, update and retrieve objects like H.261, H.263 or MPEG multimedia information on the object servers. Then they direct the object server to deliver the retrieved information back to the proxy client. The Index Server has the complete index information of all the different objects stored on the object servers and also information on which of the object server the information is residing on. The index information available on the Index Server is accessible by the proxy client for retrieval of multimedia content from the different object servers. Security and access control is also part of the index server functionality.
The Object Servers are an integral part of the Digital Library providing physical storage and acting as the repository for the multimedia content, including the video-conferencing information stream from the conferencing facilities. The multimedia content is stored in standard formats which can be retrieved by the proxy client on demand. Each of the Object Servers are dedicated for a specific format of multimedia content like H.261, H.263, MPEG, etc. The organization and index information of the multimedia content including information about the specific object server dedicated for a multimedia format is managed by the index server. The Object Server delivers the stored multimedia content to the proxy client upon receiving specific instructions from the index server.
The Proxy Client is the front end of the digital library and is accessed by all the clients through the Internet for on-demand multimedia content. The Proxy Client also is a World Wide Web (WWW) Server and delivers a page to the clients when accessed. The clients interact with the Proxy Client and thereby with the Digital Library through the WWW pages. Clients request multimedia content by interacting with the WWW pages. The Proxy Client receives the request from the clients through the WWW pages and processes the request. The Proxy Client then communicates with the index server with object queries as requested by the client. The index server then communicates with one of the object servers dedicated to the requested multimedia format and, based on the index information available at the index server, directs the object servers to deliver the requested multimedia content to the Proxy Client. The Proxy Client receives the multimedia content from the object server and delivers it to the client making the request.
The Clients connect to the Servers either through the Internet or by dial-up connections on an ISDN line or an Analog line at 28.8 Kbps depending on the video format requested and the client capabilities. A H.320 client connects by an ISDN line and a H.324 client requests services on an analog telephone line at 28.8 Kbps. A MPEG client or a H.263 client using RTP or a H.263 client using IP request services through the Internet. The front-ends for multimedia content query and display like the WWW browsers are integrated as a part of the Client and provide an easy-to-use interface for the end-users.
A request for video from the client is received by the proxy client which routes the request to the Index Server which is turn processes the request and communicates with a specific Object Server in addition to indexing the content for delivery. The Object Server delivers the requested content to the client through the Internet. In the case of the dial-up links, the content is delivered back on the already established link.
In sum, the Video Store and Forward architecture describes a comprehensive system for the creation, transcoding, storage, archiving, management and delivery of video and audio or audio on demand. The delivery of video and audio or audio will be on the Internet or by ISDN or Analog Telephone dial-up lines. Content including video and audio or audio is delivered at various data rates from individual storage locations, each serving a different delivery speed.
A. Hardware Architecture
The system hardware is comprised of a Video Operator Terminal 40001, a Call Server 40002, a multimedia hub (“MM Hub”) 40003, wide area network hubs (“WAN Hubs”) 40004, a multi-point conferencing unit (“MCU”) 40005, a BONDING Server 40006, a Client Terminal 40007, and a switching network (“MCI”) 40008.
In one embodiment, the Video Operator Terminal 40001 is a Pentium-based personal computer with a processing speed of 90 MHz or greater, 32 MB RAM, and a hard disk drive with at least 1.0 GB storage space. The operating system in this embodiment is Microsoft's Windows 95. Special features include Incite Multimedia Communications Program (“MCP”) software, an H.320 video coder/decoder (“codec”) card for audio and video compression (e.g. Zydacron's Z240 codec), and an isochronous Ethernet (“isoEthernet”) network interface card. Incite's MCP manages the isoEthernet network interface card to create the equivalent of 96 ISDN B-channels in isochronous channels for transmission of video signals.
The Call Server 40002 in this embodiment is a Pentium-based personal computer with a processing speed of 90 MHz or greater, 32 MB RAM, and a hard disk drive with at least 1.0 GB storage space. The operating system is Microsoft's Windows NT Server. Special features include the Incite Call Server services and an Ethernet network interface card.
Different embodiments of the system accommodate any model of MM Hub 40003 and any model of WAN Hub 40004. In one embodiment, the MM Hub 40003 is the Incite Multimedia Hub, and the WAN Hub is the Incite WAN Hub. The MM Hub 40003 is a local area network (“LAN”) hub that connects, via numerous ports supporting isoEthernet interfaces each with a bandwidth consisting of 96 full-duplex B-channels, to personal computers such as the Video Operator Terminal 40001 and the BONDING Server 40006, to WAN Hubs 40004, or to other cascaded MM Hubs. In addition, the MM Hub 40003 can accept up to ten Mbps of Ethernet data via an Ethernet interface such as the one from the Call Server 40002. The WAN Hub 40004 acts as an interface between an MM Hub 40003 and a public or private switched network such as MCI-40008, enabling video conferencing to extend beyond the WAN or LAN containing the MM Hub 40003 and WAN Hub 40004.
Different embodiments of the system also accommodate various manufacturers' MCU 40005 devices. The function of an MCU 40005 is to allow video conference callers using a variety of different devices, possibly communicating over different circuit-based digital networks, to communicate with one another in a single video conference. For example, one embodiment employs VideoServer's Multimedia Conference Server (“MCS”), which mixes audio to allow any one video conference caller to hear the complete video conference discussion and processes video to allow each video conference caller to see all other callers simultaneously.
In one embodiment, the BONDING Server 40006 is a Pentium-based personal computer with a processing speed of 90 MHz or greater, 32 MB RAM, and a hard disk drive with at least 1.0 GB storage space. The operating system in this embodiment is Microsoft's Windows 95. Special features include Incite BONDING Server software, a Digital Signal Processor (“DSP”) card (such as Texas Instrument's “TMS320C80” DSP), and an isoEthernet network interface card. Where a Client Terminal 40007 makes BONDING or Aggregated video calls, the BONDING Server 40006 converts the calls to multi-rate ISDN calls used within the video operator platform.
In a preferred embodiment, the Client Terminal a Pentium-based personal computer with a processing speed of 90 MHz or greater, 32 MB RAM, and a hard disk drive with at least 1.0 GB storage space. The operating system is Microsoft's Windows 95 in this embodiment, and the Client Terminal 40007 is equipped with audio and video equipment making it compatible with ITU-T standard H.320.
In this embodiment, the switching network is an integrated services digital network (“ISDN”) provided by MCI-40008.
The Video Operator Terminal 40001 is connected to the MM Hub 40003 via an isoEthernet interface with a bandwidth of 96 full-duplex B-channels, which allows each video operator to manage up to eight video conferencing clients, each client employing a Client Terminal 40007. The MM Hub 40003 is connected to WAN Hubs 40004 via similar isoEthernet local area network (“LAN”) connections. One WAN Hub 40004 connects through MCI-40008 to an MCU 40005 via multi-rate ISDN interfaces. Another WAN Hub 40004 connects to MCI-40008 via a multi-rate ISDN interface, and MCI connects to each Client Terminal 40007 via a BONDING or multi-rate ISDN interface. In a three-way connection, the MCU 40005, the Call Server 40002 and the MM Hub 40003 are connected to one another through an Ethernet wide area network (“WAN”) 40009. The MM Hub 40003 is also connected to a BONDING Server 40006 via an isoEthernet interface with a bandwidth of 248 B-channels in full “iso” mode.
B. Video Operator Console
The Video Operator Console system 40101 is comprised of a Graphical User Interface (“GUI”) 40102, a Software System 40103 and a Media Control system 40107. The GUI 40102 interacts with both the Software System 40103 and the Media Control system 40107 to allow a video operator to perform all functions of the video operator invention from the Video Operator Terminal [40001
The Software System 40103 implements the following systems: a Scheduling system 40104 which manages the video operator's schedule; a Recording and Playback system 40105 which records the audio and video input from any call and plays back audio and video input through any call, and a Call System Interface 40106 which acts as an application program interface with the Incite MCP application to manage individual calls by performing switching functions such as dial and hold.
The Scheduling system 40104 is connected via an Open Database Connectivity (“ODBC”) interface 40108 to a Video Operator Shared Database 40111, which is in turn connected via an interface between VOSD and VRS 40114 to a Videoconference Reservation System (“VRS”) 40115. The VRS 40115 submits video conference schedules, conference definitions and site definitions to the Video Operator Shared Database 40111 via the interface 40114 either on a regular basis or on demand by a database agent system within the Video Operator Shared Database 40111. The Video Operator Shared Database 40111, residing in a different computer from that containing the Video Operator Console 40101 in a preferred embodiment, stores all conference and site information such that each Video Operator Console 40101 can retrieve the necessary conference and site configurations for any video conference call. In an alternative embodiment of the external systems associated with the internal Scheduling system 40104, the Video Operator Shared Database 40111 and VRS 40115 may be merged into a single system.
The Recording and Playback system 40105 communicates via a Dynamic Data Exchange (“DDE”), Object Linking and Embedding (“OLE”) or Dynamic Link Library (“DLL”) interface 40109 with a Video Operator Storage and Playback system 40112 located locally in the Video Operator Terminal [40007
The Call System Interface system 40106 communicates via a DDE interface 40110 with the Incite MCP application 40113 to manage switching functions such as dial, hold, etc.
The Media Control system 40107 allows the GUI 40102 to communicate directly with external components to manage the GUI 40102 presentation of audio and video. In the embodiment shown in
As in the first embodiment, the Video Operator Console system 40101 is comprised of a GUI 40102 and a Software System 40103. However, in addition to the Scheduling system 40104, the Recording and Playback system 40105 and the Call System Interface 40106, the software system in the second embodiment includes the MCU control 40201 and the Call Monitor 40202.
The Scheduling system 40104 and associated external systems 40108, 40111, 40114 and 40115 are identical to the those in the first embodiment, pictured in
The internal MCU control 40201 communicates via a DDE, OLE or DLL interface 40206 with the external MCU Control System 40208 to manage resources and features specific to various different MCU systems. The MCU Control System 40208 communicates either via a ConferenceTalk interface 40211 with the VideoServer MCS 40215 or via another vendor-specific interface 40210 with some Other MCU vendors' MCU 40214.
The Recording and Playback system 40105 communicates via DDE, OLE or DLL interfaces 40109, 40203 with both the Storage and Retrieval system 40205 and the Video Store and Forward system 40204. The Storage and Retrieval system 40205 and Video Store and Forward system 40204 communicate via another DDE, OLE or DLL interface 40207 with the Call Control System 40209. The Call Control System 40209 communicates via another DDE, OLE or DLL interface 40212 with a uni-directional H.320 recorder 40116 and a uni-directional H.320 playback device 40117. Conference calls recorded by transmitting the digitized audio and video signals from the Video Operator Console 40101 through the Storage and Retrieval system 40205 and Call Control System 40209 to the H.320 recorder 40116. Conference calls are played back by retrieving a previously recorded conference call from disk storage and transmitting the audio and video signals from the H.320 playback device 40117 through the Call Control System 40209 and Storage and Retrieval system 40205 to the Video Operator Console 40101. The Video Store and Forward system 40204 operates in a manner similar to the Storage and Retrieval system 40205, communicating between the Recording and Playback system 40105 and the Call Control System 40209.
The call monitor 40202 monitors the state of calls and connections by regularly polling the Call System Interface 40106 within the Video Operator Console Software System 40103. The Call System Interface 40106 communicates via a DDE, OLE or DLL interface 40207 with the Call Control System 40209 to manage call data, including switching functions such as dial, hold, etc., translating between the Video Operator Console 40101 internal data structures and the Call Control System 40209 data. The Call Control System, in turn, manages either the Incite MCP 40113 or Other programs with call control interfaces 40216.
The Media Control system 40107 communicates via a DDE, OLE or DLL interface with the Call Control System 40209, which communicates via a DDE interface 40110 with the Incite MCP application 40113 or with Other programs with call control interfaces 40216. The Incite MCP application 40113 provides all necessary call setup features and multimedia features such as video window placement and audio control either directly through a DDE interface 40110 to the internal Media Control system 40102 or via the Call Control System 40209. If Other programs with call control interfaces 40216 are used to provide call setup and multimedia features, they communicated with the Media Control system 40107 via the Call Control System 40209.
C. Video Conference Call Flow
In an alternate embodiment, the client initiates a BONDING call from the Client Terminal 40007 through MCI-40005, through a WAN Hub 40004, through the MM Hub 40003, through the BONDING Server 40006, and through the MM Hub 40003 once again to the Video Operator Terminal 40001. The video operator then places a call to the MCU as illustrated in call flow path 40303 and finally bridges the two calls as illustrated in call flow path 40304. To determine the correct conference site for the client-initiated call, the initiating client's ANI is passed to the MCU when the connection is made by the video operator.
While a conference call is in progress, the video operator monitors each of the calls from the Video Operator Terminal 40001. Functions of the video operator include monitoring which calls remain connected, reconnecting disconnected calls, adding new clients to the conference, or joining the conference to inform the clients regarding conference status.
All calls are disconnected to end a conference, and the video operator shared database [40214 in
D. Video Operator Software System
1. Class Hierarchy
VOOperator 40402 is an assembly class associated with one VOSchedule 40403 Part-1 Class object and one VOUserPreferences 40404 Part-2 Class object, such that exactly one VOSchedule 40403 object and exactly one VOUserPreferences 40404 object are associated with each VOOperator 40402 object. VOSchedule 40403, in turn, is an Assembly Class associated with zero or more VOSchedulable 40405 Part-1 Class objects, such that any number of VOSchedulable 40405 objects may be associated with each VOSchedule 40403 object.
VOSchedulable 40405 is a Superclass to the VOConference 40406 Subclass-1 and the VOPlaybackSession 40407 Subclass-2, such that the VOConference 40406 object and the VOPlaybackSession 40407 object inherit attributes from the VOSchedulable 40405 object. VOConference 40406 is an Assembly Class associated with two or more VOConnection 40412 Part-1 Class objects and zero or one VOPlaybackCall 40415 Part-2 Class objects, such that at least two VOConnection 40412 objects and possibly one VOPlaybackCall 40415 object are associated with each VOConference 40406 object. VOPlaybackSession 40407 is an Assembly Class associated with one VOPlaybackCall 40415 Part-1 Class object, such that exactly one VOPlaybackCall 40415 object is associated with each VOPlaybackSession 40407 object.
VOCallObjMgr 40408 is an Assembly Class for zero or more VOCall 40410 Part-1 Class objects, such that any number of VOCall 40410 objects may be associated with each VOCallObjMgr 40408 object. Similarly, VOConnObjMgr 40409 is an Assembly Class for zero or more VOConnection 40412 Part-1 Class objects, such that any number of VOConnection 40412 objects may be associated with each VOConnObjMgr 40409 object. VOConnection 40412 is an Assembly class for two VOCall 40410 Part-1 Class objects, such that exactly two VOCall 40410 objects are associated with each VOConnection 40412 object. VOCall 40410 is a Superclass to the VOPlaybackCall 40415 Subclass-1, such that VOPlaybackCall 40415 objects inherit attributes from the VOCall 40410 object. VOCall 40410 is also an Assembly Class associated with two VOSite 40413 Part-1 Class objects, such that exactly two VOSite 40413 objects are associated with each VOCall 40410 object. Finally, the VOCall 40410 class object uses the VORecorder 40411 class object.
VOSite 40413 is a Superclass to the VOMcuPortSite 40417 Subclass-1, the VOParticipantSite 40418 Subclass-2, and the VOOperator Site 40419 Subclass-3, such that VOMcuPortSite 40417 objects, VOParticipantSite 40418 objects and VOOperator Site 40419 objects inherit attributes from the VOSite 40413 object.
VOPlaybackCall 40415 is an Assembly Class associated with one VOMovie 40416, such that exactly one VOMovie 40416 object is associated with each VOPlaybackCall 40415 object. The VOPlaybackCall 40415 class object also uses the VOPlayer 40414 class object.
VOMessage 40420 object has no associations other than inheriting the attributes of VOObject 40401, the Superclass to all objects in the internal software system.
2. Class and Object Details
a) VOObject
All Internal Software System classes will inherit from the following base class. This base class is extended from the Visual C++ base class CObject.
(1) Data Types
(2) Attributes
(3) Methods
(a) PostMessage
(i) Parameters
(ii) Description
Use this function to create error, warning, debug, logging and notification messages. It will create a VOMessage object, which will then perform the appropriate actions as specified by the delivery flags.
(b) GetErrorString
virtual CString GetError String (int errorcode);
Return Value: returns a CString object having the error string corresponding to the error code passed.
errorCode parameter: the error code for which you want the error string. Error strings are stored as resources.
This function is called to get a textual description corresponding to an error code.
b) Core Classes
(1) Class List
(2) Class Descriptions
(a) Site
This is a base class from which classes such as the Participant Site and MCU Port Site classes can be derived from. It's main purpose is to function as a data structure containing pertinent information about who or what is taking part in a Call.
(i) Data Types
enum Bandwidth_e {MULTIRATE, BONDING, AGGREGATED, H0};
(ii) Attributes
(b) Participant Site
Inherits from VOSite base class.
All customers or conference participants will have their information stored in the VO shared database.
(c) MCUPort Site
Inherits from VOSite base class.
All conferences take place on an MCU. Each Participant Site needs to connect with a logical “port” on an MCU.
(d) Video Operator Site
Inherits from VOSite base class.
All calls will have the Video Operator Site as one of the sites in a point-to-point call. This structure contains the real ANI of the video operator.
(e) Call
A Call is defined as a full duplex H.320 stream between two sites. In all Calls, the Video Operator Site will be one of the sites. A Joined pair of Calls is called a Connection.
(i) Data Types
(ii) Attributes
(iii) Methods
Disconnection( ); is called when the other end of the line hangs up or the line goes dead. The member variable m_expectHangup should be FALSE. Otherwise, the Call Object Manager's Hangup( ) operation would have been called.
Reset( ); resets the call state to an inactive state
RecordingStart( ); starts recording the H.320 input pipe of the Call.
RecordingStop( ); stops the recording of the Call.
setState(callOperation_e operation);
operation parameter: indicates an operation that has been performed which will result in a change of state
Operations that affect the state of the Call should call the setState function after the operation has been performed. This function will change the state of the Call by referencing the current state and the operation in the state-transition table. A VOMessage object will be created, with a type of STATUS_UPDATE and sent to the application queue. The GUI and any other component that reads the application queue will therefore be informed of the status update.
(f) Playback Call
Inherits from VOCall base class.
In this special case of a Call, the Video Operator audio and video output is replaced with the H.320 stream from the playback of a movie by the Video Operator Storage and Playback external system component.
(i) Attributes
(ii) Methods
PlaybackStart( ); starts playback
PlaybackStop( ); stops playback
(g) Movie
A Movie is a recording of an H.320 Call. For Phase 1, the Video Operator Storage and Playback System manages files and H.320 data streams for recording and playback of movies, as well as storage and retrieval.
(h) Call Object Manager
By having a Call Object Manager to perform the construction and destruction of Call objects, a list of all calls on the video operator's machine can be maintained. This includes calls that are not part of any Conference or Playback Sessions, including incoming calls and general purpose dial-out calls. Operations that affect a Call but do not create or destroy it can be performed by the Call object itself.
(i) Attributes
(ii) Methods
Dial(VOCall* pcalling);
pcalling parameter: If not NULL, this pointer will be used for the Call object. This is necessary when creating or re-using a Call object that is in an inactive or disconnected state.
Dial performs dial out. The number(s) to Dial are in the m_psite Call member structure.
Answer(VOCall* pIncoming);
pIncoming parameter: If not NULL, this pointer will be used for the Call object. This is necessary when creating or re-using a Call object that is in an inactive or disconnected state.
Answer answers an incoming call.
Hangup (VOCall* pCall);
pCall parameter: pointer to the call
Hangup hangs up the call pointed to by pCall
Hold(VOCall* pCall);
pCall parameter: pointer to the call
Hold puts the call pointed to on hold.
VOCall* CallCreate creates a Call object.
VOPlaybackCall* PlaybackCallCreate( ) creates a Playback Call object.
VOCall* GetCallPtr(ID_t idCall);
idCall parameter: call ID
VOCall* GetCallPtr gets the pointer to the call object identified by idCall
(i) Connection
A Connection is defined as a pair of Call objects that maintain a Join state, and each Call has the Video Operator Site as a common point for the Join to be implemented.
(i) Data Types
(ii) Attributes
(iii) Methods
Join( ); joins the Participant and MCU Port Calls.
Unjoin( ); unjoins the Participant and MCU Port Calls.
SetParticipantCall(VOCall* participantCall);
participantCall parameter: pointer to a Call object
SetParticipantCall sets the Call to be the Participant Call. This is useful when managing unknown incoming calls or for last minute participant substitution.
SetMCUPortCall(VOCall* mcuPortCall);
mcuPortCall parameter: pointer to a Call
SetMCUPortCall sets the Call to be the MCU Port Call. This is useful when managing unknown incoming calls or for last minute call site substitution.
DoParticipantCall( ); calls the Participant Site and sets it as the Participant Call.
DoMCUPortCall( ); calls the MCU Port Site and sets it as the MCU Port Call.
setState (ConnectionOperation_e operation);
operation parameter: the operation that has been performed which will result in a change of state.
Operations that affect the state of the Connection should call the setState function after the operation has been performed. This function will change the state of the Connection by referencing the current state and the operation in the state-transition table. A VOMessage object will be created, with a type of STATUS_UPDATE and sent to the application queue. The GUI and any other component that reads the application queue will therefore be informed of the status update.
protected Break( ); is called when a Joined Connection becomes Un-joined. If the member variable m_expectBreak is FALSE then one of the Calls must have unexpectedly been disconnected. Otherwise, the Connection's Unjoin( ) operation would have been called.
protected Reset( ); resets the state of the Connection to UNJOINED.
(j) Connection Object Manager
Similarly with the Call Object Manager, a list of all Connections in operation on the video operator's machine must be maintained. All operations that result in the creation or deletion of a Connection must use the Connection Object Manager.
(i) Attributes
(ii) Methods
Return Value: pointer to Connection object
VOConnection* Create creates a new Connection object and adds it to the list.
Remove (VOConnection* oldConnection);
oldConnection parameter: connection object to be removed
Return Value: returns TRUE if operation successful.
Remove deletes a Connection object and removes it from the list.
VOConnection* GetConnectionPtr(ID_t idConnection);
Return Value: a pointer to the connection object
idConnection parameter: ID of the Connection
VOConnection* GetConnectionPtr returns the pointer to a Connection object identified by its ID.
(k) Message
All one-way communication from the Internal System Software to the rest of the Video Operator application, i.e. the Graphical User Interface, is sent as messages that get placed on the Application Queue. The function to create and post a Message is in the base class VOObject, which all Internal System Software classes inherit from. All run-time errors or debugging information is put into a Message object, and posted to the application queue so that an appropriate object will process it according to its type and severity. Therefore all class functions that do not return a specific type will post a Message if something goes wrong, e.g. out of memory, or debugging information to be displayed by the GUI or logged to a file.
(i) Data Types
(ii) Attributes
(iii) Methods
Post( ); posts a message to the application message queue
private static AppendLog( );
Return Value: returns TRUE if the operation is successful.
This method is called by VOObject::PostMessage( ) when the flag for DELIVER_LOG_FILE is set.
(l) Video Operator
Generally there will be only one Video Operator per machine. Each Video Operator has a Schedule, and a list of customer Participant Sites to manage. The Call Object Manager and Connection Object Manager are also part of the Video Operator.
(i) Attributes
(ii) Methods
protected ScheduleStart( ); initiates the schedule for the video operator.
protected CallObjMgrStart( ); initiates the call object manager.
protected ConnectionObjMgrStart( ); initiates the connection object manager.
protected CallSystemInterfacestart( ); initiates the Call System Interface.
(m) User Preferences
The Video Operator Console application will have a set of default application preferences which may be modified and saved. The values of these variables are taken from the following sources, in order of increasing preference: hard-coded default values, saved VO.INI file, command-line invocation arguments, GUI entry and run-time modifications saved to VO.INI file.
(i) Attributes
(ii) Methods
SavePrefs( ); saves all values to VO.INI.
LoadPrefs( ); loads all values from VO.INI.
(n) MCU
All MCU Port Sites correspond to a particular MCU. This class is used for MCU Port Site storage only. For Phase 2, MCU specific operations and interfaces would be implemented here.
(i) Attributes
(ii) Methods
VOMCUPortSite* GetPortPtr(ID_t idport);
Return Value: a pointer to the MCU Port Site object.
IdPort parameter: ID of the MCU Port Site
VOMCUPortSite* GetPortPtr returns the pointer to a MCU Port Site object identified by its ID.
Return Value: a pointer to a new MCU Port Site object
VOMCUPortSite* CreatePort returns the pointer to a newly created MCU Port Site object identified by its ID.
(3) State Variable Transition Diagrams for Core Classes
If the VOCall object receives a Dial 40503 input while in Inactive 40502 state, the state variable changes to Dialing 40504 state. In the Dialing 40504 state, the state variable changes to Inactive 40502 state upon receiving a Busy 40505 input or to Active 40507 state upon receiving an Answer 40506 input. In the Active 40507 state, the state variable changes to Held 40510 state upon receiving a Hold 40509 input, to Disconnected 40515 state upon receiving a Disconnection 40514 input, or to Inactive 40502 state upon receiving a Hangup 40508 input. In the Held 40510 state, the state variable changes to Active 40507 state upon receiving a Pickup 40511 input, to Disconnected 40515 state upon receiving a Disconnection 40513 input, or to Inactive 40502 state upon receiving a Hangup 40512 input. In the Disconnected 40515 state, the state variable changes to Inactive 40502 state upon receiving a Reset 40516 input.
If the VOCall object receives an Incoming Call 40517 input while in Inactive 40502 state, the state variable changes to Incoming 40518 state. In the Incoming 40518 state, the state variable changes to Inactive 40502 state upon receiving a Reject 40520 input or to Active 40507 state upon receiving an Answer 40519 input.
c) Scheduling System Classes
(1) Class List
(2) Class Descriptions
(a) Playback Session
Like Conferences, Playback Sessions need to be scheduled. A Call is made with a Participant Site and the Video Operator Site. The Video Operator Storage and Playback external component system will playback a scheduled and pre-selected movie, replacing the AV output to the Participant Site. No MCU is used for a Playback Session, and only one Participant Site is involved in one embodiment.
(i) Data Types
(ii) Attributes
(iii) Methods
public boolean Setup( );
Return Value: returns TRUE if operation successful.
public boo lean Setup( ) sets up the Playback Call by calling the Participant Site and initialize a VOEPlayer object. This function may be called by the Scheduler.
Public boolean Start( );
Return Value: returns TRUE if operation successful.
Public boolean Start starts the Player to play to the Playback Call. This function may be called by the Scheduler.
Public boolean Close( );
Return Value: returns TRUE if operation successful.
Public boolean Close sends messages to the Video Operator and maybe the Participant that the Playback Session will end soon.
Public boolean Finish( );
Return Value: returns TRUE if operation successful.
Public boolean Finish stops the Player and Hangup the Playback Call. This function may be called by the Scheduler.
public StatePlaybackSession_e StateGet( );
Return Value: returns the playback session's state.
Use the public StatePlaybackSession_e StateGet; function to find out the state of the Playback Session.
protected boolean StateSet(playbackSessionoperation_e operation);
Return Value: returns TRUE if operation successful.
operation parameter: the operation that has been performed which will result in a change of state
Operations that affect the state of the Playback Session should call the protected boolean StateSet function after the operation has been performed. This function will change the state of the Playback Session by referencing the current state and the operation in the state-transition table. A VOMessage object will be created, with a type of STATUS UPDATE and sent to the application queue. The GUI and any other component that reads the application queue will therefore be informed of the status update.
(b) Conference
The main function of the Video Operator is to manage conferences. The scheduler system creates the Conference objects, which in turn create a list of Connections (or Participant-MCU Port Site Call pairs). In the special case of a movie being played back to a conference, an extra call is made to an MCU Port and the movie is played back to the MCU in a similar way as a Playback Session. This of course requires an extra MCU Port site to be available, and must be scheduled before the start of the conference.
(i) Data Types
(ii) Attributes
(iii) Methods
public boolean Setup( );
Return Value: returns TRUE if operation successful.
public boolean Setup sets up each Connection in the connection list (and the Playback Call if required) by calling each Participant Site and MCU Port Site as appropriate, and perform the Join operations to create the Connections. This function may be called by the Scheduler.
Public boolean Start( );
Return Value: returns TRUE if operation successful.
Public boolean Start starts the Conference. This function may be called by the Scheduler.
Public boolean Endo;
Return Value: returns TRUE if operation successful.
Public boolean End starts tearing down the Connections in the conference or issues warnings that the conference will end soon. This function may be called by the Scheduler.
Public boolean Finish( );
Return Value: returns TRUE if operation successful.
Public boolean Finish stops the Conference and hangs up all Calls in the Conference. This function may be called by the Scheduler.
public StateConference_e StateGet( );
Return Value: returns the Conference state
Use the public StateConference_e StateGet function to find out the state of the Conference.
protected boolean StateSet(conferenceOperation_e operation);
Return Value: returns TRUE if operation successful.
operation parameter: the operation that has been performed which will result in a change of state
Operations that affect the state of the Conference should call the protected boolean StateSet function after the operation has been performed. This function will change the state of the Conference by referencing the current state and the operation in the state-transition table. A VOMessage object will be created, with a type of STATUS_UPDATE and sent to the application queue. The GUI and any other component that reads the application queue will therefore be informed of the status update.
(c) Schedule
The Scheduling System maintains a list of Conferences and Playback Sessions. Each Conference and Playback Session is created at a particular time interval before its starting time. The Schedule in memory and the Schedule stored in the Video Operator Shared Database for the current Video Operator should always be synchronized.
(i) Attributes
(ii) Methods
SynchWithDb( ); synchronizes with the VO shared database for the schedule.
AddSchedulable(VOSchedulable* pSchedulable);
pSchedulable parameter: pointer to schedulable object to be added to list
AddSchedulable adds a Schedulable object to the list
DeleteSchedulable(ID_t aSchedulable);
aSchedulable parameter: schedulable object to be removed from list
DeleteSchedulable deletes a Schedulable object and remove from list.
(d) Schedulable
Items or Objects that are schedulable in Phase 1 are Conferences and Playback Sessions. This class allows us to create a schedule for any type of event.
(i) Attributes
(ii) Methods
public SetAlarm(Ctime time, LPTIMECALLBACK func);
time parameter: time for alarm to be triggered
func parameter: pointer to callback function when alarm is triggered
Return Value: returns TRUE if operation successful.
public SetAlarm sets an alarm to be triggered at a specified time. When the alarm is triggered, the callback function will be called. This is useful for time dependant events such as 15 minutes before a Conference starts, 5 minutes before a Conference ends, and 30 minutes after a Conference has finished.
public KillAlarm( );
Return Value: returns TRUE if operation successful.
public KillAlarm kills the last alarm that has been set by SetAlarm( ). This would be used in the case of aborting a Conference, etc.
(3) State Variable Transition Diagram for Schedule System Classes
d) Recording and Playback Classes
(1) Class List
(2) Class Details
(a) Recorder
A recorder communicates with whatever external components performs the actual movie creation and recording of the input pipe of a Call. This external component is known as the Video Operator Storage and Playback system.
(i) Data Types
(ii) Attributes
(iii) Methods
InitMovie( ); VOSP initializes a recording. This will tell the VOSP to prepare to record.
start( ); VOSP starts a recording.
stop( ); VOSP stops a recording.
setState(recorderOperation_e operation);
operation parameter: the operation that has been performed which will result in a change of state.
Operations that affect the state of the Recorder should call the setState function after the operation has been performed. This function will change the state of the Recorder by referencing the current state and the operation in the state-transition table. A VOMessage object will be created, with a type of STATUS_UPDATE and sent to the application queue. The GUI and any other component that reads the application queue will therefore be informed of the status update.
(b) Player
A Player communicates with whatever external component performs the actual playback of a movie to the output pipe of a Call. For Phase 1, this external component is known as the Video Operator Storage and Playback system.
(i) Data Types
(ii) Attributes
(iii) Methods
public InitMovie( );
Return Value: returns TRUE if operation successful.
public InitMovie VOSP initializes playback. This will tell the VOSP to prepare for playback.
public Start( );
Return Value: returns TRUE if operation successful.
public Start VOSP starts playback.
public Stop( );
Return Value: returns TRUE if operation successful.
public Stop VOSP stops playback.
setstate(playerOperation_e operation);
Return Value: returns TRUE if operation successful.
operation parameter: the operation that has been performed which will result in a change of state.
Operations that affect the state of the Player should call the setstate function after the operation has been performed. This function will change the state of the Player by referencing the current state and the operation in the state-transition table. A VOMessage object will be created, with a type of STATUS_UPDATE and sent to the application queue. The GUI and any other component that reads the application queue will therefore be informed of the status update.
(3) State Transition Diagrams for Recording and Playback Classes
e) Call System Interface Class Description
The Call Control System will manage all calls that a Video Operator can manage. This includes incoming and outgoing H.320 call management and low level operations on a call, such as recording and playback. The Video Operator Application uses its Call System Interface to communicate with the Call Control System external component which manages all calls in a uniform way. This allows the video operator to manage calls that require different external programs, adding an extra codec to the machine, or even managing calls on a remote machine.
(1) Data Types
enum Bandwidth_e {MULTIRATE, BONDING, AGGREGATED, H0}
Q.931 UserInfo for a call using BONDING:
Aggregated, 2 numbers, 7 digits long, 447-9000, 447-9001
(2) Attributes
(3) Methods
public Dial(Bandwidth_e calltype, CString destination);
public Dial(Bandwidth_e calltype, CString destination, CString origination);
Return Value: returns TRUE if operation successful.
calltype parameter: specifies the type of call to make.
destination parameter: specifies the destination number to be dialed.
origination parameter: specifies an origination number to be used, instead of the real number of the operator's console.
public Dial dials out.
public Answer(ID_t call);
call parameter: The Call ID of a Call waiting to be answered.
public Answer answers an incoming call.
public Hangup(ID_t call);
Return Value: returns TRUE if operation successful.
call parameter: the Call ID of a Call to Hangup
public Hangup hangs up a call.
public Hold(ID_t call);
Return Value: returns TRUE if operation successful.
call parameter: the Call ID of a Call to Hold
public Hold puts the call on hold.
public Join(ID_t call1, ID_t call2);
Return Value: returns TRUE if operation successful.
call1 parameter: the Call ID of a Call.
call2 parameter: the Call ID of a Call.
public Join joins two Calls.
E. Graphical User Interface Classes
1. Class Hierarchy
Described in object-oriented programming terms, the GUI has a main application object which creates and maintains all the windows and views within. The main window is the VOMainFrame 41009 which is created by the VOConsoleApp 41008. This mainframe window creates the VOScheduleWnd 41016, VOAlertWnd 41015, VOConferenceVw 41014 and the VOVideoWatchVw 41013. The VOScheduleWnd 41016 and the VOAlertWnd are dockable windows meaning that they can be attached to one of the sides of their parent window. In this case the parent window is the VOMainFrame 41009 window. The dockable windows can also be separated from the border by dragging them away. In such a situation they will act like normal tool windows.
The function of each class of object can be summarized as follows. VOConsoleApp 41008 is the main application class, and VOMainFrame 41009 is the main window which contains all the other windows. VOScheduleWnd 41016 is a window displaying the operator's schedule, and VOAlertWnd 41015 is a window where the error messages and alerts are displayed. VOChildFrame 41010 is a frame window for the multiple document interface (“MDI”) windows. VOChildFrame 41010 will act like the mainframe window for each of the views. VOConferenceFrame 41018, derived from the VOChildFrame 41010, is the frame window for the conference view, and VOConferenceVw 41014 is the window displaying the conference information. VOConferenceDoc 41012 is the document class corresponding to the VOConferenceVw 41014. VOVideoWatchFrame 41017, derived from the VOChildFrame 41010, is the frame window for the Video Watch view, and VOVideoWatchVw 41013 is the window displaying the video stream and controls for making calls. VOVideoWatchDoc 41011 is the document class corresponding to the VideoWatch view.
In one embodiment using Visual C++ as the programming language, CWnd 41001 is a Superclass to the CMDIFrameWnd 41005 Subclass-1, CMDIChildWnd 41006 Subclass-2, CFromView 41007 Subclass-3, and CDialogBar 41002 Subclass-4, such that CMDIFrameWnd 41005 class objects, CMDIChildWnd 41006 class objects, CFromView 41007 class objects, and CDialogBar 41002 class objects inherit attributes from the CWnd 41001 class. CMDIFrameWnd 41005 is a Superclass to VOMainFrame 41009 Subclass-1; CMDIChildWnd 41006 is a Superclass to VOChildFrame 41010 Subclass-1; CFromView 41007 is a Superclass to both VOVideoWatchVw 41013 Subclass-1 and VOConferenceVw 41014 Subclass-2; and CDialogBar 41002 is a Superclass to both VOAlertWnd 41015 Subclass-1 and VOScheduleWnd 41016 Subclass-2. VOChildFrame 41010 is a Superclass to both VOVideoWatchFrame 41017 Subclass-1 and VOConferenceFrame 41018 Subclass-2. CWinApp 41003 is a Superclass to VOConsoleApp 41008 Subclass-1, and CDocument 41004 is a Superclass to both VOVideoWatchDoc 41011 Subclass-1 and VOConferenceDoc 41012 Subclass-2.
VOConsoleApp 41008 is an Assembly Class associated with one VOMainFrame 41009 Part-1 Class object, such that exactly one VOMainFrame 41009 object is associated with each VOConsoleApp 41008 object. VOMainFrame 41009 is an Assembly Class associated with one VOVideoWatchFrame 41017 Part-1 Class object, one VOConferenceFrame 41018 Part-2 Class object, one VOAlertWnd 41015 Part-3 Class object, and one VOScheduleWnd 41016 Part-4 Class object, such that exactly one VOVideoWatchFrame 41017 object, exactly one VOConferenceFrame 41018 object, exactly one VOAlertWnd 41015 object, and exactly one VOScheduleWnd 41016 object are associated with each VOMainFrame 41009 object.
VOVideoWatchFrame 41017 is an Assembly Class associated with one VOVideoWatchDoc 41011 Part-1 Class object and one VOVideoWatchVw 41013 Part-2 Class object, such that exactly one VOVideoWatchDoc 41011 object and exactly one VOVideoWatchVw 41013 object are associated with each VOVideoWatchFrame 41017 object. Each VOVideoWatchDoc 41011 object, extended from the CDocument 41004 class object as discussed above, uses a VOVideoWatchVw 41013 object, extended from the CFormView 41007 class object.
Similarly, VOConferenceFrame 41018 is an Assembly Class associated with one VOConferenceDoc 41012 Part-1 Class object and one VOConferenceVw 41014 Part-2 Class object, such that exactly one VOConferenceDoc 41012 object and exactly one VOConferenceVw 41014 object are associated with each VOConferenceFrame 41018 object. VOConferenceDoc 41012 uses VOConferenceVw 41014.
2. Class and Object details
a) User Interface Classes
(1) Class List
(2) Class Details
(a) VOConsoleApp
(i) Attributes
(ii) Methods
Retcode CreateVideoOperator(CString login, CString password);
Return Value: returns a non-zero value if successful, zero otherwise.
login parameter: login id for the operator
password parameter: operator's password
The Retcode CreateVideoOperator function is initially called during the application instantiation.
Return Value: returns a non-zero value if successful, zero otherwise
The Retcode InitializeCallSystemComponents function is initially called during the application initiation, after the creation of the video operator, which makes a local copy of the pointers to the VOCallSystemInterface, VOCallObjMgr and the VOConnectionObjMgr objects, initiated by the internal software system.
void OnGetVOMessage(VOMsg voMsg);
voMsg parameter: the message object passed by the internal software system
The void OnGetVOMessage function is called when the application receives a message from the internal software system to redirect the message to the appropriate windows. In the initial implementation, the message will be passed on to the VOMainFrame, which interprets the message. Depending on the type of the message it is either displayed in the VOOutputWnd, displayed in a message box, or passed on to the VOConferenceVw and the VOVideoWatch windows.
(b) VOMainFrame
(i) Attributes
(ii) Methods
Return Value: returns a non-zero value if successful. zero otherwise
login parameter: login id for the operator
password parameter: operator's password
The Retcode SynchWithDb function is called if the schedule has changed and the needs to be synchronized with the database.
Retcode DisplayMessage(VOMsg voMsg);
Return Value: returns a non-zero successful, zero otherwise
voMsg parameter: the VOMsg object received from the internal software system
The Retcode DisplayMessage function displays the content of the voMsg object in the output window. Based on the severity, an alert message box is also displayed.
void OnConferenceStatusChanged(VOConference* pConference); pConference parameter: pointer to the conference object whose status has changed
The void OnConferenceStatusChanged function is called when the status of a particular conference has changed.
(c) VOScheduleWnd
(i) Attributes
(ii) Methods
Retcode DisplaySchedule(BOOL filter=0);
Return Value: returns a non-zero value if successful. zero otherwise filter parameter: the filter to be applied for display of the schedule. filter=0 displays the entire schedule. filter=1 displays only the active conferences and playback calls
The Retcode DisplaySchedule function is called to display the list of conferences and playback calls in the schedule window.
Retcode DisplayConfSites(VOConference* pConference);
Return Value: returns a non-zero value if successful. zero otherwise pConference parameter: pointer to the conference object for which the sites have to be displayed in the sites list box of the schedule window.
The Retcode DisplayConfSites function is called to display the list of sites in a site list box of the schedule window.
Return Value: returns a non-zero value if the selection is different from the previous selection. zero otherwise
The Retcode OnClickScheduledItem function is called when the user clicks on an item in the schedule list box. The initial implementation displays the corresponding sites in the conference or the site and the movie details in the playback call.
Return Value: returns a non-zero value if a conference window is opened. zero otherwise
The Retcode OnDblClickscheduledItem function is called when the user double clicks on an item in the schedule list box. The initial implementation creates a new VOConferenceVw for the scheduled item.
Return Value: returns a non-zero value if the selection is different from the previous selection. zero otherwise
The Re-code OnClickSite function is called when the user clicks on an item in the site list box of the Schedule window.
(d) VOOutputWnd
(i) Attributes
(ii) Methods
Retcode DisplayMessage(CString info, VOMsg* pVoMsg=NULL);
Return Value: returns a non-zero value if successful. zero otherwise
info parameter: additional information to be displayed
pVoMsg parameter: a pointer to a VOMsg object
Retcode DisplayMessage displays a message text in the output window. If pVoMsg=NULL, only the info will be displayed.
(e) VOConferenceVw
(i) Attributes
(ii) Constructor(s)
protected VOConferneceVw( );
VOConferenceVw(VoConference* pConference);
VOConferenceVw(VOPlaybackSession* pPbSession);
pConference parameter: a pointer to the conference object for which the view is to be created.
pPbSession parameter: a pointer to the playback session object for which the view is to be created.
The conference view is used to display the information about any conference or a scheduled playback session. This view is created only by the mainframe when the user double clicks on a conference/playback session in the schedule window.
(iii) Methods
(VOConference* pConference);
PConference parameter: a pointer to the conference object whose status has changed.
void OnConferenceStatusChanged is called when the conference status has changed so that the UI can be updated accordingly.
void OnPbSessionStatusChanged(VoPlaybackSession* pPbSession);
pPbSession parameter: a pointer to the playback session object whose status has changed.
void OnPbSessionStatusChanged is called when the playback session's status has changed so that the UI can be updated accordingly.
void OnConnStatusChanged(VOConnection* pConnection);
pConnection parameter: a pointer to the connection object whose status has changed.
void OnConnStatusChanged is called when a connecion's status has changed so that the UI can be updated accordingly.
void OnCallStatusChanged(VOCall* pCall);
pCall parameter: a pointer to the playback session object whose status has changed.
void OnCallStatusChanged is called when the status of a call in the current conference/playback session has changed so that the UI can be updated accordingly.
void OnPbCallStatusChanged(VOPbCall* pPbCall);
pPbCall parameter: a pointer to the playback session object whose status has changed.
void OnPbCallStatusChanged is called when the playback session's status has changed so that the UI can be updated accordingly.
(VOConnection* pConnection);
pConnection parameter: a pointer to the Connection object whose status has changed.
void DisplayConnectionStatus is called to display a connection's status.
void DisplayCallStatus(VOCall* pCall);
pCall parameter: pointer to the call object whose status has changed.
void DisplayCallStatus is called to display a call's status (participant or MCU).
void DisplayRecordingStatus( ); is called to display the recording status if any call in a conference is being recorded.
void DisplayWatchStatus( ); is called to display the indication as to which call is being monitored, in the current conference or playback session.
void DisplayPlaybackStatus( ); is called to display the playback status.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode OnDialSite is called when the Dial button on the participant side is clicked. This will dial the participant of selected connection.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode OnDialMCU is called when the Dial button on the MCU side is clicked. This will dial the MCU port assigned to the selected participant.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode OnHangupSite hangs up the call to the participant.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode OnHangupMCu hangs up the call to the MCU.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
The Retcode OnHoldSite function puts the participant on hold (if the call is active).
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
The Retcode OnHoldMCU function puts the MCU on hold (if the call is active).
Return Value: returns a nonzero value if successful, zero otherwise.
The Retcode OnWatchSite function will monitor the current participant. The video stream corresponding to the participant will be displayed in the video watch window.
Return Value: returns a nonzero value if successful, zero otherwise.
Retcode OnWatchMCU starts monitoring the MCU leg corresponding to a participant in a conference. The video stream is displayed in the video watch window.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode OnRecordMCU starts recording the MCU stream. If the recording is already on, this function will pause/stop the recording.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode OnRecordSite starts recording the stream corresponding the selected participant. If recording is already on, recording will pause/stop.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode MakeAutoConnection is called to automatically connect the participant and the MCU and when successful, join them.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode MakeAutoDisconnection is called to automatically un-join the connection and disconnect the calls to the participant and the mcu.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode ConnectAll is called to automatically make all the connection one by one.
Return Value: returns a nonzero value if the operation has been initiated successfully, zero otherwise.
Retcode DisconnectAll is called to automatically break all the conference connections.
(f) VOVideoWatchVw
(i) Attributes
(ii) Constructor(s)
(iii) Methods
void OnDial( ); dials the number in the destination edit box.
void OnTransfer( ); transfers the current call to a number. This will initially display a dialog box where the user enters the number top which the call is to be transferred.
void OnAnswer( ); is called when the Answer button is clicked.
void OnForward( ); is called when the forward button is clicked. All the call will be forwarded to the forwarding number provided.
void OnMute( ); is called when the mute button is clicked. Turns the mute on/off.
void OnHangup( ); is called when the hang-up button is clicked. Hangs up the current call.
void OnHold( ); is called when the hold button is clicked. Puts the current call on hold.
void OnPickup( ); is called when the pickup button is clicked. Picks up the call on hold.
void OnPrivacy( ); is called when the privacy button is clicked. Turns the privacy on or off.
void OnPlayMovie( ); is called when the Play button is clicked. This will display a dialog box with a list of movies to choose from. Once a movie is selected, the movie will be played.
void OnRecordCall( ); is called when the record button is clicked.
void OnJoinToConference( ); is called when the Join Conf button is clicked. This will display the list of active conferences and sites OR playback sessions. The operator will select the site corresponding to the current call and the call will be joined to the conference.
void WatchVideo(BOOL selection);
Return Value: returns a non-zero value if successful. zero otherwise selection parameter: specifies what to watch.
selection=VDOWATCH_CONFERENCE displays the video from the site/MCU selected for watching
selection=VDOWATCH_SELF displays the output of the video operator's camera
selection=VDOWATCH_CALL displays video from the call selected from the listbox provided in the video watch window OR the video from the incoming call, if any.
Call the void WatchVideo function to select the video stream to watch.
void OnDisplayCallsWindow( ); is called when the ‘Calls’ button is clicked.
void OnSelfView( ); is called when the ‘SelfView’ check box is checked or unchecked. When the self view is checked, the video operator's camera output is displayed in a separate small window.
void OnLocalVolume( ); is called when the local volume slide bar position is changed. This will adjust the local volume.
void OnRemoteVolume( ); is called when the remote volume slide bar position is changed. This will adjust the remote volume signal.
b) Media Control Class Description
(1) VOMediaControl
(a) Attributes
(b) Constructor(s)
(c) Methods
public void SetVolume(short rightVolume, short leftVolume);
rightVolume parameter: an integer between 0-1000.
leftVolume parameter: an integer between 0-1000.
public void SetVolume sets the volume control.
public short GetVolume(short channel);
Return Value: returns the volume for the specified channel
channel parameter: set channel=PORT_CHANNEL_RIGHT for the right volume setting, and set channel=PORT_CHANNEL_LEFT for the left volume setting.
public short GetVolume returns the current volume for the specified channel
public void SetSelfView(long flags);
flags parameter: sets the properties of the self view. The valid flag values are:
SELFVIEW_ON Displays the self view;
SELFVIEW_OFF Hides the self view; and
SELFVIEW_MIRRORED Mirrors the self view.
public void SetSelfview sets the self view properties.
public long GetSelfView( );
Return Value: returns the self view settings
The public long GetSelfView function returns the self view settings which can be used to find out if the self view is visible or hidden, or if it is mirrored.
public void SetSelfViewSize(short size);
size parameter: one of the predefined sizes for the self view
public void SetSelfViewSize sets the size of the self view window. The valid values are FULL_CIF, HALF_CIF and QUARTER_CIF.
public short GetSelfViewSize( );
Return Value: returns Current self view size.
The public short GetSelfViewSize function returns the current self view window size. The values will be one of the predefined sized. See SetSelfViewSize for the description of the sizes.
public void SetAutoGain(BOOL autoGain=TRUE);
autoGain parameter: should be TRUE to enable auto gain, FALSE to disable
The public void SetAutoGain function enables or disables the auto gain depending on the autoGain value.
public BOOL GetAutoGain( );
Return Value: returns The current auto gain setting.
The public BOOL GetAutoGain function returns the current auto gain setting. TRUE if auto gain is on, FALSE otherwise.
public void SetEchoCancellation (bool bCancel);
bCancel parameter: if bCancel is TRUE cancellation is enabled; if FALSE cancellation is disabled.
public void SetEchoCancellation enables or disables echo cancellation.
public BOOL GetEchoCancellation( );
Return Value: returns the current echo cancellation state.
public BOOL GetEchoCancellation gets the current state of the current echo cancellation.
public short GetVideoMode(short mode=MODE_RX);
Return Value: returns the video mode
mode parameter: indicates receive or transmit mode.
public short GetVideoMode gets the audio mode for receive or transmit, depending on the value of mode. mode=MODE_RX for receive mode and MODE_TX for transmit.
public short GetAudioMode(short mode=MODE_RX);
Return Value: returns the audio mode
mode parameter: indicates receive or transmit mode.
public short GetAudioMode gets the audio mode for receive or transmit, depending on the value of mode. mode=MODE_RX for receive mode and MODE_TX for transmit.
public void SetVideoWnd(HWND hWnd);
hWnd parameter: pointer to the window where the video is to be displayed.
The public void SetVideoWnd function displays the video in the window identified by hWnd.
public HWND GetVideoWnd( );
Return Value: returns the window handle in which the video is being displayed. If no window is set, NULL is returned.
The public HWND GetVideoWnd function is called to retrieve the window handle in which the video is being displayed.
public void MakeVideoWndResizeable(BOOL bResize=TRUE);
bResize parameter: if bResize is TRUE, the video window is resizable; if FALSE, it is not resizable.
The public void MakeVideoWndResizeable function makes the video window resizable with bResize=TRUE. To make the window fixed size, make bResize FALSE.
public BOOL IsVideoWndResizeable( );
Return Value: returns TRUE if the video window is resizable, FALSE otherwise.
Call the public BOOL IsVideoWndResizeable function to determine if the video window is resizable.
F. Video Operator Shared Database
1. Database Schema
Each video operator record in the VDO_OPERATOR 41101 table contains a unique identification number in its ID field, which number may appear in the CONFERENCE 41104 table's operatorID field, assigning each video operator to particular conferences profiled in the CONFERENCE 41104 table. Each conference record in the CONFERENCE 41104 table, in turn, contains a unique identification number in its ID field, which number may appear in the CONF_PARTICIPANT 41108 table's confID field. Similarly, each participant record in the PARTICIPANT 41105 table contains a unique identification number in its ID field, which number may appear in the CONF_PARTICIPANT 41108 table's participantID field. Finally, each MCU record in the MCU 41102 table contains a unique identification number in its ID field, which number may appear in the MCUPORT 41106 table's mcuID field, identifying the set of MCU ports associated with the MCU. Each MCU port record in the MCUPORT 41106 table, in turn, contains a unique identification number in its ID field, which number may appear in the CONF_PARTICIPANT 41108 table's mcuPortID field. Within the CONF_PARTICIPANT 41108 table, the confID, participantID, and mcuPortID values are used as cross-referencing keys to define a particular conference with a given conference profile, a set of participants, and an MCU port.
In addition, each VOType record in the VOTYPE 41103 table contains a unique identification number in its ID field, which number may appear in the VOTYPEVALUES 41107 table's typeID field, identifying a set of values associated with the VOType.
G. Video Operator Console Graphical User Interface Windows
1. Main Console Window
2. Schedule Window
The Schedule window will have two scrolled text areas—one area for conferences 41301, and the other for sites 41302 participating in the selected conference. If a conference name is double-clicked, the appropriate Conference Window [41203
3. Conference Window
Information about the conference such as the duration, start time, end time, playback and recording status, and conference type are displayed at the bottom of the window. If the operator double clicks inside the Conference Window 41203 where there is no action associated with the clicking location, the Properties Box [41701
A conference is ended by pressing the End Conference button. This will disconnect all calls associated with the conference.
The Conference Window 41203 displays the connections in the conference and their connection status 41417, including any free MCU Port slots reserved for a not yet joined connection 41421. Each Connection listing contains a radio button 41422, the participant site name 41423 and status lights 41418-41420. The status of the two calls and the join are monitored and displayed with the site name in the Conference window 41203. The status squares 41418-41420 are colored boxes, with different colors representing different call statuses (e.g., no call, call in progress, active call, or active call that has been disconnected).
The Conference Window 41203 provides buttons to click 41417 that define the sequence in which a participant site gets connected to an MCU Port site, routed through the video operator. Other features available from this part of the window are watching the video input from a call, recording video input from either call, and making a normal video call to the participant site or to the MCU.
The color of the arrows 41424 represents the status of each call. The color of the arrows is also duplicated in the status lights 41418-41420 in the list of connections.
If there is a Playback Connection 41425 associated with the Conference, only one Call is necessary to an MCU Port site. The normal Participant Site call setup interface will be inaccessible, and the Join control 41405 will become the Start and Stop switch for playback.
Free MCU ports can be reached only when an MCU Port call for a defined Connection is inactive (or disconnected). This allows the operator to join a conference as if the operator were a participant. This is done by selecting the Connection with the free MCU port call. When connected, the operator can inform the rest of the participants that the operator is attempting to contact or restore a connection.
There are some functional limitations that the Conference Window 41203 will reflect. The Conference Window 41203 should not allow access to functions that cannot be performed, for example:
To clarify, a simple connection setup using the Conference Window proceeds as follows. By pressing the Call button near the participant site box 41402, the operator calls Adam (or, alternatively, Adam may call the operator), and then the operator places the call on Hold 41407. By pressing the Call button near the MCU Port site box 41403, the operator calls the MCU and then places the call on Hold 41408. By pressing the Join button 41405, the two calls are joined. In another embodiment, this can be an automated rather than a manual process. Adam and the MCU are now connected as H.320 video call. All three arrows 41424 will be green.
4. Video Watch Window
The Video Watch window is the display for the unidirectional H.320 decode of the video output of a selected call. By default, the MCU call of the first active site will be displayed. To watch any other call, the appropriate View button must be pressed in the Conference Windows. The video and audio controls for this window such as volume control 41509-41510, picture size 41511, etc., are managed from the Video Control Panel.
When the operator chooses to make a normal H.320 video call (point to point), to a site or an available slot in an active conference, the Video Watch window 41204 is used for viewing the video. A small self-view video window should appear nearby when the operator selects the Self View button 41506.
5. Console Output Window
6. Properties Dialog Box
XVII. World Wide Web (www) Browser Capabilities
A. User Interface
The graphical user interface is designed such that only a single IP connection from the workstation to the server is required. This single IP connection supports both the Internet connection between the WWW Browser and the WWW Site, and the messaging connection between the PC Client and the universal inbox (i.e., Message Center). The PC Client interface is integrated with the WWW Browser interface such that both components can exist on the same workstation and share a single IP connection without causing conflicts between the two applications.
WWW Browser access is supported from any of the commercially available WWW Browser interfaces:
In addition, the WWW Browser interface is optimized to support Windows 95; however, Windows 3.1 and Windows 3.11 are supported as well.
The WWW Browser interface detects the display characteristics of the user's workstation (or terminal) and adapts the presentation to support the display settings of the workstation. The presentation optimized around a 640×480 pixel display but is also capable of taking advantage of enhanced resolution and display qualities of 800×600 (and greater) monitors.
To improve performance, the user is able to select between ‘minimal graphics’ or ‘full graphics’ presentation. The WWW browser will detect whether a user has selected ‘minimal graphics’ or ‘full graphics’ and send only the appropriate graphics files.
B. Performance
Response time for downloading of information from the WWW Site or the Personal Home Page to the user's workstation or terminal meets the following benchmarks.
After a screen or page has been downloaded from the WWW Site to the workstation, the cursor is pre-positioned onto the first required field or field that can be updated.
C. Personal Home Page
The system provides subscribers the ability to establish a Personal Home Page which provides a vehicle for people to communicate with or schedule meetings with the subscriber. A person accessing a subscriber's Personal Home Page is referred to as the guest and the user that ‘owns’ the Personal Home Page is referred to as the subscriber.
Guest-access to Personal Home Pages will support the following features:
Messages generated through the subscriber's Personal Home Page are directed to the subscriber's networkMCI or SkyTel Pager, or MCI email account.
Email messages composed by guests will:
Guests ‘request’ appointments on a subscriber's Personal Home Page.
Subscribers are responsible for routinely checking their calendars and approving “(A)” or deleting requested appointments, and initiating the necessary follow-up communications to the requesting party. Approved appointments will be prefaced by “(A)”.
1. Storage Requirements
The system stores and maintains past and future appointments in the following manner:
2. On Screen Help Text
On screen help text provides guest and subscriber icon access to field specific “Help” instructions to operate within the Personal Home Page. The Help Text must provide information describing:
3. Personal Home Page Directory
The system provides the guest the ability to access to a Personal Home Page director through the existing MCI Home Page. This directory allows the guest to search all established Personal Home Page accounts for a specific Personal Home Page address, by specifying Last Name (required); First Name (optional), Organization (optional), State (optional) and/or Zip Code (optional). Results from the Personal Home Page directory search return the following information: Last Name, First Name, Middle Initial, Organization, City, State and Zip Code. Although City is not requested in search criteria it is provided in search results.
Another means for a guest to locate a Personal Home Page is through the WWW Browser. Many WWW Browsers have built in search capabilities for ‘Net Directory.’ Users' Personal Home Pages are listed within the directories of Internet addresses presented by the WWW Browser. The benefit to conducting your search from the MCI Home Page is that only Personal Home Pages are indexed (and searched). Conducting the search through the WWW Browser menu option will not limit the search to Personal Home Pages and therefore will conduct a search through a larger list of URLs. In addition, guests have the capability to enter the specific URL (i.e., Open Location) for the Personal Home Page rather than performing a search. This is especially important for those subscribers that have their Personal Home Page “unlisted” in the directory.
4. Control Bar
A Control Bar is presented at the bottom of the Personal Home Page. The Control Bar is presented after the guest has selected Personal Home Pages from the MCI Home Page. The Control Bar provides the guest access to the following features:
5. Home Page
The Home Page is the point of entry for the subscriber to perform message retrieval and exercise profile management from a WWW Browser. The Home Page is designed to provide the user easy access to the Message Center or Profile Management.
6. Security Requirements
Access to the Message Center or Profile Management is limited to authorized users. Users are prompted to enter their User ID and Password before accessing the Message Center or Profile Management. After three unsuccessful attempts, the user is blocked from accessing the Message Center or Profile Management and a WARNING message advises the subscriber to contact the MCI Customer Support Group. The account is deactivated until an MCI Customer Support representative restores the account. After the account is restored, the subscriber is required to update his or her Password.
A successful logon to the Message Center enables the user to access Profile Management without being challenged for another (i.e., the same) User ID and Password. The same is also true for users that successfully access Profile Management—they are allowed to access the Message Center without being challenged for another (i.e., the same) User ID and Password. Passwords are valid for one month. Users are prompted to update their password if it has expired. Updates to passwords require the user to enter the expired password, and the new password twice.
7. On Screen Help Text
Provide the subscriber icon access to field specific “Help” instructions to operate within the Home Page. The Help Text provides information describing:
A Control Bar is presented at the bottom of the Home Page. The Control Bar provides the guest access to the following features:
8. Profile Management
In addition to the On-Screen Help Text and Control Bar discussed above, the Profile Management screen presents a Title Bar. The Title Bar provides the subscriber easy access to the Profile Management components and quick access to the Message Center. Access to the Profile Management components is provided through the use of tabs which will include:
The directlineMCI tab includes additional tabs for the underlying components of directlineMCI which are:
The directlineMCI Profile Management system provides subscribers a Profile Management page from which account profile information can be manipulated to:
9. Information Services Profile Management
Information Services Profile Management provides subscribers the ability to select the information source, delivery mechanism (voicemail, pager, email) and the delivery frequency depending upon the information source and content. Specifically, the subscriber has the ability configure any of the following information sources:
Stock Quotes and Financial News provides the subscriber the following:
Business News Headlines are delivered via email once per day. Reports (Stock Market, Currency and Bond, Precious Metal and Commodities) are delivered at the interval specified by the subscriber. Hourly reports require that email message is time stamped at 10 minutes after the hour. AM/PM reports require that one email message is transmitted in the morning (11:10 am ET) and one email message is transmitted in the evening (5:10 PM ET), with COB reports transmitted at 5:10 PM ET.
The content of the Stock Market Report contains:
Stock Quotes and Financial News also provide the subscriber the ability to select from a list of available stocks and mutual funds and define criteria whereby a voicemail or text-based page is provided. The definable criteria are referred to as ‘trigger points’ and can be any or all of the following conditions:
After a ‘trigger point’ condition has been satisfied, a message (voicemail or text-based pager) is transmitted within 1 minute to the subscriber. Voicemail messages are directed to the subscriber's mailbox defined in the user's directlineMCI account. The information content for Stock Quotes and Financial News is no older-than 10-minutes old.
10. Personal Home Page Profile Management
Personal Home Page Profile Management provides subscribers the ability to customize their Personal Home Page and define how guests can communicate with them (email or text-based pager). In addition, Profile Management also enables subscribers to control guest access to their calendar. Specifically, the subscriber is able to:
Upon creation of the Personal Home Page, the contact information is populated with the subscriber's delivery address information. The subscriber has the capability to update that address information contained within the contact information.
11. List Management
List Management provides the subscriber the ability to create and update lists. Profile Management provides subscribers the ability to define lists accessible through the Message Center for message distribution. In one embodiment, list management is centralized such that Fax Broadcast list management capabilities are integrated with directlineMCI list management capabilities to provide a single database of lists. In an alternate embodiment, the two list management systems are separate, so the user may access either database for lists.
Lists are maintained through an interface similar to an address book on the PC Client whereby subscriber are able to add or remove names to lists. Associated with each person's name are the email address, faxmail address (i.e., ANI), voicemail address (i.e., ANI), and pager number. As messages populate the Message Center inbox (i.e., universal inbox), the address book is updated with the source address of the associated message type.
When a subscriber chooses to create a distribution list, she is prompted to select a name, type and identifier name for the list. All created lists are available in alphabetical order by name. The type of the list (voice, fax, email, page) accompanies the list name. In addition, list identifiers may consist of alphabetic characters.
The subscriber is then prompted for recipient names and addresses to create a distribution list. The subscriber is able to access his address book for recipient information. The subscriber is not be restricted to recording the same address types in his list; if a list is created with a fax type, the subscriber is able to include ANI) email and paging addresses in the list. The subscriber is able to manage his distribution lists with create, review, delete, edit (add and delete recipients) and rename capabilities.
When the user chooses to modify a list through the WWW Browser interface, she is prompted to select the address type (voice, fax, fax, paging, email) and a list of the user's distribution lists should be provided for that address type. The user is also able to enter the List Name to locate it. Users are able to modify lists through create, review, edit (add and remove recipients), delete and rename commands.
Whenever a subscriber modifies a list with a recipient addition, removal or address change, she is able to make the modification a global change. For example, a user changes the voice mailbox address for Mr. Brown in one list. she is able to make this a global change, changing that address for Mr. Brown in all of his distribution lists. While the subscriber is able to create and modify distribution lists through the ARU and VRU in addition to the PC, enhanced list maintenance capabilities are supported through the WWW Browser interface.
The subscriber is able to search and sort lists by name or by the different address fields. For example, a user is able to search for all lists containing ‘DOLE’ by using the *DOLE* command within the search function. In addition, users are able to search lists using any of the address fields. For example, a user could search based on a recipient number, ‘to’ name or zip code. A user is able to sort lists by list names, identifiers and types or by any address field.
In addition to search capabilities, the distribution list software enables the user to copy and create sub-lists from existing distribution list records. The user is able to import and export recipient data from external database structures.
The capability to share lists among users and upload lists to a host also exists.
12. Global Message Handling
Global Message Handling provides subscribers the ability to define the message types that will appear in the “universal inbox” or accessed through the Message Center. The following message types are selectable:
If a subscriber is not enrolled in a specific service then that option will be grayed-out and therefore not selectable within Global Message Handling. Any updates to Global Message Handling result in a real-time update to the Message Center. An example is that a subscriber may choose to allow voicemail messages to appear in the Message Center. The Message Center automatically retrieves all voicemail message objects that exist within the voicemail database.
D. Message Center
The Message Center functions as the “universal inbox” for retrieving and manipulating message objects. The “universal inbox” consists of folders containing messages addressed to the user. Access to the Message Center is supported from all WWW Browsers, but content contained in the “universal inbox” only presents the following message types:
In addition to the On-Screen Help Text and Control Bar discussed in the previous sections, the Message Center screen presents a Title Bar. The Title Bar provides the subscriber easy access to the Message Center functions and quick access to Profile Management. The Message Center functions that are supported through the Title Bar are:
When composing or forwarding messages through the Message Center, the user has the ability to send a message as either an email or a faxmail. The only limitation is that voicemails may only be forwarded as voicemails or as email attachments. All other message types may be interchanged such that emails may be forwarded to a fax machine, or pager messages may be forwarded as an email text message. Messages that are sent out as faxmail messages are generated in a G3 format, and support distribution to Fax Broadcast lists.
The presentation layout of the Message Center is consistent with the presentation layout of the PC Client such that they have the same look and feel. The Message Center is designed to present a Message Header Frame and a Message Preview Frame, similar to the presentation that is supported by nMB v3.x. The user will have the ability to dynamically re-size the height of the Message Header Frame and the Message Preview Frame. The Message Header Frame will display the following envelope information:
The Message Preview Frame displays the initial lines of the body of the email message, the initial lines of the first page of the faxmail message, the pager message, or instructions on how to play the voicemail message. Playing of voicemail messages through an WWW Browser is supported as a streaming audio capability such that the subscriber is not required to download the audio file to their workstation before playing it. The streaming audio is initiated after the user has selected (single left-mouse click) on the voicemail header in the Message Header Frame. Displaying of faxmail messages is initiated immediately after the user has selected (single left-mouse click) on the faxmail header in the Message Header Frame.
The Message Center also allows the subscriber to use distribution lists that have been created in Profile Management. The distribution lists support sending messages across different message types.
In addition to the basic message retrieval and message distribution, the Message Center supports the creation and maintenance of message folders (or directories) within the universal inbox. Initially users are limited to the following folders:
1. Storage Requirements
Initially, users are allotted a limited amount of storage space for directlineMCI voicemail and directlineMCI faxmail. Pager recall messages and email messages are not limited based upon amount of storage space consumed, but rather the date/time stamp of the message received. Ultimately, storage requirements will be enforced based upon a common measurement unit, like days. This will provide users an easier approach to knowing when messages will be deleted from the database, and when guests will be prevented from depositing a message (voicemail, faxmail) to their “universal inbox”. To support this, the following are storage requirements for messages retained in the inbox:
The subscriber is provided the option to download the messages that are scheduled to be overwritten in the database except for messages that are retained in the trash folder.
E. PC Client Capabilities
1. User Interface
The PC Client interface supports subscribers that want to operate in a store & forward environment. These users want to download messages to either manipulate or store locally. The PC Client is not designed to support Profile Management and the PC Client interface only presents messages (voicemail, faxmail, email, text-page). Access to Profile Management capabilities only is available through the ARU interface or the WWW Browser interface. The PC Client interface is integrated with the WWW Browser interface such that both components can exist on the same workstation and share a single IP connection.
The PC Client interface is optimized to support Windows 95; however, Windows 3.1 is supported as well.
The graphical user interface is designed to present a Message Header Window and a Message Preview Window, similar to the presentation that is supported by nMB v3.x and is supported by the WWW Browser. The user has the ability to dynamically re-size the height of the Message Header Window and the Message Preview Window. The Message Header Window displays the following envelope information:
The Message Preview Window displays the initial lines of the body of email messages or pager messages, or instructions on how to display the faxmail message or play the voicemail message. Playing of voicemail messages from the PC Client requires an audio card be present on the PC. Displaying of faxmail messages invokes the faxmail reader within the PC Client.
The Message Center also allows the user to use distribution lists that have been created in Profile Management. The distribution lists support sending messages across different message types.
2. Security
User authentication between the PC Client and the server is negotiated during the dial-up logon session. Security is supported such that the User ID and Password information is imbedded in the information that is passed between the PC Client and server when establishing the interface. Subscribers are not required to manually enter their User ID and Password. In addition, updates made to the password are communicated to the PC Client.
3. Message Retrieval
Message Retrieval provides subscribers the ability to slecetivity retrive voicemail, faxmail, pages and email messages that reside in the “universal inbox”. Message types that are display or played from the PC Client include:
directlineMCI voicemail;
directlineMCI faxmail;
directlineMCI paging; and
Email from an MCI email account;
The PC Client initiates a single communication session to retrieve all message types from the “universal inbox”. This single communication session is able to access the upstream databases containing voicemails, faxmails, emails and pages.
The PC Client also is able to perform selective message retrieval such as that the user is able to:
Retrieve all messages;
Retrieve full text (or body) for selected message header(s);
Retrieve messages based upon editable search criteria:
priority messages;
email messages;
pager messages;
faxmail messages (complete or header only);
voicemail messages (complete or header only);
sender name, address or ANI;
date/time stamp on message; and
message size.
Header-only faxmail messages retrieved from the “universal inbox” are retained in the “universal inbox” until the message body is retrieved. Voicemail messages are retained in the “universal inbox” until the subscriber accesses the “universal inbox” via the WWW Browser (i.e., Message Center) or ARU and deletes the message. Messages retrieved from the “universal inbox” are moved to the desktop folder.
In addition, the PC Client is able to support background and scheduled polling such that users are able to perform message manipulation (create, edit, delete, forward, save, etc.) while the PC Client is retrieving messages.
4. Message Manipulation
Message Manipulation provides subscribers the ability to perform many standard messaging client actions, like:
Forward all message types;
F. Order Entry Requirements
directlineMCI or networkMCI Business customers are provided additional interface options to perform profile management and message management functions. Both directlineMCI and networkMCI Business customers are automatically provided accounts to access the features and functions available through the different interface types. The ability to provide accounts to networkMCI Business customers is also supported; however not all networkMCI Business customers are provided accounts. Order entry is flexible enough to generate accounts for networkMCI Business customers, as needed.
Order entry is designed such that directlineMCI customers or networkMCI Business customers are automatically provided access to the additional interface types and services provided in the system. For example, a customer that orders directlineMCI (or networkMCI Business) is provided an account to access the Home Page for Profile Management or Message Center. Checks are in place to prevent a customer from being configured with two accounts—one from directlineMCI and one from networkMCI Business. In order to accomplish this, integration between the two order entry procedures is established.
An integrated approach to order entry requires a single interface. The interface integrates order entry capabilities such that the order entry appears to be housed in one order entry system and does not require the order entry administrator to establish independent logon sessions to multiple order entry systems. This integrated order entry interface supports a consistent order entry methodology for all of the services and is capable of pulling information from the necessary order entry systems. In addition, the interface supports the capability to see the services associated with the user's existing application.
The specific requirements of the integrated order interface system are:
These abilities give order entry administrators the flexibility to add a user based upon preexisting MCI service (email, paging, directlineMCI) account information. Alternatively, the order administrator may add a user while specifying the underlying services.
The order entry systems provide the necessary customer account and service information to the downstream billing systems. They also track the initial customer order and all subsequent updates so that MCI can avoid sending duplicate platform software (i.e., PC Client) and documentation (i.e., User Guide). In addition, order entry processes enable an administrator to obtain the following information:
Personal home pages can be ordered for a customer. The customer delivery information recorded during order entry is the default address information that is presented from the user's Personal Home Page. In addition, the order entry processes support the installation of and charging for special graphics.
The capability to turn existing feature/functionality ‘on’ and ‘off’ for a specific service exists. Features that can be managed by the user are identified within the order entry systems. These features are then activated for management within the user's directory account.
There are real-time access capabilities between order entry systems and the user's directory account. This account houses all of the user's services, product feature/functionality, and account information, whether user-managed or not. Those items that are not identified as user-managed are not accessible through the user's interface.
1. Provisioning and Fulfillment
Access requirements have been defined in terms of inbound access to the system and outbound access from the system. Inbound access includes the methods through which a user or a caller may access the system. Outbound access includes the methods through which users are handled by the system in accordance with a preferred embodiment. Internet support exists for both inbound and outbound processing.
The following components may provide inbound access:
The following components have been identified for outbound access:
G. Traffic Systems
Traffic is supported according to current MCI procedures.
H. Pricing
Initially, the features are priced according to the existing pricing structure defined for the underlying components. In addition, taxing and discounting capabilities are supported for the underlying components as they are currently being supported. Discounting is also supported for customers that subscribe to multiple services.
The billing system:
In one embodiment, the billing system supports the current invoicing procedures that exist for each of the underlying components. In an alternative embodiment, the billing provides a consolidated invoice that includes all of the underlying components. In addition to invoicing, directed billing is supported for all of the underlying components that are currently supporting directed billing.
The following is a description of the architecture of the directline MCI system, as modified for use with the system. This document covers the general data and call flows in the directlineMCI platform, and documents the network and hardware architecture necessary to support those flows. Billing flows in the downstream systems are covered at a very high level. Order Entry (OE) flows in the upstream systems are covered at a very high level. Certain portions of the directlineMCI architecture reuse existing components (e.g. the Audio Response Unit (ARU)). Those portions of the directlineMCI architecture which are new are covered in more detail.
A. Overview
In addition to billing, order entry, and alarming, the directlineMCI system is made up of three major components, as shown in
The subsections below describe each of the major components at a high level.
1. The ARU (Audio Response Unit) 502
The ARU 502 handles all initial inbound calls for directlineMCI. Some features (such as find me/follow me) are implemented entirely on the ARU. Inbound faxes are tone-detected by the ARU and extended to the VFP 504. Menuing provided by the ARU can be used to request access to the voicemail/faxmail features, in which case the call is also extended to the VFP.
2. The VFP (Voice Fax Platform) 504
The VFP provides the menuing for the voicemail/faxmail features as well as outbound fax and voice forwarding and pager notifications. The VFP is also the central data store for the customized subscriber prompts which are played and recorded by the ARU 502.
3. The DDS (Data Distribution Service) 506
The DDS is a central data repository for OE profiles and Billing Details Records (BDRs). OE profiles are deposited with DDS, which is responsible for distributing the profiles to all of the appropriate systems. DDS 506 collects BDRs and ships them to the downstream billing systems.
B. Rationale
The requirement for the directlineMCI service is to integrate a variety of service components into a single service accessed by a single 800 number. A number of these service components had been previously developed on the ISN ARU platform. The services not present in the ARU were mailbox services and fax services. The ARU 502 of the system incorporates a voicemail/faxmail platform purchased from Texas Instruments (TI). Portions of that software are ported to run on DEC Alpha machines for performance, reliability, and scalability. Another requirement for the directlineMCI implementation is integration with the mainstream (existing MCI) billing and order entry systems. The DDS provides the inbound and outbound interfaces between directlineMCI and the mainstream order entry systems.
C. Detail
Subscribers' customized prompts are stored on the VFP 504. When the ARU plays the customized prompt, or records a new prompt, the prompt is accessed on the VFP 504. Alarms from the ARU 502 and VFP 504 are sent to the Local Support Element (LSE).
1. Call Flow Architecture 520
The call flow architecture for directlineMCI is shown in
2. Network Connectivity
All inbound ISN calls are received at an Automatic Call Distributor (ACD) 524 connected to the MCI network 522. The Access Control Point (ACP) receives notice of an inbound call from the Integrated Services Network Application Processor (ISNAP) 526, which is the control/data interface to the ACD 524. The Network Audio System (NAS) plays and records voice under the control of the ACP via a T1 interface to the ACD. In the United States, a digital multiplexing system is employed in which a first level of multiplexed transmission, known as T1, combines 24 digitized voice channels over a four-wire cable (one-pair of wires for “send” signals and one pair of wires for “receive” signals). The conventional bit format on the T I carrier is known as DS1 (i.e., first level multiplexed digital service or digital signal format), which consists of consecutive frames, each frame having 24 PCM voice channels (or DS0 channels) of eight bits each. Each frame has an additional framing bit for control purposes, for a total of 193 bits per frame. The T1 transmission rate is 8000 frames per second or 1.544 megabits per second (Mbps). The frames are assembled for T1 transmission using a technique known as time division multiplexing (TDM), in which each DS0 channel is assigned one of 24 sequential time slots within a frame, each time slot containing an 8-bit word.
Transmission through the network of local, regional and long distance service providers involves sophisticated call processing through various switches and hierarchy of multiplexed carriers. At the pinnacle of conventional high-speed transmission is the synchronous optical network (SONET), which utilizes fiber-optic media and is capable of transmission rates in the gigabit range (in excess of one-billion bits per second). After passing through the network, the higher level multiplexed carriers are demultiplexed (“demuxed”) back down to individual DS0 lines, decoded and coupled to individual subscriber telephones.
Typically, multiple signals are multiplexed over a single line. For example, DS3 transmission is typically carried by a coaxial cable and combines twenty-eight DS1 signals at 44.736 Mbps. An OC3 optical fiber carrier, which is at a low level in the optical hierarchy, combines three DS3 signals at 155.52 Mbps, providing a capacity for 2016 individual voice channels in a single fiber-optic cable. SONET transmissions carried by optical fiber are capable of even higher transmission rates.
The NAS/ACP combination is referred to as the ARU 502. If the ARU 502 determines that a call must be extended to the VFP 504, it dials out to the VFP 504. The VFP media servers are connected to the MCI network 522 via T1. Data transfer from the ARU 502 to the VFP 504 is accomplished via is Dual Tone Multi-Frequency (DTMF) on each call.
3. Call Flow
The call scenarios shown in
a) Inbound FAX:
An inbound FAX call is delivered to the ARU 502. The ARU performs a faxtone detect and extends the call to the VFP 504. Account number and mode are delivered to the VFP utilizing DTMF signaling.
b) Inbound Voice, ARU Only:
An inbound voice call is made in either subscriber or guest mode, and only those features which use the ARU 502 are accessed. The ARU determines mode (subscriber or guest). In subscriber mode, the ARU queries the VFP 504 to determine the number of messages. No additional network accesses are made.
c) Inbound/Outbound Voice, ARU Only:
A call is made to the ARU 502, and either pager notification or find me/follow me features are accessed. The ARU 502 dials out via the ACD 524 to the outside number.
d) Inbound Voice, VFP Features:
A call is made to the ARU 502, and the call is extended to the VFP 504. Account number and mode (subscriber or guest) are sent to the VFP via DTMF. The guest modes are:
1. Deposit voicemail.
2. Deposit fax mail.
3. Collect fax mail.
The subscriber modes are:
1. Retrieve or send mail.
2. Maintain broadcast lists.
3. Modify mailbox name recording.
The VFP 504 continues prompting the user during the VFP session.
e) Outbound Fax/Voice/Pager, VFP only:
For FAX or voice delivery or pager notification, the VFP dials out on the MCI network 522 directly.
f) Reoriginate/Takeback:
While an inbound subscriber call is connected to the VFP 504, the user may return to the top level of the ARU 502 directlineMCI menus by pressing the pound key for two seconds. The network 522 takes the call back from the VFP 504 and reorginates the call to the ARU 502.
4. Data Flow Architecture
OE records (customer profiles) are entered in an upstream system and are downloaded at 530 to the DDS mainframe 532. The DDS mainframe downloads the OE records to the Network Information Distributed Services (NIDS) servers 534 on the ARU/ACP and the VFP/Executive Server 536. These downloads are done via the ISN token ring network 538. On the executive server 536, the OE records are stored in the local Executive Server database (not shown).
BDRs are cut by both the Executive Server 536 and the ACP 540. These BDRs are stored in an Operator Network Center (ONC) server 542 and are uploaded to the DDS mainframe 532. The uploads from the ONC servers 542 to the DDS mainframe are done via the ISN token ring network 538.
The ARU 502 prompts subscribers with their number of voicemail/faxmail messages. The number of messages a subscriber has is obtained from the VFP 504 by the ACP 540 over the ISNAP Ethernet 544. Note that the ACPs 540 may be at any of the ISN sites.
The user-recorded ad hoc prompts played by the NAS 546 are stored on the VFP 504 and are played over the network on demand by the NAS 546. The NFS protocol 548 is used over the ISNAP Local Area Network (LAN) 544 and Wide Area network (WAN) 550.
D. Voice Fax Platform (VFP) 504 Detailed Architecture
1. Overview
The TI MultiServe 4000 media server 560.
The DEC 8200 executive servers 536.
The Cabletron MMAC+ hubs 562.
The AlphaStation 200 console manager and terminal servers 564.
The Bay Networks 5000 hubs 566.
In another embodiment, the Cabletron hubs will be removed from the configuration, and the Bay Networks hubs will then carry all the network traffic.
2. Rationale
The TI MultiServe 4000 560 was selected by MCI for the voicemail/faxmail portion of the directlineMCI platform. The MultiServe 4000 is a fairly slow 68040 machine on a fairly slow Nubus backplane. The 68040/Nubus machines are used by TI as both media servers (T1 interface, DSPs for voice and fax) and also for the executive server (database and object storage). Although this hardware is adequate for media server use, it was inadequate as an executive server to serve hundreds or even thousands of gigabytes of voice and fax data and thousands of media server ports. Additionally, there is no clustering (for either performance or redundancy) available for the media server hardware. Thus, the executive server portion of the TI implementation was ported by MCI to run on a DEC Alpha 8200 cluster 536, described below. This clustering provides both failover and loadsharing (thus scalability).
Likewise, the gigabytes that must be moved from the high speed 8200 platforms must be moved across a network to the TI media servers. Cabletron Hubs 562 with both Fiber Distribution Data Interface (FDDI) and switched 10bT connectivity provide the backbone for the implementation. Each media server 560 is attached to a redundant pair of switched Ethernet ports. Because each port is a switched port, each media server gets a dedicated 10 Mb of bandwidth to the hub. The 8200 servers 536 each need a large network pipe to serve the many smaller 10 Mb Ethernet pipes. For the first embodiment, the FDDI interfaces 568 will be used. However, traffic projections show that the necessary traffic will exceed FDDI capacity by several times, so an embodiment in accordance with a preferred embodiment will use higher speed networking technology such as ATM. The hub 562 configuration is fully redundant.
The AlphaStation 200 workstation 564 is needed for operations support. The AlphaStation 200 provides console management via DEC's Polycenter Console Manager for each of the directlineMCI VFP 504 components. It also runs the DEC Polycenter Performance Analyzer software. The performance analyzer software collects and analyzes data from the 8200s for tuning purposes.
3. Detail
Notes about
The DEC Alpha 8200s 536 are in a failover configuration. The center rack is a shared disk array.
The TI MultiServe 4000 560 is actually compound of four separate media servers in a single cabinet. The diagrams after this one show each “quadrant” (one of the four media servers in a MultiServe 4000) as a separate entity. Four each of the 16 FGD T1s are connected to each quadrant.
The AlphaStation 200 workstation 564 and the terminal servers are used to provide console and system management. The Cabletron hubs 562 provide the network between the media servers 560 and the executive servers 536. The Bay Networks hubs 566 provide the network between the VFP 504 and the network routers 569.
a) Internal Hardware Network
General notes about
The left DEC 8200 machine 536 is shown with all of its ATM and FDDI connections 570 drawn in. The right DEC 8200 is shown with its Ethernet connections 572 drawn in. In actual deployment, both machines have all of the ATM, FDDI, token ring, and Ethernet connections 570 and 572 shown. The Cabletron hubs 562 show fewer connections into ports than actually occur because each 8200 536 is drawn with only half its network connectivity. Also, only one of the four media servers 560 is shown connected to the Ethernet ports. In fact, there is a transceiver and two Ethernet connects for each media server.
The Bay Hubs 566 are not shown in
Starting from the top of
The top unit contains three 4 GB drives 574 for operating system, swap, etc. The system CD drive 576 is also located here. This unit is controlled by the Single-Ended Small Computer Systems Interface (SCSI) (“SES” on the diagram) interface 578 from the main system 579.
The tape stacker 580 is a 140 GB tape unit with a single drive and a 10 tape stack. This unit is controlled from a Fast-Wide SCSI (“FWS” on the diagram) interface 582 from the main system 579.
The main system unit 579 utilizes three of five available slots. Slot 1 has the main CPU card 584. This card has one 300 MHz CPU and can be upgraded to two CPUs. Slot 2 has a 512 MB memory card 586. This card can be upgraded to 2 GB, or another memory card can be added. System maximum memory is 4 GB.
Slots 3 and 4 are empty, but may be used for additional CPU, memory, or I/O boards. Slot 5 has the main I/O card 588. This card has eight I/O interfaces:
One Fast-Wide SCSI interface 582 controls the tape stacker.
Two Fast-Wide SCSI interfaces 590-592 are unused.
The Single-Ended SCSI interface 578 controls the local system drives.
The FDDI interface 594 connects to one of the hubs.
The PCI slot 596 connects to a PCI expansion chassis 598.
One port is a 10baseT Ethernet card 600 that is connected to the corresponding card in the other 8200 536 via a private thinnet Ethernet.
This network is required for one of the system failover heartbeats.
An embodiment utilizes nine of the ten available slots in the PCI/EISA expansion chassis 598. Slots 1 and 2 have disk adapters 602. Each disk adapter 602 is connected to a RAID disk controller 604 that has another disk controller 604 (on the other machine) chained, which in turn is connected to a disk controller 604 on that machine. Thus, each of the 8200 machines 536 has two disk controllers 604 attached off of each disk adapter 602. This is the primary clustering mechanism, since either machine can control all of the disks located in
Slot 4 has an FDDI board 608. This FDDI connection is made to the hub other than the FDDI connection made from main slot 5 above. Slots 5 and 6 have ATM boards 610. It has a 10baseT Ethernet card 612 that is connected to the corresponding card in the other 8200 536 via a private thinnet Ethernet. This network is required for one of the system failover heartbeats. Slot 10 is empty.
The two units beneath the PCI chassis are Redundant Array of Inexpensive Disks (RAID) disk controllers 604. Each disk controller 604 is on a SCSI chain with two disk controllers 604 in the middle and a disk adapter 602 (one per machine) on each end. Thus there are two chains, each with two disk controllers 604 and two disk adapters 602. This is the connectivity to the main system 579. Each disk controller 604 supports six single-ended SCSI chains. In this configuration, each of the two chains has one disk controller with two SES connections, and one disk controller with three connections. Each chain has five sets 614 (or “drawers”) of disk drives as pictured in the center rack. Note the redundant power supply in the drawer with the RAID Disk Controller.
The Cabletron MMAC+hubs 562 (
There are four TI media servers 560 mounted in a single rack called a “MultiServe 4000”. Each media server in the rack is identical. Starting from the top unit, and then proceeding left to right for the main slots: The top unit 622 is a drawer that contains two 1 GB disk drives, and a removable/hot-insertable tape drive. There are two tape drives that can be shared among the four media servers. The left seven boards 624 labeled “DSP xxx” are TI MPB boards which can each support six incoming or fifteen outgoing channels, as labeled. These boards 624 are grouped together into three sets. There is a right group of three boards, a middle group of three boards, and a single board on the left. Each group has one T1. The T1 terminates at the interface marked “T1M”. This is the master T1 interface. T1 channels may be shared by the set of boards delimited by the master/slave T1 boards, and chained together by the bridge modules. The rightmost board 626 is the main CPU/IO board. This board supports an SCSI interface 628 to the disk drawer, an Ethernet connection 630 to a special transceiver 632, and a serial port for the console (not shown).
The transceiver 632 to the right of the CPU/IO board connects to Ethernet ports on each of the two main hubs 562. The transceiver senses if one of its Ethernet connections has failed, and routes traffic to the other port.
b) External Hardware/Network Connections
The Bay Hubs 566 connect the VFP system 504 to the external network through the seven routers 644 shown.
E. Voice Distribution Detailed Architecture
1. Overview
Voice Distribution refers to the portion of the architecture in which the NAS 546 (
2. Rationale
In one embodiment, voice distribution is implemented by placing a server at each ISN site and replicating the data via complex batch processes from each server to every other server.
The “Large Object Management” (LOM) project defines a network-based approach. It was decided to use the directlineMCI VFP 504 as the network-based central object store for the NAS 546 to read and write customer prompts.
The DMZ permits a customer to receive periodically generated data, such as DDS data down feeds from a mainframe database. Such data is periodically extracted from the database and placed in a user account directory on a secure File Transfer Protocol (FTP) host for subsequent retrieval by a customer.
Data access for customers is through dedicated ports at dial-in gateways, which are owned, operated and maintained by the Internet provider. Dial-in user authentication is through the use one of time passwords via secure identification cards, as is more fully described below. The cards are distributed and administered by Internet provider personnel.
The DMZ provides a screened subnet firewall that uses a packet filtering router to screen traffic from the outside unsecured network and the internal private network. Only selected packets are authorized through the router, and other packets are blocked. The use of multiple firewalling techniques ensures that no single point of failure or error in DMZ configuration puts the ISN production network at risk.
The DMZ 5105 is intended to conform to several security standards. First, individuals who are not authorized employees cannot be allowed access to internal production networks. Therefore IP connectivity through the gateway is not allowed. Second, access and use of DMZ services is restricted to authenticated and authorized users for specific purposes. Therefore all other utilities and services normally found on a general purpose machine are disabled. Third, use of DMZ services and facilities must be carefully monitored to detect problems encountered by authorized users and to detect potentially fraudulent activity.
The centerpiece of the DMZ is the DMZ Bastion host 5110. Bastion host 5110 runs an FTP server daemon that implements a modified FTP protocol, as will be described in further detail below. Bastion host 5110 is a highly secured machine used as the interface to the outside world. Bastion host 5110 allows only restricted access from the outside world. It typically acts as an application-level gateway to interior hosts in ISN 5115, to which it provides access via proxy services. Generally, critical information is not placed on Bastion host 5110, so that, even if the host is compromised, no access is made to critical data without additional integrity compromise at the ISN 5115.
Bastion host 5110 is connected to both interior and exterior users as shown in
An interior user is a user connected to the ISN production token ring 5115. Token ring 5115 is connected to an interior packet filter 5120 such as a Cisco model 4500 modular router. Packet filter 5120 is connected to token ring LAN 5125, which in turn is connected to bastion host 5110. Token ring LAN 5125 is a dedicated token ring that is isolated from all components other than bastion host 5110 and interior packet filter 5120, thereby preventing any access to bastion host 5110 through token ring LAN 5125 except as allowed by packet filter 5120.
Exterior users connect through exterior packet filter 5130, such as a Cisco model 4500 modular router. Packet filter 5130 is connected to bastion host 5110 through an isolated Ethernet LAN segment 5135. Ethernet LAN segment 5135 is a dedicated segment that is isolated from all components other than bastion host 5110 and exterior packet filter 5130. Because of the configuration, no user can access bastion host 5110 except through interior packet filter 5120 or exterior packet filter 5130.
The Bastion host 5110 resides within a firewall, but is logically outside both the ISN 5115 and the gateway site 5205.
Following authentication, the selected modem 5233 is connected to incoming call router 5240 using Point-to-Point Protocol (PPP). PPP is a protocol that provides a standard method of transporting multi-protocol datagrams over point-to-point links. PPP is designed for simple links that transport packets between two peers. These links provide full-duplex simultaneous bi-directional operation, and are assumed to deliver packets in order. PPP provides a common solution for easy connection of a wide variety of hosts, bridges and routers. PPP is fully described in RFC 1661: The Point-to-Point Protocol (PPP), W. Simpson, Ed. (1994) (“RFC 1661”), the disclosure of which is hereby incorporated by reference.
Incoming call router 5240 selectively routes incoming requests to the exterior packet filter 5130 of DMZ 5105 over a communications link such as T1 line 5250, which is connected to exterior packet filter 5130 via a channel service unit (not shown). Incoming call router 5240 may be implemented using, for example, a Cisco 7000 series multiprotocol router. Incoming call router 5240 is optionally connected to Internet 5280. However, router 5240 is configured to block traffic from Internet 5280 to Exterior packet filter 5130, and to block traffic from exterior packet filter 5130 to Internet 5280, thereby disallowing access to DMZ 5105 from Internet 5280.
Bastion host 5110 runs a File Transfer Protocol (FTP) server daemon that implements a modified FTP protocol based on release 2.2 of the wu-ftpd FTP daemon, from Washington University. Except as noted herein, the FTP protocol is compliant with RFC 765: File Transfer Protocol, by J. Postel (June 1980) (“RFC 765”), the disclosure of which is hereby incorporated by reference. RFC 765 describes a known protocol for transmission of files using a TCP/IP-based telnet connection, in which the server responds to user-initiated commands to send or receive files, or to provide status information. The DMZ FTP implementation excludes the send command which is used to send a file from a remote user to an FTP server, and any other FTP command that transfers files to the FTP host. A restricted subset of commands including the get (or recv), help, ls, and quit commands are supported.
The get command is used to transfer a file from host server 5110 to remote user 5210. The recv command is a synonym for get. The help command provides terse online documentation for the commands supported by host server 5110. The is command provides a list of the files in the current directory of the server, or of a directory specified by the user. The quit command terminates an FTP session. Optionally, the cd command, which specifies a named directory as the current directory, and the pwd command, to display the name of the current directory, may be implemented.
By disallowing send and other commands that transfer files to the server, a potential intruder is prevented from transferring a “Trojan horse” type of computer program that may be used to compromise system security. As an additional benefit, the unidirectional data flow prevents a user from inadvertently deleting or overwriting one of his files resident on the Bastion server.
When the FTP daemon initiates a user session, it uses the UNIX chroot(2) service to specify the root of the user's directory tree as the apparent root of the filesystem that the user sees. This restricts the user from visibility to UNIX system directories such as /etc and /bin, and from visibility to other users' directories, while permitting the desired visibility and access to the files within the user's own directory tree. To further assure a secured environment, the FTP daemon executes at the user-id (“uid”) of the user level, rather than as root, and allows access only to authorized users communicating from a set of predetermined IP addresses known to be authorized. In particular, the standard non-authenticated accounts of anonymous and guest are disabled.
In order to further secure Bastion server 5110, a number of daemons that are ordinarily started by the UNIX Internet server process inetd are disabled. The disabled daemons are those that are either not needed for Bastion server operation, or that are known to have security exposures. These daemons include rcp, rlogin, rlogind, rsh, rshd, tftp, and tftpd These daemons are disabled by removing or commenting out their entries in the AIX/etc/inetd.conf file. The /etc/inetd.conf file provides a list of servers that are invoked by inetd when it receives an Internet request over a socket. By removing or commenting out the corresponding entry, the daemon is prevented from executing in response to a received request.
As a further assurance of security a number of daemons and utilities are disallowed from execution by changing their associated file permissions to mark them as non-executable (e.g., having a file mode of 000). This is performed by a DMZ Utility Disabler (DUD) routine that executes at boot time. The DUD routine marks as non-executable the above-identified files (rcp, rlogin, rlogind, rsh, rshd, tftp, and tftpd), as well as a number of other daemons and utilities not ordinarily invoked by inetd. This set of daemons and utilities includes sendmail, gated, routed, fingerd, rexecd, uucpd, bootpd, and talkd. In addition, DUD disables the telnet and ftp clients to prevent an intruder from executing those clients to access an interior host in the event of a break-in. The telnet and ftp clients may be temporarily marked as executable during system maintenance activities.
Bastion host 5110 has IP forwarding disabled. This ensures that IP traffic cannot cross the DMZ isolated subnet 5115 by using Bastion host 5110 as a router.
The limited level of ftp service provided by Bastion server 5110 provides a secure ftp session but makes it difficult to perform typical system maintenance. In order to perform system maintenance, maintenance personnel must connect to Bastion host 5110 from an interior host within ISN 5115 using a telnet client. The FTP client program in Bastion is then changed from non-executable (e.g., 000) to executable (e.g., 400), using the AIX chmod command. Maintenance personnel may then execute the ftp client program to connect to a desired host on ISN 5115. During this procedure, control of transfers is therefore from within Bastion host 5110 via the FTP client program executing within that host, rather than from a client outside of the host. At the end of a maintenance session the FTP session is terminated, and the chmod command is executed again to revert the ftp client program to a non-executable state (e.g., 000), after which the ISN-initiated telnet session may be terminated.
To provide logging, Bastion server 5110 implements a TCP daemon wrapper, such as the TCPwrappers suite from Wietse Venema. The TCP wrapper directs inetd to run a small wrapper program rather than the named daemon. The wrapper program logs the client host name or address and performs some additional checks, then executes the desired server program on behalf of inetd. After termination of the server program, the wrapper is removed from memory. The wrapper programs have no interaction with the client user or with the client process, and do not interact with the server application. This provides two major advantages. First, the wrappers are application-independent, so that the same program can protect many kinds of network services. Second, the lack of interaction means that the wrappers are invisible from outside.
The wrapper programs are active only when the initial contact between client and server is established. Therefore, there is no added overhead in the client-server session after the wrapper has performed its logging functions. The wrapper programs send their logging information to the syslog daemon, syslogd. The disposition of the wrapper logs is determined by the syslog configuration file, usually /etc/syslog.conf.
Dial-in access is provided through dial-in environment 5105. The use of authentication server 5235 provides for authentication of users to prevent access from users that are not authorized to access the DMZ. The authentication method implemented uses a one-time password scheme. All internal systems and network elements are protected with one-time password generator token cards, such as the SecurID secure identification token cards produced by Security Dynamics, using an internally developed authentication client/server mechanism called Keystone. Keystone clients are installed on each element that receive authentication requests from users. Those requests are then securely submitted to the Keystone Servers deployed throughout the network.
Each user is assigned a credit card sized secure identification card with a liquid crystal display on the front. The display displays a pseudo-randomly generated six-digit number that changes every 60 seconds. For an employee to gain access to a Keystone protected system, the user must enter their individually assigned PIN number followed by the number currently displayed on the secure identification card. Such authentication prevents unauthorized access that employ the use of programs that attempt to “sniff” or intercept passwords, or Trojan horse programs designed to capture passwords from users.
Authentication information collected by the Keystone clients is encrypted with an RSA and DES encryption key, and is dispatched to one of many Keystone Servers. The Keystone Server evaluates the information to verify the user's PIN and the access code that should be displayed on that user's card at that moment. After the system verifies that both factors for that user were entered correctly, the authorized user is granted access to the system, or resource requested.
In order to assure security from the point of entry of the external network, no external gateway machine has a general access account and all provide controlled access. Each gateway machine ensures that all gateway services generate logging information, and each external gateway machine maintains an audit trail of connections to the gateway. All of the external gateway machines have all non-essential services disconnected.
The authentication server 5235 serves as a front end to all remote access dial up, and is programmed to disallow pass-through. All network authentication mechanisms provide for logging of unsuccessful access attempts. Preferably, the logs generated are reviewed daily by designated security personnel.
After starting auCheckForFaxAsync routine 5315, control proceeds to step 5320. In step 5320, the fax tone detection system adds an entry to the linked list allocated in step 5305. The added entry represents a unique identifier associated with the message being processed. In step 5330, the fax tone detection system starts the asynchronous routine auPlayFileAsync 5335. The auPlayFileAsync routine 5335 is an asynchronous program that executes concurrently with the main line program, rather than synchronously returning control to the calling program. The auPlayFileAsync routine 5335 accesses previously stored digitally recorded sound files and plays them to the originating caller. The sound files played may be used, for example, to instruct the originating caller on sequences of key presses that may be used to perform particular functions, e.g., to record a message, to retrieve a list of previously recorded messages, etc.
In step 5340, the fax tone detection system starts the asynchronous routine auInputDataAsync 5340. The auInputDataAsync routine 5340 is an asynchronous program that executes concurrently with the main line program, rather than synchronously returning control to the calling program. The auInputDataAsync routine 5340 monitors the originating call to detect key presses by the user, in order to invoke the routines to execute the tasks associated with a particular key press sequence.
As has been noted, the auCheckForFaxAsync routine 5315 executes concurrently with the main program, and generates a auCheckForFax response 5318 if and when a facsimile tone is detected. In step 5350, the fax tone detection system checks to see whether an auCheckForFax response 5318 response has been received. If a response has been received, this indicates that the originating call is a facsimile transmission, and the fax tone detection system extends the incoming call to Voice/Fax processor (VFP) 5380. If no auCheckForFax response 5318 is received within a predetermined time (e.g., 7 seconds), the fax tone detection system concludes that the originator of the call is not a facsimile device, and terminates the auCheckForFaxAsync routine 5315. In an implementation, it may be preferable to implement this check through an asynchronous interruption-handling process. In such an implementation, an execution-time routine may be set up to gain control when an auCheckForFax response 5318 event occurs. This may be implemented using, for example, the C++ catch construct to define an exception handler to handle an auCheckForFax response 5318 event.
Following the decision in step 5350, the fax tone detection system in step 5360 waits for the next incoming call.
In step 5414, the VFP completion processor obtains the mode of the VFP call. The mode is derived from the dial string provided by the originating caller, and is stored in the enCurrentNum field of the pstCall1State structure. The dial string has the following format:
The mode has one of the following values:
In step 5416, the VFP completion processor retrieves the route number associated with the addressed mailbox from the database. In step 5418, the route number is passed to the SIS layer.
As depicted in
In step 5426, the VFP completion processor obtains a predetermined timer expiration value from the otto.cfg file. The timer expiration value is set to the amount of time in which, if an answer is not received, the VFP completion processor may conclude that the VFP is not currently reachable. In step 5428, the VFP completion processor sets the timer according to the value from step 5426. In step 5430, the VFP completion processor check to see whether answer supervision occurred prior to the expiration of the timer set in step 5424. If so, control proceeds to step 5430 to transfer control to the VFP.
In step 5446, the VFP completion processor plays a previously stored digitally recorded sound file, instructing the originating caller to wait during the process of transferring the call to the VFP. In step 5448, the VFP completion processor calls routine sisOnHoldorig( ) to put the originating call back on hold. In step 5450, the VFP completion processor calls routine sisOffHoldTerm to take the VFP off hold. In step 5452, the VFP completion processor calls the auPlayDigits routine, passing to it as a parameter, a string comprising the addressed mailbox number, an asterisk (‘*’) to indicate a field separation, the mode, and an octothorp (‘#’) to indicate the end of the command string.
In step 5454, the VFP completion processor obtains a timeout value AckTimeout and an interdigit delay value from the otto.cfg file. The AckTimeout value is used to determine the amount of time before the VFP completion processor determines that no response is forthcoming from the VFP. The interdigit delay value is used to time the delays between audio signals sent that represent telephone keypad presses. In step 5456, the VFP completion processor calls the InputData routine to obtain a response from the VFP.
Following steps 5440 through 5456, or following a negative decision in step 5430, control proceeds to step 5460, as shown in
In step 5446, the VFP completion system checks the VFP response and writes the appropriate BDR term status record. The response indicates the acknowledgment from the TI platform. A response of ‘00’ indicates success, and the VFP completion processor writes a BDR_STAT_NORMAL indicator. A response of ‘01’ indicates the VFP did not receive the key to the addressed mailbox, and the VFP completion processor writes a BDR_STAT_DLINE_TI_NO_DIGITS indicator. A response of ‘02’ indicates that the VFP timed out while collecting the key, and the VFP completion processor writes a BDR_STAT_DLINE_TI_FORMAT indicator. A response of “03’ indicates that the addressed mailbox was not found, and the VFP completion processor writes a BDR_STAT_DLINE_TI_MAILBOX indicator. If no response was received, a BDR_STAT_DLINE_TI_NO_RSP indicator is written. Following the BDR indicator, control proceeds to step 5480 as shown in
If no answer was received from the VFP, the timer set in step 5428 has expired, and control passes to step 5468. In step 5468 the VFP completion processor gives a VCS alarm indicating that the VFP did not answer. In step 5470, the VFP completion processor calls routine sisReleaseTerm( ) to disconnect the call to the VFP. In step 5472, the VCS completion processor calls routine sisOffHoldOrig to take the originating call off of hold. In step 5474, the VFP completion processor calls tiCancelTimers to cancel all outstanding timers that have not yet been canceled. In step 5476, the VFP completion processor plays a previously stored digitally recorded sound file, reporting to the originating caller that the VFP completion processor was unable to connect to the VFP.
After either step 5476 or step 5466 (depending on the decision in step 5464), control proceeds to step 5480, as shown in
In step 5515, the pager termination processor checks to see if a telephone number was returned by the GetCallback. If no number was returned, in step 5520 the pager termination processor indicates that the call should be ended, and in step 5522 provides the caller with a menu to select another service.
If a number was returned, the addressed pagers PIN is obtained from the database in step 5530. The pager termination processor constructs a pager dial string comprising the pager PIN retrieved in step 5530 and the callback number obtained in step 5510. In step 5532, the pager termination processor obtains the pager's type and routing information is obtained from the database. In step 5534, the pager termination processor checks the configuration file to obtain a pager parse string that defines the parameters for pagers of the type addressed. In step 5536, the pager termination processor checks to see whether the requested pager parse string was successfully retrieved. If not, in step 5538 the pager termination processor indicates that the page could not be performed by setting the BDR term status to BDR_STAT_PAGER_NOT_FOUND, and in step 5540 provides the caller with a menu to select another service.
If the pager parse string was successfully retrieved, the pager termination processor proceeds to step 5550 as shown in
If the page was not successfully completed as shown in
If the page was not sent the pager termination processor indicates an abnormal ending to the page request in step 5586 and indicates a caller disconnect in step 5588. In step 5590, the pager termination processor presents the user with a menu permitting it to select another service or to end the call.
If the caller has not disconnected, the pager termination processor sets a code indicating the reason for the failure in step 5572. The failure types include BDR_STAT_PAGER_ROUTE_NUM (for an invalid route number); BDR_STAT_PAGER_CRIT_ERROR (for a failure in the originating call); BDR_STAT_PAGER_TIMEOUT (for the failure of the pager to acknowledge the call within a predetermined timeout time interval); BDR_STAT_PAGER_DIGITS_HOLD (for the failure of the pager subsystem to play the digits corresponding to the pager address); BDR_STST_PAGER_DISC (for a premature disconnect of the paging subsystem); and BDR_STAT_PAGER_NOT_FOUND (for an invalid parse string).
In step 5592 the pager termination processor posts the error code selected in step 5572 to the BDR. In step 5583, the pager termination processor plays a prerecorded digital sound file indicating that the page could not be sent. In step 5595 the enEndCallStatus field is updated to mark the pager call complete. In step 5597, the transfer status is marked as blank, indicating that there is no need to transfer the caller, and in step 5599, the pager termination processor presents the user with a menu permitting it to select another service or to end the call.
The following description sets forth a user interface for user-management of directlineMCI profile items currently accessed via ARU (DTMF) and Customer Service. These items include:
The following table lists the fields that the directlineMCI customer is able to update via DTMF. This list does not include all fields in the service, only those that are used by the directlineMCI application.
A user will access his directlineMCI profile via http:/www.mci.services.com/directline. Upon entry of a valid Account ID and Passcode, the user's Routing Screen will be presented. The user may click on tabs to move from one screen to another. If a user returns to a screens that's been updated during that session, the screen will be displayed as it was when he last left it, i.e. any updates he's submitted will be reflected in the data. If, however, a user logs off, or times out, when next he logs into his profile management screens, the data displayed will be from a new query into the 800PIN—1Call database. Updates made within the last 15 minutes may not have reached the NIDS databases serving the Web Server, so the data may not reflect any recent updates.
The following items will appear in the index frame, and will act as links to their associated Web screen. When a user ‘clicks’ on one of these items, the associated screen will be displayed in the text frame.
In addition, a LOGOFF button will appear at the bottom of the index frame. Clicking on this button will result in immediate token expiration, and the user will be returned to the login screen.
F. Login Screen
directlineMCI Number 702
The account ID will be the directlineMCI customer's10-digit access number, of the format 8xx xxx xxxx. This number, Concatenated with a PIN of ‘0000’, will be the key into the 1Call database, which contains the customer profile data.
The user will not be allowed a successful login if the Program flag (PIN flag 4) is set to ‘N’. If a login attempt is made on such an account, the Login Error screen will be displayed.
The passcode will be the same as that used to access user options via the ARU interface. It is a six-character numeric string. The user's entry will not be echoed in this field; an asterisk (*) will be displayed for each character entered.
directlineMCI Number: “Enter your directlineMCI number.”
Passcode: “Enter your passcode.”
G. Call Routing Screen
The user can specify whether calls are accepted at 712 on her account by selecting the appropriate radio button 714 or 716. These buttons correspond directly to the Account Available flag (State flags, bit 3) in the customer's directline record:
“Choose from the Selections Below” Section 718
The user specifies whether the guest caller should receive a Guest Menu, or Override Routing treatment. This selection will indicate whether the data in the Guest Menu or Override Routing screen is applicable.
The customer's Override Termination will be populated as follows, according to the user's selection:
A user specifies call treatment for those calls for which he was unable to be reached. The Alternate Termination in the customer record is updated as follows:
Depending on the choices made by the user, the following status messages are provided to the user for each selection identified below:
Do Not Accept Calls: “No calls will be accepted on your directlineMCI Number.”
Accept Calls: “Calls will be accepted on your directlineMCI Number.”
Guest Menu: “Lets callers select how they want to contact you.”
No Menu—Override Routing: “Routes callers to a specific destination selected by you.”
Voicemail: “Callers will be asked to leave a voicemail.”
Pager: “Callers will be prompted to send you a page.”
Voicemail or Pager: “Callers can choose to leave you a voicemail or send you a page.”
Closing Message: “Callers will hear a message asking them to try their call later.”
H. Guest Menu Configuration Screen
When Override Routing has been disabled, i.e., when Guest Menu has been selected, a Guest Menu will be presented to the guest caller. The user has the ability to configure his Guest Menu using a guest menu configuration screen 730 (
The user can specify whether callers will be offered the paging option by toggling the box labeled Send me a Page. This box corresponds directly to the Pager On/Off flag (State flags, bit 13) in the customer's directline record:
Find Me Routing: “Allows callers to try to ‘find you’ wherever you are.”
Schedule Routing: “Routes callers based on your schedule.”
Three Number . . . : “Allows callers to locate you through the three numbers.”
1st #, 2nd #, 3rd #: “Enter telephone number.”
1st, 2nd, 3rd Ring Limit: “Enter the number of times to ring at this number.”
Leave a Voicemail: “Allows callers to leave you a voicemail.”
Send a Fax: “Allows callers to send you a fax.”
Send a Page: “Allows callers to send you a page.”
I. Override Routing Screen
When this option is initially selected from the Profiles screen, there will be no Override Routing setting in the user's customer record. The default setting, when this screen is presented, will be Voicemail, if available, Find-Me if Voicemail is not available.
Find Me Routing: “Allows callers to only try to ‘find you’ wherever you are.”
Schedule Routing: “Routes callers based on your schedule.”
Three Number . . . : “Allows callers to locate you through the three numbers.”
1st #, 2nd #, 3rd #: “Enter telephone number.”
1st, 2nd, 3rd Ring Limit: “Enter the number of times to ring at this number”
Voicemail: “Callers will be prompted to leave you a voicemail only.”
Send a Page: “Callers will be prompted to send you a page only.”
Temporary Override Number: “caller will only be routed to this number you select.”
Telephone Number Ring Limit: “Enter the number of times to ring at this number”
J. Speed Dial Screen
1-9: “Enter speed dial number <1-9>.”
“Page Me when I Receive” Checkbox
“Page me when I receive a new voicemail message” Checkbox 754. This box corresponds directly to the Page on Vmail flag (PIN flags, bit 15) in the customer's directline record:
Receive voicemail . . . : “Callers will be able to leave you a voicemail message.”
Page me each time . . . : “You will be paged when you receive a voicemail message.”
“My Primary Fax Number is” Field 762
Profile management of this item is shown as it appears on the Faxmail Screen.
“Page Me when I Receive” Checkbox 766
This item appears as a “Page me when I receive a new voicemail message” Checkbox 766. This box corresponds directly to the Page on Fax flag (PIN flags, bit 16) in the customer's directline record:
Receive fax . . . : “Callers will be able to send you a fax.”
Page me each time . . . : “You will be paged when you receive a fax.”
Allow me to screen . . . : “Activating this feature allows you to screen your calls.”
Name only: “Caller's name will be presented to answering party.”
Telephone number: “Caller's telephone number will be presented to answering party”
Name and Telephone: “Caller's name and telephone number will be presented to answering party.”
This error screen is presented when a login attempt has failed due to an invalid account number, passcode, or a hostile IP address. This is also the screen that is displayed when a user's token has expired and he's required to login again.
This screen is presented when an update has been successfully completed. The ‘blank’ will be filled in with: ‘Call Routing options have’, ‘Guest Menu options have’, ‘Override Routing has’, ‘Speed Dial Numbers have’, ‘Voicemail options have’, ‘Faxmail options have’, and ‘Call Screening option has’.
This screen will be presented when a user has attempted to enter one or more invalid terminating number(s), or to update his account with a blank First number. The account will not be updated until corrections are made and all numbers are successfully validated.
In the various screens of the user interface, profile options are ‘grayed out’, indicating that the option is not available from the screen, based on the following flag settings:
For some of the profile options described above, validation checks are made as follows:
The integrated switching system and packet transmission network of this invention allows the provision of an improved feature set for users. directlineMCI is a single-number access personal number, with features including Find-Me functionality, voicemail, paging, and fax store and forward services. A subscriber, or user, is asked for profile information, which is entered into his customer record in the directlineMCI database on the ISN mainframe. The product's feature set includes:
Personal Greeting The user has the option of recording a personal greeting to be played to his guest callers. If a user records a personal greeting, it replaces the ‘Welcome to directlineMCI’ default greeting.
Guest Menu: The Guest Menu is defined by which features the user has subscribed to. A guest caller to a ‘fully loaded’ account will be presented options to Speak to or Page the user, Send a Fax, or Leave a Voicemail Message.
3-Number Sequence for Find-Me functionality: The system attempts to reach the user at three numbers, trying the First (Primary) number, then the Second(ary), then the Third (Tertiary) number. If no answer is received at any of these numbers, the call is treated as prescribed in Alternate Routing.
2-Level Schedule for Find-Me functionality: The system attempts to reach the user at two numbers, using current date/day/time information to query his schedules. Attempts are made to a number from the user's Schedule 1, then Schedule 2; if no answer is received, Alternate Routing defines the treatment.
Alternate Routing allows the user to prescribe the treatment of a guest caller who chooses to reach him, but no answer was received at any of the attempted numbers. Options for Alternate Routing include Voicemail, Pager, a Guest's choice of Voicemail or Pager, or a Closing Message, asking the caller to try his call again at a later time.
Override Routing allows the user to disable the presentation of the Guest Menu, and prescribe a single treatment for all guest callers. Options include completion to a telephone number, the user's defined Find-Me sequence, Voicemail, or Pager.
Default Routing is the treatment of a guest caller who, when presented the Guest Menu, does not respond after three prompts. Default Routing options include a transfer to the Operator, completion to a telephone number, the Find-Me sequence, or Voicemail.
Call Screening allows the user to define whether or not he wishes callers to be announced before being connected. Options include no call screening, or having the caller identified by name, originating telephone number, or both name and number.
The ‘Place a Call’ option in the user's menu allows him to make a call, and have it charged to his directlineMCI account.
Voice/Faxmail: Both voice and fax messages can be stored for later retrieval by the user. The user may opt to be notified when new voice and/or fax messages are deposited into his mailbox.
The Voice/Fax Platform (VFP) has been integrated into the Intelligent Services Network (ISN), to allow the ISN applications to query its databases, and billing records to be cut directly from the VFP.
Among the changes to the original directlineMCI product are the following items:
Find-Me Routing now has two options, selectable by the subscriber: the 3-number sequence currently implemented, or the 2-level schedule option. The schedule option is implemented such that the subscriber's Schedule 1 translation will be treated as the primary termination, and his Schedule 2 translation will be treated as the secondary termination. Find-Me Routing is described in more detail in the Call Flow diagrams and ARU Impacts sections.
Default Routing is the prescribed action the application takes when a caller does not respond to Guest Menu prompts. Options for Default Routing include a telephone number, voicemail, Find-Me routing, and Operator transfer.
When a subscriber accesses the user menu, the application provides mailbox status information, including the number of new voice or fax messages, and if his mailbox is full. The application launches a query to the VFP database to obtain this information.
In addition to the ability to complete a call to a telephone number entered real-time, the subscriber is now able to complete to programmed Speed Dial numbers. These 9 Speed Dial numbers will be user-programmable via DTMF.
K. ARU Call Flows
FIGS. 69A through 69AI depict automated response unit (ARU) call flow charts showing software implementation of the directline MCI product described above, and are useful for a further understanding of the invention.
If the caller requests to speak to a subscriber, the ARU checks the schedule flags associated with the caller's profile. If the subscriber's profile indicates routing by schedule, the ARU in Step 69042 performs the Find Me routine of
If the caller requests to leave a voice mail message, the ARU checks to see whether the subscriber's mailbox is full. If the mailbox is full, a recorded message is played and the caller is returned to the guest menu. If the mailbox is not full, a recorded message is played advising the caller to hold while he is transferred to the ARU Voicemail routine in Step 69046.
If the caller requests to send a fax, the ARU checks to see whether the subscriber's mailbox is full. If the mailbox is full, a recorded message is played and the caller is returned to the guest menu. If the mailbox is not full, a recorded message is played advising the caller to hold while he is transferred to the voice/fax routine in Step 69048.
If the caller requests to page the subscriber, the ARU in Step 69050 performs the ARU Send Page routine, which is described with respect to
If the caller enters a valid passcode, the ARU in Step 69052 performs the ARU User Call routine, which is described with respect to
If Term_Slot is set to “Voicemail,” the ARU plays a message to the caller that the subscriber has requested that the caller leave a voice mail message. If the subscriber's mailbox is not full, the ARU in Step 69064 performs the ARU Xfer to Voice/Fax Guest Voice routine, depicted in
If Term_Slot is set to “Pager,” the ARU plays a message to the caller that the subscriber has requested that the caller leave a request to page the subscriber. The ARU then performs the ARU Send Page routine, which is described with respect to
If Term_Slot is set to any POTS (“Plain Old Telephone Service”) value (such as Sched1, Sched2, First, Second, or Third), the POTS value indicates that the subscriber has specified that incoming calls be sent using the standard telephone system, and the ARU has been directed to use the particular scheduled or selected telephone number. In Step 69070, the ARU performs the ARU Record Name routine to acquire a digital recording of the caller's identification. The ARU Record Name routine is described in detail with respect to
If there is neither a live answer, a line busy signal, nor an answering machine answer, then if Term_Slot is set to “Operator,” the ARU performs the ARU Guest Xfer to MOTC routine, described below with respect to
In Step 69304, the ARU plays a menu for the subscriber. In the example shown, item ‘1’ corresponds to a request to change call routing; item ‘2’ corresponds to a request to send or retrieve mail; item ‘3’ corresponds to a request to place a call; item ‘4’ corresponds to a request for the administration menu; and item ‘0’ corresponds to a request to be transferred to customer service.
If the subscriber selects the option to change call routing, the ARU in Step 69310 performs the ARU Change Routing routine, described below with respect to
If, from the ARU Change Routing menu of Step 69390 the subscriber selects the “Alternate Routing” option, the ARU in Step 69409 plays a message indicating the subscriber's present alternate routing setting and in Step 69410 presents the subscriber with a menu to select a new option. If the subscriber selects a change in option, the ARU performs, as Step 69414, the ARU Program routine to set the alternate option as specified, by passing the parameters of “alternate” and the selected option. If the subscriber selects the “Cancel” option, the ARU returns to Step 69390.
If, from the Change Routing menu of Step 69390, the subscriber selects the “cancel and return” option, the ARU in Step 69412 returns to the user menu of
If the subscriber selects an option to change the schedule routing, the ARU in Step 69450 checks whether the subscriber is eligible for schedule routing. If so, in Step 69454 the ARU plays a message indicating that the Find-Me routing is set to the subscriber's schedule and in Step 69456 toggles the schedule setting to enable it. After toggling the setting, the ARU in Step 69450 returns to the ARU Change Routing routine of
If the subscriber selects an option indicating cancel and return, the ARU returns to the ARU Change Routing routine of
If, in response to the menu presented in Step 69460, the subscriber selects an option to record greetings, the ARU in Step 69474 presents the subscriber with a menu of options. In the example depicted, item ‘1’ corresponds to a request to modify the subscriber's welcome message; item ‘2’ corresponds to a request to modify the name associated with subscriber's mailbox. If the subscriber selects the option to modify the welcome message, the ARU in Step 69476 performs the ARU Play Greeting routine of
If, in response to the menu presented in Step 69460, the subscriber selects an option to activate or deactivate features, the ARU in Step 69484 performs the ARU Feature Activation routine, which is described below with respect to
If the subscriber selects an option to review the present contents of the subscriber's custom greeting, the ARU in Step 69504 performs the ARU Play Temp Greeting routine, previously described with respect to
If, in response to the menu presented in Step 69500, the subscriber selects an option to use the system greeting (i.e., a default greeting that does not identify the subscriber), then the ARU in Step 69520 erases any previously-recorded greeting and in Step 69522 plays a prerecorded message that callers will now hear the system greeting instead of a personalized greeting. The ARU then returns in Step 69525 to the ARU Administration routine, previously described with respect to
If the subscriber selects an option to activate or deactivate a pager, the ARU in Step 69538 plays a recorded message indicating the new status of the pager notification option. In Step 69540, the ARU toggles the current status of the pager option (i.e., enables the option if it is currently disabled, or disables the option on if it is currently enabled). After the toggle, the ARU returns to Step 69530.
If the subscriber selects the pager notification option, the ARU in Step 69542 plays a recording indicating the current setting of the pager notification option. In Step 69544, the ARU presents the subscriber with a list of options relating to pager notification. In this example, item ‘1’ corresponds to a request to select notification by pager only of incoming voicemails; item ‘2’ corresponds to a request to select notification by pager only of incoming faxes; item ‘3’ corresponds to select request to select notification by pager both for incoming voicemails and for incoming faxes; and item ‘4’ corresponds to a request to turn off call pager notification completely. If the subscriber selects one of these options, the ARU in Step 69546 performs the ARU Program routine, described below with respect to FIG. 69AA, passing it a first parameter to indicate that the pager notification option is desired to be altered, and a second parameter indicating the value to which the option should be set. Following Step 69546, the ARU returns to Step 69530. Likewise, if the subscriber selects a cancel and return option in Step 69544, the ARU returns to Step 69530.
If the subscriber selects an option in Step 69530 to activate or deactivate his or her account, the ARU in Step 69550 plays a recorded message indicating the new account status. In Step 69552, the ARU toggles the current status of the account option (i.e., activates the option if it is currently deactivated, or deactivates the option on if it is currently activated). After the toggle, the ARU returns to Step 69530.
If the subscriber in Step 69530 selects the cancel and return option, the ARU returns to the ARU Administration routine, described above with respect to
FIG. 69AA depicts the ARU Program routine, which is performed by the ARU to set options selected by the subscriber. As shown in Step 69560, the Program routine takes as input two parameters: Term_Slot, which identifies the option whose value is being altered, and Term, whose value indicates the value to which the option addressed by Term_Slot is being set. In Step 69562, the ARU checks the type of value specified in Term. If the term value is a POTS identifier (i.e. a telephone number, such as a telephone number being programmed into a speed-dial number, as in Step 69494 in
If the Term value is not a POTS identifier, the ARU in Step 69580 plays a message that informs the subscriber that the addressed option is about to be changed. In Step 69582, the ARU prompts the subscriber to confirm or cancel the request. If the subscriber opts to confirm the request, the ARU in Step 69584 stores the Term parameter value as the variable addressed by the Term_Slot parameter and returns to the calling routine in Step 69586. If the subscriber cancels the request, the ARU returns to the calling routine in Step 69572 without storing the value.
FIG. 69AI depicts the ARU User Xfer to Customer Service routine. In Step 69592, the ARU plays a prerecorded message to the subscriber asking the subscriber to hold. In Step 69594, the ARU then transfers the subscriber to customer service.
FIG. 69AB depicts the ARU Validate Guest Entry routine. This routine is used by the ARU to determine whether an attempt by a guest to use the VFP guest facilities is valid. The ARU permits up to 3 attempts for the guest to enter his or her identification information. For the first two invalid attempts, the ARU, in Step 69610, returns a status that the guest entry was invalid. On a third attempt, the ARU in Step 69615 performs the ARU Find-Me routine of
FIG. 69AC depicts the ARU Validate User Entry routine, which is used by the ARU to validate an attempt by a subscriber to use subscriber services of the VFP. If no user entry is received, the ARU in Step 69630 plays a diagnostic message that no entry was received. If an entry was received, the ARU checks in Step 69634 whether the menu to which the subscriber was responding includes an option for user entry. If so, the ARU returns a valid status in Step 69636. If not, the ARU in Step 69638 plays a diagnostic message that that option is not available. If either no entry was received or the entry was not valid for the menu, the ARU in Step 69632 checks to see whether this is the third failure to specify subscriber information. If so, the ARU in Step 69640 performs the ARU User Xfer to Customer Service routine of FIG. 69AI. If this is the first or second failed entry, the ARU returns an invalid status in Step 69642.
FIG. 69AD depicts the ARU Validate Passcode Entry routine, which is used by the ARU to authenticate a passcode entered by a subscriber. In Step 69650, the ARU checks to see whether the passcode enters matches the passcode for the specific subscriber. If so, in Step 69652 the ARU returns with a valid status. If the entry is not valid, the ARU in Step 69654 plays a recorded message that the entry is not valid. The ARU allows two attempts to specify a valid passcode. In Step 69656, the ARU checks to see whether this is the second attempt to enter a passcode. If this is the second attempt, the ARU in Step 69660 performs the ARU User Xfer to Customer Service routine, which is described above with respect to FIG. 69AI. If this is not the second failure, the ARU in Step 69658 prompts the subscriber to enter a valid passcode and returns to Step 69650.
FIG. 69AE depicts the ARU Validate Completion routine, used by the ARU to validate the entry of a valid telephone number. In Step 69670 the ARU checks to see whether a valid user entry had been received. If not, the ARU checks to see if this is the third invalid entry attempted. If not, the ARU in Step 69672 returns an indicator that no valid entry was received. If this is the third attempt, in Step 69674, the ARU plays a message and in Step 69676 performs the ARU Xfer User to MTOC routine, which is described above with respect to
If a valid user entry was received, the ARU checks to see whether a telephone number entered begins with “011.” If so, the ARU in Step 69680 performs the ARU Validate International Completion routine of FIG. 69AF. In Step 69682, the ARU checks to see whether the domestic terms flag has been set by the subscriber. If not, the ARU in Step 69684 plays a diagnostic message that domestic calls are not available, and proceeds to Step 69671. In Step 69686, the ARU checks to see whether a ten-digit number was entered, and in Step 69688 checks to see whether a valid MPA-Nxx number was entered. If number entered was not a ten-digit valid MPA-Nxx number, the ARU in Step 69690 plays a diagnostic message and proceeds to Step 69671. In Step 69690, the ARU checks to see whether NADP blocking is effective for this subscriber, and in Step 69692, the ARU checks to see whether 976 blocking is effective for this subscriber. If either blocking is effective, the ARU in Step 69694 plays a diagnostic message indicating that calls to the addressed number are blocked and proceeds to Step 69671. Otherwise, the ARU in Step 69696 returns with a status that the number entered is valid.
FIG. 69AF depicts the ARU Validate International Completion routine. In Step 69700, the ARU checks to see whether the subscriber is configured to place international calls. If not, the ARU plays a diagnostic message in Step 69702. In Step 69704, the ARU checks to see whether the number entered is syntactically valid as an international dialing number. If not, the ARU in Step 69706 plays a diagnostic message. In Step 69708, the ARU checks to see whether Cset blocking will block the specified number. If so, the ARU in Step 69710 plays a diagnostic message. If no error conditions were found, the ARU returns a valid status in Step 69712. If errors were found the ARU in Step 69713 returns an invalid status. If three failed attempts have been made to enter a number, the ARU plays a status message in Step 69714 and transfers the subscriber to the operator in Step 69716.
FIG. 69AG depicts the ARU Validate POTS Programming routine, used by the ARU to ensure that only a valid telephone number is stored for use by call routing. In Step 69720 the ARU checks to see whether a valid user entry had been received. If not, the ARU checks to see if this is the third invalid entry attempted. If not, the ARU in Step 69722 returns an indicator that no valid entry was received. If this is the third attempt, in Step 69676 performs the ARU User Xfer to Customer Service routine, which is described above with respect to FIG. 69AI.
If a valid user entry was received, the ARU checks to see whether a telephone number entered begins with “011.” If so, the ARU in Step 69730 performs the ARU Validate International Completion routine of FIG. 69AF. In Step 69732, the ARU checks to see whether the domestic terms flag has been set by the subscriber. If not, the ARU in Step 69734 plays a diagnostic message that domestic calls are not available, and proceeds to Step 69721. In Step 69736, the ARU checks to see whether a ten-digit number was entered, and in Step 69738 checks to see whether a valid MPA-Nxx number was entered. If neither was entered, the ARU in Step 69740 plays a diagnostic message and proceeds to Step 69721. In Step 69750, the ARU checks to see whether 976 blocking is effective for this subscriber. If so, the ARU in Step 69754 plays a diagnostic message indicating that calls to the addressed number are blocked and proceeds to Step 69721. Otherwise, the ARU in Step 69756 returns with a status that the number entered is valid.
FIG. 69AH depicts the ARU Validate International Programming routine used by the ARU to assure that only a valid telephone number is stored for use by call routing. In Step 69760, the ARU checks to see whether the subscriber is configured to place international calls. If not, the ARU plays a diagnostic message in Step 69762. In Step 69764, the ARU checks to see whether the number entered is syntactically valid as an international dialing number. If not, the ARU in Step 69766 plays a diagnostic message. In Step 69768, the ARU checks to see whether Cset blocking will block the specified number. If so, the ARU in Step 69770 plays a diagnostic message. If no error conditions were found, the ARU returns a valid status in Step 69772. If errors were found, the ARU in Step 69773 returns an invalid status. If three failed attempts have been made to enter a number, the ARU plays a status message in Step 69774 and transfers the subscriber to the operator in Step 69776.
If the account is currently online, the console checks to see whether the subscriber has indicated an override for incoming calls. If so, the console routes the call to the operator in Step 70018. If the caller is generating a fax tone, the console in Step 70024 performs the Console Fax Tone Detected routine, described below with respect to
If override has not been specified, the console in Step 70030 presents an audible menu to the caller. In the example shown, item ‘1’ corresponds to a request to speak to a subscriber; item ‘2’ corresponds to a request to leave a voice mail message for a subscriber; item ‘3’ corresponds to a request to send a fax to a subscriber; and item ‘4’ corresponds to a request to page a subscriber. In addition, a subscriber may provide his or her passcode to gain access to the console as a subscriber.
If the caller requests to speak to a subscriber, the console in Step 70032 checks the schedule flags associated with the caller's profile. If the subscriber's profile indicates a schedule, the console in Step 69034 performs the Console Find Me routine of
If the caller requests to leave a voice mail message, the console in Step 70040 performs the Console Xfer to Voice/Fax Guest routine, described below with respect to
If the caller provides a passcode, the console in Step 70046 performs the Console Validate Passcode routine, which is described with respect to
If Term_Slot is set to “Voicemail,” the console plays a message to the caller that the subscriber has requested that the caller leave a voice mail message, and in Step 70074 performs the Console Xfer to Voice/Fax Guest Voice routine, as depicted in
If Term_Slot is set to “Pager,” the console plays a message to the caller that the subscriber has requested that the caller leave a request to page the subscriber. The console then performs the Console Send Page routine, which is described with respect to
If Term_Slot is set to any POTS value (such as Sched1, Sched2, First, Second, or Third) that indicates that the subscriber has specified that incoming calls are to be sent using the standard telephone system, and the console has been directed to use the particular scheduled or selected telephone number. In Step 70070, the console performs the Console Record Name routine to acquire a digital recording of the caller's identification. The Console Record Name routine is described in detail with respect to
If the call is answered by an individual, the console in Step 70072 performs the Console Connect Call routine, which is discussed below with respect to
If the line called is busy, or if no more numbers to check remain, the console in Step 70074 performs the Console Alternate Routing routine of
If the subscriber has indicated a “guest option,” the console in Step 70190 performs the Console Alternate Routing Guest Option routine of
In Step 70330, the console checks to see whether Cset blocking will block the specified number. If so, the console in Step 70332 plays a diagnostic message. If no error conditions were found, the console returns a valid status in Step 70334.
Implementation of the improved directline MCI product as described above has the following impacts on billing procedures.
directlineMCI domestic Bill Type: 15
directlineMCI international Bill Type: 115
directlineMCI Call Types:
Billing Detail Records and OSR's for billing, and SCAI messaging for reorigination, are populated as follows for the various directlineMCI Call Types:
Bill Type 115 is not applicable for BDR's generated by the VFP (Call Types 144); because all these calls are originated at the VFP, they are all billed as domestically originated, using Bill Type 15.
The following are the new directlineMCI scripts for the automated response unit (ARU), referencing the corresponding call flow diagram on which they appear:
The following are the new directlineMCI scripts for the Console Application:
ARU impacts are described in detail below, as well as in the call flow diagrams.
In general, throughout the call flow, at every opportunity for user/caller input, the possibility of response delay is minimized as much as possible. Following are some examples:
During ‘guest’ portion of the call, the subscriber may enter ‘*’, at which time the NIDS Audio Server (NAS) begins to collect 6 passcode digits, applying an inter-digit timeout.
During playing of the Guest Menu, a single key pressed results in an immediate response, unless the key pressed is the ‘*’ key, at which point the NAS collects six passcode digits
During playing of any User Menu, a single key pressed results in an immediate response, except in the Outbound Call menu. Because a domestic telephone number, an international telephone number, or a Speed Dial number can be entered here, the system allows the user to press ‘#’, which indicates the end of dialed digits. The ‘#’ is accepted whether it's entered following a single digit entry or a string of digits, i.e. a telephone number.
At any place in the call flow where the user is able to enter a domestic or international number, the ‘#’ key must be accepted to indicate the end of dialed digits. This includes during programming of the First, Second or Third Find-Me numbers, Override Routing to POTS and Speed Dial numbers.
Where possible, the ability for the user to ‘power dial’ is built into the call flow. This means that, in the event that multiple keys are pressed, scripting is bypassed and the appropriate menu is reached.
One access method is supported for directlineMCI in this embodiment: 800/8xx number access, with no PIN. The PIN field in the database is defaulted to 0000.
All directlineMCI calls received are subject to a Billed Number Screening validation, to verify that the number has not been tagged as a Fraud risk. The lookup is into Category 5, Type 0; the flag checked is the Credit Card (Hot) flag. In the event that the number has been ‘shut down’, i.e. the Hot flag is set to ‘Y’, the application treats the call as an off-line account, but does not allow a subscriber to access programming options.
Callers are able to access the directlineMCI platform via WorldPhone. In a preferred embodiment, these calls arrive at the directline platform with a pseudo-ANI in the Originating Number field of the SCAI message. This pseudo-ANI is associated with the specific Feature Group A (FGA) circuit on which the WorldPhone call extension was launched. In another embodiment, the true originating country information is forwarded to the directline platform; the Originating Number field is populated with the 3-digit Country Code.
In a preferred embodiment, the WorldPhone-originated directline call is billed as follows:
Calls originating via WorldPhone, and arriving at the directline platform with a pseudo-ANI as the origination, are billed as domestic, using Bill Type 15. The Originating Number field in the BDR is the FGA pseudo-ANI.
In another embodiment, the call is billed as follows:
The ARU and Console implement code to identify whether the Originating Number field contains a pseudo-ANI or true origination information. If the true Country Code origination information is provided, the application refers to its configuration files, where a WorldPhone pseudo-ANI is an optional entry. The existence of this item in the configuration file indicates to the application how the call should be billed.
If the application finds a WorldPhone pseudo-ANI in its config file, the call is billed as domestic, using Bill Type 15. The Calling Number in the BDR is set to that WorldPhone pseudo-ANI, and the application instructs the bridging switch to change its Originating Number to that same pseudo-ANI.
If the application does not find the WorldPhone pseudo-ANI in its config file, the call is billed as international, using Bill Type 115, and the Originating Number information is retained in the switch record. The BDR is populated with a 10-digit string: ‘191’+3-digit Country Code+‘0000’.
Guest call routing is prescribed by the directlineMCI subscriber in several ways, as described in the following paragraphs:
Blocking checks for guest termination, based on origination, are included below.
Two options are provided to the user in defining Call Routing: the Find-Me sequence, and the Schedule sequence. With the exception of Schedule definition, the user has the ability to define Call Routing via DTMF.
If the user has chosen the Find-Me sequence for his Call Routing, the application launches a call to the user's Primary (First) programmed number. If a live answer is received, the guest caller is connected with the answering party. Call screening, described below, may be active, in which case the answering party must actively accept the call before it is connected. If the line at the First number is busy, the call is routed to the user's programmed Alternate Routing, described below. If no answer is detected after a configurable time, the application launches a call to the user's Secondary (Second) programmed number.
Answer treatment at the Second number is the same as for a call attempt to the First number with no answer resulting in a call attempt to the user's Tertiary (Third) number. Answer treatment at the Third number is the same, with no answer resulting in Alternate Routing.
If, at any point in this calling sequence, a termination slot is not programmed, the application skips that number in the sequence, and proceeds to the next number, or Alternate Routing.
For any programmed international termination, the application looks up the terminating country code in the Country Code tables. If the Direct Dial Country flag is set to ‘Y’ for that country, the ARU transfers the call to the manual console (TTC=1e) for processing.
If the user has chosen the Schedule sequence for his Call Routing, the application takes the Schedule 1 Trans and Schedule 2 Trans fields to use as keys into the 800 Translation database to retrieve schedule information. From the user's two schedule translations, and using the current day and time, the First and Second Schedule numbers are determined.
A call is launched to the First Schedule number, and answer treatment is as described in the Find-Me sequence, with no answer resulting in a call attempt to the Second Schedule number. Answer treatment at the Second Schedule number is the same, with no answer resulting in Alternate Routing.
Again, if at any point in the Schedule calling sequence, a terminating number cannot be found, the application skips that slot in the sequence, and proceeds to the next number, or Alternate Routing.
The user's schedule is set up during Order Entry, and is not user-updatable via DTMF. At Order Entry, the user is asked to define his schedule by Date, Day of Week, Time of Day (in 30 minute increments), and by Time Zone.
The option is available, via DTMF, for the user to disable the presentation of the Guest Menu by prescribing specific routing for all guest callers. Via Override Routing, the user is able to: route callers to a single telephone number, have callers leave a voicemail message, have callers page him, or route callers through his programmed Call Routing (Find-Me or Schedule). If the user has programmed Override Routing to route to a telephone number, no answer at that number results in Alternate Routing treatment.
Alternate Routing allows the user to define, via DTMF, the treatment of a caller for whom an attempt to reach the subscriber has been made, but no answer was received. Alternate Routing options include Voicemail, Pager, Closing Message, or the Guest Option of Voicemail or Pager. The default for Alternate Routing, if not programmed, is the playing of the Closing Message.
The user is able to prescribe at Order Entry the treatment for a caller who, when presented the Guest Menu, does not respond after two attempts. The Default Routing options are: a transfer to the Operator (TTC=67), where the Guest menu is presented again, a telephone number, with no answer resulting in Alternate Routing, Voicemail, or Call Routing (Find-Me or Schedule). The default for Default Routing, if it's not programmed, is the Operator transfer.
The user may choose to have Call Screening invoked, to announce all guest callers. Call Screening options include pre-programming of Name Only, ANI Only, Name and ANI, and No Call Screening. The user has the ability to program Call Screening via DTMF.
When Name Only or Name and ANI screening is programmed, the caller's name is recorded. If the caller does not respond to the prompt, and nothing is recorded, the system will default to ANI Only screening. When an answer is received at a terminating telephone number, the caller's Name and/or ANI is played and the answering party is asked to accept or reject the call. If the call is accepted, the caller is connected. If Caller Screening includes ANI screening, and the originating number is a Country Code, the scripts ‘ . . . an international location’ will be played in place of the ANI.
If the call is rejected, or no response is received from the answering party, the caller is asked to leave a voicemail message, or the Closing Message is played, if the user has not subscribed to Voicemail.
Timeout values are defined, in seconds, in the directlineMCI database for the following termination:
These timeout values are defaulted to 25 (seconds), but the user is allowed to change them via Customer Service.
Call connection delays, when a guest call to a programmed termination is completed, are minimized as much as possible.
For all call attempts to a telephone number, treatment on detection of an answering machine is defined by the Roll on Machine Detect flag (State flag, bit 9). If this flag is set to ‘N’, the caller is connected to the answering machine. If the flag is set to ‘Y’, the application routes to the next number in the calling sequence or Alternate Routing.
Current answer detection performance on the ISN is as follows: The NAS correctly detects a live answer at 99% reliability; a machine is correctly detected at 67% reliability.
For any Answer Detection responses not addressed specifically in this requirement, Fast-Busy for example, treatment is as described for a No Answer condition.
The user has the ability to program a telephone number in his First, Second, and Third Find-Me numbers, and Override Routing. Before a number is accepted for programming, the application makes the following validation checks:
The Domestic Terms flag (PIN bit 1) is examined to ensure that the user is authorized to program a domestic number
The International Blocking database is queried, using Category 000, Type 002, and the programmed NPA, looking for a pattern match, to ensure that the programmed number is not a blocked Information/Adult Services number.
The Exchange Master is examined to determine whether the termination is an NADP number. If so, Country Set blocking is applied. The Pseudo-Country Code (PCC) associated with the programmed number is validated against the Country Set found in the directlineMCI Property Record. If that PCC is blocked, programming to that number is not allowed.
International numbers.
The International Terms flag (PIN bit 2) is examined to ensure that the user is authorized to program an international number.
The Country Set from the directlineMCI Property Record is retrieved, and the application verifies that the programmed Country Code is not blocked for that Country Set.
Blocking checks for programming guest termination are included below. The Call Flow diagram depicts the various situations for which a transfer to the Voice/Fax Platform (VFP) is necessary. A transfer is implemented using the routing number in the Voicemail Route Number field of the customer record.
In order to ‘mask’ some of the delay in call extension to the VFP, the call is extended before the ‘please hold’ script is played to the caller. Call extension delay is reduced additionally by removing inter-digit timeouts, as described previously. After launching a call and playing the script, the application awaits answer detection, at which time the user's directlineMCI access number (800/8xx number) is out-pulsed to the VFP, followed by a ‘*’, then a single mode digit, which indicates to the VFP the type of transfer to process, followed by a ‘#’. The mode indicator is one of the values, described in the table that follows. To ensure that the information has been received and validated by the VFP, the application awaits the playing of two DTMF ‘00’ tones from the VFP, then the caller is connected.
A VFP transfer attempt is considered failed if two handshake attempts have failed. If a Guest transfer to voice or faxmail fails during Override, Default, or Alternate Routing, the guest caller is asked to try his call again later. If a Guest transfer fails on a Guest Menu choice, the menu will be presented again. If a user transfer to voice or faxmail fails, a script will be played, informing the user of the failure, and the user is returned to the previous menu.
A guest fax transfer without annotation occurs when, at the outset of the call, fax tone is detected. Fax tone detection is independent of the presentation of the welcome message, so the length of the greeting has no effects on the reliable detection of fax tones.
When a user accesses User Programming, the application presents the count of new voicemail messages, new fax messages, and a full mailbox message, if applicable. The application queries this information from the VFP via the VFP_Trans Service.
The user also has the ability to define, via DTMF, whether he would like a pager notification of new voice and fax messages. Pager notification options are: Voicemail notification, Fax notification, notification of both Voicemail and Fax, and No notification. Pager notification settings are stored in the Page on Vmail flag (PIN bit 15) and Page on Fax flag (PIN bit 16).
The option to page the subscriber is one of the choices presented at the guest menu. In addition, the guest may be asked to send a page, according to the user's programmed Override or Alternate Routing.
In sending a page, the application requests the callback number from the caller. The user's customer record contains the following information used in processing the page: the Pager Access Number, used in launching the call to the pager company, the user's Pager PIN, and the Pager Type, which points to a configurable dial string for communicating the page information. The dial string provides the timeout value for waiting for answer detection, the delay following answer detection, the number of PIN digits to DTMF, and any termination characters needed, for example ‘#’.
If a caller disconnects after entering a callback number, the page is completed and billed.
Pager types supported are as follows:
The user has the ability to enable/disable the presentation of pager as a guest menu option. When pager is disabled, it is not presented at the Guest menu, nor is it presented to the user in programming Override or Alternate Routing. The Guest Option of Voicemail or Pager also is removed from Alternate Routing programming choices. If Override Routing is set to Pager, and pager has been turned off, the call is handled as if Override were not populated. If Alternate Routing is set to Pager, and pager has been turned off, the caller is routed to voicemail, if he has it, or the closing message is presented. These are the default treatments for Override and Alternate Routing. The Pager On/Off flag (State bit 13) is where the pager's enabled/disabled status is stored.
In addition to the pager enable/disable ability, the user can define pager notification options, as described in the Voicemail/Faxmail section of this description. The VFP performs pages for notification of new voice and fax messages, and supports those pager types supported by the ISN. The status Pager On/Off flag has no impact on pager notification; the user is required to set Pager Notification to No Notification, in order to receive no notification of new messages.
The user has the ability to make a call, billing the call to his directlineMCI account. This option is presented at the Main User Programming menu. Outbound calling options include: Domestic termination, dependent on the Domestic Completion flag (State bit 4), International termination, dependent on the International Compilations flag (State bit 5), and programmed Speed Dial termination, dependent on the Speed Dial Completion flag (State bit 6).
For any requested international completion, the application looks up the terminating country code in the Country Code tables. If the Direct Dial Country flag is set to ‘Y’ for that country, the ARU transfers the call to the manual console (TTC=9d) for processing.
The following validation checks are made before a call is completed for a subscriber:
The Domestic Compilations flag must be set to ‘Y’
The International Blocking database is queried, using Category 000, Type 002, and the programmed NPA, looking for a pattern match, to ensure that the programmed number is not a blocked Information/Adult Services number.
The Exchange Master is examined to determine whether the termination is an NANP number. If so, Country Set blocking is applied using the Country Set found in the directline AuthCode Property record. In the case of a subscriber calling in from an international location, the Country Sets from both the Property Record of the originating country and from the directlineMCI Property Record are retrieved, and the application verifies that the PCC is not blocked for either Country Set. The Property Record for an originating country is looked up using ‘191’+3-digit Country Code+‘0000’ as key into the Property Record database.
The International Compilations flag must be set to ‘Y’
The Country Set from the directlineMCI Property Record is retrieved, and the application verifies that the destination Country Code is not blocked for that Country Set. In the case of an international origination, the Country Sets from both the Property Record of the originating country and from the directlineMCI Property Record are retrieved, and the application verifies that the destination Country Code is not blocked for either Country Set.
Blocking checks for user call compilations, based on origination, and for programming Speed Dial numbers, are included below.
A caller may reoriginate from a call completion, either to the VFP or a telephone number, by pressing the # key for 2 seconds. The switch verifies that reorigination is permitted for that call, and if so, it delivers the caller back to the ISN.
The status of a reoriginating caller is derived from the value in the Val Stat field of the BDR of the original call. The following table defines possible values for that field and what each value indicates:
Additionally, # Reorigination is made available to the subscriber from completion to the voice mail/fax mail platform. This is done with two changes to the data populated in the switch record (OSR), as indicated in the Billing section.
A subscriber reorigination is identified as such via the Val Stat field of the original call, and the User Programming menu is presented. A subscriber who has completed to the voice/faxmail platform or to a telephone number is allowed to reoriginate.
Console impacts are described in detail in the following sections, as well as in the call flow diagrams.
The Console receives transfers from the ARU for the following reasons. Treatment for these transfers is indicated in the Console call flow diagrams.
Refer to the Access Method section in ARU Impacts.
Refer to the Direct Calling section in ARU Impacts., with the following exception:
Default Routing does not have an impact on the Console, except when it's been programmed or defaulted to Operator Transfer. In this case, the call will be handled as a new call, with the Guest Menu presented.
Refer to the Voicemail/Faxmail section in ARU Impacts.
Refer to the Paging section in ARU Impacts.
Refer to the Outbound Dialing section in ARU Impacts.
Refer to the Reorigination section in ARU Impacts.
Flag dependencies are shown in the following table:
This description does not include flags checks; it discusses Country Set, ‘Adult Services’ (976), and Inter-NANP Blocking. Where needed, a default ANI Property record is used for Country Set Blocking.
A. Introduction
A large percentage of calls on the PSTN are Fax calls. These calls send digital information encoded and modulated for analog transmission to the phone company's central office (CO). At the CO the analogue signal is digitized for continuous transmission across the PSTN at 64 Kbps. At the destination CO the digital signal is converted to analogue for transmission to the recipient Fax machine. Continuous transmission of international Fax traffic results in high utilization of scarce transmission capacity and incurs the high cost of international direct dial phone service.
B. Details
Currently, there is an increased interest in sending fax and voice over the Internet. In the past, facsimiles tended to be on the periphery of the network and did not utilize the intelligence inherent in the Internet. A preferred embodiment transparently routes faxes over the internet rather than tying up the telephone network. A network subsidized with appropriate logic can sense a fax call by sensing tones on the line. Then, the call can be directed to another piece of hardware or software that would then perform a fax over the Internet. The network performs routing by utilizing the destination fax machines phone number as an address. Then, by accessing the DAP, the appropriate gateway can be selected to route the call to the appropriate destination based on the phone number. This is accomplished by sending a routing request to the DAP. The DAP selects the destination gateway by one of several methods. One method may be by point of origin. That is, by table lookup a particular point of origin is assigned a particular destination gateway. Another method could be by a load balancing technique. The network logic can transparently detect normal telephone network activities and transmit them over the internet without affecting their integrity. One embodiment employs a double dialing scenario similar to the current telephone credit card. The first number is utilized to designate how the call was to be routed, while the second telephone number is used to route the call to the destination address like any other telephone call once the appropriate gateway was identified.
The detailed logic associated with the alternative routing of faxes on the Internet is accomplished by monitoring calls on trunk groups. Typically, a company or other organization will purchase capacity on a trunk line that can be utilized exclusively to service the requirements of the organization. The trunk group of a preferred embodiment is modified with appropriate sensing hardware which can be a hybrid network, such as, or including a Digital Signal Processor (DSP) to divert faxes destined for predetermined carriers over a data network such as an internet or an X.25 network instead of the public switched network. The monitoring of the calls coming into a specific trunk group is performed transparently.
The trunk group comes into a bridging switch which diverts calls to an intelligent network. The intelligent network detects if the call is being directed to a particular country or city that is targeted for special routing treatment over the internet or another data network instead of the PSTN. If the call is not targeted for one of the country or city codes of interest the call is routed normally across the PSTN to its destination.
Dropping down one more level of detail, when the call comes into an MCI switch, the switch launches a DAP query requesting a route for the call. The DAP analyzes the call based on the number dialed and other profile information, and routes the call to a fax done detection system. The fax tone detection system listens for fax CNG tone and if it detects a CNG tone, then a second phone call is placed to a fax internet gateway. When the fax internet gateway answers, the first and second call are bridged together at a bridging switch.
The required modification is to screen incoming calls by destination, For predetermined target destinations, the intelligent network holds the call for additional processing. This is accomplished according to a preferred embodiment illustrated in
Operation of the above embodiment of
If the call is for a predetermined destination of interest it is routed to the FTP as in step 5275. The FTP then determines whether this call is a fax call at step 5276. This may be done by attempting to detect a CNG tone by well known means. In one method of accomplishing this a timer can be used. If a CNG tone is not detected within a specified time period the call is assumed not to be a fax call. It is then released and bridged through normal routing over the PSTN as at step 5277. If a CNG tone is detected, the call is released and bridged to fax gateway 5264 as at step 5278, the call is collected and the fax is transmitted over the alternate data network 5266 over which it is sent to fax gateway 5267 and then on to fax machine F2 at the destination point.
This may have further routing via a domain name that may have several countries. The Domain Name Server will distribute calls amongst several destinations via a lookup table. A gateway will be located in a destination country and a TCP/IP session is set up with the gateway for control purposes. The data may be passed TCP or UDP based on the particular network characteristics. In any case, the dialed digits are passed to the origin gateway which forwards the digits to the destination gateway where the phone number is dialed.
The destination gateway then dials the destination number and engages a fax machine at the other end. The system utilizes two pairs of fax modems to convert a telephony signal to packets and back. Fax modems like any other modems negotiate for baud rate, but they do it each time a page is transmitted. Each side specifies its capabilities and they negotiate what speed they can support. First, start the transfer of fax information, then an ACK is transmitted after each page and finally the baud rate is renegotiated at 300 baud (LCD). Finally, the messages are received at the distant modem and the packet is repackaged as a fax package. At the end of every page, there is a renegotiating of baud rate based on error rate, and, if there are too many errors, the faxes will renegotiate to a lower speed before resending and/or retransmitting the page.
In accordance with a preferred embodiment, the system detects that the destination telephone circuit has been connected before transmitting fax information. The overhead associated with this processing requires the following detriments to normal fax processing.
1) Increased postdial delay; and
2) Actual transmission of the fax may take five percent longer.
A. An Embodiment
The problem with current switched networks is that when you have a LEC connected via legislated feature group D trunks, providing inexpensive access is difficult because access charges are dictated by the LEC.
Therefore, if the Internet access is provided via a service which utilizes feature group D trunks, the cost passed on to the consumer is exorbitant. If the feature group D trunks are bypassed, and a dedicated network is provided, ie., the LEC is connected directly to a modem pool which provides access to the Internet, a second tier of problems arises. These problems include: scalability, survivability and inefficiency of design. Further, a modem would be necessary for each DS0 purchased from the LEC. All of these problems are solved by the architecture discussed below.
Scalability is addressed by the CBLs described in
The third problem which was overcome by a preferred embodiment was a direct result of solving the previous two problems. A method for routing a call in the network was required when only an origination indication is provided by a LEC. An embodiment incorporating the functionality of a hotline provides a solution to this problem. When an origination is detected on an incoming trunk (circuit) for which the hotline functionality is enabled, a database lookup is performed as an internal process of a switch's routing database. This database lookup results in a preliminary dialing plan (i.e. a 7 or 10 digit number) that will be used to determine the destination of the call. The hotline function resides in the switch, but it was not integrated into routing capability which exploited the DAP and allowed a switch to formulate a DAL procedure request without any calling information (ADF transaction) to the DAP. The request is transmitted over an X.25 protocol link, a local area network, an Optical Connection Three (OC3) ATM network, a frame relay, SMDS or other communication link to the DAP for processing. The DAP performs additional database lookups to determine the appropriate destination (in this case, it would be the SWitch ID (SWID) and Terminating Trunk Group (TTG) that corresponds with the trunk connection to the Modem Pool). The hotline is a foundation in the design that overcame the problems described above.
For example, if a problem arises with Windows95, a customer would call 1-800-FIX-WIN95. The call enters the network at Originating Switch 10350 which would initiate a transaction to a DAP 10241-3 querying for appropriate routing information for the call. The queried DAP recognizes the number, creates a transaction and routes it to the appropriate gateway 10230 shown in
The terminating switch 10351 then determines the correct Terminating Trunk Group (TTG) utilizing information transmitted via SS7 network created from a parameter in the original DAP response, and routes the call to the California customer service center. When a call is routed through a switch, it is passed via a Direct Access Line (DAL) connection such as DAL 10386 to the customer PBX 10387 which delivers the call to the target telephone 10361.
A similar process may be used to connect telephone 10450 through LEC 10455 to a switch 10460 utilizing a bridging switch 10440 to bridge the call to the release link trunk 10490 through ISN 10480.
If the call to be routed is a voice call, ARU 10720 waits for the user to dial a calling card number and a destination telephone number. ARU 10720 interrogates the destination number to determine whether the destination telephone is an international call or a domestic call. Domestic calls are returned to the termination switch 10710 for conventional routing. International calls are encoded as data by providing the analog voice signal to coder/decoder (or “codec”) 10725. Codec 10725, having encoded the signal as digital data then routes the call through modem pool 10730 and Basic Internet Protocol Platform 10750.
In an alternate embodiment, when the call is delivered to the ISN by the network switch, an SS7 ISUP message is routed to the resident ISN switch. That switch is called a DMS-ACD. ACD stands for Automatic Call Distributor. The ACD takes an incoming SS7 ISUP message and converts it to SCAI (Switch/Computer Application Interface). On the opposite side of the ACD is a device called an ISN-AP (Intelligent Services Network—Adjunct Processor). SCAI is the language spoken between the ACD and the ISN-AP. So, there are two interfaces: on the inbound side from the network to the ACD a SS7 ISUP, and on the outbound side from the ACD to the ISN-AP a SCAI. These are simply two different signaling protocols.
When the call arrives at the ACD from the network, the ACD doesn't automatically know where to route the call. The ACD receives its instructions from the ISN-AP. To do that, the ACD takes the ISUP signaling parameters received from the network and converts them to SCAI protocol format and sends a SCAI message to the ISN-AP.
Specifically, the SCAI message is called DV_Call_Received (DV means Data/Voice. When the ISN-AP receives this message it looks at the Called Party Number (CPN) field within the SCAI message and, based on that number, determines where in the ISN the ACD should route the call. When the ISN-AP has made the decision, the ISN-AP builds a DV_Call_Received_RR (a response to the previous message—RR means Return Result). Within the RR message are instructions to the ACD regarding the ACD port to which the call should be terminated.
For this service, the ACD is instructed to terminate the call to the ACD ports connected to the ARU 10720. When the call arrives at the ARU 10720, there are two things that can happen:
The call flow for these scenarios can be confusing, so let's consider them one at a time.
If a caller has called from a telephone, then at the ARU 10720 voice prompt, the caller will press 1 (for voice service). At that time, the ARU 10720 will collect further information about the caller. This feature is a modified version of existing calling card services that telephone companies offer today. The ARU 10720 first collects the card number, then collects the number the caller wishes to terminate to. After capturing this information, the ARU 10720 sends the data across the ISN Local Area Network (LAN) to a validation data base. In addition to verifying the calling card number, the data base also ensures that the terminating number is within the allowed dialing plan for the card holder.
Once the card information is verified, the ARU 10720 will then determine if the terminating number is domestic or international. If the terminating number is domestic, the ARU 10720 will release the call from the ISN back into the voice network where the call will be routed to its intended destination. If the terminating number is international, the call will be routed to a device called a CODEC (COde DECode) resident at a BIPP site. The purpose of the CODEC is to convert the voice signal to data for routing over the Internet using UDP/IP.
In an alternate embodiment, if the caller has called from a fax machine, at the ARU 10720 voice prompt, the caller will press 2 indicative of a request for fax service. At that time, the ARU 10720 will route the call to a fax platform that is a guaranteed fax service 10770 for those who don't have the time or patience to wait for a terminating fax number to become available, or for those who need assistance delivering an international fax. An embodiment collects information about the caller and terminating number, then instructs the caller to begin the send process. The fax service 10770 captures the fax and stores it for delivery at a later time.
If a caller has dialed via a PC modem, then at the ARU 10720 voice prompt, the caller will likely not hear any announcement. This is intended. It is possible that the caller may hear the ARU 10720 announcement via the PC speaker or modem, but the caller is unable to make an entry at the ARU 10720 and will ultimately time-out (as described above), indicating to the ARU 10720 that this call originated from a PC modem. The ARU 10720 releases the call back into the network for termination to a Modem Pool (MP) 10730 at one of MCI's BIPP 10750 sites.
B. Another Embodiment
MCI Switch 212006 completes the call to the Internet Access Device 12008. The modem in the dial-up user's computer 12000 and the Internet Access Device 12008 establish a data session, and data packets are exchanged according to the Point to Point Protocol (PPP). From the Internet Access Device 12008, PPP packets are translated to Internet Protocol (IP) packets and sent on the internet, represented by 12026. Similarly, the Internet Access Device 12008 receives IP packets from the internet 12026 and sends them to the dial-up user 12000.
Before packets are allowed to pass freely through the Internet Access Device 12008, the dial-up user 12000 is authenticated. This is done using the username/password method, or the challenge/response method.
In the username/password method, the Internet Access Device 12008 prompts the dial-up user 12000 to enter a user name. The dial-up user 12000 types a user name into the computer, and the user name is transported from the dial-up user 12000 to the Internet Access Device 12008. The Internet Access Device 12008 then prompts the dial-up user 12000 to enter a password. The dial-up user 12000 types a password into the computer, and the password is transported from the dial-up user 12000 to the Internet Access Device 12008. Once the user name and password are received, the Internet Access Device 12008 sends an authentication request, containing the user name and password, to the Authentication Server 12014. The Authentication Server 12014 checks the user name/password against a database of valid user name/password pairs. If the entered user name/password are in the database, the Authentication Server 12014 sends an “user authenticated” message back to the Internet Access Device 12008. If the entered user name/password are not in the database, the Authentication Server 12014 sends a “user not authenticated” message back to the Internet Access Device 12008.
In the challenge/response method, the Internet Access Device 12008 prompts the dial-up user 12000 to enter a user name. The dial-up user 12000 types a user name into the computer, and the user name is transported from the dial-up user 12000 to the Internet Access Device 12008. The Internet Access Device 12008 then prompts the dial-up user 12000 to with a challenge, which is a sequence of digits. The dial-up user 12000 computes a response to the challenge by entering the challenge digits and a shared secret key into response-generation program. The shared secret key is known only the dial-up user 12000 and the Authentication Server 12014. The dial-up user 12000 types in the computed response, and the response is transported from the dial-up user 12000 to the Internet Access Device 12008. The Internet Access Device 12008 sends an authentication message, containing the user name, the challenge, and the response, to the Authentication Server 12014. The Authentication Server reads the user name, finds the shared secret key for that user name, and uses the shared secret key and the challenge digits to compute the response. The computed response is compared to the response given by the dial-up user 12000. If the responses match, a “user authenticated” message is sent from the Authentication Server 12014 to the Internet Access Device 12008. If the responses do not match, a “user not authenticated” message is sent from the Authentication Server 12014 to the Internet Access Device 12008.
Whether the user name/password or challenge/response methods of authentication are used, the rest of this description assumes a “user authenticated” message is sent from the Authentication Server 12014 to the Internet Access Device 12008, and IP packet communication is allowed to flow freely through the Internet Access Device 12008.
The dial-up user 12000 starts a web browser and browses web pages from the Corporate Web Server 12024. The Corporate Web Server 12024 records the web pages viewed by the dial-up user 12000 in the Call Center Server 12028 using a unique identifier. The dial-up user 12000 may also submit information to the Corporate Web Server 12024 by filling out Hypertext Markup Language (HTML) forms and submitting the information to the Corporate Web Server 12024. The Corporate Web Server 12024 deposits this information in the Call Center Server 12028 using the same unique identifier.
The dial-up user 12000 browses another web page, upon which an icon is displayed along with text indicating that the user can talk to an agent by clicking on the icon. Clicking on the icon results in a download of a Multipart Internet Mail Extensions (MIME) file from the Corporate Web Server 12024 to the dial-up user's 12000 web browser. The MIME file contains an alphanumeric string identifying the destination for a resulting phone call, called a user-identifier. The browser invokes a helper application or browser plug-in to handle the file of the designated MIME type. The helper application reads the MIME file, and launches a query with the MIME file contents from the dial-up user 12000 to the Directory Server 12012. The Directory Server 12012 translates the alphanumeric string from the MIME file into the destination IP Address of the destination Internet Telephony Gateway 12018, and sends a message containing the IP Address back to the dial-up user's 12000 helper application. The helper application then launches an internet telephony call to the Internet Telephony Gateway's 12018 IP Address, providing to the Internet Telephony Gateway 12018 the alphanumeric string from the MIME file, as a part of the call setup.
The Internet Telephony Gateway 12018 translates the given alphanumeric string into a destination telephone number, and dials the destination telephone number on its telephone network interface to MCI Switch 212006. MCI Switch 212006 queries the NCS 12020 with the dialed telephone number, requesting routing instructions. The NCS 12020 determines the appropriate route and sends routing instructions back so MCI Switch 212006 to route the call to a particular trunk group on MCI Switch 112004. The call is routed to MCI Switch 112004, and then the call is completed to the Automated Call Distributor (ACD) 12022. When the ACD 12022 answers the call, the Internet Telephony Gateway 12018 completes a constant audio path between the ACD 12022 and the Dial-up user 12000, with the audio from the ACD to the Internet Telephony Gateway being circuit-switched PCM audio, and the audio from the Internet Telephony Gateway to the Dial-up user being packetized encoded digital audio, using any audio codec.
When the call is delivered to the ACD 12022, the unique record identifier is delivered to the ACD via telephone network signaling mechanisms. When an agent in the call center 12026 receives the call, the unique record identifier is displayed for the agent, and the call information entered by the dial-up user 12000 is retrieved from the Call Center Server 12028.
Another embodiment in accordance with this invention relates generally to telecommunication networks, and more specifically, to switches of a telecommunication network that generate call records using a flexible and expandable record format and generates a unique call identifier for each telephone call that traverses the network.
A typical telecommunication network comprises multiple telecommunication switches located throughout a geographical area. When a user makes a call, the call may be routed through one or more switches before reaching its destination.
When a call passes through one of the switches, 30106-30110, that switch creates a call record. The call record contains information on the call, including but not limited to: routing, billing, call features, and trouble shooting information. After the call is terminated, each switch 30106-30110 that processed the call completes the associated call record. The switches 30106-30110 combine multiple call records into a billing block.
When a switch 30106-30110 fills the billing block, the switch 30106-30110 sends the billing block to a billing center 30114. Thus, the billing center 30114 receives one billing block from each switch 30106-30110 that handled the call, which in this case would be three billing blocks. The billing center 30114 searches each billing block and retrieves the call record associated with the call, thereby retrieving one call record per switch 30106-30110 that handled the call. The billing center 30114 then uses one or more of the retrieved call records to generate a billing entry. The billing center 30114 is also connected to each DAP 30116-30120 to retrieve information regarding a switch 30106-30110 or call record.
To better understand the invention, it is useful to describe some additional terminology relating to a telecommunication network. A telephone call comes into a switch on a transmission line referred to as the originating port, or trunk. The originating port is one of many transmission lines coming into the switch from the same location of origin. This group of ports is the originating trunk group. After processing an incoming call, the switch transmits the call to a destination location, which may be another switch, a local exchange carrier, or a private branch exchange. The call is transmitted over a transmission line referred to as the terminating port, or trunk. Similar to the originating port, the terminating port is one of a group of ports going from the switch to the same destination. This group of ports is the terminating trunk group.
Contemporary telecommunication networks provide customers with the capability of using the general public network as well as the capability of defining a custom virtual network (VNet). With a VNet, a customer defines a private dialing plan, including plan telephone numbers. A VNet customer is not limited to the default telephone numbers allocated to a public telecommunication system dedicated to a specific geographic region, but can define custom telephone numbers.
Upon processing a telephone call, a switch must generate a call record large enough to contain all of the needed information on a call. The call record, however, must not be so large that the typical call results in the majority of the record fields in the call record to be unused. In such a case, storing such call records results in large amounts of wasted storage, and transmitting such a call record causes unnecessary transmissions.
One solution for creating and processing call records is to implement a fixed length call record format, such as a 32-word call record. A word is two (2) bytes, or sixteen (16) bits. A fixed length record format, however, cannot expand when new call features are implemented. More importantly, fixed call record formats cannot handle expanded data fields as the telecommunications network becomes more complex with new features and telephone numbers.
Contemporary fixed length record formats include time point fields recording local time in three (3) second increments where local switch time represents the time of day at a switch. The timepoint fields are used by the network switches, billing center, and other network subsystems. Each subsystem, however, may require the time period for a different use and in a different format, such as in an epoch time format. Epoch time is the number of one (1) second increments since a particular date and time in history. For example, the billing center requires epoch time for its billing records whereas switch reports and error logs require local switch time.
A problem also arises when using only local switch time in that there is no accommodation for time changes due to daylight savings time. In addition, each subsystem may require a finer granularity of precision than the current three (3) second increments. By providing only local switch time at three (3) second increments, the switches have passed the burden of translating the time into a usable format to the network subsystems. The fixed record format cannot accommodate the various time period requirements because it only contains the time periods in local switch time at a low level of precision. Because of its fixed nature, the fixed record format cannot expand to include different time formats, nor to include a finer granularity of precision, such as a one (1) second increment. Therefore, there is a need for switches of a telecommunications network to store call record information in a flexible and expandable format. There is a further need to provide time point fields with one (1) second granularity in a flexible format that easily and efficiently responds to daylight savings time and time zone changes.
There is also a need to match all of the call records associated with a specific telephone call. For example, for proper billing and cost control, it is necessary for the billing center to match the originating switch's call record to the terminating switch's call record. Also, for troubleshooting and security purposes, it may be necessary to trace a specific telephone call through the network with ease in order to isolate problem areas.
Therefore, there is a need for switches of a telecommunications network to uniquely identify each telephone call that traverses the network, thereby uniquely identifying all of the call records associated with a specific telephone call.
A. An Embodiment
1. Call Record Format
An embodiment solves the problem of providing a flexible and expandable call record format by implementing both a small and a large call record format. In particular, the embodiment implements a default 32-word call record format, plus an expanded 64-word call record format. An embodiment uses a 32-word call record format for the typical telephone call, which comprises the majority of all telephone calls, and uses a 64-word call record format when additional information is needed regarding the call. This implementation provides the flexibility needed to efficiently manage varying data requirements of a given call record. New call features can be developed and easily incorporated into the variable call record format of the present invention.
This embodiment also records timepoints in the epoch time format. The embodiment records the origination time of a call in epoch time format, and the remaining timepoints are offsets, or the number of seconds, from that origination time. This embodiment solves the problems associated with converting to and from daylight savings time because daylight savings time is a local time offset and does not affect the epoch time. Furthermore, the timepoints in epoch time format require less space in the call record than they do in local switch time format.
The epoch time format may represent coordinated universal time (UTC), as determined at Greenwich, England, which has a time zone of zero (0) local switch time, or any other time. Epoch time is only a format and does not dictate that UTC must be used. The billing time and the local switch time may be in UTC or local time, and the local switch time may not necessarily be the same time that is used for billing. Therefore, the switch must keep billing time and local switch time separate in order to prevent the problems that occur during daylight savings time changes.
2. Network Call Identifier
This embodiment solves the problem of uniquely identifying each telephone call and all of the call records associated with a specific telephone call by providing a unique identifier to each call record. It generates a network call identifier (NCID) that is assigned to each call record at the point of call origination, that is, the originating switch generates an NCID for each telephone call. The NCID accompanies the associated telephone call through the telecommunications network to the termination point at the terminating switch. Therefore, at any point of a telephone call in the network, the associated NCID identifies the point and time of origin of the telephone call. Each switch through which the telephone call passes records the NCID in the call record associated with the call. The NCID is small enough to fit in a 32-word call record, thereby reducing the data throughput and storage. The NCID provides the billing center and other network subsystems with the ability to match originating and terminating call records for a specific telephone call.
This embodiment also provides the switch capability of discarding a received NCID and generating a new NCID. A switch discards a received NCID if the NCID format is invalid or unreliable, thereby ensuring a valid unique identifier to be associated with each call going through the network. For instance, An NCID may be unreliable if generated by third party switches in the telecommunications network.
This embodiment relates to switches of a telecommunication network that generate call records using a flexible and expandable record format. The call record formats include a small (preferably 32-word) and a large (preferably 64-word) expanded format. It would be readily apparent to one skilled in the relevant art to implement a small and large record format of different sizes.
The embodiment also relates to switches of a telecommunication network that generate a unique NCID for each telephone call traversing the network. The NCID provides a mechanism for matching all of the call records associated with a specific telephone call. It would be readily apparent to one skilled in the relevant art to implement a call record identifier of a different format.
The chosen embodiment is computer software executing within a computer system.
The computer system 30202 also includes a main memory 30208, preferably random access memory (RAM), and a secondary memory 30210. The secondary memory 30210 includes, for example, a hard disk drive 30212 and/or a removable storage drive 30214, representing a floppy disk drive, a magnetic tape drive, a compact disk drive, etc. The removable storage drive 30214 reads from and/or writes to a removable storage unit 30216 in a well known manner.
Removable storage unit 30216, also called a program storage device or a computer program product, represents a floppy disk, magnetic tape, compact disk, etc. The removable storage unit 30216 includes a computer usable storage medium having therein stored computer software and/or data.
Computer programs (also called computer control logic) are stored in main memory 30208 and/or the secondary memory 30210. Such computer programs, when executed, enable the computer system 30202 to perform the functions of the present invention as discussed herein. In particular, the computer programs, when executed, enable the processor 30204 to perform the functions of the present invention. Accordingly, such computer programs represent controllers of the computer system 30202.
B. Another Embodiment
Another embodiment is directed to a computer program product comprising a computer readable medium having control logic (computer software) stored therein. The control logic, when executed by the processor 30204, causes the processor 30204 to perform the functions as described herein.
Another embodiment is implemented primarily in hardware using, for example, a hardware state machine. Implementation of the hardware state machine so as to perform the functions described herein will be apparent to persons skilled in the relevant arts.
1. Call Record Format
This embodiment provides the switches of a telecommunication network with nine (9) different record formats. These records include: Call Detail Record (CDR), Expanded Call Detail Record (ECDR), Private Network Record (PNR), Expanded Private Network Record (EPNR), Operator Service Record (OSR), Expanded Operator Service Record (EOSR), Private Operator Service Record (POSR), Expanded Private Operator Service Record (EPOSR), and Switch Event Record (SER). Each record is 32 words in length, and the expanded version of each record is 64 words in length.
Example embodiments of the nine (9) call record formats discussed herein are further described in
The CDR and PNR, and thereby the ECDR and EPNR, are standard call record formats and contain information regarding a typical telephone call as it passes through a switch. The CDR is used for a non-VNET customer, whereas the PNR is used for a VNET customer and is generated at switches that originate VNET calls. The fields of these two records are identical except for some field-specific information described below.
The OSR and POSR, and thereby the EOSR and EPOSR, contain information regarding a telephone call requiring operator assistance and are generated at switches or systems actually equipped with operator positions. A switch completes an OSR for a non-VNET customer and completes a POSR for a private VNET customer. These records are only generated at switches or systems that have the capability of performing operator services or network audio response system (NARS) functions. The formats of the two (2) records are identical except for some field-specific information described below. A SER is reserved for special events such as the passage of each hour mark, time changes, system recoveries, and at the end of a billing block. The SER record format is also described in more detail below.
The first check 30804 determines if the call is involved in a direct termination overflow (DTO) at the current switch. For example, a DTO occurs when a customer makes a telephone call 30802 to an 800 number and the original destination of the 800 number is busy. If the original destination is busy, the switch overflows the telephone call 30802 to a new destination. In this case, the switch must record the originally attempted destination, the final destination of the telephone call 30802, and the number of times of overflow. Therefore, if the call 30802 is involved in a DTO, the switch must complete an expanded record (ECDR, EPNR, EOSR, EPOSR) 30816.
The second check 30806 made on a call 30802 by a switch determines if the calling location of the call 30802 is greater than ten (10) digits. The calling location is the telephone number of the location from where the call 30802 originated. Such an example is an international call which comprises at least eleven (11) digits. If the calling location is greater than ten (10) digits, the switch records the telephone number of the calling location in an expanded record (ECDR, EPNR, EOSR, EPOSR) 30816.
A switch makes a third check 30808 on a call 30802 to determine if the destination address is greater than seventeen (17) digits. The destination address is the number of the called location and may be a telephone number or trunk group. If the destination is greater than seventeen (17) digits, the switch records the destination in an expanded record (ECDR, EPNR, EOSR, EPOSR) 30816.
A switch makes a fourth check 30810 on a call 30802 to determine if the pre-translated digits field is used with an operated assisted service call. The pre-translated digits are the numbers of the call 30802 as dialed by a caller if the call 30802 must be translated to another number within the network. Therefore, when a caller uses an operator service, the switch records the dialed numbers in expanded record (EOSR, EPOSR) 30816.
In a fifth check 30812 on a call 30802, a switch determines if the pre-translated digits of a call 30802 as dialed by a caller without operator assistance has more than ten (10) digits. If there are more than ten (10) pre-translated digits, the switch records the dialed numbers in expanded record (ECDR, EPNR) 30816.
In a sixth check 30814 on a call 30802, a switch determines if more than twenty-two (22) digits, including supplemental data, are recorded in the Authorization Code field of the call record. The Authorization Code field indicates a party who gets billed for the call, such as the calling location or a credit card call. If the data entry requires more than twenty-two (22) digits, the switch records the billing information in an expanded record (ECDR, EPNR, EOSR, EPOSR) 30816.
In a seventh check 30820 on a call 30802, a switch determines if the call 30802 is a wideband call. A wideband call is one that requires multiple transmission lines, or channels. For example, a typical video call requires six (6) transmission channels: one (1) for voice and five (5) for the video transmission. The more transmission channels used during a wideband call results in a better quality of reception. Contemporary telecommunication systems currently provide up to twenty-four (24) channels. Therefore, to indicate which, and how many, of the twenty-four channels is used during a wideband call, the switch records the channel information in an expanded record (ECDR, EPNR) 30828.
In an eighth check 30822 on a call 30802, a switch determines if the time and charges feature was used by an operator. The time and charges feature is typically used in a hotel scenario when a hotel guest makes a telephone call using the operator's assistance and charges the call 30802 to her room. After the call 30802 has completed, the operator informs the hotel guest of the charge, or cost, of the call 30802. If the time and charges feature was used with a call 30802, the switch records the hotel guest's name and room number in an expanded record (EOSR, EPOSR) 30832.
The ninth, and final, check 30824 made on a call 30802 by a switch determines if the call 30802 is an enhanced voice service/network audio response system (EVS/NARS) call. An EVS/NARS is an audio menu system in which a customer makes selections in response to an automated menu via her telephone key pad. Such a system includes a NARS switch on which the audio menu system resides. Therefore, during an EVS/NARS call 30802, the NARS switch records the customer's menu selections in an expanded record (EOSR, EPOSR) 30832.
If none of the checks 30804-30824 return a positive result, then the switch uses the default record format (OSR, POSR) 30830.
Once the checks have been made on a call, a switch generates and completes the appropriate call record. Call record data is recorded in binary and Telephone Binary Coded Decimal (TBCD) format. TBCD format is illustrated below:
0001=digit 1
0010=digit 2
0011=digit 3
0100=digit 4
0101=digit 5
0110=digit 6
0111=digit 7
1000=digit 8
1001=digit 9
1010=digit 0
1011=special digit 1 (DTMF digit A)
1100=special digit 2 (DTMF digit B)
1101=special digit 3 (DTMF digit C)
1110=special digit 4 (DTMF digit D)
1111=special digit 5 (Not Used)
All TBCD digit fields must be filled with TBCD-Null, or zero, prior to data being recorded. Where applicable, dialed digit formats conform to these conventions:
N=digits 2-9
X=digits 0-9
Y=digits 2-8
Thus, if the specification for a call record field contains a N, the valid field values are the digits 2-9.
Each call record, except SER, contains call specific timepoint fields. The timepoint fields are recorded in epoch time format. Epoch time is the number of one second increments from a particular date/time in history. The embodiment of the present invention uses a date/time of midnight (00:00 am UTC) on Jan. 1, 1976, but this serves as an example and is not a limitation. It would be readily apparent to one skilled in the relevant art to implement an epoch time based on another date/time. In the records, Timepoint 1 represents the epoch time that is the origination time of the call 30802. The other timepoint stored in the records are the number of seconds after Timepoint 1, that is, they are offsets from Timepoint 1 that a particular timepoint occurred. All of the timepoint fields must be filled in with “0's” prior to any data being recorded. Therefore, if a timepoint occurs, its count is one (1) or greater. Additionally, timepoint counters, not including Timepoint 1, do not rollover their counts, but stay at the maximum count if the time exceeds the limits.
The switch clock reflects local switch time and is used for all times except billing. Billing information is recorded in epoch time, which in this embodiment is UTC. The Time offset is a number reflecting the switch time relative to the UTC, that is, the offset due to time zones and, if appropriate, daylight savings time changes. There are three factors to consider when evaluating time change relative to UTC. First, there are time zones on both sides of UTC, and therefore there may be both negative and positive offsets. Second, the time zone offsets count down from zero (in Greenwich, England) in an Eastward direction until the International Dateline is reached. At the Dateline, the date changes to the next day, such that the offset becomes positive and starts counting down until the zero offset is reached again at Greenwich. Third, there are many areas of the world that have time zones that are not in exact one-hour increments. For example, Australia has one time zone that has a thirty (30) minute difference from the two time zones on either side of it, and Northern India has a time zone that is fifteen (15) minutes after the one next to it. Therefore, the Time Offset of the call records must account for variations in both negative and positive offsets in fifteen (15) minute increments. The embodiment of the present invention satisfies this requirement by providing a Time Offset representing either positive or negative one minute increments.
There are two formulas used to convert local switch time to epoch time and back.
Epoch Time+(Sign Bit*Time Offset)=Local Switch Time i)
Local Switch Time−(Sign Bit*Time Offset)=Epoch Time ii)
The switch records the Time Offset in the SER using a value where one (1) equals one (1) minute, and computes the Time Offset in seconds and adds this value to each local Timepoint 1 before the call record is recorded. For example, Central Standard Time is six (6) hours before UTC. In this case, the Sign Bit indicates “1” for negative offset and the Time Offset value recorded in the SER would be 360 (6 hours*60 minutes/hour=360 minutes). See
Two commands are used when changing time. First,
In step 31010, the switch operator must verify the forward or backward option and the new Local Switch Time and Time Offset before the actual time change takes place. If in step 31010, the switch operator verifies the new time and Time Offset, the switch proceeds to step 31012 and generates a SER with an Event Qualifier equal to nine which changes the Local Switch Time and Time Offset of the switch. The switch proceeds to step 31014 and exits the command. Referring back to step 31010, if the switch operator does not verify the changes, the switch proceeds to step 31014 and exits the command without updating the Local Switch Time and Time Offset.
After the successful completion of a Change Daylight Savings Time Command, the billing records are affected by the new Time Offset. This embodiment allows the epoch time, used as the billing time, to increment normally through the daylight savings time change procedure, and not to be affected by the change of Local Switch Time and Time Offset.
2. Network Call Identifier
An embodiment provides a unique NCID that is assigned to each telephone call that traverses through the telecommunications network. Thus, the NCID is a discrete identifier among all network calls. The NCID is transported and recorded at each switch that is involved with the telephone call.
The originating switch of a telephone call generates the NCID. The chosen embodiment of the NCID of the present invention is an eighty-two (82) bit identifier that is comprised of the following subfields:
i) Originating Switch ID (14 bits): This field represents the NCS Switch ID as defined in the Office Engineering table at each switch. The SER call record, however, contains an alpha numeric representation of the Switch ID. Thus, a switch uses the alphanumeric Switch ID as an index into a database for retrieving the corresponding NCS Switch ID.
ii) Originating Trunk Group (14 bits): This field represents the originating trunk group as defined in the 32/64-word call record format described above.
iii) Originating Port Number (19 bits): This field represents the originating port number as defined in the 32/64-word call record format described above.
v) Timepoint 1 (32 bits): This field represents the Timepoint 1 value as defined in the 32/64-word call record format described above.
v) Sequence Number (3 bits): This field represents the number of calls which have occurred on the same port number with the same Timepoint 1 (second) value. The first telephone call will have a sequence number set to ‘0.’ This value increases incrementally for each successive call which originates on the same port number with the same Timepoint 1 value.
It would be readily apparent to one skilled in the relevant art to create an NCID of a different format. Each switch records the NCID in either the 32 or 64-word call record format. Regarding the 32-word call record format, intermediate and terminating switches will record the NCID in the AuthCode field of the 32-word call record if the AuthCode filed is not used to record other information. In this case, the Originating Switch ID is the NCS Switch ID, not the alphanumeric Switch ID as recorded in the SER call record. If the AuthCode is used for other information, the intermediate and terminating switches record the NCID in the 64-word call record format. In contrast, originating switches do not use the AuthCode field when storing an NCID in a 32-word call record. Originating switches record the subfields of the NCID in the corresponding separate fields of the 32-word call record. That is, the Originating Switch ID is stored as an alphanumeric Switch ID in the Switch ID field of the SER call record; the Originating Trunk Group is stored in the Originating Trunk Group field of the 32-word call record; the Originating Port Number is stored in the Originating Port field of the 32-word call record; the Timepoint 1 is stored in the Timepoint I field of the 32-word call record; the Sequence Number is stored in the NCID Sequence Number field of the 32-word call record. The 32-word call record also includes an NCID Location (NCIDLOC) field to identify when the NCID is recorded in the AuthCode field of the call record. If the NCID Location field contains a ‘1,’ then the AuthCode field contains the NCID. If the NCID Location field contains a ‘0,’ then the NCID is stored in its separate sub-fields in the call record. Only intermediate and terminating switches set the NCID Location field to a ‘1’ because originating switches store the NCID in the separate fields of the 32-word call record.
Regarding the 64-word call record format, the expanded call record includes a separate field, call the NCID field, to store the 82 bits of the NCID. This called record is handled the same regardless of whether an originating, intermediate, or terminating switch stores the NCID. In the 64-word call record format, the Originating Switch ID is the NCS Switch ID, not the alphanumeric Switch ID as recorded in the SER call record.
In step 31112, the switch analyzes the originating trunk group parameters to determine the originating trunk group type. If the originating trunk group type is an InterMachine Trunk (IMT) or a release link trunk (RLT), then the switch proceeds to step 31116. An IMT is a trunk connecting two normal telecommunication switches, whereas a RLT is a trunk connecting an intelligent services network (ISN) platform to a normal telecommunication switch. When the current switch reaches step 31116, the current switch knows that it is not an originating switch and that it has not received an NCID. In step 31116, the current switch analyzes the originating trunk group parameters to determine whether it is authorized to create an NCID for the call. In step 31116, if the current switch is not authorized to create an NCID for the call 30202, the current switch proceeds to step 31118. When in step 31118, the current switch knows that it is not an originating switch, it did not receive an NCID for the call, but is not authorized to generate an NCID. Therefore, in step 31118, the current switch writes the call record associated with the call to the local switch database and proceeds to step 31120. In step 31120, the current switch transports the call out through the network with its associated NCID. Step 31120 is described below in more detail.
Referring again to step 31116, if the current switch is authorized to create an NCID for the call, the current switch proceeds to step 31114. In step 31114, the current switch generates a new NCID for the call before continuing to step 31136. In step 31136, the current switch writes the call record, including the NCID, associated with the call to the local switch database and proceeds to step 31120. In step 31120, the current switch transports the call out through the network with its associated NCID. Step 31120 is described below in more detail.
Referring again to step 31112, if the current switch determines that the originating trunk group type is not an IMT or RLT, the current switch proceeds to step 31114. When reaching step 31114, the current switch knows that it is an originating switch and, therefore, must generate a NCID for the call. Step 31114 is described below in more detail. After generating a NCID in step 31114, the current switch proceeds to step 31136 to write the call record, including the NCID, associated with the call to the local database. After writing the call record, the current switch proceeds to step 31120 to transport the call out through the network with its associated NCID. Step 31120 is also described below in more detail.
Referring again to step 31108, if the current switch determines that it received an NCID with the call, the current switch proceeds to step 31110. In step 31110, the current switch processes the received NCID. In step 31110, there are two possible results. First, the current switch may decide not to keep the received NCID thereby proceeding from step 31110 to step 31114 to generate a new NCID. Step 31110 is described below in more detail. In step 31114, the current switch may generate a new NCID for the call before continuing to step 31136. Step 31114 is also described below in more detail. In step 31136, the current switch writes the call record associated with the call to the local database. The current switch then proceeds to step 31120 and transports the call out through the network with its associated NCID. Step 31120 is also described below in more detail.
Referring again to step 31110, the current switch may decide to keep the received NCID thereby proceeding from step 31110 to step 31115. In step 31115, the current switch adds the received NCID to the call record associated with the call 30202. Steps 31110 and 31115 are described below in more detail. After step 31115, the current switch continues to step 31136 where it writes the call record associated with the call to the local database. The current switch then proceeds to step 31120 and transports the call out through the network with its associated NCID. Step 31120 is also described below in more detail.
Referring again to step 31202, if the originating trunk group type is not an IMT or RLT, the current switch proceeds to step 31204. In step 31204, the current switch determines if the originating trunk group type is an Integrated Services User Parts Direct Access Line (ISUP DAL) or an Integrated Services Digital Network Primary Rate Interface (ISDN PRI). ISUP is a signaling protocol which allows information to be sent from switch to switch as information parameters. An ISUP DAL is a trunk group that primarily is shared by multiple customers of the network, but can also be dedicated to a single network customer. In contrast, an ISDN PRI is a trunk group that primarily is dedicated to a single network customer, but can also be shared by multiple network customers. A network customer is an entity that leases network resources. In step 31204, if the current switch determines that the trunk group type is not an ISUP DAL or ISDN PRI, the current switch proceeds to step 31206. When in step 31206, the current switch knows that it received an NCID that was not generated by a switch that is part of the telecommunication network or by a switch that is a customer of the network. Therefore, in step 31206, the current switch discards the received NCID because it is an unreliable NCID. From step 31206, the current switch exits step 31110, thereby continuing to step 31114 in
Referring back to step 31204, if the current switch determines that the originating trunk group type is an ISUP DAL or ISDN PRI, the current switch continues to step 31208. When in step 31208, the current switch knows that it received an NCID from a customer trunk group. Therefore, the current switch analyzes the originating trunk group parameters to determine whether it is authorized to create a new NCID for the call. The current switch may be authorized to create a new NCID and overwrite the NCID provided by the customer to ensure that a valid NCID corresponds to the call 30202 and is sent through the network. In step 31208, if the current switch is not authorized to create a new NCID for the call, the current switch proceeds to step 31210. In step 31210, the current switch checks the validity of the received NCID, for example, the NCID length. If the received NCID is invalid, the current switch proceeds to step 31206. In step 31206, the current switch discards the invalid NCID. From step 31206, the current switch exits step 31110, thereby continuing to step 31114 in
Referring again to step 31210, if the current switch determines that the received NCID is valid, the current switch proceeds to step 31212. In step 31212 the current switch keeps the received NCID and exits step 31110, thereby continuing to step 31115 in
Referring again to step 31306, if the AuthCode field is not available in the 32-word call record, the current switch proceeds to step 31308. In step 31308, the current switch stores the NCID in the NCID field of the 64-word call record. After step 31308, the current switch exits step 31115 and continues to step 31136 in
Generic Digits Parameter:
Code: 11000001
Type: 0
After transporting the call and the IAM, the current switch proceeds to step 31418, thereby exiting the switch processing.
Referring again to step 31408, if the current switch is not authorized to deliver the NCID to the next switch in an IAM message, the current switch proceeds to step 31412. In step 31412, the current switch transports the call to the next switch under normal procedures which consists of sending an IAM message to the next switch without the NCID recorded as part of the generic digits parameter. After transporting the call, the current switch proceeds to step 31418, thereby exiting the switch processing. Referring again to step 31404, if the current switch determines that the terminating trunk is not an ISUP, the current switch proceeds to step 31406.
In step 31406, the current switch determines if the terminating trunk group is an ISDN trunk (the terminating trunk group is dedicated to one network customer). If the terminating trunk group is an ISDN, the current switch proceeds to step 31410. In step 31410, the current switch analyzes the parameters associated with the ISDN trunk group type to determine whether or not to deliver the NCID to the next switch. If the current switch is authorized to deliver the NCID, the current switch proceeds to step 31414. In step 31414, the current switch transports the call to the next switch along with a setup message. The setup message contains setup information for the next switch which prepares the next switch to accept and complete the call. The NCID is transported as part of the locking shift codeset 6 parameter of the setup message. The format of the locking shift codeset 6 parameter is shown below in Table 307:
Locking Shift Codeset 6 Parameter:
Code: 11000001
Type: 0
After transporting the call and the setup message, the current switch proceeds to step 31418, thereby exiting the switch processing. Referring again to step 31410, if the current switch determines that it does not have authority to deliver the NCID to the next switch in a setup message, the current switch proceeds to step 31412. In step 31412, the current switch transports the call to the next switch under normal procedures which consists of sending a setup message to the next switch without the NCID recorded as part of the locking shift codeset 6 parameter. After transporting the call, the current switch proceeds to step 31418, thereby exiting the switch processing.
Referring again to step 31412, this step is also entered through 31130 from step 31118 on
A system and method for the switches of a telecommunications network to generate call records for telephone calls using a flexible and expandable record format. Upon receipt of a telephone call, a switch in the network analyzes the telephone call to determine whether the default call record is sufficiently large to store call record information pertaining to the telephone call, or whether the expanded call record must be used to store the call information pertaining to the telephone call. After determining which call record to use, the switch generates the default or expanded call record. The switch sends a billing block, comprised of completed call records, to a billing center upon filling an entire billing block.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
This application is a continuation of U.S. patent application Ser. No. 08/751,917, filed on Nov. 18, 1996, which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
Parent | 09879983 | Jun 2001 | US |
Child | 11928207 | US | |
Parent | 08751917 | Nov 1996 | US |
Child | 09879983 | US |