WO2002088876A2 - Method and system for virtual addressing in a communications network - Google Patents

Method and system for virtual addressing in a communications network Download PDF

Info

Publication number
WO2002088876A2
WO2002088876A2 PCT/US2002/012698 US0212698W WO02088876A2 WO 2002088876 A2 WO2002088876 A2 WO 2002088876A2 US 0212698 W US0212698 W US 0212698W WO 02088876 A2 WO02088876 A2 WO 02088876A2
Authority
WO
WIPO (PCT)
Prior art keywords
routing device
port
communication
switch
destination
Prior art date
Application number
PCT/US2002/012698
Other languages
French (fr)
Other versions
WO2002088876A3 (en
Inventor
Michael S. Foster
Michael A. Dorsett
Original Assignee
The Boeing Company
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/046,572 external-priority patent/US20030210685A1/en
Priority claimed from US10/062,245 external-priority patent/US20040004966A1/en
Application filed by The Boeing Company filed Critical The Boeing Company
Priority to AU2002258931A priority Critical patent/AU2002258931A1/en
Publication of WO2002088876A2 publication Critical patent/WO2002088876A2/en
Publication of WO2002088876A3 publication Critical patent/WO2002088876A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • H04L49/357Fibre channel switches

Definitions

  • the described technology relates to network switches.
  • the Internet has emerged as a critical commerce and communications platform for businesses and consumers worldwide.
  • the dramatic growth in the number of Internet users, coupled with the increased availability of powerful new tools and equipment that enable the development, processing, and distribution of data across the Internet have led to a proliferation of Internet-based applications.
  • These applications include e-commerce, e-mail, electronic file transfers, and online interactive applications.
  • e-commerce electronic commerce
  • e-mail electronic file transfers
  • online interactive applications As the number of users of, and uses for, the Internet increases so does the complexity and volume of Internet traffic. According to UUNet, Internet traffic doubles every 100 days. Because of this traffic and its business potential, a growing number of companies are building businesses around the Internet and developing mission-critical business applications to be provided by the Internet.
  • EDNs enterprise data networks
  • e-commerce applications providing services to customers are straining under the demand to provide added performance and added services.
  • the growing customer demands for services, along with a highly competitive market, has resulted in increasingly complex ad hoc EDNs.
  • Affordable, high-performance EDN solutions require extensive scalability, very high availability, and ease of management. These attributes are significantly compromised or completely lost as existing solutions are grown to meet the demand.
  • EDNs typically include three sub-networks: 1 ) a local area network (LAN) for web and database servers, 2) a computational network for application servers, and 3) a storage area network (SAN).
  • the processing and storage elements attached to these sub-networks may have access to a wide area network (WAN) or metropolitan area network (MAN) through a bridging device commonly known as an edge switch.
  • WAN wide area network
  • MAN metropolitan area network
  • Each of these sub-networks typically uses a distinct protocol and associated set of hardware and software including network interface adapters, network switches, network operating systems, and management applications. Communication through the EDN requires bridging between the sub-networks that requires active participation of server processing resources for protocol translation and interpretation.
  • FIG. 1 is a block diagram illustrating components of the interconnect fabric module (“IFM”) in one embodiment.
  • Figure 2 is a block diagram illustrating components of a switch protocol controller in one embodiment.
  • Figure 3 is a block diagram illustrating the contents of a label table in one embodiment.
  • Figure 4 is a block diagram illustrating the format of a frame in one embodiment.
  • Figure 5 is a diagram illustrating logic of an arbitrator of a switch protocol controller in one embodiment.
  • Figure 6 is a block diagram illustrating the transmit controller in one embodiment.
  • Figure 7 is a block diagram illustrating the interconnection of interconnect fabric modules forming an interconnect fabric that connects various nodes.
  • Figure 8 is a block diagram illustrating the mapping of a destination identifier to a port map.
  • Figure 9 is a block diagram illustrating switch protocol controller caching in one embodiment.
  • Figure 10 is a block diagram illustrating multiframe buffering.
  • Figure 11 is a diagram illustrating the logic of the buffer arbitrator in one embodiment.
  • Figure 12 is a block diagram illustrating an interconnect fabric configuration with multiple direct links between interconnect fabric modules.
  • Figure 13 is a block diagram illustrating the use of equivalent ports.
  • Figure 14 is a diagram illustrating the logic of the equivalent port service in one embodiment.
  • Figure 15 is a block diagram illustrating a component for identifying upper layer protocol ports.
  • Figure 16 is a block diagram illustrating an interswitch deadlock.
  • Figure 17 is a diagram illustrating the logic of deadlock avoidance algorithm in one embodiment.
  • Figure 18 illustrates the preempting of a connection.
  • Figure 19 is a diagram illustrating the logic of processing a preemption signal in one embodiment.
  • Figure 20 is a diagram illustrating the logic of distributed class 3 multicasting in one embodiment.
  • an interconnect fabric module with high-speed switching capabilities.
  • an interconnect fabric module can be dynamically configured to interconnect its communications ports so that data can be transmitted through the interconnected ports.
  • Multiple interconnect fabric modules can be connected to form an interconnect fabric through which nodes (e.g., computer systems) can be interconnected.
  • data is transmitted through the interconnect fabric as frames such as those defined by the Fibre Channel standard.
  • Fibre Channel is defined in ANSI T11 FC-PH, FC-PH-2, FC-PH-3, FC-PI, and FC-FS industry standard documents which are hereby incorporated by reference.
  • Fibre Channel is defined in ANSI T11 FC-PH, FC-PH-2, FC-PH-3, FC-PI, and FC-FS industry standard documents which are hereby incorporated by reference.
  • the described techniques can be used with the InfiniBand standard, which is described in the InfiniBand Architecture Specification, Vols. 1-2, Release 1.0, October 24, 2000, which is hereby incorporated by reference.
  • the interconnect fabric module allows the creation of an interconnect fabric that is especially well suited for interconnecting devices utilizing multiple information types such as might be required by the devices of an enterprise data network ("EDN").
  • EDN enterprise data network
  • the interconnect fabric modules use a virtual addressing technique to identify source and destination devices (e.g., another interconnect fabric module or a node).
  • the source node may register with a network manager of the interconnect fabric so that a communications path can be established between the source node and the destination node.
  • the network manager selects source and destination virtual addresses to be used by the source and destination nodes when sending frames to each other.
  • the network manager also identifies a path through the interconnect fabric modules and their ports through which frames will be sent between the nodes.
  • the network manager then configures the interconnect fabric modules of the identified path so that when a frame is received at an interconnect fabric module that indicates the destination virtual addresses, that frame is forwarded to the destination nodes via the path.
  • the network manager need only configure the interconnect fabric modules once for the path to be available to the nodes.
  • the interconnect fabric modules may maintain a virtual address table for each of its ports that maps virtual addresses to its destinations ports.
  • the interconnect fabric module uses the virtual address of that frame and the virtual address table for the source port to identify a destination port through which the frame is to be forwarded.
  • a virtual address thus, identifies a path between devices, rather than identifying a source or a destination device.
  • the use of virtual addresses allows the network manager the flexibility to dynamically change paths to meet the overall system needs.
  • the network manager may reconfigure the interconnect fabric modules to change a path to avoid the failed interconnect fabric module transparent to the source and destination nodes. Also, if multiple destination nodes provide the same functionality, then the network manager may implement node load balancing by changing a path so that data will be sent to a different destination node. The use of these virtual addresses allows the changes to be made without changing the source and destination virtual addresses of the path.
  • a virtual address is part of a virtual identifier (e.g., stored as source or destination identifier in a frame) that includes a domain address.
  • a destination identifier thus comprises a domain address and a virtual address.
  • the destination identifiers of the frames received by the interconnect fabric modules are used to forward the frame.
  • Each interconnect fabric module is assigned a domain address.
  • the interconnect fabric modules that are assigned the same domain address are in the same domain.
  • the interconnect fabric modules use of the domain addresses to forward packets between domains.
  • the network manager may configure the interconnect fabric modules with inter-domain paths. When an interconnect fabric module receives a frame with a destination domain address that matches its domain address, then the frame has arrived at its destination domain.
  • the interconnect fabric module then forwards the frame in accordance with the destination virtual address since it has arrived at its destination domain. If, however, the domain addresses do not match, then the frame has not arrived at its destination domain.
  • the interconnect fabric module forwards the frame using an inter-domain path.
  • Each port of an interconnect fabric module may have a domain address table (configured by the network manager) that maps the domain addresses to the destination port through which frames with that domain address are to be forwarded. Thus, an interconnect fabric module may selectively use virtual addresses and domain addresses when forwarding frames.
  • an interconnect fabric module may implement virtual address tables (or domain address tables) using a caching mechanism.
  • Each port of an interconnect fabric module may have its own cache of mappings from virtual addresses to destination ports.
  • the interconnect fabric module checks the cache of that source port to determine whether it has a mapping for the destination virtual address of that frame. If not, the interconnect fabric module checks a virtual address table that is shared by multiple ports. When the virtual address table has a mapping for the destination virtual address, then the interconnect fabric module forwards the frame in accordance with that mapping.
  • the interconnect fabric module also stores that mapping in the cache for the source port so that that mapping can be retrieved more quickly when a subsequent frame is received at the source port with that destination virtual address.
  • the interconnect fabric module when the virtual address table does not have a mapping for the destination virtual address, the interconnect fabric module requests the network manager or an external virtual address table to provide the mapping. When that mapping is provided by the network manager or the external table, the interconnect fabric module stores it in the virtual address table.
  • an interconnect fabric module may implement no caching, two-tiered caching, or three-tiered caching for virtual addresses (or domain addresses).
  • an interconnect fabric module may implement multiframe buffering at each port so that frames can be buffered at source ports before being forwarded to a destination port as required.
  • the interconnect fabric module stores that first frame in a first buffer of that source port.
  • the interconnect fabric module stores that second frame in a second buffer of that source port.
  • the interconnect fabric module may then identify a priority score for the first and second frames.
  • the interconnect fabric module transmits the frame with a higher priority score first. In this way, the interconnect fabric module provides both multiframe buffering for source ports and priority selection of the buffered frames.
  • an interconnect fabric module may implement interswitch load balancing via groups of equivalent ports.
  • interconnect fabric modules may themselves be interconnected to form a interconnect fabric for connecting nodes.
  • Two interconnect fabric modules may have multiple links directly connecting their ports. Ports are considered equivalent when a frame can be selectively transmitted on any of the ports to reach its final destination.
  • the use of multiple links (and equivalent ports) between interconnect fabric modules allows for a greater bandwidth between those interconnect fabric modules.
  • the network manager may configure each interconnect fabric module to indicate which groups of its ports are equivalent.
  • the interconnect fabric module may have an equivalent ports table that maps each port to its equivalent ports. When the interconnect fabric module receives a frame, it identifies a destination port based on the virtual address (or domain address) in the frame.
  • the interconnect fabric module checks the equivalent ports table to determine whether there any equivalent ports. If so, and the equivalent port is not in use, the interconnect fabric module forwards the frame through the equivalent port. In this way, interconnect fabric modules can balance their load through the use of equivalent ports.
  • an interconnect fabric module uses a crosspoint switch to switch connect its source and destination ports.
  • the extra switch port can be used for administrative functions of the network manager.
  • the interconnect fabric module receives a frame directed to a virtual address reserved for administrative services of the network manager, the interconnect fabric module connects the source port to the extra switch port which is connected to the network manager.
  • the network manager receives the frame and processes it in accordance with its administrative functions. In this way, administrative frames can be directly forwarded to the network manager when they are first received by an interconnect fabric module from a node.
  • a connection can be established from a source node to a destination node through multiple interconnect fabric modules.
  • two directly linked interconnect fabric modules may encounter a deadlock when both are attempting to establish a connection using the same link.
  • each interconnect fabric module already has a partially built connection through it and identifies that a request for a conflicting connection has been received.
  • Each interconnect fabric module determines which interconnect fabric module has the higher priority. If an interconnect fabric module determines that it does not have the higher priority, then it terminates its partially built connection and allows the conflicting connection with the higher priority to be built.
  • the interconnect fabric module with the higher priority leaves its partially built connection and indicates that the conflicting connection cannot be established.
  • an interconnect fabric module allows an existing connection between a source node and a destination node to be preempted by a request for a proposed connection that specifies a higher priority and specifies to preempt existing connections.
  • an interconnect fabric module receives a connection request at a source port, it identifies a destination port. If the destination port is currently part of an existing connection and the proposed connection indicates to preempt, then the interconnect fabric module determines whether the proposed connection or the existing connection has a higher priority. If the existing connection has a higher priority, then the interconnect fabric module indicates that the proposed connection cannot be made. If, however, the proposed connection has a higher priority, then the interconnect fabric module indicates that the existing connection is to be terminated and then proceeds to establish the proposed connection.
  • the use of priorities to preempt an existing connection allows connection management to be distributed through the interconnect fabric, rather then performed directly by the network manager.
  • a device may send a frame that is to be multicasted to multiple destinations without acknowledgment.
  • the Fibre Channel communications standard refers to such a frame as a class 3 frames. Such frames are not guaranteed to be received by each destination.
  • an interconnect fabric module receives such a frame, it identifies its destination ports through which the frame is to be forwarded and forwards the frame to each identified destination port that is not currently in use. If an identified destination port is currently in use, the interconnect fabric module keeps the frame stored in the buffer until the identified destination port becomes available or until the time to live for the frame expires. When an identified destination port becomes available, the interconnect fabric module forwards the frame to that destination port. In this way, the interconnect fabric module increases the chances of the frame to being successfully received by all of its destinations.
  • aspects of the interconnect fabric module are desc ⁇ bed using block diagrams and logic diagrams.
  • the techniques of the interconnect fabric module can be implemented using different combinations logic circuits and/or firmware.
  • the logic diagrams illustrate processing that may be performed in parallel using duplicate logic circuits (e.g., one for each line of a bus) or may be performed in serial using a single logic circuit.
  • the particular logic designs can be tailored to meet the cost and performance objectives of the interconnect fabric module.
  • One skilled in the art will be able to readily design logic circuits based on the following descriptions.
  • the network manager may authenticate each node attempting to register to ensure that the node is not an imposter node. In this way, only previously authorized nodes can access the network.
  • the routing devices may also discard any communication that is addressed with a virtual address that is not properly configured in the routing device. More generally, the routing device and nodes may check the header or other information of a communication to ensure that the communication is valid. If not valid, then the routing device or node can disregard the communication. For example, a routing device may detect that a communication received from a node specifies a higher priority than the priority authorized for the node by the network manager.
  • the routing device may discard the communication to prevent the node from using a priority that is higher than authorized.
  • the routing device may also remove it configured virtual addresses to prevent use by nodes past an allotted time period or to prevent use by an imposter node.
  • the network manager coordinates network security with the routing devices and the nodes.
  • the network manager authenticates the node.
  • the network manager and the node may use a PKI-based ("Public Key Infrastructure") authentication technique.
  • a node may generate a private and public key pair.
  • the node then provides its public key to the network manager during authorization that may be coordinated by a person who is a network administrator.
  • the node can register with the network manager.
  • the node encrypts its registration request (or a portion of it) using its private key and then sends the encrypted registration request to the network manager.
  • the network manager decrypts the registration request using the node's public key.
  • the network manager If the request is correctly decrypted, then the network manager knows it was sent by an authorized node and proceeds with the registration. If, however, the request is not correctly decrypted, then the network manager knows that the request was sent by an imposter (or otherwise unauthorized) node and disregards the registration request. To ensure that a registration request is not intercepted and decrypted by an unauthorized node that has the authorized node's public key, the network manager may generate its own private and public key pair and provide its public key to the authorized node. An authorized node can then further encrypt the registration request with the network manager's public key. In this way, only the network manager can decrypt and recognize the registration request.
  • these encryption techniques can be use to protect any communication sent via the network and not just registration requests.
  • various other authentication techniques may be used during registration of a node.
  • a routing device filters communications sent from a directly connected node so that unauthorized communications are not transmitted through the network.
  • the routing device may filter communications based on information contained in the header of the communication.
  • a source-side port that receives a communication may discard the communication when the virtual address of the communication in not in the label table of the port.
  • the network manger when it configures a routing device at node registration, may configure the source-side port with filter parameters other than the virtual address. For example, the network manager may provide the source-side port with the maximum priority or the classes of service that the node is authorized to use.
  • the port determines whether any of the filter parameters are unauthorized and, if so, discards the communication.
  • the routing device may also notify the network manager of the unauthorized communication. Because the filtering is performed at the ports, unauthorized communications have minimal impact on overall network performance.
  • the security of the network is further enhanced by the removal of virtual addresses from the routing device and from the nodes.
  • a virtual address When a virtual address is removed from a routing device or a node, then communications directed to that virtual address will no longer be accepted by the routing device or node.
  • a virtual address may be removed for various reasons including when the network manager requests that it be removed, when a routing device or node detects a timeout for it, and when the routing device or node detects an error at the physical layer.
  • the network manager may request that a virtual address be removed as part of a node's de-registration process. The de-registration may be initiated by the network manager or by the node itself.
  • the network manager may send a request to remove the virtual address to each source-side port along the path from the source node to the destination node.
  • the network manager may also send a request that the node itself remove its virtual address.
  • a routing device or node When a routing device or node receives a virtual address, it may automatically remove the virtual address after a certain timeout period.
  • the network manager may specify the timeout period, or the routing device or node may set its own timeout period.
  • the routing device or node may restart the timeout period whenever a communication is received or sent using that virtual address, which results in removal based on when the virtual address was last used.
  • the routing device or node may also remove a virtual address when certain events (e.g., errors) are detected at the physical layer.
  • the physical layer of a routing device may detect that the communications link between the routing device and a node has been removed (e.g., the line has been unplugged from the source-side port of the routing device). In such a case, the routing device may automatically remove all the virtual addresses associated with that node (e.g., stored in the label table of the source-side port). In this way, an imposter node cannot then be connected to the routing device and start sending communications using the virtual addresses of the disconnected node.
  • the routing devices are not configured until a node registers (i.e., just-in-time configuration), the length of time that the network is configured to support a node tends to be minimized and tends to be on an as-needed basis. The configuring of the network on an as-needed basis tends to reduce the opportunities an imposter node has to access the network and tends to free up network resource to be used by other authorized nodes.
  • FIG. 1 is a block diagram illustrating components of the interconnect fabric module ("IFM”) in one embodiment.
  • the interconnect fabric module 100 includes 32 switch protocol controllers ("SPC") 101, a crosspoint switch 102, a switch control unit (“SCU”) 103, a field programmable gate array (“FPGA”) monitor 104, an arbitration bus 105, and an IFM identifier 106.
  • the interconnect fabric module has 32 bi-directional communication ports.
  • a switch protocol controller controls each communications port.
  • Each switch protocol controller is responsible for decoding the header information of a frame, arbitrating access to destination ports and configuring the crosspoint switch, and transmitting the received frame through the crosspoint connections to one or more communication ports.
  • the switch control unit receives requests for crosspoint connections from the switch protocol controllers, configures the crosspoint switch accordingly, and directs the switch protocol controllers to transmit their frames through the crosspoint connections.
  • the crosspoint switch provides full crossbar functionality in that each port of the interconnect fabric module can be simultaneously connected to any number of ports.
  • the crosspoint switch has 34 inputs and 34 outputs, numbered 0-33.
  • the field programmable gate array monitor connects to an interconnect fabric module manager (not shown), which is a single board computer that may provide an interface for configuring the interconnect fabric module and may provide an interface to upper layer protocol services such as a name server or alias server.
  • FIG. 2 is a block diagram illustrating components of a switch protocol controller in one embodiment.
  • the switch protocol controller 200 includes a receive controller 201 , a decoder 202, a header processor 203, a frame buffer 204, a transmit controller 205, and an arbitrator 206.
  • the receive controller is connected to the input (i.e., receive side) of a port and may perform a serial-to-parallel conversion of the received frame.
  • the decoder provides the header information of the received frame to the header processor and stores the frame in the frame buffer.
  • the header processor includes a processor 207, a label table 208, and an equivalent port table 209.
  • the label table contains port maps that indicate to which ports a frame should be routed ("switch destination port") based on the port through which the frame is received (i.e., "switch source port”) and the destination identifier of the frame.
  • the processor retrieves the port map from the label table for the received frame and provides the port map to the arbitrator.
  • the equivalent port table indicates groups of ports that are equivalent in the sense that a frame can be sent through any port of an equivalent group to reach the identified destination. If one port in an equivalent port group is currently in use, then a switch protocol controller can equivalently route the frame to any available port in the equivalent port group.
  • the arbitrators of the switch protocol controllers coordinate access to the switch control unit so that a switch protocol controller can request the switch control unit to configure the crosspoint switch in accordance with the port map.
  • the arbitrators and the switch control unit are connected to an arbitration bus.
  • the arbitrator is also connected to the output (i.e., transmit side) of the port for transmitting control frames.
  • the transmit controller transmits frames stored in the frame buffer to the crosspoint switch when the switch control unit indicates that the crosspoint switch has been configured appropriately.
  • Figure 3 is a block diagram illustrating the contents of a label table in one embodiment.
  • the entries of the label table are port maps that are indexed by a virtual address.
  • the destination identifier includes a domain address and a virtual address, which are described below in detail.
  • a virtual address is virtual in the sense that it is not a physical address of a node (or interconnect fabric module). Rather, a virtual address is mapped to a series of output ports of one or more interconnect fabric modules as specified by their label tables that define a route from the source device to the destination device.
  • a port map has one bit for each of the 32 ports of the interconnect fabric module. A bit value of 1 indicates that frames directed to the indexing virtual address should be routed to the corresponding port.
  • the first entry in the label table contains a bit value of 1 in the column corresponding to port 2 and contains a bit value of 0 in all the other columns corresponding to ports 0, 1 , and 3-31.
  • the corresponding entry in the label table indicates that the frame should be routed to only port 2.
  • the second entry in the label table indicates that frames directed to the virtual address of 1 are to be routed to ports 2-31 , but not to ports 0 and 1.
  • the label table of each switch protocol controller contains 8K entries.
  • the size of the label table can be adjusted to meet overall performance goals of the interconnect fabric module. Because each switch protocol controller has its own label table, a frame received via port 2 with a virtual address of 5 would be routed in accordance with the port map in the sixth entry of the label table for port 2.
  • FIG. 4 is a block diagram illustrating the format of a frame in one embodiment.
  • the illustrated frame is in Fibre Channel format.
  • a frame contains a start- of-frame portion, a header portion, a data portion, and an end-of-frame portion.
  • the header portion includes a 24-bit destination identifier field, a 24-bit source address field, an 8-bit control field, an 8-bit type field, and an 8-bit priority field.
  • the data portion is variable length and contains up to 2112 bytes.
  • the destination and source identifiers include a domain address and a virtual address.
  • the destination identifier identifies a path from a source device (e.g., node or switch) to one or more devices to which a frame is to be sent.
  • the source identifier identifies a path from the destination device to the source device.
  • the control field indicates whether the frame is a control frame or a data frame.
  • a control frame may include response frames (e.g., an acknowledge frame), fabric control frames, flow control management frames, and link control frames.
  • the flow control management and link control frames are standard Fibre Channel defined frames.
  • the type field indicates the type of data in the data field.
  • a data frame contains payload data that is to be sent from one node to another node using the interconnect fabric.
  • the class of a frame specifies whether a frame is to be sent with or without a connection (e.g., Fibre Channel class 1 a connection with acknowledgment).
  • the class field may indicate a class, a priority value, and a preemption flag.
  • Start-of-connection and end-of-connection frames delimit a connection.
  • a connection is a bi-directional, physical connection from a source node through the interconnect fabric to destination node. When the interconnect fabric receives a start-of-connection frame, the interconnect fabric modules cooperate to establish a physical connection between the source and destination nodes.
  • the physical connection is maintained until an end-of-connection frame is sent via the connection or until a frame that has a priority higher than the connection and that designates to preempt conflicting connections (i.e., its preemptive flag is set) is received by an interconnect fabric module that needs to use one of its port that is dedicated to the existing connection.
  • FIG. 5 is a diagram illustrating logic of an arbitrator of a switch protocol controller in one embodiment.
  • the arbitrator communicates with the switch control unit via the arbitration bus.
  • the arbitration bus follows the IEEE 896 Futurebus+ arbitration protocol.
  • the arbitration bus is a wired-or bus in which multiple arbitrators can drive their information onto the bus simultaneously. Based on the information that is being driven on the arbitration bus, each arbitrator determines whether it is the arbitrator with the highest priority that is currently driving the bus. When an arbitrator decides that it does not have the highest priority, it stops driving its information onto the bus. Ultimately, the arbitrator with the highest priority will remain driving the bus. At that point the switch control unit retrieves the information from the arbitration bus, which includes the port map for the destination identifier, the switch source port number, and the class.
  • the switch control unit then configures the crosspoint switch to crosspoint connect the input of the switch source port to the output of each switch destination port identified by the port map.
  • the switch control unit then notifies the arbitrator with the highest priority that the crosspoint switch has been configured.
  • the arbitration bus includes 32 port status lines to indicate whether the corresponding port is currently in use.
  • the switch control unit sets and clears the status lines as it configures the crosspoint switch. If the port status lines indicate that the crosspoint switch cannot be configured in accordance with the port map (e.g., a port indicated in the port map is in use), then the arbitrator, in general, does not participate in arbitrations until all the switch destination ports indicated by the port map become available.
  • the arbitrator raises an arbitration signal on the arbitration bus.
  • the arbitrator waits until the arbitration signal is lowered before raising the signal. It is possible that two arbitrators can raise the arbitration signal simultaneously. If so, the arbitrator with the highest priority frame is given control of the arbitration bus. In block 502, the arbitrator drives a competition number comprising the 7-bit priority of the frame and the 5-bit port number of its port onto the arbitration bus. In decision block 503, if the arbitrator does not have the highest priority, then it stops driving the competition number and other data onto the arbitration bus in block 504 and then continues to block 501 so it can eventually raise the arbitration signal and try again. If the arbitrator has the highest priority and all the other arbitrators have stopped driving the arbitration bus, then the arbitrator continues at block 505.
  • the arbitrator drives the port map, its 5-bit port number, and class onto the arbitration bus.
  • the controller stops driving any data on the arbitration bus, and then lowers the arbitration signal.
  • the arbitrator receives confirmation from the switch control unit when the crosspoint switch has been appropriately configured.
  • the arbitrator signals the transmit controller to transmit the frame to the crosspoint switch and then completes. At that point, other arbitrators detect that the arbitration signal has been lowered and can then arbitrate access to the switch control unit.
  • FIG. 6 is a block diagram illustrating the transmit controller in one embodiment.
  • the transmit controller 600 includes a frame generator 601 , a multiplexor 602, and an encoder 603.
  • the transmit controller when directed by the arbitrator either generates and transmits a control frame or transmits the frame currently stored in a frame buffer.
  • the encoder forwards the frame to the crosspoint switch for transmission through the switch destination ports.
  • FIG. 7 is a block diagram illustrating the interconnection of interconnect fabric modules forming an interconnect fabric that connects various nodes.
  • the interconnect fabric modules 701 , 702, 703, and 704 form a fully connected interconnect fabric.
  • An interconnect fabric is fully connected when each interconnect fabric module is directly connected to each other interconnect fabric module.
  • interconnect fabric module 701 is directly connected to interconnect fabric module 702 via link 762, to interconnect fabric module 703 via link 763, and to interconnect fabric module 704 via link 764.
  • Each interconnect fabric module is also directly connected to various nodes.
  • interconnect fabric module 701 is directly connected to nodes 710.
  • FIG. 7 illustrates that a connection has been established between node 711 and node 746.
  • Node 711 is directly connected to port 0 of interconnect fabric module 701.
  • Port 0 of interconnect fabric module 701 is connected to port 30 via the crosspoint connection 771.
  • Port 30 of interconnect fabric module 701 is directly connected to port 29 of interconnect fabric module 704 via link 764.
  • Port 29 of interconnect fabric module 704 is connected to port 16 via the crosspoint connection 774.
  • Port 16 of interconnect fabric module 704 is directly connected to node 746.
  • FIG. 8 is a block diagram illustrating the mapping of a destination identifier to a port map.
  • Each interconnect fabric module has a interconnect fabric module identifier 801.
  • the interconnect fabric identifier contains a domain address that has been assigned to the interconnect fabric module.
  • the switch protocol controller determines whether the domain address of the destination identifier matches the domain address assigned to the interconnect fabric module. If so, then the switch protocol controller uses the virtual address label table to retrieve the port map. (The label table is subdivided into a virtual address label table and a domain address label table.) If the domain addresses do not match, then the switch protocol controller uses a domain address label table to retrieve the port map.
  • the domain address of a frame specifies those interconnect fabric modules that are configured to route the frame and the domain address label table is used to route frames to interconnect fabric modules that are configured to route the frame.
  • a switch protocol controller may include a destination identifier buffer 802, a comparator 805, a domain address label table 806, a virtual address label table 807, and a selector 808.
  • the comparator inputs are the domain addresses of the interconnect fabric module and of the destination identifier.
  • the comparator signals whether the domain addresses match.
  • the domain address label table is indexed by the domain address of the destination identifier and outputs the indexed port map.
  • the virtual address label table is indexed by the virtual address of the destination identifier and outputs the indexed port map.
  • the port maps of the domain address label table and the virtual address label table are input to the selector, which selects a port map based on the input generated by the comparator. That is, the port map is selected from the virtual address label table when the domain addresses of the interconnect fabric module and of the destination identifier match and from the domain address label table when they do not match.
  • multiple switch protocol controllers of an interconnect fabric module may share a single label table that may include both a virtual address label table and a domain address label table.
  • the contents of the label table may be dynamically modified to reflect routing algorithms used by a manager of the interconnect fabric.
  • Each switch protocol controller that shares a single label table may include a local label table cache in which it stores recently retrieved port maps from the shared label table.
  • a switch protocol controller resolves an address (e.g., virtual address or domain address) into its corresponding port map, by first checking its local label table cache. If the port map corresponding to that address is not in the local label table cache, then the switch protocol controller accesses the shared label table.
  • the use of local label tables and a shared label table represents a two-tier caching system.
  • the switch protocol controllers use a three-tier caching system.
  • the third tier provides access to an extended label table that contains port maps not currently contained in the shared label table.
  • a switch protocol controller uses an extended label table interface to retrieve a port map for that address from a device that is external to the interconnect fabric module.
  • Figure 9 is a block diagram illustrating switch protocol controller caching in one embodiment.
  • four switch protocol controllers share a label table.
  • the four switch protocol controllers may be contained on a single board or chip referred to as a quad switch protocol controller 900.
  • Switch protocol controllers 910, 920, 930, and 940 share a single label table 950.
  • Each switch protocol controller has a local label table cache such as local label table cache 911 for switch protocol controller 910.
  • the extended label table interface 960 provides access to, in one embodiment, an interconnect fabric module manager that receives requests for port maps not currently stored in the shared label table and provides the requested port maps. Alternatively, the extended label table interface provides access directly to an external label table. The interconnect fabric module manager may access an overall manager of the interconnect fabric to retrieve the port maps.
  • various well-known caching techniques may be used to implement the two-tier or three-tier caching system of the switch protocol controllers. Multiframe Buffering
  • a switch protocol controller may implement multiframe buffering of the frames received through its input.
  • Multiframe buffering allows a switch protocol controller to internally store multiple frames that have not yet been transmitted by the switch protocol controller.
  • Multiframe buffering allows the device (e.g., node or interconnect fabric module) that sends a frame to the switch protocol controller to continue sending additional frames as long as a buffer is available at the switch protocol controller.
  • the devices may use the flow control mechanism of the Fibre Channel standard to coordinate the transmission of frames between devices.
  • a switch protocol controller may implement a buffer arbitration algorithm to identify which of the frames in the multiframe buffer should be transmitted by the switch protocol controller.
  • a buffer arbitrator of the switch protocol controller may use the priority and class of service of the frame to select the next frame to be transmitted.
  • the buffer arbitrator may also factor in the latency of a frame (i.e., length of time the frame has been stored at the switch protocol controller).
  • buffer arbitration algorithms may be used, such as algorithms that attempt to ensure that each frame is transmitted before it times out or that use a first-in-first-out approach.
  • the buffer arbitration algorithm may be loaded at initialization or dynamically after initialization from the interconnect fabric module manager. In one embodiment, when a buffer arbitrator selects a start-of- connection frame, subsequent frames of that connection are automatically selected by the buffer arbitrator. This ensures that frames not associated with a connection are not transmitted via the connection.
  • FIG 10 is a block diagram illustrating multiframe buffering.
  • a switch protocol controller 1000 includes a receive controller 1001 , a multiframe buffer 1002, and a buffer arbitrator 1003.
  • the receive controller receives frames via the input of its port and stores the frame in the next available buffer of the multiframe buffer.
  • the receive controller may store all the frames of a connection in the same buffer.
  • the received controller may store frames of a connection in different buffers and the buffer arbitrator ensures that frames of an established connection are given the highest priority.
  • the buffer arbitrator is enabled when the switch protocol controller is ready to process the next frame.
  • Figure 11 is a diagram illustrating the logic of the buffer arbitrator in one embodiment.
  • the buffer arbitrator selects the buffer associated with the connection and completes. If, however, the switch protocol controller is not currently in a connection, then the buffer arbitrator calculates a priority score for each frame stored in the multiframe buffer. The buffer arbitrator uses a buffer arbitration algorithm to calculate the priority score. In block 1104, the buffer arbitrator selects the buffer containing the frame with the highest priority score to be processed next and completes. Interswitch Load Balancing via Groups of Equivalent Ports
  • the interconnect fabric modules may be interconnected to provide interswitch load balancing.
  • two interconnect fabric modules may have a multiple direct links between them to increase the bandwidth of frames that may be transmitted between the interconnect fabric modules.
  • Figure 12 is a block diagram illustrating an interconnect fabric configuration with multiple direct links between interconnect fabric modules.
  • interconnect fabric module 1201 and interconnect fabric module 1202 have three direct links 1210, 1211 , and 1212 between them.
  • the use of multiple direct links allows multiple frames to be transmitted simultaneously between the directly linked interconnect fabric modules.
  • three nodes directly linked to interconnect fabric module 1201 may simultaneously have connections established to three different nodes directly linked to interconnect fabric module 1202.
  • interconnect fabric module 1201 is also indirectly linked to interconnect fabric module 1202 via links 1213 and links 1214, 1215, and 1216 through interconnect fabric module 1204. Ports of an interconnect fabric module are equivalent when they can be use interchangeably to route frames to their destination. Equivalent ports may have similarly configured label tables.
  • each switch protocol controller has an equivalent port table that defines which ports of the interconnect fabric module are logically equivalent to one another.
  • the switch protocol controllers of an interconnect fabric module may share an equivalent port table.
  • ports 0, 1 , and 2 may be equivalent ports for both interconnect fabric module 1201 and interconnect fabric module 1202.
  • an equivalent port service of the switch protocol controller determines whether the ports of the port map are currently available. If a port is not currently available, the equivalent port service determines from the equivalent port table whether an equivalent port is available. If so, the equivalent port service modifies the port map so that the frame is routed through the equivalent port.
  • FIG. 13 is a block diagram illustrating the use of equivalent ports.
  • Equivalent port service 1303 inputs a port map that may be generated using virtual address 1301 and virtual address label table 1302. Alternatively, the port map may be generated using a domain address and a domain address label table.
  • the equivalent port service also inputs equivalent port table 1304.
  • the equivalent port table contains an entry for each port of the interconnect fabric module. Each entry, referred to as an equivalent port map, contains a bit for each port of the interconnect fabric module.
  • the entry for port 0 has its bits for port 1 and port 2 set to indicate that port 0, port 1 , and port 2 are equivalent.
  • the entry for port 1 has its bits for port 0 and port 2 set to indicate that port 0, port 1 , and port 2 are equivalent.
  • the equivalent port service also inputs the port status lines, which indicates the current status of each of the ports of the interconnect fabric module.
  • the equivalent port service receives a port map it determines whether the designated ports are available based on the port status. If a designated port is not available, the equivalent port service retrieves the equivalent port map for that designated port. The equivalent port service then determines whether any of the equivalent ports are available. If an equivalent port is available, then the equivalent port service changes the port map to designate an available equivalent port.
  • an equivalent port map may have a priority associated with each port.
  • the equivalent port service may select equivalent ports based on their associated priority. The priorities may be useful, for example, when ports are equivalent, but the cost of routing a frame through the ports are different. For example, port 3 of interconnect fabric module 1201 may be equivalent to port 0, port 1 , and port 2, but the cost of routing a frame through port 3 may be higher because the frame would travel through interconnect fabric module 1204 on its way to interconnect fabric module 1202.
  • Figure 14 is a diagram illustrating the logic of the equivalent port service in one embodiment.
  • the equivalent port service receives an input port map and processes each designated port of the input port map.
  • the service may initialize the output port map so that no ports are designated.
  • the service selects of the next designated port of the input port map.
  • decision block 1402 if all the designated ports have already been selected, then the service completes, else the service continues at block 1403.
  • decision block 1403 if the selected port is available, then the service designates the selected port in the output port map and proceeds to select the next designated port of the input port map.
  • the service retrieves the equivalent port map for the selected port from the equivalent port table.
  • the service selects the next designated port of the selected equivalent port map.
  • decision block 1407 if all designated ports of the equivalent port map have already been selected, then the service continues at block 1408, else the service continues at block 1409.
  • the service designates the selected port in the output port map because no equivalent ports are available and completes. The service may repeat this process as ports become available.
  • decision block 1409 if the selected port of the equivalent port map is available, then the service continues at block 1410, else the service loops to block 1406 to select the next designated port of the equivalent port map.
  • block 1410 the service designates the selected port of the equivalent port map in the output port map and then loops to select the next designated port of the input port map. Administrative Ports
  • the crosspoint switch of a switch protocol controller may have more outputs than the number of ports of an interconnect fabric module.
  • a crosspoint switch may have 34 inputs and outputs, but the interconnect fabric module may have only 32 ports.
  • the switch protocol controller may use these additional ports of the crosspoint switch to route upper layer protocol frames, such as frames directed into a name server or other administrative services.
  • the additional output ports of the crosspoint switch may be connected to the interconnect fabric module manager.
  • An interconnect fabric module may have a list of "reserved" addresses that designate an upper layer protocol port. When a switch protocol controller determines that an address of its frame matches one of the reserved addresses, it enables the routing of that frame to an upper layer protocol port.
  • the routing to upper layer protocol ports may use the same arbitration mechanism as used for routing to non-upper layer protocol ports.
  • the arbitration bus would need lines for supporting the additional ports. For example, six lines would be needed to designate ports 0 through ports 33, rather than the five lines needed to designate ports 0 through ports 31.
  • an output can be selectively switched between a communications port and an upper layer protocol port depending on whether the address of the destination identifier is reserved.
  • Figure 15 is a block diagram illustrating a component for identifying upper layer protocol ports. This component may be part of the header processor of the switch protocol controller.
  • An administrative port comparator 1503 inputs the virtual address of the destination identifier 1501 of a frame and a reserved address table 1502.
  • the reserved address table has entry for each reserved address and contains the value of the reserved address and may contain a flag indicating whether to route a frame designating the reserved address to upper layer protocol port 32 or upper layer protocol port 33.
  • the comparator determines whether any of the reserved addresses match the virtual address of the frame. If so, the comparator enables the port 32 or port 33 flags. When enabled, the arbitrator automatically designates the signaled upper layer protocol port during arbitration.
  • the crosspoint switch 1506 may be connected to the interconnect fabric module manager 1507 via upper layer protocol port 32 and upper layer protocol port 33. In this way, the upper layer protocol frames are routed to the interconnect fabric module manager as indicated for further processing. Interswitch Deadlock Avoidance
  • the switch protocol controllers implement a deadlock avoidance scheme to prevent interswitch deadlocks.
  • An interswitch deadlock may occur when two partially built connections both need the same port to complete their connections.
  • Figure 16 is a block diagram illustrating an interswitch deadlock.
  • node 1605 requests that a connection be established to node 1607
  • node 1606 requests that a connection be established to node 1605.
  • Node 1605 is directly linked to port 1 of interconnect fabric module 1601 and nodes 1606 and 1607 are directly linked to ports 1 and 2, respectively, of interconnect fabric module 1602.
  • Port 0 of interconnect fabric module 1601 is directly linked to port 0 of interconnect fabric module 1602.
  • Table 1610 illustrates a sequence of events that results in a deadlock.
  • nodes 1605 and 1606 send out start-of-connection frames.
  • the interconnect fabric module 1601 establishes a crosspoint connection between its port 1 and its port 0 via crosspoint switch 1603 as part of the process of establishing the connection between node 1605 and node 1607.
  • interconnect fabric module 1602 establishes a crosspoint connection between its port 1 and port 0 via crosspoint switch 1604 as part of the process of establishing the connection between node 1606 and node 1605.
  • interconnect fabric module 1601 transmits the start-of-connection frame to interconnect fabric module 1602 via link 1608, and interconnect fabric module 1602 transmits the start-of-connection frame to interconnect fabric module 1601 via link 1608.
  • interconnect fabric module 1601 When interconnect fabric module 1601 receives the start-of-connection frame, it determines that it cannot currently establish a crosspoint connection from port 0 to port 1 because port 0 is in use by the partial connection from node 1605 to node 1607. Similarly, when interconnect fabric module 1602 receives the start-of-connection frame, it determines that it cannot currently establish a crosspoint connection from port 0 to port 2 because port 0 is in use by the partial connection from node 1606 to node 1605. Because neither connection can be completed, a deadlock occurs.
  • deadlocks can result from a wide variety of sequences of events.
  • a switch protocol controller uses an interswitch deadlock avoidance scheme. Whenever a switch protocol controller receives a start-of- connection frame and the switch protocol controller is currently in a connection, then a conflict has occurred. The switch protocol controller receives such a conflicting start- of-connection frame when the conflicting start-of-connection frame was initially transmitted from a node before the connection that included that switch protocol controller's port was complete. To avoid a deadlock, once the conflict is detected, the switch protocol controller compares the priority of the conflicting start-of-connection frame with the priority of the start-of-connection frame for its partially built connection to determine which connection should be established.
  • the switch protocol controller uses the domain address identifier or other unique identifier of the interconnect frame modules as a tiebreaker, that is the interconnect fabric module that received and the one that sent the conflicting start-of- message frame. If the priority of the conflicting frame is higher, then the switch protocol controller sends a frame through its input direction indicating that the connection cannot be established and then proceeds to process the conflicting start-of- connection frame to complete the connection. Conversely, the switch protocol controller that sent the conflicting frame also detects the conflict but determines that the frame it sent has a higher priority and ignores the start-of-connection frame that it just received.
  • Figure 17 is a diagram illustrating the logic of deadlock avoidance algorithm in one embodiment.
  • the deadlock avoidance algorithm may process each frame that Is received by a switch protocol controller.
  • decision block 1701 if a start-of-connection frame is received, then processing continues at block 1702, else there is no conflict.
  • decision block 1702 if the port is currently in a connection, then there is a conflict and the processing continues at block 1703, else there is no conflict.
  • decision block 1703 if the frame that established the connection for this port has a higher priority than the conflicting frame just received, then this port wins the conflict and discards the conflicting frame, else the processing continues at block 1704.
  • decision block 1704 if the priorities are equal, the processing continues at block 1705 to check the tiebreaker, else this switch protocol controller loses the conflict and continues at block 1706.
  • this port wins the conflict, else this port loses the conflict and continues at block 1706.
  • this port when this port loses conflict, it removes the partial connection that has been established through it by sending a remove connection frame through its input to notify the originating node and the other interconnect fabric modules through which the connection was partially built. Connection Preemption
  • the interconnect fabric modules allow an existing connection to be preempted when a connection with a higher priority is to be established that conflicts with the existing connection.
  • Figure 18 illustrates the preempting of a connection.
  • a connection is established between node 1803 and node 1804.
  • the connection includes link 1806, a crosspoint connection between port 0 and port 1 of interconnect fabric module 1801 , link 1807, a crosspoint connection between port 4 and port 6 of interconnect fabric module 1802, and link 1808.
  • node 1805 may send a start-of-connection frame with a higher priority than the existing connection and with its preemption bit (flag) set.
  • the switch protocol controller for port 2 receives the frame, it selects the switch destination port through which the connection is to be built.
  • the switch protocol controller may use the equivalent port service to identify an equivalent port that is available if the port designated by the port map is in use. If port 1 is designated in the port map and there is no equivalent port that is available, the switch protocol controller for port 2 detects a conflict. The switch protocol controller then sets a flag indicating that the conflicting port (i.e., ports 0 or 1 ) should participate in the ensuing arbitration. The switch protocol controller for port 2 then sets the arbitration flag and the conflicting port and port 2 participate in the arbitration. If the conflicting port loses, its switch protocol controller sends a frame through its connection in both directions indicating that the connection is to be removed and the switch protocol controller for port 2 establishes a crosspoint connection between port 1 and port 2 and transmits its start- of-connection frame. Conversely, if the conflicting port wins the arbitration, then the connection is left established and the switch protocol controller for port 2 sends a frame indicating that the connection cannot be established in its input direction.
  • the conflicting port loses, its switch protocol controller sends a frame
  • FIG 19 is a diagram illustrating the logic of processing a preemption signal in one embodiment. This processing is performed when a switch protocol controller detects a preemption signal on the arbitration bus.
  • decision block 1901 if this port is currently in a connection, then the switch protocol controller may need to participate in the arbitration.
  • decision block 1902 if this port is the conflicting port (i.e., established the connection), then this port participates in the arbitration and continues processing at block 1903.
  • the switch protocol controller for this port participates in the arbitration.
  • decision block 1904 if the switch protocol controller of this port loses the arbitration, then it continues at block 1905 to disconnect the connection, else it leaves the connection established.
  • block 1905 the switch protocol controller sends a disconnect frame in the direction of its input and output.
  • the switch protocol controller indicates to the switch control unit to remove the crosspoint connection for this port.
  • the Fibre Channel standard defines a class 3 protocol that provides a connectionless protocol for transmitting frames without an acknowledgment. Because the protocol is connectionless and no acknowledgment is used, the class 3 protocol can be used for multicasting, that is sending a frame from one node to multiple nodes. Class 3 protocol also specifies that frame delivery is not guaranteed. Traditionally, when a Fibre Channel switch receives a class 3 frame for multicasting, it routes that class 3 frame through as many of the destination ports as are currently available and then discards that frame. In one embodiment, a switch protocol controller buffers a class 3 multicasting frame and sends the frame through the multicast ports as they become available.
  • multiframe buffering can be used with communications services other than class 3 of Fibre Channel. In particular, it can be used with any non-acknowledged data gram service, also referred to as a packet service.
  • multiframe buffering can be used to interleave the transmission of a multicast frame with other frames (e.g., connectionless frames).
  • the multiframe buffering algorithm may, for example, give a highest priority score to the multicast frame only when at least one of the multicast ports is currently available.
  • FIG 20 is a diagram illustrating the logic of distributed class 3 multicasting in one embodiment. This logic is performed when a class 3 frame with multicasting is received at a switch protocol controller.
  • the switch protocol controller identifies the multicast ports that are currently available. The multicast ports may be the set of ports indicated by the port map to which a virtual address maps.
  • the switch protocol controller participates in arbitration.
  • decision block 2003 if the switch protocol controller wins the arbitration, then it continues at block 2004, else it continues at block 2001 to again participate in an arbitration.
  • the switch protocol controller sends the frame and updates the port map stored in a temporary buffer to reflect those ports through which the frame has been sent.
  • decision block 2005 if the multicast is complete (i.e., the frame has been transmitted through each multicast port), then processing completes, else processing continues to participate in an arbitration to send the frame as additional ports become available.

Abstract

An interconnect fabric module ('IFM' 100) with high-speed switching capabilities. An interconnect fabric module (100) can be dynamically configured to interconnect (102) its communications ports so that data can be transmitted through interconnected ports. Multiple interconnect fabric modules (100) can be connected to form an interconnect fabric through which nodes (e.g., computer systems) can be interconnected. In one embodiment, data is transmitted through the interconnect fabric as frames such as those defined by the Fibre Channel and IndiniBand Standards. The interconnect Fabric module allows the creation of an interconnect fabric that is especially well suited for interconnecting devices utilizing multiple information types such as might be required by the devices of an enterprise data network ('EDN').

Description

METHOD AND SYSTEM FOR VIRTUAL ADDRESSING IN A COMMUNICATIONS
NETWORK
TECHNICAL FIELD
The described technology relates to network switches.
BACKGROUND
The Internet has emerged as a critical commerce and communications platform for businesses and consumers worldwide. The dramatic growth in the number of Internet users, coupled with the increased availability of powerful new tools and equipment that enable the development, processing, and distribution of data across the Internet have led to a proliferation of Internet-based applications. These applications include e-commerce, e-mail, electronic file transfers, and online interactive applications. As the number of users of, and uses for, the Internet increases so does the complexity and volume of Internet traffic. According to UUNet, Internet traffic doubles every 100 days. Because of this traffic and its business potential, a growing number of companies are building businesses around the Internet and developing mission-critical business applications to be provided by the Internet.
Existing enterprise data networks ("EDNs") that support e-commerce applications providing services to customers are straining under the demand to provide added performance and added services. The growing customer demands for services, along with a highly competitive market, has resulted in increasingly complex ad hoc EDNs. Affordable, high-performance EDN solutions require extensive scalability, very high availability, and ease of management. These attributes are significantly compromised or completely lost as existing solutions are grown to meet the demand.
Current architectures of EDNs typically include three sub-networks: 1 ) a local area network (LAN) for web and database servers, 2) a computational network for application servers, and 3) a storage area network (SAN). The processing and storage elements attached to these sub-networks may have access to a wide area network (WAN) or metropolitan area network (MAN) through a bridging device commonly known as an edge switch. Each of these sub-networks typically uses a distinct protocol and associated set of hardware and software including network interface adapters, network switches, network operating systems, and management applications. Communication through the EDN requires bridging between the sub-networks that requires active participation of server processing resources for protocol translation and interpretation.
There are many disadvantages to the current architecture of EDNs. The disadvantages result primarily because the multi-tiered architecture is fractured and complex. First, it is very difficult to integrate the disparate systems that use different communications protocols, interfaces, and so on. Second, overall performance suffers because each sub-network is managed separately, rather than being managed with comprehensive knowledge of the complete network. Third, the cost of maintaining three disparate types of network hardware and software can be high. Fourth, it is difficult to scale an architecture that uses such disparate systems. It would be desirable to have an architecture for EDNs that would be alleviate the many disadvantages of the current fractured multi-tiered architectures.
BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 is a block diagram illustrating components of the interconnect fabric module ("IFM") in one embodiment.
Figure 2 is a block diagram illustrating components of a switch protocol controller in one embodiment.
Figure 3 is a block diagram illustrating the contents of a label table in one embodiment.
Figure 4 is a block diagram illustrating the format of a frame in one embodiment.
Figure 5 is a diagram illustrating logic of an arbitrator of a switch protocol controller in one embodiment.
Figure 6 is a block diagram illustrating the transmit controller in one embodiment.
Figure 7 is a block diagram illustrating the interconnection of interconnect fabric modules forming an interconnect fabric that connects various nodes.
Figure 8 is a block diagram illustrating the mapping of a destination identifier to a port map. Figure 9 is a block diagram illustrating switch protocol controller caching in one embodiment.
Figure 10 is a block diagram illustrating multiframe buffering.
Figure 11 is a diagram illustrating the logic of the buffer arbitrator in one embodiment.
Figure 12 is a block diagram illustrating an interconnect fabric configuration with multiple direct links between interconnect fabric modules.
Figure 13 is a block diagram illustrating the use of equivalent ports.
Figure 14 is a diagram illustrating the logic of the equivalent port service in one embodiment.
Figure 15 is a block diagram illustrating a component for identifying upper layer protocol ports.
Figure 16 is a block diagram illustrating an interswitch deadlock.
Figure 17 is a diagram illustrating the logic of deadlock avoidance algorithm in one embodiment.
Figure 18 illustrates the preempting of a connection.
Figure 19 is a diagram illustrating the logic of processing a preemption signal in one embodiment.
Figure 20 is a diagram illustrating the logic of distributed class 3 multicasting in one embodiment.
DETAILED DESCRIPTION
An interconnect fabric module ("IFM") with high-speed switching capabilities is provided. In one embodiment, an interconnect fabric module can be dynamically configured to interconnect its communications ports so that data can be transmitted through the interconnected ports. Multiple interconnect fabric modules can be connected to form an interconnect fabric through which nodes (e.g., computer systems) can be interconnected. In one embodiment, data is transmitted through the interconnect fabric as frames such as those defined by the Fibre Channel standard. Fibre Channel is defined in ANSI T11 FC-PH, FC-PH-2, FC-PH-3, FC-PI, and FC-FS industry standard documents which are hereby incorporated by reference. One skilled in the art will appreciate, however, that the described techniques can be used with communications standards other than Fibre Channel. In particular, the described techniques can be used with the InfiniBand standard, which is described in the InfiniBand Architecture Specification, Vols. 1-2, Release 1.0, October 24, 2000, which is hereby incorporated by reference. As will be described below in more detail, the interconnect fabric module allows the creation of an interconnect fabric that is especially well suited for interconnecting devices utilizing multiple information types such as might be required by the devices of an enterprise data network ("EDN").
The interconnect fabric modules use a virtual addressing technique to identify source and destination devices (e.g., another interconnect fabric module or a node). To send data from one node to another, initially the source node may register with a network manager of the interconnect fabric so that a communications path can be established between the source node and the destination node. The network manager selects source and destination virtual addresses to be used by the source and destination nodes when sending frames to each other. The network manager also identifies a path through the interconnect fabric modules and their ports through which frames will be sent between the nodes. The network manager then configures the interconnect fabric modules of the identified path so that when a frame is received at an interconnect fabric module that indicates the destination virtual addresses, that frame is forwarded to the destination nodes via the path. The network manager need only configure the interconnect fabric modules once for the path to be available to the nodes. The interconnect fabric modules may maintain a virtual address table for each of its ports that maps virtual addresses to its destinations ports. When a frame is received at a source port, the interconnect fabric module uses the virtual address of that frame and the virtual address table for the source port to identify a destination port through which the frame is to be forwarded. A virtual address, thus, identifies a path between devices, rather than identifying a source or a destination device. The use of virtual addresses allows the network manager the flexibility to dynamically change paths to meet the overall system needs. For example, if one interconnect fabric module on a path fails, the network manager may reconfigure the interconnect fabric modules to change a path to avoid the failed interconnect fabric module transparent to the source and destination nodes. Also, if multiple destination nodes provide the same functionality, then the network manager may implement node load balancing by changing a path so that data will be sent to a different destination node. The use of these virtual addresses allows the changes to be made without changing the source and destination virtual addresses of the path.
In one embodiment, a virtual address is part of a virtual identifier (e.g., stored as source or destination identifier in a frame) that includes a domain address. A destination identifier thus comprises a domain address and a virtual address. The destination identifiers of the frames received by the interconnect fabric modules are used to forward the frame. Each interconnect fabric module is assigned a domain address. The interconnect fabric modules that are assigned the same domain address are in the same domain. The interconnect fabric modules use of the domain addresses to forward packets between domains. The network manager may configure the interconnect fabric modules with inter-domain paths. When an interconnect fabric module receives a frame with a destination domain address that matches its domain address, then the frame has arrived at its destination domain. The interconnect fabric module then forwards the frame in accordance with the destination virtual address since it has arrived at its destination domain. If, however, the domain addresses do not match, then the frame has not arrived at its destination domain. The interconnect fabric module forwards the frame using an inter-domain path. Each port of an interconnect fabric module may have a domain address table (configured by the network manager) that maps the domain addresses to the destination port through which frames with that domain address are to be forwarded. Thus, an interconnect fabric module may selectively use virtual addresses and domain addresses when forwarding frames.
In one embodiment, an interconnect fabric module may implement virtual address tables (or domain address tables) using a caching mechanism. Each port of an interconnect fabric module may have its own cache of mappings from virtual addresses to destination ports. When a frame is received at a source port, the interconnect fabric module checks the cache of that source port to determine whether it has a mapping for the destination virtual address of that frame. If not, the interconnect fabric module checks a virtual address table that is shared by multiple ports. When the virtual address table has a mapping for the destination virtual address, then the interconnect fabric module forwards the frame in accordance with that mapping. The interconnect fabric module also stores that mapping in the cache for the source port so that that mapping can be retrieved more quickly when a subsequent frame is received at the source port with that destination virtual address. In an alternate embodiment, when the virtual address table does not have a mapping for the destination virtual address, the interconnect fabric module requests the network manager or an external virtual address table to provide the mapping. When that mapping is provided by the network manager or the external table, the interconnect fabric module stores it in the virtual address table. Thus, an interconnect fabric module may implement no caching, two-tiered caching, or three-tiered caching for virtual addresses (or domain addresses).
In one embodiment, an interconnect fabric module may implement multiframe buffering at each port so that frames can be buffered at source ports before being forwarded to a destination port as required. When a first frame is received at a source port, the interconnect fabric module stores that first frame in a first buffer of that source port. When a second frame is received at that source port, the interconnect fabric module stores that second frame in a second buffer of that source port. The interconnect fabric module may then identify a priority score for the first and second frames. The interconnect fabric module then transmits the frame with a higher priority score first. In this way, the interconnect fabric module provides both multiframe buffering for source ports and priority selection of the buffered frames.
In one embodiment, an interconnect fabric module may implement interswitch load balancing via groups of equivalent ports. As discussed above, interconnect fabric modules may themselves be interconnected to form a interconnect fabric for connecting nodes. Two interconnect fabric modules may have multiple links directly connecting their ports. Ports are considered equivalent when a frame can be selectively transmitted on any of the ports to reach its final destination. The use of multiple links (and equivalent ports) between interconnect fabric modules allows for a greater bandwidth between those interconnect fabric modules. The network manager may configure each interconnect fabric module to indicate which groups of its ports are equivalent. The interconnect fabric module may have an equivalent ports table that maps each port to its equivalent ports. When the interconnect fabric module receives a frame, it identifies a destination port based on the virtual address (or domain address) in the frame. If the identified destination port is currently in use, then the interconnect fabric module checks the equivalent ports table to determine whether there any equivalent ports. If so, and the equivalent port is not in use, the interconnect fabric module forwards the frame through the equivalent port. In this way, interconnect fabric modules can balance their load through the use of equivalent ports.
In one embodiment, an interconnect fabric module uses a crosspoint switch to switch connect its source and destination ports. When the crosspoint switch has more switch ports than ports of the interconnect fabric module, the extra switch port can be used for administrative functions of the network manager. When an interconnect fabric module receives a frame directed to a virtual address reserved for administrative services of the network manager, the interconnect fabric module connects the source port to the extra switch port which is connected to the network manager. When the frame is transmitted from the source port, the network manager receives the frame and processes it in accordance with its administrative functions. In this way, administrative frames can be directly forwarded to the network manager when they are first received by an interconnect fabric module from a node.
In one embodiment, a connection can be established from a source node to a destination node through multiple interconnect fabric modules. In certain circumstances, two directly linked interconnect fabric modules may encounter a deadlock when both are attempting to establish a connection using the same link. In such a situation, each interconnect fabric module already has a partially built connection through it and identifies that a request for a conflicting connection has been received. Each interconnect fabric module then determines which interconnect fabric module has the higher priority. If an interconnect fabric module determines that it does not have the higher priority, then it terminates its partially built connection and allows the conflicting connection with the higher priority to be built. The interconnect fabric module with the higher priority leaves its partially built connection and indicates that the conflicting connection cannot be established. By detecting potential deadlocks at the interconnect fabric module level, overall performance of the interconnect fabric is improved.
In one embodiment, an interconnect fabric module allows an existing connection between a source node and a destination node to be preempted by a request for a proposed connection that specifies a higher priority and specifies to preempt existing connections. When an interconnect fabric module receives a connection request at a source port, it identifies a destination port. If the destination port is currently part of an existing connection and the proposed connection indicates to preempt, then the interconnect fabric module determines whether the proposed connection or the existing connection has a higher priority. If the existing connection has a higher priority, then the interconnect fabric module indicates that the proposed connection cannot be made. If, however, the proposed connection has a higher priority, then the interconnect fabric module indicates that the existing connection is to be terminated and then proceeds to establish the proposed connection. The use of priorities to preempt an existing connection allows connection management to be distributed through the interconnect fabric, rather then performed directly by the network manager.
In one embodiment, a device may send a frame that is to be multicasted to multiple destinations without acknowledgment. The Fibre Channel communications standard refers to such a frame as a class 3 frames. Such frames are not guaranteed to be received by each destination. When an interconnect fabric module receives such a frame, it identifies its destination ports through which the frame is to be forwarded and forwards the frame to each identified destination port that is not currently in use. If an identified destination port is currently in use, the interconnect fabric module keeps the frame stored in the buffer until the identified destination port becomes available or until the time to live for the frame expires. When an identified destination port becomes available, the interconnect fabric module forwards the frame to that destination port. In this way, the interconnect fabric module increases the chances of the frame to being successfully received by all of its destinations.
In the following, aspects of the interconnect fabric module are descπbed using block diagrams and logic diagrams. One skilled in the art will appreciate that the techniques of the interconnect fabric module can be implemented using different combinations logic circuits and/or firmware. In particular, the logic diagrams illustrate processing that may be performed in parallel using duplicate logic circuits (e.g., one for each line of a bus) or may be performed in serial using a single logic circuit. The particular logic designs can be tailored to meet the cost and performance objectives of the interconnect fabric module. One skilled in the art will be able to readily design logic circuits based on the following descriptions.
In one embodiment, many different techniques may be used by the network manager, the routing devices and the nodes to ensure the security of the network. In particular, the network manager may authenticate each node attempting to register to ensure that the node is not an imposter node. In this way, only previously authorized nodes can access the network. The routing devices may also discard any communication that is addressed with a virtual address that is not properly configured in the routing device. More generally, the routing device and nodes may check the header or other information of a communication to ensure that the communication is valid. If not valid, then the routing device or node can disregard the communication. For example, a routing device may detect that a communication received from a node specifies a higher priority than the priority authorized for the node by the network manager. In such a case, the routing device may discard the communication to prevent the node from using a priority that is higher than authorized. The routing device may also remove it configured virtual addresses to prevent use by nodes past an allotted time period or to prevent use by an imposter node. These security techniques can help ensure the overall security of the network and help prevent some all-to-common security problems, such as a denial-of-service attack. A denial-of- service attack can be prevented because an unauthorized node can only send communications through the routing device to which it is directly connected. The routing device can detect that the communication is unauthorized and immediately discard the communication without attaching the targeted node the network with communications sent from the unauthorized node. Moreover, since the routing device that is directly connected to the unauthorized node handles the security, the unauthorized communications do not impact the network bandwidth, except possibly for the bandwidth through the directly connected routing device.
In one embodiment, the network manager coordinates network security with the routing devices and the nodes. When a node registers with the network manager, the network manager authenticates the node. The network manager and the node may use a PKI-based ("Public Key Infrastructure") authentication technique. For example, a node may generate a private and public key pair. The node then provides its public key to the network manager during authorization that may be coordinated by a person who is a network administrator. Once authorized, the node can register with the network manager. To register, the node encrypts its registration request (or a portion of it) using its private key and then sends the encrypted registration request to the network manager. The network manager decrypts the registration request using the node's public key. If the request is correctly decrypted, then the network manager knows it was sent by an authorized node and proceeds with the registration. If, however, the request is not correctly decrypted, then the network manager knows that the request was sent by an imposter (or otherwise unauthorized) node and disregards the registration request. To ensure that a registration request is not intercepted and decrypted by an unauthorized node that has the authorized node's public key, the network manager may generate its own private and public key pair and provide its public key to the authorized node. An authorized node can then further encrypt the registration request with the network manager's public key. In this way, only the network manager can decrypt and recognize the registration request. One skilled in the art will appreciate that these encryption techniques can be use to protect any communication sent via the network and not just registration requests. In addition, various other authentication techniques may be used during registration of a node.
In one embodiment, a routing device filters communications sent from a directly connected node so that unauthorized communications are not transmitted through the network. The routing device may filter communications based on information contained in the header of the communication. In particular, a source-side port that receives a communication may discard the communication when the virtual address of the communication in not in the label table of the port. In addition, the network manger, when it configures a routing device at node registration, may configure the source-side port with filter parameters other than the virtual address. For example, the network manager may provide the source-side port with the maximum priority or the classes of service that the node is authorized to use. When the port receives a communication, it determines whether any of the filter parameters are unauthorized and, if so, discards the communication. The routing device may also notify the network manager of the unauthorized communication. Because the filtering is performed at the ports, unauthorized communications have minimal impact on overall network performance.
In one embodiment, the security of the network is further enhanced by the removal of virtual addresses from the routing device and from the nodes. When a virtual address is removed from a routing device or a node, then communications directed to that virtual address will no longer be accepted by the routing device or node. A virtual address may be removed for various reasons including when the network manager requests that it be removed, when a routing device or node detects a timeout for it, and when the routing device or node detects an error at the physical layer. The network manager may request that a virtual address be removed as part of a node's de-registration process. The de-registration may be initiated by the network manager or by the node itself. In either case, the network manager may send a request to remove the virtual address to each source-side port along the path from the source node to the destination node. The network manager may also send a request that the node itself remove its virtual address. When a routing device or node receives a virtual address, it may automatically remove the virtual address after a certain timeout period. The network manager may specify the timeout period, or the routing device or node may set its own timeout period. The routing device or node may restart the timeout period whenever a communication is received or sent using that virtual address, which results in removal based on when the virtual address was last used. The routing device or node may also remove a virtual address when certain events (e.g., errors) are detected at the physical layer. For example, the physical layer of a routing device may detect that the communications link between the routing device and a node has been removed (e.g., the line has been unplugged from the source-side port of the routing device). In such a case, the routing device may automatically remove all the virtual addresses associated with that node (e.g., stored in the label table of the source-side port). In this way, an imposter node cannot then be connected to the routing device and start sending communications using the virtual addresses of the disconnected node. In addition, since the routing devices are not configured until a node registers (i.e., just-in-time configuration), the length of time that the network is configured to support a node tends to be minimized and tends to be on an as-needed basis. The configuring of the network on an as-needed basis tends to reduce the opportunities an imposter node has to access the network and tends to free up network resource to be used by other authorized nodes.
Figure 1 is a block diagram illustrating components of the interconnect fabric module ("IFM") in one embodiment. The interconnect fabric module 100 includes 32 switch protocol controllers ("SPC") 101, a crosspoint switch 102, a switch control unit ("SCU") 103, a field programmable gate array ("FPGA") monitor 104, an arbitration bus 105, and an IFM identifier 106. The interconnect fabric module has 32 bi-directional communication ports. A switch protocol controller controls each communications port. Each switch protocol controller is responsible for decoding the header information of a frame, arbitrating access to destination ports and configuring the crosspoint switch, and transmitting the received frame through the crosspoint connections to one or more communication ports. The switch control unit receives requests for crosspoint connections from the switch protocol controllers, configures the crosspoint switch accordingly, and directs the switch protocol controllers to transmit their frames through the crosspoint connections. The crosspoint switch provides full crossbar functionality in that each port of the interconnect fabric module can be simultaneously connected to any number of ports. In one embodiment, the crosspoint switch has 34 inputs and 34 outputs, numbered 0-33. The field programmable gate array monitor connects to an interconnect fabric module manager (not shown), which is a single board computer that may provide an interface for configuring the interconnect fabric module and may provide an interface to upper layer protocol services such as a name server or alias server.
Figure 2 is a block diagram illustrating components of a switch protocol controller in one embodiment. The switch protocol controller 200 includes a receive controller 201 , a decoder 202, a header processor 203, a frame buffer 204, a transmit controller 205, and an arbitrator 206. The receive controller is connected to the input (i.e., receive side) of a port and may perform a serial-to-parallel conversion of the received frame. The decoder provides the header information of the received frame to the header processor and stores the frame in the frame buffer. The header processor includes a processor 207, a label table 208, and an equivalent port table 209. The label table contains port maps that indicate to which ports a frame should be routed ("switch destination port") based on the port through which the frame is received (i.e., "switch source port") and the destination identifier of the frame. The processor retrieves the port map from the label table for the received frame and provides the port map to the arbitrator. The equivalent port table indicates groups of ports that are equivalent in the sense that a frame can be sent through any port of an equivalent group to reach the identified destination. If one port in an equivalent port group is currently in use, then a switch protocol controller can equivalently route the frame to any available port in the equivalent port group. The arbitrators of the switch protocol controllers coordinate access to the switch control unit so that a switch protocol controller can request the switch control unit to configure the crosspoint switch in accordance with the port map. As described below in detail, the arbitrators and the switch control unit are connected to an arbitration bus. The arbitrator is also connected to the output (i.e., transmit side) of the port for transmitting control frames. The transmit controller transmits frames stored in the frame buffer to the crosspoint switch when the switch control unit indicates that the crosspoint switch has been configured appropriately.
Figure 3 is a block diagram illustrating the contents of a label table in one embodiment. The entries of the label table are port maps that are indexed by a virtual address. In one embodiment, the destination identifier includes a domain address and a virtual address, which are described below in detail. A virtual address is virtual in the sense that it is not a physical address of a node (or interconnect fabric module). Rather, a virtual address is mapped to a series of output ports of one or more interconnect fabric modules as specified by their label tables that define a route from the source device to the destination device. A port map has one bit for each of the 32 ports of the interconnect fabric module. A bit value of 1 indicates that frames directed to the indexing virtual address should be routed to the corresponding port. For example, the first entry in the label table contains a bit value of 1 in the column corresponding to port 2 and contains a bit value of 0 in all the other columns corresponding to ports 0, 1 , and 3-31. When a frame is directed to the virtual address of 0, the corresponding entry in the label table indicates that the frame should be routed to only port 2. The second entry in the label table indicates that frames directed to the virtual address of 1 are to be routed to ports 2-31 , but not to ports 0 and 1. In one embodiment, the label table of each switch protocol controller contains 8K entries. One skilled in the art will appreciate that the size of the label table can be adjusted to meet overall performance goals of the interconnect fabric module. Because each switch protocol controller has its own label table, a frame received via port 2 with a virtual address of 5 would be routed in accordance with the port map in the sixth entry of the label table for port 2.
Figure 4 is a block diagram illustrating the format of a frame in one embodiment. The illustrated frame is in Fibre Channel format. One skilled in the art will appreciate that other formats can be used such as the InfiniBand format. A frame contains a start- of-frame portion, a header portion, a data portion, and an end-of-frame portion. The header portion includes a 24-bit destination identifier field, a 24-bit source address field, an 8-bit control field, an 8-bit type field, and an 8-bit priority field. The data portion is variable length and contains up to 2112 bytes. The destination and source identifiers include a domain address and a virtual address. The destination identifier identifies a path from a source device (e.g., node or switch) to one or more devices to which a frame is to be sent. The source identifier identifies a path from the destination device to the source device. The control field indicates whether the frame is a control frame or a data frame. A control frame may include response frames (e.g., an acknowledge frame), fabric control frames, flow control management frames, and link control frames. The flow control management and link control frames are standard Fibre Channel defined frames. The type field indicates the type of data in the data field. A data frame contains payload data that is to be sent from one node to another node using the interconnect fabric. The class of a frame specifies whether a frame is to be sent with or without a connection (e.g., Fibre Channel class 1 a connection with acknowledgment). The class field may indicate a class, a priority value, and a preemption flag. Start-of-connection and end-of-connection frames delimit a connection. A connection is a bi-directional, physical connection from a source node through the interconnect fabric to destination node. When the interconnect fabric receives a start-of-connection frame, the interconnect fabric modules cooperate to establish a physical connection between the source and destination nodes. The physical connection is maintained until an end-of-connection frame is sent via the connection or until a frame that has a priority higher than the connection and that designates to preempt conflicting connections (i.e., its preemptive flag is set) is received by an interconnect fabric module that needs to use one of its port that is dedicated to the existing connection.
Figure 5 is a diagram illustrating logic of an arbitrator of a switch protocol controller in one embodiment. The arbitrator communicates with the switch control unit via the arbitration bus. The arbitration bus follows the IEEE 896 Futurebus+ arbitration protocol. The arbitration bus is a wired-or bus in which multiple arbitrators can drive their information onto the bus simultaneously. Based on the information that is being driven on the arbitration bus, each arbitrator determines whether it is the arbitrator with the highest priority that is currently driving the bus. When an arbitrator decides that it does not have the highest priority, it stops driving its information onto the bus. Ultimately, the arbitrator with the highest priority will remain driving the bus. At that point the switch control unit retrieves the information from the arbitration bus, which includes the port map for the destination identifier, the switch source port number, and the class. The switch control unit then configures the crosspoint switch to crosspoint connect the input of the switch source port to the output of each switch destination port identified by the port map. The switch control unit then notifies the arbitrator with the highest priority that the crosspoint switch has been configured. In one embodiment, the arbitration bus includes 32 port status lines to indicate whether the corresponding port is currently in use. The switch control unit sets and clears the status lines as it configures the crosspoint switch. If the port status lines indicate that the crosspoint switch cannot be configured in accordance with the port map (e.g., a port indicated in the port map is in use), then the arbitrator, in general, does not participate in arbitrations until all the switch destination ports indicated by the port map become available. In block 501 , the arbitrator raises an arbitration signal on the arbitration bus. If the arbitration signal is already raised, then the arbitrator waits until the arbitration signal is lowered before raising the signal. It is possible that two arbitrators can raise the arbitration signal simultaneously. If so, the arbitrator with the highest priority frame is given control of the arbitration bus. In block 502, the arbitrator drives a competition number comprising the 7-bit priority of the frame and the 5-bit port number of its port onto the arbitration bus. In decision block 503, if the arbitrator does not have the highest priority, then it stops driving the competition number and other data onto the arbitration bus in block 504 and then continues to block 501 so it can eventually raise the arbitration signal and try again. If the arbitrator has the highest priority and all the other arbitrators have stopped driving the arbitration bus, then the arbitrator continues at block 505. In block 505, the arbitrator drives the port map, its 5-bit port number, and class onto the arbitration bus. In block 506, the controller stops driving any data on the arbitration bus, and then lowers the arbitration signal. In block 507, the arbitrator receives confirmation from the switch control unit when the crosspoint switch has been appropriately configured. In block 508, the arbitrator signals the transmit controller to transmit the frame to the crosspoint switch and then completes. At that point, other arbitrators detect that the arbitration signal has been lowered and can then arbitrate access to the switch control unit.
Figure 6 is a block diagram illustrating the transmit controller in one embodiment. The transmit controller 600 includes a frame generator 601 , a multiplexor 602, and an encoder 603. The transmit controller when directed by the arbitrator either generates and transmits a control frame or transmits the frame currently stored in a frame buffer. The encoder forwards the frame to the crosspoint switch for transmission through the switch destination ports.
Figure 7 is a block diagram illustrating the interconnection of interconnect fabric modules forming an interconnect fabric that connects various nodes. In this example, the interconnect fabric modules 701 , 702, 703, and 704 form a fully connected interconnect fabric. An interconnect fabric is fully connected when each interconnect fabric module is directly connected to each other interconnect fabric module. For example, interconnect fabric module 701 is directly connected to interconnect fabric module 702 via link 762, to interconnect fabric module 703 via link 763, and to interconnect fabric module 704 via link 764. Each interconnect fabric module is also directly connected to various nodes. For example, interconnect fabric module 701 is directly connected to nodes 710. The ports of a interconnect fabric module that are directly connected and other interconnect fabric modules are referred to as expansion ports ("E-ports"), and the ports of an interconnect fabric module that are connected to nodes are referred to as fabric ports ("F-ports"). Figure 7 illustrates that a connection has been established between node 711 and node 746. Node 711 is directly connected to port 0 of interconnect fabric module 701. Port 0 of interconnect fabric module 701 is connected to port 30 via the crosspoint connection 771. Port 30 of interconnect fabric module 701 is directly connected to port 29 of interconnect fabric module 704 via link 764. Port 29 of interconnect fabric module 704 is connected to port 16 via the crosspoint connection 774. Port 16 of interconnect fabric module 704 is directly connected to node 746. While the connection is maintained, all frames sent from node 711 through port 0 of interconnect fabric module 701 are transmitted through the connection to node 746 via port 16 of interconnect fabric module 704. When a frame is transmitted using a connectionless protocol, the crosspoint switches of the interconnect fabric modules are dynamically configured to route the packet from the source node to the destination node. That is, once an interconnect fabric module transmits a frame from its switch source port through its switch destination port, those ports are available to be reconnected to other ports. Thus, with a connectionless protocol each frame will result in an arbitration at each interconnect fabric module in the path from the source node to the destination node. Destination Identifier
Figure 8 is a block diagram illustrating the mapping of a destination identifier to a port map. Each interconnect fabric module has a interconnect fabric module identifier 801. In one embodiment, the interconnect fabric identifier contains a domain address that has been assigned to the interconnect fabric module. When a frame is processed by a switch protocol controller, the switch protocol controller determines whether the domain address of the destination identifier matches the domain address assigned to the interconnect fabric module. If so, then the switch protocol controller uses the virtual address label table to retrieve the port map. (The label table is subdivided into a virtual address label table and a domain address label table.) If the domain addresses do not match, then the switch protocol controller uses a domain address label table to retrieve the port map. The domain address of a frame specifies those interconnect fabric modules that are configured to route the frame and the domain address label table is used to route frames to interconnect fabric modules that are configured to route the frame.
A switch protocol controller may include a destination identifier buffer 802, a comparator 805, a domain address label table 806, a virtual address label table 807, and a selector 808. The comparator inputs are the domain addresses of the interconnect fabric module and of the destination identifier. The comparator signals whether the domain addresses match. The domain address label table is indexed by the domain address of the destination identifier and outputs the indexed port map. The virtual address label table is indexed by the virtual address of the destination identifier and outputs the indexed port map. The port maps of the domain address label table and the virtual address label table are input to the selector, which selects a port map based on the input generated by the comparator. That is, the port map is selected from the virtual address label table when the domain addresses of the interconnect fabric module and of the destination identifier match and from the domain address label table when they do not match. Label Table Caching
In one embodiment, multiple switch protocol controllers of an interconnect fabric module may share a single label table that may include both a virtual address label table and a domain address label table. The contents of the label table may be dynamically modified to reflect routing algorithms used by a manager of the interconnect fabric. Each switch protocol controller that shares a single label table may include a local label table cache in which it stores recently retrieved port maps from the shared label table. A switch protocol controller resolves an address (e.g., virtual address or domain address) into its corresponding port map, by first checking its local label table cache. If the port map corresponding to that address is not in the local label table cache, then the switch protocol controller accesses the shared label table. The use of local label tables and a shared label table represents a two-tier caching system. In one embodiment, the switch protocol controllers use a three-tier caching system. The third tier provides access to an extended label table that contains port maps not currently contained in the shared label table. Thus, when the shared label table does not contain the port map for an address, a switch protocol controller uses an extended label table interface to retrieve a port map for that address from a device that is external to the interconnect fabric module. Figure 9 is a block diagram illustrating switch protocol controller caching in one embodiment. In this embodiment, four switch protocol controllers share a label table. The four switch protocol controllers may be contained on a single board or chip referred to as a quad switch protocol controller 900. Switch protocol controllers 910, 920, 930, and 940 share a single label table 950. Each switch protocol controller has a local label table cache such as local label table cache 911 for switch protocol controller 910. The extended label table interface 960 provides access to, in one embodiment, an interconnect fabric module manager that receives requests for port maps not currently stored in the shared label table and provides the requested port maps. Alternatively, the extended label table interface provides access directly to an external label table. The interconnect fabric module manager may access an overall manager of the interconnect fabric to retrieve the port maps. One skilled in the art will appreciate that various well-known caching techniques may be used to implement the two-tier or three-tier caching system of the switch protocol controllers. Multiframe Buffering
In one embodiment, a switch protocol controller may implement multiframe buffering of the frames received through its input. Multiframe buffering allows a switch protocol controller to internally store multiple frames that have not yet been transmitted by the switch protocol controller. Multiframe buffering allows the device (e.g., node or interconnect fabric module) that sends a frame to the switch protocol controller to continue sending additional frames as long as a buffer is available at the switch protocol controller. In one embodiment, the devices may use the flow control mechanism of the Fibre Channel standard to coordinate the transmission of frames between devices. A switch protocol controller may implement a buffer arbitration algorithm to identify which of the frames in the multiframe buffer should be transmitted by the switch protocol controller. A buffer arbitrator of the switch protocol controller may use the priority and class of service of the frame to select the next frame to be transmitted. The buffer arbitrator may also factor in the latency of a frame (i.e., length of time the frame has been stored at the switch protocol controller). One skilled in the art would appreciate that many different types of buffer arbitration algorithms may be used, such as algorithms that attempt to ensure that each frame is transmitted before it times out or that use a first-in-first-out approach. Also, the buffer arbitration algorithm may be loaded at initialization or dynamically after initialization from the interconnect fabric module manager. In one embodiment, when a buffer arbitrator selects a start-of- connection frame, subsequent frames of that connection are automatically selected by the buffer arbitrator. This ensures that frames not associated with a connection are not transmitted via the connection.
Figure 10 is a block diagram illustrating multiframe buffering. A switch protocol controller 1000 includes a receive controller 1001 , a multiframe buffer 1002, and a buffer arbitrator 1003. The receive controller receives frames via the input of its port and stores the frame in the next available buffer of the multiframe buffer. In one embodiment, the receive controller may store all the frames of a connection in the same buffer. Alternatively, the received controller may store frames of a connection in different buffers and the buffer arbitrator ensures that frames of an established connection are given the highest priority. The buffer arbitrator is enabled when the switch protocol controller is ready to process the next frame. Figure 11 is a diagram illustrating the logic of the buffer arbitrator in one embodiment. In decision block 1101 , if the switch protocol controller is currently in a connection, then the buffer arbitrator selects the buffer associated with the connection and completes. If, however, the switch protocol controller is not currently in a connection, then the buffer arbitrator calculates a priority score for each frame stored in the multiframe buffer. The buffer arbitrator uses a buffer arbitration algorithm to calculate the priority score. In block 1104, the buffer arbitrator selects the buffer containing the frame with the highest priority score to be processed next and completes. Interswitch Load Balancing via Groups of Equivalent Ports
The interconnect fabric modules may be interconnected to provide interswitch load balancing. For example, two interconnect fabric modules may have a multiple direct links between them to increase the bandwidth of frames that may be transmitted between the interconnect fabric modules. Figure 12 is a block diagram illustrating an interconnect fabric configuration with multiple direct links between interconnect fabric modules. In this example, interconnect fabric module 1201 and interconnect fabric module 1202 have three direct links 1210, 1211 , and 1212 between them. The use of multiple direct links allows multiple frames to be transmitted simultaneously between the directly linked interconnect fabric modules. For example, three nodes directly linked to interconnect fabric module 1201 may simultaneously have connections established to three different nodes directly linked to interconnect fabric module 1202. In this example, interconnect fabric module 1201 is also indirectly linked to interconnect fabric module 1202 via links 1213 and links 1214, 1215, and 1216 through interconnect fabric module 1204. Ports of an interconnect fabric module are equivalent when they can be use interchangeably to route frames to their destination. Equivalent ports may have similarly configured label tables.
In one embodiment, each switch protocol controller has an equivalent port table that defines which ports of the interconnect fabric module are logically equivalent to one another. (Alternatively, the switch protocol controllers of an interconnect fabric module may share an equivalent port table.) For example, ports 0, 1 , and 2 may be equivalent ports for both interconnect fabric module 1201 and interconnect fabric module 1202. When the header processor selects a port map, an equivalent port service of the switch protocol controller determines whether the ports of the port map are currently available. If a port is not currently available, the equivalent port service determines from the equivalent port table whether an equivalent port is available. If so, the equivalent port service modifies the port map so that the frame is routed through the equivalent port. For example, if a port map designates port 0 of interconnect fabric module 1201 , but port 0 is currently in use, then the equivalent port service may select port 1 as an equivalent to replace port 0 in the port map (assuming port 1 is not currently in use). Figure 13 is a block diagram illustrating the use of equivalent ports. Equivalent port service 1303 inputs a port map that may be generated using virtual address 1301 and virtual address label table 1302. Alternatively, the port map may be generated using a domain address and a domain address label table. The equivalent port service also inputs equivalent port table 1304. The equivalent port table contains an entry for each port of the interconnect fabric module. Each entry, referred to as an equivalent port map, contains a bit for each port of the interconnect fabric module. In this example, the entry for port 0 has its bits for port 1 and port 2 set to indicate that port 0, port 1 , and port 2 are equivalent. The entry for port 1 has its bits for port 0 and port 2 set to indicate that port 0, port 1 , and port 2 are equivalent. The equivalent port service also inputs the port status lines, which indicates the current status of each of the ports of the interconnect fabric module. When the equivalent port service receives a port map it determines whether the designated ports are available based on the port status. If a designated port is not available, the equivalent port service retrieves the equivalent port map for that designated port. The equivalent port service then determines whether any of the equivalent ports are available. If an equivalent port is available, then the equivalent port service changes the port map to designate an available equivalent port. If no equivalent ports are available, then the equivalent port service leaves the port map unchanged. In one embodiment, an equivalent port map may have a priority associated with each port. The equivalent port service may select equivalent ports based on their associated priority. The priorities may be useful, for example, when ports are equivalent, but the cost of routing a frame through the ports are different. For example, port 3 of interconnect fabric module 1201 may be equivalent to port 0, port 1 , and port 2, but the cost of routing a frame through port 3 may be higher because the frame would travel through interconnect fabric module 1204 on its way to interconnect fabric module 1202.
Figure 14 is a diagram illustrating the logic of the equivalent port service in one embodiment. The equivalent port service receives an input port map and processes each designated port of the input port map. The service may initialize the output port map so that no ports are designated. In block 1401 , the service selects of the next designated port of the input port map. In decision block 1402, if all the designated ports have already been selected, then the service completes, else the service continues at block 1403. In decision block 1403, if the selected port is available, then the service designates the selected port in the output port map and proceeds to select the next designated port of the input port map. In block 1405, the service retrieves the equivalent port map for the selected port from the equivalent port table. In block 1406, the service selects the next designated port of the selected equivalent port map. In decision block 1407, if all designated ports of the equivalent port map have already been selected, then the service continues at block 1408, else the service continues at block 1409. In block 1408, the service designates the selected port in the output port map because no equivalent ports are available and completes. The service may repeat this process as ports become available. In decision block 1409, if the selected port of the equivalent port map is available, then the service continues at block 1410, else the service loops to block 1406 to select the next designated port of the equivalent port map. In block 1410, the service designates the selected port of the equivalent port map in the output port map and then loops to select the next designated port of the input port map. Administrative Ports
In one embodiment, the crosspoint switch of a switch protocol controller may have more outputs than the number of ports of an interconnect fabric module. For example, a crosspoint switch may have 34 inputs and outputs, but the interconnect fabric module may have only 32 ports. The switch protocol controller may use these additional ports of the crosspoint switch to route upper layer protocol frames, such as frames directed into a name server or other administrative services. In one embodiment, the additional output ports of the crosspoint switch may be connected to the interconnect fabric module manager. An interconnect fabric module may have a list of "reserved" addresses that designate an upper layer protocol port. When a switch protocol controller determines that an address of its frame matches one of the reserved addresses, it enables the routing of that frame to an upper layer protocol port. The routing to upper layer protocol ports may use the same arbitration mechanism as used for routing to non-upper layer protocol ports. One skilled in the art will appreciate that the arbitration bus would need lines for supporting the additional ports. For example, six lines would be needed to designate ports 0 through ports 33, rather than the five lines needed to designate ports 0 through ports 31. Alternatively, when the crosspoint switch does not have extra output for an upper layer protocol port, an output can be selectively switched between a communications port and an upper layer protocol port depending on whether the address of the destination identifier is reserved.
Figure 15 is a block diagram illustrating a component for identifying upper layer protocol ports. This component may be part of the header processor of the switch protocol controller. An administrative port comparator 1503 inputs the virtual address of the destination identifier 1501 of a frame and a reserved address table 1502. The reserved address table has entry for each reserved address and contains the value of the reserved address and may contain a flag indicating whether to route a frame designating the reserved address to upper layer protocol port 32 or upper layer protocol port 33. When signaled, the comparator determines whether any of the reserved addresses match the virtual address of the frame. If so, the comparator enables the port 32 or port 33 flags. When enabled, the arbitrator automatically designates the signaled upper layer protocol port during arbitration. The crosspoint switch 1506 may be connected to the interconnect fabric module manager 1507 via upper layer protocol port 32 and upper layer protocol port 33. In this way, the upper layer protocol frames are routed to the interconnect fabric module manager as indicated for further processing. Interswitch Deadlock Avoidance
In one embodiment, the switch protocol controllers implement a deadlock avoidance scheme to prevent interswitch deadlocks. An interswitch deadlock may occur when two partially built connections both need the same port to complete their connections. Figure 16 is a block diagram illustrating an interswitch deadlock. In this example, node 1605 requests that a connection be established to node 1607, and node 1606 requests that a connection be established to node 1605. Node 1605 is directly linked to port 1 of interconnect fabric module 1601 and nodes 1606 and 1607 are directly linked to ports 1 and 2, respectively, of interconnect fabric module 1602. Port 0 of interconnect fabric module 1601 is directly linked to port 0 of interconnect fabric module 1602. Table 1610 illustrates a sequence of events that results in a deadlock. At time 0, nodes 1605 and 1606 send out start-of-connection frames. At time 1 , the interconnect fabric module 1601 establishes a crosspoint connection between its port 1 and its port 0 via crosspoint switch 1603 as part of the process of establishing the connection between node 1605 and node 1607. At the same time, interconnect fabric module 1602 establishes a crosspoint connection between its port 1 and port 0 via crosspoint switch 1604 as part of the process of establishing the connection between node 1606 and node 1605. At time 2, interconnect fabric module 1601 transmits the start-of-connection frame to interconnect fabric module 1602 via link 1608, and interconnect fabric module 1602 transmits the start-of-connection frame to interconnect fabric module 1601 via link 1608. When interconnect fabric module 1601 receives the start-of-connection frame, it determines that it cannot currently establish a crosspoint connection from port 0 to port 1 because port 0 is in use by the partial connection from node 1605 to node 1607. Similarly, when interconnect fabric module 1602 receives the start-of-connection frame, it determines that it cannot currently establish a crosspoint connection from port 0 to port 2 because port 0 is in use by the partial connection from node 1606 to node 1605. Because neither connection can be completed, a deadlock occurs. One skilled in the art will appreciate that deadlocks can result from a wide variety of sequences of events.
In one embodiment, a switch protocol controller uses an interswitch deadlock avoidance scheme. Whenever a switch protocol controller receives a start-of- connection frame and the switch protocol controller is currently in a connection, then a conflict has occurred. The switch protocol controller receives such a conflicting start- of-connection frame when the conflicting start-of-connection frame was initially transmitted from a node before the connection that included that switch protocol controller's port was complete. To avoid a deadlock, once the conflict is detected, the switch protocol controller compares the priority of the conflicting start-of-connection frame with the priority of the start-of-connection frame for its partially built connection to determine which connection should be established. If the frames have the same priority, then the switch protocol controller uses the domain address identifier or other unique identifier of the interconnect frame modules as a tiebreaker, that is the interconnect fabric module that received and the one that sent the conflicting start-of- message frame. If the priority of the conflicting frame is higher, then the switch protocol controller sends a frame through its input direction indicating that the connection cannot be established and then proceeds to process the conflicting start-of- connection frame to complete the connection. Conversely, the switch protocol controller that sent the conflicting frame also detects the conflict but determines that the frame it sent has a higher priority and ignores the start-of-connection frame that it just received. Figure 17 is a diagram illustrating the logic of deadlock avoidance algorithm in one embodiment. The deadlock avoidance algorithm may process each frame that Is received by a switch protocol controller. In decision block 1701 , if a start-of-connection frame is received, then processing continues at block 1702, else there is no conflict. In decision block 1702, if the port is currently in a connection, then there is a conflict and the processing continues at block 1703, else there is no conflict. In decision block 1703, if the frame that established the connection for this port has a higher priority than the conflicting frame just received, then this port wins the conflict and discards the conflicting frame, else the processing continues at block 1704. In decision block 1704, if the priorities are equal, the processing continues at block 1705 to check the tiebreaker, else this switch protocol controller loses the conflict and continues at block 1706. In decision block 1705, if the domain address of this interconnect fabric module is greater than the domain address of the interconnect fabric module that sent the conflicting frame, then this port wins the conflict, else this port loses the conflict and continues at block 1706. In block 1706, when this port loses conflict, it removes the partial connection that has been established through it by sending a remove connection frame through its input to notify the originating node and the other interconnect fabric modules through which the connection was partially built. Connection Preemption
In one embodiment, the interconnect fabric modules allow an existing connection to be preempted when a connection with a higher priority is to be established that conflicts with the existing connection. Figure 18 illustrates the preempting of a connection. A connection is established between node 1803 and node 1804. The connection includes link 1806, a crosspoint connection between port 0 and port 1 of interconnect fabric module 1801 , link 1807, a crosspoint connection between port 4 and port 6 of interconnect fabric module 1802, and link 1808. Once the connection has been established, node 1805 may send a start-of-connection frame with a higher priority than the existing connection and with its preemption bit (flag) set. When the switch protocol controller for port 2 receives the frame, it selects the switch destination port through which the connection is to be built. The switch protocol controller may use the equivalent port service to identify an equivalent port that is available if the port designated by the port map is in use. If port 1 is designated in the port map and there is no equivalent port that is available, the switch protocol controller for port 2 detects a conflict. The switch protocol controller then sets a flag indicating that the conflicting port (i.e., ports 0 or 1 ) should participate in the ensuing arbitration. The switch protocol controller for port 2 then sets the arbitration flag and the conflicting port and port 2 participate in the arbitration. If the conflicting port loses, its switch protocol controller sends a frame through its connection in both directions indicating that the connection is to be removed and the switch protocol controller for port 2 establishes a crosspoint connection between port 1 and port 2 and transmits its start- of-connection frame. Conversely, if the conflicting port wins the arbitration, then the connection is left established and the switch protocol controller for port 2 sends a frame indicating that the connection cannot be established in its input direction.
Figure 19 is a diagram illustrating the logic of processing a preemption signal in one embodiment. This processing is performed when a switch protocol controller detects a preemption signal on the arbitration bus. In decision block 1901 , if this port is currently in a connection, then the switch protocol controller may need to participate in the arbitration. In decision block 1902, if this port is the conflicting port (i.e., established the connection), then this port participates in the arbitration and continues processing at block 1903. In block 1903, the switch protocol controller for this port participates in the arbitration. In decision block 1904, if the switch protocol controller of this port loses the arbitration, then it continues at block 1905 to disconnect the connection, else it leaves the connection established. In block 1905, the switch protocol controller sends a disconnect frame in the direction of its input and output. In block 1906, the switch protocol controller indicates to the switch control unit to remove the crosspoint connection for this port. Distributed Class 3 Multicasting
The Fibre Channel standard defines a class 3 protocol that provides a connectionless protocol for transmitting frames without an acknowledgment. Because the protocol is connectionless and no acknowledgment is used, the class 3 protocol can be used for multicasting, that is sending a frame from one node to multiple nodes. Class 3 protocol also specifies that frame delivery is not guaranteed. Traditionally, when a Fibre Channel switch receives a class 3 frame for multicasting, it routes that class 3 frame through as many of the destination ports as are currently available and then discards that frame. In one embodiment, a switch protocol controller buffers a class 3 multicasting frame and sends the frame through the multicast ports as they become available. Although the timeout of the class 3 frame at the switch protocol controller may expire before all multicast ports become available, the buffering of multicast frames increases the chances that the frame may be sent through additional multicast ports as they become available. One skilled in the art will appreciate that multiframe buffering can be used with communications services other than class 3 of Fibre Channel. In particular, it can be used with any non-acknowledged data gram service, also referred to as a packet service. One skilled in the art will appreciate that multiframe buffering can be used to interleave the transmission of a multicast frame with other frames (e.g., connectionless frames). The multiframe buffering algorithm may, for example, give a highest priority score to the multicast frame only when at least one of the multicast ports is currently available.
Figure 20 is a diagram illustrating the logic of distributed class 3 multicasting in one embodiment. This logic is performed when a class 3 frame with multicasting is received at a switch protocol controller. In block 2001 , the switch protocol controller identifies the multicast ports that are currently available. The multicast ports may be the set of ports indicated by the port map to which a virtual address maps. In block 2002, if any of the multicast ports are available, then the switch protocol controller participates in arbitration. In decision block 2003, if the switch protocol controller wins the arbitration, then it continues at block 2004, else it continues at block 2001 to again participate in an arbitration. In block 2004, the switch protocol controller sends the frame and updates the port map stored in a temporary buffer to reflect those ports through which the frame has been sent. In decision block 2005, if the multicast is complete (i.e., the frame has been transmitted through each multicast port), then processing completes, else processing continues to participate in an arbitration to send the frame as additional ports become available.
One skilled in the art will appreciate that, although various embodiments of the technology have been described, various modifications may be made without deviating from the spirit and scope of the invention. For example, aspects of the technology may be used on many different types of routing devices (e.g., switches) other than an interconnect fabric module as described herein. Accordingly, the invention is not limited except as by the following claims.

