WO2005064868A1 - Network message processing using pattern matching - Google Patents

Network message processing using pattern matching Download PDF

Info

Publication number
WO2005064868A1
WO2005064868A1 PCT/US2003/037688 US0337688W WO2005064868A1 WO 2005064868 A1 WO2005064868 A1 WO 2005064868A1 US 0337688 W US0337688 W US 0337688W WO 2005064868 A1 WO2005064868 A1 WO 2005064868A1
Authority
WO
WIPO (PCT)
Prior art keywords
pattern
match
pattern match
indicator
detected
Prior art date
Application number
PCT/US2003/037688
Other languages
French (fr)
Inventor
Harold M. Martin
Carlos A. Greaves
Thang Q. Nguyen
David J. Nunez
Original Assignee
Freescale Semiconductor, Inc.
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
Application filed by Freescale Semiconductor, Inc. filed Critical Freescale Semiconductor, Inc.
Priority to PCT/US2003/037688 priority Critical patent/WO2005064868A1/en
Priority to AU2003298698A priority patent/AU2003298698A1/en
Priority to EP03796453A priority patent/EP1690379A1/en
Priority to JP2005512836A priority patent/JP4428537B2/en
Priority to CNA2003801105481A priority patent/CN1860743A/en
Priority to KR1020067010238A priority patent/KR101017536B1/en
Publication of WO2005064868A1 publication Critical patent/WO2005064868A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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
    • 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

