The present invention relates to networking switching devices.
An increasingly important part of the computer revolution is connection of computers through computer networks. This allows computers to be used as tools for better communication between people and between databases, it allows individual computers to access more information, and it allows computers to share devices such as printers, fax machines, and modems. There are many types of computer networks and computer network protocols. Network protocols and the software which operates according to those protocols are normally divided into seven layers. As a general rule, the higher the software layer, the more specific and high level the software. Network switching can take place at several of these different software levels. Probably the two most common layers at which network switching take place are 1) the Media Access Control, or MAC, layer, which a sub-layer of the Data Link layer, and 2) the next higher layer than the Data Link layer, the Network layer.
There are multiple MAC layer protocols, such as Ethernet 2.0, Ethernet IEEE 802.3, and token ring IEEE 802.5.
A common type of device for network switching at the MAC layer is the so-called network bridge. A bridge is a well known type of network switching device to which multiple branches of a network are connected. When a packet is transmitted on a branch connected to a bridge, the bridge looks at the destination address in the packet. If the bridge knows the packet's destination address is associated with the branch from which the bridge received the packet, the bridge will not copy the packet to any other branch. If, however, the bridge knows the packet's destination address is associated with another specific branch connected to the bridge, it will copy the packet onto that specific branch, allowing the packet to be properly received. However, if the bridge does not know to which of its branches the destination address belongs, it will cause the packet to be sent on all of its branches except the one from which it received the packet, ensuring that if the packet is addressed to a destination on the network, that destination will get a chance to receive the packet.
One type of bridge which is commonly used is called a learning bridge. Learning bridges store in memory a list of the source addresses of the packets which they receive from each of the various branches which are directly connected to them. If a packet received from a given branch has a given source address, it indicates that the device with that address is connected, either directly or indirectly, to that particular branch. When the bridge receives a packet, it compares the destination address associated with that packet with the list of source addresses associated with each branch. If it finds the destination address in that list, it sends the packet to the branch associated with the destination address. If it does not find the address in the list, it sends the packet to all branches other than the one on which it was received.
Bridges also commonly use a spanning tree algorithm. This takes that part of the network which is directly connected to a given bridge and insures that it does not contain any loops. It does this by disconnecting those bridge ports, the connection of which would result in such loops. Preventing loops in a network comprised of bridges is important. If such loops existed, bridges could continuously cycle a given message around the loop, causing undesirable congestion.
A common bridging protocol which covers both learning bridges and a spanning algorithm is defined in the Draft P802.1d/D9 Mac Bridges specification prepared by IEEE Project 802, Local and Metropolitan Area Networks, July 1989.
Another type of network switching device is the router. As is well known in the networking arts, routers switch packets between branches of a network, like bridges, but they are different than bridges because they operate at the next higher level of network software, the so-called network layer, and because they provide more flexibility and control of the actual route which the packet takes through the network. Bridges normally switch packets based on the hard wired device addresses associated with the source and destination of each packet. As a result, the operation of the bridge is totally transparent from the viewpoint of a device on the network. Routers, on the other hand, switch packets based on Network layer addresses which can be assigned by users, and which in some network layer protocols are hierarchical. Thus, unlike bridge switching, which does not require any addressing other than that used on a single MAC layer network branch, router switching requires a different type of packet, with its own addressing information, from that used at the MAC layer. When a message is sent to a router over a MAC layer communications link, it requires a network layer packet of the type shown in
There are many protocols which perform routing at the network layer. These include IP, ISO-IP, Novell Netware, Xerox XNS, DECNET Routing Layer, and Appletalk. The network layer also includes various protocols which are used in conjunction with the above protocols to provide information about the network layer network topology necessary for such routing to work properly.
Both bridges and routers have advantages. Bridges are often preferable for connecting smaller networks, because they are generally simpler and faster. However, they are not as good when network size grows. The fact that bridges switch based only numerical device addresses, rather than user-assigned addresses, tends to make addressing more complicated over a large network. Routers give users the ability to establish preferred paths between various networks, whereas bridges provide very little control over the paths that messages take. Bridges respond to messages the address of which they do not know by sending the message out over all of their branches other than that from which the message came. In large networks, where individual bridges are likely not to know the address of many individual devices, this can result in a highly congested system. Finally, because bridges switch at a lower level, they are more prone to relay improper messages and thus are less likely to protect a network from faulty transmission if a device goes haywire. Routers, on the other hand, tend to act as a fire wall beyond which the retransmission of such faulty messages is normally stopped.
For all of these reasons it can be seen that it is often desirable to configure a network as a combination of bridges and routers, using bridges to connect many local devices, but using routers to connect groupings of networks connected by bridges. In the past it has been possible to use routers to connect groups of bridged MAC networks, or subnets, but this has required using a MAC communication link between each such subnet and a MAC interface to the router. Such mechanical connection requires considerable time, space, and money.
It is an object of the present invention to provide a network switching device which is less expensive than network switching devices in the prior art capable of performing the same function.
It is another object of the present invention to provide a network switching device which takes up less room than network switching devices in the prior art capable of performing the same function.
It is yet another object of the present invention to provide a network switching device which tends to reduce the amount of cabling required to connect a given group of devices to the network with the same level of bridging and routing.
It is still another object of the present invention to provide a network switching device which provides both ease and flexibility in connecting together networks by both bridging and routing.
The present invention relates to a network switching device. The switching device comprises a plurality of input/output devices for receiving or sending communications packets. It includes software means for enabling a user to selectively group the input/output devices into one or more logical bridges, and software means for performing MAC level bridging between the input/output devices grouped with each such logical bridge. In a preferred embodiment, the switching device further includes software means for enabling a user to selectively connect the bridges with one or more logical routers and software means for performing network layer routing between the bridges associated with each such logical router.
These and other aspects of the present invention will become more evident upon reading the following description of the preferred embodiment in conjunction with the accompanying drawings, in which:
The present invention relates to a software configurable bridge/router. The preferred embodiment 42 of the invention is shown in
As is shown in
Finally,
The preferred embodiment of the invention is a computer system having a programmable CPU and the memory necessary to run the software capable of configuring the bridge/router and to operate it once configured. In the preferred embodiment, the CPU and memory are located on a printed circuit mother board. This mother board is designed so that additional printed circuit cards containing I/O devices can be plugged into it. The mother board contains an RS232 port capable of driving a standard terminal, enabling the system to project information about the system's current status and configuration on the screen of the terminal, and allowing the user to enter information to change and control the system on the keyboard of the terminal. In another embodiment, the programmable CPU, memory, multiple I/O devices, and RS232 port are all placed on one printed circuit board designed to fit into a standard bus computer. Those skilled in the art of computer design will understand that any combination of one or more programmable devices and memory, with more than one I/O device, could be used to create equivalent functionality.
In the preferred embodiment, the mapping between devices, bridges, and routers is only changed upon initialization, to avoid certain complexities which can arise from changing the network topology while the network is running. In embodiments designed to deal with such complexities, such mapping changes could be made while the network is running.
The RAM data structures of
A device list similar to that shown in
The bridge list 140, shown in
The router list 160, shown in
Each protocol record 170 in the list of protocol records pointed to by the pointer 166 includes the following fields: a protocol ID 172 which identifies the protocol the record describes; a routing table 174, which, according to the known rules of the particular protocol, indicates to which interface of the router a packet having a given Network layer destination address should be routed; and table 176 which maps logical, or network layer, addresses into MAC layer addresses. The routing table 174 and the logical to MAC address table are both created as the network runs according to the known rules of the protocol specified by the protocol ID 172. For this reason, the values of these fields are not stored in NOVRAM.
Each interface record 178 in the list of interface records pointed to by the pointer 168 includes the following fields: an interface ID 180, which identifies which interface the record describes; a MAC address 182, which contains the MAC address, if any, associated with the interface; a bridge/device ID 184, which identifies if the interface is connected to a bridge or a device, and identifies the which particular device or bridge it is connected to; and an interface protocol list pointer 186, which points to a list of interface protocol records 190. Since the MAC address 182 is assigned to the interface upon initialization, it is not stored in NOVRAM.
Each interface protocol record 190 in the list of such records pointed to by the interface protocol list pointer 186 contains information for its associated interface which is specific to each protocol which has been selected for the router of which the interface is part. Each interface protocol record includes a Network layer address 192, an address mask 194, and other protocol specific information 196 such as routing metrics which tune the operation of the router.
Referring now to
Once the user makes such a selection, the routine performs one of the following steps 76, 78, 80, or 84 which correspond to the selection.
If the user selects the Device/Bridge/Router mapping menu, the test at the top of step 76 will be met, and thus the remainder of that step will be performed. This step includes two sub-steps, 86 and 88. The first projects a menu which shows the user both the current connection between I/O devices D1-D16, logical bridges 48, and logical routers 52, and the connections that will be made between such entities once the system is re-initialized. Preferably this is done by presenting a screen which lists all I/O devices, logical bridges, and logical routers in order of their respective IDs. For each I/O device listed in order, it lists the bridge or router to which it is currently connected, if any, and to which it will be connected after re-initialization, if any. For each logical bridge listed in order, it lists the device or logical router to which it is currently connected, if any, and to which it will be connected after re-initialization, if any. Similarly, for each logical router listed in order, it lists the device or logical bridge to which it is currently connected, if any, and to which it will be connected after re-initialization, if any. The menu also allows the user to disconnect or change the connections of each device, bridge, or router and to exit the menu when done.
When the user exits the device/bridge/router mapping menu, step 88 saves the menu's information representing the mapping desired after re-initialization in NOVRAM. For each device, and then for each bridge, to be connected to a router, it stores an interface record 178 in the NOVRAM interface list associated with the router's router record 162. It gives each such successive interface record a successively numbered interface ID 180, and a bridge/device ID 184 equal to that of the connected device or bridge. Then for each device, it creates a device record 122 in NOVRAM and gives the record the device's ID, and sets its associated bridge ID 132 or associated router ID 134 to the ID of the bridge or router, respectively, to which it is connected. Then for each bridge, it creates a bridge record 142 having the bridge ID of that bridge, and having a separate port record 152 for each device or router to which the bridge is connected. Each such port record created for the bridge contains a successive port ID and a device/router ID set equal to the ID of the device or router to which the port is connected. Once this is done, all the post initialization configuration information contained in the device/bridge/router menu will have been saved in NOVRAM, and the configuration routine will return to step 74, which projects the main configuration menu.
If, from the main configuration menu of step 74, the user selects to see or change the bridge spanning tree menu, the condition at the start of step 78 will be met, causing the routine to enter the repeat loop 90. This loop repeats substeps 92, 94, and 96. Step 92 allows the user to select either which logical bridge he wishes to see by typing the ID of that bridge, or to exit to the main configuration menu of step 74. If the user selects to see a specific logical bridge, the condition of step 94 is met, and substeps 98 and 99 are performed. Step 98 projects a screen which shows the ID of the selected logical bridge, a list of its ports, which I/O device or logical bridge is connected to each such port, and, for each port connected to an I/O device, the spanning tree variables selected for that port. It also shows those spanning tree variables which relate to the bridge as a whole. The screen allows the user to change the spanning tree variables associated with each device port and with the bridge, and it allows the user to exit from the screen.
Spanning tree variables tune the spanning tree algorithm, which prevents the existence of loops in network of LANS connected by the given bridge by disabling ports, if necessary. Such variables are well known in network bridging, having been defined for each of several different bridging protocols.
When the user selects to exit the spanning tree variable screen for a given bridge, the routine enters step 99. Step 99 stores the spanning tree variables shown for each bridge in the spanning tree variable field 146 of the bridge record for that bridge. It stores the spanning tree variables for each port of that bridge in the field 156 of that bridge's corresponding port record 152. These variables are stored in both the RAM and NOVRAM Bridge list. Changing the spanning tree variables of a bridge in RAM while the system is working may alter the spanning tree configuration of the network, but it should not cause any problems.
Once step 99 is complete, the routine repeats the spanning tree selection loop by returning to step 92. This enables the user to either select another bridge or to exit the spanning tree selection process. When the user selects to exit the spanning tree variable selection, the test of step 96 is met, and the routine returns to the main configuration menu in step 74.
If the user selects the protocol selection menu from the main configuration menu, the test of step 80 is met and steps 100, 102, 104, and 106 will be performed. Step 100 lets the user select a particular logical router by specifying its ID. Once this is done, step 102 presents a screen which shows the user the ID of the selected router, which device or bridge each of its interfaces is connected to, which of the network layer routing protocols are available for the router, and which of those protocols have been selected. Once this screen is shown, the user can turn on or off each of the possible routing protocols available for the logical router, or chose to quit the screen. If the user selects a given protocol, step 104 projects a screen showing the variables associated with each interface of the given logical router for the selected protocol. These include the network layer address associated with the interface for that protocol, the address mask for the interface if appropriate for the protocol, and various other variables associated with individual router interfaces in the given protocol, such as a routing metric. Once the user selects to leave this screen, or if the user selects to exit the screen shown by step 102, step 106 alters, adds or subtracts protocol records 170 from the router's protocol list, and adds or subtracts interface protocol records 190 for each interface of the router to reflect any changes made by the user to the protocol setting for the router and for each of its interfaces. This is done both in RAM and NOVRAM, since changes in such parameters can be made while the system is operating. Once these changes have been made to memory, the configuration routine returns to the main configuration menu of step 74, allowing the user to either select another menu, or select to exit the configuration routine, through step 84.
It should be appreciated that in the preferred embodiment, the configuration routine includes other menus than those described above. These other menus relate to variables which are not as directly related to the invention as those explained above. These include menus which can establish and control filtering performed at both the bridging and routing level, and to set other parameters commonly used in routing and bridging.
As stated above, the preferred embodiment of the invention communicates with the user through an RS232 terminal, and thus a textual menu system is an appropriate way for it to allow the user to enter configuration information. It should also be understood that in other embodiments of the invention, other methods of deriving information about the desired configuration can be used. For example, the configuration could be contained in a text file that the user could edit with a text editor. It could be contained in defined locations in the system's memory which the user could peek and poke to view and change, respectively. Configuration variables could be changed with command line commands. Or, in more elaborate systems, a graphic user interface could be provided to make the connection of devices, bridges, and routers more visually intuitive.
Once the configuration mentioned above has been entered into NOVRAM, the system can be re-initialized. This is done by either turning the system off and then on, or by resetting it. In either case, the re-initialization routine 200 of
Unless there are electronic problems, there normally always should be such proper lists, unless the user has never run the configuration routine for the particular system. If this is the case, step 204 will create default device, bridge, and router lists which will give the system a default configuration. In the preferred embodiment, the default configuration is as shown
Once the device, bridge, and router lists, 120, 140, and 160 have been created in RAM, the initialization routine advances to step 206. For each device in the device list, this step obtains pointers to its input and output routines and places them in the fields 126 and 128 shown in
Once step 208 is completed for each port of each bridge, the initialization routine 200 is exited and the system begins the normal operation outlined in the routines of
As shown in
If no packet has been received by the device when step 238 is performed, or if the device has no valid router or bridge ID, the routine is exited and the program flow returns to the scanner loop of
As just stated, if a device connected to a bridge receives a packet, step 244 calls the bridge routine 246 of
As is indicated in
Once step 282 has extracted the Network layer destination address, step 284 looks that address up in the routing table 174 of the protocol record 170 associated with the current logical router for the protocol corresponding to the protocol specific routing routine. If the routine table has an interface of the router associated with the destination address, step 290 sets the current output interface equal to that interface. If not, step 292 tests to see if the router has a default output interface which is to be used for the current protocol. If so, step 294 sets the current output interface equal to that default output interface. If not, step 296 handles the message according to the protocol's procedure for handling messages to unknown addresses. Once the current output interface has been selected for the network layer packet, step 286 looks in the bridge/device ID 184 of that interface to see if it is connected to a bridge or a device that requires that the Network layer packet be re-encapsulated as the data field of a MAC protocol packet. If the interface is connected to a bridge, the routine knows such encapsulation is required. If the interface is connected to a device, the step queries the device to determine whether or not encapsulation is necessary. If such encapsulation is required, step 298 looks up the MAC address corresponding to the Network layer destination address in the logical to MAC address table 176 for the current protocol record 170 of the current router. If the corresponding MAC address is found, step 300 sets the current MAC destination address equal to it. If not, step 302 is performed. This step requests the MAC address corresponding to Network layer destination address using a method for doing so associated with the current protocol. For example, if the IP protocol is being used, then a procedure known as Address Resolution Protocol, or ARP, will be used. This protocol sends a request for the MAC address corresponding to a given Network address through the network. If a device which uses the protocol and which knows the MAC address receives such a message, it will sent it back through the network to the requesting device. If the request in step 304 obtains the desired MAC address, step 306 which cause step 308 to add the MAC address to the logical to MAC address table 176 so that it can be used if a similarly-addressed message is processed in the near future, and step 310 sets the MAC address obtained as the current MAC destination address. If the MAC address corresponding to the Network layer destination address is not obtained, step 312 drops further processing of the message because it cannot be sent any further.
Assuming that the MAC address corresponding to the Network layer destination address is obtained one way or the other, step 314 sets the current MAC source address equal to the MAC address of the current output interface. Then step 288 re-encapsulates the Network layer packet in a MAC layer packet, if any, required by the protocol used by the bridge or I/O device connected to the current output interface. If the current output interface is connected to a bridge or an I/O device which uses a MAC layer protocol, the Network packet will be encapsulated in a MAC packet which uses the current MAC source address of the interface, as set in step 314, and the current MAC destination address as set in step 300 or 310. If the interface is connected to an I/O device which does not require MAC level encapsulation, no encapsulation will be performed. Once step 288 is complete, the packet is ready to be output by the protocol specific routing routine, and thus step 316 calls the interface routine for the current output interface.
The above described combination of data structures and routines is capable of causing packets to be properly switched between any of the devices shown in the configurations shown in
For example, the progress of a MAC packet sent between any two devices connected directly to the ports of the same logical bridge can be traced as follows. When the packet is received at one device, a subsequent call by the scanner routine 230 is made to the input routine 236 for that device, and step 244 of that routine will call the bridge routine for the bridge connecting the two devices. The bridge routine 246 will use traditional MAC bridging based on the MAC destination address of the packet, to call the port output routine 260 associated with the device through which the output is to be transmitted. This routine will in turn call the output routine associated with the device through which the packet is to be output, causing it to be transmitted as desired.
A more complex example would be a packet sent between two I/O devices which are connected to separate bridges that are connected by a router. The MAC packet includes as its data portion a proper Network layer packet of a protocol corresponding to the MAC layer's type information. Referring to
When H11 sends the MAC packet, it is received by I/O device D1. When the scanner routine 230 calls D1's input routine, that routine will call the bridging routine 246 for Bridge 1. Seeing that the packet's MAC address is to the address associated by its forwarding table with port P4, the bridging routine will call the port output routine 260 for that port, which in turn will call the general routing routine for router 1. Since it is presumed that the MAC packet contains the appropriate type information for the protocol of its encapsulated Network layer packet, the general routing routine will call the appropriate protocol specific routing routine 280 corresponding to the packet. This routine will then route the Network layer packet to the protocol specified, as described generally in
Since interface 15 is connected to Bridge 3, the output interface routine will call the bridging routine 246 for the newly encapsulated packet. Since this packet contains the MAC address of H52, the bridging routing will cause the output routine of I/O device D5, which is connected to H52, to be called for the packet. This will cause the packet to be transmitted on the LAN link connecting I/O device D5 to H52, allowing host H52 to receive the message.
It should be understood that the foregoing description and the drawings are given merely to explain and illustrate the invention, and the invention is not be limited thereto, except insofar as the interpretation of the appended claims are so limited. Those skilled in the art who have the disclosure before them will be able to make modifications and variations therein without departing from the scope of the invention.
For example, other data structures, such as arrays instead of lists, could be used instead of those described above without departing from the invention. Similarly, those skilled in the art will understand that the data used to configure the bridge/router of the present invention could be easily organized in many different ways and still accomplish the same basic results.
Those skilled in the art will understand that many common computing techniques could be used to alter the routines described above without altering the basic features of the invention. For example, devices could use interrupt when they receive data to invoke their input routines rather than always relying on the scanner to call such routines. This would be particularly beneficial for I/O devices which receive data at a sufficiently slow rate that it is inefficient to have a scanner routing constantly call their input routine. It should also be obvious that the order of function and the group of functions into routines could be varied without significantly changing the invention.
Those skilled in the computing arts will understand that the present invention could be used in a computer using multiple processors without changing its basic import. For example, as the cost of processing power drops it would be possible to have separate processors allocated for different groups of one or more logical bridges or routers.
It should also be understood that the invention can be used with any MAC layer protocol which uses bridges, and any Network layer protocol which uses routers.
Although not shown, it should further be understood that according to the above described scheme one bridge can be connect to two separate routers. It should also be understood that the present invention is meant to cover the connection of a logical bridge to other logical bridges and of a logical router to other logical routers. Allowing bridges to be connected to bridges would require little more than allowing the device/router ID 156 of port records to contain Bridge ID, and modifying the port output routine 260 to call a bridge routine for a given bridge if it found that the device/bridge/router ID corresponded to that bridge. Similarly, allowing routers to be connected to other routers would require little more than allowing the bridge/device ID 184 of interface records to contain router IDs, and modifying the interface output routine 320 to call the general router routine for a given router if the bridge/router/device ID for that interface was identified with that router.
This application is a continuation of co-pending U.S. application Ser. No. 07/773,161 filed Oct. 8, 1991, the entire disclosure of which is incorporated herein by specific reference thereto.
Number | Date | Country | |
---|---|---|---|
Parent | 07773161 | Oct 1991 | US |
Child | 13368316 | US |