Method for scoring queued frames for selective transmission through a switch

Abstract
A method includes determining a priority of each of a plurality of frames, wherein the priority is a function of an initial value dependent on content of each said frame and one or more adjustment values independent of content of each said frame, and selecting the frame with the highest determined priority for transmission through the device prior to transmission of any other of the frames. A system includes a receiving port configured to receive frames and assign an initial priority to each frame, a queue configured to insert queue entries associated with received frames on the queue, each queue entry being inserted at a queue position based on the initial priority assigned to the queue entry, the queue further configured to reorder queue entries based on readjusted priorities of the queue entries; and a transmitter switch configured to transmit the frame having the highest priority before transmitting any other frame.
Description
BACKGROUND

1. Technical Field


Embodiments of the invention pertain generally to improvements in methods for sequencing data through a routing device. More particularly, embodiments pertain to a method for scoring queued frames for selective transmission through a switch. Embodiments are particularly, but not exclusively, useful for selectively transmitting frames through a fibre channel switch.


2. Relevant Background


Computer performance during the past decade has increased significantly, if not exponentially, in part driven by the information explosion. Consequently, demand for high-performance communications for server-to-storage and server-to-server networking also has increased. Performance improvements in hardware entities, including storage, processors, and workstations, along with the move to distributed architectures such as client/server, have increased the demand for data-intensive and high-speed networking applications. The interconnections between and among these systems, and their input/output devices, require enhanced levels of performance in reliability, speed, and distance.


Simultaneously, demands for more robust, highly available, disaster-tolerant computing resources, with ever-increasing speed and memory capabilities, continues unabated. To satisfy such demands, the computer industry has worked to overcome performance problems often attributable to convention I/O (“input/output devices”) subsystems. Mainframes, supercomputers, mass storage systems, workstations and very high-resolution display subsystems frequently are connected to facilitate file and print sharing. Because of the demand for increased speed across such systems, networks and channels conventionally used for connections introduce communication clogging, especially if data is in large file format typical of graphically based applications.


Efforts to satisfy enhanced performance demands have been directed to providing storage interconnect solutions that address performance and reliability requirements of modern storage systems. At least three technologies are directed to solving those problems SCSI (“Small Computer Systems Interface”); SSA (“Serial Storage Architecture”), a technology advanced primarily by IBM; and Fibre Channel, a high performance interconnect technology.


Two prevalent types; of data communication connections exist between processors, and between a processor and peripherals. A “channel” provides direct or switched point-to-point connection communicating devices. The channel's primary task is to transport data at the highest possible data rate with the least amount of delay. Channels typically perform simple error correction in hardware. A “network”, by contrast, is an aggregation of distributed nodes. A “node” as used in this document is either an individual computer or similar machine in a network (workstations, mass storage units, etc.) with a protocol that supports interaction among the nodes. Typically, each node must be capable of recognizing error conditions on the network and must provide the error management required to recover from the error conditions.


SCSI is an “intelligent” and parallel I/O bus on which various peripheral devices and controllers can exchange information. Although designed approximately 15 years ago, SCSI remains in use. The first SCSI standard, now known as SCSI-1, was adopted in 1986 and originally designed to accommodate up to eight devices at speeds of 5 MB/sec. SCSI standards and technology have been refined and extended frequently, providing ever faster data transfer rates up to 40 MB/sec. SCSI performance has doubled approximately every five years since the original standard was released, and the number of devices permitted on a single bus has been increased to 16. In addition, backward compatibility has been enhanced, enabling newer devices to coexist on a bus with older devices. However, significant problems associated with SCSI remain, including, for example, limitations caused by bus speed, bus length, reliability, cost, and device count. In connection with bus length, originally limited to six meters, newer standards requiring even faster transfer rates and higher device populations now place more stringent limitations on bus length that are only partially cured by expensive differential cabling or extenders.


Accordingly, industry designers now seek to solve the limitations inherent in SCSI by employing serial device interfaces. Featuring data transfer rates as high as 200 MB/sec, serial interfaces use point-to-point interconnections rather than busses. Serial designs also decrease cable complexity, simplify electrical requirements, and increase reliability. Two solutions have been considered, Serial Storage Architecture and what has become known as Fibre Channel technology, including the Fibre Channel Arbitrated Loop (“FC-AL”).


Serial Storage Architecture is a high-speed serial interface designed to connect data storage devices, subsystem, servers and workstations. SSA was developed and is promoted as an industry standard by IBM; formal standardization processes began in 1992. Currently, SSA is undergoing approval processes as an ANSI standard. Although the basic transfer rate through an SSA port is only 20 MB/sec, SSA is dual ported and full-duplex, resulting in a maximum aggregate transfer speed of up to 80 MB/sec. SSA connections are carried over thin, shielded, four-wire (two differential pairs) cables, that are less expensive and more flexible than the typical 50- and 68-conductor SCSI cables. Currently, IBM is the only major disk drive manufacturer shipping SSA drives; there has been little industry-wide support for SSA. That is not true of Fibre Channel, which has achieved wide industry support.


Fibre Channel (“F/C”) is an industry-standard, high-speed serial data transfer interface used to connect systems and storage in point-to-point or switched topologies. FC-AL technology, developed with storage connectivity in mind, is a recent enhancement that also supports copper media and loops containing up to 126 devices, or nodes. Briefly, fibre channel is a switched protocol that allows concurrent communication among workstations, super computers and various peripherals. The total network bandwidth provided by fibre channel may be on the order of a terabit per second. Fibre channel is capable of transmitting frames along lines or lanes at rates exceeding 1 gigabit per second in at least two directions simultaneously. F/C technology also is able to transport commands and data according to existing protocols such as Internet protocol (“IP”), high performance parallel interface (“HIPPI”), intelligent peripheral interface (“IPI”), and, as indicated using SCSI, over and across both optical fiber and copper cable.


