WO1998027660A2 - High speed switching device - Google Patents

High speed switching device Download PDF

Info

Publication number
WO1998027660A2
WO1998027660A2 PCT/US1997/023285 US9723285W WO9827660A2 WO 1998027660 A2 WO1998027660 A2 WO 1998027660A2 US 9723285 W US9723285 W US 9723285W WO 9827660 A2 WO9827660 A2 WO 9827660A2
Authority
WO
WIPO (PCT)
Prior art keywords
memory
data packet
router
cells
cell
Prior art date
Application number
PCT/US1997/023285
Other languages
French (fr)
Other versions
WO1998027660A3 (en
WO1998027660A9 (en
Inventor
Pradeep S. Sindhu
Ramalingam K. Anand
Dennis C. Ferguson
Bjorn O. Liencres
Original Assignee
Juniper Networks
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 US08/767,576 external-priority patent/US5909440A/en
Priority claimed from US08/844,171 external-priority patent/US5905725A/en
Application filed by Juniper Networks filed Critical Juniper Networks
Priority to JP52794598A priority Critical patent/JP3459652B2/en
Priority to DE69737361T priority patent/DE69737361T2/en
Priority to EP97950980A priority patent/EP0947078B1/en
Priority to CA002274966A priority patent/CA2274966C/en
Publication of WO1998027660A2 publication Critical patent/WO1998027660A2/en
Publication of WO1998027660A3 publication Critical patent/WO1998027660A3/en
Publication of WO1998027660A9 publication Critical patent/WO1998027660A9/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/104Asynchronous transfer mode [ATM] switching fabrics
    • H04L49/105ATM switching elements
    • H04L49/108ATM switching elements using shared central buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • H04L49/153ATM switching fabrics having parallel switch planes
    • H04L49/1538Cell slicing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • H04L49/203ATM switching fabrics with multicast or broadcast capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3072Packet splitting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/608ATM switches adapted to switch variable length packets, e.g. IP packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/04Selecting arrangements for multiplex systems for time-division multiplexing
    • H04Q11/0428Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
    • H04Q11/0478Provisions for broadband connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5652Cell construction, e.g. including header, packetisation, depacketisation, assembly, reassembly
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5679Arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Definitions

  • the present invention relates generally to data routing systems, and more particularly to a method and apparatus for routing packets through a network.
  • a router In packet switch communication systems, a router is a switching device which receives packets containing data or control information on one port, and based on destination information contained within the packet, routes the packet out another port to the destination (or intermediary destination) .
  • a conventional router includes a plurality of input ports 2 each including an input buffer (memory) 4, a switching device 6 and a plurality of output ports 8.
  • Data packets received at an input port 2 are stored at least temporarily, in input buffer 4 while destination information associated with each packet is decoded to determine the appropriate switching through the switching device 6. Obviously, if the decoding process takes too long as compared to the rate at which packets are received, a larger memory element will be required. In addition, the packet may be forced to remain in the input buffer after the destination information is decoded if the switching device cannot make the connection. Blocking refers to a condition in which a connection cannot be made in the switch due to the unavailability of the desired output port (the port is busy, e.g., routing another packet from a different input port) .
  • the size of each input buffer 4 is dependent on a number of factors including: the line input rate, the speed of the look-up process, and the blocking characteristics for the switching device.
  • Each input port includes a dedicated input buffer and memory sharing between input ports is not provided for in the design.
  • Each input buffer must be sized to meet the maximum throughput requirements for a given port.
  • design trades often necessitate smaller buffers for each port. With the smaller buffers, the possibility arises for packets to be dropped due to blocking conditions. While excess memory capacity typically existed in the router (due to the varied usage of the input ports), no means for taking advantage of the excess is afforded.
  • a conventional "non-blocking" router includes a plurality of input ports 2 each including an input buffer (memory) 4, a switching device 6 and a plurality of output ports 8 each having an output buffer 9.
  • each output port 8 was configured to include an output buffer 9.
  • Each output port could simultaneously be outputting packets as well as receiving new packets for output at a later time. If the size of the output buffer was sufficiently large, then no data packets would be dropped.
  • each output port includes a dedicated output buffer and memory sharing between output ports is not provided for in the design.
  • Each output buffer must be sized to meet the maximum throughput requirements for a given port (in order to maintain its "non-blocking" characteristics). Even more excess memory capacity typically exists in the router (due to the varied usage of the input ports and output ports), yet no means for taking advantage of the excess is afforded. Twice the amount and bandwidth of memory has to be used than required to support the amount of data being moved through these types of devices.
  • the invention provides a router for switching a data packet between a source and destination in a network including a plurality of input ports each including a data handler.
  • the data handler divides a data packet into one or more fixed length cells.
  • the router includes a plurality of output ports at least one of which is for routing the data packet to the destination and a memory divided into a plurality of memory banks.
  • a input switch receives fixed length cells from the input ports and writes a single cell in a cell slot time span to each memory bank.
  • An output switch routes cells received from the memory to an appropriate output port.
  • the input switch includes a linking engine for linking cells in the data packet to allow retrieval of the data packet from non-contiguous locations in the memory.
  • the router further includes an indirect cell generator for generating one or more indirect cells.
  • the linking engine tracks the location in the memory where consecutive cells of the data packet are stored and provides an address in memory of each cell in the data packet for storage in indirect cells.
  • the input switch time division multiplexes the writing of data packets to the memory such that consecutive cells from the input port are written to consecutive banks in the memory.
  • the input switch includes a key reading engine for extracting key information from a first cell received at the input switch associated with the data packet.
  • the router further includes a controller coupled to the input switch for receiving the key information therefrom. The controller decodes destination information from the key information received from the input switch and outputs a notification defining a routing of the data packet from the memory to the output port.
  • the output port includes a result processor for receiving the notification from the controller and initiates a transfer of the data packet from the memory to the output port.
  • the input switch includes a reservation table for scheduling transfers from the memory to the output switch.
  • the output switch routes the notification to the output port and thereafter the output port issues a request to the input switch to transfer the data packet from memory to the output port through the output switch.
  • the request from the output port is stored in the reservation table.
  • the requests to transfer cells from memory to the output switch are time domain multiplexed so that during one cell slot time span at most a single read request is issued to each bank in the memory for servicing.
  • the memory outputs at most a single cell per bank in one cell slot time span.
  • One advantage of the invention is that packets may be switched through the router at line rates without requiring the storage of the packets in expensive high speed memory by providing a switching architecture that efficiently manages and routes packets through the switch.
  • Figure la and lb are block diagrams of conventional router devices.
  • Figure 2a is a schematic block diagram of a data routing system according to one embodiment of the present invention.
  • Figure 2b is a schematic block diagram of a router according to one embodiment of the present invention.
  • Figure 3 is a schematic block diagram of an input port according to one embodiment of the present invention .
  • Figure 4a is a schematic block diagram of a router including the timing and ordering of transfers from the input port to input switch according to one embodiment of the present invention.
  • Figure 4b is a data structure for a cell transferred between an input port and an input switch according to one embodiment of the present invention.
  • Figure 5a is a schematic block diagram of an input switch according to one embodiment of the present invention.
  • Figure 5b is a schematic block diagram of a router including the timing and ordering of transfers from the input port to memory according to one embodiment of the present invention.
  • Figure 6 is a data structure for a route request stored in a key buffer according to one embodiment of the present invention.
  • Figure 7 is a data structure for an indirect cell according to one embodiment of the present invention.
  • Figure 8 is a data structure for a cell transferred between the input switch and a memory bank according to one embodiment of the present invention.
  • Figure 9 is a schematic block diagram of a reservation table according to one embodiment of the present invention.
  • Figure 10 is a flow diagram of a process of loading a reservation table according to one embodiment of the present invention.
  • Figure 11a is a schematic block diagram of a memory according to one embodiment of the present invention.
  • Figure lib is a schematic block diagram of a router including the timing and ordering of transfers from the input port to memory according to one embodiment of the present invention.
  • Figure 12 is data structure for a cell output from a memory bank to output switch according to one embodiment of the present invention.
  • Figure 13 is a schematic block diagram of a controller according to one embodiment of the present invention.
  • Figure 14 is a data structure for an output request transferred from the controller to the output switch according to one embodiment of the present invention .
  • Figure 15 is a schematic block diagram of an output switch according to one embodiment of the present invention.
  • Figure 16 is a data structure for a cell transferred from the output switch to an output port according to one embodiment of the present invention.
  • Figure 17 is a schematic block diagram for an output port according to one embodiment of the present invention.
  • Figure 18 is a flow diagram for a process of routing a packet through a router according to one embodiment of the present invention.
  • Figure 19 is a schematic block diagram of a router according to one embodiment of the present invention including sequence flow information for following the flow of operations performed by the router in routing a packet from an input port to its appropriate output port.
  • Figure 20 is a schematic block diagram of a multifunction port according to one embodiment of the present invention.
  • Figure 21 is a schematic block diagram of a router including multi-function port according to one embodiment of the present invention.
  • a source 10 is connected to one or more routers 20 for transmitting packets to one or more destinations 30.
  • Each router includes a plurality of ports that are connected to various sources and destinations.
  • a packet from source 10 may pass through more than one router 20 prior to arriving at its destination.
  • each router 20 includes an input switch 100, an output switch 102, a memory 104 including one or more memory banks 105, a controller 106 and a plurality of input and output ports 107 and 108, respectively.
  • controller memory 109 for storing a routing table.
  • Input switch 100 is connected to each input port 107, while output switch 102 is connected to each output port 108 in router 20.
  • router 20 includes eight input and output ports 107 and 108, respectively.
  • packets are received at an input port 107, transferred to input switch 100 and stored temporarily in memory 104.
  • a key is read from the first data block in the packet and transferred to controller 106.
  • the key contains destination information which is derived from the header field associated with the first block of data in a packet and other information (source ID, flow ID, etc . ) .
  • a route look-up engine 110 in controller 106 performs a trie based search based on the key information and returns a result which includes the output port associated with the destination. The result is coupled with other information (source ID, flow ID, packet length, etc.) for routing the packet through router 20 and provided as a notification from controller 106 to output switch 102.
  • Output switch 102 transfers the notification to the identified output port 108.
  • the output port 108 Upon receiving the notification information, the output port 108 initiates the transfer of the packet from memory 104 through output switch 102 back to the appropriate output port 108.
  • each input port 107 includes a line input interface 300, a data handler 304 and a cell output port 306. Packets are received at line input interface 300. As the packets are received, data handler 302 divides the packets received into fixed lengths cells. In one embodiment of the present invention, the length of each cell is 80 bytes, with 16 bytes of internal header (control information) and 64 bytes of cell data. As the data handler divides the incoming packet into fixed length cells, it synchronously outputs the cells to input switch 100 through cell output port 306. Referring now to Figure 4a, a single cell 450 is transferred from an input port 107 to input switch 100 at each cell slot "T".
  • input port 107 receives a total of "N" cells, where "N” is equal to the number of input ports.
  • the data format for each cell 400 transferred from an input port 107 to input switch 100 includes an internal header 402 and a cell data field 404 as is shown in Figure 4b.
  • the internal header 402 includes a type field 406, stream field 408, and packet header fields 410.
  • the type field 406 indicates the type of cell to be transferred from the input port.
  • an input port may transfer either a data cell, an indirect cell placeholder, or a delayed indirect cell placeholder.
  • Data cells contain data associated with an incoming packet.
  • An indirect cell placeholder is an empty cell, and is used in conjunction with indirect addressing for the storage of the cells in the memory 104. Delayed indirect cell placeholders arise when a data stream that requires indirect addressing terminates at a time prior to the designated time for writing the last indirect addressing cell associated with the data stream to memory 104. The generation and operation of indirect placeholders and delayed indirect placeholders will be discussed in greater detail below in conjunction with Figure 7.
  • Stream field 408 indicates the stream to which the cell data belongs. In one embodiment of the present invention, each input port is capable of handling up to sixteen separate streams of data at a time.
  • Packet header field 410 contains header information associated with a given packet and includes start offset information, packet length and interface index information.
  • input switch 100 includes a round robin data handler 500, one or more input port interfaces (501-0 through 501-7, one for each input port 107), one or more memory interfaces 502 (502-0 through 502-7, one associated with each memory bank), a like plurality of pointers 504 (504-0 through 504-7), an output processor 505, one or more output port interfaces 506 (506-0 through 506-7, one for each output port 108), a reservation table 508, an indirect cell processor 510, controller interface 512 and read controller 516.
  • a round robin data handler 500 one or more input port interfaces (501-0 through 501-7, one for each input port 107), one or more memory interfaces 502 (502-0 through 502-7, one associated with each memory bank), a like plurality of pointers 504 (504-0 through 504-7), an output processor 505, one or more output port interfaces 506 (506-0 through 506-7, one for each output port 108), a reservation table 508, an indirect cell processor 510, controller interface 512 and
  • Round robin data handler 500 receives cells from each input port and transfers them to output processor 505 for output to an appropriate memory bank 105 in memory 104.
  • Round robin data handler 500 services the inputs (cells) received on input port interfaces 501 in a round robin, time division multiplexed manner. That is, for a given cell slot, one cell from each input port is received at the round robin data handler 500 and subsequently transferred to output processor 505 for transfer at the next cell slot to a memory bank 105 in memory 104.
  • data handler 500 transfers the next cell received from the same input port to output processor 505 for transfer to a different memory bank. In one embodiment, the next cell received is transferred to the next memory bank (next in numerical order) in the memory array. Alternatively, another time dependent permutation may be used to control the transfer of successive cells from the same input port.
  • each transmission line is considered to be very long and contains data associated with two or more cells. In operation, the transmission lines are short and multiple cells are not present on a transmission line at a given time.
  • a series of cells 450-0 through 450-7 are transferred down transmission lines 458, one from each input port 107 to input switch 100.
  • a series of cells 452-0 through 452-7 are transferred down transmission lines 458, one from each input port 107 to input switch 100.
  • Round robin data handler 500 and output processor 505 within the input switch 100 transfer cells out to memory 104 on transmission lines 460.
  • output processor 505 outputs one cell 454-B 0 to 454-B 7 to each memory bank in a single cell slot.
  • the "B x " designator indicates the input port from which the particular cell was received.
  • One cell from each input port is written to memory 104 per cell slot.
  • Tl one cell slot prior to cell slot T2
  • Round robin data handler 500 time division multiplexes the transfers to output processor 505 such that consecutive cells from the same input port are written to consecutive memory banks 105 in memory 104.
  • pointer 504 indicates the location in an associated memory bank to which the next cell will be written.
  • Output processor 505 writes a cell to a memory location in a particular memory bank based on the next available address in the bank as is indicated by the associated pointer 504.
  • Round robin data handler 500 includes a key reading engine 514 for determining the key information associated with a first cell in a packet and a linking engine 515 for linking cells in the same packet.
  • Each entry 600 includes a key 602, full address 604, offsets 606 and an indirect cell indicator 608.
  • Linking engine 515 determines the starting address (full address) in memory for the first cell in a given packet.
  • the starting address includes the bank number in memory 104 (the bank number which is assigned to store the cell by round robin data handler 500) and the first available address location in the designated bank (as is indicated by the associated pointer 504).
  • the starting address (full address 604) is stored in key buffer 516 along with the associated key 602 for the packet.
  • an offset 606 associated with the offset at which the cell is to be written is computed and stored in key buffer 516. In one embodiment of the present invention, up to four offsets 606 are stored. Each offset address is computed based on the relative offset in memory between the location of the last cell in memory and the value of the pointer 504 associated with the current memory bank which is to be written.
  • the indirect cell indicator is set, and the last offset indicates the address in memory where the first indirect cell associated with the packet is stored. Indirect cells will be described in greater detail below in conjunction with Figure 7.
  • the associated entry in key buffer 516 (a route look-up request) is forwarded via the controller interface 512 to the controller 106 for processing.
  • the key may be transferred after the first five cells have been stored in memory.
  • the linking or threading of cells for the same packet is performed by using the offsets described above and indirect cells. Offsets are used to link the first 5 cells in a packet, while indirect cells are used to link the remaining cells in a packet.
  • Indirect cell processor 510 performs the linking of cells in memory for a given packet. Indirect cell processor 510 generates indirect cells for storage in memory 104. Indirect cells contain offset information associated with the relative offset in memory space between contiguous cells in the packet. Indirect cell processor includes indirect cell memory 520 for storing indirect cell data during the formation of indirect cells.
  • the data structure for an indirect cell 700 includes a linking field 702, a plurality of offset fields 704, and a last field 706.
  • Linking field 702 when not set, indicates the current indirect cell is the last cell in the chain of indirect cells for a given packet. If set, then more indirect cells exist for the given packet. If more indirect cells exist, then last field 606 indicates the offset to the location in memory of the next indirect cell associated with the packet.
  • each indirect cell contains 56 offset data blocks for linking 56 cells in memory.
  • the linking engine processes the first five cells and stores linking information in the form of a start address and four offsets in key buffer 516.
  • the indirect cell processor takes over for the linking engine and computes the offsets associated with the locations in memory where the remaining cells in the packet are stored.
  • Round robin processor 500 passes cells to the output processor 505 for transfer to an associated memory bank in memory 104.
  • Round robin processor 500 enables the indirect cell processor when the packet being processed contains more than 5 cells (based on header information included within the first cell) .
  • indirect cell processor 510 stores in indirect cell memory 520 the address (the "indirect cell address") associated with the location in memory at which the fifth cell would have been written if it had been the last cell in the packet.
  • the indirect cell address indicates the location in memory where the indirect cell is to be written when it is full (or when the last cell of the packet is processed) .
  • the indirect cell processor When a indirect cell is full (having stored offsets in all available locations except the last field 706) , then the indirect cell processor stores the offset associated with the location in memory where the next indirect cell is located in the last field 606. Thereafter, the full indirect cell is written to its appropriate place in memory. The writing of the indirect cell to memory coincides with the receipt of an indirect cell placeholder by the input switch 100 from the associated input port 107. This process continues until the last cell in a packet is stored in memory. At that time, the last indirect cell is written to memory, and the associated entry 600 from the key buffer 516 is transferred to the controller 106 for processing.
  • a delayed indirect cell is a indirect cell that is the last indirect cell associated with a packet. It is delayed, because it is written to memory after the rest of the packet has been written to memory. The timing of the write to memory is dictated by the address which is reserved for the indirect cell.
  • Read controller 517 controls the transfer of read request signals flowing from input switch 100 out memory interface 502 to the individual memory banks in memory 104. Read controller 517 receives read requests from each output port through output port interfaces 506. The format of each request includes source identification (output port) and a full address in memory which is to be read.
  • each output port may generate a read request for processing by switch 100 to read a memory location in memory 104, resulting in the reading of a cell (a read reply) from a memory bank 105 (on a subsequent cell slot) to output switch 102.
  • output processor 505 generates a cell 800 which includes a read request source field 802, read address 804, write address 806 and data field (cell data received from input port 107) 808.
  • the read request source field 802 indicates the output port requesting the read (destination output port 108) .
  • Output processor 505 receives read requests from read controller 517 and bundles the read request with any write request received from round robin data handler 500 destined for the same memory bank.
  • output processor 505 provides a cell 800 which may include a write and read request to each memory bank 105 in memory 104.
  • Read controller 517 loads a reservation table 508 as requests to transfer packets are received from the various output ports 108.
  • the reservation table is loaded such that at every cell slot a single read request is generated for each bank of memory 105.
  • reservation table 508 includes a plurality of columns 900, one for each memory bank 105 in memory 104, a plurality of rows 902, placeholders 904 and loaded entries 906.
  • Each row represents a set of read requests (one per memory bank) to be generated on a single cell slot.
  • Each row includes a single entry for each output port 108.
  • Each output port is capable of requesting a read from a single memory bank 105 in memory 104.
  • Associated with reservation table 508 is a read pointer 908.
  • the pointer points to the next row in the reservation table to be read. Rows ahead of the read pointer correspond to requests that will be queued at a later cell slot time. In one embodiment, the pointer moves at least one row in each cell slot time.
  • Loaded entries 906 reflect read requests to be performed as a result of reservation requests received from output switch 102. Placeholders 904 represent available read requests which have not as of yet been requested.
  • the read controller 517 performs three functions: loading entries in the reservation table at the first available location in the table (after the read pointer) outputting the last row as read requests to the output processor 505; and refreshing the table, moving out the last row, incrementing the rows and creating a new row at the top of the table.
  • the number of rows in the reservation table must be as large as the product of the latency in processing read requests times the number of banks. In one embodiment, 48 rows are included in reservation table 508 reflecting a system including six cell slots of latency and eight memory banks.
  • reservation table 508 contains placeholders 904 in all of the rows 902. Placeholders 904 are locations in the reservation table which have not been loaded. As read requests are processed by the read processor, certain ones of the placeholders 904 are converted to loaded entries 906 based on the read requests. Loaded entries 906 include a read request address .
  • the process of loading the reservation table includes receiving a read request (full address) from an output port (1000).
  • the read controller decodes the read request to determine the column (based on the memory bank to be read from) in the reservation table to search (1002).
  • the read processor searches, starting at the bottom of the reservation table, for the first placeholder associated with the output port that generated the read request (1004) .
  • the read processor transforms the placeholder 904 to a loaded entry 906 by writing the full address of the read request at the location (1006).
  • the process repeats for each read request received by the read controller (1008).
  • memory 104 includes a plurality of memory banks 105.
  • Each memory bank includes a input port 1102 and output port 1104.
  • each memory bank receives at most one write and one read request via input port 1102.
  • the write requests are associated with cells received from input ports 107.
  • Read requests reflect a request for cell data to be transferred from a memory bank 105 to output switch 102.
  • the data structure associated with the cells written from memory 104 to output switch 102 is shown in Figure 12.
  • Each cell 1200 includes an output port identifier 1202 and cell data 1204.
  • the memory is divided into a plurality of banks where the number of memory banks is equal to the number of input and output ports. A one to one relationship exists between input ports, output ports and memory banks.
  • the transfer of cells from the input switch 100 to memory 104 is performed in a time division multiplex fashion. That is, consecutive cells from a given input port are directed to different memory destination locations.
  • the input switch transfers to memory a single cell from each input port (as available) into memory.
  • T+l the input switch transfers again a single cell from each input port into memory. Successive entries from the same input port are written to different memory banks 105 in memory 104.
  • controller 106 includes controller memory 109, route look-up engine 110, input switch interface 1300, and output switch interface 1302. Controller 106 receives a route look-up request from input switch 100 at the input switch interface 1300.
  • controller memory 109 is a four bank static random access memory (SRAM) that requires thirty two route look-up engines 110 to service at full bandwidth.
  • the route look-up engine servicing the route lookup request performs a best match look-up and outputs notification through output switch interface 1302 to output switch 102.
  • the notification includes a result which indicates the output port to be used in the transfer of the packet to its destination.
  • Th data structure 1400 for the notification includes a mask 1402, a next hop index pointer 1404, full address 1406, offsets 1408 and packet length 1410.
  • the mask field 1402 is used to indicate which output port connected to output switch 102 is to transfer the packet.
  • the notification may be sent to more than one output port resulting in the broadcast of the associated packet.
  • each output port 108 Associated with each output port 108 is a memory.
  • the next hop index pointer points to a location in the memory.
  • the memory is used to store media header information associated with a particular type of packet transfer. Next hop addresses and media headers will be described in greater detail below in association with output port 108.
  • the full address 1406 indicates the starting address in memory where the first cell in the packet is stored.
  • offsets 1408 provide linking information for retrieving cells or an indirect cell associated with the packet.
  • output switch includes a controller interface 1500, one or more memory inputs 1502 (1502-0 through 1502-7, one for each memory bank), one or more outputs 1504 (1504-0 through 1504-7, one for each output port), a result processor 1506 and an output processor 1508.
  • Output switch 102 performs four functions: receive output results, process output results, receive cells from memory and output cells to output ports.
  • Output processor 1508 decodes the destination output port from the cell information received from memory and transfers the cell data to the appropriate outputs 1502.
  • output switch 102 receives a cell for processing from each bank in memory 104.
  • Output switch 102 receives notification from controller 106 on controller interface 1500.
  • Result processor 1506 decodes the result (route) and determines which output port(s) 108 is (are) to receive the route data. Based on mask 1402 in the notification, result processor 1506 transfers the notification to output processor 1508 for transfer to each respective output port 108 so indicated.
  • output processor 1508 provides (via outputs 1504) a route to each output port 108.
  • the data structure associated with the data transferred from output processor 1508 to output ports 108 is shown in Figure 16.
  • a cell 1600 includes a header 1602 and data field 1604.
  • the header 1602 includes memory bank source information 1606 and route information 1608.
  • the memory bank source information includes a source identifier for indicating which memory bank provided the cell in data field 1604.
  • Route information 1608 contains data from the notification including a next hop index, packet length, full address and offsets.
  • each output port 108 includes an output switch interface 1700, an input switch interface 1702, a buffer 1704, an output request processor 1706, an line output interface 1708, storage device (memory) 1710, output buffer 1712 and output formatter 1714.
  • Output ports 108 receive notification that a packet is to be processed by cells 1600 received at the output switch interface 1700.
  • the output request processor 1706 stores the request in buffer 1704 and subsequently generates a read request to input switch 100 associated with the first address in memory where the packet is stored.
  • the output request processor 1706 generates the first read request based on the full address received from output switch 102. Thereafter subsequent read requests are generated for transmission to the input switch based on the offset information provided in the request (from cell 1600) or indirect cells (as will be described below) . If the packet length, as determined from the route information provided with the cell 1600, is greater than five (5) cells, then the output request processor first requests the transfer (read from memory) of the first indirect cell associated with the packet.
  • Subsequent indirect cells are retrieved in a similar fashion. That is, at the time for reading the next indirect cell, the address of the next indirect cell is computed based on the last offset stored in the previous indirect cell. The timing of retrieving the indirect cells is accomplished such that no delays in the output stream are required. Each subsequent indirect cell is retrieved prior to the end of the processing of the prior indirect cell. In this way, once the output stream is initialized, no buffering of data is required and no interruptions due to the latency associated with the retrieval process are experienced. Output requests to an individual memory bank are processed strictly in order.
  • output port may track each request issued to a memory bank and is assured that the data received in response to a series of requests to the same memory bank will be strictly delivered according to the sequence or pattern which they were issued.
  • Output request processor keeps track of requests generated for each memory bank.
  • Output buffer 712 includes a plurality of queues, two for each memory bank (one request queue and one reply queue) , that are used to order cells received from memory according to the particular stream to which they are assigned.
  • the request queue contains a stream number and a read address.
  • the output port 108 As cells are received back at the output port 108 (responsive to the read requests) , they are stored in output buffer 1712. For given packet, the output port stores the number of cells required to provide a streamed output. In one embodiment of the present invention, twelve cells are stored prior to beginning to output (stream data) from the output port. The selection of the number of cells for storage in output buffer 1712 is based on the latency in the read process (number of clock cycles between a read request from an output port and the arrival of the cell associated with the read request to the output port) .
  • Output formatter 1714 receives the cells from output buffer 1712 and couples the data with media header information stored in memory 1710. Each request (notification) received from output switch 102 includes a next hop index. The next hop index indicates the starting address in memory 1710 of the media header information associated with a given type of transmission (derived from the destination of the packet) . Output formatter 1714 couples the cell data returned from memory with the appropriate media header to generate a proper packet for transfer out of router 20 on the line output interface 1708.
  • a packet is received at an input port (1800) .
  • the input port divides the packet into fixed length cells and transfers the cells to an input switch (1802) .
  • Input switch removes the key information from the first cell in a packet and stores it temporarily in a key buffer (1804) . Thereafter the input switch routes the cells to memory banks in a time division multiplexed manner (1806).
  • the input switch stores the first address associated with where the first cell is written in memory and computes offsets for each additional cell associated with the offset in memory for the next contiguous memory bank into which the next cell is written (1808).
  • the input switch creates indirect cells to store linking information for the packet if the packet length exceeds five cells (1810) . If the number of cells exceeds the number of available offsets in an indirect cell, then the old indirect cell is stored in memory and a new indirect cell is created and loaded based on the offsets calculated for each new cell received at the input switch.
  • the key, full address of the first cell and offset information is transferred as a look-up request to a controller (1814).
  • the controller performs a best match look-up and generates a result of the look-up.
  • the result which includes the destination port (output port) , address, offset information and next hop index (1816).
  • a notification including the result is transferred to the output switch for transfer to the appropriate output port (1818).
  • the output port Upon receipt of a notification, the output port generates read requests a cell at a time to the input switch for the data associated with the packet (1820).
  • the input switch issues the read requests in a time division multiplexed fashion generating a single request to each memory bank per cell slot (1822) .
  • the output port associated with the request and the cell data is written to the output switch (1824) . Again, at each cell slot, the output switch transfers a single cell to each of the output ports. Upon receipt, the output port couples the cell data with media header information and streams the data to the destination (1826) .
  • an output port, an input port and a memory bank are contained in a single device.
  • the architecture of this multifunction port including memory is shown in Figure 19.
  • the multifunction port 1900 includes a memory bank 105, a line input interface 300, a data handler 302, a buffer 1704, output request processor 1706, a line output interface 1708, a storage ' device 1710, a FIFO 1712, output formatter 1714, an input switch interface 1902 and an output switch interface 1904.
  • the multifunction port is used in conjunction with the input switch, output switch and controller as is shown in Figure 20.
  • the various piece components of the input port, output port and memory bank perform the identical functions described above. However, the combination of the devices into a single unit simplifies the interfaces between the components. Specifically, the revised format for transfers between the multifunction port and the input switch is shown in Figure 21.
  • a cell 2100 transferred from a multifunction port 1900 to the input switch contains a cell header 2102 and cell data 2104.
  • Cell header 2102 includes a type field 406, stream field 408, and packet header fields 410 similar in function to those fields described above in reference to Figure 4.
  • cell header 2102 includes a read request in the form of a output port identifier 2106 and address 2108.
  • Output port identifier 2106 identifies the output port which is sourcing the read request.
  • Address 2108 indicates the address in memory 104 to be read.

Abstract

A router (20) for switching a data packet between a source (10) and destination (30) in a network including a plurality of input ports each including a data handler. The data handler divides a data packet into one or more fixed length cells. The router (20) includes a plurality of output ports at least one of which is for routing the data packet to the destination (30) and a memory divided into a plurality of memory banks. An input switch receives fixed length cells from the input ports and writes a single output switch routes cells received from the memory to an appropriate output port.

Description

HIGH SPEED SWITCHING DEVICE
Background The present invention relates generally to data routing systems, and more particularly to a method and apparatus for routing packets through a network.
In packet switch communication systems, a router is a switching device which receives packets containing data or control information on one port, and based on destination information contained within the packet, routes the packet out another port to the destination (or intermediary destination) .
Conventional routers perform this switching function by evaluating header information contained within a first data block in the packet in order to determine the proper output port for a particular packet. Efficient switching of packets through the router is of paramount concern. Referring now to Figure la, a conventional router includes a plurality of input ports 2 each including an input buffer (memory) 4, a switching device 6 and a plurality of output ports 8.
Data packets received at an input port 2 are stored at least temporarily, in input buffer 4 while destination information associated with each packet is decoded to determine the appropriate switching through the switching device 6. Obviously, if the decoding process takes too long as compared to the rate at which packets are received, a larger memory element will be required. In addition, the packet may be forced to remain in the input buffer after the destination information is decoded if the switching device cannot make the connection. Blocking refers to a condition in which a connection cannot be made in the switch due to the unavailability of the desired output port (the port is busy, e.g., routing another packet from a different input port) . The size of each input buffer 4 is dependent on a number of factors including: the line input rate, the speed of the look-up process, and the blocking characteristics for the switching device.
Unfortunately, these types of routers are inefficient in a number of respects. Each input port includes a dedicated input buffer and memory sharing between input ports is not provided for in the design. Each input buffer must be sized to meet the maximum throughput requirements for a given port. However, design trades (cost) often necessitate smaller buffers for each port. With the smaller buffers, the possibility arises for packets to be dropped due to blocking conditions. While excess memory capacity typically existed in the router (due to the varied usage of the input ports), no means for taking advantage of the excess is afforded.
To prevent the dropping of packets, designers developed "non-blocking" routers. Referring now to Figure lb, a conventional "non-blocking" router includes a plurality of input ports 2 each including an input buffer (memory) 4, a switching device 6 and a plurality of output ports 8 each having an output buffer 9. In order to avoid blocking conditions, each output port 8 was configured to include an output buffer 9. Each output port could simultaneously be outputting packets as well as receiving new packets for output at a later time. If the size of the output buffer was sufficiently large, then no data packets would be dropped. However, these designs are even more inefficient in terms of memory capacity and cost. Again, each output port includes a dedicated output buffer and memory sharing between output ports is not provided for in the design. Each output buffer must be sized to meet the maximum throughput requirements for a given port (in order to maintain its "non-blocking" characteristics). Even more excess memory capacity typically exists in the router (due to the varied usage of the input ports and output ports), yet no means for taking advantage of the excess is afforded. Twice the amount and bandwidth of memory has to be used than required to support the amount of data being moved through these types of devices.
Summary of the Invention In general, in one aspect, the invention provides a router for switching a data packet between a source and destination in a network including a plurality of input ports each including a data handler. The data handler divides a data packet into one or more fixed length cells. The router includes a plurality of output ports at least one of which is for routing the data packet to the destination and a memory divided into a plurality of memory banks. A input switch receives fixed length cells from the input ports and writes a single cell in a cell slot time span to each memory bank. An output switch routes cells received from the memory to an appropriate output port.
Aspects of the invention include the following features. The input switch includes a linking engine for linking cells in the data packet to allow retrieval of the data packet from non-contiguous locations in the memory. The router further includes an indirect cell generator for generating one or more indirect cells. The linking engine tracks the location in the memory where consecutive cells of the data packet are stored and provides an address in memory of each cell in the data packet for storage in indirect cells.
The input switch time division multiplexes the writing of data packets to the memory such that consecutive cells from the input port are written to consecutive banks in the memory. The input switch includes a key reading engine for extracting key information from a first cell received at the input switch associated with the data packet. The router further includes a controller coupled to the input switch for receiving the key information therefrom. The controller decodes destination information from the key information received from the input switch and outputs a notification defining a routing of the data packet from the memory to the output port. The output port includes a result processor for receiving the notification from the controller and initiates a transfer of the data packet from the memory to the output port. The input switch includes a reservation table for scheduling transfers from the memory to the output switch. The output switch routes the notification to the output port and thereafter the output port issues a request to the input switch to transfer the data packet from memory to the output port through the output switch. The request from the output port is stored in the reservation table. The requests to transfer cells from memory to the output switch are time domain multiplexed so that during one cell slot time span at most a single read request is issued to each bank in the memory for servicing. The memory outputs at most a single cell per bank in one cell slot time span.
One advantage of the invention is that packets may be switched through the router at line rates without requiring the storage of the packets in expensive high speed memory by providing a switching architecture that efficiently manages and routes packets through the switch.
Other advantages and features will be apparent from the following description and claims.
Brief Description of the Drawings Figure la and lb are block diagrams of conventional router devices.
Figure 2a is a schematic block diagram of a data routing system according to one embodiment of the present invention.
Figure 2b is a schematic block diagram of a router according to one embodiment of the present invention.
Figure 3 is a schematic block diagram of an input port according to one embodiment of the present invention .
Figure 4a is a schematic block diagram of a router including the timing and ordering of transfers from the input port to input switch according to one embodiment of the present invention.
Figure 4b is a data structure for a cell transferred between an input port and an input switch according to one embodiment of the present invention.
Figure 5a is a schematic block diagram of an input switch according to one embodiment of the present invention. Figure 5b is a schematic block diagram of a router including the timing and ordering of transfers from the input port to memory according to one embodiment of the present invention. Figure 6 is a data structure for a route request stored in a key buffer according to one embodiment of the present invention.
Figure 7 is a data structure for an indirect cell according to one embodiment of the present invention. Figure 8 is a data structure for a cell transferred between the input switch and a memory bank according to one embodiment of the present invention.
Figure 9 is a schematic block diagram of a reservation table according to one embodiment of the present invention.
Figure 10 is a flow diagram of a process of loading a reservation table according to one embodiment of the present invention.
Figure 11a is a schematic block diagram of a memory according to one embodiment of the present invention.
Figure lib is a schematic block diagram of a router including the timing and ordering of transfers from the input port to memory according to one embodiment of the present invention.
Figure 12 is data structure for a cell output from a memory bank to output switch according to one embodiment of the present invention.
Figure 13 is a schematic block diagram of a controller according to one embodiment of the present invention.
Figure 14 is a data structure for an output request transferred from the controller to the output switch according to one embodiment of the present invention .
Figure 15 is a schematic block diagram of an output switch according to one embodiment of the present invention.
Figure 16 is a data structure for a cell transferred from the output switch to an output port according to one embodiment of the present invention. Figure 17 is a schematic block diagram for an output port according to one embodiment of the present invention.
Figure 18 is a flow diagram for a process of routing a packet through a router according to one embodiment of the present invention. Figure 19 is a schematic block diagram of a router according to one embodiment of the present invention including sequence flow information for following the flow of operations performed by the router in routing a packet from an input port to its appropriate output port. Figure 20 is a schematic block diagram of a multifunction port according to one embodiment of the present invention.
Figure 21 is a schematic block diagram of a router including multi-function port according to one embodiment of the present invention.
Detailed Description Referring to Figure 2a, in a packet switching system, a source 10 is connected to one or more routers 20 for transmitting packets to one or more destinations 30. Each router includes a plurality of ports that are connected to various sources and destinations. A packet from source 10 may pass through more than one router 20 prior to arriving at its destination.
Referring to Figure 2b, each router 20 includes an input switch 100, an output switch 102, a memory 104 including one or more memory banks 105, a controller 106 and a plurality of input and output ports 107 and 108, respectively. Associated with the controller 106 is controller memory 109 for storing a routing table. Input switch 100 is connected to each input port 107, while output switch 102 is connected to each output port 108 in router 20. In one embodiment, router 20 includes eight input and output ports 107 and 108, respectively.
In operation, packets are received at an input port 107, transferred to input switch 100 and stored temporarily in memory 104. When the packet is received by switch 100, a key is read from the first data block in the packet and transferred to controller 106. The key contains destination information which is derived from the header field associated with the first block of data in a packet and other information (source ID, flow ID, etc . ) .
A route look-up engine 110 in controller 106 performs a trie based search based on the key information and returns a result which includes the output port associated with the destination. The result is coupled with other information (source ID, flow ID, packet length, etc.) for routing the packet through router 20 and provided as a notification from controller 106 to output switch 102. Output switch 102 transfers the notification to the identified output port 108. Upon receiving the notification information, the output port 108 initiates the transfer of the packet from memory 104 through output switch 102 back to the appropriate output port 108.
Referring to Figure 3, each input port 107 includes a line input interface 300, a data handler 304 and a cell output port 306. Packets are received at line input interface 300. As the packets are received, data handler 302 divides the packets received into fixed lengths cells. In one embodiment of the present invention, the length of each cell is 80 bytes, with 16 bytes of internal header (control information) and 64 bytes of cell data. As the data handler divides the incoming packet into fixed length cells, it synchronously outputs the cells to input switch 100 through cell output port 306. Referring now to Figure 4a, a single cell 450 is transferred from an input port 107 to input switch 100 at each cell slot "T". For a given cell slot "T", input port 107 receives a total of "N" cells, where "N" is equal to the number of input ports. The data format for each cell 400 transferred from an input port 107 to input switch 100 includes an internal header 402 and a cell data field 404 as is shown in Figure 4b. The internal header 402 includes a type field 406, stream field 408, and packet header fields 410.
The type field 406 indicates the type of cell to be transferred from the input port. At each cell slot (20 clock cycles in one embodiment), an input port may transfer either a data cell, an indirect cell placeholder, or a delayed indirect cell placeholder. Data cells contain data associated with an incoming packet. An indirect cell placeholder is an empty cell, and is used in conjunction with indirect addressing for the storage of the cells in the memory 104. Delayed indirect cell placeholders arise when a data stream that requires indirect addressing terminates at a time prior to the designated time for writing the last indirect addressing cell associated with the data stream to memory 104. The generation and operation of indirect placeholders and delayed indirect placeholders will be discussed in greater detail below in conjunction with Figure 7. Stream field 408 indicates the stream to which the cell data belongs. In one embodiment of the present invention, each input port is capable of handling up to sixteen separate streams of data at a time.
Packet header field 410 contains header information associated with a given packet and includes start offset information, packet length and interface index information.
Referring to Figure 5a, input switch 100 includes a round robin data handler 500, one or more input port interfaces (501-0 through 501-7, one for each input port 107), one or more memory interfaces 502 (502-0 through 502-7, one associated with each memory bank), a like plurality of pointers 504 (504-0 through 504-7), an output processor 505, one or more output port interfaces 506 (506-0 through 506-7, one for each output port 108), a reservation table 508, an indirect cell processor 510, controller interface 512 and read controller 516.
Round robin data handler 500 receives cells from each input port and transfers them to output processor 505 for output to an appropriate memory bank 105 in memory 104. Round robin data handler 500 services the inputs (cells) received on input port interfaces 501 in a round robin, time division multiplexed manner. That is, for a given cell slot, one cell from each input port is received at the round robin data handler 500 and subsequently transferred to output processor 505 for transfer at the next cell slot to a memory bank 105 in memory 104. At the next time cell slot, data handler 500 transfers the next cell received from the same input port to output processor 505 for transfer to a different memory bank. In one embodiment, the next cell received is transferred to the next memory bank (next in numerical order) in the memory array. Alternatively, another time dependent permutation may be used to control the transfer of successive cells from the same input port.
Referring to Figure 5b, the timing and ordering of transfers from the input to memory is shown. For the purposes of this example, a sequence of cells is depicted on each transmission line. For the purposes of this example only each transmission line is considered to be very long and contains data associated with two or more cells. In operation, the transmission lines are short and multiple cells are not present on a transmission line at a given time. At cell slot T4 a series of cells 450-0 through 450-7 are transferred down transmission lines 458, one from each input port 107 to input switch 100. At cell slot T3 (one just prior in time to cell slot T4) a series of cells 452-0 through 452-7 are transferred down transmission lines 458, one from each input port 107 to input switch 100.
Round robin data handler 500 and output processor 505 within the input switch 100 transfer cells out to memory 104 on transmission lines 460. As can be seen at cell slot T2, output processor 505 outputs one cell 454-B0 to 454-B7 to each memory bank in a single cell slot. The "Bx" designator indicates the input port from which the particular cell was received. One cell from each input port is written to memory 104 per cell slot. At time period Tl (one cell slot prior to cell slot T2), again one cell (456-B0to 456-B7) is written to each memory bank. Round robin data handler 500 time division multiplexes the transfers to output processor 505 such that consecutive cells from the same input port are written to consecutive memory banks 105 in memory 104. Referring again to Figure 5a, pointer 504 indicates the location in an associated memory bank to which the next cell will be written. Output processor 505 writes a cell to a memory location in a particular memory bank based on the next available address in the bank as is indicated by the associated pointer 504. Round robin data handler 500 includes a key reading engine 514 for determining the key information associated with a first cell in a packet and a linking engine 515 for linking cells in the same packet.
The process of reading key information is known in the art. After the key is determined for a given packet, it is stored temporarily in key buffer 516 in input switch 100 until the entire packet has been stored in memory 104. The data structure for entries 600 in the key buffer 516 is shown in Figure 6. Each entry 600 includes a key 602, full address 604, offsets 606 and an indirect cell indicator 608.
Linking engine 515 determines the starting address (full address) in memory for the first cell in a given packet. The starting address includes the bank number in memory 104 (the bank number which is assigned to store the cell by round robin data handler 500) and the first available address location in the designated bank (as is indicated by the associated pointer 504). The starting address (full address 604) is stored in key buffer 516 along with the associated key 602 for the packet. When the next cell associated with the same packet arrives at switch 100, an offset 606 associated with the offset at which the cell is to be written (relative to the full address) is computed and stored in key buffer 516. In one embodiment of the present invention, up to four offsets 606 are stored. Each offset address is computed based on the relative offset in memory between the location of the last cell in memory and the value of the pointer 504 associated with the current memory bank which is to be written.
If more than five data cells are included in a packet, then the indirect cell indicator is set, and the last offset indicates the address in memory where the first indirect cell associated with the packet is stored. Indirect cells will be described in greater detail below in conjunction with Figure 7. After the packet has been stored in memory, the associated entry in key buffer 516 (a route look-up request) is forwarded via the controller interface 512 to the controller 106 for processing. Alternatively, the key may be transferred after the first five cells have been stored in memory. The linking or threading of cells for the same packet is performed by using the offsets described above and indirect cells. Offsets are used to link the first 5 cells in a packet, while indirect cells are used to link the remaining cells in a packet. In one embodiment, if a cell contains 5 cells or less, no indirect cells are required to be used. Indirect cell processor 510 performs the linking of cells in memory for a given packet. Indirect cell processor 510 generates indirect cells for storage in memory 104. Indirect cells contain offset information associated with the relative offset in memory space between contiguous cells in the packet. Indirect cell processor includes indirect cell memory 520 for storing indirect cell data during the formation of indirect cells.
Referring now to Figure 7, the data structure for an indirect cell 700 includes a linking field 702, a plurality of offset fields 704, and a last field 706. Linking field 702, when not set, indicates the current indirect cell is the last cell in the chain of indirect cells for a given packet. If set, then more indirect cells exist for the given packet. If more indirect cells exist, then last field 606 indicates the offset to the location in memory of the next indirect cell associated with the packet. In one embodiment of the present invention, each indirect cell contains 56 offset data blocks for linking 56 cells in memory.
As was described above, when a packet is received, the linking engine processes the first five cells and stores linking information in the form of a start address and four offsets in key buffer 516. In the event more than five cells are contained within a packet, the indirect cell processor takes over for the linking engine and computes the offsets associated with the locations in memory where the remaining cells in the packet are stored. Round robin processor 500 passes cells to the output processor 505 for transfer to an associated memory bank in memory 104. Round robin processor 500 enables the indirect cell processor when the packet being processed contains more than 5 cells (based on header information included within the first cell) . At the time for writing the fifth cell to memory, indirect cell processor 510 stores in indirect cell memory 520 the address (the "indirect cell address") associated with the location in memory at which the fifth cell would have been written if it had been the last cell in the packet. The indirect cell address indicates the location in memory where the indirect cell is to be written when it is full (or when the last cell of the packet is processed) .
When a indirect cell is full (having stored offsets in all available locations except the last field 706) , then the indirect cell processor stores the offset associated with the location in memory where the next indirect cell is located in the last field 606. Thereafter, the full indirect cell is written to its appropriate place in memory. The writing of the indirect cell to memory coincides with the receipt of an indirect cell placeholder by the input switch 100 from the associated input port 107. This process continues until the last cell in a packet is stored in memory. At that time, the last indirect cell is written to memory, and the associated entry 600 from the key buffer 516 is transferred to the controller 106 for processing.
As often will be the case, the last cell of a packet will not coincide with the timing required to write the completed indirect cell immediately into memory. This is because packet length is completely arbitrary. The end of a packet will likely not coincide with the filing of an entire indirect cell. When a packet has completed (all cells have been received by the input switch) and the last entry in the indirect cell is written, the indirect cell is free to be written to memory. However, the writing will be delayed until the proper time, hence the term delayed indirect cell. A delayed indirect cell is a indirect cell that is the last indirect cell associated with a packet. It is delayed, because it is written to memory after the rest of the packet has been written to memory. The timing of the write to memory is dictated by the address which is reserved for the indirect cell. As was described above, at the time for the creation of an indirect cell, its position in memory is reserved. The delayed indirect cell will be written to memory at the next time slot available for the particular input port to write to the particular memory bank after the packet has been completed. The timing of the write to memory of delayed indirect cells coincides with the receipt of a delayed indirect placeholder from the appropriate input port 107. Read controller 517 controls the transfer of read request signals flowing from input switch 100 out memory interface 502 to the individual memory banks in memory 104. Read controller 517 receives read requests from each output port through output port interfaces 506. The format of each request includes source identification (output port) and a full address in memory which is to be read. At each cell slot, each output port may generate a read request for processing by switch 100 to read a memory location in memory 104, resulting in the reading of a cell (a read reply) from a memory bank 105 (on a subsequent cell slot) to output switch 102.
The data structure of a cell transferred from input switch 100 (via the output processor 505) to a memory bank 105 in memory 104 is shown in Figure 8. At each cell slot, output processor 505 generates a cell 800 which includes a read request source field 802, read address 804, write address 806 and data field (cell data received from input port 107) 808. The read request source field 802 indicates the output port requesting the read (destination output port 108) . Output processor 505 receives read requests from read controller 517 and bundles the read request with any write request received from round robin data handler 500 destined for the same memory bank. At each cell slot, output processor 505 provides a cell 800 which may include a write and read request to each memory bank 105 in memory 104.
Read controller 517 loads a reservation table 508 as requests to transfer packets are received from the various output ports 108. The reservation table is loaded such that at every cell slot a single read request is generated for each bank of memory 105. Referring now to Figure 9, reservation table 508 includes a plurality of columns 900, one for each memory bank 105 in memory 104, a plurality of rows 902, placeholders 904 and loaded entries 906. Each row represents a set of read requests (one per memory bank) to be generated on a single cell slot. Each row includes a single entry for each output port 108. At each cell slot, each output port is capable of requesting a read from a single memory bank 105 in memory 104. Associated with reservation table 508 is a read pointer 908. The pointer points to the next row in the reservation table to be read. Rows ahead of the read pointer correspond to requests that will be queued at a later cell slot time. In one embodiment, the pointer moves at least one row in each cell slot time.
Loaded entries 906 reflect read requests to be performed as a result of reservation requests received from output switch 102. Placeholders 904 represent available read requests which have not as of yet been requested. At each cell slot, the read controller 517 performs three functions: loading entries in the reservation table at the first available location in the table (after the read pointer) outputting the last row as read requests to the output processor 505; and refreshing the table, moving out the last row, incrementing the rows and creating a new row at the top of the table. The number of rows in the reservation table must be as large as the product of the latency in processing read requests times the number of banks. In one embodiment, 48 rows are included in reservation table 508 reflecting a system including six cell slots of latency and eight memory banks.
At initialization, reservation table 508 contains placeholders 904 in all of the rows 902. Placeholders 904 are locations in the reservation table which have not been loaded. As read requests are processed by the read processor, certain ones of the placeholders 904 are converted to loaded entries 906 based on the read requests. Loaded entries 906 include a read request address .
Referring now to Figure 10, the process of loading the reservation table includes receiving a read request (full address) from an output port (1000). The read controller decodes the read request to determine the column (based on the memory bank to be read from) in the reservation table to search (1002). The read processor searches, starting at the bottom of the reservation table, for the first placeholder associated with the output port that generated the read request (1004) . The read processor transforms the placeholder 904 to a loaded entry 906 by writing the full address of the read request at the location (1006). The process repeats for each read request received by the read controller (1008).
Referring now to Figure 11, memory 104 includes a plurality of memory banks 105. Each memory bank includes a input port 1102 and output port 1104. At each cell slot, each memory bank receives at most one write and one read request via input port 1102. The write requests are associated with cells received from input ports 107. Read requests reflect a request for cell data to be transferred from a memory bank 105 to output switch 102. The data structure associated with the cells written from memory 104 to output switch 102 is shown in Figure 12. Each cell 1200 includes an output port identifier 1202 and cell data 1204.
In one embodiment, the memory is divided into a plurality of banks where the number of memory banks is equal to the number of input and output ports. A one to one relationship exists between input ports, output ports and memory banks. In this embodiment, the transfer of cells from the input switch 100 to memory 104 is performed in a time division multiplex fashion. That is, consecutive cells from a given input port are directed to different memory destination locations. At each time period (cell slot) , the input switch transfers to memory a single cell from each input port (as available) into memory. At a next time T+l the input switch transfers again a single cell from each input port into memory. Successive entries from the same input port are written to different memory banks 105 in memory 104.
Referring now to Figure 13, controller 106 includes controller memory 109, route look-up engine 110, input switch interface 1300, and output switch interface 1302. Controller 106 receives a route look-up request from input switch 100 at the input switch interface 1300. In one embodiment of the present invention a plurality of route look-up engines 110 are included in controller 106, each receiving look-up requests in round-robin fashion so as to speed the routing process. In one embodiment, controller memory 109 is a four bank static random access memory (SRAM) that requires thirty two route look-up engines 110 to service at full bandwidth. The matching of keys retrieved from a packet in order to determine a best match route through the router is described in greater detail in co-pending patent application entitled "HIGH SPEED VARIABLE LENGTH BEST MATCH LOOK-UP IN A SWITCHING DEVICE", filed on December 16, 1996, by Fergusen et al., serial number 08/767,576, which is hereby expressly incorporated by reference.
The route look-up engine servicing the route lookup request performs a best match look-up and outputs notification through output switch interface 1302 to output switch 102. The notification includes a result which indicates the output port to be used in the transfer of the packet to its destination.
Referring now to Figure 14, the data structure associated with the notification outputted by the controller 106 to the output switch 102 is shown. Th data structure 1400 for the notification includes a mask 1402, a next hop index pointer 1404, full address 1406, offsets 1408 and packet length 1410.
The mask field 1402 is used to indicate which output port connected to output switch 102 is to transfer the packet. In one embodiment, the notification may be sent to more than one output port resulting in the broadcast of the associated packet.
Associated with each output port 108 is a memory. The next hop index pointer points to a location in the memory. The memory is used to store media header information associated with a particular type of packet transfer. Next hop addresses and media headers will be described in greater detail below in association with output port 108.
The full address 1406 indicates the starting address in memory where the first cell in the packet is stored. As was described above, offsets 1408 provide linking information for retrieving cells or an indirect cell associated with the packet.
Referring now to Figure 15, output switch includes a controller interface 1500, one or more memory inputs 1502 (1502-0 through 1502-7, one for each memory bank), one or more outputs 1504 (1504-0 through 1504-7, one for each output port), a result processor 1506 and an output processor 1508. Output switch 102 performs four functions: receive output results, process output results, receive cells from memory and output cells to output ports.
Cells from memory are received at memory inputs 1502 and transferred to output processor 1508. Output processor 1508 decodes the destination output port from the cell information received from memory and transfers the cell data to the appropriate outputs 1502. At each cell slot, output switch 102 receives a cell for processing from each bank in memory 104.
Output switch 102 receives notification from controller 106 on controller interface 1500. Result processor 1506 decodes the result (route) and determines which output port(s) 108 is (are) to receive the route data. Based on mask 1402 in the notification, result processor 1506 transfers the notification to output processor 1508 for transfer to each respective output port 108 so indicated. At each cell slot, output processor 1508 provides (via outputs 1504) a route to each output port 108. The data structure associated with the data transferred from output processor 1508 to output ports 108 is shown in Figure 16. A cell 1600 includes a header 1602 and data field 1604. The header 1602 includes memory bank source information 1606 and route information 1608. The memory bank source information includes a source identifier for indicating which memory bank provided the cell in data field 1604. Route information 1608 contains data from the notification including a next hop index, packet length, full address and offsets.
Referring now to Figure 17, each output port 108 includes an output switch interface 1700, an input switch interface 1702, a buffer 1704, an output request processor 1706, an line output interface 1708, storage device (memory) 1710, output buffer 1712 and output formatter 1714.
Output ports 108 receive notification that a packet is to be processed by cells 1600 received at the output switch interface 1700. The output request processor 1706 stores the request in buffer 1704 and subsequently generates a read request to input switch 100 associated with the first address in memory where the packet is stored. The output request processor 1706 generates the first read request based on the full address received from output switch 102. Thereafter subsequent read requests are generated for transmission to the input switch based on the offset information provided in the request (from cell 1600) or indirect cells (as will be described below) . If the packet length, as determined from the route information provided with the cell 1600, is greater than five (5) cells, then the output request processor first requests the transfer (read from memory) of the first indirect cell associated with the packet. This is accomplished by computing the address of the indirect cell based on the full address and the offsets provided in cell 1600. After the indirect cell request is generated, the output request processor generates read requests for the remaining cells in the packet based on the full address and the offsets provided in cell 1600. Upon receipt of a indirect cell from the output switch 102, output request processor continues to generate read requests for the remaining cells in the packet based on the offset information contained within the indirect cell.
Subsequent indirect cells are retrieved in a similar fashion. That is, at the time for reading the next indirect cell, the address of the next indirect cell is computed based on the last offset stored in the previous indirect cell. The timing of retrieving the indirect cells is accomplished such that no delays in the output stream are required. Each subsequent indirect cell is retrieved prior to the end of the processing of the prior indirect cell. In this way, once the output stream is initialized, no buffering of data is required and no interruptions due to the latency associated with the retrieval process are experienced. Output requests to an individual memory bank are processed strictly in order. That is, output port may track each request issued to a memory bank and is assured that the data received in response to a series of requests to the same memory bank will be strictly delivered according to the sequence or pattern which they were issued. Output request processor keeps track of requests generated for each memory bank. Output buffer 712 includes a plurality of queues, two for each memory bank (one request queue and one reply queue) , that are used to order cells received from memory according to the particular stream to which they are assigned. The request queue contains a stream number and a read address. When a request is issued to memory, the entry is removed from the request queue and the stream number portion is placed in the reply queue. When a reply is received, the entry at the head of the reply queue is removed and the reply is sent to the stream number indicated by the stream number retrieved from the reply queue .
As cells are received back at the output port 108 (responsive to the read requests) , they are stored in output buffer 1712. For given packet, the output port stores the number of cells required to provide a streamed output. In one embodiment of the present invention, twelve cells are stored prior to beginning to output (stream data) from the output port. The selection of the number of cells for storage in output buffer 1712 is based on the latency in the read process (number of clock cycles between a read request from an output port and the arrival of the cell associated with the read request to the output port) .
Output formatter 1714 receives the cells from output buffer 1712 and couples the data with media header information stored in memory 1710. Each request (notification) received from output switch 102 includes a next hop index. The next hop index indicates the starting address in memory 1710 of the media header information associated with a given type of transmission (derived from the destination of the packet) . Output formatter 1714 couples the cell data returned from memory with the appropriate media header to generate a proper packet for transfer out of router 20 on the line output interface 1708.
Referring now to Figure 18, in a method of routing packets through a switch a packet is received at an input port (1800) . The input port divides the packet into fixed length cells and transfers the cells to an input switch (1802) . Input switch removes the key information from the first cell in a packet and stores it temporarily in a key buffer (1804) . Thereafter the input switch routes the cells to memory banks in a time division multiplexed manner (1806). The input switch stores the first address associated with where the first cell is written in memory and computes offsets for each additional cell associated with the offset in memory for the next contiguous memory bank into which the next cell is written (1808). The input switch creates indirect cells to store linking information for the packet if the packet length exceeds five cells (1810) . If the number of cells exceeds the number of available offsets in an indirect cell, then the old indirect cell is stored in memory and a new indirect cell is created and loaded based on the offsets calculated for each new cell received at the input switch.
When the packet (and its indirect cells if any) have been stored in memory, then the key, full address of the first cell and offset information is transferred as a look-up request to a controller (1814). The controller performs a best match look-up and generates a result of the look-up. The result which includes the destination port (output port) , address, offset information and next hop index (1816). A notification including the result is transferred to the output switch for transfer to the appropriate output port (1818). Upon receipt of a notification, the output port generates read requests a cell at a time to the input switch for the data associated with the packet (1820). The input switch issues the read requests in a time division multiplexed fashion generating a single request to each memory bank per cell slot (1822) . When the memory bank receives the request from the input switch, the output port associated with the request and the cell data is written to the output switch (1824) . Again, at each cell slot, the output switch transfers a single cell to each of the output ports. Upon receipt, the output port couples the cell data with media header information and streams the data to the destination (1826) .
Alternative Embodiments
In one embodiment of the present invention, an output port, an input port and a memory bank are contained in a single device. The architecture of this multifunction port including memory is shown in Figure 19. Specifically, the multifunction port 1900 includes a memory bank 105, a line input interface 300, a data handler 302, a buffer 1704, output request processor 1706, a line output interface 1708, a storage' device 1710, a FIFO 1712, output formatter 1714, an input switch interface 1902 and an output switch interface 1904.
The multifunction port is used in conjunction with the input switch, output switch and controller as is shown in Figure 20. The various piece components of the input port, output port and memory bank perform the identical functions described above. However, the combination of the devices into a single unit simplifies the interfaces between the components. Specifically, the revised format for transfers between the multifunction port and the input switch is shown in Figure 21.
A cell 2100 transferred from a multifunction port 1900 to the input switch contains a cell header 2102 and cell data 2104. Cell header 2102 includes a type field 406, stream field 408, and packet header fields 410 similar in function to those fields described above in reference to Figure 4. In addition, cell header 2102 includes a read request in the form of a output port identifier 2106 and address 2108. Output port identifier 2106 identifies the output port which is sourcing the read request. Address 2108 indicates the address in memory 104 to be read.
The present invention has been described in terms of specific embodiments, which are illustrative of the invention and not to be construed as limiting. Other embodiments are within the scope of the following claims.
What is claimed is:

Claims

1. A router for switching a data packet between a source and destination in a network comprising: an input port including a data handler, the input port receiving the data packet from the source, the data handler dividing the data packet into one or more fixed length cells; an output port for routing the data packet to the destination; a memory divided into a plurality of memory banks; an input switch for receiving the fixed length cells from the input port and routing a single cell in a cell slot time span to each memory bank; and an output switch for routing cells received from the memory to the output port .
2. The router of claim 1 where the input switch includes a linking engine for linking cells in the data packet to allow retrieval of the data packet from noncontiguous locations in the memory.
3. The router of claim 2 further including an indirect cell generator for generating one or more indirect cells, the linking engine tracking the location in the memory where consecutive cells of the data packet are stored and providing an address in memory of each cell in the data packet for storage in indirect cells.
4. The router of claim 1 wherein the input switch time division multiplexes the writing of data packets to the memory such that consecutive cells from the input port are written to consecutive banks in the memory.
5. The router of claim 1 wherein the input switch includes a key reading engine for extracting key information from a first cell received at the input switch associated with the data packet, the router further including a controller coupled to the input switch and receiving the key information therefrom, the controller for decoding destination information from the key information received from the input switch and outputting a notification defining a routing of the data packet from the memory to the output port.
6. The router of claim 5 wherein the output port includes a result processor for receiving the notification from the controller and initiating a transfer of the data packet from the memory to the output port.
7. The router of claim 1 wherein the input switch includes a reservation table for scheduling transfers from the memory to the output switch.
8. The router of claim 7 further including a controller coupled to the input switch and the output switch for decoding destination information received from the input switch and outputting a notification to the output switch defining a routing of the data packet from the memory to the output port.
9. The router of claim 8 wherein the output switch routes the notification to the output port and thereafter the output port issues a request to the input switch to transfer the data packet from memory to the output port through the output switch.
10. The router of claim 9 wherein the request from the output port is stored in the reservation table.
11. The router of claim 10 wherein requests to transfer cells from memory to the output switch are time domain multiplexed so that during one cell slot time span at most a single read request is issued to each bank in the memory for servicing.
12. The router of claim 9 wherein the memory outputs at most a single cell per bank in one cell slot time span.
13. A router for switching a data packet between a source and destination in a network comprising; an input port for receiving a data packet from the source, the input port including a data handler for dividing the data packet into fixed length cells; a memory divided into a plurality of memory banks; an input switch including a linking engine, the input switch receiving at most a single cell from the input port in a cell slot time span and routing at most a single cell from the input port to the memory in a cell slot, the input switch time division multiplexes writing of cells to the memory such that consecutive cells from the input port are written to consecutive banks in the memory, the linking engine for linking cells in the data packet to allow retrieval of the data packet from noncontiguous locations in the memory; a controller for decoding destination information associated with the data packet, the controller outputting a notification defining a routing of the data packet through the router; an output port including a result processor for receiving the notification from the controller and initiating a transfer of the data packet from memory to the output port; and an output switch for routing cells received from the memory to the output port.
14. A router for switching a data packet between a source and destination in a network comprising: a plurality of input ports each including a data handler, a first input port receiving the data packet from the source, the data handler of the first input port dividing the data packet into one or more fixed length cells; a plurality of output ports at least one of which is for routing the data packet to the destination; a memory divided into a plurality of memory banks; an input switch for receiving fixed length cells from one or more input ports and routing a single cell in a cell slot time span to each memory bank; and an output switch for routing cells received from the memory to an appropriate output port.
15. The router of claim 14 where the input switch includes a linking engine for linking cells in the data packet to allow retrieval of the data packet from non- contiguous locations in the memory.
16. The router of claim 15 further including a indirect cell generator for generating one or more indirect cells, the linking engine tracking the location in the memory where consecutive cells of the data packet are stored and providing an address in memory of each cell in the data packet for storage in indirect cells.
17. The router of claim 14 wherein the input switch time division multiplexes the writing of cells to the memory such that consecutive cells from any input port are written to different banks in the memory.
18. The router of claim 14 wherein the input switch includes a key reading engine for extracting key information from a first cell received at the input switch associated with the data packet, the router further including a controller coupled to the input switch and receiving the key information therefrom, the controller for decoding destination information from the key information received from the input switch and outputting a notification defining a routing of the data packet from the memory to an appropriate output port.
19. The router of claim 18 wherein the output port includes a result processor for receiving the notification from the controller and initiating a transfer of the data packet from the memory to the appropriate output port.
20. The router of claim 14 wherein the input switch includes a reservation table for scheduling transfers from the memory to the output switch.
21. The router of claim 20 further including a controller coupled to the input switch and the output switch for decoding destination information received from the input switch and outputting a notification to the output switch defining a routing of the data packet from the memory to the appropriate output port.
22. The router of claim 21 wherein the output switch routes the notification to the output port and thereafter the output port issues a request to the input switch to transfer the data packet from memory to the appropriate output port through the output switch.
23. The router of claim 22 wherein the request from the output port is stored in the reservation table.
24. The router of claim 23 wherein requests to transfer cells from memory to the output switch are time domain multiplexed so that during one cell slot time span at most a single read request is issued to each bank in the memory for servicing.
25. The router of claim 22 wherein the memory outputs at most a single cell per bank in one cell slot time span.
PCT/US1997/023285 1996-12-16 1997-12-16 High speed switching device WO1998027660A2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP52794598A JP3459652B2 (en) 1996-12-16 1997-12-16 High-speed switching device
DE69737361T DE69737361T2 (en) 1996-12-16 1997-12-16 FAST COMMUNICATION DEVICE
EP97950980A EP0947078B1 (en) 1996-12-16 1997-12-16 High speed switching device
CA002274966A CA2274966C (en) 1996-12-16 1997-12-16 High speed switching device

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US08/767,576 1996-12-16
US08/767,576 US5909440A (en) 1996-12-16 1996-12-16 High speed variable length best match look-up in a switching device
US08/844,171 1997-04-18
US08/844,171 US5905725A (en) 1996-12-16 1997-04-18 High speed switching device
US08/901,061 1997-07-24
US08/901,061 US6493347B2 (en) 1996-12-16 1997-07-24 Memory organization in a switching device

Publications (3)

Publication Number Publication Date
WO1998027660A2 true WO1998027660A2 (en) 1998-06-25
WO1998027660A3 WO1998027660A3 (en) 1998-10-15
WO1998027660A9 WO1998027660A9 (en) 1998-11-26

Family

ID=27419639

Family Applications (3)

Application Number Title Priority Date Filing Date
PCT/US1997/023287 WO1998027662A2 (en) 1996-12-16 1997-12-16 High speed variable length best match look-up in a switching device
PCT/US1997/023407 WO1998027697A1 (en) 1996-12-16 1997-12-16 Memory organization in a switching device
PCT/US1997/023285 WO1998027660A2 (en) 1996-12-16 1997-12-16 High speed switching device

Family Applications Before (2)

Application Number Title Priority Date Filing Date
PCT/US1997/023287 WO1998027662A2 (en) 1996-12-16 1997-12-16 High speed variable length best match look-up in a switching device
PCT/US1997/023407 WO1998027697A1 (en) 1996-12-16 1997-12-16 Memory organization in a switching device

Country Status (6)

Country Link
US (11) US6493347B2 (en)
EP (3) EP0947078B1 (en)
JP (3) JP3453148B2 (en)
CA (3) CA2274962C (en)
DE (2) DE69737361T2 (en)
WO (3) WO1998027662A2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1009132A2 (en) * 1998-12-09 2000-06-14 Hitachi, Ltd. Variable length packet communication device
EP1011229A2 (en) * 1998-12-14 2000-06-21 Lucent Technologies Inc. Multi-port ram based cross-connect system
EP1179929A2 (en) * 2000-08-11 2002-02-13 Marconi Communications, Inc. Transferring and queueing length and data as one stream
EP1179930A3 (en) * 2000-08-11 2002-06-19 Marconi Communications, Inc. Long Packet handling
EP1264430A1 (en) * 2000-03-10 2002-12-11 Tellabs Operations, Inc. Non-consecutive data readout scheduler
US8861515B2 (en) 2003-04-22 2014-10-14 Agere Systems Llc Method and apparatus for shared multi-bank memory in a packet switching system

Families Citing this family (213)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6046999A (en) * 1996-09-03 2000-04-04 Hitachi, Ltd. Router apparatus using ATM switch
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US6791947B2 (en) 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
JPH11167560A (en) * 1997-12-03 1999-06-22 Nec Corp Data transfer system, switching circuit used to the transfer system, adapter, integrated circuit having the transfer system and data transfer method
US6590901B1 (en) * 1998-04-01 2003-07-08 Mosaid Technologies, Inc. Method and apparatus for providing a packet buffer random access memory
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6580721B1 (en) * 1998-08-11 2003-06-17 Nortel Networks Limited Routing and rate control in a universal transfer mode network
FR2783618B1 (en) * 1998-09-23 2002-01-04 France Telecom METHOD FOR UPDATING A TRIE-TYPE ASSOCIATIVE MEMORY, AND ROUTER IMPLEMENTING SUCH A METHOD
US6608816B1 (en) * 1998-11-18 2003-08-19 Nortel Networks Limited Method and apparatus for providing differentiated services using a multi-level queuing mechanism
US7382736B2 (en) 1999-01-12 2008-06-03 Mcdata Corporation Method for scoring queued frames for selective transmission through a switch
JP4294142B2 (en) * 1999-02-02 2009-07-08 株式会社日立製作所 Disk subsystem
FR2789778B1 (en) * 1999-02-12 2001-09-14 France Telecom METHOD FOR ASSOCIATING ROUTING REFERENCES WITH DATA PACKETS BY MEANS OF A SORTED MEMORY, AND PACKET ROUTER APPLYING THIS METHOD
US6757791B1 (en) * 1999-03-30 2004-06-29 Cisco Technology, Inc. Method and apparatus for reordering packet data units in storage queues for reading and writing memory
US6748481B1 (en) * 1999-04-06 2004-06-08 Microsoft Corporation Streaming information appliance with circular buffer for receiving and selectively reading blocks of streaming information
JP3570323B2 (en) * 1999-05-11 2004-09-29 日本電気株式会社 How to store prefixes for addresses
US7778259B1 (en) 1999-05-14 2010-08-17 Dunti Llc Network packet transmission mechanism
US6788701B1 (en) * 1999-05-14 2004-09-07 Dunti Llc Communication network having modular switches that enhance data throughput
US6618390B1 (en) * 1999-05-21 2003-09-09 Advanced Micro Devices, Inc. Method and apparatus for maintaining randomly accessible free buffer information for a network switch
GB9912129D0 (en) * 1999-05-26 1999-07-28 3Com Corp Communication device with forwarding database having having a trie search facility
US7996670B1 (en) * 1999-07-08 2011-08-09 Broadcom Corporation Classification engine in a cryptography acceleration chip
GB2352145A (en) * 1999-07-16 2001-01-17 Texas Instruments Ltd Prevention of bottlenecking in data transfers
JP2001060967A (en) * 1999-08-23 2001-03-06 Fujitsu Ltd Packet switch device
US7102999B1 (en) 1999-11-24 2006-09-05 Juniper Networks, Inc. Switching device
US6681270B1 (en) * 1999-12-07 2004-01-20 Texas Instruments Incorporated Effective channel priority processing for transfer controller with hub and ports
US6643257B1 (en) 2000-01-04 2003-11-04 International Business Machines Corporation Verifying performance of a buffering and selection network device
US6684209B1 (en) * 2000-01-14 2004-01-27 Hitachi, Ltd. Security method and system for storage subsystem
US7657727B2 (en) * 2000-01-14 2010-02-02 Hitachi, Ltd. Security for logical unit in storage subsystem
JP4651230B2 (en) 2001-07-13 2011-03-16 株式会社日立製作所 Storage system and access control method to logical unit
JP4294821B2 (en) * 2000-01-26 2009-07-15 株式会社日立製作所 Network relay device
US6947430B2 (en) * 2000-03-24 2005-09-20 International Business Machines Corporation Network adapter with embedded deep packet processing
US7050437B2 (en) * 2000-03-24 2006-05-23 International Business Machines Corporation Wire speed reassembly of data frames
JP2001292164A (en) * 2000-04-06 2001-10-19 Nec Corp Packet switch and its switching method
US6798777B1 (en) * 2000-04-17 2004-09-28 Juniper Networks, Inc. Filtering and route lookup in a switching device
US7688727B1 (en) 2000-04-17 2010-03-30 Juniper Networks, Inc. Filtering and route lookup in a switching device
US7215637B1 (en) 2000-04-17 2007-05-08 Juniper Networks, Inc. Systems and methods for processing packets
US7106728B1 (en) 2000-05-01 2006-09-12 Industrial Technology Research Institute Switching by multistage interconnection of concentrators
US7023864B2 (en) * 2000-05-01 2006-04-04 Riverdelta Networks, Inc Data packet discarding
US6957272B2 (en) * 2000-05-24 2005-10-18 Alcatel Internetworking (Pe), Inc. Stackable lookup engines
JP4719957B2 (en) * 2000-05-24 2011-07-06 株式会社日立製作所 Storage control device, storage system, and storage system security setting method
US6591285B1 (en) 2000-06-16 2003-07-08 Shuo-Yen Robert Li Running-sum adder networks determined by recursive construction of multi-stage networks
US7111071B1 (en) * 2000-06-29 2006-09-19 Intel Corporation Longest prefix match for IP routers
KR100454336B1 (en) * 2000-07-07 2004-10-26 엘지전자 주식회사 Apparatus and Method of Managing Cells in the ATM Switch
US6640233B1 (en) * 2000-08-18 2003-10-28 Network Appliance, Inc. Reserving file system blocks
JP3646638B2 (en) * 2000-09-06 2005-05-11 日本電気株式会社 Packet switching apparatus and switch control method used therefor
US6965615B1 (en) * 2000-09-18 2005-11-15 Cisco Technology, Inc. Packet striping across a parallel header processor
JP2002109885A (en) * 2000-09-28 2002-04-12 Toshiba Corp Semiconductor storage device
US6745277B1 (en) * 2000-10-04 2004-06-01 Force10 Networks, Inc. Intelligent interleaving scheme for multibank memory
US7006505B1 (en) * 2000-10-23 2006-02-28 Bay Microsystems, Inc. Memory management system and algorithm for network processor architecture
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US6735218B2 (en) * 2000-11-17 2004-05-11 Foundry Networks, Inc. Method and system for encoding wide striped cells
US7236490B2 (en) 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US7356030B2 (en) 2000-11-17 2008-04-08 Foundry Networks, Inc. Network switch cross point
US6876657B1 (en) * 2000-12-14 2005-04-05 Chiaro Networks, Ltd. System and method for router packet control and ordering
US6741562B1 (en) * 2000-12-15 2004-05-25 Tellabs San Jose, Inc. Apparatus and methods for managing packets in a broadband data stream
US7002980B1 (en) 2000-12-19 2006-02-21 Chiaro Networks, Ltd. System and method for router queue and congestion management
US20040004966A1 (en) * 2001-04-27 2004-01-08 Foster Michael S. Using virtual identifiers to route transmitted data through a network
US7206283B2 (en) 2001-05-15 2007-04-17 Foundry Networks, Inc. High-performance network switch
US7103059B2 (en) * 2001-06-15 2006-09-05 Industrial Technology Research Institute Scalable 2-stage interconnections
US7609695B2 (en) * 2001-06-15 2009-10-27 Industrial Technology Research Institute Optimizing switching element for minimal latency
US7418536B2 (en) * 2001-07-30 2008-08-26 Cisco Technology, Inc. Processor having systolic array pipeline for processing data packets
US7382787B1 (en) 2001-07-30 2008-06-03 Cisco Technology, Inc. Packet routing and switching device
US6987775B1 (en) * 2001-08-15 2006-01-17 Internet Machines Corp. Variable size First In First Out (FIFO) memory with head and tail caching
US8213322B2 (en) * 2001-09-24 2012-07-03 Topside Research, Llc Dynamically distributed weighted fair queuing
US7046660B2 (en) * 2001-10-03 2006-05-16 Internet Machines Corp. Switching apparatus for high speed channels using multiple parallel lower speed channels while maintaining data rate
US7362751B2 (en) * 2001-10-03 2008-04-22 Topside Research, Llc Variable length switch fabric
US6735604B2 (en) * 2001-10-09 2004-05-11 Arthur O. Miller Method for storing and retrieving data objects
US20030088694A1 (en) * 2001-11-02 2003-05-08 Internet Machines Corporation Multicasting method and switch
US7389360B1 (en) 2001-11-05 2008-06-17 Juniper Networks, Inc. Context switched route lookup key engine
US7653072B2 (en) * 2001-11-13 2010-01-26 Transwitch Corporation Overcoming access latency inefficiency in memories for packet switched networks
US7203203B2 (en) * 2001-12-05 2007-04-10 Internet Machines Corp. Message ring in a switching network
US7161950B2 (en) * 2001-12-10 2007-01-09 Intel Corporation Systematic memory location selection in Ethernet switches
JP4153201B2 (en) * 2001-12-19 2008-09-24 富士通株式会社 Communication control method, communication system, and computer program
US7106740B1 (en) * 2002-01-02 2006-09-12 Juniper Networks, Inc. Nexthop to a forwarding table
US6967951B2 (en) * 2002-01-11 2005-11-22 Internet Machines Corp. System for reordering sequenced based packets in a switching network
US7420987B1 (en) 2002-01-17 2008-09-02 Juniper Networks, Inc. Arbiter for multiple mutually exclusive vectors
US7135508B2 (en) * 2002-02-20 2006-11-14 The University Of Chicago Coatings and films derived from clay/wax nanocomposites
US7009989B2 (en) * 2002-03-05 2006-03-07 Hewlett-Packard Development Company, L.P. Forwarding ordered data packets with less delay
US7352766B2 (en) * 2002-03-12 2008-04-01 Alcatel Lucent High-speed memory having a modular structure
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7266117B1 (en) 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US7649885B1 (en) * 2002-05-06 2010-01-19 Foundry Networks, Inc. Network routing system for enhanced efficiency and monitoring capability
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US20030214949A1 (en) * 2002-05-16 2003-11-20 Nadim Shaikli System for reordering sequenced based packets in a switching network
KR100442627B1 (en) * 2002-05-20 2004-08-02 삼성전자주식회사 Method for redirecting packet on network processor
US7710991B1 (en) 2002-06-20 2010-05-04 Cisco Technology, Inc. Scalable packet routing and switching device and method
US7525904B1 (en) 2002-06-20 2009-04-28 Cisco Technology, Inc. Redundant packet routing and switching device and method
US7450438B1 (en) 2002-06-20 2008-11-11 Cisco Technology, Inc. Crossbar apparatus for a forwarding table memory in a router
WO2004002081A1 (en) * 2002-06-21 2003-12-31 Thomson Licensing S.A. Routing engine for a broadcast router
CA2490915C (en) * 2002-06-27 2013-11-19 Tellabs Operations, Inc. Apparatus and method to switch packets using a switch fabric with memory
US8051176B2 (en) 2002-11-07 2011-11-01 Hewlett-Packard Development Company, L.P. Method and system for predicting connections in a computer network
US7363347B2 (en) * 2002-11-07 2008-04-22 Hewlett-Packard Development Company, L.P. Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US20040098509A1 (en) * 2002-11-14 2004-05-20 Vic Alfano System for reordering sequenced based packet segments in a switching network
US20040103086A1 (en) * 2002-11-26 2004-05-27 Bapiraju Vinnakota Data structure traversal instructions for packet processing
US7782885B1 (en) * 2002-12-10 2010-08-24 Cisco Technology, Inc. System and method for queue management using queue sets
US20040123123A1 (en) * 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
US7568110B2 (en) 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
US7536476B1 (en) 2002-12-20 2009-05-19 Cisco Technology, Inc. Method for performing tree based ACL lookups
JP3865748B2 (en) * 2003-01-20 2007-01-10 富士通株式会社 Network switch device and network switch method
US20050216770A1 (en) * 2003-01-24 2005-09-29 Mistletoe Technologies, Inc. Intrusion detection system
JP2004287475A (en) * 2003-01-27 2004-10-14 Fujitsu Ten Ltd Electronic controller and electronic driving device
US7242684B2 (en) * 2003-02-07 2007-07-10 Fujitsu Limited Architecture for switching packets in a high-speed switching environment
US7990987B2 (en) 2003-02-25 2011-08-02 Topside Research, Llc Network processor having bypass capability
US20040206470A1 (en) * 2003-04-18 2004-10-21 William Marsh Rice University Containerless infiltration with electromagnetic levitation
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
JP2004364109A (en) * 2003-06-06 2004-12-24 Canon Inc Temporary address communication apparatus, program, recording medium and method
US7167942B1 (en) * 2003-06-09 2007-01-23 Marvell International Ltd. Dynamic random access memory controller
US7149842B2 (en) * 2003-07-17 2006-12-12 Sun Microsystems, Inc. Efficient utilization of shared buffer memory and method for operating the same
US7412454B2 (en) 2003-09-03 2008-08-12 International Business Machines Corporation Data structure supporting random delete and timer function
US7584454B1 (en) 2003-09-10 2009-09-01 Nextaxiom Technology, Inc. Semantic-based transactional support and recovery for nested composite software services
US7483901B1 (en) * 2003-09-10 2009-01-27 Nextaxiom Technology, Inc. System and method for data transfer between two or more connected software services
US7533387B1 (en) 2003-09-10 2009-05-12 Nextaxiom Technology, Inc. Guaranteed invocation/consumption of nested, composite software services
US7581205B1 (en) 2003-09-30 2009-08-25 Nextaxiom Technology, Inc. System and method of implementing a customizable software platform
US7454552B2 (en) * 2003-11-18 2008-11-18 Topside Research, Llc Switch with transparent and non-transparent ports
US7421532B2 (en) * 2003-11-18 2008-09-02 Topside Research, Llc Switching with transparent and non-transparent ports
US8225282B1 (en) 2003-11-25 2012-07-17 Nextaxiom Technology, Inc. Semantic-based, service-oriented system and method of developing, programming and managing software modules and software solutions
US20050141434A1 (en) * 2003-12-24 2005-06-30 Linden Cornett Method, system, and program for managing buffers
US20050198361A1 (en) * 2003-12-29 2005-09-08 Chandra Prashant R. Method and apparatus for meeting a given content throughput using at least one memory channel
US7539190B2 (en) * 2004-01-05 2009-05-26 Topside Research, Llc Multicasting in a shared address space
US7426602B2 (en) * 2004-01-08 2008-09-16 Topside Research, Llc Switch for bus optimization
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US7385984B2 (en) * 2004-03-30 2008-06-10 Extreme Networks, Inc. Packet processing system architecture and method
US8161270B1 (en) 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US7292591B2 (en) * 2004-03-30 2007-11-06 Extreme Networks, Inc. Packet processing system architecture and method
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US9998802B2 (en) * 2004-06-07 2018-06-12 Sling Media LLC Systems and methods for creating variable length clips from a media stream
US7769756B2 (en) 2004-06-07 2010-08-03 Sling Media, Inc. Selection and presentation of context-relevant supplemental content and advertising
US7917932B2 (en) 2005-06-07 2011-03-29 Sling Media, Inc. Personal video recorder functionality for placeshifting systems
US7975062B2 (en) 2004-06-07 2011-07-05 Sling Media, Inc. Capturing and sharing media content
US8458453B1 (en) 2004-06-11 2013-06-04 Dunti Llc Method and apparatus for securing communication over public network
US7660310B1 (en) * 2004-06-23 2010-02-09 Emc Corporation Index processing
DE112005002084T5 (en) * 2004-08-25 2007-07-26 MeshNetworks, Inc., Maitland Non-802.11 waveforms in the presence of 802.11
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
JP4622490B2 (en) * 2004-12-02 2011-02-02 株式会社日立製作所 Data transfer device
US8050280B2 (en) * 2004-12-02 2011-11-01 Electronics And Telecommunications Research Institute Efficient switching device and method for fabricating the same using multiple shared memories
US20060136717A1 (en) 2004-12-20 2006-06-22 Mark Buer System and method for authentication via a proximate device
US8295484B2 (en) 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
US7889712B2 (en) 2004-12-23 2011-02-15 Cisco Technology, Inc. Methods and apparatus for providing loop free routing tables
US7555681B2 (en) * 2005-05-13 2009-06-30 Texas Instruments Incorporated Multi-port trace receiver
US7672304B2 (en) * 2005-06-16 2010-03-02 Samsung Electronics Co., Ltd. Method and system for switching frames in a switching system
US20070041392A1 (en) * 2005-08-22 2007-02-22 Aaron Kunze Adaptive message buffering
US7609707B2 (en) * 2005-08-31 2009-10-27 Alcatel Lucent Communication traffic management systems and methods
US7747833B2 (en) 2005-09-30 2010-06-29 Mosaid Technologies Incorporated Independent link and bank selection
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
WO2007036050A1 (en) 2005-09-30 2007-04-05 Mosaid Technologies Incorporated Memory with output control
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US8020006B2 (en) * 2006-02-10 2011-09-13 Cisco Technology, Inc. Pipeline for high-throughput encrypt functions
JP2009532954A (en) 2006-03-31 2009-09-10 クゥアルコム・インコーポレイテッド Memory management for high-speed media access control
JP4992296B2 (en) * 2006-05-30 2012-08-08 株式会社日立製作所 Transfer processing device
JP2008042504A (en) * 2006-08-04 2008-02-21 Nec Corp Switching apparatus, switch method, and program
US7903654B2 (en) 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US8155011B2 (en) 2007-01-11 2012-04-10 Foundry Networks, Llc Techniques for using dual memory structures for processing failure detection protocol packets
US7680117B1 (en) * 2007-03-30 2010-03-16 Juniper Networks, Inc. Forwarding packets using next-hop information
US7817627B2 (en) * 2007-06-21 2010-10-19 Maged E. Beshai Large-scale packet switch
US7822915B2 (en) * 2007-06-30 2010-10-26 Alcatel-Lucent Usa Inc. Memory controller for packet applications
US8271859B2 (en) * 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8037399B2 (en) 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8149839B1 (en) 2007-09-26 2012-04-03 Foundry Networks, Llc Selection of trunk ports and paths using rotation
US8190881B2 (en) 2007-10-15 2012-05-29 Foundry Networks Llc Scalable distributed web-based authentication
US9178785B1 (en) 2008-01-24 2015-11-03 NextAxiom Technology, Inc Accounting for usage and usage-based pricing of runtime engine
US8683572B1 (en) 2008-01-24 2014-03-25 Dunti Llc Method and apparatus for providing continuous user verification in a packet-based network
US7852486B2 (en) * 2008-02-07 2010-12-14 Board Of Regents, The University Of Texas System Wavelength and intensity monitoring of optical cavity
GB2458952B (en) * 2008-04-04 2012-06-13 Micron Technology Inc Queue processing method
US8195774B2 (en) 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
US8625624B1 (en) * 2008-06-13 2014-01-07 Cisco Technology, Inc. Self-adjusting load balancing among multiple fabric ports
JP4988674B2 (en) * 2008-09-08 2012-08-01 株式会社日立製作所 Network monitoring device, network monitoring method, and network monitoring program
JP5332430B2 (en) * 2008-09-11 2013-11-06 富士通株式会社 Shared memory system
US8171148B2 (en) 2009-04-17 2012-05-01 Sling Media, Inc. Systems and methods for establishing connections between devices communicating over a network
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8179898B2 (en) * 2009-06-11 2012-05-15 Alcatel Lucent Packet processing using braided tries
US8621099B2 (en) * 2009-09-21 2013-12-31 Sling Media, Inc. Systems and methods for formatting media content for distribution
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US9015225B2 (en) 2009-11-16 2015-04-21 Echostar Technologies L.L.C. Systems and methods for delivering messages over a network
US9178923B2 (en) 2009-12-23 2015-11-03 Echostar Technologies L.L.C. Systems and methods for remotely controlling a media server via a network
US9275054B2 (en) 2009-12-28 2016-03-01 Sling Media, Inc. Systems and methods for searching media content
US8208484B2 (en) * 2010-01-11 2012-06-26 Telefonaktiebolaget L M Ericsson (Publ) Forwarding a packet within a router using fragments over an interconnect
US9229886B2 (en) * 2010-04-30 2016-01-05 Hewlett Packard Enterprise Development Lp Management data transfer between processors
US8665727B1 (en) * 2010-06-21 2014-03-04 Xilinx, Inc. Placement and routing for a multiplexer-based interconnection network
US9113185B2 (en) 2010-06-23 2015-08-18 Sling Media Inc. Systems and methods for authorizing access to network services using information obtained from subscriber equipment
US8756361B1 (en) * 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
US8565092B2 (en) * 2010-11-18 2013-10-22 Cisco Technology, Inc. Dynamic flow redistribution for head of line blocking avoidance
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US8646013B2 (en) 2011-04-29 2014-02-04 Sling Media, Inc. Identifying instances of media programming available from different content sources
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US8769533B2 (en) * 2011-07-18 2014-07-01 International Business Machines Corporation Check-point based high availability: network packet buffering in hardware
US8944159B2 (en) * 2011-08-05 2015-02-03 Cameron International Corporation Horizontal fracturing tree
US20130060795A1 (en) * 2011-09-07 2013-03-07 Unisys Corp. Prepared statements to improve performance in database interfaces
US8706736B2 (en) * 2011-09-30 2014-04-22 Broadcom Corporation Extended width entries for hash tables
WO2013068862A1 (en) * 2011-11-11 2013-05-16 International Business Machines Corporation Memory module and memory controller for controlling a memory module
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US8923298B2 (en) * 2012-05-04 2014-12-30 Futurewei Technoligies, Inc. Optimized trie-based address lookup
US9037670B2 (en) 2012-09-18 2015-05-19 Cisco Technology, Inc. Ultra low latency network buffer storage
US10061531B2 (en) * 2015-01-29 2018-08-28 Knuedge Incorporated Uniform system wide addressing for a computing system
US9552327B2 (en) 2015-01-29 2017-01-24 Knuedge Incorporated Memory controller for a network on a chip device
US20170017419A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US20170017414A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices
US20170017567A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Implementing Distributed-Linked Lists For Network Devices
US20170017420A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US11169978B2 (en) 2015-10-14 2021-11-09 Dr Holdco 2, Inc. Distributed pipeline optimization for data preparation
US11288447B2 (en) 2015-10-14 2022-03-29 Dr Holdco 2, Inc. Step editor for data preparation
US10642815B2 (en) * 2015-10-14 2020-05-05 Paxata, Inc. Step editor for data preparation
US10027583B2 (en) 2016-03-22 2018-07-17 Knuedge Incorporated Chained packet sequences in a network on a chip architecture
US10346049B2 (en) 2016-04-29 2019-07-09 Friday Harbor Llc Distributed contiguous reads in a network on a chip architecture
CN106027422B (en) * 2016-05-13 2020-05-08 上海兆芯集成电路有限公司 Exchanger and data access method
US9832072B1 (en) * 2016-05-31 2017-11-28 128 Technology, Inc. Self-configuring computer network router
US10659353B2 (en) 2016-11-03 2020-05-19 International Business Machines Corporation Dynamic scriptable routing
US10680977B1 (en) * 2017-09-26 2020-06-09 Amazon Technologies, Inc. Splitting data into an information vector and a control vector and processing, at a stage of a control pipeline, the control vector and a data block of the information vector extracted from a corresponding stage of a data pipeline
US11270032B1 (en) * 2018-12-27 2022-03-08 Thales E-Security, Inc. Tamper switch assembly and installation method thereof
WO2020236275A1 (en) 2019-05-23 2020-11-26 Cray Inc. System and method for facilitating dynamic command management in a network interface controller (nic)
US11252030B2 (en) * 2019-10-02 2022-02-15 Cisco Technology, Inc. Network scale emulator

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448702A (en) * 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US5491694A (en) * 1994-01-28 1996-02-13 Cabletron Systems, Inc. System and method for allocating a shared resource among competing devices

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870474A (en) * 1995-12-04 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for providing conditional access in connection-oriented, interactive networks with a multiplicity of service providers
US4058672A (en) 1976-11-10 1977-11-15 International Telephone And Telegraph Corporation Packet-switched data communications system
US4596010A (en) 1984-05-03 1986-06-17 At&T Bell Laboratories Distributed packet switching arrangement
EP0260392A3 (en) * 1986-09-19 1992-03-11 International Business Machines Corporation An input output interface controller connecting a synchronous bus to an asynchronous bus and methods for performing operations on the buses
US5199106A (en) * 1986-09-19 1993-03-30 International Business Machines Corporation Input output interface controller connecting a synchronous bus to an asynchronous bus and methods for performing operations on the bus
US5293597A (en) * 1987-03-09 1994-03-08 At&T Bell Laboratories Concurrent context memory management unit
ZA883232B (en) * 1987-05-06 1989-07-26 Dowd Research Pty Ltd O Packet switches,switching methods,protocols and networks
FR2616604B1 (en) 1987-06-15 1989-09-22 Lespagnol Albert EQUIPMENT FOR RECONSTRUCTING AND MULTIPLEXING FRAMES OF VARIOUS ORIGINS CONSISTING OF PACKETS OF FIXED LENGTH IN VARIABLE NUMBER
FR2618624B1 (en) 1987-07-24 1992-04-30 Michel Servel HYBRID TIME MULTIPLEX SWITCHING SYSTEM WITH OPTIMIZED BUFFER MEMORY
DE3742939A1 (en) 1987-12-18 1989-07-06 Standard Elektrik Lorenz Ag METHOD FOR HYBRID PACKING AND DEVICES THEREFOR
FR2625392B1 (en) 1987-12-24 1993-11-26 Quinquis Jean Paul CIRCUIT FOR MANAGING BUFFER WRITE POINTERS IN PARTICULAR FOR SELF-ROUTING PACKET TIME SWITCH
US5155834A (en) * 1988-03-18 1992-10-13 Wang Laboratories, Inc. Reference and change table storage system for virtual memory data processing system having a plurality of processors accessing common memory
JP2667868B2 (en) 1988-04-06 1997-10-27 株式会社日立製作所 Cell switching system
DE3824849A1 (en) * 1988-07-21 1990-01-25 Kempten Elektroschmelz Gmbh PRESSURIZED POLYCRYSTALLINE MIXING MATERIALS BASED ON HEXAGONAL BORNITRIDE, OXIDES AND CARBIDES
US5860136A (en) * 1989-06-16 1999-01-12 Fenner; Peter R. Method and apparatus for use of associated memory with large key spaces
US5490258A (en) * 1991-07-29 1996-02-06 Fenner; Peter R. Associative memory for very large key spaces
WO1991002420A1 (en) 1989-08-09 1991-02-21 Alcatel N.V. Communication switching element and method for transmitting variable length cells
EP0422910A3 (en) * 1989-10-10 1991-11-06 American Telephone And Telegraph Company High capacity memory based packet switches
US5130983A (en) * 1990-03-27 1992-07-14 Heffner Iii Horace W Method of polling to determine service needs and the like
US5265207A (en) * 1990-10-03 1993-11-23 Thinking Machines Corporation Parallel computer system including arrangement for transferring messages from a source processor to selected ones of a plurality of destination processors and combining responses
US5367643A (en) * 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
US5168492A (en) * 1991-04-11 1992-12-01 Northern Telecom Limited Rotating-access ATM-STM packet switch
EP0520116A1 (en) * 1991-06-28 1992-12-30 International Business Machines Corporation Method and apparatus for performing pattern search functions
US5623489A (en) * 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5241536A (en) * 1991-10-03 1993-08-31 Northern Telecom Limited Broadband input buffered atm switch
JP2839060B2 (en) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション Data processing system and data processing method
IL101623A (en) * 1992-04-16 1997-06-10 Fortress U & T 2000 Ltd Digital signature device
AU4661793A (en) * 1992-07-02 1994-01-31 Wellfleet Communications Data packet processing method and apparatus
CA2144953A1 (en) * 1992-09-29 1994-04-14 Paul Baran Cell based wide area network alternative access telephone and data system
FR2701180B1 (en) * 1993-01-29 1995-03-10 Cit Alcatel Cellulization device and device for decellulizing synchronous digital channels, switching center for synchronous digital channels, and switching center for asynchronous digital channels.
US5530902A (en) * 1993-06-14 1996-06-25 Motorola, Inc. Data packet switching system having DMA controller, service arbiter, buffer type managers, and buffer managers for managing data transfer to provide less processor intervention
FR2707775B1 (en) * 1993-07-12 1996-04-12 Duret Chrsitian Method and device for analyzing information contained in data structures.
US5515376A (en) * 1993-07-19 1996-05-07 Alantec, Inc. Communication apparatus and methods
US5408469A (en) * 1993-07-22 1995-04-18 Synoptics Communications, Inc. Routing device utilizing an ATM switch as a multi-channel backplane in a communication network
US5457687A (en) 1993-09-02 1995-10-10 Network Equipment Technologies, Inc. Method and apparatus for backward explicit congestion notification (BECN) in an ATM network
JPH0795525A (en) * 1993-09-17 1995-04-07 Canon Inc Digital signal recorder
CA2134061A1 (en) * 1993-10-28 1995-04-29 Aaron William Ogus Frame buffering of network packets
US5384568A (en) * 1993-12-02 1995-01-24 Bell Communications Research, Inc. Data compression
GB2291561B (en) * 1994-05-21 1998-09-23 Northern Telecom Ltd Communications system
JP3059639B2 (en) * 1994-07-14 2000-07-04 古河電気工業株式会社 Route selection information search device
US5627970A (en) * 1994-08-08 1997-05-06 Lucent Technologies Inc. Methods and apparatus for achieving and maintaining optimum transmission rates and preventing data loss in a processing system nework
JP3224963B2 (en) * 1994-08-31 2001-11-05 株式会社東芝 Network connection device and packet transfer method
JP3269273B2 (en) * 1994-09-02 2002-03-25 三菱電機株式会社 Cell switching device and cell switching system
US5537403A (en) * 1994-12-30 1996-07-16 At&T Corp. Terabit per second packet switch having distributed out-of-band control of circuit and packet switching communications
US5539815A (en) 1995-02-24 1996-07-23 At&T Corp. Network call routing controlled by a management node
US5956751A (en) * 1995-06-28 1999-09-21 Industrial Technology Research Institute Computer memory management system using physical segmentation space allocation
US5796944A (en) 1995-07-12 1998-08-18 3Com Corporation Apparatus and method for processing data frames in an internetworking device
US5719864A (en) * 1995-08-11 1998-02-17 International Business Machines Corp. Logical channel resolution in asynchronous transmission mode communication systems
US5745837A (en) * 1995-08-25 1998-04-28 Terayon Corporation Apparatus and method for digital data transmission over a CATV system using an ATM transport protocol and SCDMA
JPH0983535A (en) * 1995-09-14 1997-03-28 Toshiba Corp Cell data exchange method/device
US6085233A (en) * 1995-12-29 2000-07-04 Pankosmion, Inc. System and method for cellular network computing and communications
US5689505A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Buffering of multicast cells in switching networks
US5859835A (en) * 1996-04-15 1999-01-12 The Regents Of The University Of California Traffic scheduling system and method for packet-switched networks
US5872787A (en) * 1996-05-15 1999-02-16 Gte Laboratories Incorporated Distributed switch buffer utilizing cascaded modular switch chips
US6308148B1 (en) * 1996-05-28 2001-10-23 Cisco Technology, Inc. Network flow data export
US5946716A (en) * 1996-05-30 1999-08-31 Hewlett-Packard Company Sectored virtual memory management system and translation look-aside buffer (TLB) for the same
US5802052A (en) 1996-06-26 1998-09-01 Level One Communication, Inc. Scalable high performance switch element for a shared memory packet or ATM cell switch fabric
US5802054A (en) * 1996-08-15 1998-09-01 3Com Corporation Atomic network switch with integrated circuit switch nodes
US5924091A (en) * 1996-08-28 1999-07-13 Sybase, Inc. Database system with improved methods for radix sorting
US5987034A (en) * 1996-08-30 1999-11-16 Cisco Technology, Inc. ATM cells within frame relay technology
US6101543A (en) * 1996-10-25 2000-08-08 Digital Equipment Corporation Pseudo network adapter for frame capture, encapsulation and encryption
US5912889A (en) * 1996-11-21 1999-06-15 Xerox Corporation ATM switch with output port clustering for dynamically allocating bandwidth between ports
US5905725A (en) * 1996-12-16 1999-05-18 Juniper Networks High speed switching device
US6493347B2 (en) 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US5909440A (en) * 1996-12-16 1999-06-01 Juniper Networks High speed variable length best match look-up in a switching device
US6091705A (en) * 1996-12-20 2000-07-18 Sebring Systems, Inc. Method and apparatus for a fault tolerant, software transparent and high data integrity extension to a backplane bus or interconnect
DE69719934T2 (en) * 1996-12-20 2003-11-27 Ibm Method and device for fast and secure data collection
US5991305A (en) * 1997-02-14 1999-11-23 Advanced Micro Devices, Inc. Integrated multiport switch having independently resettable management information base (MIB)
US6229821B1 (en) * 1997-04-22 2001-05-08 At&T Corp. Serial data transmission of variable length mini packets using statistical multiplexing
US6075787A (en) * 1997-05-08 2000-06-13 Lucent Technologies Inc. Method and apparatus for messaging, signaling, and establishing a data link utilizing multiple modes over a multiple access broadband communications network
US6151638A (en) * 1997-06-25 2000-11-21 Unisys Corp. System and method for performing external procedure calls from a client program to a server program to a server program and back to the client program while both are running in a heterogenous computer
US6014380A (en) * 1997-06-30 2000-01-11 Sun Microsystems, Inc. Mechanism for packet field replacement in a multi-layer distributed network element
US6201813B1 (en) * 1997-06-30 2001-03-13 Cisco Technology, Inc. Method and apparatus for using ATM queues for segmentation and reassembly of data frames
US6212183B1 (en) * 1997-08-22 2001-04-03 Cisco Technology, Inc. Multiple parallel packet routing lookup
US6553002B1 (en) * 1997-08-29 2003-04-22 Ascend Communications, Inc. Apparatus and method for routing data packets through a communications network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448702A (en) * 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US5491694A (en) * 1994-01-28 1996-02-13 Cabletron Systems, Inc. System and method for allocating a shared resource among competing devices

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP0947078A2 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1009132A2 (en) * 1998-12-09 2000-06-14 Hitachi, Ltd. Variable length packet communication device
EP1009132A3 (en) * 1998-12-09 2004-05-26 Hitachi, Ltd. Variable length packet communication device
EP1011229A3 (en) * 1998-12-14 2004-04-28 Lucent Technologies Inc. Multi-port ram based cross-connect system
EP1011229A2 (en) * 1998-12-14 2000-06-21 Lucent Technologies Inc. Multi-port ram based cross-connect system
US7061865B2 (en) 2000-03-10 2006-06-13 Tellabs Operations, Inc. Data packet scheduler
EP1264430A1 (en) * 2000-03-10 2002-12-11 Tellabs Operations, Inc. Non-consecutive data readout scheduler
EP1264430A4 (en) * 2000-03-10 2003-05-14 Tellabs Operations Inc Non-consecutive data readout scheduler
EP1179929A3 (en) * 2000-08-11 2002-05-15 Marconi Communications, Inc. Transferring and queueing length and data as one stream
EP1179930A3 (en) * 2000-08-11 2002-06-19 Marconi Communications, Inc. Long Packet handling
US7035267B1 (en) 2000-08-11 2006-04-25 Marconi Intellectual Property (Ringfence), Inc. Transferring and queueing length and data as one stream
EP1179929A2 (en) * 2000-08-11 2002-02-13 Marconi Communications, Inc. Transferring and queueing length and data as one stream
US7224693B1 (en) 2000-08-11 2007-05-29 Ericsson Ab Long packet handling
US8861515B2 (en) 2003-04-22 2014-10-14 Agere Systems Llc Method and apparatus for shared multi-bank memory in a packet switching system

Also Published As

Publication number Publication date
US7545808B2 (en) 2009-06-09
EP0947078A2 (en) 1999-10-06
WO1998027660A3 (en) 1998-10-15
US20060023719A1 (en) 2006-02-02
EP0940025B1 (en) 2007-02-14
US20010010692A1 (en) 2001-08-02
JP2001509978A (en) 2001-07-24
US7116660B2 (en) 2006-10-03
EP0948849A4 (en) 2006-06-14
CA2274966A1 (en) 1998-06-25
DE69737357D1 (en) 2007-03-29
US20130215886A1 (en) 2013-08-22
DE69737361T2 (en) 2007-06-21
US7489699B2 (en) 2009-02-10
CA2274966C (en) 2003-10-28
US20140181235A1 (en) 2014-06-26
CA2274964C (en) 2003-08-19
CA2274964A1 (en) 1998-06-25
JP2000516423A (en) 2000-12-05
EP0947078B1 (en) 2007-02-14
US6493347B2 (en) 2002-12-10
JP2000516424A (en) 2000-12-05
JP3453148B2 (en) 2003-10-06
US20030108056A1 (en) 2003-06-12
WO1998027662A2 (en) 1998-06-25
US8189605B2 (en) 2012-05-29
EP0940025A1 (en) 1999-09-08
EP0947078A4 (en) 2001-08-29
US20090268740A1 (en) 2009-10-29
WO1998027697A1 (en) 1998-06-25
US20090109975A1 (en) 2009-04-30
US20050201396A1 (en) 2005-09-15
US20110164618A1 (en) 2011-07-07
US20120219001A1 (en) 2012-08-30
EP0940025A4 (en) 2001-08-29
US8761180B2 (en) 2014-06-24
CA2274962A1 (en) 1998-06-25
EP0948849A2 (en) 1999-10-13
DE69737361D1 (en) 2007-03-29
US8477784B2 (en) 2013-07-02
US9411776B2 (en) 2016-08-09
US7903659B2 (en) 2011-03-08
US6917620B1 (en) 2005-07-12
CA2274962C (en) 2002-08-06
WO1998027662A3 (en) 1998-09-03
JP3459653B2 (en) 2003-10-20
JP3459652B2 (en) 2003-10-20
US8681796B2 (en) 2014-03-25
DE69737357T2 (en) 2007-06-21

Similar Documents

Publication Publication Date Title
US5905725A (en) High speed switching device
EP0947078B1 (en) High speed switching device
WO1998027660A9 (en) High speed switching device
EP1013132B1 (en) Switch arrangement
US8010751B2 (en) Data forwarding engine
EP0778686B1 (en) ATM switch with input and output ports
US6636518B1 (en) Synchronizing source-synchronous links in a switching device
EP0471344A1 (en) Traffic shaping method and circuit
JPH11510285A (en) Memory interface unit, shared memory switch system and related methods
US8706896B2 (en) Guaranteed bandwidth memory apparatus and method
JPH0346850A (en) Cell exchange device

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): CA JP

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

AK Designated states

Kind code of ref document: A3

Designated state(s): CA JP

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
COP Corrected version of pamphlet

Free format text: PAGES 1/19-19/19, DRAWINGS, REPLACED BY NEW PAGES 1/18-18/18; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 1997950980

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2274966

Country of ref document: CA

Ref country code: CA

Ref document number: 2274966

Kind code of ref document: A

Format of ref document f/p: F

ENP Entry into the national phase

Ref country code: JP

Ref document number: 1998 527945

Kind code of ref document: A

Format of ref document f/p: F

WWP Wipo information: published in national office

Ref document number: 1997950980

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1997950980

Country of ref document: EP