Computer program products supporting integrated communication systems that exchange data and information between networks
Computer program products supporting integrated communication systems exchanging data and information between various networks and network formats through network interfaces. One computer program product executes in an external processor performing software switching for an operably connected communication system. Network interface connection information reflecting the result of the software switching decision is communicated by an external processor to the communication system for implementing the software switching decision therein between network interfaces according to some functional application of the received data. Another corresponding computer program product executes in a processor within a communication system for interacting with the operably connected external processor to implement the switching decision. Another computer program product executes in a processor within a communication system for translating the received data from an incoming format into a format suitable for software switched transmission from an incoming network interface directly to an outbound network interface of a communication system.
The present patent application is a Continuation-in-Part (“CIP”) of international patent application PCT/US02/33848 filed on Oct. 23, 2002, which is a Continuation of U.S. patent application Ser. No. 10/171,833 filed on Jun. 14, 2002 and now issued as U.S. Pat. No. 6,625,169. The present patent application claims the benefit of priority from, and incorporates by reference herein in their entirety, both of the above referenced related patent applications.
FIELD OF THE INVENTIONThe present invention relates to software for networking, telecommunications, and communications technology, and more particularly to software supporting integrated communication systems for exchanging data and information between networks.
BACKGROUND OF THE INVENTIONThe arts of networking and telecommunications originated well over a century ago with the advent of traditional wired telecommunications. Initially, the technologies required were relatively straightforward since a single telephony network carried information in a simple telegraph signaling data format. Later, a more elaborate telephone network capable of carrying voice information in an analog data format was developed. Eventually information in new and more complex analog data formats, such as facsimile and modem communication formats, was conveyed over telecommunications networks. Soon information in even more advanced digital data formats, such as ISDN for example, was also transmitted across telephony networks. New telephony networks were created, while more sophisticated network formats for transmitting data and information were developed. For instance, later the wireless telephony network joined the traditional wired or landline telephony network. Similarly, wireless telephony protocols emerged to convey information and data through wireless networks. Needless to say, the development of telecommunications created various new networks and new network formats. Network infrastructure devices, such as landline and wireless telecom switches, were designed to interface with distinct telephony networks and to address various network formats, such as the network protocols and network transports or media used to convey data and information through telephony networks.
However, this was only the beginning of the proliferation of networks and network formats used for transmitting data and information. Advances in data communications led to the emergence of Local Area Networks (LANs), such as Token Ring and Ethernet, that provided faster and improved networking communications between increasingly intelligent network terminal devices like PCs. New and increasingly diverse types of networks, network formats, network protocols, and network transports/media came to be deployed. Wide Area Networks (WANs), high-speed telephony networks (T1, T3, etc.), Metropolitan Area Networks (MANs), Asynchronous Transfer Mode (ATM) networks, fiber optic networks, broadband networks, and cable networks were examples of the new types of networks that emerged. New network formats, some corresponding to the newly developed networks were created. For example, Asymmetric Digital Subscriber Line (ADSL) network format, ATM network cell format, and IP network packet format are but a few of the many diverse network formats in use today. The emergence of Internet Protocol (IP, TCP/IP, and the like) networks and the Internet network further revolutionized networking and communications given how pervasively these sort of networks have been implemented. Network equipment has been developed not only to interface with a given network, but also to effectively interconnect different types of networks. For example, the landline and wireless telephony networks have been interfaced effectively through hybrid landline-wireless telephony switches. As a further example, the telephony network and Internet network have been productively interfaced using telecom/IP gateway servers. Further adding to the complexity, new types of information had to be conveyed through networks. Video information joined existing types of information such as voice information, facsimile information, and the like, being transmitted as analog data and digital data traffic on modern networks. Today a plethora of different networks, distinct network formats, various types of data and information, numerous protocols, and transports/media must all be addressed by the networking and telecommunications arts.
Consequently, numerous types of networking and communications systems were developed to address the need for interfacing between diverse networks and network formats. Communication systems were designed or adapted to interface with each new type of network. Other communication systems were developed to bridge or route data and information between different types of networks. As a result, typical network topologies for managing various and distinct networks have become extremely complex. It has become increasingly difficult to effectively interface diverse communication systems from different manufacturers found at the edges of different networks. The large number of communication systems to be managed, and the many different types of communication systems to be interfaced, make it difficult and inefficient to exchange data and information between networks and network formats. It would clearly be advantageous to have a single networking solution that could replace the plethora of network devices needed to effectively utilize different networks and different network formats. Further, a need exists for a flexible network solution that could seamlessly address different types of data and information embodied in various networks and network formats.
History indicates that additional networks and network formats may yet be developed. Thus, it would be advantageous to have an open communications architecture that could readily support new networks and network formats. In addition, there is a need for a single networking solution that can be controlled remotely in an open networking environment. Addressing at least some of these needs would enable new applications for networks, and could permit more productive use of the many networks and network formats encountered in modern communications and networking. Note that this Background of the Invention is provided merely for explanatory purposes, and is not intended to limit the scope of the present invention as defined by the attached claims in any way.
SUMMARY OF THE INVENTIONThe present invention enables integrated communication systems that exchange data and information between various networks, between various network formats, or both. More specifically, the present invention provides computer program products supporting the operation of a number of integrated communication systems that provide data and information exchanges between various networks and various network formats. As such, computer program product embodiments according to the present invention seek to address at least some of the above needs while attempting to deliver one or more of the aforementioned advantages. Various embodiments of the present invention also provide computer software program products for integrated communication systems that allow different types of data and information to be intelligently controlled, translated, interconnected, and reconciled. As a result, the present invention makes it possible to reduce the number and types of network equipment that may be required to exchange data and information, thereby enabling simplified network configurations and management. Integrated communication systems enabled by the present invention embody an open hardware and software architecture. Therefore, computer program products for these integrated communication systems can readily support, reconcile, and integrate a number of networks and network formats, whether existing or new. Yet further, computer software program product embodiments for these integrated communication systems exploit this open architecture by permitting external configuration and external control of these integrated communication systems. Accordingly, the embodiments of the present invention endeavor to effectively service the plethora of networks, network formats, and types of data and information. Existing applications for networks, as well as new applications for networks, may be productively supported by embodiments of the present invention. Computer program products for these integrated communication systems make it possible to provide a single, coordinated, enterprise-wide networking solution supporting the exchange of data and information of various types between numerous networks and numerous network formats.
In one embodiment, the present invention provides a computer program product stored in computer readable media for execution in at least one processor external to but operably connected to a communication system. The communication system exchanges data between networks through at least two network interfaces within the communication system. This computer program product embodiment comprises at least five software modules therein supporting its functions. A first software module is provided for determining that a first network interface of the communication system is receiving data from a first network in a first network format. In addition, a second software module is provided for determining to which of at least one other network interface of the communication system the data received may be switched in support of at least one functional application of the received data. Further, a third software module is provided for software switching the data received from the first network interface to at least one other network interface of the communication system, according to at least one selected functional application. A fourth software module is provided for creating at least network interface connection information for the communication system reflecting the result of the software switching decision between the first network interface and at least one other network interface of the communication system. Yet further, a fifth software module is provided for transmitting at least the network interface connection information to the communication system to control therein to which at least one other network interface the first network interface will transmit the incoming received data. As such, the communication system can implement therein software switching in accordance with the selected functional application for the received data. Various related embodiments of the computer program products provide additional software modules, additional functionality, and leverage the capabilities of one or more external processors operably connected to the communication system. Means plus function embodiments related to the aforementioned embodiments are also provided.
Another embodiment of the present invention provides a computer program product stored in computer readable media for execution in at least one processor within a communication system. As before the communication system can exchange data between networks through at least two network interfaces. Further, the communication system is operably connected to at least one external processor. This computer program product embodiment comprises at least four software modules therein supporting its functions. A first software module is provided for determining that a first network interface of the communication system is receiving data from a first network in a first network format. In addition, a second software module is provided for transmitting to at least one external processor through at least one interface of the communication system that the first network interface of the communication system is receiving data. The software switching decision is performed by at least one processor external to the communication system based at least on the transmission from the second software module within the communication system. A third software module is provided for receiving from at least one external processor through at least one interface of the communication system the results of the software switching decision expressed as network interface connection information. The network interface connection information received indicates to which of at least one other network interface of the communication system the data received by the first network interface will be switched within the communication system. Further, a fourth software module is provided for implementing the software switching decision within the communication system, by directing the data received from the first network interface to at least one other network interface of the communication system as instructed by the processor external to the communication system. As such, software switching performed external to the communication system can be implemented within the communication system. A number of other related embodiments of the computer program products provide additional software modules, additional functionality, and leverage the capabilities of one or more external processors operably connected to the communication system. As before, means plus function embodiments related to the above embodiments are also provided by the present invention.
The present invention provides yet another computer program product embodiment supporting integrated communication systems. For this embodiment, a computer program product stored in computer readable media for execution in at least one processor within a communication system is provided. The communication system can exchange data between networks through at least two network interfaces therein. Further, the communication system is operably connected to at least one external processor. This computer program product embodiment comprises at least four software modules therein supporting its functions. A first software module is provided for determining that a first network interface of the communication system is receiving data from a first network in a first network format. In addition, a second software module is provided for identifying the first network format of incoming data received from the first network interface. Further, a third software module is provided for receiving from at least one external processor through at least one interface of the communication system an indication that the received data is to be transmitted to at least one other outbound network interface of the communication system. A fourth software module is provided for translating the received data from the first network format into different format suitable for software switched transmission of the received data. The different format supports software switched transmission of the received data from the first network interface directly to at least one other outbound network interface of the communication system. In addition, at least the fourth software module is responsive to the results of the software switching decision received from at least one external processor. Other embodiments provide additional software modules, details about the translations, and the like. As before, means plus function embodiments related to the above embodiments are also provided by the present invention.
Computer program product embodiments of the present invention support integrated communication systems that can support exchanges of data and information between networks. As such, the present invention can support integrated enterprise-wide network solutions for addressing various types of data, various networks, and various network formats. The present invention accordingly attempts to satisfy at least some of the above stated needs while seeking to deliver at least some of the advantages noted previously. In one sense, the present invention supports the operation of communication systems that use a common internal format, such as the different format suitable for software switched transmission of the received data, to transparently exchange data and information between network interfaces. In another sense, the present invention herein provides software supporting communication systems that can utilize external software switching to exchange data and information between network interfaces under external control. In either or both senses, the present invention can simplify interfacing with a variety of networks and network formats and exchanging data and information therebetween. The Summary of the Invention is provided herein as an overview of the invention and is not intended to limit the scope of the present invention as defined by the attached claims in any way. Other aspects and features of the present invention will become apparent to those of ordinary skill in the art, upon review of the following description of specific embodiments of the present invention in conjunction with the accompanying figures.
BRIEF DESCRIPTION OF THE FIGURES
The Brief Description of the Figures above and the following Detailed Description of the Invention are provided for illustrative and descriptive purposes only, and neither is meant to limit the scope of the present invention as defined by the attached claims in any way.
DETAILED DESCRIPTION OF THE INVENTION AND BEST MODEThe present invention now will be described more fully hereinafter with reference to the accompanying illustrative figures, in which various embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure of the present invention will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limiting the scope of the present invention as defined by the attached claims in any way. Some terminology will be defined herein and used to describe forthcoming embodiments of the present invention, in order to teach the present invention to those skilled in the art. Terms not described explicitly in this disclosure should be construed as they would be by those skilled in the art. Like numbers refer to like elements throughout the detailed description of the present invention.
As described above, modern networking and telecommunications are characterized by an overabundance of different networks, distinct network formats, numerous protocols, various types of transport media, and different types of data and information. As used herein for purposes of describing the present invention, data comprises analog data, digital data, both, or the like. Further, as used herein information comprises a set of related data having some collective significance or meaning. For instance, image or picture information may be represented as a group of digital data, such as a set of pixels, that define the size and color of an image. Information may be embodied in one or more forms of data, such as in analog data, in digital data, or in both forms of data. For example, audio or music information may be represented as analog data, digital data, or both forms in combination. For purposes of describing the present invention, information and data are functionally equivalent and can be viewed as interchangeable. This is the case not only since data and information are related as noted, but also because the operation of the integrated communication systems of the present invention can exchange and reconcile data and information in whatever form or forms may be required.
In some cases, edge of network communication systems may be used to interface more than two networks. As shown in
Accordingly
Fortunately, the present invention provides communication systems that attempt to address the complexity found in today's networking and communication environment. The present invention thereby provides some embodiments of communication systems that can perform translations between network formats and can transparently exchange data and information between networks. Other embodiments of communication systems provided by the present invention can be externally controlled and directed to exchange data and information between networks. The example embodiment of the communication system in shown
Networks 80, 83, and 87 interfaced to communication system 200 in
As shown in
When a communication system according to some embodiments receives data or information from a given network in a given network format through a network interface, it can translate the received data or information from the received network format into a common transparent format. The communication system can use this common transparent format for efficiently transporting data or information under software control as required within the communication system. This common transparent format may be used to efficiently switch or direct the data or information received from one network interface transparently through the communication system to another network interface. A common transparent format therefore allows data or information in any form and in any network format to be processed and conveyed transparently through the communication system, more specifically between network interfaces. Once data or information is transmitted to an outbound network interface in the common transparent format, the communication system can inverse translate data or information from the common transparent format into an outbound network format. Note that the received network format and the outbound network format may be different or may be the same. Once represented in the outbound network format, data or information can thereafter be transmitted through the outbound network interface to the attached network. Therefore, the communication system allows data or information in any form to be processed and conveyed transparently through the communication system to support “end to end” exchanges of data and information between networks. As such, data and information in any form, and in various diverse network formats, can be processed and exchanged between networks in a common, efficient, and integrated manner by the communication systems of the present invention.
A communication system according to some embodiments of the present invention can be externally controlled with respect to exchanging data between networks. Connection information may be received from some network interface or other external interface of the communication system. For example, the connection information could comprise information indicating which network interfaces attached to respective networks are to exchange data and information therebetween. The connection information can be used to establish externally controlled data and information exchanges between networks, through their respective network interfaces. The source of the connection information can use information about the types of networks or formats of data and information attached to the communication system, to intelligently reconcile and control exchanges of data and information between the desired networks. Accordingly data and information in any form, and in various diverse network formats, can be reconciled and exchanged between networks in an intelligent and integrated manner by the communication systems of the present invention.
Using
The OSI model shown in
The TCP/IP network layer model 160 is shown accordingly in
The SS/7 network layer model 170 also shown in
Processor 228 executes a suitable software program therein, such as those provided by computer software program product embodiments of the present invention, suitable for translating between at least one network format, such as between at least one of the first network format and the second network format, and a third format. The processor executing a suitable software program, in conjunction with other facilities of the communication system such as network interfaces and the third format, helps to provide intelligent and transparent exchanges between networks while reconciling different forms of data, different types of information, and different network formats. Data or information may be received into one network interface, such as into one of the first network interface 223 and the second network interface 226. The received data or information can be translated from the network format as received from the one network into a third format. The third format can be used to support software switched transmission of the data or information received from the one network interface to the other network interface. Software switched transmission of data may occur directly from one network interface to the other network interface in some embodiments. For some such embodiments, direct transfers between network interfaces means that there are no intervening hardware switching or routing devices between network interfaces. The other network interface could be any other network interface for which the received data or information was destined, such as the other of the first network interface 223 and the second network interface 226, for example.
Networks, such as the first network, second network, or any network shown herein attached to any communication system of the present invention, could each be any known network, such as one of the examples shown in
Accordingly, through its network interfaces the communication system can support any network format associated with a particular network. For instance, the communication system can interface with a first network format associated with a first network and can interface with a second network format associated with a second network. As described, a given network format as used herein includes one or more of the network model layers associated with a particular network. In one embodiment, the first network format may comprise at least one of a network protocol and a network transport or media associated with the first network, and the second network format may comprise at least one of a network protocol and a network transport or media associated with the second network. As such, the communication system can interface networks having some difference in network protocol layers, network transport or media layers, or in one or more other layers. Accordingly, different networks or different network formats would have differences in at least one network model layer of interest. Similar networks or network formats would not have any differences, at least in the network model layer or layers of interest being compared. For example, differences in network model layers of two or more networks could be significant if network layers of interest that a processor accessed and compared had differences. Sometimes, differences in network layer models may not be important or significant. For example, a preset number of network layers from different networks may be encapsulated as payload and transmitted between different networks without requiring any comparisons or translations. For instance, layers 2 through 7 of TCP/IP networks operating on different physical layers or media, such as on fiber and wireless, could be encapsulated and transmitted as payload across TCP/IP networks having different physical layers or media. As another example, a network interface of the communication system could decode an incoming packet from an IP network; such as by removing the physical layer, the data link layer, or both. The remainder of the IP packet could be transmitted as payload in the third format to some other network interface. To summarize, all network layers of a network layer model define the type of network, while one or more network layers of interest to the communication system define the network format of the network. Optionally, the network format comprises at least the physical layer of the network or the data link layer of the network, or both the physical and data link layers of a network. All types of physical media/transports, data links/protocols, and other layers of diverse network layer models can be supported transparently by a communication system that includes suitable network interfaces and network format translation facilities.
Next, we describe some hardware parts and components that may be used to implement the subsystems comprising various communication systems according to the present invention, such as those found in communication systems 200 in
Accordingly, we further describe the processing resources of the communication system, such as processor 228 as shown in
A single processor, such as processor 228, may be sufficient to execute a computer software program product embodiment for performing all the required format translations and software switched exchanges of data for the communication system. The communication system can operate with a single processor assuming it is provided with a suitable software program or programs, sufficiently rapid processing cycles, memory, peripherals, and the like, to support the functions to be provided. In some embodiments, more than one processor may be provided to support format translations and software switched transmissions. For example, a general purpose microprocessor or embedded controller may be programmed and assigned to perform software switched transmissions of data, while a DSP or DSP equipped hybrid processor can be programmed and assigned to perform format translations. As those skilled in the art will appreciate, if multiple processors are used, they may be statically or dynamically assigned to perform various functions required in the communication system. In
Further, processor 228 may be operably connected to at least one of the first network interface 223, the second network interface 226, and the shared non-switched system bus 227. These options for interconnecting the processor 228 to the aforementioned are shown by the dotted connection lines in
Network interfaces, such as example network interfaces 201, 204, and 207 shown in
At least part of the networking support function required in a network interface may be provided by some specialized interface hardware for interfacing with an attached network. A network interface requires at a minimum some specialized interface hardware, such as a physical interface mechanism, for physically connecting to the attached network. Some specialized interface hardware in addition to the physical interface mechanism for supporting the attached network is optional and may be needed depending on the type of attached network. For example, a network interface might only comprise a physical interface mechanism, such as an RJ-45 connector for physically attaching to the network. No other specialized interface hardware may be required. A processor could accordingly connect directly to the network through the physical interface mechanism of the network interface and interact with the network without requiring additional intervening specialized interface hardware. In some cases, interfacing to an attached network may require a network interface having some additional specialized interface hardware or hardware components in addition to the physical interface mechanism. All or part of a network interface, including the specialized interface hardware, physical interface mechanism, and optional hardware components, may be operably connected to other network interfaces, one or more processors, or the shared non-switched system bus as may be required. The specialized interface hardware 230, as shown in
As noted, the network interface may further contain support for data link or higher layer networking functions. Data link or protocol layer functions could be performed by a device such as state machine logic, an ASIC, integrated controller, some programmable interface controller or other programmable hardware device. For example, a network interface could contain a processor such as 228 executing therein a suitable computer software program embodiment according to the present invention. The device or devices supporting data link layer functions could be within or connected to the network interface, and may be connected to the specialized interface hardware as needed. Support for data link layer functions could optionally be provided by the specialized interface hardware itself, such as by incorporating an Ethernet protocol module in the specialized interface hardware, for example. Higher level networking functions beyond data link layer support functions could be also provided by the specialized interface hardware, such as by including a more sophisticated Ethernet controller therein, for example. Those skilled in the art will appreciate that there are many permutations and combinations possible for implementing the functions required of a network interface, since the above discussion is intended to be illustrative and not all inclusive. Further, skilled artisans will understand that many commercially available devices can function as network interfaces, specialized interface hardware, physical interface mechanisms, and the like, to support interfacing with many networks and formats.
A network interface or other external interface of the communication system can be memory mapped and assigned a range of unique memory addresses associated with the interface. In some implementations, the specialized interface hardware or devices supporting the data link layer and higher layer networking functions may be memory mapped. Memory mapping interfaces can help support data exchanges performed through the communication system. Software switched transmission of data, other programmed transfers of data or parameters, and establishing software switched logical connections between network interfaces are among the communication system functions that can be supported by memory mapped network and external interfaces. Memory mapping interfaces may also allow software customization and control of network transmission/receive parameters, network interface controls or the like, for the network or external interface. Memory mapped access to network interfaces or other external interfaces also supports autonomous and efficient transfers of data between interfaces. Data transfers and exchanges setup by a processor between interfaces of a communication system can occur independently of further processor or user intervention.
Many relative configurations are possible that include the processor 228 and at least one network interface, for example like first network interface 223 or second network interface 226 as shown in
A third possible configuration somewhat similar to the second example configuration is shown in
However, a fourth alternate configuration may be created by making some relatively minor modifications to
Next, the shared non-switched system bus 227 as shown in FIGS. 5, 6(a), and 6(b), the shared non-switched system bus 257 shown in
The communication system may include the capability to transfer data bi-directionally, such as by providing full duplex data transfers between network interfaces, through the shared non-switched system bus or through some other connection between interfaces as described. In some embodiments as noted, the communication system can use the PCI bus to connect network interfaces and permit data exchanges therebetween. However, for industry standard PCI busses, transfers are inherently unidirectional, such as from Master to Slave or from Source to Target. However, some PCI bus interface chip vendors, such as AMCC for example, have sold commercially available PCI bus interface modules that can be programmed to permit interleaved bi-directional data transfers through the PCI bus. Instead, an ASIC could be custom designed, or an FPGA could be customized, to provide PCI bus interface modules which are also capable of interleaved bi-directional data transfers. For example, by using PCI bus interface modules such as these, Master to Source and Source to Master PCI bus transfers can be established across a standard PCI or Compact PCI bus for exchanging data bi-directionally between network interfaces. Alternatively, the shared non-switched system bus could also be any of a number of other suitable busses whether or not mentioned explicitly herein capable of supporting data transfers between interfaces and having relatively high bandwidth for data traffic of the communication system. In addition, the shared non-switched system bus could be integrated within the communication system, such as being an internal system bus.
Next, details associated with the third format used in some embodiments for transparent software switched transmission of data between network interfaces through the communication system will be discussed. The third format may be a format suitable for software switched transmission of the data received by a communication system from a first network interface to at least one other outbound network interface of the communication system. Data in the third format may be exchanged transparently between network interfaces through the shared non-switched system bus or the like as described. Data or information received into one of the network interfaces, such as into one of the first network interface and the second network interface, can be translated from the network format as it was received from the one network into a third format. For example, data received into first network interface 223 or second network interface 226 in
Other aspects of translation, inverse translations, and how they are performed will be further explained. As noted, translation between a network format and the third format may require a network interface, a processor, or both, depending on the implementation and particular network involved. The same is true for inverse translation between the third format and a network format. For example, processor 228, first network interface 223 or second network interface 226, or some combination thereof as shown in
The design of the communication system, including the network interfaces and any required processing resources, can accommodate interfacing with various networks and network formats as noted in this disclosure. The programmable nature of the communication system is leveraged to flexibly interface with a number of networks, translate data from an incoming network format to a common transparent format, and inversely translate data in a common transparent format to an outgoing network format. Supporting computer software program product embodiments executing in one or more processors support the various functions of the communication systems. Software programs and data structures may be loaded into some processing resource supporting a network interface, such as a processor, integrated interface controller, other programmable device, or the like as described. As such, support for incoming network formats, outgoing network formats, and the common transparent format can be readily provided through network interfaces by a processing resource. Further, the processing resource can also perform the necessary translations between network formats and the common transparent format. In some cases, software can be used to customize the data link layer, one or more higher network layers, or both, associated with a network format supported at a network interface. This customization can occur at discrete times on demand or dynamically to modify the function of a network interface, such as by modifying the software executed by a processing resource or the parameters processed by a processing resource. As such, network interfaces can be customized to support various networks and network formats. Several different networks and different network formats can be supported through a network interface, even when attached to a given, fixed, physical interface layer. For example, assume a network interface of the communication system is attached to a normal POTS telephone line. By customizing the software or parameters of a processing resource supporting a network interface, various network formats such as analog voice, V.90 modem, DSL, or others can be supported through a normal POTS telephone line. Further, various protocol stacks can be supported by customizing the software or parameters used by a processing resources supporting a network interface. For example, commercially available protocol stacks can be used to allow a processing resource to support that protocol at a given network interface. Computer software program product embodiments of the present invention can be used with processors to support a number of communication system functions as described.
Through a corresponding network interface, the communication systems of the present invention can decode or extract data received in a given network format from a given network. For some embodiments, decoding is part of the translation process applied to incoming received data. The decoding function can be applied to one or more of the network layers inherent in the incoming network format. In some cases, the decoding of incoming data may comprise simply extracting data from a given incoming network format. For example, decoding could comprise extracting analog voice data from the physical layer of an incoming call on a standard POTS telephone line. For some embodiments, data received in a network format may be decoded or extracted from its incoming physical layer and data link layer, so that decoded data can be represented by the contents of network layers 3 through 7 inclusive. For example, decoding or extracting incoming data from an Ethernet link running on copper wire could imply decoding physical layer 1 and data link layer 2. Thus, decoded data could comprise the Internet layer through the application layers of the TCP/IP network layer model shown in
The third format is a transparent and common format that may be used to efficiently direct software switched data between network interfaces through the communication system. Accordingly, the third format can be an encapsulated format, such as an encapsulated hardware or software format, suitable for directing the data between interfaces, such as between network interfaces, external interfaces, or both. Optionally, the third format may include addressing information to identify only the destination or outgoing network interface. Alternatively, the third format may include addressing information to uniquely identify each network interface involved in exchanging data, whether uni-directionally or bi-directionally. As such, computer software program product embodiments executed by a processor of the communication system can determine the source network interface and destination network interface, and establish a software switched exchange of data between network interfaces using the third format. Exchanges of data in the suitable third format can occur between network interfaces whether or not a software switched logical connection is established between network interfaces. An encapsulated format is well suited to serve as the third format. An encapsulated format, such as a hardware encapsulated format, can transparently carry decoded data between network interfaces, regardless of the incoming network format, outgoing network format, or type of data or information being exchanged. As such, decoded data could be encapsulated or packaged in a transparent third format to transport it through the communication system in a common manner. In one embodiment, data received into one network interface can be transmitted in the third format to another network interface through the shared non-switched system bus. For an embodiment, the third format may comprise an IP packet formatted from data received and decoded from any incoming network format, whether or not the incoming network format has an IP network format. For instance, voice data from an incoming POTS telephone network call could be decoded, digitized, and formatted as data in an IP packet representation format. For a related embodiment, the IP packet may be encapsulated in a hardware encapsulated format suitable for transmission through a shared non-switched system bus, such as a PCI bus, for example. As a further illustration, the POTS voice data payload in an IP packet format could be transmitted across the PCI bus in a hardware encapsulated format to another network interface.
Since the payload can be extracted or decoded from incoming data in any network format and can be encapsulated within E1 and E2, the envelope representing the third format may represent a common transparent format used for transferring the payload within the communication system, such as between any two or more network interfaces. For example, envelope 312 may be used transfer decoded data payload created from data received in an incoming network format between the incoming network interface and another network interface. The envelope can be created from data received in any network format, such as the TCP/IP network layer model, the SS/7 or another telephony network layer model, or any other network layer model. Further, decoded data 302 could comprise payloads other than layers 3 through 7 of the OSI model shown as an example in the Figures. For example, decoded data 302 could represent an IP packet, some other packet, a cell, another industry standard format, a proprietary format, some data structure, or the like. In other words, decoded data could be represented in various formats, including an IP packet format. For instance, decoded data 302 could also represent part of one network layer, one network layer, or more than one layer of a given network layer model. Decoded data 302 could represent data or information extracted from any incoming network and any incoming network layer model and thereafter formatted into a particular decoded data format prior to encapsulation. For some embodiments, decoded data could comprise data received from any network in any network format arranged or packaged into an IP packet format. In other words, incoming data received in any incoming network format could be decoded or extracted and thereafter formatted as decoded data payload contained in an IP packet format for transmission between network interfaces. The IP packet could be encapsulated into an envelope, such as 312 for example, for transmitting the decoded data payload transparently between network interfaces. In one embodiment, data received from a POTS telephony network could be decoded or extracted, and formatted as payload into an IP packet format representing decoded data 302. The IP packet format could be encapsulated, such as in a hardware encapsulated format, for transmission between network interfaces. Further, the encapsulated format could be a hardware encapsulated format used to transmit decoded data in an IP packet format transparently between network interfaces through a PCI type bus. Data received in other incoming network formats, such as WAN, fiber, or many others, could also be represented as decoded data in an IP packet format for transmission between network interfaces. Alternatively, formats other than an IP packet could be used as the decoded data format being encapsulated to support transparent data exchanges between network interfaces. Further, any incoming data format may be supported by a compatible network interface, a processor, and a corresponding decoding process. The encapsulation process is typically similar regardless of the particular incoming network format encountered, since the encapsulation integrates a decoded data format into an appropriate encapsulated format used for transmission between network interfaces. Note that a processor executing a suitable computer software program product embodiment can encapsulate, decapsulate, or both for the communication system.
The envelope 312 may be used to transfer decoded data 302 between network interfaces 223 and 226. The envelope may be transferred between network interfaces through the shared non-switched system bus 227 in some embodiments, as shown in FIGS. 5, 6(a) and 6(b) or otherwise as described above. Thus, in some embodiments E1 and E2 may represent hardware encapsulation information. Accordingly, E1 and E2 may include addressing, transfer control, or other information needed to transfer the envelope, including its decoded data payload, through the shared non-switched system bus between network interfaces for some embodiments. Alternatively, E1 and E2 could include similar addressing, transfer control, or other information, such as software encapsulation information, needed to transfer the envelope between interfaces using a software encapsulated format. Envelope 312 may reside in memory mapped registers or memory locations before and after being transferred between network interfaces. In another related embodiment, the shared non-switched system bus may be a PCI bus, and the incoming network may be the Internet or an IP network. In this case, the third format may comprise an encapsulated PCI bus format for transmission of data between network interfaces. More specifically, the third format may also comprise an IP packet encapsulated in a PCI bus format for exchanging data between network interfaces across the PCI bus. The payload or decoded data may be represented as an encapsulated IP or Internet Protocol packet transferred over a PCI bus. As noted, the IP packet payload could comprise one or more layers of the IP network layer model, such as one or more of IP layers 2 through 7. The encapsulated PCI bus format may be further translated, actually inverse translated, into an outbound network format for transmission to another network. Again, computer software program products may support the translation and inverse translation processes for communication systems.
An example of this embodiment, having an IP encapsulated in a PCI bus format for transmission between network interfaces, is illustrated in
PCI bus transfers could then be enabled under software control to permit the transfer of the envelope to a second memory space, such as to some memory mapped registers or memory locations associated with an outgoing network interface, such as the second network interface 226. For example, a processor executing a computer software program product embodiment may be used to enable transfers of data. Thereafter, inverse translation from the third format into a second network format, such as by decapsulating the envelope and then encoding the data payload into a second network format, could optionally be performed. Inverse translation is required to prepare payload in the encapsulated third format for transmission to some outbound network. The data payload, in effect an IP packet encoded with an outgoing network format, could then be transmitted to a second network 224 in the second network format through the second network interface 226. In the above embodiment, which in effect is “IP over PCI”, the third format may comprise an IP packet encapsulated in a PCI memory mapped control block structure which is transferred over the PCI bus using PCI bus cycles. IP over PCI may be accomplished in an efficient manner using a standard PCI bus and off the shelf hardware through the communication system. In another related embodiment, the second network 224 can be a telephony network while the first network 221 could be the Internet or an IP network, such that IP telephony or VoIP (Voice over IP) can be provided in addition to IP over PCI by these communication systems.
An overview of how translating data into a third format supports transparent exchanges of data is now provided. By using a common suitable third format, such as a different or an encapsulated format, it is possible to software switch and direct incoming data transparently between network interfaces, without regard to the incoming network format and the outgoing network format. By using the common third format, data can be transparently and generically exchanged between network interfaces of the communication system, regardless of the network formats of networks attached to those network interfaces. Incoming data in an incoming network format can be decoded and encapsulated into a common third format. The incoming data can be decoded by extracting it from one or more network layers of a network layer model as required to create the payload or decoded data. The payload or decoded data can then be encapsulated as required to embody it in the desired common third format. Once data in the common third format has been effectively transmitted to an outbound network interface, the translation can be inverted or reversed. Thereafter, the communication system can decapsulate and encode data from the common third format into the network format of an outgoing network. Analogously, the encoding can be applied to one or more network layers of a network layer model as required for compatibility with the outbound network format. As such, the data can thereafter be transmitted out of an outbound network interface to the corresponding outbound network. We note that the translations and processing of data described above function equally well whether the incoming network format and outgoing network formats are the same or different. This is the case since incoming data and network formats are processed in a common, transparent manner using translation into the common third format for transporting data between network interfaces. In some cases, the translation and inverse translation processing must reconcile differences in network layer models, as indicated by
Next we describe the software switched and software controlled features of the system, which are significant aspects of the communication systems described herein. Software switching of data, software switched transmissions of data, and software switched logical connections established between network interfaces will be discussed. These functions are supported by computer software program product embodiments provided by the present invention.
Communication systems according to the present invention can perform their switching using software, not hardware. The shared non-switched system bus used in the communication system is by definition a common, party line bus without any intervening hardware switching devices disposed between network interfaces, processors, or the like. As shown in
Software switched transmission of data can be established by the processor, the receiving network interface, the outgoing network interface, or some combination thereof. Recall that in some embodiments, network interfaces may include a processor or programmable controller therein. Software switched logical connections can be established automatically under software control, without requiring intervention from a user of the communication system, between network interfaces. The software switched logical connection logically relates and connects network interfaces to each other such that data transfers are enabled therebetween. In essence, this software may use network interface connection information to issue commands to the respective network interface or interfaces so as to “introduce” them to each other or to make each network interface aware of other network interfaces with which data may be exchanged. For example, the processor executing software could issue commands to address registers within the network interfaces shown in
Data or information may be transferred directly between network interfaces through the software switched logical connection established between transferring network interfaces. Software switched transmission, as used herein, includes using software executing in a processor, such as an operably connected external processor, to determine what network interfaces should be enabled to exchange data with one another, and issuing any required commands or performing any actions required to establish data transfers or data exchanges between the network interfaces. As explained, software switched transmission of data could be provided with or without establishing a software switched logical connection between network interfaces. For example, transfers between network interfaces such as those shown in
There are at least three mechanisms through which software switched transmission or software switched logical connections can be established under software control. First, a user could interact with a GUI interface on a Personal Computer running a software application and connected to some interface of a communication system. This approach may be used for configuring parameters initially, but has performance and inefficiency problems if the ongoing data transfer operations of the system are managed this way. In a second option, automatic software modules can operate real-time in order to effect software switched transmissions of data, to establish and de-establish logical connections of network interfaces, or both. Third, status events or other events occurring at one or more network interfaces can be monitored by software, such that software switched transmissions or software switched logical connections between network interfaces can be setup under event driven software control. Those skilled in the art realize that many other mechanisms not disclosed here might also be possible.
The software switched logical connection can comprise a hardware path established between network interfaces, at least temporarily, under software control. For example, a software switched logical connection could be represented by programmed memory accesses or DMA accesses established across the shared non-switched system bus to transfer data between network interfaces 223 and 226 in
For this PCI embodiment, software switched transmission may also comprise transmitting data directly between network interfaces through the PCI bus, independently of the processor, after the software switched logical connection is established between network interfaces. Network interfaces can use the logical connection or hardware path once established to transfer data between network interfaces. After the logical connection has been established under software control, data transfers may be started by and carried out autonomously between network interfaces, without further software or processor intervention. For example, DMA transfers between network interfaces 223 and 226 in
Software executing in a processor may determine which network interfaces should be enabled to exchange data therebetween. Once the processor executing software has determined which network interfaces are to exchange data, such as between network interfaces 223 and 226 in
Another preferred embodiment of a communication system according to the present invention is illustrated in
Processor 228 can therefore receive network interface connection information, such as information describing which two or more network interfaces are to be logically connected under software control, from at least one of the interfaces operably connected to the processor. The processor executing a software program can use the network interface connection information received to optionally establish a software switched logical connection between the first network interface and the second network interface. The processor executing a software program can establish the logical connection automatically and without any real-time intervention from a user of the communication system. In any case, the network interface connection information could indicate to the processor that it should logically interconnect at least the first network interface and the second network interface. More than two network interfaces or different types of interfaces of the communication system could be logically interconnected. The logical connection is software switched since the processor executing a software program determines which network interfaces are to be logically connected together, and establishes the logical connection therebetween. The processor may issue commands to at least one of the network interfaces involved in the exchange of data in order to establish the software switched logical connection, as discussed. Optionally, the software switched logical connection may comprise a hardware connection established under software control by the processor. The hardware connection is established by the processor between the first and second network interfaces for transmitting data between network interfaces. For example, assuming that the network interfaces within the communication are memory mapped, the software switched logical connection could comprise creating a memory mapped connection between network interfaces. Accordingly, the hardware logical connection could be a unidirectional logical connection or bi-directional logical connection established between memory mapped network interfaces for exchanging data. Regardless of the implementation used, the establishment of the logical connection supports transfers and exchanges of data between interfaces through the communication system. As duly noted, the software switched logical connection between network interfaces can also be de-established by the processor under software control.
The present embodiment relating to externally controlled exchanges of data and information shares some features in common with other disclosed embodiments, such as the embodiment shown in
Data or information may be received into one network interface, such as into one of the first network interface 223 and the second network interface 226. The other network interface could be the other of the first network interface 223 and the second network interface 226, such as the network interface for which the received data or information was destined. The received data or information can be transmitted directly between the one network interface and the other network interface through the software switched logical connection between network interfaces. For this embodiment shown in
The embodiment shown in
A related embodiment of the communication system further comprises a second processor therein, such as second processor 229 as shown in
The operable connection between first network interface 223 and second network interface 226, such as example operable connection 247, may be implemented in different ways in different embodiments. This embodiment does not necessarily require a shared non-switched bus, PCI bus, or another bus as noted. For example, the operable connection for this embodiment could be implemented through a cable or fiber providing some electrical or optical connection respectively between network interfaces for exchanging data therebetween, as described before. In a related embodiment, the operable connection 247 may optionally comprise a shared non-switched system bus, such shared non-switched system bus 227 described in other embodiments, for example as shown in
Next, we describe external node 243, which is connected to external interface 241 through link 242 as shown in
The software program embodiment executed by the external processor of the external node could include a software module or software application for interacting with the communication system, such as for determining the number of networks and devices attached to the various interfaces of a communication system. For this software program, interfaces could include network interfaces, external interfaces, or both of a communication system. In addition, the external processor could optionally determine what bandwidth, what type of network, what network format, what format of data, and what type of information are associated with each interface of the communication system. The software program could be informed of some event or activity occurring at some part of the communication system, such as at a network interface or external interface of the communication system. For example, an event or activity could represent some communication between the communication system and an attached network or device, or could represent detecting some link or network going online or offline. Further, an event or activity of the communication system could represent some status or error information from an attached network or device, could represent some other condition associated with an attached network or device, or the like. The software program can analyze the event or activity occurring at the communication system, and may or may not transmit a control message or the like to the communication system which could cause the communication system to take some action in response. For instance, the software program could cause the communication system to initiate another event or activity for responding to an event or activity occurring at an interface. Optionally, the software program could initiate some event or activity at an interface of the communication system, whether or not in response to another event or activity occurring at the communication system. The software program executed by the external processor could also determine whether to connect interfaces together, which two or more interfaces to connect together, and how to connect interfaces together in a communication system connected either directly or indirectly to the external processor. Optionally, the external processor executing the software program may transmit network interface connection information to a processor in a communication system operably connected thereto.
As such, the processor in the communication system could use the connection information to establish a software switched transmission or software switched logical connection between the specified network interfaces. The software program executing in the processor of the communication system could be able to interpret network interface connection and commands received from the external processor. As such, the processor in the communication system can act as an agent or command interpreter for the external processor. In addition, software executing in the processor of the communication system could have awareness of the external processor and of the status of each network interface and external interface of the communication system. Thus, the processor of the communication system can relay network interface status, external interface status, and other status of a communication system as may be required by the software program executed by the external processor. With real-time status obtained from the communication system, the software program executing in the external processor can make informed decisions regarding whether, how, and which network interfaces of the communication system could be logically connected for exchanging data. The software program can intelligently decide how to software switch data between interfaces, whether and which interfaces to logically connect, or both, according to some other applications or services that may be provided by the software program executing in the external processor.
As mentioned, the software program executed by an external processor could include a software application that can determine how to manage and request the interconnection of interfaces within a communication system. For example, an incoming telephone call directed into one network interface of the communication system could cause the software program to order the logical connection of the one network interface to another network interface connected to the Internet or an IP network. Thus, an incoming POTS telephone call could be directed to the Internet or another IP network in an implementation of VoIP (Voice over IP), without requiring any specialized IP telephones or the like. In another example, the software program could order the connection of various interfaces connected to telephony networks to create a teleconference. Further, the software program could issue commands to interconnect various Personal Computers or the like for establishing real-time videoconferences through the communication system. These are but a few examples of the many functions and services that can be provided by a communication system connected to an external processor executing a suitable software program. Note that the software switched functions of a communication system may be completely controlled externally through the external processor executing a suitable software program therein.
Communication systems described herein rely on various computer software program product embodiments in order to support a number of its functions and operations. First we refer to
A first category of computer software program product embodiments execute in an external processor such as 343 that is external to a communication system such as 300. Such embodiments support the operation of a communication system by externally performing software switching functions for it. We refer to
Further, a second category of computer software program product embodiments execute in a processor, such as 328, within a communication system such as 300 as shown in
In addition, a third category of computer software program product embodiments can be executed by a processor, such as 328, within a communication system such as 300. These software embodiments operate to translate the incoming data from the network format as received into a different format suitable for software switched transmission between interfaces of the communication system, such as between network interfaces 323 and 326. For example the different format may be the third format, common format, transparent format, encapsulated format, or the like, that can support software switched exchanges of data between interfaces of the communication system. We refer to
We now discuss in greater detail the first category of computer software program product embodiments that execute in a processor external to the communication system. We return to
In a related computer program product embodiment, a sixth software module is also provided. Note that this sixth software module is optional in some software embodiments, as shown by the dashed line in
Further computer software program product embodiments further describe details regarding the configuration information. The configuration information received by the computer program product could be provided in a number of different ways. For instance the configuration information could be solicited after power up but before completion of initializing the communication system, or it could be unsolicited configuration information received after power up but before completion of initializing the communication system. Further, the configuration information could be solicited after the communication system is completely initialized, or it could be unsolicited configuration information received after the communication system is completely initialized. For example, the configuration information could be solicited after the communication system is communicating with at least one attached network, or it could be unsolicited configuration information received after the communication system is communicating with at least one attached network. Those skilled in the art will appreciate that these are merely examples and it is possible to have other types of configuration information.
There are a number of configurations through which external software switching can be performed using computer software program product embodiments in support of communication systems. The computer program product embodiments can control software switching in the communication system through execution in at least one processor operably connected to some communication system. In one case, a single external processor operably connected to a communication system and executing a program product embodiment therein can operate as a single software switching resource for the communication system. In some cases, there may be two or more external processors such as 343 shown in
For some computer program product embodiments, at least two external processors provide software switching for the operably connected communication system, and the communication system is able to communicate individually with each external processor. For example, there may be two or more external processors such as 343 shown in
As noted, in some computer program product embodiments each external processor, similar to 343 in
For some computer software program embodiments of the present invention, at least one software module executing within an external processor can perform software switching for a communication system to which it is operably connected. Thereafter, the external processor, such as 343 in
The present invention provides computer software program product embodiments executing in an external processor operably connected to a communication system. In some software program product embodiments, software switching in the external processor is initiated by data being received at a network interface, external interface, or some other interface of the communication system. In essence, the occurrence of data being received by a communication system can be communicated to an operably connected external processor such that it may accordingly perform software switching for the received data. For other software program product embodiments, the occurrence of an event associated with a network interface of the communication system may be communicated to an operably connected external processor such that it may accordingly perform software switching in response to an event at a network interface or the like. For example, the event at a network interface could represent data being received, a network being initialized, a network or link error, or the like occurring at a network interface. In yet further software program embodiments, the occurrence of an event associated with the communication system can be communicated to an operably connected external processor such that it may accordingly perform any software switching required in response to an event in the communication system. For instance, an event at a communication system could be some status, status change, system initialization, system configuration, system configuration change, or error occurring in a communication system. Events can be similarly communicated from a communication system to one or more operably connected external processors suitably programmed to respond to a given event.
Events occurring in a communication system, in a network interface thereof, or in an external interface thereof can represent many things. For instance, an event may represent a network initializing, a network shutting down, a network link being initialized, or a network link shutting down. As further examples, a network interface initializing or a network interface shutting down could be an event. Some events are related to the status of a device attached to a network interface. For example, if a telephone is attached to a network interface, an event could represent a phone going off hook, a phone going on hook, an incoming call being received, an incoming call ringing a telephone number, an incoming call being received with caller ID information, an incoming call being received without caller ID information, an incoming call being received with DID (Direct Inward Dial) information, or an incoming call being received without DID (Direct Inward Dial) information. Further, with a telephone attached to a network interface, an incoming call not being answered, an incoming call not being answered after a given number of rings, a telephone connected to at least one network interface having keypad activity, a telephone connected to at least one network interface having keypad activity but having the activity cease for some period of time, a telephone connected to at least one network interface having keypad activity and keys strokes were captured less than or equal to some key stroke number limit, a telephone connected to at least one network interface having keypad activity and keys strokes were captured beyond some key stroke number limit, or a telephone connected to at least one network interface having keypad activity and key strokes beyond some key stroke number limit that were captured could represent events. Of course, events may be associated with other devices attached to a network interface, such as a network node, a personal computer, a web cam, or the like. An event could also represent a change in status for at least one network interface, or a request for status being made from an external processor to at least one network interface or other interface of an operably connected communication system.
As those skilled in the art will understand, software switching performed by an external processor can be used to manage bandwidth among various external interfaces or network interfaces of an operably connected communication system. In some computer software program product embodiments, at least one software module executing in an external processor can manage differences in bandwidth between the incoming first network interface and at least one other outbound network interface of the communication system. Of course, this can be done so as to multiplex or demultiplex bandwidth between the incoming network interface and the outbound network interface. For example, the external processor can issue a command to an operably connected communication system so as to cause multiplexing, demultiplexing, or both at network interfaces. For instance the external processor can command the communication system to send data through an outbound network interface at a lower bandwidth than that of the incoming first network interface. Alternatively, the external processor can command the communication system to send data through an outbound network interface at a higher bandwidth than that of the incoming first network interface of the communication system. As such, incoming data can be transmitted out through an outbound network interface data at a different bandwidth than that at which it was received, providing concentrator or inverse concentrator functions.
Some computer software program product embodiments executing in an external processor provide at least one software module therein that can create at least one command for an operably connected communication system. These commands may be transmitted by the fifth software module or some other software module executing in an external processor to the communication system. Accordingly, the communication system can decode and implement the received command therein. Those skilled in the art will appreciate that many types of commands may be issued by an external processor to an operably connected communication system. For example, the command could be a command to transmit data from one network interface to at least one other network interface, a command to connect at least two network interfaces together, a command to disconnect at least one network interface from at least one other network interface, a command to establish a logical connection between at least two network interfaces, or a command to de-establish a logical connection between at least two network interfaces. For instance, a command could direct the communication system to take a telephone line off hook. A command could direct a communication system to take a telephone line on hook. A command could instruct the communication system to connect at least one network interface to voicemail, or a command could be used to disconnect at least one network interface from voicemail. For example, a command could direct a communication system to connect at least one network interface to system voice, and another command could direct the communication system to disconnect at least one network interface from system voice. As used herein, the term “system voice” includes a number of audible communications that the communication system may have with an end device or end network node connected to a network interface or some other interface of the communication system. The audible communications can be in either direction between the communication system and the end device or end network node. These audible communications could be directed by the external processor or can originate from the external processor. Alternatively, these audible communications could be initiated by the communication system itself. System voice is similar in functionality to known “voice response unit” functionality. The system voice function can use tones, sampled voice, or other sampled audible sounds for audibly communicating. A command could be used to cause the communication system to dial a telephone number, to define a ring pattern for a telephone, to ring a telephone at least once, or to stop ringing a telephone. Further, a command received from an external processor could be used to program at least one parameter of an operably connected communication system, or to program at least one parameter of a network interface in a communication system. In addition, a command could cause the communication system to initiate at least one outbound signal from at least one network interface, or could cause a communication system to cease transmitting at least one outbound signal from at least one network interface. Of course it is possible to have many other commands, and to direct the operation of the communication system with a series of commands received from an external processor. Next, we discuss some computer software program product embodiments of the present invention that can execute in at least one processor within a communication system.
The present invention includes embodiments related to the first category of computer software program product embodiments. These computer program product embodiments are for execution in at least one processor external to but operably connected to a communication system that exchanges data between networks through at least two network interfaces, as previously disclosed. This embodiment comprises at least five means implemented in software for performing various functions and operations. First means for determining that a first network interface of the communication system is receiving data from a first network in a first network format are provided. Further, second means for determining to which of at least one other network interface of the communication system the data received may be switched in support of at least one functional application of the received data are provided. In addition, third means for switching the data received from the first network interface to at least one other network interface of the communication system according to at least one selected functional application using software switching are also included. Yet further, fourth means for creating at least network interface connection information for the communication system reflecting the result of the software switching decision between the first network interface and at least one other network interface are provided. Fifth means for transmitting at least the network interface connection information to the communication system to control therein to which at least one other network interface the first network interface will transmit the incoming received data to implement software switching in accordance with the selected functional application are also provided.
As indicated, the present invention provides a second category of computer software program embodiments stored in computer readable media for execution in at least one processor within a communication system. As before, the communication system can exchange data between networks through at least two network interfaces, and the communication system is operably connected to at least one external processor. The second category of computer software program product embodiments execute in a processor, such as 328, within a communication system such as 300, as shown in
In a further computer software program product embodiment of the present invention, a fifth software module is provided. Note that this fifth software module is optional in some software embodiments, as shown by the dashed line in
As before, an event may represent many things. For instance, an event could represent an indication that a network is initializing, that a network shutting down, that a link being initialized, or that a link shutting down. Further, an event may represent that a network interface is initializing, that a network interface is shutting down, that a phone is going off hook, or that a phone is going on hook. For example, an event may indicate that an incoming call is being received, that an incoming call is ringing a telephone number, that an incoming call is being received with caller ID information, that an incoming call is being received without caller ID information, that an incoming call is being received with DID (Direct Inward Dial) information, or that an incoming call is being received without DID (Direct Inward Dial) information. In addition, an event might represent that an incoming call is not being answered, that an incoming call is not being answered after a given number of rings, that a telephone is connected to at least one network interface having keypad activity, or that a telephone is connected to at least one network interface having keypad activity but that the activity has ceased for some period of time. Further, an event might indicate that a telephone connected to at least one network interface is having keypad activity, and that key strokes were captured less than or equal to some key stroke number limit. Alternatively, an event can represent that a telephone is connected to at least one network interface having keypad activity and that keystrokes were captured beyond some keystroke number limit. An event might indicate that a telephone connected to at least one network interface is having keypad activity and having key strokes captured beyond some key stroke number limit, that a change in status has occurred for at least one network interface. In addition, an event could represent a request for status from an external processor to at least one network interface of the communication system. Of course many other events are possible.
As mentioned before, computer software program embodiments executing within the communication system can interact with more than one external processor, such that at least two external processors similar to 343 in
Further, as described above, each external processor, such as 343 shown in
In some computer software program embodiments for execution within at least one processor in a communication system, at least one software module therein can implement software switching in the communication system. For instance, a software module can implement a software switched transmission of data between at least two network interfaces within the communication system, based upon the results of the software switching decision made at an external processor. Further, a software module can implement a software switched transmission of data through a logical connection established between at least two network interfaces within the communication system, again responsive to the results of the external software switching decision transmitted to a communication system. Other computer software program product embodiments implement other details regarding data transfers between network interfaces of a communication system. For instance, at least one software module therein can implement a software switched unidirectional data transfer from one network interface to at least one other network interface of the communication system. For example, at least one software module therein can implement a software switched bidirectional data transfer from one network interface to at least one other network interface of the communication system. Computer program product embodiments may contain therein at least one software module for implementing how many and which network interfaces of the communication system are to receive incoming data from a network interface receiving data, according to the network interface connection information received from at least one external processor operably connected to a communication system. Further, as noted previously, at least one software module in some embodiments can manage differences in bandwidth between the incoming first network interface and at least one other outbound network interface of the communication system. For example, a software module executing within a communication system can manage bandwidth by sending data through an outbound network interface at a lower bandwidth than that of the incoming first network interface. For instance, a software module executing within a communication system can manage bandwidth by sending data through an outbound network interface at a higher bandwidth than that of the incoming first network interface of the communication system.
Computer software program embodiments executing in a processor within a communication system interact with an external processor to implement operations within the communication system. Accordingly, at least one software module within a communication system can interpret and implement a command for the communication system received from at least one external processor operably connected thereto. As discussed before, a software embodiment executing within a communication system can interpret and implement many commands from an external processor. For example, software within a communication system can interpret and implement a command to transmit data from one network interface to at least one other network interface, a command to connect at least two network interfaces together, a command to disconnect at least one network interface from at least one other network interface, or a command to establish a logical connection between at least two network interfaces, a command to de-establish a logical connection between at least two network interfaces. Further, a command to setup a data transfer between network interfaces, a command to initiate a data transfer between network interfaces, a command to take a telephone line off hook, or a command to take a telephone line on hook could be received and implemented by a communication system. Further, software within a communication system can implement a command to connect at least one network interface to voicemail, a command to disconnect at least one network interface from voicemail, a command to connect at least one network interface to system voice, or a command to disconnect at least one network interface from system voice. In addition, software within a communication system can implement a command to dial a telephone number, a command to define a ring pattern for a telephone, a command to ring a telephone at least once, or a command to stop ringing a telephone. For example, software within a communication system can implement a command to program at least one parameter of a communication system, a command to program at least one parameter of a network interface in a communication system, a command to have the communication system initiate at least one outbound signal from at least one network interface, a command to have the communication system cease transmitting at least one outbound signal from at least one network interface, or the like. It is understood that many other commands could be interpreted and implemented by software executing within a communication system.
In some computer software program embodiments executing in a communication system, additional software modules may be provided. For example, a software module such as a sixth software module for initiating the physical transfer through the communication system of the data received from the first network interface to at least one other network interface of the communication system may be provided. Note that this sixth software module is optional in some software embodiments, as shown by the dashed line in
The present invention provides some embodiments related to the second category of computer software program product embodiments. These embodiments are also intended for execution in at least one processor within a communication system used for exchanging data between networks through at least two network interfaces. Further, the communication system is operably connected to at least one external processor as before. These embodiments comprise several means for performing various software functions. First means for determining that a first network interface of the communication system is receiving data from a first network in a first network format are provided. Also, second means for transmitting to at least one external processor through at least one interface of the communication system that the first network interface of the communication system is receiving data are included. The software switching decision may be performed by at least one processor external to the communication system based at least on the transmission from the first means for transmitting. In addition, third means for receiving from at least one external processor through at least one interface of the communication system the results of the software switching decision as network interface connection information are provided. The network interface connection information received indicates to which of at least one other network interface of the communication system the data received by the first network interface will be switched. Further, also provided are fourth means for implementing the software switching decision within the communication system by directing the data received from the first network interface to at least one other network interface of the communication system as instructed by the processor external to the communication system.
The present invention provides a third category of computer software program product embodiments for execution by at least one processor, such as 328, within a communication system such as 300 as shown in
As noted, a first network interface of the communication system receives data from a first network in a first network format. At least one software module in these most recent software embodiments identifies at least one other network interface to receive the received data by using network interface connection information received from at least one external processor through at least one of the interfaces of the communication system. The network interface connection information can be created and transmitted by at least one processor external to the communication system to indicate that at least two network interfaces are to exchange data therebetween. Also, the network interface connection information may be created by at least one processor external to the communication system making software switching decisions for the communication system to thereby control which at least two network interfaces are to exchange data therebetween.
For some additional software embodiments, a fifth software module is also provided. Note that this fifth software module is optional in some software embodiments, as shown by the dashed line in
Embodiments related to the aforementioned third category of computer software program product embodiments are also provided. These computer program product embodiments are for execution in at least one processor within a communication system for exchanging data between networks through at least two network interfaces, wherein the communication system is operably connected to at least one external processor as before. These embodiments comprise at least four means for performing various functions using software. As such, first means for determining that a first network interface of the communication system is receiving data from a first network in a first network format are provided. Second means for identifying the first network format of incoming data received from the first network interface are included. Further, third means for receiving from at least one external processor through at least one interface of the communication system an indication that the received data is to be transmitted to at least one other outbound network interface of the communication system are provided. In addition, fourth means for translating the received data from the first network format into different format suitable for software switched transmission of the received data from the first network interface directly to at least one other outbound network interface of the communication system are also provided. At least the fourth means for translating is responsive to the results of the software switching decision received from at least one external processor.
Many modifications and other embodiments of the present invention will come to mind to one skilled in the art having the benefit of the teachings presented in the foregoing descriptions and related figures. Therefore, it is to be understood that the invention is not to be limited to specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Those skilled in the art will appreciate that various features and aspects of the above disclosed embodiments might be combined to create a number of other related embodiments still within the scope of the present invention. As noted, the above written description is meant to disclose and fully describe the present invention, and is not meant to limit or narrow the present invention as defined by the following claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and to limit the scope of the present invention in any way.
Claims
1. A computer program product stored in computer readable media for execution in at least one processor external to but operably connected to a communication system that exchanges data between networks through at least two network interfaces, comprising:
- a first software module for determining that a first network interface of the communication system is receiving data from a first network in a first network format;
- a second software module for determining to which of at least one other network interface of the communication system the data received may be switched in support of at least one functional application of the received data;
- a third software module for software switching the data received from the first network interface to at least one other network interface of the communication system according to at least one selected functional application;
- a fourth software module for creating at least network interface connection information for the communication system reflecting the result of the software switching decision between the first network interface and at least one other network interface; and
- a fifth software module for transmitting at least the network interface connection information to the communication system to control therein to which at least one other network interface the first network interface will transmit the incoming received data to implement software switching in accordance with the selected functional application.
2. The computer program product of claim 1, further comprising a sixth software module for receiving configuration information from the operably connected communication system wherein the configuration information consists of at least one of which network interfaces are present in the communication system, which network interfaces are configured in the communication system, which network interfaces are active in the communication system, what type of networks are connected to network interfaces of the communication system, what types of network formats are supported by network interfaces, what types of network formats are in use in network interfaces of the communication system, what type of physical interface is currently in use in network interfaces of the communication system, the bandwidth of network interfaces in the communication system, the status of at least one network interface in the communication system, an event from at least one network interface in the communication system, what network nodes are connected to each network interface of a communication system, the status of at least one device connected to the corresponding network interfaces of the communication system, and the status of at least one network node connected to the corresponding network interfaces of the communication system.
3. The computer program product of claim 2, wherein the configuration information received by the computer program product is one of configuration information solicited after power up but before completion of initializing the communication system, unsolicited configuration information after power up but before completion of initializing the communication system, configuration information solicited after the communication system is completely initialized, unsolicited configuration information after the communication system is completely initialized, configuration information solicited after the communication system is communicating with at least one attached network, and unsolicited configuration information after the communication system is communicating with at least one attached network.
4. The computer program product of claim 1, wherein the computer program product can control software switching in the communication system through execution in at least one processor selected from the group consisting of a single external processor operably connected to the communication system operating as a single software switching resource for the communication system, at least two external processors operably connected to the communication system configured to operate as a single redundant software switching resource for the communication system, at least two external processors operably connected to the communication system configured to share software switching functions therebetween for the communication system, at least two external processors operably connected to the communication system configured to split software switching functions therebetween for the communication system based on at least two functional applications, at least two external processors operably connected to the communication system configured to split software switching functions therebetween for the communication system based on relative processor workloads, and at least two external processors operably connected to the communication system configured to split software switching functions therebetween for the communication system based on the network interfaces supported by each external processor.
5. The computer program product of claim 4, wherein at least two external processors provide software switching for the communication system, and wherein the communication system communicates individually with each external processor by at least one way of identifying selected from the group consisting of identifying an external processor according to at least one network interface it switches, identifying an external processor according to at least one network address associated with at least one network interface each processor switches, identifying an external processor according to a dynamic table lookup associating external processors with network interfaces each external processor switches, identifying an external processor according to a dynamic table lookup associating external processors with network addresses associated with network interfaces each external processor switches, identifying at least one network address associated with each external processor, identifying at least one network node associated with each external processor providing software switching therefor, identifying at least one device attached to a network interface associated with each external processor providing software switching therefor, the communication system broadcasting a transmission to each external processor such that each processor can compare the network interface originating the transmission to the network interfaces each external processor switches, and the communication system broadcasting a transmission to each external processor such that each processor can compare the network address of the transmission to the network addresses each network processor switches.
6. The computer program product of claim 1, wherein each external processor operably connected to the communication system maintains a lookup table containing at least one entry from the group consisting of all network interfaces for which an external processor provides software switching, all network addresses associated with all network interfaces for which an external processor provides software switching, all network nodes associated with all network interfaces for which an external processor provides software switching, all devices associated with network interfaces for which an external processor provides software switching, the relationship between network interfaces for which an external processor provides software switching, the physical location of devices attached to network interfaces for which an external processor provides software switching, the user of devices attached to network interfaces for which an external processor provides software switching, the relationship between network addresses for which an external processor provides software switching, the relationship between network nodes for which an external processor provides software switching, the relationship between devices for which an external processor provides software switching, the physical to logical association of devices attached to network interfaces for which an external processor provides software switching, the status of at least one device connected to the corresponding network interfaces of the communication system, the status of at least one network node connected to the corresponding network interfaces of the communication system, and combinations of at least two of the above lookup table entries associated with an external processor providing software switching therefor.
7. The computer program product of claim 1, wherein at least one software module therein can perform software switching for the communication system selected from the group consisting of a software switched transmission of data between at least two network interfaces within the communication system and a software switched transmission of data through a logical connection established between at least two network interfaces within the communication system, to be transmitted by the fifth software module to the communication system for software switching implementation therein.
8. The computer program product of claim 1, wherein at least one software module therein creates a software switched transfer in the communication system selected from the group consisting of a unidirectional data transfer from one network interface to at least one other network interface of the communication system and a bidirectional data transfer from one network interface to at least one other network interface of the communication system.
9. The computer program product of claim 1, wherein at least one software module therein determines how many and which network interfaces of the communication system are to receive incoming data received from the first network interface.
10. The computer program product of claim 1, wherein software switching is initiated by at least one of data being received at a network interface of the communication system, the occurrence of an event associated with a network interface of the communication system, and the occurrence of an event associated with the communication system.
11. The computer program product of claim 10, wherein the event comprises at least one of a network initializing, a network shutting down, a network link being initialized, a network link shutting down, a network interface initializing, a network interface shutting down, a phone going off hook, a phone going on hook, an incoming call being received, an incoming call ringing a telephone number, an incoming call being received with caller ID information, an incoming call being received without caller ID information, an incoming call being received with DID (Direct Inward Dial) information, an incoming call being received without DID (Direct Inward Dial) information, an incoming call not being answered, an incoming call not being answered after a given number of rings, a telephone connected to at least one network interface having keypad activity, a telephone connected to at least one network interface having keypad activity but the activity has ceased for some period of time, a telephone connected to at least one network interface having keypad activity and keys strokes were captured less than or equal to some key stroke number limit, a telephone connected to at least one network interface having keypad activity and keys strokes were captured beyond some key stroke number limit, a telephone connected to at least one network interface having keypad activity and key strokes beyond some key stroke number limit that were captured, a change in status for at least one network interface, and a request for status from an external processor to at least one network interface.
12. The computer program product of claim 1, wherein at least one software module therein can manage differences in bandwidth between the incoming first network interface and at least one other outbound network interface of the communication system by issuing a command thereto consisting of at least one of commanding the communication system to send data through an outbound network interface at a lower bandwidth than that of the incoming first network interface and commanding the communication system to send data through an outbound network interface at a higher bandwidth than that of the incoming first network interface of the communication system.
13. The computer program product of claim 1, wherein at least one software module therein creates a command for the communication system that is transmitted by the fifth software module to the communication system for implementation of the command therein.
14. The computer program product of claim 13, wherein the command consists of at least one command from the group consisting of a command to transmit data from one network interface to at least one other network interface, a command to connect at least two network interfaces together, a command to disconnect at least one network interface from at least one other network interface, a command to establish a logical connection between at least two network interfaces, a command to de-establish a logical connection between at least two network interfaces, a command to take a telephone line off hook, a command to take a telephone line on hook, a command to connect at least one network interface to voicemail, a command to disconnect at least one network interface from voicemail, a command to connect at least one network interface to system voice, a command to disconnect at least one network interface from system voice, a command to dial a telephone number, a command to define a ring pattern for a telephone, a command to ring a telephone at least once, a command to stop ringing a telephone, a command to program at least one parameter of a communication system, a command to program at least one parameter of a network interface in a communication system, a command to have the communication system initiate at least one outbound signal from at least one network interface, and a command to have the communication system cease transmitting at least one outbound signal from at least one network interface.
15. A computer program product stored in computer readable media for execution in at least one processor within a communication system for exchanging data between networks through at least two network interfaces, wherein the communication system is operably connected to at least one external processor, comprising:
- a first software module for determining that a first network interface of the communication system is receiving data from a first network in a first network format;
- a second software module for transmitting to at least one external processor through at least one interface of the communication system that the first network interface of the communication system is receiving data;
- wherein the software switching decision is performed by at least one processor external to the communication system based at least on the transmission from the second software module;
- a third software module for receiving from at least one external processor through at least one interface of the communication system the results of the software switching decision as network interface connection information;
- wherein the network interface connection information received indicates to which of at least one other network interface of the communication system the data received by the first network interface will be switched; and
- a fourth software module for implementing the software switching decision within the communication system by directing the data received from the first network interface to at least one other network interface of the communication system as instructed by the processor external to the communication system.
16. The computer program product of claim 15, wherein the software switching decision is made by at least one external processor according to at least one desired functional application of the received data.
17. The computer program product of claim 15, further comprising a fifth software module for exchanging with at least one external processor information selected from the group consisting of communication system configuration information, network interface configuration information, information about attached network nodes, information about supported network formats, information about attached network formats, communication system operational information, network interface operational information, network format information for a network interface, physical interface information for a network interface, communication system status information, network interface status information, communication system event information, the status of at least one device connected to the corresponding network interfaces of the communication system, the status of at least one network node connected to the corresponding network interfaces of the communication system, and network interface event information.
18. The computer program product of claim 17, wherein the event comprises at least one of a network initializing, a network shutting down, a link being initialized, a link shutting down, a network interface initializing, a network interface shutting down, a phone going off hook, a phone going on hook, an incoming call being received, an incoming call ringing a telephone number, an incoming call being received with caller ID information, an incoming call being received without caller ID information, an incoming call being received with DID (Direct Inward Dial) information, an incoming call being received without DID (Direct Inward Dial) information, an incoming call not being answered, an incoming call not being answered after a given number of rings, a telephone connected to at least one network interface having keypad activity, a telephone connected to at least one network interface having keypad activity but the activity has ceased for some period of time, a telephone connected to at least one network interface having keypad activity and keys strokes were captured less than or equal to some key stroke number limit, a telephone connected to at least one network interface having keypad activity and keys strokes were captured beyond some key stroke number limit, a telephone connected to at least one network interface having keypad activity and key strokes beyond some key stroke number limit that were captured, a change in status for at least one network interface, and a request for status from an external processor to at least one network interface.
19. The computer program product of claim 15, wherein at least one software module therein can implement software switching in the communication system selected from the group consisting of a software switched transmission of data between at least two network interfaces within the communication system and a software switched transmission of data through a logical connection established between at least two network interfaces within the communication system.
20. The computer program product of claim 15, wherein at least two external processors provide software switching for the communication system, and wherein the communication system communicates individually with each external processor by at least one way of identifying selected from the group consisting of identifying an external processor according to at least one network interface it switches, identifying an external processor according to at least one network address associated with at least one network interface each processor switches, identifying an external processor according to a dynamic table lookup associating external processors with network interfaces each external processor switches, identifying an external processor according to a dynamic table lookup associating external processors with network addresses associated with network interfaces each external processor switches, identifying at least one network address associated with each external processor, identifying at least one network node associated with each external processor providing software switching therefor, identifying at least one device attached to a network interface associated with each external processor providing software switching therefor, the communication system broadcasting a transmission to each external processor such that each processor can compare the network interface originating the transmission to the network interfaces each external processor switches, and the communication system broadcasting a transmission to each external processor such that each processor can compare the network address of the transmission to the network addresses each network processor switches.
21. The computer program product of claim 15, wherein each external processor operably connected to the communication system maintains a lookup table containing at least one entry from the group consisting of all network interfaces for which an external processor provides software switching, all network addresses associated with all network interfaces for which an external processor provides software switching, all network nodes associated with all network interfaces for which an external processor provides software switching, all devices associated with network interfaces for which an external processor provides software switching, the relationship between network interfaces for which an external processor provides software switching, the physical location of devices attached to network interfaces for which for which an external processor provides software switching, the user of devices attached to network interfaces for which an external processor provides software switching, the relationship between network addresses for which an external processor provides software switching, the relationship between network nodes for which an external processor provides software switching, the relationship between devices for which an external processor provides software switching, the physical to logical association of devices attached to network interfaces for which an external processor provides software switching, the status of at least one device connected to the corresponding network interfaces of the communication system, the status of at least one network node connected to the corresponding network interfaces of the communication system, and combinations of at least two of the above lookup table entries associated with an external processor providing software switching therefor.
22. The computer program product of claim 15, wherein at least one software module therein implements a software switched transfer in the communication system selected from the group consisting of a unidirectional data transfer from one network interface to at least one other network interface of the communication system and a bidirectional data transfer from one network interface to at least one other network interface of the communication system.
23. The computer program product of claim 15, wherein at least one software module therein implements how many and which network interfaces of the communication system are to receive incoming data from the first network interface according to the network interface connection information received from at least one external processor.
24. The computer program product of claim 15, wherein at least one software module therein can manage differences in bandwidth between the incoming first network interface and at least one other outbound network interface of the communication system by at least one of by sending data through an outbound network interface at a lower bandwidth than that of the incoming first network interface and by sending data through an outbound network interface at a higher bandwidth than that of the incoming first network interface of the communication system.
25. The computer program product of claim 15, wherein at least one software module therein interprets and implements a command for the communication system received from at least one external processor operably connected thereto.
26. The computer program product of claim 25, wherein the command consists of at least one command from the group consisting of a command to transmit data from one network interface to at least one other network interface, a command to connect at least two network interfaces together, a command to disconnect at least one network interface from at least one other network interface, a command to establish a logical connection between at least two network interfaces, a command to de-establish a logical connection between at least two network interfaces, a command to setup a data transfer between network interfaces, a command to initiate a data transfer between network interfaces, a command to take a telephone line off hook, a command to take a telephone line on hook, a command to connect at least one network interface to voicemail, a command to disconnect at least one network interface from voicemail, a command to connect at least one network interface to system voice, a command to disconnect at least one network interface from system voice, a command to dial a telephone number, a command to define a ring pattern for a telephone, a command to ring a telephone at least once, a command to stop ringing a telephone, a command to program at least one parameter of a communication system, a command to program at least one parameter of a network interface in a communication system, a command to have the communication system initiate at least one outbound signal from at least one network interface, and a command to have the communication system cease transmitting at least one outbound signal from at least one network interface.
27. The computer program product of claim 15, further comprising a sixth software module for initiating the physical transfer through the communication system of the data received from the first network interface to at least one other network interface of the communication system.
28. The computer program product of claim 15, wherein the processor within the communication system executing at least one software module therein is disposed in at least one of the first network interface and at least one other network interface of the communication system.
29. A computer program product stored in computer readable media for execution in at least one processor within a communication system for exchanging data between networks through at least two network interfaces, wherein the communication system is operably connected to at least one external processor, comprising:
- a first software module for determining that a first network interface of the communication system is receiving data from a first network in a first network format;
- a second software module for identifying the first network format of incoming data received from the first network interface;
- a third software module for receiving from at least one external processor through at least one interface of the communication system an indication that the received data is to be transmitted to at least one other outbound network interface of the communication system;
- a fourth software module for translating the received data from the first network format into a different format suitable for software switched transmission of the received data from the first network interface directly to at least one other outbound network interface of the communication system; and
- wherein at least the fourth software module is responsive to the results of the software switching decision received from at least one external processor.
30. The computer program product of claim 29, wherein the different format suitable for software switched transmission of received data between network interfaces consists of at least one of received data in an encapsulated hardware format, received data in an encapsulated PCI bus format, received data in an IP packet in an encapsulated hardware format, received data in an IP packet in an encapsulated PCI bus format, received data in an encapsulated software format, and received data in the incoming network format encapsulated for transmission between network interfaces.
31. The computer program product of claim 29, wherein at least one software module identifies at least one other network interface to receive the received data by using network interface connection information received from at least one external processor through at least one of the interfaces of the communication system.
32. The computer program product of claim 31, wherein the network interface connection information is created and transmitted by at least one processor external to the communication system to indicate that at least two network interfaces are to exchange data therebetween.
33. The computer program product of claim 32, wherein the network interface connection information is created by at least one processor external to the communication system making software switching decisions for the communication system to control which at least two network interfaces are to exchange data therebetween.
34. The computer program product of claim 29, further comprising a fifth software module for translating received data in the different format suitable for software switched transmission into an outbound network format suitable for transmission from at least one other network interface of the communication system.
35. The computer program product of claim 34, wherein the different format suitable for software switched transmission being translated into an outbound network format consists of at least one of received data in an encapsulated hardware format, received data in an encapsulated PCI bus format, received data in an IP packet in an encapsulated hardware format, received data in an IP packet in an encapsulated PCI bus format, received data in an encapsulated software format, and received data in the incoming network format encapsulated for transmission between network interfaces.
36. The computer program product of claim 34, wherein the network format of data received from the first network interface and the outbound network format are different.
37. The computer program product of claim 36, wherein the translation of data received from the first network interface in the first format into the different format suitable for software switched transmission and the translation of data received from the different format suitable for software switched transmission into the outbound network format are used to reconcile differences between the first and outbound network formats such that data may be exchanged between different network formats.
38. The computer program product of claim 36, wherein the first network connected to the first network interface and the second network connected to the outbound network interface have different network layer models that are reconciled through format translations performed by the computer program product of the communication system.
39. A computer program product stored in computer readable media for execution in at least one processor external to but operably connected to a communication system that exchanges data between networks through at least two network interfaces, comprising:
- first means for determining that a first network interface of the communication system is receiving data from a first network in a first network format;
- second means for determining to which of at least one other network interface of the communication system the data received may be switched in support of at least one functional application of the received data;
- third means for switching the data received from the first network interface to at least one other network interface of the communication system according to at least one selected functional application using software switching;
- fourth means for creating at least network interface connection information for the communication system reflecting the result of the software switching decision between the first network interface and at least one other network interface; and
- fifth means for transmitting at least the network interface connection information to the communication system to control therein to which at least one other network interface the first network interface will transmit the incoming received data to implement software switching in accordance with the selected functional application.
40. A computer program product stored in computer readable media for execution in at least one processor within a communication system for exchanging data between networks through at least two network interfaces, wherein the communication system is operably connected to at least one external processor, comprising:
- first means for determining that a first network interface of the communication system is receiving data from a first network in a first network format;
- second means for transmitting to at least one external processor through at least one interface of the communication system that the first network interface of the communication system is receiving data;
- wherein the software switching decision is performed by at least one processor external to the communication system based at least on the transmission from the first means for transmitting;
- third means for receiving from at least one external processor through at least one interface of the communication system the results of the software switching decision as network interface connection information;
- wherein the network interface connection information received indicates to which of at least one other network interface of the communication system the data received by the first network interface will be switched; and
- fourth means for implementing the software switching decision within the communication system by directing the data received from the first network interface to at least one other network interface of the communication system as instructed by the processor external to the communication system.
41. A computer program product stored in computer readable media for execution in at least one processor within a communication system for exchanging data between networks through at least two network interfaces, wherein the communication system is operably connected to at least one external processor, comprising:
- first means for determining that a first network interface of the communication system is receiving data from a first network in a first network format;
- second means for identifying the first network format of incoming data received from the first network interface;
- third means for receiving from at least one external processor through at least one interface of the communication system an indication that the received data is to be transmitted to at least one other outbound network interface of the communication system;
- fourth means for translating the received data from the first network format into different format suitable for software switched transmission of the received data from the first network interface directly to at least one other outbound network interface of the communication system; and
- wherein at least the fourth means for translating is responsive to the results of the software switching decision received from at least one external processor.
Type: Application
Filed: Dec 8, 2004
Publication Date: Jul 7, 2005
Inventor: Mark Tofano (Charlotte, NC)
Application Number: 11/007,787