Claims

CLAIMSI/We claim:
1. A switch for transmitting via destination ports communications received via source ports, comprising: a mapping that maps virtual addresses to destination ports; a component that receives via a source port a communication with a virtual address, that identifies a destination port for the virtual address based on the mapping, and that transmits the communication via the identified destination port; and a component that changes the mapping to map the virtual address to another destination port so that when another communication is received with the virtual address, it is transmitted via the other destination port.
2. The switch of claim 1 wherein the communications are transmitted from the same source.
3. The switch of claim 1 wherein the communications are transmitted to the same destination node.
4. The switch of claim 1 wherein the communications are transmitted to different destination nodes.
5. The switch of claim 1 wherein the switch is in a network of switches and the virtual address identifies a path from a source node to a destination node within the network.
6. The switch of claim 1 wherein the communications are received via the same source port of the switch.
7. The switch of claim 6 wherein each source port of the switch has its own mapping of virtual addresses to destination ports.
8. The switch of claim 1 wherein a source node that transmits the communications is not aware that the virtual address is mapped to the another destination port.
9. The switch of claim 1 wherein a virtual address is mapped to multiple destination ports and wherein communications are transmitted via each mapped-to destination port.
10. The switch of claim 1 wherein the communication is a Fibre Channel frame.
11. The switch of claim 1 wherein the communication is an InfiniBand Channel frame.
12. The switch of claim 1 wherein the switch is an interconnect fabric module.
13. A method in a switch for transmitting communications, the method comprising: receiving an indication to map a virtual address to a destination port of the switch; receiving a communication having a virtual address and transmitting the communications via the destination port; after transmitting the communications, receiving an indication to map the virtual address to another destination port of the switch; receiving other communication having the virtual address and transmitting the other via the other destination port wherein the virtual address identifies a path through a network of switches.
14. The method of claim 13 wherein the communications are transmitted from the same source.
15. The method of claim 13 wherein the communications are transmitted to the same destination node.
16. The method of claim 13 wherein the communications are transmitted to different destination nodes.
17. The method of claim 13 wherein the switch is in a network of switches and the virtual address identifies a path from a source node to a destination node within the network.
18. The method of claim 13 wherein the communications are received via the same source port of the switch.
19. The method of claim 18 wherein each source port of the switch has its own mapping of virtual addresses to destination ports.
20. The method of claim 13 wherein a source node that transmits the communications is not aware that the virtual address is mapped to the second destination port.
21. The method of claim 13 wherein a virtual address is mapped to multiple destination ports and wherein communications are transmitted via each mapped-to destination port.
22. The method of claim 13 wherein each communication is a Fibre Channel frame.
23. The method of claim 13 wherein each communication is an InfiniBand Channel frame.
24. The method of claim 13 wherein the switch is an interconnect fabric module.
25. A method in a switch for identifying destination ports for communications, the method comprising: receiving a first communication having a virtual address; identifying a first destination port for the virtual address from a mapping that maps virtual addresses to destination ports; transmitting the first communication via the identified first destination port; and after transmitting the first communication, receiving an indication to map the virtual address to a second destination port; receiving a second communication having the virtual address; identifying the second destination port for the virtual address from the mapping; and transmitting the second communication via the identified second destination port wherein communications to the same virtual address are transmitted via different destination ports without modifying the virtual address.
26. The method of claim 25 wherein the first communication and the second communication are transmitted from the same source.
27. The method of claim 25 wherein the first communication and the second communication are transmitted to the same destination node.
28. The method of claim 25 wherein the first and the second communication are transmitted to different destination nodes.
29. The method of claim 25 wherein the switch is in a network of switches and the virtual address identifies a path from a source node to a destination node within the network.
30. The method of claim 25 wherein the first communication and the second communication are received via the same source port of the switch.
31. The method of claim 30 wherein each source port of the switch has its own mapping of virtual addresses to destination ports.
32. The method of claim 25 wherein a source node that transmits the first communication and the second communication is not aware that the virtual address is mapped to the second destination port.
33. The method of claim 25 wherein a virtual address is mapped to multiple destination ports and wherein communications are transmitted via each mapped-to destination port.
34. The method of claim 25 wherein the communication is a Fibre Channel frame.
35. The method of claim 25 wherein the communication is an InfiniBand Channel frame.
36. The method of claim 25 wherein the switch is an interconnect fabric module.
37. A routing device for transmitting via destination ports communications received via source ports, comprising: mapping means for mapping virtual addresses to destination ports; means for receiving via a source port a communication with a virtual address and for transmitting the communications via a destination port to which the virtual address maps; and means for changing the mapping to map the virtual address to another destination port so that when another communication is received with the virtual address, it is transmitted via the other destination port.
38. The routing device of claim 25 wherein the communications are transmitted from the same source.
39. The routing device of claim 25 wherein the communications are transmitted to the same destination node.
40. The routing device of claim 25 wherein the communications are transmitted to different destination nodes.
41. The routing device of claim 25 wherein the routing device is in a network of routing devices and the virtual address identifies a path from a source node to a destination node within the network.
42. The routing device of claim 25 wherein the communications are received via the same source port of the routing device.
43. The routing device of claim 42 wherein each source port of the routing device has its own mapping of virtual addresses to destination ports.
44. The routing device of claim 25 wherein a source node that transmits the communications is not aware that the virtual address is mapped to the another destination port.
45. The routing device of claim 25 wherein a virtual address is mapped to multiple destination ports and wherein communications are transmitted via each mapped-to destination port.
46. The routing device of claim 25 wherein the communication is a Fibre Channel frame.
47. The routing device of claim 25 wherein the communication is an InfiniBand Channel frame.
48. The routing device of claim 1 wherein the routing device is an . interconnect fabric module.
49. A method in a routing device for retrieving an identification of a destination port for data, the data being received through a source port and having an address, the method comprising: when a cache associated with the source port has an identification of a port associated with the address of the data, retrieving the identification of the port from the cache; and when a cache associated with the source port does not have the identification of a port associated with the address of the data and when a table shared by multiple ports including the source port has the identification of a port associated with the address of the data, retrieving of the identification of the port from the table.
50. The method of claim 49 including storing the identification of the port retrieved from the table in the cache associated with the source port.
51. The method of claim 49 wherein the cache and the table contain port maps that designate one or more ports.
52. The method of claim 49 where in the address of the data is a virtual address.
53. The method of claim 49 including: when a table shared by multiple ports including the source port does not have the identification of a port associated with the address of the data, retrieving the identification of the port from a source external to the routing device.
54. The method of claim 53 including storing the identification of the port retrieved from the source external to the routing device in the table.
55. The method of claim 49 wherein the table is shared by four ports.
56. The method of claim 49 wherein the table is shared by multiple ports.
57. The method of claim 49 wherein each port is associated with its own cache.
58. The method of claim 49 wherein the address is a portion of a Fibre Channel frame.
59. The method of claim 49 wherein the address is a portion of an InfiniBand frame.
60. The method of claim 49 wherein the table is a virtual address label table.
61. The method of claim 49 wherein the routing device is an interconnect fabric module.
62. The method of claim 49 wherein the routing device is Fibre Channel compatible.
63. The method of claim 49 wherein the routing device is InfiniBand compatible.
64. The method of claim 49 wherein the address is a domain address.
65. A routing device comprising: a shared collection of mappings of identifiers to destination ports of the routing device; and a plurality of source ports, each source port having a cache for storing mappings of identifiers to destination ports of the routing device; a component that retrieves an identification of a destination port from the cache when the cache has a mapping of an identifier associated with communication received at the source port to a destination port; and a component that retrieves an identification of a destination port from the shared collection when the cache does not have a mapping of the identifier associated with the communication received at the source port to a destination port.
66. The routing device of claim 65 wherein the component that retrieves the identification of a destination port from the collection stores the identification of the destination port retrieved from the collection in the cache.
67. The routing device of claim 65 wherein the cache and the collection contain port maps that designate one or more ports.
68. The routing device of claim 65 wherein the identifier of the communication is a virtual identifier.
69. The routing device of claim 65 including a component that retrieves the identification of the port from a source external to the routing device when the collection does not have a mapping destination port. from the identifier
70. The routing device of claim 69 wherein the component that retrieves the identification of the port from a source external to the routing device stores the identification of the destination port retrieved from the source external to the routing device in the collection.
71. The routing device of claim 65 wherein the collection is shared by multiple source ports.
72. The routing device of claim 65 wherein the identifier is a portion of a Fibre Channel frame.
73. The routing device of claim 65 wherein the identifier is a portion of an InfiniBand frame.
74. The routing device of claim 65 wherein the collection is a virtual identifier label table.
75. The routing device of claim 65 wherein the routing device is a switch.
76. The routing device of claim 65 wherein the routing device is an interconnect fabric module.
77. The routing device of claim 65 wherein the routing device is Fibre Channel compatible.
78. The routing device of claim 65 wherein the routing device is InfiniBand compatible.
79. The routing device of claim 65 wherein the address is a domain address.
80. The routing device of claim 65 wherein the address is part of a virtual identifier.
81. A method in a routing device for retrieving an identification of a destination port for a communication, the communication being received through a source port and having an identifier, the method comprising: when a cache has an identification of a port associated with the identifier of the communication, retrieving the identification of the port from the cache; and when the cache does not have the identification of a port associated with the identifier of the communication and when a mapping shared by multiple ports including the source port has the identification of a port associated with the identifier of the communication, retrieving of the identification of the port from the mapping.
82. The method of claim 81 including storing the identificatio n of the port retrieved from the mapping in the cache.
83. The method of claim 81 wherein the cache and the mapping contain port maps that designate one or more ports.
84. The method of claim 81 wherein the identifier of the communication is a virtual address.
85. The method of claim 81 including: when the mapping shared by multiple ports including the source port does not have the identification of a port associated with the address of the communication, retrieving the identification of the port from a source external to the routing device.
86. The method of claim 85 including storing the identification of the port retrieved from the source external to the routing device in the mapping.
87. The method of claim 81 wherein each port is associated with its ow n cache.
88. The method of claim 81 wherein the identifier is a portion of a Fibre Channel frame.
89. The method of claim 81 wherein the identifier is a portion of an InfiniBand frame.
90. The method of claim 81 wherein the mapping is a label table.
91. The method of claim 81 wherein the routing device is an interconnect fabric module.
92. The method of claim 81 wherein the identifier is a domain address.
93. A routing device comprising: means for mapping identifiers to destination ports in a shared collection; and means for mapping identifiers to destination ports in a cache collection for each of a plurality of ports; means for retrieving an identification of a destination port from the cache collection when the cache collection has a mapping of an identifier associated with a communication to a destination port; and means for retrieving an identification of a destination port from the shared collection when the cache collection does not have a mapping of the identifier associated with the communication to a destination port.
94. The routing device of claim 93 wherein the means for retrieving the identification of a destination port from the shared collection includes means for storing a mapping of the identifier to the retrieved identification of the destination port in the cache collection for the source port that received the communication.
95. The routing device of claim 93 wherein the cache collection and the shared collection contain port maps that designate one or more ports.
96. The routing device of claim 93 wherein the identifier of the communication is a virtual identifier.
97. The routing device of claim 93 including means for retrieving the identification of the port from a source external to the routing device when the shared collection does not have a mapping from the identifier of the communication to a destination port.
98. The routing device of claim 97 wherein the means for retrieving the identification of the port from a source external to the routing device stores the identification of the destination port retrieved from the source external to the routing device in the shared collection.
99. The routing device of claim 93 wherein the shared collection is shared by multiple source ports.
100. The routing device of claim 93 wherein the identif ier is a portion of a Fibre Channel frame.
101. The routing device of claim 93 wherein the identifier is a portion of an InfiniBand frame.
102. The routing device of claim 93 wherein the shared collection is a virtual identifier label table.
103. The routing device of claim 93 wherein the routing device is an interconnect fabric module.
104. The routing device of claim 93 wherein the identifier is a domain address.
105. The routing device of claim 93 wherein the identifier is part of a virtual identifier.
106. A method in a switch for buffering data received through a source port before transmitting the data through a destination port, the method comprising: receiving a first frame of data through the source port; storing the received first frame of data; receiving a second frame of data through the source port; storing the received second frame of data; selecting either the first frame or the second frame for transmitting through the destination port based on a priority score of the first frame and the second frame.
107. The method of claim 106 wherein the first and second frames are stored in a buffer that is used to store frames received only through the source port.
108. The method of claim 106 wherein the priority score of a frame is based on a priority associated with the frame.
109. The method of claim 106 wherein the priority score of a frame is based on a class of service of the frame.
110. The method of claim 106 wherein the priority score of a frame is based on latency of the frame.
111. The method of claim 106 wherein the first frame is stored in a first buffer and the second frame is stored in a second buffer and all frames of a connection are stored in the same buffer.
112. The method of claim 106 wherein the switch is an interconnect fabric module.
113. The method of claim 106 wherein the switch is Fibre Channel compatible.
114. The method of claim 106 wherein the switch is InfiniBand compatible.
115. The method of claim 106 wherein the second frame is received after the first frame and wherein the second frame is selected.
116. The method of claim 106 wherein a later received frame is selected before an earlier received frame.
117. A routing device comprising: a first buffer for storing a first frame received through a source port; a second buffer for storing a second frame received through the source port; and a component that selects either the first frame or the second frame for transmitting through a destination port based on a priority score of the first frame and the second frame.
118. The routing device of claim 117 wherein each source port of the routing device has a first and second buffer and a component that selects.
119. The routing device of claim 117 wherein the first and second buffer are used to store frames received only through the source port.
120. The routing device of claim 117 wherein the priority score of a frame is based on a priority associated with the frame.
121. The routing device of claim 117 wherein the priority score of a frame is based on a class of service of the frame.
122. The routing device of claim 117 wherein the priority score of a frame is based on latency of the frame.
123. The routing device of claim 117 wherein all frames of a connection are stored in the same buffer.
124. The routing device of claim 117 wherein the routing device is an interconnect fabric module.
125. The routing device of claim 117 wherein the routing device is Fibre Channel compatible.
126. The routing device of claim 117 wherein the routing device is InfiniBand compatible.
127. The routing device of claim 117 wherein the second frame is received after the first frame and the second frame is selected.
128. The routing device of claim 117 wherein a later received frame is selected before an earlier received frame.
129. The routing device of claim 117 wherein the routing device is a switch.
130. A routing device comprising: means for storing a first frame received at the routing device; means for storing a second frame received at the routing device; and means for selecting either the first frame or the second frame for transmitting based on a priority score of the first frame and the second frame.
131. The routing device of claim 130 wherein each source port of the routing device has a means for storing and a means for selecting.
132. The routing device of claim 130 wherein the means for storing are used to store frames received through only one source port.
133. The routing device of claim 130 wherein the priority score of a frame is based on a priority associated with the frame.
134. The routing device of claim 130 wherein the priority score of a frame is based on a class of service of the frame.
135. The routing device of claim 130 wherein the priority score of a frame is based on latency of the frame.
136. The routing device of claim 130 wherein all frames of a connection are stored by the same means for storing.
137. The routing device of claim 130 wherein the routing device is an interconnect fabric module.
138. The routing device of claim 130 wherein the routing device is Fibre Channel compatible.
139. The routing device of claim 130 wherein the routing device is InfiniBand compatible.
140. The routing device of claim 130 wherein the second frame is received after the first frame and the second frame is selected by the means for selecting.
141. The routing device of claim 130 wherein a later received frame is selected before an earlier received frame by the means for selecting.
142. The routing device of claim 130 wherein the routing device is a switch.
143. A method in a routing device for identifying a destination port for data, the method comprising: comparing a domain address associated with the data with a domain address associated with the routing device; when the domain address associated with the data does not match the domain address associated with the routing device, identifying a port based on the domain address associated with the data; and when the domain address associated with the data matches the domain address associated with the routing device, identifying a port based on a virtual address associated with the data wherein the identified port is the destination port for the data.
144. The method of claim 143 wherein the identifying of the port based on the domain address associated with the data includes using the domain address to index a domain address table to retrieve an identification of the port.
145. The method of claim 144 wherein each entry of the domain address table contains a port map that designates one or more of the ports of the routing device.
146. The method of claim 145 wherein the identifying of a port based on the domain address associated with the data identifies each of the ports designated by a retrieved port map.
147. The method of claim 143 wherein the identifying of the port based on the virtual address associated with the data includes using the virtual address to index a virtual address table to retrieve an identification of the port.
148. The method of claim 147 wherein each entry of the virtual address table contains a port map that designates one or more of the ports of the routing device.
149. The method of claim 148 wherein the identifying of a port based on the virtual address associated with the data identifies each of the ports designated in a retrieved port map.
150. The method of claim 143 wherein the domain address and virtual address of the data form a virtual identifier.
151. The method of claim 143 wherein the data is a Fibre Channel frame.
152. The method of claim 143 wherein the data is an InfiniBand Channel frame.
153. The method of claim 143 wherein each port of the routing device has its own virtual address table and the virtual address table of the port through which the data is received is used to identify the port.
154. The method of claim 143 wherein the routing device is an interconnect fabric module.
155. The method of claim 143 including transmitting the data through the identified port.
156. The method of claim 143 wherein the routing device is Fibre Channel compatible.
157. The method of claim 143 wherein the routing device is InfiniBand compatible.
158. The method of claim 143 wherein a port identified using the domain address associated with the data is a port through which the data can be sent to a routing device with a domain address that matches the domain address of the data.
159. The method of claim 143 wherein the routing device is a switch.
160. A routing device comprising: a component that compares a domain address associated with data to be forwarded through the routing device with a domain address associated with the routing device; a component that, when the domain address associated with the data does not match the domain address associated with the routing device, identifies a port based on the domain address associated with the data; a component that, when the domain address associated with the data matches the domain address associated with the routing device, identifies a port based on a virtual address associated with the data; and a component that forwards the data through the identified port.
161. The routing device of claim 160 including a domain address table with a mapping of domain addresses to destination ports and wherein the component that identifies the port based on the domain address associated with the data uses the domain address to retrieve an identification of the port from the domain address table.
162. The routing device of claim 161 wherein each entry of the domain address table contains a port map that designates one or more of the ports of the routing device.
163. The routing device of claim 162 wherein the component that identifies a port based on the domain address associated with the data identifies each of the ports designated by a retrieved port map.
164. The routing device of claim 160 including a virtual address table that maps virtual addresses to ports and wherein the component that identifies the port based on the virtual address associated with the data uses the virtual address to retrieve an identification of the port from the virtual address table.
165. The routing device of claim 164 wherein each entry of the virtual address table contains a port map that designates one or more of the ports of the routing device.
166. The routing device of claim 165 wherein the component that identifies a port based on the virtual address associated with the data identifies each of the ports designated in a retrieved port map.
167. The routing device of claim 160 wherein the domain address and virtual address of the data form a virtual identifier.
168. The routing device of claim 160 wherein the data is a Fibre Channel frame.
169. The routing device of claim 160 wherein the data is an InfiniBand frame.
170. The routing device of claim 160 wherein each port of the routing device has its own virtual address table and the virtual address table of the port through which the data is received is used to identify the port.
171. The routing device of claim 160 wherein the routing device is an interconnect fabric module.
172. The routing device of claim 160 wherein the routing device is a switch.
173. The routing device of claim 160 wherein the routing device is Fibre Channel compatible.
174. The routing device of claim 160 wherein the routing device is InfiniBand compatible.
175. The routing device of claim 160 wherein a port identified using the domain address associated with the data is a port through which the data can be sent to a routing device with a domain address that matches the domain address of the data.
176. A storage medium containing a virtual identifier for a communication, the virtual identifier comprising: a virtual address; and a domain address wherein the domain address is used to route the communication when a routing device has a domain address that does not match the domain address of the virtual identifier and wherein the virtual address is used to route the communication when the routing device does not have a domain address that matches the domain address of the virtual identifier.
177. The storage medium of claim 176 wherein the storage medium is a data transmission medium.
178. The storage medium of claim 176 wherein the virtual identifier is a destination identifier.
179. The storage medium of claim 176 wherein the virtual identifier is a source identifier.
180. The storage medium of claim 176 wherein the virtual identifier is part of a frame.
181. The storage medium of claim 180 wherein the frame is Fibre Channel compatible.
182. The storage medium of claim 180 wherein the frame is InfiniBand compatible.
183. A method in a network of routing devices for routing communications, the method comprising: receiving a communication at the network, the communication having a virtual identifier with a domain address and a virtual address that identifies a destination; routing the received communication to the destination in accordance with the domain address when the domain address of the received communications does not match the domain address of a routing device; and routing the received communication to the destination in accordance with the virtual address when the domain address of the received communications does not match the domain address of a routing device.
184. The method of claim 183 wherein the network comprising a collection of routing devices, each routing device being assigned to a domain with a domain address.
185. The method of claim 183 wherein the network is a Fibre Channel network.
186. The method of claim 183 wherein the network is an InfiniBand network.
187. The method of claim 183 wherein the routing devices are interconnect fabric modules.
188. The method of claim 183 wherein a routing device has a domain address table that maps domain addresses to ports of the routing device.
189. The method of claim 188 wherein each port has its own domain address table.
190. The method of claim 183 wherein a routing device has a virtual address table that maps virtual addresses to ports of the routing device.
191. The method of claim 190 wherein each port has its own virtual address table.
192. A routing device comprising: means for identifying a port based on a domain address associated with a communication when the domain address associated with the communication does not match a domain address associated with the routing device; means for identifying a port based on a virtual address associated with the communication when the domain address associated with the communication matches the domain address associated with the routing device; and means for forwarding the communication via the identified port.
193. The routing device of claim 192 including means for mapping domain addresses to ports and wherein the means for identifying a port based on the domain address associated with the communication uses the domain address to retrieve an identification of the port from the mapping.
194. The routing device of claim 193 wherein each mapping includes a port map that designates one or more of the ports of the routing device.
195. The routing device of claim 194 wherein the means for identifying a port based on the domain address associated with the communication identifies each of the ports designated by a port map.
196. The routing device of claim 192 including means for mapping virtual addresses to ports and wherein the means for identifying the port based on the virtual address associated with the communication uses the virtual address to retrieve an identification of the port from the mapping.
197. The routing device of claim 196 wherein each mapping includes a port map that designates one or more of the ports of the routing device.
198. The routing device of claim 197 wherein the means for identifying a port based on the virtual address associated with the communication identifies each of the ports designated in a port map.
199. The routing device of claim 192 wherein the domain address and virtual address of the communication form a virtual identifier.
200. A method in a switch for selecting a destination port for data, the destination port being connected by a link to a port of another switch, the method comprising: providing a designation that a first port and second port are equivalent; receiving data that designates that the first port is to be the destination port for the received data; and when the first port is currently unavailable, selecting the second port as the destination port for the received data based on the provided designation that the first port and the second port are equivalent.
201. The method of claim 200 wherein the provided designation is stored in a table with an entry for ports of the switch.
202. The method of claim 201 wherein an entry for the first port designates that the second port is equivalent to the first port.
203. The method of claim 201 wherein an entry for the second port designates that the first port is equivalent to the second port.
204. The method of claim 200 wherein a port can be equivalent to multiple other ports.
205. The method of claim 204 wherein the multiple ports have associated priorities and the second port is selected as the destination port when it has a priority that is higher than another of the multiple ports that are available.
206. The method of claim 200 wherein the received data designates the first port to be the destination port based on a mapping of a virtual address of the received data to the first port.
207. The method of claim 200 wherein the provided designations is provided by a source external to the switch.
208. The method of claim 200 wherein the provided designation is dynamically updated by a source external to the switch.
209. The method of claim 200 wherein the switch is part of an interconnect fabric.
210. The method of claim 200 wherein the switch is Fibre Channel compatible.
211. The method of claim 200 wherein the switch is InfiniBand compatible.
212. The method of claim 200 wherein the data is a Fibre Channel frame.
213. A routing device comprising: a designation that a first port and second port are equivalent; a component that receives a communication that designates that the first port is to be the destination port for the received communication; and a component that selects the second port as the destination port for the received communication based on the designation when the first port is currently unavailable.
214. The routing device of claim 213 wherein the designation is a table with an entry for source ports of the routing device.
215. The routing device of claim 214 wherein an entry for the first port designates that the second port is equivalent to the first port.
216. The routing device of claim 214 wherein an entry for the second port designates that the first port is equivalent to the second port.
217. The routing device of claim 213 wherein a port can be equivalent to multiple other ports.
218. The routing device of claim 217 wherein the multiple ports have associated priorities and the second port is selected as the destination port when it has a priority that is higher than another of the multiple ports that are available.
219. The routing device of claim 217 wherein the component that selects the second port selects the second port from one of the multiple other ports that is available.
220. The routing device of claim 213 wherein the received communication designates the first port to be the destination port based on a mapping of a virtual address of the received communication to the first port.
221. The routing device of claim 213 wherein the designation is provided by a source external to the routing device.
222. The routing device of claim 213 wherein the designation is dynamically updated by a source external to the routing device.
223. The routing device of claim 213 wherein the routing device is part of an interconnect fabric.
224. The routing device of claim 213 wherein the routing device is Fibre Channel compatible.
225. The routing device of claim 213 wherein the routing device is InfiniBand compatible.
226. A routing device comprising: means for designating that a first port and second port are equivalent; means for receiving a communication that designates that the first port is to be the destination port for the received communication; and means for selecting the second port as the destination port for the received communication based on the designation that the first port and the second port are equivalent when the first port is currently unavailable.
227. The routing device of claim 226 wherein the means for designating is a mapping for source ports of the routing device.
228. The routing device of claim 227 wherein a mapping for the first port designates that the second port is equivalent to the first port.
229. The routing device of claim 227 wherein a mapping for the second port designates that the first port is equivalent to the second port.
230. The routing device of claim 226 wherein a port can be equivalent to multiple other ports.
231. The routing device of claim 230 wherein the multiple ports have associated priorities and the second port is selected as the destination port when it has a priority that is higher than another of the multiple ports that are available.
232. The routing device of claim 230 wherein the means for selecting the second port selects the second port from one of the multiple other ports that is available.
233. The routing device of claim 226 wherein the received communication designates the first port to be the destination port based on a mapping of a virtual address of the received communication to the first port.
234. The routing device of claim 226 wherein the means for designating is provided a designation by a source external to the routing device.
235. The routing device of claim 226 wherein means for designating receives a dynamic update from a source external to the routing device.
236. The routing device of claim 226 wherein the routing device is part of an interconnect fabric.
237. The routing device of claim 226 wherein the routing device is Fibre Channel compatible.
238. The routing device of claim 226 wherein the routing device is InfiniBand compatible.
239. A method in a switch for avoiding a deadlock while a connection is being established through the switch, the method comprising: receiving data at a port, the data indicating that the port is to be part of a conflicting connection established through the switch; and when the port is already part of a current connection that is being established, when the current connection has a higher priority than the conflicting connection, maintaining the current connection; and when the current connection does not have a higher priority than the conflicting connection, establishing part of the conflicting connection through the port.
240. The method of claim 239 wherein the priority of a connection is based on priority of data to be transmitted through the connection.
241. The method of claim 239 wherein when the current connection has the same priority as the conflicting connection, using an identifier of the switch and a device that sent the data as a priority tiebreaker.
242. The method of claim 239 wherein the establishing of part of the conflicting connection through the port includes sending data through the partially built current connection indicating that the current connection cannot be established.
243. The method of claim 239 wherein the establishing of the conflicting connection includes attempting to establish the current connection through another port of the switch.
244. The method of claim 239 wherein the data is a start-of-connection frame.
245. The method of claim 239 wherein the switch is Fibre Channel compatible.
246. The method of claim 239 wherein the switch is InfiniBand compatible.
247. A device comprising: a component that establishes an existing connection through a port; a component that receives a communication at the port, the communication indicating that the port is to be part of a conflicting connection established through the device; and a component that maintains the existing connection when the existing connection has a higher priority than the conflicting connection and that terminates the existing connection when the conflicting connection has a higher priority than the existing connection.
248. The device of claim 247 wherein the priority of a connection is based on priority of the communication to be transmitted through the connection.
249. The device of claim 247 wherein when the existing connection has the same priority as the conflicting connection, an identifier of the device and another device that sent the communication is used as a priority tiebreaker.
250. The device of claim 247 including a component that sends a communication through the existing connection indicating that the existing connection cannot be established.
251. The device of claim 247 including a component that attempts to establish the existing connection through another port of the device when the conflicting connection has a higher priority.
252. The device of claim 247 wherein the communication is a start-of- connection frame.
253. The device of claim 247 wherein the device is Fibre Channel compatible.
254. The device of claim 247 wherein the device is InfiniBand compatible.
255. The device of claim 247 wherein the device is a routing device.
256. The device of claim 247 wherein the device is a switch.
257. The device of claim 247 wherein the device is a node.
258. A method in a routing device for avoiding a deadlock while a connection is being established through the routing device, the method comprising: receiving a communication at the routing device, the communication indicating that the port is to be part of a new connection to be established through the routing device; and when the routing device is already part of a current connection that is being established, terminating the current connection and establishing part of the new connection through the routing device.
259. The method of claim 258 wherein the current connection is terminated and the new connection is established when the new connection has a higher priority.
260. The method of claim 259 wherein the priority of a connection is based on priority of communications to be transmitted through the connection.
261. The method of claim 259 wherein when the current connection has the same priority as the new connection, using an identifier of the routing device and an other device that sent the communication as a priority tiebreaker.
262. The method of claim 258 wherein the establishing of part of the new connection includes sending communications through a partially built current connection indicating that the current connection cannot be established.
263. The method of claim 258 wherein the establishing of the new connection includes attempting to establish the current connection through another port of the switch.
264. The method of claim 258 wherein the communication is a start-of- connection frame.
265. The method of claim 258 wherein the routing device is Fibre Channel compatible.
266. The method of claim 258 wherein the routing device is InfiniBand compatible.
267. The method of claim 258 wherein the routing device has ports and a conflict occurs when the current connection and the new connection are to use the same conflicting port.
268. The method of claim 267 including selecting an equivalent port for the conflicting port and establishing the new connection through the selected equivalent port.
269. The method of claim 258 wherein the routing device is an interconnect fabric module.
270. A device comprising: means for receiving a communication at a port, that port having an existing connection that is partially built, the communication indicating that the port is to be part of a new connection; means for maintaining the existing connection when the existing connection has a higher priority than the new connection; and means for terminating the existing connection when the new connection has a higher priority than the existing connection.
271. The device of claim 270 wherein the priority of a connection is based on priority of the communication to be transmitted through the connection.
272. The device of claim 270 wherein when the existing connection has the same priority as the new connection, an identifier of the device and another device that sent the communication is used as a priority tiebreaker.
273. The device of claim 270 including means for sending a communication through the existing connection indicating that the existing connection cannot be established.
274. The device of claim 270 including means for attempting to establish the existing connection through another port of the device.
275. The device of claim 270 wherein the communication is a start-of- connection frame.
276. The device of claim 270 wherein the device is Fibre Channel compatible.
277. The device of claim 270 wherein the device is InfiniBand compatible.
278. The device of claim 270 wherein the device is a routing device.
279. The device of claim 270 wherein the device is a switch.
280. A method in a switch for establishing a connection through the switch, the method comprising: receiving data at a source port of the switch, the data indicating that the switch is to be part of a new connection to be established through the switch; and when an existing connection conflicts with the new connection and the received data indicates to preempt, when the existing connection has a higher priority than the new connection, maintaining the connection; and when the existing connection does not have a higher priority than the new connection, establishing part of the new connection through the source port and a port previously used by the existing connection.
281. The method of claim 280 including before establishing part of the new connection, terminating the existing connection.
282. The method of claim 280 including before establishing part of the new connection, routing the existing connection through a different port of the switch.
283. The method of claim 280 including determining the priority of a connection based on a priority associated with the data to be sent through the connection.
284. The method of claim 283 wherein when the priorities of the data are the same using a device identifier as a tiebreaker.
285. The method of claim 280 wherein the received data indicates to preempt when a preempt flag is set.
286. The method of claim 280 wherein the data is a start-of-connection frame with a preempt flag being set.
287. The method of claim 286 wherein the start-of-connection frame indicates the priority.
288. The method of claim 280 wherein the switch is Fibre Channel compatible.
289. The method of claim 280 wherein the switch is InfiniBand compatible.
290. The method of claim 280 wherein the switch is an interconnect fabric module.
291. The method of claim 280 wherein the source port is not a port used by the existing connection.
292. The method of claim 280 wherein the existing connection is completely built.
293. A routing device comprising: a component that receives a communication indicating that the routing device is to be part of a new connection to be established that conflicts with an existing connection through the routing device; and a component that maintains the existing connection when the existing connection has a higher priority than the new connection and that establishes part of the new connection through a port previously used by the existing connection when the existing connection does not have a higher priority and the new connection indicates to preempt.
294. The routing device of claim 293 including a component that terminates the existing connection when the existing connection does not have a higher priority and the new connection indicates to preempt.
295. The routing device of claim 293 wherein the priority of a connection is based on a priority associated with the communications of the connection.
296. The routing device of claim 295 wherein when the priorities of the communications are the same, using a device identifier as a tiebreaker.
297. The routing device of claim 293 wherein the received communication indicates to preempt when a preempt flag is set.
298. The routing device of claim 293 wherein the routing device is Fibre Channel compatible.
299. The routing device of claim 293 wherein the routing device is InfiniBand compatible.
300. The routing device of claim 293 wherein the routing device is an interconnect fabric module.
301. The routing device of claim 293 wherein the communications is received via a source port is not a port used by the existing connection.
302. The routing device of claim 293 wherein the existing connection is completely built.
303. A method in a routing device for preempting an existing connection with a new connection, the method comprising: receiving a communication at a source port of the routing device, the communication indicating that the routing device is to be part of the new connection to be established through the routing device; and when the existing connection conflicts with the new connection and the received communication indicates to preempt, terminating the existing connection and establishing the new connection through the source port and a port previously used by the existing connection.
304. The method of claim 303 including when before establishing part of the new connection, re-establishing the existing connection through a different port of the routing device.
305. The method of claim 303 including maintaining the existing connection when it has a higher priority than the new connection.
306. The method of claim 303 including determining a priority of a connection based on a priority associated with the communication to be sent through the connection.
307. The method of claim 306 wherein when the priorities of the communications are the same using a device identifier as a tiebreaker.
308. The method of claim 303 wherein the received communication indicates to preempt when a preempt flag is set.
309. The method of claim 303 wherein the communication is a start-of- connection frame with a preempt flag being set.
310. The method of claim 303 wherein the routing device is Fibre Channel compatible.
311. The method of claim 303 wherein the routing device is InfiniBand compatible.
312. The method of claim 303 wherein the routing device is an interconnect fabric module.
313. The method of claim 303 wherein the source port is not a port used by the existing connection.
314. The method of claim 303 wherein the existing connection is completely built.
315. A routing device comprising: means for receiving a communication indicating that the routing device is to be part of a new connection to be established that conflicts with an existing connection through the routing device; and means for establishing the new connection through a port previously used by the existing connection when the communication indicates to preempt.
316. The routing device of claim 315 including means for terminating the existing connection when the communication indicates to preempt.
317. The routing device of claim 315 including means for maintaining the existing connection when the existing connection has a higher priority than the new connection.
318. The routing device of claim 317 wherein the priority of a connection is based on a priority associated with the communications of the connection.
319. The routing device of claim 318 wherein when the priorities of the communications are the same, using a device identifier as a tiebreaker.
320. The routing device of claim 315 wherein the received communication indicates to preempt when a preempt flag is set.
321. The routing device of claim 315 wherein the routing device is Fibre Channel compatible.
322. The routing device of claim 315 wherein the routing device is InfiniBand compatible.
323. The routing device of claim 315 wherein the routing device is an interconnect fabric module.
324. The routing device of claim 315 wherein the communications is received via a source port is not a port used by the existing connection.
325. The routing device of claim 315 wherein the existing connection is completely built.
326. A method in a switch for multicasting data whose delivery is not guaranteed, the method comprising: receiving data to be multicasted; storing the received data in a buffer; identifying destination ports through which the received data is to be transmitted; and repeating determining the destination ports that are currently available and through which the data has not already been transmitted and transmitting the data through the determined destination ports until the data has been transmitted through all the destination ports or until the data has timed out at the switch.
327. The method of claim 326 wherein each port of the switch has its own buffer.
328. The method of claim 326 wherein the data indicates that the data is to be multicasted without acknowledgement.
329. The method of claim 326 wherein the data indicates a Fibre Channel class 3 data.
330. The method of claim 326 wherein the switch is InfiniBand compatible.
331. The method of claim 326 wherein the switch is Fibre Channel compatible.
332. The method of claim 326 wherein the switch is an interconnect fabric module.
333. The method of claim 326 wherein the identifying of destination ports includes using a virtual address and a label table that maps virtual addresses to destination ports.
334. The method of claim 326 including when it is determined that a destination port is not available, determining whether an equivalent port is available.
335. A routing device that receives a communication to be multicasted to destinations, that stores the communication in a buffer, that identifies destination ports through which the received communication is to be transmitted to the destinations, and that transmits the communication to the identified destination ports as the destination ports become available until the communication has been transmitted through all the destination ports.
336. The routing device of claim 335 wherein the transmitting of the communication to the identified destination ports as the destination ports become available continues until a criterion is satisfied.
337. The routing device of claim 336 wherein the criterion is a time out.
338. The routing device of claim 336 wherein the criterion is the buffer is needed to store another communication.
339. The routing device of claim 335 wherein the communication is received via a port and each port of the routing device has its own buffer.
340. The routing device of claim 335 wherein the communication indicates that the communication is to be multicasted without acknowledgement.
341. The routing device of claim 335 wherein the communication indicates a Fibre Channel class 3 communication.
342. The routing device of claim 335 wherein the routing device is Fibre Channel compatible.
343. The routing device of claim 335 wherein the routing device is InfiniBand compatible.
344. The routing device of claim 335 wherein the routing device is a switch.
345. The routing device of claim 335 wherein the routing device is an interconnect fabric module.
346. The routing device of claim 335 wherein the communication includes a virtual address and the routing device includes a label table that maps the virtual address to destination ports.
347. The routing device of claim 335 that identifies an equivalent destination port when the identified destination port is not available.
348. A method in a routing device for multicasting a communication, the method comprising: receiving the communication; and transmitting the received communications through destination ports of the routing device as they become available until a criteria indicates to stop transmitting the communications.
349. The method of claim 348 wherein the transmitting includes determining the destination ports that are currently available and through which the communication has not already been transmitted and transmitting the communication through the determined destination ports.
350. The method of claim 348 wherein the criteria is a time out.
351. The method of claim 348 wherein the communication is not guaranteed to be delivered to all destinations.
352. The method of claim 348 including storing the communication in a buffer.
353. The method of claim 348 wherein the communication indicates that the communication is to be multicasted without acknowledgement.
354. The method of claim 348 wherein the communication indicates a Fibre Channel class 3 communication.
355. The method of claim 348 wherein the routing device is InfiniBand compatible.
356. The method of claim 348 wherein the routing device is Fibre Channel compatible.
357. The method of claim 348 wherein the routing device is an interconnect fabric module.
358. The method of claim 348 including identifying destination ports using a virtual address and a label table that maps virtual addresses to destination ports.
359. The method of claim 348 including determining whether a destination port is available and when it is determined that a destination port is not available, determining whether an equivalent port is available.
360. A routing device comprising: means for receiving a communication to be multicasted to destinations; means for storing stores the communication in a buffer; means for identifying destination ports through which the received communication is to be transmitted to the destinations; and means for transmitting the communication to the identified destination ports as the destination ports become available until a criterion has been satisfied.
361. The routing device of claim 360 wherein the criterion is transmitting of the communications to all of the identified destination ports.
362. The routing device of claim 360 wherein the criterion is a time out.
363. The routing device of claim 360 wherein the criterion is the buffer is needed to store another communication.
364. The routing device of claim 360 wherein the communication is received via a port and each port of the routing device has its own buffer.
365. The routing device of claim 360 wherein the communication indicates that the communication is to be multicasted without acknowledgement.
366. The routing device of claim 360 wherein the communication indicates a Fibre Channel class 3 communication.
367. The routing device of claim 360 wherein the routing device is Fibre Channel compatible.
368. The routing device of claim 360 wherein the routing device is InfiniBand compatible.
369. The routing device of claim 360 wherein the routing device is an interconnect fabric module.
370. The routing device of claim 360 wherein the communication includes a virtual address and the routing device includes means for mapping the virtual address to destination ports.
371. The routing device of claim 360 includes means for identifying an equivalent destination port when the identified destination port is not available.
372. A method in a switch having ports connected to a crosspoint switch of the switch, the crosspoint switch having inputs and outputs connected to the ports, the crosspoint switch for connecting one port to another port, the crosspoint switch having at least one output that is not connected to a port, the method comprising: providing a reserved address; receiving data through a source port, the received data having an address; and when the address of the received data matches the provided reserved address, directing the crosspoint switch to connect the source port to the output that is not connected to a port so that data addressed to the reserved address is routed to the output not connected to a port.
373. The method of claim 372 wherein the output not connected to a port is connected to a device that is external to the switch.
374. The method of claim 372 wherein the reserved address identifies that the received data is related to an upper layer protocol.
375. The method of claim 374 wherein the upper layer protocol is a Fibre Channel upper layer protocol.
376. The method of claim 374 wherein the upper layer protocol is an InfiniBand upper layer protocol.
377. The method of claim 372 wherein the reserved address identified that the received data is administrative data.
378. The method of claim 372 wherein the crosspoint switch has at least one more output than the number of ports of the switch.
379. The method of claim 372 wherein the switch is Fibre Channel compatible.
380. The method of claim 372 wherein the data is a frame.
381. The method of claim 372 wherein the address of the received data is a virtual address.
382. A routing device comprising: a plurality of ports; a switch having switch ports connected to the ports and having at least one switch port that is not connected to a port; a component that receives communications at a source port; a component that directs connecting of the source port to the switch port that is not connected to a port based on an indication that a communications is administrative; and a component that transmits the communication from the source port to the switch port that is not connected to a port.
383. The routing device of claim 382 wherein the switch port that is not connected to a port is connected to a device that is external to the routing device.
384. The routing device of claim 383 wherein the device that is external to the routing device hosts a network manager for controlling a network of routing devices.
385. The routing device of claim 382 wherein the indication that the communications is administrative is a reserved address of the communications.
386. The routing device of claim 382 wherein the switch port that is not connected to a port is connected to a device that provides a Fibre Channel upper layer protocol.
387. The routing device of claim 382 wherein the switch port that is not connected to a port is connected to a device that provides an InfiniBand upper layer protocol.
388. The routing device of claim 382 wherein the switch has at least one more switch port than the number of ports of the routing device.
389. The routing device of claim 382 wherein the routing device is Fibre Channel compatible.
390. The routing device of claim 382 wherein the routing device is InfiniBand compatible.
391. The routing device of claim 382 wherein the communications is a frame.
392. The routing device of claim 382 wherein the indication that the communication is administrative includes a virtual address.
393. A method in a routing device having routing device ports connected to a crosspoint switch of the switch, the crosspoint switch having switch ports connected to the routing device ports, the method comprising: receiving a communication through a source routing device port; and when the received communication indicates that it is administrative, directing the crosspoint switch to connect the source routing device port to a switch port connected to a device for processing administrative communications.
394. The method of claim 393 wherein the switch port that is connected to the device for processing administrative communications is not connected to a routing device port.
395. The method of claim 394 wherein in device includes a network manager.
396. The method of claim 393 wherein the switch port that is not connected to a routing device port is connected to a device that is external to the routing device.
397. The method of claim 393 wherein the communication indicates that it is to be process by an upper layer protocol.
398. The method of claim 397 wherein the upper layer protocol is a Fibre Channel upper layer protocol.
399. The method of claim 397 wherein the upper layer protocol is an InfiniBand upper layer protocol.
400. The method of claim 393 wherein the crosspoint switch has at least one more switch port than the number of routing device ports.
401. The method of claim 393 wherein the routing device is Fibre Channel compatible.
402. The method of claim 393 wherein the routing device is InfiniBand compatible.
403. The method of claim 393 wherein the communication is a frame.
404. The method of claim 393 wherein the communication includes a virtual address designating that the communication is administrative.
405. A routing device comprising: a plurality of routing device ports; switching means for connecting a switch port to another switch port, each routing device port being connected to switch port; an administrative port connected to a switch port; means for configuring the switch means to connect a switch port connected to a source routing device port that has received an administrative communication; and means for transmits the administrative communication from the source routing device port to the switch port that is connected to the administrative port.
406. The routing device of claim 405 wherein the administrative port is connected to an administrative device.
407. The routing device of claim 406 wherein the administrative device hosts a network manager for a network of routing devices.
408. The routing device of claim 405 wherein the administrative port is connected to an administrative device that is external to the routing device.
409. The routing device of claim 408 wherein the administrative device hosts a network manager for controlling a network of routing devices.
410. The routing device of claim 405 wherein a communication is indicated as being administrative by a reserved address of the communication.
411. The routing device of claim 405 wherein the switch port that is connected to an administrative port is connected to a device that provides a Fibre Channel upper layer protocol.
412. The routing device of claim 405 wherein the switch port that is connected to an administrative port is connected to a device that provides an InfiniBand upper layer protocol.
413. The routing device of claim 405 wherein the switching means has at least one more switch port than the number of routing device ports.
414. The routing device of claim 405 wherein the routing device is Fibre Channel compatible.
415. The routing device of claim 405 wherein the routing device is InfiniBand compatible.
416. The routing device of claim 405 wherein the communications is a frame.
417. The routing device of claim 405 wherein a virtual address indicates that the communication is administrative.
418. A method in a switch for controlling access to a network, the method comprising: for each node connected to the switch, receiving from a network manager addresses to which the node is authorized to transmit a communication; receiving a communication from a node, the communication having a destination address; determining based on the received addresses whether the node that transmitted the communication is authorized to transmit a communication to the destination address; and when it is determined that the node is not authorized, suppressing the transmitting of the received communication through the network.
419. The method of claim 418 wherein the address is a virtual address.
420. The method of claim 418 wherein the switch has multiple ports, wherein each port is connected to a node, and wherein each port has access to the received addresses to which the connected-to node is authorized to transmit a communication.
421. The method of claim 418 including storing the received addresses in a label table associated with a port of the switch that is connected to the node.
422. The method of claim 418 including notifying the network manager that the node is not authorized to transmit received communications.
423. The method of claim 418 including indicating that the node is no longer authorized to transmit any communication.
424. The method of claim 423 wherein received addresses are stored in association with the node and the indicating includes removing the association of an address with the node.
425. The method of claim 423 wherein the indicating that the node is no longer authorized to transmit to the address occurs in response to an indication from the network manager that the node is no longer authorized to transmit to the address.
426. The method of claim 423 wherein the indicating that the node is no longer authorized to transmit to the address occurs in response to expiration of a timeout period.
427. The method of claim 423 wherein the indicating that the node is no longer authorized to transmit to the address occurs in response to detecting a condition in a physical layer of a link to between the switch and the node.
428. The method of claim 418 wherein an address is received from the network manager during registration of the node.
429. The method of claim 418 including when it is determined that the node is authorized, transmitting the received communication to the destination address.
430. The method of claim 418 wherein the receiving includes receiving a filter parameter that indicates valid data of a communication from the node.
431. The method of claim 430 including when the received communication does not satisfy a filter parameter, discarding the received communication.
432. The method of claim 431 wherein the filter parameter is priority.
433. The method of claim 431 wherein the filter parameter is class of service.
434. A method in a routing device for controlling access to a network, the method comprising: receiving a filter for a node, the filter indicating a valid parameter for a communication transmitted by the node through the network; receiving a communication from the node, the communication having a parameter; determining whether the parameter of the received communication is valid based on the received filter; and when it is determined that parameter of the received communication is not valid, suppressing the transmitting of the received communication.
435. The method of claim 434 wherein the parameter is a virtual address and the filter indicates one or more virtual addresses that can be validly used in a communication transmitted by the node.
436. The method of claim 434 wherein the parameter relates to priority of a communication and the filter indicates a priority that can be validly used in a communication transmitted by the node.
437. The method of claim 434 wherein the parameter relates to class of service of a communication and the filter indicates a class of service that can be validly used in a communication transmitted by the node.
438. The method of claim 434 wherein the routing device has multiple ports, wherein each port is connected to a node, and wherein each port has access to a received filter for the connected-to node.
439. The method of claim 434 wherein the received filter is associated with a destination address assigned to the node and wherein the filter is applied to communications transmitted by the node that have that destination address.
440. The method of claim 434 including notifying a network manager when the transmitting of a communication is suppressed.
441. The method of claim 434 wherein the filter is received from a network manager.
442. The method of claim 434 wherein the filter is received from the network manager based on registration of the node.
443. The method of claim 434 wherein the routing device is a switch.
444. The method of claim 434 wherein the routing device is Fibre Channel compatible.
445. The method of claim 434 wherein the routing device is InfiniBand compatible.
446. A routing device for controlling access to a network, comprising: a component having a filter for a node, the filter indicating valid parameters for communications transmitted by the node through the network; a component that receives communications from the node, the communications having parameters; a component that applies the filter to the communications to determining whether the parameters of the received communications are valid; and a component that discards a received communication when it is determined that a parameter of the received communication is not valid.
447. The routing device of claim 446 wherein a parameter is a virtual address and the filter indicates one or more virtual addresses that can be validly used in a communication transmitted by the node.
448. The routing device of claim 446 wherein a parameter relates to priority of a communication and the filter indicates a priority that can be validly used in a communication transmitted by the node.
449. The routing device of claim 446 wherein a parameter relates to class of service of a communication and the filter indicates a class of service that can be validly used in a communication transmitted by the node.
450. The routing device of claim 446 wherein the routing device has multiple ports connected to nodes and wherein each port has access to a filter for the connected-to node.
451. The routing device of claim 446 wherein the filter is associated with a destination address assigned to the node and wherein the filter is applied to communications transmitted by the node that have that destination address.
452. The routing device of claim 446 including notifying a network manager when a communication is discarded.
453. The routing device of claim 446 wherein the filter is received from a network manager.
454. The routing device of claim 453 wherein the filter is received from the network manager during registration of the node.
455. The routing device of claim 446 including a component that indicates that the node is not allowed to transmit any communications when it is determined that the parameter of a received communication is not valid.
456. The routing device of claim 446 including when it is determined that the parameter of the received communication is not valid, indicating that the node is not allowed to transmit communications to a destination address associated with the received communication.
457. The routing device of claim 446 including a component that transmits a received communication when it is determined that the parameters of the received communication are valid.
458. The routing device of claim 446 including a component that modifies the filter so that the modified filter is applied to subsequent communications received from the node.
459. The routing device of claim 446 wherein the routing device is a switch.
460. The routing device of claim 446 wherein the routing device is Fibre Channel compatible.
461. The routing device of claim 446 wherein the routing device is InfiniBand compatible.
462. A routing device for controlling access to a network, comprising: means for applying a filter to communications received from a node to determining whether parameters of the communications are valid; and means for discarding a communication when it is determined that a parameter of the communication is not valid.
463. The routing device of claim 462 wherein a parameter is a virtual address and the filter indicates one or more virtual addresses that can be validly used in a communication transmitted by the node.
464. The routing device of claim 462 wherein a parameter relates to priority of a communication and the filter indicates a priority that can be validly used in a communication transmitted by the node.
465. The routing device of claim 462 wherein a parameter relates to class of service of a communication and the filter indicates a class of service that can be validly used in a communication transmitted by the node.
466. The routing device of claim 462 wherein the routing device has multiple ports connected to nodes and wherein each port has access to a filter for the connected-to node.
467. The routing device of claim 462 wherein the filter is associated with a destination address assigned to the node and wherein the means for applying the filter applies it to communications transmitted by the node that have that destination address.
468. The routing device of claim 462 including a component that transmits a received communication when it is determined that the parameters of the received communication are valid.
469. The routing device of claim 462 wherein the routing device is a switch.
470. The routing device of claim 462 wherein the routing device is Fibre Channel compatible.
471. The routing device of claim 462 wherein the routing device is InfiniBand compatible.
472. The routing device of claim 462 includes means for receiving a filter from a network manager.
473. The routing device of claim 472 wherein the filter is received during registration of the node.
474. A method in a switch for controlling access to a network, the method comprising: receiving from a network manager an indication that a node connected to the switch is authorized to transmit communications using a destination address; receiving from the node communications using the destination address; transmitting the received communications through the network; and upon occurrence of a criterion indicating to not transmit communications of the node through the network, suppressing of the transmitting of communications using the destination address that are subsequently received from the node.
475. The method of claim 474 wherein the criterion is receiving an indication from the network manager that the node is no longer authorized to transmit communications using the destination address.
476. The method of claim 474 wherein the criterion is expiration of a timeout period.
477. The method of claim 476 including starting the timeout period when the indication is received from the network manager.
478. The method of claim 476 including starting the timeout period when a communication using the destination address is received.
479. The method of claim 476 including re-starting the timeout period whenever a communication using the destination address is received.
480. The method of claim 474 wherein the criterion is detecting a communications error in a transmission between the switch and the node.
481. The method of claim 480 wherein the communications error is detected at a physical layer.
482. The method of claim 474 wherein the criterion is disconnecting of the node from the switch.
483. The method of claim 474 wherein the criterion is terminating the connection between the switch and the node.
484. The method of claim 474 wherein the switch has multiple ports with the node being connected to one of the multiple ports.
485. The method of claim 474 wherein the destination address is a virtual address.
486. The method of claim 474 wherein the switch is Fibre Channel compatible.
487. The method of claim 474 wherein the switch is InfiniBand compatible.
488. The method of claim 474 wherein the switch is an interconnect fabric module.
489. A routing device for controlling access to a network, comprising: a component that receives an indication that a node connected to the routing device is authorized to transmit communications through the network; and a component that transmits through the network communications received from the node so long as a criterion indicating to not transmit such communications has not occurred.
490. The routing device of claim 489 wherein the criterion is receiving an indication from the network manager that the node is no longer authorized to transmit communications through the network.
491. The routing device of claim 489 wherein the received indication specifies a destination identifier to which the node is authorized to transmit communications.
492. The routing device of claim 489 wherein the criterion is expiration of a timeout period.
493. The routing device of claim 492 including starting the timeout period when the indication is received from the network manager.
494. The routing device of claim 492 including starting the timeout period when a communication is received from the node.
495. The routing device of claim 492 including re-starting the ,timeout period whenever a communication is received from the node.
496. The routing device of claim 489 wherein the criterion is detecting a communications error in a transmission between the routing device and the node.
497. The routing device of claim 496 wherein the communications error is detected at a physical layer.
498. The routing device of claim 489 wherein the criterion is disconnecting of the node from the routing device.
499. The routing device of claim 489 wherein the criterion is terminating the connection between the routing device and the node.
500. The routing device of claim 489 wherein the routing device is Fibre Channel compatible.
501. The routing device of claim 489 wherein the routing device is InfiniBand compatible.
502. The routing device of claim 489 wherein the routing device is an interconnect fabric module.
503. The routing device of claim 489 wherein the routing device is a switch.
504. A routing device for controlling access to a network, comprising: means for receiving an indication that a node connected to the routing device is authorized to transmit communications through the network; and means for transmitting through the network communications received from the node so long as there is no indication to not transmit such communications.
505. The routing device of claim 504 wherein the indication to not transmit is receiving an indication from the network manager that the node is no longer authorized to transmit communications through the network.
506. The routing device of claim 504 wherein the received indication specifies a destination identifier to which the node is authorized to transmit communications.
507. The routing device of claim 504 wherein the indication to not transmit is expiration of a timeout period.
508. The routing device of claim 507 including means for starting the timeout period when the indication is received from the network manager.
509. The routing device of claim 507 including means for starting the timeout period when a communication is received from the node.
510. The routing device of claim 509 wherein the timeout period is started when the received communication has a designated destination address.
511. The routing device of claim 507 including means for re-starting the timeout period whenever a communication is received from the node.
512. The routing device of claim 511 wherein the timeout period is re-started when the received communication has a designated destination address.
513. The routing device of claim 504 wherein the indication to not transmit is detecting a communications error in a transmission between the routing device and the node.
514. The routing device of claim 513 wherein the communications error is detected at a physical layer.
515. The routing device of claim 504 wherein the indication to not transmit is disconnecting of the node from the routing device.
516. The routing device of claim 504 wherein the indication to not transmit is terminating the connection between the routing device and the node.
517. The routing device of claim 504 wherein the routing device is Fibre Channel compatible.
518. The routing device of claim 504 wherein the routing device is InfiniBand compatible.
519. The routing device of claim 504 wherein the routing device is an interconnect fabric module.
PCT/US2002/012698 2001-04-27 2002-04-19 Method and system for virtual addressing in a communications network WO2002088876A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2002258931A AU2002258931A1 (en) 2001-04-27 2002-04-19 Method and system for virtual addressing in a communications network