The fibre channel may be considered a channel-network hybrid. An F/C system contains sufficient network features to provide connectivity, distance and protocol multiplexing, and enough channel features to retain simplicity, repeatable performance and reliable delivery. Fibre channel allows for an active, intelligent interconnection scheme, known as a “fabric”, and fibre channel switches to connect devices. The F/C fabric includes a plurality of fabric-ports (F_ports) that provide for interconnection and frame transfer between plurality of node-ports (N_ports) attached to associated devices that may include workstations, super computers and/or peripherals. A fabric has the capability of routing frames based on information contained within the frames. The N_port transmits and receives data to and from the fabric.


Transmission is isolated from the control protocol so that different topologies (e.g., point-to-point links, rings, multidrop buses, and crosspoint switches) can be implemented. Fibre Channel, a highly reliable, gigabit interconnect technology allows concurrent communications among workstations, mainframes, servers, data storage systems, and other peripherals. F/C technology provides interconnect systems for multiple topologies that can scale to a total system bandwidth on the order of a terabit per second. Fibre Channel delivers a new level of reliability and throughput. Switches, hubs, storage systems, storage devices, and adapters designed for the F/C environment are available now.


Following a lengthy review of existing equipment and standards, the Fibre Channel standards group realized that it would be useful for channels and networks to share the same fiber. (The terms “fiber” or “fibre” are used synonymously, and include both optical and copper cables.) The Fibre Channel protocol was developed and adopted, and continues to be developed, as the American National Standard for Information Systems (“ANSI”). See Fibre Channel Physical and Signaling Interface, Revision 4.2, American National Standard for Information Systems (ANSI) (1993) for a detailed discussion of the fibre channel standard, that is incorporated by reference into this document.


Current standards for F/C support bandwidth of 133 Mb/sec, 266 Mb/sec, 532 Mb/sec, 1.0625 Gb/sec, and 4 Gb/sec (proposed) at distances of up to ten kilometers. Fibre Channel's current maximum data rate is 100 MB/sec (200 MB/sec full-duplex) after accounting for overhead. In addition to strong channel characteristics, Fibre Channel provides powerful networking capabilities, allowing switches and hubs to interconnect systems and storage into tightly knit clusters. The clusters are capable of providing high levels of performance for file service, database management, or general purpose computing. Because Fibre Channel is able to span up to 10 kilometers between nodes, F/C allows very high-speed movement of data between systems that are greatly separated from one another. The F/C standard defines a layered protocol architecture consisting of five layers, the highest layer defining mappings from other communication protocols onto the F/C fabric.


The network behind the servers link one or more servers to one or more storage systems. Each storage system could be RAID (“Redundant Array of Inexpensive Disks”), tape backup, tape library, CD-ROM library, or JBOD (“Just a Bunch of Disks”). One type of RAID system divides each byte of data into bits and stores each bit on a different disk. If the data consists of S-bit bytes, there will be 10 disks, one for each of the 8 bits, and two more for an error-correcting code. The error-correcting code makes it possible to reconstruct any single missing bit in any byte. Thus, if one of the disk drives fails completely, only one bit will be missing from each byte, and the contents of the failed disk can be reconstructed completely from the error-correcting code.


Fibre Channel networks have proven robust and resilient, and include at least these features: shared storage among systems; scalable networking; high performance; fast data access and backup. In a Fibre Channel network, legacy storage systems are interfaced using a Fibre Channel to SCSI bridge. Fibre Channel standards include network features that provide required connectivity, distance, and protocol multiplexing. It also supports traditional channel features for simplicity, repeatable performance, and guaranteed delivery.


The demand for speed and volume of transmission has generated a concomitant demand for a capability to sort data to enable a user to identify data and data streams that have higher priority than other data queued in devices for routing data, such as a switch, particularly a fibre channel switch. It would be useful, therefore, to be able to order, or sequence, transmission of data through a fibre channel switch, including frames, based on the content of the frame as well as the source of the frame by assigning a score to data received by a device such as a switch, and to be able to transmit data and frames having the highest score.


Currently, therefore, a previously unaddressed need exists in the industry for a new, useful and reliable method for scoring queued frames for selective transmission through a switch, particularly in a Fibre Channel environment. It would be of considerable advantage to provide a method for assigning scores to data frames received by a switch, and to selectively expedite transmission of the frames having the highest score.


SUMMARY

In accordance with embodiments of the present invention a method for scoring queued frames for selective transmission through a routing device, including a switch, is provided. Embodiments of the invention provide for one or more fibre channel switches. Embodiments of the invention also include the receipt of data, including frames, by the one or more fibre channel switches at a connection, particularly a receiving port in the fibre channel switch. The switches, particularly fibre channel switches, are equipped with one or more registers. Further, the fibre channel switches include one or more means for programming the registers. The data may be received in any order, in sequence or not in sequence.


On receipt of the data, including one or more frames, the data is evaluated based on the content of the data, and an initial score is assigned to the content of the data, including one or more frames of data. The initial score is assigned to the data using a quality of service value based on the content of the data. At least one way to determine the initial value using a quality of service value based on content of the data is to locate at a specific location, on each of the frames, data that has been chosen for examination or scoring, information that is conveyed to the registers from the means for programming the registers associated with the switch. Means for programming the registers are included in all fibre channel switches, and may include a range of software programmability options. Also included in the means for programming are data templates that may be used to program the registers for specific purposes, and may be used for examining predetermined data, or data selected for high priority transmission through the switch. The data thus selected may be bit-wise ANDed with a data mask to obtain revised data. The revised data may be compared with the predetermined data to determine if a participation match exists. Alternatively, the adjusting step also permits selecting frames for which there is no participation match.