Definitions

  • the present invention relates to network communication, and, more particularly, to processing messages received via a network such as an Ethernet network.
  • Local area networks LANs
  • WANs wide area networks
  • other types of networks typically include a number of information processing systems coupled via
  • Ethernet IEEE 802.3 protocol is a widely used LAN protocol based on the carrier-sense multiple access/collision detect (CSMA/CD) approach. Because Ethernet and IEEE 802.3 protocols are similar and can coexist on the same LAN, both are sometimes referred to as Ethernet. 10/100 Ethernet provides increased Ethernet speed from 10 to 100
  • Gigabit Ethernet is another Ethernet protocol which builds on top of the basic Ethernet protocol, but increases speed tenfold over 10/100 Ethernet to 1000 Mbps, or one gigabits per second (Gbps).
  • each device In addition to merely accepting or rejecting incoming messages, each device typically has various tasks to perform responsive to receiving the messages. Accordingly, some data received by messages needs to be stored and accessed within a short amount of time. Thus, it would be advantageous to enhance the processing of such messages by preprocessing the received messages (e.g., by sorting inbound messages before they are examined by a processor or software driven system resources) to free the use of such resources for other tasks and to reduce the latency of accessing critical or high priority frames.
  • Figure 1 is a block diagram illustrating an information processing and communication system in accordance with an embodiment of the invention.
  • Figure 2 is a block diagram illustrating a receive portion of a packet controller of the system of Figure 1.
  • Figure 3 is a block diagram illustrating an exemplary message address format receivable and parsable by system of Figure 1.
  • Figure 4 is a block diagram illustrating exemplary buffer descriptor queues of Figure 1.
  • Figure 5 is a block diagram illustrating exemplary pattern match and pattern match attribute registers of Figure 1.
  • Figure 6 is a flow chart illustrating a method for processing received messages by the system of Figure 1. - 2 -
  • Figure 7 is a flow chart illustrating a portion of a method for hashing and pattern matching message addresses received by the system of Figure 1.
  • Figure 8 is a flow chart illustrating another portion of a method for hashing and pattern matching message addresses received by the system of Figure 1.
  • Figure 9 is a flow chart illustrating a method for pattern matching message addresses received by the system of Figure 1 within the illustrative flow of Figure 7.
  • Figure 10 is a flow chart illustrating a method for processing an accepted message within the system of Figure 1.
  • Figure 11 is a flow chart illustrating a method for extracting and stashing portions of a message by the system of Figure 1.
  • Figure 12 is a table illustrating a number of addresses processed using hashing and/or pattern matching.
  • FIG. 1 is a block diagram illustrating an information processing and communication system 100 in accordance with an embodiment of the invention.
  • System 100 includes processor 110, cache 120, memory 130, system bus 140, peripherals 150 and packet controller 160.
  • Processor 110, cache 120, memory 130, peripherals 150 and packet controller 160 are all coupled via system bus 140.
  • System 100 may be an Ethernet, Gig-Ethernet and/or XGig-Ethernet controller or otherwise compatible therewith, may be a network switch or router, or other type of device for communicating within a network.
  • Packet controller 160 includes bus interface unit (BIU) 170, receive portion 180, transmit portion 185 and media access controller (MAC) 190.
  • Bus interface unit 170 is coupled to system bus 140.
  • Bus interface unit 170 is coupled to receive portion 180 via connection 172 and to transmit portion 185 via connection 174.
  • MAC 190 is coupled to - 3 -
  • MAC 190 is coupled to physical layer hardware to receive messages such as packets from other devices via physical (PHY) connection 198.
  • Messages are received at MAC 190 and passed to receive portion 180.
  • the messages may or may not be accepted depending on address recognition, hashing, pattern matching, or hashing and pattern matching (e.g., as described below at least with reference to Figures 2-9).
  • Information from accepted messages is passed to memory 130. Certain information may be identified by pattern matching to be especially eligible for quick access by processor 110 or other system resources, in which case such information is extracted from the normal message data sent to memory 130, and the extracted data is stashed in cache 120 (e.g., as described below at least with reference to Figures 2-6 and 10-11).
  • the disclosed destination address recognition protocol minimizes the need for post filtering and can be done at the media access control level instead of requiring further software and hardware intervention at higher OSI levels. For some sets of addresses, the user could find a set of patterns that yields perfect filtering at the MAC level. A deterministic algorithm may be used to generate the required patterns to ensure perfect hash-time filtering. The disclosed protocol also enables pattern match searching throughout an accepted frame, not merely within a destination address, to refine the results of the hash-time filtering.
  • Memory 130 includes frame data buffers 134 for storing incoming messages and buffer descriptor queues 132 for tracking the stored messages as described in further detail below.
  • Cache 120 includes storage locations which may store one or more buffer descriptor queues 122 and storage locations for stashing (i.e., storing) extracted data 124 for subsequent use by processor 110.
  • Extracted data is data which is extracted from the normal frame data of incoming messages for storage in cache 120 according to certain pattern matching protocols described herein. Extracted data may be, for example, critical data, quality of service (QOS) level data or other high priority data for which expedited access times might be desirable.
  • Memory 130 and cache 120 are accessible by processor 110 and may even be accessible by other devices or processors (not shown) within system 100.
  • FIG. 2 is a block diagram illustrating receive portion 180 of packet controller 160 of system 100.
  • Receive portion 180 includes direct memory access (DMA) controller 210, receive FIFO 220 and address/data filter (ADF) 230.
  • DMA direct memory access
  • ADF address/data filter
  • DMA 210 is coupled to receive message information (e.g., address and data information, and message filter results such as pattern status information described below) from receive FIFO 220 under control of FIFO controller 222.
  • message information e.g., address and data information, and message filter results such as pattern status information described below
  • ADF 230 includes temporary queue 234, pattern matching logic 232 and address recognition and hash logic 238. Each of temporary queue 234, pattern matching logic 232 and address recognition and hash logic 238 are coupled to receive messages (e.g., frames) from MAC 190. Temporary queue 234 is coupled to receive message filter result information from pattern matching logic 232 and address recognition and hash logic 238, and to provide the frames (or portions thereof) and the message filter information to receive FIFO 220 in response thereto.
  • messages e.g., frames
  • Temporary queue 234 is coupled to receive message filter result information from pattern matching logic 232 and address recognition and hash logic 238, and to provide the frames (or portions thereof) and the message filter information to receive FIFO 220 in response thereto.
  • pattern matching logic 232 and hashing logic 238 are provided to lessen the frequency of occurrence of full address compares, thereby allowing processor 110 to be free to perform other tasks.
  • Pattern matching logic 232 performs a pattern matching analysis on the received frame to enable selective acceptance of the frame in accordance with a pattern matching result. Pattern matching is performed under control of values (e.g., control bits or fields) stored in pattern matching (PM) registers 233.
  • Hashing logic 238 performs a hashing analysis on the address of the received frame to enable selective acceptance of the frame in accordance with a hash hit or miss result to further increase the likelihood of performing full address compares on addresses with a high probability of acceptance.
  • PM registers 233 of pattern matching logic 232 include 16 entries. Each entry includes five 32-bit registers. Referring to Figure 5, each entry includes a pattern (PM
  • the pattern matching control field includes a matching index (MI) field, a continuous search enable (CSE) field, an invert (IV) field, a concatenate pattern (CP) field, and a pattern match acceptance control (PMAC) field.
  • MI matching index
  • CSE continuous search enable
  • IV invert
  • CP concatenate pattern
  • PMAC pattern match acceptance control
  • the PM DATA field includes a bit pattern for comparing with the received frame. If the PM DATA bit pattern (e.g., a 4 byte pattern) is found in the frame, a pattern match is detected. If the PM DATA bit pattern is not found in the frame, a pattern match is not detected.
  • the PM DATA field is 32 bits long in the illustrated embodiment.
  • the PM MASK field includes bits which cause certain bits in a pattern to be masked when the comparison is occurring. For example, vendor identification bits within a portion of the frame may be ignored when PM MASK is set appropriately.
  • the matching index (MI) field indicates how deep in the received frame pattern matching should start for the corresponding PM DATA.
  • the MI field may include 6 bits indicating a search start range from 0-256 bits.
  • MI specifies the index, in multiples of 4-bytes, from the start of the receive frame (from DA field to FCS inclusive) from which to perform pattern matching. If MI is cleared, the first 4-bytes of the destination address provide the starting point for pattern matching.
  • the maximum programmed value for MI is 63 (252-byte offset) in the presently discussed embodiment. The MI value for each 4-byte pattern is honored even when allowing for contiguous or noncontiguous patterns.
  • the continuous search enable (CSE) field affects the type of action to be taken when a match is found. Specifically, the CSE bit indicates whether action should be taken immediately upon a pattern match or whether further pattern match searching should occur upon the pattern match.
  • a set CSE bit indicates that if a match occurs on an entry, the pattern matching should continue. For example, if a pattern match is found and continuous searching is enabled, pattern matching logic 232 continues to search for other matches of PM DATA from other registers of PM registers 233 up until the 256-byte maximum. If no other matches are encountered, the attributes corresponding to the last matched entry are used. All continued patterns must not reject for a final acceptance based on pattern matching. For example, the first pattern match must at least conditionally accept, and all subsequent patterns must either accept, or neither accept nor reject in order to accept the frame. If a subsequent pattern match reject occurs, the value of CSE is ignored, the frame is rejected, and searching
  • the concatenated pattern (CP) field allows a comparison of more than the 32 bits of PM DATA available in each entry of PM registers 233. If the CP bit is set, the immediate PM registers 233 that follow the current PM register are regarded as a continuation of this pattern, and the next PM DATA entry is concatenated to the current PM DATA entry. In this case, each PM DATA entry must be found in the frame for a pattern match to occur, but the two sets of matching bits can be anywhere within the frame according to their respective MI. If the CP bit is not set, no pattern concatenation occurs. The CP field of the last PM register 233 is regarded as cleared, regardless of the value stored therein.
  • the lowest numerical PM register 233 in which CP is set contains the pattern matching control and attribute information (except MI) that is used for concatenated patterns.
  • MI pattern matching control and attribute information
  • the MI field For each concatenated pattern, the MI field must be set to the appropriate 4-byte multiple lest all the patterns attempt to match to the first 4-bytes of the frame (if MI is left cleared).
  • the PMAC field controls the filtering of frames based on pattern matching.
  • the frame is neither accepted nor rejected.
  • the pattern is not the criteria used for accepting or rejecting a frame if a match occurs, and information is gathered for post processing regarding the pattern match result, but no decision is made to accept or reject the frame based on the information gathered.
  • the post processing may include filing or extracting data on a frame that is accepted based on a previous pattern or based on destination address recognition, or can include other classification functionality.
  • the frame can be accepted later by a hash process, another pattern matching process, or the like.
  • DMA 210 includes receive buffer 211, extraction engine 212, pattern attribute registers 213, buffer descriptor and filing processor (BDFP) 214, status register 215, and buffer descriptor address registers 216.
  • BDFP buffer descriptor and filing processor
  • the logical blocks discussed herein are exemplary, and different embodiments may have a different logical partitions of functionality.
  • DMA 210 may be envisioned as including a memory controller for performing extraction, buffer descriptor processing and filing processing.
  • Receive buffer 211 is coupled to receive message frames from receive FIFO 220.
  • Status register 215 is coupled to receive pattern status (PS) information from receive FIFO 220.
  • Pattern status includes a pattern number (e.g., PM register number) and a corresponding pattern hit indication.
  • FIFO controller 222 is coupled to DMA 210 to control the transfer of such information.
  • Receive buffer 211 is coupled to provide frame data to bus interface unit 170 via connection 172.
  • Extraction engine 212 is coupled to provide extraction control information to receive buffer 211 to indicate which frame information is to be extracted for forwarding to cache 120.
  • Extraction engine 212 is coupled to provide attributes regarding the extracted information to bus interface unit 170 via connection 172. For example, extraction engine 212 indicates whether the data sent by receive FIFO to memory and or cache is extracted or normal and whether it is to be stored in memory 130 or both stored in memory 130 and stashed in cache 120 and any priority information associated with the data.
  • Status register 215 provides pattern status information to extraction engine 212 to indicate which frame data should be extracted.
  • Extraction engine 212 is also coupled to receive extraction control information from pattern attribute registers 213. For example, pattern attribute registers 213 provide an extraction index and extraction length to extraction engine 212 (discussed below).
  • Pattern attribute registers 213 are coupled to provide filing information indicative of which buffer queue in which to file the frame data (PMF) to buffer descriptor address registers 216.
  • Status register 215 is coupled to provide pattern match information such as an indication of the actual pattern matched to BDFP 214.
  • Buffer descriptor address registers 216 are coupled to provide a base address for each buffer descriptor queue (BDQs 410, 420, 430 and 440), and each queue pointer (BDQ_BASE, BDQ_CURRENT and BDQ_NEXT), and the default queue to BDFP 214.
  • BDFP 214 is coupled to provide address and data information to bus interface unit 170 via connection 172.
  • Pattern attribute registers are written by the user to specify action upon a match occurrence, where to file frame information, when to extract frame information and how to store receive frames and their associated buffer descriptors.
  • a total of 16 registers or entries are supported in the presently discussed embodiments.
  • One such register (or an alternate register) may be designated as a default register and include information to specify an action when no pattern match occurs.
  • each entry includes an extracted cache (e.g., L2 cache) write type (ELCWT), a buffer descriptor cache write type (BDLWT), a queue classification (QC), a pattern match file (PMF), a pattern match extract (PME), an extracted index (El) and an extracted length (EL).
  • L2 cache e.g., L2 cache
  • ELCWT buffer descriptor cache write type
  • QC queue classification
  • PMF pattern match file
  • PME pattern match extract
  • El extracted index
  • El extracted length
  • bit fields may be included to enable or support any number of other functions.
  • data snoop bits may be included to support snooping of received frames to memory or snooping of received buffer data memory accesses.
  • the cache can snoop a read or write access to the memory so that the cache can detect the address and then take appropriate action such as invalidating copies of the data stored in the cache, updating the cache data from the memory, or storing the data in the cache substantially in parallel with storing the data in the memory.
  • Pattern attribute registers are exemplary memory locations for the informational content discussed. Other embodiments may include other configurations for storing such informational content, including other bit configurations, distributed register locations, etc.
  • the extracted cache write type (ELCWT) field specifies the write transaction type to perform for extracted data.
  • An extraction write transaction occurs if the pattern matching extract (PME) field is set, a corresponding pattern match occurs, and the extract length (EL) field is non-zero.
  • PME pattern matching extract
  • EL extract length
  • the buffer descriptor cache write type (BDLWT) field specifies the write 5 transaction type to perform for the buffer descriptor for a receive frame. This occurs if a pattern match occurs, regardless of the value of PMF or PME. Writes to cache are performed with snoop. In one embodiment, if BDLWT is 00, then no allocation is performed; if BDLWT is 10, then a cache line is allocated; and if BDLWT is 11, then the cache line is allocated and locked.
  • the queue classification specifies the receive queue classification in which to file an incoming frame if the PMF field is set and a corresponding pattern match occurs.
  • the QC used is from the first 4-byte pattern. If QC is 00, queue #0 is used, and the buffer descriptors starting at the address pointed to by BDQ0_BASE is used. If QC is 01, queue #1 is used, and the buffer descriptors starting at the address pointed to by BDQ1_BASE is used. If QC is 10, queue #2 is used, and the buffer descriptors starting at the address pointed to by BDQ2_BASE is used. If QC is 11, queues #3
  • the pattern attribute registers 213 are also written by the user to specify the extract index and extract length to be used if a pattern match occurs and the pattern match extract (PME) bit in registers 213 is set.
  • the extracted index (El) points to the first byte within the receive frame from which to begin extracting data.
  • FIG. 4 is a block diagram illustrating multiple exemplary buffer descriptor queues BDQO, BDQ1, BDQ2 through BDQM.
  • Each buffer descriptor queue includes several buffer descriptors such as the storage locations shown for BDQO: BDO 412, BDl 414, BD2 416 through BDN 418.
  • Each buffer descriptor queue has a ring structure and is accessed via three pointers: BDQ_BASE, BDQ_CURRENT, and BDQ_NEXT.
  • Each buffer descriptor storage location stores information regarding received frame information stored in memory 130 and/or cache 120.
  • Each buffer descriptor queue can represent a different priority for a corresponding frame. As shown in Figure 1, the buffer descriptor queues are stored in memory 130, and sometimes also stored in cache 120 if BDLWT is appropriately set. The buffer descriptor queues may be stored with or without a corresponding extraction of frame data occurring.
  • Figure 6 is a flow chart illustrating an exemplary operational flow of system 100.
  • the frame and pattern status are provided from temporary queue 234 to receive FIFO 220 during operation 630.
  • the pattern status and frame data are provided to DMA 210 during operation 640.
  • DMA 210 can store the frame data in memory during operation 650. Also during operation 650, any data which matches an enabled pattern in pattern match registers 233 is extracted and stashed in cache 120. The process for storing
  • Figure 3 illustrates an exemplary message packet with a frame receivable by address/data filter 230 during receive frame operation 610.
  • the illustrated format is compatible with Ethernet/IEEE 802.3 standard messages.
  • Message 300 includes a preamble, a start frame delimiter (SFD) and the frame.
  • the preamble and start frame delimiter provide set up information to aid the system in receiving and processing the frame.
  • the preamble is a 7 byte field of alternating ones and zeros used for receiver timing synchronization. For example, each byte contains the value 0x55.
  • the start frame delimiter indicates the beginning of the frame.
  • An exemplary value for the start frame delimiter is a sequence of 0xD5 (10101011 binary because the bit ordering is least significant bit first).
  • the illustrated frame has a length from 64-1518 bytes, and includes a 6 byte destination address (DA), a 6 byte source address, a 2 byte type/length field, a 46-1500 byte logic link control (LLC) frame, and a 4 byte frame check sequence.
  • DA 6 byte destination address
  • 6 byte source address 6 byte source address
  • 2 byte type/length field 6 byte type/length field
  • LLC 46-1500 byte logic link control
  • the destination address of the frame includes a 3 byte vendor field and a 3 byte user value.
  • the first bit of the user value identifies the address as an individual address (0) or a group address (1).
  • the second bit indicates whether the address is locally-defined (1) or globally-defined (0).
  • the source and destination addresses include 48 bits. Other embodiments may use different address lengths such as 16 bit addresses in earlier versions of the IEEE 802.3 specification.
  • the type/length field corresponds to an Ethernet type field and/or an IEEE 802.3 length field.
  • the type field signifies the protocol (e.g., TCP/IP) used in the rest of the frame.
  • the length field specifies the length of the data portion of the frame. Generally, the length field is unique from any type fields used in Ethernet to facilitate use of both Ethernet and IEEE 802.3 frames on the same network.
  • the type field is identified by a decimal number equal to or greater than 1536 (0x0600) but less than 65535 (OxFFFF). If the number is between 0 and 1,500 (0x0000 through 0x05DC) then this field indicates the length of the MAC client data. In the illustrated embodiment, the range from 1,501 to 1,536 (0x5DD through 0x5ff) is undefined.
  • the logical link control (LLC) is responsible for providing services to the network layer regardless of media type, such as FDDI, Ethernet, token ring, and others.
  • the LLC layer makes use of LLC protocol data units (PDUs) in order to communicate between the media access control (MAC) layer and the upper layers of the protocol stack.
  • PDUs LLC protocol data units
  • Three variables determine access into the upper layers via the LLC-PDU.
  • the variables include the destination service access point (DSAP), the source service access point (SSAP), and a control variable.
  • the DSAP address specifies a unique identifier within the station providing protocol information for the upper layer.
  • the SSAP provides the same information for the source address.
  • the LLC frame includes a preamble and an information field.
  • the preamble includes the DSAP field, the SSAP field and the control field.
  • the information field includes data and optional padding. Padding is generally only needed if the data is smaller than 46 octets/bytes to ensure the minimum frame size of 64 octets as specified in the IEEE 802.3 standard.
  • a third two-octet field can be used for an extended pause control parameter (PTE).
  • Ethernet frames can use different protocols with similar fields. Because the use of these fields varies with the protocol used, the ability to examine them and report their content can significantly accelerate Ethernet frame processing, and such ability may be enhanced by using pattern matching.
  • FCS frame-check sequence
  • CRC cyclic redundancy check
  • Figures 7 and 8 are flow charts illustrating a method for hash filtering of messages using pattern matching.
  • pattern matching logic 232 accesses PM registers 233 and selects the various entries in succession to determine if a pattern stored in PM • registers 233 is contained in frame information in temporary queue 234.
  • PMEN pattern match enable bit
  • receive portion 180 determines whether the address in the received frame is a group address.
  • the first bit of the user value of the frame identifies the address as an individual address (0) or a group address (1). If the address is not a group address, flow proceeds to station address decision 720. If the address is a group address, flow proceeds to broadcast address decision 725.
  • station address decision 720 receive portion 180 determines whether the address in the received frame is a station address by performing an exact 48 bit compare with frame data. If the address is determined to be a station address, flow proceeds from block 720 through the illustrated "accept" flow chart node to accept frame operation 860 in Figure 8, and the frame is accepted at accept frame operation 860. If the address is not determined to be a station address, flow proceeds to hash hit decision 740.
  • receive portion 180 determines whether the address in the received frame is a broadcast address.
  • An exemplary broadcast address is an address of OxFFFFFF-FFFFFF. If the address is determined to be a broadcast address, flow proceeds to broadcast enabled decision 730. If the address is not determined to be a broadcast address, flow proceeds to the aforementioned hash hit decision 740.
  • receive portion 180 determines whether the broadcast functionality is enabled. Broadcast functionality is enabled when an ADF global control register bit BC_REJ is reset. If the broadcast functionality is enabled, flow - 14 -
  • a discriminating promiscuous mode may be used in which frames from all addresses are accepted except for one or more specific frames which contain a pattern which causes rejection of the frame. For example, specific addresses may be rejected with the aid of the pattern matching while all other addresses are accepted.
  • receive portion 180 determines if a hash hit on the frame destination address has occurred.
  • the 48-bit destination address is mapped into one of 256 bins (or more in other embodiments) by using a portion of a 32-bit cyclic redundancy check (CRC) checksum.
  • CRC cyclic redundancy check
  • the bits of a CRC checksum are used to index into a hash table.
  • eight bits are used to index a 256 bin table.
  • the higher order 3 bits of the 8-bit field are used to select one of the 8 hash bucket registers in an individual hash table and/or a group hash table.
  • the lower order 5-bit field selects a bit within the selected 32-bit register.
  • the same checksum is used when the controller receives a frame. If - 15 - 261831_1.DOC the CRC checksum of the incoming address selects a bit that is set in the group/individual hash table, a hash hit has occurred. Otherwise, no hash hit has occurred.
  • the first 8 bits of the CRC select a bit in the hash table.
  • the addresses in lines 1201-1203 and 1206 are to be received by the system and have i therefore been used to set up the hash table.
  • the hexadecimal value 0x04 maps to hash bucket bin 4.
  • the hexadecimal value OxOF maps to hash bucket bin 15.
  • the hexadecimal value 0x15 maps to hash bucket bin 21.
  • the hexadecimal value OxCB maps to hash bucket bin 203.
  • the effectiveness of the hash table can decline as the number of addresses increases. For example, as the number of addresses stored in the 256-bin hash table increases, the vast majority of the hash table bits are set, preventing a significantly smaller fraction of unintended frames from reaching memory.
  • One advantage of hash filtering is that
  • the speed of the hashing does not depend on the number of addresses in the destination address list. It should also be noted that a hashing-alone protocol, without pattern matching, cannot be used to reject frames that match a set of selected addresses because unintended addresses can map to the same bit in the hash table resulting in the rejection of frames that should have been received. Thus, hash filtering alone results in imperfect filtering which
  • hash hit decision 740 a CRC for each received address is used to select a hash bucket bin. If the selected bin indicates a hit, then a hash hit has occurred. For example, when any of addresses 1201-1203 and 1206-1210 are received, one of bins 4, 15, 21
  • System 100 uses pattern matching to further filter the incoming addresses so that the need for processor/software-based post-filtering is minimized or even eliminated. For example, a pattern may be stored in a PM register so that addresses cause misleading hash hits may be rejected. In the illustrated embodiment, addresses can be rejected if they are not intended for a particular vendor ID (first 24 bits of destination address). A pattern of 0x0050FC04 has been stored as PM DATA in a PM register along with a PM MASK of OxFFFFFFOO. In this way, each address which does not have 0x0050FC in its first 24 bits is rejectable by pattern matching. In this case, addresses 1207-1209 are rejected, but 1210 is not rejected since its vendor ID matches the desired vendor ID.
  • a further pattern may be stored to improve the process. For example, using 2 patterns, one with PM DATA 0x0050FC04 and a PM MASK of OxFFFFFFFF, and a second pattern of PM DATA 0xOO5OFCO3-C with a PM MASK of OxFFFFFFFF-F may be used.
  • each address which is a hash hit but which does not have 0x0050FC04 in its first 32 bits and 0x0050FCO3-C in its first 36 bits may be effectively ignored through pattern matching and hashing.
  • addresses 1207-1210 are effectively rejected due to pattern matching and hashing, and only the desired addresses are accepted by system 100.
  • received addresses 1201 - 1210 cause a variety of different results. Addresses 1204 arid 1205 cause a hash miss and are therefore not accepted. Addresses 1201- 1203 and 1206-1210 cause a hash hit. Addresses 1201-1203 cause a hash hit and a pattern match due to the first pattern being found therein. Addresses 1201-1203 are therefore accepted. Address 1206 causes a hash hit and a pattern match due to the second pattern being found therein. Address 1206 is therefore accepted. Addresses 1207-1210, while causing a hash hit, do not result in a pattern match because the first and second patterns are not found therein. Addresses 1207-1210 are therefore not accepted.
  • the hash table prevents a large percentage (e.g., in some instances as high or higher than 85%) of the group address frames from reaching memory. Without the pattern matching of the current disclosure, software operating on system 100 would have to further filter (i.e., post-filter) those that reach memory 130 to determine if they contain correct addresses. In the foregoing example, addresses 1207-1210 would have required
  • the frames may be stored in different queues corresponding to different processing elements. If at least one of the 16 patterns resulted in a pattern match being detected, flow proceeds from decision 852 through the illustrated "no decision" flow chart node to the aforementioned hash/promiscuous decision 855.
  • the elements of Figures 7 and 8 described so far correspond to media access control functionality.
  • Receive portion 180 determines whether a perfect hash hit has occurred and/or whether promiscuous mode is enabled. A perfect hash hit occurs when both a hash hit and a pattern match occur
  • a high confidence hash hit occurs when both a hash hit and a pattern match occur which correspond to a low number of addresses but more than one address.
  • a high confidence hash hit provides enhanced performance over traditional address filtering due to the use of pattern matching which
  • processor 110 determines whether the a full address match has occurred.
  • System 100 performs a direct comparison of the address to the addresses known to system 100.
  • System 100 may store received addresses in a priority queue or the like so that addresses with a higher predicted likelihood of acceptance (high
  • the full address match is a last resort. If there is a full address match, the received frame is accepted at frame accept operation 860. If there is not a full address match, the received frame is rejected at frame reject operation 870.
  • Figure 9 is a flow chart illustrating a method for pattern matching message addresses received by system 100.
  • the frame may be accepted or rejected depending on
  • a pattern data set is enabled, the message data is checked for a pattern match. If a pattern match data set is not enabled, or if a pattern match is not found, a next pattern is
  • receive operation 935 bytes of the incoming frame are received into temporary queue 234 for temporary storage until a decision is made whether to accept or reject the incoming frame. Bytes of the incoming frame are also provided to pattern matching logic 232 and address recognition and hash logic 238 so that such a decision may be made while the bytes are being received by temporary queue 234. After bytes have been received during receive operation 935, flow proceeds to pattern match determination operation 905.
  • pattern matching logic 232 determines if pattern match data stored in PM registers 233 matches data in the received frame. For example, pattern matching logic compares the PM DATA in a first one of PM registers 233 with incoming frame data as it is stored in temporary queue 234. Temporary queue 234 is used to store the frame until a decision is made. A pattern match occurs, for example, if each bit of the PM DATA (up to 4 bytes) matches each bit of the message data located according to the message index MI. Matching may occur up to 256 bytes deep into the frame with an offset of a maximum of 252 bytes. Certain of the PM DATA may be masked by the corresponding PM MASK.
  • each bit of PM DATA may not be checked for a match if a corresponding PM MASK bit is cleared. If the concatenate pattern (CP) field of the previous pattern is set, then a match occurs only if both PM DATA fields (the current PM DATA and the PM DATA of the previous PM register) are found in the frame. The PMAC field determines whether the corresponding PM DATA is enabled, and if it is enabled, a course of action to take upon a match. Operation 905 may be done in parallel with operation 935.
  • PMAC 00
  • reject all mode decision 940 if ADF 230 is determined to be in reject all mode, the frame is rejected and operational flow continues as illustrated in either Figures 7 or 8 depending on which corresponding flow initiated the pattern matching flow illustrated in ) Figure 9. If ADF 230 is not in reject all mode, no decision regarding the frame is made, and flow continues as illustrated in Figures 7 or 8 depending on which flow initiated the pattern matching illustrated in Figure 9.
  • PMAC 10 for a particular PM DATA
  • PMAC 11 for a particular PM DATA
  • pattern match determination operation 960 is similar in functionality to operation 905 described above. Operation 955 may be done in parallel with operation 960. After pattern matching operation 960, flow proceeds to pattern match decision 965.
  • PMAC 00
  • FIG. 10 a method for processing an accepted message within the system of Figure 1.
  • One advantage of the illustrated embodiment is that system access to 5 critical data within a packet can be enhanced by detecting it when it is received without resorting to higher level resources, and placing it along with descriptor information in a cache for subsequently faster access.
  • the illustrated flow is initiated when the pattern status has been provided to DMA 210 and placed into status register 215 during receive pattern status operation 1005.
  • the frame data is filed in memory 130 and/or stashed in cache 120 depending on the pattern status information.
  • Filing includes grouping of packets in memory based on packet signature, extraction includes locating a specific portion of a packet (e.g., by using an extraction index and length value), and stashing includes copying extracted data into processor cache space. Extraction can allocate and lock processor cache memory, but
  • BDFP 214 of DMA 210 3 selects a buffer descriptor based on the pattern status and the queue classification (QC) field in the pattern match attribute registers 213.
  • the QC field determines which buffer descriptor queue 122/132 to use.
  • the pattern status includes a pointer to the appropriate QC field.
  • the pattern status also indicates which pattern match occurred, if any. If a pattern match occurred, the matched pattern may cause data to be extracted from the frame and stashed as extracted data 124 in cache 120.
  • buffer descriptor queues are chosen 122 in addition to buffer descriptor queues 132. If no pattern match occurred, no extraction would occur, resulting in only buffer descriptor queues 132 being used.
  • flow proceeds to extraction preparation operation 1015.
  • extraction engine 212 obtains the extract index (El) and extract length (EL) from pattern attribute registers 213 if the pattern status indicates a pattern match. After extraction preparation operation 1015, flow proceeds to BDQ available decision 1020.
  • BDFP 214 determines whether the selected buffer descriptor queue (BDQ) is available. That is, BDFP 214 determines if there is empty space in the selected BDQ. If the selected BDQ is available, flow proceeds through flow chart node "A" to update BDQ pointer operation 1030. If the selected BDQ is not available, flow proceeds to flush operation 1025, whereupon the frame and status frame
  • BDQ buffer descriptor queue
  • BDFP 214 determines if the entry pointed to by BDQ_CURRENT is empty. If the current BDQ entry is not empty, the selected buffer descriptor queue is marked as unavailable during mark unavailable operation 1040, and flow proceeds to flush operation 1025. If the current BDQ entry is empty, flow proceeds to 3 transfer operation 1045.
  • BDFP 214 transfers frame data from receive FIFO 220 to receive buffer 211. The transfer proceeds until the end of the frame (EOF) is received or receive buffer 211 is full. After the frame data is transferred, flow proceeds to EOF decision 1050. [0097] Referring to EOF decision 1050, if the end of frame was not received during operation 1045, flow proceeds to selective extract and stash operation 1060. If the end of frame was received during operation 1045, flow proceeds to obtain status frame length operation 1055 during which extraction engine 212 obtains the status frame length from status register 215. After operation 1055, flow proceeds to selective extract and stash operation 1060.
  • Data is controllably extracted from the received frame for stashing in cache 120 during selective extract and stash operation 1060.
  • Selective extract and stash operation 1060 is more fully described below with reference to Figure 11. After selective extract and stash operation 1060, flow proceeds to EOF decision 1065.
  • EOF decision 1065 if the end of frame was received during selective extract and stash operation 1060, flow proceeds to EOF update operation 1080. If the end of frame was not received during selective extract and stash operation 1060, flow proceeds to end of buffer (EOB) decision 1070.
  • EOB end of buffer
  • BDFP 214 updates the status and control ) information of the current buffer descriptor queue. For example, BDFP 214 sets an extraction occurred bit in the current BDQ 122 to indicate that extracted data 124 has been stored in cache 120. The next BDQ pointer (BDQ_NEXT) is set to point to the next location in the selected BDQ. The contents of the current BDQ are copied to the cache according to BDLWT. For example, if a pattern match occurs, and if BDLWT is 00, then no allocation is
  • EOB decision 1070 if the end of the data buffer 134 in memory 130 was encountered during selective extract and stash operation 1060, flow proceeds to EOB ) update operation 1075. If the end of the data buffer was not encountered during selective extract and stash operation 1060, flow proceeds to transfer operation 1045 described above.
  • BDFP 214 updates the status and control information of the current buffer descriptor queue. For example, BDFP 214 sets an extraction occurred bit in the current BDQ 122 to indicate that extracted data 124 has been
  • BDQ_NEXT next BDQ pointer
  • BDLWT BDLWT
  • Figure 11 is a flow chart illustrating a method for extracting and stashing portions of a message by the system of Figure 1 using a 64 byte buffer. The method illustrated in Figure 11 is called by selective extract and stash operation 1060 of Figure 10.
  • extraction engine 212 determines if extraction has been requested for a given pattern match during extraction requested decision 1105. Extraction engine 212 also checks various extraction fields such as an extraction add (EX__ADD) field and an extraction length (EL) field.
  • the relative extract index is an index to a location within the data buffer in memory 130 where the extracted data begins.
  • the relative extract index is stored by BDFP 214 internally to DMA 210 until it is later written to the appropriate BDQ in memory 130 and/or cache 120 during operation 1075 or 1080 ( Figure 10).
  • flow proceeds to EI ⁇ 32 decision 1145. - 26 -
  • extraction engine 212 performs a comparison with the extraction index and checks an extract data flag which is internally stored in DMA 210, for example, within extraction engine 212. For example, if the extraction index is greater than 32, and the extract data flag is not true, flow proceeds to send MAX(32B) operation 1150 where MAX(32B) of normal data is sent to memory 130. After send MAX(32B) operation 1150, the extract data flag is set true, and the extraction flow exits, and flow proceeds to EOF decision 1065 of Figure 10.
  • a portion of a message frame is received by system 100 at MAC 190 of packet controller 160.
  • the received portion of the message frame (the "received frame") is provided to a temporary queue 234 of address/data filter 230 of Figure 2.
  • the frame is processed by address/data filter 230 to determine if it should be accepted or rejected.
  • Address recognition, hashing, hashing with pattern matching for perfect hashing, and pattern matching ( Figures 7-9) are performed on the received frame by address recognition and hash logic 238 and pattern matching logic 232. Address recognition and hash logic 238 perform
  • PM registers 233 include a number of registers which correspond to a number of patterns to be matched.
  • Pattern matching logic 232 performs the pattern matching based on configuration values stored in PM registers 233 (e.g., with continuous search and/or concatenation capabilities). If accepted after the pattern matching and hashing or other fail safe conditions, the received frame and pattern status information (pattern match results) are transferred to receive FIFO 220 (see, Figure 6, operation 630.
  • the received frame is then transferred to receive buffer 211, and the pattern status information is transferred to status register 215 of DMA 210.
  • Extraction engine 212 accesses pattern attribute registers 213 and status register 215 to determine whether data should be extracted from the received frame in receive buffer 211, and controls the extraction of such data as applicable.
  • the BDFP accesses the status register 215 and the buffer descriptor address registers and generates address and data information to be written to memory 130 and/or cache 120.
  • the address information from BDFP 214 includes a data buffer pointer within a data buffer for frame data (e.g., data buffer pointer 456) or pointer(s) to one of the next entries in a buffer descriptor queue (e.g., BDQ_BASE, BDQ_CURRENT, BDQ_NEXT).
  • the data information includes status and control 452, data length 454, data buffer pointer 456, pattern match status 458, relative extract index 460, extract length 462 and byte count 464 shown in Figure 4.
  • receive buffer 211 provides the normal or extracted frame data to bus interface unit (BIU) 170
  • the extraction engine provides attributes to BIU 170 which identify the frame data as normal or extracted
  • the BDFP 214 provides address information and buffer descriptor data from the buffer descriptor address registers 216 to BIU 170.
  • BIU 170 passes the frame data to bus 140 for storing in cache 120 and/or memory 130.
  • Normal frame data is stored in at least one data buffer 134, and descriptor data regarding the normal frame data is stored in buffer descriptor queues 132. If extraction occurred, the extracted frame data is stored ("stashed") in cache portion 124, and descriptor data regarding the extracted frame data is stored in buffer descriptor queues 122.
  • One embodiment incorporates a novel form of pattern matching which allows the user to program up to 16 four byte patterns which can be concatenated to form a longer pattern and used to match a portion of the frame within the first 256 bytes.
  • Associated with each pattern is a set of attributes that can be programmed to accept/reject a frame, file a frame ) into one of four queues in memory, and to write extracted frame data into a processor's cache.
  • the pattern matching capabilities include support for up to 16 4-byte unique patterns, pattern matching on a bit-by-bit basis, matching range up to 256 bytes deep into the frame, offsets up to 252 bytes, programmable pattern size in 4 byte increments up to 64 bytes, accept or reject frames when a match is detected, and up to 8 unicast addresses for exact matches.
  • This embodiment combines the power of pattern matching with the use of hash filtering to provide an address recognition method that does not require post filtering and can be done at the MAC level instead of requiring further software intervention at the logic link controller level.
  • One way to accelerate the processing of frames is to increase the confidence that any destination address that happens to get a hit on the hash table is indeed one of the
  • the frame is simply conditionally accepted pending the pattern match result.
  • the vendor's code for example, can be used with very high effectiveness as a pattern to match. The more selective the pattern is (the less bits used) the more effective the high confidence hash hit queue method becomes. With very selective pattern the number of addresses that can be used in the hash table can be increased and still remain effective.
  • Another advantage of this embodiment is that while hashing by itself can not be used to reject a frame, without the risk of rejecting good frames, the combined pattern matching and hash filtering can be used to perform "frame rejection by hashing" since the uncertainty of hash collision is eliminated.
  • a further flexibility is that the user can file the frames that the pattern matching and hash rejected in a "high probability of no match queue" so that the frames could be examined to further validate the effectiveness of the method.
  • various control logic of ADF 230 is distributed among the aforementioned elements of ADF 230 and is not illustrated as a separate logic block.
  • a separate control logic block maybe included representative of, for example, a state machine for controlling the overall operation of ADF 230, including the pattern matching and hashing functionality.
  • a state machine might include a number of states to implement the functionality described herein. For example, the state machine might transition from an idle state to a pattern status state upon data being received and the frame being accepted. In the pattern status state, the pattern status information may be made available to receive FIFO 220. The state machine can then transition to a temporary queue data phase in which a received frame is forwarded from temporary queue 234.
  • the state machine then enters a frame status state in which the frame length and status associated with the destination address filtering (e.g., broadcast address, group/single address, promiscuous mode) are transferred to receive FIFO 220.
  • destination address filtering e.g., broadcast address, group/single address, promiscuous mode
  • Other states and state machines may be implemented in accordance with the functionality described herein.
  • a method for processing a message within an information processing system has a memory, a cache, and a packet controller.
  • the memory and the cache are each coupled to the packet controller.
  • the method includes receiving a message and performing pattern matching on the message to provide a pattern match result which indicates whether the received message includes a first pattern and provides pattern match attributes corresponding to the first pattern.
  • DOC further includes accepting the message and selecting a buffer descriptor queue (BDQ) based on the pattern match result.
  • BDQ buffer descriptor queue
  • the message is stored to memory according to the selected BDQ, at least a portion of the accepted message is selectively stored to cache, wherein the portion of the accepted message is indicated by the pattern match attributes.
  • the pattern match attributes indicate one of a plurality of BDQs corresponding to the first pattern and the selected BDQ.
  • the pattern match attributes corresponding to the first pattern indicate a default BDQ as the selected BDQ.
  • the message is accepted based on the pattern match result.
  • the pattern match attributes provide a pattern match extract indicator, and the portion of the accepted message is selectively stored to cache based on the pattern match extract indicator.
  • the portion of the accepted message may be stored to cache when the pattern match extract indicator indicates that extraction is enabled and/or disabled for the first pattern.
  • the pattern match attributes may provide an extract index and
  • the pattern match attributes may also indicate a cache write type corresponding to the first pattern to perform for storing the portion of the accepted message to cache.
  • the information processing system includes a plurality of processors coupled to the memory and the cache, and each of the processor has an ) assigned BDQ.
  • the pattern match result indicates one of the plurality of processors to process the message.
  • the pattern match result indicates a priority corresponding to the message.
  • the selected BDQ is stored to cache.
  • the pattern match attributes may indicate a cache write type corresponding to the first 5 pattern to perform for storing the at least a portion of the selected BDQ to cache.
  • the step of performing pattern matching on the message comprises determining whether the first pattern exists within the message, the first pattern indicated by pattern match data, the pattern match data having corresponding pattern match control, and in response to determining whether the first pattern exists, providing the 3 pattern match result based on the pattern match control.
  • the pattern match control may
  • the pattern match control may include a continuous search indicator which indicates whether continuous searching is enabled.
  • the pattern match control may include an inverse pattern indicator, wherein when the inverse pattern indicator has a first value, the pattern match result indicates whether the first pattern exists in the message, and when the inverse pattern indicator has a second value, the pattern match result indicates whether the first pattern does not exist within the message.
  • an information processing system includes a memory, a cache, and a packet controller coupled to the memory and the cache.
  • the packet controller includes an input to receive a message, pattern match registers storing a plurality of patterns, pattern attribute registers storing pattern match attributes corresponding to each of the plurality of patterns, pattern matching logic coupled to perform pattern matching on the message and to provide a pattern match result which indicates whether the received message includes a first pattern of the plurality of patterns, a receive buffer coupled to store the received message when accepted, and a memory controller coupled to provide the accepted message from the receive buffer to memory and to provide at least a portion of the accepted message to cache. The portion of the accepted message is indicated by the pattern match attributes corresponding to the first pattern.
  • the accepted message is provided to memory according to a selected BDQ.
  • the selected BDQ may be one of a plurality of BDQs and is indicated by the pattern match attributes corresponding to the first pattern.
  • the memory controller may be coupled to provide at least a portion of the selected BDQ to the cache.
  • the pattern match attributes may indicate a cache write type corresponding to the first pattern to perform for storing the at least a portion of the selected BDQ to cache.
  • the pattern match attributes corresponding to the first pattern provide an extract index and an extract length to indicate the portion of the accepted message provided to the cache. In yet a further embodiment, the pattern match attributes corresponding to the first pattern indicate a cache write type to perform for storing the portion of the accepted message in the cache.
  • a method in another embodiment, includes receiving a message and determining whether a first pattern match corresponding to a first pattern is detected within the received message.
  • the first pattern is indicated by pattern match data and has a corresponding pattern match acceptance indicator and a corresponding continuous search enable indicator.
  • the received message is selectively accepted based on the corresponding continuous search enable indicator when the first pattern match is detected and the corresponding pattern match acceptance indicator indicates acceptance of the received message having the detected first pattern.
  • the receiving the message includes receiving at least a portion of a packet.
  • the packet may be further characterized as an Ethernet packet.
  • the received message is accepted when the continuous search indicator corresponding to the first pattern indicates no continuous searching.
  • the received message is accepted when the continuous search indicator corresponding to the first pattern indicates continuous searching, and a second pattern match corresponding to a second pattern is detected, the second pattern having a corresponding pattern match acceptance indicator which does not indicate rejection of the received message.
  • the second pattern may be indicated by the pattern match data and the pattern match acceptance indicator corresponding to the second pattern indicates one of accepting the received message and neither accepting nor rejecting the received message.
  • the pattern match acceptance indicator corresponding to the second pattern may indicate one of accepting the received message, neither accepting nor rejecting the received message, and pattern matching is disabled for the second pattern.
  • the received message is not accepted when the continuous search indicator corresponding to the first pattern indicates continuous searching, and a second pattern match corresponding to a second pattern is detected, the second pattern having a corresponding pattern match acceptance indicator which indicates rejection of the received message.
  • the corresponding pattern match acceptance indicator indicates one of acceptance, rejection, and neither acceptance nor rejection of the received message.
  • the method further includes rejecting the message when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates rejection of the received message.
  • the first pattern has a corresponding inverse pattern indicator, and the first pattern match is detected when the received message includes the first pattern when the inverse pattern indicator has a first value, and the first pattern match is detected when the received message does not include the first pattern when the inverse pattern indicator has a second value.
  • the first pattern has a corresponding match index which indicates a location within the received message at which to determine whether the first pattern match is detected.
  • the first pattern has a corresponding concatenate indicator.
  • the method further includes determining whether a second pattern match is detected within the received message. The message is selectively accepted based on the corresponding continuous search enable indicator when the first pattern match and the second pattern match are detected, the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, and the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns. The first pattern match is deemed not detected when the second pattern match is not detected and the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns.
  • the method includes performing a hash function to determine whether a hash hit occurs, wherein when a hash hit occurs, the first pattern match is detected, and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, selectively accepting the message based on the i corresponding continuous search enable indicator.
  • a method in another embodiment, includes receiving a message and determining whether a first pattern match corresponding to a first pattern of a plurality of patterns is detected within the received message.
  • the first pattern has a corresponding pattern match acceptance indicator.
  • the method further includes determining whether a concatenate
  • the method further includes determining whether a second pattern match corresponding to a second pattern of the plurality of patterns is detected within the received message when the first pattern match is detected and the concatenate indicator of the at least one of the plurality of patterns indicates concatenation.
  • 5 concatenate indicator corresponds to one of the first and second patterns and the second pattern has a corresponding pattern match acceptance indicator.
  • the received message is selectively accepted based at least on one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern when the first pattern match is detected, the concatenate indicator
  • the pattern match acceptance indicator corresponding to the first pattern indicates one of acceptance, rejection, and neither acceptance nor rejection of a message processed using the first pattern
  • the pattern match acceptance indicator corresponding to the second pattern indicates one of acceptance, rejection, and neither acceptance nor rejection of a message processed using the second pattern
  • the concatenate indicator and the one of the pattern match acceptance indicators used to selectively accept the received message both correspond to a same one of the first pattern and the second pattern.
  • the concatenate indicator corresponding to one of the first and second patterns indicates concatenation
  • the second pattern match is detected, rejecting the received message based at least on one of the pattern match acceptance indicator corresponding to the first pattern and > the pattern match acceptance indicator corresponding to the second pattern.
  • the first pattern has a corresponding inverse pattern indicator and the second pattern has a corresponding inverse pattern indicator, and wherein: when the inverse pattern indicator corresponding to the first pattern has a first value, the first pattern match is detected when the received message does not include the first
  • the first pattern match is detected when the received message includes the first pattern; and when the inverse pattern indicator corresponding to the second pattern has the first value, the second pattern match is detected when the received message does not include the second pattern and when the inverse pattern indicator corresponding to the second pattern has the
  • the second pattern is detected when the received message includes the second pattern.
  • the first pattern occurs after the second pattern in the received message.
  • the receiving the message comprises receiving at least a portion ) of a packet.
  • the packet is further characterized as an Ethernet packet.
  • the first pattern has a corresponding match index to indicate a first location within the received message at which to determine whether the first pattern match is detected within the received message
  • the second pattern has a 5 corresponding match index to indicate a second location within the received message at which to determine whether the second pattern match is detected within the received message.
  • the concatenate indicator of the at least one of the plurality of patterns indicates concatenation, 3 and the second pattern match is detected, the received message is accepted.
  • the concatenate indicator of the at least one of the plurality of patterns indicates concatenation
  • the received message is selectively accepted based on a continuous search indicator which indicates whether to perform continuous searching.
  • a packet controller includes an input which receives a message, pattern matching logic and control logic.
  • the pattern matching logic determines whether a first pattern match corresponding to a first pattern is detected within the received message responsive to receiving the message.
  • the pattern match logic comprises at least one pattern match register which is configured to store pattern match data indicative of the first
  • pattern match control which includes a pattern match acceptance indicator corresponding to the first pattern and a continuous search enable indicator corresponding to the first pattern.
  • the control logic is coupled to the pattern matching logic. During operation, the control logic selectively accepts the received message based on the continuous search enable indicator corresponding to the first pattern when the first pattern match is
  • control logic accepts the received message when the continuous search indicator corresponding to the first pattern indicates no continuous searching, the first pattern match is detected, and the pattern match acceptance indicator ) corresponding to the first pattern indicates acceptance of the received message.
  • the control logic accepts the received message when: the continuous search indicator corresponding to the first pattern indicates continuous searching, and a 5 second pattern match corresponding to a second pattern is detected, the second pattern indicated by the pattern match data and having a corresponding pattern match acceptance indicator indicated by the pattern match control which does not indicate rejection of the received message.
  • pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message
  • the control logic does not accept the received message when: the - 37 - 261831_1.
  • DOC continuous search indicator corresponding to the first pattern indicates continuous searching, and a second pattern match corresponding to a second pattern is detected, the second pattern indicated by the pattern match data and having a corresponding pattern match acceptance indicator indicated by the pattern match control which indicates rejection of the received > message.
  • the corresponding pattern match acceptance indicator indicates one of acceptance, rejection, and neither acceptance nor rejection of the received message.
  • the pattern match control includes an inverse pattern ) indicator corresponding to the first pattem, and wherein when the inverse pattern indicator has a first value, the first pattern match is detected when the received message includes the first pattern; when the inverse pattern indicator has a second value, the first pattern match is detected when the received message does not include the first pattern.
  • the pattern match control includes a match index 5 corresponding to the first pattern which indicates a location within the received message at which to determine whether the first pattern match is detected.
  • the pattern match control includes a concatenate indicator corresponding to the first pattern; the pattern matching logic determines whether a second pattern match is detected within the received message; and the control logic
  • the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message
  • the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns and deems the first pattern match not detected
  • a packet controller includes an input which receives a message, pattern matching logic and control logic.
  • the pattern matching logic determines whether a first pattern match corresponding to a first pattern is detected within the received ) message and whether a second pattern match corresponding to a second pattern is detected.
  • the pattern match logic comprises at least one pattern match register.
  • the pattern match register stores pattern match data which indicates the first pattern and the second pattern.
  • the pattern match register also stores pattern match control information which includes a pattern match acceptance indicator corresponding to the first pattern, a pattern match acceptance indicator corresponding to the second pattern, a concatenate indicator corresponding to the first pattern and a concatenate indicator corresponding to the second pattern.
  • the control logic is coupled to the pattern matching logic to selectively accept the received message based on at least one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern, when the first pattern match is detected, the second pattern match is detected and the concatenate indicator corresponding to one of the first and second patterns indicates concatenation .
  • the one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern and the concatenate indicator corresponding to one of the first and second patterns both correspond to a same one of the first pattern and the second pattern.
  • the control logic does not accept the received message when the first pattern match is detected, the second pattern match is not detected and the concatenate indicator corresponding to one of the first and second patterns indicates concatenation .
  • the pattern match control includes an inverse pattern indicator corresponding to the first pattern and an inverse pattern indicator corresponding to the second pattern, and wherein: when the inverse pattern indicator corresponding to t ie first pattern has a first value, the first pattern match is detected when the received message does not include the first pattern and when the inverse pattern indicator corresponding to the first pattern has a second value, the first pattern match is detected when the received messa.ge includes the first pattern; and when the inverse pattern indicator corresponding to the second pattern has the first value, the second pattern match is detected when the received message does not include the second pattern and when the inverse pattern indicator corresponding to the second pattern has the second value, the second pattern is detected when the received message includes the second pattern.
  • the pattern match control includes a match index corresponding to the first pattern to indicate a first location within the received message at which to determine whether the first pattern match is detected within the received message, and a match index corresponding to the second pattern to indicate a second location within i the received message at which to determine whether the second pattern match is detected within the received message.
  • the control logic accepts the received message when the first pattern match is detected, the concatenate indicator corresponding to one of the first and second patterns indicates concatenation, and the second pattern match is detected.
  • the pattern match control includes a
  • control logic selectively accepts the received message based on the continuous search enable indicator and based on at least one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern when the first pattern match is detected, the concatenate
  • any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components.
  • any two components so associated can also be viewed as being “operably connected”, or “operably coupled”, to each
  • logic blocks are merely illustrative and that alternative embodiments may merge logic blocks or circuit elements or impose an alternate decomposition of functionality upon various logic blocks or circuit elements. Moreover, alternative embodiments may combine multiple instances of a 3 particular component.
  • the claim including "a” feature reads upon an apparatus or method including one or more of the feature in question. That is, because the apparatus or method in question includes a feature, the claim reads on the apparatus or method regardless of whether the apparatus or method includes another such similar feature.
  • This use of the word "a” as a nonlimiting, introductory article to a feature of a claim is adopted herein by Applicants as being identical to the interpretation adopted by many courts in the past, notwithstanding any anomalous or precedential case law to the contrary that may be found.

Abstract

Pattern matching is used in an information processing system to process incoming messages from a network such as an Ethernet-based network to aid in filing such messages in memory and the selective stashing of such messages in cache. Pattern matching increases the efficiency of message acceptance and rejection without increasing software-based processor tasks. The incoming message can be searched for the existence of patterns and the absence of the patterns. The incoming message can be searched for the existence of multiple patterns. The results of pattern matching can be used not only for acceptance and rejection of messages, but also for other post-receipt tasks such as selective storage of incoming messages according to identified relative priorities or absolute criticality of messages having particular pattern matches, and such as selective direction of messages to different processing domains within a multi-processor computer system according to the pattern matches.

Description

NETWORK MESSAGE PROCESSING USING PATTERN MATCHING
BACKGROUND
Field
5 [0001] The present invention relates to network communication, and, more particularly, to processing messages received via a network such as an Ethernet network.
Related Art
[0002] Local area networks (LANs), wide area networks (WANs) and other types of networks typically include a number of information processing systems coupled via
) connections operating according to various packet based communications protocols. For example, the Ethernet IEEE 802.3 protocol is a widely used LAN protocol based on the carrier-sense multiple access/collision detect (CSMA/CD) approach. Because Ethernet and IEEE 802.3 protocols are similar and can coexist on the same LAN, both are sometimes referred to as Ethernet. 10/100 Ethernet provides increased Ethernet speed from 10 to 100
5 megabits per second (Mbps) and provides a simple, cost-effective option for backbone and server connectivity. Gigabit Ethernet is another Ethernet protocol which builds on top of the basic Ethernet protocol, but increases speed tenfold over 10/100 Ethernet to 1000 Mbps, or one gigabits per second (Gbps).
[0003] Devices in a network often receive messages which are intended for them and D messages which are not intended for them. Thus, such devices must locally analyze each incoming message to determine if they should accept the message. Typically each device has an address which must be compared to an address in each received message in some form. An exact address match is computationally intensive because of address length and the large numbers of addresses to be compared. Because a device can accept messages for a number 5 of other devices, and a very large number of messages may be received, and the speed of networks is increasing, the problem of processing (e.g., accepting or rejecting) incoming messages can cause a bottleneck at various devices in a network and slow down overall performance. Traditional destination address recognition methods require post filtering which is done at higher Open Systems Interconnection (OSI) levels than the media access 0 control (MAC) level and require significant software and general processing hardware - 1 - 26183l_l.DOC intervention. Some techniques employ content addressable memories (CAMs) but such techniques are typically expensive, excessively power consumptive, and inflexible. Thus, there is a need to enhance the performance of processing incoming messages.
[0004] In addition to merely accepting or rejecting incoming messages, each device typically has various tasks to perform responsive to receiving the messages. Accordingly, some data received by messages needs to be stored and accessed within a short amount of time. Thus, it would be advantageous to enhance the processing of such messages by preprocessing the received messages (e.g., by sorting inbound messages before they are examined by a processor or software driven system resources) to free the use of such resources for other tasks and to reduce the latency of accessing critical or high priority frames.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art, by referencing the accompanying drawings. The use of the same reference symbols in different drawings indicates similar or identical items.
[0006] Figure 1 is a block diagram illustrating an information processing and communication system in accordance with an embodiment of the invention.
[0007] Figure 2 is a block diagram illustrating a receive portion of a packet controller of the system of Figure 1.
[0008] Figure 3 is a block diagram illustrating an exemplary message address format receivable and parsable by system of Figure 1.
[0009] Figure 4 is a block diagram illustrating exemplary buffer descriptor queues of Figure 1.
[0010] Figure 5 is a block diagram illustrating exemplary pattern match and pattern match attribute registers of Figure 1.
[0011] Figure 6 is a flow chart illustrating a method for processing received messages by the system of Figure 1. - 2 -
261S3l_l.DOC [0012] Figure 7 is a flow chart illustrating a portion of a method for hashing and pattern matching message addresses received by the system of Figure 1.
[0013] Figure 8 is a flow chart illustrating another portion of a method for hashing and pattern matching message addresses received by the system of Figure 1.
[0014] Figure 9 is a flow chart illustrating a method for pattern matching message addresses received by the system of Figure 1 within the illustrative flow of Figure 7.
[0015] Figure 10 is a flow chart illustrating a method for processing an accepted message within the system of Figure 1.
[0016] Figure 11 is a flow chart illustrating a method for extracting and stashing portions of a message by the system of Figure 1.
[0017] Figure 12 is a table illustrating a number of addresses processed using hashing and/or pattern matching.
DETAILED DESCRIPTION
[0018] The following discussion is intended to provide a detailed description of at least one example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention which is properly defined in the claims following this description.
[0019] Figure 1 is a block diagram illustrating an information processing and communication system 100 in accordance with an embodiment of the invention. System 100 includes processor 110, cache 120, memory 130, system bus 140, peripherals 150 and packet controller 160. Processor 110, cache 120, memory 130, peripherals 150 and packet controller 160 are all coupled via system bus 140. System 100 may be an Ethernet, Gig-Ethernet and/or XGig-Ethernet controller or otherwise compatible therewith, may be a network switch or router, or other type of device for communicating within a network.
[0020] Packet controller 160 includes bus interface unit (BIU) 170, receive portion 180, transmit portion 185 and media access controller (MAC) 190. Bus interface unit 170 is coupled to system bus 140. Bus interface unit 170 is coupled to receive portion 180 via connection 172 and to transmit portion 185 via connection 174. MAC 190 is coupled to - 3 -
26183l_l.DOC receive portion 180 via connection 192 and to transmit portion 185 via connection 194. MAC 190 is coupled to physical layer hardware to receive messages such as packets from other devices via physical (PHY) connection 198.
[0021] Messages are received at MAC 190 and passed to receive portion 180. The messages may or may not be accepted depending on address recognition, hashing, pattern matching, or hashing and pattern matching (e.g., as described below at least with reference to Figures 2-9). Information from accepted messages is passed to memory 130. Certain information may be identified by pattern matching to be especially eligible for quick access by processor 110 or other system resources, in which case such information is extracted from the normal message data sent to memory 130, and the extracted data is stashed in cache 120 (e.g., as described below at least with reference to Figures 2-6 and 10-11).
[0022] The disclosed destination address recognition protocol minimizes the need for post filtering and can be done at the media access control level instead of requiring further software and hardware intervention at higher OSI levels. For some sets of addresses, the user could find a set of patterns that yields perfect filtering at the MAC level. A deterministic algorithm may be used to generate the required patterns to ensure perfect hash-time filtering. The disclosed protocol also enables pattern match searching throughout an accepted frame, not merely within a destination address, to refine the results of the hash-time filtering.
[0023] Memory 130 includes frame data buffers 134 for storing incoming messages and buffer descriptor queues 132 for tracking the stored messages as described in further detail below. Cache 120 includes storage locations which may store one or more buffer descriptor queues 122 and storage locations for stashing (i.e., storing) extracted data 124 for subsequent use by processor 110. Extracted data is data which is extracted from the normal frame data of incoming messages for storage in cache 120 according to certain pattern matching protocols described herein. Extracted data may be, for example, critical data, quality of service (QOS) level data or other high priority data for which expedited access times might be desirable. Memory 130 and cache 120 are accessible by processor 110 and may even be accessible by other devices or processors (not shown) within system 100.
[0024] Figure 2 is a block diagram illustrating receive portion 180 of packet controller 160 of system 100. Receive portion 180 includes direct memory access (DMA) controller 210, receive FIFO 220 and address/data filter (ADF) 230. ADF 230 is coupled to receive
26183l_l.DOC messages from MAC 190 and to selectively provide such messages to FIFO 220. An exemplary message packet with a frame receivable by address/data filter 230 is discussed in greater detail below with reference to Figure 3. DMA 210 is coupled to receive message information (e.g., address and data information, and message filter results such as pattern status information described below) from receive FIFO 220 under control of FIFO controller 222.
[0025] ADF 230 includes temporary queue 234, pattern matching logic 232 and address recognition and hash logic 238. Each of temporary queue 234, pattern matching logic 232 and address recognition and hash logic 238 are coupled to receive messages (e.g., frames) from MAC 190. Temporary queue 234 is coupled to receive message filter result information from pattern matching logic 232 and address recognition and hash logic 238, and to provide the frames (or portions thereof) and the message filter information to receive FIFO 220 in response thereto.
[0026] Without pattern matching and hashing logic, a direct and full address compare would have to be performed between the destination address of every received message and the address of system 100 or other systems for which system 100 is configured to accept messages. Such a full address compare typically involves interrupting processor 110 in some form since the comparison typically occurs under control of software.
[0027] However, in the illustrated embodiment, pattern matching logic 232 and hashing logic 238 are provided to lessen the frequency of occurrence of full address compares, thereby allowing processor 110 to be free to perform other tasks. Pattern matching logic 232 performs a pattern matching analysis on the received frame to enable selective acceptance of the frame in accordance with a pattern matching result. Pattern matching is performed under control of values (e.g., control bits or fields) stored in pattern matching (PM) registers 233. Hashing logic 238 performs a hashing analysis on the address of the received frame to enable selective acceptance of the frame in accordance with a hash hit or miss result to further increase the likelihood of performing full address compares on addresses with a high probability of acceptance.
[0028] PM registers 233 of pattern matching logic 232 include 16 entries. Each entry includes five 32-bit registers. Referring to Figure 5, each entry includes a pattern (PM
DATA), a pattern mask (PM MASK) and a pattern matching control (PM CONTROL) field. - 5 -
261831_l.DOC The pattern matching control field includes a matching index (MI) field, a continuous search enable (CSE) field, an invert (IV) field, a concatenate pattern (CP) field, and a pattern match acceptance control (PMAC) field.
[0029] The PM DATA field includes a bit pattern for comparing with the received frame. If the PM DATA bit pattern (e.g., a 4 byte pattern) is found in the frame, a pattern match is detected. If the PM DATA bit pattern is not found in the frame, a pattern match is not detected. The PM DATA field is 32 bits long in the illustrated embodiment. The PM MASK field includes bits which cause certain bits in a pattern to be masked when the comparison is occurring. For example, vendor identification bits within a portion of the frame may be ignored when PM MASK is set appropriately.
[0030] The matching index (MI) field indicates how deep in the received frame pattern matching should start for the corresponding PM DATA. For example, the MI field may include 6 bits indicating a search start range from 0-256 bits. In one embodiment, MI specifies the index, in multiples of 4-bytes, from the start of the receive frame (from DA field to FCS inclusive) from which to perform pattern matching. If MI is cleared, the first 4-bytes of the destination address provide the starting point for pattern matching. The maximum programmed value for MI is 63 (252-byte offset) in the presently discussed embodiment. The MI value for each 4-byte pattern is honored even when allowing for contiguous or noncontiguous patterns.
[0031] The continuous search enable (CSE) field affects the type of action to be taken when a match is found. Specifically, the CSE bit indicates whether action should be taken immediately upon a pattern match or whether further pattern match searching should occur upon the pattern match. A set CSE bit indicates that if a match occurs on an entry, the pattern matching should continue. For example, if a pattern match is found and continuous searching is enabled, pattern matching logic 232 continues to search for other matches of PM DATA from other registers of PM registers 233 up until the 256-byte maximum. If no other matches are encountered, the attributes corresponding to the last matched entry are used. All continued patterns must not reject for a final acceptance based on pattern matching. For example, the first pattern match must at least conditionally accept, and all subsequent patterns must either accept, or neither accept nor reject in order to accept the frame. If a subsequent pattern match reject occurs, the value of CSE is ignored, the frame is rejected, and searching
- 6 -
261831_l.DOC is discontinued. If a pattern match is found and continuous searching is disabled (CSE = 0), searching for all other patterns is discontinued by pattern matching logic 232, and the frame is accepted or rejected or another determination is made based on the fact that the particular pattern match occurred.
[0032] The concatenated pattern (CP) field allows a comparison of more than the 32 bits of PM DATA available in each entry of PM registers 233. If the CP bit is set, the immediate PM registers 233 that follow the current PM register are regarded as a continuation of this pattern, and the next PM DATA entry is concatenated to the current PM DATA entry. In this case, each PM DATA entry must be found in the frame for a pattern match to occur, but the two sets of matching bits can be anywhere within the frame according to their respective MI. If the CP bit is not set, no pattern concatenation occurs. The CP field of the last PM register 233 is regarded as cleared, regardless of the value stored therein. The lowest numerical PM register 233 in which CP is set contains the pattern matching control and attribute information (except MI) that is used for concatenated patterns. For each concatenated pattern, the MI field must be set to the appropriate 4-byte multiple lest all the patterns attempt to match to the first 4-bytes of the frame (if MI is left cleared).
[0033] The invert (IV) field allows comparison of the pattern to the frame in true or complement form. For example, when invert is not set (rV=0), a pattern match occurs only when a data match occurs (e.g., PM DATA is found in the received frame). When invert is set (IN=1), a pattern match occurs only when a data match does not occur (e.g., PM DATA is not found in the received frame).
[0034] The PMAC field controls the filtering of frames based on pattern matching. PMAC stores two bits which indicate (i) whether pattern matching for the corresponding pattern is enabled, and (ii) if pattern matching is enabled for the corresponding pattern, the effect of the pattern matching once completed. For example, if the PMAC field is 00, then pattern matching for the particular entry is disabled, no pattern matching occurs for the corresponding pattern, and pattern matching logic 232 is free to move on to the next pattern in the next PM register 233. If the PMAC field is not 00, then pattern matching is enabled. If the PMAC field is 11, then the frame is rejected upon a pattern match. If the PMAC field is 10, then the frame is either accepted absolutely if continuous search is disabled (CSE = 0), or accepted conditionally if continuous search is enabled (CSE = 1). If the PMAC field is 01,
- 7 -
261S31_1 DOC then the frame is neither accepted nor rejected. In this case, the pattern is not the criteria used for accepting or rejecting a frame if a match occurs, and information is gathered for post processing regarding the pattern match result, but no decision is made to accept or reject the frame based on the information gathered. The post processing may include filing or extracting data on a frame that is accepted based on a previous pattern or based on destination address recognition, or can include other classification functionality. The frame can be accepted later by a hash process, another pattern matching process, or the like.
[0035] Referring again to Figure 2, DMA 210 includes receive buffer 211, extraction engine 212, pattern attribute registers 213, buffer descriptor and filing processor (BDFP) 214, status register 215, and buffer descriptor address registers 216. The logical blocks discussed herein are exemplary, and different embodiments may have a different logical partitions of functionality. For example, in one embodiment, DMA 210 may be envisioned as including a memory controller for performing extraction, buffer descriptor processing and filing processing.
[0036] Receive buffer 211 is coupled to receive message frames from receive FIFO 220. Status register 215 is coupled to receive pattern status (PS) information from receive FIFO 220. Pattern status includes a pattern number (e.g., PM register number) and a corresponding pattern hit indication. FIFO controller 222 is coupled to DMA 210 to control the transfer of such information. Receive buffer 211 is coupled to provide frame data to bus interface unit 170 via connection 172.
[0037] Extraction engine 212 is coupled to provide extraction control information to receive buffer 211 to indicate which frame information is to be extracted for forwarding to cache 120. Extraction engine 212 is coupled to provide attributes regarding the extracted information to bus interface unit 170 via connection 172. For example, extraction engine 212 indicates whether the data sent by receive FIFO to memory and or cache is extracted or normal and whether it is to be stored in memory 130 or both stored in memory 130 and stashed in cache 120 and any priority information associated with the data. Status register 215 provides pattern status information to extraction engine 212 to indicate which frame data should be extracted. Extraction engine 212 is also coupled to receive extraction control information from pattern attribute registers 213. For example, pattern attribute registers 213 provide an extraction index and extraction length to extraction engine 212 (discussed below).
- 8 -
261831_l.DOC [0038] Pattern attribute registers 213 are coupled to provide filing information indicative of which buffer queue in which to file the frame data (PMF) to buffer descriptor address registers 216. Status register 215 is coupled to provide pattern match information such as an indication of the actual pattern matched to BDFP 214. Buffer descriptor address registers 216 are coupled to provide a base address for each buffer descriptor queue (BDQs 410, 420, 430 and 440), and each queue pointer (BDQ_BASE, BDQ_CURRENT and BDQ_NEXT), and the default queue to BDFP 214. BDFP 214 is coupled to provide address and data information to bus interface unit 170 via connection 172.
[0039] Pattern attribute registers are written by the user to specify action upon a match occurrence, where to file frame information, when to extract frame information and how to store receive frames and their associated buffer descriptors. A total of 16 registers or entries are supported in the presently discussed embodiments. One such register (or an alternate register) may be designated as a default register and include information to specify an action when no pattern match occurs. Referring to Figure 5, each entry includes an extracted cache (e.g., L2 cache) write type (ELCWT), a buffer descriptor cache write type (BDLWT), a queue classification (QC), a pattern match file (PMF), a pattern match extract (PME), an extracted index (El) and an extracted length (EL). Other bit fields may be included to enable or support any number of other functions. For example, data snoop bits may be included to support snooping of received frames to memory or snooping of received buffer data memory accesses. In this case, when there is an access to memory, the cache can snoop a read or write access to the memory so that the cache can detect the address and then take appropriate action such as invalidating copies of the data stored in the cache, updating the cache data from the memory, or storing the data in the cache substantially in parallel with storing the data in the memory. Pattern attribute registers are exemplary memory locations for the informational content discussed. Other embodiments may include other configurations for storing such informational content, including other bit configurations, distributed register locations, etc.
[0040] The extracted cache write type (ELCWT) field specifies the write transaction type to perform for extracted data. An extraction write transaction occurs if the pattern matching extract (PME) field is set, a corresponding pattern match occurs, and the extract length (EL) field is non-zero. In one embodiment, if ELCWT is 00, then no allocation is performed; if ELCWT is 01, no extraction occurs; if ELCWT is 10, then a cache line is allocated; and if - 9 -
261S31_1.DOC ELCWT is 11, then the cache line is allocated and locked. In the case of concatenated pattern configurations, the ELCWT used is from the lowest numerical pattern attribute register. Writes to cache are performed with snoop.
[0041] The buffer descriptor cache write type (BDLWT) field specifies the write 5 transaction type to perform for the buffer descriptor for a receive frame. This occurs if a pattern match occurs, regardless of the value of PMF or PME. Writes to cache are performed with snoop. In one embodiment, if BDLWT is 00, then no allocation is performed; if BDLWT is 10, then a cache line is allocated; and if BDLWT is 11, then the cache line is allocated and locked.
) [0042] The pattern match extract (PME) field indicates whether pattern match-based extraction is enabled. If the pattern match extract bit is set (PME=1), extraction is enabled. If the pattern match extract bit is not set (PME=0), extraction is disabled.
[0043] The queue classification (QC) specifies the receive queue classification in which to file an incoming frame if the PMF field is set and a corresponding pattern match occurs.
5 In the case of concatenated pattern configurations the QC used is from the first 4-byte pattern. If QC is 00, queue #0 is used, and the buffer descriptors starting at the address pointed to by BDQ0_BASE is used. If QC is 01, queue #1 is used, and the buffer descriptors starting at the address pointed to by BDQ1_BASE is used. If QC is 10, queue #2 is used, and the buffer descriptors starting at the address pointed to by BDQ2_BASE is used. If QC is 11, queues #3
3 is used, and the buffer descriptors starting at the address pointed to by BDQ3_B ASE is used.
[0044] The pattern match file (PMF) indicates whether the QC field is used to determine where the frame is filed in memory 130. For example, if PMF=0 and a match occurs, the QC field in a default attribute register is used to determine where the frame is filed. If PMF=1 and a match occurs, the QC field in the register corresponding to the matched pattern is used 5 to determine where the frame is filed.
[0045] The pattern attribute registers 213 are also written by the user to specify the extract index and extract length to be used if a pattern match occurs and the pattern match extract (PME) bit in registers 213 is set. The extracted index (El) points to the first byte within the receive frame from which to begin extracting data. The DMA controller 210 uses this field to perform extraction if the pattern match extract field (PME=1) is set and a
- 10 - 261831_l.DOC corresponding pattern match occurs. In the case of concatenated pattern configurations (CP = 1), the El used is from the lowest numerical register (e.g., the first register in the concatenated chain). The extracted length (EL) field specifies the number of bytes to extract from the received frame. The DMA Controller 210 uses this field to perform extraction if the pattern match extract field (PME=1) is set for the corresponding pattern match. In the case of concatenated pattern configurations, the EL from the lowest numerical pattern attribute register is used. If EL is zero, no extraction takes place.
[0046] Figure 4 is a block diagram illustrating multiple exemplary buffer descriptor queues BDQO, BDQ1, BDQ2 through BDQM. Each buffer descriptor queue includes several buffer descriptors such as the storage locations shown for BDQO: BDO 412, BDl 414, BD2 416 through BDN 418. Each buffer descriptor queue has a ring structure and is accessed via three pointers: BDQ_BASE, BDQ_CURRENT, and BDQ_NEXT. Each buffer descriptor storage location stores information regarding received frame information stored in memory 130 and/or cache 120. For example, such information includes status and control 452, data length 454, data buffer pointer 456, pattern match status 458, relative extract index 460, extract length 462 and byte count 464. Each buffer descriptor queue can represent a different priority for a corresponding frame. As shown in Figure 1, the buffer descriptor queues are stored in memory 130, and sometimes also stored in cache 120 if BDLWT is appropriately set. The buffer descriptor queues may be stored with or without a corresponding extraction of frame data occurring.
[0047] Figure 6 is a flow chart illustrating an exemplary operational flow of system 100. Once a frame is received during operation 610, ADF 230 determines whether a frame should be accepted during decision 620. The process for accepting a frame is further discussed herein with reference at least to Figures 7-9. If the frame is not accepted during decision 620, ADF 230 awaits further frames at operation 610. If the frame is accepted during decision
620, the frame and pattern status are provided from temporary queue 234 to receive FIFO 220 during operation 630. After the frame and pattern status are passed to receive FIFO 220, the pattern status and frame data are provided to DMA 210 during operation 640. Once the pattern has been forwarded to DMA 210, DMA 210 can store the frame data in memory during operation 650. Also during operation 650, any data which matches an enabled pattern in pattern match registers 233 is extracted and stashed in cache 120. The process for storing
- 11
26183l_l.DOC frame data and stashing extracted frame data is further discussed herein with reference at least to Figures 10 and 11.
[0048] Figure 3 illustrates an exemplary message packet with a frame receivable by address/data filter 230 during receive frame operation 610. The illustrated format is compatible with Ethernet/IEEE 802.3 standard messages. Message 300 includes a preamble, a start frame delimiter (SFD) and the frame. The preamble and start frame delimiter provide set up information to aid the system in receiving and processing the frame. The preamble is a 7 byte field of alternating ones and zeros used for receiver timing synchronization. For example, each byte contains the value 0x55. The start frame delimiter indicates the beginning of the frame. An exemplary value for the start frame delimiter is a sequence of 0xD5 (10101011 binary because the bit ordering is least significant bit first). The illustrated frame has a length from 64-1518 bytes, and includes a 6 byte destination address (DA), a 6 byte source address, a 2 byte type/length field, a 46-1500 byte logic link control (LLC) frame, and a 4 byte frame check sequence.
[0049] The destination address of the frame includes a 3 byte vendor field and a 3 byte user value. The first bit of the user value identifies the address as an individual address (0) or a group address (1). The second bit indicates whether the address is locally-defined (1) or globally-defined (0). As illustrated, the source and destination addresses include 48 bits. Other embodiments may use different address lengths such as 16 bit addresses in earlier versions of the IEEE 802.3 specification.
[0050] The type/length field corresponds to an Ethernet type field and/or an IEEE 802.3 length field. The type field signifies the protocol (e.g., TCP/IP) used in the rest of the frame. The length field specifies the length of the data portion of the frame. Generally, the length field is unique from any type fields used in Ethernet to facilitate use of both Ethernet and IEEE 802.3 frames on the same network. The type field is identified by a decimal number equal to or greater than 1536 (0x0600) but less than 65535 (OxFFFF). If the number is between 0 and 1,500 (0x0000 through 0x05DC) then this field indicates the length of the MAC client data. In the illustrated embodiment, the range from 1,501 to 1,536 (0x5DD through 0x5ff) is undefined.
- 12
26183l_l.DOC [0051] The logical link control (LLC) is responsible for providing services to the network layer regardless of media type, such as FDDI, Ethernet, token ring, and others. The LLC layer makes use of LLC protocol data units (PDUs) in order to communicate between the media access control (MAC) layer and the upper layers of the protocol stack. Three variables determine access into the upper layers via the LLC-PDU. The variables include the destination service access point (DSAP), the source service access point (SSAP), and a control variable. The DSAP address specifies a unique identifier within the station providing protocol information for the upper layer. The SSAP provides the same information for the source address. [0052] The LLC frame includes a preamble and an information field. The preamble includes the DSAP field, the SSAP field and the control field. The information field includes data and optional padding. Padding is generally only needed if the data is smaller than 46 octets/bytes to ensure the minimum frame size of 64 octets as specified in the IEEE 802.3 standard. In 802.3x the first two octets of the data field are used as opcode (OP) (pause = 0x0001) and the second two octets are used to transmit a pause time (PT) parameter (pausetime = 0x0000 for on and OxFFFF for off). In addition, a third two-octet field can be used for an extended pause control parameter (PTE). In place of the LLC, Ethernet frames can use different protocols with similar fields. Because the use of these fields varies with the protocol used, the ability to examine them and report their content can significantly accelerate Ethernet frame processing, and such ability may be enhanced by using pattern matching.
[0053] The frame-check sequence (FCS) specifies the standard 32-bit cyclic redundancy check (CRC) obtained using the standard CCrfT-CRC polynomial on all fields except the preamble, SFD and CRC.
[0054] Figures 7 and 8 are flow charts illustrating a method for hash filtering of messages using pattern matching. Referring to Figure 7, after an incoming frame is received at temporary queue 234 during operation 610, pattern matching logic 232 accesses PM registers 233 and selects the various entries in succession to determine if a pattern stored in PM • registers 233 is contained in frame information in temporary queue 234.
- 13 261831_l.DOC [0055] For example, ADF 230 checks an ADF global control register including a pattern match enable bit (PMEN) to determine if pattern matching is enabled. If pattern matching is not enabled (PMEN = 0), flow proceeds to group address decision 715. If pattern matching is enabled (PMEN is nonzero), a pattern matching process 710 is initiated. If pattern matching process 710 results in the frame being accepted or rejected (as described in further detail below with reference to Figure 9), flow proceeds from block 710 through a respective one of the illustrated "accept" or "reject" flow chart nodes to a respective one of accept frame operation 860 or reject frame operation 870 of Figure 8. If pattern matching process 710 does not result in a frame acceptance or rejection decision being made, flow proceeds from pattern matching process 710 through the illustrated "no decision/no pattern match detected" node to the aforementioned group address decision 715.
[0056] During group address decision 715, receive portion 180 determines whether the address in the received frame is a group address. In the presently discussed embodiment, the first bit of the user value of the frame identifies the address as an individual address (0) or a group address (1). If the address is not a group address, flow proceeds to station address decision 720. If the address is a group address, flow proceeds to broadcast address decision 725.
[0057] During station address decision 720, receive portion 180 determines whether the address in the received frame is a station address by performing an exact 48 bit compare with frame data. If the address is determined to be a station address, flow proceeds from block 720 through the illustrated "accept" flow chart node to accept frame operation 860 in Figure 8, and the frame is accepted at accept frame operation 860. If the address is not determined to be a station address, flow proceeds to hash hit decision 740.
[0058] During broadcast decision 725, receive portion 180 determines whether the address in the received frame is a broadcast address. An exemplary broadcast address is an address of OxFFFFFF-FFFFFF. If the address is determined to be a broadcast address, flow proceeds to broadcast enabled decision 730. If the address is not determined to be a broadcast address, flow proceeds to the aforementioned hash hit decision 740.
[0059] During broadcast enabled decision 730, receive portion 180 determines whether the broadcast functionality is enabled. Broadcast functionality is enabled when an ADF global control register bit BC_REJ is reset. If the broadcast functionality is enabled, flow - 14 -
26183l_l.DOC proceeds from block 730 through the illustrated "accept" flow chart node to accept frame operation 860 in Figure 8, and the frame is accepted at accept frame operation 860. If broadcast functionality is not enabled, flow proceeds to promiscuous mode decision 735.
[0060] During promiscuous mode decision 735, receive portion 180 determines whether promiscuous mode is enabled. Promiscuous mode is enabled when an ADF global control register promiscuous bit is set (PROM = 1). When receive portion is in promiscuous mode, all frames are accepted which have not been rejected by pattern matching. Generally, promiscuous mode is used for testing and is rarely used. If promiscuous mode is enabled, flow proceeds from block 735 through the illustrated "accept" flow chart node to accept i frame operation 860 in Figure 8, and the frame is accepted at accept frame operation 860. If promiscuous mode is disabled, flow proceeds from block 735 through the illustrated "reject" flow chart node to reject frame operation 870 in Figure 8, and the frame is rejected at reject frame operation 870.
[0061] Because pattern matching may be performed at operation 710 prior to or in i parallel with promiscuous mode decision 735 (or otherwise prior to acceptance as a result of promiscuous mode decision 735), a discriminating promiscuous mode may be used in which frames from all addresses are accepted except for one or more specific frames which contain a pattern which causes rejection of the frame. For example, specific addresses may be rejected with the aid of the pattern matching while all other addresses are accepted.
) [0062] During hash hit decision 740, receive portion 180 determines if a hash hit on the frame destination address has occurred. The 48-bit destination address is mapped into one of 256 bins (or more in other embodiments) by using a portion of a 32-bit cyclic redundancy check (CRC) checksum. See, for example, Figure 12 which illustrates a number of CRCs 1224 which have been generated for a number of corresponding addresses 1222. Each
5 hexadecimal CRC 1224 of each of lines 1201-1210 corresponds to the 6-byte hexadecimal destination address of the same line.
[0063] During setup of system 100, the bits of a CRC checksum are used to index into a hash table. In one embodiment, eight bits are used to index a 256 bin table. The higher order 3 bits of the 8-bit field are used to select one of the 8 hash bucket registers in an individual hash table and/or a group hash table. The lower order 5-bit field selects a bit within the selected 32-bit register. The same checksum is used when the controller receives a frame. If - 15 - 261831_1.DOC the CRC checksum of the incoming address selects a bit that is set in the group/individual hash table, a hash hit has occurred. Otherwise, no hash hit has occurred.
[0064] In the illustrated embodiment, the first 8 bits of the CRC select a bit in the hash table. The addresses in lines 1201-1203 and 1206 are to be received by the system and have i therefore been used to set up the hash table. In line 1201, the hexadecimal value 0x04 maps to hash bucket bin 4. In line 1202, the hexadecimal value OxOF maps to hash bucket bin 15. In line 1203, the hexadecimal value 0x15 maps to hash bucket bin 21. In line 1206, the hexadecimal value OxCB maps to hash bucket bin 203. Thus, addresses which have CRCs which select any of bucket bins 4, 15, 21 and 203 will be hash hits when such addresses are
) received.
[0065] The effectiveness of the hash table can decline as the number of addresses increases. For example, as the number of addresses stored in the 256-bin hash table increases, the vast majority of the hash table bits are set, preventing a significantly smaller fraction of unintended frames from reaching memory. One advantage of hash filtering is that
5 the speed of the hashing does not depend on the number of addresses in the destination address list. It should also be noted that a hashing-alone protocol, without pattern matching, cannot be used to reject frames that match a set of selected addresses because unintended addresses can map to the same bit in the hash table resulting in the rejection of frames that should have been received. Thus, hash filtering alone results in imperfect filtering which
) requires post-filtering of the frames that reach memory. This may be illustrated by an example below with reference to the received destination addresses shown in Figure 12.
[0066] During hash hit decision 740, a CRC for each received address is used to select a hash bucket bin. If the selected bin indicates a hit, then a hash hit has occurred. For example, when any of addresses 1201-1203 and 1206-1210 are received, one of bins 4, 15, 21
5 and 203 is selected, and a hash hit has occurred. Accordingly, when address 1204 or address 1205 are received, none of bins 4, 15, 21 and 203 is selected, and a hash hit has not occurred. The frame is typically rejected when a hash hit has not occurred. In this way, addresses 1204 and 1205 may be rejected. However, addresses 1207-1210 of Figure 12 generated hash hits, but are not addresses intended for receipt and acceptance by system 100. Therefore, another means of filtering must be employed.
- 16 261831_l.DOC [0067] System 100 uses pattern matching to further filter the incoming addresses so that the need for processor/software-based post-filtering is minimized or even eliminated. For example, a pattern may be stored in a PM register so that addresses cause misleading hash hits may be rejected. In the illustrated embodiment, addresses can be rejected if they are not intended for a particular vendor ID (first 24 bits of destination address). A pattern of 0x0050FC04 has been stored as PM DATA in a PM register along with a PM MASK of OxFFFFFFOO. In this way, each address which does not have 0x0050FC in its first 24 bits is rejectable by pattern matching. In this case, addresses 1207-1209 are rejected, but 1210 is not rejected since its vendor ID matches the desired vendor ID.
[0068] A further pattern may be stored to improve the process. For example, using 2 patterns, one with PM DATA 0x0050FC04 and a PM MASK of OxFFFFFFFF, and a second pattern of PM DATA 0xOO5OFCO3-C with a PM MASK of OxFFFFFFFF-F may be used. In this way, each address which is a hash hit but which does not have 0x0050FC04 in its first 32 bits and 0x0050FCO3-C in its first 36 bits may be effectively ignored through pattern matching and hashing. In this case, addresses 1207-1210 are effectively rejected due to pattern matching and hashing, and only the desired addresses are accepted by system 100.
[0069] Thus, received addresses 1201 - 1210 cause a variety of different results. Addresses 1204 arid 1205 cause a hash miss and are therefore not accepted. Addresses 1201- 1203 and 1206-1210 cause a hash hit. Addresses 1201-1203 cause a hash hit and a pattern match due to the first pattern being found therein. Addresses 1201-1203 are therefore accepted. Address 1206 causes a hash hit and a pattern match due to the second pattern being found therein. Address 1206 is therefore accepted. Addresses 1207-1210, while causing a hash hit, do not result in a pattern match because the first and second patterns are not found therein. Addresses 1207-1210 are therefore not accepted.
[0070] In general, if 32 group addresses are stored in the hash table and random group addresses are received, the hash table prevents a large percentage (e.g., in some instances as high or higher than 85%) of the group address frames from reaching memory. Without the pattern matching of the current disclosure, software operating on system 100 would have to further filter (i.e., post-filter) those that reach memory 130 to determine if they contain correct addresses. In the foregoing example, addresses 1207-1210 would have required
17 -
26183l_l.DOC further post filtering involving processor 110 without the pattern matching induced rejection conditions being triggered.
[0071] Referring to Figure 8, receive portion 180 determines if pattern matching is enabled for a selected pattern PM DATA in a selected register during pattern match enabled i decision 845. If pattern matching is not enabled (PMEN = 0), flow proceeds to hash promiscuous decision 855. If pattern matching is enabled (PMEN = 1), a pattern matching process 850 is initiated. If pattern matching process 850 results in the frame being accepted or rejected (as described in further detail below with reference to Figure 9), flow proceeds from block 850 through a respective one of the illustrated "accept" or "reject" flow
) chart nodes to a respective one of accept frame operation 860 or reject frame operation 870. If a pattern match occurs during pattern matching process 850 without a frame acceptance or rejection decision being made, or if no pattern matches occur, flow proceeds from pattern matching process 850 through the illustrated "no decision/no pattern match detected" node to pattern match not detected decision 852.
5 [0072] Referring to pattern match not detected decision 852 in the illustrated embodiment presently discussed, if none of the 16 patterns resulted in a pattern match being detected, flow proceeds from decision 852 through the illustrated "reject" flow chart node to reject frame operation 870. In other embodiments, the frame may be retained for further filtering by processor 11O. In a variant embodiment, the frame may be given a lower priority than frames
3 for which a pattern was detected so that processor 110 focuses on high confidence frames (with a hash hit and a pattern match) before low confidence frames (with a hash hit but no pattern match). In another variant embodiment, the frames may be stored in different queues corresponding to different processing elements. If at least one of the 16 patterns resulted in a pattern match being detected, flow proceeds from decision 852 through the illustrated "no decision" flow chart node to the aforementioned hash/promiscuous decision 855. The elements of Figures 7 and 8 described so far correspond to media access control functionality.
[0073] During hash/promiscuous decision 855, data link functionality is implemented when either there has been a pattern match with no decision (e.g., no acceptance and no rejection) or there has been no pattern match. Receive portion 180 (e.g., a state machine in ADF 230) determines whether a perfect hash hit has occurred and/or whether promiscuous mode is enabled. A perfect hash hit occurs when both a hash hit and a pattern match occur
- 18 - 26183l_l.DOC that uniquely correspond to only one address. In contrast, a high confidence hash hit occurs when both a hash hit and a pattern match occur which correspond to a low number of addresses but more than one address. A high confidence hash hit provides enhanced performance over traditional address filtering due to the use of pattern matching which
! enhances the probability that the high confidence address is in fact a sought address. Careful selection of a pattern using system and/or network characteristics can cause a higher probability that a hash hit is perfect. If either a perfect hash hit has occurred or promiscuous mode is enabled, the received frame is accepted at frame accept operation 860. If neither a perfect hash hit has occurred nor promiscuous mode is enabled, flow proceeds to full address
) match decision 865.
[0074] During full address match decision 855, processor 110 determines whether the a full address match has occurred. System 100 performs a direct comparison of the address to the addresses known to system 100. System 100 may store received addresses in a priority queue or the like so that addresses with a higher predicted likelihood of acceptance (high
5 confidence frames) are processed before addresses with a lower predicted likelihood of acceptance (low confidence frames). Such a full and direct comparison is costly in terms of processing resources of system 100. Thus, the pattern matching and hashing described herein seeks to avoid such a costly direct address compare. In this way, system 100 can use pattern matching without a direct address compare as much as possible to enhance the performance
) of the system, and the full address match is a last resort. If there is a full address match, the received frame is accepted at frame accept operation 860. If there is not a full address match, the received frame is rejected at frame reject operation 870.
[0075] Figure 9 is a flow chart illustrating a method for pattern matching message addresses received by system 100. The frame may be accepted or rejected depending on
5 whether a pattern match occurs. Any portion of the message frame may be checked for a match including the IP address. The operations of Figure 9 are executed, when pattern matching is enabled (PMEN = 1), for each pattern for which a corresponding pattern match acceptor indicator permits (e.g., PMAC = 1), unless a final disposition (acceptance or rejection) is mandated by one pattern match occurrence prior to another pattern match being
3 attempted. If a pattern data set is enabled, the message data is checked for a pattern match. If a pattern match data set is not enabled, or if a pattern match is not found, a next pattern is
- 19 - 261831_l.DOC selected and the process is repeated. If continuous search is enabled, then searching continues for the next pattern irrespective of a match.
[0076] Referring to receive operation 935, bytes of the incoming frame are received into temporary queue 234 for temporary storage until a decision is made whether to accept or reject the incoming frame. Bytes of the incoming frame are also provided to pattern matching logic 232 and address recognition and hash logic 238 so that such a decision may be made while the bytes are being received by temporary queue 234. After bytes have been received during receive operation 935, flow proceeds to pattern match determination operation 905.
[0077] Referring to pattern match determination operation 905, pattern matching logic 232 determines if pattern match data stored in PM registers 233 matches data in the received frame. For example, pattern matching logic compares the PM DATA in a first one of PM registers 233 with incoming frame data as it is stored in temporary queue 234. Temporary queue 234 is used to store the frame until a decision is made. A pattern match occurs, for example, if each bit of the PM DATA (up to 4 bytes) matches each bit of the message data located according to the message index MI. Matching may occur up to 256 bytes deep into the frame with an offset of a maximum of 252 bytes. Certain of the PM DATA may be masked by the corresponding PM MASK. For example, each bit of PM DATA may not be checked for a match if a corresponding PM MASK bit is cleared. If the concatenate pattern (CP) field of the previous pattern is set, then a match occurs only if both PM DATA fields (the current PM DATA and the PM DATA of the previous PM register) are found in the frame. The PMAC field determines whether the corresponding PM DATA is enabled, and if it is enabled, a course of action to take upon a match. Operation 905 may be done in parallel with operation 935.
[0078] Referring to pattern match decision 905, if pattern matching is disabled (e.g., PMAC = 00), flow proceeds to end of frame (EOF) or queue full decision 930. If a pattern match is not found during pattern match determination operation 905, flow also proceeds to EOF or queue full decision 930. If there is a pattern match and pattern matching is not disabled (e.g., PMAC ≠ 00) during decision 910, flow proceeds to accepting frames decision 915.
- 20 -
26183l_l.DOC [0079] Referring to EOF/queue full decision 930, if temporary queue 234 is not full and the end of the frame has not yet been received (and the frame has not been rejected), additional bytes continue to be received into temporary queue 234 during receive operation 935, and flow proceeds to pattern match determination operation 905 to initiate pattern ) matching on the additional received frame information. If either the end of frame has been received or the temporary queue 234 is full, flow proceeds to reject all mode decision 940.
[0080] Referring to reject all mode decision 940, if ADF 230 is determined to be in reject all mode, the frame is rejected and operational flow continues as illustrated in either Figures 7 or 8 depending on which corresponding flow initiated the pattern matching flow illustrated in ) Figure 9. If ADF 230 is not in reject all mode, no decision regarding the frame is made, and flow continues as illustrated in Figures 7 or 8 depending on which flow initiated the pattern matching illustrated in Figure 9.
[0081] Referring to accepting frames decision 915, if ADF 230 is accepting frames for a pattern (e.g., PMAC = 10 for a particular PM DATA), then the frame is conditionally 5 accepted, and flow proceeds to continuous search decision 945. If ADF 230 is not accepting frames for the pattern (e.g., PMAC ≠ 10 for a particular PM DATA), then flow proceeds to rejecting frames decision 920.
[0082] Referring to rejecting frames decision 920, if ADF 230 is rejecting frames for a pattern (e.g., PMAC = 11 for a particular PM DATA), then the incoming frame is rejected because it contains the PM DATA (or otherwise causes a match taking other factors into account such as PM MASK, CP, etc.) associated with a rejecting PMAC value. Flow then continues as illustrated in Figures 7 or 8 depending on which flow initiated the pattern matching illustrated in Figure 9. If ADF 230 is not rejecting frames for a pattern (e.g., PMAC ≠ 11 for a particular PM DATA, and in this case PMAC = 01), then flow proceeds to continuous search decision 925.
[0083] Referring to continuous search decision 925, if continuous search for a pattern is enabled (e.g., CSE = 1), flow proceeds to EOF or queue full decision 930. If continuous search is not enabled (e.g., CSE = 0) during continuous search decision 925, then no decision on the foregoing pattern match is made, and flow proceeds to reject all mode decision 940.
- 21 - 261 δ31_1.DOC [0084] Referring to continuous search decision 945, if continuous search for a pattern is enabled (e.g., CSE = 1), flow proceeds to EOF or queue full decision 950. If continuous search is not enabled (e.g., CSE = 0) during continuous search decision 945, then the incoming frame is accepted. The frame is accepted because it contains the PM DATA (or otherwise causes a match taking other factors into account such as PM MASK, CP, etc.) and pattern matching is enabled (PMAC = 10) and no further searching need be done (CSE = 0). Flow then continues as illustrated in Figures 7 or 8 depending on which flow initiated the pattern matching illustrated in Figure 9.
[0085] Referring to EOF/queue full decision 950, if either the end of frame has been received or the temporary queue 234 is full, then the incoming frame is accepted. The frame is accepted because a pattern match has occurred, pattern matching is enabled (PMAC = 10) and the end of frame has been reached or the temporary queue is full so no further pattern matching is possible. Flow then continues as illustrated in Figures 7 or 8 depending on which flow initiated the pattern matching illustrated in Figure 9.
[0086] If temporary queue 234 is not full and the end of the frame has not yet been received during EOF/queue full decision 950, additional bytes are received into temporary queue 234 during receive operation 955, and flow proceeds to pattern match determination operation 960 to initiate pattern matching on the additional received frame information for a next pattern (e.g., PM DATA in a next sequential PM register 233). Pattern match determination operation 960 is similar in functionality to operation 905 described above. Operation 955 may be done in parallel with operation 960. After pattern matching operation 960, flow proceeds to pattern match decision 965.
[0087] Referring to pattern match decision 965, if pattern matching is disabled (e.g., PMAC = 00) for the currently selected pattern (e.g., PM DATA in the currently selected PM register 233), flow proceeds to EOF/queue full decision 950. If a pattern match is not found during pattern match determination operation 965, flow also proceeds to EOF/queue full decision 950. If there is a pattern match and pattern matching is not disabled (e.g., PMAC ≠ 00) during decision 965, then flow proceeds to not rejecting frames decision 970.
[0088] Referring to not rejecting frames decision 970, if ADF 230 is not rejecting frames (e.g., PMAC = 01 or PMAC = 10) for the next pattern (e.g., the corresponding PM DATA), flow proceeds to EOF/queue full decision 950. Otherwise, the incoming frame is rejected - 22 -
2618 _1.DOC since a reject pattern (PMAC = 11) has been detected. Flow then continues as illustrated in Figures 7 or 8 depending on which flow initiated the pattern matching illustrated in Figure 9.
[0089] Referring to Figure 10, a method for processing an accepted message within the system of Figure 1. One advantage of the illustrated embodiment is that system access to 5 critical data within a packet can be enhanced by detecting it when it is received without resorting to higher level resources, and placing it along with descriptor information in a cache for subsequently faster access.
[0090] The illustrated flow is initiated when the pattern status has been provided to DMA 210 and placed into status register 215 during receive pattern status operation 1005.
) Generally thereafter, the frame data is filed in memory 130 and/or stashed in cache 120 depending on the pattern status information. Filing includes grouping of packets in memory based on packet signature, extraction includes locating a specific portion of a packet (e.g., by using an extraction index and length value), and stashing includes copying extracted data into processor cache space. Extraction can allocate and lock processor cache memory, but
5 software is responsible for unlocking all data in the cache that was locked by the DMA during extraction. Extracted data is not removed from the frame data; rather, all the frame data is stored in memory, and only extract data is copied to the processor cache. Such filing and stashing are described in greater detail below.
[0091] Referring to select buffer descriptor operation 1010, BDFP 214 of DMA 210 3 selects a buffer descriptor based on the pattern status and the queue classification (QC) field in the pattern match attribute registers 213. The QC field determines which buffer descriptor queue 122/132 to use. The pattern status includes a pointer to the appropriate QC field. The pattern status also indicates which pattern match occurred, if any. If a pattern match occurred, the matched pattern may cause data to be extracted from the frame and stashed as extracted data 124 in cache 120. Thus, buffer descriptor queues are chosen 122 in addition to buffer descriptor queues 132. If no pattern match occurred, no extraction would occur, resulting in only buffer descriptor queues 132 being used. After select buffer descriptor operation 1010, flow proceeds to extraction preparation operation 1015.
- 23 261831J.D0C [0092] During extraction preparation operation 1015, extraction engine 212 obtains the extract index (El) and extract length (EL) from pattern attribute registers 213 if the pattern status indicates a pattern match. After extraction preparation operation 1015, flow proceeds to BDQ available decision 1020.
5 [0093] Referring to BDQ available decision 1020, BDFP 214 determines whether the selected buffer descriptor queue (BDQ) is available. That is, BDFP 214 determines if there is empty space in the selected BDQ. If the selected BDQ is available, flow proceeds through flow chart node "A" to update BDQ pointer operation 1030. If the selected BDQ is not available, flow proceeds to flush operation 1025, whereupon the frame and status frame
) length are flushed from receive FIFO 220, and flow proceeds to receive pattern status operation 1005.
[0094] Referring to update BDQ pointer operation 1030, BDFP 214 updates the buffer descriptor queue current pointer (BDQ_CURRENT) to point to the next buffer descriptor queue (BDQ_CURRENT = BDQ_NEXT). After the current BDQ pointer is updated, flow 5 proceeds to BDQ empty decision 1035.
[0095] Referring to BDQ empty decision 1035, BDFP 214 determines if the entry pointed to by BDQ_CURRENT is empty. If the current BDQ entry is not empty, the selected buffer descriptor queue is marked as unavailable during mark unavailable operation 1040, and flow proceeds to flush operation 1025. If the current BDQ entry is empty, flow proceeds to 3 transfer operation 1045.
[0096] Referring to transfer operation 1045, BDFP 214 transfers frame data from receive FIFO 220 to receive buffer 211. The transfer proceeds until the end of the frame (EOF) is received or receive buffer 211 is full. After the frame data is transferred, flow proceeds to EOF decision 1050. [0097] Referring to EOF decision 1050, if the end of frame was not received during operation 1045, flow proceeds to selective extract and stash operation 1060. If the end of frame was received during operation 1045, flow proceeds to obtain status frame length operation 1055 during which extraction engine 212 obtains the status frame length from status register 215. After operation 1055, flow proceeds to selective extract and stash operation 1060.
- 24 - 261831_l.DOC [0098] Data is controllably extracted from the received frame for stashing in cache 120 during selective extract and stash operation 1060. Selective extract and stash operation 1060 is more fully described below with reference to Figure 11. After selective extract and stash operation 1060, flow proceeds to EOF decision 1065.
i [0099] Referring to EOF decision 1065, if the end of frame was received during selective extract and stash operation 1060, flow proceeds to EOF update operation 1080. If the end of frame was not received during selective extract and stash operation 1060, flow proceeds to end of buffer (EOB) decision 1070.
[0100] Referring to EOF update operation 1080, BDFP 214 updates the status and control ) information of the current buffer descriptor queue. For example, BDFP 214 sets an extraction occurred bit in the current BDQ 122 to indicate that extracted data 124 has been stored in cache 120. The next BDQ pointer (BDQ_NEXT) is set to point to the next location in the selected BDQ. The contents of the current BDQ are copied to the cache according to BDLWT. For example, if a pattern match occurs, and if BDLWT is 00, then no allocation is
> performed; if BDLWT is 10, then a cache 120 line is allocated; and if BDLWT is 11 , then the cache 120 line is allocated and locked. After EOF update operation 1080, flow proceeds to receive pattern status 1005 so that more data may be processed from the next frame.
[0101] Referring to EOB decision 1070, if the end of the data buffer 134 in memory 130 was encountered during selective extract and stash operation 1060, flow proceeds to EOB ) update operation 1075. If the end of the data buffer was not encountered during selective extract and stash operation 1060, flow proceeds to transfer operation 1045 described above.
[0102] Referring to EOB update operation 1075, BDFP 214 updates the status and control information of the current buffer descriptor queue. For example, BDFP 214 sets an extraction occurred bit in the current BDQ 122 to indicate that extracted data 124 has been
> stored in cache 120. The next BDQ pointer (BDQ_NEXT) is set to point to the next location in the selected BDQ. The contents of the current BDQ are copied to the cache according to BDLWT. After EOB update operation 1075, flow proceeds to node A so that more data can be processed from the same frame.
25 - 261831_l.DOC [0103] Figure 11 is a flow chart illustrating a method for extracting and stashing portions of a message by the system of Figure 1 using a 64 byte buffer. The method illustrated in Figure 11 is called by selective extract and stash operation 1060 of Figure 10.
[0104] Referring to Figure 11 , extraction engine 212 determines if extraction has been requested for a given pattern match during extraction requested decision 1105. Extraction engine 212 also checks various extraction fields such as an extraction add (EX__ADD) field and an extraction length (EL) field. The extraction add field equals the extraction length plus the corresponding extraction index (e.g., EXADD = EL + EI[11 : 15]). If extraction is requested (PME = 1), the extraction add value is greater than zero, and the extraction length is greater than zero, flow proceeds to EP<64 decision 1125. If extraction is not requested, the extraction add value is zero, or the extraction length is zero, flow proceeds to alignment decision 1110.
[0105] Referring to alignment decision 1110, if the target address is not a 64 byte aligned address, flow proceeds to send MAX(32B) operation 1120 where a maximum of 32 bytes of normal data is sent to memory 130. MAX(32B) is a number of bytes up to and including 32 bytes (e.g., where x is a number of bytes, MAX(xB) < x bytes). If the target address is a 64 byte aligned address, flow proceeds to send MAX(64B) operation 1120 where MAX(64B) of normal data is sent to memory 130. After either of send MAX(32B) operation 1115 or send MAX(64B) operation 1120, the extraction flow exits, and flow proceeds to EOF decision 1065 of Figure 10.
[0106] Referring to EI<64 decision 1125, if the extract index is greater than 64, the data to be extracted has not yet arrived, and flow proceeds to send MAX(64B) operation 1130 where MAX(64B) of normal data is sent to memory 130. After send MAX(64B) operation 1130, the extract index is decremented by 64 (e.g., EI=EI-64) during decrement El operation 1135, and the extraction flow exits, and flow proceeds to EOF decision 1065 of Figure 10.
[0107] Referring again to EI<64 decision 1125, if the extract index is less than or equal to 64 flow proceeds to store relative El operation 1140. The relative extract index is an index to a location within the data buffer in memory 130 where the extracted data begins. The relative extract index is stored by BDFP 214 internally to DMA 210 until it is later written to the appropriate BDQ in memory 130 and/or cache 120 during operation 1075 or 1080 (Figure 10). After store relative El operation 1140, flow proceeds to EI<32 decision 1145. - 26 -
261831_l.DOC [0108] Referring to EI<32 decision 1145, extraction engine 212 performs a comparison with the extraction index and checks an extract data flag which is internally stored in DMA 210, for example, within extraction engine 212. For example, if the extraction index is greater than 32, and the extract data flag is not true, flow proceeds to send MAX(32B) operation 1150 where MAX(32B) of normal data is sent to memory 130. After send MAX(32B) operation 1150, the extract data flag is set true, and the extraction flow exits, and flow proceeds to EOF decision 1065 of Figure 10.
[0109] Referring again to Er<32 decision 1145, if the extraction index is less than or equal to 32, or the extract data flag is true, flow proceeds to less than 32B decision 1160. If there is at least 32 bytes of data to extract from the received frame (e.g., EX_ADD≥32B), flow proceeds to send 32B operation 1170 where 32 bytes of extract data is sent to memory 130 and copied to cache 120 according to ELCWT. For example, if ELCWT is 00, then no allocation is performed; if ELCWT is 01, no extraction occurs; if ELCWT is 10, then a cache line is allocated; and if ELCWT is 11, then the cache line is allocated and locked. If there is less than 32 bytes of data to extract from the received frame (e.g., EX_ADD<32B), flow proceeds to round up operation 1165 where EX_ADD is rounded up to a value of 32, and flow further proceeds to send 32B operation 117O.
[0110] After send 32B operation 1170, flow proceeds to decrement operation 1175 during which the extract add field is decremented by the number of 32 byte segments extracted (e.g., EX_ADD = EX_ADD - 32). After decrement operation 1175, the extract data flag is cleared during clear operation 1180 if the end of frame (EOF) has been reached or if EX_ADD = 0. After clear operation 1180, the extraction flow exits, and flow proceeds to EOF decision 1065 of Figure 10.
[0111] In one embodiment, a portion of a message frame is received by system 100 at MAC 190 of packet controller 160. (See, Figure 1 and Figure 6, operation 610). The received portion of the message frame (the "received frame") is provided to a temporary queue 234 of address/data filter 230 of Figure 2. The frame is processed by address/data filter 230 to determine if it should be accepted or rejected. (See Figure 6, operation 620) Address recognition, hashing, hashing with pattern matching for perfect hashing, and pattern matching (Figures 7-9) are performed on the received frame by address recognition and hash logic 238 and pattern matching logic 232. Address recognition and hash logic 238 perform
- 27 -
26183l_l.DOC hashing and any necessary full direct address comparisons. PM registers 233 include a number of registers which correspond to a number of patterns to be matched. Pattern matching logic 232 performs the pattern matching based on configuration values stored in PM registers 233 (e.g., with continuous search and/or concatenation capabilities). If accepted after the pattern matching and hashing or other fail safe conditions, the received frame and pattern status information (pattern match results) are transferred to receive FIFO 220 (see, Figure 6, operation 630.
[0112] The received frame is then transferred to receive buffer 211, and the pattern status information is transferred to status register 215 of DMA 210. (See Figure 6, operation 640.) Extraction engine 212 accesses pattern attribute registers 213 and status register 215 to determine whether data should be extracted from the received frame in receive buffer 211, and controls the extraction of such data as applicable. (See Figures 10 and 11.) The BDFP accesses the status register 215 and the buffer descriptor address registers and generates address and data information to be written to memory 130 and/or cache 120. The address information from BDFP 214 includes a data buffer pointer within a data buffer for frame data (e.g., data buffer pointer 456) or pointer(s) to one of the next entries in a buffer descriptor queue (e.g., BDQ_BASE, BDQ_CURRENT, BDQ_NEXT). The data information includes status and control 452, data length 454, data buffer pointer 456, pattern match status 458, relative extract index 460, extract length 462 and byte count 464 shown in Figure 4.
[0113] All or portions of the frame are then filed in memory 130 ("normal data") and/or stashed in cache 120 ("extracted data"), along with corresponding descriptive information in corresponding buffer descriptor queues 132/122. (See Figure 6, operation 650, and Figures 10 and 11). More specifically, receive buffer 211 provides the normal or extracted frame data to bus interface unit (BIU) 170, the extraction engine provides attributes to BIU 170 which identify the frame data as normal or extracted, and the BDFP 214 provides address information and buffer descriptor data from the buffer descriptor address registers 216 to BIU 170. BIU 170 passes the frame data to bus 140 for storing in cache 120 and/or memory 130. Normal frame data is stored in at least one data buffer 134, and descriptor data regarding the normal frame data is stored in buffer descriptor queues 132. If extraction occurred, the extracted frame data is stored ("stashed") in cache portion 124, and descriptor data regarding the extracted frame data is stored in buffer descriptor queues 122.
- 28
261831_1.DOC [0114] The above description is intended to describe at least one embodiment of the invention. The above description is not intended to define the scope of the invention. Rather, the scope of the invention is defined in the claims below. Thus, other embodiments of the invention include other variations, modifications, additions, and/or improvements to the 5 above description.
[0115] One embodiment incorporates a novel form of pattern matching which allows the user to program up to 16 four byte patterns which can be concatenated to form a longer pattern and used to match a portion of the frame within the first 256 bytes. Associated with each pattern is a set of attributes that can be programmed to accept/reject a frame, file a frame ) into one of four queues in memory, and to write extracted frame data into a processor's cache. The pattern matching capabilities include support for up to 16 4-byte unique patterns, pattern matching on a bit-by-bit basis, matching range up to 256 bytes deep into the frame, offsets up to 252 bytes, programmable pattern size in 4 byte increments up to 64 bytes, accept or reject frames when a match is detected, and up to 8 unicast addresses for exact matches.
5 [0116] This embodiment combines the power of pattern matching with the use of hash filtering to provide an address recognition method that does not require post filtering and can be done at the MAC level instead of requiring further software intervention at the logic link controller level. One way to accelerate the processing of frames is to increase the confidence that any destination address that happens to get a hit on the hash table is indeed one of the
3 addresses the system is looking for. Since more than one address will have a CRC with the same 8 most significant bits, the use of a hash table with pattern matching provides a method of significantly increasing the chances that the extra processing that must be done on a hash hit (retrieving the address and comparing it to a list of valid destination addresses) is not wasted effort. This is valuable because it reduces the extra memory bus utilization caused by unintended hash table hits. The number of addresses that can be hashed is also limited by the fact that the hash table effectiveness declines as the number of addresses increases. Since the user builds the hash table first and since the number of addresses to be hashed is usually relatively low (32 to 64) it is relatively easy to find common patterns that could cover the majority if not all of his addresses. Using a handful of pattern match registers the user could insure that anything filed in the desired queue is a hit and can be processed without the need of a compare table.
29 261831_l.DOC [0117] In one embodiment, if the CRC checksum selects a bit that is set in the group/individual hash table, the frame is simply conditionally accepted pending the pattern match result. The vendor's code, for example, can be used with very high effectiveness as a pattern to match. The more selective the pattern is (the less bits used) the more effective the high confidence hash hit queue method becomes. With very selective pattern the number of addresses that can be used in the hash table can be increased and still remain effective. Another advantage of this embodiment is that while hashing by itself can not be used to reject a frame, without the risk of rejecting good frames, the combined pattern matching and hash filtering can be used to perform "frame rejection by hashing" since the uncertainty of hash collision is eliminated. A further flexibility is that the user can file the frames that the pattern matching and hash rejected in a "high probability of no match queue" so that the frames could be examined to further validate the effectiveness of the method.
[0118] As described herein, various control logic of ADF 230 is distributed among the aforementioned elements of ADF 230 and is not illustrated as a separate logic block. Alternatively, a separate control logic block maybe included representative of, for example, a state machine for controlling the overall operation of ADF 230, including the pattern matching and hashing functionality. Such a state machine might include a number of states to implement the functionality described herein. For example, the state machine might transition from an idle state to a pattern status state upon data being received and the frame being accepted. In the pattern status state, the pattern status information may be made available to receive FIFO 220. The state machine can then transition to a temporary queue data phase in which a received frame is forwarded from temporary queue 234. The state machine then enters a frame status state in which the frame length and status associated with the destination address filtering (e.g., broadcast address, group/single address, promiscuous mode) are transferred to receive FIFO 220. Other states and state machines may be implemented in accordance with the functionality described herein.
[0119] In one embodiment, a method for processing a message within an information processing system is provided. The information processing system has a memory, a cache, and a packet controller. The memory and the cache are each coupled to the packet controller. The method includes receiving a message and performing pattern matching on the message to provide a pattern match result which indicates whether the received message includes a first pattern and provides pattern match attributes corresponding to the first pattern. The method - 30 -
26183l_l.DOC further includes accepting the message and selecting a buffer descriptor queue (BDQ) based on the pattern match result. The message is stored to memory according to the selected BDQ, at least a portion of the accepted message is selectively stored to cache, wherein the portion of the accepted message is indicated by the pattern match attributes.
[0120] In a further embodiment, the pattern match attributes indicate one of a plurality of BDQs corresponding to the first pattern and the selected BDQ. In yet a further embodiment, the pattern match attributes corresponding to the first pattern indicate a default BDQ as the selected BDQ. In yet a further embodiment, the message is accepted based on the pattern match result.
► [0121] In yet a further embodiment, the pattern match attributes provide a pattern match extract indicator, and the portion of the accepted message is selectively stored to cache based on the pattern match extract indicator. The portion of the accepted message may be stored to cache when the pattern match extract indicator indicates that extraction is enabled and/or disabled for the first pattern. The pattern match attributes may provide an extract index and
> an extract length to indicate the portion of the accepted message stored to cache. The pattern match attributes may also indicate a cache write type corresponding to the first pattern to perform for storing the portion of the accepted message to cache.
[0122] In yet a further embodiment, the information processing system includes a plurality of processors coupled to the memory and the cache, and each of the processor has an ) assigned BDQ. The pattern match result indicates one of the plurality of processors to process the message. In yet a further embodiment, the pattern match result indicates a priority corresponding to the message.
[0123] In yet a further embodiment, at least a portion of the selected BDQ is stored to cache. The pattern match attributes may indicate a cache write type corresponding to the first 5 pattern to perform for storing the at least a portion of the selected BDQ to cache.
[0124] In yet a further embodiment, the step of performing pattern matching on the message comprises determining whether the first pattern exists within the message, the first pattern indicated by pattern match data, the pattern match data having corresponding pattern match control, and in response to determining whether the first pattern exists, providing the 3 pattern match result based on the pattern match control. The pattern match control may
- 31 - 261831_l.DOC include a concatenate indicator which indicates whether the first pattern is a concatenation of a plurality of patterns. The pattern match control may include a continuous search indicator which indicates whether continuous searching is enabled. The pattern match control may include an inverse pattern indicator, wherein when the inverse pattern indicator has a first value, the pattern match result indicates whether the first pattern exists in the message, and when the inverse pattern indicator has a second value, the pattern match result indicates whether the first pattern does not exist within the message.
[0125] In another embodiment, an information processing system includes a memory, a cache, and a packet controller coupled to the memory and the cache. The packet controller includes an input to receive a message, pattern match registers storing a plurality of patterns, pattern attribute registers storing pattern match attributes corresponding to each of the plurality of patterns, pattern matching logic coupled to perform pattern matching on the message and to provide a pattern match result which indicates whether the received message includes a first pattern of the plurality of patterns, a receive buffer coupled to store the received message when accepted, and a memory controller coupled to provide the accepted message from the receive buffer to memory and to provide at least a portion of the accepted message to cache. The portion of the accepted message is indicated by the pattern match attributes corresponding to the first pattern.
[0126] In yet a further embodiment, the accepted message is provided to memory according to a selected BDQ. The selected BDQ may be one of a plurality of BDQs and is indicated by the pattern match attributes corresponding to the first pattern. The memory controller may be coupled to provide at least a portion of the selected BDQ to the cache. The pattern match attributes may indicate a cache write type corresponding to the first pattern to perform for storing the at least a portion of the selected BDQ to cache.
[0127] In yet a further embodiment, the pattern match attributes corresponding to the first pattern provide an extract index and an extract length to indicate the portion of the accepted message provided to the cache. In yet a further embodiment, the pattern match attributes corresponding to the first pattern indicate a cache write type to perform for storing the portion of the accepted message in the cache.
- 32 -
261831_1.DOC [0128] In another embodiment, a method includes receiving a message and determining whether a first pattern match corresponding to a first pattern is detected within the received message. The first pattern is indicated by pattern match data and has a corresponding pattern match acceptance indicator and a corresponding continuous search enable indicator. The received message is selectively accepted based on the corresponding continuous search enable indicator when the first pattern match is detected and the corresponding pattern match acceptance indicator indicates acceptance of the received message having the detected first pattern.
[0129] In yet a further embodiment, the receiving the message includes receiving at least a portion of a packet. The packet may be further characterized as an Ethernet packet.
[0130] In yet a further embodiment, when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, the received message is accepted when the continuous search indicator corresponding to the first pattern indicates no continuous searching.
[0131] In yet a further embodiment, when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, the received message is accepted when the continuous search indicator corresponding to the first pattern indicates continuous searching, and a second pattern match corresponding to a second pattern is detected, the second pattern having a corresponding pattern match acceptance indicator which does not indicate rejection of the received message. The second pattern may be indicated by the pattern match data and the pattern match acceptance indicator corresponding to the second pattern indicates one of accepting the received message and neither accepting nor rejecting the received message. The pattern match acceptance indicator corresponding to the second pattern may indicate one of accepting the received message, neither accepting nor rejecting the received message, and pattern matching is disabled for the second pattern.
- 33
261831_1.DOC [0132] In yet a further embodiment, when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, the received message is not accepted when the continuous search indicator corresponding to the first pattern indicates continuous searching, and a second pattern match corresponding to a second pattern is detected, the second pattern having a corresponding pattern match acceptance indicator which indicates rejection of the received message.
[0133] In yet a further embodiment, the corresponding pattern match acceptance indicator indicates one of acceptance, rejection, and neither acceptance nor rejection of the received message. In yet a further embodiment, the method further includes rejecting the message when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates rejection of the received message.
[0134] In yet a further embodiment, the first pattern has a corresponding inverse pattern indicator, and the first pattern match is detected when the received message includes the first pattern when the inverse pattern indicator has a first value, and the first pattern match is detected when the received message does not include the first pattern when the inverse pattern indicator has a second value.
[0135] In yet a further embodiment, the first pattern has a corresponding match index which indicates a location within the received message at which to determine whether the first pattern match is detected.
[0136] Li yet a further embodiment, the first pattern has a corresponding concatenate indicator. The method further includes determining whether a second pattern match is detected within the received message. The message is selectively accepted based on the corresponding continuous search enable indicator when the first pattern match and the second pattern match are detected, the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, and the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns. The first pattern match is deemed not detected when the second pattern match is not detected and the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns.
- 34
261831_1.DOC [0137] In yet a further embodiment, the method includes performing a hash function to determine whether a hash hit occurs, wherein when a hash hit occurs, the first pattern match is detected, and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, selectively accepting the message based on the i corresponding continuous search enable indicator.
[0138] In another embodiment, a method includes receiving a message and determining whether a first pattern match corresponding to a first pattern of a plurality of patterns is detected within the received message. The first pattern has a corresponding pattern match acceptance indicator. The method further includes determining whether a concatenate
) indicator corresponding to at least one of the plurality of patterns indicates concatenation when the first pattern match is detected. The method further includes determining whether a second pattern match corresponding to a second pattern of the plurality of patterns is detected within the received message when the first pattern match is detected and the concatenate indicator of the at least one of the plurality of patterns indicates concatenation. The
5 concatenate indicator corresponds to one of the first and second patterns and the second pattern has a corresponding pattern match acceptance indicator. The received message is selectively accepted based at least on one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern when the first pattern match is detected, the concatenate indicator
3 corresponding to one of the first and second patterns indicates concatenation, and the second pattern match is detected.
[0139] In yet a further embodiment, the pattern match acceptance indicator corresponding to the first pattern indicates one of acceptance, rejection, and neither acceptance nor rejection of a message processed using the first pattern, and the pattern match acceptance indicator corresponding to the second pattern indicates one of acceptance, rejection, and neither acceptance nor rejection of a message processed using the second pattern.
[0140] In yet a further embodiment, the concatenate indicator and the one of the pattern match acceptance indicators used to selectively accept the received message both correspond to a same one of the first pattern and the second pattern.
- 35 261831_l.DOC [0141] In yet a further embodiment, when the first pattern match is detected, the concatenate indicator corresponding to one of the first and second patterns indicates concatenation, and the second pattern match is detected, rejecting the received message based at least on one of the pattern match acceptance indicator corresponding to the first pattern and > the pattern match acceptance indicator corresponding to the second pattern.
[0142] In yet a further embodiment, wherein the first pattern has a corresponding inverse pattern indicator and the second pattern has a corresponding inverse pattern indicator, and wherein: when the inverse pattern indicator corresponding to the first pattern has a first value, the first pattern match is detected when the received message does not include the first
) pattern and when the inverse pattern indicator corresponding to the first pattern has a second value, the first pattern match is detected when the received message includes the first pattern; and when the inverse pattern indicator corresponding to the second pattern has the first value, the second pattern match is detected when the received message does not include the second pattern and when the inverse pattern indicator corresponding to the second pattern has the
5 second value, the second pattern is detected when the received message includes the second pattern.
[0143] In yet a further embodiment, when the first pattern match and the second pattern match are detected, the first pattern occurs after the second pattern in the received message. In yet a further embodiment, the receiving the message comprises receiving at least a portion ) of a packet. In yet a further embodiment, wherein the packet is further characterized as an Ethernet packet.
[0144] In yet a further embodiment, the first pattern has a corresponding match index to indicate a first location within the received message at which to determine whether the first pattern match is detected within the received message, and the second pattern has a 5 corresponding match index to indicate a second location within the received message at which to determine whether the second pattern match is detected within the received message.
[0145] In yet a further embodiment, when the first pattern match is detected, the concatenate indicator of the at least one of the plurality of patterns indicates concatenation, 3 and the second pattern match is detected, the received message is accepted.
- 36 261831_1.DOC [0146] In yet a further embodiment, when the first pattern match is detected, the concatenate indicator of the at least one of the plurality of patterns indicates concatenation, and the second pattern match is detected, the received message is selectively accepted based on a continuous search indicator which indicates whether to perform continuous searching.
i [0147] In another embodiment, a packet controller includes an input which receives a message, pattern matching logic and control logic. The pattern matching logic determines whether a first pattern match corresponding to a first pattern is detected within the received message responsive to receiving the message. The pattern match logic comprises at least one pattern match register which is configured to store pattern match data indicative of the first
) pattern and stores pattern match control which includes a pattern match acceptance indicator corresponding to the first pattern and a continuous search enable indicator corresponding to the first pattern. The control logic is coupled to the pattern matching logic. During operation, the control logic selectively accepts the received message based on the continuous search enable indicator corresponding to the first pattern when the first pattern match is
5 detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message.
[0148] In yet a further embodiment, the control logic accepts the received message when the continuous search indicator corresponding to the first pattern indicates no continuous searching, the first pattern match is detected, and the pattern match acceptance indicator ) corresponding to the first pattern indicates acceptance of the received message.
[0149] In yet a further embodiment, when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, the control logic accepts the received message when: the continuous search indicator corresponding to the first pattern indicates continuous searching, and a 5 second pattern match corresponding to a second pattern is detected, the second pattern indicated by the pattern match data and having a corresponding pattern match acceptance indicator indicated by the pattern match control which does not indicate rejection of the received message.
[0150] In yet a further embodiment, when the first pattern match is detected and the
) pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, the control logic does not accept the received message when: the - 37 - 261831_1.DOC continuous search indicator corresponding to the first pattern indicates continuous searching, and a second pattern match corresponding to a second pattern is detected, the second pattern indicated by the pattern match data and having a corresponding pattern match acceptance indicator indicated by the pattern match control which indicates rejection of the received > message.
[0151] In yet a further embodiment, the corresponding pattern match acceptance indicator indicates one of acceptance, rejection, and neither acceptance nor rejection of the received message.
[0152] In yet a further embodiment, the pattern match control includes an inverse pattern ) indicator corresponding to the first pattem, and wherein when the inverse pattern indicator has a first value, the first pattern match is detected when the received message includes the first pattern; when the inverse pattern indicator has a second value, the first pattern match is detected when the received message does not include the first pattern.
[0153] In yet a further embodiment, the pattern match control includes a match index 5 corresponding to the first pattern which indicates a location within the received message at which to determine whether the first pattern match is detected.
[0154] In yet a further embodiment, wherein: the pattern match control includes a concatenate indicator corresponding to the first pattern; the pattern matching logic determines whether a second pattern match is detected within the received message; and the control logic
) selectively accepts the message based on the corresponding continuous search enable indicator when the first pattern match and the second pattern match are detected, the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, and the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns and deems the first pattern match not detected
5 when the second pattern match is not detected and the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns.
[0155] In one embodiment, a packet controller includes an input which receives a message, pattern matching logic and control logic. The pattern matching logic determines whether a first pattern match corresponding to a first pattern is detected within the received ) message and whether a second pattern match corresponding to a second pattern is detected.
- 38 - 261831_1.DOC The pattern match logic comprises at least one pattern match register. The pattern match register stores pattern match data which indicates the first pattern and the second pattern. The pattern match register also stores pattern match control information which includes a pattern match acceptance indicator corresponding to the first pattern, a pattern match acceptance indicator corresponding to the second pattern, a concatenate indicator corresponding to the first pattern and a concatenate indicator corresponding to the second pattern. The control logic is coupled to the pattern matching logic to selectively accept the received message based on at least one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern, when the first pattern match is detected, the second pattern match is detected and the concatenate indicator corresponding to one of the first and second patterns indicates concatenation .
[0156] In yet a further embodiment, the one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern and the concatenate indicator corresponding to one of the first and second patterns both correspond to a same one of the first pattern and the second pattern. In yet a further embodiment, the control logic does not accept the received message when the first pattern match is detected, the second pattern match is not detected and the concatenate indicator corresponding to one of the first and second patterns indicates concatenation .
[0157] In yet a further embodiment, the pattern match control includes an inverse pattern indicator corresponding to the first pattern and an inverse pattern indicator corresponding to the second pattern, and wherein: when the inverse pattern indicator corresponding to t ie first pattern has a first value, the first pattern match is detected when the received message does not include the first pattern and when the inverse pattern indicator corresponding to the first pattern has a second value, the first pattern match is detected when the received messa.ge includes the first pattern; and when the inverse pattern indicator corresponding to the second pattern has the first value, the second pattern match is detected when the received message does not include the second pattern and when the inverse pattern indicator corresponding to the second pattern has the second value, the second pattern is detected when the received message includes the second pattern.
- 39
26183l_l.DOC [0158] In yet a further embodiment, the pattern match control includes a match index corresponding to the first pattern to indicate a first location within the received message at which to determine whether the first pattern match is detected within the received message, and a match index corresponding to the second pattern to indicate a second location within i the received message at which to determine whether the second pattern match is detected within the received message. In yet a further embodiment, the control logic accepts the received message when the first pattern match is detected, the concatenate indicator corresponding to one of the first and second patterns indicates concatenation, and the second pattern match is detected. In yet a further embodiment, the pattern match control includes a
) continuous search enable indicator corresponding to one of the first pattern and the second pattern, wherein the control logic selectively accepts the received message based on the continuous search enable indicator and based on at least one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern when the first pattern match is detected, the concatenate
5 indicator of the at least one of the plurality of patterns indicates concatenation, and the second pattern match is detected.
[0159] It is to be understood that the architectures depicted herein are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In an abstract, but still definite sense, any arrangement of components to
) achieve the same functionality is effectively "associated" such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as "associated with" each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being "operably connected", or "operably coupled", to each
) other to achieve the desired functionality.
[0160] Those skilled in the art will recognize that boundaries between logic blocks are merely illustrative and that alternative embodiments may merge logic blocks or circuit elements or impose an alternate decomposition of functionality upon various logic blocks or circuit elements. Moreover, alternative embodiments may combine multiple instances of a 3 particular component.
- 40 - 26183l_l.DOC [0161] Furthermore, those skilled in the art will recognize that boundaries between the functionality of the above described operations merely illustrative. The functionality of multiple operations may be combined into a single operation, and/or the functionality of a single operations may be distributed in additional operations. Moreover, alternative embodiments may include multiple instances of a particular operation, and the order of operations may be altered or even performed in parallel in various other embodiments.
[0162] Because the aboV Aetailed description is exemplary, when "one embodiment" is described, it is an exemplary embodiment. Accordingly, the use of the word "one" in this context is not intended to indicate that one and only one embodiment may have a described feature. Rather, many other embodiments may, and often do, have the described feature of the exemplary "one embodiment." Thus, as used above, when the invention is described in the context of one embodiment, that one embodiment is one of many possible embodiments of the invention.
[0163] Notwithstanding the above caveat regarding the use of the words "one embodiment" in the detailed description, it will be understood by those within the art that if a specific number of an introduced claim element is intended in the below claims, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present or intended. For example, in the claims below, when a claim element is described as having "one" feature, it is intended that the element be limited to one and only one of the features described. Furthermore, when a claim element is described in the claims below as including or comprising "a" feature, it is not intended that the element be limited to one and only one of the features described. Rather, for example, the claim including "a" feature reads upon an apparatus or method including one or more of the feature in question. That is, because the apparatus or method in question includes a feature, the claim reads on the apparatus or method regardless of whether the apparatus or method includes another such similar feature. This use of the word "a" as a nonlimiting, introductory article to a feature of a claim is adopted herein by Applicants as being identical to the interpretation adopted by many courts in the past, notwithstanding any anomalous or precedential case law to the contrary that may be found. Similarly, when a claim element is described in the claims below as including or comprising an aforementioned feature (e.g., "the" feature), it is intended that the element not be limited to one and only one of the features described merely by the incidental use of the definite article. - 41 -
26183l_l.DOC [0164] Furthermore, the use of introductory phrases such as "at least one" and "one or more" in the claims should not be construed to imply that the introduction of another claim element by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an." The same holds trae for the use of definite articles.
[0165] While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, various modifications, alternative constructions, and equivalents may be used without departing from the invention claimed herein. Consequently, the appended claims encompass within their scope all such changes, modifications, etc. as are within the trae spirit and scope of the invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. The above description is not intended to present an exhaustive list of embodiments of the invention. Unless expressly stated otherwise, each example presented herein is a nonlimiting or nonexclusive example, whether or not the terms nonlimiting, nonexclusive or similar terms are contemporaneously expressed with each example. Although an attempt has been made to outline some exemplary embodiments and exemplary variations thereto, other embodiments and/or variations are within the scope of the invention as defined in the claims below.
- 42
26183l_l.DOC

Claims

WHAT IS CLAIMED IS:
1. A method for processing a message within an information processing system having a memory, a cache, and a packet controller, the memory and the cache each coupled to the packet controller, the method comprising: receiving a message; performing pattern matching on the message to provide a pattern match result which indicates whether the received message includes a first pattern and provides pattern match attributes corresponding to the first pattern; accepting the message; selecting a buffer descriptor queue (BDQ) based on the pattern match result; storing the message to memory according to the selected BDQ; and selectively storing at least a portion of the accepted message to cache, wherein the portion of the accepted message is indicated by the pattern match attributes.
2. The method of claim 1, wherein the pattern match attributes indicate one of a plurality of BDQs corresponding to the first pattern, wherein the one of the plurality of BDQs corresponds to the selected BDQ.
3. The method of claim 1, wherein the pattern match attributes corresponding to the first pattern indicate a default BDQ as the selected BDQ.
4. The method of claim 1, wherein the pattern match attributes provide a pattern match extract indicator, wherein selectively storing the portion of the accepted message to cache is performed based on the pattern match extract indicator, and wherein the portion of the accepted message is stored to cache when the pattern match extract indicator indicates that extraction is enabled for the first pattern and the portion of the accepted message is not stored to cache when the pattern match extract indicator indicates that extraction is disabled for the first pattern.
5. The method of claim 4, wherein the pattern match attributes provide an extract index and an extract length to indicate the portion of the accepted message stored to cache.
- 43 -
261831_1.DOC
6. The method of claim 4, wherein the pattern match attributes indicate a cache write type corresponding to the first pattern to perform for storing the portion of the accepted message to cache.
7. The method of claim 1 wherein the information processing system includes a plurality of processors coupled to the memory and the cache, each of the processor having an assigned
BDQ, and wherein the pattern match result indicates one of the plurality of processors to process the message.
8. The method of claim 1 wherein the pattern match result indicates a priority corresponding to the message.
9. The method of claim 1 , further comprising storing at least a portion of the selected BDQ to cache.
10. The method of claim 9, wherein the pattern match attributes indicate a cache write type corresponding to the first pattern to perform for storing the at least a portion of the selected BDQ to cache.
11. The method of claim 1 , wherein performing pattern matching on the message comprises: determining whether the first pattern exists within the message, the first pattern indicated by pattern match data, the pattern match data having corresponding pattern match control; and in response to determining whether the first pattern exists, providing the pattern match result based on the pattern match control.
12. The method of claim 11, wherein the pattern match control comprises a concatenate indicator which indicates whether the first pattern is a concatenation of a plurality of patterns.
13. The method of claim 11, wherein the pattern match control comprises a continuous search indicator which indicates whether continuous searching is enabled.
- 44 -
261831_l.DOC
14. The method of claim 11, wherein the pattern match control comprises an inverse pattern indicator, wherein when the inverse pattern indicator has a first value, the pattern match result indicates whether the first pattern exists in the message , and when the inverse pattern indicator has a second value, the pattern match result indicates whether the first pattern does not exist within the message.
15. The method of claim 1, wherein the message is accepted based on the pattern match result.
16. An information processing system, comprising: a memory; a cache; a packet controller coupled to the memory and the cache, the packet controller comprising: an input to receive a message; pattern match registers storing a plurality of patterns; pattern attribute registers storing pattern match attributes corresponding to each of the plurality of patterns; pattern matching logic coupled to perform pattern matching on the message and to provide a pattern match result which indicates whether the received message includes a first pattern of the plurality of patterns; a receive buffer coupled to store the received message when accepted; and a memory controller coupled to provide the accepted message from the receive buffer to memory and to provide at least a portion of the accepted message to cache, wherein the portion of the accepted message is indicated by the pattern match attributes corresponding to the first pattern.
17. The information processing system of claim 16, wherein the accepted message is provided to memory according to a selected BDQ.
18. The information processing system of claim 17, wherein the selected BDQ is one of a plurality of BDQs and is indicated by the pattern match attributes corresponding to the first pattern. - 45 -
261831_1.DOC
19. The information processing system of claim 17, wherein the memory controller is coupled to provide at least a portion of the selected BDQ to the cache.
20. The method of claim 19, wherein the pattern match attributes indicate a cache write type corresponding to the first pattern to perform for storing the at least a portion of the i selected BDQ to cache.
21. The information processing system of claim 16, wherein the pattern match attributes corresponding to the first pattern provide an extract index and an extract length to indicate the portion of the accepted message provided to the cache.
22. The information processing system of claim 16, wherein the pattern match attributes
) corresponding to the first pattern indicate a cache write type to perform for storing the portion of the accepted message in the cache.
23. A method comprising: receiving a message; determining whether a first pattern match corresponding to a first pattern is detected 5 within the received message, wherein the first pattern is indicated by pattern match data and has a corresponding pattern match acceptance indicator and a corresponding continuous search enable indicator; and when the first pattern match is detected and the corresponding pattern match acceptance indicator indicates acceptance of the received message having the 3 detected first pattern, selectively accepting the received message based on the corresponding continuous search enable indicator.
24. The method of claim 23, wherein receiving the message comprises receiving at least a portion of a packet.
25. The method of claim 24, wherein the packet is further characterized as an Ethernet packet.
26. The method of claim 23, wherein when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of - 46 - 261831_l.DOC the received message, accepting the received message when the continuous search indicator corresponding to the first pattern indicates no continuous searching.
27. The method of claim 23, wherein when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of
) the received message, accepting the received message when: the continuous search indicator corresponding to the first pattern indicates continuous searching, and a second pattern match corresponding to a second pattern is detected, the second pattern having a corresponding pattern match acceptance indicator which does 3 not indicate rejection of the received message.
28. The method of claim 27, wherein the second pattern is indicated by the pattern match data and the pattern match acceptance indicator corresponding to the second pattern indicates one of accepting the received message and neither accepting nor rejecting the received message.
5 29. The method of claim 27, wherein the pattern match acceptance indicator corresponding to the second pattern indicates one of accepting the received message, neither accepting nor rejecting the received message, and pattern matching is disabled for the second pattern.
30. The method of claim 23, wherein when the first pattern match is detected and the
3 pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, not accepting the received message when: the continuous search indicator corresponding to the first pattern indicates continuous searching, and a second pattern match corresponding to a second pattern is detected, the second pattern having a corresponding pattern match acceptance indicator which indicates rejection of the received message.
31. The method of claim 23, wherein the corresponding pattern match acceptance indicator indicates one of acceptance, rejection, and neither acceptance nor rejection of the received message. - 47 - 261831_l.DOC
32. The method of claim 23, further comprising: when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates rejection of the received message, rejecting the message.
5 33. The method of claim 23, wherein the first pattern has a corresponding inverse pattern indicator, and wherein: when the inverse pattern indicator has a first value, the first pattern match is detected when the received message includes the first pattern; when the inverse pattern indicator has a second value, the first pattern match is ) detected when the received message does not include the first pattern.
34. The method of claim 23, wherein the first pattern has a corresponding match index which indicates a location within the received message at which to determine whether the first pattern match is detected.
35. The method of claim 23, wherein the first pattern has a corresponding concatenate 5 indicator, the method further comprising: determining whether a second pattern match is detected within the received message, wherein: when the first pattern match and the second pattern match are detected, the pattern match acceptance indicator corresponding to the first pattern 3 indicates acceptance of the received message, and the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns, selectively accepting the message based on the corresponding continuous search enable indicator, and when the second pattern match is not detected and the concatenate indicator 5 corresponding to the first pattern indicates concatenation of the first and second patterns, the first pattern match is deemed not detected.
- 48 261831_1.DOC
36. The method of claim 23, further comprising: performing a hash function to determine whether a hash hit occurs, wherein when a hash hit occurs, the first pattern match is detected, and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, selectively accepting the message based on the corcesponding continuous search enable indicator.
37. A method comprising: receiving a message; determining whether a first pattern match corresponding to a first pattern of a plurality of patterns is detected within the received message, wherein the first pattern has a corresponding pattern match acceptance indicator; when the first pattern match is detected, determining whether a concatenate indicator corresponding to at least one of the plurality of patterns indicates concatenation; when the first pattern match is detected and the concatenate indicator of the at least one of the plurality of patterns indicates concatenation, determining whether a second pattern match corresponding to a second pattern of the plurality of patterns is detected within the received message, wherein the concatenate indicator corresponds to one of the first and second patterns and the second pattern has a corresponding pattern match acceptance indicator; and when the first pattern match is detected, the concatenate indicator corresponding to one of the first and second patterns indicates concatenation, and the second pattern match is detected, selectively accepting the received message based at least on one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern.
38. The method of claim 37, wherein the pattern match acceptance indicator corresponding to the first pattern indicates one of acceptance, rejection, and neither acceptance nor rejection of a message processed using the first pattern, and the pattern match acceptance indicator corresponding to the second pattern indicates one of acceptance, rejection, and neither acceptance nor rejection of a message processed using the second pattern. - 49 -
261831_l.DOC
39. The method of claim 37, wherein the concatenate indicator and the one of the pattern match acceptance indicators used to selectively accept the received message both correspond to a same one of the first pattern and the second pattern.
40. The method of claim 37, wherein when the first pattern match is detected, the concatenate indicator corresponding to one of the first and second patterns indicates concatenation, and the second pattern match is detected, rejecting the received message based at least on one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern.
41. The method of claim 37, wherein the first pattern has a corresponding inverse pattern indicator and the second pattern has a corresponding inverse pattern indicator, and wherein: when the inverse pattern indicator corresponding to the first pattern has a first value, the first pattern match is detected when the received message does not include the first pattern and when the inverse pattern indicator corresponding to the first pattern has a second value, the first pattern match is detected when the received message includes the first pattern; and when the inverse pattern indicator corresponding to the second pattern has the first value, the second pattern match is detected when the received message does not include the second pattern and when the inverse pattern indicator corresponding to the second pattern has the second value, the second pattern is detected when the received message includes the second pattern.
42. The method of claim 37, wherein when the first pattern match and the second pattern match are detected, the first pattern occurs after the second pattern in the received message.
43. The method of claim 37, wherein receiving the message comprises receiving at least a portion of a packet.
44. The method of claim 43, wherein the packet is further characterized as an Ethernet packet.
- 50
261831_l.DOC
45. The method of claim 37, wherein the first pattern has a corresponding match index to indicate a first location within the received message at which to determine whether the first pattern match is detected within the received message, and the second pattern has a corresponding match index to indicate a second location within the received message at which to determine whether the second pattern match is detected within the received message.
46. The method of claim 37, wherein when the first pattern match is detected, the concatenate indicator of the at least one of the plurality of patterns indicates concatenation, and the second pattern match is detected, the received message is accepted.
47. The method of claim 37, wherein when the first pattern match is detected, the concatenate indicator of the at least one of the plurality of patterns indicates concatenation, and the second pattern match is detected, the received message is selectively accepted based on a continuous search indicator which indicates whether to perform continuous searching.
48. A packet controller, comprising: an input which receives a message; pattern matching logic which determines whether a first pattern match corresponding to a first pattern is detected within the received message, wherein the pattern match logic comprises at least one pattern match register which stores pattern match data which indicates the first pattern and stores pattern match control which includes a pattern match acceptance indicator corresponding to the first pattern and a continuous search enable indicator corresponding to the first pattern; and control logic, coupled to the pattern matching logic, which selectively accepts the received message based on the continuous search enable indicator corresponding to the first pattern when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message.
51
261831_l.DOC
49. The packet controller of claim 48, wherein the control logic accepts the received message when the continuous search indicator corresponding to the first pattern indicates no continuous searching, the first pattern match is detected, and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message.
5 50. The packet controller of claim 48, wherein when the first pattern match is detected and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, the control logic accepts the received message when: the continuous search indicator corresponding to the first pattern indicates continuous searching, and 0 a second pattern match corresponding to a second pattern is detected, the second pattern indicated by the pattern match data and having a corresponding pattern match acceptance indicator indicated by the pattern match control which does not indicate rejection of the received message.
51. The packet controller of claim 48, wherein when the first pattern match is detected 5 and the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, the control logic does not accept the received message when: the continuous search indicator corresponding to the first pattern indicates continuous searching, and ,0 a second pattern match corresponding to a second pattern is detected, the second pattern indicated by the pattern match data and having a corresponding pattern match acceptance indicator indicated by the pattern match control which indicates rejection of the received message.
52. The packet controller of claim 48, wherein the corresponding pattern match
,5 acceptance indicator indicates one of acceptance, rejection, and neither acceptance nor rejection of the received message.
- 52 261831_l.DOC
53. The packet controller of claim 48, wherein the pattern match control includes an inverse pattern indicator corresponding to the first pattern, and wherein: when the inverse pattern indicator has a first value, the first pattern match is detected when the received message includes the first pattern; when the inverse pattern indicator has a second value, the first pattern match is detected when the received message does not include the first pattern.
54. The packet controller of claim 48, wherein the pattern match control includes a match index corresponding to the first pattern which indicates a location within the received message at which to determine whether the first pattern match is detected.
55. The packet controller of claim 48, wherein: the pattern match control includes a concatenate indicator corresponding to the first pattern; the pattern matching logic determines whether a second pattern match is detected within the received message; and the control logic selectively accepts the message based on the corresponding continuous search enable indicator when the first pattern match and the second pattern match are detected, the pattern match acceptance indicator corresponding to the first pattern indicates acceptance of the received message, and the concatenate indicator corresponding to the first pattern indicates concatenation of the first and second patterns and deems the first pattern match not detected when the second pattern match is not detected and the concatenate indicator corresponding to the first pattem indicates concatenation of the first and second patterns.
- 53
261831_1.DOC
56. A packet controller comprising: an input which receives a message; pattern matching logic which determines whether a first pattern match corresponding to a first pattern is detected within the received message and whether a second pattern match corresponding to a second pattern is detected, wherein the pattern match logic comprises at least one pattern match register which stores pattern match data which indicates the first pattern and the second pattern and stores pattern match control which includes a pattern match acceptance indicator corresponding to the first pattern, a pattern match acceptance indicator corresponding to the second pattern, a concatenate indicator corresponding to the first pattern and a concatenate indicator corresponding to the second pattern; and control logic, coupled to the pattern matching logic, which selectively accepts the received message based on at least one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern when the first pattern match is detected, the second pattern match is detected and the concatenate indicator corresponding to one of the first and second patterns indicates concatenation.
57. The packet controller of claim 56, wherein the one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern and the concatenate indicator corresponding to one of the first and second patterns both correspond to a same one of the first pattern and the second pattern.
58. The packet controller of claim 56, wherein the control logic does not accept the received message when the first pattern match is detected, the second pattern match is not detected and the concatenate indicator corresponding to one of the first and second patterns indicates concatenation.
54 -
261831_1.DOC
59. The packet controller of claim 56, wherein the pattern match control includes an inverse pattern indicator corresponding to the first pattern and an inverse pattern indicator corresponding to the second pattern, and wherein: when the inverse pattern indicator corresponding to the first pattern has a first value, the first pattern match is detected when the received message does not include the first pattern and when the inverse pattern indicator corresponding to the first pattern has a second value, the first pattern match is detected when the received message includes the first pattern; and when the inverse pattern indicator corresponding to the second pattern has the first value, the second pattern match is detected when the received message does not include the second pattern and when the inverse pattern indicator corresponding to the second pattem has the second value, the second pattern is detected when the received message includes the second pattern.
60. The packet controller of claim 56, wherein the pattern match control includes a match index corresponding to the first pattern to indicate a first location within the received message at which to determine whether the first pattern match is detected within the received message, and a match index corresponding to the second pattern to indicate a second location within the received message at which to determine whether the second pattern match is detected within the received message.
61. The packet controller of claim 56, wherein the control logic accepts the received message when the first pattern match is detected, the concatenate indicator corresponding to one of the first and second patterns indicates concatenation, and the second pattern match is detected.
62. The packet controller of claim 56, wherein the pattern match control includes a continuous search enable indicator corresponding to one of the first pattern and the second pattern, wherein the control logic selectively accepts the received message based on the continuous search enable indicator and based on at least one of the pattern match acceptance indicator corresponding to the first pattern and the pattern match acceptance indicator corresponding to the second pattern when the first pattern match is detected, the concatenate indicator of the at least one of the plurality of patterns indicates concatenation, and the second pattern match is detected. - 55 -
261831_l.DOC
PCT/US2003/037688 2003-11-25 2003-11-25 Network message processing using pattern matching WO2005064868A1 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
PCT/US2003/037688 WO2005064868A1 (en) 2003-11-25 2003-11-25 Network message processing using pattern matching
AU2003298698A AU2003298698A1 (en) 2003-11-25 2003-11-25 Network message processing using pattern matching
EP03796453A EP1690379A1 (en) 2003-11-25 2003-11-25 Network message processing using pattern matching
JP2005512836A JP4428537B2 (en) 2003-11-25 2003-11-25 Network message processing using pattern matching
CNA2003801105481A CN1860743A (en) 2003-11-25 2003-11-25 Network message processing using pattern matching
KR1020067010238A KR101017536B1 (en) 2003-11-25 2003-11-25 Network message processing using pattern matching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2003/037688 WO2005064868A1 (en) 2003-11-25 2003-11-25 Network message processing using pattern matching