Applications Claiming Priority (60)

Application Number Priority Date Filing Date Title
US28712001P 2001-04-27 2001-04-27
US28691801P 2001-04-27 2001-04-27
US28706801P 2001-04-27 2001-04-27
US28692201P 2001-04-27 2001-04-27
US28706901P 2001-04-27 2001-04-27
US28708101P 2001-04-27 2001-04-27
US28707501P 2001-04-27 2001-04-27
US28712101P 2001-04-27 2001-04-27
US60/287,069 2001-04-27
US60/286,922 2001-04-27
US60/287,081 2001-04-27
US60/287,121 2001-04-27
US60/287,068 2001-04-27
US60/287,075 2001-04-27
US60/286,918 2001-04-27
US60/287,120 2001-04-27
US31415801P 2001-08-21 2001-08-21
US31408801P 2001-08-21 2001-08-21
US60/314,088 2001-08-21
US60/314,158 2001-08-21
US31428701P 2001-08-22 2001-08-22
US60/314,287 2001-08-22
US10/061,564 2001-10-26
US10/068,329 2001-10-26
US10/046,572 US20030210685A1 (en) 2001-04-27 2001-10-26 Method and system for interswitch deadlock avoidance in a communications network
US10/039,814 2001-10-26
US10/066,159 2001-10-26
US10/062,245 US20040004966A1 (en) 2001-04-27 2001-10-26 Using virtual identifiers to route transmitted data through a network
US10/061,564 US20020159456A1 (en) 2001-04-27 2001-10-26 Method and system for multicasting in a routing device
US10/066,217 US20020159468A1 (en) 2001-04-27 2001-10-26 Method and system for administrative ports in a routing device
US10/062,199 2001-10-26
US10/039,703 2001-10-26
US10/046,334 US7068667B2 (en) 2001-04-27 2001-10-26 Method and system for path building in a communications network
US10/039,505 2001-10-26
US10/062,245 2001-10-26
US10/039,877 2001-10-26
US10/046,334 2001-10-26
US10/044,182 2001-10-26
US10/066,159 US7042877B2 (en) 2001-04-27 2001-10-26 Integrated analysis of incoming data transmissions
US10/039,404 2001-10-26
US10/039,404 US6996058B2 (en) 2001-04-27 2001-10-26 Method and system for interswitch load balancing in a communications network
US10/066,014 US20020159453A1 (en) 2001-04-27 2001-10-26 Method and system for label table caching in a routing device
US10/039,703 US20020159458A1 (en) 2001-04-27 2001-10-26 Method and system for reserved addressing in a communications network
US10/039,784 US6993023B2 (en) 2001-04-27 2001-10-26 Parallel analysis of incoming data transmissions
US10/066,217 2001-10-26
US10/044,182 US20030204618A1 (en) 2001-04-27 2001-10-26 Using virtual identifiers to process received data routed through a network
US10/039,814 US20020161923A1 (en) 2001-04-27 2001-10-26 Method and system for reconfiguring a path in a communications network
US10/046,333 2001-10-26
US10/044,164 2001-10-26
US10/046,333 US20020188754A1 (en) 2001-04-27 2001-10-26 Method and system for domain addressing in a communications network
US10/039,784 2001-10-26
US10/068,329 US20020161887A1 (en) 2001-04-27 2001-10-26 Method and system for performing security via de-registration in a communications network
US10/066,014 2001-10-26
US10/039,877 US20020159389A1 (en) 2001-04-27 2001-10-26 Method and system for connection preemption in a communications network
US10/044,164 US20020167902A1 (en) 2001-04-27 2001-10-26 Method and system for performing security via virtual addressing in a communications network
US10/046,640 2001-10-26
US10/062,199 US7068666B2 (en) 2001-04-27 2001-10-26 Method and system for virtual addressing in a communications network
US10/039,505 US20030189927A1 (en) 2001-04-27 2001-10-26 Method and system for multiframe buffering in a routing device
US10/046,572 2001-10-26
US10/046,640 US20020159437A1 (en) 2001-04-27 2001-10-26 Method and system for network configuration discovery in a network manager