Embodiments of the present invention also include steps for adjusting the initial score. A variety of alternative score components may be applied to the initial score to determine one or more adjusted scores. For example, at least one embodiment of the present invention includes a step for identifying the connections, or receiving ports, in the switch where frames are received. A bandwidth allocation adjustment may be applied to the initial score, an adjustment derived from the data location among the receiving ports. In addition, embodiments provide for calculating the cumulative time that the data, including frames, remain on queue in transmit switches of the switch before being transmitted to a receiver device in the fibre channel fabric. Embodiments provide for measuring each millisecond (ms) of data time on queue, but different time intervals may be selected. Generally, the initial score is increased by the bandwidth allocation adjustment and for the time on queue.


Embodiments of the present invention also include a step by which the adjusted scores may be compared with each other. Frames having the highest adjusted scores are identified, and the data having the highest score is rearranged in a reordered queue based on the adjusted scores. The frames having the highest adjusted scores may then be transmitted through the switches.


The foregoing has outlined broadly the more important features of embodiments of the invention to better understand the detailed description that follows, and to better understand the contribution of the present invention to the art. Before explaining at least one embodiment of the invention in detail, it is to be understood that the invention is not limited in application to the details of construction, and to the arrangements of the components, provided in the following description or drawing figures. The invention is capable of other embodiments, and of being practiced and carried out in various ways. In addition, the phraseology and terminology, employed in this disclosure are for purpose of description, and should not be regarded as limiting.


At least one advantage of the present invention is that it enhances the availability of the delivery of data frames having higher priority than other frames.


Another advantage to the present invention is that it provides a method for scoring queued frames in a switch for selective transmission through the switch using programmable elements of fibre channel switches already known in the industry.


The present invention also will permit flexibility in selecting among alternative score components to assign scores to the frames received by a fibre channel switch.


Yet another advantage of the present invention is a method for selectively transmitting frames across a fibre channel fabric that is easy to use and to practice, and is cost effective.


These advantages, and other objects and features, of such a method for scoring queued frames for selective transmission through a routing device, including a switch, will become apparent to those skilled in the art when read in conjunction with the accompanying following description, drawing figures, and appended claims.


As those skilled in the art will appreciate, the conception on which this disclosure is based readily may be used as a basis for designing other structures, methods, and systems for carrying out the purposes of the present invention. The claims, therefore, include such equivalent constructions to the extent the equivalent constructions do not depart from the spirit and scope of the present invention. Further, the abstract associated with this disclosure is neither intended to define the invention, which is measured by the claims, nor intended to be limiting as to the scope of the invention in any way.





BRIEF DESCRIPTION OF THE DRAWING

The novel features of this invention, and the invention itself, both as to structure and operation, are best understood from the accompanying drawing, considered in connection with the accompanying description of the drawing, in which similar reference characters refer to similar parts, and in which:



FIG. 1 is a schematic block diagram showing the steps in the method for scoring queued frames for selective transmission through a switch;



FIG. 2 is a perspective view showing one of many ways a number of devices, including a Fibre Channel switch, may be interconnected in a Fibre Channel network;



FIG. 3 is schematic representation of a variable-length frame communicated through a fiber optic switch as contemplated by the Fibre Channel industry standard;



FIG. 4 is a schematic block flow diagram showing one way a quality of service value in accordance with the present invention may be accomplished; and



FIG. 5 is schematic block diagram showing one way the method of the present invention may assign a score.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

Briefly, the present invention provides a method for scoring queued frames for selective transmission through a switch, particularly a fibre channel switch. As used in this document, the term “scoring” describes the objective of the present invention, namely to assign a score to selected data, including data on a frame, and to select scores having the highest value for priority transmission across devices, including a switch, in a fibre channel fabric. The terms “queued” or “queue” refers to one or more data structures from which items are removed, bit for application of the present invention, in the same order in which they were entered. A “frame,” as used in this document, includes a presumed configuration of an aggregation of data bits as exemplified in FIG. 3.


As shown in FIG. 1, the invention generally includes providing one or more switches 12, particularly a fibre channel switch 12′ in a fibre channel fabric generally shown in FIG. 2; receiving data, including frames 18, as exemplified in FIG. 3, at connections that include ports 16 in switches 12 as described in this document; assigning an initial score 20 to the content of the one or more frames 18; adjusting the initial score 22, as shown in FIG. 1, with one or more alternative score components to determine one or more adjusted scores; comparing the adjusted scores; selecting frames having the highest adjusted scores 24; and transmitting through fibre channel switches 12′ frames 18 having the highest adjusted scores.


The present invention, therefore, is useful for enhancing delivery of data frames having higher priority than other frames. The present invention also is useful for scoring queued frames in a switch, particularly a fibre channel switch, for selective transmission through the switch using programmable elements of fibre channel switches already known in the industry. Flexibility in selecting among alternative score components also is included in the present invention.


Referring first to FIG. 1, a schematic and block diagram is shown illustrating in general the method for scoring queued frames for selective transmission through a switch, and is generally designated 10. As shown, the method for scoring queued frames for selective transmission through a switch 10 includes providing one or more fibre channel switches 12 as shown best in FIG. 2. At least one example of a switch 12 in which the present invention may successfully operate is a fibre channel switch employing distributed source and destination queuing for interconnecting a plurality of devices 14a-f, which may also include workstations, supercomputers, and other peripherals, through their associated node ports. Fibre channel switch 12′ provides a fabric having a shared memory coupled to a plurality of fabric ports 16 through a bit-slicing memory controller (not shown) over which memory addresses, frame data and communications commands are transmitted. More particularly, at least one example of a fibre channel switch in which the present invention may successfully operate is described and shown in U.S. Pat. No. 5,894,481 issued on Apr. 13, 1999 to Book, a patent that is incorporated by reference into this document.