Publications (1)

Publication Number Publication Date
WO2005064868A1 true WO2005064868A1 (en) 2005-07-14

Family

ID=34738236

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2003/037688 WO2005064868A1 (en) 2003-11-25 2003-11-25 Network message processing using pattern matching

Country Status (6)

Country Link
EP (1) EP1690379A1 (en)
JP (1) JP4428537B2 (en)
KR (1) KR101017536B1 (en)
CN (1) CN1860743A (en)
AU (1) AU2003298698A1 (en)
WO (1) WO2005064868A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100832539B1 (en) 2006-12-06 2008-05-27 한국전자통신연구원 Method and module for searching multi-pattern using pattern board which does not support multi-pattern
WO2012128685A1 (en) * 2011-03-23 2012-09-27 Telefonaktiebolaget L M Ericsson (Publ) Methods and devices for handling encrypted communication
CN115102867A (en) * 2022-05-10 2022-09-23 内蒙古工业大学 Block chain fragmentation system performance optimization method combined with deep reinforcement learning

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131944B2 (en) * 2008-05-30 2012-03-06 Intel Corporation Using criticality information to route cache coherency communications
CN102065569B (en) * 2009-11-17 2013-08-28 中国科学院微电子研究所 Ethernet MAC (Media Access Control) sublayer controller applicable to WLAN (Wireless Local Area Network)
CN102521347B (en) * 2011-12-11 2014-05-14 西北工业大学 Pattern matching intermediate result management method based on priority
WO2014067099A1 (en) * 2012-10-31 2014-05-08 华为技术有限公司 Method, network device and processor for processing failure message
CN105792268B (en) * 2014-12-25 2019-11-22 展讯通信(上海)有限公司 A kind of data maintenance system and method
WO2018173292A1 (en) * 2017-03-24 2018-09-27 三菱電機株式会社 Gateway device, priority change method and priority change program

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999053647A2 (en) * 1998-04-15 1999-10-21 Top Layer Networks, Inc. System and process for flexible queueing of data packets in network switching
US6427173B1 (en) * 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6427173B1 (en) * 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
WO1999053647A2 (en) * 1998-04-15 1999-10-21 Top Layer Networks, Inc. System and process for flexible queueing of data packets in network switching

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100832539B1 (en) 2006-12-06 2008-05-27 한국전자통신연구원 Method and module for searching multi-pattern using pattern board which does not support multi-pattern
WO2012128685A1 (en) * 2011-03-23 2012-09-27 Telefonaktiebolaget L M Ericsson (Publ) Methods and devices for handling encrypted communication
US9357387B2 (en) 2011-03-23 2016-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Methods and devices for handling encrypted communication
CN115102867A (en) * 2022-05-10 2022-09-23 内蒙古工业大学 Block chain fragmentation system performance optimization method combined with deep reinforcement learning

Also Published As

Publication number Publication date
JP2007525037A (en) 2007-08-30
EP1690379A1 (en) 2006-08-16
KR20060131758A (en) 2006-12-20
JP4428537B2 (en) 2010-03-10
KR101017536B1 (en) 2011-02-28
AU2003298698A1 (en) 2005-07-21
CN1860743A (en) 2006-11-08

Similar Documents

Publication Publication Date Title
US7613775B2 (en) Network message filtering using hashing and pattern matching
US7240041B2 (en) Network message processing using inverse pattern matching
US7411957B2 (en) Hardware filtering support for denial-of-service attacks
US5748905A (en) Frame classification using classification keys
EP1157502B1 (en) Method and apparatus for early random discard of packets
EP1166520B1 (en) Method and apparatus for managing a network flow in a high performance network interface
US20050171937A1 (en) Memory efficient hashing algorithm
US6483804B1 (en) Method and apparatus for dynamic packet batching with a high performance network interface
US6480489B1 (en) Method and apparatus for data re-assembly with a high performance network interface
US6990102B1 (en) Parallel lookup tables for locating information in a packet switched network
US20030210702A1 (en) Configurable packet processor
US7706375B2 (en) System and method of fast adaptive TCAM sorting for IP longest prefix matching
US7346059B1 (en) Header range check hash circuit
JP2013051729A (en) Method of providing virtual router functionality
JP2002538733A (en) High performance network interface
US7099325B1 (en) Alternately accessed parallel lookup tables for locating information in a packet switched network
CN112667526B (en) Method and circuit for realizing access control list circuit
US7031325B1 (en) Method and apparatus for enabling a network device to operate in accordance with multiple protocols
US7975097B2 (en) Reducing content addressable memory (CAM) power consumption counters
KR101017536B1 (en) Network message processing using pattern matching
JP2003500926A (en) Method and apparatus for trunking multiple ports in a network switch

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200380110548.1

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

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

AL Designated countries for regional patents

Kind code of ref document: A1

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

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

Ref document number: 2003796453

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2005512836

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 1020067010238

Country of ref document: KR

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Ref document number: DE

WWP Wipo information: published in national office

Ref document number: 2003796453

Country of ref document: EP