Publications (2)

Publication Number Publication Date
WO2002088876A2 true WO2002088876A2 (en) 2002-11-07
WO2002088876A3 WO2002088876A3 (en) 2003-10-30

Family

ID=27586863

Family Applications (3)

Application Number Title Priority Date Filing Date
PCT/US2002/012428 WO2002088875A2 (en) 2001-04-27 2002-04-19 Communicating data through a network
PCT/US2002/012429 WO2002088981A1 (en) 2001-04-27 2002-04-19 Analysis of incoming data transmissions
PCT/US2002/012698 WO2002088876A2 (en) 2001-04-27 2002-04-19 Method and system for virtual addressing in a communications network

Family Applications Before (2)

Application Number Title Priority Date Filing Date
PCT/US2002/012428 WO2002088875A2 (en) 2001-04-27 2002-04-19 Communicating data through a network
PCT/US2002/012429 WO2002088981A1 (en) 2001-04-27 2002-04-19 Analysis of incoming data transmissions

Country Status (4)

Country Link
EP (1) EP1388075A4 (en)
JP (3) JP2004537881A (en)
AU (1) AU2002258931A1 (en)
WO (3) WO2002088875A2 (en)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161887A1 (en) 2001-04-27 2002-10-31 Foster Michael S. Method and system for performing security via de-registration in a communications network
US8065161B2 (en) 2003-11-13 2011-11-22 Hospira, Inc. System for maintaining drug information and communicating with medication delivery devices
US9123077B2 (en) 2003-10-07 2015-09-01 Hospira, Inc. Medication management system
JP2007079885A (en) * 2005-09-14 2007-03-29 Hitachi Ltd Data input and output load distribution method, data input and output load distribution program, computer system, and management server
EP2092470A2 (en) 2006-10-16 2009-08-26 Hospira, Inc. System and method for comparing and utilizing activity information and configuration information from mulitple device management systems
US8982887B2 (en) 2007-05-18 2015-03-17 International Business Machines Corporation System, method and program for making routing decisions
JP5164628B2 (en) * 2008-03-24 2013-03-21 株式会社日立製作所 Network switch device, server system, and server transfer method in server system
US8271106B2 (en) 2009-04-17 2012-09-18 Hospira, Inc. System and method for configuring a rule set for medical event management and responses
US8914482B2 (en) * 2010-05-26 2014-12-16 Microsoft Corporation Translation of technology-agnostic management commands into multiple management protocols
US9332005B2 (en) * 2011-07-11 2016-05-03 Oracle International Corporation System and method for providing switch based subnet management packet (SMP) traffic protection in a middleware machine environment
ES2959510T3 (en) 2011-10-21 2024-02-26 Icu Medical Inc Medical device update system
AU2014225658B2 (en) 2013-03-06 2018-05-31 Icu Medical, Inc. Medical device communication method
ES2626578T3 (en) * 2013-04-19 2017-07-25 Entuity Limited Identification of an output port of a device
JP6621748B2 (en) 2013-08-30 2019-12-18 アイシーユー・メディカル・インコーポレーテッド System and method for monitoring and managing a remote infusion regimen
US9662436B2 (en) 2013-09-20 2017-05-30 Icu Medical, Inc. Fail-safe drug infusion therapy system
US10311972B2 (en) 2013-11-11 2019-06-04 Icu Medical, Inc. Medical device system performance index
WO2015077320A1 (en) 2013-11-19 2015-05-28 Hospira, Inc. Infusion pump automation system and method
US8954583B1 (en) 2014-01-20 2015-02-10 Shape Security, Inc. Intercepting and supervising calls to transformed operations and objects
JP6853669B2 (en) 2014-04-30 2021-03-31 アイシーユー・メディカル・インコーポレーテッド Patient treatment system with conditional alert forwarding
FR3022420B1 (en) * 2014-06-13 2018-03-23 Bull Sas METHODS AND SYSTEMS FOR MANAGING AN INTERCONNECTION NETWORK
US9724470B2 (en) 2014-06-16 2017-08-08 Icu Medical, Inc. System for monitoring and delivering medication to a patient and method of using the same to minimize the risks associated with automated therapy
US9539383B2 (en) 2014-09-15 2017-01-10 Hospira, Inc. System and method that matches delayed infusion auto-programs with manually entered infusion programs and analyzes differences therein
WO2016189417A1 (en) 2015-05-26 2016-12-01 Hospira, Inc. Infusion pump system and method with multiple drug library editor source capability
JP6533434B2 (en) * 2015-08-11 2019-06-19 日本電信電話株式会社 Station side optical terminator
EP3484541A4 (en) 2016-07-14 2020-03-25 ICU Medical, Inc. Multi-communication path selection and security system for a medical device
US10950339B2 (en) 2018-07-17 2021-03-16 Icu Medical, Inc. Converting pump messages in new pump protocol to standardized dataset messages
EP3824383B1 (en) 2018-07-17 2023-10-11 ICU Medical, Inc. Systems and methods for facilitating clinical messaging in a network environment
NZ771914A (en) 2018-07-17 2023-04-28 Icu Medical Inc Updating infusion pump drug libraries and operational software in a networked environment
US11139058B2 (en) 2018-07-17 2021-10-05 Icu Medical, Inc. Reducing file transfer between cloud environment and infusion pumps
US10692595B2 (en) 2018-07-26 2020-06-23 Icu Medical, Inc. Drug library dynamic version management
AU2019309766A1 (en) 2018-07-26 2021-03-18 Icu Medical, Inc. Drug library management system

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548639A (en) * 1991-10-22 1996-08-20 Fujitsu Limited Distributed control of telecommunication network for setting up an alternative communication path
US5689506A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Multicast routing in multistage networks
US5774067A (en) * 1995-06-07 1998-06-30 International Business Machines Corporation Flash-flooding multi-stage interconnection network with parallel path seeking switching elements
US5872783A (en) * 1996-07-24 1999-02-16 Cisco Systems, Inc. Arrangement for rendering forwarding decisions for packets transferred among network switches
US5892766A (en) * 1996-02-22 1999-04-06 Fujitsu, Ltd. Method and apparatus for coordinating access to an output of a routing device in a packet switching network
US5917820A (en) * 1996-06-10 1999-06-29 Cisco Technology, Inc. Efficient packet forwarding arrangement for routing packets in an internetwork
US5940596A (en) * 1996-03-25 1999-08-17 I-Cube, Inc. Clustered address caching system for a network switch
US5999531A (en) * 1998-04-17 1999-12-07 Cabletron Systems, Inc. Method and system for identifying ports and forwarding packets in a multiport switch
US6078963A (en) * 1998-01-16 2000-06-20 At&T Corp. Router with de-centralized processing using intelligent ports
US6147976A (en) * 1996-06-24 2000-11-14 Cabletron Systems, Inc. Fast network layer packet filter
US6195335B1 (en) * 1997-06-27 2001-02-27 International Business Machines Corporation Data switch
US6215412B1 (en) * 1991-03-29 2001-04-10 International Business Machines Corporation All-node switch-an unclocked, unbuffered, asynchronous switching apparatus

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0795245A (en) * 1993-09-24 1995-04-07 Toshiba Corp Inter network connection system and communications system using same
US5485455A (en) * 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
JPH07283820A (en) * 1994-04-13 1995-10-27 Nec Corp Path setting system
US5781624A (en) * 1996-02-16 1998-07-14 Lucent Technologies Inc. Method for sharing network resources by virtual partitioning
US5892754A (en) * 1996-06-07 1999-04-06 International Business Machines Corporation User controlled adaptive flow control for packet networks
JPH1084385A (en) * 1996-09-10 1998-03-31 Nippon Telegr & Teleph Corp <Ntt> Communication connection device with servers and communication connection method
JP3579208B2 (en) * 1997-03-11 2004-10-20 株式会社東芝 Node device and message exchange method
US6006264A (en) 1997-08-01 1999-12-21 Arrowpoint Communications, Inc. Method and system for directing a flow between a client and a server
US6091709A (en) * 1997-11-25 2000-07-18 International Business Machines Corporation Quality of service management for packet switched networks
US6216173B1 (en) * 1998-02-03 2001-04-10 Redbox Technologies Limited Method and apparatus for content processing and routing
JP3633321B2 (en) * 1998-10-23 2005-03-30 富士通株式会社 Wide area load distribution apparatus and method
JP2000183976A (en) * 1998-12-21 2000-06-30 Matsushita Electric Ind Co Ltd Concentrating and converting device
JP4189076B2 (en) * 1999-03-26 2008-12-03 株式会社東芝 Fault tolerant computer system
JP3670157B2 (en) * 1999-03-31 2005-07-13 三菱電機株式会社 IP packet transfer system
US6779016B1 (en) 1999-08-23 2004-08-17 Terraspring, Inc. Extensible computing system
US6598034B1 (en) * 1999-09-21 2003-07-22 Infineon Technologies North America Corp. Rule based IP data processing
CN1415159A (en) * 1999-09-24 2003-04-30 戴尔帕德通讯公司 Flexible communications system
US6381242B1 (en) * 2000-08-29 2002-04-30 Netrake Corporation Content processor

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6215412B1 (en) * 1991-03-29 2001-04-10 International Business Machines Corporation All-node switch-an unclocked, unbuffered, asynchronous switching apparatus
US5548639A (en) * 1991-10-22 1996-08-20 Fujitsu Limited Distributed control of telecommunication network for setting up an alternative communication path
US5774067A (en) * 1995-06-07 1998-06-30 International Business Machines Corporation Flash-flooding multi-stage interconnection network with parallel path seeking switching elements
US6034956A (en) * 1995-06-07 2000-03-07 International Business Machines Corporation Method of simultaneously attempting parallel path connections in a multi-stage interconnection network
US5689506A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Multicast routing in multistage networks
US5892766A (en) * 1996-02-22 1999-04-06 Fujitsu, Ltd. Method and apparatus for coordinating access to an output of a routing device in a packet switching network
US5940596A (en) * 1996-03-25 1999-08-17 I-Cube, Inc. Clustered address caching system for a network switch
US5917820A (en) * 1996-06-10 1999-06-29 Cisco Technology, Inc. Efficient packet forwarding arrangement for routing packets in an internetwork
US6147976A (en) * 1996-06-24 2000-11-14 Cabletron Systems, Inc. Fast network layer packet filter
US5872783A (en) * 1996-07-24 1999-02-16 Cisco Systems, Inc. Arrangement for rendering forwarding decisions for packets transferred among network switches
US6195335B1 (en) * 1997-06-27 2001-02-27 International Business Machines Corporation Data switch
US6078963A (en) * 1998-01-16 2000-06-20 At&T Corp. Router with de-centralized processing using intelligent ports
US5999531A (en) * 1998-04-17 1999-12-07 Cabletron Systems, Inc. Method and system for identifying ports and forwarding packets in a multiport switch