As shown by cross-reference between FIGS. 1 and 3, the present invention also includes the receipt of data, including one or more frames 18, by one or more fibre channel switches 12′ at a connection, particularly a receiving port 16′ in fibre channel switch 12′. Fibre channel switch 12′ is equipped with one or more registers (not shown). Although not shown in the accompanying drawing figures, the term “register” or “registers” as used in this document includes at least one or more row of electronic circuits that can switch back and forth between two states (0 and 1), will remain in either state until changed, and are used to store one or more groups of binary digits while a CPU is processing them. Further, as known by those skilled in the art, fibre channel switches 12′ include one or more means for programming the registers.


As shown in FIG. 3, frames 18 may be received in any order, in sequence or not in sequence. On receipt of the one or more frames, the data on the frames is evaluated based on the content of the data, and an initial score is assigned to the content of the one or more frames 18. More particularly, as shown in FIG. 4, the initial score is assigned to data on frame 18 using a quality of service value 24 based on the content of the data. At least one way to determine the initial value using a quality of service value based on content is to locate, at a specific location on each frame 18, data 26, as exemplified in FIG. 3, that has been chosen for examination. Quality of service value 24 is communicated to the registers from the means for programming (not shown) included in the fibre channel switch 12′. The means for programming may include software. Included in the means for programming are data templates that may be used to program the registers and used for examining the predetermined data 26, or data 26 selected for high priority transmission through switch 12′. Data 26 thus selected may be bit-wise ANDed with a data mask to obtain revised data. The revised data may be compared with the predetermined data to determine if a participation match exists. Alternatively, the adjusting step also permits selecting frames 18 for which there is no participation match.


As shown best in FIG. 4, which shows at least one of a number of ways the present invention may be practiced, each received frame 12 may be presumed to have a quality of service 24 (“QOS”) level assigned to it by a receiving port. Each fibre channel switch 12′ may provide for a number of separate queues 28, one for each of the receiving ports 30 (exemplified schematically in FIG. 4) in a fibre channel switch 12′. Each queue 28 may contain one or more queue entries (“Qentries”) 32. Qentries 32 also identify the buffer memory location of each frame 18. Each of the queues 28, as shown in FIG. 4, may have a WEIGHT_TIME (“WT”) register setting assigned. In addition, the WT register settings may be programmed to provide a greater portion of bandwidth to traffic received from receiving ports 30 with a greater value in the corresponding WT register setting. As used in this document, and as known to those skilled in the art, the term “bandwidth” refers to rate at which a fibre channel system, as exemplified in FIG. 2, may transmit data 26, which in turn is based on the range of frequencies that an electronic system can transmit. Each Qentry 32 may be given a bit score, for example an 8 bit score. As provided by the present invention, at least one formulation of the initial score to be assigned is based on the formula Score=QOS+[WT] [TOQ], where the term “TOQ” means time on queue that a Qentry 32 has spent on a queue 28.


As also shown in FIG. 4, at least one algorithm that may be used in connection with the practice of the present invention is.

    • A Qentry is received from Port_N;
    • An initial score for the Qentry is computed from the QOS level assigned by receiving port N, such that Score=QOS;
    • The Qentry is inserted into a Queue N ahead of all other Qentries in Queue N with lesser scores, but behind all other Qentries with greater or equal scores;
    • Following passage of a selected time period, the scores for every Qentry in Queue N is adjusted by the WT of N; and
    • Prior to selection of a frame for transmission, the scores of the Qentries at the bottom of the Queues are compared with the entry with the greatest score for selected transmission through the switch, as best shown in FIG. 5.


As shown in FIG. 4, at least one example of the determination of the QOS component 24 of the score is shown. As shown, eight (8) templates 34 are programmed to scan data 26 within an incoming frame 18. Each template 34 examines data 26, which may include a word, at a specified location called an “Offset” 36 within incoming frame 18. The data 26 or word is bit-wise ANDed 38 with a mask word (“Mask”) 40, and compared with a content word (“Content”) 42. As set out in U.S. Pat. No. 6,233,236, incorporated herein by reference, in a particular example, content 42 includes information extracted from the header fields of each packet transmitted. For example, the header fields of each fibre channel frame include destination ID (i.e., a field identifying the port that is the intended recipient of a frame), a source ID (i.e., a field identifying the port to which the receiver belongs), a frame type (i.e., a field identifying the FC-4 frame type). It should be noted that the destination and source ID information referred to herein refers to intra-switch information and is different from the S_ID and D_ID information in an FC-4 frame that refer to actual fabric device addresses. Other types of information or “metadata” (i.e., data that describes the frame) may be included in the header or other designated fields of a frame depending on the frame format requirements of a particular application. If masked word 40 matches content word 42, a template match has occurred for that template 34. Alternatively, if there is no match, the “Negate” bit 44 is set true, which may be useful if a user seeks to search or scan or for no match, which would be useful, for example, when seeking to define a destination value on frame 18.


Also, a number of participation groups, for example eight (8) “Participation Groups” 46 may be programmed to assign a Quality of Service value 24 to each incoming frame 18. Each Participation Group 46 looks for a participation match for each template 34 corresponding to the bits set to >1=in the Participation field 48 (e.g., if Participation=0001011 then a participation match occurs if Templates 3, 1, and 0 all have template matches). When a participation match occurs, the Quality of Service level 24 for incoming frame 18 is either assigned the QOS value 24 associated with that participation group 48 (when UseFrameCtl=0, or to the frame control word from one of the Frame Control word finders when UseFrarneCtl=1 or 2). In addition, while not an essential step in assigning an initial value based on QOS 24, at least two (2) frame control word finders 50 may be programmed to extract a 3-bit value from an incoming frame. Each frame control word finder may extract the 3 least significant bits from a byte in incoming frame 18, and Offset 36 and Byte fields may specify the location of the byte.


The present invention also includes one or more steps for adjusting the initial score. A variety of alternative score components may be applied to the initial score to determine one or more adjusted scores. For example, at least one embodiment of the present invention includes an alternative score component for identifying receiving ports (not shown) for frames 18, and applying a bandwidth allocation adjustment derived from the location pf frame 18 among receiving ports 30. In addition, the present invention provides for calculating the cumulative time that data 26, including frame 18, remain on queue 28 in the transmit switches (not shown) of switch 12′ before being transmitted to a receiver device in the fibre channel fabric as suggested by FIG. 2. The invention provides for measuring each millisecond (ms) of time data 26 is on queue 28, but different time intervals may be selected. Generally, the initial score is increased by the bandwidth allocation adjustment and for the time on queue.


The present invention also provides for comparing adjusted scores with each other. As best shown in FIG. 5, frames 18 having the highest adjusted scores are identified, rearranged in a reordered queue based on the adjusted scores, and frames 18 having the highest adjusted scores may then be transmitted through switches 12.


While the method for scoring queued frames for selective transmission through a switch as shown in drawing FIGS. 1 through 5 is one embodiment of the present invention, it is indeed but one embodiment of the invention, is not intended to be exclusive, and is not a limitation of the present invention. While the particular method for scoring queued frames for selective transmission through a switch as shown and disclosed in detail herein is fully capable of obtaining the objects and providing the advantages stated, this disclosure is merely illustrative of the presently preferred embodiments of the invention, and no limitations are intended in connection with the details of construction, design or composition other than as provided and described in the appended claims.

Claims
  • 1. A method of selectively transmitting frames through a device, the method comprising: determining a priority of each said frame, wherein the priority is a function of an initial value dependent on content of each said frame and one or more adjustment values independent of content of each said frame; andselecting the frame with the highest determined priority for transmission through the device prior to transmission of any other of the frames.
  • 2. The method of claim 1 further comprising: inserting each frame on a queue at a queue position based on the initial value; andreordering frames on the queue based on adjustments to priorities of the frames.
  • 3. The method of claim 1 wherein said determining a priority of each said frame comprises: determining an initial score determined based on content of each said frame; andadjusting the initial score with the one or more adjustment values, to generate an adjusted score representing the priority of each said frame.
  • 4. The method of claim 1, wherein the initial value comprises a quality of service assigned to each said frame.
  • 5. The method of claim 4, further comprising determining the quality of service assigned to each said frame based on a portion of content in each said frame.
  • 6. The method of claim 5, wherein determining the quality of service assigned to each said frame comprises: comparing the portion of content of each said frame to each of a plurality of templates to identify one or more template matches;defining one or more participation matches, wherein each participation match designates a combination of one or more template matches;associating a quality of service with each of the one or more participation matches; andassigning to each said frame the quality of service associated with the participation match corresponding to the one or more template matches identified for each said frame.
  • 7. The method of claim 6, further comprising assigning a default quality of service to any of the frames for which the one or more identified template matches do not correspond to one of the combinations of template matches.
  • 8. The method of claim 1, wherein the one or more adjustment values comprise a time value that is a function of the time that each said frame is stored on a queue.
  • 9. The method of claim 8, wherein the time value comprises a weighted function of the time that each said frame is stored on a queue.
  • 10. The method of claim 1, wherein the one or more adjustment values comprise a bandwidth allocation associated with a port that received each said frame.
  • 11. A method for selectively transmitting a plurality of frames through a device, the method comprising: determining a priority of each said frame, the priority being determined based on a combination of quality of service determined from content of each said frame and one or more other values determined independent of content of each said frame; andselecting a frame having the highest determined priority for transmission through the device before transmission of any other of the frames.
  • 12. The method of claim 11, further comprising: inserting each frame on a determined queue among a plurality of queues, wherein each frame is inserted at a queue position based on the quality of service of the frame; andreordering frames on each queue based on adjustments to the priorities of the frames.
  • 13. The method of claim 11, further comprising: receiving each said frame on one of a plurality of ports of the device;in response to receiving each said frame, inserting an identifier of each said frame on a queue associated with the port that received each said frame, wherein inserting each said identifier on the queue comprises inserting each said identifier ahead of all other identifiers of frames on the queue having lesser quality of service and behind all other identifiers of frames on the queue having greater or equal quality of service; andfollowing passage of a selected time, for each said frame, combining said one or more other values with the quality of service of each said frame.
  • 14. The method of claim 13, wherein one of the one or more other values is dependent upon the time that each said frame has been on the queue.
  • 15. A system for selectively transmitting frames through a device, the system comprising: a receiving port configured to receive frames and assign an initial priority to each frame;a queue configured to insert queue entries associated with received frames on the queue, each queue entry being inserted at a queue position based on the initial priority assigned to the queue entry, the queue further configured to reorder queue entries based on readjusted priorities of the queue entries; anda transmitter configured to transmit the frame having the highest priority before transmitting any other frame.
  • 16. The system of claim 15 wherein the initial priority of each frame is adjusted based on adjustment values independent of content of the frame.
  • 17. The system of claim 15, wherein the receiving port includes at least one comparator configured to compare selected content of each frame to a template.
  • 18. The system of claim 17, wherein the receiving port further includes a plurality of participation groups configured to determine whether each frame matches a specified combination of templates.
  • 19. The system of claim 18 wherein the initial priority of each frame is set to a quality of service associated with a participation group matched by the frame.
RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 10/613,627 filed Jul. 2, 2003, which is a continuation-in-part of U.S. patent application Ser. No. 09/728,452 filed Nov. 30, 2000, which is a continuation-in-part of U.S. patent application Ser. No. 09/228,678 filed Jan. 12, 1999 (now U.S. Pat. No. 6,233,236), all of which are incorporated herein by reference.

US Referenced Citations (324)
Number Name Date Kind
4683564 Young et al. Jul 1987 A
4782483 Lambert et al. Nov 1988 A
4791629 Burns et al. Dec 1988 A
4794629 Pastyr et al. Dec 1988 A
4807280 Posner et al. Feb 1989 A
4817080 Sohn Mar 1989 A
4872159 Hemmady et al. Oct 1989 A
4876681 Hagiwara et al. Oct 1989 A
4905230 Madge et al. Feb 1990 A
4975906 Takiyasu et al. Dec 1990 A
4985888 Madge et al. Jan 1991 A
4985889 Frankish et al. Jan 1991 A
5022025 Urushidani et al. Jun 1991 A
5077763 Gagnoud et al. Dec 1991 A
5090011 Fukuta et al. Feb 1992 A
5101404 Kunimoto et al. Mar 1992 A
5195181 Bryant et al. Mar 1993 A
5197064 Chao Mar 1993 A
5206888 Hiraguchi et al. Apr 1993 A
5224108 McDysan et al. Jun 1993 A
5253251 Aramaki Oct 1993 A
5274631 Bhardwaj Dec 1993 A
5301192 Henrion Apr 1994 A
5305311 Lyles Apr 1994 A
5307345 Lozowick et al. Apr 1994 A
5323386 Wilner et al. Jun 1994 A
5365512 Combs et al. Nov 1994 A
5365514 Hershey et al. Nov 1994 A
5383181 Aramaki Jan 1995 A
5390173 Spinney et al. Feb 1995 A
5390188 Dawson Feb 1995 A
5392279 Taniguchi Feb 1995 A
5400087 Uramoto et al. Mar 1995 A
5406643 Burke et al. Apr 1995 A
5408469 Opher et al. Apr 1995 A
5425020 Gregg et al. Jun 1995 A
5428616 Field et al. Jun 1995 A
5430442 Kaiser et al. Jul 1995 A
5436893 Barnett Jul 1995 A
5455831 Bartow et al. Oct 1995 A
5459440 Claridge et al. Oct 1995 A
5461615 Henrion Oct 1995 A
5463620 Sriram Oct 1995 A
5508840 Pauwels et al. Apr 1996 A
5515404 Pearce May 1996 A
5519695 Purohit et al. May 1996 A
5521923 Willmann et al. May 1996 A
5535197 Cotton Jul 1996 A
5541853 Croft Jul 1996 A
5546385 Caspi et al. Aug 1996 A
5548280 Pearce Aug 1996 A
5548590 Grant et al. Aug 1996 A
5550816 Hardwick et al. Aug 1996 A
5561662 Kakuma et al. Oct 1996 A
5563526 Hastings et al. Oct 1996 A
5566170 Bakke et al. Oct 1996 A
5581228 Cadieux et al. Dec 1996 A
5598410 Stone Jan 1997 A
5600795 Du Feb 1997 A
5610745 Bennett Mar 1997 A
5619497 Gallagher et al. Apr 1997 A
5640504 Johnson et al. Jun 1997 A
5649108 Spiegel et al. Jul 1997 A
5649110 Ben-Nun et al. Jul 1997 A
5654961 Araujo et al. Aug 1997 A
5663952 Gentry, Jr. Sep 1997 A
5663959 Nakagawa et al. Sep 1997 A
5666353 Klausmeier et al. Sep 1997 A
5710777 Gawne Jan 1998 A
5721819 Galles et al. Feb 1998 A
5732041 Joffe Mar 1998 A
5732080 Ferguson et al. Mar 1998 A
5740176 Gupta et al. Apr 1998 A
5751710 Crowther et al. May 1998 A
5754551 Claridge et al. May 1998 A
5757795 Schnell May 1998 A
5761191 VanDervort et al. Jun 1998 A
5793612 Tobin et al. Aug 1998 A
5802054 Bellenger Sep 1998 A
5805598 Loney Sep 1998 A
5815146 Youden et al. Sep 1998 A
5825259 Harpham Oct 1998 A
5835496 Yeung et al. Nov 1998 A
5838684 Wicki et al. Nov 1998 A
5841773 Jones Nov 1998 A
5859835 Varma et al. Jan 1999 A
5862350 Coulson Jan 1999 A
5867675 Lomelino et al. Feb 1999 A
5870538 Manning et al. Feb 1999 A
5872783 Chin Feb 1999 A
5894481 Book Apr 1999 A
5905712 Cresswell et al. May 1999 A
5907566 Benson et al. May 1999 A
5907660 Inoue et al. May 1999 A
5909686 Muller et al. Jun 1999 A
5912889 Preas et al. Jun 1999 A
5915094 Koulohertis et al. Jun 1999 A
5920568 Hendel et al. Jul 1999 A
5920856 Feldmeier Jul 1999 A
5924112 Barber et al. Jul 1999 A
5926048 Greatwood Jul 1999 A
5926625 Corlett et al. Jul 1999 A
5936939 Des Jardins et al. Aug 1999 A
5936966 Ogawa et al. Aug 1999 A
5936967 Baldwin Aug 1999 A
5938749 Rusu et al. Aug 1999 A
5949786 Bellenger Sep 1999 A
5961597 Sapir et al. Oct 1999 A
5978359 Caldara et al. Nov 1999 A
5978379 Chan et al. Nov 1999 A
5991295 Tout et al. Nov 1999 A
5999528 Chow et al. Dec 1999 A
6000016 Curtis et al. Dec 1999 A
6000020 Chin et al. Dec 1999 A
6016310 Muller et al. Jan 2000 A
6018518 Smallwood et al. Jan 2000 A
6021117 Juniper et al. Feb 2000 A
6023471 Haddock et al. Feb 2000 A
6035414 Okazawa et al. Mar 2000 A
6038228 Thomas et al. Mar 2000 A
6044400 Golan et al. Mar 2000 A
6061358 Nelson et al. May 2000 A
6067301 Aatresh May 2000 A
6076115 Sambamurthy et al. Jun 2000 A
6079034 Van Zante et al. Jun 2000 A
6081522 Hendel et al. Jun 2000 A
6088356 Hendel et al. Jul 2000 A
6094434 Kotzur et al. Jul 2000 A
6101553 Greatwood et al. Aug 2000 A
6104696 Kadambi et al. Aug 2000 A
6104700 Haddock et al. Aug 2000 A
6108306 Kalkunte et al. Aug 2000 A
6118787 Kalkunte et al. Sep 2000 A
6125417 Baills et al. Sep 2000 A
6128668 Muller et al. Oct 2000 A
6138185 Nelson et al. Oct 2000 A
6144688 Bass et al. Nov 2000 A
6148004 Nelson et al. Nov 2000 A
6151301 Holden Nov 2000 A
6151615 Brooks et al. Nov 2000 A
6154446 Kadambi et al. Nov 2000 A
6157643 Ma Dec 2000 A
6157654 Davis Dec 2000 A
6160809 Adiletta et al. Dec 2000 A
6172964 Whitton Jan 2001 B1
6172990 Deb et al. Jan 2001 B1
6192054 Chan et al. Feb 2001 B1
6201816 Wilson Mar 2001 B1
6222845 Shue et al. Apr 2001 B1
6233236 Nelson et al. May 2001 B1
6243386 Chan et al. Jun 2001 B1
6243667 Kerr et al. Jun 2001 B1
6259695 Ofek Jul 2001 B1
6272144 Berenbaum et al. Aug 2001 B1
6275549 Greatwood et al. Aug 2001 B1
6295272 Feldman et al. Sep 2001 B1
6320859 Momirov Nov 2001 B1
6333929 Drottar et al. Dec 2001 B1
6335932 Kadambi et al. Jan 2002 B2
6335935 Kadambi et al. Jan 2002 B2
6343072 Bechtolsheim et al. Jan 2002 B1
6345041 Kimball et al. Feb 2002 B1
6349097 Smith Feb 2002 B1
6351143 Guccione et al. Feb 2002 B1
6351725 Willis et al. Feb 2002 B1
6356550 Williams Mar 2002 B1
6356942 Bengtsson et al. Mar 2002 B1
6369855 Chauvel et al. Apr 2002 B1
6400681 Bertin et al. Jun 2002 B1
6421352 Manaka et al. Jul 2002 B1
6424658 Mather Jul 2002 B1
6424659 Viswanadham et al. Jul 2002 B2
6427185 Ryals et al. Jul 2002 B1
6434145 Opsasnick et al. Aug 2002 B1
6446088 Vaduvur et al. Sep 2002 B1
6463063 Bianchini, Jr. et al. Oct 2002 B1
6470438 Croft et al. Oct 2002 B1
6473433 Bianchini, Jr. et al. Oct 2002 B1
6477167 Wu Nov 2002 B1
6477174 Dooley et al. Nov 2002 B1
6490280 Leung Dec 2002 B1
6493347 Sindhu et al. Dec 2002 B2
6552656 Gridley Feb 2003 B2
6532234 Yoshikawa Mar 2003 B1
6539020 Barber et al. Mar 2003 B1
6549519 Michels et al. Apr 2003 B1
6549541 Sainio et al. Apr 2003 B1
6553370 Andreev et al. Apr 2003 B1
6567404 Wilford May 2003 B1
6580721 Beshai Jun 2003 B1
6606300 Blanc et al. Aug 2003 B1
6608819 Mitchem et al. Aug 2003 B1
6611522 Zheng et al. Aug 2003 B1
6614796 Black et al. Sep 2003 B1
6628609 Chapman et al. Sep 2003 B2
6643269 Fan et al. Nov 2003 B1
6647017 Heiman Nov 2003 B1
6654342 Dittia et al. Nov 2003 B1
6654370 Quirke et al. Nov 2003 B1
6654373 Maher, III et al. Nov 2003 B1
6658002 Ross et al. Dec 2003 B1
6671275 Wong et al. Dec 2003 B1
6674754 Ofek Jan 2004 B1
6678248 Haddock et al. Jan 2004 B1
6681332 Byrne et al. Jan 2004 B1
6687247 Wilford et al. Feb 2004 B1
6691202 Vasquez et al. Feb 2004 B2
6696917 Heitner et al. Feb 2004 B1
6697359 George Feb 2004 B1
6697368 Chang et al. Feb 2004 B2
6700894 Shung Mar 2004 B1
6707818 Kadambi et al. Mar 2004 B1
6711357 Brewer et al. Mar 2004 B1
6721229 Cole Apr 2004 B1
6721268 Ohira et al. Apr 2004 B1
6721313 Van Duyne Apr 2004 B1
6731600 Patel et al. May 2004 B1
6735218 Chang et al. May 2004 B2
6741597 Jeong May 2004 B1
6751224 Parruck et al. Jun 2004 B1
6754881 Kuhlmann et al. Jun 2004 B2
6775706 Fukumoto et al. Aug 2004 B1
6778546 Epps et al. Aug 2004 B1
6781990 Puri et al. Aug 2004 B1
6792484 Hook Sep 2004 B1
6792502 Pandya et al. Sep 2004 B1
6798740 Senevirathne et al. Sep 2004 B1
6804731 Chang et al. Oct 2004 B1
6807179 Kanuri et al. Oct 2004 B1
6807363 Abiko et al. Oct 2004 B1
6810046 Abbas et al. Oct 2004 B2
6813243 Epps et al. Nov 2004 B1
6816467 Muller et al. Nov 2004 B1
6822940 Zavalkovsky et al. Nov 2004 B1
6831923 Laor et al. Dec 2004 B1
6831932 Boyle et al. Dec 2004 B1
6839346 Kametani Jan 2005 B1
6842422 Bianchini, Jr. Jan 2005 B1
6854117 Roberts Feb 2005 B1
6859438 Haddock et al. Feb 2005 B2
6865153 Hill et al. Mar 2005 B1
6879559 Blackmon Apr 2005 B1
6894970 McDermott, III et al. May 2005 B1
6898182 Cloonan May 2005 B1
6901072 Wong May 2005 B1
6920154 Aschler Jul 2005 B1
6925516 Struhsaker et al. Aug 2005 B2
6937606 Basso et al. Aug 2005 B2
6946948 McCormack et al. Sep 2005 B2
6957258 Maher, III et al. Oct 2005 B2
6959007 Vogel et al. Oct 2005 B1
6975639 Hill et al. Dec 2005 B1
6977943 Zboril Dec 2005 B2
7002980 Brewer et al. Feb 2006 B1
7009968 Ambe et al. Mar 2006 B2
7012919 So et al. Mar 2006 B1
7050430 Kalkunte et al. May 2006 B2
7126956 Scholten Oct 2006 B2
7133399 Brewer et al. Nov 2006 B1
7151797 Limberg Dec 2006 B2
7161948 Sampath et al. Jan 2007 B2
7167471 Calvignac et al. Jan 2007 B2
7185141 James et al. Feb 2007 B1
7185266 Blightman et al. Feb 2007 B2
7187687 Davis et al. Mar 2007 B1
7191277 Broyles Mar 2007 B2
7191468 Hanner Mar 2007 B2
7203194 Chang et al. Apr 2007 B2
7206283 Chang et al. Apr 2007 B2
7212536 MacKiewich et al. May 2007 B2
7224670 Jeffries et al. May 2007 B2
7236490 Chang et al. Jun 2007 B2
7266117 Davis Sep 2007 B1
7283470 Sindhu et al. Oct 2007 B1
7324500 Blackmon Jan 2008 B1
7356030 Chang et al. Apr 2008 B2
7382728 Chen et al. Jun 2008 B2
7382736 Mitchem Jun 2008 B2
7447198 Banks et al. Nov 2008 B1
20010007560 Masuda et al. Jul 2001 A1
20010048785 Steinberg Dec 2001 A1
20010053150 Clear et al. Dec 2001 A1
20020012585 Kalkunte et al. Mar 2002 A1
20020054594 Hoof et al. May 2002 A1
20020105966 Patel et al. May 2002 A1
20020069294 Herkersdorf et al. Jun 2002 A1
20020073073 Cheng Jun 2002 A1
20020089977 Chang et al. Jul 2002 A1
20020091884 Chang et al. Jul 2002 A1
20020097713 Chang et al. Jul 2002 A1
20020126672 Chow et al. Sep 2002 A1
20020131456 Lin et al. Sep 2002 A1
20020146013 Karlsson et al. Oct 2002 A1
20030009466 Ta et al. Jan 2003 A1
20030033435 Haner Feb 2003 A1
20030004878 Calvignac et al. Mar 2003 A1
20030043800 Sonksen et al. Mar 2003 A1
20030103499 Davis et al. Jun 2003 A1
20030110180 Calvignac et al. Jun 2003 A1
20030152084 Lee et al. Aug 2003 A1
20030165160 Minami et al. Sep 2003 A1
20030174719 Srinivas et al. Sep 2003 A1
20030177221 Ould-Brahim et al. Sep 2003 A1
20030215029 Limberg Nov 2003 A1
20040022263 Zhao et al. Feb 2004 A1
20040062246 Boucher et al. Apr 2004 A1
20040128434 Khanna et al. Jul 2004 A1
20040179548 Chang et al. Sep 2004 A1
20050030948 Wyatt Feb 2005 A1
20050041684 Reynolds et al. Feb 2005 A1
20050089049 Chang et al. Apr 2005 A1
20050094649 Varanasi et al. May 2005 A1
20050132132 Rosenbluth et al. Jun 2005 A1
20050175018 Wong Aug 2005 A1
20050198523 Shanbhag et al. Sep 2005 A1
20060062233 Brewer et al. Mar 2006 A1
20060114876 Kalkunte Jun 2006 A1
20070179909 Channasagara Aug 2007 A1
20070208876 Davis Sep 2007 A1
20070235420 Chang Oct 2007 A1
20070258475 Chinn et al. Nov 2007 A1
20070288690 Shingyu et al. Dec 2007 A1
20080002707 Davis Jan 2008 A1
20080049742 Bansal Feb 2008 A1
Foreign Referenced Citations (15)
Number Date Country
2273291 Nov 2000 CA
0 838 922 Apr 1998 EP
0 876 075 Nov 1998 EP
0987861 Mar 2000 EP
0 993 162 Apr 2000 EP
60018042 Jan 1985 JP
A-06-037784 Feb 1994 JP
A-06-268685 Sep 1994 JP
08340353 Dec 1996 JP
2003289359 Oct 2003 JP
WO 0184728 Nov 2001 KR
WO 8602511 Apr 1986 WO
WO 9900950 Jan 1999 WO
WO 9927753 Jun 1999 WO
02075535 Sep 2002 WO
Related Publications (1)
Number Date Country
20080225859 A1 Sep 2008 US
Continuations (1)
Number Date Country
Parent 10613627 Jul 2003 US
Child 12051707 US
Continuation in Parts (2)
Number Date Country
Parent 09728452 Nov 2000 US
Child 10613627 US
Parent 09228678 Jan 1999 US
Child 09728452 US