Also Published As

Publication number Publication date
WO2002088876A3 (en) 2003-10-30
JP2007166666A (en) 2007-06-28
EP1388075A4 (en) 2008-01-16
JP2005502228A (en) 2005-01-20
AU2002258931A1 (en) 2002-11-11
WO2002088875A2 (en) 2002-11-07
EP1388075A1 (en) 2004-02-11
WO2002088875A3 (en) 2003-05-15
JP2004537881A (en) 2004-12-16
WO2002088981A1 (en) 2002-11-07

Similar Documents

Publication Publication Date Title
US7068666B2 (en) Method and system for virtual addressing in a communications network
WO2002088876A2 (en) Method and system for virtual addressing in a communications network
US6529963B1 (en) Methods and apparatus for interconnecting independent fibre channel fabrics
EP0889624B1 (en) Trunking ethernet-compatible networks
US6804233B1 (en) Method and system for link level server/switch trunking
Pfister An introduction to the infiniband architecture
US6950394B1 (en) Methods and systems to transfer information using an alternative routing associated with a communication network
EP1002397B1 (en) A highly integrated multi-layer switch element architecture
US7243160B2 (en) Method for determining multiple paths between ports in a switched fabric
US7990975B1 (en) Method and system for using extended fabric features with fibre channel switch elements
US8055794B2 (en) Isolation switch for fibre channel fabrics in storage area networks
US8125992B2 (en) System and method for providing proxy and translation domains in a fibre channel router
US7145866B1 (en) Virtual network devices
US20030210685A1 (en) Method and system for interswitch deadlock avoidance in a communications network
US20070091903A1 (en) Interface switch for use with fibre channel fabrics in storage area networks
US20060023725A1 (en) Multifabric communication using a backbone fabric
JP2003051825A (en) Inter-network connection device and network connection control method
EP1244265A2 (en) Integrated policy implementation service for communication network
JP2005524265A (en) Dynamic modification of subscriber connections
Cisco Bridging and IBM Networking Overview

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP